- {{ include('@digital_gov/partials/guides/guide-header.html.twig') }} - - {# NOT - MIGRATED - {-- partial "core/guides/guide-menu-bar.html" . -} - #} - {# NOT - MIGRATED - {% if .Params.guide %} - {{ $guideData = index $.Site.Data.guidenav (.Params.guide) }} + {% if (guide_start_node) %} + {{ include('@digital_gov/partials/guides/guide-header.html.twig', { + node: guide_start_node, + parent_link: guide_parent_link, + featured_image: guide_featured_image, + }, with_context=false) + }} {% endif %} - #} - {% if guideData.showInPageNav %} + {{ include('@digital_gov/partials/guides/guide-menu-bar.html.twig') }} + + {% if show_in_page_nav %}
{{ include('@digital_gov/partials/guides/guide-content.html.twig') }} diff --git a/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig b/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig index b0172a31..ebce9bfc 100644 --- a/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig +++ b/web/themes/custom/digital_gov/templates/partials/guides/guide-content.html.twig @@ -1,20 +1,73 @@
- [placeholder Guide Content Header] - {# NOT-MIGRATED - {{ partial "core/guides/guide-content-header.html" . }} - #} +
+ + {% if is_guide_overview %} +

Overview

+ {% else %} +

{{ label|field_value }}

+ {{ content.field_summary }} + {% endif %} + + {% if show_reading_time %} +

+ Reading time: {{ reading_time }} +

+ {% endif %} + + {% if show_summary_box %} + {{ include('@digital_gov/partials/usa-summary-box.html.twig', { + containerClass: 'dg-guide-summary', + }, with_context=false) }} + {% endif -%} +
+
- {{ content }} + {{ content.body }}
+ +
+
+
+ + + + Digital Gov Logo + + + {% if glossary %} + + {% endif %} +
+ +
+
+ +
+
+ +{% macro link_item(link, current) %} + {{ link.text }} +{% endmacro %} diff --git a/web/themes/custom/digital_gov/templates/partials/guides/guide-sidenav.html.twig b/web/themes/custom/digital_gov/templates/partials/guides/guide-sidenav.html.twig new file mode 100644 index 00000000..f91141b7 --- /dev/null +++ b/web/themes/custom/digital_gov/templates/partials/guides/guide-sidenav.html.twig @@ -0,0 +1,31 @@ +{% set subnav_links = guide_nav[guide_current_index].subnav %} +{% set subnav_main = guide_nav[guide_current_index].link %} + + diff --git a/web/themes/custom/digital_gov/templates/partials/usa-summary-box.html.twig b/web/themes/custom/digital_gov/templates/partials/usa-summary-box.html.twig new file mode 100644 index 00000000..d78a530e --- /dev/null +++ b/web/themes/custom/digital_gov/templates/partials/usa-summary-box.html.twig @@ -0,0 +1,14 @@ +
+
+

+ On this page +

+
+
    +
    +
    +
    From 457747f990e45e8720d1769bdfaf4ff3fe990739 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Tue, 24 Dec 2024 11:51:00 -0500 Subject: [PATCH 03/16] DIGITAL-47: Hide un-needed fields for guide navs. --- ..._display.node.guide_navigation.default.yml | 32 +++---------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/config/sync/core.entity_form_display.node.guide_navigation.default.yml b/config/sync/core.entity_form_display.node.guide_navigation.default.yml index 87d1277a..75ca0d0a 100644 --- a/config/sync/core.entity_form_display.node.guide_navigation.default.yml +++ b/config/sync/core.entity_form_display.node.guide_navigation.default.yml @@ -14,7 +14,6 @@ dependencies: - content_moderation - field_group - paragraphs - - path third_party_settings: field_group: group_settings: @@ -99,31 +98,11 @@ content: third_party_settings: { } moderation_state: type: moderation_state_default - weight: 10 - region: content - settings: { } - third_party_settings: { } - path: - type: path - weight: 8 - region: content - settings: { } - third_party_settings: { } - promote: - type: boolean_checkbox weight: 6 region: content - settings: - display_label: true + settings: { } third_party_settings: { } status: - type: boolean_checkbox - weight: 11 - region: content - settings: - display_label: true - third_party_settings: { } - sticky: type: boolean_checkbox weight: 7 region: content @@ -148,13 +127,12 @@ content: size: 60 placeholder: '' third_party_settings: { } - url_redirects: - weight: 9 - region: content - settings: { } - third_party_settings: { } hidden: + path: true + promote: true publish_on: true publish_state: true + sticky: true unpublish_on: true unpublish_state: true + url_redirects: true From 11968d6540577024c56b20a0fac17604d2f8cf92 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Tue, 24 Dec 2024 11:51:26 -0500 Subject: [PATCH 04/16] DIGITAL-47: Summary needed to be re-exported with the

    tags added, they'll be removed on view. --- .../content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml b/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml index e0aa1ad3..4e8f1f04 100644 --- a/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml +++ b/web/modules/custom/default_content_config/content/node/f0dc319d-abd2-4a06-bb17-1a9cd3ee3ad2.yml @@ -41,7 +41,7 @@ default: entity: 258cf431-4a0c-4489-807e-c87087c87cf9 field_summary: - - value: 'A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow' + value: '

    A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow

    ' format: single_inline_html field_summary_box: - From 867f331aa2d9fe90b29bca0610782913185519ac Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Mon, 30 Dec 2024 14:07:11 -0500 Subject: [PATCH 05/16] DIGITAL-47: Added a patch to allow circular default content to be imported, rerolled patch for overwriting files, added new patch to allow ignore exporting specific content. Switched default_content to dev branch so circular reference patch could be applied. --- composer.json | 2 +- composer.lock | 23 ++++++------- composer.log | 1 + composer.patches.json | 7 ++-- patches/default_content-3200212-25.patch | 32 +++++++++++++++++++ ...default_content-hook-exclude-content.patch | 14 ++++++++ .../default_content_config.module | 28 ++++++++++++++++ 7 files changed, 90 insertions(+), 17 deletions(-) create mode 100644 patches/default_content-3200212-25.patch create mode 100644 patches/default_content-hook-exclude-content.patch create mode 100644 web/modules/custom/default_content_config/default_content_config.module diff --git a/composer.json b/composer.json index d4abad4e..40cc4ad5 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "drupal/core-composer-scaffold": "^10.2", "drupal/core-project-message": "^10.2", "drupal/core-recommended": "^10.2", - "drupal/default_content": "^2.0@alpha", + "drupal/default_content": "2.0.x-dev@dev", "drupal/disable_user_1_edit": "^1.6", "drupal/easy_breadcrumb": "^2.0", "drupal/embedded_content": "^2.0", diff --git a/composer.lock b/composer.lock index a004305d..9aea349b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b1467b2cbbe6107729eb297cf1da7ca9", + "content-hash": "33f264f800eee7795f7ddd8ff0cdfecd", "packages": [ { "name": "asm89/stack-cors", @@ -2220,17 +2220,11 @@ }, { "name": "drupal/default_content", - "version": "2.0.0-alpha3", + "version": "dev-2.0.x", "source": { "type": "git", "url": "https://git.drupalcode.org/project/default_content.git", - "reference": "2.0.0-alpha3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/default_content-2.0.0-alpha3.zip", - "reference": "2.0.0-alpha3", - "shasum": "fdd90c70bd91896835f6ba5ec42c260c1a144a2b" + "reference": "b85c0192af51841518bddd9ecfa5077b1d0f720a" }, "require": { "drupal/core": "^9.1 || ^10 || ^11" @@ -2241,12 +2235,15 @@ }, "type": "drupal-module", "extra": { + "branch-alias": { + "dev-2.0.x": "2.0.x-dev" + }, "drupal": { - "version": "2.0.0-alpha3", - "datestamp": "1724492420", + "version": "2.0.0-alpha3+1-dev", + "datestamp": "1726239226", "security-coverage": { "status": "not-covered", - "message": "Alpha releases are not covered by Drupal security advisories." + "message": "Dev releases are not covered by Drupal security advisories." } }, "drush": { @@ -16539,7 +16536,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "drupal/default_content": 15, + "drupal/default_content": 20, "drupal/inline_entity_form": 5, "drupal/maillog": 20, "drupal/multivalue_form_element": 10, diff --git a/composer.log b/composer.log index bedfc27b..42140786 100644 --- a/composer.log +++ b/composer.log @@ -54,3 +54,4 @@ b4d1a71ae39798e387fe895acb3c924c|Oscar Merida|feature/DIGITAL-140-security-kit|T bd7840ebd67d69715dbd07eef9ceb742|cathybaptista|feature/DIGITAL-114-implement-identifier-block|Thu Dec 19 12:41:31 EST 2024|./composer.sh require drupal/config_pages 72cca00bd0b4403e0db152c489a8e0a1|Matt Poole|feature/DIGITAL-114-implement-identifier-block|Thu Dec 19 15:32:32 EST 2024|./composer.sh require drupal/link_class b9a62f1676c64c163727b0feef5db80f|christian medders|feature/DIGITAL-40-gtm|Fri Dec 20 15:46:24 EST 2024|./composer.sh require drupal/google_tag:^2.0 +ecd8d3718dace87ce47538fdbc6aec7b|Matt Poole|feature/DIGITAL-47-guide-nav-templates|Fri Dec 27 10:30:23 EST 2024|./composer.sh require drupal/default_content:2.0.x-dev@dev diff --git a/composer.patches.json b/composer.patches.json index 2e33699c..69f4659e 100644 --- a/composer.patches.json +++ b/composer.patches.json @@ -4,10 +4,11 @@ "Disable drupal/core from scaffolding without being in composer.extra.drupal-scaffold.allowed-packages in that way one has more control of when new scaffolding is added.": "./patches/drupal.core-composer-scaffold.implicit-drupal-core-disable.patch" }, "drupal/default_content": { - "/project/default_content/issues/2698425:: Do not reimport existing entities (patch download b/c of it being from an MR)": "patches/deafult_content_2698425.patch", "/project/default_content/issues/3203014: BaseFieldOverride cause inconsistencies during export": "https://www.drupal.org/files/issues/2022-12-13/base_field_override_inconsistencies-3203014-9.patch", - "/project/default_content/issues/3200212: Import should overwrite files": "https://www.drupal.org/files/issues/2024-08-27/default_content-3200212-25.patch", - "/project/default_content/issues/2943458: Exporting passwords": "https://www.drupal.org/files/issues/2022-02-18/default_content-2943458-9.patch" + "/project/default_content/issues/2943458: Exporting passwords": "https://www.drupal.org/files/issues/2022-02-18/default_content-2943458-9.patch", + "/project/default_content/issues/3180348: Profile entities have circular dependencies": "https://www.drupal.org/files/issues/2024-12-27/default_content-profile-entities-have-circular-dependencies-3180348-5.patch", + "/project/default_content/issues/3200212: Import should overwrite files": "patches/default_content-3200212-25.patch", + "Created hook to exclude content from being exported": "patches/default_content-hook-exclude-content.patch" }, "drupal/embedded_content": { "Convert html to valid xml": "patches/embedded_content-convert-html-valid-xml.patch" diff --git a/patches/default_content-3200212-25.patch b/patches/default_content-3200212-25.patch new file mode 100644 index 00000000..46d75276 --- /dev/null +++ b/patches/default_content-3200212-25.patch @@ -0,0 +1,32 @@ +diff --git a/src/Importer.php b/src/Importer.php +index b3035db..3a5b167 100644 +--- a/src/Importer.php ++++ b/src/Importer.php +@@ -316,7 +316,7 @@ class Importer implements ImporterInterface { + if (\file_exists($file_source)) { + $target_directory = dirname($entity->getFileUri()); + $this->fileSystem->prepareDirectory($target_directory, FileSystemInterface::CREATE_DIRECTORY); +- $new_uri = $this->fileSystem->copy($file_source, $entity->getFileUri()); ++ $new_uri = $this->fileSystem->copy($file_source, $entity->getFileUri(), FileSystemInterface::EXISTS_REPLACE); + $entity->setFileUri($new_uri); + } + } +diff --git a/tests/src/Kernel/DefaultContentYamlImportTest.php b/tests/src/Kernel/DefaultContentYamlImportTest.php +index ed93b3b..aae0957 100644 +--- a/tests/src/Kernel/DefaultContentYamlImportTest.php ++++ b/tests/src/Kernel/DefaultContentYamlImportTest.php +@@ -141,12 +141,12 @@ class DefaultContentYamlImportTest extends KernelTestBase { + $this->assertEquals($term->id(), $node->get('field_tags')->target_id); + + // Assert the files, since a file already existed at that location, one has +- // been renamed and the URI adjusted. ++ // been overwritten. + $files = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['filename' => 'test-file.txt']); + $this->assertCount(1, $files); + /** @var \Drupal\file\FileInterface $file */ + $file = reset($files); +- $this->assertEquals('public://test-file_0.txt', $file->getFileUri()); ++ $this->assertEquals('public://test-file.txt', $file->getFileUri()); + $this->assertFileExists($file->getFileUri()); + $files = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['filename' => 'test-file1.txt']); + $this->assertCount(1, $files); diff --git a/patches/default_content-hook-exclude-content.patch b/patches/default_content-hook-exclude-content.patch new file mode 100644 index 00000000..172c94de --- /dev/null +++ b/patches/default_content-hook-exclude-content.patch @@ -0,0 +1,14 @@ +diff --git a/src/Exporter.php b/src/Exporter.php +--- a/src/Exporter.php ++++ b/src/Exporter.php (date 1735582111782) +@@ -142,6 +142,10 @@ + // Serialize all entities and key them by entity TYPE and uuid. + $serialized_entities_per_type = []; + foreach ($entities as $entity) { ++ $exclude_entity_results = $this->moduleHandler->invokeAll('default_content_exclude_entity', [$entity]); ++ if (in_array(TRUE, $exclude_entity_results, TRUE)) { ++ continue; ++ } + $normalized = $this->contentEntityNormalizer->normalize($entity); + $encoded = Yaml::encode($normalized); + $serialized_entities_per_type[$entity->getEntityTypeId()][$entity->uuid()] = $encoded; diff --git a/web/modules/custom/default_content_config/default_content_config.module b/web/modules/custom/default_content_config/default_content_config.module new file mode 100644 index 00000000..5feea4b6 --- /dev/null +++ b/web/modules/custom/default_content_config/default_content_config.module @@ -0,0 +1,28 @@ +getFileUri(), 'oembed_thumbnails')) { + return TRUE; + } + } + // Exporting user 1 and 0 will break fresh site installs. + if ($entity instanceof UserInterface) { + if (in_array((int) $entity->id(), [0, 1])) { + return TRUE; + } + } + return FALSE; +} From 106bc153fcdba4be519518ffb28154da2963de6b Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Mon, 30 Dec 2024 14:11:21 -0500 Subject: [PATCH 06/16] DIGITAL-47: Turns out the alpha branch of default_content still works. --- composer.json | 2 +- composer.lock | 23 +++++++++++++---------- composer.log | 1 - 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index 40cc4ad5..d4abad4e 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "drupal/core-composer-scaffold": "^10.2", "drupal/core-project-message": "^10.2", "drupal/core-recommended": "^10.2", - "drupal/default_content": "2.0.x-dev@dev", + "drupal/default_content": "^2.0@alpha", "drupal/disable_user_1_edit": "^1.6", "drupal/easy_breadcrumb": "^2.0", "drupal/embedded_content": "^2.0", diff --git a/composer.lock b/composer.lock index 9aea349b..a004305d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "33f264f800eee7795f7ddd8ff0cdfecd", + "content-hash": "b1467b2cbbe6107729eb297cf1da7ca9", "packages": [ { "name": "asm89/stack-cors", @@ -2220,11 +2220,17 @@ }, { "name": "drupal/default_content", - "version": "dev-2.0.x", + "version": "2.0.0-alpha3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/default_content.git", - "reference": "b85c0192af51841518bddd9ecfa5077b1d0f720a" + "reference": "2.0.0-alpha3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/default_content-2.0.0-alpha3.zip", + "reference": "2.0.0-alpha3", + "shasum": "fdd90c70bd91896835f6ba5ec42c260c1a144a2b" }, "require": { "drupal/core": "^9.1 || ^10 || ^11" @@ -2235,15 +2241,12 @@ }, "type": "drupal-module", "extra": { - "branch-alias": { - "dev-2.0.x": "2.0.x-dev" - }, "drupal": { - "version": "2.0.0-alpha3+1-dev", - "datestamp": "1726239226", + "version": "2.0.0-alpha3", + "datestamp": "1724492420", "security-coverage": { "status": "not-covered", - "message": "Dev releases are not covered by Drupal security advisories." + "message": "Alpha releases are not covered by Drupal security advisories." } }, "drush": { @@ -16536,7 +16539,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "drupal/default_content": 20, + "drupal/default_content": 15, "drupal/inline_entity_form": 5, "drupal/maillog": 20, "drupal/multivalue_form_element": 10, diff --git a/composer.log b/composer.log index 42140786..bedfc27b 100644 --- a/composer.log +++ b/composer.log @@ -54,4 +54,3 @@ b4d1a71ae39798e387fe895acb3c924c|Oscar Merida|feature/DIGITAL-140-security-kit|T bd7840ebd67d69715dbd07eef9ceb742|cathybaptista|feature/DIGITAL-114-implement-identifier-block|Thu Dec 19 12:41:31 EST 2024|./composer.sh require drupal/config_pages 72cca00bd0b4403e0db152c489a8e0a1|Matt Poole|feature/DIGITAL-114-implement-identifier-block|Thu Dec 19 15:32:32 EST 2024|./composer.sh require drupal/link_class b9a62f1676c64c163727b0feef5db80f|christian medders|feature/DIGITAL-40-gtm|Fri Dec 20 15:46:24 EST 2024|./composer.sh require drupal/google_tag:^2.0 -ecd8d3718dace87ce47538fdbc6aec7b|Matt Poole|feature/DIGITAL-47-guide-nav-templates|Fri Dec 27 10:30:23 EST 2024|./composer.sh require drupal/default_content:2.0.x-dev@dev From 8d63d923e9739c41ffc0ea40eaf81c5b56491fab Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Mon, 30 Dec 2024 14:11:40 -0500 Subject: [PATCH 07/16] DIGITAL-47: Remove oembed thumbnail default content. --- .../0c46b2b3-2b2a-4a22-9312-e592d51a5889.yml | 27 ------------------ .../3ba4ed8d-23fd-4e62-a5b8-bee532b86165.yml | 27 ------------------ ...nFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg | Bin 20023 -> 0 bytes ...ymBW5ODyxGpj4xaRO7toRZSNMbyHOpyH86OmYU.jpg | Bin 20023 -> 0 bytes .../c3fcdadf-e13d-460a-9b68-318f9779d476.yml | 27 ------------------ ...AMI_N8jVMJ0yhkk2M7I4yZBe6_E47hG2bSMa0A.jpg | Bin 20023 -> 0 bytes 6 files changed, 81 deletions(-) delete mode 100644 web/modules/custom/default_content_config/content/file/0c46b2b3-2b2a-4a22-9312-e592d51a5889.yml delete mode 100644 web/modules/custom/default_content_config/content/file/3ba4ed8d-23fd-4e62-a5b8-bee532b86165.yml delete mode 100644 web/modules/custom/default_content_config/content/file/Jgi9onFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg delete mode 100644 web/modules/custom/default_content_config/content/file/QAhebymBW5ODyxGpj4xaRO7toRZSNMbyHOpyH86OmYU.jpg delete mode 100644 web/modules/custom/default_content_config/content/file/c3fcdadf-e13d-460a-9b68-318f9779d476.yml delete mode 100644 web/modules/custom/default_content_config/content/file/sMx_-AMI_N8jVMJ0yhkk2M7I4yZBe6_E47hG2bSMa0A.jpg diff --git a/web/modules/custom/default_content_config/content/file/0c46b2b3-2b2a-4a22-9312-e592d51a5889.yml b/web/modules/custom/default_content_config/content/file/0c46b2b3-2b2a-4a22-9312-e592d51a5889.yml deleted file mode 100644 index aaef062a..00000000 --- a/web/modules/custom/default_content_config/content/file/0c46b2b3-2b2a-4a22-9312-e592d51a5889.yml +++ /dev/null @@ -1,27 +0,0 @@ -_meta: - version: '1.0' - entity_type: file - uuid: 0c46b2b3-2b2a-4a22-9312-e592d51a5889 - default_langcode: en -default: - uid: - - - target_id: 1 - filename: - - - value: sMx_-AMI_N8jVMJ0yhkk2M7I4yZBe6_E47hG2bSMa0A.jpg - uri: - - - value: 'public://oembed_thumbnails/2024-11/sMx_-AMI_N8jVMJ0yhkk2M7I4yZBe6_E47hG2bSMa0A.jpg' - filemime: - - - value: image/jpeg - filesize: - - - value: 20023 - status: - - - value: true - created: - - - value: 1733188190 diff --git a/web/modules/custom/default_content_config/content/file/3ba4ed8d-23fd-4e62-a5b8-bee532b86165.yml b/web/modules/custom/default_content_config/content/file/3ba4ed8d-23fd-4e62-a5b8-bee532b86165.yml deleted file mode 100644 index a11b0253..00000000 --- a/web/modules/custom/default_content_config/content/file/3ba4ed8d-23fd-4e62-a5b8-bee532b86165.yml +++ /dev/null @@ -1,27 +0,0 @@ -_meta: - version: '1.0' - entity_type: file - uuid: 3ba4ed8d-23fd-4e62-a5b8-bee532b86165 - default_langcode: en -default: - uid: - - - target_id: 1 - filename: - - - value: Jgi9onFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg - uri: - - - value: 'public://oembed_thumbnails/2024-11/Jgi9onFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg' - filemime: - - - value: image/jpeg - filesize: - - - value: 20023 - status: - - - value: true - created: - - - value: 1733188190 diff --git a/web/modules/custom/default_content_config/content/file/Jgi9onFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg b/web/modules/custom/default_content_config/content/file/Jgi9onFSn5VIiakJqtM9jw4Uc9oSkiTHUyHQSrWOL-U.jpg deleted file mode 100644 index 2b79771ba12d64d95cc6121ecf5729eb89f4ef8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20023 zcmeFYbyS;CvoD+$C~a{l?q1y8N^vN`Em$c|Ah-r;X_4Ympad)KEpz4yECS?AuhzW=_vla3`biN+_!Cno$S?}`4$6+YqP z9{}FVXEx7PP@d5Np5r}3!F%@D37~kIAj&`AfdAG|U!bEsdyew*saF;k@C^0Yb5t~x z=cuS?&rx1INk2zH#Y4k?LGXqaokuHvj80mE*Nl+f`O8a&_nJg}pJFpBk7e497zJhJ zTwL7)Yo10Sf6~Nrlz*t>KiV_2=cq4G(4RU*@c_@CJ%74(k>L0P|_)&+$<308)TEi_p;LbTltRKhx0x z{{KWWoDtmc-a@W`fdTTS4$H5v!X`!);#H<3UsFp^%JEiSDE*a|*@m zNonmyW{+1G2`Jq}LBxAqqc8tKmlJuyJ;tcLE+6iyf@`$18 zp>7cpYF%y9vHZCW|5#J$MY5W1(5xa(B=Kpt=tph1Uh8rLBOc-R6+GgckvW9e2w17- zjPxBeYpgaJQyw*G;Wg@_j$ve|FuM#MPM8$z$tF5-xE-kgq`CbhxP=%)zK`5Wdc{3llni`?v1< zN4La0e7-mY`i4co(ejmoCX30cbaECOgE)F|<8Puyz6ql@-bAQJF3kSfVntKIq@JIY z1_xuyBK(~9oxMID858WV<&P94o3>Y)n%bQQ?YjBhJh1CbF~Co{q3>uOl9GH|D8by@5{0cW+J4DSuO)B0^bXcs-HOYLhSh~Be7PinB9!}$t;d~;>Ms6fo*JL%S zG-9d#wS&_6M2Wzbd+6ERj_TYeYo!TyNFYf>%67$!BwT^SH6`#Rs+l=ih215uQ{2AR zn30t86 zLsTLq=2lju(R%}{G}WwRRH;Hkb3Xqk0Z!8mqcDBRZJoiOjYn_Rt;lS*+IEZY-B&f( zbk|yTNU&Aeyb@!RqeV2?`PAFRzn&I}$mZBTa<-X}-0iay9SiIjDx=tsxGS&P{!kv_ zq)WGN?KIMtm^jcO>!F>|)K>Bo+rlW9wDr_Yfj#J9?t7xVU%ySIrKL@b@lU7h47o=| zX#bvyZL{)30CieIXo>Rujj_K)<}-Q?R4g94(HW;SePxfjsgg#A$FSC}NntA}9S@+} z*c0{HhyPs!hL@@itbBn4UbpqL*IWMo8OpM*n(n^VE=-+i$QTnvlL5Ea`N;) z+(rmL2Pwq?sP*f}HW;;`V=OI)h4e^@<6g&0TXVIUBwW6${@+THA(UV8VPlYmneYbM zA$&0s^E@e&{TROM+p@!Fo+@i~hP(cL(edts#e{e44_2np%x9*}w+T{swO5B~Bq2;> zrBKib&!BHm?g8L({)`{<;dR~s9y;8qw1vh7Gt(@K&RdYol!TcvCB>s;7ds$D)kPO>+R>U+GRphJMvCj zciPF?{#q70Sc-MUDWsXlII}e8w6AQJT$iYM@IVI04OGw#pg^Vw>V5~+iQ!h&@kWnxoLW_<{=#UW7?A9T-$i{pho{l*AGn?>(I!0h)$#Zati~E z>qa$2T;*sJrj5N>ipR#qq1X7{<#v+t#A-RPyS!*mSATbVYmal%%umvM3Al%|+v_o- zG|%k6;vn++ty|VD!Inzgan}R=NTKfJUQ0`Ftyhhgblhfmyk4|I;>H-ZL)`XA%%Sf!`B$`4}3_6SS<Akayj}u_q5Z?q9Q@f^FO;St?IJTp;rvVvr z0tRT=C%|k=C0;szt+XCALFpwsc62X+7EjzTjFszJ8ntUn;+6;OmYTRNB=ptYJ!cVM zg~@^9_E0n*-qOJ>`rPO8Ii@jnUoF2ARP2nv+Xkl|9E{k{67+|lh&OOfc*VM2A^m*b z&dnAI#LA$aj<^Rmfm@1K(haeB`x(LvzKGboP|Fc|rjorTOK6Jn)<&CE!_wh>X_4>s zzN$YZkcTi>tzhWEED}t%q;K279iR)f?#&;FMzywz6$;l%*P_ofVLdBx+W7Ie&X$4= zv6|nocm1u(}u4Wd9=VIKyfYk7tG~_*iTG=kW{hr zFn9H&8Y{(EH#5``4AF7!(UQdFq~G=o}}crzYpViosYyp~(hu9pEsBS9JN+X{IU! zg8Jv=PRp_F3PV<}wn9Fddpuv-5JKmcJuz#evIs{2ykeQ+O-Qg_BYP86)Zk`URgQ%8=Zs#zJTB}#uLK~CU( znTKCcXd75W9y%xvBF*1T`RY!x|2+m*lbX!I*IHjBGxlxdVyu}PR1vk((RjoeO{1JA zFn2rxh%Couwz~2=*h4g`3tZ)ri-}Xze^R66b+ zz>+ksFEaRQ`a`tFyJJSyAc>!Lv&Kw%w5?TQ-*9<_F)3bbJ4IJO^mK8EHo^>XzN(f} z2-Ozf426wU^OyeEgPGUNpNsqi&l6n7e?Ua-yUqbgpA?lA=zga1+J+EJS6sl0O|&g(be&&xsn!lKBcav&7_qWasHj((lAASZ4^QNSrq% z+wJcp>cZ`&?^1DU?v!r|7!E>R9GybL>2d$H(`;&_%0&6)Cnj4b)a2_T)Y9X9dFOd} zKdkqPsD%xKLYB9$)(Qr8n;xPP*pV-BX%@?atJ;s*l;-6AnuWfQ`-=^z+|K>r&YnJM-K z%7AV0$3F`Zv$pjJn52022xx5Tll;Q?#e1S_7*!EuvYJ$bRpv%zxsHO|BIf&3h7oQ! zB_ilLuJvuUqPxC!JaWjwDFhn{PTh|aTm9xStgx4N6dXsp8=RsL8~M8>k)!?*Q0IDk zT?A}>1ZW;DKCf!)Pf9(D2QgwGix=k&{qrRr)csU{f3Oo(Eh)`E<=lM)1dQG}_xM~* zvI~p_(tgQ}J=oudh(LR9tpVmoqd6TOX?vq>5G{~T628AanM(z3` zs!Wz0yMs{}>>DthWI-i@)4Wa<*ZDyIm3c7q^POMPyz+d_FWg(>NRxxpjK7D zx(KY}*F;)G$Fa`+uMPEon@jt)76;P}$s3(EY{P_iXZ#_)M35=EHnq zlG@+BrsCIUi=<-)xkQIYbC;?R$4@tyg^j>(Q~J~1<_x9BCeyaa!fpmG*5!cj2D*BP zV$Elm*gR=Su^bLzPv^}As%_?j%wx;99|X$vtXUFIsBurgM?esI(yo&*a)uDDPzclt zELLsPzBZmfy1@(ulNv~(B7yvS%8{0u+AZ!0#cZ?n@Kc7x^o5x+!WF_?r@9QyV3+_K z-ggTq=q@oNvGx%2du)gYILa`|fBPt3=S}V0_!{mZ+<$t;H*4! zx#R5)v7+1_X4m>hxegC_(wfGT0-FR2tE~;K@FUPzS zA#wtM)^i6VM`noe?yDMkouQz$-a^DK$ce--MB-~*z}zd!BWcsO$7jLk`MR+%+< z3{ow!Qr-L0E!mnWOC5xu)T+C@Zcas|prTZ!xuCU;c_k|kRS@gm?cXX!ubv)slS$Fw z?oXv4Njd%H$h+pQ!?+I~IMC>rVHA+qI$L(mF;Rv`JgXfLuaTzvz?%bnZ4PFzh`h(? z`6(5@ouI#NEJ~Y}Bo{Obw7exW+L&hY;^$ zQ|YwlLQ*)`Nc5yHH?U>4pZ}JUYg5nvma~J^ zFTApCXapJaM)_itY#Y~U1k34mZ**#Hl508rn|0*(h7W|>ai6;1xreeh!Mfw;cc(%)9Z|}w` zGrtEdY_!8iOcz!6Z40w_eG8Y+YBW7MMu^m>~H2#Zm3%rtM58%4XbO^MMLJR-#~Pykd5M*7?_kbjp5A6yn_XPtZyU z5+G8QZz>i`D^Yk;1448kTZy!8Hbk3o0G@n|Ji2R8@sT@9{vL%HWilK8!noti=c-N@ zf&EH}d|4Ej^ALT5_0QhBa>v(KQK4hBlbj;Kj{p?GQ=7^|8@I7NJcpt`6M;umA7n-x z**T(*?;Hp=gP6C3*pfp)22V-4rSIceXz9oKHjL%T(Sg282~}49%KfCRwwUNC$%~? zvMp9$*V%FLTdFZGR!e2@r*aWifq9!xv%h2?DH|_94{`%6YZK0WZOj|3(fiQ+{3TRW z>;5*%DOXjF&U}-Rp6K}mw5*^KIc_cu{X!BG8Qn{Ic$~TF-zr8QN6BkIpZ-EWa!nt_ z_{~>W>}_GdHukMrz^p+%`3L{xJm*q!7d?mIU6>bEl-H(3(AXZ%bLN^gJqIW+x^v9y z%44Dua_DDSkIzx8=OS(Ks}amu=GSfcV3)-qv6lJ3*YZG+ePrpmXA54trV~)lWX{x}wk$0+#wL}q&=}@(zT1Covt0zfXrG%`f%$xA=CClH zISvdMKWx*iJwTl*cz3J2`;)DECuNxL{e_|xjY1!f$inJ5O5z4igP})a|EbZs2E?aB zxxp%jYmdPlH2&f0CrWY=A4lY}`U`FiSMLz8!0bV)JLSo&ujZ54}r2RaZ0(Lmn?tWl`)-J6oemsb45D1!C|re8)a5l_`&+I?Gl%x{hU6_db*7@SqDAi@v5F|EkUv23bbpqR}57*S+86z>L^p=T`j?-u^u z`BF-s+=(yM6C_#f|N6H|2Z#dy5%6PG4-u?HB|~=W%2PE1Q#*t7a53-iGEygqg}7Ta zf!4n;{`!=dQ2Ek#rTe}#HZ~MaS=Ir3v0T|cSG?w*nV|EHKDJFqsoNlx(U5`g)Ie#% z&QZZS&yb`CMgH2*v&DF-EZgJaX-87SzVa-!Bb>L(MejpRX>bwMHzROh5R02lMJPVA zCAFci)Hw5hF?HZBA@FL`{nb2Z;6-;I=7Ez<nEHDU=ask1mDprm*{wb7G4DP znr)CL)k-MKaHfbYzZ58#T$=uKzfmDjBEoL98eMRWI47A`iEi+q2X8l{vsnyb$L5J5 z1K4XeR{~d@Z_9<&2JMT1X~J?PeRB1!Ay>yalW{2yn~4rClGpZQZ29Brnhr?MvPS?$ zBFv?9dC%%=JA`hV>=DquwI#?y>&c4^oQUC(JTUN=zCnR|oS0H#gpiN^9fs#G`ZZHl z@++DLw+@z0@Ia;ZJ|_{4!$K+j$y>H?4@@^ zHQUGp9m7L>?IhiXoWCI5YAs-Y!CzQe-<$jUy$!$tj{NW#;ODE{D7u59n1 za|KduRWUJUOnT-f!`$%V1J^kP#m|nSHVIWBeIh($Y#mK*YR;W7};3(SHI( zZ+w67QR=fys#N2*aIJhd3P~*B(4;&6kGxZ*Vi00N#c$tX-DiuQ;H?Bpkx!enWte9( zvJ7tOlQ`fwh7_OijYmKq3O`{nh%CFjM74O3#z^bD>0p1ES=K>mmyP%JCe=Bz)33>z z+J7TMpi}NpCb#{^Ix~w3bAQf3_Pi>w1L2{CW!T>Yu-1<^^f-Lm&XKtij%8(Ydz1Dl zT;lXy?kReilcbHf7@+&6IejH3i%80DoLJIZZ!;jg%g3GdF#Lm+DU;I*LLkzaWJ_ZF zUd@S0=7LIvGi@VIvdyRae-JW@No$8Ebx+q-N53p%NoI>HLB3KyQElo0XjkA>f)OjMbJl|2IFzIx0C3~bC*>CjX^hzqOsB$L? z`d@WR@soL^f*?14OAq}H&MyU+BYHkI208K+D(&)5tul;P)xkj1a|7=`(Q(#q2GU)G z2}ul@lNnu8O!H(9jW}b0<^4Beq#A`B+D=`cojwJE8VMWGRg<-9m^FJNNoq+Zff6pw zW@hKP;R)}=E34|t4QT-%^e=GLTqv-YtG18OQEYF5?8Zk53<;Kgw$I)8r*SMrUk3`d zswcO~IU$EUu(=V|5@~fIcLRYZ#?S#)_=$@4gmc`Ld$@*!lCP*^C49$jYrry~=uY?c zZ{3y;8F~x~b=8Zg`;Y+1rGP0rGV5=v7hb`&k;N}qKWY1_wac=XWM*RhG^ZiF6#zY_@hJC;fvlh0rP#f zpy+R>X(}rDz#h?-R?I{;gG%G`jX)AI1Zb~VY|kP#r049SFQN2CubkM+5mnTEQ3eQy z47gd>!s#0F`xG0ZJ=#8HFVERXqh?6u5M7>WE zDdNnV|5m7=f2&2AR}~|D5a~ba(fsT3*${{Dtu@ASzWV}`Xmv z3!9j!7TJvQkA#h8xLWNw9L}s4EIfRXW@6`bcB)l#%usWn6EuNr*#+_Ax{t^-+gG(B7;5oS#pj8=>x*X6&@NP~24*)wX z$!z`+&}m@&2zXOpd&5lTu4?P&IZ=q!h=h1gEmpBI9WBtLsZzj2;M4)clgdx&9XcnFd3?)Xsa8*6^;oQMKB z%waWKIwn7%D8F^fE?TAqc=R3V49F3!aO%vJ8f#%vYF|%X?AL3zjbeFzC@9pHCEyGW zuPs**-}W9^3-rXpEvfobWa&(91M?lqi6!!fiU_Xa0 z&kF=GXkFQz@@6!D0+`m%{yNW^dj^N_DxOAJsC92`?;rg6dTj&Js!s`FN`P-f6D8L! z8+(g1!MMj|TnW;-0nW@Ml(+1#Z_*=eCn&;q*S>|28k7qMWX!_DBcS4rHL7@&`)aSK z*yUSkLcI!`^Fva0BfAq7O?lwgT#|0*7O;{ri%Z?)j@OsYZSAUA6ilagR!GM4~uT8hor{$2~siyd|WYFW`+;B7QPw zO0PKETIc&aiLHZ5EI5*UPNzYDZ0h_~b|oQ_$qZ|+xq*I2&|Ea=q6DO5U!klxO|9_>99MR-misN>L7x8`QM77gLuvGU)z%1J> zl_PmlC&0^xTY8R^2+7)m?3r)_hlmi(WwzS?(rD~gyWV~Ewr%& zl$c*&6jUWhe%c~0s6O3GvL#Rt1sRPV^zY{l|MrUf2dEw-gtW9y}dt}5Ks zKg^q#=y~*BRYab8Jl7%v%ElD?m)%c^e-Yj^;Zf(9Lgt5qzuua^=M#X3K}7Cj4oL{B ztUS@ESu?JUNEnjTsV(0=tjih$4|_h-z6{lqoZ&X&lC-_>xExKq7&;$7BZKgNoFx{h5Oi|u)q1!rH)OIE=NS0NII&aFcIO*7;9vc1uE*Yb& zzp{GIbN$-dfXLH)@8PS|rBM?$jmK?4u?oR=^@LK_IT9TW<0eWmKH}8tXEQi|u1y64 z6#@8aF(?d=fOo{*=$rXcj`!1WlwV`~Gx@luR;jWStHBK?isN^rVu{^jF@QUqhW_d{ z4V|@3-%4d<0;Lw^PE|Y42+QwEz1l|rRkvnncxUDRN5#e{b4((`Sms8TVtu7(!%}0V z2YSu06ImI{D8*E0aBq*i;@#&ve4>W-PgvCN9~fr5Cx*xwV>_zTh7u~fs2*CP{zF(jB)xILxRZi+UYyB`TQX67hEK6H~^Y?%3qx?aE5N(q#1<6yuS|Bg;d zU3JuW^Mh7*D7D6}pNxK5@S~Xx1zXpcWRuNe+4Wp^Fn^V#|Ao+5NY{4a1$nSr&p6_=m)=l{X^$R6gaWyR9XFta0+o%U) z#E)mhpI1{YEc{w_{wWtwh0@RUtb??-XImmRhibk4K88x;zx40_UBINCAUZ`EJ8FZ; zC)>#kf)I)HW*lpXGpmwUVjeVS@Vs@a9l;0lRu}K;L{R)$9b}JUl546?qtLK+%V_8p zqk2$zn>NdQvEK~ZrwHo#BucGT819~{=51Uu!j^O{j0_mN6b+LAQ>tMWbVJ#gEt3_3 zI35901n*2_)Y7q~g!fy{=&=I=XkPVfALS}J;>^P9-i@5!p&=TaT;kHwVuwJ)&yOjp zJKstMrM;8=GdA(gL0E1XZ1oM(f#i=T^43zL*6M}dJMRz*f8--z(I0Vy2m#x|ES0BV zqnJDc?4PkFhUigpk`GRu8B+aU0QR46`s%Fft@d*l14*}aYU0NQb(^3kB}roGXFh~f z6;(Q8^22|()M_)9NADy*Ac=g*pz)t5yJyF^jE%Jx3EtiO~k)c z>_2`XZz2- zOpu@wi$%iJc$mw??^5=8gPKEkPjk&0?UYp0rpO2>il+g6Jt@D#J zD{Fi91{QC*be*YwAwFCz)gg>%W}x=(-+F`I>QTKKvk){EoG|X|t#j?Bcs{rantE;D#qR82@ui3A=sk3CY4CDR(v!|8V03np`aE0}{(H z@Pg8n$T7AYuf5ZIgj>*?TeFlYhO!PR1L5dcYS(3 z5H~6IEp=z+m_8>$%nZx*F7ZG&F`|93cm%BRk=Ksjf9PSSNZJ$M6%x(#`f4V!jk)ql$a6DN~T{?kYqE&vv2ti~FqpA@!{ zK-ksuf+EYV&hf`yF1)Jx1K#iehsF=^xKmO^&hWpbCaf=0Ym2kPn~zdVQ5LdAPD7B@ z&&+&FV|3jhKa|HO*eTPNMK(mIx+S75n=pNKGu)%?N3bpX1YdE~d`+BniW2XY%&u&{ zvBLB2$Z4+K`BOZkg>5DUp$tAb9f!_&E&{gzHm@isk zG@?PV!#b?_dWuIh$*~DjaLFKJHj>0G2HzsBos$67OU#L-Y}IG#qKaECxZXQA3 zY1}Fsl?({XZ6asD-;6KTn^K$R9I%<-@+B2w>Pc!v4-U-kUt+p%G({r)JQR($f#kS$Ctde8Ze>m~<#>bu1>lv_mbCDk{~ho=sWw2?>q_nYSrc3jBEc52B1 zFL4!g&TE>ek1az}th!@vrySIyc*(P;?0G&c{Zc$ID-!XY9w1o^_87d=n<$=~cK2fC z?*d}I-_SW;tgI4Ibo=1xBnxCrww55kD6@fQ0PiWL!6V?JXPF^WwQE6H3AS)S z>sxyk=}==HuQgdiQoPGw)I;v&6MvxNo}}M0N;N>B1^v0>9Vd0y<{MN7;7a8+YOxnp zpBJZoL2*F;jJwO+ls&Cb8K>2Gpc{p3n zIdr6EXYeV2V+blFe*!|5nJbRO+T1awb52<%)|}XRZltI!j(@myX$0M-RBjQ+H$=I< zL+fY&JO>g0el_%n4SOQH&5@yHv|HV9Z;I-MHoKF%`d^on#8U|Ct*%_4Zv9vE11^MD4gM zDF%hfdd%E;8PC*a;;W4*fmh5qCVLa23*GvdrC3QnPF#kNHsH#w7ufH=l-f;~^;FisaAF z4mr(RIRVdK-S;G2zK%wpX45VP3jE3{%3GOenusgMnY05sMJnbL8Fvpq0+Lk|DK06) zjwwh)nA!Hjc2^4LxOuLZda#lXRs!@f2vg4S-E-)>uoL$c!9= z70`fAI;>*Gvj(1*BI%ivd)-ah?_UFXMwk|BR!I|*!x!V{DL>!gBvd{n>2qN2`UQK0 zIdDSVmn-SSHNcsa*;vIs?pYLhGRk@i0JiTGUsoeumlf$#&el#S8L*F$?fTANib0I} z5ul@@EfLUB56nal>go^;Z`_~Q6et?|JJY;#uc?_$Ax9m;JAY{k`^Q<~U1%tVpORf8 zCt;MryDhzjkA{((L6tI0rvnU()-@co#%RL zV9xz$RCkL;+ZTzdFn{(`xnLOb{P{4RmhR42LCF@EUNb)DvV8DP=nLf#$$qovTsNw%J`LAaE&&p z_I#t6r4l*&%)BYoWCbNn%kwU^M(B52!|RrCc4j4Q*6T2bTgm?EDuks2|MEL)l-N%WIzLo^sr)xCYB+ovYRR=9_r zZIyba^V`oWr%|dF1kANBngGm~sW<8i(B&q}m zB^j$R>%^MX&fRuyBNb-A=bK3kc@Zc6{n;?-BcR|xlYjq!;&5hSwb*1CXJ;&|QLbT6 zy14SNp;RG%Hs{)1OtY)5I5#{cQ6vs)&`E^qef}SOEI^rtg?+ zR!+(Jhv0Z!%N9-^$k}^m}-!|Gs_u zvbds|9wWGLODi&Cs>zS5GG8WtG@Jb>G6Q+GLPu96qy!Vp}!N5|)0!NjMcJWC{s zIzSihIWuHX014d0cO-qs9DWD!SVxjRcv06)J)w3OWI9l?$v7a{mt zO>_0W>XeFefEg!Q8&x=LP+ZsIlPHE!?tu`H+VYQL*P&7M$Wfj$28ATN#7*SFE_Kv) ztK$K&fudmtVh}3pL*T?YxtMs#M+hL>d&%Mm*oi zgS@gGMpOSeKQW zhkl-`mAQpE#s|yagTfZ*ggS`deAE2*nt8E4O?I=Bn^CM)eKhV$4RO4Z=JpEpBy-zv zPlure-WT$gI$y_lc~ziqCXI(BR-t5^nUX0E=Nsw2LVItsD`>x#R89VvI1ZE-en=0VtY4;8tcs9c(8&Oz}fKj#v6d9CE}&2c4)4^cAo z`lPhJk<`xHi+c6h?`!jnD)X1ZV zwYLi`JCw>KqT@OQb~#4m(Zl5q<_FGC+Xo}AX=6Y;IZT+dFs6oErI1Fp+4<(M@E6-rq) zJOx{iGSs5T*kJhyzgAOHibG&q;sMug#wFGZybs{U1ua|?D*_wKju0y8DbCD}45#e1v;`31Js$OxcS26?{tY79o za)crF$2K8m;llE7_X(@oKX(`ugn3oRXr`MTDBA&k z0>Aw50)2<28ta`G-!F1?M2Z=JEvKl9Z6jeAVwOMt^hS6j3;TOVQp}b3yI@qNmM}k+ zrG>qnESE3Kqb*f_`S(v7FniEhcC>fCMV?qV_{&0^j>#qIUY!7mJD51HvOp(}#jH|t z7Sl24b`A4;$B*8QrhP1|1E}ZQ0yXQoM}V8)Gw#RxCha-0@EA>)a^#p9_DZR z%B`PIO7;5*X|b%}D+UjWrCITY%0TGkoh5>1?8-YvO-mu;`#H(}WOae&7^O*xTMoe? zo*En7^AVP@8hcVy0ys*uWBVa_if(tUqdxI+p);zJth*n-E&;;93l;Z^yhAOwxqQAU*ju1z%&W_G5Jvhq?S1#W?`7KWzLJY0U-^GdS_Y}*v zo}Th@U7q*a+WE%VRdTIcI_JvF?rtNPym)Lw?E%QGzs`;y&f{`{teYTtE)$2cc&(Fx zk2!Z3>M$0ZkTV;tkgB}ZkI?-~8?T%#wp=t54c)I}Zb%^^UB)uIQ3>t1itjYGRCt}8B17qOESRiB6n*ErgkaTb#00fK|_0F z-5(h29k7zi!DJXFFYgnbGa0RyhWwd0i#$zsGk$r6rN3aTF4st*4@A z$t#25hIKvs#i)Hj0m@Ok+95;r*R{z6nXVS#4zlS-0IR|))1;aZ>ipL61=oGA>@uZ1 zy>W)7!EAZuD!s^~_q+7`xfW9(CXS^op5tmj{Om7^sD88e&bCKSC||qIr-PPDc9T~} z2GL<|b7T+E&d0-jmi*f#$FT!3a#mhIj6Fg5w9boRzL=L{rj$ncncCB(dvDytJZP#} zR)6m8;5`4y;pP;6(kR$H+Czk|a=Y(=z~8Dd|Bb$`J$8&rc8IGWSjcGSn2+(-rD(vo z%-jE>3x|^plQcqT#5W^ z4cr#hFXU%?39GWw{NbUC+1r9*m|SeloOu;ShhwnfsQ zzvub<&NRadrK^l~wCK#oBWvd`W?~0B_lyP5nepHokmA$8cW1y#9FSMZh}5fG!#`)y z?2<8F%i?&JX!+@=oi#@Hx<&q9Ol27bb95{InKqvxx?R| zrN!QgNv7&%8=vmoXka?A;h2eGuS5p(_IKgBIl6U#5L+3{BnF(A2ckgE1zu$BCR9BtI^_I3a5Zl53?R`es{TH1787>x2 zzjWr^)OQn~7e7%wXFsX_XN~@>*9I4+Xu27fXR6%SyEXkwvc@69$-6z{fvv4-xkf<& z`KXD-Dt$I@pY83r`{T}oJO3GS)`oX~UH{-iSl1e!8-L%j{(QQ@ef!4SO)q8l%$fYn zE?YJHt@;tMPqRgDJxe;kZa7hohtGkf~n($BD;xN+yq&uJDiJ-{p!7Prdj4qTFn@{3oLUtTHO>^|?}Z>>$Ak6&%|n%=id<-Y#pOWUtvtPdarVVce3S0jy4FlL zW)}j^QoQ_h;-pGBOUk<9)d6!OoGzZ1IBDtrYwCO}Yiny;*}nS=lU81s>#F&)Xo^gt z{fnvBcEzq?d{IDdnR22 z2E}gs)TL4VZL1>k=BifsEZNvs{HSEMyaH=eH2bUUj$;4h+Xd&u@({;2jq>SANh zTS?X$;2grIH5reg9FzG+T+5AiY8ScEZv0AZ5`O}~6;r2&?`_&$A|8)O; z{q>C=AMIObE{o_n6npu0_Fd_iax3#=k!Sh~-$nm9Ho?E{N$sXpT8|&i7ja)1(YYbz z`Z5)sO4eoJry}=0T)rbsIYILMul~EhvA7Fznh!Lq_Wz!C?e{yN!Mf}3{eD$kn}50L z*1YLY_D#E;T3wyCcXxCyFqoUx0E2l8pUA^k0YOrI3z!ezlDoD;+^|PIr``cLsq^*EPu{!lKZExS_IUfX`a9lFdHwwB((kgL7Armee0uVhQ#(|? ze*Sgoci&IHef3fCh4;0L)GCXN)^Xa_{M)kc@xI{o^RG?6Q+}$ab6!l(>L!15L(-=! yYdx5J{rqe1ch*m>e*Vp@Jzlfo#LTBBMhzZDL2-)4iGoQ<$CF@pz4yECS?AuhzW=_vla3`biN+_!Cno$S?}`4$6+YqP z9{}FVXEx7PP@d5Np5r}3!F%@D37~kIAj&`AfdAG|U!bEsdyew*saF;k@C^0Yb5t~x z=cuS?&rx1INk2zH#Y4k?LGXqaokuHvj80mE*Nl+f`O8a&_nJg}pJFpBk7e497zJhJ zTwL7)Yo10Sf6~Nrlz*t>KiV_2=cq4G(4RU*@c_@CJ%74(k>L0P|_)&+$<308)TEi_p;LbTltRKhx0x z{{KWWoDtmc-a@W`fdTTS4$H5v!X`!);#H<3UsFp^%JEiSDE*a|*@m zNonmyW{+1G2`Jq}LBxAqqc8tKmlJuyJ;tcLE+6iyf@`$18 zp>7cpYF%y9vHZCW|5#J$MY5W1(5xa(B=Kpt=tph1Uh8rLBOc-R6+GgckvW9e2w17- zjPxBeYpgaJQyw*G;Wg@_j$ve|FuM#MPM8$z$tF5-xE-kgq`CbhxP=%)zK`5Wdc{3llni`?v1< zN4La0e7-mY`i4co(ejmoCX30cbaECOgE)F|<8Puyz6ql@-bAQJF3kSfVntKIq@JIY z1_xuyBK(~9oxMID858WV<&P94o3>Y)n%bQQ?YjBhJh1CbF~Co{q3>uOl9GH|D8by@5{0cW+J4DSuO)B0^bXcs-HOYLhSh~Be7PinB9!}$t;d~;>Ms6fo*JL%S zG-9d#wS&_6M2Wzbd+6ERj_TYeYo!TyNFYf>%67$!BwT^SH6`#Rs+l=ih215uQ{2AR zn30t86 zLsTLq=2lju(R%}{G}WwRRH;Hkb3Xqk0Z!8mqcDBRZJoiOjYn_Rt;lS*+IEZY-B&f( zbk|yTNU&Aeyb@!RqeV2?`PAFRzn&I}$mZBTa<-X}-0iay9SiIjDx=tsxGS&P{!kv_ zq)WGN?KIMtm^jcO>!F>|)K>Bo+rlW9wDr_Yfj#J9?t7xVU%ySIrKL@b@lU7h47o=| zX#bvyZL{)30CieIXo>Rujj_K)<}-Q?R4g94(HW;SePxfjsgg#A$FSC}NntA}9S@+} z*c0{HhyPs!hL@@itbBn4UbpqL*IWMo8OpM*n(n^VE=-+i$QTnvlL5Ea`N;) z+(rmL2Pwq?sP*f}HW;;`V=OI)h4e^@<6g&0TXVIUBwW6${@+THA(UV8VPlYmneYbM zA$&0s^E@e&{TROM+p@!Fo+@i~hP(cL(edts#e{e44_2np%x9*}w+T{swO5B~Bq2;> zrBKib&!BHm?g8L({)`{<;dR~s9y;8qw1vh7Gt(@K&RdYol!TcvCB>s;7ds$D)kPO>+R>U+GRphJMvCj zciPF?{#q70Sc-MUDWsXlII}e8w6AQJT$iYM@IVI04OGw#pg^Vw>V5~+iQ!h&@kWnxoLW_<{=#UW7?A9T-$i{pho{l*AGn?>(I!0h)$#Zati~E z>qa$2T;*sJrj5N>ipR#qq1X7{<#v+t#A-RPyS!*mSATbVYmal%%umvM3Al%|+v_o- zG|%k6;vn++ty|VD!Inzgan}R=NTKfJUQ0`Ftyhhgblhfmyk4|I;>H-ZL)`XA%%Sf!`B$`4}3_6SS<Akayj}u_q5Z?q9Q@f^FO;St?IJTp;rvVvr z0tRT=C%|k=C0;szt+XCALFpwsc62X+7EjzTjFszJ8ntUn;+6;OmYTRNB=ptYJ!cVM zg~@^9_E0n*-qOJ>`rPO8Ii@jnUoF2ARP2nv+Xkl|9E{k{67+|lh&OOfc*VM2A^m*b z&dnAI#LA$aj<^Rmfm@1K(haeB`x(LvzKGboP|Fc|rjorTOK6Jn)<&CE!_wh>X_4>s zzN$YZkcTi>tzhWEED}t%q;K279iR)f?#&;FMzywz6$;l%*P_ofVLdBx+W7Ie&X$4= zv6|nocm1u(}u4Wd9=VIKyfYk7tG~_*iTG=kW{hr zFn9H&8Y{(EH#5``4AF7!(UQdFq~G=o}}crzYpViosYyp~(hu9pEsBS9JN+X{IU! zg8Jv=PRp_F3PV<}wn9Fddpuv-5JKmcJuz#evIs{2ykeQ+O-Qg_BYP86)Zk`URgQ%8=Zs#zJTB}#uLK~CU( znTKCcXd75W9y%xvBF*1T`RY!x|2+m*lbX!I*IHjBGxlxdVyu}PR1vk((RjoeO{1JA zFn2rxh%Couwz~2=*h4g`3tZ)ri-}Xze^R66b+ zz>+ksFEaRQ`a`tFyJJSyAc>!Lv&Kw%w5?TQ-*9<_F)3bbJ4IJO^mK8EHo^>XzN(f} z2-Ozf426wU^OyeEgPGUNpNsqi&l6n7e?Ua-yUqbgpA?lA=zga1+J+EJS6sl0O|&g(be&&xsn!lKBcav&7_qWasHj((lAASZ4^QNSrq% z+wJcp>cZ`&?^1DU?v!r|7!E>R9GybL>2d$H(`;&_%0&6)Cnj4b)a2_T)Y9X9dFOd} zKdkqPsD%xKLYB9$)(Qr8n;xPP*pV-BX%@?atJ;s*l;-6AnuWfQ`-=^z+|K>r&YnJM-K z%7AV0$3F`Zv$pjJn52022xx5Tll;Q?#e1S_7*!EuvYJ$bRpv%zxsHO|BIf&3h7oQ! zB_ilLuJvuUqPxC!JaWjwDFhn{PTh|aTm9xStgx4N6dXsp8=RsL8~M8>k)!?*Q0IDk zT?A}>1ZW;DKCf!)Pf9(D2QgwGix=k&{qrRr)csU{f3Oo(Eh)`E<=lM)1dQG}_xM~* zvI~p_(tgQ}J=oudh(LR9tpVmoqd6TOX?vq>5G{~T628AanM(z3` zs!Wz0yMs{}>>DthWI-i@)4Wa<*ZDyIm3c7q^POMPyz+d_FWg(>NRxxpjK7D zx(KY}*F;)G$Fa`+uMPEon@jt)76;P}$s3(EY{P_iXZ#_)M35=EHnq zlG@+BrsCIUi=<-)xkQIYbC;?R$4@tyg^j>(Q~J~1<_x9BCeyaa!fpmG*5!cj2D*BP zV$Elm*gR=Su^bLzPv^}As%_?j%wx;99|X$vtXUFIsBurgM?esI(yo&*a)uDDPzclt zELLsPzBZmfy1@(ulNv~(B7yvS%8{0u+AZ!0#cZ?n@Kc7x^o5x+!WF_?r@9QyV3+_K z-ggTq=q@oNvGx%2du)gYILa`|fBPt3=S}V0_!{mZ+<$t;H*4! zx#R5)v7+1_X4m>hxegC_(wfGT0-FR2tE~;K@FUPzS zA#wtM)^i6VM`noe?yDMkouQz$-a^DK$ce--MB-~*z}zd!BWcsO$7jLk`MR+%+< z3{ow!Qr-L0E!mnWOC5xu)T+C@Zcas|prTZ!xuCU;c_k|kRS@gm?cXX!ubv)slS$Fw z?oXv4Njd%H$h+pQ!?+I~IMC>rVHA+qI$L(mF;Rv`JgXfLuaTzvz?%bnZ4PFzh`h(? z`6(5@ouI#NEJ~Y}Bo{Obw7exW+L&hY;^$ zQ|YwlLQ*)`Nc5yHH?U>4pZ}JUYg5nvma~J^ zFTApCXapJaM)_itY#Y~U1k34mZ**#Hl508rn|0*(h7W|>ai6;1xreeh!Mfw;cc(%)9Z|}w` zGrtEdY_!8iOcz!6Z40w_eG8Y+YBW7MMu^m>~H2#Zm3%rtM58%4XbO^MMLJR-#~Pykd5M*7?_kbjp5A6yn_XPtZyU z5+G8QZz>i`D^Yk;1448kTZy!8Hbk3o0G@n|Ji2R8@sT@9{vL%HWilK8!noti=c-N@ zf&EH}d|4Ej^ALT5_0QhBa>v(KQK4hBlbj;Kj{p?GQ=7^|8@I7NJcpt`6M;umA7n-x z**T(*?;Hp=gP6C3*pfp)22V-4rSIceXz9oKHjL%T(Sg282~}49%KfCRwwUNC$%~? zvMp9$*V%FLTdFZGR!e2@r*aWifq9!xv%h2?DH|_94{`%6YZK0WZOj|3(fiQ+{3TRW z>;5*%DOXjF&U}-Rp6K}mw5*^KIc_cu{X!BG8Qn{Ic$~TF-zr8QN6BkIpZ-EWa!nt_ z_{~>W>}_GdHukMrz^p+%`3L{xJm*q!7d?mIU6>bEl-H(3(AXZ%bLN^gJqIW+x^v9y z%44Dua_DDSkIzx8=OS(Ks}amu=GSfcV3)-qv6lJ3*YZG+ePrpmXA54trV~)lWX{x}wk$0+#wL}q&=}@(zT1Covt0zfXrG%`f%$xA=CClH zISvdMKWx*iJwTl*cz3J2`;)DECuNxL{e_|xjY1!f$inJ5O5z4igP})a|EbZs2E?aB zxxp%jYmdPlH2&f0CrWY=A4lY}`U`FiSMLz8!0bV)JLSo&ujZ54}r2RaZ0(Lmn?tWl`)-J6oemsb45D1!C|re8)a5l_`&+I?Gl%x{hU6_db*7@SqDAi@v5F|EkUv23bbpqR}57*S+86z>L^p=T`j?-u^u z`BF-s+=(yM6C_#f|N6H|2Z#dy5%6PG4-u?HB|~=W%2PE1Q#*t7a53-iGEygqg}7Ta zf!4n;{`!=dQ2Ek#rTe}#HZ~MaS=Ir3v0T|cSG?w*nV|EHKDJFqsoNlx(U5`g)Ie#% z&QZZS&yb`CMgH2*v&DF-EZgJaX-87SzVa-!Bb>L(MejpRX>bwMHzROh5R02lMJPVA zCAFci)Hw5hF?HZBA@FL`{nb2Z;6-;I=7Ez<nEHDU=ask1mDprm*{wb7G4DP znr)CL)k-MKaHfbYzZ58#T$=uKzfmDjBEoL98eMRWI47A`iEi+q2X8l{vsnyb$L5J5 z1K4XeR{~d@Z_9<&2JMT1X~J?PeRB1!Ay>yalW{2yn~4rClGpZQZ29Brnhr?MvPS?$ zBFv?9dC%%=JA`hV>=DquwI#?y>&c4^oQUC(JTUN=zCnR|oS0H#gpiN^9fs#G`ZZHl z@++DLw+@z0@Ia;ZJ|_{4!$K+j$y>H?4@@^ zHQUGp9m7L>?IhiXoWCI5YAs-Y!CzQe-<$jUy$!$tj{NW#;ODE{D7u59n1 za|KduRWUJUOnT-f!`$%V1J^kP#m|nSHVIWBeIh($Y#mK*YR;W7};3(SHI( zZ+w67QR=fys#N2*aIJhd3P~*B(4;&6kGxZ*Vi00N#c$tX-DiuQ;H?Bpkx!enWte9( zvJ7tOlQ`fwh7_OijYmKq3O`{nh%CFjM74O3#z^bD>0p1ES=K>mmyP%JCe=Bz)33>z z+J7TMpi}NpCb#{^Ix~w3bAQf3_Pi>w1L2{CW!T>Yu-1<^^f-Lm&XKtij%8(Ydz1Dl zT;lXy?kReilcbHf7@+&6IejH3i%80DoLJIZZ!;jg%g3GdF#Lm+DU;I*LLkzaWJ_ZF zUd@S0=7LIvGi@VIvdyRae-JW@No$8Ebx+q-N53p%NoI>HLB3KyQElo0XjkA>f)OjMbJl|2IFzIx0C3~bC*>CjX^hzqOsB$L? z`d@WR@soL^f*?14OAq}H&MyU+BYHkI208K+D(&)5tul;P)xkj1a|7=`(Q(#q2GU)G z2}ul@lNnu8O!H(9jW}b0<^4Beq#A`B+D=`cojwJE8VMWGRg<-9m^FJNNoq+Zff6pw zW@hKP;R)}=E34|t4QT-%^e=GLTqv-YtG18OQEYF5?8Zk53<;Kgw$I)8r*SMrUk3`d zswcO~IU$EUu(=V|5@~fIcLRYZ#?S#)_=$@4gmc`Ld$@*!lCP*^C49$jYrry~=uY?c zZ{3y;8F~x~b=8Zg`;Y+1rGP0rGV5=v7hb`&k;N}qKWY1_wac=XWM*RhG^ZiF6#zY_@hJC;fvlh0rP#f zpy+R>X(}rDz#h?-R?I{;gG%G`jX)AI1Zb~VY|kP#r049SFQN2CubkM+5mnTEQ3eQy z47gd>!s#0F`xG0ZJ=#8HFVERXqh?6u5M7>WE zDdNnV|5m7=f2&2AR}~|D5a~ba(fsT3*${{Dtu@ASzWV}`Xmv z3!9j!7TJvQkA#h8xLWNw9L}s4EIfRXW@6`bcB)l#%usWn6EuNr*#+_Ax{t^-+gG(B7;5oS#pj8=>x*X6&@NP~24*)wX z$!z`+&}m@&2zXOpd&5lTu4?P&IZ=q!h=h1gEmpBI9WBtLsZzj2;M4)clgdx&9XcnFd3?)Xsa8*6^;oQMKB z%waWKIwn7%D8F^fE?TAqc=R3V49F3!aO%vJ8f#%vYF|%X?AL3zjbeFzC@9pHCEyGW zuPs**-}W9^3-rXpEvfobWa&(91M?lqi6!!fiU_Xa0 z&kF=GXkFQz@@6!D0+`m%{yNW^dj^N_DxOAJsC92`?;rg6dTj&Js!s`FN`P-f6D8L! z8+(g1!MMj|TnW;-0nW@Ml(+1#Z_*=eCn&;q*S>|28k7qMWX!_DBcS4rHL7@&`)aSK z*yUSkLcI!`^Fva0BfAq7O?lwgT#|0*7O;{ri%Z?)j@OsYZSAUA6ilagR!GM4~uT8hor{$2~siyd|WYFW`+;B7QPw zO0PKETIc&aiLHZ5EI5*UPNzYDZ0h_~b|oQ_$qZ|+xq*I2&|Ea=q6DO5U!klxO|9_>99MR-misN>L7x8`QM77gLuvGU)z%1J> zl_PmlC&0^xTY8R^2+7)m?3r)_hlmi(WwzS?(rD~gyWV~Ewr%& zl$c*&6jUWhe%c~0s6O3GvL#Rt1sRPV^zY{l|MrUf2dEw-gtW9y}dt}5Ks zKg^q#=y~*BRYab8Jl7%v%ElD?m)%c^e-Yj^;Zf(9Lgt5qzuua^=M#X3K}7Cj4oL{B ztUS@ESu?JUNEnjTsV(0=tjih$4|_h-z6{lqoZ&X&lC-_>xExKq7&;$7BZKgNoFx{h5Oi|u)q1!rH)OIE=NS0NII&aFcIO*7;9vc1uE*Yb& zzp{GIbN$-dfXLH)@8PS|rBM?$jmK?4u?oR=^@LK_IT9TW<0eWmKH}8tXEQi|u1y64 z6#@8aF(?d=fOo{*=$rXcj`!1WlwV`~Gx@luR;jWStHBK?isN^rVu{^jF@QUqhW_d{ z4V|@3-%4d<0;Lw^PE|Y42+QwEz1l|rRkvnncxUDRN5#e{b4((`Sms8TVtu7(!%}0V z2YSu06ImI{D8*E0aBq*i;@#&ve4>W-PgvCN9~fr5Cx*xwV>_zTh7u~fs2*CP{zF(jB)xILxRZi+UYyB`TQX67hEK6H~^Y?%3qx?aE5N(q#1<6yuS|Bg;d zU3JuW^Mh7*D7D6}pNxK5@S~Xx1zXpcWRuNe+4Wp^Fn^V#|Ao+5NY{4a1$nSr&p6_=m)=l{X^$R6gaWyR9XFta0+o%U) z#E)mhpI1{YEc{w_{wWtwh0@RUtb??-XImmRhibk4K88x;zx40_UBINCAUZ`EJ8FZ; zC)>#kf)I)HW*lpXGpmwUVjeVS@Vs@a9l;0lRu}K;L{R)$9b}JUl546?qtLK+%V_8p zqk2$zn>NdQvEK~ZrwHo#BucGT819~{=51Uu!j^O{j0_mN6b+LAQ>tMWbVJ#gEt3_3 zI35901n*2_)Y7q~g!fy{=&=I=XkPVfALS}J;>^P9-i@5!p&=TaT;kHwVuwJ)&yOjp zJKstMrM;8=GdA(gL0E1XZ1oM(f#i=T^43zL*6M}dJMRz*f8--z(I0Vy2m#x|ES0BV zqnJDc?4PkFhUigpk`GRu8B+aU0QR46`s%Fft@d*l14*}aYU0NQb(^3kB}roGXFh~f z6;(Q8^22|()M_)9NADy*Ac=g*pz)t5yJyF^jE%Jx3EtiO~k)c z>_2`XZz2- zOpu@wi$%iJc$mw??^5=8gPKEkPjk&0?UYp0rpO2>il+g6Jt@D#J zD{Fi91{QC*be*YwAwFCz)gg>%W}x=(-+F`I>QTKKvk){EoG|X|t#j?Bcs{rantE;D#qR82@ui3A=sk3CY4CDR(v!|8V03np`aE0}{(H z@Pg8n$T7AYuf5ZIgj>*?TeFlYhO!PR1L5dcYS(3 z5H~6IEp=z+m_8>$%nZx*F7ZG&F`|93cm%BRk=Ksjf9PSSNZJ$M6%x(#`f4V!jk)ql$a6DN~T{?kYqE&vv2ti~FqpA@!{ zK-ksuf+EYV&hf`yF1)Jx1K#iehsF=^xKmO^&hWpbCaf=0Ym2kPn~zdVQ5LdAPD7B@ z&&+&FV|3jhKa|HO*eTPNMK(mIx+S75n=pNKGu)%?N3bpX1YdE~d`+BniW2XY%&u&{ zvBLB2$Z4+K`BOZkg>5DUp$tAb9f!_&E&{gzHm@isk zG@?PV!#b?_dWuIh$*~DjaLFKJHj>0G2HzsBos$67OU#L-Y}IG#qKaECxZXQA3 zY1}Fsl?({XZ6asD-;6KTn^K$R9I%<-@+B2w>Pc!v4-U-kUt+p%G({r)JQR($f#kS$Ctde8Ze>m~<#>bu1>lv_mbCDk{~ho=sWw2?>q_nYSrc3jBEc52B1 zFL4!g&TE>ek1az}th!@vrySIyc*(P;?0G&c{Zc$ID-!XY9w1o^_87d=n<$=~cK2fC z?*d}I-_SW;tgI4Ibo=1xBnxCrww55kD6@fQ0PiWL!6V?JXPF^WwQE6H3AS)S z>sxyk=}==HuQgdiQoPGw)I;v&6MvxNo}}M0N;N>B1^v0>9Vd0y<{MN7;7a8+YOxnp zpBJZoL2*F;jJwO+ls&Cb8K>2Gpc{p3n zIdr6EXYeV2V+blFe*!|5nJbRO+T1awb52<%)|}XRZltI!j(@myX$0M-RBjQ+H$=I< zL+fY&JO>g0el_%n4SOQH&5@yHv|HV9Z;I-MHoKF%`d^on#8U|Ct*%_4Zv9vE11^MD4gM zDF%hfdd%E;8PC*a;;W4*fmh5qCVLa23*GvdrC3QnPF#kNHsH#w7ufH=l-f;~^;FisaAF z4mr(RIRVdK-S;G2zK%wpX45VP3jE3{%3GOenusgMnY05sMJnbL8Fvpq0+Lk|DK06) zjwwh)nA!Hjc2^4LxOuLZda#lXRs!@f2vg4S-E-)>uoL$c!9= z70`fAI;>*Gvj(1*BI%ivd)-ah?_UFXMwk|BR!I|*!x!V{DL>!gBvd{n>2qN2`UQK0 zIdDSVmn-SSHNcsa*;vIs?pYLhGRk@i0JiTGUsoeumlf$#&el#S8L*F$?fTANib0I} z5ul@@EfLUB56nal>go^;Z`_~Q6et?|JJY;#uc?_$Ax9m;JAY{k`^Q<~U1%tVpORf8 zCt;MryDhzjkA{((L6tI0rvnU()-@co#%RL zV9xz$RCkL;+ZTzdFn{(`xnLOb{P{4RmhR42LCF@EUNb)DvV8DP=nLf#$$qovTsNw%J`LAaE&&p z_I#t6r4l*&%)BYoWCbNn%kwU^M(B52!|RrCc4j4Q*6T2bTgm?EDuks2|MEL)l-N%WIzLo^sr)xCYB+ovYRR=9_r zZIyba^V`oWr%|dF1kANBngGm~sW<8i(B&q}m zB^j$R>%^MX&fRuyBNb-A=bK3kc@Zc6{n;?-BcR|xlYjq!;&5hSwb*1CXJ;&|QLbT6 zy14SNp;RG%Hs{)1OtY)5I5#{cQ6vs)&`E^qef}SOEI^rtg?+ zR!+(Jhv0Z!%N9-^$k}^m}-!|Gs_u zvbds|9wWGLODi&Cs>zS5GG8WtG@Jb>G6Q+GLPu96qy!Vp}!N5|)0!NjMcJWC{s zIzSihIWuHX014d0cO-qs9DWD!SVxjRcv06)J)w3OWI9l?$v7a{mt zO>_0W>XeFefEg!Q8&x=LP+ZsIlPHE!?tu`H+VYQL*P&7M$Wfj$28ATN#7*SFE_Kv) ztK$K&fudmtVh}3pL*T?YxtMs#M+hL>d&%Mm*oi zgS@gGMpOSeKQW zhkl-`mAQpE#s|yagTfZ*ggS`deAE2*nt8E4O?I=Bn^CM)eKhV$4RO4Z=JpEpBy-zv zPlure-WT$gI$y_lc~ziqCXI(BR-t5^nUX0E=Nsw2LVItsD`>x#R89VvI1ZE-en=0VtY4;8tcs9c(8&Oz}fKj#v6d9CE}&2c4)4^cAo z`lPhJk<`xHi+c6h?`!jnD)X1ZV zwYLi`JCw>KqT@OQb~#4m(Zl5q<_FGC+Xo}AX=6Y;IZT+dFs6oErI1Fp+4<(M@E6-rq) zJOx{iGSs5T*kJhyzgAOHibG&q;sMug#wFGZybs{U1ua|?D*_wKju0y8DbCD}45#e1v;`31Js$OxcS26?{tY79o za)crF$2K8m;llE7_X(@oKX(`ugn3oRXr`MTDBA&k z0>Aw50)2<28ta`G-!F1?M2Z=JEvKl9Z6jeAVwOMt^hS6j3;TOVQp}b3yI@qNmM}k+ zrG>qnESE3Kqb*f_`S(v7FniEhcC>fCMV?qV_{&0^j>#qIUY!7mJD51HvOp(}#jH|t z7Sl24b`A4;$B*8QrhP1|1E}ZQ0yXQoM}V8)Gw#RxCha-0@EA>)a^#p9_DZR z%B`PIO7;5*X|b%}D+UjWrCITY%0TGkoh5>1?8-YvO-mu;`#H(}WOae&7^O*xTMoe? zo*En7^AVP@8hcVy0ys*uWBVa_if(tUqdxI+p);zJth*n-E&;;93l;Z^yhAOwxqQAU*ju1z%&W_G5Jvhq?S1#W?`7KWzLJY0U-^GdS_Y}*v zo}Th@U7q*a+WE%VRdTIcI_JvF?rtNPym)Lw?E%QGzs`;y&f{`{teYTtE)$2cc&(Fx zk2!Z3>M$0ZkTV;tkgB}ZkI?-~8?T%#wp=t54c)I}Zb%^^UB)uIQ3>t1itjYGRCt}8B17qOESRiB6n*ErgkaTb#00fK|_0F z-5(h29k7zi!DJXFFYgnbGa0RyhWwd0i#$zsGk$r6rN3aTF4st*4@A z$t#25hIKvs#i)Hj0m@Ok+95;r*R{z6nXVS#4zlS-0IR|))1;aZ>ipL61=oGA>@uZ1 zy>W)7!EAZuD!s^~_q+7`xfW9(CXS^op5tmj{Om7^sD88e&bCKSC||qIr-PPDc9T~} z2GL<|b7T+E&d0-jmi*f#$FT!3a#mhIj6Fg5w9boRzL=L{rj$ncncCB(dvDytJZP#} zR)6m8;5`4y;pP;6(kR$H+Czk|a=Y(=z~8Dd|Bb$`J$8&rc8IGWSjcGSn2+(-rD(vo z%-jE>3x|^plQcqT#5W^ z4cr#hFXU%?39GWw{NbUC+1r9*m|SeloOu;ShhwnfsQ zzvub<&NRadrK^l~wCK#oBWvd`W?~0B_lyP5nepHokmA$8cW1y#9FSMZh}5fG!#`)y z?2<8F%i?&JX!+@=oi#@Hx<&q9Ol27bb95{InKqvxx?R| zrN!QgNv7&%8=vmoXka?A;h2eGuS5p(_IKgBIl6U#5L+3{BnF(A2ckgE1zu$BCR9BtI^_I3a5Zl53?R`es{TH1787>x2 zzjWr^)OQn~7e7%wXFsX_XN~@>*9I4+Xu27fXR6%SyEXkwvc@69$-6z{fvv4-xkf<& z`KXD-Dt$I@pY83r`{T}oJO3GS)`oX~UH{-iSl1e!8-L%j{(QQ@ef!4SO)q8l%$fYn zE?YJHt@;tMPqRgDJxe;kZa7hohtGkf~n($BD;xN+yq&uJDiJ-{p!7Prdj4qTFn@{3oLUtTHO>^|?}Z>>$Ak6&%|n%=id<-Y#pOWUtvtPdarVVce3S0jy4FlL zW)}j^QoQ_h;-pGBOUk<9)d6!OoGzZ1IBDtrYwCO}Yiny;*}nS=lU81s>#F&)Xo^gt z{fnvBcEzq?d{IDdnR22 z2E}gs)TL4VZL1>k=BifsEZNvs{HSEMyaH=eH2bUUj$;4h+Xd&u@({;2jq>SANh zTS?X$;2grIH5reg9FzG+T+5AiY8ScEZv0AZ5`O}~6;r2&?`_&$A|8)O; z{q>C=AMIObE{o_n6npu0_Fd_iax3#=k!Sh~-$nm9Ho?E{N$sXpT8|&i7ja)1(YYbz z`Z5)sO4eoJry}=0T)rbsIYILMul~EhvA7Fznh!Lq_Wz!C?e{yN!Mf}3{eD$kn}50L z*1YLY_D#E;T3wyCcXxCyFqoUx0E2l8pUA^k0YOrI3z!ezlDoD;+^|PIr``cLsq^*EPu{!lKZExS_IUfX`a9lFdHwwB((kgL7Armee0uVhQ#(|? ze*Sgoci&IHef3fCh4;0L)GCXN)^Xa_{M)kc@xI{o^RG?6Q+}$ab6!l(>L!15L(-=! yYdx5J{rqe1ch*m>e*Vp@Jzlfo#LTBBMhzZDL2-)4iGoQ<$CF@pz4yECS?AuhzW=_vla3`biN+_!Cno$S?}`4$6+YqP z9{}FVXEx7PP@d5Np5r}3!F%@D37~kIAj&`AfdAG|U!bEsdyew*saF;k@C^0Yb5t~x z=cuS?&rx1INk2zH#Y4k?LGXqaokuHvj80mE*Nl+f`O8a&_nJg}pJFpBk7e497zJhJ zTwL7)Yo10Sf6~Nrlz*t>KiV_2=cq4G(4RU*@c_@CJ%74(k>L0P|_)&+$<308)TEi_p;LbTltRKhx0x z{{KWWoDtmc-a@W`fdTTS4$H5v!X`!);#H<3UsFp^%JEiSDE*a|*@m zNonmyW{+1G2`Jq}LBxAqqc8tKmlJuyJ;tcLE+6iyf@`$18 zp>7cpYF%y9vHZCW|5#J$MY5W1(5xa(B=Kpt=tph1Uh8rLBOc-R6+GgckvW9e2w17- zjPxBeYpgaJQyw*G;Wg@_j$ve|FuM#MPM8$z$tF5-xE-kgq`CbhxP=%)zK`5Wdc{3llni`?v1< zN4La0e7-mY`i4co(ejmoCX30cbaECOgE)F|<8Puyz6ql@-bAQJF3kSfVntKIq@JIY z1_xuyBK(~9oxMID858WV<&P94o3>Y)n%bQQ?YjBhJh1CbF~Co{q3>uOl9GH|D8by@5{0cW+J4DSuO)B0^bXcs-HOYLhSh~Be7PinB9!}$t;d~;>Ms6fo*JL%S zG-9d#wS&_6M2Wzbd+6ERj_TYeYo!TyNFYf>%67$!BwT^SH6`#Rs+l=ih215uQ{2AR zn30t86 zLsTLq=2lju(R%}{G}WwRRH;Hkb3Xqk0Z!8mqcDBRZJoiOjYn_Rt;lS*+IEZY-B&f( zbk|yTNU&Aeyb@!RqeV2?`PAFRzn&I}$mZBTa<-X}-0iay9SiIjDx=tsxGS&P{!kv_ zq)WGN?KIMtm^jcO>!F>|)K>Bo+rlW9wDr_Yfj#J9?t7xVU%ySIrKL@b@lU7h47o=| zX#bvyZL{)30CieIXo>Rujj_K)<}-Q?R4g94(HW;SePxfjsgg#A$FSC}NntA}9S@+} z*c0{HhyPs!hL@@itbBn4UbpqL*IWMo8OpM*n(n^VE=-+i$QTnvlL5Ea`N;) z+(rmL2Pwq?sP*f}HW;;`V=OI)h4e^@<6g&0TXVIUBwW6${@+THA(UV8VPlYmneYbM zA$&0s^E@e&{TROM+p@!Fo+@i~hP(cL(edts#e{e44_2np%x9*}w+T{swO5B~Bq2;> zrBKib&!BHm?g8L({)`{<;dR~s9y;8qw1vh7Gt(@K&RdYol!TcvCB>s;7ds$D)kPO>+R>U+GRphJMvCj zciPF?{#q70Sc-MUDWsXlII}e8w6AQJT$iYM@IVI04OGw#pg^Vw>V5~+iQ!h&@kWnxoLW_<{=#UW7?A9T-$i{pho{l*AGn?>(I!0h)$#Zati~E z>qa$2T;*sJrj5N>ipR#qq1X7{<#v+t#A-RPyS!*mSATbVYmal%%umvM3Al%|+v_o- zG|%k6;vn++ty|VD!Inzgan}R=NTKfJUQ0`Ftyhhgblhfmyk4|I;>H-ZL)`XA%%Sf!`B$`4}3_6SS<Akayj}u_q5Z?q9Q@f^FO;St?IJTp;rvVvr z0tRT=C%|k=C0;szt+XCALFpwsc62X+7EjzTjFszJ8ntUn;+6;OmYTRNB=ptYJ!cVM zg~@^9_E0n*-qOJ>`rPO8Ii@jnUoF2ARP2nv+Xkl|9E{k{67+|lh&OOfc*VM2A^m*b z&dnAI#LA$aj<^Rmfm@1K(haeB`x(LvzKGboP|Fc|rjorTOK6Jn)<&CE!_wh>X_4>s zzN$YZkcTi>tzhWEED}t%q;K279iR)f?#&;FMzywz6$;l%*P_ofVLdBx+W7Ie&X$4= zv6|nocm1u(}u4Wd9=VIKyfYk7tG~_*iTG=kW{hr zFn9H&8Y{(EH#5``4AF7!(UQdFq~G=o}}crzYpViosYyp~(hu9pEsBS9JN+X{IU! zg8Jv=PRp_F3PV<}wn9Fddpuv-5JKmcJuz#evIs{2ykeQ+O-Qg_BYP86)Zk`URgQ%8=Zs#zJTB}#uLK~CU( znTKCcXd75W9y%xvBF*1T`RY!x|2+m*lbX!I*IHjBGxlxdVyu}PR1vk((RjoeO{1JA zFn2rxh%Couwz~2=*h4g`3tZ)ri-}Xze^R66b+ zz>+ksFEaRQ`a`tFyJJSyAc>!Lv&Kw%w5?TQ-*9<_F)3bbJ4IJO^mK8EHo^>XzN(f} z2-Ozf426wU^OyeEgPGUNpNsqi&l6n7e?Ua-yUqbgpA?lA=zga1+J+EJS6sl0O|&g(be&&xsn!lKBcav&7_qWasHj((lAASZ4^QNSrq% z+wJcp>cZ`&?^1DU?v!r|7!E>R9GybL>2d$H(`;&_%0&6)Cnj4b)a2_T)Y9X9dFOd} zKdkqPsD%xKLYB9$)(Qr8n;xPP*pV-BX%@?atJ;s*l;-6AnuWfQ`-=^z+|K>r&YnJM-K z%7AV0$3F`Zv$pjJn52022xx5Tll;Q?#e1S_7*!EuvYJ$bRpv%zxsHO|BIf&3h7oQ! zB_ilLuJvuUqPxC!JaWjwDFhn{PTh|aTm9xStgx4N6dXsp8=RsL8~M8>k)!?*Q0IDk zT?A}>1ZW;DKCf!)Pf9(D2QgwGix=k&{qrRr)csU{f3Oo(Eh)`E<=lM)1dQG}_xM~* zvI~p_(tgQ}J=oudh(LR9tpVmoqd6TOX?vq>5G{~T628AanM(z3` zs!Wz0yMs{}>>DthWI-i@)4Wa<*ZDyIm3c7q^POMPyz+d_FWg(>NRxxpjK7D zx(KY}*F;)G$Fa`+uMPEon@jt)76;P}$s3(EY{P_iXZ#_)M35=EHnq zlG@+BrsCIUi=<-)xkQIYbC;?R$4@tyg^j>(Q~J~1<_x9BCeyaa!fpmG*5!cj2D*BP zV$Elm*gR=Su^bLzPv^}As%_?j%wx;99|X$vtXUFIsBurgM?esI(yo&*a)uDDPzclt zELLsPzBZmfy1@(ulNv~(B7yvS%8{0u+AZ!0#cZ?n@Kc7x^o5x+!WF_?r@9QyV3+_K z-ggTq=q@oNvGx%2du)gYILa`|fBPt3=S}V0_!{mZ+<$t;H*4! zx#R5)v7+1_X4m>hxegC_(wfGT0-FR2tE~;K@FUPzS zA#wtM)^i6VM`noe?yDMkouQz$-a^DK$ce--MB-~*z}zd!BWcsO$7jLk`MR+%+< z3{ow!Qr-L0E!mnWOC5xu)T+C@Zcas|prTZ!xuCU;c_k|kRS@gm?cXX!ubv)slS$Fw z?oXv4Njd%H$h+pQ!?+I~IMC>rVHA+qI$L(mF;Rv`JgXfLuaTzvz?%bnZ4PFzh`h(? z`6(5@ouI#NEJ~Y}Bo{Obw7exW+L&hY;^$ zQ|YwlLQ*)`Nc5yHH?U>4pZ}JUYg5nvma~J^ zFTApCXapJaM)_itY#Y~U1k34mZ**#Hl508rn|0*(h7W|>ai6;1xreeh!Mfw;cc(%)9Z|}w` zGrtEdY_!8iOcz!6Z40w_eG8Y+YBW7MMu^m>~H2#Zm3%rtM58%4XbO^MMLJR-#~Pykd5M*7?_kbjp5A6yn_XPtZyU z5+G8QZz>i`D^Yk;1448kTZy!8Hbk3o0G@n|Ji2R8@sT@9{vL%HWilK8!noti=c-N@ zf&EH}d|4Ej^ALT5_0QhBa>v(KQK4hBlbj;Kj{p?GQ=7^|8@I7NJcpt`6M;umA7n-x z**T(*?;Hp=gP6C3*pfp)22V-4rSIceXz9oKHjL%T(Sg282~}49%KfCRwwUNC$%~? zvMp9$*V%FLTdFZGR!e2@r*aWifq9!xv%h2?DH|_94{`%6YZK0WZOj|3(fiQ+{3TRW z>;5*%DOXjF&U}-Rp6K}mw5*^KIc_cu{X!BG8Qn{Ic$~TF-zr8QN6BkIpZ-EWa!nt_ z_{~>W>}_GdHukMrz^p+%`3L{xJm*q!7d?mIU6>bEl-H(3(AXZ%bLN^gJqIW+x^v9y z%44Dua_DDSkIzx8=OS(Ks}amu=GSfcV3)-qv6lJ3*YZG+ePrpmXA54trV~)lWX{x}wk$0+#wL}q&=}@(zT1Covt0zfXrG%`f%$xA=CClH zISvdMKWx*iJwTl*cz3J2`;)DECuNxL{e_|xjY1!f$inJ5O5z4igP})a|EbZs2E?aB zxxp%jYmdPlH2&f0CrWY=A4lY}`U`FiSMLz8!0bV)JLSo&ujZ54}r2RaZ0(Lmn?tWl`)-J6oemsb45D1!C|re8)a5l_`&+I?Gl%x{hU6_db*7@SqDAi@v5F|EkUv23bbpqR}57*S+86z>L^p=T`j?-u^u z`BF-s+=(yM6C_#f|N6H|2Z#dy5%6PG4-u?HB|~=W%2PE1Q#*t7a53-iGEygqg}7Ta zf!4n;{`!=dQ2Ek#rTe}#HZ~MaS=Ir3v0T|cSG?w*nV|EHKDJFqsoNlx(U5`g)Ie#% z&QZZS&yb`CMgH2*v&DF-EZgJaX-87SzVa-!Bb>L(MejpRX>bwMHzROh5R02lMJPVA zCAFci)Hw5hF?HZBA@FL`{nb2Z;6-;I=7Ez<nEHDU=ask1mDprm*{wb7G4DP znr)CL)k-MKaHfbYzZ58#T$=uKzfmDjBEoL98eMRWI47A`iEi+q2X8l{vsnyb$L5J5 z1K4XeR{~d@Z_9<&2JMT1X~J?PeRB1!Ay>yalW{2yn~4rClGpZQZ29Brnhr?MvPS?$ zBFv?9dC%%=JA`hV>=DquwI#?y>&c4^oQUC(JTUN=zCnR|oS0H#gpiN^9fs#G`ZZHl z@++DLw+@z0@Ia;ZJ|_{4!$K+j$y>H?4@@^ zHQUGp9m7L>?IhiXoWCI5YAs-Y!CzQe-<$jUy$!$tj{NW#;ODE{D7u59n1 za|KduRWUJUOnT-f!`$%V1J^kP#m|nSHVIWBeIh($Y#mK*YR;W7};3(SHI( zZ+w67QR=fys#N2*aIJhd3P~*B(4;&6kGxZ*Vi00N#c$tX-DiuQ;H?Bpkx!enWte9( zvJ7tOlQ`fwh7_OijYmKq3O`{nh%CFjM74O3#z^bD>0p1ES=K>mmyP%JCe=Bz)33>z z+J7TMpi}NpCb#{^Ix~w3bAQf3_Pi>w1L2{CW!T>Yu-1<^^f-Lm&XKtij%8(Ydz1Dl zT;lXy?kReilcbHf7@+&6IejH3i%80DoLJIZZ!;jg%g3GdF#Lm+DU;I*LLkzaWJ_ZF zUd@S0=7LIvGi@VIvdyRae-JW@No$8Ebx+q-N53p%NoI>HLB3KyQElo0XjkA>f)OjMbJl|2IFzIx0C3~bC*>CjX^hzqOsB$L? z`d@WR@soL^f*?14OAq}H&MyU+BYHkI208K+D(&)5tul;P)xkj1a|7=`(Q(#q2GU)G z2}ul@lNnu8O!H(9jW}b0<^4Beq#A`B+D=`cojwJE8VMWGRg<-9m^FJNNoq+Zff6pw zW@hKP;R)}=E34|t4QT-%^e=GLTqv-YtG18OQEYF5?8Zk53<;Kgw$I)8r*SMrUk3`d zswcO~IU$EUu(=V|5@~fIcLRYZ#?S#)_=$@4gmc`Ld$@*!lCP*^C49$jYrry~=uY?c zZ{3y;8F~x~b=8Zg`;Y+1rGP0rGV5=v7hb`&k;N}qKWY1_wac=XWM*RhG^ZiF6#zY_@hJC;fvlh0rP#f zpy+R>X(}rDz#h?-R?I{;gG%G`jX)AI1Zb~VY|kP#r049SFQN2CubkM+5mnTEQ3eQy z47gd>!s#0F`xG0ZJ=#8HFVERXqh?6u5M7>WE zDdNnV|5m7=f2&2AR}~|D5a~ba(fsT3*${{Dtu@ASzWV}`Xmv z3!9j!7TJvQkA#h8xLWNw9L}s4EIfRXW@6`bcB)l#%usWn6EuNr*#+_Ax{t^-+gG(B7;5oS#pj8=>x*X6&@NP~24*)wX z$!z`+&}m@&2zXOpd&5lTu4?P&IZ=q!h=h1gEmpBI9WBtLsZzj2;M4)clgdx&9XcnFd3?)Xsa8*6^;oQMKB z%waWKIwn7%D8F^fE?TAqc=R3V49F3!aO%vJ8f#%vYF|%X?AL3zjbeFzC@9pHCEyGW zuPs**-}W9^3-rXpEvfobWa&(91M?lqi6!!fiU_Xa0 z&kF=GXkFQz@@6!D0+`m%{yNW^dj^N_DxOAJsC92`?;rg6dTj&Js!s`FN`P-f6D8L! z8+(g1!MMj|TnW;-0nW@Ml(+1#Z_*=eCn&;q*S>|28k7qMWX!_DBcS4rHL7@&`)aSK z*yUSkLcI!`^Fva0BfAq7O?lwgT#|0*7O;{ri%Z?)j@OsYZSAUA6ilagR!GM4~uT8hor{$2~siyd|WYFW`+;B7QPw zO0PKETIc&aiLHZ5EI5*UPNzYDZ0h_~b|oQ_$qZ|+xq*I2&|Ea=q6DO5U!klxO|9_>99MR-misN>L7x8`QM77gLuvGU)z%1J> zl_PmlC&0^xTY8R^2+7)m?3r)_hlmi(WwzS?(rD~gyWV~Ewr%& zl$c*&6jUWhe%c~0s6O3GvL#Rt1sRPV^zY{l|MrUf2dEw-gtW9y}dt}5Ks zKg^q#=y~*BRYab8Jl7%v%ElD?m)%c^e-Yj^;Zf(9Lgt5qzuua^=M#X3K}7Cj4oL{B ztUS@ESu?JUNEnjTsV(0=tjih$4|_h-z6{lqoZ&X&lC-_>xExKq7&;$7BZKgNoFx{h5Oi|u)q1!rH)OIE=NS0NII&aFcIO*7;9vc1uE*Yb& zzp{GIbN$-dfXLH)@8PS|rBM?$jmK?4u?oR=^@LK_IT9TW<0eWmKH}8tXEQi|u1y64 z6#@8aF(?d=fOo{*=$rXcj`!1WlwV`~Gx@luR;jWStHBK?isN^rVu{^jF@QUqhW_d{ z4V|@3-%4d<0;Lw^PE|Y42+QwEz1l|rRkvnncxUDRN5#e{b4((`Sms8TVtu7(!%}0V z2YSu06ImI{D8*E0aBq*i;@#&ve4>W-PgvCN9~fr5Cx*xwV>_zTh7u~fs2*CP{zF(jB)xILxRZi+UYyB`TQX67hEK6H~^Y?%3qx?aE5N(q#1<6yuS|Bg;d zU3JuW^Mh7*D7D6}pNxK5@S~Xx1zXpcWRuNe+4Wp^Fn^V#|Ao+5NY{4a1$nSr&p6_=m)=l{X^$R6gaWyR9XFta0+o%U) z#E)mhpI1{YEc{w_{wWtwh0@RUtb??-XImmRhibk4K88x;zx40_UBINCAUZ`EJ8FZ; zC)>#kf)I)HW*lpXGpmwUVjeVS@Vs@a9l;0lRu}K;L{R)$9b}JUl546?qtLK+%V_8p zqk2$zn>NdQvEK~ZrwHo#BucGT819~{=51Uu!j^O{j0_mN6b+LAQ>tMWbVJ#gEt3_3 zI35901n*2_)Y7q~g!fy{=&=I=XkPVfALS}J;>^P9-i@5!p&=TaT;kHwVuwJ)&yOjp zJKstMrM;8=GdA(gL0E1XZ1oM(f#i=T^43zL*6M}dJMRz*f8--z(I0Vy2m#x|ES0BV zqnJDc?4PkFhUigpk`GRu8B+aU0QR46`s%Fft@d*l14*}aYU0NQb(^3kB}roGXFh~f z6;(Q8^22|()M_)9NADy*Ac=g*pz)t5yJyF^jE%Jx3EtiO~k)c z>_2`XZz2- zOpu@wi$%iJc$mw??^5=8gPKEkPjk&0?UYp0rpO2>il+g6Jt@D#J zD{Fi91{QC*be*YwAwFCz)gg>%W}x=(-+F`I>QTKKvk){EoG|X|t#j?Bcs{rantE;D#qR82@ui3A=sk3CY4CDR(v!|8V03np`aE0}{(H z@Pg8n$T7AYuf5ZIgj>*?TeFlYhO!PR1L5dcYS(3 z5H~6IEp=z+m_8>$%nZx*F7ZG&F`|93cm%BRk=Ksjf9PSSNZJ$M6%x(#`f4V!jk)ql$a6DN~T{?kYqE&vv2ti~FqpA@!{ zK-ksuf+EYV&hf`yF1)Jx1K#iehsF=^xKmO^&hWpbCaf=0Ym2kPn~zdVQ5LdAPD7B@ z&&+&FV|3jhKa|HO*eTPNMK(mIx+S75n=pNKGu)%?N3bpX1YdE~d`+BniW2XY%&u&{ zvBLB2$Z4+K`BOZkg>5DUp$tAb9f!_&E&{gzHm@isk zG@?PV!#b?_dWuIh$*~DjaLFKJHj>0G2HzsBos$67OU#L-Y}IG#qKaECxZXQA3 zY1}Fsl?({XZ6asD-;6KTn^K$R9I%<-@+B2w>Pc!v4-U-kUt+p%G({r)JQR($f#kS$Ctde8Ze>m~<#>bu1>lv_mbCDk{~ho=sWw2?>q_nYSrc3jBEc52B1 zFL4!g&TE>ek1az}th!@vrySIyc*(P;?0G&c{Zc$ID-!XY9w1o^_87d=n<$=~cK2fC z?*d}I-_SW;tgI4Ibo=1xBnxCrww55kD6@fQ0PiWL!6V?JXPF^WwQE6H3AS)S z>sxyk=}==HuQgdiQoPGw)I;v&6MvxNo}}M0N;N>B1^v0>9Vd0y<{MN7;7a8+YOxnp zpBJZoL2*F;jJwO+ls&Cb8K>2Gpc{p3n zIdr6EXYeV2V+blFe*!|5nJbRO+T1awb52<%)|}XRZltI!j(@myX$0M-RBjQ+H$=I< zL+fY&JO>g0el_%n4SOQH&5@yHv|HV9Z;I-MHoKF%`d^on#8U|Ct*%_4Zv9vE11^MD4gM zDF%hfdd%E;8PC*a;;W4*fmh5qCVLa23*GvdrC3QnPF#kNHsH#w7ufH=l-f;~^;FisaAF z4mr(RIRVdK-S;G2zK%wpX45VP3jE3{%3GOenusgMnY05sMJnbL8Fvpq0+Lk|DK06) zjwwh)nA!Hjc2^4LxOuLZda#lXRs!@f2vg4S-E-)>uoL$c!9= z70`fAI;>*Gvj(1*BI%ivd)-ah?_UFXMwk|BR!I|*!x!V{DL>!gBvd{n>2qN2`UQK0 zIdDSVmn-SSHNcsa*;vIs?pYLhGRk@i0JiTGUsoeumlf$#&el#S8L*F$?fTANib0I} z5ul@@EfLUB56nal>go^;Z`_~Q6et?|JJY;#uc?_$Ax9m;JAY{k`^Q<~U1%tVpORf8 zCt;MryDhzjkA{((L6tI0rvnU()-@co#%RL zV9xz$RCkL;+ZTzdFn{(`xnLOb{P{4RmhR42LCF@EUNb)DvV8DP=nLf#$$qovTsNw%J`LAaE&&p z_I#t6r4l*&%)BYoWCbNn%kwU^M(B52!|RrCc4j4Q*6T2bTgm?EDuks2|MEL)l-N%WIzLo^sr)xCYB+ovYRR=9_r zZIyba^V`oWr%|dF1kANBngGm~sW<8i(B&q}m zB^j$R>%^MX&fRuyBNb-A=bK3kc@Zc6{n;?-BcR|xlYjq!;&5hSwb*1CXJ;&|QLbT6 zy14SNp;RG%Hs{)1OtY)5I5#{cQ6vs)&`E^qef}SOEI^rtg?+ zR!+(Jhv0Z!%N9-^$k}^m}-!|Gs_u zvbds|9wWGLODi&Cs>zS5GG8WtG@Jb>G6Q+GLPu96qy!Vp}!N5|)0!NjMcJWC{s zIzSihIWuHX014d0cO-qs9DWD!SVxjRcv06)J)w3OWI9l?$v7a{mt zO>_0W>XeFefEg!Q8&x=LP+ZsIlPHE!?tu`H+VYQL*P&7M$Wfj$28ATN#7*SFE_Kv) ztK$K&fudmtVh}3pL*T?YxtMs#M+hL>d&%Mm*oi zgS@gGMpOSeKQW zhkl-`mAQpE#s|yagTfZ*ggS`deAE2*nt8E4O?I=Bn^CM)eKhV$4RO4Z=JpEpBy-zv zPlure-WT$gI$y_lc~ziqCXI(BR-t5^nUX0E=Nsw2LVItsD`>x#R89VvI1ZE-en=0VtY4;8tcs9c(8&Oz}fKj#v6d9CE}&2c4)4^cAo z`lPhJk<`xHi+c6h?`!jnD)X1ZV zwYLi`JCw>KqT@OQb~#4m(Zl5q<_FGC+Xo}AX=6Y;IZT+dFs6oErI1Fp+4<(M@E6-rq) zJOx{iGSs5T*kJhyzgAOHibG&q;sMug#wFGZybs{U1ua|?D*_wKju0y8DbCD}45#e1v;`31Js$OxcS26?{tY79o za)crF$2K8m;llE7_X(@oKX(`ugn3oRXr`MTDBA&k z0>Aw50)2<28ta`G-!F1?M2Z=JEvKl9Z6jeAVwOMt^hS6j3;TOVQp}b3yI@qNmM}k+ zrG>qnESE3Kqb*f_`S(v7FniEhcC>fCMV?qV_{&0^j>#qIUY!7mJD51HvOp(}#jH|t z7Sl24b`A4;$B*8QrhP1|1E}ZQ0yXQoM}V8)Gw#RxCha-0@EA>)a^#p9_DZR z%B`PIO7;5*X|b%}D+UjWrCITY%0TGkoh5>1?8-YvO-mu;`#H(}WOae&7^O*xTMoe? zo*En7^AVP@8hcVy0ys*uWBVa_if(tUqdxI+p);zJth*n-E&;;93l;Z^yhAOwxqQAU*ju1z%&W_G5Jvhq?S1#W?`7KWzLJY0U-^GdS_Y}*v zo}Th@U7q*a+WE%VRdTIcI_JvF?rtNPym)Lw?E%QGzs`;y&f{`{teYTtE)$2cc&(Fx zk2!Z3>M$0ZkTV;tkgB}ZkI?-~8?T%#wp=t54c)I}Zb%^^UB)uIQ3>t1itjYGRCt}8B17qOESRiB6n*ErgkaTb#00fK|_0F z-5(h29k7zi!DJXFFYgnbGa0RyhWwd0i#$zsGk$r6rN3aTF4st*4@A z$t#25hIKvs#i)Hj0m@Ok+95;r*R{z6nXVS#4zlS-0IR|))1;aZ>ipL61=oGA>@uZ1 zy>W)7!EAZuD!s^~_q+7`xfW9(CXS^op5tmj{Om7^sD88e&bCKSC||qIr-PPDc9T~} z2GL<|b7T+E&d0-jmi*f#$FT!3a#mhIj6Fg5w9boRzL=L{rj$ncncCB(dvDytJZP#} zR)6m8;5`4y;pP;6(kR$H+Czk|a=Y(=z~8Dd|Bb$`J$8&rc8IGWSjcGSn2+(-rD(vo z%-jE>3x|^plQcqT#5W^ z4cr#hFXU%?39GWw{NbUC+1r9*m|SeloOu;ShhwnfsQ zzvub<&NRadrK^l~wCK#oBWvd`W?~0B_lyP5nepHokmA$8cW1y#9FSMZh}5fG!#`)y z?2<8F%i?&JX!+@=oi#@Hx<&q9Ol27bb95{InKqvxx?R| zrN!QgNv7&%8=vmoXka?A;h2eGuS5p(_IKgBIl6U#5L+3{BnF(A2ckgE1zu$BCR9BtI^_I3a5Zl53?R`es{TH1787>x2 zzjWr^)OQn~7e7%wXFsX_XN~@>*9I4+Xu27fXR6%SyEXkwvc@69$-6z{fvv4-xkf<& z`KXD-Dt$I@pY83r`{T}oJO3GS)`oX~UH{-iSl1e!8-L%j{(QQ@ef!4SO)q8l%$fYn zE?YJHt@;tMPqRgDJxe;kZa7hohtGkf~n($BD;xN+yq&uJDiJ-{p!7Prdj4qTFn@{3oLUtTHO>^|?}Z>>$Ak6&%|n%=id<-Y#pOWUtvtPdarVVce3S0jy4FlL zW)}j^QoQ_h;-pGBOUk<9)d6!OoGzZ1IBDtrYwCO}Yiny;*}nS=lU81s>#F&)Xo^gt z{fnvBcEzq?d{IDdnR22 z2E}gs)TL4VZL1>k=BifsEZNvs{HSEMyaH=eH2bUUj$;4h+Xd&u@({;2jq>SANh zTS?X$;2grIH5reg9FzG+T+5AiY8ScEZv0AZ5`O}~6;r2&?`_&$A|8)O; z{q>C=AMIObE{o_n6npu0_Fd_iax3#=k!Sh~-$nm9Ho?E{N$sXpT8|&i7ja)1(YYbz z`Z5)sO4eoJry}=0T)rbsIYILMul~EhvA7Fznh!Lq_Wz!C?e{yN!Mf}3{eD$kn}50L z*1YLY_D#E;T3wyCcXxCyFqoUx0E2l8pUA^k0YOrI3z!ezlDoD;+^|PIr``cLsq^*EPu{!lKZExS_IUfX`a9lFdHwwB((kgL7Armee0uVhQ#(|? ze*Sgoci&IHef3fCh4;0L)GCXN)^Xa_{M)kc@xI{o^RG?6Q+}$ab6!l(>L!15L(-=! yYdx5J{rqe1ch*m>e*Vp@Jzlfo#LTBBMhzZDL2-)4iGoQ<$CF@ Date: Mon, 30 Dec 2024 14:19:31 -0500 Subject: [PATCH 08/16] DIGITAL-47: Put back analytics topic page now that circular references work. --- .../80caaa35-a22b-43ae-a72c-9a714c333a06.yml | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/web/modules/custom/default_content_config/content/node/80caaa35-a22b-43ae-a72c-9a714c333a06.yml b/web/modules/custom/default_content_config/content/node/80caaa35-a22b-43ae-a72c-9a714c333a06.yml index dab5f75f..8aeb8458 100644 --- a/web/modules/custom/default_content_config/content/node/80caaa35-a22b-43ae-a72c-9a714c333a06.yml +++ b/web/modules/custom/default_content_config/content/node/80caaa35-a22b-43ae-a72c-9a714c333a06.yml @@ -6,6 +6,7 @@ _meta: default_langcode: en depends: bd7fedff-9767-49b3-8a71-8bab51265a86: node + c4520a54-cd38-4be0-9158-24a61a79599e: node 6bd8641f-84c6-4ddb-b8b2-9c076b017198: media default: revision_uid: @@ -39,7 +40,7 @@ default: pathauto: 0 field_deck: - - value: 'easure and plan your site performance with analytics best practices and tools' + value: '

    Measure and plan your site performance with analytics best practices and tools

    ' format: single_inline_html field_featured_communities: - @@ -69,8 +70,8 @@ default: _meta: version: '1.0' entity_type: paragraph - uuid: 4ced8e17-8b6b-4b67-9b11-6f2fd606134a - bundle: internal_content + uuid: 1f3c5667-4d8c-4a29-806f-c13ed471e3d5 + bundle: external_content default_langcode: en default: status: @@ -78,13 +79,44 @@ default: value: true created: - - value: 1729705485 + value: 1735586215 behavior_settings: - value: { } + field_link: + - + uri: 'https://www.youtube.com/watch?v=8zkHN3rxXHw' + title: 'Video: Continuously improve your website by using customer feedback and web analytics: An IRS case study (length: 31:27)' + options: { } + field_summary: + - + value: '

    Learn how you can use web analytics to make improvements to user experience.

    ' + format: single_inline_html field_title: - - value: 'An introduction to accessibility' + value: 'Analytics: Essential knowledge' + field_featured_resources: + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: cca49c29-321a-4375-8916-cf1c855292ab + bundle: internal_content + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1735586114 + behavior_settings: + - + value: { } + field_content: + - + entity: c4520a54-cd38-4be0-9158-24a61a79599e field_legislation: - uri: 'https://www.whitehouse.gov/wp-content/uploads/legacy_drupal_files/omb/memoranda/2010/m10-23.pdf' @@ -98,5 +130,5 @@ default: entity: 6bd8641f-84c6-4ddb-b8b2-9c076b017198 field_summary: - - value: 'Web analytics provide valuable insights into how users interact with a website. Use the data gained from web analytics to identify areas for improvement and make data-driven decisions. This can lead to a more user-friendly and engaging website, which can ' + value: '

    Web analytics provide valuable insights into how users interact with a website. Use the data gained from web analytics to identify areas for improvement and make data-driven decisions. This can lead to a more user-friendly and engaging website, which can

    ' format: single_inline_html From d2e9234e696a001140dab53104c8f49628cad85a Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Mon, 30 Dec 2024 15:36:09 -0500 Subject: [PATCH 09/16] DIGITAL-47: A 500 was thrown if guide nav title was set, fixed logic. --- web/themes/custom/digital_gov/digital_gov.theme | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/web/themes/custom/digital_gov/digital_gov.theme b/web/themes/custom/digital_gov/digital_gov.theme index b1a3d588..b399feea 100644 --- a/web/themes/custom/digital_gov/digital_gov.theme +++ b/web/themes/custom/digital_gov/digital_gov.theme @@ -103,13 +103,9 @@ function digital_gov_preprocess_node_guides(&$variables): void { function digital_gov_get_guidenav_links(Node $node, string $current): array { // Anonymous helper for getting node links. $makeLink = function (Node $page): Link { - return Link::createFromRoute( - // Override the navigation title if set in the node. - $page->get('field_guide_nav_title')?->get(0)?->getValue() - ?? $page->getTitle(), - 'entity.node.canonical', - ['node' => $page->id()] - ); + // Override the navigation title if set in the node. + return $page->toLink($page->get('field_guide_nav_title')->getString() + ?: $page->label()); }; // The guide_nav is an array that holds items with the following keys From 2376d38965577fe3c05ba67cd1441bc4715732e7 Mon Sep 17 00:00:00 2001 From: Oscar Merida Date: Tue, 31 Dec 2024 10:51:25 -0500 Subject: [PATCH 10/16] DIGITAL-47: Guide Glossary * Fix WSOD when no parent guide is set. --- web/themes/custom/digital_gov/digital_gov.theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/themes/custom/digital_gov/digital_gov.theme b/web/themes/custom/digital_gov/digital_gov.theme index b399feea..47ce0c65 100644 --- a/web/themes/custom/digital_gov/digital_gov.theme +++ b/web/themes/custom/digital_gov/digital_gov.theme @@ -128,7 +128,7 @@ function digital_gov_get_guidenav_links(Node $node, string $current): array { $links['guide_nav'][] = ['link' => $links['guide_start_link']]; } - if ($parent_guide = $node->get('field_parent_guide')->first()->get('entity')->getValue()) { + if ($parent_guide = $node->get('field_parent_guide')->first()?->get('entity')->getValue()) { $links['guide_parent_link'] = $makeLink($parent_guide); } From 6a53071ea24a2f7ed9ba617d01898051f33b7c08 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 11:55:19 -0500 Subject: [PATCH 11/16] DIGITAL-47: Remove duplicate weight. --- config/sync/core.entity_view_display.node.guides.default.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/sync/core.entity_view_display.node.guides.default.yml b/config/sync/core.entity_view_display.node.guides.default.yml index dbee6e0c..04537d47 100644 --- a/config/sync/core.entity_view_display.node.guides.default.yml +++ b/config/sync/core.entity_view_display.node.guides.default.yml @@ -51,7 +51,6 @@ content: view_mode: default link: false third_party_settings: { } - weight: 8 weight: 119 region: content field_glossary: From 6fb5627c97aecd7d1053c7e6f3749e07d3431e21 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 11:55:46 -0500 Subject: [PATCH 12/16] DIGITAL-47: Updated patch for circular dependencies to allow rested paragraph references to work. --- composer.patches.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.patches.json b/composer.patches.json index 69f4659e..cc72d452 100644 --- a/composer.patches.json +++ b/composer.patches.json @@ -6,7 +6,7 @@ "drupal/default_content": { "/project/default_content/issues/3203014: BaseFieldOverride cause inconsistencies during export": "https://www.drupal.org/files/issues/2022-12-13/base_field_override_inconsistencies-3203014-9.patch", "/project/default_content/issues/2943458: Exporting passwords": "https://www.drupal.org/files/issues/2022-02-18/default_content-2943458-9.patch", - "/project/default_content/issues/3180348: Profile entities have circular dependencies": "https://www.drupal.org/files/issues/2024-12-27/default_content-profile-entities-have-circular-dependencies-3180348-5.patch", + "/project/default_content/issues/3180348: Profile entities have circular dependencies": "https://www.drupal.org/files/issues/2025-01-01/default_content-profile-entities-have-circular-dependencies-3180348-7.patch", "/project/default_content/issues/3200212: Import should overwrite files": "patches/default_content-3200212-25.patch", "Created hook to exclude content from being exported": "patches/default_content-hook-exclude-content.patch" }, From dbef89bbb2f9706d15bc6aed6a2329cc88124d98 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 12:03:42 -0500 Subject: [PATCH 13/16] DIGITAL-47: Added additional help text to the 'Settings' fields of the guide navigation nodes. --- ...y_form_display.node.guide_navigation.default.yml | 13 +++++++------ ...node.guide_navigation.field_guide_start_page.yml | 2 +- ...eld.node.guide_navigation.field_parent_guide.yml | 2 +- ...node.guide_navigation.field_show_in_page_nav.yml | 2 +- ...de.guide_navigation.field_show_next_previous.yml | 2 +- ...d.node.guide_navigation.field_show_read_time.yml | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/config/sync/core.entity_form_display.node.guide_navigation.default.yml b/config/sync/core.entity_form_display.node.guide_navigation.default.yml index 75ca0d0a..c43647c1 100644 --- a/config/sync/core.entity_form_display.node.guide_navigation.default.yml +++ b/config/sync/core.entity_form_display.node.guide_navigation.default.yml @@ -18,6 +18,7 @@ third_party_settings: field_group: group_settings: children: + - field_guide_start_page - field_show_next_previous - field_show_read_time - field_show_in_page_nav @@ -25,7 +26,7 @@ third_party_settings: label: Settings region: content parent_name: '' - weight: 3 + weight: 2 format_type: fieldset format_settings: classes: '' @@ -47,7 +48,7 @@ content: third_party_settings: { } field_guide_navigation: type: paragraphs - weight: 2 + weight: 3 region: content settings: title: Paragraph @@ -71,27 +72,27 @@ content: third_party_settings: { } field_parent_guide: type: options_select - weight: 26 + weight: 5 region: content settings: { } third_party_settings: { } field_show_in_page_nav: type: boolean_checkbox - weight: 13 + weight: 4 region: content settings: display_label: true third_party_settings: { } field_show_next_previous: type: boolean_checkbox - weight: 10 + weight: 2 region: content settings: display_label: true third_party_settings: { } field_show_read_time: type: boolean_checkbox - weight: 12 + weight: 3 region: content settings: display_label: true diff --git a/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml b/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml index b1c7a996..ba6b73f7 100644 --- a/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml +++ b/config/sync/field.field.node.guide_navigation.field_guide_start_page.yml @@ -10,7 +10,7 @@ field_name: field_guide_start_page entity_type: node bundle: guide_navigation label: 'Start Page' -description: 'The page to use as the overview of the guide.' +description: "The guide that will be as the 'Header' for all guides that use this guide navigation." required: true translatable: false default_value: { } diff --git a/config/sync/field.field.node.guide_navigation.field_parent_guide.yml b/config/sync/field.field.node.guide_navigation.field_parent_guide.yml index a5e3b579..0a4bc956 100644 --- a/config/sync/field.field.node.guide_navigation.field_parent_guide.yml +++ b/config/sync/field.field.node.guide_navigation.field_parent_guide.yml @@ -10,7 +10,7 @@ field_name: field_parent_guide entity_type: node bundle: guide_navigation label: 'Parent Guide' -description: '' +description: 'A guide that will be linked to in the header of all guides that use this guide navigation.' required: false translatable: false default_value: { } diff --git a/config/sync/field.field.node.guide_navigation.field_show_in_page_nav.yml b/config/sync/field.field.node.guide_navigation.field_show_in_page_nav.yml index df953788..13dd3c92 100644 --- a/config/sync/field.field.node.guide_navigation.field_show_in_page_nav.yml +++ b/config/sync/field.field.node.guide_navigation.field_show_in_page_nav.yml @@ -10,7 +10,7 @@ field_name: field_show_in_page_nav entity_type: node bundle: guide_navigation label: 'Show In-page Nav' -description: '' +description: 'If selected, this will show the left hand navigation that has links to all headers of the current page as well as links to the subnav links for the current guide.' required: false translatable: false default_value: { } diff --git a/config/sync/field.field.node.guide_navigation.field_show_next_previous.yml b/config/sync/field.field.node.guide_navigation.field_show_next_previous.yml index a50c2c60..39980e13 100644 --- a/config/sync/field.field.node.guide_navigation.field_show_next_previous.yml +++ b/config/sync/field.field.node.guide_navigation.field_show_next_previous.yml @@ -10,7 +10,7 @@ field_name: field_show_next_previous entity_type: node bundle: guide_navigation label: 'Show Next/Previous' -description: '' +description: 'If selected, show links at the bottom of the guides allow navigation between the previous and next page.' required: false translatable: false default_value: { } diff --git a/config/sync/field.field.node.guide_navigation.field_show_read_time.yml b/config/sync/field.field.node.guide_navigation.field_show_read_time.yml index 1a4f636b..69e5b68f 100644 --- a/config/sync/field.field.node.guide_navigation.field_show_read_time.yml +++ b/config/sync/field.field.node.guide_navigation.field_show_read_time.yml @@ -10,7 +10,7 @@ field_name: field_show_read_time entity_type: node bundle: guide_navigation label: 'Show Read Time' -description: '' +description: 'If selected, the average time to read the current guide will be created and shown.' required: false translatable: false default_value: { } From 400d7259f8efda7b84eea364b4ff00550c2bb99b Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 12:04:53 -0500 Subject: [PATCH 14/16] DIGITAL-47: Set the guide nav title field for one of the guides to ensure that it works. --- .../content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml b/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml index 1eba3185..743f2884 100644 --- a/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml +++ b/web/modules/custom/default_content_config/content/node/45a32394-3a9a-4481-a9bf-4701e39138ea.yml @@ -45,7 +45,7 @@ default: summary: '' field_deck: - - value: 'A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow' + value: '

    A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow

    ' format: single_inline_html field_featured_image: - @@ -53,6 +53,9 @@ default: field_guide_nav_ref: - entity: 258cf431-4a0c-4489-807e-c87087c87cf9 + field_guide_nav_title: + - + value: 'GUIDE-all fields (Overriden)' field_guide_weight: - value: 5 @@ -64,7 +67,7 @@ default: entity: 1e945b0b-bcf5-4df7-9105-6c222eb70c13 field_summary: - - value: 'A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow' + value: '

    A ‘quick-start’ guide for embedding accessibility and inclusive design practices into your team’s workflow

    ' format: single_inline_html field_summary_box: - From 9ec89bf5b9257cfd2aa28b1e781ae78e98feebc4 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 12:18:47 -0500 Subject: [PATCH 15/16] DIGITAL-47: Added guide navigation admin and allow it and content admin to edit guide navigation nodes. --- .../sync/override_node_options.settings.yml | 2 +- ...add_role_action.guide_navigation_admin.yml | 14 +++++++++++++ ...ove_role_action.guide_navigation_admin.yml | 14 +++++++++++++ config/sync/user.role.content_admin.yml | 5 +++++ .../sync/user.role.guide_navigation_admin.yml | 21 +++++++++++++++++++ config/sync/user.role.user_admin.yml | 1 + 6 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 config/sync/system.action.user_add_role_action.guide_navigation_admin.yml create mode 100644 config/sync/system.action.user_remove_role_action.guide_navigation_admin.yml create mode 100644 config/sync/user.role.guide_navigation_admin.yml diff --git a/config/sync/override_node_options.settings.yml b/config/sync/override_node_options.settings.yml index 7f5e2f73..633bdf39 100644 --- a/config/sync/override_node_options.settings.yml +++ b/config/sync/override_node_options.settings.yml @@ -1,4 +1,4 @@ _core: default_config_hash: Y0Jxf-pLD0BpNVMs5eY2YL6Ctcxc-sKfAi5IJa_bwQk general_permissions: 1 -specific_permissions: 0 +specific_permissions: 1 diff --git a/config/sync/system.action.user_add_role_action.guide_navigation_admin.yml b/config/sync/system.action.user_add_role_action.guide_navigation_admin.yml new file mode 100644 index 00000000..52e50643 --- /dev/null +++ b/config/sync/system.action.user_add_role_action.guide_navigation_admin.yml @@ -0,0 +1,14 @@ +uuid: 7632ffa8-086c-44c1-bf9f-c350e2059f78 +langcode: en +status: true +dependencies: + config: + - user.role.guide_navigation_admin + module: + - user +id: user_add_role_action.guide_navigation_admin +label: 'Add the Guide Navigation Admin role to the selected user(s)' +type: user +plugin: user_add_role_action +configuration: + rid: guide_navigation_admin diff --git a/config/sync/system.action.user_remove_role_action.guide_navigation_admin.yml b/config/sync/system.action.user_remove_role_action.guide_navigation_admin.yml new file mode 100644 index 00000000..547c5ff1 --- /dev/null +++ b/config/sync/system.action.user_remove_role_action.guide_navigation_admin.yml @@ -0,0 +1,14 @@ +uuid: a8446a2f-080b-4615-8d45-3efc07bf7b45 +langcode: en +status: true +dependencies: + config: + - user.role.guide_navigation_admin + module: + - user +id: user_remove_role_action.guide_navigation_admin +label: 'Remove the Guide Navigation Admin role from the selected user(s)' +type: user +plugin: user_remove_role_action +configuration: + rid: guide_navigation_admin diff --git a/config/sync/user.role.content_admin.yml b/config/sync/user.role.content_admin.yml index 22e3fcdc..bf3b6e26 100644 --- a/config/sync/user.role.content_admin.yml +++ b/config/sync/user.role.content_admin.yml @@ -7,6 +7,7 @@ dependencies: - node.type.basic_page - node.type.community - node.type.event + - node.type.guide_navigation - node.type.guides - node.type.landing_page - node.type.news @@ -43,6 +44,7 @@ permissions: - 'create basic_page content' - 'create community content' - 'create event content' + - 'create guide_navigation content' - 'create guides content' - 'create landing_page content' - 'create media' @@ -51,11 +53,13 @@ permissions: - 'create short_post content' - 'create source content' - 'create topics content' + - 'delete any guide_navigation content' - 'delete any media' - 'edit any authors content' - 'edit any basic_page content' - 'edit any community content' - 'edit any event content' + - 'edit any guide_navigation content' - 'edit any guides content' - 'edit any landing_page content' - 'edit any news content' @@ -66,6 +70,7 @@ permissions: - 'edit identifier config page entity' - 'override all authored by option' - 'override all authored on option' + - 'override guide_navigation published option' - 'schedule publishing of nodes' - 'update any media' - 'use default embedded content button' diff --git a/config/sync/user.role.guide_navigation_admin.yml b/config/sync/user.role.guide_navigation_admin.yml new file mode 100644 index 00000000..4377802a --- /dev/null +++ b/config/sync/user.role.guide_navigation_admin.yml @@ -0,0 +1,21 @@ +uuid: 89d3d12f-f60d-439a-8a5a-e57d6df00fce +langcode: en +status: true +dependencies: + config: + - node.type.guide_navigation + module: + - node + - override_node_options + - paragraphs_type_permissions +id: guide_navigation_admin +label: 'Guide Navigation Admin' +weight: 10 +is_admin: null +permissions: + - 'access content overview' + - 'bypass paragraphs type content access' + - 'create guide_navigation content' + - 'delete any guide_navigation content' + - 'edit any guide_navigation content' + - 'override guide_navigation published option' diff --git a/config/sync/user.role.user_admin.yml b/config/sync/user.role.user_admin.yml index 10cb22e9..1e8bb8b9 100644 --- a/config/sync/user.role.user_admin.yml +++ b/config/sync/user.role.user_admin.yml @@ -13,6 +13,7 @@ permissions: - 'assign content_admin role' - 'assign data_analyst role' - 'assign editor role' + - 'assign guide_navigation_admin role' - 'assign identifier_admin role' - 'assign publisher role' - 'assign user_admin role' From ceaf05b3224edb8a1fbfc526b3c3ec9982b8e988 Mon Sep 17 00:00:00 2001 From: Matt Poole Date: Wed, 1 Jan 2025 12:19:36 -0500 Subject: [PATCH 16/16] DIGITAL-47: Added test users for guide nav and identifier admins. --- .../1bf4378c-65c0-4058-a19a-936293a7f99e.yml | 52 +++++++++++++++++++ .../fd18104a-d557-4851-a7cb-dd573d347c35.yml | 52 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 web/modules/custom/default_content_config/content/user/1bf4378c-65c0-4058-a19a-936293a7f99e.yml create mode 100644 web/modules/custom/default_content_config/content/user/fd18104a-d557-4851-a7cb-dd573d347c35.yml diff --git a/web/modules/custom/default_content_config/content/user/1bf4378c-65c0-4058-a19a-936293a7f99e.yml b/web/modules/custom/default_content_config/content/user/1bf4378c-65c0-4058-a19a-936293a7f99e.yml new file mode 100644 index 00000000..0dbcaf71 --- /dev/null +++ b/web/modules/custom/default_content_config/content/user/1bf4378c-65c0-4058-a19a-936293a7f99e.yml @@ -0,0 +1,52 @@ +_meta: + version: '1.0' + entity_type: user + uuid: 1bf4378c-65c0-4058-a19a-936293a7f99e + default_langcode: en +default: + preferred_langcode: + - + value: en + preferred_admin_langcode: + - + value: en + name: + - + value: identifieradmin@example.com + pass: + - + value: $2y$10$Ja6HIAHhUtvQoANzF8v.9eODuE7S5MXdfEErjNq5mLOHzZMWxG0Zq + existing: '' + pre_hashed: true + mail: + - + value: identifieradmin@example.com + timezone: + - + value: America/New_York + status: + - + value: true + created: + - + value: 1735751282 + access: + - + value: 0 + login: + - + value: 0 + init: + - + value: identifieradmin@example.com + roles: + - + target_id: identifier_admin + role_change: + - + target_id: __role_delegation_empty_field_value__ + path: + - + alias: '' + langcode: en + pathauto: 0 diff --git a/web/modules/custom/default_content_config/content/user/fd18104a-d557-4851-a7cb-dd573d347c35.yml b/web/modules/custom/default_content_config/content/user/fd18104a-d557-4851-a7cb-dd573d347c35.yml new file mode 100644 index 00000000..49a87e57 --- /dev/null +++ b/web/modules/custom/default_content_config/content/user/fd18104a-d557-4851-a7cb-dd573d347c35.yml @@ -0,0 +1,52 @@ +_meta: + version: '1.0' + entity_type: user + uuid: fd18104a-d557-4851-a7cb-dd573d347c35 + default_langcode: en +default: + preferred_langcode: + - + value: en + preferred_admin_langcode: + - + value: en + name: + - + value: guidenavadmin@example.com + pass: + - + value: $2y$10$cYsRV4MUpmsENfB2LNP.9e2nyrP5ncYFr0z12N09Dh20H.iAV8pzS + existing: '' + pre_hashed: true + mail: + - + value: guidenavadmin@example.com + timezone: + - + value: America/New_York + status: + - + value: true + created: + - + value: 1735751268 + access: + - + value: 0 + login: + - + value: 0 + init: + - + value: guidenavadmin@example.com + roles: + - + target_id: guide_navigation_admin + role_change: + - + target_id: __role_delegation_empty_field_value__ + path: + - + alias: '' + langcode: en + pathauto: 0