From 98b0da66150fbbe694e9bc61c2fccacfa86b1979 Mon Sep 17 00:00:00 2001 From: bcweaver <brianweaver@gmail.com> Date: Wed, 20 Feb 2019 17:12:59 -0500 Subject: [PATCH] SECURITY update: drupal core: 8.6.7 --> 8.6.10 --- composer.json | 2 +- composer.lock | 12 +- vendor/composer/installed.json | 12 +- web/core/MAINTAINERS.txt | 4 +- web/core/core.api.php | 9 +- web/core/includes/form.inc | 22 +- web/core/includes/update.inc | 5 + web/core/lib/Drupal.php | 2 +- .../Plugin/Derivative/DeriverInterface.php | 2 +- .../Access/CsrfRequestHeaderAccessCheck.php | 13 +- .../lib/Drupal/Core/Archiver/ArchiveTar.php | 8 +- .../lib/Drupal/Core/Config/ConfigFactory.php | 21 +- .../Core/Config/Entity/ConfigEntityBase.php | 5 +- .../Core/Entity/ContentEntityStorageBase.php | 19 +- .../Entity/EntityCreateAnyAccessCheck.php | 16 +- .../Entity/Sql/SqlContentEntityStorage.php | 3 +- .../AuthenticationSubscriber.php | 16 + .../lib/Drupal/Core/Extension/Extension.php | 51 +- .../Drupal/Core/Extension/ModuleHandler.php | 7 +- .../Field/Plugin/Field/FieldType/MapItem.php | 7 +- .../Core/Installer/Form/SiteConfigureForm.php | 12 +- .../DatabaseStorageExpirable.php | 16 +- .../KeyValueStoreExpirableInterface.php | 2 + .../Core/Logger/LogMessageParserInterface.php | 9 +- .../Drupal/Core/Routing/AccessAwareRouter.php | 9 +- .../Drupal/Core/Session/AccountInterface.php | 2 + .../lib/Drupal/Core/Update/UpdateKernel.php | 44 + web/core/misc/ajax.es6.js | 9 +- web/core/misc/ajax.js | 6 +- web/core/misc/tabledrag.es6.js | 19 +- web/core/misc/tabledrag.js | 10 +- .../src/Authentication/Provider/BasicAuth.php | 5 +- .../block/src/BlockAccessControlHandler.php | 5 +- .../Functional/Rest/BlockResourceTestBase.php | 25 +- .../d7/MigrateBlockContentTranslationTest.php | 1 + .../Rest/BlockContentResourceTestBase.php | 4 +- .../Rest/CommentResourceTestBase.php | 10 +- .../Rest/ConfigTestResourceTestBase.php | 16 + .../d6_profile_field_option_translation.yml | 52 + .../source/d6/ProfileFieldTranslation.php | 19 +- .../ModerationStateConstraintValidator.php | 2 +- .../src/StateTransitionValidation.php | 5 +- .../StateTransitionValidationInterface.php | 5 +- .../Unit/StateTransitionValidationTest.php | 68 +- .../src/Functional/DbLogResourceTest.php | 2 +- .../Functional/Rest/FileResourceTestBase.php | 3 + .../Kernel/Migrate/d6/MigrateUploadTest.php | 8 +- .../filter/tests/src/Kernel/FilterAPITest.php | 12 + .../src/Normalizer/FieldItemNormalizer.php | 17 + .../hal/tests/src/Kernel/DenormalizeTest.php | 1 + .../modules/image/src/Entity/ImageStyle.php | 3 +- .../src/Kernel/ImageStyleIntegrationTest.php | 66 ++ web/core/modules/language/language.module | 2 +- .../language.content_settings.node.page.yml | 10 + .../config/install/node.type.page.yml | 10 + ...language_entity_field_access_test.info.yml | 12 + .../language_entity_field_access_test.module | 18 + ...nfigurableLanguageHalJsonBasicAuthTest.php | 4 +- ...ntLanguageSettingsHalJsonBasicAuthTest.php | 4 +- .../LanguageEntityFieldAccessHookTest.php | 43 + .../ConfigurableLanguageJsonBasicAuthTest.php | 4 +- .../ConfigurableLanguageXmlBasicAuthTest.php | 4 +- ...ntentLanguageSettingsJsonBasicAuthTest.php | 4 +- ...ontentLanguageSettingsXmlBasicAuthTest.php | 4 +- .../src/Kernel/OverriddenConfigImportTest.php | 99 ++ .../layout_builder/layout_builder.module | 6 +- .../no_transitions_css/css/css_fix.theme.css | 23 - .../no_transitions_css.info.yml | 6 - .../no_transitions_css.libraries.yml | 5 - .../no_transitions_css.module | 16 - .../src/Functional/LayoutBuilderTest.php | 17 + .../FunctionalJavascript/FieldBlockTest.php | 4 +- .../InlineBlockTestBase.php | 2 - .../src/Plugin/Field/FieldType/LinkItem.php | 7 +- .../Functional/Rest/MediaResourceTestBase.php | 6 +- .../media_library/css/media_library.theme.css | 26 +- .../Field/FieldWidget/MediaLibraryWidget.php | 25 +- .../FunctionalJavascript/MediaLibraryTest.php | 1 + .../MenuLinkContentAccessControlHandler.php | 3 +- .../Rest/MenuLinkContentResourceTestBase.php | 2 +- .../migrate/source/SourcePluginBase.php | 1 + .../src/Kernel/MigrateSourceTestBase.php | 5 +- .../tests/src/Kernel/MigrateTestBase.php | 1 + .../migrate_drupal/tests/fixtures/drupal6.php | 117 ++- .../src/Kernel/d6/MigrateDrupal6TestBase.php | 4 +- .../src/Kernel/d6/MigrationProcessTest.php | 43 + .../src/Kernel/d7/MigrationProcessTest.php | 43 + ...php => MultilingualReviewPageTestBase.php} | 4 +- ...p => NoMultilingualReviewPageTestBase.php} | 4 +- ...est.php => MultilingualReviewPageTest.php} | 6 +- ...t.php => NoMultilingualReviewPageTest.php} | 7 +- ...lingualTest.php => NoMultilingualTest.php} | 2 +- ...grateUpgrade6Test.php => Upgrade6Test.php} | 6 +- ...est.php => MultilingualReviewPageTest.php} | 8 +- ...lingualTest.php => NoMultilingualTest.php} | 2 +- ...grateUpgrade7Test.php => Upgrade7Test.php} | 2 +- .../node/src/NodeAccessControlHandler.php | 2 +- .../tests/src/Functional/NodeTitleTest.php | 3 +- .../Functional/Rest/NodeResourceTestBase.php | 2 +- .../ResponsiveImageFieldUiTest.php | 160 ++++ .../src/Tests/ResponsiveImageFieldUiTest.php | 131 --- web/core/modules/rest/rest.post_update.php | 7 + .../Plugin/rest/resource/EntityResource.php | 37 +- .../config_test_rest/config_test_rest.module | 7 +- .../Functional/BasicAuthResourceTestTrait.php | 21 +- ...ourceWithInterfaceTranslationTestTrait.php | 28 - .../Functional/CookieResourceTestTrait.php | 6 +- .../EntityResource/EntityResourceTestBase.php | 95 +- .../Rest/SearchPageResourceTestBase.php | 4 +- .../src/Normalizer/FieldItemNormalizer.php | 16 + .../Normalizer/PrimitiveDataNormalizer.php | 11 + .../SerializedColumnNormalizerTrait.php | 116 +++ .../src/Kernel/EntitySerializationTest.php | 1 + ...EntityReferenceFieldItemNormalizerTest.php | 28 + .../TimestampItemNormalizerTest.php | 53 +- .../src/ShortcutSetAccessControlHandler.php | 2 +- .../Rest/ShortcutSetResourceTestBase.php | 16 + .../simpletest/src/Tests/BrokenSetUpTest.php | 2 +- web/core/modules/system/system.install | 65 ++ ...upal-8.6.0-minimal-with-warm-caches.sql.gz | 904 ++++++++++++++++++ .../update/drupal-8.test-config-init.php | 92 ++ .../tabledrag_test/js/tabledrag_test.es6.js | 22 + .../tabledrag_test/js/tabledrag_test.js | 16 + .../src/Form/TableDragTestForm.php | 157 +++ .../tabledrag_test/tabledrag_test.info.yml | 6 + .../tabledrag_test.libraries.yml | 6 + .../tabledrag_test/tabledrag_test.routing.yml | 7 + .../Update/WarmCacheUpdateFrom8dot6Test.php | 88 ++ .../test_subseven/test_subseven.info.yml | 6 + .../Functional/Rest/TermResourceTestBase.php | 6 +- .../user/src/Plugin/migrate/ProfileValues.php | 9 +- .../d6/ProfileFieldOptionTranslation.php | 41 + .../Plugin/migrate/source/ProfileField.php | 40 +- .../d6/ProfileFieldOptionTranslation.php | 58 ++ .../user/src/UserAccessControlHandler.php | 10 +- .../Functional/Rest/UserResourceTestBase.php | 8 +- ...grateProfileFieldOptionTranslationTest.php | 80 ++ .../d6/ProfileFieldCheckRequirementsTest.php | 33 + .../d7/ProfileFieldCheckRequirementsTest.php | 33 + .../Migrate/d7/UserMigrationClassTest.php | 4 +- .../d6/ProfileFieldOptionTranslationTest.php | 72 ++ .../src/Plugin/views/filter/InOperator.php | 7 +- ...m.action.user_batch_action_test_action.yml | 10 + .../schema/user_batch_action_test.schema.yml | 3 + .../src/Plugin/Action/BatchUserAction.php | 92 ++ .../user_batch_action_test.info.yml | 9 + .../src/Functional/UserBatchActionTest.php | 44 + .../Kernel/Handler/FilterInOperatorTest.php | 35 + .../FilterCriteriaTest.php | 40 +- .../workspaces/src/Entity/Workspace.php | 2 +- .../workspaces/src/WorkspaceManager.php | 16 +- .../config/install/system.theme.global.yml | 14 + .../default_content/LICENCE.txt | 1 + .../images/vegan-chocolate-nut-brownies.jpg | 336 +++++++ .../chocolate-brownie-umami.html | 7 - .../vegan-chocolate-nut-brownies.html | 14 + .../default_content/recipes.csv | 2 +- .../DefaultContentFilesAccessTest.php | 4 +- .../content/node--card-common.html.twig | 2 +- .../templates/content/node--card.html.twig | 2 +- .../testing_site_config.info.yml | 6 + .../testing_site_config.install | 22 + .../Ajax/CommandsTest.php | 20 +- .../FunctionalJavascriptTests/JSWebAssert.php | 20 + .../TableDrag/TableDragTest.php | 345 +++++++ .../InstallerSiteConfigProfileTest.php | 63 ++ .../Core/Config/ConfigCRUDTest.php | 35 +- .../Entity/ContentEntityStorageBaseTest.php | 63 ++ .../Core/Extension/ModuleHandlerTest.php | 24 + .../DatabaseStorageExpirableTest.php | 6 + .../Core/Routing/ExceptionHandlingTest.php | 2 + .../PhpTransliterationTest.php | 67 +- .../Component/Utility/EnvironmentTest.php | 7 +- .../Entity/ConfigEntityBaseUnitTest.php | 20 +- .../Extension/ExtensionSerializationTest.php | 32 + .../Tests/Core/Test/BrowserTestBaseTest.php | 18 + web/core/tests/README.md | 32 +- 177 files changed, 4561 insertions(+), 697 deletions(-) create mode 100644 web/core/modules/config_translation/migrations/d6_profile_field_option_translation.yml create mode 100644 web/core/modules/language/tests/language_entity_field_access_test/config/install/language.content_settings.node.page.yml create mode 100644 web/core/modules/language/tests/language_entity_field_access_test/config/install/node.type.page.yml create mode 100644 web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.info.yml create mode 100644 web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.module create mode 100644 web/core/modules/language/tests/src/Functional/LanguageEntityFieldAccessHookTest.php create mode 100644 web/core/modules/language/tests/src/Kernel/OverriddenConfigImportTest.php delete mode 100644 web/core/modules/layout_builder/tests/modules/no_transitions_css/css/css_fix.theme.css delete mode 100644 web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.info.yml delete mode 100644 web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.libraries.yml delete mode 100644 web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.module create mode 100644 web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrationProcessTest.php create mode 100644 web/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrationProcessTest.php rename web/core/modules/migrate_drupal_ui/tests/src/Functional/{MigrateUpgradeReviewPageTestBase.php => MultilingualReviewPageTestBase.php} (97%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/{MigrateUpgradeI18nReviewPageTestBase.php => NoMultilingualReviewPageTestBase.php} (91%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/{MigrateUpgrade6ReviewPageTest.php => MultilingualReviewPageTest.php} (92%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/{MigrateUpgrade6I18nReviewPageTest.php => NoMultilingualReviewPageTest.php} (91%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/{MigrateUpgrade6NoMultilingualTest.php => NoMultilingualTest.php} (98%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/{MigrateUpgrade6Test.php => Upgrade6Test.php} (97%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/{MigrateUpgrade7ReviewPageTest.php => MultilingualReviewPageTest.php} (93%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/{MigrateUpgrade7NoMultilingualTest.php => NoMultilingualTest.php} (98%) rename web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/{MigrateUpgrade7Test.php => Upgrade7Test.php} (98%) create mode 100644 web/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php delete mode 100644 web/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php delete mode 100644 web/core/modules/rest/tests/src/Functional/BasicAuthResourceWithInterfaceTranslationTestTrait.php create mode 100644 web/core/modules/serialization/src/Normalizer/SerializedColumnNormalizerTrait.php create mode 100644 web/core/modules/system/tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz create mode 100644 web/core/modules/system/tests/fixtures/update/drupal-8.test-config-init.php create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.es6.js create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.js create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/src/Form/TableDragTestForm.php create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.info.yml create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.libraries.yml create mode 100644 web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.routing.yml create mode 100644 web/core/modules/system/tests/src/Functional/Update/WarmCacheUpdateFrom8dot6Test.php create mode 100644 web/core/modules/system/tests/themes/test_subseven/test_subseven.info.yml create mode 100644 web/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php create mode 100644 web/core/modules/user/src/Plugin/migrate/source/d6/ProfileFieldOptionTranslation.php create mode 100644 web/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateProfileFieldOptionTranslationTest.php create mode 100644 web/core/modules/user/tests/src/Kernel/Migrate/d6/ProfileFieldCheckRequirementsTest.php create mode 100644 web/core/modules/user/tests/src/Kernel/Migrate/d7/ProfileFieldCheckRequirementsTest.php create mode 100644 web/core/modules/user/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldOptionTranslationTest.php create mode 100644 web/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml create mode 100644 web/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml create mode 100644 web/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php create mode 100644 web/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml create mode 100644 web/core/modules/views/tests/src/Functional/UserBatchActionTest.php create mode 100644 web/core/profiles/demo_umami/config/install/system.theme.global.yml create mode 100644 web/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/vegan-chocolate-nut-brownies.jpg delete mode 100644 web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/chocolate-brownie-umami.html create mode 100644 web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/vegan-chocolate-nut-brownies.html create mode 100644 web/core/profiles/testing_site_config/testing_site_config.info.yml create mode 100644 web/core/profiles/testing_site_config/testing_site_config.install create mode 100644 web/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php create mode 100644 web/core/tests/Drupal/FunctionalTests/Installer/InstallerSiteConfigProfileTest.php create mode 100644 web/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityStorageBaseTest.php create mode 100644 web/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php create mode 100644 web/core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php diff --git a/composer.json b/composer.json index 95a7762e75..a800dbcaf5 100644 --- a/composer.json +++ b/composer.json @@ -85,7 +85,7 @@ "drupal/config_update": "^1.5", "drupal/console": "^1", "drupal/content_access": "1.0-alpha1", - "drupal/core": "^8", + "drupal/core": "8.6.10", "drupal/crop": "2.0-rc1", "drupal/ctools": "3.0", "drupal/ctools_views": "3.0", diff --git a/composer.lock b/composer.lock index 51ff6a26a9..df7974fdbb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "fc35285101b3fae190e67ad8d0e00596", + "content-hash": "37d0639fa7a21db15c16f008e672a3db", "packages": [ { "name": "alchemy/zippy", @@ -2431,16 +2431,16 @@ }, { "name": "drupal/core", - "version": "8.6.7", + "version": "8.6.10", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "e0a09bda1da7552204464894811a59387608c9f9" + "reference": "59568ac02948cf075ee8543e6c6d4386ad8daec1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/e0a09bda1da7552204464894811a59387608c9f9", - "reference": "e0a09bda1da7552204464894811a59387608c9f9", + "url": "https://api.github.com/repos/drupal/core/zipball/59568ac02948cf075ee8543e6c6d4386ad8daec1", + "reference": "59568ac02948cf075ee8543e6c6d4386ad8daec1", "shasum": "" }, "require": { @@ -2669,7 +2669,7 @@ "GPL-2.0-or-later" ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", - "time": "2019-01-16T23:30:03+00:00" + "time": "2019-02-20T18:35:01+00:00" }, { "name": "drupal/crop", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index b24650ef66..b15ea72675 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2512,17 +2512,17 @@ }, { "name": "drupal/core", - "version": "8.6.7", - "version_normalized": "8.6.7.0", + "version": "8.6.10", + "version_normalized": "8.6.10.0", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "e0a09bda1da7552204464894811a59387608c9f9" + "reference": "59568ac02948cf075ee8543e6c6d4386ad8daec1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/e0a09bda1da7552204464894811a59387608c9f9", - "reference": "e0a09bda1da7552204464894811a59387608c9f9", + "url": "https://api.github.com/repos/drupal/core/zipball/59568ac02948cf075ee8543e6c6d4386ad8daec1", + "reference": "59568ac02948cf075ee8543e6c6d4386ad8daec1", "shasum": "" }, "require": { @@ -2695,7 +2695,7 @@ "symfony/debug": "^3.4.0", "symfony/phpunit-bridge": "^3.4.3" }, - "time": "2019-01-16T23:30:03+00:00", + "time": "2019-02-20T18:35:01+00:00", "type": "drupal-core", "extra": { "merge-plugin": { diff --git a/web/core/MAINTAINERS.txt b/web/core/MAINTAINERS.txt index a505c631ab..bd8192318a 100644 --- a/web/core/MAINTAINERS.txt +++ b/web/core/MAINTAINERS.txt @@ -245,7 +245,7 @@ Interface Translation (locale) JavaScript - Théodore Biadala 'nod_' https://www.drupal.org/u/nod_ -- Matthew Grill 'drpal' https://www.drupal.org/u/drpal +- Matthew Grill 'alwaysworking' https://www.drupal.org/u/alwaysworking - Sally Young 'justafish' https://www.drupal.org/u/justafish Language @@ -479,7 +479,7 @@ API-first Initiative Admin UI & JavaScript Modernisation Initiative - Angela Byron 'webchick' https://www.drupal.org/u/webchick - Cristina Chumillas 'ckrina' https://www.drupal.org/u/ckrina -- Matthew Grill 'drpal' https://www.drupal.org/u/drpal +- Matthew Grill 'alwaysworking' https://www.drupal.org/u/alwaysworking - Sally Young 'justafish' https://www.drupal.org/u/justafish Layout Initiative diff --git a/web/core/core.api.php b/web/core/core.api.php index 4fc3ea2983..a6361a95ca 100644 --- a/web/core/core.api.php +++ b/web/core/core.api.php @@ -1195,12 +1195,11 @@ * @section running Running tests * You can run both Simpletest and PHPUnit tests by enabling the core Testing * module (core/modules/simpletest). Once that module is enabled, tests can be - * run using the core/scripts/run-tests.sh script, using - * @link https://www.drupal.org/project/drush Drush @endlink, or from the - * Testing module user interface. + * run on through the Testing module's user interface or on the command line. * - * PHPUnit tests can also be run from the command line, using the PHPUnit - * framework. See https://www.drupal.org/node/2116263 for more information. + * See @link https://www.drupal.org/node/2116263 Running tests with PHPUnit + * binary @endlink or @link https://www.drupal.org/node/645286 Running tests + * with run-tests.sh @endlink for more information. * @} */ diff --git a/web/core/includes/form.inc b/web/core/includes/form.inc index dacae875bd..36490f6f85 100644 --- a/web/core/includes/form.inc +++ b/web/core/includes/form.inc @@ -779,18 +779,18 @@ function batch_set($batch_definition) { * Form API takes care of batches that were set during form submission. * * @param \Drupal\Core\Url|string $redirect - * (optional) Either path or Url object to redirect to when the batch has - * finished processing. Note that to simply force a batch to (conditionally) - * redirect to a custom location after it is finished processing but to - * otherwise allow the standard form API batch handling to occur, it is not - * necessary to call batch_process() and use this parameter. Instead, make - * the batch 'finished' callback return an instance of - * \Symfony\Component\HttpFoundation\RedirectResponse, which will be used + * (optional) Either a path or Url object to redirect to when the batch has + * finished processing. For example, to redirect users to the home page, use + * '<front>'. If you wish to allow standard form API batch handling to occur + * and force the user to be redirected to a custom location after the batch + * has finished processing, you do not need to use batch_process() and this + * parameter. Instead, make the batch 'finished' callback return an instance + * of \Symfony\Component\HttpFoundation\RedirectResponse, which will be used * automatically by the standard batch processing pipeline (and which takes - * precedence over this parameter). - * User will be redirected to the page that started the batch if this argument - * is omitted and no redirect response was returned by the 'finished' - * callback. Any query arguments will be automatically persisted. + * precedence over this parameter). If this parameter is omitted and no + * redirect response was returned by the 'finished' callback, the user will + * be redirected to the page that started the batch. Any query arguments will + * be automatically persisted. * @param \Drupal\Core\Url $url * (optional) URL of the batch processing page. Should only be used for * separate scripts like update.php. diff --git a/web/core/includes/update.inc b/web/core/includes/update.inc index d7fe942ebd..6c3fc394b1 100644 --- a/web/core/includes/update.inc +++ b/web/core/includes/update.inc @@ -9,12 +9,17 @@ */ use Drupal\Component\Graph\Graph; +use Drupal\Core\Update\UpdateKernel; use Drupal\Core\Utility\Error; /** * Disables any extensions that are incompatible with the current core version. */ function update_fix_compatibility() { + // Fix extension objects if the update is being done via Drush 8. In non-Drush + // environments this will already be fixed by the UpdateKernel this point. + UpdateKernel::fixSerializedExtensionObjects(\Drupal::getContainer()); + $extension_config = \Drupal::configFactory()->getEditable('core.extension'); $save = FALSE; foreach (['module', 'theme'] as $type) { diff --git a/web/core/lib/Drupal.php b/web/core/lib/Drupal.php index a5aa5214f4..653f3d07db 100644 --- a/web/core/lib/Drupal.php +++ b/web/core/lib/Drupal.php @@ -82,7 +82,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '8.6.7'; + const VERSION = '8.6.10'; /** * Core API compatibility. diff --git a/web/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php b/web/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php index 1133bceaf0..1932983e2d 100644 --- a/web/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php +++ b/web/core/lib/Drupal/Component/Plugin/Derivative/DeriverInterface.php @@ -15,7 +15,7 @@ interface DeriverInterface { * @param string $derivative_id * The derivative id. The id must uniquely identify the derivative within a * given base plugin, but derivative ids can be reused across base plugins. - * @param mixed $base_plugin_definition + * @param array|\Drupal\Component\Plugin\Definition\PluginDefinitionInterface $base_plugin_definition * The definition of the base plugin from which the derivative plugin * is derived. It is maybe an entire object or just some array, depending * on the discovery mechanism. diff --git a/web/core/lib/Drupal/Core/Access/CsrfRequestHeaderAccessCheck.php b/web/core/lib/Drupal/Core/Access/CsrfRequestHeaderAccessCheck.php index 563355a6b7..c9266f5736 100644 --- a/web/core/lib/Drupal/Core/Access/CsrfRequestHeaderAccessCheck.php +++ b/web/core/lib/Drupal/Core/Access/CsrfRequestHeaderAccessCheck.php @@ -89,12 +89,15 @@ public function applies(Route $route) { public function access(Request $request, AccountInterface $account) { $method = $request->getMethod(); + // Read-only operations are always allowed. + if (in_array($method, ['GET', 'HEAD', 'OPTIONS', 'TRACE'], TRUE)) { + return AccessResult::allowed(); + } + // This check only applies if - // 1. this is a write operation - // 2. the user was successfully authenticated and - // 3. the request comes with a session cookie. - if (!in_array($method, ['GET', 'HEAD', 'OPTIONS', 'TRACE']) - && $account->isAuthenticated() + // 1. the user was successfully authenticated and + // 2. the request comes with a session cookie. + if ($account->isAuthenticated() && $this->sessionConfiguration->hasSession($request) ) { if (!$request->headers->has('X-CSRF-Token')) { diff --git a/web/core/lib/Drupal/Core/Archiver/ArchiveTar.php b/web/core/lib/Drupal/Core/Archiver/ArchiveTar.php index abee870c0b..12722e69df 100644 --- a/web/core/lib/Drupal/Core/Archiver/ArchiveTar.php +++ b/web/core/lib/Drupal/Core/Archiver/ArchiveTar.php @@ -157,7 +157,6 @@ class ArchiveTar * @var string */ public $_fmt =''; - /** * Archive_Tar Class constructor. This flavour of the constructor only * declare a new Archive_Tar object, identifying it by the name of the @@ -265,6 +264,7 @@ public function __construct($p_tarname, $p_compress = null) } } + if (version_compare(PHP_VERSION, "5.5.0-dev") < 0) { $this->_fmt = "a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/" . "a8checksum/a1typeflag/a100link/a6magic/a2version/" . @@ -1411,6 +1411,7 @@ public function _writeHeader($p_filename, $p_stored_filename) if ($p_stored_filename == '') { $p_stored_filename = $p_filename; } + $v_reduced_filename = $this->_pathReduction($p_stored_filename); if (strlen($v_reduced_filename) > 99) { @@ -1423,6 +1424,7 @@ public function _writeHeader($p_filename, $p_stored_filename) if (@is_link($p_filename)) { $v_linkname = readlink($p_filename); } + if (strlen($v_linkname) > 99) { if (!$this->_writeLongHeader($v_linkname, true)) { return false; @@ -1463,11 +1465,11 @@ public function _writeHeader($p_filename, $p_stored_filename) $v_devmajor = ''; $v_devminor = ''; - $v_prefix = ''; $v_binary_data_first = pack( "a100a8a8a8a12a12", + $v_reduced_filename, $v_perms, $v_uid, $v_gid, @@ -1740,6 +1742,7 @@ public function _readHeader($v_binary_data, &$v_header) $v_checksum += array_sum(array_map('ord', array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',))); $v_checksum += array_sum(array_map('ord', array_slice($v_binary_split, 156, 512))); + $v_data = unpack($this->_fmt, $v_binary_data); if (strlen($v_data["prefix"]) > 0) { @@ -1829,7 +1832,6 @@ private function _tarRecToSize($tar_size) } } - /** * Detect and report a malicious file name * diff --git a/web/core/lib/Drupal/Core/Config/ConfigFactory.php b/web/core/lib/Drupal/Core/Config/ConfigFactory.php index e43a36c1f1..e4496f88b7 100644 --- a/web/core/lib/Drupal/Core/Config/ConfigFactory.php +++ b/web/core/lib/Drupal/Core/Config/ConfigFactory.php @@ -335,10 +335,18 @@ public function listAll($prefix = '') { * The configuration event. */ public function onConfigSave(ConfigCrudEvent $event) { + $saved_config = $event->getConfig(); + + // We are only concerned with config objects that belong to the collection + // that matches the storage we depend on. Skip if the event was fired for a + // config object belonging to a different collection. + if ($saved_config->getStorage()->getCollectionName() !== $this->storage->getCollectionName()) { + return; + } + // Ensure that the static cache contains up to date configuration objects by // replacing the data on any entries for the configuration object apart // from the one that references the actual config object being saved. - $saved_config = $event->getConfig(); foreach ($this->getConfigCacheKeys($saved_config->getName()) as $cache_key) { $cached_config = $this->cache[$cache_key]; if ($cached_config !== $saved_config) { @@ -356,8 +364,17 @@ public function onConfigSave(ConfigCrudEvent $event) { * The configuration event. */ public function onConfigDelete(ConfigCrudEvent $event) { + $deleted_config = $event->getConfig(); + + // We are only concerned with config objects that belong to the collection + // that matches the storage we depend on. Skip if the event was fired for a + // config object belonging to a different collection. + if ($deleted_config->getStorage()->getCollectionName() !== $this->storage->getCollectionName()) { + return; + } + // Ensure that the static cache does not contain deleted configuration. - foreach ($this->getConfigCacheKeys($event->getConfig()->getName()) as $cache_key) { + foreach ($this->getConfigCacheKeys($deleted_config->getName()) as $cache_key) { unset($this->cache[$cache_key]); } } diff --git a/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php index 4efcade7a1..5c30435db1 100644 --- a/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php +++ b/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php @@ -348,8 +348,11 @@ public function preSave(EntityStorageInterface $storage) { public function __sleep() { $keys_to_unset = []; if ($this instanceof EntityWithPluginCollectionInterface) { + // Get the plugin collections first, so that the properties are + // initialized in $vars and can be found later. + $plugin_collections = $this->getPluginCollections(); $vars = get_object_vars($this); - foreach ($this->getPluginCollections() as $plugin_config_key => $plugin_collection) { + foreach ($plugin_collections as $plugin_config_key => $plugin_collection) { // Save any changes to the plugin configuration to the entity. $this->set($plugin_config_key, $plugin_collection->getConfiguration()); // If the plugin collections are stored as properties on the entity, diff --git a/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php b/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php index d38244bd65..80500b577c 100644 --- a/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php +++ b/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php @@ -85,7 +85,24 @@ protected function doCreate(array $values) { if (!isset($values[$this->bundleKey])) { throw new EntityStorageException('Missing bundle for entity type ' . $this->entityTypeId); } - $bundle = $values[$this->bundleKey]; + + // Normalize the bundle value. This is an optimized version of + // \Drupal\Core\Field\FieldInputValueNormalizerTrait::normalizeValue() + // because we just need the scalar value. + $bundle_value = $values[$this->bundleKey]; + if (!is_array($bundle_value)) { + // The bundle value is a scalar, use it as-is. + $bundle = $bundle_value; + } + elseif (is_numeric(array_keys($bundle_value)[0])) { + // The bundle value is a field item list array, keyed by delta. + $bundle = reset($bundle_value[0]); + } + else { + // The bundle value is a field item array, keyed by the field's main + // property name. + $bundle = reset($bundle_value); + } } $entity = new $this->entityClass([], $this->entityTypeId, $bundle); $this->initFieldValues($entity, $values); diff --git a/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php b/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php index a6ff09430d..e0e24a2f9e 100644 --- a/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php +++ b/web/core/lib/Drupal/Core/Entity/EntityCreateAnyAccessCheck.php @@ -78,13 +78,15 @@ public function access(Route $route, RouteMatchInterface $route_match, AccountIn if ($entity_type->getBundleEntityType()) { $access->addCacheTags($this->entityTypeManager->getDefinition($entity_type->getBundleEntityType())->getListCacheTags()); - // Check if the user is allowed to create new bundles. If so, allow - // access, so the add page can show a link to create one. - // @see \Drupal\Core\Entity\Controller\EntityController::addPage() - $bundle_access_control_handler = $this->entityTypeManager->getAccessControlHandler($entity_type->getBundleEntityType()); - $access = $access->orIf($bundle_access_control_handler->createAccess(NULL, $account, [], TRUE)); - if ($access->isAllowed()) { - return $access; + if (empty($route->getOption('_ignore_create_bundle_access'))) { + // Check if the user is allowed to create new bundles. If so, allow + // access, so the add page can show a link to create one. + // @see \Drupal\Core\Entity\Controller\EntityController::addPage() + $bundle_access_control_handler = $this->entityTypeManager->getAccessControlHandler($entity_type->getBundleEntityType()); + $access = $access->orIf($bundle_access_control_handler->createAccess(NULL, $account, [], TRUE)); + if ($access->isAllowed()) { + return $access; + } } } diff --git a/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php index 48545d22de..261ff96b71 100644 --- a/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php +++ b/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php @@ -821,13 +821,14 @@ protected function doSaveFieldItems(ContentEntityInterface $entity, array $names if ($update) { $default_revision = $entity->isDefaultRevision(); if ($default_revision) { + $id = $record->{$this->idKey}; // Remove the ID from the record to enable updates on SQL variants // that prevent updating serial columns, for example, mssql. unset($record->{$this->idKey}); $this->database ->update($this->baseTable) ->fields((array) $record) - ->condition($this->idKey, $entity->get($this->idKey)->value) + ->condition($this->idKey, $id) ->execute(); } if ($this->revisionTable) { diff --git a/web/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php b/web/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php index be3f55e4a3..9ab36f3e31 100644 --- a/web/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php +++ b/web/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php @@ -124,6 +124,21 @@ public function onExceptionSendChallenge(GetResponseForExceptionEvent $event) { } } + /** + * Detect disallowed authentication methods on access denied exceptions. + * + * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event + */ + public function _onExceptionAccessDenied(GetResponseForExceptionEvent $event) { + if (isset($this->filter) && $event->isMasterRequest()) { + $request = $event->getRequest(); + $exception = $event->getException(); + if ($exception instanceof AccessDeniedHttpException && $this->authenticationProvider->applies($request) && !$this->filter->appliesToRoutedRequest($request, TRUE)) { + $event->setException(new AccessDeniedHttpException('The used authentication method is not allowed on this route.', $exception)); + } + } + } + /** * {@inheritdoc} */ @@ -137,6 +152,7 @@ public static function getSubscribedEvents() { // Access check must be performed after routing. $events[KernelEvents::REQUEST][] = ['onKernelRequestFilterProvider', 31]; $events[KernelEvents::EXCEPTION][] = ['onExceptionSendChallenge', 75]; + $events[KernelEvents::EXCEPTION][] = ['_onExceptionAccessDenied', 80]; return $events; } diff --git a/web/core/lib/Drupal/Core/Extension/Extension.php b/web/core/lib/Drupal/Core/Extension/Extension.php index 7cb6b56be8..b8cdd42aaf 100644 --- a/web/core/lib/Drupal/Core/Extension/Extension.php +++ b/web/core/lib/Drupal/Core/Extension/Extension.php @@ -4,8 +4,13 @@ /** * Defines an extension (file) object. + * + * This class does not implement the Serializable interface since problems + * occurred when using the serialize method. + * + * @see https://bugs.php.net/bug.php?id=66052 */ -class Extension implements \Serializable { +class Extension { /** * The type of the extension (e.g., 'module'). @@ -156,47 +161,27 @@ public function __call($method, array $args) { } /** - * Implements Serializable::serialize(). + * Magic method implementation to serialize the extension object. * - * Serializes the Extension object in the most optimized way. + * @return array + * The names of all variables that should be serialized. */ - public function serialize() { + public function __sleep() { + // @todo \Drupal\Core\Extension\ThemeExtensionList is adding custom + // properties to the Extension object. + $properties = get_object_vars($this); // Don't serialize the app root, since this could change if the install is - // moved. - $data = [ - 'type' => $this->type, - 'pathname' => $this->pathname, - 'filename' => $this->filename, - ]; - - // @todo ThemeHandler::listInfo(), ThemeHandler::rebuildThemeData(), and - // system_list() are adding custom properties to the Extension object. - $info = new \ReflectionObject($this); - foreach ($info->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) { - $data[$property->getName()] = $property->getValue($this); - } - - return serialize($data); + // moved. Don't serialize splFileInfo because it can not be. + unset($properties['splFileInfo'], $properties['root']); + return array_keys($properties); } /** - * {@inheritdoc} + * Magic method implementation to unserialize the extension object. */ - public function unserialize($data) { - $data = unserialize($data); + public function __wakeup() { // Get the app root from the container. $this->root = DRUPAL_ROOT; - $this->type = $data['type']; - $this->pathname = $data['pathname']; - $this->filename = $data['filename']; - - // @todo ThemeHandler::listInfo(), ThemeHandler::rebuildThemeData(), and - // system_list() are adding custom properties to the Extension object. - foreach ($data as $property => $value) { - if (!isset($this->$property)) { - $this->$property = $value; - } - } } } diff --git a/web/core/lib/Drupal/Core/Extension/ModuleHandler.php b/web/core/lib/Drupal/Core/Extension/ModuleHandler.php index 8d43a857dd..d62398879c 100644 --- a/web/core/lib/Drupal/Core/Extension/ModuleHandler.php +++ b/web/core/lib/Drupal/Core/Extension/ModuleHandler.php @@ -777,7 +777,12 @@ public function getModuleDirectories() { * {@inheritdoc} */ public function getName($module) { - return \Drupal::service('extension.list.module')->getName($module); + try { + return \Drupal::service('extension.list.module')->getName($module); + } + catch (UnknownExtensionException $e) { + return $module; + } } } diff --git a/web/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php b/web/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php index e15fe848bf..5550ede34a 100644 --- a/web/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php +++ b/web/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php @@ -64,7 +64,12 @@ public function setValue($values, $notify = TRUE) { $values = $values->getValue(); } else { - $values = unserialize($values); + if (version_compare(PHP_VERSION, '7.0.0', '>=')) { + $values = unserialize($values, ['allowed_classes' => FALSE]); + } + else { + $values = unserialize($values); + } } } diff --git a/web/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php b/web/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php index 2cca962599..9525de6b18 100644 --- a/web/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php +++ b/web/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php @@ -158,10 +158,13 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#weight' => -20, '#access' => empty($install_state['config_install_path']), ]; + // Use the default site mail if one is already configured, or fall back to + // PHP's configured sendmail_from. + $default_site_mail = $this->config('system.site')->get('mail') ?: ini_get('sendmail_from'); $form['site_information']['site_mail'] = [ '#type' => 'email', '#title' => $this->t('Site email address'), - '#default_value' => ini_get('sendmail_from'), + '#default_value' => $default_site_mail, '#description' => $this->t("Automated emails, such as registration information, will be sent from this address. Use an address ending in your site's domain to help prevent these emails from being flagged as spam."), '#required' => TRUE, '#weight' => -15, @@ -208,11 +211,14 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#weight' => 0, '#access' => empty($install_state['config_install_path']), ]; + // Use the default site timezone if one is already configured, or fall back + // to the system timezone if set (and avoid throwing a warning in + // PHP >=5.4). + $default_timezone = $this->config('system.date')->get('timezone.default') ?: @date_default_timezone_get(); $form['regional_settings']['date_default_timezone'] = [ '#type' => 'select', '#title' => $this->t('Default time zone'), - // Use system timezone if set, but avoid throwing a warning in PHP >=5.4 - '#default_value' => @date_default_timezone_get(), + '#default_value' => $default_timezone, '#options' => system_time_zones(NULL, TRUE), '#description' => $this->t('By default, dates in this site will be displayed in the chosen time zone.'), '#weight' => 5, diff --git a/web/core/lib/Drupal/Core/KeyValueStore/DatabaseStorageExpirable.php b/web/core/lib/Drupal/Core/KeyValueStore/DatabaseStorageExpirable.php index aab333acde..becb657173 100644 --- a/web/core/lib/Drupal/Core/KeyValueStore/DatabaseStorageExpirable.php +++ b/web/core/lib/Drupal/Core/KeyValueStore/DatabaseStorageExpirable.php @@ -88,17 +88,11 @@ public function setWithExpire($key, $value, $expire) { * {@inheritdoc} */ public function setWithExpireIfNotExists($key, $value, $expire) { - $result = $this->connection->merge($this->table) - ->insertFields([ - 'collection' => $this->collection, - 'name' => $key, - 'value' => $this->serializer->encode($value), - 'expire' => REQUEST_TIME + $expire, - ]) - ->condition('collection', $this->collection) - ->condition('name', $key) - ->execute(); - return $result == Merge::STATUS_INSERT; + if (!$this->has($key)) { + $this->setWithExpire($key, $value, $expire); + return TRUE; + } + return FALSE; } /** diff --git a/web/core/lib/Drupal/Core/KeyValueStore/KeyValueStoreExpirableInterface.php b/web/core/lib/Drupal/Core/KeyValueStore/KeyValueStoreExpirableInterface.php index 995a9a8feb..120fa93fa1 100644 --- a/web/core/lib/Drupal/Core/KeyValueStore/KeyValueStoreExpirableInterface.php +++ b/web/core/lib/Drupal/Core/KeyValueStore/KeyValueStoreExpirableInterface.php @@ -22,6 +22,8 @@ public function setWithExpire($key, $value, $expire); /** * Sets a value for a given key with a time to live if it does not yet exist. * + * If a key is expired it also does not exists. + * * @param string $key * The key of the data to store. * @param mixed $value diff --git a/web/core/lib/Drupal/Core/Logger/LogMessageParserInterface.php b/web/core/lib/Drupal/Core/Logger/LogMessageParserInterface.php index 8e6d207a84..2d9223b70b 100644 --- a/web/core/lib/Drupal/Core/Logger/LogMessageParserInterface.php +++ b/web/core/lib/Drupal/Core/Logger/LogMessageParserInterface.php @@ -12,10 +12,9 @@ interface LogMessageParserInterface { * * For a value to be considered as a placeholder should be in the following * formats: - * - PSR3 format: - * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#12-message - * - Drupal specific string placeholder format: - * @see \Drupal\Component\Render\FormattableMarkup + * - @link https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md#12-message The PSR3 format @endlink + * - The Drupal specific string placeholder format, described in + * \Drupal\Component\Render\FormattableMarkup * * Values in PSR3 format will be transformed to * \Drupal\Component\Render\FormattableMarkup format. @@ -29,6 +28,8 @@ interface LogMessageParserInterface { * * @return array * An array of the extracted message placeholders. + * + * @see \Drupal\Component\Render\FormattableMarkup */ public function parseMessagePlaceholders(&$message, array &$context); diff --git a/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php b/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php index 8f9e7beb29..1a93b42d35 100644 --- a/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php +++ b/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php @@ -4,6 +4,8 @@ use Drupal\Core\Access\AccessManagerInterface; use Drupal\Core\Access\AccessResultReasonInterface; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException; use Drupal\Core\Session\AccountInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; @@ -111,7 +113,12 @@ protected function checkAccess(Request $request) { $request->attributes->set(AccessAwareRouterInterface::ACCESS_RESULT, $access_result); } if (!$access_result->isAllowed()) { - throw new AccessDeniedHttpException($access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + if ($access_result instanceof CacheableDependencyInterface && $request->isMethodCacheable()) { + throw new CacheableAccessDeniedHttpException($access_result, $access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + } + else { + throw new AccessDeniedHttpException($access_result instanceof AccessResultReasonInterface ? $access_result->getReason() : NULL); + } } } diff --git a/web/core/lib/Drupal/Core/Session/AccountInterface.php b/web/core/lib/Drupal/Core/Session/AccountInterface.php index 57f6f1d697..6a1b30b0cc 100644 --- a/web/core/lib/Drupal/Core/Session/AccountInterface.php +++ b/web/core/lib/Drupal/Core/Session/AccountInterface.php @@ -115,6 +115,8 @@ public function getPreferredAdminLangcode($fallback_to_default = TRUE); * @deprecated in Drupal 8.0.0, will be removed before Drupal 9.0.0. * Use \Drupal\Core\Session\AccountInterface::getAccountName() or * \Drupal\user\UserInterface::getDisplayName() instead. + * + * @see https://www.drupal.org/node/2572493 */ public function getUsername(); diff --git a/web/core/lib/Drupal/Core/Update/UpdateKernel.php b/web/core/lib/Drupal/Core/Update/UpdateKernel.php index 2b74dabb67..d5051a7916 100644 --- a/web/core/lib/Drupal/Core/Update/UpdateKernel.php +++ b/web/core/lib/Drupal/Core/Update/UpdateKernel.php @@ -7,6 +7,7 @@ use Drupal\Core\Site\Settings; use Drupal\Core\StackMiddleware\ReverseProxyMiddleware; use Symfony\Cmf\Component\Routing\RouteObjectInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; @@ -190,4 +191,47 @@ protected function handleAccess(Request $request) { } } + /** + * {@inheritdoc} + */ + public function loadLegacyIncludes() { + parent::loadLegacyIncludes(); + static::fixSerializedExtensionObjects($this->container); + } + + /** + * Fixes caches and theme info if they contain old Extension objects. + * + * @param \Symfony\Component\DependencyInjection\ContainerInterface $container + * The container. + * + * @internal + * This function is only to be called by the Drupal core update process. + * Additionally, this function will be removed in minor release of Drupal. + * + * @todo https://www.drupal.org/project/drupal/issues/3031322 Remove once + * Drupal 8.6.x is not supported. + */ + public static function fixSerializedExtensionObjects(ContainerInterface $container) { + // Create a custom error handler that will clear caches if a warning occurs + // while getting 'system.theme.data' from state. If this state value was + // created by Drupal <= 8.6.7 then when it is read by Drupal >= 8.6.8 there + // will be PHP warnings. This silently fixes Drupal so that the update can + // continue. + $callable = function () use ($container) { + // Reset static caches in profile list so the module list is rebuilt + // correctly. + $container->get('extension.list.profile')->reset(); + foreach ($container->getParameter('cache_bins') as $service_id => $bin) { + $container->get($service_id)->deleteAll(); + } + // Also rebuild themes because it uses state as cache. + $container->get('theme_handler')->refreshInfo(); + }; + + set_error_handler($callable, E_ERROR | E_WARNING); + $container->get('state')->get('system.theme.data', []); + restore_error_handler(); + } + } diff --git a/web/core/misc/ajax.es6.js b/web/core/misc/ajax.es6.js index 440e5906dc..4b8e537283 100644 --- a/web/core/misc/ajax.es6.js +++ b/web/core/misc/ajax.es6.js @@ -774,7 +774,7 @@ // when there is a form such that this.$form.ajaxSubmit() is used instead of // $.ajax(). When there is no form and $.ajax() is used, beforeSerialize() // isn't called, but don't rely on that: explicitly check this.$form. - if (this.$form) { + if (this.$form && document.body.contains(this.$form.get(0))) { const settings = this.settings || drupalSettings; Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize'); } @@ -1020,7 +1020,7 @@ // attachBehaviors() called on the new content from processing the response // commands is not sufficient, because behaviors from the entire form need // to be reattached. - if (this.$form) { + if (this.$form && document.body.contains(this.$form.get(0))) { const settings = this.settings || drupalSettings; Drupal.attachBehaviors(this.$form.get(0), settings); } @@ -1088,8 +1088,9 @@ $(this.wrapper).show(); // Re-enable the element. $(this.element).prop('disabled', false); - // Reattach behaviors, if they were detached in beforeSerialize(). - if (this.$form) { + // Reattach behaviors, if they were detached in beforeSerialize(), and the + // form is still part of the document. + if (this.$form && document.body.contains(this.$form.get(0))) { const settings = this.settings || drupalSettings; Drupal.attachBehaviors(this.$form.get(0), settings); } diff --git a/web/core/misc/ajax.js b/web/core/misc/ajax.js index 73b4dcca69..482a2f5ef0 100644 --- a/web/core/misc/ajax.js +++ b/web/core/misc/ajax.js @@ -339,7 +339,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr }; Drupal.Ajax.prototype.beforeSerialize = function (element, options) { - if (this.$form) { + if (this.$form && document.body.contains(this.$form.get(0))) { var settings = this.settings || drupalSettings; Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize'); } @@ -451,7 +451,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr } } - if (this.$form) { + if (this.$form && document.body.contains(this.$form.get(0))) { var settings = this.settings || drupalSettings; Drupal.attachBehaviors(this.$form.get(0), settings); } @@ -493,7 +493,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr $(this.element).prop('disabled', false); - if (this.$form) { + if (this.$form && document.body.contains(this.$form.get(0))) { var settings = this.settings || drupalSettings; Drupal.attachBehaviors(this.$form.get(0), settings); } diff --git a/web/core/misc/tabledrag.es6.js b/web/core/misc/tabledrag.es6.js index 76643c3a47..67fc2b2ee7 100644 --- a/web/core/misc/tabledrag.es6.js +++ b/web/core/misc/tabledrag.es6.js @@ -558,10 +558,14 @@ case 38: // Safari up arrow. case 63232: { - let $previousRow = $(self.rowObject.element).prev('tr:first-of-type'); + let $previousRow = $(self.rowObject.element) + .prev('tr') + .eq(0); let previousRow = $previousRow.get(0); while (previousRow && $previousRow.is(':hidden')) { - $previousRow = $(previousRow).prev('tr:first-of-type'); + $previousRow = $(previousRow) + .prev('tr') + .eq(0); previousRow = $previousRow.get(0); } if (previousRow) { @@ -577,7 +581,9 @@ previousRow && $previousRow.find('.js-indentation').length ) { - $previousRow = $(previousRow).prev('tr:first-of-type'); + $previousRow = $(previousRow) + .prev('tr') + .eq(0); previousRow = $previousRow.get(0); groupHeight += $previousRow.is(':hidden') ? 0 @@ -618,10 +624,13 @@ case 63233: { let $nextRow = $(self.rowObject.group) .eq(-1) - .next('tr:first-of-type'); + .next('tr') + .eq(0); let nextRow = $nextRow.get(0); while (nextRow && $nextRow.is(':hidden')) { - $nextRow = $(nextRow).next('tr:first-of-type'); + $nextRow = $(nextRow) + .next('tr') + .eq(0); nextRow = $nextRow.get(0); } if (nextRow) { diff --git a/web/core/misc/tabledrag.js b/web/core/misc/tabledrag.js index 97ead1c69a..db92666093 100644 --- a/web/core/misc/tabledrag.js +++ b/web/core/misc/tabledrag.js @@ -285,10 +285,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol case 38: case 63232: { - var $previousRow = $(self.rowObject.element).prev('tr:first-of-type'); + var $previousRow = $(self.rowObject.element).prev('tr').eq(0); var previousRow = $previousRow.get(0); while (previousRow && $previousRow.is(':hidden')) { - $previousRow = $(previousRow).prev('tr:first-of-type'); + $previousRow = $(previousRow).prev('tr').eq(0); previousRow = $previousRow.get(0); } if (previousRow) { @@ -299,7 +299,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol if ($(item).is('.tabledrag-root')) { groupHeight = 0; while (previousRow && $previousRow.find('.js-indentation').length) { - $previousRow = $(previousRow).prev('tr:first-of-type'); + $previousRow = $(previousRow).prev('tr').eq(0); previousRow = $previousRow.get(0); groupHeight += $previousRow.is(':hidden') ? 0 : previousRow.offsetHeight; } @@ -329,10 +329,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol case 40: case 63233: { - var $nextRow = $(self.rowObject.group).eq(-1).next('tr:first-of-type'); + var $nextRow = $(self.rowObject.group).eq(-1).next('tr').eq(0); var nextRow = $nextRow.get(0); while (nextRow && $nextRow.is(':hidden')) { - $nextRow = $(nextRow).next('tr:first-of-type'); + $nextRow = $(nextRow).next('tr').eq(0); nextRow = $nextRow.get(0); } if (nextRow) { diff --git a/web/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php b/web/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php index 48732bc86d..72b81a7bf0 100644 --- a/web/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php +++ b/web/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php @@ -12,6 +12,7 @@ use Drupal\Core\Http\Exception\CacheableUnauthorizedHttpException; use Drupal\user\UserAuthInterface; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; /** * HTTP Basic authentication provider. @@ -155,7 +156,9 @@ public function challengeException(Request $request, \Exception $previous) { $cacheability = CacheableMetadata::createFromObject($site_config) ->addCacheTags(['config:user.role.anonymous']) ->addCacheContexts(['user.roles:anonymous']); - return new CacheableUnauthorizedHttpException($cacheability, (string) $challenge, 'No authentication credentials provided.', $previous); + return $request->isMethodCacheable() + ? new CacheableUnauthorizedHttpException($cacheability, (string) $challenge, 'No authentication credentials provided.', $previous) + : new UnauthorizedHttpException((string) $challenge, 'No authentication credentials provided.', $previous); } } diff --git a/web/core/modules/block/src/BlockAccessControlHandler.php b/web/core/modules/block/src/BlockAccessControlHandler.php index e0abc0df67..e4e515206e 100644 --- a/web/core/modules/block/src/BlockAccessControlHandler.php +++ b/web/core/modules/block/src/BlockAccessControlHandler.php @@ -136,7 +136,10 @@ protected function checkAccess(EntityInterface $entity, $operation, AccountInter } } else { - $access = AccessResult::forbidden(); + $reason = count($conditions) > 1 + ? "One of the block visibility conditions ('%s') denied access." + : "The block visibility condition '%s' denied access."; + $access = AccessResult::forbidden(sprintf($reason, implode("', '", array_keys($conditions)))); } $this->mergeCacheabilityFromConditions($access, $conditions); diff --git a/web/core/modules/block/tests/src/Functional/Rest/BlockResourceTestBase.php b/web/core/modules/block/tests/src/Functional/Rest/BlockResourceTestBase.php index 998690caa8..a6af25805e 100644 --- a/web/core/modules/block/tests/src/Functional/Rest/BlockResourceTestBase.php +++ b/web/core/modules/block/tests/src/Functional/Rest/BlockResourceTestBase.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\block\Functional\Rest; use Drupal\block\Entity\Block; +use Drupal\Core\Cache\CacheableMetadata; use Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase; abstract class BlockResourceTestBase extends EntityResourceTestBase { @@ -135,7 +136,7 @@ protected function getExpectedUnauthorizedAccessMessage($method) { switch ($method) { case 'GET': - return "You are not authorized to view this block entity."; + return "The block visibility condition 'user_role' denied access."; default: return parent::getExpectedUnauthorizedAccessMessage($method); } @@ -143,17 +144,25 @@ protected function getExpectedUnauthorizedAccessMessage($method) { /** * {@inheritdoc} + * + * @todo Fix this in https://www.drupal.org/node/2820315. */ protected function getExpectedUnauthorizedAccessCacheability() { + return (new CacheableMetadata()) + ->setCacheTags(['4xx-response', 'http_response']) + ->setCacheContexts(['user.roles']); + } + + /** + * {@inheritdoc} + */ + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\block\BlockAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() - ->setCacheTags([ - '4xx-response', + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) + ->addCacheTags([ 'config:block.block.llama', - 'http_response', - static::$auth ? 'user:2' : 'user:0', - ]) - ->setCacheContexts(['user.roles']); + $is_authenticated ? 'user:2' : 'user:0', + ]); } } diff --git a/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockContentTranslationTest.php b/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockContentTranslationTest.php index 0d082a8e06..374d06164f 100644 --- a/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockContentTranslationTest.php +++ b/web/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockContentTranslationTest.php @@ -21,6 +21,7 @@ class MigrateBlockContentTranslationTest extends MigrateDrupal7TestBase { 'book', 'block', 'comment', + 'filter', 'forum', 'views', 'block_content', diff --git a/web/core/modules/block_content/tests/src/Functional/Rest/BlockContentResourceTestBase.php b/web/core/modules/block_content/tests/src/Functional/Rest/BlockContentResourceTestBase.php index 4a3ac11f4c..52e4870fad 100644 --- a/web/core/modules/block_content/tests/src/Functional/Rest/BlockContentResourceTestBase.php +++ b/web/core/modules/block_content/tests/src/Functional/Rest/BlockContentResourceTestBase.php @@ -180,9 +180,9 @@ protected function getExpectedUnauthorizedAccessMessage($method) { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\block_content\BlockContentAccessControlHandler() - return parent::getExpectedUnauthorizedAccessCacheability() + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) ->addCacheTags(['block_content:1']); } diff --git a/web/core/modules/comment/tests/src/Functional/Rest/CommentResourceTestBase.php b/web/core/modules/comment/tests/src/Functional/Rest/CommentResourceTestBase.php index bd71e4fa32..74efb4fbac 100644 --- a/web/core/modules/comment/tests/src/Functional/Rest/CommentResourceTestBase.php +++ b/web/core/modules/comment/tests/src/Functional/Rest/CommentResourceTestBase.php @@ -337,8 +337,10 @@ protected function getExpectedUnauthorizedAccessMessage($method) { return "The 'post comments' permission is required."; case 'PATCH'; return "The 'edit own comments' permission is required, the user must be the comment author, and the comment must be published."; - default: - return parent::getExpectedUnauthorizedAccessMessage($method); + case 'DELETE': + // \Drupal\comment\CommentAccessControlHandler::checkAccess() does not + // specify a reason for not allowing a comment to be deleted. + return ''; } } @@ -378,9 +380,9 @@ public function testPostSkipCommentApproval() { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\comment\CommentAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) ->addCacheTags(['comment:1']); } diff --git a/web/core/modules/config/tests/config_test/tests/src/Functional/Rest/ConfigTestResourceTestBase.php b/web/core/modules/config/tests/config_test/tests/src/Functional/Rest/ConfigTestResourceTestBase.php index 9ab65d76ae..dbd71b7778 100644 --- a/web/core/modules/config/tests/config_test/tests/src/Functional/Rest/ConfigTestResourceTestBase.php +++ b/web/core/modules/config/tests/config_test/tests/src/Functional/Rest/ConfigTestResourceTestBase.php @@ -70,4 +70,20 @@ protected function getNormalizedPostEntity() { // @todo Update in https://www.drupal.org/node/2300677. } + /** + * {@inheritdoc} + */ + protected function getExpectedUnauthorizedAccessMessage($method) { + if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { + return parent::getExpectedUnauthorizedAccessMessage($method); + } + + switch ($method) { + case 'GET': + return "The 'view config_test' permission is required."; + default: + return parent::getExpectedUnauthorizedAccessMessage($method); + } + } + } diff --git a/web/core/modules/config_translation/migrations/d6_profile_field_option_translation.yml b/web/core/modules/config_translation/migrations/d6_profile_field_option_translation.yml new file mode 100644 index 0000000000..9207d0df89 --- /dev/null +++ b/web/core/modules/config_translation/migrations/d6_profile_field_option_translation.yml @@ -0,0 +1,52 @@ +id: d6_profile_field_option_translation +label: Profile field configuration +migration_tags: + - Drupal 6 + - Configuration + - Multilingual +source: + plugin: d6_profile_field_option_translation + skip_count: true + constants: + entity_type: user +process: + entity_type: 'constants/entity_type' + status: active + langcode: + plugin: skip_on_empty + source: language + method: row + field_name: objectid + # Use the process from user_profile_field to determine the field type. + type: + plugin: static_map + source: type + map: + selection: list_string + results: + plugin: d6_profile_field_option_translation + source: + - '@type' + - translation + translation: + - + plugin: extract + source: '@results' + index: [1] + - + plugin: skip_on_empty + method: row + property: + - + plugin: extract + source: '@results' + index: [0] + - + plugin: skip_on_empty + method: row +destination: + plugin: entity:field_storage_config + translations: true +migration_dependencies: + required: + - user_profile_field diff --git a/web/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php b/web/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php index c0e8447c74..5f395fc8fe 100644 --- a/web/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php +++ b/web/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php @@ -2,7 +2,7 @@ namespace Drupal\config_translation\Plugin\migrate\source\d6; -use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase; +use Drupal\user\Plugin\migrate\source\ProfileField; /** * Gets i18n strings profile field source from database. @@ -12,16 +12,16 @@ * source_module = "i18nprofile" * ) */ -class ProfileFieldTranslation extends DrupalSqlBase { +class ProfileFieldTranslation extends ProfileField { /** * {@inheritdoc} */ public function query() { - $query = $this->select('profile_fields', 'pf') - ->fields('pf', ['fid', 'name']) - ->fields('i18n', ['property']) - ->fields('lt', ['lid', 'translation', 'language']); + $query = parent::query(); + $query->fields('i18n', ['property']) + ->fields('lt', ['lid', 'translation', 'language']) + ->isNotNull('language'); $query->leftJoin('i18n_strings', 'i18n', 'i18n.objectid = pf.name'); $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid'); return $query; @@ -31,23 +31,22 @@ public function query() { * {@inheritdoc} */ public function fields() { - return [ - 'fid' => $this->t('Profile field ID.'), + $fields = [ 'lid' => $this->t('Locales target language ID.'), 'language' => $this->t('Language for this field.'), 'translation' => $this->t('Translation of either the title or explanation.'), ]; + return parent::fields() + $fields; } /** * {@inheritdoc} */ public function getIds() { - $ids['fid']['type'] = 'integer'; $ids['language']['type'] = 'string'; $ids['lid']['type'] = 'integer'; $ids['lid']['alias'] = 'lt'; - return $ids; + return parent::getIds() + $ids; } } diff --git a/web/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php b/web/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php index 7894cadf75..c291e135e9 100644 --- a/web/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php +++ b/web/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php @@ -123,7 +123,7 @@ public function validate($value, Constraint $constraint) { else { // If we're sure the transition exists, make sure the user has permission // to use it. - if (!$this->stateTransitionValidation->isTransitionValid($workflow, $original_state, $new_state, $this->currentUser)) { + if (!$this->stateTransitionValidation->isTransitionValid($workflow, $original_state, $new_state, $this->currentUser, $entity)) { $this->context->addViolation($constraint->invalidTransitionAccess, [ '%original_state' => $original_state->label(), '%new_state' => $new_state->label(), diff --git a/web/core/modules/content_moderation/src/StateTransitionValidation.php b/web/core/modules/content_moderation/src/StateTransitionValidation.php index 35d657e550..914410f798 100644 --- a/web/core/modules/content_moderation/src/StateTransitionValidation.php +++ b/web/core/modules/content_moderation/src/StateTransitionValidation.php @@ -52,7 +52,10 @@ public function getValidTransitions(ContentEntityInterface $entity, AccountInter /** * {@inheritdoc} */ - public function isTransitionValid(WorkflowInterface $workflow, StateInterface $original_state, StateInterface $new_state, AccountInterface $user) { + public function isTransitionValid(WorkflowInterface $workflow, StateInterface $original_state, StateInterface $new_state, AccountInterface $user, ContentEntityInterface $entity = NULL) { + if ($entity === NULL) { + @trigger_error(sprintf('Omitting the $entity parameter from %s is deprecated and will be required in Drupal 9.0.0.', __METHOD__), E_USER_DEPRECATED); + } $transition = $workflow->getTypePlugin()->getTransitionFromStateToState($original_state->id(), $new_state->id()); return $user->hasPermission('use ' . $workflow->id() . ' transition ' . $transition->id()); } diff --git a/web/core/modules/content_moderation/src/StateTransitionValidationInterface.php b/web/core/modules/content_moderation/src/StateTransitionValidationInterface.php index c793fe53e2..15d9e3078a 100644 --- a/web/core/modules/content_moderation/src/StateTransitionValidationInterface.php +++ b/web/core/modules/content_moderation/src/StateTransitionValidationInterface.php @@ -36,10 +36,13 @@ public function getValidTransitions(ContentEntityInterface $entity, AccountInter * The new workflow state. * @param \Drupal\Core\Session\AccountInterface $user * The user to validate. + * @param \Drupal\Core\Entity\ContentEntityInterface $entity + * (optional) The entity to be transitioned. Omitting this parameter is + * deprecated and will be required in Drupal 9.0.0. * * @return bool * Returns TRUE if transition is valid, otherwise FALSE. */ - public function isTransitionValid(WorkflowInterface $workflow, StateInterface $original_state, StateInterface $new_state, AccountInterface $user); + public function isTransitionValid(WorkflowInterface $workflow, StateInterface $original_state, StateInterface $new_state, AccountInterface $user, ContentEntityInterface $entity = NULL); } diff --git a/web/core/modules/content_moderation/tests/src/Unit/StateTransitionValidationTest.php b/web/core/modules/content_moderation/tests/src/Unit/StateTransitionValidationTest.php index b60e0454c0..541ff8f64d 100644 --- a/web/core/modules/content_moderation/tests/src/Unit/StateTransitionValidationTest.php +++ b/web/core/modules/content_moderation/tests/src/Unit/StateTransitionValidationTest.php @@ -10,6 +10,7 @@ use Drupal\Tests\UnitTestCase; use Drupal\workflow_type_test\Plugin\WorkflowType\TestType; use Drupal\workflows\Entity\Workflow; +use Drupal\workflows\State; use Drupal\workflows\WorkflowTypeManager; use Prophecy\Argument; @@ -19,6 +20,38 @@ */ class StateTransitionValidationTest extends UnitTestCase { + /** + * A test workflow. + * + * @var \Drupal\workflows\WorkflowInterface + */ + protected $workflow; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + // Create a container so that the plugin manager and workflow type can be + // mocked. + $container = new ContainerBuilder(); + $workflow_manager = $this->prophesize(WorkflowTypeManager::class); + $workflow_manager->createInstance('content_moderation', Argument::any())->willReturn(new TestType([], '', [])); + $container->set('plugin.manager.workflows.type', $workflow_manager->reveal()); + \Drupal::setContainer($container); + + $this->workflow = new Workflow(['id' => 'process', 'type' => 'content_moderation'], 'workflow'); + $this->workflow + ->getTypePlugin() + ->addState('draft', 'draft') + ->addState('needs_review', 'needs_review') + ->addState('published', 'published') + ->addTransition('draft', 'draft', ['draft'], 'draft') + ->addTransition('review', 'review', ['draft'], 'needs_review') + ->addTransition('publish', 'publish', ['needs_review', 'published'], 'published'); + } + /** * Verifies user-aware transition validation. * @@ -47,7 +80,10 @@ public function testUserSensitiveValidTransitions($from_id, $to_id, $permission, $entity->moderation_state = new \stdClass(); $entity->moderation_state->value = $from_id; - $validator = new StateTransitionValidation($this->setUpModerationInformation($entity)); + $moderation_info = $this->prophesize(ModerationInformationInterface::class); + $moderation_info->getWorkflowForEntity($entity)->willReturn($this->workflow); + + $validator = new StateTransitionValidation($moderation_info->reveal()); $has_transition = FALSE; foreach ($validator->getValidTransitions($entity, $user->reveal()) as $transition) { if ($transition->to()->id() === $to_id) { @@ -58,27 +94,17 @@ public function testUserSensitiveValidTransitions($from_id, $to_id, $permission, $this->assertSame($result, $has_transition); } - protected function setUpModerationInformation(ContentEntityInterface $entity) { - // Create a container so that the plugin manager and workflow type can be - // mocked. - $container = new ContainerBuilder(); - $workflow_manager = $this->prophesize(WorkflowTypeManager::class); - $workflow_manager->createInstance('content_moderation', Argument::any())->willReturn(new TestType([], '', [])); - $container->set('plugin.manager.workflows.type', $workflow_manager->reveal()); - \Drupal::setContainer($container); - - $workflow = new Workflow(['id' => 'process', 'type' => 'content_moderation'], 'workflow'); - $workflow - ->getTypePlugin() - ->addState('draft', 'draft') - ->addState('needs_review', 'needs_review') - ->addState('published', 'published') - ->addTransition('draft', 'draft', ['draft'], 'draft') - ->addTransition('review', 'review', ['draft'], 'needs_review') - ->addTransition('publish', 'publish', ['needs_review', 'published'], 'published'); + /** + * @expectedDeprecation Omitting the $entity parameter from Drupal\content_moderation\StateTransitionValidation::isTransitionValid is deprecated and will be required in Drupal 9.0.0. + * @group legacy + */ + public function testDeprecatedEntityParameter() { $moderation_info = $this->prophesize(ModerationInformationInterface::class); - $moderation_info->getWorkflowForEntity($entity)->willReturn($workflow); - return $moderation_info->reveal(); + $state = new State($this->workflow->getTypePlugin(), 'draft', 'draft'); + $user = $this->prophesize(AccountInterface::class); + + $validator = new StateTransitionValidation($moderation_info->reveal()); + $validator->isTransitionValid($this->workflow, $state, $state, $user->reveal()); } /** diff --git a/web/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php b/web/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php index 0d4630318e..904cd2919d 100644 --- a/web/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php +++ b/web/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php @@ -66,7 +66,7 @@ public function testWatchdog() { $request_options = $this->getAuthenticationRequestOptions('GET'); $response = $this->request('GET', $url, $request_options); - $this->assertResourceErrorResponse(403, "The 'restful get dblog' permission is required.", $response); + $this->assertResourceErrorResponse(403, "The 'restful get dblog' permission is required.", $response, ['4xx-response', 'http_response'], ['user.permissions'], FALSE, FALSE); // Create a user account that has the required permissions to read // the watchdog resource via the REST API. diff --git a/web/core/modules/file/tests/src/Functional/Rest/FileResourceTestBase.php b/web/core/modules/file/tests/src/Functional/Rest/FileResourceTestBase.php index 04b7c87ea3..d36f5b306a 100644 --- a/web/core/modules/file/tests/src/Functional/Rest/FileResourceTestBase.php +++ b/web/core/modules/file/tests/src/Functional/Rest/FileResourceTestBase.php @@ -218,6 +218,9 @@ public function testPost() { */ protected function getExpectedUnauthorizedAccessMessage($method) { if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { + if ($method === 'DELETE') { + return 'Only the file owner can update or delete the file entity.'; + } return parent::getExpectedUnauthorizedAccessMessage($method); } diff --git a/web/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateUploadTest.php b/web/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateUploadTest.php index b8075030bd..338d757c6e 100644 --- a/web/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateUploadTest.php +++ b/web/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateUploadTest.php @@ -16,7 +16,13 @@ class MigrateUploadTest extends MigrateDrupal6TestBase { /** * {@inheritdoc} */ - public static $modules = ['language', 'menu_ui']; + public static $modules = [ + 'language', + 'content_translation', + 'menu_ui', + // Required for translation migrations. + 'migrate_drupal_multilingual', + ]; /** * {@inheritdoc} diff --git a/web/core/modules/filter/tests/src/Kernel/FilterAPITest.php b/web/core/modules/filter/tests/src/Kernel/FilterAPITest.php index a26005db19..8ce4fa9108 100644 --- a/web/core/modules/filter/tests/src/Kernel/FilterAPITest.php +++ b/web/core/modules/filter/tests/src/Kernel/FilterAPITest.php @@ -509,4 +509,16 @@ public function testDependencyRemoval() { $this->assertFalse(isset($filters['filter_test_restrict_tags_and_attributes']), 'The filter plugin filter_test_restrict_tags_and_attributes is not configured by the filtered_html filter format.'); } + /** + * Tests that format entities are serialized without their plugin collection. + */ + public function testSleep() { + $filter_format = FilterFormat::load('filtered_html'); + + $this->assertNull($filter_format->get('filterCollection')); + $vars = $filter_format->__sleep(); + $this->assertContains('filters', $vars); + $this->assertNotContains('filterCollection', $vars); + } + } diff --git a/web/core/modules/hal/src/Normalizer/FieldItemNormalizer.php b/web/core/modules/hal/src/Normalizer/FieldItemNormalizer.php index f5b2ec07e8..5408cc436b 100644 --- a/web/core/modules/hal/src/Normalizer/FieldItemNormalizer.php +++ b/web/core/modules/hal/src/Normalizer/FieldItemNormalizer.php @@ -4,6 +4,7 @@ use Drupal\Core\Field\FieldItemInterface; use Drupal\Core\TypedData\TypedDataInternalPropertiesHelper; +use Drupal\serialization\Normalizer\SerializedColumnNormalizerTrait; use Symfony\Component\Serializer\Exception\InvalidArgumentException; /** @@ -11,6 +12,8 @@ */ class FieldItemNormalizer extends NormalizerBase { + use SerializedColumnNormalizerTrait; + /** * The interface or class that this Normalizer supports. * @@ -44,6 +47,7 @@ public function denormalize($data, $class, $format = NULL, array $context = []) } $field_item = $context['target_instance']; + $this->checkForSerializedStrings($data, $class, $field_item); // If this field is translatable, we need to create a translated instance. if (isset($data['lang'])) { @@ -71,6 +75,19 @@ public function denormalize($data, $class, $format = NULL, array $context = []) * The value to use in Entity::setValue(). */ protected function constructValue($data, $context) { + /** @var \Drupal\Core\Field\FieldItemInterface $field_item */ + $field_item = $context['target_instance']; + $serialized_property_names = $this->getCustomSerializedPropertyNames($field_item); + + // Explicitly serialize the input, unlike properties that rely on + // being automatically serialized, manually managed serialized properties + // expect to receive serialized input. + foreach ($serialized_property_names as $serialized_property_name) { + if (!empty($data[$serialized_property_name])) { + $data[$serialized_property_name] = serialize($data[$serialized_property_name]); + } + } + return $data; } diff --git a/web/core/modules/hal/tests/src/Kernel/DenormalizeTest.php b/web/core/modules/hal/tests/src/Kernel/DenormalizeTest.php index 87eb97329f..fde694fa69 100644 --- a/web/core/modules/hal/tests/src/Kernel/DenormalizeTest.php +++ b/web/core/modules/hal/tests/src/Kernel/DenormalizeTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\hal\Kernel; use Drupal\Core\Url; +use Drupal\entity_test\Entity\EntitySerializedField; use Drupal\field\Entity\FieldConfig; use Symfony\Component\Serializer\Exception\UnexpectedValueException; diff --git a/web/core/modules/image/src/Entity/ImageStyle.php b/web/core/modules/image/src/Entity/ImageStyle.php index 7992aea57a..94e3f3c12d 100644 --- a/web/core/modules/image/src/Entity/ImageStyle.php +++ b/web/core/modules/image/src/Entity/ImageStyle.php @@ -4,6 +4,7 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Config\Entity\ConfigEntityBase; +use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityWithPluginCollectionInterface; use Drupal\Core\Routing\RequestHelper; @@ -154,7 +155,7 @@ protected static function replaceImageStyle(ImageStyleInterface $style) { } } } - foreach (EntityViewDisplay::loadMultiple() as $display) { + foreach (EntityFormDisplay::loadMultiple() as $display) { foreach ($display->getComponents() as $name => $options) { if (isset($options['type']) && $options['type'] == 'image_image' && $options['settings']['preview_image_style'] == $style->getOriginalId()) { $options['settings']['preview_image_style'] = $style->id(); diff --git a/web/core/modules/image/tests/src/Kernel/ImageStyleIntegrationTest.php b/web/core/modules/image/tests/src/Kernel/ImageStyleIntegrationTest.php index e471c99164..9898ad309c 100644 --- a/web/core/modules/image/tests/src/Kernel/ImageStyleIntegrationTest.php +++ b/web/core/modules/image/tests/src/Kernel/ImageStyleIntegrationTest.php @@ -109,4 +109,70 @@ public function testEntityDisplayDependency() { $this->assertSame('', $widget['settings']['preview_image_style']); } + /** + * Tests renaming the ImageStyle. + */ + public function testEntityDisplayDependencyRename() { + // Create an image style. + /** @var \Drupal\image\ImageStyleInterface $style */ + $style = ImageStyle::create(['name' => 'main_style']); + $style->save(); + + // Create a node-type, named 'note'. + $node_type = NodeType::create(['type' => 'note']); + $node_type->save(); + + // Create an image field and attach it to the 'note' node-type. + FieldStorageConfig::create([ + 'entity_type' => 'node', + 'field_name' => 'sticker', + 'type' => 'image', + ])->save(); + FieldConfig::create([ + 'entity_type' => 'node', + 'field_name' => 'sticker', + 'bundle' => 'note', + ])->save(); + + // Create the default entity view display and set the 'sticker' field to use + // the 'main_style' images style in formatter. + /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $view_display */ + $view_display = EntityViewDisplay::create([ + 'targetEntityType' => 'node', + 'bundle' => 'note', + 'mode' => 'default', + 'status' => TRUE, + ])->setComponent('sticker', ['settings' => ['image_style' => 'main_style']]); + $view_display->save(); + + // Create the default entity form display and set the 'sticker' field to use + // the 'main_style' images style in the widget. + /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */ + $form_display = EntityFormDisplay::create([ + 'targetEntityType' => 'node', + 'bundle' => 'note', + 'mode' => 'default', + 'status' => TRUE, + ])->setComponent('sticker', ['settings' => ['preview_image_style' => 'main_style']]); + $form_display->save(); + + // Check that the entity displays exists before dependency renaming. + $this->assertNotNull(EntityViewDisplay::load($view_display->id())); + $this->assertNotNull(EntityFormDisplay::load($form_display->id())); + + // Rename the 'main_style' image style. + $style->setName('main_style_renamed'); + $style->save(); + + // Check that the entity displays exists after dependency renaming. + $this->assertNotNull($view_display = EntityViewDisplay::load($view_display->id())); + $this->assertNotNull($form_display = EntityFormDisplay::load($form_display->id())); + // Check that the 'sticker' formatter component exists in both displays. + $this->assertNotNull($formatter = $view_display->getComponent('sticker')); + $this->assertNotNull($widget = $form_display->getComponent('sticker')); + // Check that both displays are using now 'main_style_renamed' for images. + $this->assertSame('main_style_renamed', $formatter['settings']['image_style']); + $this->assertSame('main_style_renamed', $widget['settings']['preview_image_style']); + } + } diff --git a/web/core/modules/language/language.module b/web/core/modules/language/language.module index e4c132040a..8ea04a12e8 100644 --- a/web/core/modules/language/language.module +++ b/web/core/modules/language/language.module @@ -381,7 +381,7 @@ function language_form_alter(&$form, FormStateInterface $form_state) { $entity = $form_object->getEntity(); $entity_type = $entity->getEntityType(); $langcode_key = $entity_type->getKey('langcode'); - if (isset($form[$langcode_key])) { + if (isset($form[$langcode_key]) && $form[$langcode_key]['#access'] !== FALSE) { $language_configuration = ContentLanguageSettings::loadByEntityTypeBundle($entity->getEntityTypeId(), $entity->bundle()); $form[$langcode_key]['#access'] = $language_configuration->isLanguageAlterable(); } diff --git a/web/core/modules/language/tests/language_entity_field_access_test/config/install/language.content_settings.node.page.yml b/web/core/modules/language/tests/language_entity_field_access_test/config/install/language.content_settings.node.page.yml new file mode 100644 index 0000000000..ab09b7c3c4 --- /dev/null +++ b/web/core/modules/language/tests/language_entity_field_access_test/config/install/language.content_settings.node.page.yml @@ -0,0 +1,10 @@ +langcode: en +status: true +dependencies: + config: + - node.type.page +id: node.page +target_entity_type_id: node +target_bundle: page +default_langcode: site_default +language_alterable: true diff --git a/web/core/modules/language/tests/language_entity_field_access_test/config/install/node.type.page.yml b/web/core/modules/language/tests/language_entity_field_access_test/config/install/node.type.page.yml new file mode 100644 index 0000000000..6ebd149e49 --- /dev/null +++ b/web/core/modules/language/tests/language_entity_field_access_test/config/install/node.type.page.yml @@ -0,0 +1,10 @@ +langcode: en +status: true +dependencies: { } +name: page +type: page +description: '' +help: '' +new_revision: false +preview_mode: 1 +display_submitted: false diff --git a/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.info.yml b/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.info.yml new file mode 100644 index 0000000000..295a65b4fb --- /dev/null +++ b/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.info.yml @@ -0,0 +1,12 @@ +name: 'Language entity field access test' +type: module +description: 'Support module for verifying entity field access and the language selector.' +core: 8.x +package: Testing +version: VERSION +dependencies: + - drupal:node + - drupal:text + - drupal:field + - drupal:filter + - drupal:language diff --git a/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.module b/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.module new file mode 100644 index 0000000000..5d08a6c991 --- /dev/null +++ b/web/core/modules/language/tests/language_entity_field_access_test/language_entity_field_access_test.module @@ -0,0 +1,18 @@ +<?php + +/** + * @file + * Hook implementations for language_entity_field_access_test. + */ + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Field\FieldDefinitionInterface; +use Drupal\Core\Field\FieldItemListInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Implements hook_entity_field_access(). + */ +function language_entity_field_access_test_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) { + return AccessResult::forbidden(); +} diff --git a/web/core/modules/language/tests/src/Functional/Hal/ConfigurableLanguageHalJsonBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Hal/ConfigurableLanguageHalJsonBasicAuthTest.php index 3239b7e22c..4647acb82a 100644 --- a/web/core/modules/language/tests/src/Functional/Hal/ConfigurableLanguageHalJsonBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Hal/ConfigurableLanguageHalJsonBasicAuthTest.php @@ -3,14 +3,14 @@ namespace Drupal\Tests\language\Functional\Hal; use Drupal\Tests\language\Functional\Rest\ConfigurableLanguageResourceTestBase; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; /** * @group hal */ class ConfigurableLanguageHalJsonBasicAuthTest extends ConfigurableLanguageResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; /** * {@inheritdoc} diff --git a/web/core/modules/language/tests/src/Functional/Hal/ContentLanguageSettingsHalJsonBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Hal/ContentLanguageSettingsHalJsonBasicAuthTest.php index 61306eaf5e..fefd0db73a 100644 --- a/web/core/modules/language/tests/src/Functional/Hal/ContentLanguageSettingsHalJsonBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Hal/ContentLanguageSettingsHalJsonBasicAuthTest.php @@ -3,14 +3,14 @@ namespace Drupal\Tests\language\Functional\Hal; use Drupal\Tests\language\Functional\Rest\ContentLanguageSettingsResourceTestBase; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; /** * @group hal */ class ContentLanguageSettingsHalJsonBasicAuthTest extends ContentLanguageSettingsResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; /** * {@inheritdoc} diff --git a/web/core/modules/language/tests/src/Functional/LanguageEntityFieldAccessHookTest.php b/web/core/modules/language/tests/src/Functional/LanguageEntityFieldAccessHookTest.php new file mode 100644 index 0000000000..19b3217759 --- /dev/null +++ b/web/core/modules/language/tests/src/Functional/LanguageEntityFieldAccessHookTest.php @@ -0,0 +1,43 @@ +<?php + +namespace Drupal\Tests\language\Functional; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests language picker compatibility with hook_entity_field_access. + * + * @group language + */ +class LanguageEntityFieldAccessHookTest extends BrowserTestBase { + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = [ + 'node', + 'text', + 'field', + 'filter', + 'language', + 'language_entity_field_access_test', + ]; + + /** + * Tests compatibility with hook_entity_field_access(). + */ + public function testHookEntityFieldAccess() { + // Create an admin user and do the login. + $user = $this->drupalCreateUser([], NULL, TRUE); + $this->drupalLogin($user); + + // Assess the field is not visible. + $this->drupalGet('node/add/page'); + $this->assertSession()->fieldNotExists('langcode[0][value]'); + + $this->drupalLogout(); + } + +} diff --git a/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageJsonBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageJsonBasicAuthTest.php index 847e781640..5352c9a951 100644 --- a/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageJsonBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageJsonBasicAuthTest.php @@ -2,14 +2,14 @@ namespace Drupal\Tests\language\Functional\Rest; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; /** * @group rest */ class ConfigurableLanguageJsonBasicAuthTest extends ConfigurableLanguageResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; /** * {@inheritdoc} diff --git a/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageXmlBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageXmlBasicAuthTest.php index 7a79c4d433..afc017f7a0 100644 --- a/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageXmlBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Rest/ConfigurableLanguageXmlBasicAuthTest.php @@ -2,7 +2,7 @@ namespace Drupal\Tests\language\Functional\Rest; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; use Drupal\Tests\rest\Functional\EntityResource\XmlEntityNormalizationQuirksTrait; /** @@ -10,7 +10,7 @@ */ class ConfigurableLanguageXmlBasicAuthTest extends ConfigurableLanguageResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; use XmlEntityNormalizationQuirksTrait; /** diff --git a/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsJsonBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsJsonBasicAuthTest.php index 14437a9092..f1063a3dc1 100644 --- a/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsJsonBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsJsonBasicAuthTest.php @@ -2,14 +2,14 @@ namespace Drupal\Tests\language\Functional\Rest; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; /** * @group rest */ class ContentLanguageSettingsJsonBasicAuthTest extends ContentLanguageSettingsResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; /** * {@inheritdoc} diff --git a/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsXmlBasicAuthTest.php b/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsXmlBasicAuthTest.php index 741e75bcd3..dee7ad27d4 100644 --- a/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsXmlBasicAuthTest.php +++ b/web/core/modules/language/tests/src/Functional/Rest/ContentLanguageSettingsXmlBasicAuthTest.php @@ -2,7 +2,7 @@ namespace Drupal\Tests\language\Functional\Rest; -use Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait; +use Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait; use Drupal\Tests\rest\Functional\EntityResource\XmlEntityNormalizationQuirksTrait; /** @@ -10,7 +10,7 @@ */ class ContentLanguageSettingsXmlBasicAuthTest extends ContentLanguageSettingsResourceTestBase { - use BasicAuthResourceWithInterfaceTranslationTestTrait; + use BasicAuthResourceTestTrait; use XmlEntityNormalizationQuirksTrait; /** diff --git a/web/core/modules/language/tests/src/Kernel/OverriddenConfigImportTest.php b/web/core/modules/language/tests/src/Kernel/OverriddenConfigImportTest.php new file mode 100644 index 0000000000..954245856f --- /dev/null +++ b/web/core/modules/language/tests/src/Kernel/OverriddenConfigImportTest.php @@ -0,0 +1,99 @@ +<?php + +namespace Drupal\Tests\language\Kernel; + +use Drupal\Core\Config\ConfigImporter; +use Drupal\Core\Config\StorageComparer; +use Drupal\KernelTests\KernelTestBase; + +/** + * Tests importing of config with language overrides. + * + * @group language + */ +class OverriddenConfigImportTest extends KernelTestBase { + + /** + * Config Importer object used for testing. + * + * @var \Drupal\Core\Config\ConfigImporter + */ + protected $configImporter; + + /** + * {@inheritdoc} + */ + protected static $modules = ['system', 'language']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->installConfig(['system']); + $this->copyConfig($this->container->get('config.storage'), $this->container->get('config.storage.sync')); + + // Set up the ConfigImporter object for testing. + $storage_comparer = new StorageComparer( + $this->container->get('config.storage.sync'), + $this->container->get('config.storage'), + $this->container->get('config.manager') + ); + $this->configImporter = new ConfigImporter( + $storage_comparer->createChangelist(), + $this->container->get('event_dispatcher'), + $this->container->get('config.manager'), + $this->container->get('lock'), + $this->container->get('config.typed'), + $this->container->get('module_handler'), + $this->container->get('module_installer'), + $this->container->get('theme_handler'), + $this->container->get('string_translation') + ); + } + + /** + * Tests importing overridden config alongside config in the default language. + */ + public function testConfigImportUpdates() { + $storage = $this->container->get('config.storage'); + $sync = $this->container->get('config.storage.sync'); + /** @var \Drupal\language\ConfigurableLanguageManagerInterface $language_manager */ + $language_manager = $this->container->get('language_manager'); + + // Make a change to the site configuration in the default collection. + $data = $storage->read('system.site'); + $data['name'] = 'English site name'; + $sync->write('system.site', $data); + + // Also make a change to the same config object, but using a language + // override. + /* @var \Drupal\Core\Config\StorageInterface $overridden_sync */ + $overridden_sync = $sync->createCollection('language.fr'); + $overridden_sync->write('system.site', ['name' => 'French site name']); + + // Before we start the import, the change to the site name should not be + // present. This action also primes the cache in the config factory so that + // we can test whether the cached data is correctly updated. + $config = $this->config('system.site'); + $this->assertNotEquals('English site name', $config->getRawData()['name']); + + // Before the import is started the site name should not yet be overridden. + $this->assertFalse($config->hasOverrides()); + $override = $language_manager->getLanguageConfigOverride('fr', 'system.site'); + $this->assertTrue($override->isNew()); + + // Start the import of the new configuration. + $this->configImporter->reset()->import(); + + // Verify the new site name in the default language. + $config = $this->config('system.site')->getRawData(); + $this->assertEquals('English site name', $config['name']); + + // Verify the overridden site name. + $override = $language_manager->getLanguageConfigOverride('fr', 'system.site'); + $this->assertEquals('French site name', $override->get('name')); + } + +} diff --git a/web/core/modules/layout_builder/layout_builder.module b/web/core/modules/layout_builder/layout_builder.module index 373f7d8a0f..aeb963598c 100644 --- a/web/core/modules/layout_builder/layout_builder.module +++ b/web/core/modules/layout_builder/layout_builder.module @@ -7,6 +7,7 @@ use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Render\Element; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Url; use Drupal\field\FieldConfigInterface; @@ -14,7 +15,6 @@ use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplayStorage; use Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm; use Drupal\Core\Entity\Display\EntityViewDisplayInterface; -use Drupal\layout_builder\Entity\LayoutEntityDisplayInterface; use Drupal\layout_builder\Plugin\Block\ExtraFieldBlock; use Drupal\layout_builder\InlineBlockEntityOperations; use Drupal\Core\Session\AccountInterface; @@ -106,7 +106,9 @@ function layout_builder_field_config_delete(FieldConfigInterface $field_config) * @see layout_builder_module_implements_alter() */ function layout_builder_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) { - if ($display instanceof LayoutEntityDisplayInterface) { + // Only replace extra fields when Layout Builder has been used to alter the + // build. See \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::buildMultiple(). + if (isset($build['_layout_builder']) && !Element::isEmpty($build['_layout_builder'])) { /** @var \Drupal\Core\Entity\EntityFieldManagerInterface $field_manager */ $field_manager = \Drupal::service('entity_field.manager'); $extra_fields = $field_manager->getExtraFields($entity->getEntityTypeId(), $entity->bundle()); diff --git a/web/core/modules/layout_builder/tests/modules/no_transitions_css/css/css_fix.theme.css b/web/core/modules/layout_builder/tests/modules/no_transitions_css/css/css_fix.theme.css deleted file mode 100644 index ffe0614396..0000000000 --- a/web/core/modules/layout_builder/tests/modules/no_transitions_css/css/css_fix.theme.css +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Remove all transitions for testing. - */ -* { - /* CSS transitions. */ - -o-transition-property: none !important; - -moz-transition-property: none !important; - -ms-transition-property: none !important; - -webkit-transition-property: none !important; - transition-property: none !important; - /* CSS transforms. */ - -o-transform: none !important; - -moz-transform: none !important; - -ms-transform: none !important; - -webkit-transform: none !important; - transform: none !important; - /* CSS animations. */ - -webkit-animation: none !important; - -moz-animation: none !important; - -o-animation: none !important; - -ms-animation: none !important; - animation: none !important; -} diff --git a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.info.yml b/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.info.yml deleted file mode 100644 index 80082db42e..0000000000 --- a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.info.yml +++ /dev/null @@ -1,6 +0,0 @@ -name: 'CSS Test fix' -type: module -description: 'Provides CSS fixes for tests.' -package: Testing -version: VERSION -core: 8.x diff --git a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.libraries.yml b/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.libraries.yml deleted file mode 100644 index 0fdaffd849..0000000000 --- a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.libraries.yml +++ /dev/null @@ -1,5 +0,0 @@ -drupal.css_fix: - version: VERSION - css: - theme: - css/css_fix.theme.css: {} diff --git a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.module b/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.module deleted file mode 100644 index 3375399395..0000000000 --- a/web/core/modules/layout_builder/tests/modules/no_transitions_css/no_transitions_css.module +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -/** - * @file - * Module for attaching CSS during tests. - * - * CSS pointer-events properties cause testing errors. - */ - -/** - * Implements hook_page_attachments(). - */ -function settings_tray_test_css_page_attachments(array &$attachments) { - // Unconditionally attach an asset to the page. - $attachments['#attached']['library'][] = 'settings_tray_test_css/drupal.css_fix'; -} diff --git a/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php index be04c32ab3..eb7f5a28b8 100644 --- a/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php +++ b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php @@ -482,6 +482,23 @@ public function testLayoutBuilderChooseBlocksAlter() { $assert_session->linkExists('Changed'); } + /** + * Tests that extra fields work before and after enabling Layout Builder. + */ + public function testExtraFields() { + $assert_session = $this->assertSession(); + + $this->drupalLogin($this->drupalCreateUser(['administer node display'])); + + $this->drupalGet('node'); + $assert_session->linkExists('Read more'); + + $this->drupalPostForm('admin/structure/types/manage/bundle_with_section_field/display/default', ['layout[enabled]' => TRUE], 'Save'); + + $this->drupalGet('node'); + $assert_session->linkExists('Read more'); + } + /** * Tests that deleting a View block used in Layout Builder works. */ diff --git a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php index bd4d1843c7..b838c623e6 100644 --- a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php +++ b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/FieldBlockTest.php @@ -91,7 +91,7 @@ public function testFieldBlock() { $assert_session->fieldNotExists('settings[formatter][settings][format_type]'); $assert_session->fieldExists('settings[formatter][settings][granularity]'); $page->pressButton('Save block'); - $assert_session->pageTextContains('The block configuration has been saved.'); + $this->assertTrue($assert_session->waitForText('The block configuration has been saved.')); // Configure the block and change the formatter again. $this->clickLink('Configure'); @@ -101,7 +101,7 @@ public function testFieldBlock() { $page->selectFieldOption('settings[formatter][settings][format_type]', 'long'); $page->pressButton('Save block'); - $assert_session->pageTextContains('The block configuration has been saved.'); + $this->assertTrue($assert_session->waitForText('The block configuration has been saved.')); // Assert that the field value is updated. $this->clickLink('Configure'); diff --git a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php index 2b781766a0..441ec96e52 100644 --- a/web/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php +++ b/web/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTestBase.php @@ -32,8 +32,6 @@ abstract class InlineBlockTestBase extends WebDriverTestBase { 'block', 'node', 'contextual', - // @todo Remove after https://www.drupal.org/project/drupal/issues/2901792. - 'no_transitions_css', ]; /** diff --git a/web/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php b/web/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php index 8fa765e0b6..431512c290 100644 --- a/web/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php +++ b/web/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php @@ -191,7 +191,12 @@ public function setValue($values, $notify = TRUE) { // SqlContentEntityStorage::loadFieldItems, see // https://www.drupal.org/node/2414835 if (is_string($values['options'])) { - $values['options'] = unserialize($values['options']); + if (version_compare(PHP_VERSION, '7.0.0', '>=')) { + $values['options'] = unserialize($values['options'], ['allowed_classes' => FALSE]); + } + else { + $values['options'] = unserialize($values['options']); + } } parent::setValue($values, $notify); } diff --git a/web/core/modules/media/tests/src/Functional/Rest/MediaResourceTestBase.php b/web/core/modules/media/tests/src/Functional/Rest/MediaResourceTestBase.php index de352e001a..e1bb704b86 100644 --- a/web/core/modules/media/tests/src/Functional/Rest/MediaResourceTestBase.php +++ b/web/core/modules/media/tests/src/Functional/Rest/MediaResourceTestBase.php @@ -345,7 +345,7 @@ protected function uploadFile() { // To still run the complete test coverage for POSTing a Media entity, we // must revoke the additional permissions that we granted. - $role = Role::load(static::$auth ? RoleInterface::AUTHENTICATED_ID : RoleInterface::AUTHENTICATED_ID); + $role = Role::load(static::$auth ? RoleInterface::AUTHENTICATED_ID : RoleInterface::ANONYMOUS_ID); $role->revokePermission('create camelids media'); $role->trustData()->save(); } @@ -422,9 +422,9 @@ protected function getExpectedNormalizedFileEntity() { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\media\MediaAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) ->addCacheTags(['media:1']); } diff --git a/web/core/modules/media_library/css/media_library.theme.css b/web/core/modules/media_library/css/media_library.theme.css index 4f04445dd5..c85de29db2 100644 --- a/web/core/modules/media_library/css/media_library.theme.css +++ b/web/core/modules/media_library/css/media_library.theme.css @@ -165,14 +165,14 @@ margin: 0.75em; } -.media-library-item__remove, -.media-library-item__remove:hover, -.media-library-item__remove:focus, -.media-library-item__remove.button, -.media-library-item__remove.button:disabled, -.media-library-item__remove.button:disabled:active, -.media-library-item__remove.button:hover, -.media-library-item__remove.button:focus { +.media-library-item .media-library-item__remove, +.media-library-item .media-library-item__remove:hover, +.media-library-item .media-library-item__remove:focus, +.media-library-item .media-library-item__remove.button, +.media-library-item .media-library-item__remove.button:disabled, +.media-library-item .media-library-item__remove.button:disabled:active, +.media-library-item .media-library-item__remove.button:hover, +.media-library-item .media-library-item__remove.button:focus { position: absolute; z-index: 1; top: 0; @@ -190,11 +190,11 @@ transition: 0.2s border-color; } -.media-library-item__remove:hover, -.media-library-item__remove:focus, -.media-library-item__remove.button:hover, -.media-library-item__remove.button:focus, -.media-library-item__remove.button:disabled:active { +.media-library-item .media-library-item__remove:hover, +.media-library-item .media-library-item__remove:focus, +.media-library-item .media-library-item__remove.button:hover, +.media-library-item .media-library-item__remove.button:focus, +.media-library-item .media-library-item__remove.button:disabled:active { border-color: #40b6ff; } diff --git a/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php b/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php index 22ac3ecb7a..1ec04ad70d 100644 --- a/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php +++ b/web/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php @@ -139,16 +139,6 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen ], ]; - $element['selection'] = [ - '#type' => 'container', - '#attributes' => [ - 'class' => [ - 'js-media-library-selection', - 'media-library-selection', - ], - ], - ]; - if (empty($referenced_entities)) { $element['empty_selection'] = [ '#markup' => $this->t('<p>No media items are selected.</p>'), @@ -170,6 +160,16 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen ]; } + $element['selection'] = [ + '#type' => 'container', + '#attributes' => [ + 'class' => [ + 'js-media-library-selection', + 'media-library-selection', + ], + ], + ]; + foreach ($referenced_entities as $delta => $media_item) { $element['selection'][$delta] = [ '#type' => 'container', @@ -181,14 +181,13 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen ], 'preview' => [ '#type' => 'container', - // @todo Make the view mode configurable in https://www.drupal.org/project/drupal/issues/2971209 - 'rendered_entity' => $view_builder->view($media_item, 'media_library'), 'remove_button' => [ '#type' => 'submit', '#name' => $field_name . '-' . $delta . '-media-library-remove-button' . $id_suffix, '#value' => $this->t('Remove'), '#attributes' => [ 'class' => ['media-library-item__remove'], + 'aria-label' => $this->t('Remove @label', ['@label' => $media_item->label()]), ], '#ajax' => [ 'callback' => [static::class, 'updateWidget'], @@ -198,6 +197,8 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen // Prevent errors in other widgets from preventing removal. '#limit_validation_errors' => $limit_validation_errors, ], + // @todo Make the view mode configurable in https://www.drupal.org/project/drupal/issues/2971209 + 'rendered_entity' => $view_builder->view($media_item, 'media_library'), ], 'target_id' => [ '#type' => 'hidden', diff --git a/web/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php b/web/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php index da4ebeb16a..d6a90314df 100644 --- a/web/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php +++ b/web/core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php @@ -186,6 +186,7 @@ public function testWidget() { $assert_session->pageTextContains('Cat'); $assert_session->pageTextContains('Bear'); // Remove "Dog" (happens to be the first remove button on the page). + $assert_session->elementAttributeContains('css', '.media-library-item__remove', 'aria-label', 'Remove Dog'); $assert_session->elementExists('css', '.media-library-item__remove')->click(); $assert_session->assertWaitOnAjaxRequest(); $assert_session->pageTextNotContains('Dog'); diff --git a/web/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php b/web/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php index eadf04532c..b663f27071 100644 --- a/web/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php +++ b/web/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php @@ -72,7 +72,8 @@ protected function checkAccess(EntityInterface $entity, $operation, AccountInter } case 'delete': - return AccessResult::allowedIf(!$entity->isNew() && $account->hasPermission('administer menu'))->cachePerPermissions()->addCacheableDependency($entity); + return AccessResult::allowedIfHasPermission($account, 'administer menu') + ->andIf(AccessResult::allowedIf(!$entity->isNew())->addCacheableDependency($entity)); } } diff --git a/web/core/modules/menu_link_content/tests/src/Functional/Rest/MenuLinkContentResourceTestBase.php b/web/core/modules/menu_link_content/tests/src/Functional/Rest/MenuLinkContentResourceTestBase.php index 9b03899e45..6c076e4ce6 100644 --- a/web/core/modules/menu_link_content/tests/src/Functional/Rest/MenuLinkContentResourceTestBase.php +++ b/web/core/modules/menu_link_content/tests/src/Functional/Rest/MenuLinkContentResourceTestBase.php @@ -204,7 +204,7 @@ protected function getExpectedUnauthorizedAccessMessage($method) { switch ($method) { case 'DELETE': - return "You are not authorized to delete this menu_link_content entity."; + return "The 'administer menu' permission is required."; default: return parent::getExpectedUnauthorizedAccessMessage($method); } diff --git a/web/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/web/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php index 8267bac783..522b21f690 100644 --- a/web/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php +++ b/web/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php @@ -17,6 +17,7 @@ * * Available configuration keys: * - cache_counts: (optional) If set, cache the source count. + * - cache_key: (optional) Uniquely named cache key used for cache_counts. * - skip_count: (optional) If set, do not attempt to count the source. * - track_changes: (optional) If set, track changes to incoming data. * - high_water_property: (optional) It is an array of name & alias values diff --git a/web/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php b/web/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php index c4bd6cd5e0..7979fb96bb 100644 --- a/web/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php +++ b/web/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php @@ -175,13 +175,14 @@ public function testSource(array $source_data, array $expected_data, $expected_c foreach ($expected as $key => $value) { $this->assertArrayHasKey($key, $actual); + $msg = sprintf("Value at 'array[%s][%s]' is not correct.", $i - 1, $key); if (is_array($value)) { ksort($value); ksort($actual[$key]); - $this->assertEquals($value, $actual[$key]); + $this->assertEquals($value, $actual[$key], $msg); } else { - $this->assertSame((string) $value, (string) $actual[$key]); + $this->assertEquals((string) $value, (string) $actual[$key], $msg); } } } diff --git a/web/core/modules/migrate/tests/src/Kernel/MigrateTestBase.php b/web/core/modules/migrate/tests/src/Kernel/MigrateTestBase.php index 51e61d40ca..117b3e188b 100644 --- a/web/core/modules/migrate/tests/src/Kernel/MigrateTestBase.php +++ b/web/core/modules/migrate/tests/src/Kernel/MigrateTestBase.php @@ -180,6 +180,7 @@ protected function executeMigrations(array $ids) { array_walk($ids, function ($id) use ($manager) { // This is possibly a base plugin ID and we want to run all derivatives. $instances = $manager->createInstances($id); + $this->assertNotEmpty($instances, sprintf("No migrations created for id '%s'.", $id)); array_walk($instances, [$this, 'executeMigration']); }); } diff --git a/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php index 6c00957399..cf891c4167 100644 --- a/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php +++ b/web/core/modules/migrate_drupal/tests/fixtures/drupal6.php @@ -10062,6 +10062,22 @@ 'objectindex' => '14', 'format' => '0', )) +->values(array( + 'lid' => '1695', + 'objectid' => 'profile_count_trees', + 'type' => 'field', + 'property' => 'title', + 'objectindex' => '0', + 'format' => '0', +)) +->values(array( + 'lid' => '1696', + 'objectid' => 'profile_count_trees', + 'type' => 'field', + 'property' => 'options', + 'objectindex' => '0', + 'format' => '0', +)) ->execute(); $connection->schema()->createTable('i18n_variable', array( 'fields' => array( @@ -22649,6 +22665,20 @@ 'source' => 'The home of Captain Christopher Pike.', 'version' => '1', )) +->values(array( + 'lid' => '1695', + 'location' => 'field:profile_:title', + 'textgroup' => 'profile', + 'source' => 'Number of trees', + 'version' => '1', +)) +->values(array( + 'lid' => '1696', + 'location' => 'field:profile_:options', + 'textgroup' => 'profile', + 'source' => "10\r\n20\r\n50\r\n100\r\n1000", + 'version' => '1', +)) ->execute(); $connection->schema()->createTable('locales_target', array( 'fields' => array( @@ -27708,14 +27738,6 @@ 'plural' => '0', 'i18n_status' => '0', )) -->values(array( - 'lid' => '1672', - 'translation' => 'fr - Type', - 'language' => 'fr', - 'plid' => '0', - 'plural' => '0', - 'i18n_status' => '0', -)) ->values(array( 'lid' => '1678', 'translation' => 'fr - I really, really, really love migrating ', @@ -27724,30 +27746,6 @@ 'plural' => '0', 'i18n_status' => '0', )) -->values(array( - 'lid' => '1690', - 'translation' => 'Noir', - 'language' => 'fr', - 'plid' => '0', - 'plural' => '0', - 'i18n_status' => '0', -)) -->values(array( - 'lid' => '1692', - 'translation' => 'fr - Talos IV', - 'language' => 'fr', - 'plid' => '0', - 'plural' => '0', - 'i18n_status' => '0', -)) -->values(array( - 'lid' => '1694', - 'translation' => 'fr - The home of Captain Christopher Pike.', - 'language' => 'fr', - 'plid' => '0', - 'plural' => '0', - 'i18n_status' => '0', -)) ->values(array( 'lid' => '66', 'translation' => 'zu - CCK - Aucune Intégration aux Vues', @@ -27876,6 +27874,14 @@ 'plural' => '0', 'i18n_status' => '0', )) +->values(array( + 'lid' => '1690', + 'translation' => 'Noir', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) ->values(array( 'lid' => '1691', 'translation' => 'Mhlophe', @@ -27884,6 +27890,22 @@ 'plural' => '0', 'i18n_status' => '0', )) +->values(array( + 'lid' => '1672', + 'translation' => 'fr - Type', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) +->values(array( + 'lid' => '1692', + 'translation' => 'fr - Talos IV', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) ->values(array( 'lid' => '1693', 'translation' => 'zu - Vulcan', @@ -27900,6 +27922,22 @@ 'plural' => '0', 'i18n_status' => '0', )) +->values(array( + 'lid' => '1694', + 'translation' => 'fr - The home of Captain Christopher Pike.', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) +->values(array( + 'lid' => '1696', + 'translation' => "fr - 10\r\nfr - 20\r\nfr - 50\r\nfr - 100\r\nfr - 1000", + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) ->execute(); $connection->schema()->createTable('menu_custom', array( 'fields' => array( @@ -45450,6 +45488,21 @@ 'autocomplete' => '0', 'options' => '', )) +->values(array( + 'fid' => '17', + 'title' => 'Number of trees', + 'name' => 'profile_count_trees', + 'explanation' => '', + 'category' => 'Personal information', + 'page' => '', + 'type' => 'selection', + 'weight' => '0', + 'required' => '0', + 'register' => '0', + 'visibility' => '2', + 'autocomplete' => '0', + 'options' => "10\r\n20\r\n50\r\n100\r\n1000", +)) ->execute(); $connection->schema()->createTable('profile_values', array( 'fields' => array( diff --git a/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php index 3a9467e037..0b2735c8ea 100644 --- a/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php +++ b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php @@ -93,7 +93,7 @@ protected function migrateFields() { * Extra things to include as part of the migrations. Values may be * 'revisions' or 'translations'. */ - protected function migrateContent($include = []) { + protected function migrateContent(array $include = []) { if (in_array('translations', $include)) { $this->executeMigrations(['language']); } @@ -104,7 +104,7 @@ protected function migrateContent($include = []) { $this->executeMigrations(['d6_node_settings', 'd6_node']); if (in_array('translations', $include)) { - $this->executeMigrations(['translations']); + $this->executeMigrations(['d6_node_translation']); } if (in_array('revisions', $include)) { $this->executeMigrations(['d6_node_revision']); diff --git a/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrationProcessTest.php b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrationProcessTest.php new file mode 100644 index 0000000000..4292769826 --- /dev/null +++ b/web/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrationProcessTest.php @@ -0,0 +1,43 @@ +<?php + +namespace Drupal\Tests\migrate_drupal\Kernel\d6; + +use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait; + +/** + * Tests the getProcess() method of all Drupal 6 migrations. + * + * @group migrate_drupal + */ +class MigrationProcessTest extends MigrateDrupal6TestBase { + use FileSystemModuleDiscoveryDataProviderTrait; + + /** + * {@inheritdoc} + */ + public function setUp() { + self::$modules = array_keys($this->coreModuleListDataProvider()); + parent::setUp(); + } + + /** + * Tests that calling getProcess() on a migration does not throw an exception. + * + * @throws \Exception + */ + public function testGetProcess() { + /** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */ + $plugin_manager = $this->container->get('plugin.manager.migration'); + $migrations = $plugin_manager->createInstancesByTag('Drupal 6'); + foreach ($migrations as $migration) { + try { + $process = $migration->getProcess(); + } + catch (\Exception $e) { + $this->fail(sprintf("Migration %s process failed with error: %s", $migration->label(), $e->getMessage())); + } + $this->assertNotNull($process); + } + } + +} diff --git a/web/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrationProcessTest.php b/web/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrationProcessTest.php new file mode 100644 index 0000000000..4f3826f67e --- /dev/null +++ b/web/core/modules/migrate_drupal/tests/src/Kernel/d7/MigrationProcessTest.php @@ -0,0 +1,43 @@ +<?php + +namespace Drupal\Tests\migrate_drupal\Kernel\d7; + +use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait; + +/** + * Tests the getProcess() method of all Drupal 7 migrations. + * + * @group migrate_drupal + */ +class MigrationProcessTest extends MigrateDrupal7TestBase { + use FileSystemModuleDiscoveryDataProviderTrait; + + /** + * {@inheritdoc} + */ + public function setUp() { + self::$modules = array_keys($this->coreModuleListDataProvider()); + parent::setUp(); + } + + /** + * Tests that calling getProcess() on a migration does not throw an exception. + * + * @throws \Exception + */ + public function testGetProcess() { + /** @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface $plugin_manager */ + $plugin_manager = $this->container->get('plugin.manager.migration'); + $migrations = $plugin_manager->createInstancesByTag('Drupal 7'); + foreach ($migrations as $migration) { + try { + $process = $migration->getProcess(); + } + catch (\Exception $e) { + $this->fail(sprintf("Migration %s process failed with error: %s", $migration->label(), $e->getMessage())); + } + $this->assertNotNull($process); + } + } + +} diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/MultilingualReviewPageTestBase.php similarity index 97% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/MultilingualReviewPageTestBase.php index 5c97a69070..a200de6b84 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/MultilingualReviewPageTestBase.php @@ -6,8 +6,10 @@ /** * Provides a base class for testing the review step of the Upgrade form. + * + * When using this test class, enable translation modules. */ -abstract class MigrateUpgradeReviewPageTestBase extends MigrateUpgradeTestBase { +abstract class MultilingualReviewPageTestBase extends MigrateUpgradeTestBase { use CreateTestContentEntitiesTrait; diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/NoMultilingualReviewPageTestBase.php similarity index 91% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/NoMultilingualReviewPageTestBase.php index 8a57115edf..d5e41ed293 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/NoMultilingualReviewPageTestBase.php @@ -5,9 +5,9 @@ /** * Tests the upgrade review form without translations. * - * When using this test class do not enable content_translation. + * When using this test class, do not enable migrate_drupal_multilingual. */ -abstract class MigrateUpgradeI18nReviewPageTestBase extends MigrateUpgradeReviewPageTestBase { +abstract class NoMultilingualReviewPageTestBase extends MultilingualReviewPageTestBase { /** * Tests the review page when content_translation is enabled. diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php similarity index 92% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php index 91657f742a..fee4cb81ad 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php @@ -2,15 +2,17 @@ namespace Drupal\Tests\migrate_drupal_ui\Functional\d6; -use Drupal\Tests\migrate_drupal_ui\Functional\MigrateUpgradeReviewPageTestBase; +use Drupal\Tests\migrate_drupal_ui\Functional\MultilingualReviewPageTestBase; /** * Tests migrate upgrade review page for Drupal 6. * + * Tests with translation modules and migrate_drupal_multilingual enabled. + * * @group migrate_drupal_6 * @group migrate_drupal_ui */ -class MigrateUpgrade6ReviewPageTest extends MigrateUpgradeReviewPageTestBase { +class MultilingualReviewPageTest extends MultilingualReviewPageTestBase { /** * {@inheritdoc} diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php similarity index 91% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php index a4deaa25cf..2aabb71eee 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php @@ -2,15 +2,18 @@ namespace Drupal\Tests\migrate_drupal_ui\Functional\d6; -use Drupal\Tests\migrate_drupal_ui\Functional\MigrateUpgradeI18nReviewPageTestBase; +use Drupal\Tests\migrate_drupal_ui\Functional\NoMultilingualReviewPageTestBase; /** * Tests migrate upgrade review page for Drupal 6 without translations. * + * Tests with the translation modules and migrate_drupal_multilingual module + * disabled. + * * @group migrate_drupal_6 * @group migrate_drupal_ui */ -class MigrateUpgrade6I18nReviewPageTest extends MigrateUpgradeI18nReviewPageTestBase { +class NoMultilingualReviewPageTest extends NoMultilingualReviewPageTestBase { /** * {@inheritdoc} diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualTest.php similarity index 98% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualTest.php index e07e8bf211..a3f4f10dc8 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualTest.php @@ -11,7 +11,7 @@ * * @group migrate_drupal_ui */ -class MigrateUpgrade6NoMultilingualTest extends MigrateUpgradeExecuteTestBase { +class NoMultilingualTest extends MigrateUpgradeExecuteTestBase { /** * {@inheritdoc} diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php similarity index 97% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php index b37b45b638..f944ed5cc0 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php @@ -13,7 +13,7 @@ * * @group migrate_drupal_ui */ -class MigrateUpgrade6Test extends MigrateUpgradeExecuteTestBase { +class Upgrade6Test extends MigrateUpgradeExecuteTestBase { /** * Modules to enable. @@ -67,8 +67,8 @@ protected function getEntityCounts() { 'contact_form' => 5, 'configurable_language' => 5, 'editor' => 2, - 'field_config' => 90, - 'field_storage_config' => 64, + 'field_config' => 91, + 'field_storage_config' => 65, 'file' => 7, 'filter_format' => 7, 'image_style' => 5, diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MultilingualReviewPageTest.php similarity index 93% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MultilingualReviewPageTest.php index 9e68d9dba1..5bde4b88ae 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MultilingualReviewPageTest.php @@ -2,15 +2,17 @@ namespace Drupal\Tests\migrate_drupal_ui\Functional\d7; -use Drupal\Tests\migrate_drupal_ui\Functional\MigrateUpgradeReviewPageTestBase; +use Drupal\Tests\migrate_drupal_ui\Functional\MultilingualReviewPageTestBase; /** * Tests migrate upgrade review page for Drupal 7. * + * Tests with translation modules and migrate_drupal_multilingual enabled. + * * @group migrate_drupal_7 * @group migrate_drupal_ui */ -class MigrateUpgrade7ReviewPageTest extends MigrateUpgradeReviewPageTestBase { +class MultilingualReviewPageTest extends MultilingualReviewPageTestBase { /** * {@inheritdoc} @@ -76,7 +78,6 @@ protected function getAvailablePaths() { 'options', 'path', 'phone', - 'profile', 'rdf', 'search', 'shortcut', @@ -156,6 +157,7 @@ protected function getMissingPaths() { 'i18n_translation', 'i18n_user', 'i18n_variable', + 'profile', 'variable', 'variable_admin', 'variable_realm', diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/NoMultilingualTest.php similarity index 98% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/NoMultilingualTest.php index a8f51e7718..a3958a7bf8 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/NoMultilingualTest.php @@ -11,7 +11,7 @@ * * @group migrate_drupal_ui */ -class MigrateUpgrade7NoMultilingualTest extends MigrateUpgradeExecuteTestBase { +class NoMultilingualTest extends MigrateUpgradeExecuteTestBase { /** * {@inheritdoc} diff --git a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php similarity index 98% rename from web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php rename to web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php index b1718011f0..af3b433776 100644 --- a/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php +++ b/web/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php @@ -13,7 +13,7 @@ * * @group migrate_drupal_ui */ -class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { +class Upgrade7Test extends MigrateUpgradeExecuteTestBase { /** * Modules to enable. diff --git a/web/core/modules/node/src/NodeAccessControlHandler.php b/web/core/modules/node/src/NodeAccessControlHandler.php index 5ccc6425e3..7fd27dea04 100644 --- a/web/core/modules/node/src/NodeAccessControlHandler.php +++ b/web/core/modules/node/src/NodeAccessControlHandler.php @@ -80,7 +80,7 @@ public function createAccess($entity_bundle = NULL, AccountInterface $account = return $return_as_object ? $result : $result->isAllowed(); } if (!$account->hasPermission('access content')) { - $result = AccessResult::forbidden()->cachePerPermissions(); + $result = AccessResult::forbidden("The 'access content' permission is required.")->cachePerPermissions(); return $return_as_object ? $result : $result->isAllowed(); } diff --git a/web/core/modules/node/tests/src/Functional/NodeTitleTest.php b/web/core/modules/node/tests/src/Functional/NodeTitleTest.php index 8c94f795ad..7985f65ea5 100644 --- a/web/core/modules/node/tests/src/Functional/NodeTitleTest.php +++ b/web/core/modules/node/tests/src/Functional/NodeTitleTest.php @@ -34,6 +34,7 @@ class NodeTitleTest extends NodeTestBase { protected function setUp() { parent::setUp(); $this->drupalPlaceBlock('system_breadcrumb_block'); + $this->drupalPlaceBlock('page_title_block'); $this->adminUser = $this->drupalCreateUser(['administer nodes', 'create article content', 'create page content', 'post comments']); $this->drupalLogin($this->adminUser); @@ -80,7 +81,7 @@ public function testNodeTitle() { $this->assertTitle(0 . ' | Drupal', 'Page title is equal to 0.', 'Node'); // Test that 0 appears in the template <h1>. $xpath = '//h1'; - $this->assertEqual(current($this->xpath($xpath)), 0, 'Node title is displayed as 0.', 'Node'); + $this->assertSame('0', $this->xpath($xpath)[0]->getText(), 'Node title is displayed as 0.'); // Test edge case where node title contains special characters. $edge_case_title = 'article\'s "title".'; diff --git a/web/core/modules/node/tests/src/Functional/Rest/NodeResourceTestBase.php b/web/core/modules/node/tests/src/Functional/Rest/NodeResourceTestBase.php index 9f9a114924..ebf967ed64 100644 --- a/web/core/modules/node/tests/src/Functional/Rest/NodeResourceTestBase.php +++ b/web/core/modules/node/tests/src/Functional/Rest/NodeResourceTestBase.php @@ -210,7 +210,7 @@ protected function getExpectedUnauthorizedAccessMessage($method) { return parent::getExpectedUnauthorizedAccessMessage($method); } - if ($method === 'GET' || $method == 'PATCH' || $method == 'DELETE') { + if ($method === 'GET' || $method == 'PATCH' || $method == 'DELETE' || $method == 'POST') { return "The 'access content' permission is required."; } return parent::getExpectedUnauthorizedAccessMessage($method); diff --git a/web/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php b/web/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php new file mode 100644 index 0000000000..e7e3f753a0 --- /dev/null +++ b/web/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php @@ -0,0 +1,160 @@ +<?php + +namespace Drupal\responsive_image\Tests; + +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use Drupal\responsive_image\Entity\ResponsiveImageStyle; + +/** + * Class ResponsiveImageFieldUiTest. + * + * @group responsive_image + */ +class ResponsiveImageFieldUiTest extends WebDriverTestBase { + + /** + * Modules to install. + * + * @var array + */ + public static $modules = [ + 'node', + 'field_ui', + 'image', + 'responsive_image', + 'responsive_image_test_module', + 'block', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + $this->drupalPlaceBlock('system_breadcrumb_block'); + // Create a test user. + $admin_user = $this->drupalCreateUser([ + 'access content', + 'administer content types', + 'administer node fields', + 'administer node form display', + 'administer node display', + 'bypass node access', + ]); + $this->drupalLogin($admin_user); + + // Create content type, with underscores. + $type_name = strtolower($this->randomMachineName(8)) . '_test'; + $type = $this->drupalCreateContentType([ + 'name' => $type_name, + 'type' => $type_name, + ]); + $this->type = $type->id(); + } + + /** + * Tests formatter settings. + */ + public function testResponsiveImageFormatterUi() { + $manage = 'admin/structure/types/manage/' . $this->type; + $add_field = $manage . '/fields/add-field'; + $manage_display = $manage . '/display'; + $assert_session = $this->assertSession(); + + // Create a field, and a node with some data for the field. + // Create the field. + $this->drupalGet($add_field); + + $page = $this->getSession()->getPage(); + $storage_type = $page->findField('edit-new-storage-type'); + $storage_type->setValue('image'); + + // Set the label. + $label = $page->findField('edit-label'); + $label->setValue('Image'); + + // Wait for the machine name. + $assert_session->waitForElementVisible('css', '[name="label"] + * .machine-name-value'); + + // Save the current page. + $save_button = $page->findButton('Save and continue'); + $save_button->click(); + + // Display the "Manage display" page. + $this->drupalGet($manage_display); + + // Change the formatter and check that the summary is updated. + $page = $this->getSession()->getPage(); + + $field_image_type = $page->findField('fields[field_image][type]'); + $field_image_type->setValue('responsive_image'); + + $summary_text = $assert_session->waitForElement('xpath', $this->cssSelectToXpath('#field-image .ajax-new-content .field-plugin-summary')); + $this->assertEquals('Select a responsive image style.', $summary_text->getText()); + + $page->pressButton('Save'); + $assert_session->responseContains("Select a responsive image style."); + + // Create responsive image styles. + $responsive_image_style = ResponsiveImageStyle::create([ + 'id' => 'style_one', + 'label' => 'Style One', + 'breakpoint_group' => 'responsive_image_test_module', + 'fallback_image_style' => 'thumbnail', + ]); + $responsive_image_style + ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [ + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'thumbnail', + ]) + ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [ + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'medium', + ]) + // Test the normal output of mapping to an image style. + ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [ + 'image_mapping_type' => 'image_style', + 'image_mapping' => 'large', + ]) + ->save(); + \Drupal::entityManager()->clearCachedFieldDefinitions(); + // Refresh the page. + $this->drupalGet($manage_display); + $assert_session->responseContains("Select a responsive image style."); + + // Click on the formatter settings button to open the formatter settings + // form. + $field_image_type = $page->findField('fields[field_image][type]'); + $field_image_type->setValue('responsive_image'); + + $page->find('css', '#edit-fields-field-image-settings-edit')->click(); + $assert_session->waitForField('fields[field_image][settings_edit_form][settings][responsive_image_style]'); + + // Assert that the correct fields are present. + $fieldnames = [ + 'fields[field_image][settings_edit_form][settings][responsive_image_style]', + 'fields[field_image][settings_edit_form][settings][image_link]', + ]; + foreach ($fieldnames as $fieldname) { + $assert_session->fieldExists($fieldname); + } + $page->findField('fields[field_image][settings_edit_form][settings][responsive_image_style]')->setValue('style_one'); + $page->findField('fields[field_image][settings_edit_form][settings][image_link]')->setValue('content'); + // Save the form to save the settings. + $page->pressButton('Save'); + + $assert_session->responseContains('Responsive image style: Style One'); + $assert_session->responseContains('Linked to content'); + + $page->find('css', '#edit-fields-field-image-settings-edit')->click(); + $assert_session->waitForField('fields[field_image][settings_edit_form][settings][responsive_image_style]'); + $page->findField('fields[field_image][settings_edit_form][settings][image_link]')->setValue('file'); + + // Save the form to save the settings. + $page->pressButton('Save'); + + $assert_session->responseContains('Responsive image style: Style One'); + $assert_session->responseContains('Linked to file'); + } + +} diff --git a/web/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php b/web/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php deleted file mode 100644 index 2069f61368..0000000000 --- a/web/core/modules/responsive_image/src/Tests/ResponsiveImageFieldUiTest.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -namespace Drupal\responsive_image\Tests; - -use Drupal\field_ui\Tests\FieldUiTestTrait; -use Drupal\simpletest\WebTestBase; -use Drupal\responsive_image\Entity\ResponsiveImageStyle; - -/** - * Tests the "Responsive Image" formatter settings form. - * - * @group responsive_image - */ -class ResponsiveImageFieldUiTest extends WebTestBase { - - use FieldUiTestTrait; - - /** - * Modules to install. - * - * @var array - */ - public static $modules = ['node', 'field_ui', 'image', 'responsive_image', 'responsive_image_test_module', 'block']; - - /** - * {@inheritdoc} - */ - protected function setUp() { - parent::setUp(); - $this->drupalPlaceBlock('system_breadcrumb_block'); - // Create a test user. - $admin_user = $this->drupalCreateUser(['access content', 'administer content types', 'administer node fields', 'administer node form display', 'administer node display', 'bypass node access']); - $this->drupalLogin($admin_user); - - // Create content type, with underscores. - $type_name = strtolower($this->randomMachineName(8)) . '_test'; - $type = $this->drupalCreateContentType(['name' => $type_name, 'type' => $type_name]); - $this->type = $type->id(); - } - - /** - * Tests formatter settings. - */ - public function testResponsiveImageFormatterUI() { - $manage_fields = 'admin/structure/types/manage/' . $this->type; - $manage_display = $manage_fields . '/display'; - - // Create a field, and a node with some data for the field. - $this->fieldUIAddNewField($manage_fields, 'image', 'Image field', 'image'); - // Display the "Manage display". - $this->drupalGet($manage_display); - - // Change the formatter and check that the summary is updated. - $edit = [ - 'fields[field_image][type]' => 'responsive_image', - 'fields[field_image][region]' => 'content', - 'refresh_rows' => 'field_image', - ]; - $this->drupalPostAjaxForm(NULL, $edit, ['op' => t('Refresh')]); - $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); - - // Submit the form. - $this->drupalPostForm(NULL, [], t('Save')); - $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); - - // Create responsive image styles. - $responsive_image_style = ResponsiveImageStyle::create([ - 'id' => 'style_one', - 'label' => 'Style One', - 'breakpoint_group' => 'responsive_image_test_module', - 'fallback_image_style' => 'thumbnail', - ]); - $responsive_image_style - ->addImageStyleMapping('responsive_image_test_module.mobile', '1x', [ - 'image_mapping_type' => 'image_style', - 'image_mapping' => 'thumbnail', - ]) - ->addImageStyleMapping('responsive_image_test_module.narrow', '1x', [ - 'image_mapping_type' => 'image_style', - 'image_mapping' => 'medium', - ]) - // Test the normal output of mapping to an image style. - ->addImageStyleMapping('responsive_image_test_module.wide', '1x', [ - 'image_mapping_type' => 'image_style', - 'image_mapping' => 'large', - ]) - ->save(); - \Drupal::entityManager()->clearCachedFieldDefinitions(); - // Refresh the page. - $this->drupalGet($manage_display); - $this->assertText("Select a responsive image style.", 'The expected summary is displayed.'); - - // Click on the formatter settings button to open the formatter settings - // form. - $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit"); - - // Assert that the correct fields are present. - $fieldnames = [ - 'fields[field_image][settings_edit_form][settings][responsive_image_style]', - 'fields[field_image][settings_edit_form][settings][image_link]', - ]; - foreach ($fieldnames as $fieldname) { - $this->assertField($fieldname); - } - $edit = [ - 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one', - 'fields[field_image][settings_edit_form][settings][image_link]' => 'content', - ]; - $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); - - // Save the form to save the settings. - $this->drupalPostForm(NULL, [], t('Save')); - $this->assertText('Responsive image style: Style One'); - $this->assertText('Linked to content'); - - // Click on the formatter settings button to open the formatter settings - // form. - $this->drupalPostAjaxForm(NULL, [], "field_image_settings_edit"); - $edit = [ - 'fields[field_image][settings_edit_form][settings][responsive_image_style]' => 'style_one', - 'fields[field_image][settings_edit_form][settings][image_link]' => 'file', - ]; - $this->drupalPostAjaxForm(NULL, $edit, "field_image_plugin_settings_update"); - - // Save the form to save the third party settings. - $this->drupalPostForm(NULL, [], t('Save')); - $this->assertText('Responsive image style: Style One'); - $this->assertText('Linked to file'); - } - -} diff --git a/web/core/modules/rest/rest.post_update.php b/web/core/modules/rest/rest.post_update.php index 8ed5a6dbff..e1e1d20301 100644 --- a/web/core/modules/rest/rest.post_update.php +++ b/web/core/modules/rest/rest.post_update.php @@ -61,3 +61,10 @@ function rest_post_update_resource_granularity() { } } } + +/** + * Clear caches due to changes in route definitions. + */ +function rest_post_update_161923() { + // Empty post-update hook. +} diff --git a/web/core/modules/rest/src/Plugin/rest/resource/EntityResource.php b/web/core/modules/rest/src/Plugin/rest/resource/EntityResource.php index ebfd075041..7aa56055c7 100644 --- a/web/core/modules/rest/src/Plugin/rest/resource/EntityResource.php +++ b/web/core/modules/rest/src/Plugin/rest/resource/EntityResource.php @@ -13,12 +13,13 @@ use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityStorageException; use Drupal\Core\Field\FieldItemListInterface; -use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException; +use Drupal\Core\Routing\AccessAwareRouterInterface; use Drupal\rest\Plugin\ResourceBase; use Drupal\rest\ResourceResponse; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\rest\ModifiedResourceResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; @@ -121,14 +122,11 @@ public static function create(ContainerInterface $container, array $configuratio * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function get(EntityInterface $entity) { - $entity_access = $entity->access('view', NULL, TRUE); - if (!$entity_access->isAllowed()) { - throw new CacheableAccessDeniedHttpException($entity_access, $entity_access->getReason() ?: $this->generateFallbackAccessDeniedMessage($entity, 'view')); - } - + $request = \Drupal::request(); $response = new ResourceResponse($entity, 200); + // @todo Either remove the line below or remove this todo in https://www.drupal.org/project/drupal/issues/2973356 + $response->addCacheableDependency($request->attributes->get(AccessAwareRouterInterface::ACCESS_RESULT)); $response->addCacheableDependency($entity); - $response->addCacheableDependency($entity_access); if ($entity instanceof FieldableEntityInterface) { foreach ($entity as $field_name => $field) { @@ -223,10 +221,6 @@ public function patch(EntityInterface $original_entity, EntityInterface $entity if ($entity->getEntityTypeId() != $definition['entity_type']) { throw new BadRequestHttpException('Invalid entity type'); } - $entity_access = $original_entity->access('update', NULL, TRUE); - if (!$entity_access->isAllowed()) { - throw new AccessDeniedHttpException($entity_access->getReason() ?: $this->generateFallbackAccessDeniedMessage($entity, 'update')); - } // Overwrite the received fields. // @todo Remove $changed_fields in https://www.drupal.org/project/drupal/issues/2862574. @@ -327,10 +321,6 @@ protected function checkPatchFieldAccess(FieldItemListInterface $original_field, * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function delete(EntityInterface $entity) { - $entity_access = $entity->access('delete', NULL, TRUE); - if (!$entity_access->isAllowed()) { - throw new AccessDeniedHttpException($entity_access->getReason() ?: $this->generateFallbackAccessDeniedMessage($entity, 'delete')); - } try { $entity->delete(); $this->logger->notice('Deleted entity %type with ID %id.', ['%type' => $entity->getEntityTypeId(), '%id' => $entity->id()]); @@ -383,6 +373,23 @@ public function permissions() { */ protected function getBaseRoute($canonical_path, $method) { $route = parent::getBaseRoute($canonical_path, $method); + + switch ($method) { + case 'GET': + $route->setRequirement('_entity_access', $this->entityType->id() . '.view'); + break; + case 'POST': + $route->setRequirement('_entity_create_any_access', $this->entityType->id()); + $route->setOption('_ignore_create_bundle_access', TRUE); + break; + case 'PATCH': + $route->setRequirement('_entity_access', $this->entityType->id() . '.update'); + break; + case 'DELETE': + $route->setRequirement('_entity_access', $this->entityType->id() . '.delete'); + break; + } + $definition = $this->getPluginDefinition(); $parameters = $route->getOption('parameters') ?: []; diff --git a/web/core/modules/rest/tests/modules/config_test_rest/config_test_rest.module b/web/core/modules/rest/tests/modules/config_test_rest/config_test_rest.module index fcd9979a11..aa9fababb0 100644 --- a/web/core/modules/rest/tests/modules/config_test_rest/config_test_rest.module +++ b/web/core/modules/rest/tests/modules/config_test_rest/config_test_rest.module @@ -6,6 +6,7 @@ */ use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\AccessResultReasonInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Session\AccountInterface; @@ -26,5 +27,9 @@ function config_test_rest_config_test_access(EntityInterface $entity, $operation // Add permission, so that EntityResourceTestBase's scenarios can test access // being denied. By default, all access is always allowed for the config_test // config entity. - return AccessResult::forbiddenIf(!$account->hasPermission('view config_test'))->cachePerPermissions(); + $access_result = AccessResult::forbiddenIf(!$account->hasPermission('view config_test'))->cachePerPermissions(); + if (!$access_result->isAllowed() && $access_result instanceof AccessResultReasonInterface) { + $access_result->setReason("The 'view config_test' permission is required."); + } + return $access_result; } diff --git a/web/core/modules/rest/tests/src/Functional/BasicAuthResourceTestTrait.php b/web/core/modules/rest/tests/src/Functional/BasicAuthResourceTestTrait.php index e4dcd70ff6..4a58254db1 100644 --- a/web/core/modules/rest/tests/src/Functional/BasicAuthResourceTestTrait.php +++ b/web/core/modules/rest/tests/src/Functional/BasicAuthResourceTestTrait.php @@ -14,8 +14,6 @@ * authenticated, a 401 response must be sent. * - Because every request must send an authorization, there is no danger of * CSRF attacks. - * - * @see \Drupal\Tests\rest\Functional\BasicAuthResourceWithInterfaceTranslationTestTrait */ trait BasicAuthResourceTestTrait { @@ -34,10 +32,23 @@ protected function getAuthenticationRequestOptions($method) { * {@inheritdoc} */ protected function assertResponseWhenMissingAuthentication($method, ResponseInterface $response) { + if ($method !== 'GET') { + return $this->assertResourceErrorResponse(401, 'No authentication credentials provided.', $response); + } + $expected_page_cache_header_value = $method === 'GET' ? 'MISS' : FALSE; - // @see \Drupal\basic_auth\Authentication\Provider\BasicAuth::challengeException() - $expected_dynamic_page_cache_header_value = $expected_page_cache_header_value; - $this->assertResourceErrorResponse(401, 'No authentication credentials provided.', $response, ['4xx-response', 'config:system.site', 'config:user.role.anonymous', 'http_response'], ['user.roles:anonymous'], $expected_page_cache_header_value, $expected_dynamic_page_cache_header_value); + $expected_cacheability = $this->getExpectedUnauthorizedAccessCacheability() + ->addCacheableDependency($this->getExpectedUnauthorizedEntityAccessCacheability(FALSE)) + // @see \Drupal\basic_auth\Authentication\Provider\BasicAuth::challengeException() + ->addCacheableDependency($this->config('system.site')) + // @see \Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber::onRespond() + ->addCacheTags(['config:user.role.anonymous']); + // Only add the 'user.roles:anonymous' cache context if its parent cache + // context is not already present. + if (!in_array('user.roles', $expected_cacheability->getCacheContexts(), TRUE)) { + $expected_cacheability->addCacheContexts(['user.roles:anonymous']); + } + $this->assertResourceErrorResponse(401, 'No authentication credentials provided.', $response, $expected_cacheability->getCacheTags(), $expected_cacheability->getCacheContexts(), $expected_page_cache_header_value, FALSE); } /** diff --git a/web/core/modules/rest/tests/src/Functional/BasicAuthResourceWithInterfaceTranslationTestTrait.php b/web/core/modules/rest/tests/src/Functional/BasicAuthResourceWithInterfaceTranslationTestTrait.php deleted file mode 100644 index 37b8381eae..0000000000 --- a/web/core/modules/rest/tests/src/Functional/BasicAuthResourceWithInterfaceTranslationTestTrait.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace Drupal\Tests\rest\Functional; - -use Psr\Http\Message\ResponseInterface; - -/** - * Trait for ResourceTestBase subclasses testing $auth=basic_auth + 'language'. - * - * @see \Drupal\Tests\rest\Functional\BasicAuthResourceTestTrait - */ -trait BasicAuthResourceWithInterfaceTranslationTestTrait { - - use BasicAuthResourceTestTrait; - - /** - * {@inheritdoc} - */ - protected function assertResponseWhenMissingAuthentication($method, ResponseInterface $response) { - // Because BasicAuth::challengeException() relies on the 'system.site' - // configuration, and this test installs the 'language' module, all config - // may be translated and therefore gets the 'languages:language_interface' - // cache context. - $expected_page_cache_header_value = $method === 'GET' ? 'MISS' : FALSE; - $this->assertResourceErrorResponse(401, 'No authentication credentials provided.', $response, ['4xx-response', 'config:system.site', 'config:user.role.anonymous', 'http_response'], ['languages:language_interface', 'user.roles:anonymous'], $expected_page_cache_header_value, $expected_page_cache_header_value); - } - -} diff --git a/web/core/modules/rest/tests/src/Functional/CookieResourceTestTrait.php b/web/core/modules/rest/tests/src/Functional/CookieResourceTestTrait.php index 7ce381b889..2d25b946a5 100644 --- a/web/core/modules/rest/tests/src/Functional/CookieResourceTestTrait.php +++ b/web/core/modules/rest/tests/src/Functional/CookieResourceTestTrait.php @@ -99,7 +99,9 @@ protected function assertResponseWhenMissingAuthentication($method, ResponseInte // @see \Drupal\user\Authentication\Provider\Cookie // @todo https://www.drupal.org/node/2847623 if ($method === 'GET') { - $expected_cookie_403_cacheability = $this->getExpectedUnauthorizedAccessCacheability(); + $expected_cookie_403_cacheability = $this->getExpectedUnauthorizedAccessCacheability() + // @see \Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber::onRespond() + ->addCacheableDependency($this->getExpectedUnauthorizedEntityAccessCacheability(FALSE)); // - \Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber applies // to cacheable anonymous responses: it updates their cacheability. // - A 403 response to a GET request is cacheable. @@ -111,7 +113,7 @@ protected function assertResponseWhenMissingAuthentication($method, ResponseInte if (static::$entityTypeId === 'block') { $expected_cookie_403_cacheability->setCacheTags(str_replace('user:2', 'user:0', $expected_cookie_403_cacheability->getCacheTags())); } - $this->assertResourceErrorResponse(403, FALSE, $response, $expected_cookie_403_cacheability->getCacheTags(), $expected_cookie_403_cacheability->getCacheContexts(), 'MISS', 'MISS'); + $this->assertResourceErrorResponse(403, FALSE, $response, $expected_cookie_403_cacheability->getCacheTags(), $expected_cookie_403_cacheability->getCacheContexts(), 'MISS', FALSE); } else { $this->assertResourceErrorResponse(403, FALSE, $response); diff --git a/web/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/web/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php index 17e0c0a7b5..ebb5f4005b 100644 --- a/web/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php +++ b/web/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php @@ -379,6 +379,20 @@ protected function getExpectedUnauthorizedAccessCacheability() { ->setCacheContexts(['user.permissions']); } + /** + * The cacheability of unauthorized 'view' entity access. + * + * @param bool $is_authenticated + * Whether the current request is authenticated or not. This matters for + * some entity access control handlers, but not for most. + * + * @return \Drupal\Core\Cache\CacheableMetadata + * The expected cacheability. + */ + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { + return new CacheableMetadata(); + } + /** * The expected cache tags for the GET/HEAD response of the test entity. * @@ -441,7 +455,11 @@ public function testGet() { // response because ?_format query string is present. $response = $this->request('GET', $url, $request_options); if ($has_canonical_url) { - $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response); + $expected_cacheability = $this->getExpectedUnauthorizedAccessCacheability() + // @see \Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber::onRespond() + ->addCacheTags(['config:user.role.anonymous']); + $expected_cacheability->addCacheableDependency($this->getExpectedUnauthorizedEntityAccessCacheability(FALSE)); + $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response, $expected_cacheability->getCacheTags(), $expected_cacheability->getCacheContexts(), 'MISS', FALSE); } else { $this->assertResourceErrorResponse(404, 'No route found for "GET ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '"', $response); @@ -474,7 +492,8 @@ public function testGet() { // First: single format. Drupal will automatically pick the only format. $this->provisionEntityResource(TRUE); - $expected_403_cacheability = $this->getExpectedUnauthorizedAccessCacheability(); + $expected_403_cacheability = $this->getExpectedUnauthorizedAccessCacheability() + ->addCacheableDependency($this->getExpectedUnauthorizedEntityAccessCacheability(static::$auth !== FALSE)); // DX: 403 because unauthorized single-format route, ?_format is omittable. $url->setOption('query', []); $response = $this->request('GET', $url, $request_options); @@ -483,13 +502,13 @@ public function testGet() { $this->assertSame(['text/html; charset=UTF-8'], $response->getHeader('Content-Type')); } else { - $this->assertResourceErrorResponse(403, FALSE, $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', 'MISS'); + $this->assertResourceErrorResponse(403, FALSE, $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', FALSE); } $this->assertSame(static::$auth ? [] : ['MISS'], $response->getHeader('X-Drupal-Cache')); // DX: 403 because unauthorized. $url->setOption('query', ['_format' => static::$format]); $response = $this->request('GET', $url, $request_options); - $this->assertResourceErrorResponse(403, FALSE, $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', $has_canonical_url ? 'MISS' : 'HIT'); + $this->assertResourceErrorResponse(403, FALSE, $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', FALSE); // Then, what we'll use for the remainder of the test: multiple formats. $this->provisionEntityResource(); @@ -509,7 +528,7 @@ public function testGet() { // DX: 403 because unauthorized. $url->setOption('query', ['_format' => static::$format]); $response = $this->request('GET', $url, $request_options); - $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', 'HIT'); + $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', FALSE); $this->assertArrayNotHasKey('Link', $response->getHeaders()); $this->setUpAuthorization('GET'); @@ -687,7 +706,15 @@ public function testGet() { // DX: 403 when unauthorized. $response = $this->request('GET', $url, $request_options); - $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response); + $expected_403_cacheability = $this->getExpectedUnauthorizedAccessCacheability(); + // Permission checking now happens first, so it's the only cache context we + // could possibly vary by. + $expected_403_cacheability->setCacheContexts(['user.permissions']); + // @see \Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber::onRespond() + if (static::$auth === FALSE) { + $expected_403_cacheability->addCacheTags(['config:user.role.anonymous']); + } + $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response, $expected_403_cacheability->getCacheTags(), $expected_403_cacheability->getCacheContexts(), static::$auth ? FALSE : 'MISS', FALSE); $this->grantPermissionsToTestedRole(['restful get entity:' . static::$entityTypeId]); @@ -839,18 +866,6 @@ public function testPost() { $request_options[RequestOptions::HEADERS]['Content-Type'] = static::$mimeType; - // DX: 400 when no request body. - $response = $this->request('POST', $url, $request_options); - $this->assertResourceErrorResponse(400, 'No entity content received.', $response); - - $request_options[RequestOptions::BODY] = $unparseable_request_body; - - // DX: 400 when unparseable request body. - $response = $this->request('POST', $url, $request_options); - $this->assertResourceErrorResponse(400, 'Syntax error', $response); - - $request_options[RequestOptions::BODY] = $parseable_invalid_request_body; - if (static::$auth) { // DX: forgetting authentication: authentication provider-specific error // response. @@ -862,16 +877,22 @@ public function testPost() { // DX: 403 when unauthorized. $response = $this->request('POST', $url, $request_options); - // @todo Remove this if-test in https://www.drupal.org/project/drupal/issues/2820364 - if (static::$entityTypeId === 'media' && !static::$auth) { - $this->assertResourceErrorResponse(422, "Unprocessable Entity: validation failed.\nname: Name: this field cannot hold more than 1 values.\nfield_media_file.0: You do not have access to the referenced entity (file: 3).\n", $response); - } - else { - $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('POST'), $response); - } + $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('POST'), $response); $this->setUpAuthorization('POST'); + // DX: 400 when no request body. + $response = $this->request('POST', $url, $request_options); + $this->assertResourceErrorResponse(400, 'No entity content received.', $response); + + $request_options[RequestOptions::BODY] = $unparseable_request_body; + + // DX: 400 when unparseable request body. + $response = $this->request('POST', $url, $request_options); + $this->assertResourceErrorResponse(400, 'Syntax error', $response); + + $request_options[RequestOptions::BODY] = $parseable_invalid_request_body; + // DX: 422 when invalid entity: multiple values sent for single-value field. $response = $this->request('POST', $url, $request_options); $label_field = $this->entity->getEntityType()->hasKey('label') ? $this->entity->getEntityType()->getKey('label') : static::$labelFieldName; @@ -1074,18 +1095,6 @@ public function testPatch() { $request_options[RequestOptions::HEADERS]['Content-Type'] = static::$mimeType; - // DX: 400 when no request body. - $response = $this->request('PATCH', $url, $request_options); - $this->assertResourceErrorResponse(400, 'No entity content received.', $response); - - $request_options[RequestOptions::BODY] = $unparseable_request_body; - - // DX: 400 when unparseable request body. - $response = $this->request('PATCH', $url, $request_options); - $this->assertResourceErrorResponse(400, 'Syntax error', $response); - - $request_options[RequestOptions::BODY] = $parseable_invalid_request_body; - if (static::$auth) { // DX: forgetting authentication: authentication provider-specific error // response. @@ -1101,6 +1110,18 @@ public function testPatch() { $this->setUpAuthorization('PATCH'); + // DX: 400 when no request body. + $response = $this->request('PATCH', $url, $request_options); + $this->assertResourceErrorResponse(400, 'No entity content received.', $response); + + $request_options[RequestOptions::BODY] = $unparseable_request_body; + + // DX: 400 when unparseable request body. + $response = $this->request('PATCH', $url, $request_options); + $this->assertResourceErrorResponse(400, 'Syntax error', $response); + + $request_options[RequestOptions::BODY] = $parseable_invalid_request_body; + // DX: 422 when invalid entity: multiple values sent for single-value field. $response = $this->request('PATCH', $url, $request_options); $label_field = $this->entity->getEntityType()->hasKey('label') ? $this->entity->getEntityType()->getKey('label') : static::$labelFieldName; diff --git a/web/core/modules/search/tests/src/Functional/Rest/SearchPageResourceTestBase.php b/web/core/modules/search/tests/src/Functional/Rest/SearchPageResourceTestBase.php index e711a34799..1730badd05 100644 --- a/web/core/modules/search/tests/src/Functional/Rest/SearchPageResourceTestBase.php +++ b/web/core/modules/search/tests/src/Functional/Rest/SearchPageResourceTestBase.php @@ -102,9 +102,9 @@ protected function getExpectedUnauthorizedAccessMessage($method) { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\search\SearchPageAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) ->addCacheTags(['config:search.page.hinode_search']); } diff --git a/web/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php b/web/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php index decca43227..085e5242d0 100644 --- a/web/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php +++ b/web/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php @@ -11,6 +11,8 @@ */ class FieldItemNormalizer extends ComplexDataNormalizer implements DenormalizerInterface { + use SerializedColumnNormalizerTrait; + /** * {@inheritdoc} */ @@ -30,6 +32,7 @@ public function denormalize($data, $class, $format = NULL, array $context = []) /** @var \Drupal\Core\Field\FieldItemInterface $field_item */ $field_item = $context['target_instance']; + $this->checkForSerializedStrings($data, $class, $field_item); $field_item->setValue($this->constructValue($data, $context)); return $field_item; @@ -51,6 +54,19 @@ public function denormalize($data, $class, $format = NULL, array $context = []) * The value to use in Entity::setValue(). */ protected function constructValue($data, $context) { + /** @var \Drupal\Core\Field\FieldItemInterface $field_item */ + $field_item = $context['target_instance']; + $serialized_property_names = $this->getCustomSerializedPropertyNames($field_item); + + // Explicitly serialize the input, unlike properties that rely on + // being automatically serialized, manually managed serialized properties + // expect to receive serialized input. + foreach ($serialized_property_names as $serialized_property_name) { + if (!empty($data[$serialized_property_name])) { + $data[$serialized_property_name] = serialize($data[$serialized_property_name]); + } + } + return $data; } diff --git a/web/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php b/web/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php index cce108cacf..1774a11bef 100644 --- a/web/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php +++ b/web/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php @@ -2,6 +2,7 @@ namespace Drupal\serialization\Normalizer; +use Drupal\Core\Field\FieldItemInterface; use Drupal\Core\TypedData\PrimitiveInterface; /** @@ -9,6 +10,8 @@ */ class PrimitiveDataNormalizer extends NormalizerBase { + use SerializedColumnNormalizerTrait; + /** * The interface or class that this Normalizer supports. * @@ -20,6 +23,14 @@ class PrimitiveDataNormalizer extends NormalizerBase { * {@inheritdoc} */ public function normalize($object, $format = NULL, array $context = []) { + $parent = $object->getParent(); + if ($parent instanceof FieldItemInterface && $object->getValue()) { + $serialized_property_names = $this->getCustomSerializedPropertyNames($parent); + if (in_array($object->getName(), $serialized_property_names, TRUE)) { + return unserialize($object->getValue()); + } + } + // Typed data casts NULL objects to their empty variants, so for example // the empty string ('') for string type data, or 0 for integer typed data. // In a better world with typed data implementing algebraic data types, diff --git a/web/core/modules/serialization/src/Normalizer/SerializedColumnNormalizerTrait.php b/web/core/modules/serialization/src/Normalizer/SerializedColumnNormalizerTrait.php new file mode 100644 index 0000000000..bf6eb0643c --- /dev/null +++ b/web/core/modules/serialization/src/Normalizer/SerializedColumnNormalizerTrait.php @@ -0,0 +1,116 @@ +<?php + +namespace Drupal\serialization\Normalizer; + +use Drupal\Component\Plugin\PluginInspectionInterface; +use Drupal\Core\Field\FieldItemInterface; + +/** + * A trait providing methods for serialized columns. + */ +trait SerializedColumnNormalizerTrait { + + /** + * Checks if there is a serialized string for a column. + * + * @param mixed $data + * The field item data to denormalize. + * @param string $class + * The expected class to instantiate. + * @param \Drupal\Core\Field\FieldItemInterface $field_item + * The field item. + */ + protected function checkForSerializedStrings($data, $class, FieldItemInterface $field_item) { + // Require specialized denormalizers for fields with 'serialize' columns. + // Note: this cannot be checked in ::supportsDenormalization() because at + // that time we only have the field item class. ::hasSerializeColumn() + // must be able to call $field_item->schema(), which requires a field + // storage definition. To determine that, the entity type and bundle + // must be known, which is contextual information that the Symfony + // serializer does not pass to ::supportsDenormalization(). + if (!is_array($data)) { + $data = [$field_item->getDataDefinition()->getMainPropertyName() => $data]; + } + if ($this->dataHasStringForSerializeColumn($field_item, $data)) { + $field_name = $field_item->getParent() ? $field_item->getParent()->getName() : $field_item->getName(); + throw new \LogicException(sprintf('The generic FieldItemNormalizer cannot denormalize string values for "%s" properties of the "%s" field (field item class: %s).', implode('", "', $this->getSerializedPropertyNames($field_item)), $field_name, $class)); + } + } + + /** + * Checks if the data contains string value for serialize column. + * + * @param \Drupal\Core\Field\FieldItemInterface $field_item + * The field item. + * @param array $data + * The data being denormalized. + * + * @return bool + * TRUE if there is a string value for serialize column, otherwise FALSE. + */ + protected function dataHasStringForSerializeColumn(FieldItemInterface $field_item, array $data) { + foreach ($this->getSerializedPropertyNames($field_item) as $property_name) { + if (isset($data[$property_name]) && is_string($data[$property_name])) { + return TRUE; + } + } + return FALSE; + } + + /** + * Gets the names of all serialized properties. + * + * @param \Drupal\Core\Field\FieldItemInterface $field_item + * The field item. + * + * @return string[] + * The property names for serialized properties. + */ + protected function getSerializedPropertyNames(FieldItemInterface $field_item) { + $field_storage_definition = $field_item->getFieldDefinition()->getFieldStorageDefinition(); + + if ($custom_property_names = $this->getCustomSerializedPropertyNames($field_item)) { + return $custom_property_names; + } + + $field_storage_schema = $field_item->schema($field_storage_definition); + // If there are no columns then there are no serialized properties. + if (!isset($field_storage_schema['columns'])) { + return []; + } + $serialized_columns = array_filter($field_storage_schema['columns'], function ($column_schema) { + return isset($column_schema['serialize']) && $column_schema['serialize'] === TRUE; + }); + return array_keys($serialized_columns); + } + + /** + * Gets the names of all properties the plugin treats as serialized data. + * + * This allows the field storage definition or entity type to provide a + * setting for serialized properties. This can be used for fields that + * handle serialized data themselves and do not rely on the serialized schema + * flag. + * + * @param \Drupal\Core\Field\FieldItemInterface $field_item + * The field item. + * + * @return string[] + * The property names for serialized properties. + */ + protected function getCustomSerializedPropertyNames(FieldItemInterface $field_item) { + if ($field_item instanceof PluginInspectionInterface) { + $definition = $field_item->getPluginDefinition(); + $serialized_fields = $field_item->getEntity()->getEntityType()->get('serialized_field_property_names'); + $field_name = $field_item->getFieldDefinition()->getName(); + if (is_array($serialized_fields) && isset($serialized_fields[$field_name]) && is_array($serialized_fields[$field_name])) { + return $serialized_fields[$field_name]; + } + if (isset($definition['serialized_property_names']) && is_array($definition['serialized_property_names'])) { + return $definition['serialized_property_names']; + } + } + return []; + } + +} diff --git a/web/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php b/web/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php index ef5362a0ed..487cbc1258 100644 --- a/web/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php +++ b/web/core/modules/serialization/tests/src/Kernel/EntitySerializationTest.php @@ -4,6 +4,7 @@ use Drupal\Component\Serialization\Json; use Drupal\Component\Render\FormattableMarkup; +use Drupal\entity_test\Entity\EntitySerializedField; use Drupal\entity_test\Entity\EntityTestMulRev; use Drupal\filter\Entity\FilterFormat; use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait; diff --git a/web/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php b/web/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php index 96274a675f..bad2e7e7a4 100644 --- a/web/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php +++ b/web/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\serialization\Unit\Normalizer; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\TypedData\Type\IntegerInterface; use Drupal\Core\TypedData\TypedDataInterface; @@ -364,6 +365,33 @@ protected function assertDenormalize(array $data) { ->shouldBeCalled(); } + // Avoid a static method call by returning dummy property data. + $this->fieldDefinition + ->getFieldStorageDefinition() + ->willReturn() + ->shouldBeCalled(); + $this->fieldDefinition + ->getName() + ->willReturn('field_reference') + ->shouldBeCalled(); + $entity = $this->prophesize(EntityInterface::class); + $entity_type = $this->prophesize(EntityTypeInterface::class); + $entity->getEntityType() + ->willReturn($entity_type->reveal()) + ->shouldBeCalled(); + $this->fieldItem + ->getPluginDefinition() + ->willReturn([ + 'serialized_property_names' => [ + 'foo' => 'bar', + ], + ]) + ->shouldBeCalled(); + $this->fieldItem + ->getEntity() + ->willReturn($entity->reveal()) + ->shouldBeCalled(); + $context = ['target_instance' => $this->fieldItem->reveal()]; $denormalized = $this->normalizer->denormalize($data, EntityReferenceItem::class, 'json', $context); $this->assertSame($context['target_instance'], $denormalized); diff --git a/web/core/modules/serialization/tests/src/Unit/Normalizer/TimestampItemNormalizerTest.php b/web/core/modules/serialization/tests/src/Unit/Normalizer/TimestampItemNormalizerTest.php index c4e351424a..47abc4601f 100644 --- a/web/core/modules/serialization/tests/src/Unit/Normalizer/TimestampItemNormalizerTest.php +++ b/web/core/modules/serialization/tests/src/Unit/Normalizer/TimestampItemNormalizerTest.php @@ -2,6 +2,9 @@ namespace Drupal\Tests\serialization\Unit\Normalizer; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Entity\EntityTypeInterface; +use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\Plugin\Field\FieldType\CreatedItem; use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem; use Drupal\Core\Field\Plugin\Field\FieldType\TimestampItem; @@ -110,6 +113,29 @@ public function testDenormalizeValidFormats($value, $expected) { $timestamp_item->setValue(['value' => $expected]) ->shouldBeCalled(); + // Avoid a static method call by returning dummy property data. + $field_definition = $this->prophesize(FieldDefinitionInterface::class); + $timestamp_item + ->getFieldDefinition() + ->willReturn($field_definition->reveal()) + ->shouldBeCalled(); + $timestamp_item->getPluginDefinition() + ->willReturn([ + 'serialized_property_names' => [ + 'foo' => 'bar', + ], + ]) + ->shouldBeCalled(); + $entity = $this->prophesize(EntityInterface::class); + $entity_type = $this->prophesize(EntityTypeInterface::class); + $entity->getEntityType() + ->willReturn($entity_type->reveal()) + ->shouldBeCalled(); + $timestamp_item + ->getEntity() + ->willReturn($entity->reveal()) + ->shouldBeCalled(); + $context = ['target_instance' => $timestamp_item->reveal()]; $denormalized = $this->normalizer->denormalize($normalized, TimestampItem::class, NULL, $context); @@ -146,7 +172,32 @@ public function providerTestDenormalizeValidFormats() { public function testDenormalizeException() { $this->setExpectedException(UnexpectedValueException::class, 'The specified date "2016/11/06 09:02am GMT" is not in an accepted format: "U" (UNIX timestamp), "Y-m-d\TH:i:sO" (ISO 8601), "Y-m-d\TH:i:sP" (RFC 3339).'); - $context = ['target_instance' => $this->createTimestampItemProphecy()->reveal()]; + $timestamp_item = $this->createTimestampItemProphecy(); + + // Avoid a static method call by returning dummy serialized property data. + $field_definition = $this->prophesize(FieldDefinitionInterface::class); + $timestamp_item + ->getFieldDefinition() + ->willReturn($field_definition->reveal()) + ->shouldBeCalled(); + $timestamp_item->getPluginDefinition() + ->willReturn([ + 'serialized_property_names' => [ + 'foo' => 'bar', + ], + ]) + ->shouldBeCalled(); + $entity = $this->prophesize(EntityInterface::class); + $entity_type = $this->prophesize(EntityTypeInterface::class); + $entity->getEntityType() + ->willReturn($entity_type->reveal()) + ->shouldBeCalled(); + $timestamp_item + ->getEntity() + ->willReturn($entity->reveal()) + ->shouldBeCalled(); + + $context = ['target_instance' => $timestamp_item->reveal()]; $normalized = ['value' => '2016/11/06 09:02am GMT']; $this->normalizer->denormalize($normalized, TimestampItem::class, NULL, $context); diff --git a/web/core/modules/shortcut/src/ShortcutSetAccessControlHandler.php b/web/core/modules/shortcut/src/ShortcutSetAccessControlHandler.php index 3a55f74999..87be25d2d0 100644 --- a/web/core/modules/shortcut/src/ShortcutSetAccessControlHandler.php +++ b/web/core/modules/shortcut/src/ShortcutSetAccessControlHandler.php @@ -20,7 +20,7 @@ class ShortcutSetAccessControlHandler extends EntityAccessControlHandler { protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { switch ($operation) { case 'view': - return AccessResult::allowedIf($account->hasPermission('access shortcuts'))->cachePerPermissions(); + return AccessResult::allowedIfHasPermission($account, 'access shortcuts'); case 'update': if ($account->hasPermission('administer shortcuts')) { return AccessResult::allowed()->cachePerPermissions(); diff --git a/web/core/modules/shortcut/tests/src/Functional/Rest/ShortcutSetResourceTestBase.php b/web/core/modules/shortcut/tests/src/Functional/Rest/ShortcutSetResourceTestBase.php index b25f028d1c..1510df288a 100644 --- a/web/core/modules/shortcut/tests/src/Functional/Rest/ShortcutSetResourceTestBase.php +++ b/web/core/modules/shortcut/tests/src/Functional/Rest/ShortcutSetResourceTestBase.php @@ -85,4 +85,20 @@ protected function getNormalizedPostEntity() { // @todo Update in https://www.drupal.org/node/2300677. } + /** + * {@inheritdoc} + */ + protected function getExpectedUnauthorizedAccessMessage($method) { + if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { + return parent::getExpectedUnauthorizedAccessMessage($method); + } + + switch ($method) { + case 'GET': + return "The 'access shortcuts' permission is required."; + default: + return parent::getExpectedUnauthorizedAccessMessage($method); + } + } + } diff --git a/web/core/modules/simpletest/src/Tests/BrokenSetUpTest.php b/web/core/modules/simpletest/src/Tests/BrokenSetUpTest.php index febb9cfda7..28fd31beb3 100644 --- a/web/core/modules/simpletest/src/Tests/BrokenSetUpTest.php +++ b/web/core/modules/simpletest/src/Tests/BrokenSetUpTest.php @@ -12,7 +12,7 @@ * database tables. Therefore, we ensure that tests which are not set up * properly are skipped. * - * @group simpletest + * @group WebTestBase * @see \Drupal\simpletest\WebTestBase */ class BrokenSetUpTest extends WebTestBase { diff --git a/web/core/modules/system/system.install b/web/core/modules/system/system.install index 6eb8c12005..91d92ec9a0 100644 --- a/web/core/modules/system/system.install +++ b/web/core/modules/system/system.install @@ -18,6 +18,7 @@ use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\Core\DrupalKernel; +use Drupal\Core\Extension\Extension; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Site\Settings; use Drupal\Core\StreamWrapper\PrivateStream; @@ -2173,3 +2174,67 @@ function system_update_8501() { } } } + +/** +* Fix missing install profile after updating to Drupal 8.6.9 with Drush 8. +*/ +function system_update_8601() { + $extension_config = \Drupal::configFactory()->getEditable('core.extension'); + $install_profile = $extension_config->get('profile'); + if (!$install_profile) { + // There's no install profile configured. + return; + } + $modules = $extension_config->get('module'); + if (isset($modules[$install_profile])) { + // The install profile is already in the installed module list. + return; + } + + // Ensure the install profile is available. + if (!\Drupal::service('extension.list.module')->exists($install_profile)) { + return t('The %install_profile install profile configured in core.extension is not available.', ['%install_profile' => $install_profile]); + } + + // Add the install profile to the list of enabled modules. + $modules[$install_profile] = 1000; + $modules = module_config_sort($modules); + $extension_config + ->set('module', $modules) + ->save(TRUE); + + // Build a module list from the updated extension configuration. + $current_module_filenames = \Drupal::moduleHandler()->getModuleList(); + $current_modules = array_fill_keys(array_keys($current_module_filenames), 0); + $current_modules = module_config_sort(array_merge($current_modules, $extension_config->get('module'))); + $module_filenames = []; + foreach ($current_modules as $name => $weight) { + if (isset($current_module_filenames[$name])) { + $module_filenames[$name] = $current_module_filenames[$name]; + } + else { + $module_path = \Drupal::service('extension.list.module')->getPath($name); + $pathname = "$module_path/$name.info.yml"; + $filename = file_exists($module_path . "/$name.module") ? "$name.module" : NULL; + $module_filenames[$name] = new Extension(\Drupal::root(), 'module', $pathname, $filename); + } + } + + // Update the module handler list to contain the missing install profile. + \Drupal::moduleHandler()->setModuleList($module_filenames); + \Drupal::moduleHandler()->load($install_profile); + + // Clear the static cache of the "extension.list.module" service to pick + // up the new install profile correctly. + \Drupal::service('extension.list.profile')->reset(); + + // Clear the static cache of the "extension.list.module" service to pick + // up the new module, since it merges the installation status of modules + // into its statically cached list. + \Drupal::service('extension.list.module')->reset(); + + // Update the kernel to include the missing profile. + \Drupal::service('kernel')->updateModules($module_filenames, $module_filenames); + + return t('The %install_profile install profile has been added to the installed module list.', ['%install_profile' => $install_profile]); +} diff --git a/web/core/modules/system/tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz b/web/core/modules/system/tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz new file mode 100644 index 0000000000..7fe17c8744 --- /dev/null +++ b/web/core/modules/system/tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz @@ -0,0 +1,904 @@ +���[\�drupal-8.6.0-minimal-with-warm-caches.sql��io�Ȳ :�ϯ�.pN_��/�����.�]�kj pIJ�)R&)�����x����wR�E[�m��.�����2"2"���=����s�L�r�^'�=K�����s\�������h�g�l��c�e�n�!h�U9f� �-�Z���^k8 +�~�6�:]����Fh�����X-cҊ�������R�l�2���ݰ g� +��Fh�����(��؆���C�����?����y���k��V�bc����Ϳ~˷d��>��������ؕn��_�4u��k�~F�>��[z��������� +���_��cӱ����h2��?�����AWM����������FW��x��O:�v����܈�I����8����an���7jf��y�I�:/q����W��� ���8^4��ӯ@r�n�����#� @����b�� !�����v +Mݥ +u�k�lq�!�����M���P +!��R��J��z��>??-@2���-���(s� Z`RɢiKdz�3(3r-��R\��4��$|t�hݺ����Qd��o%A�x�t��d���D"�+Q�B ��e&��Y�"�oL�Y�A4��'���g������u<��|��7č�78v�S�?�7��E���ci�S/�G�O_� ��?}� ;��]݅p��[���O���9���$^��J��$j+qۖE�d�&�T��y���|k䂮3�`��(,#��e�*^��Tj�����on�|�D����V慸� ��A7����wH���k#IߪpH�.y4-�7��|�bl���C��OB:h�� +�`C�L����{���w$�腊���' +�7��̇�������(�~��V�}~��h��R�$��S���@6�爐EZ��^iV>$S���Y��#i�#��h<�i��|��7Av�^҅��A�Q�_��تObTPBH�)ȳ�g9GW7��Y?_�蔪~P&G���T���ai���dڨ�s.�[ZN�6!���#D�E�f)�9TH�^7�3���K� $+�Qq(%f�*�]�Y$o����*�c�V���k�M<���1�a��@. +����q�'�K� ���+��Sw��>�5���I����V #�f4��4���K�� ^�EP���4Sq�e��Cۨ�I��C�Fb$rV�S:ã~��Y�؏��9Q��X�d�� � +�Sst8Ϋw +�T���v�_�j�6:ߛ���M�t�o�өv +P1��EŴ����f&s#іmTA2T�ֶ��b�Wf��̯TRJ�W^��l^�'��W�LrP� +@Dw���m�#k�!rU��m�k�ޓN�b �a�[��Pӭ�r1��h���a������G�Z�$/��Lv�*��FT=�J�lE�-@��}��T-�a��8-�J���ʺ���F�:��c�!-`�p�_QB�J��) +�X���\E�����YjR�|^�!;6��˨KǛ�0U��s�]�KH�t�*����d�h�C��&�+��~�TI�����(�$��Ԅ,=��w���+5Ϙ��ޕ�Gxf]R��3�+��\�a��Wřh4����>(�q����E,_+�A(�B�c��@{�Yh��A��Ⱥ5�v���^�٦b�}]�R��D�������$���(��J��^�ĩ�z���Y��h���&6�ՀUYDSu�}�ڇK��?�ԉ��a���?D'R��e�z�j ��z&�XtT�J[\H�-���|XA�T8+��|�+����M^��S)�=J_�D'�dڻN�I%����_�Q�qmA՚u���g�@�o�w"�f]����)�e\��2&�|�&���f��y7��T'%}k�����@�������)�C�H?��� ��y��C=2��;K;tpK�eT�����5!�F�o����o o�{N<���^���f����#���=$0ǣ'���.ABt0��ؙӎ�W����}!Z?�f[�ןѾ����l�_��@�ۆ�2�\���y��_� +�(��x�x� �6����%���+�"���P�d�I�� gݾ�T� j�~!n�l34����}!�A�� 8T��Q�A�O �w�5 �r�.��N\��@��5�)�^h�,���~,���Tx�����1�/�A���y��肠8tJ *eH�QF)C���>sA�5�{Ğ�Ԃ%F��m����-�_r��~���;�G<�C��@�>A�y&�$|(Qʌ?���C��Ӆ`���M�k��R��>$����b,�{��K��e��.0�P��6>��/9�*H��q@� �%5���\���|.|I���P',*�_�32��2�WR�=�CA��ڢmj���ʗ�F ��q�/��N�A�W�F�Oit��)'/E�2:~i�P"�Y��lg({@�NL���/�c!;_҇�c�w$��KD���9P_�-dR����L��"W�,'J[(���2�Q+Z����3ɂ��Y��Wi��8�f��C�[��ޓ���ć���q�����t��4[��!u�c���>���m�c�klc�#�66��h�Ȟ�Al��lc#=u���$��}�`��oqY�ؾO_�a6�7����~��7?�/��m�5nOg�nH.�6)���@C}��%;�����X��3�9��x���P41������w�kV�8�$H� 5�٦���,z7�Ik��}�����N�oy~+�&. +�������"Т.z����?�o�:�:9n����tڭc�^��QO�/m�-sw������{�|�����C�}Bn|�<���B�z�-�?�pJ���"�h���Y�����~����1L�)\���R�m���/��� ��؉���N�C�zI$v�"q�Iz����y�Ώ���OT`� C�e���J�K���5UФ����N����n���8H~��ҰR��&��i�i�MO �>��O��8X͏���%?���]4y`ŏ�D4[wH�y@����?����Y�� �p��#&uZ�F#~��yBNm����&�Z"��?9&U��O4@�zd�i��1���T/��ᐬ�{,���{H{� $�Az��@����)�&i�z=J��}��XjKm����Q�2>U�b���G���p2�P�)!C�Ҳ@|�H��C�8�IƇ�!��Ο�O����N9 +E�@fw��>���]��1����hB?�;#[˳?�C3���� ����~7�=�A�uE3<�yp2���xzi�/z�|���f�v���\ �_�c�;�D)�F"��#��L��xU�U�c E���0��ܪ���6�yz��4���e����3>��M�e�\Дo��=���o��o\�?�v��� U_���ik0���m'�"E}hG�46*a�ԷK�_��%��xw od���/��2^b %>^b�������~^b�c�N�:{��R��R{d�/5Q�^_j�$�ߟ9U�9܇���h����a�����Kz�i$I�[���Uw��k}�Z�և���k}�Zs�Z�H ��֨����yA�Hn5k�=��� PJ���f�]��@�O���xq>� +Jv�E����=�?Qa�������yCX�(*e����𩗶O�P��=%|جRX���R��2싲��� +i苉j�|h ȇ�|h �A�4�8�>�Qx ��(m+ �H������"<A�����W�-���d5,�.6�/�O��F��J�Q�P�|6���S� �{�rZIB3F�T 9μ�M��D�Q)ϓF�g�5<d��MEU�J$JVE*��{�� \�)�-{����8�~�rx,��<���s"��#��`���T6��[ɆPj���p3 AU裁�AB��iX,.�^�#��Ϟ 5�g|�l�X=%iI��'�q�a��/ٰ�. [9M����I�tf��G�].�����2u�j�yO��1�HiL��I�~�e̊��/?"L�@Xd%��g��1dFy�g~���O��~AX?iR2~�9??��H��H�874���;��,�d�P� /�'�"=�V!H+�6>(�(?|�����F�Wt�ըIbh�w�������Κ�MO��05[��bf��Aq^��"��O�g�s����1u/&�W<�~h�`�f� �D�u�ƶ�����;�\M@�(�c'�k�Iz��r�q~s�b�K����$�I�4�Z��%o=�LjCRc�5]=��A�-D!�>>3̦}�pw��B:ͯk��� �5:[Nhϫ��H��;���I����=��#4{�2k?Q +O,+!��D����A���4�����G�O�iSY���%�2���1&I��O8��v�pbGf �� +�#P�#�I��9��'�t�B�&?E��;�)ĝ��?ybhx_X�U��w�k"6P�A/�S"�� ��tƣ�P��n�)����qa�t.h8}�����P��{��h��;e+L�5F��׆��.'�W�@����B"�1u�®��������m��a�Й��\MQZ<'ω!sz�j����4H�2�}������̄g<��T�*�T���10u�$�߆y9�p�tW�Eί�ĕ'ߕ�҉�A'E�ʹ�û+3��26�Y����v1��3D��*q�m8?LUb��7��زI�wx2��r�ğ�t�ϑ�T�,�e}� �N�)���zo��a�+6��kϾ/ �< :�w�:�1�~��_(Q�!;�f��L��w�p~2���կ�%�����,5�i�=|\�q��I}�꒢h��ܞTTc]�j��]<{��r�$�g҆�g�T���[���i��ʩ v�q��>�s.f�UƊ؍���9ߊe�C����$6�f}��;�����p8����I��.`7�t#Lޏ<��|���bv>B�]��w��������G^���Ro|��K+�&�r\�$3.~F��g�T~T�� a&a�,��x�*�玬d2�t�P��'��`h�a"�. +b�"S��?�6�.��2���}�R6�R���O���2=����.�Lʘ�z�)��WE�>��q�qx}������5t@_?"�2��7ӂ�P��3�iZ,aa�#>lX�ȥ6ote>L��2�0;ؒlh 88�7�Y����d��JEm�PU^R5MY����j[��ڂ�x�%^5XS p�eX@�EKQuӴ-k�pS���Nb��!;�)��V�U��<s��$��s�����;?�\�;�XZ�I%B��=���r��8��Dm-S�,�`d[��PDF�,��5Y�l ���P�ս�IÞqU��l��5$��Y"��3�L��L��^^�Jkp!�M+��̩2����?K�$��7�I]~]��GUX�}���Q+1[�e�fsK9�7�ͯ �L��-����s�y�y�m�0̩H� ��d�d�O�I�d6y6�X��[�J��"�Р(� 9"w�� +s�DZ��Cš~���D�L�=�/ +ۋ=�H�D/��I��ZCdq�F9Z���QAG�>����T���I���ҳ�ů���V��L�)�b�o�� �7 SQ�TlFT4�1�l2�`C09*x��������.����tK㮟w�vO^�/��[�>���Gc��^��z#��]b�]1H�f�b�[�X�l�J���%�R�l5�g�� X:NZم-�S�kl�����A�*�?���}A,'�Bʼa�#�V�z��֬���jN�c ��"˘��3"Pc(<˨�$ +���2ǿ������ֹm.�ͭ�������)Gގ��<=�Cu�G����b���ln˧��8��f��|ŭf&�8lJ�,!F�SW��ʬ��g���)\�Z��߇1pռl����,#�,ܖT�gT��S�MM�!�-[�+Ʈ{y'�G������a��Fv#����79u����[(y�H��^��LQ���%�\m�,C@�^�H�%�?H��\���p�*&��mCK�Th���"#���M��j�U4�I�M̔l������l���G'�{�'jh��'��s(�����o�ɸ����"�e�Wf��?r�v�yw��N9u �5l�J�Tf��w>��Y�u#�5��A s�&�i��r@eD��CW%F5E���V�|Ҹu#��Z�=<9z�>?o]�/�������܁����Vxg텛u�M�*8/���g,o��_f��Ԟ9�!�� �Z�.i�vk�ޚkҬ�y�U���A��Ț6� +���6EYT�{���)�K��[� n��<]���d�V�|�u�9^����xB�y"�ƽ�K�o�(^e?��Qթ�{�5�r��Q��4�|ߝw�0K�dM`xS�ђmFX��Ye�&��W�j<��tP?o�9����\�n�/4���CK}z>���'���wS���܇u�]��c�N�dK8��kH���*3���e@D]m�H���i�*r+ +�Cn�-�$ʖ^p=��V��ϱ�e��B��K�Xh�uV�xN�������~*];��r���uV�N��:�A����V�o3A�TI��_O4�+�� �j����u���Wm�uV4r�B���[ N- 5W۶nVT��*.���%h�(�,��Z�aJ������뽍I9�\ʃۑon���7�|x�}o3���z���q��pf�U�4z*D8�p +�Rx�4����Z�@�.��W�,_E �b��ο[�����:�p�Dm�}c�j�vу�(B-N�y�1MdDӰ�m���W-�l��Qi�Q��م]_�z�|}��W���`{��4rثK��Q��z�S�F��v�Lu$�;|��NZ?d��ẁ��D~����G;�|`چ4(d@�"����h��� $�~}X�rp�lo������t�2�̓��yg���v�+t���wwoTz2@�|���2�̒��WPl�gK�D�'��41�?�D �IcTũ��Ȩ�%3���oIǾA|W�F����uu�tl�n4���xCF���pu*�N�{,8)K á��S�I�v)JX��{�~y���)��h2TD�4C2ƒY�9UWW&��O�ɣc�=\r�r" 5+������~�z�;������M��[�!T��xC��O +�����C>��%��S?�t�X�elH��I�EaLQ������wB��hG� �o��^���sss�s�L��L^�q�m�j�#(�!����G�qs�$��E�O�̇|]����))<#��芭1���"��6g����{��\�n�K���U����5�ww�o���>��/A�*��P��;�n����$��E�%�(�z~c�`5Y�$��X�bD�SU�u�&_��(��Dҷ�>> ��wϷ�3�nx��W;{g��s��k4v����-5C <J*��!Ԫe�g ��-m4}P�.\�*[��x]T�����TbT��^-U� ��e�=5���o��㓱��;[���{��Ioko`�7��i�~�D��$�(E=D������<[�h���Z��n��E���R0����O��q�������2��C�@ 4K3L��¾!x/ǒ�������mW�r�����HSw`?ܯ��h�fA�%gJ����@Z�M+r� G,�h!��A�U�U���ŋ����A�P�M�lFy�S��ׇ�.G +���L�M����=�k���P��������2�9���q!8F�qa��~Sn07!���������0��A�:���� +�Sedy�PECedK��Pa8�с&�"o)���m��';b�|U��e%irlN&��������w��~��z���v�M8�3*�>�t�XE�˽̼B����@��a~E�d� �E/���ͯY��A|%��̓�qt]9�gG)���d��d��U�_��j0K�z}�����e��!3<�Fd!'���� 4U�d}�\@v)v&w�-�λnz����-e_ׇ_�3�cF=�����{�S�����,,ۈ �J��l���2�S�9�9�쬵e�-��%(ǵT��-VBBM!��`�5I�[�DYfח\�ܻ�� ������7ý{�����K�n����yc�"��{z;�����8^�����B��|ĂlH��8� @kBPʨ�m0�$����-�=�5�����O�����]f<�<0�I��{}c��v_v�.-a��fE�q `UB��߷��oC@oq8=��Vh5�F�tӒ$��l�l�2��*�2��ۼȪ�!pkKA����s�_�q�)��\�ƕ�m������Yg�{{'� +ߋGWj���J�'%!Ҡ�� :^���'�&d%���=��x֒tEc�N���4����H��Bt6l�,OO'/��M�=\��������0�n;��S����U<+b��P,�C�8SP N�*y�6��.����0��9�`EV�` �m]ftI6S�y����ں +����ǧ�fo$�������m^=���\�m�^m�Lt����S[�ªH/p�N����h�3�)%q�������4FUt�1C�%�R���jyj\�um��~�}����������ݽ��9ٱ�;��K��?)�R ���\\jI�����˛�gh�r�%��XhBvR���Z�A/��x��1I�4�CҚ^w� ��iORU�O�*�6NrMjy�L"e�U,ͼ'��3� ����*t�ZɲlE�l6��[�3~\g>;���{)�1����������r����Ó�'�>��{�tR�DN�̿��� �H@���!�^���qq��Cؠ4��4���w֝�y�F��Ex?p���4ޝ�քa�'����xt}uw�![rJ��+�v�z\/ _La;p��d����Ač��pb�wג*�?;��ؗv'z���������6�²d�p��]C��-�j#�I������^m^l����ă�sp�������u����������=b����7Laf�@AJ�÷&e�qJe��)���3�t5Q�uFc5��Mֲ9����c��_2?H|"��n]����ͣ�|�/���Zx|'�;G�~G����Ags{�����ݖH�)c�畼�+/��%��)�S�b�c'�T:�rf�Z��� + *N���M=�O'e��Q�{���k��@Z;���f�.���<�䥤XDUBF��]JY��K0��5`�6�)2CLw���a|�/O�!F�F`N�x\�C�W�U$��qJ��! L"�YTH"w��gԅT�@���yPa��݃����Y�EWR@X�-�2���<��w��,u��Cm[{9�#Q=�*)��A��=3�g���.��!� ��m�M����xݤX���QY�%��o��#h3*� +� +2-V}����ã�H~wG���C�1��w�K[t�z�ֳr������[����X���>��LHS������Δ��1�lZ��Z��uq`d}�}]�_U���'��_�ꚭE1�3���{����O��k�Q1�K%��n*�\��'��Q�+fYj��ybh-���M�Q�Ȅ��4a�;��ѕ@�;�'a7�C%9�d�}�ˊ�=���D�����`���l�W�c��^�ߍx��E���/�����>�mXW����2��M����������y{}vܹ;�јa��L|d������kw�y����>w��?l����Z�-�o�6V������,p?ղ��W��R��.�Z���Ӯ0P���.^���3@WFDE +5K]�5�m��յ=�D��q�r.l_���7G��h|2�t���`�LǗ���Û���AVrf�xO� ��i3�I�XZrm�F�qkN�KՍ�k8��>�[~{J�Jv9��dAr��+����2�d��� +#��q��8�����"����寝�`�o�.ٛ�S��?y���<O��ː�Lt6On�n��[���N`���Z����7�C�%��#���n�-Cx��i�4�< O�f�#�*�XN�������9�O���#�3V��m���@��J����;S?G�\�zC��rE�Cŀs��_@�M��jɯ�� +����_t��4��e�dx�]0tYaxYS4��?#|k�;e/w���#�:�Oš����lg�fbZ���k��0g�P� +�s���#��Y��4t�n�P]�����En>����|n�D�p�~э� ��e(�"X���P��Y��UF��$��)��� +N7@t��6�SO���(:=�X痛��f�s����>w��lk���[�V��#��J[,�qNZ,��ɉ^��DC�]��� +j���d�uh1�*��[�Κ#+�ȩ���d�7Ej�}+���w�{z�������/O�E7�����w�y +L��~1`O���XU,D�^�Ȅ��2�7Ca�ۛ#o�mT�mQ�����*�*��P��-h?�����%��[��Gg'QhMz����g�W'�ų�0�{�=cn �W�Z��e# ����&:X|'��������pM��*o꼦����"�`/0��s�hH*g)��K뻛n+�j_ۻq��Dx��ח���p{�2�=�����w7�v�io�~�l|���,*��D�?Ӑ�{S��E�㿺����fJ� �cɜ-Ef4�� I�!p���F�d�|t��d2|�������w1fM{<�w���Iп�]G����������X�2�J���jԊ����-��_�oe�� �8�s�#=������=�KО����A�GQ֗��t_���uM�$K�__$�)��c��sܗ��oܟi����3��T�����N�Ӊ���s]��������۸U������p��WK�o��ᕌ�ee ���Z����C��аЁ�3�(I�$Z@�__��):윇�pi�7z`��o��ıޝ�oo[9��G?[��T��k�Z���JIPh�@���(������'���u�p�����E��"V���/������]>\�g�m��7c����~G4﹇K��-L+h �P��A{ +4 +� ��(�+��<��BP��c=��5�� y����s�@���b5��#�]��.��|��܄�=��N5u<yp�����` q�m�3n��6P,�nY$4}�N�P]������L�( P >�<�yaԵ�I&�%.T� 0�q��(�����Y���Ǘ�q� ����3eS��q�R��v= +n���+V:�9��l~���qo����W����'ʍ�/u�7}�f�RǶk$Q|��ɉcKй�ば�ݢ,�!����[���Y�܍� ����M��D�JGQhyѽz��i�[�=�=�Y�<�Y2�_����BR�Z3ƣ�'�w/�(����u+M�S �f|������I����405M���C��s��݁��F�.��@4q�R���������;���ͳ�ǃ��1���ro�rWڒ�'��Kn.��:�z.@��=8��zq���`e����l��p�:���xs�;�;`hz_G�oǃ�Sd�,G�o#00�ڽҵ�����^�q���+�����������U����Ӄ;9?�����{��g�OW�\,��97��C�Pf�:��^@̷}'�q^h#����W�����`��yd';���mZ� +?�^��3�z���"�hU�O��Sܕ[7A����n��.��2[Pp�Q�\��y���v�_��&�⑵˾\���r|�q_���e��6���r|"��FyF���d�x .��B'-'l�m)�Z�;i��a�2��[7�U��V��-|�.V�Nڭ���=�&��y����>���o�Y�pMv��ֱ�=E����=���ss��;����N����o�\}]*� UL�N���2���d���P�6mF�d�1xIf4�5�)K�b�>~c�R�ݭ�������Bc�{��Sk�����DU���{}�ڻ��8�_@1�i~vɗ�qa����b���3��!l�EXE����O � +����]�J���"T������$��4��DH#��3�*����Z�(��K����p���v��Cmrqxս�~㟮�y�c��{sr�[����@�B��7�'�bOP%y�p�lCH�>�P�s�*zx#َ�����KfK6-h���&#"y�ڼ���-�|a��s]� +�I��H/ڋ�����܂����Q���>���e�L�1n��ͽB�m��W/��U��� �F�L�|�T�td� +��< ��m�:k1@2EFP�}�8�MS۲U��/u����=��й�z+s���b��֦1|�۹8s��WKյ�J2AB������'�7M( 7 �h����pw����G�,�d��i����&���[GQz<��S,�#�������r��r���y���ݫ�{_�����#���ł�1է��^�~A���Lp��oCU��[� �I�����&�ƈB# ɶJ�_��Ph���f��U�9v_):t ��'���0|t�{���{q�F���0�Bm ��}�М0������!Z>�h��oD�џC��gϱ������~����O�����������s�4t����r�?�3�S����g'��g��@��(�����a4����60@~���sl�G"OdHh��ϝ������z����/Э?~�����N���5L������ITO�6��ȴ��~�qUTtB��^_�>����z��`s5oA���qI� ��?��d��x21K�/�!tbY�83��9Rq�ڤ���'1x����q��W����������v�>n[��7���m}[ҍ#� ����TY�69��&��(e)�@�f�bI�����H�a��� W|��:���=PNODyط�Gܠsm�{�6{�����`Gt��ޅ��Tb'���"_Ŝ����I�&��.���n0*�ی�k� )���:e�$��Fa�����C��:Gb�b������MQ��x�t����?'_t�/�B��Ӗ(W�Iƛ�gd�~Ʒ�cR@s#)��>�z|�Ĺ�]r��|���Д]E�d�B����客|ә}�z�[����>�|2���՞�?�[�lw�.{N�6�Σ��e�R���?2�:�D�V�B�NoO�I81N.�ӗ���9���pv�l� �3A��aYV}���v�� �µKR*�� +~���lG����K~���1?��Z��ɜ�%�@^qR3�>@̄���d4�Q@tW1�"�셂H���1Q�xE��{�';�cRk#�Ɠ����J�Z��e@ ��ɱ�+ִ(�<����rY�� |s/p]�B���%�.��'�{���d���7�A�ճ*$�|�l��h���X�,t�� E��:;����y8T���3LV8}lK���sW�[����7,�Hy�YE����S��C +��MjQ���=��F!! �!�i���'t^�j�Z:���8�@!�"��Lf�j���C�/�U�AuN�?Vl�?��DxVx�_&g�����f_�����WV�ӂ���b;���}u���_�����x��ORN�"%U]߯8x�*V��ܤ�|�Ӻ�Uiᳱ�Y��02L�L[��,ȴ_6B���>y�\G�?h睧g[�.N���v�0��������M��<S�.d�1Pq�IGp�o����F�b��Rg?p �����?h� z��4�����o36?с ���Ň.�-��5�-�ң��A����F��G�������J�@.g����E��u�T*۵�����'�mޡ�Z�Q���j��}���|����_����jw���j��%>^����!�u��Pq<(��Z���j��@�0<'ا��4v\�f8��ql<E2 ����b�VT��DG��)�P;ǿe�`�N+7�3�<�d� ��=�\8���Q ]���t����i����Rt�U�����J 9���m!��N������ɠoa��7|� ��8_�5���ghz�M��nF ��6���#�.M3*|p �L���j,B4P3��)�[�V�����xa*��`==q�����RBF��ڭ�2�`a2�jW���qW<8�8R��ߍ��N=F�i��AgG�KE+E�ޠ�@P����@@N?�J�7���ZMwZ��<�y#��Hók�O�&��(���@�b��֜����h��� 6)K`� +�:����UuU���p�R�w�pF.֊έϭ�:C��d6V� +d1��`m1����i���{x�A7����CRO��2����|��IіFZ�_ �XI�����M�&ٷjp*��(���8V?픏��D�{�v���>��[q��ӴY�P�]VU�؉ �ş���k�%)��HYz��"巌�@�� ��5Ԧj�[b�����������b�V)]+��j���]l��W��Ɵ��E[Z|�Cv9��xd������Yˏ*��b������Ժ�v��u�}�;WLJ��U�����m�y,�x��4����p�4KE�T����Oo2�G��� +~�!+�"0��s����ږ� +�A����+�,y���r|rf}�z�f������k`<��[j����<�������M�Ph�le�vK����K��+� 8a��zcE��0�Ա��\i:�&C(#(�it��9ZI,�m�<oF�P̕����ic`M�Y�0���1�sڹ���o�7��ѷ���+D2w������l�w7��`Q����l�j��ޑj�� �TS��Ѭ��i>�O���Ω�$%��κU�?�����w&o�J��l��&��F�(��+t�V�FJNN������V����{�Q�'�~@ *Ӆ� 0���'�f�]����)9�u3�O�,��R�*�z�hĔ��p����߇ʖxj�7���ǧ�������<1G��g�.gw:GK�\��ڕ�Ƃg`�"�߾������Z��ʪ��7�2�+�S��8�K�U��Jو\R�?�<�pW���dHW�����!���������Q������ 9&�y +���#�l��p<=�����/���A�2jf��y�I��n��]��?�_�`��;M)����+r�5�gȒQ����Ғ9�,�0|�!�91���K�&�f��d�2(�F�)ᙺ�'�ݼ�r��0S�o�?e��h=�I%��-�T�V�DL_�Kq����n�p�ps�� +p�/G�:0D,��� +��QY2!�F$Ra�O����� ۢ`M%j^�Ύ���cf���6kCm�mvccGƎ���pM�[�g�~�\���O���~���PwUݍڙ���?�τ����u4YYp�'��Ct4�����I4�G�6��+�����v���_�i&0قK���,�o:�� ����`߃���kΓC��}с�vM���2�p♱�P|q�+cP� `�n��R�E.=n��n�� �����8C>�8��Mj��łv� �bi9��;�F(����z���6���i�DDU���u��\��u�i�Z����N%�lqx�P�9 �B���� ���<��8,��l�C���a��I�Q��Y� �2���8w�)IZqJ�!+M�,R�+z��Go�{%��(��,�F�I$7 /8��>|E�p�wv�����T���o�4���H�J����� �&KɅ[���X����G�Ĝ����Mѯ��s\�d:��<����H�����#�&��N�WB�C�7�U�B\�B�8`o�H���t�{��s���]��J'A����H����rJ.D=$3�[{�8 $�wP�=B�l�r\8g�P?r��� 2�X��t��Av3�mq��]��0*v��ד�SK_'�A܃�� @�+%w�^ȶ�xv�m�q���7�L��+I�<$x�^�������B�4���JyP�F��ߠ�[�F�j-}sZ�^L�g)V�㋘�R�FGF��<�v�0����I�Ϩ��|��� { )�5��l�����wZM�l#���pB���;� hZX�q3)H�PM�k� ��|����s����U���Ȍ �~?mRZ5��R���JU[���CUҢ8�]\\}�3M +t� ��V��_Kg�f�lc�l��M�α���y~�N����l۟��;x�����K����M��ƾ�L^"�Ϯ�Ce�ѯ�B�x.p���\�p�8��8;��I�i=mn�n8��Y��r���Ne��|�?��M��@)�l|r`������$��;ch;�i���Q/{>�.����OL��R9NO8|��8�n��$HHj�Z���ep|o2��H7�u3�Ȓ���UZS��J��'��M�tt��{��@?�Х?3I +>VB�SL�<J��x2i�h��ً������M��0�$��!�RJ�(����!Z��'@���Ey�ء@Ok*Flc_)���%�"��7}7q($E���3`E?� d5��� 0�/E��#o%�6%��<��B�**�쑏�sH{�qΆF~�a?��F�a��\ri�a��CƓA���Oa��r��4��A�Z�|^U��,pzN�t���!=� "�03�H`��4yJ�p4�pې-�ѭ��dRL��]@2�DZW��چNu+$tBHGD�1,�b�J�2&��@��$��p�!�9~�ԩ��N1�M�"ϓ�1]zt܍�C��(S���kZ���(����~�R��u�[ X86rʑ�s��OY/T�W�eڈ��m߶�q�Nt�:�ڡoՍӥ���(�Ů42�O������M~:E�D�v�;,5N���O/ ��E�������������ހ+��kw�s���^F�3�T��Nt�MJ���r���������m9�;�L49��x% 2��2�� я���r�h�5�P��X�Kz�:(�;c��EUMD1�֙,�rB���0I�L�bҬ�Ĭs�f������'�21zb� ���*O�駺J3|2"m�2�y���KŶfY�*[S����%�L��3�(����݉��">I�_"3�<I6E-���;#�H,4I@x�IJT���$�#~�)�ą�R�;�wN�1҆h�d�̫!�j�d�g�+��v�U�8*�ւ�;j� +� ��&I��H���a� ��v|+Q�M����w2�z�L�z�#�S����I���Sө��.�L�*]H��O�Zan��:��u|�_���@�h�s��_ +_��Y�F�J1��D" +{qb}"�U�Pҧ��H�h�S:�Q9#�?��Ce�c����mH��xp��i���F�Z������Ae/OA��tއ�9V�B~�L�cN1A�:�jr�D3�*}��'�����*H@M���A��&��L�BT.H��Cu�z1��6�I��q8Ŀ�cU����s���Sod�R� �w�uA�����1R�yY�Tc���Bl����P��:�����Q+0�-DJ��'��.�ܻd�@��5��a��h���)���M��/��m2�n�M�:�$�Ͳ��>p�0n�Sܨ5 -��e�un��aD�D!���B�kЦ!�Y?�������#�����%䒌�������U���b;ZJ��- q*���5s�D ���W���.��j�~�h��?�2�a��~j�B�ˡ���@�R�!�����Z$�'��H�*�T�0t�����,<��A�PR3+��z��M�Z�{h���,�Dĵ�Fg����C�^W��"| ��R����� �X[l� ��e/iz�ĥ>����2��ᅚ����U�K�!�F�ZL���b ���`��uv�0|7���T�� +��S�)��Tчt +��@�|p*��+��g�H�U����hn⡮�HE���lg�u��xn��r&N )!���?�w����ͅ��'��}�Far��6�(Cɖkˑ|ʑ�*�E^���2![�6���}����ءU��ӱ��[���wq��|q\V� _��+$�����B�� �@*����X� ��ϋn��8��e?LE� ںjP5�n�Q>��\5"(_ Ŷ�5�+n �:��X[L�i(^���kM�@��GC��ܫ>M�n�]��k��� ��3�`�s��q�H��H�b�j/Wp��p�&L�i�t��"MAeI��.D�C����l�@JR�ma=�/|B�T��(M�fE7�KU �on��>��zQ�qGOe�,c�'�h�B�K@�u_%�d��������tͱ��j���P}ʇ�^�a�V��Y`\�oø���b�|n���hY9"{߅�GE�l��*��byα;�@�����c�3C��f���-4�w� �>���TmW������E�kFM|-��S����C�+@'�Q�Z#3*m�Xf4J���y�_%��^�N�'�-��U�S��(i�M��+)Z�*Yi@l�^kMh�p�|?j��P���$"� �jDmY ���Q!�:y;�Լ�s <R&���p}�ַE�r1�y��-gJ�:'W{����ܯ��������d���i:� �ծ����N����!�L��L���UZ�Oz�;�k�'U���g��@�2��o�r��6 +�|��U��j-��Bo@���VNڙ���UQAl�ق+�uy���2o@���VNԙ��������fEuRhU@.�`�@\Q�� h9���i93�:���H��2���i9v�@��D�rRo��e��r�.?�zA<�I��n����Z�pd�f�q�#��+���>A�u��8�>�$w��"Z{�%�^��[7�T��cJ�K�*���P?'Qrh��y2Һ8�,�Ь~ +(��B#R�5�)Q���H���3H��%�t�Fp�q�Im������"����= � �@gz��i��p�c'Nz!I��/��5��q��í(ʠn�tCcS6o��5��bj�I��L<��*:c�f�h�W�bI�8�V���+��K��5�;²���t�g�^��U�F|=�h��Y_�^���Eu�<�Z^H��_f�I�IY�ʗkx�8���˅��V���aS��Z}�PAqt�b^�%g�e=��O(쐎�cm�'(m��m�ѫW�gM?S璶"ѰE�&�A�U�r|t����ę�X� �/W�$ +3�B�k�FkD!R��Nڿq��1�Y�ۼ�U�DvA���8��`Wxy:=Q�����c�m����S`v�n6�r�ogGbq6e�ӕ D���L�<2\R��]#*_(�x<�����z�\��d�=�,�(OU{+*/VW�*�~��s�,1�,J�f~u�*51k~�JD�E���*6�W���þO�UG���j�(ga�!^T7�G�f�44d +����V{��WWp(��<��WЭ�|Io�9S?,��9��(Q/�ȝJ�ą0+-��z�eN���4Kn�~�j��״5�xsT.�b��F,��c�F�b|�i����\�G�2�*�1O�7fƅ�=;ѷ�>�(���5�7R�S2=�2��-埙ú��{J�\��,�=�w�gJ������ +��a:袭��3�+����N*��I[�T�u*N��� ��en�uQ��4�3 +��)��I�3N'HB��:_^C�re��;�$zKM�VEڨI3���6�p h��!�R﨡]q�b�[&���6�����rl�MJ��`A�>�.��;�'�����6�s�C��f� �ON��pa�MN$*�tog��y���k53�I:�FL��%JS-z�t;�NZ����9 +M�¢�q����u)WZc +|_���\���7r��L�u]��� ��@tǁ>Du�>@^�D��V�������53�m����b�TE�I $�8F�^�.r�� _��6��l��W���k���R5�&��1p�mw!�z�����p7��;b�O��w�����8~�zW�ŋ8O�ma�*x>,���b���H�h��B]�J�TW��ݐY�ٲ�[g��K;u����F��ݲt�I��<�s��h ���%��Y�+�W�ꃹ_�g�D���D�(֗&����/�|�]>q|T��G��l�gշ�A�nUnX�����y�W�Rۿ��(5�싶�Q��^�ӗE��5;��q�K���gK�������J���'�<}������nQ� ڬ�N���x4ߌ_����_�� +��9F=��!�\���ڨ���%��`�3�+!\p(��7��D��ְ���G.жo��r`O˾$�[��+�����I�7]C� [>w ^�1�?�̴Z_�Zk���b��թ8��ᅚz�;!��C�!%�)�֡�ƚ)Uo�5�j�%u�]g��myx&�S%����:�B��T�Ǹ'��6ѭW\+�j���!�oSW��d���,�@K|� AO��1��зfT�,Xm�J>r��2?�B��P,>�Y�a䴅���A%3/X3B-�6.���\��Z�� �v��w� +�֨^a�F� +�����GVEߵ�X?�W���8.�&Z���OC�VD�uk�%���7 n��������::7�F����_3p��D:�_w���.� >&��kR�O���+P�g�3����};����s��c�:�!~| ӳ�U� �&��ϰ�� +�3�q�v�&�*�çM�+}�+w�M`�L0��f��x�&Ԯ�'� +�e��in.S<�υJ3�x� �� \C��Vj����o��:��+�����z����щ�QU|��sF,�W��P�`J �<����DΧg^Yw�:��kX/}�x��b~S��ͯA� �D��+H������:k�h�W��� +̩Y�n�h���aw܇[���{��4��`����M����Q��vK������G�{zS�"b�+���D�Z�M����L���V��(&̤��L������E��D�)r��h��o�~E��Q��"r��5��n�4t�l�5��Bo�~�ߝ8�h]v����*A9M��GѰk�>_������ˋ`��I��X��y��Ѥ�_��4N9 +���QG���Սȱ�e�f����ݫ�txGڻ����7S9�����}��r�E;O�;���;�6<xчf��S��3EC�&.��L!�:?´/���@��0S&cD ��vs�5���v0����m����M�u��;8>�<>�Ug�j+FݕV��[��l{�����m1�R۠خA)]'Th]{����:�C7�$@��W��ŌH�G�V���tT���Ƴ�N�y�JG���椨�H*Iq�@Ϗ�$����fA[�B}������BeHQ�M���~�6^m��XJ��6'��"6�����E^���L��L�hj {��[��Z`�'�^���$�m�<!��QiC�莆�T���H�<[�q +db#�bE�4P����J⦮���Bաj@�b�z�Fc,�)o2�>��h;�Φ)^�L� �o���΅5�S%l��4h%/��CO�;^c���u�p�j����A�OΌ{Ho��|a �8�8�l����%5��S>Z��Ib�� q��?N��T�{7�v���8�" �B���t����D���M��5����⊴�w��_c���+��To1.��UO�FD,W��s�%C��x��|�+����ފ�ۑK��6rB��1m?���������5�=�|U!�����i�%>��;�����MJ�W�X���`q�)"&M�����U��Kȧ2�tnR)o(�g�!��B(Ϩ���GMa�4Q�$�@uG���UdD�ڮ��z� ����^/u��Ty�w�!S��^�z�6��:��?c� ��N��.�:�9ِ��@"e/�7���%���0��#����V��>���T��"��tR�c�^3���jJ����9����6 p����Qe�O� /rn ��q= +�;��є/C{m�T��q��g��vaf\�E�s4.�آ*�Dm3�)�u�a����_~�ݍ/�ڙ"�M���%���M +Ӆ������f���n���ע�M��<i��$Jqf��- @1Jj��W��[t˒K�Op�ҿW���y���_r2���D������悪^�zN;���EX�RW�/3ԠfZ�$s�]���,i��^%���Ue��I�!CS`��ћma��jDž�U���p&z��8�t�u�K���}�̦��4,sS�+|����e!N㕴-U��rNT���2Қ^Ǹ�L�l� +��uw(\�=�^����4K;d��H�u��oL +I}�Y�^(1u ���������a�jܭ��C�4c���7&��Xt>Sf��%��e�����^�v]L.�vmV�R�K�"�$�0�p +@�V���u�J$d�g��n�SE}C�A�����R�'�%�v�����a��q-Y�\+t��>[s&0�v'v���f�$���yh��>��K~*|�� +��1��WM�T�H�t�����F<�'�A'7��8+���ŧ8 4|-A':�u<�H�� +&��AKŜ��A��x�l�nxu�E����z�Ml�趹���b���������c8p�cu��y�0�1��/��B���Y���c���O��R<��;d(�#\O�59���ZC����uS6�铪Rs��Z�+��CFLEvC��v(�����F���ay%sY�vYw�b��=���d��P�4��J�&�Z�⿍��/e罱�c��v]������o)J.�6Jp��aL�.CW�n�c�����U��t\Z�X�y������3�A��s�jJHJ�4vJ h��A�Y���!��6�u#�Ţ�_s�ژa1�p~ܧِ��>�|�Ѿ-�D�k���i��ff��t�u�'�6^�G;_� ����f�������TΓ�t�8Ȧ�rMxLAΟ���Hί�%����.\=���V������2��#�����|�H���M�*P��"E�_��|'#�hA�j�ze��P�w ����*�K�5{�[M�i���{b��)Y/[Sɘ���Q0C�����ߛڗ��j����T��l:v,|�%�$W�t�w���~��W��9%��Y�Le}y/�+�j�Eq�Z�]�5�>��A���>r�N�y +-���;�V�+O]�l�>�?>,�u&��,ɩ��I-6I��VK�b��M� �� ��)��SRz;B���_$�'͉5ź +�v{�?�B��$�E�rByqx�Q�@�~�0�r��(�t�&�gz�B��{��+8��9��)�B���n���6>>z���`t��u���'���z�a�L��X������R�X���_@4M�<���g� U�N���d���x(ׇ@�H��@�� +4;.)�F�4��)�4a6�=T��qg}l�tNra +�O�4M}<� =w�/�k��\D��贮&�Z!��EYY�{Ro],zs�;�;|�������K�,v3���$�dO�&��v��\���e�{��]�괔ꈔ���"��v�e���LWz��bעWj�_utPH�h�`M +`1�5��s<r�w2ì���P�� (�T�;-V�Aci:E������7u��z9^��=�*���nҋ��2��;�/]~� +�Hխv<��oh]�(��u���|鸔e����ce g��EP���t��5�e�N/��6W}z>�W{��i�!a\^�������!?d�l����$�w�NU-��O��6OT�*/�v2@sǂ��o)��엏�����q��bpA_��2������on!P�MѲ��'=ptG�Jui�<7Z:��7��#^���2Q�FcC���hh�V)Uͻ@����������7��Ji]���t���,W�1#*2w\�DQ|K���{;tm�����q�κֲ� ^nZ���(�X��,��/��wL���|�^�8ad��:�r�,>v�q�/V���/~E����+]�666�~� �N�v��aZ���������`��/}�dʅ������K�[x����|F���/��M��Y|ſ�r6o����9�^�/��-r�����m>g��K���َ����(o��c���+(l %6�����C�,a��ZZ�,�i3����+hh��d�e�Yz���,����Ccf_�R��_@QC���zۑ�N�*�+hg�#71�f�Z�/��U"��.gmf���@@WQ�/��D�:JD��A�p��pI�&9I��A~��q�yH-l<��S���Y�u��+��� F�Yv��*�J�U2E`Wt<�X����)T��$2> +JH�?:���{�����P)�(��)]��%�� N�X��Z*f�ޭ��-���)]��x��d|c�I<�ڐU�a?ޭ8�G� �Ts{��=�) +�8�I�q�XZn�����D�����$7< �H���a��LB�eSZ�X�N&�\ ��V���n�p��ܵf�m��I?�K>��xN�� r�b?ΔI�.I+�6�y���Xj�]b�'%�(t� Ǘ���[E��`�s?%G�S�V��!��!|�xS�R�>#� \��L��_&��))"r�F�K��PIP/I�Ψj7�K�ђ��<:�6^�{�� +(�I�|h�2F������0:p�*�1� ő�z����Y�$�������l��Bv����G�'~R9E�E�H@���(�{��6E'�p,/�-�������|p;��Z�#�@�&�>@�Q�w��O4��Id�xn��n���������m#[���W���{�k +��>�ϒ%+qbNJ�;O�r�(�& �-�Y��&�0T����N� �ڵ�s�-$����B@+#�s�i�H]V�W$�Vj��^�Iߓ9��]�@ ��ơf��c�ݻ�����AC"�5�*EL��d��^�fAb�.ҿ���Q� �?=�(�l��wA���L��(��}��F�YT8�)�M�D�,�\��w�҇^�8��X{a�R�7��� \o�eZ��j��2��n���$ͦ���7?%<`VH�0�<��Dh�k/~�Tm<g���y�]*��.��!�1��b���q�F+ +j|؉�+�zl;�Vb��oOפ".�!��RJ� 6MU����ǂ����3�&Lۭ�%���*�D��=��ep��(m����1�٢O� �~��;��K|ʐ�&��O^d'���ť,�f����O����wf��N� ���V��Ηt�Yy�"� �59�a ����/^�3!,٥�.���2�� +Q`�,6�@ר�u`�&8�X���27�k�VJ��h��5�b +� +�F4h �o=r��qIQ+ �ʉ���<�C8�o�A��Y��ll�� +�s ��HD=#1���,$�/\�������"8VWA���`a�:n����1���,E4�A�'W� �[Z#*%9�Ȇ�(ݐ�f�Pʜ$�V�f���ܽ\���a6=�]��8�`�� �J>�w��o�T����һ�mu�:b��AlS�*�V�����Vy�Z��F6G<�-<��}Nh�:�]��6R��~��������z6���I��]�Ie4�=��#�tš�(��|0�����o�D:��ٟԆ�wd|I�� +v)�$m�:]����45�5:2�ei�fj,�r�yn�v_�7f��4�qz�mb�߱"4&w*A ��i�����{v��������|q���1�Lx�0R$�����HG~���\�ت��vv�y8�ث�(z�������(6Xe�g�������.T��OMa���0IE֏Q%��3G\����T믜�Z+=S58q�s��ݧ���x��{4t�P vQF˃��Zd0 $��{ �$���f��+ ��4��q#�p�@�@��ὤA��K�ʥf�씝�G�)�c4{���]��F�r��)*� k�kd����$�D ��='\��P�įF�݇�n���%ސ��y �n-E^��� f��q u#rD� C�-��xaz�s� u��4�\l5�Uq�Fz +}�N���~����� ܢS����h=�Cm�좻��mbx�^�)�XK������gn�������ru\9��B� ��e����d�P��*.��͠ �-i*3N������#� ��Hcx�OM[���%���_�{����������k�:����b����?�ڹ�Y^��~|��-�b�;����vW�4�r��%28��a)���W��!%!À.2M9�i�����F=��f^<"�ݛ����O���=�W��^��w���?]��_���M!���/,&©!��z���n��B������*3�Xb7�7 +� O�"x\q�kT���7�h����ᡚ��*/T�9}|�B�>oO������#�� �Uaם��,�hJ��*9� �@���ͣ�+ro Hb?^{9��C��e߷p��8�[C�WeE/5��о�]e�����"1B|rn��#�-4��e�ܠ��K~J��9a�-m|�]{0#a��n���������y���iC��Q��jE��Bqb귮��us�<+���¤je��m++��#����u�c3/�N�����p�MQ��a�u���,� �-��߰���, ֹ����2��b���z�5?�[׆m�>�u;��ʍ{�1��~� (�Ṷ̊5<�Q O����u2B8���n�F�W�ƻ�t�A�ק˳/�ϫS������=W�v� �d�(WLYR��Qf)Ē����?�� ������}���_o_�~�ʹ +�6oV�������C�:����n������:Pe��|�����di�o�w��]�/��Ͽ.?�����O���/n�>�^��ŗ��'�_�^��;R-��{�+CɹO#���PI�w�Pd��ӗ�S?��� �� ~�J۩�O_m_=�����i���������NX}C�t�u��w�[\���﷿<�]n��_����O���ǽ��y/��e�i�f�%z����2 +Ma���8��f؇��tI����ֿX�����W��r���ʸ_.����������3��lo-o�U�|Y�� $IZq�o�(�h:��~��|q���N�\����>������ww�iߝ����g�~|��<Y���,�_h�J�L��=<j�: +_-�ܴB�\d`z�s�3�~ڳz�M�t3�Xe�)��w�����7��k��u�?�n�o���\��%X��N�e��O�8�� q��N��=�u��r��@�0�`���^�����o!� +Lv�i:3`��z���T�;]bwk��j"�2�2�~H��8ԍXڛ�R��Ft"�~"L�d�d�gF�t�WS�5b8�������өS��?���D�;�*-̖���3�H�X�������A��5���T���E���Ջ_������Z�������G�Q�[�^:���j��r�e���Ȼ�/ô��F��=&���+lxS%!]gR/}�T��W6rt����6IO +&ߟѡLj������� ^��%6U3�1�9cp�(�1lRv�#un�W��cr>�9Gã$�0�/a �6�Ij��t�����U(��[�s�6����:��^Ԍc�A��d�(��]�E4�L�Q%;q�_�᪨�8e�T�N�JQ毾`�'U���wIu�)ׁ�T�{�Z�U>'��#yK��'͌�L��|ק-o�'�9�[H~�V˸E��tg��ٝIl���j��a�.�G��;ŽL=�{|4^�Yx�lke#�G���;�Yڜ&�����l�C.�U#���],�O!v���x��'F?D�s>E�3�F�f�����5����x5=���aD���Ύ��ڈ��y`� �~M�CT��=���*�����z �.�Q����M�́s��f���ϔ�Kӳ�*6_��C ���z��V����z��&�t�����:�c[JA�k�f���.���S8�m��.G�,qAN5)N� 8'RU9��̌�#V��f*7�@�6��T�b ]I��>��`W")U����fi��Cv� �I B1�{��T$$iL���ؘT=�����l?5��g��*��'�mM��#���0���J�W`��t���R�rq�[w�G�D|Y%+V'����L%ä�a4��C���Iz�_� +�ර;�廂�hyb�S�pͻ��&����$6��ׯi��Mlt��8�B��c�??5tvʩ��߬2�� V~��%���5&4���x��n��v|����bNoW7�Y�ᚖ��]g�}6!\�&I\|�_,ր\��>;�?������������/l{��Ջ[�[��s�������?��J�e��^^�Ȑ�N��:��_yZH�5�����i�z�� ,Y�PMt��8���8H�G�����Zd89�|�4�r �r%c�\j��%�|{��C���d��!%�ra�f{!�s�]A�y6s<�y~��\�����u�6q��#����[DQ.l1��6�j� 1_���_����;28�O���~0��x���k|3�Q���&'yN� �I��8H��a(E�3A5��n��f1Om��a�����D��)cg��/g�O�\?��SW� c��Tg� ��: ����D�4��*�z���"����Si�k"�6���j�T����ȫ��ؗ�B�6ӭ�P�Vc�U�&�G[�݊.��L��� �2. +;�K����ѓW%���˳��g@5�q]�"/H?�c�W��[��+c߸R�x���vձo�w��b�ڬ6�ͪ����췦i��z9ɾq��c����}���f�M��$T<��h������l0.j�[N��D"4[c���LB��Q����jB9/`%���������sÍ� .�r�(��5�K��?�8+��t�"J�{7�����L팱 r����A�'/`��f�2���ЊMv��b�$�3w0J�f1՞%��n6d�J[d�] �f�g�f��T����o����s<r����m=ZA'�?lU�2���mw>�1�ar�KU9h� 'Վ*�i{��w����3�E�4�)?��K��#}��L����2+�x*��f��������~8n�FX�H`|�����6����V��7�41��x��t���X��2U�L�6N�8Y�_�I��������;���X��HE�C#[�F��B}S��k6;� FW]�_�!�g� +�;ص�r5Z�`����n�XO���5t��(���AU!�VB�$�0'�G��kG����]�F�17���k��X�~��A�u4�|.��}��fj��$hB*��&뤛�>��z�4�f�.!����\2��1�3�RT�Ͼ=�_�P�A�x����� �OCh�9`}/�bF�,�H6�jR��\�wn.���?8ѝ�^f���4���N���9Y�E�|��*��f9R?W��%�^�-�2��K�z��w���Q\���������u�_�.*��1��� +]{y�69����\QǷ�d������@�%<$:�C�n��<$���*��*�V��T�F���4BE#�/�6�&T��V�P���`�6�v�PH�:�Q�b�F��S�5�$��o�j]F +z4�Ϳz���E�)>�����Uq&z�)��@ѓQ +2ɞ{�4�9���F��p�fq +')�j +v�dxf\�&a(���jf{�8p��a:�~e�(�$�+2P��Q�F��4�� �:RCoD~�=l����>Ҿ<B����+b�8�'U TB��pxј�J[g�`���Bم��13��x4�Ź��5.-42������иM$�Vɱ�=�M6���I�F"��x�Ԧ,�6`��ƞF.�+X�R�j�ݍŖPEV%��>]�WS�f��0ne������kl#oV��8w�"�pv +Ƽ"C�_��k~�N;�;�ԁr4�U"�V����9z0�8C�z�)нP��bp0�u��5��N�3��A��X=Ԇ��зE�����|�":�X�Ʃ�\4�$��$0��ñhv�x����3BH���N���ӌ�A�Q������[l��?3ǟ�wÎ?O7�Q<��N�z��D 7}*�L��S�z2�Ev@���z��[��� +�b j�'ńB�f�Q��\�O�q7�^6-��B�4�F�����L�57\�C�x���ϵ1��44��Ry��k6x��V1�z�C��E +E��I��lc�t^H�ZcqH�m��:NM�������ݪ�A�%�ݤ<����j��&.%+�o��������֞y%y�; C���`����Y4a'��Y�5I�X3���H]n�D7pCW�w=�ٕ������!�m���~�[;��N�;�R������pB��`]z�6��ضY�%Z1�}w"�瘣�u�]���t?�4�&��l$�jؽN(�[7"k��L�V�AdB�$N��\��߮���E5��hE�S.��T�@�E3�8;G��kM%�� +l5 +�Œ��̂� +H�l ��OY��z�Z��q�Xg?�a�^�b@��� ap9�>;��J��-:G@�/7##�qp�!�wG?�(`?41��3 +�T��1 ����J����Z� ޭ��;K_E�)h˦��ua��)}���e���ox��B�C�~�N�����hV��E]41'��s��'sdC�F��������D�ۗ�Gf�:Y��l�X,�$v�V���@��^;`pV ���3��k?��mb�g��V�-~�\�bzla}EF"��_e�Ӥ�7�Ӻ�]�v�?~n�P7K�fQ�0v���k�R��s �d��c�,�:���.�4�s��]�w0�${{�tN8O��D�(��<�B��9JkI�p{�6ܞ�a�u����@�]R?y8FWes�R��¯�䍪`���u�K�%p�;���<>y����.�R�H�n���oệ��+�7e2�n| @P��[�1�|��K�*b�&4��2t�4><���2Ն�R ;�!�$���q +��V#*��Rm�-J�5Br&��1vLnT�^�'�!� �#���M����vyz���O9�.B$|G��R�^��z��"�i��+��2��u2-~FK��q�ٲ]3�[9�uz\��X��E�ϓ�Ţ�ϥJ k�����ݺ%@a9O�YKQ��`.e�=� +խʷy��´�S�x*L���6P\ܖ9��u�]o�A��)��!���2{�Fcz� +K�-�ʠe"�qG^�-��L��}A���ab5^�Y\ +���=���U`id7f?�� +\��z1@��f���\��hd�דP)�LP~+rs�,�V�@ � +�<Φ���V�\�֓V��������YWc�]&�Pq��EQ�m����rKk�u�O��|�sŏ����W�j.��܅�M1s���*t�x�L���fE-,\�6~$ƆHe_�/��x.��Q�p�|a3L�W�����K�}�"�+T��E4�%�-b��[h�����b?��Wo=w��1U]0@t焞�h�Mz��:��M�ٚ2���"� ����B0����_$MSd��pzN�b*@����[�.�:e�4tt��ӌ�s�^/lg,���tf��>ͷ���@'�B1����m��Fc�=l�*x^f�[�aì����u��OSU���0�m�/�����9�5f8��9z��f@���nPqG���L� ]�ƨ�R���2�Ð��U��o���X��w�X<`s��D�:�$e�∏ �6|v_wŀ>@�i.+�R���[P�͌x��Y�q�1ـ�Ժ�Z�`B�i(�)O��pO���)��'~s����j�>��"�f�/�ئ�ca�h�ma���&p=�γ�~�k?�P*�5y,�����-�P�2����~W��"�l|��Ƞ~� �n �"�\e�N]���V��Z�(�B؇��m6�j�����m�k�<����]���:a@�Q�B�"N�ᒕ��h �g��B?��/�=ٌP�юzi�8��"�C�KQ�C�0-�z���(Vٵ�z�����r�Cy�a���34�8�����0��m�}������2�peM]��d�w�7� +e*pͪV +"%c�,�+q�J�`�\��S:�ev�Ѩud�8�g��YL�C��hO�(�Q� �&�gZ��[��Z�k�8�V�kP���~7hÂFZ��|����B�D��6Iy�E�&�2 �I�<r�"$!��9�x?M��d��dQz�P�J�d*(�[?���,�Pc�@��@����Y�Gq�?�*2�f>�,� RnRBLb��=�P�4!) l��Ng>���0a?͎�Nͭ���&�Q�*����i�F�_�����!�b���y!DZ�>�˚n�I��~�U�Zס´YT��Y٦|ƀ^�Z*ȴHH�[{���]o-�y�G�ƃ�"Ad+T�J��J<�Z�av���1����T�F��O�4���]�%<q��<�.�/ѐ#��X�ҪQ@�[�L�uv�]PD����[��bD]�AG�����Sna�*�j0�V-�4K0�#!6�SWCd����e�zD������F��;䕆2jԼɠ�^��g8�K<�8%xV1Y8Q ��ֽ��%}����?F$��טCD`�4�EWm+i�a*ê�ɘJwW�82��x0 1S�s0�^B�r�ކ��eCww��ĢD�L��(������V��6�g#�y�QU�*���.��Y���K�p9���)k�Z�Vf��ү0�`İC�k[('c�C���hQCıQÄ?ՠ�w��2�%'��q�����{��94�Y�[o[�͎�.�͏���E�㩵]���ԡ�#/�7vnlz�bYZ�4#��(�k��r�f��/�@`�ðt�v1#d�ak�r1N���#1��$��l�H)�-,\�ц��j�I���� \z.*$���0*{�5$�����A�Y���i�F�� +%��W�z��!����B��j�� +��aF�����w��}=��E����%��,�ٮ%ƮI�aݖ9��Τfـ�(X�\H3�� ��s�M�.вQ�e a��vH�K[q��PR��$J��ڳT��*:��vn�k�VY�ٱ��v<GYA�d�۱6r��v�*����rwN&�R�`4l�*Y��Tq$��l���ZZ<�)�S�����b7�Xc����0ʇ<_��(����~�(�gt�� h�SͰT�.��[�N��N��F���e#}���D�5o`�B)�d4hEm>��/�2�c�Vh���w���Wo.�voˣ�oj�YD�9F�[���1^�7�u�X8�37�B�����9��x�,ݹ��������^#�RR��n���������cϝ�f6��:�ϣ����ǧH�.��1�:/�9K��kK<�$�`���2�� X�����P�+�u�^C�w\��9m����K��2:�X.| P��)G���jA�%/�߆�B_'�p���J��� +�xku�Nj [2�����2�_ �c��?.��d�ع�fdx��`]Υf'`�Lr��0@��F� j�������9��}��v��y�"��F#|����#�[o�#��i���v�C~= +6��9K���z����=�?K���}e7�К�Қ`� t´�&W-�m�x~e@�g�Z�9 �fW�j��L�eR��6�vjcCP������XQ�4�1~�~Y̶�y)�5AD?�Q�ɠ�h�^6X����2��RJ�O�6I�ɴ��l#R���n���ĔK��w~����߱[F� (c?N�����Z���X;��� �IL��n��{�Z��>TsKj���*�Ɖu�B�]uov���kGyS��o`:]�O~�U��0V�^�������FQ��V��k80��O�$ +������n�lG]�86���$�N��?&�C 2'] u5���Ǹ� +qq>�ɣ����D�,�^з��f=Z�eq�aM��]���]�����=%�%���[�_��k��!EXn 2/��y��9^j��"�G�K7�:'1 ���-+����_Æqo��r�6?p����)*���gh�rx�O������0.�F''e�z<.`T[�j����!E��%��!�<�c���t��D_�0D��Zw�-�o���2����vk�̓�����J�q2�j*�_�����h�*� �p����Pu���3�*��"�&�&��&Z�i� E6�/7N��%�gP����Ev�1�^����g�#��t���c���/�m��<���{���K����N�3�lv��܆��7��^|��mD�=�� �磬Y!���}�g�V��Sh�$�m�:2�Yl2m�7�M������7�"ʩ ���Џ�J\x�W����Z�@!����p�/y�縷��L��A=�D��L7�h��;;=:{T�V� �DwN���?hMz�{�SL�{���F/��z�W���M-��͌�#(��h�����gTV���A9���o��L6 +���bw�`����_%o_R���29�+��yݶz�I�y�*($�D5�E~ppŶPU��U�N���,��*��{�-2�yT��`�4�o��VE��æ�5�C�Ptr���ʽ�E��Ϫ� +J�]�.������+9�kDy��З�W9S�R�z +eSb�M�hsR�����T��Wd�~7Z�h��)(���L�M�V�8f_�r��q�n�_$�x�����T/bl�u�Tn>�� ��-�@�ս��"�C�a9���E7P'���~��zQ�s���o�(�C����L�w��љx��UvU��G�2��ʼ�@�=ij"K�S���ÉS��l��^�T`�{F5ӭ��o�!Z`�rk����q2���o��ڻ�x�/h3��EQ�0�_��C��p`�L����d�-ƨ��/�#�q�&��nu�Q���0���m�"]�����Z�_�� �n�̠���2�m^�� +G��3�'�i=1�jKŌ���, �gb�f=�:x�Ӏ����3X���0/�Ri�)�`AJ�"�̫=R��(� ���nI}��G��.:Q�,mOk�2%a����f� +֞�:=�S��ȇv��ߨ�s�1���KZ���X>)ۧ�7�0�P)�v����&�Ep00@�ѫV����Kg����^��p���0����~�-'��zr[�-����՟�肛<�:�x(�z�'��^�b>tY�D�ԵH�c�}`�BieE�%m!�{��T��6es�h�yt���HŤ��p�U)����י!F��F�h�w��8�۫摳�a�S����"s0��G+��ң�������X�뜖�ź� -\��~��}�k,�������@�'o��P�o/�I��� er�!�F�℈�gj��U�<(M�/u���LI"��8�~��i�s"�$��ɿg�q�k�����:�D1��`���a5�pڇ;@����-+�4Ƅ�~�,<�����fl2��?�������k�R:C����\� +>֜P�K������[��26n��������_δHz�����vi�~|n�������<2�2N��)�أ�=wn��G���"�J3��bHצ�)��V�9_��Un�Є7����g�M*�\H�Xu�l�+'���V��� k4Je�$���%Z�|؎�\�Ҵ��ڱ"�+����ą4���P�F��)%�n�j�8�}�]��_��F�9F=���_����������\�tm�� ��R05�w�ŭ�'x;D:X%l̀��y�b��U��A�[�4�,��,��d�nRI����o�qb3 Q��Tv/V�%��5y�(�c�h�q�ook*� (�k�M�a��ΖQ4��gKߨW�Z(Dr +�9���t���0cAdV\m�H�����4Җ� ��l���z��In-:���y�g,�K�t��� ��n��9��@<T�,:���l��1=��7�h!d�}��N�v��)���5��8z��.��k��<�Y�ϓ jի���Xt�Y̝(�C�<�ygl0VD�NJSM��۔7��t� ��E��cՑ�N `+?��D3�{�@ˢd��L����>�h���a@j =�,�,�Za�(��W�:�� �[+5h���%>�1�ZY�����ȃ�kѯ����rlն�8�iƁ<e��5�� ��rQ�c9�h��pm���`�|kc����� B�Z���/���UG�4�� +F:�?=�2V$��t��H"��q�FkUl@bk��OEi���ua�|�������C�4MǺ�5�s�{�ˉ[��L6�T���Lm�j �FH���z�D.4�@:�:d��(�ܺC��j@N��ȬF#Ք���?a���*�gT����\�T�����j!��}�Sd\0�TPL]�6�5��o��~��`�6&A2�$V|X.x}�^x��~�Z(W_���O�::;�[��ξ���[�����"��g����w +1��:��{�����O?�;�%\}������W��/�-�z00.Fy�����������9>� ?����%ᅪ2���Gw�+�gk����_{��Os)W�q<�}�}���% +�JǴWh���7h��o����!� ��hi8d�i@��2=f�j��G��H�>�芺2����r�s{G�bߎL�@3�'y�";�X�p�hS�n��>\�3�F`��V,����(u��)O��Me�($����:?�rOE��k��ֳ� �`�g�t�ܼ�HGI�!̄�g�̈́��x�yT&jfϫ@8 ��ְ��<��,ru����W*�ɚW��樇8�$m���"���3}y�Y�����l�B�n�^Dl�.V�"�����`��`����阣I��7k�7_�"����*����Dg>���4�]^���̣������h����2�ᘆ�a5xD�һ`3�ƪ��B`滹��Uf�s=s����;7��3��@�CfID�����W?��ód��\��1�x�[�B$�>�$| ��Y�u�r3+�0�� ۶�AÊ�$�"��NTlá�q�����kŊ��[�2�|�ރ-�i�=�9t?���;x>Bw�gS�g��3�p}���_�9�����î�v���P�N��9XFM��p��d��t�x�q����8��?y��[�(tf���*�v����B)�.ެ!�v�6�fY�K{���C���¹��P�`�+2OFɺ&�Fa��,�ˤ�cԪ�ۈ��U ��Jd�w��ў��g_���k���cb.��&Ueoj�]e{����q=��n��r��q��FC]���Ƹ��i2��q����9:7'���~�;������}m��>o��!w�.�: �=o�V8!��x�w�U��U���GZK�:1)�Ď�:,�Z1��E4�)z(��۷�ck���L�_���G3?�e�W�P ��x���H��>�,�}��p�o�;����ݮ/|�렌����F]8,?{�E�Sb��j�T�a^�Q���߳��Xu�b�p�����dC]��y6NZz�`����&�T�0u��hzk=������Nݨ&��(J����.\S��E� +����z�5�n1�u��� ��?~e�����a3�'�&�ŏu��S�č��V[����~s��������G�r�AFiMe<��'� 6����Y�k �#��lzvIyid'�`(��Y��̫ڬ2�pii�e�Ѐ�,N�2#r�5zw`����h�)��-i���IN�8Rl�9[@�w�o箷�.S�+��^#m�N����ݟK�D�0�,����3vk�a�� }��șY�]��P +{,*b�᧗`�s<�{<|ވ���ŷCE ~!��e�O�_�YR��D[�ʽ;��p�[���.���JQ1��9��M94�d�BW���Ś�pʘг7�Ћ7�WA��A;Y�,�r���j=��g�Y��"%.�TB&-5A����_��}��"�d'�<_(\�|�Do���%#�(5�à5s_AT����8n��s����l�0S�8#�T/�Q:���#�<CX��Iq�j� �����y�B0A�991�������$Ĥtu:l�G�n5tN5W!�+ۭgJUL�R��� xs�3�s��� +l��_�5�q[pOw�\�i�B:�X��A�Z]еp�D/m���;�o�-�z���X�9m<hPz?�>x����?z�C�l]�=��v����[O�����K<Ð����CI��K7�D�M?!�٘�w�r +�9K�z<��� �k^� +��] +����s��2A���(�D ��� ߅OϠ>���!쒯7.�x��Of��I�&���ha��4�Hp��.���p1���t��%�.���fa���7LY��ɧV���x��ޢ����k�i���Fi76�d��fjZ��~|_N��k:�XD�LV̦6��ٹ�!*�%8�"�1n�I���' �*���'�S4 +��+�:��,�D7�����a�諠O�X�)�ŗ+^�$���Sם0# �90����;�;�#��K�\�\�'�\-+`O#�Ҡ'������fg��V4-cNC3�1�l��_#��a�����7i*�,�[y,���9���|K?�C��Zmͅ<0�u��J���R�g0J +/i%$����_�f�1��H��Чgx�Q�`�ذP��-:bU�f�%�jq̯ZM����}���cD�M��7�"��v�Ua���(Av��&s��л�O�Tٮ�LE�����x�NǢ^�����OZ�4N��\��=&��<���6�]����I�~t�8� �Ѣ�>q�shX�Eow0�x �����e���~�'6.ݗ\r�Q��TL�i�ܗ�aK�^W�.���N`U+��g�r�W0�䄫��=\��q�tKhl��bliy�����LؚǡW{:�.c��H�X:����Y���m�|�=�]���"��@Q8w��_���s'����H�����Ҡv���HOg �eT��������H�6��C�>�� ��Z�QC�L��J�?^{��rJ��J�2�l$����i��,S&G¸p2Vq�~N���AYw����"�E��ZH�\c��-��� �[)��c��%�Qp�4���`<1Ch/\�YM6������ K�1t���k�qe���@0X��)l��ܵE�8��Mɭe0����)�@�J�wx�Eϒ�Na(_��� 2^OQ0T�=�q��Ԅ��@b\�@�؈ɘ�9�F��uF��հ�C�j +)4��纺��k��F�3���KDϟ���7�A��MBX���H]��/�Ql5!�JVAPCW�� �f]�lѮa]�z�6��=�h���Y��uW��K�j:�h�$(�ު�C�2�C��i����}4��j�`;�͙������nU�ƛ`Hp-��E� p� Z�'Z�a݉L�XN��2|^7Ek�XY2\Ur6#���h:�d�;|/諣ёw���w�\��6�������7IiCg��ػޭ�s�]92�u�̋ׯ�_ �������>x��[���ӏ�ZϽ���?x��Eʩ*ݗ#�+��Lu�RѺ�P�� ~����1[�2�E��{�����j vBƑ��e�2}y�}�R9�(��%����hg,{� ]�W��N�Z9��� 9�89V{7�CVd�H#T�O��[I?�O�U�1���+��5z���,����ك��6���4[�'!H��*�-��I�:�ґ�"a��l:LJ�>�$v�"��6l6d�Ӛ��!�ZDG*ۉ�d�;�㜼3"���@od�ʃ�&���������.��F���Hl��j�E��k:�k0�8����Eq���(Å�7n-Y�x��E�!�z[�s��xl�Z��)�=�hȑ�ǡ��7k2?���ߙ�!�A��8y�@<ו]MP��BOr�2��Y�a�6�-��qX �]9%���q�)h;X$���(�����,u����1yE���QK�y��H�qR=Yj�)yg4R�1�;�:v��� t{Dp�.�Qs��01٥պ���j��j�S�` �h�V�@O`se��uN�H��5508,M���A%e<�S�1��qʉ(şZ��Ac)�t�4�Vq"�i�M��a�ݗi��F���>�*j;�#�.�����ǃZ�0����q�� +D�!��� QϷy&�W587˂2������(�QnZ��/pZ�l�_'/�7h�2�o�������V��__2��րm���Z��^me�>��m7���Z�m+��M�, w�>��!z�}6 -)Խ� �%b��S�ƣ�<)ޜ{ۇ���U:��q%�/����ȡ"�R| +��^b�jA�:t�������"�S;M��у;�_|�pya�K[q�_�_�wa4zo��F���z��ǭ�7�_?ղs�b&E�ߴ|�Ľ�Э��ݵ'(�ē2�$�C���`]�K�y��ϙ�AfL��d0�3�'kL��J��y�.���ԃNSԉP�������[�VVl��ц�2�u��L�9I߲\�^�zd0�qX�6Y�i!�M�������A��ڟs���`}�3e���ހ��Bs ���}~�؉��ܼ��x3���s�j"�Dň�O�5w�˖j�+��y��K�mQ���h����N�*�ۥ��;�S8נ�A?X}�F�6�[k�A��]f���|�E�V���ݔ�2��Yh�p�e!��}�>t�r�>ʣ�O��s-��>�t��,��ޕ�u�co/\�_ �v�m�7�:X VO�p^��Ā)�7᧩l�a�rN�+20V���n���1�ȷ�҈L�j�^�2DZ +�='$,fk�̢���]��yҥ�,3Pλ�� @���N�ˤ����E.]�aN�ٲ�?צ�5z�1|��T��O����i��cQ\��ӏjrb" +v�W���;-�c�ƴ�=�N�ĴP+���0�)�yʸ��Ǔ���e�ꄻ��rsl4������͎�>qz�g�\�~����<`,��0�:����6F/��ZQP�i���*l�@!��u��� ��#�b��uj}���ڷ�&ė��h]b?+�ٟ���v6 +�-�`-$�X�(��A��I��NE*�;�{8��3���v���D��@�� y�L���R[U�XGZ��i�,c3}����*&dhQ���A�k����%@����KQ��XT���=t\խ���w�Ӛ.�TT�0�V�\0����-rz�����ڃQ>����Z��p�s������*,��{֒���|�"�]�ٙ��(6���f��j����(\ ,�;|t����K#�1�i�U�y���������U�:s}�ϵדpOD�";���x��y�E � +�<Φ����im\()Yy����r��b�F6E.�='q��4��U�ҚYSZ�?���"��]�+T� +��!Q~��Ese�:!a�+j�[Lc�\Wa� &QvS�8]ne��uUŸ�UA%�Ԗ�-�����V�2pc����K�s?��o���=E26���T�E�`����� +�N�a4vݬ�ʣ�)�!�3ƞС��Sl��<X �T6i�_�-S�P�6�7�9J2 �-� +r�W8��B��+���s0�` ��p�fDv��Yx�B�L2�fN;�;L ����Q�z�����Z�S��b��5}{,b��6u�1-<<���'s�;�tkLCD�)�O@�7��av��$�e��[�]o^�ނ�_����5��(=g3����l):���5z +��r��+!]6ECg[o���-7:� �zBr*yy�,A�����<S��T#掦^���z��y���}�:9��~�H +��r����j��p�}NUk�Ta��Ц +���_�����o���Z���'ז=[��2��ҿb����i-;4$�,ګ���ԞX�Y����4lS����"�9xP}7����/��5���|XӢ9��~γ��['-�U��d(��ϙ�Gx�x����������f���v��_�Qn'�#v��{`֩�ސ8}�KU�r��L�Q�v@?Z�6)�|��yS�@\�w_�u�'�����[o� +Bpړe����ɓ��J��_���>��S�÷\���k�.�n�l�����_�g�ǰ':�����~�?�����_�����-�����/�_�`�Ũ|����q������+x+0���X�����'N:��#���K?���n�3�4�y���N���܉���։��X�=�����������ˊ��WH0cf���@R�P������]T-o��U]����ˊ���+��_�d�ʛ���"���l!��9�� +�Ro[���Y �% +y"�ї���&����$������HH)��f�n�δ�c�͉~����O>yL�O�[H�2#s��|!Jq�7�%n���s�og N" W �����,4$��2 +��@t��iX��J�d��㳢6'b���Ѽ%��s�iК�Q����g����}���=\/�\\�]m7_�_�|�^�^9��7g_.^+�^J�%�Q����: +��l��Np�� ��dl���l'�G��Sp:݂0"�Af�("U��it���w��{*��[p��%��̱~�g�kҩ��Z��fa���53f�}�>n mRk�q�'')P)ap�G �^�H��?�_P3�e�����m ��gOmp�ڭ��vG�È�x�O��t8.P���h��c_�:=�m��21`�����Z�G��в�<���v ��ъ*{X��(R[<�M�QoE�Vr<�B�v=��u�M����^��xb�s绮'x<��`�z��.�d|�t�G���V�범�P��V�Q�g�6�k�����6�1gb`�[�8��"v���Gw�TU��� +���i�z����ե��JƮE�{�SAꄰ��[]G�X��E#X��U���"��q<Љ���_~zxJ�� ���u9�ciIl��ӧ8��)��*H���t_��@)���� �8�AT�V���u4Кb���[�����]5�mu��wmc��з놎���ju�鴔G� _�Cï���[����.���+@��m��Z�g�H�'�nt��ۺAx��>��� *P����� v�LRZ�6-�P�X�<���<<�� ���q��[; ��*�8����� +�jص��tX�#�;��up[ �v����8���x��;��_���H��xҿ��ŕ(���m�VZp�ɏ�dH ��·�"Ah��\���x�\�r���:���j��6��H��4(�Tg�) ��E�sxI���2{��ӿ<�Ut��>�v�5����OQ�������?]��x�ys���e��S��evl;�e6=NQfS��e6E�MQfS��ev̋�e6E�MQfS��e6E�MQfG�e6E�MQfS��e6E��C�NQfS�ٱ�S�A��`ØY�Q��o����!z����F��/�����7��ވ�>�>~<���k}���r+�;xr[!���G<('w���YurO���<��'w������;�� ����;xrO���<��'w������;xr�~�;���N}&��1\���X����H��<�d+�K�������<�_���_�߭�8�&W���\���sruN��1�'W���\���sruN����9�:����9�:'W���\���sruN����9�:'W�H�7�:���͙fi�pu��r������u�����/������ջ�O����O�|��T9�|*�;�:'W���\���s�&���9�:'W���\���sruN�Σ�truN����9�:'W���\���sruN����9�M�Ω������53-�p����7��>����o��_����z�����j��b�����������^�9�r�Z��Rfx��g�C�9�d-� ���w�f�Gw�g����#��,����8*���\�ޓ�/�X�� ���L�|�MP�%���$Fm��� 9uf�T����J��&6��ǡ���ڹ���o��h��ha��;@n>x `�@`��v� <����>h�D��}A�њ��g����=1�� +�A������ʏb��<uq��N�U{*�BW�d���<��'�T��X� +=�^=Pyl�,_�(�-�) +hG�Rrժ�ۥ�,=@f�Jj�-��$�-�\�W:8p�Ի�G�7�������6z L0MF��01��\�p(x�]�B��&\Qpq�3���h��� +J#\DJ��T�Z!Hf{��w��F�IĪؗ|k��"� ����87�j�����F��["o��x����m�ふ���p#�>O��Dٺnn�kg�#��=´��F�*u�,��n�SS�R%�kpSi��e��OwN�mc��=��ۯo<0���=��b�N��I�m�6"�Z���o}��S���#h[�mD�Ps�BE k��+\�b,���8�K�嵍�r��}!��yk��AS��>y��i�W�6+\���z� �>�^�6���+rV�S\�?{O��|#���x����[�@;Y����{���6"� +����zu�k�l�O�j�u��J���4Ȋ=@�z1lVب]1ۘM�yc<Bk�)��f��� a�C�4�$������q�E�����P��D��A�G���?���v�|\nCR����mő�����R�Ax�u��t���\"�w�r\�s��!DTnخ R��4+�_�� +"�� ���?:_:��3dW���.���0�#�8fXJ��V�_I��^��zp!&��Jv� �Q�u@O{!� |p(ϐl�an���W����"4�| ��ZC3�^7 ��; +./��~�mrθ��n�p�V����uR�Y�~�N�鮘�QS�CK��J�X�ۡ�$]�wp�ZE8ni�w���,x�]��;��$4AW�ޜS�C-�[pBedW7KW�c=+���.�����O��]v�KN����O���K$ϫťr%�DE���h����<�`�- �_����]�����7����ڌv�s�;�� �Y8��.\���Ʉ�2�w�%z,��tz+������f�r��N��߁���"�1yVO�}�lo�έ����٭���>����G�@���vp*]�g�c'��.Po��w8�܇@��7��6AJ���}1��O�6�R�#� �Q���v*Bc�xS��r���>��3_Ek��o�_�����?n�_���������7��NѤ)~�9�S +�AB_�����O��|eSrq���)�x���IuV���Z�5�����Qb�(ۋ�C���+���_��wg�o>����}X}�x������W�~Rb'%vRb'%vRb'%vRb'%vRb'%6���3I6���:?,b��#~x#�����8/݇�/os�L~�j?_|�����4����Y��A6�hK��K�~Bl�'u"��=ݦ����65U�=@%��*�Tw��@ӝ������y�v#�53m�pwS@o�/�'�ʷM5�Ǔ=X��:��jB�E,@&�� ��v��Yۇ���������_�,X����������?���r!��gd�g(��f��Y�Z'����o�(�������ٯcz��p����Hs��ܜ#�~Ǻ��_ܼ����^��������_>�SB*����mh։�2��=�c��h�x��1���_��=;������H �����ѥ��R�:~>9������6%�;˜,����(ɚq?&X�!�팢l���}�[�A�a��a�K�]�&�&C>���o��1�.�\�E�G���E <y����L�����M��PTņ��%6�峓�j�^ ��wD���%riz������������?���У(46��v���}������8��F Sp��DB����a�|�B�g�[%���ѷ}���I�qX@|��\:!�`(�}�Fd(���.�w�|k�}�-f(���}�ņ1����9�=K�FL|������� �~��Y� +6+��HI'&;�[g+�p��XW���Ĭ��Ya�H��F���[@�ka��e�}�*�~�?�����9^�������l"SV{ҀOO��9X�z�,Q,"X��Yn�߿��sGkxbbU�q�3�)��䠤k�k�F�:���-�VIW�\4��ϒ�`������d���~�r���CN�d�߉�):S�d�TC��Me������/��� +٢$�EKf�Њ|x�K�`$̳�1�ӥb/OB�٢���>%�Tf"$��+���Riv��`.)�5n���3�M3BW�<��;ֵMV���P~� TY�E.q���Kc��!FS��>�xu�.VX3ԙ�s�b�L���=��~�� \�qAΝn�(��(j"��%> �������pFx��ѕI���8���Z=���B����R'��A��W��2��e��n��e�=\l@@���G)������0DžX����,)\ A��qUW��C�e�����l�]���`�%���'`�`+��8�0� � �� ZM4�����P��VF|����"��s�+Ϋ�� �գ�u��/ic��R����Q�u�L�8PE�ÕΖta�� Q�B��Q'Ѩm�Q�SE^d��F����T��r2{Yl�c�O������)O�Ft[�L���nS�Q�8ŵR0�d�+���e�V� �J>��~�>�*��{�����}��+ +���d7S�J"�C�{�sM½�p״�����+L?�i��z�1���̔�g\�)G)�����2�h����4��Ӝp����Ĵܗ.g�t�!�I��e��c����g�6�F}1��� ��$@O�0ƒPŶ ����/QG����qq�-\���O]�IƳ�ذ�C"���Yq�3�;+��Z�l��pȎaA�Q����,��@P"��L��q��s����'a�#Er�"o�d{t%��E�Qg�m��t~�Z���g��3�Zլ���������f��B�i�Dž������WY��ld�N��N�Q(ͣ�k��4����id���i����4���E�!��+:͖g�z +Փ�4�/I����-�S���<,�:�=��Þ mf�>X���}Xp��p��4V�"/,M���R��qlw�4LE�lMsKQd�Y-L�5\m�-UI^����\�vi�J���t�b-dE2UC_-������R5S�ͥ�:E�T{�tM��� 's��T<<Y&��d}����I��6ӛ����qij��r%�^꒺�Y3LM^h��X���_�����J�=ǴL]7,C�ԅ���+��tő$0��-���)�g�@Z.�]Z�dY�J^Z��r�Q�@����0eS/D]��`�_���?���*( ����r��V2c��w3H�.�F*#�J��qH�M���v��zt�P��!���� +���mZ��m���֊&��x�����@6�s������l�!�˕br9��XY�6zb �_މi��U�r|�_��t"��s�W�9�/�qB/ +����9ރ� +:1��9�[ob��5&�ȱé�Kp� ���������3���SW��8#�i2�Iq1M�{gW�'���N3��+�U4��MG<����款�)*6�`�I�S +K-���"�aCLe dI��) d +��������|G�ĬXs=( � +����H*���l'x��-o��L&B�V�cz�Uj,M�Piƒ ��/�$UWIe��H*U�H*B�K�S� C����Rw٦�X����� +��,af"�T7�QF��Z �1v� �hpacȷD��#U��i�߹N*l��na�U���@"L�0H�]�'�����K��+\��2+�� +ӻ�f7�uj�֩��b��X���_�N~���7�3��v)���[�%����Ɲ5��j����g����`�y�F +W���)-Kϔť�!}_va��a����u���|\z��2^�ʡJ��'I ]bJ�te`>��FcQ����M�/��d��������@��/��%_�HdQA�Lx�ԎV�b3���@W�b\.�'�<o��^=��8�<��^�Q�Uʋ}�ZjR�d�0NY5�j�OT�d������N �^��H�xN���*���dH"*�P��W"�r� 0Ȁ�V�>�W�`I]��q�]Sb;"��bF�@Mŭ��l)��7�(����V�~S��M�2 Q#CaY���p��>�o����ͽ�L��`%cX�D��,�k=�"Ίk��l~�Gq��ɠ�1HmEeJmE�Imq],nu��%����M�l�A$��p�8ſfe��9�(�t1b0D�ڔa2f�1V-�.����Lf� �����;?C<|��}�>�̦z�[M���ĭF5�����*��8��)���:�RB�(��$�:1w�$�����S1g.�h+4��O���H�M���+w�%���qEO$���4.��L�?Ώ�QR��Sn��[⇟t�G&�<��t7���������6��m��v���f�G��l� �Tqh��dZ��9�ß$#����{�ܸ�3Q�p�h����[/>�� +9����Z�?���!,Ft��Cά�Cs)��yʂ�&�#n�#��麫�$t�ʭ�F\d�ѧ�0���(�(Kq�HIx���� +Eop�S$��%���O��'��?H+��A8ZNf�y��}�����d�^uhs���R���#3�!��AR���ҋ�G�Y��?��d���m(�4-r)K@�� �����y�F�q`u ��N���s�o���=DE�$�+���E�A���p{l ��[� +�(�:%�ɕ��b�,��d���]U/9!+��ԛ�LY5�)�c*�*���]�2��a�1���!�~�,�qN��jA��<���9�A�.� ���Sk���Ht�,��GV�Q3�]������i��2Ҩ98�A����U��ڏ`9�敓\5j�T�u��z]h���WeWl�Ʌ��I�=:���K��D���H�$|�>ҿib>Ts��&��|��9 0��������]��� >��� +!5��3;� "�Xx��&��߀��V�x�ڄ�ڈ� �SL��*��`��s�"�.9�5)���K?5�xC��+4:[D(U�|�$z���jLR�O#�1�w�� �LR��Ii*�RJ5���Cg�1kg%��$Kg'b�FC�}�����.�F���»T<�#���]3�84g����`��y���$��`�8UTqn�"L�jcYo��e=z Y��-��lK��ڔX8M��O��i��r��O�������c�QL ��a�\ jr������4 �����V� q�G=!���Qe��!�F��x�}���[2cɹ�n��a�~��S��%��˒�}1��:9��$yts*�I�����K��v-��'����\�����G��֟��1������cSU�M5̦v6e'D���M�2�B�tn�'� ~� +�ۉO!�j��6:>Մ��˗!�^<�!��X��\�`O�0K�~���B�b��()�.`�k4��7(۶ū��3:�ȝx5�X���p�l����6 ��l2�@~/���42Bz��n^N�L,p|R-����0�E"dH����r��oQƔ#�[���tf��fR����Z +�í �N�zTn�n]��E-��A�tI"���Cby��F#�J=���A<�M �1Ov�כ�j� ���8G�Q��,╎�5��"E�TrkՈ�F�A��>R�xu���2;0J=��(\���v��Yc������CNҁ��F�1}�Α������<\&���ɫ��39��t�f���/�L��Nw1�q+�$7��b�}HP-�C�vw��߃]��Y��A�����ò9������l�˟���<3>5zJ�\ ���P �*Ef�H'�jZ�)M�ڐwUO��~��o����.9���߃����k +�9��9�3�8��^Z^���ʆ�~I�m�� җu���çN�����.��T'��Nx��8�����[{K�v�l�5����,�b8m4�|0���@K�u�+;�!>��e�-��~�(-�� �,�R�����m�IT���L�xV9f�E�Z �V��6�L�K��](VA�k�9=���P~V��&Fp�����VC��Q��I�FZXe,�<���>ȒĮ-�P�H0u,|a�B�}XS�<�߮���x�|FL`xrr5ޅ�gg�C�z`�� e0�P^�\�gE��h�x�i���h�j�j��lt5-/���$"66���1�:����1Lr��纸(��u� �$;�Ii��V%��D��3�&ʵ���Yid��*�}ژ8Ŏ�ۘT,:�����TK�G�> 0Ree����C)1Ϟ�@o��$��̮������u���P��%���u?�n��D�����ZCM��Л2�Q����h���u)�H�2�W](�@��"�֔��+��]:�� �ߢ�&K�r Kɍ���Q��j|ϰ!Z��L7����I��*w�HQ�� �&̣k\�Ợtʽ���$B@i`* -�Jq\Ff5d�ߝ��D�d�o'��U���?����ڿ�����?�/�i�P���,*���^�6�ʬ8��;�xѧ2�4�6 �'Q1P>������h.�A��M������Fv=�e#���E?�,��E����;W����9����������ξ�M�h`n��ԉl��檚M�ې���Ʃ'd����*������p�Dw�@E �|M)Z��Nz�>�S�S��:A2��:z����]����B7qLd��n��R*ت���,l��v�em��%|j��UT0��ڣ9ZRX������ꖮ 3&GP���ٔYD�<)��ɥ��|�(�j[zڲ�$�]Kn�-��Jn�[�u&�^Cb*�peڥ�XSɼup��h�7��'t�����Y�5�T�pP��Y��xe���/��u��`�9s ��[�0�L����W׃F��7�]rC��G(�]-^$(���}4V��{�(����YB=�š�:��J��8F�pv��W��ڂ���C�Z�;��wP�X"�1��%8�R�8Y<��ƀ�x8ۜs��Gõ���Z�sʼJ�e� !Od�RU6�N<|��u'wN}�<�x��α�R�-��Z�c ub\e��,�?|e������ ,�]bE�,��ɕ/jjI�k�6�����eH�s���E�Q��aNz�Z J����}q�!u8W��U�W��,7 +W�lR���\i��ԝ����Z=q� \�8X��j�����n�Am�]�d,�s~��Nʗ:s�~H<-�A}��Z��&,�,ۅW�������n�ʛ��l�A4�͎f������s�f�gh�$�2m�Д{�E^��!؇O��K����E��^b!GZ�K,��'+�{���a�����}r1W�6�j�!���:.�ڪ&�}�����#b��`�`_��edT�w���u�OZh='��l�{18[Ji �3�ؤ���?���f��p$̚%��z݄P�#dC�$� +Ӝ�R��*��'��}�[9�c�y���yȖ�\K��~5i���tM����T3���U��ب�1u����Qd��檇�"��0��T��"f�KuF���pm9'&j����:�_��yQ�+顗�g��T���U=vQG�!x;IY��3��A˶]4����)y� ��(]���,���ء�&"��"]��bB�@Y�jA�0D�Z�Obѓ ɚ.^JZ�d�EESĔ����,�T4���~��i'���E��MGQ�~���p��.����"v���jd'ů�F6I����U��F��l�W�r��ՙ�Q|����˓'��쀜�����'}*�ϖ�p��e]�uI�us&Y~���;kز�<�?���B^��hHz�7�Q|������??;��� C��o�A�ͼ ��~�]x�?a�g�Ғ��:���k�Rw��娖#��$/4�4U�Sd�3,�uT{��϶mg��m貧����$�r��$y��/�˕�Z�g�ߜ�RQ<�U=�ӗ��ZY�tK�;r���+M,wR�A�;r���`t���ߠs͗h����b'`��2Q�c2@ֲ���d�m�*�A,Z{*)��$�셟}�~0Wa�(��JV�v�-u�c(sv��p�MŠa�4E=�Tdy�����<S7]MY��*{��j�m/$�Q�Xj�R]�K�H�ԗ���R�\.K��$��l�������m˪�Ɇ�����-L�3dC�4W�5U����/4���A%I�-�̾@�&�ՠf��2kV�f��(��xz'h����un����_M�Bj�,��:I%�+x����3[I&J��s`�j�d�Z&Y;��3�L9[V!w��3@�_�A���Y�#(��ެ�ˍ�;o0@<���v����{�|�t? ��f;�3�5}p#If+�f��[���If�1���B��U�ܦ����t�<��e,,�:/LÕeͰM[[��R�[��3ݕ�t���km�kW]hP����U��%o�h���n�ia���(�j�*P�P��'I���d�r�|��ZΒs�@�%(����f�A��@9�LDw�BeJ���r� ���F����&�~��'`���0e�E�� "�/>ʢIiהּ}E�+_�w�j[A�R�M�Q���8V��rU��H(U�.]Z��je�����j�TۅR�s��sTE�SY)�d�i����5��-�8�X���<Hew��b�,S�G�V���K�6���.���s\Y��r����]a��)�@�����=l�d�tAU�$3s{�k� ܬ��^��`���đ��r%]QU�%G�W�@�$.M~��B�C���o�P�Cnq[Hذ��Q���Ly���!wè��4���OQQ�}�Y�ؓ��4�c���lk���c�)���+��m˰�fY�J�V�����msႣ�^y��`K�vה%c�5յ��H�NPk�C�05W3��bi,e} �#��,u��)�ND�x"��{�Q���*�$�� ��يm�\ +�s%��n��+!W���t���n?�Q����Z�]���]��0�trU�\��ɕ��?���;���%랶�,i�9���5�vuMWT�Yª�m;8|Tc�:���W2��ٮj,mh��y�d��:��\9��XY�d8�$S3�F0M�q� �z���,�瞖i��I�y�nn[��i�����vv;�����TJ?� R�U��~�>�uwB[� �������4��4�w_�"�u��P���{�y|֧c[;��5,E2�4 �1��)[��2��c�TS�dE�mIZh��y`ɲaI�x.мwi�����q��G���eKK B ˳핳X�����u�K �$��W�ʒ5�5TO4�'�v�w?"�����[������Ϝ��_{�=2�1�y�0ܕ���$M�2O"\&��8�,_l�OO�A�G��LV�S�;D�\)�c�̕�P<EYɖ�����{�ɍ+a��� ��ڼ�2l@���ڕf4ny�4�`��*�3�9dfw���o\$#��/��Z�ꪬ��x�eǾo{~�GA��ۦA�^8�������.�Ri��c�aT8I�9N���M� ��$نE� �"��v�,N�G?9� w��Ln��B;Ӏ0�d}�h�[��c��6�(��o{U-;��j�4Daa����(���Օy*�X��??S� �/I3�s;u���Bd�#)��N��0��b���N�s�4��˲t�4�l�����m���s7rу96�A��Y��l;wwR|S�D�m�]���<N�$��(�;/�b�N�n�T�2K���uSRC*�]i�ѣ�p���}O��eOQZθAH�)˫�;Z]�}��Z炱�x*�T������rO��:;gui��0P�;KU�LāL���2�*9�AO�s�Z�I�Վ��u����N{L�"�#eL� +�0��H�^�� R��$ Cdz#��4)��͒4�d��b�HZ�i�'^����-F��{�A� �}?�]g�f���\�A�9�������m��kO?f�YKY��В?���^'�OEuRJ���lk8��g^ե +�Y�U��'�٪F�ЄS�2�}����_�|I΄�O��pR���<߆��;nyy���ng�;���<q�r�!^���f;'�w��;��}-t�$˓� w)b���� b�Q�Cp�8ro�G���w��X�.�%q�Q�N9��b΄C�_�E��$^����k�8����y�p���O��w�&�tqUڧs����<?XY�$Yl��u0�7{������i�U����+�I�,{?@��m?;�$ ����L�߆Y���y�g����ȋҝ�t@�L��;�i�eN��|l�v�eY�P�Iwn�K���mm�Q�N���±c�N�Rw��.l'HvY����d�f�)���{��̡�o����%�T�Ə�R qI�Ʉ֩oZ�XL#�:w����e�昍����[.�!� �4�}�7Y��ԗT�,� �Rd7�;?F�h��E��]D6���a��AʢSl��#'H���8 + +;N7 �<um��zY��n��y��`!�[�i��t^���I=w8y�8i0�O�Q��:"ٜ����|i�+�����YE{��8�k�߾�s�ٽ2��b��q�IcS�e3b������t��\��䢱s +h��Q���m#Sލ}'�0��0�v�6O�t����s�؋v���n��>����S�v\;�C/���w��ɽm��~��� ��OCI �˶igH��)��nʃ��]Ӥ]yO��`9���:#^�t�%�͏�@����[��ĶeJ,i0�j_Sn�_�WJ/����]�o����K�� ��4v�n�8w +��A�+r����/�8I�س�CZk�$y�Ȥ��,��Y�8�q���)�N���,ϐM�^��b7ƕ���w[/M�~ڻ,�b�A�o��65s�� +�Rǖ��]@�l�?��@K}�.��t'��J�n=��s9��/�~��P�-Ꮙ�����L�-ZOY�-kƪW=�R_`A42Ѡ��h���]�w��p�5���z�:�҅����heIG���F�.�Hqڥ>�)l� �%��G��Nv^�)�Vmq���os�#mx�������qG$�,o��]'^�ڈ���q��F**bؙO:c�,���́�3n���((Î-Y�ƣ7M�k�@�w�sa4P��_���:h��Z�ү�]�!��|�� q�gВ�`��@�t_�҅;n��X�����kh�K��︾�a��$��-�ر;K�<����H�m̜�<�C;@���/M��C�3�vTx��l����H�<����,q�4��0��|�$^�8�$�vYƸp�Y����]szE��X�+���}�X� +~��ةA*xv�-8����^xuT�������@����m~~7�����?=7�L���zHɍwn�f��n�a���V��<�p*���.�(F*��NQ�<˼$��l�I�{�.p}7�r[��0O��@,8N�4�eE��Y�E��l��?�4�a�]*t�t����o�'�V ��;_��#��;��� ��.�S)���R ��t�'��~��|2u�( �8����� ���v�il;����.�q����N���g�HCtwY#]�s�-¤�b�{`�.���{�m\�<�8��<�/��/v��ݎ��Nk�����N"����aK���#mP'&���j��a�Æ�-��>͖���m�Fˣ�^s_�eo�Gr��2�V�7f��<�8�b1�GEN�3=��{Nfqa�O�.���| 糝�|�'wjO�/��sw�� �A�ŧ"C���W�_���@W�H�d��3���w_}�g��/�����I�f�X����eϮ,�9]���I�g���.:��!�7i��%��|�X���e�'_���˾8ޟ��n�H���o�#z8_�z94�z�� ��`��O z�����U��;�Ny<��|�ʱ��~b����.Ma��'�P�,'�J�a�m����,�3��rol{���.��R��h�!u�3�:�V�wA �+Y�������z_<JI��&�cB����ko\���������4C\v��E]λ��� �����yȗ0g��h���'�w~;�=S��!�M��0���Z�������E���K�wH��;{G� �� +�Q�������owQL�9V\��T�������r����@?�� F�-S�E���<�7��}��i2��H�i1~í�O��/��Z,Z�r���;��RT�_���ۍuK�5�!����S�v�A�E���_�3m�o���}cUG�9!+3����k�л/�"�>���%Ẓ��qJ���}����&�?uӮ�;~�����ȟ>���6��|��ﲲv�}MK���v���\��F sG�� +D�Ǭ,�w����8u �7���ѡ�!~,���3i�s���#�n����Z�}��ό�|�}|�+�]�l/������?�S��_��J[w'���j>�����_��zPL>�^m�(<dsUݞ�i71�� +�:n�hlO,F���Gl��,E���x�hD�k��t2z)��Ѵ��Z�4[����'�^N8f� +A1H+�-�59A���_0�i9v#x '�7����]4��ν���v���E��9�I������)��+�;���[jOH�8;Dg�D���g��t�т�=�pc.{mܺ�n�i���?B�H�чŞfo�hr�o�}�����a�s�M�k�I���q��ӣU<]DN��2w���>:3�m��5x|�t_Rr��?�0l�l��S�ʢj����t8��C�#f��ut����o�7��M0�i���o���.��sU�jCmѦA9�7����%3&П5eb�^���9�oDx��%��Av�1/3l�v����۷�����_o�����\�]Q��W֮F?c��>�{��.uV\�@$FN ��P�8cbnf��>V�)D� ��|�X\�����!�9nԚ1qJ ������4e7{Xv�G�7�O����vtő�8T�ī�@�� +T/�:3�S����(�@�_UM\H,eO��qK��>���V���=%Oa-Ox�ܗ�*�rw5���QT'���%���Se� �����![=du3���4ߦ�X�$dDJ�'���:�zU)�5"A9�v:ݜ�4A{�u����UGzՑ�t$XO�X�r۾��r^���2��V!��kw�H��~]���L����]�g5<�C;��M�����,������>��ֹ�����8[�V�����Ѣ�8�s�3���L����[��J-<���zXsBZ<�inw� �Y�ʿ\m ��MU�*�u537�Z�ɃeSDg]WG6tSf���/�&}x�b|�ie���9�k���?[i���<���%|���tjW�r�6�3M�mozP�㉭��l{$���l�o��� +6�!�{��/��l�ô��x���,��jU��#^j`��-� +Xmz��H���g���(�ƄZ�ݑy]{��L�N�^�OE��@��W�3�>{��SY��� ;��M�u�nz���ߝ^��s�q<C�P�n��[��)o��9�b�`ړ����zu�� +Y��my�9��%)Q�����Z$C��aI���ǥ_����E�R��܂R��1�f�+��rQ��0��bpѵ����\�O��J���#RDk�_t�}�<T�!v�d�.�5R�SI�\ ɫ���9X�� :"$��tNړŀ�O`:�u�w !��Xk�^O\V�$�r"t4��3�������V�U[�rU�G��E2a.&����5��� �;���%Ro1C,�bB!Dk!u�j��&��'�{3H�'�f_в��Y��:����_:Hʗ��m��v��P6�[��R�s�j�Rr+%��U68�VȲR�7�_�W���V���V��4�_@\uS�&���u���"Y���S���bKxRGaҽ4�*���O���-�r�()ٌAOum�L�$um�� ��6��;���`C�ӭp"@�znw�7��{]���"R�W���l�Jpwߘ6V�9��#���5p�G����+����KI�*e��|�չ90���%���1G���;ee��2���d{�d���u/"D�1��!X�R��O�ᤛ�"��蜎蟩R��c��ͥ\��M�<�$����̍�����������'R��w��M^*��!���`���t�3������m( +�:D�b��pu ���9���{4\#�X�Ҝ+�����@�<�H�ٗ�b?+�������Z��q��������L��~\���=c>yB�fv�nS�>|�Ĭ1��d�>�S�1�٢}��K��m�x '���:&#)!4xr��Y}'����En�E��!���rLJ�d�ߊ%��:��(O<�;%�H!ޖ��8���c��%������s�姊д�ڄ�.�$������H7UmH�[���q�5�7Lq���-�{-'p�����ͱ�4��A>�ƥЙ��PW���-|{�S��wivE��R��in�%�1�c�l�����\L֪I|����A��_PO��p���\ +ֹ8�̴SI�$8C��X����c���`5�ג �^8.w��i~ۂ>��~����V�u�}�K{���c*�hI'�[�S��Y5��4���w^q��;�g"ɇ�5�'�<_p���+"ü-�>a�PQK��|����1��9�ϩ55�,�jK�QpO���� +mmF ����F���,���}��}�́����t0Dz_�+~e����Z$T��&)�'B]ǝ<6A��^�3��f�4�V��rj||�aG��ќIM�&;~�ZE�]N����vL��}K։g�B�)�2~����t*�O$J�_�ps��A��/!89���,t���mU�fF;��9�z�������a�Β���̌Έ��R���w�?��ѩ$�W����W�Y�������zj�������,I��w3��2h #��ؽ��δ��<���-iHcFJ]�8�V[D�yV_[Ge���8ca�:�*%J?\rQF�Ί�yrj�[b�ƌ}�n�����t��8(��+=S��?��_L�V�slEz +�X7Mq�s���D�&G1�w3���c8��)���I�F�4X �Wj0���+0j�0Oׄ�������{*�n6�by=czZz0�����e�h����q�>Sk�?(����������_���\��ߟ�R9U�wB�𗤫^��㪺��۫���;�����b�?��'�G�������}]]N�?����1寮?^�����X|�H ɟ�ڔ��^�-���3� ��I��!T��_)�����Y,�t1�����_�7�ٗ���&Ͳ�i6&"N��d� ��\�wV����&S�����6=gWn^�< �N����HICfi�WX���,���B��q�+��|{>�_8�|����W���k�Nt�k\�~*�P�J׳9�O��uzB�]�zb�����CfV��k��d^��� +d�)��k���������'�Wz�'R�q����t9��k����i���͕���\��U����P�*{~�IW����q��$�uz��-�}�,p�����j�s�� �*����W�vi#v"I{�� +��O�zo��e/�t�c�V�j8t;Ս8����;���SSv[���_����8�' +�qN�sJ�`��y�1��q�z��8t?����}wmvn�F������}K=s�� ��?�������}A����,а���vgoW[�x����)����]w�7��.Y|�(��S]~H�&�ǀB�s��nU����c�'��6�F�Ռ���� +���ԃ`4��㝢\�[�C|`.%��ޒ�n�a��LϤ��DKq�n�����Y�� +�Dp+x�z-)�++a���6�-N֧�]�[�~qmo�vsF��Ԉw��/s��eя�T���x_�v3x ����v?�]��=����_�w��@��1��۬a�A֒$�sj�() �H����)*4��_�Xt�-�����:��h�؟p� +��@�S ϑ�y��*1"���A�gYlk���W�����$8��Y��{^�]*�kI VD�uK����*, +Ѫ�$(/���4��ݗ�C_�u�W}��D�U�n�x�R�3�䵺�5����qs.�Fr���`4[n<�kR<6�N����hڕcl� <����y�$�P#Rӵ���2��Ab>���\2JX��?�A���:{ q�|�a��0X�T� ���U;}��¨o�3�,�|։��%�h�Tu*�rL'���r�J�g�6CS�UMU�j���"��<��ˢ��2Ml,��D��ZV����K����3#�w;�ʄ>�Dޣ!=^�-2`��L�I�1]m{- +g��hה�&���n��w�x�2Qڊ��-�+�"C�������1�Ƙ�My���Z���i��-�%V�<�H�Y��[ؘ+��hT����X��q�=om��A�����u~���ʅ��%�w�3X��:���wo�E�b��YR<���8�hó��H�շ�uN���� �ԉ*�'&��t� ��P��В�@_f��y<f4It-�d��]��ZcV*W���jj�@���������� �pۙ�Ơ ����~���8�3��UG���u���gU�횆�av��n�e���K�����R����p?�g����_�s��k���u��=���j�k�]�%���hįpRc�c��:�n�Yd!����Ip�So��58�y�V*�p^H��mh�t*'7�iz�D���A5��UO+uu���K�H��nF���9<L���ɻU�hY�:���f(-�P7G��d�U RA<��'�(� �ؠC���P�d�`�Bs��K��x�$f��=��r;6YʢKYd�W*�6����=,trtm�9ңZR���1�|����kXX�U�}�<���^q�n@c�u�0�|�f��䩹z�%z� +�(�Wzxz��VK����E���y� 4���4�h�f�%�i�h��*��%�-a�K��s��&U���0��HW�r�Q���;*�vݷ�] b�]+c�$DVz���#�-܁�ߧc���n��*�����z +�Xg�bmc�GO[��k<+1,�����_�3���4�C�$Ю�.Y-���^-J�to�Grjћ�\��y +�+����vd� ���R�o������:?u��L|^�}��J�sO���wu�qɡ=s`f��z#Y��2�R�^�ŧ3�\�F�N���*��-{��5�����Dl�����6����v-^�ݠV�� f)���/_��#7r:1k]"�vU������u�V��67�Vy5����KN�ၘI�ޓ2"�I�������|1�]���)�i鐸�k��MT<�ym0 +���c����օV9�$)�V��LB��QV>�c����`��C�#��~���[5T$�����]U%��'�����"!,��Z�3N4{ �����\S�ɰ�#l��|�u�2���G���c�٧����������_���z(����p)����t�XA.��SQ�l6m�/��5BXxW]t�*�eu�}|j��ЉU�oH�4��)����w�.��Z)���Q�L�YԂ�T�BfC��>��I*����Y�7�x �]+t��C���v���p�~������O�v[-���%�t�E�]4�q��"�!cW�H�� ��|���៚1z�Sjt�����������]���A���KBv�.� +�$�[X���OX�ۗ��M�y��O_^ 1�� ,�n�Ӿ�R~���4"-2�`�MR+c)��U��}�R�?O����)2�OM��"@�:��PZ�-�K��+���&�zt���%�m�(�i��� ���6S��n��2A�c�^Gݚa�;�0�� 0y�"������#�6��~�� SW�T������|�T@$D�^�pl$�㬦F�2�9-���]bz�����sE:�I�8�],�l�.#��T�@`0,�G�t���s���������<��;����9͔������/"(���_D��~|Q�K3c�e@u��-�����c',�Ґ�v���`a�Z�=bԔ���8��!���Ó�$B�v�xÐ�`$��}_�$1�h�?[B2(����4� +,�S��;�i{�S��p�1�P���+f�p�㫓��~����`�� +n`�+U�kI����R%lm�ߍ��~�䩊&v<[�.�]������=ۤ�c{5x(���D�A�s�E�`O���Gk[�E�\�0�(��4Hv��vɍ����^�Z�����=A0���{�T�ӫE�t� ʆ�̑��f�r��]���'�}?�,�����F��Z�3����!9�V�\�����Nc-E�v |� +�+���3�Ѝ�~�^� #�.��2�'�'Yѯ�#+��B��ɤ�\/��?����;�2?Đ�����vo����� �4U$A�W���F��ː�d��7���gh����߸_u�/��m _���k���$������9~Σ��0p�p%"8��i����'�0$��s�����_� ��I����!��B1N����k�V������6��V&`�RH����ϯ}x~�O"\e�Gj�:��cI��M�s!+�i�±���!��}����}�q��[�c{��kA���'b�z�����9���0r=��m����C�f%B�K�ȋ�n���2��ɌƲC�H�٭�J|ҋu�C�%�9F9����_�e�"FLqT㼒���1^�UҼS���-�Έ�;!���Od~N�� J=&����"˝0/b><=�4�b�箩l�o Zq}�}��, j��V�C%��_ǁ�)�oj��dg���T���Y&D|X��zч5��� +�nɦ�R/�0�挼��)j����W�tK" v�-��@u3�d>�4?�ᅧA�P���� +%c�G��>[rX���z�"�x��rx�g\-�c�̆��+Ns�ԢuW�qOe;w�[� !10��E] f�2�⌥p�9�hܖ���f��cB��t��π�.h仚]vM��,�� +�Y��K��������Z�I��e}q���M:����fLў�T�=��i��P���-Y]��K�1��Y�V��"7�x����qUD��E,dy=�I�w�a6��@������иT���f���7��r��\G�W�\O�����o��!_��6����hj��;���G�����?�;&�I�&șʝ�&S*�|�B��\~ݭ%WY(I��/E�_�ā�H��99k��q�Og��P�ځnN��I�6���q�*3П-���wlV0�ܔ��~,��5�g4V�)�=���_���V�����ƪ� +��}q ��;M-�?�^��D�e<�g���4��R}�q�·��g��>}�.���R�s]��B��){_�%(��mt�FĻ�O��|4l�h)�ȼ�� +���u;�WY[w���7Z�,��ܑ��w˹%�l������;�����~'c��yq(��Z���n��h]�/��`,�Ud�D^��K[�h���uT�#�G�م��%ɷ8t?,)V���Z�;S��F�;��-����ؕGl�2P��הp����#�Yx9��u��}��&�qf&�ĺ-2#�L����Y�&�w}������{ +^x��W����M�[�uq_6g����ZD��«TǍQU�p�I^v�.lAL5 ��:�-<ݹ"�;%�����Yk�5����֍�k�ݬ���\lR���\g~Kn��'�-����A�����ҲDD�.*�h'�yX|4`t�f�����;���W6�Npǰt[���#�5�7�s�<Mp��T��P�(�_wq�w�� +BH���o�ս2��Tz#�1Y��wɬq[tgm~�q�9��Ȑf�M������o��:ibtj���!oX�S�(�4S�l�|��}�o/��͞��k� h2rBϛ�s�ﱣE��n�c| �� yZ��<*�� +6��ͥ��֛�~�S;T�̩��r�(=��~�U�Kg�0P�V6B�h*Ԟwk=kp����;����Ak�[2g����}���=Uf$�~����+��0Ҟ�:vÎ��|��W�䩵�J�b�Ɋ��p�]����|���2�1s �7$�M9[z|$� �������-��.���������#����0�s���6�"Z!F[��8i~�p���@u�s��w�X��4Q��0�XW����8Udž��x��j�AOO3�/�S7�ZU�B[�Bi��ϒ��u(�ɼ�����Jv�u�t���*��D�CM�C��I�6M���xGnI40E�����@?�۰��Nktլ�=�Ǭ����������'���۴�bK�%}��)�)h���~`��Hw:��M��#���ʣ��W[�M�������8�~�9��l�����wȊ�ö�������u�Q[!�"��,X҄��)>��a�"�I��c��?��h��U��}Q����r�mm��H�d�*s�d��;���4K+���(J��)p�3Q��^N'�FY[tZ~(,�J�+��iR♩��oJ��[�%'�����̵���� �^?�4 ���|8�����lX�pM�0���_�s���²uM0���lQ���������\�����b�u�֘�^��F�PuG�16���>Xr{���҅`֏ �=�j�]������S]d����~O(bw9��< �}[GDh�~w�OY�[x(��`�e��P�#�M LMIה �Y���d�V^�P��E�M-��$��5�$�k�I��ɖ����C��7?�@<cyN�߉��m�e�������\҅뉃*W��Đ��������A�*����o�ؒ������G�&z��-����.�Sm}~���J{� I@<���n�U�~�x-�x� +a�P�U�9ax�����8�gn�J�+��;Ś����p��z����k>|U.��x���`��k�g� 3�l.?���Ã��b���!�8�bS�W��2�H3��k���9k��)*�f�����9�&��C��aI�]'�oN�2=@�v�� +07H����I��hp��c�Y�@n����q�VPB�N]d�N�gu�Y'P¡�MrӇ��D���~��ĢA���d���Su�0�ɯU}���l<� ��L��-8p��i���i���ʿ���#1op?8Ƃ�1�6��o&!�:�; 1���?��Y���N��<m@t��)P�4� �}�C>^6�B@�+:�P2&���N�ȎaӦ��tZ��H�0�+>���N;.��,RR@�3Ŋ�'F�ed����q�P�מӽI�7�}j��@�7ga���b'�I����>g@��)qB 宠�v�#��̀��#��ɜ�Eр�0Ϣp�3��x��!NU�@"-,��a �;�p��?0�Q� ����t�!I+�`�^��tA4������d�:�kk-�MV_�\X�&6�����p`�!XHf����t{�c��)�2ݗ�v+�- ���P�b���!u���$D��^#v9a'(�'�m���D%��� �D���ѯ����C�mҼ)� ܅���9{����?,@jEe�~)����9Sa��,)�˦�������=E� נ5�v��\��L�Q�H�͋����V������f�V�i�]V`@���NF `�ɾ��/S@����^�<�����u����2��o�K�F����R�_P��|�3+�3A�uhr5j��OO��F�����!��#��=�4�*Xiʀ�.��4(IZC8���)��A@�>��24�?�5�{�}�&8X�?l?I�ؑ((�~�k��ȷ��=<X�j�{x�T}u~�Tԇ�����/��c�Be� �Mz*a!c��k?K�S�'����K���6X���O�˱<Ë(�rv�#&a�>�J�6p��9�N�9]WZ��&A�H���p6��Å�-l|'�V}��-$[.͊s���*��1vE�7�� ����}]]�ܚ�tÒ�ŗ��m�/�:����OT�=��\��@��v6�.��8������#T��}Q����4a�e$�S�4���7��t8xOrQ�D����>�n�/Wx���ѕ:����~3Ae�d`N{�������F�Aᐜ�La_������������˟V9_w��� +����px��-���,o���u���0�@��U��-r��Y��;MUcС0�N"�}y�|��y-����x~ؔǼ���x�$��x_�@�zJ��^���*��M8~ӭ�Z#�/?]'�e�p�lN��auؔdŒ�^@���P���",@��9��6�W^���x�\���������vs*qWqPW6Ip#�[��ԒP00�H?8�$s��F:�``&L�yH�TnE��V5\O��2kAs��֚e��ݩ� ��#y��N����s���{�p�թ@V�0�(��Ɓ���%5����cyF�n��u؛�����]��<�D=�4���X�#\I�� �e�(���%k�F&��a���8��^U0��ڤ�t�V���c�o6%P)q7�0�����͙�4�h�N�-�D؝��� ���I@����C���]��Ʒ}��wP� ���x�E��fWἩRWK(�!ac�*H�GO��09�kF�K��>Ӆ�`��N|xk�a#� ��1?��<�}�Bz9W8 Gz�T$n!���R�8��qX\����R�CZ��<�A����)�6Y�ٙN,��\���v_6P]`Z� m��4��P�G?[�9�c��Ο�sP!S����0������m����җ���.�,��3�jS��L�j�b-;�7$} � +�!#�7uq_���I4\/Q�$�J/�E>0�$\Zڛ�La@��m�hXN,�j�`�r����� ܝv�ݡ3R�*���` �Ö@fL�ܖ{� ����J:���CT,�W�7!�Є�v �T�n��Hw�L<-�k>�U����+B��H��� Y��mS���BO�~.�H�@|I�a�&��W���-�<TP�L�@��Z���ӻ�H�5��F�L,������nHP!9o)���`�n�h!r@��Z��.��:���踊Ox���4BR� ���Y�� a�r�n)h��q���H�8��������&��:XZƘ��l +H���)�x��Ֆ��Y����ɇt_�uc�G�ᲡFb�c���0���r�P@�~M��VIj{�#Ii���"�E#~&`(�H}.i���e�=���h���~�`�_Z�s�6=�~b<A�/�eV^6H�~|���N7����TK�}�cG��zk���ӟE�5g.!��#n2v6jů�Ɯ$�dc��05?���"�j����3��<~�����|̿�'���0/��a=��gZqϴ��"7ǻH�|�Ø���F���d�@瘐����}C��ڡ%*<9<M��ؑO������%+e���}+Y��z���P�L����n��9�q[�Bi%���m��?�ʗ�����JSգXגT%w���u;2XO�ݡ�$����z�I�Z4��[��I�{��>G��S��:�T(& t��G�"��F�Ӌ��^�1�`aG.��U�B�?�.�Ų?)@B)�n����j0IW +b���K[~+���ܾ�zL>�7�|%n�h��XEP���xAw��m�i��J�{|�F܊�ʭ~����1h�-��|��w�����Gw�6~��� ��zI�|,�9��=��}fԪ�<puy��\�Q���j��><3k��vK�3\��OU�]6°o�_�`�ɫC�7��G5b�y�.�i���4 +M>��ud����R�0�aN�uGo�q3��X�=@uֈ?�&���ee�)%��)Y��d����&�ߚ���?���������lP�'9j�����y�dZ�q�&�ؾsS��8�i���&t��( 9�C�8�]M�� ��ȉR�hpx�?Y�Z}�vg Vw�|�p3&�h@��Y[�!Y�g�5!�U�y�lT5�Kܠ\�)E�}�x�'��D(t?,)3��'tF��t�F\������� ��?л�H?��m쀓�->S[����;�\;��_�K�מ�4��ϐ�����'8�Tw�8lt��0�Mĉ�I���%=�%U��n�9����G�9LT�������{7ϋ����R)�E�ۺ�Yd@���gI�Sfe�h �{�4��On�ӨT./)}��ؕGd��F���#0�z +�_j���h�����ۥ��uq��'���mIUҸ�I���I��@@�Ԑ���G�U���Y�ð�-j�!`�<)h�m�zҽ�ͩ.?�g�����ja���H�-�+`I�{�`��X9��Po�K� 3�s�\�su���F�D%$,@�#��p��T!��CaҤ^L��B;�q��1ۻ���fEh�E��~f�3r(�M�7H͂���$ZXri���C�@�<�{�%��t?@zޯL>M��]��@�>����`��6 yO`���(0��jN�)� �H�f�nȿ[�A�s�����ğ�݀�#9D�y?��`���'�H�7����+�ߙT����,����Ђ�#ө!"�>�y��j�C�\ ����A|��+�pa����z�!{�K�&T{k�T�mP)a�W�O)���#%��@��bg'~�牏%|!�L{��N1B��)�_hDj����$iO�W�\��]3^@�T��Aċ�v�v��% �Ӏ�E����ˑ��Oq_�M��?�� XҒ���wu#ā$B,���⯈�ļ v�r��7@SE[$�F:CbB�~��{�'bjY��v����?k�����d�����Lɀ�pGF���ݪ�k��s�_��NwL�ļ���}�;�q��z �&�Z1�(J;� ;P�Qk'�HS`�?K���p�M��EH����{��B��ZP�����4�,Y��:���H���Xc��e��L]����u�SM�Cy��z L+3�P����·�\��@� ���ˠ鏺B#�2�F�~�;����F}�G�B$= �B�=I��p�A{h�(���C��������!υ��=.}t��iN��yV�����?�A���Mq8�XWyޛ�rF�����B������L���H�,��7 ��q��S���O������7�y�t���9� �����^l2���Lb��m�3K��5����BH* _F��eдY)�I@)U��eң�������m���x�G��Dx���Ϗ�vPܑ~�l!<�X i��4 ��C��D��b�a�wC&s]Js��x���@0H&D�Ŝ��pX�ޗG��oӦ�8��׃�~�0��RQ�</�XP��#E�.��K�����5A���r��K�&�کSՓQ���SQ ɖ���s ��pN�&CR��]zX���KI�Z��I45a�M�Ӹ�-| Șw�\��\fP����_?��]Q�R-&�[ +����*̗��N0:1�����Q7UO�n�+ �Yk֠-b�)�p俔�.�i����z���h�.n��F\�^��n��0��攂�$�S45(~��V������ +p�LJMs�l��9 �d�oc��,�^�Xsk��L�忠J�Yċ�l�V��d +�:���\2 �k����n��=u"�<=C [�L&i��R0�p����P��DyȽA!�vBP� ͡����Q��Եe\k,cnYz:g@4A�u���;J4���j��Sx-e? ���A����!�g�%�R�S�-}�yHU����p͋�^���V��Ԭ�z�(��]nq�,,���ˠRO�x�N���e +���"��HF��P��������Fq@��0g�;����d���ғM����^f��'�_��e��Q�+���@��[^��c����&R�y�� Й�U�� �9�:���<c�MiJȰ91 �Z�z_d=IJ�`d��o�k� �����p�)�p]�;Gu�VeE�,PW�+�G�=����m�å�?���;�}�`���'�[���4�k?Lë���m>���ہ�B��o��t9��+H/��v�c�:W�%O +�{��v�:�fPl\��zqmD��/8��oa��Y�:&Н! �iV�� �g��}�ʢ!��E�7�rȺvöuPɓ}�����ɥ��&.�8�5TJ���ͪ��K�������������|@��y��RU��T痀6�Ɂ����M��&�-z�¸ +�� +$y�����s�&A���C�k/��#�@nN����tx�2h�G�� +]��T���c2��(e����[���%�9�����}�)u۳K�gtC��Cz$f(<���)�s!zB������^�x����˚>��Z����e��O��{����0B&�u0;��IAv�- ��!Kw����n��Н90�I �Ĉ���-{Bp��~O)Wo����kKZo�"�����O���D�T~�s��p�� ՉU/C��l�[�J�!)����pr�T�m-X���A��0��lN����N�7�}+e6�j�����WS��DJN����eH��6�R�&�D����W�,��B�`���Ҝ+���q��沅e'D�K�I�ϒ{n��_H�8:RXR%�4V8ru���6$�nq��%���R�X��\'9o�LS�v���t�0�G�hr���b������ ik���wm���uf�/������x�-2=��2���z9� +)C�P�U�*��[�/H�Ji�a&�H��z���'�8��,!:����%M���2����,��2 �9�N{�<�Ŵ�滋(uV ]Q�y#����.ID��w������;�[.i�JzGw��/6Q��:F� R>�H�r`�W~�Y�Rf�q]F��f6����\�7x�o�W�����=4?�I��+Y��h���m�^: 9lQ5V�yj��"�o�� �=�x�~kX����]�;�}֨��3D#���Q3N��hԡW Q��:cUy^���{��G�2�3a���� �P.,�&'%�`��I�!�ݚ!�Z�;e���2�?f��t�t�L{�]���Uv�e�ܐ�$������yZI��H���>ր��}hy��%SϦ��z'�ؙ�/|8��G=�`�V5�`��3�֥�~��!X5�7�7}$���u��/"<�Yl��@Y������I����ܢ� +��El[����*��D�Tz���?gr#����O��ͧ��k˾#�'#_��8����$}��-y�l�����P���(s�a�#<�g��(% +�~�X�&��H�xt�������.�^'�z�n�+�qtѰh��~X�����8o�L�k* >H���܉щ-�Wϵ���P�O��>rtC9d �ڣ���.��p��e��.ۘ�ƿ�����ů�'�}�X燢���1IշȎ���'<qs�ۻ��*%��\q7�-�"q�t1�J�:f���4[G�D��x#[Jmn/�6�u�(]g��9��Sc 5ڕě��z��L��������sE�&g��u��<�������_��!�r�Zgn5��%����Մ����,�w3���ίm*І�;P�wr�+L����y,%K��$�����ޙXl���g f|*fh�J]l�dM����kHH���%���:+zL~t���^�ЋB�3]m||�;>�{( +��K��ﱞ����]I���8P�J|a�^���6E [�����"��g̑w=�IAn�!��r�B�G�$���lav��_��K�^N�s�Vuٓm�� +���@{,�({� @��&{�~qm�d�;���<�S�!��wŮ<�<�"HY�&Z)8��"����X�.���"��'Blx��v��a�90~/���������|�9?�7Y����y�n�u{^� 3���VP� �Ht��hW���D���E�pg5�or��0��=U��~(L:� ��1�!�� �OM X|r�������D���G�ۖq��ȶ;��NA�kly;�z�-�Q������l�՚k´�~�7.��ڷh����MsC�E�gdڴh��t�"��|ܰ�vop�ý�.`��A����Ev���=2��Tfg��.2���s�#kڂ�� i��}��aG�����N17��M��F8j���~�O��l���k�e� +�nú�;X� ֦�*P$791��p�"�q�/m�B�x��;m����V���ם��e�|�n�)CR͡�T�L_]�`g��Y�Κ%��%���;e��������D��N��UA[-�vf�\�f�˯��Ve�a���� +E��H>Z�X��T���KD���婈�4~��EKZ��KJ�n��y�f���:MC�6��W���#�}�<�.����#eq�"�.M�-��B��[I?������p����;���[HyC?�W�r\/Э/�F������&����\t�'n�f"�Ϗ<0u�ߛo�<����|�����bJ�K�^��8���5�'��'��w��0��I�X���zڿ�S�.�>����cP�+��A��S�\H�f�c��8b��/mz�c�Н9��H�g�V�]�|9|�C��EL�����W�o1 t��>~\>�a�U �&�6�y�V��s�~�C���Om8��L(A���CQztE���YWh8�4�Z����<�N�r�k��+ut����Jm�|C%^kQ�z3u��L�W[[��������ۡɸqV]暮h]3. �tQ�ʚEs������/�S�CM���\^�ez�ծ������d���j���f^15s½�T՜#���������x������M��X�'�GpV�lL<O<�w��7�^�D;�Ś���R�`�Ɍ;q�KqI�|h��4y p�2�U@�ֿe�2͏�:|�#tj��]baK��LS�k���pW��#�p0��;���'Ir�O��G�������U-bEt/D�2��`xp+9����ې����5���n���I��h��ӫ�i�pɉ+(}�.���R�s"��f�wt���-"&�_��<1D-�� �]x�0z��R���F��A���8��r.�����8�w�:uI��_�����{]�:n;P�H����9��Q�%�[�t�1�q;t�9)�ɕ�$���oJ�����h��>�,:�u���|n)�;{Mg���]/�3������Yst���Dp�LL��*�lM��c3�/U^5��c2�&��Í%~�擪 |����&���� �mU, t5cǖx������(+���S�"og@Q�I�4������m��"�l~��9q|�x�$z�g<+�+��ԬQ�x�uk�����Yc*�hM:��9i.���4�T�}��pkW~��6B5��@} ���`�L�.�����*���7Uiq}�D�dC�f�����yq�� @Ճ_O��1}$���nQ�� i�tl1��tCԁq�o�z����z�xlzҳ�Osv��c�����3�M}b;��f��7��H7��<q�ӇB��0 <���Oh��;|�<gD�^�|���cL��B?{�+A<>��M��(��mix }���R�ޢ���C�I'���6%+r:�s_�+�C��nc9nP��'�YӠ�|o.�_�D�Ό�qc�pԝ(�R�kaĸ�P��I�nPK�d0�x�v�J���F�G�l�6�����@�^�7H������� Ώ�1���uS��$�&�?:�M���_f��2M $��w�< F��*>"��E� &+�]l�d�����)ҳ}����B����פ���[BN +y����^_p��>�]���!-53�ׂ +�a�>)^��2=�i��W�%,�0#�����^ I�.V��z �����~g{�Dw�&��n�%���`u�6�����tge�kx�.%=@���t?4��&�@��A���\/Ov�Y�f��P�_���K�U�ۚ�����1����f�1�l��«p� �$�b�0�ضvc�H�mӆ?���k+�6��zjLxb�]σM����T��}��s���f:�O��aybc�~sF�;����ڀ��a��ݎ������ɤċ��}Pbᡫ�$����^��T���;4ԍ������Ҭ�~j�u|�س�Ba�q0��uy��I�v1ʘ%M��4�2gꍗrr�6)K�7����L3�.m�[��f�6&�u+�&&�Vt�!�sϬ�1���+�tq��%���`��4?.y���Z2����tH�i#qw�� �m���H�����ղ��֨�-9���uৱ*��&�%���|�A[h���?1�_N�au��}q&�W;+=�������c��E�_N"��k=:T�gzE��*��P�^�lcqW��a{����QQ|ݱC��I��#'"�i��Qj9���w��$nd�tʶ�4x� �w�r\�,R�vzk诜�|�����?����JJȬ�4z��� �f�U'\����}�6��i��F�[��e�.�}�x���q�P�3L�����q܂$��/b��[D]�+�'�u�.�9���!�PV����P�Gi�ݲA�X�$n�V{���V��|�����I�Rq�+�cu"��l��\�����h&�݁(�D��$I���@ɾ�t��%�g/��� �^�oMГ����jn�n+A��w�V��93?��ݝ�����Si���O$՚���� ���]#mz+���i�>� ~Vy.��9u��("Q�1w�8����������INc�m6�0o���*��?>I�� ����V�q{���<�Pl��!N<��BO<�2Ԉ<0Ј�yT F�u�er!h�-�q�1��6���(�œq�֩�nG��\<*�E�x����5s��������UH����䟨U��{����p�a��#����<��Ĥ�N�����4mxi��B�����sMTy^hΣ_y���L_�3��Rg�n�Ʃ�,��7�Ĭ���EAX"�$R#����xvy����)��O��<� �ȝ��70��)`��$A+���-N�>z�w�h�� ф[c�1����D?ru�/hL�#�y)[��Iv�����7�r^�g���)=��A4V�/c"���������ї���Th�<`�a��H�xR� �m�0�>��i1�����k�4fơȌ�>}�Эu3ӧE����Oǯ��KdŰ�'�d�Θ�s�G��}%��%��?�+ "��fԈ��\3:>+v�{3F�u����̥���Cz�X����"�O�X�</Ye��@|��-銴)��ڕxz���.��SI�dG�Qu��w�Wc�sa�� +&:]� +��,�U���*`^̳��o,��%)� U_3M����Lq�1�|�^�1�V/o,��@2�'���� ����"�Ɋ>�i���Y$�K~���k�|����Yy��NW����|�L���ե��bh�L�6�T~�\6_C� +'��O�&�p�z!��z�A�6N��t��t�]5|���j��H�ql�J��XM�qu՝@����.ig�М�-F�ǧa���Ҝ��>�w��t����o���c�L�Cy,q�蹪�5M{+�kፐV=Wl�������8eq�9fu���t��u��[�����u�[���`:��n�O��R�����_�bv�~���20���ʌ�N>�bKDZK&�K~�y��(9[��W*,�I2�����'ʉ7ZH��:S��?������"V��ܩOj�{���v +��F���\�� +���T�z9�]=�r�EYjW�7�M�ȝAu[]���Ί�)��:��0��4�$YDN�S�N�A�!�#���9O���:e!��Y�B�,e��6��6�ʾTf1Y�+�Lj��|�"]���R��.��=ֳ��#��٥�M�Z���o���w��'v���D���\X��CyOS��&���t�$M�Hk�7d�����U%�s�l��Ȼ +`i�=�S�������E�y�)�f�Yw��N䧵n���Y���f��0��j��DN����z�����E��w��c_]-��]�����@)?�Z��s<ؔ"�["JEZ�-�>�)�FeV���=mz>[�9q��_0�Y��t���1qg��e��ZhC���t �n��R i�M��묁ۉ��L�������n�=�}4�L%C߯d�e�bƣ�tN?U�ꀏ�?>_��/��o�o���J?�fE� O�\5��n�I<��cb��5�Q��z�I2��K������E���g(�;���$5�o^vՊ� gėГW ��p-RA���H��Q��UIE8@R!pב�m]�yo���k55�*q]�Bؚ��(/~A=����Cʔh�P�Ξ��e�^���Ґ�PCqP�c��%���^7��3�`����O�o5oW���M�&O�v,X�JC9b�>g��ƔxN}��rTP��sq�>�3������?�ʤ���I�>��R��+?њD~HފE�b�z*�r���t�+���o9n�ti��%װڷw�T��.6u�Q�^}G�^M�!��X����~������%�j�S9w�!¬l��߫���âB5M���u�:�/��Z�M�����Vm�n%�*� ���a��ה����-����5����� 3S+O�)ю�A�k����S���~��!@R�OWR��W9��r4�4�&G���LjN��z�,=-#�N�� ����x��Y'i�P)�]�ed0ev2D�.��9����I�}�4M|�=E�w�R�a�����<�֮�V�ϑ�H�[��M�`y +`t��}��U]�Gn���X�9��� 9IJ�=�ã���@��h��bOW�;n{Y���\'�C~ؑ�<�9&Ib��2�k�[e��,�Rk貕�w��4��5��‸�>Ʈ22Vhjᒎ�k������v��,/�����E�Q�3tF3�W��2y�ѶL���yf�S��Q)4�zk(��:���#�Z�c]���MG�B7 �(R�v�cu�Y�ࢂ�1��/�p����huk��[�Dn���~%8(�[6�T]mA(��2���ߖ�<c�C||Fc�$)��f��uQf�4����V�� d(3�7�;��q���F���|�����馔���[��͵����Jt����!ie5Df�ɪVV��V�����Y�#�n�b�H�i�4d�� YSJF���k���@�R.'�I��>d��Ʊ֠��o==�~�\_ќ/ޜ+o��4O�,��e�~�#�qs�Ig8���^�K:���;���s������熽m��1VlB��ts1�ZׂB^�H�7y�GKu�H�2���|��a��J:Hq��xR�� ��^��A�� V�-\���5�����}��l�/nc;3��/��R� +�X���}Թ���~��3ɵ���4��z�|���'mt�!�F�<�S�v���i��hp�h�JBZm��N)��f{ٿ7���h�Qֶ�:���H�:f<`^���kA{e��\0ACV�W�<I�-���R`�O>� N+���YP[��:T�E�x`p)��!�� G���Kfp���'@r6}���!L�"b��P~�)�����p�یm�yDڎ��P�Nm�bW�H�`�����M':�pF�T�@��˘����OH�~�}����m�GȽ�����?I�}/�?n���z_�.��� �/��^�w��*ak0��*��ǰ? ы��!��.�}��^ZB�I���&Uq���A �U����r]_�@d���é%�y$��M�7�*V=D����=h��\e2�e�v<��)�$#ws)a��nl2ĔZ�M��O1_:�W��<n�w�#*�Y�=h��f��`2�e�(�������-T�C߾���D$�+���3x?��'�]�WM� j�"�*>��FB�|{>ރC-�U߃C�L* ѱ�1��a�+�3���IO%(`LE�6� ����{<��^���'�� �����r,��,��%�/�.M���I �4�'�9�B��� u�q��6��y+1�����v��`L�@ͪ��D@�*�2��W� +{ii�^q��{<x���K8��f=�%�B�A�"0"tx`�"�!�R�� (*�d7P�u�(����u$o�r�����G�k�,A�d�1w���D�C�XU���w�R�b�~��b��cD���|0M����W�-��.E�?���w��d��r���J0�]�:���t^���x�l�%�������Hx�1�dJ8��������s?�݂Ŵ�^�i_2�Y|H��6��� k�������s��!�a�BE� i,�����H�K�A,����Y��!4}�B���g����K?y�d�j���d7J��7�&wY�u*uč#�:��q���^7�n��RN�'��\���'��@�۪I� ���V�P�&��:Jcԭ�m�,���(</����s��9� ��p:?*�P�v��C �8N|�DN��g����[��)i�Qn<i��Gjfuud��F�U��"�*R4SC�J�K����>�%Z���r�X��{��d���_�J����{x�%�0!w-������=KXE�>I- }�P�N?�uAɕ[�ڲP�k�5��ۙ<7A�a����k�ڌ���C�"�a��q\�i��� �C9�X�U<�7VX +�1�d"x=��k��H�y��Q`��,ؓێx��g�7�� ��E��`�9�a7�@}��{Y< {����g#�Ƅ�p�X���7��/�<q�)>eE���e��3�����}�d'����kŊptf�40d���kD��ҫ�Ѧ*yɋ� ���:�������"g��*����D�aZ=L=A���X��$B:�K]���5br���=�)"����/ł��7$~�|=��J�n��os���p�Af]{���}'q��������)��������8.��l��j,L�@�Iݕx�Ω�H +}�-�xjk����L�1���UW�sa}|(�+��G���N���2���.��L����jNEV��.�U���:���E�'�����r�5�éB����I�f�| +��K�1��z����ߥ��5������bW�*:���[�-g�m��ΓI�Bt{>#��X��Ź����L�q��:��S��0%�o1� ���v +�����ihO��C�l<�H������Oϕ��0�����q��h��l2����B[��9���v�c�A5��ť�.�"�'p��o�]��ȗI�&��������7�8�"�`�����4x����ko�*��H2�#�2����ӎ�$t_��_�={�&�ٳ2��x��]����բI��=�ON���}6��[A/Z$@�%�!pZ� )�9���kE)�\�ZWM%���ƨ+�Y��d��k���;��n4�m����+џ;j���ԁ5�����h�Q�hjdv<�[��h���=�]���3W �/�����K��^�&_7�O唄9|�v�D�X�#����H��!xM&a2��l2��ȍAR ]��~!�vb�P?��� ��E�u��J4�=}5YV��#ǘ����1E��0���[Y�쨸՞#�Ý/5���xQ���z��nC#�L�h#��'��]He]D7B�n���� �φjc�� +6�X���H[|[?#�ַ\��->�|C'-f���㡺4d�S���G�S�#��ն'�g%N�;[釴��[כ� ᒑzWE�7_A��R$�e��D����QG"b�ϥ��hb��;��:��)I���)��+���E_�Ǜ�P�U�M� +�y��=�(�퉭[~<�ރ�L��fz����=����W{bz�ϝ��z�I�<6���<��&������t.헉0�����߮��,h�Y ��3�Z��j��V�H��� C�3���)��BoP+�ޠ��+�'������J�7���n%�fqP��Y\���⸵��,��X�p�fq���u��qK\�Y\��JU�k�v�b}���=b��QO��mQ�T����5�����4���P�ݚ�����f}߂SWV0��p������a����GAS�U�U��}�W�]�;��OǦ���}�1�[<�/��E� �.�XسE���Fq�m4R���3��(��M5n7�30�� "��opF[��482��h jV��L3>n��~>�b���!�u{(�A�5�����D�M�����2���l���_�����=|�K�}~�.u'�qݜu(�i��S�s@ƙU��][� +�X�+�ܿ�h�m�8�� +��[}eJ�-Έ1[t�jty��U��$�x(O �}>���r���C%~�D�Gׄd��CǼ`�_~���4�zzj�-0�b�O|@����y��E�Uءn��@�*�ĚFo�OKM��}϶^�Eγ��1k�)ojE ��կb ��� H9h+/�}J��g�yhwpבы0!+�IԘ��oO�=�y}חJ�� H6\��r���//��b�" =�6� (n hw9���T��jlO��I?��ҍ���o��m�ͬL�۷�Z�Vb�D��Z�<j���t�=6g$�ޯY�L�`��/��4�*�^����Ɨ�OHS~(6d�"-:���;��.��L�=3Cy��@�O�,JN���T�C��۱�f�F1G�����!%�(�6�u��?U%�uȢE�EB���|���~�a|o��헟~��7/ua��5��+�r��~?�d���-}��IR2-�}3|�������ڳ�"�7���.��\��xc{��.p���@��qO;�%k:YǍ%��[ +U�T������#�(���О���1 +��>V��L$�W�� �x�A�Ւ��_: �r�Χn������d��Ż^���t�YW;xE5�Ð]�YWC��b����o�]��?���������]&*���NU���`aX�1M��e҉}�X��Ѳ����� c���(�.����Jd���M¸95��ďQ��Ö�,���F��&-J,����y`�jy`���]7�v�B��KO]c\l���b���)Xd��(װ�<i��L�!]��282-�V���FC�D��>�i D��:���k���3sq~�� +�����MX dQP=�'(؎j^�H�*L��sQ�tċ�I�c(2rL���N�)��A��q4��Z�Ok�/Ϲl�x��ڦ��0}��?K�:t�#B�x�!�{ �9d�'�̄<^��3���T]��x����d��/ 'w��Y�44��1�Il ��S����1�ף� ��� l_.�"{m�zd�o9إ̔|��N�,T_��FA)���gI��:�g�F|ة۠Y� ?������_������)�������:gِ�J��3I�*��0Wk/nXdp{ڄ�Ui�ذ=�Ҭ8sj��T��������"��u����&��z���bC�PlR�\�(��������(S�'&М�|)9ў�����*x��?�UQ>`}�`[�EF�|����!���eY��l�y��"�@����I�VB�6��|%�v�^�g��a[�9���z���h�\������5M<���|?���ӗ����0i��I\x���Wi�35���n�d~�����߷O�:ݰ��D]����VXG]��O�[��~�u��Rq���.�/-Pu��Q����;t�Q>��{�������ԥL^�p:F����sGBO��4�G���<5!(�(�PA��A���'���䰍f���Rw����K���d�F\�h�)q�m��F7H���&>�m%bƴ� ģ��v;R��#�X��\���9:��["{���ty��{�{3%��-���~,�:�6M������W-�ؚbU���Ձ%�7VsA$�6����?��H�ߟ~��h&����G(���<h�^����z��¥�ͮ��f�ȦV���� +&���F������N��0~m�cz*�w�����|GV�L�^�uٓ� �77J�\�y����ii=�v�b��*6���-6�R~���-R8G�t��b���9�������7e4(c�:�h�Ϫ��"i�-�ӝZ�z����;�N���`L;ۉM�`iy`B�"({T�!���q6���_����9̩�ᤪ���t{����=u��ifTC ��Z��S +<�iS�>K���h删��7Gl����[L�,��ŞBw��u���!T�I?�W��sq����,���݊�_�M�ޘ��P����̌h�I���["\��)u��XF5���� +%0"����P��d?*҇�&�!t��CD�m��`�T�=��B�~i!�+gΝ�E�n�ggu���X� +2t�z��K���u��;a<RF��=�Ż��5�'D��Y�'���3uԢ]/��%#�F�27 +��H��_�j���J��"�LwN�|��.(����E3ݾ}�yE�;�9~��_�պ�\��$�隣��^ŦQ�I�-I��9�0^;�����M�W!S��wê�>U�hXE�<S����a�w��j݀+��ȟ_���ǀ�%�V�-���q��%�P���`}���f2is�N�R>�w�}ֲ�I�Y�����eb�f��LR�$�4�y{A�Q�v�N��ۉ������g+�����sV�Ҿ}���SkW~��d�O��(�t���c����,����<�������^Uo�Ue(t?,�%�B��ߨY<Qy`�17������L��4��P���[�q-\��"�>9�������b��vX���+V�{xA\���o��⮯�e�e-�H���Jn���F��!���D⑀�,���a32���+����U��($�cy&�߽�7_.q�&�2��nrUV�&��z^@���Oףr�d��it�K��W��ߨ�4��Ѻh8�� ���Rz�YO�L�'?���`��w��!��r8<Z�>mf� M��>Zoɖ�%��\��(\9�M� ������]����d߹�-%���G1�b*��i�mJ|�=���[|�!�D���/N/�Ą�����ZA�B�����6+.����\1�_�XV"���;�'�gw�� �Y�{���V��\�InKe�)�͛'�����!�4;��j�I��tt�JD)�z�"� �J����UVz���V:�c3+���[�:����X�7��C��Ȅoܯ��M��t�\��v��Rn��F� i�]�I�z�EI���/;M��-$c�eٿi6�* �.�%�K:��w��0�j�?�����ޛ09n����b� �l}V�x$?�=�O�{7b" �nB4�vO������*�U@ᨃ�$�ak����B�Yy��j�%7X�q�t��@[��L�u+�s�����:��c�����kc�v��K�[�v�h=��~�����D��T�٥M\����&��~JݥQ��-_���~�;�#Ѫ�MNʅO�G�^��ސ���<�z�U5`��h�-HC�R�%�ru�2f�ڪi/j�gu�����T;�E��g��塎�>Lib*��yUϝǩB�6�e�P Xa���RS�ȼ�r�{�+a�g��;D����w����nQ�%�ړ<��0 bt��9��8()��=QQɥ$=aD��@K\�� r�Ny�������-r�gLe��Z8Dz|���k]㴡][�`����4}�� )S�W�����Q��g$AK��c��@�v���j즔"� +�h ����B���+A�l�]��Z�jX� ���I�&�X�)gO�n"k��lB��������N*�~�;�)i��5ޗ� a���NpG�.a�XD��H?#�ì���Bj�ߗ��!3�I�� �y� ^��ŷZ�q�,/�#�M�E�w��o��^� R�υY}�^9�W�_�Լ ��f���i,��Lpʃ��Y���ˎ)ؤM~�����b!���ިc��r�&��W��*��RJ��4z�.z��:-x���3��G%p�K]���� +�6Jɒ�]���l@b��6�f^�����hU��S"��X����$�l�m#ƚ��2�2>&�dg "�h�-�eQ��x�_\�v��d�栛���q��M&�9��QL�$��6]Cj]bB�������*�W�qD�£�&����"p��O���� ��7(�8Z��-fDy�6�1�=��j� _�Pˌ +�K�<�~�^��)ō�/�Y�]�۰�t *�ض�V�b{ +�\��Q�����҆F +���`KS5���k-F�J�3�2 ��4ܯ�zM�m��E5 +;��8�N���J�,��П�F��:'�J�يâ��>?�Ѻ�����I�e.�� +��v��>�����!�J�����Ch�9�/��|�uz��й\�e��,?�N��E��:\�l�?&�`u�A����d!VED���$!�4����CFW1Z��}��B�%��p�7E�1;���L;FZY@���[V�g"t"2�1K. +��ٕOʡ +��9��ת?�ԐA�e��M��X�3��r�MS�M���iLmw��Pc +�6Y��,� �t�|����IS��U�.M�ae!�JR��õB���*�Vi�d-���B�]�?�K��.4ҠO�UNr��zd6�hEަn����Fل�al_�{���50U���?��.|�4<���j��Us�>_Kt��ý�%s���Qp*�8���g���ȓv�f�OA^φ\4fy5S�S�S��w�q�>߫w���w�l���e,L�Y���|�>�� ���G��Z洤s�#��yQc6��)"V+��^y-�����x�)a���3�0Z��K�vm��ҫ�k����ǵ� ���&(���{oT��7�� � w�N'WG��d�Eu�!�����L����rse^;���R�wm��G�a��6V1{���Nv�ғ +�Q��6�Ռ�Q��|�B��{k +4������Z�&ڇ����.\�f�Q�t����8�&���f��N�7$fU|�ԑn��MJ��0�E�3˨�� +�e�@�g����4���`�\h�Y��;��m�cэ���*���e��LCz�c���t��Di��T ʵ���0H��Kh��8�X��bJ�fu ��R<ܬ�}l�&B}��XD�`ia<_Ä\L��a����/*���~�Ib�\��A\ٙ� ����8/&�{�,� +6��ײp4k|6�jX�nֲ�h�.b�k@��]�ڪ`0*ஓ��#1z�@Jk�Pp�!L���Lo�]biS,j��䁼�]p�,��^�0�L��=���hq����nm��R.�;E��C�/dzO�T��X�7*��<�(��Y�L��kM�U��Nn&N�%�&��y�u��h_��Z� ���"���A-�B- +��ԙ� �V���,ٟ^r;c�Ƴ>�I��'Ք^&&�e<G�|� ��=�����;���~H���_M�%����p�|W���Ez�?��5�n`5����p�ڼ�P.�SĈ� ��}�I�d�\�6Q�����5wjU��Z�Xg2�!��azE3ėx���t�$�]���v /y�'Cֵ(���{���z��x��N��J&6�!^$r_��3D}�<#���G���V17o*����]w�\�kǷ��SJ�K��6t) ��ݥ����s+��>1���[��S��]��[{Wc��P� ��<�^����D)}ؖQ��'��E�����9�M�{�3o�"s�E��� ���=牄�포҅�rZ���p��DZL�z��l�(V ���m:!��g�����E}�l����� h~�`�A�����r�2�y2��3��O��Ƶ^M +�LBx��f�OE��$�pD.�~��B�Q��.WT~B�&�I����A���ا4�~��'�Y�>�f����*����rf�6�$�f�Ɂ5 �ZpM˞�mPs�m�[�1���c���S��0�S��n5!�b��՞�����?���P��ԑ�/�ZʦVv-�J.}����o"�o�8b��!�RJ}��'��t�d�x�c��UL�J�m���g��m�}5or^�(L1������xU=a����� +B����똚�s�*�����)z�)��i�;�m�5fN� +���`Jxh�d�^�[��k���;��gƌ�hŧ�|�m�ϓ��Ѣ��1�i���P��I�ꂇarv���P�\���:�q)]ƫ����6����zfyu�u�����`�d�$����:��w�f�UQΫ�e��� �� u���������p����߃�W1���`+��8��6(Ǻ�X��ulPA���x����a��2Ϡ�]t*8���y8��~�E��1Q�3�yN�GW"���<��_�خ��Q ��[�xy���������1�R�|S����T����6T�]�e����?�]&�*��gנ�++��4k^ ��̚JM�C�d��6J7�Irh[�����:6�d����/ +�\�T���cG��JN�Nj��,��mX�OѿBW#��D���YF����Dq�J��Rt������������Ԝ�l�p�����wt���%i�����p��s����tv�?x�������Cȃ,�p 7� ��]��tA�,��b;�?����ɛ�]\ ����g�Ix/ ��L�%��x�����,0�� �/f�H�C��-�w(xgd��a�8� T�>�?�-<n�`�����% d�֚"�f��o�<BT���ԝ�=w1^~ü�e��H�x�Kn�����A/+Q?l���7�7KJ��X��-ݳ���� ?f�%�f��+�q���H�̡5�LFߔ)�4�]�,ܩ&Y̆�E��Yy���БLw:.�[�'n�Ցn#lt����������`���X�����I���/��2�����ޟ�E���;i������K�B&��X.#*A��?�����w���6_p8$��}��T*�� ��7ݻ�U$��ʲ�HD2'v���p�IEZ��[��66����j�e�@7{JFzJ�HO�I��|[35�mLjX�UA����2�O�So�<+�i\�J|>���&��4U<�2Ff@�_I4Y��0ITa�}�?�����=����1���۟����LԳ��Eا�@��qG�/s� h�I-�d~Z��0�>�˝�}/��پ�}��|��A4:�W4L�b�qλ��A>����r5�s�0X���4DzMuqy�M�w�@%Cז�.�� Ч<�^��m|�a|�Sy%[��5ؗ#U���l��C3ި}�]�3u觶�f�'Ғ��v�Z�V��)�DdE��|���,�������?�wN���Foz��y���}�3m��0�_Į�U�3���Km5̨�E*a )�0ѡI$#��ڧ&f/H:އ{� +���fG7qd������1�.mV�J���'8/��$&�$�"�C�&y�L�F�,g-�1H�E����cx�3�'�Ӟ��ЫW���悘�)�ȨN�o�iB�;����vi'=�No$�E��Yg�-[�&%bէ���7>0y���1��S�kUȂC���?B�I�9OQ�u�Pɇp��z��p�y��=z�nH�|��. '~�;R���������d&"`�cOp�X���gb�s>�=P� +Y"�X,*�\�R�P�D�E�5u��W|�nj>`ѿ�p +�D�Z��QL�� P�{Q��-��d4_��(�i�58W%��� �|��]ǯq�O�x�IvJ��H^ɒ�� �jB=�>�FY���1Jҗ��=o�N����ɇ*-Q��cS�Cʚ�)�e�F�b��.�QzQ]��������W�;������e-�{}��W̮�V��q}��553]#~0�4q�^< �H�njVpi)`��;Y�X&=F���գV��>�t��q��5o��_�ZN��TW،Y�I/ �z�]�46�&a��)��ۣ����b#9�HZެ%*� Bp9K'�����r#K=� a���L���g��I�is"5 r4̂����wu"�=��_A3����p�1�j�8'p����ޕC1�HMOcDR�=���q��۴l���H_2$�W�|��9w����[�2���|���w?����W��g������k�=��=�h�k- r��u%�A�Xʯ*T�A�XGsS���d�ƬEK$�ac�ӓ��~&eRN�&���`��k?3x��� ��(��y߰�x�{U�]J�ܢ�ڍҸ�G(�j�bO����X�� �8[YB��Io��y6S�O4gʞ�T��b��Lݠ2 �x2)�o �(�t��7e�7)�++�(ɒ�Xן������7��/����U3��Jr�Kw*���=p�Oi��_�sW�r�~ +eþnz�D.\ +��:Rv����_%\k�MY��{K:��X��aX�UEɥ>�w*�k��| ��ΌeM+�E�uJJ4�ݢ#�a1��7j���=�jdN���B�WeZ�����N%��v�T�?k;��w�W��[=�8���;n��!����F���������7c�9�=�Bƪ �� �xo����+S� +�n�D��|X�7�J���@S���5k"o\�T�>� 7_��6�Ƃ�N��F�3�U%�>7�e����/Ӽ$��c~�Պ��� +����iV+���X�Ǹ{9ݲZ@�Y9q��r�ۛE�!bo"�xW�?y�ϭ���6a�ipҙp$ou&0·��1��'x�(����'ҋi!�<I�J���ˋ��Q�f�B��G��]��oP[}Сxc�v+T�9��UoR%�X.�8B-����̶�AeԌ�0H�[?8D]�QH[g<��6+�C,Q�a���F�<X�DvqS(uC����rn2~㨑��+Í��pe;ú2X��(8� �q��V��L�߉�X��Xm�\4<�©z����`:�JQ��,jNڅn���ZT-x�]R���Q�ZT��i\3�ւ�����@�xo�O| ��<�7���zl�ߔm�d��ծ�4W:��0l^�;��&���z�/��[sG��d���~p+O.��G`��>�G�ܼ7fzc�7f��L��Zd +�e8`�����A-�VDR~U!��������2Z����I����,x���pщ���ƫ�O^�4|��Er�-t�˩��pJ.�� +��WƌB&5 ���`��z@����O�x��u��Q0Q+8�(�юA�G�v�h�r&����]�4��Q���u�HK�pfD��������m��-dɾ,�Crs��;%q��������������� YUNCG�o&Q?��S�T͞�i�S:�g�uu�Vr��+e�]��'�� +a;E�l#)N��r�� +�Ͱ��7��Ȱ_�͐�+)P��dpJ.)d�O�����SʩP�!D�i&�{�o��N��<�b����L�$��ֵ"U�B�&�OX�c��?��2����K�p+�V��X��5)87I��3��U�������K�U���conDj�/�nB�&��Ya�}<A�Ha�bT�>!]X8B@4QB�EǮ[�H��_�}<�i��A�����uc�M��@���y�==J#���C�DR7��)YR�7��]9���9�-�#%P�wN�8*t���2�F�=ַ��B�ְ2B-��YZ�T/��lT}s�d���CʞcXi:/�X�s����c,m����Z�#y�A�<��� a�^�㊽t0�2�������KƖ��t`9��/�9}y� +�,�q %�n֘� �������mڱ�"�xZ�'Ol��@�E�� ��g��[}����ǯ�{B+���i%���~"a���z�h�3])?��]�X���L�O]�7��Ō�a�!����I�<!1�2TAx��We-� {��s�����f��dvVZ��x�l*��9�g�g�î���|�5���6� +3������픈U�����f#��/�ہ5�+f����}5Y�ܿ��B�h�>@�E={�83%@���6��t�z4�+��W��W�~����1°�%0�a��r�S!���rTb�s�h�bt�Ս�x�Sa�}<�9����<?�м���-��" +7I�Q~���cԣ�#��7�I��O��6�w��hw��A'Od��6���W��pg)�p��'?K����ie�\�����S!��.:�I��Ȃ�٩B�y�����a�r�y��\S���g~�{�Q/�A�>尓7ዺ�7�#��:�{Y���-X�E{��2�n}���pxn��v�~�9G(4Y����-!2`}8���S2x +WA���^Ω����@�yE�*zOe�b�QGH���-B5/�⹕<*�{��q����# Y@�ܙ�n��|XT�����/�{T�\gXwoM}��d<j���_��?��QwZx�o�L4���5���X;D�e�M�^7#!�MFB��ꮝBn�2�\�?]W5��Z�jj�n_��v1��yH x��.��k͊�c�y��� �x�Z�.��٩=LKp���O�*�eZ?��X��a1�v ����}�����*�a}�&�57��s������ N1���1��w��V81pV�''�<�d�9�gT�i�?�{�*CHr5�Xсa���Bs��m����ً�Z&�vҥ�Ű�ҋ}�¼e���`�e �c��F�;`JO���3F.�9�� ~/���D-��Z6�h�8mJ�Y�iHJu�Q +�.�ݡi6�4����T3�[��>u�YO�+4��r��㲾@��\�c��r,k��S��6=�Z +��U��YPx�� +J���m����z���-{$ֲ[)�P���I��7�.q7L���(�����Z��Lk����'�`�n!��zl'�2� +ߺ���ԫ�W�~�@�悘9����� Pg��)�����Q�.��I�BℿbS�R/�m���!�X��q�])9�����в�]�v�x���=gH\իq��0�A�ĦEόB�`�Dq�l��� 4Zo�xә��r�w���U,X�+|\L=q���� GW)�l���a�qH'�t>nQJ�=�6Dژ�p/[�O�j�EX�w�(�{>f��K_-��l�]�S�*��3�2��qKYQ��]��� �|�����6���}����v���Pf5����s͎����� +Gq�(N5��,����i8�6��,K�� +��#T\�0�}���9�?)01?���i�<���!9W�&gE�e(�J��D�f��%��;^�K�/�%�ύK��$��tI��`�pj�#SAx�� O���}��u|�]�Y�"E�����B����^d$����=Q3��yۦN��d6��(:���� ���aJX:G��T�����^@RzqH���9���5�v�U�6)L1�`��u��P�e%x��&t���O��/�2���χ�f��$�㕉Ω6{����m�>��04�@��AXW&�a��D���?I_d��>B�V��I�|^��^����N�T��ð�}5���}��.���/.�y�>�����/�W�z�����`�h���zPC�����1#x���¬0�b�����w_6�z��;тz} ��a�È��x��@� +������n)�T�-�8T-� A"{�hW����0i�+;�Egjw +�.AQvM] +�ƪ��L`S�[uE5P�Z�E"�7 ɼ���`OlM-��|�]9aXFc��T�-��;g���o�*e@'��FL� �(�@��;�:Ĉ�"YQ���Q-�ґ8�'�3�JĪOC2���;���)~Y,eH��61:Z��X���R9�G����N��P�?�N�y��屠�!<42�_L�i�#��oz@G�b�i��5�[W\t2B&����5F|�DEC{>�blc�鸷��<n��!�骂G;5w���G��$������Oh��)m>.-��FHga'!ZY*��2����ÔPQEs�AI��S*) ��A���>���|�d���Z�y�3�n���AX�K=��א��F�-���l9d�����+�/dN5�I3����88"��d�W2�_���nl}1Wl�<��D=_���a*2�O �Z��L����K��?�'h��3k����&�'���h��F���d͕��PO@�@\3࢜�$aB��"�CL��mC>�$�lK1�}�G�l�|�~W����`� +�ŁOPi-�;Y��"�{n�� /.�GKs�"{k��R7�a1,���䒺�}����CEh�;6�G�(H���qΈ���1��i�(�H�L�����?|y��J�5��5)��JkCs��x�����!۱��=jӠ[�I��KЭ{"�uMZu���-��%�����2��ji\*�ts6+�A�����1��ԇ�R1> ������,�&��[ �YbϪ�.<]�����:�͝ +5C��:O�g��z2Z�A#Ә�Ú��� ��%�p��8�u~��v�=���$����-��EA`3����Kv����g^��@1?Fk� �Nt�\;�o�I��_=��-��cQ)d秢P���`"':�|U���.��f0;3��#�Oh�AZx��V���B;�z`}�^������h�~ ������y=6�: +���F19ٚ�h�p7b5�oYl�8u��;��y܄/}aR���:�z��Ԗ�L�Do5h"�F���l�<�Q�����p?��,t(e���b,�������XUWQ��XD����%�����Ym����{N���Gp��"B���j���_ع02g�<ta��J�hа���Ɏl�hU6ɻ)�gL�˅n��x2,�C} +�(��yo���қi�*����� +����\&�����T.��a7_9tf:U�T�?U�V�UWE:�aw� t蚚���!���Y���t~��-�_�7H0�W�n k��x�7�g}��zH��,��zo�L��L ��0n�y�0h�v�0���d_|���v;cef9���K����]%�`�j�U*���|+�0�>\�.�>�*SjSPk%9�֧\%ON�C�Sשz��Uv��V���.����_�'�jU����%��Y���K5aUsO?�o`����ݤΣ��~�3�Y���?]w��U�&"/`�JX֠Ŀ3=��Q�C��1�K����4�l��tG<��2O�c��܀|0马����q��߱�R�����!�NLK�#���mBE�1���e�40�\�+�>�N�3֠7#A�t�Q��T�}��i.�(�UR���e&��q�?�KOVq +0S������ �A�V%�%Ƕ�Wu�5�lm];k��PUF�`�n��1̹��Ɯ[�O����C^�g�\2��K���n���:jj��!u��ۻdv���< +|d<>���ڢ�_����MG��[�Joj?��'|,�Bm�����c��c��~�r�bG�����,c]G�|����}UO��5B�a$��l�c�s=j� h�-�C��y�rV��fWr�~X:�t��yi�u� � +��K���I����l|w\5��"��Ĭ�J6�1H ���>��mΰS�Nz���\f�0��_&%P�lK>"|�tΐ���� ���I*�-���o ؼ�G5�<;�7�M�lf�3/)�B5��Rs&��n�S�qT������KES�+��ǬBJu,[.�ղu�]�5��j]J�$J^h���>��c��KOH��}�#���)�*�GFC�#saJ��z�=��1�@��Dnj��SD�!����֣J%j���}����p�v~�3��=�(�Q?�S��`���pwԭ�ra � � ���ө�~,ZAk�V�/���`���Eڐ�G���@� ��j+��B�J.����tet�^W�/~�C:8$u���j +�K�i��-���2�.���e�qDEٵ>�q&�m�W�7A�|f�`�N��G����jā� �lFMR*7W��E��w�m���.Czö%kbF��8��@M(�';�lJ�3�Q�)uT1Z�"u�*ǣ�j �yW��������@\L��-eMt�9?R�x�I[--$C��26�ju�d�j\x=�Z���s&�iAV����C��A��\�>(����YPGc�,u���MOZ�8�#D�� }��\ �']iM%��d I�2��.� �!X��5!����� �7�&!��W�8R�O7�n�D=9�렷�u})̨������6���@�(���)@��:��o'���1�E +�������9�W�v���������s�����������������)t�ԼO'>���(��N�����1?n�-�2}�����A�{��2M�Ȋ�o�E>�u��h��0%ih>���,�Ԇg�'(�ԱVF$��.����| B[ײ����ֱ�&�Ί��=�,��U%���&~X��˖��ԛBԺJ:t$�f�̪XpOc]�W�&iz��/���J�@kb(�t�(a��X;���́�I��"����ޟT���4X��k'6X��1"̵nhW�7ٞΜ8�ω������&\�-�o�sV�K�A���}6ӎH9v��'(�X �8�� +��\�`&�[')�hΎ�Y6!�Ur�o���q�cN�����篢�]��`�V�1�'�gE�p'#��7N凾��)�xWtȘ����Ta�C���|~偩�~���>X��{d a��cI'��m�����À� +t�V��f����f�j���,a�ݝ���m���c�V�8H�߬�8�9���4�!������$=jf��ȫ�+F�Toy�§�p���ӣf�h�+@&y�C|eP%�{���u�v�C����gD`1#e�3���Γ$���i�Ȕ,\�$� ���zf\��A��a��7�.����=��$К$8dj����~����Nn`�q��A�+q����a��N����1۲���C Ї48l�I۠�c|$�Qi�Њ�^ap���Z�c��:�\�>pb.?��<�34��UXC]��o�v�4ͼJ�#�y��o}�У�������Q:5������L�@�`�Bw^ +�]�?;Y���F��q�c��P�}zW���;/-���Û��R+���v���'Kz~�m(q`w�{�ٌ��z"�m��O1U8oc���!g<�1": d��]|?(��C|$X������R�9*�̘9+&Տt�1�ōQ����ex�\np �"� 럎$*����R*w���� ��ӳ�r[9v�xv��ᧂ��'-����Თ��7����?+n.�c���ԓ��r�u���*q`��욺��w�>�1�\�/+�����羛�>8� �r�'���V?kr),��`�X�@�npl�?.c�nո��(QM��f���P^߉p��ꕨ���4s��+�G9�#�0L#� ��RB�o�������^E�:���6ه�\v>�-���D[�P}ꋆ��w���)�d�8"� +��;��.����oƝ��V6�w��ݪ�X,B�K�h�8/�t^��.B���m�؇��&�UƱ�to�ꦈzz���?}T4f�v_X�M͈v&H;uK��d�s�+��^�V�.Za�����Ȩ<R�U�F�@%��c��5�A���Lph�)5<A���!�i^����H�p����:N�|?m���Ø�&h{+��i��:L0�8Α��v�^�;�����?�y�ǡ��6v��]Ԁ�[_�[����F��1��s�����41�փµ�ބ���&26L+��ѿ����vG� ��e��6 �Hy��4�]�Q!�iTIf��mm�� +�6J ��h<�1Q|�Ҳ;�[�y <���=�On#�zM���܁#q����H�6;�;����#tn���=b��G{&�!c�70�$ܿnO����p~�Rp��Z4�X���J����-�X0�4�x��VG��#9;�g���y�v�1��̓�'h#`�bӋ�<Z�Y����{䴏4�Sb�[��tfQ[#�NP�`f�D�}ng��k��/ip�9m� +���C���G{�ҭN����au�0�(�\�)�����h%��jm�֠Z͜�X1'Țm*����Lj[���-����I���ET\�taB����&E�;� +�c +�6Y�ϬhG�V +�zk��#�E;��-B�)�T��B(����1��3~�&OYkf��P%���A� �ԫY��{G�U�sd�?��/!�M�ƶ �Ą{+;fZ�+ts��=k�#XPB�k����� 'o:�{�»�&J���6�8| +R��8�5���sn��䘮�9���\x�3�5Z� ��2W�$����UD�h�� +4�p���gq+��$���\V0^6�[�_�4 �Yx���]'�C�E9u�{�m#�~eX�����宎pmC]DNڄ�҃@�\�5��4�O�9d{%6�|�`*�A��:T�A�|k���QA V�f';,|c0���3� �Q�B~>X%ܽ<Ұ�#��]�����>ʭ�z�iyA ��6 ē��{�C��M�eC%d�F� �rV��؎5���Y�� �1-lb+�O��u�g>�r +h�ፇ�a��x����P%�;���v� � +>mq(%cBI��R;�+��:9Z���}�ɓ%�n��#���{K���*�6���6�a~��.r\�49Z�8#0k��5�B�i�]T�L{�XA�wX���}�K7�{@�N��8�`�d&�c�G,���1��C��̏vT����G�~�Q��7��2���FS +�������b �����f^I[����8���j/`w�@�y>.�S���5kk#�$��'E%tKQJD ���h7��G��q8���3;q��3&�$�l���)\�@�&�'P{�U�J����&8�ӖB� l�$a����i�A,��q0XPFH�IN��ýf�w�"@��rz,�Cp���8L1 +�ǥ�?�,O��)����qŜ���\�,��O�d� ��庫�֑�>�EF0�)I�U���(w��c-z�b��T7[w<j��R��:����'��q����S�E�:�� +�"9���`����[�+� +�pl���戸O_�G������龄�;D���l�[8y���Թ}iM�K_.��6���BN}/�d�~e����?�`R��k#6 +#��h�wd2���"�x��D��ļ�B \�2��!Lw����z�y ��SU����� w�m�D{�����%�`����Q����щ��a�>H˜�4�9 y���L�i�8��Y_��y�Bݭ�0�pH�=�>�.�]<7)�`�E��)�0��6��ð3M~�Йg��_��M�1��8�����5��H,E,���ҜŲ1FK[��`�$�ںۉ/���U���=g�-O���[�OkR��0\�F����l��ɷ�y�|�-D��[�k��ыg&G�B�]s{L�l۵H��H�����it�|Ұ �p�E +�_)���WlD!ʗ4G�pእ�G9��1��wg!̱ �Z��\���(_�ãu�6)���z,�|�[ +���nQ)ߍ�;b{�t�����ku��h�Je��M�� +��`M ��.W���u}/�f��s ��T���-o�pƸ�C�9f��n �9��G��K���E�c �Ud�=� J��з�Uw¶��qOˊ�Ϊ����)5-)��[��3�4.�7�4.���L�h��S�0������ ��w� +|�{���p�[�5�rR@�jJ��Zt�U��t��M*��ԏ�8J.)wǘl���R ���5o�4����u;#M8AW֙���H˂h�����i#��Q�f���7ZZT����Tk�G���C�Eӿ��٭���Y�1yx��:�������������S��⋒{' �d8�0�=l\���81gr0&�l-l��P_��S��͚e5�.�r����ѷ2z k�S9�x�@�^�ȸ�.���]�h�EM���W����O8�=dDcv����[�7�i�I;XI��(����B�f���bB�h���I��^�� H�� �$��?��FC����I��^�� H�� �$��ݻI\I�r��t� f�ȁ'��d�����T�9p��+{#� �Y��Ib1�v�L[H�����^�q���)�6�x��ՓjW�Hk<�ml�>��6\����1�b����?bv�:�;Y�>�a��&#N��h"AN���N�<�+r;1���՛����J���}�pL9��^NvN~&o��IO�z]�PV��ޚ� q�'l?����2.���JBq�+%:b�8��c��(0���L���x�я���~�TQ +�(�n�"*k�_IP�/_Pz�b;�z>�7 ; +���g�醫�G�0���ڊl����t>�z��Έ��� -�!:�C�0�A�-:h��].˞�t���I��Q¼�3����L��w/�5STc]A5Jg%n��}Bjܘ\�� 2~��� +�Đ����3�R�)U��(#���ۢE+s]Z,�*������m�op��~l��ū��6"�E�T�ocN1��K}�2�b�H��wuG����9-h�8���~<fg���3X����=N��{�a6��l�4=1�Qy�-� +�q�SO�ۈ�F>���v���f;���8^�9˴c��Aꯥ�Y�G�i)������t�<���C�B� q���7�*ED�̰�"�b0u�8_�;EIaJb";1$�y`��,ூ��ĥUc�T*��$k9nO����BfA�Xy�h+W ��!� +�h �������bתԊq{�����JM��V�{��:L0�8�&�D ����3�a��q�wh��ƍ����rX������Q)�m����~Fv�ݰ�(�&p��M��]lorW^"�!+�NG�,���nR�J�Q�u.;з�#�E�jy[��7���4��Po��z�[�XFwY���F�\̕�b��ڌi+��~T�Xnc�+�w�[�F�Nm�'�d�khg�ۈ[�y <���E�FCC����Y߶ܸ����l#6�EDeɼU�hj�'�Ѡ+A�����F�B�L_q�8by�8�a�=k� ���_��ȿ�M +�r���D���A̕��*��V]8Dp��B�X&�w���9��Wgg7sp��p����AQ,@��W��5zHAu?����)X�M�j�����7� |k���(c�Cq�,ւ�g�v��b�胊��cD�{k� n-�v�J�Y�6��g�Gk;[b,����830 ��4ܯ-���6�_��9��� 62P$��D{�{5a��Ǯq'���'l��n�5a�!|�vi��K���/�r��QI#�����f��"u"�ʓ�=� ���b���ъj� +P�ް���:�֠.�P-�m������1��q�o��0xҨX��`lU-���f�Mm8˾Rr!Z����ւ�� r;2e$�����X8�V����|Ȋ{��=F��P�.�Z���xJ�(�j�V��@�-�4|�����l�p�Y�-x���֎�ۜ�3�"T���>��HR�{L���UKq��J�'K�x��1�?�+;�.06�a�\kg}��[�]��x��3{��WZ���Ӆ�7�9̶��;�]4뭹�(�¿b�h��|t� +*�iڹ��� P�n�tL�wgeG,;bm6q���O8�Q������Uq��%�tm/xB�:��z8�3�5Z� ��e��-[��z�@c���2�T���(���-8�� x����UgH�&�=�F�0t���dQ~(M�m#{��h��G2L�! +q4�u��h�N�> {��vO�B�=ɶ��O��7Ó�o�Nx���I�Z�TW{k���6u�N�7 /2��&��-�L��^�~i�a�Y�����)M"���I�(L�Z�I�>�}�${�R�6���j2} a���H����NZ���Y�� �1-4E+��3�u�g>�r��e'���p��ʵ5��}N,��ju{��WelL�RDvAj'�|T@]'G�v'��O�8y��#�[����l�k��~H���v�!�6���A0,dmw,T����0�'���nm���ir��F`�r Gj +n����c�d��أ� +�]/u���}����G�!dO{;S� �p̶�[�>H;#C��=�z5��:��hz�.0+�@e����i��2����,gj3mw��e��"�b�쳀)�>�wɃ=��5}�a�����o��H �-�k��ӊ��J��6�>A��������'��%hx�&J�v��?M�-l ��9����GKG�n��� ��6"�`VB,�jk��7~W>+�d1Ȼ���V<n ����QA�ۑ�SqF��ܙd�0jz����1�!�7��)�����*���h'0v|W�vaQ���R��e�҅�8���V�V=���Ql��>�+�C�1ZϷfxN8��G���W)��;�WK�2zӒ��Y1 +h4���y%BHElq�� +���(���>�i%_.��<��q`��F��-O�1��B�n�u";a�.����v�o}�#�������%�L�5��잜XD�Ū�1�hO# `�F�U�����P��쵾Ey��d~���XtW�<�/��YmUq�b����Q���^�ڨg۳�ZJ��F�M�|}�dn�ZVv\�!���&�yH�F�ٽI��a�{��4`�,n��КU�>;U0���4�������$�z"���,� +B���z��`��zp��Ԋk~���#�.�k�G���CH���Hu�T�dY�s\jG0̫�F��wb����x'�C�4l���S��W�Ɏ��X��ב�#q�b2ٳVBc���1�#��ю�[�n혷!S���mآ�O�"�x`��]k��?�_���.m�e)�*e���t��=�����E&^�l^�k:3�ͳ�����*�?�r�&��� 0�G�ίԮ5��˟�?}6�4����|� ����;��g{����N���E\�O҂co���\ʘ���c�j�J�|�۶�Q���Ş�5���?���h��.L�}s�5��w@ƞ�E�Ş��9�*������� �T^��������ɍ�Z��3�j��,���g��M�<E>�տ�KXdh������N��͍ۜ���jWy-5����,TYN��������^��1�1��c����՜1��}��S"|c;7�slgB����{J�1O4�N��c�(ʮ�3��p�í��^�y��x����qgM�_��64��!_����A���)em�;i�O%�6^���T��!~��m2��Kb��f";����˦.�>T���)'����I�Ή��]���t\�l���4{��F��쬸ܼ|�F1��i��a�>�ω�ڔ[�;ë�]*�v>��t[�����o_s�������2e�ӂkj�Jx�]y�Г����Ɖ#8����:�)aV�}����:�����ӵ W��͓�y)~��+��k���5��7����n�\��Z�:`�reH[i4+GZ�i�Ya���NԌ�6�ɚ����R�T��i�*�l�K�l�Yi�)E�JGGd;-�ۼ��b/���|(����2r���O�qlu������y2�m5��!m��L ���M�b_�:�yx�ko���l��jF$�4`�Y��j�qY�r4C,�B��d�O���$$�8s��M�d���hq�YmKT�������^6�ʆ�K�:�ޡ�>0�h�OD�P�Y�?O�-� ��ߋ�����i����l�5J��������J�Z�P�V�Lض�jV�V&2�%l�_�"��`����#5��)4;�Yt���ߪ���R���(*73�T�ѱy�P�H�:��t����V�yI��E0� *ۣ6��J'�Q�w٬)��V +G��Ƕʑ��6��B�!��+�%�X[q3�Y�P��W�.�NV�P�q�\�P�T�����<z��2�}�������?-�L�,/���<6E�1 =����� ?���!Pħ2Ⱝ��eOm`U���u�%��ZM���L4Bm<����4�FX��ˤ�칺�z��[=z� "��c����R�F��u&Z5B�zp)����������I��vi,2����\�1�=�ؓ��cs�n �倰Ϛ��g�z>Eݭ����K�|��F���Rv�������oӑ"+��V�r�����0��f�B8Yq������!������1��;-�[��-��j�#O7�w����}!�S��(� +�j5�45�҂S��ؑG��.ڳjߏ��^F8b�K��LY��}�pd�ryo`�ެ�b�א��{���x�?�="�×��[��]�8ǫ��)I?��ɓ������Ю-2f��,����c=����f�Q3���� �� +�8?�0�/lSy +O���a��"h��S��I�N9u'O�U�Je�yUU�"���sd�-�$��,9r�dru⟏�����^���:�>�Wգ�� +$%�����t����ḙ7���� XbF���Z��U%�Z�7o$|$LK��T�k<w�I��Fa��:�O}�͌ǽӴ���P��$�͒��L���S���o?`z�۟~@��f��i�f �:+<��`��(}�)ʷD؆P���*/����`�q�d;��eb%��ҘEPV��A����Ģ��bU�Kݪ�S�;MǣieQ��%�W�n�dYd��Ij��ipmIp5�y�i�J�;U�]����v�k�c,��)$c� )B�}�$���G@F�3Te����Y6�jj �cǟ�w�|���0a3���O�:���Ҫ������w<�N�\ʩp�)p2���eh�7�kx2� ��mGB���_�=�4�D�¨�!�A��,0xt���q����!L#HG�/�~�e�����Mtx4�������r���/�Ǚ��)G��:�*���,4Ĕh�!�4�Z�<��3�Y'2�t<�o��o�S���?Fp�?�`�0(P���9�%���N���l���w�G�:��o?� YCp �F�H���vc�]�f��:Ǟ:��R +v�mV���e��uOdg?+��Q!��iP�@�2�x��1 9�!Q@�]�6nt8�����Q��+M�ScƋ`bHE;B��j6���$O�n +�G��j���>p��GVI�i��m�Ǥd�w����b9����%���56>4*�P� ��NW��#��{�`]al�A<�h���Qݧ!�E����J���!�tӾ�@d���<��u!Z��Z�C�a�G�4ؠH��x��� �������0��/��s�����(��gQC�uB�"bŐ]���-|�nF�W�-�5$�N��Hm���NAq�0�lW~v6��95��r�=@Py���~M"���g�����6����_?==����&I���_� 9[z������u�-��$&��`��.��(��7���p�y��A[L�[wvy��E���8���N R.��sE��RQ-�i�˿���YD�d׆�u�� +[oUXe��a��w*�0Y�4�oY���s�L��Te���q-3�r�g��&�L��h�4��$Oj8��S����ZM��ZM���8,��M��c��ٍ���wO�08���r�Jl;����<P�.s)3{�����/�|���8oY]�� &����V�6��t�����O�3�A�I�3m2�Т���@���n�=�#�k�p��2Prn:�V���j�.5<]b���'�����h1[,�V}F4z�:)g毎U��\���E�'כ�Ч��SĨax���p�1W|�����:07W�Q=�杔��/���)_�Z`\*��}�߸1�N?�ox#6ǔ�G��?s�m���5�%�8z��>��)�G��r��V�V����dy�0Nȕ<y��آ�������ո��5_�P�w�+LX�A�\S5��~� ����m>=X<�4��C������sH3U4�w�'����ɶA +��������c����5�TJk�����Xl��[q#���4%�?_m2B��nt��ҭ�<����vm��.�*l�W��D6�.�ţ�><�Hw^��褝��bu��ѝ;����1���'(�j�n�s�U�4�(���� �b`�/*�K�AL�0Z�X��EE� =������O�@�%�o� ��%*�3�ۻ�XG��HV�[mڔO"������}���$3�$�q?f4�Y��Q���^�5ze�.#R���,(�b�����?ҿ��!��l�h��̂��1�^�"�Ne��F�� 3�����`O��e��J�r�T�[�L�37�u��&��vz��L��q�! +�4��r!i\���'���1��5��cGhզHv��n �9Z"Ӹ� G�g��(�"���^E��4�!��Ǥb�z_X'E��\?"09BCS��σ�N��I��}�3�K>hR �F����*@����oql�G���xN[Lc�ԑ��Lx�]�f��i�����C����7���ƍ2(7�q�4�9�@�=����>��t���_����uz� �����Q��Y�[� ��R&/�N���+�&�0��L��a��k��ӻ�"�]W�js� �;�}�܈"��0��nH�eCN-��?&+�����~��ǟ�ԣ.�S����LHA�+=~{Mhζh�[��C�_Vt�і��A���2S�\T7��A�6��a��VQ��0~YT���Aȫ��3z���^�|{�1%{}ȹ Ж�x�v곻ϥB�HTm��$:It3��W�U�t����C��j�s� ����/ĉ7�Cg��44� ~��Rf�D��0>dD�!�7-�9ظ��D�y"G ��JN����ފ{QO] ��$J��6+ɦ�]羱��>��S���I��� +�[��@��UM�/t� &� ��"��Cb�jOt9[��q���j�b�ޟ���2?ǀ���[p�d,?.�ⶇc�PL���z��A �m��KT(���m���-��`��m"0���6�����g-H7E<\��"d2�̦�Ť�oR�S�=�.��GĴ���VI�C�����ߕ�t�[LQP�h4� Hh>4�pD�������7�2Ѣ��/�F>=$��:�Mx�!M�W��i�a$���(��X���o�l���ܢ�MG��|9?w�M�i�$c�Hd$���_�|� �n�4}�<ձы�}ΤB��W5m� ���*,����_����& �MB�+��|l6@RӘ��`pB����7��k9�@�����M�TZ�� +5�q�2��t�#:.Y�R��)�Swv.�6.sis�j����R�լ|��&����vm���t�0�eU���s�x�T7Q|*�.�!���fI�3ⱸ�?�8Ljբ|��U����F��k�C�x'45k���?|}�Cv��3�ef^���q���j +�)T� �����mt���]���xZPa�{��_��&2&ۋ��E��@;�" �b��U�G=^�����E356d�/4$Tɥd���#L|6�8 �d�W���z��|�FdL�q����z� �@��2]�zY\���!�p��x:���#O�2�ɭNp$V�>gy���BVn�"2-Q�}��r�0�^�f��k�?��~��i�z�;����Աh\P�"�4'i�k÷w������*x��$��H2�,>�u�1ZCc����ֹsH�܀0�P������~L���?fɣ�v�g���y�Q�f�쾭�]9��G��. �M�Ѥ8�L�5�D���ʅ�hg���N�$]%�k6�v +۟�^~����K��$�����6M1�ԉa�|Ew���%���w#��ô%uV��p����u�Ŷ:e��u���Qu��&�A����I��0��v� mjX4.�h<����t�>�^Z�8�c��9�R��Z�,��4���50#�˄;��[֝p��)ƒSʂæ�X�^�,�y<]L��*��k�U>�Ot3k&��P���^�6�F[���V��Q���6�LxZ��hb4y���_�$�h�M���֡3c�$�8��`�;����;v/b�����v�Z#I]e��Sa����!�ԞW��V�Ւut�,�C �Ŷ�M%��Iu����7��E�u�LWuV�Yl�F�Go)��!���Ռ^�Û 3<CV9Ut>��Q�aѸ0Lǫ=3\�k���M�V����~���H�Gʢ��7A���<=��#��(��r��8|��+z��9h,,��@C�n2��.��$�b<���"���Җ�]M�� �ņ%N����o:�n�w֨!Q���dz���DS�b��OK.5��f�|���:�������a�>��XKn,� !�>-���ns�BC����k�b�CXe�1au.��Ɠ�HkÒ��b�D��!��q���^� � � b^A�D*�8U�a"rb��R ־���hy�8��y��xq�1��3�BE���kpo��֥��Eu��/]��/���O�"1/�����E�R����7*K��}dM��Dh4ˤ �8�C���|�֚l��I��b)�uG��NK"�HC�����Q!����^�*��.�(�� �$��>9�����KC�d�Qf%�Ub(:&��k���(�(x ��'m_�greb:�,.�;T�%^�:i}�v��앣Kf���R<�V��k��)q�*"cD���,���: ����q���͏�t1�=�˼�*��@}�mꚺ!C���6E/�ᒢ���[����V�%���V3��L�����ȃ��Ԕ�m*��n���Hrn�BZ�n�O��ڐ)�/�;蛚��7�N]�(��>��R��5�}�.4���2m�"�U�_�3�A�� f���.��:�Q�.5=J)��X�������lB�������\��`�b^G� Z��>G�XJ�n��z<�r&3qG��]z��dZ���V������ԋ}��r���!�:����eS�C�Mre�9�����6��S ����|ޓ���̭rr���+GT̄R� V4��0������cV��¼���,O7�:�(����i��������Lf3��yyUL2���`�%h�����y���Df�ܿe ���%���� �v� � +�:�5 6��~�hw ��n!�5�X|��2�R?��������7�B��X|re3f}|A�����Eb[U���oL�Zz̔K��ϧ�/�Pr��È =lFv�c����9ۀ���OW�'%XR�sr�Q��0�;���D��=�c��OĪE.6|��m| �)���ͨ��%q���.�);�\.�岕�)��Z�?�Q�wƠ�(K1��s�����a�r�uc�ֺ2�aվ�Sh�&��۔r㠪g��E!���ѯ �C�͈P��k�&e%�_��.�����d�f�i��Ċ�[�B��h�J��7�a�� *[s�)�}�,i�a���O0&��!!6A�V2���Ud�}(��1�N�:¡�I2�$��8��x�r�7k���)�!I��L7 E��Cӆ� �:t�ؠ;�t���,Z���(���q���&�B�NH��&�!��p�&%��d�$��t)ag�h2+=!������v���L:l��F�,���b[E��g��K����&���:[�m���&+�6���]��ά��&�jy�+Bi3�[��Z��M'����Rǫg:x�'�$h��HIr��5��s�/�s�K|��)�jH�C3f-rhb������ﱖX�M�GG���ek2ls,<|W�v:z�B�+�H�4N��N�m<!�8ֹ��>�*�l����(�Ǣ�}`����B�qmL.��@���lX�E�����h�:6gf���,0 �J���7�ƭG��i��<�«��y���I���.��nZ�����vo�ݬP��3�����i����}K�|�W���B����b�ԛ����g�<k���I��W��K�=9Cho�;����S"��GL��#�rF�B�<a��p��^(��svS�� +��f����IJ��&]|�C3l��qJy9a��P��c;���A)��"A����d&�f�U�<e�UNj�nׂ�h氨*��GTD����^�R2��؟9x�}�bP�G��=J��y��Olv�u�GV��� K��_��M�zcF�P�2�[-.����Vᦒʳ�4�B%바�<Qy̷�b^�O���������{���B$��n�dN ��b<��^Gs���C&�/J*��w~���V_o�>6m�!�B��8��g9�;U�iy%uN����m� +�� 0n�~k����Oʭ�Ef�֯���;��+q���3������؋���/�=����\~s�xp���f�sC_�����6����G�.�v�8�v�AU �����k�s_��B�D�2��H <~AX�$���cp�m�;u���k�,@("��4�_Ɇr��t���n�z��n��1*5b,զŊ�o��L�E���] �?��8i �iRJ��O��c�m��2Eb +O*J%6��Ht ۣ������o<�=~��a ��؛Wb�ٙdҀo��0�j$�S�R�b�����B�Ģ�"�<���6θ�X��~Bƴ6o�����r�������qn�A�U�1���d���Ψ���� �w�w���|YS�{���~}~���Uk�A�Mkϵ+��Gg��>��4��X�� ?:��m�����/ ����8�� +���\$8�ɠG��N8�"��ݣ��ݟF��(?�R��/������}�t��Ѳ�C��ψ�?�L��<Eq���M��e˾��}���IO��M:_|����� +�/��>k����.Y�m�|Fޝ2F��|)�inƥ,�U9����v�:h2���;.G���z�)�&Z�麵 A���<йChO�r<`�+YO� ��u�y��#�ћq��xˮr� yw�[�߅;��������*�*-HN�a�u��|2�)�����%;������3�ߝ�~Z_�@g�D�VS�13�.ȔU̅n�����$%Z�K}��S������X%#�FbǕ?�Z%��$[��`9��� �sQ�S�4M�0ǟz"тgf-2�'?��uʐ�)����by��x��m�Z K��\T1ɒa��'i�dK��������n\PW>]��Q�L�^Q�T'a)9L�t�:Wr���n5���Zb�����y�Ҟ?Ԓ��ikF��O�^�Z�׳\I��UX�U���E����a!�ˆ��8[V<=�=.�-D��/� +���we��;�%�g�0(� +�G Q��&��&��U�#�bB��@>nX�l�|)��C}�&1��s��Ή�q+ +����JB{��+���W���-!��c�3���P�)���z3�o4j�r%oP�9N\�z���\��>�:�m�O��U@˄�RO�S�M���n*�i�0aH=���Z�f�e���<��Ro +�WqD���3�=��t$\��y�#>&�d�,e���Y��ょ�S|i'������H(��&���;��?X�*z�k�!{�N@�3���u�p(�Y����B�f�8��ql�EY�L'�XIx�b�;���G�F�>k^���rR�!��A�.8�ҫ�H�(g^�h�P�'���m��#�q���;H�N�g�C���J����2�M$�y߸&T�Y��D��� 79�:̻�V8��tT��x>$����ƜsS-���-�&����Xdh�cs���c�O�~�9����+�At��!�}c*Q���i���?ÕC���hmXy +K���mӼkBB_�E�7s��xv6�~�_g��-C��6J��7�:�pX�-�� ���]��^+�&� ��{� ��$d�EAL�1��:q&282�����%�V���WW�����:;�m�]������@i8C73|?5�Ȫ��Ӄ��h����W礮��߲p51-!Ok�@-g�t�����u�a�NK��"۔�>��r&(e_�mN���{��x9^~5��7_-V��W��$X���]��� F�����2{�WU5���jgZc�E�~�M=RJ�%�n��u(3S3<�[�;��7�i��{�8��㍛/�N"��_�i!@c!ژ� t���c��LJA��w�ڍvMW�1dh�o��[`ڙ�Ձ�]U]7�w�rEp!�8���t ����(ɢjd� +�I��܃�����+lv�� +k㼃��Z�$��,3��x2�Ձ��1B_���qz����?1f����1<��GH��uh��;�V�+�i�!܇�z�p���S�*�D�I�k�24nL�ӧ�¢�uPVt1\s�qGK�^`�����w�gN w���$�8b"�N����_>~�lj��}F���*A��ױ�/t9�ټ E^�n�eS��&6:B\��4�|��Uv�b��;��Ä +��p��"��<�)�p%�)t�(�Jٖ�X%<��������VnD,!b��!R>��i��zMa��?}Z�!۩7������f%���tO&pq����k���:bw'�-�����KQE4�+u��罉��us���Z���uS�:�F$�"�.G!�HĚ�D0x���([ऎ�XI��0=�qYd Ʃ�y��a��íy����Ȧؙ�:�N��A'EV�)�xB�}.הU���Bu5�FN�Ь��������1�n!��ҸJ�o�O���ҬY��J�>�-A��gI��ħ4�z@Rn�&O�*���q�u�c�dGG���o�J��P��6�V��u�iM�R��L�בּ94��C*��w�S��8w}�NyD�M]��K���Nxï��AL_c���}�,t��lƖ�9��B�j^�$��7�� ��������?C�Ʋ;��p�6� 6=A��w���P�1�:����\6s�o��0��hO6Qs���N�5l�*�U_���T�/ߗ���E�#�w�V�ݶ2�G՝��J��"#�����>��S��f��c@T�6���a�žJ��jt�]��*a�rO�Q`)���v����E�M>i�4�E�������4�-K�)�au�P�ç�j�̹��j6��4}���w�O߰�uH��E�@�źժ��N�����6\�Q?�nՈ�"c�9��M�����#8t.4�=�Gb�3� �4�U4*KƼ,F�?ǔg���*��7Qp/ +���IT������7�����g�C��qb�G\�6w+*F̞�r �~�$�x�����%��b���b2���*~c�7�~��}��dN5�^?d�U�f�����F��ؖ�=�uK�85�mM����{�Z�BJ�/K+b� >Y�윛|�AY�k������W/Ǎ��ԓR�M7�|���Y4R|�EK[��o��u"-jZ��?Ҷ��qU�HJHj��F��B�1�T�����KEC�.�d�C���*L�>\l��l����� �T�X4�[��<� �n���8��r�:\����X��9v�J��\5w�t���!���ː +���]�R��\}k��dU ����9��<:�K,��� נ�N�@��9�Q#�e:���*go!)���՛0� #��H�ʽ�����Q�~-u�wx��$\�����=���*�A����G�y�wsk�����1���ut�ņp76n��)� �Ҋr`��M�ܤ�5IZ)k�����.�=�������ݿ�uV4�m��X�+�Ţ�*�]h�nZ,�xB����܁n5^N\�mqs�ݤ�YH�~��.���QaS�E��;Nh�{��RҠ����q�3M#Q��2���u�57Ys�57Ys*Y3�*��b���T���Pڷ��i��렚��]N�N1g��er�{�Jp�m�~�/]Y�|��Y=�� ��\����q?�m'� ��jY�}�⨣�,9��4�\y���h��f�����>�Z+WkCzαe�R�[�(��j�8*��Վ��ª�ڠ������z�A�2�*.�� +Z{� 8:i��F9+�v��>�\�c��sץDsU�|�ӹ� �_4a�>WU^�su8�ϗz�8\%�a�Sz���h�=�0*@�8�(~��� t��L�Cˤ6��rF�aR<\o��M��dU� T6m���n~5SY��8�3�~�P5���G��]�~��B֭� h�6����9�=/u��+D��{D�]t�3cQ� +��xR��Em�(;�����1��̓�ݸd'߆Ά=ƨ%WHH���N]I-�l���|�*�eo�<=�s�j{�;���;2@r�}2�uH�����W�s�>�X�IJ�� +�+���&���Y*�&DV����`��T�%̰.`%��5����b���+�]5冀3X�S���>x��]��6��.�H&�i/�ɶ�)P��%��3"i���d�˻�r������G3���/gR0L�}�-S��-������dX�9���r�>U �$��D`�m������2�m���LO�c�-�Ĥ���)K�1'��'-��Ҍ���Tcu�]m'휇�R}�cv3~���1��;�6�4)D�w�W#�`G��dʜ`��(�s���T��T<OR�� �J��O(�ޓ#³�����6��P��#�ϼ=3�e2�+�jLp���0kg�u�d��|�3����]���T���䕿���? ���bhy�� +�JG67dDS��A�W��r�Yr�=��3t�>��x�ܰE?�1�scl���p�M����E��B�a��O3�5�n��QuԽ.6��wJ��gs�b�tlrB{�6�n��\SR9�����\#wR�^QkWQ�S���.���L$����!�|'�:��;`L �^!�hů���Q¿V�ךF�q��fzDuC�懶s��(��V�Mʟ���pe�)����^U��@3V�f�H�`�V���l�(&� +W�������t�Iς�h��P�� +�:��s�QX#�SJ�*~:�=���r��Q���I����ذ +J���me<(����Ȝ]�Q����܂��r�����d�í�Ml�T��.d�c�g��u��; �Ô����h�i��xd:�?�(�8��gk��d�����=u��,@V��9�Tv@����D��'�����e1>�o�9o���B�]�Ɨ]��C���ʦ�G�c��<��~���Ñbϒ��(�d��'�\�Z�������r<O0S�,�VaBM�m��~�Mu��Y|b��C��dWt���� ���J�����l��hF�.8h��.���p̶��?��ck�ű.4iL/���*�)hq����&C73l,&� ��y0` +�nꑑo�zu�˅w� �(���$lq�t�(K[�r)m!�W�m��xp�{��e3�/SAQ�V�=��E��o�]W�۾ykrM�!��e�{K���K��?��7��e/��5q��c,r[�\��V� ,�XW&�����;@l0��:o��*o�_���v71p�,h= CS-�J;�~�Zg�8�!��Y���4$�������SN 4\j��Wc(K�<Q���>8� �Ӧk�G�� +�Z������bA�&B��A�-/��"`E��*ܨ2��h���ʇ����߾X�@�3֫��$�<ߗP���c�s��O���ޛ7��c��_�s��[�l��(�ow��vu�����of<�`J�L�%QO��ʎ�w��B�@*�L3����rp��spp��'l)��Z8�3d��m�A�����Xꎣ��c?:���)"��:�����l�+<$R�͢t +�v�/_��_�b'#� ҹ`�)�-�z��I���ա�b\�t'��I��_��2���,齈[�> ��fkP#6�����~Ř��삮L��>jOh̑�ՐJ�H@��1m>���߽��YDj�مu.��&���.�Ls�oX�u�.�Ƙc�┲y� +�Ŗ+�%މE�A����-f��I1KZ���|���v�v���`Țn��y]�|�-W���r� �`�����v�+�vE��ﺽ�}�=�#,w����G%���d���8a���e��Iwk��~s_��ưLaa|%I&���G��;_6� K���F����deO��-���PXð�%���0� � +��r�g�Y� �ȫ�Ԃ�}�{��{������C���I��B+Ʈ���E��{���4�D���Rk��t����\��(�>9��M���6�c߀������/6t�m�'��Q�C�~s٩�DY8Q�-�?a���Z��@��'M�����/���Bž0���*afD�].]"�_[\x�zW���drKW ~a��{�}@�XV�ཪ ��t����w�����O��ى�� *�|���ik�Q&��6��7L��"m���7T8#q��_9z�<��X��M�+̷�þ\}��<ū�$��n�;�>�(��.�M���|��էb�@��H��P!�r�)w�G;�ͳh_�H��������������O���yN���A���I�=��L���JrJ�7������)�6�W*�l���_�Q�h�렳_�(��ԤɛQG'a���gL�p��l��D����ʋ7����T4?��)��*E@z�o��f��v�U�).�M؟��H���vR�M|�Q��G���e��3=�]q˱��& ��%���^Z�%�ׯLY'�Q��T�C�X։ʣ������yl�ע5���$����A��m����s�2�+�<�i��l��/�����+6�8��x;�\��-��@�����u�y�>s�e'n��d�m�)��@�o�B`��%��YI6(�������1���c^��C-v^@�]""�7oY�"-��I@�G�md�L�p_v�ff�8�KDmݍ'�>w�(��D�����C_S����S/�vZ��>6ia��b������=�`����>�)�Qʏ�jϞ��e�܋)��2S�fZm�r��}�Qg�#��J��R�S�YD'}d|I���ĩ�V�B%��jp�+(����7�&j� ���/J��L�����ݟ!����M" �q��g|��is�N������M�GW��\��x2��j��95�Gp'�VR��VB�� +�`�b�j肔�ќ��3���rL�p(Kto�^�87�l�"��ԏ��*Xj����a���R���� U�]�ԯ;}��h�ɐi�� O�j����x����9 +nV6��L�g^eg澎A�����ƪn [�H�(Qu�$�R�P���^�)6 �$��D���5o�5o���s9*������X^�+Z��e%�}�oX�b[�3��fS�N��I�k�����C��v�-���#D����s��}u�%/7B5�e'/� �C�E~�pگѿ�bS�a�)XS��g�'�H�x�o��aK�S�O�$�i��Pᳵޒ$�Co�n��<uN����j�U9�ҹw���⸣͎�N�#Md�1;E;�E=N��� a&�I;��C�%d#<�X������<l�ũ>V[&�϶cʦ�i�X��o����I�sAZ�+vS����b�:˵��g�^c�F�@��'�X?ؕ1s6묈����^�pg�hhCT���t(8P> ��5Չ=�t�B�t>����r�v��B������� ����Ans.�?Dn��B�J��_�v����{կ�=3��R��� N8��F�@�ܫ1f���V0l�6gau��o`�- ѤP��a����U�Y��8�Xg�mK�� ��ס�\� qǰV���!��!�-���ۦ }bś��Q�����+�v?|�=y�^ì�-��M!>�ɧ�jl�v�^+���l�Q����z��>�Ee� �M��J����<�����ro��gT�d�vzP���<:���:��\̟9�<̄3a,���ꐛ�k�� ���3}�L����8l˚����c�-� +q�R\5�9�o�n��g ��d�#n>���!s�Ɠ�i幮���Gw ����z]`�۷�J?���I�ą�!�&yA���n�~y�j��ߡ8/�/B��Cu��_��)�4�C����G5��B����9ߔ�ֳp���ט��C�{]����W��K�/��6�U��$���/.[��%��o8�ȉ��͍�l�L��Ǔx2�AYg�d�;�]}*$�7e��'9�"x�E���pz�9y�8y�b��g(�t��4�ʼn�2QY)�����@�H��:/t8������\^n�B�.C�����z;Ғh�X���vŗ�0�����i�|�Z� ���7���c��Qh�� ��PG�Α\^��4N�0K.|U��i���19�����k��NS!M-IA���E�a{"<o��yW�}�2���x�?�W1w9��wR�yP�V_ ʀ�!�1��jZ4�p�Q�@��>['E08�+!@�uA�PF���R<�t�`���}��(��7Q���$��]��¬�W�g�E�n~u(�O� +h~T�DT��#A��*?�n=%�l�� +��F�Y�E�ե�N��WiS��K8���R�'��(��qS�`ȩ�X�;Xcf�C]�}�3�ݗ��V���@�R#[�6tuCD��o�S6�ꓯv���{S5�̈��@@x���� �Z?H�/�-X�G���Z��acg^�,P��+��(�e�1z�#6D�t���f����63*��:��ɘ�Y�`!z�&������F��/8y(� ��� |�wZ��0��o^%V��o4E���Q|_��㡒/�L����%�oҺ��`��I}�K@�t]4 +��5W}��j�5�e�*8��_p� 3$~ޝ;�z|�Bm��eβ.ӴP��%�3߰�Ly��Js�_��nF{���G�#$;���VbPk��u`�4�vQ!n9���=s�rY_=A��Gu�BEJ:a.�C��$��hj� +�ᇍK��K�4�\*^�b=�B�է%����9�j/��5����#�h���8p!�c����oy�z�Tڱf�_6vl�g;�<���/�������m��aw��F��E�Z���T�\�n�h��Gz�: +�Q`|#b���G�F2�����F`�/8y(� �W(�k?L#0P�X����$n�OP�w��@= �E]�qoN�:����y��{�QX>6a�$z^.>�c�{$��)�6`-0#��a�7Fi�4v�F�_\�_����^d����u�:�Bq���CWmx �f<�?��4�&��)܈�4�1/Y�n�]6��ل�T�J8@�x�r��/����x +�@{tH�����<)H�)��.�>T�����A�h�8�"�u�%�����P�Rɖ�:m���Pm}0�$ũܐ�/�5��-����di�g�0IC��;Ӽ[�"�.���^��6ܼDe�'�v80{\�/�����9f���:a�5�؝�I��,a�:�6�܅�a|���>$$}��b=�+�g�������5�pl�ש8��6�T�� +J�8<���:�Y:wmd`���!?�l��̙��g<�7�7,Kn`ʋ�Y���4�U��u�$�$E�A��c_�^�I������$E|��$E�~')8kv?�X���c��>�yPW[��#}�� ���}�1P5���\|��j�c�iȧ�����b��*,�8�N���M8M��.+�nt|iot�O �5I�Dy�c6�n��7 �~2 �5��`a�zI�UQ�(*�PmP妠<�y�Fo�Q��K�LY4�d_t���]�O���"���F�w�F���_4�ϰ�w/I�m��T���$�'j���耘��m�� 8���o~�knk��W�L� �≉�����{Gij�ߘI�P���Ÿ��μ�X �?�]&�X�)��:6�Y�� �π"B�^���m�(0�&�aE���jte&G�~��G��1�1�L��� ���I�L&�&��ٜn�/8�n�C��t��Z�� �_ �~�P��)Z�_�&��\}�y��sglUʉ�b��r"��t����#B)jJ2a��x�w��&� + 'ܟ]V�L�����h/H���#���Cӝ����{�&��XC��+ۥ��=*���:*��� dfh���)N-�Mݩ�B�?l�����Vhi�Y���i�3ȵ���yls (�$����T���-����>�O�L �*7X�J��ƣQknN�HHv�����D�kJ�*��P�J�8Q�˸N�8�1���`@�{X��S�L[�t��n���&�&*� ���+����>�#�$N w� >~� �A���q*���}�Z�֚��獼=j�*��UZ�xӂz�S�,�ᇍ +,<�K��O~��tĘ�b����T��H(�1,�7��b|x���7ZEF�2ZE�d�$G^� ��o�������O|��O�~GxP0zGt��(7(�I$Y�v��(�~��\���r�2��0�Qr��c�����<�:��Mvı��PuJ�ȿ��G��Q�D<��!p�����@�g��Ɠ�-DHO`�i �����F�0��Q<<Z�@�~�QKL}�I�!� +�TD�T�;���Z��Kd�a���NL��|H�7��B�n��UG�1J�Qr<Z���]�^�Ȍ�ܻz��"%�"���H�/8[���g��� ��QI���H�V�(nd�ؤ1m�"H=nsZ9's��� �JD��g�j�Iq���ޕ�d��L�.;�<ۣ�">q�~hQ, +~ ��4�Oޖk������_a�S�ZC�R����X�ċm�Jfq���4�p��+ȔR��f�8�8�{��@��M?>mzt :���H4�v��Iܹ�IG��+�W�R���*�fTו�%���KK4�mi�*!��Dv<j�@�.Y���@;Z�\�r*����#�xW�K.W&�D���M��m���H�vfav�Jُ_�{أ����=� �ɂ�25$�n^���W͕�r��k�i�J�`�py��Wx�S����[�JY)�C 6����g'-��ҝ�k4�Y��X䝪ۉ��7i�:��P��M�]�%��;����z�F�S�C��S7�C����H��l��[n���SHw �m�0r������8�-�����P����^�2����IϨ� ��=���,d Ө��tܟ�8�]��F��4G�%�����C�k�9e�O���D����DCȯ8GC�G�_4�{Lo��9Հ����h�Ku�T�U:< +�����8CgaF'�}U�j��=�/����1��o +�I���|��\��B~���p *��i�*)|��i���-�D09M�wh�����R�@�ڴWԣ����B��E*�ꘀ���N���"��I�"<��E=��{@l��c6����T(��@>6�Є�A���-$�d�&��o?(<9�R�@������������]^��X;b�,$c"n�Y��%�1�[�h����/�&��"��H:�*� ��:7T��0� ��[�D2�!mqe���\��"�yQ(��t�N�(�.�U�_͕��KTcA����h�0h*��_�!ս�Ƽ���^Ʀ�N����=�̬�;�Yy6�� +јv �1Pc>T'��Dq��kM\��c����vO���O�5�lЦ�P�D�!���a��N�r��d�R9�~���?&a�������s@�$K�J�@����C���;,o�8���%P��A��p���ru�1X��f�P���x�������v�@{&2�������o B��<!�2ߗ�g�C��'���*8?s؊zK�/|5�x��¸����HH�Mx���N�qg@^�>��E%��!������(M��{�v4`oaTI@$���:�� + �Z��Q;��K0���� +�ɥiW2[�w� ��Х�!941 +y�k�bÑ`s���:��o~�F�_iXnc9��$rj��:��e�Pr^�ȕ�%�������̾՝Zi�V����P����nu�Έ�>��`Q��bk�Y_��c:KށT��4�J]�|S�;'�ǚ���k�PC����^)<��cIz��ԸH3^����T�S?��ϳ����p�F��]����/n�O/�)5M �j2{��"����~-��}m��K!Ґ\�Ѭ%y��`���pt��m*�;� ��v�Nh���=G�����q6a�nd��N��n �M(x�QA�ƾ��2>$\�Ԍi.�k+�SS���4����"]�C���*ߓ���n����v��qY���Wo�)v���T�g��F�n����MlN#oTq��ܕԺ�}+���N�R�����.��F��Q?��Q?�W�8l,�캣䟥���2�z�GיXʱl<�*Z���m����q?�_�P�\����Dn��ȉT���)w���}��s���[�����o��G���-O�u~,Ԣw�Ͳy:�_���gV!7_���J#���&I�E������F'�fdu�\�_5�<6W~�֢O؉�8 N�>�� �}����#��.4����N�oj�$t�g&����"�u��@��Nё[meTP��y��뺼�5t,���t�X�G���>��jO�X����}�^B��f���;<c�Ʈ���(�؝���$>�x� �����tu\|gY|�� VU�����t��"��6���%F#ʩQ��e�$e�%��v#��>��97(X���wϞ����/?�<g`���Ż�`�jT�r����Ml�k���%���ߧ��%�/*��tUm6`�F�Ա�QZN���^�a%~:�Q���h6�d�yv)����Q���F���u��.�$d���Fu�{��!����5�Ũ���|��Ԩ��ɦƾ6�L�A�#��o�+�?um���GC��y�Ew79�;��"��f_n�2@+u��hW���,��b^іW6�e�j����R�H�\d�q@�z*��hּ��3�l��2n�J�lD��id櫶��&f�}嬰ٌ�`��Qt�����R-�P� ]�vH��7P��-��q�"��N+�{P�V����P���m _] *3�]&�/#Ϡ�p(��)�S]s�̽�^PG�gH3�����t?t<#�)5�*7H˪�m�z���8T������>�R�����gU�f������ 7��o%�$�(�'i8�<`�'������*�L9C�d + �r(B�N��f,H�8Bnr[��p���=sus��v(.m�%��4�1��iT�5�3����(�42��z�� �P�C��*,q��y�^�b�ݒ��n��5לy�����K�k��7!�V�K:��_�BW6�X�IӪOu c��Tg�͚#��(]�����P��u���*L���f50����wY,�d�B/F�q,?l҉ ϛ҉M4-�ȩ��SNr��Cﺸ�O�c� +[��h�S��H��_��{����T��X?�ݮ��Y +��<���'���U�K�!� B�j��jW����F��eq��R�o +< �q1��|XtaJ)�x��z4�-v'��Q.fThД�sr�)�N�Ѻo!]���y8�&qF��'O�m�0|s���&Һ�Ϫ��,G+@==���O~U�"-g�sd�uy�z�C���3�*��T#��n��4�#Qf�S�*������x��!����!GE���W|t�@���I���5W�+�r���Q�賭�E>>��?1��_��M$M^��츃Cm�ì,��V��8&�i\t��NG���7�{&n�9�Hu�I����3lʶ�>�p^s�5(1$j6��H�=<e�zҋS}���_7�(<��w���'�N Ӈ�V謀h�걵�1��:1��:�Xԉ����z9l%������-��mw���?S�;lk>���:p���kHFuݔ~�n^,�uE� +Q�0�:�o�/�����s!U%Kj�rI��Hё����$M��c���-���VTќH��.��}�f�_��M�i�D~:V��F�I��|�]�skWa�F�y��N��e�ιl�\Y�{Q��|J��Yۡ�(�5�\!�����M~�*�&�o�L1�%h��K��O��$�>2G�w?S"jy��.�B����o�Dr��y[#�^���J��̷�UF;�&������Ԕ�P��9z��^�s�]���$���A���h��Y����O��`�[����u|��*�Uu2���&���W_L8jM3�4����<��3�"�4j�N;�,�(�DsrL��nN���.:b�3�/�GÐ���"�Ǻ>��{�S�b�T�����(�2�QF "U�Ɖ��!&�=P�#1ќ�L1}�n�N+K�����qEv�(�xhzBɰ +���z +��GZ%Y�$k{KL��w��P�������.�4�a�m��{a��b����El�@?%���$Fn�Y����#T�P�ؠ:��mn��ej�&eH�e�m7/�k�ܐ�m��SSk�B� �Q��Q��{���1|��g���)b�]����R��ȗ��g������6N_��1ϝq����e�n��k��H�����Dh銙~�����l�T���K�0{:%Z��[[GŬ�9k_q_I-����^PF��9��5*l���v{�W�)��Xf�}��$�?��j�g�Z�en�jS�h�!��F:�MZ,8�p��8����:ʈv]G�:������Mb@��fBTn�%�zp̓0{����Ks�A��:?�����S����h�p�b�"O�67���4 �٥,6\�Mn��z ֝�)��Hh�+Od]l+' +hk�S���35Tb�JU�l��6u(�� ytNcB ��UQ7�l�ŭ�����(W�Nz�}nͫM�_o�~���K�D<>A$Q�*cX�i�t��ٺ5���OGZ����i����B*NYj5>���$����k�9յ.ۜ�a�kA*$��d���IB)x<�mi*���-������ӊ��RL�(Ndl����H=�)j�/��=:8(��s��V��3��B!��a�p�L��d�u�ߎӦ�>�i��"~II:���A��H�k���al>ڊ�ն@ ��U�݂���t��\�����s��al��,�ؗ\�ç��̫<%_���Q���,�t~1�[� +�f]���){i`:rJU%�o�t +����+��8�p�CK�ECH(�+��Bt�X�f�V��;I6���K�Q�ݥ�O�}$): %����B�u+z ���F6&L��/��5�Y[�\kq�-I�N��.K#�[���*V=�d�:�9�xx�\�X�C�������^5��ش +�Nk�f;�yBP�X�5,q�hJ��ݵ,(j��&#~��`Ɏ��Et���џ;�i;m7i���~ڿŸ8*�h�d@t�2���+c�1��0}���9��EP��6��7�տ�����j/5qڅ���4G�V�TH�\��.���]m��Z��٧��2Z@F�ñ�x�[(�D�![Vz�[����D�Aα���v��dxi0��f��a:�K���=������B�ȿ柊�{,�9��*P���ʃ�Cq���q{<��ųgk\�Ȧ���O�L�{��Kq����rU<�W���0�7��=���1�C�×�&s���?pԓ�Vѭ�b�kU +c��XKT�z�q�y2?/��P,ҡ�;��ڎ�������� k��������V'�-��'���6�#�����{�G��8��aX�'{[�3(Q<\�=�5���8�k(D�~��c�r�c��a�R����@r�H�.A� +��yKp~�(����n�dH�[�qk`��x��}�YL��wO䛔���0��֯L�e�}ij������y<l�P��{Kv8��}�'��xS���Fd֯�=��џ]}u�~O|sԆ��~M���^{+��p?�u��ز�)���t�?Z��|�kZ��<:-}<k���Su��5�`Y��8Os����w���D�K�05���[�"܄��9�"���{�é���kF���QQa@��J�ە�=x�jR�K���Bt"r�"�7�(�Q +~�˟gO���a�D�Σ +M��_���A�*��)�5��z��!�N���7��\�y��95�r����l��='|_�K�uA8�PMw�ԁ;��S^��Д '�O���C͕�/.NUWc���gj]E�Gw�U��[W����WcSs�]cq�a�α�e7��F*�{���y��̊�pZY�����m�N�X�i���q ������X�ʴ���C��~������Tmܴ_ڦ]!�\��s ����99����C�1J\�.t� �]1y�F��ut���3��\����b�s�T[w���� /����:�����|��<�G�9�d�+�*�!�����>Ub?�� ����"�R5����m ��8�r ���d]��f��aP^``�j� +a�����'��I3��M9��t�wx�C��-a'��IO��I�Q���UP�r䎢h��C.b��w����f(F����RxF�Uc��X&�� ��o �QH,�_��P����O)Ì�G*X+��5�\�b�����- �Rh�h4��xZDF3#U҈�E�F���=,�Q���ǏJ�U2��iO����\�� +0'���b��[�~�J��/e�KK�����y�-ߝ��v�tͫ*��ҁc��C� ��ݱ��V{>�%���"��e�I/�v�">�UZ���^�/� ���,C����ܔ�d�%Cr&���R� �v��z�� �5@�!$H���fs�"V��TM4�/K>u��y�S�R�N�ފ�ВX�8�x���p�[9��4�=, "4Rf�_]h<��`]*R�l/Tn@2�䂆�������.�����o��}��s��﯂_���-����~y�4�g��@{¡�V��=n�ç��M��ؾ�������r,~� H�����=�[���o*��9��?m +�rO�V�}��. )��&��:iޭ�&1�8�~��I9{:�2Mu�-<���Bb��A�)Y��n�Z�t�A�ܨ���-b�*���+��R�K����:P$����ǣ�����i-�Ĉ��ف��X��ot�.�CZ��<��=�<!v�J�n�ێ9�}m}.؍yk_9+v7�Lg^�8�j̆�Js�im�cN��/�����ڠ]���w7�&��A��l��/�[kH��/3�'��R�h��y5�.��6/j1�8�JzY�h��3�B}FЦ�oq��6�%Na�̜L/�c=��Ψ���Q���RD����0�����!�۔�b���[���@�7偼͈�R��k���s`j��^t(\����F4�W�f�s������B(N��\�G$80k�6߁� +�+?����-B�u�"���U��1�������{�n|�V"�G���l:R�Y��@F�����D�j���1�dϢt�iX +\D��+4�H/���mҌӠ�~�������G�<s�;#���}��h�7U��ùS|q'iy��$�cV�I�!7]|�[�m�{A)�TԒ5�ꮻ�v��7���V�����}�S���1�C'.��axuK���z-Rv)�f�^ tI�ɥ��쀴��ESIf V4��[a��S��]w�m쾓��~a�!eM~�'c T�r�(��)� `=.�� S�ZϏ�VWI���o��]̒�+��թR��p��� +��q�g��6����e���w*5�;�9��s���ݕ(��`r,V6��,K[��"�A�\�rI6�Y��l���l_���+�d��7�wӲ��ӵl#S/��6�a�עMѢE��JE��� ���,�=íY :�[�YF��%�v�E��ҧ��)�>T[�*��:X����+ܗ�S}��6K��B��X���l:�N������r9�nP�]�Qw�s����UW;�|ga��3���I���.�Մ1l�M�Mد~�yr�w��֧�R&�vJ.�Sy���� X��M������[�Zu���$�\(��M�^�LB ��\��ܐ�-�W��d?��M��?~lI'�Cš�7忹69T ��c��,�'^�_J�I��l��Ik�|�L��l^�-�!7؈KUqb�n�S�# 2ŵ�#9�@���\�؝)�ps�j��/G�-7��ρ?O;WK�4����NF�T�W5�u��4��N w������t6��V�/rB-xb D),�_X��ʠdX�W^C�&#�,|m��m6j.�/��c�@���W��[��'�ͮ��`���%h�=h'��;���W�=��T^���*����b���B�@�y�3��c��l��S�&o�n�� + Q 8���&8[�`����ඪ>�m?Z�ʶ�N������k�U�0�]��{>�(�=�M}�q[���)�e��D��%2!�"������G�>��Sq�W��.�2�a��y�����e��ڙe��Y�+$�-�3�����jV� ��r-��0Q2.��M���U���:�' +�C��~v9*��^���u���b�/�W����d���r���Z���![gU�.6�g���"&FĘ�N�'()d����q����+�-IH�I�WlM.�X�Yw15��`;�G#�=ԇ�i4a�>�En���r�����Y����ore.Zl2�ޱ�P��~>� ��k��:��0]�a��t��34A���u�w������q�^�$2,�a�N�Y|�Ґ����k,l�x6@BT�⓫b�x;�R��揮ܔ��x�;U��@(�j��R�����M�"S�܅R�69��I<�� �˖���:_� ��B�\'��,d�� j;ZO��6��̉� ��:�Y��>8���E�^�rÅ��Ʈ�!�s�,�c�]� +��K�o>��o���t�����!�ߪ#1�i6��Q�}�@��tf/æ�i�S��Pqz9M})�v�,�g5�&Q�hO�Sz&��&��~qe��m�r��:=V��Ρ���uET�?�ЉX�`ô��t�3����B�iFǥ���M5�碏"�4;�y�4��/6{�b�b<���%����4��$�MR�tn��BdӐ�l��#D^"D�����<���Ju��fغ_T�tE�ޛ�~��z�E1#�D�,��c3_�5��D�(�,�͍��as%d%�᥏�Bg�JYu�*���!��Q=*9�����}.�6�sj�Y c��7�هȳ������\�� ��OO��n�1���~)N#g3��\�T���\(L��Htc�R�E\*3#�ڝ`�c�<����N�>WJ�R����?ɉ��EF"_�\�ȅ�)��ZS�,�^)��?�]���WiP8�AWhT8��Wb���r��`ۜ��S+M�����%�����})D�7 $�W�r�o��%LP�e�&�CIR6�T���#)�)Ϝz�2�u���Wy������Jt�Y���;ZZ�b��_f�����r4�ҜqP����*���ar�k�t�{�����Ǿ:��Rh8c�X�4���)�T��MB�@ؒwm��vό[��/�z��XU0�7��>��VL vձI��n���\���U�! }�+���͚���-cu�9�H5�����le�([�_يsz ��2'i@\�,��]�,?���s��K�DӢ��T��"?H-��3�Q��ɜ9m͎)��# S�?M��կ$w��l$��2��q��(�M{w�f'MȖ�-T�l�Y~�(�Di�P�7���t45~�v�QV�e&.P*�W�z ˮ.��V��CF@��))���V�cBK %��r�<��Y9�l�Si`��� ����Kx��gA⏩����^C͙�V�� ���nA�TŌ�洁��[�)��8�-�6���B<`�1���/�'���"~8�� ��6 ���Aȸ͑Cg[�-� ��T��L��<��my��"=����9�Y,���r�>\�Y7�����n�9/�餵\IRݪ��3gA���Y��"2k�no��y�;�q��u��4��G/ 7�'�]��b� ��_[Y�Y� :���j/Ѯ�ۚ�y9�� Wt�a�6����k)��!���u�_� +^d���x�%#O��"(��r���6��a�F]�Sex�*��P���*�,�f�|r���G�1J����[��V�Ni�w�(��7[(I�fDqɦ$��-ےt���q�7�����w�v���|������]�P�I�D�XM-��Y4����H�P}��}�]d��Qn�p�%\�1� ��M�yW��k�/X�i�]��~�}���F�/{TDрV�J�����.��R���4�|��"e� Z�VJ-� +��b�Q��t���$h�9Q�=�vyG��=3��]�Ŗy��i*֦��_@�N������ �\�������m���"���$���� �a�6���(�F�4�$\� 6���T+�đ3o��Xt���svd��������R�N�_RV�Ʊ�e!&j�m����.7#�n�,7ZQT�i6K�h2�%9f^�JRք�y2��;oV�8ij����.�MR�!���Z��������e�?��E����eJ�)_�P�(aO*X��+� �{�� "SZf.�X}*v�_<���Ibf�xJ�tI��ꧬ�^3�����|�e���gB��4��2��ъ6��jQ���d/�������k�|�9��ck�чy�����X��.W��v��g��Um���������p��cs{(�aX�����o�������Z�X�܅C��2%yX�}}Z^T���s�R���\�R˃��/h�3M΅�H�.����r��P��:�y�a?��~�!���%T��c�h�T�\D����T���(�5P�2�DkZ�ᴳ�|ù��AMP�;�+]�D�+�e/�a�^�R��fL�Z��{�G���?�x�U��{�e������V��� ���B�2Pa�]���U��uf8|H�0��-���pֻN�P�L^�����!xd&�g�G~���5�v��ܜ�x�������X����j\�����~���5�6\�����+q���+�͏������K6�6�^Gq§�=���o����՚���] vW@�C�� �B�d�������KU��(��B�zH�ER����1k��j#���H�p��֥�L՝3*8 +���^8� `����`�j��.����{0�uhM���p�,��G�n[���U�-fC!�z3V�Pas;%�}��œ+a(7��Aa{;�i��g_?���k�}�@�BGg��}�*������ˡ�����a�vk�<�6����q7��U����=�1����i]�)o�zǤ������C��n���6�m����5��sl�aa�{XH�X@�1�0̇r��$�Gq�.$��� L[6al�"�x����@�"��"?�n�W;@�~x��Տ~�1�m ��h ������PF@q���my��T��7�����1���1�U��dX&�� %:�^�I�g����G#x�@��np�!nۍ��"(7�.ۍ���7&m7�� +!� ОJi7��-u�-���!6�M��Y Q����.(�㩏`<���8�+}��6��jR 0/��.([�q�S��baS�+�����������^��P!� [ �����T@�|D�C ����ĨL8`G�6RN�N�1�uH1)?�K.F +�-_#�06�j�p��;�����!i��F9���ժڌ���\D�qA֯1{W�������ps9���93�����t�����icAB���z��m'�8���Z$��r�(FHC��I]���f���:;?ލh�^�����I�o2h�Y�H���A+N�����f2�,����Qlh�� ;���l�!�n��2B�?kD~��ƍ��n��pMAf���ajr��9R^t���z�Aȣ��T�ϋa/0��������A]q:� �h(=�uP�<���s�:C����!H差(Q'�Ի�j�$g��0��ӵ��L}7m�Rձ�%���g*�!0�qyېv��9�wD��s'�z3�P�|c��+��6?�ns�;�E�J�l�+�Jc9��ݝ�s<�z������˝Ԓ��u��(��� \���wLv��b����Jj�(� iP�?W�{��V .[<ͼ�|y��)�E���B�X�j�S�i�><Nzx�_�AС�p/���(0��Qx�����;�MR[%�Ep8�~ +n +�cw;D��J�ͨWb6�`nҙ+�#�\جܦ�ڕ�C�<Bny��l2B:-��W��˃gA��%&'r�UcB]��KGU0��'b��s^2(��ψ�q�@���>���X���r9�F�*j�R������ͺ��B��xβ��qSW���U��!�3�6ǒ�w;����X%�Jɱ ��JI8��7.����^j!#21w���Fv�����s � �n��R�X8��ל����T�-?�Y +t��`�o���>i'Q:O:��7X$� o7��&�a?�צ���OHf�v�^���d��F�Mca'��ڔ`�WWQ�����Jn��G!�#�0��+����>�k\�P%m7Ռ���q��G/m9�`�j\�M~�שXPN\K�`Uk4�3��qz�r&舕��|t�~����r� ��T���`�j�O�z��M>x����ܚ0]��<S=/ޚ��ʋI�dO|ךE�mi!�ސתBh�����d�Q+tV��;BY0�R.���`����2) ]��#�а�zGͥ����A�i�m��s�W�72!l&��!�2���V4�����%Uk�П&�9�z6u��gJ��eVq�?��V������͇�Ed��ȇ9�|Θ�mz�5�G�rF�0S�^s��`��#�f��UP�V_�6>�զ��X�jO||�����<��r#�1�Ku�]�u�y�ģ��$�ȝ��]�S⡹�>h���"?�|H��l6�����S��H�V���p]�@�������ё��GG�O�\ ��w��P�F�{EF�����~~��$n +�]*��~�q�1� W���%�ʵ��|��+��g�o̒��ƑB|�ƞ�2�Pl.��|��u�R^��=�%P�s�Np��s!<g~[�$<[#Ǥ5*�!Z��JP<�͢hv�N�M�&��C +T�c��w4(�S +#5ww���P(���j�Ŀ|y4T �4dI5�J���77��u�xE�/b�).�d�P�ex�M��0�&����^{�1��(��6��!?���#f��uq�5~�p9�}wG� +ȿ6~��*���[���P�yQ�v�k�ah��A1�����r>a�,2n�,��E�Y�U��u�x�=AT��A�E/� ��F5�i�~�y�b2"W2�6���%�p�y�pT�X�C.�[�%S}[���*<mB(�����B��n�+ؙ&g*m����?5���t�߃�XnQ�yט��A��Y~�G\M4d=&��/mS��B�+אZ����K~%�~���~��V���l��IȾ�g2�K~W����u(���������i�c#��E\}�'B��ձ�6�R�'�Y�D�h~)ID���3� +a���4i�����|Wl�e�/�1��ܨ"� �.'x�m���P�9�2���7K���Cfn�<#�:���/C��_���]�0��ԍ��,�y;��_�)�z^�� +M��tl� +���7�=��-1��.3�<W:l0���g*�'5�(�3����^#E�'s�W��z�t04�WT]r��u:Q'a9x�������k3��nF�DX��&A˩����6�)l�����6�ŭ�m���/�2�@Z�2@I��a���7(��`���n6����ҹ0H<y�%Sf*����� �L^0慂��V�t�}�xj\3�kf��� +�uFsߐ�XDq�8���n7���I���4��� #����@.P�r�h�.k�Y�k*����X�U�<Oq�~�^���`S�5L�V�� +��o��f\��M�f\7�*���vm�3IE {sR��\ (9�{^� �z FgU�)}����RfffO��� ��6�G(�N�������I ��Ŝ:`��d�[Je3���!dr��5���AE�O�C�l{�ќ{���&p���;��$Fë�;��֜q��8��Yw�C>�?��>:`tZ56��0&& f��\�[Z��=��b]����,�:f!)�-]�|* ʋ��a���֊P���;���`�d����YМ��zz��|a����o#�228, 'a��}M�a�� i!�M;Y�y��蔙E�3�}$.!��Ĕ�Č�Oj��ֈ�@�#�zۘ�}��%Ӵʽ�/_�u����C��m�Qʉ�[%��w����$8��v��M� �#��;Ĝ���� ���ږ<$��qզ�����/���� �]�/Z�#�@ +��?t��i[������b�oƻ�rTo�^��m�� �)�ȸx־���y��F#usc���������� �|�6���68�]����&d +C�`6��g|��D;�3C�YĿ�݅p�H�5�J�J�q�����O�� �It����� u)/Y#?�sM +�ٟ��.���qP���� +=5�#�| +��D�K��R��ծ�⣏�}�uýda`�٘2B(��wKRϝ�?��4&`v���m�^���+��U�VʹzI��,����� ���� ��|r黲�?��:��r��7�_�d&_�P\�:�%M�mh��E�c��".3�ɽ����A���D�k��l�ѱ2��J�h��zq(��ɵBx�7P#�I��0Γ{��w�$�K�&�D���"��zѻ��_�t�^�@���)����@# ������R�AAD��j�jV=��J�|%2����,j%!:jJMɧ-��X�|���7��,�I(vmل%�P~:'���� c����J�7�%�|��L;�ԕ���>d�3p����?�l ����`�;�Ǩt��CX)G|YuJ,2�aWs�f�=UD�;r�=ƚ ��A���R��_ھ%��d��_�G��[�q����m��S�.ZQ>�N������Q&.x(����-k�5�< �A��e�̤�^W����c�E�ͱ�z�ɦ�i����D�Y�@i��o����YCw�F 8ޑ�Q��%�H�=��m��tY�����l:�O/Erk,��(MGizi��0���87G��~���|�7;�����x�)>Hݖ=��x�� �C�W(�W�\ +�jW]s{:�.�Л��Y�O%��tUm6Ŋ=�ww)��Z�#�ݟ*=��q�B!Z(�J�ڟ���z��ڜ/X��b��մ��N�ݦ�K� �������`��͡:����hĜ�����Z�]�����Tx8]�OK~ +��d�L��f�2+�l�Z}�>�=��_�+8����Tm��Q35��D����3��: ��زk������ �+�?ѨLF���I*$�������B����qS���,y����NW�jv�٥]�ݣ��w�_�3�! �'?]?��ϢE ���ѵ#L9�������T��}�R� ʬĝ�m��m�+�-�C�4�A2[�\��]pS���r�2��ٔ9ÿ�Hf������;$d�?ҍ�PsE��d��O��M�Sc�6��p���Zn�~k�~+.J�w����<�����t��K��}]%pr��\eG��n���mmέ�%:w����o�)AY5j��C�N�ڶGE���CR8��iꮛ�E�'�C KJ��)��a�EQ�{�7v��p�gX闳r�V avk��3JI���^����ؗ�$q�0�$?Iy�,<�/@��6����m�qY�8!&Pbΰ��k�njH"(�������)�!"4je�Ju >Z����b\��2�!o�π�H����zI�y���zJ�05�~n��*�i+PĊ���ͽ=��k�Q{�2�Y�k��@ᆤ�w��m��1̖���h&�b2�Mx酪)��/=�SAxQ�Ġ�W��K�s��g��A�a��cv�;;ffܩT��ݰ�;�Y�x5�D���x5��Z��N� �8���sׇjT�u���/�ή�����<E6ӌ$ou�}�sF �X��%!�6vH�Q9l^�&���;@ߔ��9�����r�D�e�oSQAl����Ȼ������X�z���_(-g<�AV��b �x����M�J�U�C� +����P��`S�kZ�v��Ѓ-?�H�h�Tn/� �\i9�͞�Mi�^�M��4��:a�rؐ��O2c�R'<C.����q�T�=���b������|��:�צ�,}Դ��v�t0�M���_���b���w��s�]\1D!�����W��_�6�2��v�Ǿ���f�>R���� +>|x�\Z�rw��`ښ���x�YW49�:�c�B`R���D��z6�Q�L���D��ZpiF -���.W��ĝ|":(K��c���?6�o�z�k�*�}��� ���ss��nO��,������0��7�)�(��g����w��$�KպG|k*ٶ����Fx�:�0��Θ�^�~���爧���n�9ߜ +ͫ�3_�kS�h�1���M�,a~;ɰi�]9P�%`&C� ?쎱��m�u��K�͐ꋈa9%�����b��v�k}�V5�[������ǂU�x�y�$���I�Q��� };3�{�]��c����d�r���Wd�Q[�Ĕ6��@ɖ��o�h<��1�T�(h9�����2$�m�gu��)ϵqc���#�H*���}����>�װ���MZ��>�?dA���۲n�]��`p[U�h���Pm���W������k��{��l�X��2��+�x�w�3��e����ʹ@f{��հ��_.U����,%�)߫!.!7��x�51,'��L�}�F@��u]���Ky�EOl�����>�Rq.4'a4p�;XF-'T +�|^�y��f�@%��-Ѧv��FBZ��h�[����g�As�OW���������o�p�(�F���{a �j����-�@* ?Ȝ +�,�u C�"��(\�!UK�6/�8�|TI���--�O��b&8 +��:?���\�0��g� ������c���r�/�ܠ���i�H.�W�rUm�Վ֣��6�FN��^��-m�*�#�B˅U[q��`��q"|��9YN��$���?�բؾ{����|�#��À�,yw���'���i4�������Ά�48C-h�g��9(���r�F4����?��8��fݶH��&s�Xo\�m.�7��צ=X�)�k�uϕ�;�2P�P�� �`���ỷ��UH�nH��KF$S��Á�a�75�J[$'�V����h�'��)s�k��2��{aK�`ˇ�"��ռ�d�zN�� G�Qb>�5�*;/Z�:ay������ +��[����D���[�tE��g�K�5�%�����l��[��kţ�EC2x�I���,�<m.ݰlrhmᨿ��Ŧ�F[b]z�Q4mÅS@/:8�4>k��^���3t,�0���f��BHW,�����D^��X���'��!.���<�[-�f�� 3iyr$�!�Jb��f�uy�L�a��h����O5�*M�m��c'���@Y�1a4�� �S_��|_��be��U�1}��t}.WK99��`�;�!)�#H�L&vlS��J�N�G����ߌ#����.pKT4b[��S/h�D4��Qt�e@Z/�]]m�5�j���7pMb#��#$��B=�=\� +{�b N�J�Hb��%���dз�Q2ؐ��琴�_9��k� +@!�ߎ����X]A,�X��{�q�d��*~SkF�R��XJ�K^���A�0i���;�K��;�㈿��0U.-t{T�6r_�P��f�1��Mn��8�nnzi8�m� ���*�z�fj��8�G�*���S��PZ�r�������7�<� + p��!R�A$$z��{��H������+C!R};,"zΈ�ҕ�ב�V�����ഇ;1������+��#Y���)W��eg���y� rC���@.��q������=mr�U�e�E�L�F�w����#���<YF��,(�@�_ X�y�tnH��e ��fNi0��#i����|� �$t�����T��'q�|8`��r�H�iYF7��X�Zs�n�Ʒ�F ]\���9��L'=�飘E�1����3��J�i֧���'���ק� +B�d����F���*>k"w!{��H��̻�(��ִ��� �eۆ����%��Z�J�գ9]m���v{�V����(���n��p�v'u�L���4��%��M4��֊�)Δ�F��IR�D��H i�c��H� �)�����m�Fq_`9� +<O������t:��Iw��%�|���W�i�������#�M�:���t���N��=�E2f�����\_��s���.�e�/�rMR��aB���%��Š�yg�-�D��nFz�W!/��G�g��` ��'0��"8�?���X!�p�R�uJ�&�·���1uѥ%*�O��)��#� ��A +#��?�Si���:�{�Ҍ�Җw�w��@P ;���O�Ph;J�"�a@����s�,�� h��}R3]�z��Z���=.�����2�h��P�ϩ�#~2�E��brt�R�n�/�UW�%�e���Y��b���R���:��1%T���j5 �G���C��4��-�Й8R��6}B7��|#\���X�,�'�E�@x��z�_1u���~�-x��:#_�,D�$^*6�H�+�?���i����q��Y��}�[{�\:��L�J�e5(Bu54,\[ӆ�I4�$���Gv������E����+�Mg��㧂�m�ó�%����k:�{e]쬋� H���%��Љ+x��ԃ�6���u��G%<�j5����ZL��?�$�k��gC�At8���g���ݦ��8��S��I�N�h�e���;e��W��@�3R��U�+M� �Ck��d���8�K�6�~wgh���?�7�|[�ƶ�9���iCĴk�bJt;�n,[]C��Z�0 Ȧ8�7��hmz� �h�(�W��g�O�ٟ�T$�!u�̓�I"�c���u�$�n5��O���~��"���$���|�J�!{ԫ��@$7�|�+�����hU4Y}��x�C�Ήs�����+ �`? �_(с��l�:P�ԡ��������Q�yF`$������/hg�[��y S"�oV���=�F���Ԯ��V����)���1k,EI���c,�?_h��Fҝr�Y� +ΐ;�q*��t�E*� ��r1���\dt�(u��e�g6ϦQ�MZ�rYF���{�1<��"�����|?F}�u�\<G��Nz +�߿��m���gуa�S*u��5�sj^����R�tQZ�h�=� �睚>R��뾳6����^�Q�^#�/�Q4��s��Ȁ��:���d�B35y��-�j�q��ب����a��Wثa%��G~��� I��@vo�5`��B�����d�L�K����,;^#�s#���k��L��x_"O>���$��Z��Z��l�W0�p ���&������v5��I�Φ���8� E�'Nd�]ً��%W���j��2N͍��Ȣ��{�ȓ�1�<cQ�|O��a��%�J�5��7/���������:�muڬ��~&&�B��C�6�Oa�fr�S9�KUe��F�4��Uʨ�*Y̠hlRy<Ų�g,<W���+��e�T�3�K� GG��&3�DW�R>n��ON�h�(�C8���[gO[ǭ����xb��1D�^�eRh&�-W����%ꑽ�pT��Np�U�ϯʍ!���D�]mr�\"%��Ȫ`�;sU3�y�����uD� �{7E��p���$VuA����~�eux�eSgq<Q�tn�e�6|�.˴=���P �����7�r��R-v��{��2z���1��Km �c�+|��\��֪����SR���~[ej�^�pV��c����)e��qľ��ӷ���������^|�7�9/��2�9m�'�0�:�Fr�$��k�i<.um����{%��x$�o��z�1���^��ǁ�i�<)���n]>}ĝ���@y������`�Q�)�Y��Ɔϲ3�x� ��m���ỽ=.7:L��c�~o����|R��_{�|�����ͮ���>�rs6� mH5��ט�XR�,�y/�A��1$�^]�q���*~L +Oz�8Q{�Jٲo�P��?�NfˈJA��G)|QRx�h�T'�m�ʙs<4 *�J�M�}�t"�rh��.Ɲ�+�(�G�#K��H�7' �Y�v&�4^t�@���G��*�M�G|���5��S2㹮c�C��NЊ�S_�:7S��E���މ��N�ʎ��)�8IKQ�\�I�O���;+%���|��ox����i��/=�|<��}ƅ3�8�]�)���_h8q9�W�j�LϺ \����#�y�ч�@����; �/ 1�=2�&yq����G�s��=��^2�����ys��y��M�C����{8)vtT�S�P��ߪ��kO�N��@�����A� ������C�{(�7ju������G�ͼ}��p�zf��2 A�}6�S5a�Q�uE��9y���b���'%����9��e�b� �s�>�0��`�0:t���C�=�* ;�&�D�d것����I\�*壜�d� � ����I?�n��=�6�xR��$#*;��9\O��O�+���[c3E��Ḳoy,��`#Q����t�%�E*���E��p����[�Gh����L�}c�h|;h�!�l�G�ܑ���b��t6�7i�h�$�X���]���]`�^�Ƞ<c�fY��}}[��e}��S����J����h&\n�m~8.��r�V汯o��Z�i���*� +{�:� +�W�%��� ��=%�X2)l�:8TW���P���~~.`|ء-h�.�V���r3�";K��`M��rت�KL��b��+z����[Q� +���,�٥,=�eyD;��Tu���8$�b����#+�*!W�|�b��W��p��_�D�<�/��\���B]��p�@j��5w� �a �'���]�38]o�/��i��,��v���f��2�N���4f%'���R!A/?g�$��:1�|+��"ݴ����xT\rwO�/���헅*��L^v��^�v�X����=���y DH�Gϐ�4�=�K���s �p�hM4d{!9����ao^sU��I���4�lj)ML����T�xX}�9K|�A3avB6$Ll�־ҥ�$��rRW�p�s����|as���L��p��|ќ�Έ�B}�:cV`�l���{�<�]�n��à_��uG3���M�xN�Y�^��-ӂ~Kp�LP�]Y�����t23D�q�~���<o�K��;�=�2�5��h/��S�������É�CⲽW\���T��������Z-X4���LΆ<RX����lN���U?⭇d-��v�'#ʪ�4��p���AJa@��3)2��h�,���-�L��D�[u�-�mY0�����#���Z� �z��3�h�v�|u\�#c�Cq�ZS�ޢҵ�>`O��2:�����|]��c�.�-���dz��V�ZnȄ�0��e��/7�Δ�Ձ^ Br.��3,�k�s�S�6Ē���t��LbmP�7Uu=+�a�ݼMz�9 �6?���z�� Gx[]��a��(/Q��!HG���P[�V���m�\�/����*?����/r 0��r���@<�YGF��-��:���<�"qdf."�ʿ�9����� �M�>�:h'�������G�(7���c)�MY�}�Ln�P�Dt�o�rK�$I����9�K���7�&.����?�7ꡚdÎ�k�{H +�rm^q�2�ںF:7R�U�}�� v���F��u��=��3M6 �p��S�/�D��M�~Q��hOa�W�Q� �t&�v��<-ı���ծ�eԽ?s��S�,�W&�ϧ'�!���햷�f��m���)룗��;�S�C��gʫ�Q��g��3�ͧ��rpD��"�^P��dS%�P�d�"6 A��}���d:��i�b+,B�Z�g�f:8��7f�[s��|O��6��ؗ�^�*�/�%������+��)W$F�R8V,���<����&� +Y�(C0������� #/H!�� �~�_���F�5j��gU^g�3ԧ�x)����Ϫڑ�!c�U��˟�y�n���c[�ʓC�g��ҌyA�#�[ +}���"�rw� u��@X0=p�JK��U�!����� +����I�0[�=�,׃�W(��0��I�Hp��/����P�������E3�#��i�?]���E{3�����%�3�l�.ty*Ŋ���C뽀�ý�A�����|�-W�����nI���"ȯ�V�.���1�qz�l���7�����Gf(B=o�[v�0�'Y_ +����r=��$�ż/)�D��cX�+ +gt��{a8![4���M�B�W��'xJ�%/3�(�T]sw������v�b��<��2>)�q��^�A�Zup\P�l��w�����%� 0�J���m�$��lp�ץA���v��[�{3n�T7.3��(�4M��d~1J�)� ���o��H��휬����U���"�HrU|���P���(�q<�M$N��Ȳ��{"^{p�ɳ�<��J�����0\-/a&�"�k�/� +�DA_!�5� +���q8����#p��}����:j��8W ��7du��\��F�5�r�7;8�V!5G���!��>�B84�9��l�.���L���"���E�و�#r���27�%���)ciXu��M4E����l�n��U����M�y3r�n`6�(EJD� A� �*a.���W��j�Y�����:@%%<T��v�N��F&��=�ĶI"qX��.�����A�X����n��:x�Z_�Q�>D٪�: >�H̹�]�M��f����g�o��K���^�$��Xo��C�0s��OL.x�ȩ�L舔Ƣ&�1�|8T�X����[�"A��!1��騵���q�!I�4�ֽ�~k�&�4/�X�xxG�p/���z�)�wN�3b� 8������59����֏4�}+�\���2���'o�m�L'숇��UUa4���4x�#��z1���N65LJa�N��v��O���$pg�:�G>��N�3JU�W���l�D��w@m68N�:�8�M�&��-�b���BǻMqs�Ƃ��dwʾ� �a��Hq�}�x���$�٥�wc���0>z�i?(�v끯��ܨ?�����s^!䧼��#��R��z�-$i��;��41o]�I��~ɔ�/ta����m�k?�@ZP��AM�(�c� .>I/䭜�YP�����>�Fy|��me#�?TxW�nȊ�f�hC�,����DcW�p8������ ��,��y����n�LX��Xm��ꓘ�����E�5��U�H���g!0�o@�;�8�n�/��t6,���Tn�訉�u�Xk ��O>��B���6���G��ä}�`�4Y��4�T�:� M_7 X�8�����h�;��G�Xf�r����#������s�}wA�}� g}�r̛�X~�r ���$��ɨ��W"��{8�2��ޖ@�t!�C�T��! �x�d��G��4%)���q���Ux�%�<�,�� �Ö�ha#�N6��%Q\@����;�:2*��Pʯ�3���AR���h�n�'�e�P9�1����_�=wM��贋�^ZJ��R�"� ��hૠ��0��X���|[e$�O0����Bu�Qu�Q��&}ņu@�5�)������b�c��o5+!<E/�O�/�B��&ga��<0�G�����{l܈[�~�0q\�Դ����03Oa�(`eA��x`�p M%m�O��[Y�|��x���Q��#O�.����3�Nf����� _�+��mv��@X���N2��J ��\��:h��� �1r�V:�M����O�c@�$�w"�����C]�����d��^��O�˅>2u���hs8�H�xޒE/��x��7xʥRB�V���KMMZ�C \y�l������)���)r��K�K�\���'�H:�N0j�Q���]wW/m6�����F~�� +ӣ鉌bZ'd��6�∋#.>I��o��z�\�"C_�.�t�m +��^5�.��p��;��=!s���5�I҅�ť��9vq��d�v(���Pl�c�;.wr�ffe�lsh�ׅ������gVFM��c'o�|�ho��~�� GF:�}'ɶ`�c��h�еq����Q ����k� +IX�^�c�}��脨��}����/��t�2N�Ԉn^�sAy��!��l�#�lRt��C s���HZ�<A�:x�n|�P�� +�C��?�U!���:X��OvO�9X&��Zdݕ�}qħLh� �*9]<���#�~g�K"�;ᚸ:�8Q��V�%���Θ$&;nw� +�^�`Ro��������Nr'���M�S�7���P�D�-�F잠6i��wf<0-�h/h��9~��a�S\{؈��e�B��q�AM��V�w\���/�R����O_�����RH����5;2M��s���=El��A������� bt�eQ�3��#w�-j��Bu�A�Ƹ��D�_=��^��������q�R�����,"��E$sW�Ů��L�O�1�+g���ײy8�CrT"��e� B��`7V�1�_X^��e�K�:3����SV*�N\G�'�6�ң��l���0�.�j��6�[����W�>(�N/)�C�T��đ ��0>�}5��AQG��q�Hcgɏ��;���5x܅���T9�(R�4����iy*?6���|8���A&:�o���r�J7�r,S��*���9�.F�#؇�|�0���i\bh���)w�Pv�7�S�AG� 2������,��2�.�CE}�A�:kl�B���6�<�]��I��3��Zh%�9��w�5 +�QW{)��;�lp�{�Ŷ��� T X�bY,��l�,ZEұ�Ċ�9C T/xq�⛑�76���s�|(LǍ�C�X�)c.0e�PPC+^y�:h0Ch��.o�4*�Zbd�7�*���*�O`i��nNXNx���(� +E��%oÑ���P@���ꩩ�8m�Z�n�3�P���=iD��S}(��D@6�dP�}��{�U\e)'}j.�Zsq�L9"���f� �X��e�xY���0�:)r�G��O-,6*��l�i�2��������*��5�`s�U�x���f �8v(�2�`��}��UV�Z�~��lv�CZJ�lx+���&��/�a[���4 +3n�J ����R�\ +ad��H<j�@��o:��6�*f��R�ɪ!N�1P�� ٴ「�H��`�ҷ�b���LT��5\��crc�Jt��c�Q"��_�{��&�y�S��y��<��z�Y���C�Ջ>2%�Y��D�S�t�G��o�>eM��?���+mv\�_�g,#{���Imsd�e�J%�x:K���E���m�\���QV9F%����v����N���s������K�)�վi���9���ܯ���;���}Bn]i��\&y���#��������p�W��~�3Z~�V��i�<-��8΄tc�㒘m�&���-��:���D�q�V� ��W��U��B�&�?P�Ǿ���� �ќ�~*��>�4�;p=�\�ݨ�Q�N�����Wo_�������|ē��2��o6^���m4L>h��*KL1����g���.Y2�妺qE�0�E�� +��4���z����m\tZ��G���;� �Y��"i�C/�5t����� �Gs(�!���M������A<�ڨ�>hV�B��ރ�{���?� D6|���(�쥾J,?P�(���~��@�p�FJq���WΝȔ��܈�Ye��q�[�t�ҧ�����J��.��L��_ۮ�^��'R�����z������ +���B�T���&�?�=��Ќ�ڵڳI� �2�:��j�d�Pۋ���{��p���_�f��O�Ǎ�Vj�Q��J���<��|�s!/V����[�S�0 y�)���@�=Ν����R�~�j�p����@�����pFH�5�l�zdBܵ�Sﰣ�^��'%0������y^���3;�s�W�j������0��W����E_?����� +\I���q�-o�ꓻ95�uoWV3�cR{�˥-4�ܹf��}�9�O�p"�"}�'��"����'h�W��Q_���Rg�4������p��G�o +��ۖZd�p�Y�MU������̤���x@��AMԫn��ި�Z�����v b�������ت��Bĥ��;��l�c�(���v/4�Xa��;��`����.e0��|lp=�Q,�<|>��*:g�^|/�f�mY�������#����}�B_������ER��~S�Z��k벫7(��X�DIy���z�$��3��*R���.�dfdd�a��z���I��S7�j M+�6���y��*�R% +\�V*F�Rz��Yv +�Q/ʉ[����[�/V�Ani�#������7��]T�k�qY)��}�"*��f=/.�UIÅ@�Er���&3t�vJ�P�*����?��\�k��q�h�^/���k@�,<� ��\�nc�߈��Ǜ�'fD�Ap����5�q�^� #��+v�~'Y,V�b��DI� v�4�'���5)���$�Y�T��{ٱ�8Z1�[����#��%�G-��z����-��,��Y�����S�NJ�@�EKߥ%���o�W����K䤯����h6�f�E�y[[����������s?ΰ�������ͅ�a0տ?�,�T^,*�lܝ�bF/��\d36Q0>�r<�`����`N.x�dž��@叅�I�]���B(�Y�9ɫd�˜d6Qj��d+5"5ɵ:], *2��Y߸�6��PT��K��Z�`�� +��72����K�A�¸����E�b ��%s�;��Q!��)��5`[Q|QL.�-�e���+7�'�DI��Ƭ�3ʉ0����*=�QX��;2t��)u�PKӌ��J(kM�V~>�Io��\����J^��eE縠��L{��{`�� 580�蝄���=����$W���b�V����[��ت��xm�~��Ec�@叅c�� +c�!+���a�C�v� [qي�oY\��xc8��˳�<k�(,1 �l9�Q�Hjc���O�FA%4U�����\E7�^.�R=g�7�p�H�� �_�U�!N>�V����Ui��������~�ٗ���o��8�|RN��aT�g~@EO3;�~e +�]���e"^)>ևe�O�z��]����eR�T�����y���;�Z.#MU�f1�.��X`ʤ�D�%�+���`k��6Oi���D����D�AP �?fu-��+[�":t�JJ"�u{y���d� �A�&dE�I_/{k�haP��ŝ��M�T�G��л(�a��c��~���E}���B��b��ܾ��]Ld�%Y�~ݖ.�vJ�zBJ_�p�9W�?��0c���P�WJ� +��7���N%`��=<G��as�T�"_�*z˄ߤV���� �7m �q�Ykɜ�B�uP:�R�4�L|P�i,c�R�Xz�BZN���N�h��?��֯�� .~K hZ�I�����-��Ֆ�A���Cwf-ɣbq���m �I��*:-#�����������(w�L�'q0�Y��%M]�=]�@;%F����ӎT{��s+��(�� �|�D�� ��ZyX:[��ϣ�7���}5��y���J}´d��� �k��ܗ*8"O�]sN�G��,�Ҫ�Ǣ.Gq&yK���)��ɆA����k11��z���^� unn��3����e#�E��0տfe����v\����Jsظ�k���Ӓ�w��{���F,[�J[(�%�c�/ͫ�-�;,�a�?� ++$ex)/"q�;Z�aN��#��A�ϕGB�u�F#��^x@��5B� +��=��=����a�rKb�}����aB��[�˛��=���rZ�h�R ̔GYw�c!D��4#��^�"���W3d� +z�R�S�� 4y3Jk����7m��� +yC�VsX��������Q�1�$��h�_�i�H�0p夘 �~���`�3�l�w/��>����$��^[�~ɂ* +�RP���s��Oqԟ\�:b����%�)�t���(�>�CTxBI�jY�MnvM+��� +���|�������A�l������'����kk���^H�o���'����` �k4&��oڍ�D�e��M�b2[���5��](!��#�L����gm��[ʭ��"2�{+�Ij�9�W���l�Ό�_�7�r�K.G|e�����O�8)w +�I��ɾ�SϾr����g�fA����f)�eAJ֥yn�ʰ%Q�=wn<U���h\�f�q}'���%�b���=�#,�\=5�9�:|��� >O�d,�~=��T�:Sg��yEBX��㬠�Q��P�8ŕ�"�F�I��.gS���ʫ�^sU��I�G4I��#U6VMT���-�.��r�f۠2��v�تڽ�e�h� �W'�$C�J���>[w�q6�*M� o-R +OBZ�㜐��"W��E��7{�Y�ի7I�|ʎ���_2���e5��ҏ�� �Z7մ��m�����-gE���Uu�Ӛ�(,X�m/�U� +H/"�� +����D� <�M�Z]���!��\���s�̬�������#:���/ܭ�UY�@d��q�l~�.� ����:&J�������pf�������|��#V��d���) �Xw�;`�!���]|���Vg�ٗ�tA�99>���G�wu��J���w�.�������%q y�Yty�9��s˛Q��0������>�s���T������W�# +c8������)�p����,w��LO +�"�>ƧL3#�kD�!겇P�e�&IZ��2w*x�H��la"�>�Rb����/Y���jaiE䄥����7l$�gG���1�������a���p��gR�qs="��D�ҡ���NT\�"��Iw���-(?�� +]�!�%�I���w9�^�rg�ER� O�=+ͬ���4��Ղ�_(�����w���%�W�l�4��.�f��� �z����9���1�s!F,��9�O���\[���g7�9V�L9n� �LWN �GЖ��e�פ0�j4KU�Z�YVk�y� r]�v����h�TL�z��no�TpL_Cz����[�� �WDGS�D�2?ʼ���X��T�7��϶�rޱX�2� +�n�n!���r��w.�k��g���Q�l��N-e�o��c��X���K�ZrֈR�$m�g���wh`@|�s��p��)9��Yv��=�-D�<�6n~����&�s�=H���,k��jCsl�Z�������y���8*TLM�Z8�9��b�8�?��!7ʙnS�Bv"LZ����t�Ó����۠7�����t��j���p�='?"��͞� GC�$/����s`]��:�]�����~���u�r����y���=���zd3!�}�#�bdĹX�U�@|��ȶ+DfT�1�c +-�/�_8� ��c�� c0�&��.�HF�V8��O.��LtQ�V��H��L��O����p8���&S��p����QN:�`��Kםw�ZW�?H�v~xq�A; +����G:�#hdQ���O��,�@�눥���/�[��^^v|w�>���������̬��3����(��$�,�V~���SA��P�a9Ƹ ��@��z�L�����i����C�aQ��������u��j�g�$�~�g��=$[Dd:�0�#�S����_�(��HD�O8����kh���Y#�� ��8Ŀ�-O�����M�'HX��C@a�L�������bp��aH~X�o,�È��a�:�'�z���Kw�P3�[�8�����8"�#�c�,9��ܵ�";g���?�dQ�"ſ�g,W�6$0���Zx���N{9�K� ܄�Q��y�K�'Q�����������-�G7�0bm���:�y@��I,�n�A�sn� G�>��aD��n�L\�xHv.�^.]�k�Si���T��{��'T�<����d�>���Qq�v�+ӭ�E�f�|��*�k�'�� 33s���/,��QTB'�1��..�'1����F#� G("^�Y����5��(G�~Օ��HQ��D�CQEƒ�X������}�(nj�������H53!�)F�P �p]�(Ap&Q��M���U����]/�PI#kѶ!� +��$�["I3�M#n��`5 ���S��0"��(fh�m�S�Z�m�0�r{!Q��_��s-�_���qdj�1�C�Ӏy~���q�Nge�-��9���_?���� +�O�iСobe�m�k��/�w^�g�-n�2���6��td�z��|,$3ˈ�� z���,'�B85¦i\���A.-߿W�f���+�h_�������^qz�U�A�kZ�{qZ���e�(iӣ�N8`B7d �Dt=�@.M���^ �,���c��$��oĨ�E����E~B�(HAB�3���������*,��% +H�P�4f��sHgf��SU[�hYhٚ�����X�Vf�rco��Y +��"c��'�I�C�xL@��¶y���b�7� +���P9� ��x!"v;����x���'��1?���`AlA,�J�BE��b�_�x�r���J�>%�D$3I)���2N4R�@��R!�0s�E<��y�+�ѦI��-�3���q>~�Lg�uF�8Kh�D{(����QA���)�0�|��yv�YZ�d?�5������kc���?�-�K��@U2G2����[NI��;�X@: �ԇ�����Ջ/�ގBz�����t���߹]�k��,�����w�ۀ�Rk4�������tb�����k���x��aO1����>�F����9.N��D�AA�cBy�%�a���WȺ1r{4S#�t� 8iw�H8���Z����A�EW���rL���qqK>YH'���F!K��A�\�4�u5I�{���[S�w~9\W�r�1im'��f(���pK��@���c��"$!�������LɎ ;%A�3:f�Y�l�D��j.'�"�Y��tCB c-F8'�������*-;AkC��_*��������9��:�D�~���˨5FG#]�7��\�g) GX0'��f���/��[.WL?+�%&����OƋ`�ZVy��~�T��P���D��e�=-�{+;6Q_!�-��{�i��o��R2F�J��X����)d��P5W6#�T�a u����'6��ЊhT�ҿ��nv1-�����&h�:���1Z��p����1e����Od���l��P�����Rn�6盄o3��o*O�Z��2�����'�z����y����+��=A?�X�f��=�[���ީ̩wt7��\� +mƇB�7��_��ݣ`w ����ȿ����~<�IK���521���T�r�/H�9��`�R���s�g,��,�(���6���q�O% ġ���w?�B��.�J�j�x��R��D��?��M����O��O�ɞ<�D�}�s���Uǿ��Ol�*,EAx���-�K� ~@܂ۚR��l�v�t������MS*/��B�#� +����m�\:�\� ����5�U���KpuY?H�gi'�k'�+����.�����wdeK��)\x.�)�8"�b�C�%�U�SJ�D��������\B9��z�f+K���^ ��5[}��N��%���u� F�Ղ9�s�Ezo �MwG~��H�5q~�r��"XBj�M�F��Q:�(]&��`�t|狆t����|��7䀔���c�C��W��|��JMnyTŐ�b��`�+(x���P�ӚNrk>�@�F:��-�ݭ��1���.���#q25�d1~�?�C,$3�� ��c�t��0OE����cHs�R�Z��{���~�"����G�wvG�VG�����H�R���A�HK<� "��P�{�!�Gc��� ��a�C�,���j�-��[;$�֠���V�>?�u(����{�6yN�����YX��#���(_w�DL,ć/�rM�l��QykW36_��m��Թ�������@9%�ZT�?ǩ2i1�1y��Ն�W�����OcJp������V{#�e[��'?_ +)��}!/�A����r��h��`���u� � �GF'��l}�s*#�*|���9����P腴�">]}:��� ?�bAp�~�q%�-�AZ��q\)zA�~M˪P����5��|��:��1�D�� H�&�Hx"i��!8pיQmMծ�x%����kJ�.��s�ZG_�:s��A����1Sk�-͠��$����p��}>���=����K{�r��#l��f6���Pgl>�i�y/ �M|�龄�b2J��b:���Ƥ���KjR +�t݀=K"��F���s��-\�ϙ]��M�� +�8��༙2W}@��,�@�K�[�L��ܙY��@+` R�`�� +pB�CR>�T�q�H�(����3�!���A˃�#�!�xS�K<hA�$*tѤHB6�vɴ:U��0H�}����"��X�ȦhQ����ȅ�by��=�8����>�S��N�;�E��A��\y�a=ge$m�5`M�%'5D�3zI�tb_�N)����m�La��S���:0Nk��1��X����4Ԅ�>���{ȸ{Rd%�1Ƙ�����BsX���)V�S�l`���*\�U85�ID�8�E���ܨ�����d��<��2A`m���!�7A����qo\��ȴxR�XM�����jZ*+��@�h��$n��B]Z���Xx�Zm��8~c|G +s���6�dW,/��}�}o�b���<T�����g.�.��K`:�&]e,�Wx����C ���3!�W�6n�ʨ�8��U/���7����qs�l�A�twx�7�����,�A��$�2���%@Ҭ5�p�=�9(�$X���e!\�hwn����3��,A p�X^�5w��#L��Y\ɠbG����Խ���(8�:6!��@#��;�Iu��0�w������%��,������ Gȡ��ԍ�)3���o��N�aǡ9�٥`�I��q,o����8W�h �.��Yy�t�#Lܩ�Y7 _U�YG�`�C�w����R�� ��WĘ��\��6���"]�A3ύ4���Ȋݒ��Zak�YkHɝ�f)Eb"�L���sb���wb�tl��.���UH�O�*�~v��?�fbs1��pP�q̮�_Qqԯ��D;X�ߤ�OPV-"71�Y�h>)�&<!��#T�Tр�|d�WκD��T �>���Dq��Q�%�:l>C�1����F�j���8(�P��j�����0�i�fBh��~���h"�S$���G��������#�FBD"i��f�<߮�j���>�}0p��L�e&����$���3��%�t�v؞��!]��ٵ���!|B;R����h�*%YM-5���#�M?ȇ ��c�'Ql��z�RZ�0)v C�)r���N�����+xQQx;�=�n���?1����;9�;&��h3�$MQai���8������Nx����"ާF? �w�z����r�˨�[{��� !�s�B�q� ���DHC�#h�t/��/�~� 5���}X�3�Z�vŅ�&Go� ��dny����q�@�Xڔ ����C�J��w��6t���M �P�M�Dp�;pk�.}�8�ʯ�<�MCFd/)��������D&Xv�V�/<ݮ�B����&&��IE�:�0Z���^MI85�!���_���df�o,mR- +^���5�a���P�i����d��cʀk������*��Յ���t��wC@�7U��¨B��6�à��Gd� +��p����'�XU@�=|�9�mYB�Ld_��MFo}�g��ը�0��� ��۽]��.��av1�.i�v������v'wc�6V�S@��ot����(���]3��e�UW�L��pfOD���_~3���7��rhZ$p��ga(0��X�L���ppwo���\ �� 8�^�*�7�i�8gKK�7������p�d�w�v�,���v����v��ymg˶�e���v�́���e�ٲ�^��-wpv�Ζmg�2�fmg�zl¶�e�ْ}�v��ﵝ-wß�v�T�ү�]eU�}��h�a8L�K�=^g3�=���]1��mݭ.��c�����l{f�=3EPD@I��ڞ��3e�3�홹_\&0w�3����m��攐j{f�=3۞��<i{f�=3r@�3�$�p�=3E�����̝����l{f��g� ++��gf��J�3��)�^�=3۞�5���gf ߱홹�]���L�Զg�^��۞�m��}G�۞�Hڞ��(K����LFY�3��l{f�<6l{fJuk{f��m�̶gfs*��=3۞� 8�m{f�P۞�;����3s��ѝ���c+�֜���Wo��G�q�����l�`�5����Qm=5��m�Ѷ�h�u��:��:�v�*�ш�c�u��:*�����N���:Z/:ۮ�m�Ѷ�h��:�v}t��vm�6�ۮ��ÐQ�u��:��vm��*Fk���]Gۮ�ev��:�v�h�ۮ�m�ѯ���@�o��[��Ĝ��qd�G#�7Q8�GP��h�����r��1��=�v��yw���i�O)B]�`�SA$G���D�jٽR�N�ƛ�_��1���������K�뾼g��"y�f�U��7zƁW�2M���+���o���<�哾�u_�^�H�k��^�G�^��� |���ڧ_������?�m�?�������߿���k�w�UN����������?�� �����������_���z����va���Ow��?�G�}~�ԟ}�����S����{yExu덗���<}�������n�4����w������ɫ�EW=ԏLc����Vm��}�5��;���O ����~��m��*����T��^ݾ������������ի��k}�w�K��y��W�da�����ɝ�ˇO�7/z��m�����~�k�}�x���zv}w���/�A��������_�7�g�*^�>�+;k}a��6~���ςQ����V�O�����)x�L�+@�k �g����d�������������e�bY߿�U�a�,�ޣ�����������ų7�/.�F�Q9*lT�����!W �d������Es^���/'���ӳ�7V�V��t��_��og5�}�9���q?�:�C,��=}?�|��7<`��?�w�{'�W��_�u����~�����r_i�d-��ּ������r���˹�o��_O��z���Vt�c�H��n� GiG����� g=��һ4�����9|�ǟ�n�Dm�_E���D���/��������n�W�����ZX������.X�H�W����߷c���{>���>����K�rSk�\��/ +k]����������~�������j�e���bj�Să�������Xw�t1=��~3����ޗ�w�?賂�����o,��%,��N?�_�����ޗ����[��� ��K(��AX�٭����l>���/s۵�~n{�zUS��#�����Ep�����f��_������ ��K���xX ��w�l�?��ӿ������Ǝ@�?>�`e��c�?�s����Y�����g� ��K�>���( O� ��Е�X�lay˟9��v��z�\��?~z��,��U� �M3�dn_Z�e ,�<u�U�G�pC���.�iT/��9�������{yag��q�A�Ň��]oe-Vߋ� �Q�� +��,Ϟ9ppLi�?�Aԓ�Cr�W�%�(/�8�$�7+v��kf +<'���i�ε}�d��M��h�9��郼Ǟ�@\��_�X�5l�L�Q��r��XhE��F��%H7"�"�<�âЕ�mT��U�������n��+fTX���?~��ٿ']��0���y<��֚zb�N�<�7U.N]Ͼ8<g}u�Yk��b\���~ky���^�������8dG�����~�`yW[�t!V�FO�i�<���r�p�� �8�LY2��0g�j$��$I�6�^�������{���}:�i`7Μ珐F�r������dz�ם��d������l�}�#�"9m�2��!_&�"�i����> �<��`\o=Ǫ���h��v�`�6,'/3��A3�s���f�`Nx��YE3��OH�v�V��>�a�v��e���@W���u=��~E?�w,h��Q��>6N̈́�:�O@��I�T +�x!��}%������^��[R��"�d2` ������@��z������X. ��㲜jdq)RPQ*]!��~��*�J"*�D7~j����F����C��E���h�v��^җ�]��.��]d{��n#�J�I����ںq�Z���v��${�"a�k��w���n�A�*ݡ������T�џ��5t�ٷQ�}��g�m�W���ݰ���po�.d',6�M�U�✄f*������c?ТϜ������E�[�|?A>��f��<�#*'G heʥ{%2�>�V�:�x���L0|���*1��W�m��oSb\�rQpb����[�M>а6��c��AU�A�'�R2i���-�H�d4��A��1R0M���HhڶW<#8έ�T����Epj���9���Ҁ�T�ݯ2A���z��5� ��%�W� X���Vu���(����z_*���&<~��~EJ�j5�1��P����=|�?Lܻ&�Q�9���*�� z����Z#"�O�nzw6d���i������-��%�$�92��N/��9H���w"p�"����s�Y�"#_h4R0_ݰT�D_���O��ɿI"��i���" �|A���#���2�^��6+�#C#=L����Y���\�0EB�)�������S��%p�Ʒ"���O�C�������~���M��b��U�^�h.-B��] +L���2�=��^���䋔��n��b��TM��}��w���Ɂ� +������a:����M�b�'<�@0����]���p�sb�ȳ�"S�S��?J�sl*(��>)����tYi���Rʚ�adj#}��s�*Ӿ 9OJL�G�0}�?J��+��B�����3Y��{��A�v��ۏ�~5?��q���qm}�& +��)�$}F��� +͘Sa9k46B%���RX�� +)����s��J +��ܥ�� �I!�;eߤ3�z������C���m���g@.+�����7�G��B>}geO���X�$�� ����t^ �w��J�@����HS +�a�MI~�I!���}���X'�8�#�����[��nKZ+N��X��Bڍ}�!��H=lA�'A�|��4zC��L���H5��o�����3�e�V�;|ǵ��r���{*}�O�����ƚ �V⋑�J��ȱ�) �F�8P����B��Y��b{���b�������z[O�����z��,WoD�~��:�>,�ؗ�git�Q�"QPD_(Ė��69����ik�"69�$]E���1%&��UQo�7�ޭ��8��J}����wY��� +�9!� �'}�Q!=�KУ;���(��X�밸s���Ni��Ƨ��i|�Q����s�P�����Q��ڠ�n]O��]��2��ȫ�CO!��o%f���s~�a_`��� +���y!���aF0��ŃI�3��`R���7ċ�G⸟�'�3Ε�6Ph���jϚ;nB$?)ɡ�d�TXDNMS��B4�\�0]��*�f�Q!1���r{e9jEM�B��Mʤ��nB \|V(,�t�'�3gy����Bg�S?��pKX��m��DZ��Ѭ�ӓ^�O�>�P��f�\�B<�F�����@��u�0��r�����;�EM��;v՝!��;r�:�{��$p'��#�C�x�3|%��v�wj�������BU���ˤ�2SА��ȃ��ZPZ�\��Ar|�K9+!�u�,��cXo��p�6dĥ��pgZ[HƧ��9�a���ڣ��>������ߊ���*p"N6��}��; LKz��_��r�qs�h���ؚ0�G��d�?���l7pDH�b��q<� 3>��?�"��x��M<�`��s��3�d���\� ��3�c |$r<���p��=M�d_"Iqo[�ф<�5���Dp�e)jΉN-Jw�_6���r����LN���[m��!r4{|-�=g=�hX;�X����Z.��1�ӱ�,�w-I[+ ���vL�a�S>\��% +�g�hýP4�NM�䙂����\2Eө��k�Q���&�GEV�Q�|�Wĕc��t�Q����C�u�2�#�܅�9m9�o(�_�4��< ˂ +��/���]��/)��+)(���n�������ߺ$c�D�k2Q�C��-�NQ[�:)ISDt "�e7����N&'Iq�����i�D��Ʀ��rV�� �����^�˹��U�&%�i=���A�j��X��?��;R��?���,�Nt4'H��(���Trd�� �r_rNc%���TI��B��"o�[�"���K�R�<z�ׂ6u2 ਗ਼�O�tB���C�9S�2��$Z��I���˓�/�sE���9 +�/�Z�`y����б���p�^S�� :�s�9����FZ�?O~��B���)�-�p����b2��BK2)٢"KR̊!˘�Y�"�4�4T,��8rg��IE�%����O��2f^���;�G��}�3�s��A� +9���բ+Ȕ�2�E�J��q�K�N���ڱ�TtC�#��Ew4��ܙBpdn���ds�wja[-D��X�� +��e�6����(i��62���RA���)���]߳_���� �� �T�j���2��g���r�����uO�2)2�FK��zws���z>����/�&����o"d�o�ŧ�o8s�ւ�`�)�@�kaI!��;`SX�Sw�"�Q}Ph|����{������w���)��0y��ww���Sh�:U�j*���Q�j/�ԣ��G�0��+5c%�EE��`��s����}�]q�ε�f#9��k|�y��Z����+�]6��Kk_�.��On@f��{�ќ놓B9�'qD�9�y�V-�{�F��`��L�.��1����E��0�.�U�<��nR�M�X�I��&����0��|͈ڻ��Bjfe��Q�����St>�|묟G�ϲc���+iI�R��wѨ�$}�ư��oԃa̯Y6L�|���r"��F%=�\������|�O@�U��cH�.�(I�����4*� +n��P)� �]`��� +M��"*�wUK�D$N�d��Aa�F��c�2�酶�SMW�X��_҂d"�nc���Js)�!�_C�UsV�Ϋ�CJOS2����%%��� +�+� 6�����Wr{Q��F���#����૯^�C,-��/T���������5�B ۜ�LD>���Ɖ $GmHoF�s����t�y�k����Mm�A�H!# 2�%v-�\Oc{>+p�h���йNȊ�猬��;���,�9YI����� r̡I�@�S.��?���A�0]�I �P�H��?�v����Ą����f�nV>��P�ʧ�PE�a�R��CO">h��_�2DL&ɏ��'��Ӫy�Ϩ@^(XbL�,�/�1�[^:6\�0��� +�>F�ƫ�!>?F��G%�TQ����G.+8S�nB�3�B?������"5֡JHYI�j'� U���-�B/�l<;�zk��)�-,reyS�Rz +������q���M����;�!֟�K���lJ�囁ͻaQ����N^���ҁa�zC47����������������t79Pr>*� p;� ��v�b�/�S6�'���Q|X�nE���5]m\� l�nZ�:��`,�n�M�f*�ȨQ�˧(^�HqePz�ڲ3$���{��x�"S�f mE�b�����B�(cي�`�E��~SL���bR���)�v�1w���$]��'��a3<��l���I��~��u!�4Up�yn-��z� KIp��NZ4j�4:'&�Q<�w���2/F�����X:}��ؘ;�(,8SJ,z��TT� �y�+�A,�ie�}��i?��p��j//�CVpyI.��R�pZ�ɴ0���Ꚕ8�xM�O�tM�V<�5)�<פ0��"���VGa�V(LbŤbl�ݜ����F��7k�%D�%��LQ�1�n�2W^�U�N�O����@A����^�MW�*9��|�5�/#<(WN�%ݫ����͞L"�8wt�U�g{�Q�{�W��Y�����%]?Wx���I~��;��\��,:������!�ڙ�ߣ[�`��T�B���^��[>��\|:���u ���"2�G����4��P5�+ E�M9��NǮ2һI��{y�XZp�Da��p���t�^�GK�TS�Ҽ�جP/O5�9\���k�Hm���<�)�M3��k �����/E�R9�1�jYp�,R�ҙz����5��W.����9�A��k*�+ R/�'�&ʞ�G�����.L��K���%_�᪘22^�'����q�f����K���'+�`��H샱g�lԩ�F��Z*B#�AA���H#�mA��-`H�U�N�"ϓ-��ˮ.�s�b3���ôh�Xf������C���R�jW��L:*Z�z�}a�#o<�W��3n>��J_�ėS�r���*7�q����#c(� +Q��8|nײ������V�m�\=_m�VR~�L�0R*.$R�\����Q�U�/�L�Ǧ�pn�I�|���Z'��f�&��.O׀"��x����ewK�I�La�R�:A +B��p���gb�P4�_�U7W�^��f�vs�z)o���j�p�k�k�x�Jdn���{��I�={ڼ�PYE֖�N:Y���s� +5'���l����*J�Ec�Q�"�;�)�ŚyĜA� �P�( �U$i���GE��)����|�WG�I>��O�h�A�As% ���"� �郪�bY������7�s���*�Kg +�C�=��w���s6�Qܫ��$�%�B��ǟ��؈��~�q�г�����h��!ke�n�5���߮V�؟�k�m���v��.6^�lg�E:��v�?�� +q��4!>Ji$���䎘��hf< ��nL��3S:��Xrz�yrD(?C�Nի]}�٨f�������y�yG����3���]����.�;����k=_o�8vu�5�=�g-�"� ���B�f\ܬ��6>n]{���vo�� ��8y�w�)��B'%�� S����Hu��-�1�w��sv�cH[ߩz�iZ�&z�.��M�=v�{e��+{>ae'�1 C uI��R�D�����P`F�@tʂa��ɤ,��l�(7�w���M��˝�ܙY��$ϝ�BQC�M�lD[��ҵ����>7�ϗ�gL�%���������>��f.��;�= ;���8�䈅%Y��� ���|��L��YHG��Iw�=*��m�ʶGe苶=*�� ;���l{T���A=*�c�U��~>qN|y��[eۭ��Vɏ��n�I��n��i�n��5ʶ[eۭ��4j�U�O��n�m�ʶ[eۭ��VMhk�U*/I��*�n� +���*�i��[eۭ�����[eq0�KۭRu3��V��Ҷ[eۭ��V�Cm��� �n���o�U�N-�n�;.��VYrm�ʴ���[eۭ2eԶ[eۭ��V�v��o��*��B�n�m�ʶ[eۭ��V����[eڄm��>Eۭ2�z�n�9�l�Ur�Ͷ[��.i�U�i��3��*�n�m���m��₱�V�v�l�U��*�n��r�舉�k�n�_Q��d���V�v�T�5w�ʇ��d��?�N�`���d��id�-h;M��4Yh m�ɶ�d�^�i2�tm�II굝&��N�m�ɶ��R��4�v�l;M��&�N�m�ɶ�d�i2��W�i��A�3�"��&�N�m�ɶ�d�i2�6k;MV�irx��w��st�$���j��a��5.��@�{i;���F��œKg~MF��}��L�Lb���������OHp�����_��B���� +)P���}���uAɶG~t����EH��Ĺt���9�{�-����,�QC܉�����'��t�|.>��mz�W�"�PO��#��<`��ns�����(z�qc/��!��� ɿ�\�S]< ����C$�.����2�;i��^(5?/HZ��<E{������o?s����0;��_P��BjC#����ɟ<��λ�zy!-\ 9��<g�I��5`��v�,�h������7ΜR���kII��I �4N�k銩��)��t0݂"����@�o�U�0�#bz]+�����|�1�'���� 1�/ļ$$�����B��_<���m$(�ƾ ���,�}��������g��أˎ���ձ-�#<.�5��Xw,������m>0��YՋ����D��d�8��p�|�D���ρs���ɟ���� W&�%� J#u9��$ކ�e�'�nb���bb)"��"��%e,�R-� B(�����ƨ���e��\{�����P�� +`l!�S7=�6}a�P�j�/C�Zˎ���x���[rǽ���`��l�s:bE̍��a���5���aia���xr�<f��J��{�X�eH7MgY����"�vn�`�Y�(�p�����/%T�VОS�=NȨ�����zi�1>��q�j�w�a�O_?n5YL�� 5�s��o��"ջtgֲ�z�^����N���6C?�尯4ZƏ�O��i�|�R�+��)m���WN�����(�(l��}��E'DI�%A_; ������h�u;�.=����ɴѨ��pRsO�P?���l/�?f�ϗ�l��{��^�`w֝�}`�B�W�����n ����u���~\�����f�����I�|��~�)PA�n����ey0���1�i����?auQ|�� �\�i�����7g/~�X�ygc{+"��?~z������/��b����؎�g�:-#%�VR(��)P�J�p��$��.RQ\sѓȽ��O ����Cd�#B_m+[�?�����-�(���tn����������2x��'����'��p�3s����E�!P�fq|xR0)�wdjZޤ` +%������U ��p��;W$Ϯ��'O�Μ +)��B�p�DA=w��.]�"ɖ�h��EN(U�J(S"E��^�&�&���bH� "I�� �4���B�rg��6ũ����{���4��u'�@n5]:��H��ƄW|)Tt��XHȌˁ��R Ŀz��9�j��%�XZ��A�b5crO�b)�N��s��ؑ/q�=`�0g��N�|�f��07�����E(�E݅��T������r�]���b0�z �(� ��ՖoJ43?���%)�}����!��M)����ݩ~��k8���d?��^\_���&>�FD#��*A~p��� Q�y�B���;V��0S�ZU���U*1�QP�s�-�aV�o����_� ���"��<�]���F�b�OZ/���J�Z���������A�&_���~�Y�q؇2�*�j���G��sUW�#v%(@��(d� Tb�P_���/�m +�+"ه5Jv�������@KBĪj�m5T�1����[QJ���H�EX,�Q�s��̤��1��ܿ��u~�"���t�����f�Du����cE���,��ݘy�^U����S4Al���������Ǒ5FX��Q���[�Vw� +�˻P5�V��g�c_.�;d��M����{w�YX7vge�����&R�&�H�7��ј�[�������/��%6ߔ�B3���8�)�A;��&X�&��i!���4ի����m D�oa}���yl<�������;��V1X��//K�u������.A��*%PBt��d"����R?�Xpn��R+���gcT��H1��c�pk��������Na���IG�]Eր��K,#0x��y=����0#�����а�)` V���7��ǣ�h�NGK;(�ā]3�VH�A$ӆr�X;d�2g��jx�?�}��H���_�g�O��o�;��FzD��E'��}��Γ0E՞8���!��ė���YI�w�v�H�K���kn!��b��`&&�z9�_��� R�32��Y�Yl`e����؞�,������ߝ�u���A��*B��^�K*@��Y��er����L���}��/uZB� t������e�G-��\c�|�c���KE~P@F�$�U��\\B��D�j� ����̟W'�������wB�<I2N�$���=w�(M���¼�&��)�P�V�>�iC�_W������PX��CnSg����7��0�#J�r�M�����`F��J�oW��az�n ��t��o��5W� *>y"B�����1�Vw'���2��U�V�=rYwL������tM4����Һ� �qf[�va�B����;�P9��h����a)�Pr�RV�y<Lj� };"o���y{y��1B��X��o��x���o:,�u� �cߺ�!l��*׃�q�Ԋ�i쭭e���z.�c��X�_,�eb]^ڳ�N��4��V +6T +��Ď�t� :!4T"�&��F�ɻ���[�b�\D�g�꺈�e��9�UAX�*=�\�q�]Q�U���&=�j�mW�=vE���R3���[x�Ww㭳J�U�#�]Q�����uE��ZOW�T���5�eۮ�2��+�h<�5uE�1�]���[J�XJ��5U\�o��&2��m���'���GZoT�����'�8�/�?�Vn����ҽ��c0|}� rс�@O��v��,n|ہ�u**3)s��� ��-t����;��>t�ẖ��,���I�������l�+�\�r3۹� 7b-g��� ���w� �-��LI��[׆Zs��rK�[ZZ_�VpU!���Q�ǒ�����`�_|1I�W��m� 4���.�pC�Н*&�d�����5�V6*$��ݚ�li���P����.h�Ƞ��!�IXͻ�� �Ϣ�� b��Bfg����ˮeT��ml� �w�nw��Pvo�,�!�X��#�#��j�!��]�9�~�l����;l�$���aaA��ںlclyn��A��Mk�����AJ�=����=`ئC>"����r2�@f�pō���/8���QB�8�Nw�����f.�6�����#��ch6���&Y�p��!�!���n] D�F�@0�q%�~)Ob�p�U�?�b'y�-甦px��!��ć�O�F�d;>{�� E�������� �\�T�*�pWF6���E�4H�UQ���xi�d���1a ;��;[��š�܉s���ҏ\����6��;�v��d��:ӥ;�ޱ�j�m�Sef�i�m;.��q�v�A+�>a����x*���8��vm�q��?X��%�?����8���:`;-'1�$S��B��=X��]��Ƙ�5���#�J#%���~�-�+�U7�/1��r���t�4D�=�p%Pի�L��֬��5+nC��^9떁��������=��lכο:�dJ�_���:�����s;/�Tǵ��xQR��/�[a��0���؏��d)B�њ�=���a�8�С�A��ݮ┢YxY�T�2���s�v��3��hw���φVLGN��O8'�� H8�`�&�3�O��F�ߔ�B�G������H�l7�1������p�{���f�P�/�����n/�g��_ATU��ў�F�L����p�o)bm��~z/���#�|=ȝV�|�����.�EO紒6U�`,%g���d6�Z^�ľC;E�����q�ȯz�L3P#;����S@I�������G���r;+w�]��I�v쥍Aމ �RI)ijF�X^�ppO���=/d h̦���#?Un�!�jO��ؒ〖��}d�ս)~",�����O{5E��~����w��M�0}��W����:��,����x0.��U�X+�����u��d�% +�� 2A`X��4�{�� ���jj����㗩[�n��Ɋ�F����<�.t��[z��YA���m^Q�@�gis8���p�l�M�c�3 �he�}��'56�<G�D�MWrIcR���j�0+�k!�Sڮ�Wx.�h�;��9��_jZ��)��<C���"CH��o�4��&ݽC�����m*^�����H���[�GwA�*�7��9���5�p��vO� �-�L�4��Iۄ�k����t��Z-l#M�M���k�>����e�9����c�rE�L{X��߿��rw�űx��)�yؽ�p�0 &m^�a}���r��+Ue�W�i#����=6�Y�T����P�QR?y�`���VjtL�9����ݳ����T4{5����(��3��|� #<Ҡ��?7���nr/� �}r�� �������5��#�{L��;Dw�|\n >!Kτ������b���������Oa[���B(��d�E[��p'�^�Nj ӣ]D�vNF1�z�@�Z�v&�N�`J:�0X��L �~��f]ú����x��z�Kmj���,Z�O�)Fs0��7�l,�bӤe �=پb�Z��@9�yh��>��/���b9[�M>���7����ng�q3���糧�����U��fB19u�3�3y���X�� �3���ξ�}N�tZx��[��I2�>=�������I���һqs�3�N�"ʒ�s����F$��9v��Aʘ�9E����2OY�߈�dYXutR4a�0�B��$2,��aA�9���Y�@�� i�p*i�A����ƙM01e$��t�q2���}��Ї��^�tG��Ct>�������^%_�#�I4���e.~�4���X�i���;��IUr������t��C�DM�t\�������+q���(Ҩ�����ǒ~d�E|(���nD�G��]�H��� +�$��<�|���v� ��jw��%N2���GH�|��<���?~��}8'�IS1�M�K%�H�?�˟�������t�,i�(Xs|p���/��Љ:��7�-�CE+�y�b��W ��J,�P=�*�E��_"_�c�'Bl�0�ʘ3���R�q���y7G4>+�j��|C �з'W���K���髚i��t��x �K�^RL ���Oz�|��,�z�1��xe������z8�� ��z0��6�8Vd�����`憟}DR����� ��C$=�t,GD�`���Խ}�8�FM�w�:��d�!�2�S�B�!<�m��_hԾ�[ +va���B�_��>��a�G!��t���{�.�6 �W�����"��hP���9����"2 +<����NH4��ޮ��f�*��&�Z%����"l#��SQ2#�-GQ����T �p�h�t��x�t��Z:v¬��Y��v� M��A�u��Iy_kl��=�c��j�$�w1!+xܠO�O���,�=���ԇԘ%� �O��M�e�)j� �T�αW� �볢6��S�|�~O�h�2(Q&;���9Q���ϣ �v�����NN��(qub� qxx�_�uwX(��;�ע�:Q����s2&(�1,1��z%).�(�*�?~Uj�,��*>V{[���%��&C��Jr�d���(�;���_-j��C���$�����M��I:W������� Y��Ñd��P�����F���FWiԪM�RZ8b�_������x�m�v����[�I����$F; S�;�I�Íw��>�\(]\d�;P��@�!Ԝ�x��>����� �=�\)f{��FA{"�q3������[���w�'�Lj�K�h�=.)�&�� +�^#�%I����~4�v߈X�5Yم���k~'�=��)+4��Ē�i����@��~eV#�mL̉P/�)�����X�H�yKG�u���{!��&{�:b�`�e��[�*{���z(K4bsr�K65���5K;d���lK��-�� ���g2��R�-'�3����3�����#i>>6�"g�kH���T�A �J�#%}0scЋ$i��l�rw_�I`l�A,��&��&�o�c^�cВ���1��>\{����f�7d�����0w���=Ym,�K~���ssɞ�O!ɥ�EY�����U�$��y�5m��9�0�^���LJ��:�5�|';Z�CtC���E���K�V��[N�WPyJ$XbU���诗��qC�`�Hh�9�:dn��C�c>��Y�A���7F�7/�[�#9�Y���w��N>~N����D{��N�8�p/ǿ�S����>�~$%�s��M�S�+���}�~N$�1U�DŽ}��.��C|/�r#�y�MqY�(��/��`m�h vGk�6} �=�4#�D�#{6c�km��q�;��x�_�����ZF�;3`X��\v�j_�'����<!��e�D�ah���^n�3l��C��si 9~�5tH2�F��3�ӕ�H��[� Hp�� �F�І��ٿC�>g�&x1�Eߓ�a$���.P�P���|�^�/�䗱�þ Wu1��9<�z���S������Pְ*oEWy+���,�g��'�6O����¥a�Ƣ9K4�z��}��N�����]��nM�����]t�M�D1$��)�k]�G��hܵᚣ�뽹����W�&0�YjH`2��W�4����&�3��F+A�HC��X�[Ƃ��ҽB��pJ|��[ʥҴh2�Z���C�; +ݙ�JB9��t�U�Z�f;E\���o" �|�4#7k-̬t��DY��,�Ss��#Q$7+�Q�����4��������/��%��S���P�^R8�jNK��IJK���2t_�� +A�l�vw������Do��\�`M8 5AX@t��*4�>���MpDU;qBq�[��Aa辆��]�9kN>�rH ���v��,̟9�����=T�k��{�?��#��>Ã$פ�G�����p�G�3*��Ď�jw�_��/���8�"�(T*����*��*�C�O��!��"i����� &��Y �9�Q�-�c�c'HFgr��/�*7^��N7�|��^���ܳ��g����sg���9�m�e~_�hF���68]7ug�/�����K�:x�d20����i���F�m���]�Pϸ\�f�~1����I:�Թ�����P|�1�&O�����G�>��V肕벽����4#א ��ӻ�_I���v�նG��iHy 5�eY�DKy� ܃�^��"'��7���u���-��5�fe��Hzy�f��`=)��j�2[��²���+��b��j&�ox��BR��(���LSS2MZ��k�K�Z���*5 �M�IE��D��$��� /�3�$]�������E�����mB��<�J����P���h.SX�雨��s�3��UFn�}�#<|]$�(�Qv�'�EZ���D�}4�%-È$�*���s<'z_%���6�JsyK3 i2�&��S�`�S� +�fD�3��B�p���>/�+�}�J�T)?~����.�SU��HL'�Y����)S|�w��햜w$��f�b +�?�m��]���zn`Pv#��R�C�0��L��R�(\�_g�K���� ��>�-l�������������+q��t�B�,}��L�.�2��H�1,����bVF2U8��zc +�k�r�����+k%VV���'�Py抆;�Q��?ԉ�8��vB �o��@�����G�Y�]�t����T ���C������P_�H�ӑzig�Kކ�J�����f��?���vN ���Gya^�\X���6Jx+:�+!iK�5��ˋ;&��W7�v@�>o�qLB�P{��hq��\�W~��ˬٿs�#�l�{c{�3���H�(��h{�=��FO(���(+�[=Cc�ދ#%�UEr����Lr�L3��joj�K�m>�#0�ab �zX"� +M��[m��UVi�TiJ����g������U[r�eqĸ����6��*����MIrÉ���vc [��AvO���="��Ϡ0�S�;��� ��0M��-�<��� +��B�nf���L�g!���_J!du�[Aǰ(�3"�c)�;�݉�̺ʴ�h+�#���B�u�7���`�㸩�\�X�������^�aC�RS�������]l,��B�g+�LPF���s��5�E��i;PG%�ۄhHC37B����m��3�HT}�p�s�ifpr]�o�N�����r�O���\*���!z�"y`b��?���6(��XGc�i�:"�VRk%UT��ʃ����L(^�n"�-zl�S�j �mXK�j�q�m����b����a�M�>�꡵���b����;��[{��w��w�����h��N9�{�`FF,j�E��"J��݂E��u���[����� ����x�C�H������A�E8~��e���m�,� m,jM�F�>�o��6X��;u���=D�H!t�m�<|��u:�#�����;��?����v�%?j�16{�f��̞A^@�8�����C~�����1���߮�s��~���u��/��?X�g���_t��aP�Y_�h��x ��{TG�&J�� +�C�.��n��^!y8���h:��{��5zڰ;�z]ðg�x4�,Sa�rB�������̟�̱C��8�viG�8ڱ��� �pV�sZԶ[X����/�^�z}������+���b����+��x�}�ҹ �ֽ����51ߘ�D�e��,�%��3�6) D�cUh'�5���=�O»ݟ���l��¶e���7��xz9��A��x�Y�����6���oK��_~^~���;�f�ٵ.{u{�}��>�x��5B�h؏gge� ��m˛-{���$�}���c�;�G��a#�M/�݁a�������X�_����ɫ�}|ѽ�|�yz�ܴ��?����|5X�|��[d��%��ƻ��8ݟ�����V�|+<�ǥnX��[��iv{ڥ�ΠߵFZ��Y�}�7Ҧ��ؽ�:}�[�����|��S�?~L�G����_�g����t��_����{�p�p3���s�XBA)���m��|b[>)���}؛��p��mS���쎌1RSc>4���K����1o���Ӯ?��ko����W�}���l��&��o���p=���?l#�1��yG���Aq�?u�����X�D�!<��7w�Kkе���;���K}�كA�A .�C���7y����j;x>���x�n������Z���O/��8�ǽ5��lD����ؑwWT�OR�bn��6���M�w�w���ѿf����eu��T���|���L�Ѿ���Kd���y������̞���//&/7ﵧ������?���ۘM���dA9��-��+��¶��8 +������e}�l�;���OHM_axk�v�� �o+(4C���Ы.,��^�B%�����%����5��&��a��vz��n�����@�wU#�s�p$�C nn��?u�KY#��Az-�:r�B�`g�[!�r�;�Fz�f�|���l�&Z=�Z +�.�k��85ȥ#��\R��ݱ�s�7�-��A׳a������*ò���#-��&���{��G?H��!)��ha���7�|��@[�?�<�5튁&���c<w��mH��� +c�xoX���b� +j�y��G ���{_��Y�����P��|�������;���~�q/�[>b����>NJ�4_+��\}�ə1T)��b'�+�zHAY��O�uemiS`���X��������SjYHu��Y�������b���2�~c�����u�X�$�HmF������d����]_��t(?6R *�w��d�Ol�u��i-�Ҫ�F��?�?9��L�M�SA6��o��E�$և���yF�L��,i'S���J�CZ!l'k�Z\F4S@靸<�$a��M�Q�b��؉�E�������� R�����1;�+ ����X��1#�>��#7��f�7h�ukw�&������<;-�/������dp��*�G +�P�?����2�; \� m[2��T��*$�za��~%��S}x��j��\@o�M�YWg��G|�����L�m��9/��$v���e���(��{9����� +���Yr�d��� �Z��%-�.��;y�L�8�`*$B6�v��;��N��yi�W���S�R�3��T�D���H�6�N�o�/c{Q�1�{�D����6�v~��±�Mޫ��䛑�͞Z�3���xuC��%�Jw�+0�!?�u�m�y���N���h�7�t����#3��~������k��|���8 �~�����F�-a�� �W,F��?�1��� +��J/��v��[�:�20��0�u�dI�[qx�v�6y��$� ��DEf�By�&��^���?�R��9 +©���D�M +fA�P��P�1O��X��S+��ΰݦ�4�>�V���q�l�n_3��H#�c�@|��������������=sV�nv�f �ﶫi��BH�J�F�z�@6�������ABf����K��@��2���y�.��l��uH�����6�w��5�Q����Ҷ֏�9����߉:��g�$�c~ȞK�C(�j1@|&��ԽK��؆��r�us9�����C39߈��z:[3u=�#��ҝ��wy�q�k2F�����W�����Ɍ�Cml��}��h�C=Ќ$"��ŮS�K�KAJ�ik�ov���q�Wv� ]>�)����,�^GI�( �H�b�]�H�OjQ� +�WHXns�ƾѴ���l�f�P�S�'�a�3Qh % +e��K��7��)B�r8������R���ҩ�~����a���8���k�O�)�����'� ��S9<�[;�!:~c������9h��3;��$a[^�3�t��\�o�xi�<݆��#�Ṛi/{%�`9 h6.b�f����_º�6%6�[כ��nJ�[Q�)�A��q�od]�e8��e(���j��R}�9k�����h�t���ݓ�~�v0^�T�m ���K���]��n��K�Y�.�`�_9�b;��ǟ-qm�-�8��hb�R����'Kgf�}< �em�l�y���Gp�X��x�t��x��7�O_�;{����f��ł�vo�hi��̞�ʺ�om�� bW�Y!�F�>g��6�z�./k�#�4pz��b��Lj���?���s�V@��E�}��P�y\]6��mk�\[h4勗Hg��dc�d���{?Vn��t�<�������4����Z�������y�,����@M*XA�s3�8Z��0N}���so}������v���Θ.��0���)SISJ��*�EI�E�u����������%Ş���?�s�&te8�zG�lځF.��}����?�uѐH��/���BCd�]�#���%�$y��*���TE�U))@�q�͟�+���� �CSb{nϏ��r�w4*�2��$�z�'�R[0�P g��;ʗ��?��C�Q�ձ�����<��h@ؑ㤟�AG%�1�^9�����VR�H�BOG5`Ò�� `�\��.as�\�3�!��w�$��gv�ε�P�ՈM]м���GtٮwuL�F�_Z_Rوy����� �TS�,��z|?po\�O%7V�Tֆa�$�t�)�䱮�hO�����~��>��Q!:��<�Q /��_�O��6�;���Ф��]���k��=!m��#�j�`�x�Si�0���8�fP��KN��K9N|& 4�(90��:��$ 2��u� ���o�n�g뮔8)���P�Q4�T����Y`!�ǰ���G� ����s������A�;��~`ϱ� G +�2c$�����BU��~:��H��G�.F>���?���0ّ��d5�͐�kwK��Q�h=R�0L��%��s{J�����;'�+�{*㤬�iJ�)@Vݞ��ߜ%�Lx�?�y{�D��tb�sb�Z�lQ�JL�V�$�`{���:��8R��(�mm�B����b���,g�w��`���+RR{h�w�s�v��8�ƩYE�p�����f�[%�\E63�_��Y�O��+��ڪfL_�gv�16|�C��c�3J�m����M�=��Z�WE�E�}_Ҿ`���t3����ԍRP�w�* EXt�0h���씩-���o�yn��+�?J�Mg�Q��x�h�OגIh��Q#9�zD�X��BЈ���)uF�sQ���� ���t�'��<r*Ƞ�YnC��@J�h젌�U�<�Sa�o�W*���V�h1�9$C�K���4 `�at+��������p��R�H3uQ�SΛ��� �� #�+k�p�v���WF�D��I"!�K��=<*��a��pF!�a��q�H��M��0��ñ��wSN_#��վj�>�CUX�)�je�-Z�l��+)u�=:v���p+A�7|[����K{�Y�£����#{L�:��V��#��a�t��Ա����9ވQ�1�Cr,������l�����ٷE?�QE��#|�R�G��U�80�0o�?�- �-����yz(g���G�,�t7|3a6�-B[�黈C�9\U�k��Z�B�� �Z2�y�������.�O\�s�j\�_t^-M���9065.�e>�~��B����-�XN����0Ͻ�|H`�l)��[��F_H���{��S�Ьo��.@sć�J�+Iw��]I�Rʻ�}u�� gF%4�#-�.��_��9��W< �����E�b@KGD�1B'eӚ�4KKI�S�ł{ +QÈ+��Ԯ�d<����K +^� ���k��䁺"�zr~�Mw�����f��_S]CB��W�mg#m��)����D0�Dpiy���:N uu(7�>u�ֱ8BpW��J����X���NR�J�H��"@�SI��k�Q�L��&�Y�\��5#Ozx��>i�������P �_Q-�Y�0��l���%��u�+B��7h���ę���¦$�*�ފD��i�{�9���P�㟭7=�FaE!��ƲֈZQ��R���9�����/�V�x����r�]J��H��T�]�Y��2�v�Z���F�e ��t�܅�>��7�5[�Փ*�������<bB�1�c��<5��Jx �^�9��H�1'��SB�0��N��7-��Q�+A�DA`�ߴ�>��FUV�I5z�B�����pjSJ�T�9���C@�K"�Ҝ����p��9!���q�.�㪣~N��=��&�(̔Y��0'����� �?��岻��HNN�{@�0t�B������eC�];�Ϯ3� �h`����@����Kw������e���x*2u\��3w��}h�zf�,�z���AӾuiwiq-d���mm�2� +�˭�nɸ�W������a��cxQ����q���R��B�j�A,�=�#k�^�;�����T�!@�I<���Ź�������i��]���А!ǀHz/.����c�츤bK-y&�s������Ph�{ Q�XW�,�;)����^`�b9(�+H�o������k�-�c�s�G�t6������Ӯ1�G��"I�S�γ�Bh)3e�Yf�@�Vo3g:)��,�^�x�8I�a�X�s�t�-#UbÈHm��/bÈ��H{"��U�Z-����(m��f��D � �� ϸ��ZS�����/Ag���֦���Rܰ +�.���h}���Gp����t��(�}�ַ����q��Ƴ}����7�ji����+<5���~O�/twͰC�o�e��V[ KF�3]���M�-ɲ�����{���ʌ�-#"##�0���s���U���dU1K�0KG�kx^6�[x�~�����[آ��S �LVTy���YL�2�0X�}|:���7�3���n%F�[���PH6�Q`�5>���$،�����6r�%Y�˥4�K鲢� ����FI���@Z��f�n�IoM��4��� ��3���,���|�;��(�R�]!�n����&Ֆڐ�n��8]::{Ncz�Mg���Yʣs���'b�� +Q�bLj]6��,�!v�� q�lvY��W�5���.#h] �sce��6�ce�KG���P�nJC�.�Jد �k^�!N�N��q�k�h��RẒt�n`5�j�FY�3�#Ď�8z���&t�;�^��\|R�T�4!�̑e2!ɰh���+h��!6��3S&I�i�&�w ]�e�B�s��ZH��6�g0Z���4�1�j�Gb������z�#�"��LJf*�����ɜ���K�����=3oVI/�=�t�����0o�G��.�NsD(|�������m���w6�����ӳo5��Þc�pΠ�DE�"���L��Ӽ�c~�K�rL���%^5������ͺ7ʹ��`]&�+�ۮ�(��9Ci���\M6)~��d���o�'��7SJn�kx��B��Y���3�T�)�w��O$,�CC�s���Sm:��s�,9�%P/V��y9��7лT��]A�E[��QX�J���t3:s����x��, �υ6b�6Y�Vs�PtI����L���uo#��d-��4=��y��ǘ}םEV��\IϿ7��۷�.�B�vPƤ�&��.W���1;Й���l+'p��Pr�]~�PQ�6M��0� 4��_�\Ƀ��J�� �KĶ�V�1�{�a�����X�jd9�2GQ7ɯ�(�*��1hh�����!�[��:Rp�1�]}����nB�`fU8;��ɦ�]z .7C��[��{�Cr�+_|ꚺ��j�u���� +]��z��ع�N�$�Ҏ +Ŏ]n\����1��2�R�3*���F + �E�@e�/f�m�4�|KV�¾����8SqZ�{axov��L��{�e��ѽ�tb.�U��֤'��]�V�j�a�j�����X�o��W����Ow�4�"Ϫr���,o��E�c��l�|�o"���,��Nk"BH�A_uH��ϲں�>�E�T0��"b#�F7��Ӫ� +��00EӎA���SA���c��n8�d�-���5cF��r�`X�Pl�@1�@M���c���"�M ]��D����\м��d`����Lb�0M�ot��d��!��L�id��AR�A2�P��*r�Ը�3A <�*�Utf�{L�d�^�2�35&SM?Gz��+L�I N��<z� �h7�3�W�{�%N��G.�KG��gl����Y��="����y������Ϊ�>������`<�^����Z�lJ��ef 3��T,��1p�`�� +=Y8�5]xG�*� X�mg�Uf���cw�� X.��(��@L�8�x�ب:�\�H�10�_�Q�|kgV̲������6L��]��:��vЬX�A똪o�/ա̷�f���e��W2�X��j���X��Øo=� +�P F<�;���oO�f|�m9���(�z�j�v�g_�BY�j�j����U��(UTF3�D5< +�Pj�T� +��)��uA�ȫ�\�4@ֻU��������ZW���X�S*�p���aQ�i�ZW%��*��}�#����L�˔T�es����k�f�Up�a�Z���k�n�~M'L���z=�jF�&�wmǨ +h�=�e���T�gU����K2Ee6�D�+�Y���c8�o�Xn�@pa�_h�j�}�F��!TJ;+��BZ�x?&���4���$���k�}L�����N)U2�/�0� �`iH%����]��":L��,$�[\�W��1�0��� S�C��\0r��X8}ɹR�.,>�Z�X�R�0~Z�d%�(.�=/-MS��et&EMv�Fv����'��5���YB��{�_,"��� �a�����?�i�c� ��q���>O��5�G������o/�f$��{0�$M9�{�ա&c!�����6&���qv����Z��̗�훿������b�3�7��~��"�#q+�L����(:j��j'�[�U؆�-�g���A��������O�30��U�W���v6����UF��}gб�`�tqo��p3uM�X�0@V��j�V ���"5�b�֛� ��!�N�v�B��&���E�d_ƀP����7�G��Lf�������D��a�B�%l���c�S�Π#F�ڃI���ׇ�SHS�x�n14��i?)��J2�/d��M���jFώ�;�A�4S#���$���}��g��0��X�9!��#��B��#�o��:pB�����������!P���u=�\���i��9M�GQS�Nҵ"�7��ͫ^r���Z;����p��s`Y+|n�.��x*Y�BI����I����ɐt��LO�^j�Qh�g<�����#iȿh���(=��Ώ�4&l]�7�7�m���%��lj��m*���}�J��-����O1�����ܨ u�>���-lq�<����� ?+�S�l���2�f��ظ�QbcDV"�h�����G�����$륱��4�a���(M�3C�RB���P�]�K�X/��ʸ� 1 �Dd��p���0@�_�ٕ�ln�� ���_�_�R��2��h�y��SĆF#��S��4�7!�H�Ǧ3/o hޔ�6@#H+<+V Ф�y��� ��4>�#�H��q�^���E�s�W�H<��ͦ�Zvg��-�������Fs�<]� �'x߆R|�טd�1u�+�"��DL�d�9+h�u�M���VI�qۆ�uXF��OEi0� O���%]��K�)#0<Q��Y�,k�4��&�̍���(���8JKG���� SB ��^@��D�d)A_ݝ"]{����~2�.��%�ehp[Fg��GP*�|�< �.H $ߣ�k��ܩ-B�H�GE�SQ�>AG�&������k�(s˄��>!s�RNH�����fT��K+#-��*�aa�VR�Rm�6�R��O�W%焽��ݴk����i�C���@.��"��2x&8�������ں�L"p�G�dI.��\O���wռ��G�m��/C�2�6C^.�����.��Әc��~���_F�l� +�Bkw�����.�(;7���#x ��Ή��_Fx1'�����g�����>��>��TY��?�,��y.�ꓡ*#{���A�2M#h��$�F� +?^�AOij!���.��I7!u�K�)uδ�C�4��r����*Lv\P���A�vS�a�ZU��( y}|*��:�E0EezN`��|��X{���(��"B��L�XM�����L�G�H�g$/����Ǖ����r����i�c��El�K���nu�`�� ��)s��DNZع�*�*@�2~`ȡθ!���xu�2T%���� xIe�!�w��2�,�E)��iF��|��x~�.*��\u�c� �T�y��.�nq�����P_.ȉ'��/��+�"�F�+gf��D�<P��Ix/�v ��bq�X5y�n��˵��#�%�x�ǟdɭ4��G'�5у���>��o?�NX��.���*'~���~� bK(� ��s�]2�Eй�r�&\��{��y�PؤO#�iP}$�<��{N���d?4^�A>���,ߣ���/����.?�+$_T���(�=3=�5aN�T>ƫ��'�#���o�7"/�*�`�ĝWra ҫR�T����#�| +�ؚ?��p^�������[���!��������/��$�0� 0m�h�-�8��&��URZ���!:�r�z��H�r-��s1�J��j��b���t�s�m�(t��ꃠ�HdⵑX!�\d�O�K����E�v�":�ش5�~�����g��(��d�&m�3aOp���̥C��"�;��w�y�e�$�]�=�:����yn��bO?��3y�=�:��g�w�����ܒ�u�M�ϸ�[:�Ŗ��h�Sz��{vD��������d����.�}�'�.�t�1���%�{�ʳ�S{~A��ȯ�t$3]�HX���k95�ƋI"~�B�0���j����h��zbK{���1�jߡ{V�Ѕ�`��{�2m�G,�)���'�,�0��f��+V�Ci���OZsq�˖y� +��D�������*��du���0�V�ZxR��J�4�!>_a��VfVx��i��lbZy-�d��,���ʤ�KI�x���sg\�@Tg���g�^�����0V��{ڪ�U��r��Ft����Q�NZ����ɛ�o�;�7�,qoW���B�_[����~��N�A�Mb ���ǽn�!.��&*;��rq�C\��E��y's�5�K����g��/���Q��9 +V�osV���A��I�I���z8��j���]4����)uRNZR��[m$���RC;$�#p����L�k�2?6���̹���E����^�����q��~;Q�s`F����5��Q�*N lz2�p[�hC@�CP<A�V���@�d�F����ڐE� W���K��%r�|�ي?���K>�?��6�o��nXL���졎�@��>���`�KQ���q����vuC5ٳYZF��D�Q5ө[Ӄ�v�X�d�TFZ�y6Oc�xĝx�qK<us\�,�t�� H�ޘ�o#=���) t�A��Ѯ难:k3vD�"v��ځNq���8��2-'�v��;�53��i���Y�ƫ2bU�uu�?���@��o��<���.�.��k!�mAwSv;-�e��l���ֽ^,��h/�|�A�Q�ÕYg��;кIHb��Ʉ�$�m�c"Y�vmL�D�ŴL��DcnB�F�m^��>���e�q����E f|����1}�t?_]�Lb�F��eV�ڀ��� E�9ik���ܤ��Q���3h�]�����H �P-X���^dj�,�r;B�ށ+���gE�!nl$���� +\�>�����b�mo+H�� +)�Z�u3HϙP�;�b 5�=ʳ9���i�r��+��TLh�@̆�60�{*�kζ���ۨ�2U:�:sS<�H��������ق�,�f�<��oA����&���@��xj�*)X�����wv���*}�RYi� �1�`�"���y Ƽ�C+�0��,�c�I�B��(</W{\w,����<=�f��M +l�k��)���x�H����\E�C�ZP�6�$�>�D�����Ē�%_� ��܈��6u UV�`��i �U8��j�&�Y� �$�g��jk)��'�2!�(a +N:/0�[%;3L��d+�\|���\�H.F�8:8�5��FV����������#�漴Oح�_�Ө��W���V�wE�m��}R� �5�g� a�k�R�$�-�:H���A#ORGK)��S�H�0�5�ZX��"�,�}9�,��r4@��1�䙴P�����#3���Yȥ3@Z�Ԏ�TjAg$�e3���x��$�P 2t��z/G}�K�2;�x��g�#o���N���������A�B�1�ʝ�\&�c�wU�cM��� f���O��� l��Z:= �|����Vh�� T{}��?wM�0���j��L�́��E⍚��0��ю�)U0��i8.�J.�mbj�;��!V1�GN�m�r)��*sSRt^fIU]�� �\:m1��� �7�8���>���Z�'v:rj�n�e|ٔ�0�����Q��0�����D!�ȅ�s@m4��shę�0�D�d�>(��%^�D^�L/��H���� +S�&k��W���1L�Ts6c�.9���ul�S�e������h� +�\��-x� ���ô��h�i�%�`�MX�0<�G��Y��f�l�>�S;h�瘪�ϭb�����HY:��sK����,bL�6:��y/�Z`�`�I?��{J?9����$�1Q��6 �-�m��;�� 2�ld�8�F��}�W#����j����X����dn��t� �t*�V0��a��!��g�bμU:U�v�r��qj�8,��gN��)�iYk7p�l��<�1����}�����Ik*��P�XK9 QM.Ԓ��hR���RYP�i��tA��y� Pb& +AP������S��+���L��v�|�ڕ�ī�%>"�<k3�FY:�G��#�{tp�$A���}�zn&���T�G���MHX +�t;a7~m4�`�y{��&"�{,�SߥlB<�+ $��u�'�C4�r�=æ"�T@}�r�*NK�zO�#�Q��Z���*=?�����^N�4���m��̋x���Jkt~nB�_���=R�����r�2�ğF�b,���R�!3|4��x�H39�.���y*�-2�tS1�A���p�L�7�8��a����i~u�h��܂�@S70��gu��*A�.�<K8'�J�0N!�|����1��&c�X���Zq@'S�ܰK'.�9�ws=�Ũ�\���r1��3�zJ����;lQ���P4O�g��Hͻ���xV%��Dm�T�n��ARX���16�1��!r�u + Ya�J�t6�Rf��?�U��ƃ��MCƬbӈ��r�^�C�<E�k�[�;�`@�?Us��$��gʬ�%ή��`��*a�~�4->w�x��/��k3��� Ť1^n�&ك�*)�o��ƸȤ���}���`�dO�7�R�+�(EA�� +1�x���tv���K��@�.���qJ`���M}洜�V�4~J�:I�j�`!S�C��v'�ݔ��j���k4_�|�C�y��I���T�鏁+7�q*�.�&a4�WEO�|z�J�l��v<��-�0�q�qZ�k@��6�?[�Jg��z��{=n��[���g.��\}���uGy���X�qe��g��/�x�P�Ifa����cMs<�IK$���W����kٝ����60�ui4����sl'��7Z&Gˌ���&1�_��F [�kr[�Dm���uĢ��a�l'N���Ұ�'ewFa�������n&�ݎ��ճ�F��7�A������z.��7�"����+7LA�$*�mI���S�I��$�>���X�Lnlm�}��c�>h :��t��8����a�ްx��& d�a�H1[7VM#u +��c >���\�c>i�|���Z����5��A�0u�ԅL ��>��� +f>��-�$L�S�$�}�(8��:�ܫ3D������l�ٰ^Xo*y�C�.�V������,Ej%3hx����� +�� 54?fdm6����'�u���m���:�H��D66��V<�����yn��l��+�/%Ã���[��.����h�g�h���kvd�|<;M�F�7\^elj�M_*gs�[������)�R�����۟�i�~3_��o����k�7���t�TC���WZ`zE`h� �L�:�k�?�N��~�E������o���?�WTf<�]�}u�;jg�~�TЯ��h^����ï�-�tN��'����N���n{^�=�g�����B�36�͑���<)�������w��;t� BF�] ��[w� �nyW��/Ш����W̍Nbu#���.@E1X�|��H+,-�!6择B��?��������rN��������Cp ���o� +������l�����g+=ǣ�S�z:&T���m5�mA��^�r��]�_m�ot ����_��?z��'����O���ܮ@��~x���b�O��o�QR$.�UU&���¨�S0{z�4?A���m� +`����pa>>�(�)�+n��G��ڰ�UER,<E��������P�1�?�dv�A���h�� +���B&&/�r\�f��0xt�pު�"&!� ���#�5����n�a������3!��j8�~GUm�c��u�5��>X̵�� +�� ��s�Ru���c�k�훏���N���O7�9�6l�Ͳ��������2���)Ȳ(���I���dц�Y +h��:����� ++,+�����!P��� ��|g���`E ���T�LJC��?��69���@�uK}}��s���~?�C�]��i�E}���� +������/�����;�4���;�ÂjB�W"|�({Wsrq��W�xwė���=�U����q��A�,��;���?z�A����L�6�3}2��av�5d����Ķ��9j+��-�1��� ��� K��xٳ��aߨx!�0.B#E�a`��n�ѱhT|���_��"i'��Ḳ�0�`�%��˚����i�A�Bq�7�<$�,���u�ĉ�A��'�2'�5G�Ȩ�I(O�%a�Diۆ~/�bh>y�##�ZIH�0%͒�H:Fk�.����9��H@�S�'�5?�,�t&�`?���� +� +��r�r$�m`0�U5�Hi̯H1D����>:Y������h����=�K��8���*x��8�a���!��Z�?�;��5��ru��>�P�c��B�^��bol�9�������~��GE� 0`�~R���OBԟ����7<~��?V{�-R��+"z� )h[�_�.:xA]�O�@P(=�<F�S���pT������`M0ZM���c�_���_-h�����J�����aLu�(�蟭�?3���s��٢�֎��X�QZ4�F�k���=��_áB�QJFӘBh~/��8����u�yy{�݂�z�� �� +��s��B�2l�tB��x�j� ��~��p2u��9����{0]�^3����]����Ԁ9w4F8�v§����e���?ٕ�ۂp�>��QO��Y�:��x~?��>���u2,)��H���m +����}h+��{� �� x7���i��Wc���yƐ��`P[]ߴ�AV��R1�[(\��?����iHum�0ݖ������<Z����o�.ZQx��*i��۰��� `�zʳ,���P +���� +�FHLw�C`�P��>3_�~��0�bXu�� P�m�bDPhI��55�N)��U�5b(�{σVO�7�G���h�:����'0x��l�` � +��O`���IW�_G�:��y���U��3��}�O��ɿ#�C��W��%��T�២�l�1{hY��p3em wv�-�8,��ᜉ��֍���u��˓K�=��� ��p���Z�y��g����P6����B2ݿ�N���V1�HR�j�o( �N`^�]�����h1�r���� �&O)�`~��L�����]�HS�/N��0�aY����k�k�1��D�N���.��p`~a�lt�v_a��������^ ���Wac���W��`�y���V�4�� ���xu��p��*��t��dhV���P��w+�=�6��;�����/�����Y���)��o�Lt�1�����b����wԫ أ!����o5� s���3M�)����ɍ��G�"�#v��]�)���;�N� +�V��І#|�| +���W��kV:���������#4d����`��� �6���1�뒖_� #Zf�+AD��h��D�.!�g�.�"��%n�d즻3�p{�P?� T�p? +��8��zC��F�\9�U6�l���ya���ˈ$��߫����W�&<�1��G� +��[h�.雀�q����^'���OO2��鎜�R�X];�� +���ea�_F.�ڐ��gN��Л4}�-^c��M�%~,�lj*�����rn#|\6q�&�VS�m4�&�D�H�m$$��!�<R_ֳ�6��ّ���6�;6`*hp��d<c��A�&]�)������*<��.�E��d)ZTR����{j�q�&���5� +��ꃰe�D������$�O�:��W-����+���q!CD�x�\}r�����^�Y� +���Ov����!d3����W��d�n�w_"t�m�ր��C����zkZQ J�M�� =i�B��D@�c"��Pmb����P�Q d��9�[�)��F�v՞o�욮 L�GO�$��A.^�Zr��n���������3���a�̓�g'��O�w�I�3Pb|( +x�%�<�v� �N�{��������P[�)�{`E蚎���@-8�\P��3 i��?�"Q;��٠"���)��?� �֤��PJ0MQ��?؆��0���h�NY)yc��,јd^P���������/#"`e.H�;%�'��'D?C��� �hk���3�1*��1�vA8tP�pMDDy�s�x85�@��>q�/��J�ocg��A$p����xm�0@a~������2]v�(��W1;.1�[��w����.n���'5CfuY�N0��\�"���� ��5f�����>R�n+�f+�R[زm��l^�"/�cz ��]� ɢ.1���&'�ň +�)���&x,Ȭ(�&k�&��,G[��ɒf����&7[ZM�\n�����y�J��ڢq(_�� ����n�|�x�aX���u������J������L�>��jS��Bl���7)4���\�ɫi�j�>��cޚW#�sͫQzn������������z��x�뗒��ۻ�,�w������my�s��/�Y[�G��ձ�ܾ����h��u�F�jR;Qoɮ��^N�C5�5MvM�]�d�dw�srl��~j�[o��Of�!�Ku��>�+_���Jk׃ +�0�؞6`i����=�H��;v:\�;�Zj��Ⴘ� +��d|4M������a�d|4M� �,$�Ӥz4�M�G��Ѥz4��.գ^c}�T���S�G��L��Q��3�z(� +'M���R=���@r�=�w��@�B�b�=��hW���r1x��Z?ؾp�㕒/ŧm�}�>�뽧��]{���=�&�#��c���-(`$7�u����x�� l +t�`�75��"MRH���I!�Nޘ��"�jnI!7>��*�'�Ug�쫯�G��Wn��+Ţ��+�0p���e�J]�\�m\o�ؑ��M)8�y�v}pÜ�&�z��۪���W����|�&��i�A�\�r+�v�T넴�fT{������J�$Ϳn�` +JcQuWᄡ���gϯ�}1��+0�̰��oEO'�}A�nEx��Q��|�����z��� �^��;�_�~��d����]��x�}s�{z�t{q�i�\(?���x֭;x=]��z���J�A��7�n��T���1�0'M[��c�Vɤ` ��gK��Xz��Q +��7��c#CW܆Gn2���=��@�UZ�m�-��z`��Q���Gվ��[�<蛎��9���D���3H���$MOe��34�j����MP�,���ڈf����6#Z(����<*k�(�J�у��N��V����?8�A�"�S��Z�Y2�^+�Sl����4چa,d�':U�\�H���iX4����GY�OJ97�Ρ���(��2>"��|]�G)ݗЈtGx��U�@+�/�ͦ +�Tɘ�aW ���k� s*!Mf����ɋ!� ���W���Ǘ�ɗzj�Cu��3=�7 =�yK���+5:Oz��&Z=#B U���ڶ��n2���ǗK8���n{�Qwu��7�����#l���d��d.e|5���� +�vD��ɧ��0�����9DbDb������Za��@�"odv��I�#2a���+��R0k�0��Z�q+�;BGl��� +߾o��{f"����U3g8���3qt��^D���lJ,Ϧ�l�b^�";c�b���d"6��M&�3�^⥋DaF9{�z��\���W��� �f�a����TH��*&��Z�A3}2?M`��ծ��5%9�h��g����5��h�N�7�k��T�u?C�� ��ؤk.ke�<�~>ٚ��]ѽ��Z��&f�͍()H������/�0�$��k_�i!�X^�S&G#���T��H�d�-�#��Ä�D*SrBp"ɓġ�T���D*Gr,,Ar�P��X�T�!b�aH&�RᅊхTp�Rl!Z�YH&�Ra�*Q�TPaBL!R�(� +��t8�0��&���s��Z��q����4q�p���������/��I�:�_4�@:�t�����˽��,Ws�.�~�#�uk �-�Y�>º��o�ǖ&-Z���VYٸ��_لѕ�ݖ,tJ�o����{��[Т��ڋV|�p�Y�>���^��� -�ք���'�h��:Ц������_�K�D襾������W��0G������c����J�C�S��!~�Z%S� ��C��p3���m#PQX~�8jty~���i��cV�O�RN��$��X��p��?��5�<@4�����Ë,��J>�;�eGI�\�8`��2�d�XN������]�;�!@��� WE���#�]�sE����(�#��6,�GU�+��ѡ!�f^��ᜅ���$çp�͗+�IKtN��B&&/�r\�f��0xt�p�@���4<�Ah�=�GkTK��V����VG#�zb7����8��%�\V�N� +�5��O`�f����m#���1�/k�Mte 呢~"s��ۈ7�A���5Z�0�:(km>�buQ�T��9��%C�TY�)���bV����f���ٵ/���@s�#,��O{����|���I������]I�9�&�7���⿶���o�㏣�m���Ƚ�:�Fwu����><yz�^�����Vy {���M�x#��4��|Qaf���",�v�|���0���XI`��s � ��O�h +c^/n��� +���.��t_���d�?y���m`�BT��&̀s�둆�9� �g$�Xɤ*�o��aBn��fX�2v��S>~ +�>0�8o*%o8�H�m�g���;��|�z16+9���d��h�l7pT2�\$��)��I�ˏ���s����q +:��k>��O�Ĉ�@� ���-<R�=C���+��lpm���s:��N&�cDՔƜR9�Y�@;y;��1� +��- ��5�6���1���m���S�x̹����v��<�a����eB�u�+�iVd��V���*iGR�0�,�����NSr%���{�#Č[�N��ceII���-@�T\;ڐ�]ˤ�gJ���S�8y��1�g��0b�\����ɿ�v��_Q��c��l#�Զz�>�*�\C据!tZǰqǰq��1DJi)�BR�mX���7�ގa}G�7�>�r�s��RQ���:p �X�X���D&5�H�1\�s���W�+��$���L~ˌ�-z��|ڕQ�VI��2N��[-Yz&���xc�#��Ywޤg%hd�(Y�ɲ��̬�B�ڵK� +�t�<&`ȶml�b���?K�K�lg��� j,9\�%�a�{8W���# ?-�sTs,��8%#�+2��LF��ws������M_�*�>��W$�j���P.^F�N�e_�%zE��@�$�k�4{��=�o }Ӥ f��P �h��<�W��.A���_p��z�y� +E^�~m���ec�(�&�F +U��`xf5�c��$��O�{���c��892�a�̈b��'E����;�ʔ%���vC�U<9�$����,��~��bn��ez9�Ƌ�(��b�:�mJ�Ki(8��d���Ŀ}�����w����*�O����v�>��\�J�Ѭ�.It&9KF����d��"3k�2_5��Ivlj�z�,Ȩ��ʌ�ô:my,�Rth�[ɞ��HGHB���d�#J��1w'[*r"?�1M��.Dk_(����!�� +k���39S�g�G��EEy�tՠ�wm��ɖ��8`�t"i�)��H18�=R����,���h�;�����K!���Q�b�$��nh5� +�foJ����c���_�%/Bz�����a����^���=��w�!^��M���/��£��"Z_�� +L#����X�)y�1p����Zd���ل����R���X���P���*�~1����&���߭���#TX��� +.�Y7v�ƭ]p���UpG{[��;�d�R����`�HY��ɔ�)���k���k|V��[�{�'���n9D��<Ӳ�&ǯ}�������a�(���[����+��ǖT6N����|��bLE��c*�p9��qjz}g9�U`:�`���2! ���9���%��T�ʛ���p�#�� �u>�����ЏI��Ϸ/�������p��_�|�g�w�xF�?Q��_�|���s��<?Ul�_S�|6P��s��>U��,W`#���3��Ae��O��Va�������# 呀O���K�"#��^�,q0:�~�X\�7���%y�[�g����ٞ_RWHA$�Ű����WхT� ,�-ܥ��.Q��Eѝe�FA�lQa8|3 �ɕ[��Nn)Lx��8�z�Q%q���*�;�'��dj�p(�7z��x.'wG��0\r �f:���ĻL��.�w�`[�s��5�sZ�Ð��S������*PA$'<�:��F坾e���>������<���j��:����O����iq�=��"xj�7�E�w����;�r-�B&w^�{43�M��Q��3C�;O{�.�L G@@W��!�(�]�L�' ��pW�]�L���Y��S�&)�95�������� +D�Z�$�=�����W��-��������5�R.^�5��ov��r+!b�F��k�� �m�)͗_�JI6DF%9�iV�R^/[�~�+�Lg&���h�n��YʇN֝)����R�7T y����&їI.�q���'U���N��{ҩ0F�)I&��-)�9q�L`��!'H�1[��X�.�Ь7�4 �rGh�9��9�1�9%�B��(]�a�z#���?_��dѡ����[��̒E��c,������lX/��q��v�^�v5���O��5�=��������|�7�Z��}(�3Ӫƌ�jME���ES�bɳ���ME����R��ME���ESѢ�h�I����ME�/�ME����gЦ�Ň??�T�h*Z|Im*Z4-����&'Anr�g�����/Ǘ+8��-������<���G���?��T3����Rpf]Y�#�M5����0L�Qu�c�6j��Tτ/(o��[,7#4�Lj�g"����ҳBSϤ�z&,]`0��-Ə��/�^�ɈMv;�,���n��y0��R������t����i{� N_O;�xu��ts�חw;����d�7��,��d�7��Mv�rDg����&���no���ķ�n��a�&���n_���p���d�7��@p���&��� h����wӚ��&��CHj���d�7���n�ۛ��&�=����&���no�ۛ��&���no�ۛ��&���no�ۛ���d��+��7��Sf��H?zGַ�km7pⅮ������to:���v��3O���s��<����]Au_����E�A�7����w�A�fs�k�Eod2�2I�_�I��o�c�o�c��m.ʛ��TC�Ƶ^x[2Θ�H��q��.�HA2l��\�)Y���R����v�0�.�d�"��䊽ZU����fW�n \Fu��\d�\j��)��RF�/�% ���x%1�MP�2�����ev.V8��X�>����0�ȍN��m:���Iv��5N������������� �A� �5���j�h8� t�<������9|��UClmĶ���Q-���y�-��1L >�����J��J�ZnE�ot~OMR��0r"Щ���UL�(op`�:]N�GJN3~�����7.�����"~*i%�t:�<���aޢ�z]Je�a&?� t����5����C:Kg��ad����X�K��(Fr6�� ���wT��K�JLjβ�1��HR�j�e�Ժ��v)5$�yȥV��M>�K*�S*v�� I�n�P:�[�BK:^J��a�'M?�V@��S<]n��G��_�z��m�}���y�i������e�3e&�Y��70ry>�/�v����@��wN�����m%�i����������iF���~��M���L�߅�>x.JY~�/� *����}v�� %�������p�3�u�{�-�m�_b�8u�8���k����f�v�/���:�<�G�9��Gﺦ�oW�"�R�]��p|%|dNz�=�I���v`A)�'�{~��!�(��������te$zE��̂ +:�)����9�Q���*/��}���G�v�mw'x��?��r��o-�����G�g/GzSfa��h�,|�M���BSf�)����5e�7ƛ2M��k����/��ڔYh�,|��mSfa��כ2M��_K��Y"M����BSfaTC|������2$�4e�2˙�ԔYX�����BSfa9]���BSf�)��, +�)�ДYh�,4e +�CSf᯦�B��הYh�,4eʍ����r�5e�2M������⧦�BSf�)�ДYX��ͦ�BSf�)�P'5e�2M������,p+��5e��,��ZY$#���K������W���j��۽`0i雰�?xf7e�{��8h�,LRM��O� ӔYh�,4e~��������xSf�)��`-єY���Z�2M���}����ћ2M�����GNjx��-��'�2M����BeєYh�,4e�2���)�ДYh�,4e��2M����²(���BSf�)�ДY(PM����2M�_Sf�)�ДY(7V�2˝fԔYh�,4e�2���2M����BSfa)�6�2M����B]�ԔYh�,4e&r�,� 3+</-��B�yN��2L������q �0H�x���c�]��#5~�k(� +��/�e;`R+��ڪ㤷=Si-�( ,\_���� +��_C�%Z!�48N�K%���$?-�P�S�B��̓M�a�w�7���d;���/�^��fB=K��e�.�ϗݻLk�,�HD���gȔ\b�ed�y��!��8%�����M�7���c�%�4#m#-��m�c�����$9�%���l���1�����E{�}=�yG�`p��Q`��9�51�x���=��%av�6�:K�|> +�������"��=ޢ���?�zO�����gy�#�6�A菠N�����[��M.H�&�g������3�ٜ�g9�o�cE[;��v�t�r��t{�#�J��ӱ9���<�χ�ޙ��_)��o���j��kLc�/�7V�Rq:�X���X�:��ծ0+�L��j7_L�����?�zp��5�������b�.!��MW�s4柭���E�P��C��3�t�'sR}���m5�m���^�r��]�_m�o��]�1+�'&�~C�������6�r;c� �@�"�\@p�)��NÁ�����=���a.����a��!v��c���$�BK�i<��(�l0I�&$1&N�1�F�L�Q�7���͠�yLڣ�;"��"�Q�Kaw�{É|�� �T;����zր�f��l.������� �8B���3'�]��k>`�E��ַ�t�R�o�\j�w��mUˀ�܊;�+�����h ��T� %�>��s�~�� l7"xհ.`�%WS_dA�'��� ̺���=>@Y��ݖk��.0�r:-�i� +�����FE �A�6�<��z�� j�uv�`��v���6���^���z��;�*�L��ܩ�0�Ҷ]�kk�)�s��J��ᔭiB宐���+�M��*U[�GO���v-6#$"� G�doB}�Ȫ�#hK����D����6��e쳂�Pᄅt� �v�?|f�JXcޢ[�R��O�v��ڪ�'�K�à����L]�`���Ë<�\�;���)¤�S�+�$�9#�p_5�I��>��V���!�hr0��EN\��:��F��R�&�l:�*��X���Dbg��vt�ca0����� �b�0�n�}��\�Ʊ04��rv2���_/��(v +��1��b���J�z2M��U�҆^O�{�((4����hw����yn���������[��L�7��7�J||����ҧ�����OQǼ����X-C�m�9��KC�&�+G�ZR��~��/���$.zL����A��"���+��a-�|� (��=�[^3�>�6r�ԗQ�2C�G�-I$��l͉�Op�<�dC��DhQ{VtL�V��l|g��h*�k�$Q�.Y/):���Nq�ej��h���YfX"3������xCa�^����^7����lm�;�Z�d;���6��#2�G2����?����P���d�gb���l���R��˾̰>@�,/���Ԝ�1��lCG�ϼ��/�Vy!�^��ů�E@rb����8,.4�[2K�lR��Ҕ� <' +�(2웥q�$�Բzg���ū��_���ұ�-w�~z���7w�ޑ��G$@�$ ���b �U2�����L�8|f�B9�3rP�]Z +���� +����Ʒ�0�Ke��7��̼�l�FSM/�,%�:K�2�+�i�<#,-��-jڶs~+��� ��~��Z�C����3<��~i��敲̋0V�XW�X [ȸY��4��nv&Es#NEDP(�&<�?{'V�T��MC0d�T(K�y�gY��Dä��UY�p�Sx�d��R�3�½��_^��wΏ�@���/�>w|��q��:�ݳ��"Ka�FK���)x�ڹ࣌�X� +6��4����wa����DnV8M�u^�hƔ�������%�Ę�����[��ѱ��Y�������ƥ��^2��!�}�� �=G�n��`���PZ���(t�:��q +��w4zE�.�2����D�Vz�3Z���ۣ{˓u�,s��P��ajO��pK��������8̼y��,�ڿy1����+� +O�/m�/g��G��v���ߘ���&����i�d�)4q�G���֙�����qjctr3DFT8��%�� Ѣd�6(�e��n��Yt�P!I�\\��e�ľ?46�s�r���������v�:r_n~���mw�>(2@��w3@��}13� +�s�����L����(In͓,�KuM��EɑI�4���*�-�#�����h�Ak��Uy�|>�J΅�}�?�~WO��?v��Y��؝�F�N,?��O#a �k�������yׂXka���@��E�A�W�����p����[5Vo[Tko���G�n�l��L���h�<�K +p�t �7��(��e�� ���֝�n�'gNxuv����������혛��M_�Sk.�ˇ,�@�1F ��]��Ȼ ���R=ʘ�B�W�L���� +���R�xJ�e�Rt��T���q���t�bm:�?��o� ���ߦ��������w�d�����?���hԐK� �b̦�RĊL�.�P��H�ZpR?�z���V�.PFJf� m��z0DJWiUa �`�E��t0ؼz>j_��O�����k(y����x�9~ޡͣ�фlyv ��Q�v�0��Ru٢ex؆F)"X�x]�(M�$�i��Y�k���F�#i�h�W��= +}����ݍ �۽�bN�����L�~l��<��T�e5��"I��DϦYѺPT��h��,�(�J1%��yH�)�j.�D�[�u�}o?�t�ا�>����w.�_���HÇW��w���m>� �HtM�UY��'��T�j$Ry`���F���yMU)U��Ы<ϲ��hւHtro>�g��\�~ƶ�����C�?�����7�s�:���g�~�!�PD�[�nҺH4�8fLa�i�"*��R-/02%��J���ȋ���$|��G������w���OU�rk�5:���u�j�����h��"T����IN��jՌ@�Z�&���%^�ыUUN��iK�x�(��Y�xC�-N1�E�^G�o��=���������Njawgc��kW���C�:ּ,�x��8M"!@;9e���C������N����<\��i^E?�Q9F�EJ��s*��M m�b(�n2�"�"��z(4����ߴ�K�R��sz�Co����I��⯏0҄P0F0%!nQ�d�u�����&����@q����B1(Ea,�^�<�=]ķ��F�u���uy�����*{��ַۀ��U����<�:�9ڏ瑽K��Ӏ�P����W��=?���Tj���A��&�\b��x��H�j*�ʳ��hoW�L���Y�͜�����>J?O����?<���7�a}���w�00���6.ΕJ�5Jc0���+�U�c���þ�% =>�Ӓ �Z(�`C7��X0����MU�5�bi�3 �&�0�h�"+��V�A�g�*>{?U�?�w_v�Ү��� '�K :6��e�_v짰����I0nh�xZ�j<�E)�jT9���9�(yD5Y��_�p< �*����%��fI/����ɹ}�)��Z��Q�:s|>عw�)���@������5>��4JS������P20�Y�� ��R����-�:;� $V�,�yS0%��)���&��}�����}�8ߦ���{��%���{��m����ӹ� T]��CX��^�����R��7xZ��� +���@ьVY^d)Ufh��U��i��8fi�,�n��Q���fh{������]ʛ֮��o��\l�on�m��h�S��clL�B��8��ދ��K��CS ��V�D�*)g('A�SK��� �4@��m�٩~��<^�����ݻ?_�� +|��B<} +���%�����M�g�1�F� @��_,��䊁^_�+�2 �'I�8J�5��X�H���Q�IJ��I�)�Kk0K��ź�><>�;qK������`��A�����������P�G�mXb0\�RU��ɛ�������(�J[��"T�T(YRUJ�4N4C��y���i�;��>��}��~�+G}}�T�m�w�'��p�ho��n�h�\���^��^U��F�D��qɑ5�W'��A'��H��c�8m�@�F'/��yT*.~-&��F�+�& ^�NS)+�W��@�=.�z��iG!xj���$��sR�҉?$���{�l/ӳ�9��Cm:[{7/�s��҇�Q'8|�6��֟�v�0��=?l���Ɏ��8��(�C�{2}�6�R~qu��3n����^Qg�}�>y�����Fm)�}t����.o��4Wė#<�f���p��=;��?��`����!��Cù�d������u>�����&�o���IsBy��F�,І��܄Yf�~{�/��6^�cO`ͮ��/i�ۧ��6�q������v�ͮ5��Y��@��%�y�0'�Q����9Y�Y +��:��-8��N�:mX�\�����;f�,�X��ٸ�Ǔ�G������7���V����������{뛽��;�1u���Du'\�Kf�K��ȈM'@�B_N��l���=|�f,+�zRh� ���u�7lWʼn�v��0U�7�Ӆ��t��m�����pѕ��0�w����&����:�E�ƖͱB�D.SHU0f�b�у�6 <�2�+hn��2QU���<��� �j�\R� +a[����VXؽ�>���;��S]��� �m�^�F���Y�=x7���"�ý}eSy��^>�&H��^���P��uަ�II\�c�wT�mC�U��eU�5�b5��%��D1w%u����q������i�x�~��-�ܒz'��3�E:S�������ᇸ~,�b��h��+��DvR�(�:U��X=�If7��H6�K XX����<��v啀�0�~vT�DU`�x��<#��G��Rz�v"���̲�{uz�(�Z�'����X�qq�l�Q�.c9`Lu��a���Ċ?һ�����������66�m��.m���Ϯݾ�h=�A��5�x9�_�ߤvHX���"����]�mZ�����~surxq���P��� �ȉ��G��W������]��Mӊ��DM���6L��L����E�nj��),e��F��l�bp<����2�Ű�������N�_O��KM_W;����P<x>�_/�7��ԅ'�g�1n͢l̳�9�Az+,������!2��2�E�.:{3�*���8E? �!����pJ�0��T�Re��xA�(EQ%J�5ZaL�a䷟A�S'+~�r�n���霾�=�ݣ���h0����?����P��L��Z�9x���h�E�����#s�Y�C��M�2E8joR��s�˦A3��Io�`�{8[GJ�iw} _<�~H 6O�_��O��ӗ[]}~�qd� +u!�F���0H�~ + R:��0 �izK��h�(Z:�2��p���Ŋ��H���|��{��1}��q�h�Ɓw��y�/v����7\?�2�#�������;C����1�k��1o�^����Vt�D)�Xc�9vН�5MR%Π4�ֆJC'N�)����t�fk:=�`7���||(t����qz����[�;?~�2��N6z/���k��"���llQ����blod�xg�#P����)2�{��ig֠TZ(QRyF6���ż�kޏ��vG X�^]�������{��m��:�mwt�_$�BX�x=-+p1+�:g>�3-�e�<cr��q��!'S2 ����'�'./3|����589 +�`�ypn^���y�yy��8���S���I��ư6� 3-{^�p��M�v���n2��!���*�L �����i*C� 3�$p����Ǧt#w��k���L +=�����Q�o������~O����v1��� �ڗ��ʹ�C���0�=P�%|�9s(��s�eP��H��DJ�h�2A�8�5K�3s̞��5�_/��� C��=S��<�Z�������t�����Ao��6�CĒt�q������ بv�V`B��F~�{��8�D� +Y6)�}DW]�tf�M� M+��ô`C����I�:�*� 2���h����?T��y�x����⟹;[��u��ظ���^\����u5�(�����D��y$�o��W�~f���Z`tڠy��x��������,��ɋo?Y5/n�8 �n�s�\� f�u��Wu��Ze�%����憳��KWz5GȰy��(2\o�7� CΑQa��a���}oH�h#�@ѽ��MO�W�3��=���vg���\?q,=��~��/_�x��y87�N[�����5�a�7��w�S���ǁ���X���껨� ,V����L#��=ovӊHG U���D�*��Ya�!�}j�+�����76�����7���c�n��A�ց����(��?j�ưK1�\t5�O�ST-�m����,���f���א����7W=��J�UǦ �K�A����=�Զ��w�j�߰����p|}��X������.{y�+?鯶�|�JמW�m�*����܄L]�خ�S5{����$��̵������u��Hn��s�{�H=Q�6�n:�s,��ip��l��+����,�wu��6��B���;�j$��|2t�Jl�C�]'��W�w�{�JA�W�^�L�e���ؽA���J�LF�)�.���敲�zk�k��~���w��=�7��MWl���SB��g������=�!Y�;��թfd��=���P� yݷ������{�d`m�}��6�~?�Cc���t���k0����i?��+I�aZ��g=|�vu��3wh���������/������K~G���Y JrT���&E��v����TSp�{�: +������G�#=����-�x��g���9Q�Q}[�AT7���,U�4�Ru�`=��$�~��nD�A����PtOU�u;�q�����`�����,ʯ���끷]�da�Z��L��e!� +�����Zv�J ^��[xSW+��J�ڄg������{���;Õ�eWuZCo������-��l~Wf�O]�J8��-G�v��;/��h__������V��RN��g]_~{[6pፏ���D�a%E�(��-�gD��XA���M]X�z�^ی���]���������\�����LJ�#Y +_��Mc�^��Y�%G)��[)W��^�ߘ���"���v�) =�@���̸��,5�2���<J� 0��P��Jj +K�2/R�� + +m�<W��9%��m��[�2<ۿl_w���OWƙ�u����9k}x��#�$h��r���� ��-t��ܨfy^��!�m*� Y:�Cٓ-V�h�X�0�����X�t�;�«�jtXsc�o����������S���~K�ޑ�wF��T/��x���#K��weB�|δ�+F�ӈ���*mP�����Ra��P��(2g�\C���(uƞ�ܽ���-����ۍ�h����Z��v��ľ�\O�k0&_�>�ݖ�>ٝ2��<�X�>gj��=�/�,'�2�k�� +����f�0���M�퉉��kc�z�μ����{njl<���7�'���η��i��i˻�h�0; �e�s��)dكc +���,`(�T��+�6l���\��P�s-<���#�y|�/m�w2r%qd���:�w�}��� HE8:�v?��UH�6O���(BLF�I�� ������[�[����/�}��oǶ��������>��ֽ�g�_�y�W���j*h��k8ο�������U;�֘/�3���0?z�n��C@��dž����j仄=,�"`����������v>�����7)nd{���)�w���Mz ���{��n��~�����]B�(�D���_c��~�͓�RBAA3�BR�O��#O�C���o����E4�Gs�5�O�ߜ��ߜ�O�����V���f��p�<�@����q��X�7n���>�v�|�pDU�A|���UN�=��a��G�+"�x��_O�Hf���ڵ����*��6�0~y�����/��ח�~�9����6���[?�k%ʩ6�7"�c�D��;���0���®7_`�����{)p3r��*%�b�c���+ǝ�s|�ypsi�����0�|�rF�~��2zU�G�H۾�e�v���|� jN�wk-��Z~�m7� ���t��3Q,^̆��ڛ ��H�B�'`��?�[<p�1�Տ.��U6�8u�����.L�����!Nh&�{�7r��^�����ȵ�9'������W�-n%�p�O����f�W���ۿ������ӗ������kw����~��n� +r��)2,�~@�X�����+�b��h�����������?�����/f��Շ�o��`�jq�ꪲq_����1�0� ��^ďZp�|�28 ����z�?��8�!FL�H�\>_`�"W�� L���gQ����@J�R�rș�4���A�R�#^��(��N>**i5��J��:��FrqR"XcLeI���Z�?[?��4���A�{�F�_��?�!�F��L���w��ˮY�d�'wq��h��ڿ� +n����>�lw���8�����e�W��_���߽���9�u=;'�°��,�0�L��_gXT���4æ�Q�8D���C�`�r�IS�E%�9`�g�`�I��6Idby�%B�`!�`^$��0���)*��E�����緃����O���?�����b�矃�v��uvq1�~��OC뗻��VG1E��8����t'���}b�(��� + *��g7����%""I�ǿ�7��_�4���w���?��ϯo��/�֫�����Y������~�m��<i��G>��/l��_�g<�������a�h6����Oi��4��Ͻ�7y��u0O���=��8��n�T���n�X���c���h���!��F[�I�cj�8� +co�� j�@�4���E�;x�#a�-Vln�m�Z�qt#��ɘH�5T����.�?5@!/F� + �^�D��k������%���hk������*3�>݄���)R�p��H*��Z͐�ʘ��#�w4[t�@ˏ���%��g�2pƠY��bxD��G37���>�q�t�����Y���c%:Af�J2@�T��ay���XQ4�� +���*���FG;m�e��}|����دٸq��A-0�̇�Ʊ�f�)� R�h��L3-��S�֬��`H:P��Y�h�,�����r/��"�x�v.��6_X�QgԆ1��6�$q2�tul<fr�s�Ʉ�0���(�5��.�F�qx�s��A�Ո� +#��>��@�|��9�I͖��P��Ib��TOwm��&Q�8�xe����]��,�� +K"�q"s$��� ���L``{G��T�A\V�Uq!ԛNGT������о�o�� �Pb��U �\�8��Š����x��Up���c�H�/��4�<�DG��S^�75�+/����>_�մͼ�$|+cM]G��xv�����}��9ٽ���BS� �#_�qd�ʡ��eQMÉ ��&���P�HW�V!F��5��A�ג�@�K��2���.Jl\�K���ܻ:C0��-��6�X�֕9�v}���J�v��eM��Kc�{��Ѓ`B�,�[A<���� 5�xGo~��}����~?�����o�/���͟�_������ƫI��;����Z��8B:�r��q�Х��� q�n�ݴk}�2k�o5j�A�����AP_�>K�}����w_���w������9�^M㟾k]v������p0���(ᜆ��Ӡukb/ �K*�W8�ЃCq��p6c!Y�����p�>���\ײE�s�0s2�(И�Kj��e������ݫ��m�6��A��v�z�ܝ�?��Z�ޟ���������a������X�߯�|��9����4n���p��Ej]�h^����܍�Ͷʷ��B�m�f�Y>湣.�<f���[0-jM@�`�� ����/�)�����6N�����S�ᄟa�O�U\��+S�����DHp���#�.�T��\#s4�È����E�0�4�2o���:uv��B�?=3�2�����6�M��9���W�� �����㋋i�����Ϳ>Xߛ���`��m�[̃��~�����vB���-����u�[�< �}����p�ϐ��)�Dń�����3�NO�Y,"\z��߀uo����ŧ���7J��D +�Tf1������(�5���an�!?���q��"]!�~��i�������d��&��0����6^�|{^�YpT[2�B=��k5����-e�k�!����eF�����nI��e��$�b2�-�qw��R��$��h[��T$�-��<��!�W��ŗ�I�e��:��>yE� ��`�B3q�^Ш���B�$�EG"����uQ�Aw�s��l�����Ug� }�]2{�ٛ�T��f_FP0FRb�Sm>h��f�eX�b�o5�� ף��;��!o�W5�_$QX�7��^�N�^lRR��C= U�6�F�B��b)m��bRUb[QP\�GR�r������㓜.�����@6�#h�)������aQw�.** n�Y�R�)r�rIQ���0��I2_ ��4�� ��A�_�� +�-��IS�C���#8��u��#��H�r�+̆�-�9qY��2I�WB�pB�Ch%��3g�)<w M�Z�aotEb�掣���s�(/3w� ���Q!7:�"��sG��&�T�썎�Ht���#�q��(F1w����REb��C��PvG�h�㰵D��-^$��*c�|[`"M�怛=�����-�I��˓Z�q�:��dGDp ����:܀�]���ɐ�p[ B{�?�QW�WN�W�؟�XZ z����i��n�'�jsx����ݕ��B��8�n�f�냚�r�Z��Y�B�v#,��h���l��]���b�-� �VP�6�z��E��6ڮK��Y[��lr����uk��FRU���Z�~��]�4�qr�z.�m��m����>�͠�:ж�V�i��s �+�,ۃ��{�F��m�5��Q��Zv�_�l�UG���\�<wCo�������Z��D����պ�۫�� ��=��l��']@�&��b-�D�� +�woPk�M$(�=�mڭ��O�K�F{�G"����A餎e����G�w3p�Va�r�,��C��N����N��TO�aל�n��DBk�k"��o��$N/��1N�G�����vk`�kn}��l�DP� Fe5�>d�D�]>雚��j�~Y�m;h��F�ֲ`�����zH�k[���z��7��M��aCp��;��Z��F��E� ҵe:�V���УIQ��4M�6[-�ֵH5�}��> �4��Bz۲-��8臋�V��lv�}� �\Q��V�D��[})=�z���� M�Yr�m��7�H�i n�C�0��Z�m".�X��H�t�!����8�F������HP���}���q��@��궝|�W6���V��w�XV��k ��t}��7!���;��Y�;Xmw�oc�z�m�і5�~�i�-���h�zH�o�\��7R���ɞ[�ޠ��h#!�����A!R϶l��� _q���iUL�&J��qp��Æ~��t[h(��Ъ�&؏��X�f�����$[;&η�����BY*q���Z��E85�ݚ�pѶiZVk`#��us���᭑��`7[�ݬ�~�]C2��&N�f��u��F�U������S������>h���'w���t�R���4���g"`���,���>�ژ&´����V�DZF��йkwm���#�4�fi��`��llg,M7�-�*V���t[-�W�»v��s�I�c��ձV���U�m�M�o�n�ޭ5�vw��;�[�K=w,$pٖ�����>�Y���."���z�j!�Ʃ�̮�KbN�P趉��7����3� �=�*C��٭���z���h����v����}$РA���2�P�Ǝicd@p���q���yr����V7�Y]�0���ZAЬ�� jm�_o���9W �=��t������d���y7��M�� ��������}�=.�<��m��<~��\$0w�Y�̔���"1�s{�R{̂A��e|l +�ϴ�.r�l�e\o�|�\v\Fښ��e:N{���p⣞���d��D��9*�~� R��$��`�S����3<3����E~\@��S�}�����U4�QwnI�,�ȅހ�u��А�"� z5���Ŵ�\h��}���v� &8i�r��g���ȩ*�GFNN�Dd�T�l���Am���2�Ӂ��}E:��2�bp&][�j +��fp�/�;�d'ҲI1����o|1 ��Er8M8YL��@z��#���o43i[4��y�H���?�dp�?�����M��G����:��-�?:�3��R-A1F�/EQ��C�&����uL܉�J����K���9گ?�zh�R*w���@��='r�P\eWQY������k(�1�y���b��8)M�#�;]z�s$�;��&y +��蔙S߿ເPTG��=��+^Ge�ӧ�^�ӝ/��ݙ��f�U�#J.p�U~O�'�IzEjL� �Ʊ%'�.g]t��#K����j�txC�P���f���ɖ���s�Gs!�ܻ��x���x">�1>��(Q)� ?�\�\{�� �O��J1N��;N��{�d����M�� Z�i�S�5� ���G�~Ջ�d=\ye��$L#��������g����<x��Ōv�'�{�B��"�@��e����(�/��������Z-1�,[4�U��@�A�xϡ���������3(c��x�� BA)�� 9�;���:�u����7s�2K��f��,`�fqe����Bul�l�Xd�G�i�W������C$��%�@ځ��駇H� +��{�.-�D�07"#��$�]q���E�����G��ющ�f���:$?ͽ��+�`�$O"X˂8� +��M ��"�l���V�txڢ����x�E��[�����]�|��2�3u|d �W������$��k(�v�w�.���\S�R����*<%���(T\�^���:�#��a ��{�������{� ,�jeP��� ��T�\�Zr\�eA�:!���cw���%>�QG2��,��Ry��ey�5Y������(��9Ċ)Q�Ϻi��I�6��nH`��&E�K�x�[�z��l�L������%�F�\k����YvZ�y|��]�#�00�t ����AA��K�E_I�X;� yB��2]Y����(���j'>������G�����M��;S�-���`H�� |G'����Z��|B�ȝ��ݟ� kC��p�뀫���SO�K�k]�i�Gl +��:��+��. $�U��K;��y��A�]&ۂ=���v>%�9�V?8X��K�2�B��6���d J�{�B�wv\�*ehw +��H ���#�ρs�� � +B��x�Ⱦ�W\���ע���㤽U��霨dc�*�V�2s"��ct��z�ԫ~��7�Йp�[�{��^/j/)�Ўt���ȞEE����$�gcK�� +�$�v��5��A�<!ft䉳���q�C"�{N̪��֬WR�L�~/��!�h���u"�*�Cº���At�Bt���)A�B�y%��(��[�4gѣ�]�� +�����S!P��43�"#9�`�f2��!�a�����O`*5�'z;�JۊW7�p��TUo�&��ˮ�����ď��+�h�6��y䱃<V�<&��h��r_����� k�:�c�Ԋ�;�$7�|K;�LK�/��̗x�e�t�B�3 ��0������+��D�6���V��e?�ۃ�xҫ�J��h�Ks�4����w���A:},�)� �hp�>���� +��jiER������@�1 ��O�`9<X��%,�2y�k9g�MZ����A6��r�`9<�i[��X��C=>?:a�`9<X��G,����Z����`9<H�;!���@���A$ݴ��CX5��(�Q��J$����j�N��=�:�zB��V��j�@�9�t9�r&���D]R%���To��ߓ�P�^s�������;~�~��Dn��`�I\�=������K����#�;\��`�}9���y/6� +�jޢ� +�����"��_�I���#���"��/������Ad���5"~�L��̸��Jԝ�p>�L��6&�æY��wf�����<�$$y����r%�V8Q$))�7�b�RWA�>ٷtE1�I��0L��*�l)��e��d �םڍk������U@VYҗ�HQ �tT��R l+���ra.�X4��2�)$�|"rF<f��K#4)gs3=I�'��"����=��p�Ă��~����Z�gh(�`���1��N��e�P���RP�~(�:!>����-��Q ��(����N��JK��`����b�}6��B��#5���.�ָN�ϰ8y�B �Ké���@ 9c��3�Bq�����VЇ$�!̧,�c�x��b{��q��u�vQDo��m�F/�ۣ�<���Gk���-�-��M,~�枆�ݦ��D��r�!�b�^Y������Y��!s���� ߝ�'����T.)��0��@��@����&�A������E$lyū�|�aN��#��7�b��M�iȣ���34��x2�8�7�C�G�c���mR�G$�h1�����zߥ�K<1��]�c��F�,h�P&���=�^��ؠ.=E�փX�jE-A��GXw���p�� CS�0����>h��(�~*3N�N�T?H.ȋ��R��}_~E��2��"B2��Sy��;�����ғNVɈ��#�пUBAr�~>[����3�b���ݣȞ��4�k��������`�x�ʣ�)�) �I(/T~�MFw|F1�J>`���0�� �x����� ��(Y`ХJ�'�q2 �CG,�������q��,Zw�a��ot(�lu�&�X-��Q\�qo���C>Z��_·>��Zl +�NJ�g���iSd{���9�R��P��/n +���#���g|����b����<���=0pA�>�g�rdԂ�l�,��Zx:�b�.�P�&�i6RA�{*X�Y +��*)˔�"<����[�M��ʻ։� Vg̓��3��I<�]�S �A�CHg�]M[`����1^;�\�o�{Nϛ�<˖!o$O���/PU���Tn3]�=n�(���-��tp�P�^}|ۈ�՛WF40��/RԠ�<���j�NH��d�Q_-���Y�l��Y��⬖$2D?S̥��讁���MϾ�:@�F��T��h,k����B&�-H��&���킡@�Mȁ��:0Ħ1�U��M!��?��(��>.��l��d�VIKV\9%3�RN�++�[�"���]�"�y��*�����$2�>�����z����@���%�8��X;�և�'���S��(�TY�EK��PYXd>��������P���Qw�yd?"H_���4�z�Ȉb#��<�z-D�c�Nv�fċ(�9?��у�E,J[���ឈX�mO[Ҳ�r����V?؊����0߽y��!�d���2O�!��L����+ +��&z���<3lO��O�N)\ڀc������ +����a�6��u�g�_E�'F�n<��(�R`#�DȬֺQ4 +�ɚ��ވ2�)� N�����&��^I��Ѥ�Ix�I�0YgGA��`��^�V�惫ΰ���6�uv��*&���t�Q��(��/ߞ���O�\m���g|u����k*����Fec�Gy�b�\ytW�jl���<�؛XT���9��D ܶ�r�ס�k��2ϤN�6�8L����hW��w��t���:�[���n@A.}T��P��Z����R'w(�b������@y6+D��� ݕ�1N �Ϸ�" �V�Dm4�YC��13�.�gijQʛG#Z�f8#36{�pa$?���L̢��UU�ǓN�f���H��bL�@��HW(ѯע�t��0 +�T�j����}}�r�/���"臸��+�=��B4�g�.�O��`R����$��_s��#4�~���N|��JN7-�!rf`�}���� ��+ �`�Ѱh�]����� A�z���섄Y8�K����Z���j:�u� +�� �!"���^�sC] (���ˁ%`Z��O��c�YJ?�h��I$�G�7��}v���_A(����o�W���d$�p�&QÞ��@��x�i�IYh2��a�CRm,8��<�F��6�C�=f���,,Y��Hk��%�7��������%fDҜ2wURn�>,#�.J� ҿ��^c�z�w� �l����|U��E�gB�%���;Y�Y��(��H!"���HX�=<70Fn��+";=�KX�ތ�Kԃ�L +/�K��.�(yr��6D� u�ᄐ�yj��L�Z��9��q�� ?�_�N.�8$�ٍ�Γ%��`��)�d�X�)��8�J�t����B"��.���LTb)g�}�߯�Yi��}�c�7đ�ݬz�8;N��0 +��܍�C|�_�h�m�lVwm�zNGA 3/�Z�i����6�o;��pg���|<�M�DC���G^6� H����l���rn�KI���j��W(��> =�IŤ�?�&aOHz'Ч����l�tE�� �J��DP�mr�X1�z�Y >������s"��� �_tG��0�=�l%��`Gw���Y�\��?��E'�0T +�'�VV��q[�w ��r3<P�D_J)������턮�l�Y^������{����$J�3�,��K��N�7_lR�_=��Vu������1���7B����*̼�[������)������KZg�J(����:2�̷�/�Yĩ�<� Ic 4�g���3)0�����9�@"�;�1��Q8��3��_BY� �/��C��5��ܻsB*�d��*�_���eM��UK^�ĩ�c��۸F*��{���*�gG���ײ��x-ҡJn�tM�d2n��:\k�O8[g�ZWk�r�<\;�\��ɚO��:�\�(�����'����/z��[�0��*��ۿ�ٽ$�C��G��r��o^������0��,�H$�MA�#4������(��Y-��u��d'�b�B���#tP$����Q"�$�k�9).9{x��;�vo醲���k�~faG��#r�qsD�b�GԀ#�ݟ�3���v���٢��{`����������D�k����Un\�Pe��K+[�#�U�o���ǹaͺ]xǶ�+�Ab�Jw�ն7�{PMo�n��s�]��/O�ԅ"i������~�8�,>?���I%����NqG���Ήc�%�?��e� �oX��MJ���&7��L(@����B�K���X���<G����.Ɇ�E.��%����n��ºy*��������ch��!+^`Z��TPӟ���0���d"6��J�h��J"��� +�63D��ɖ��ii��p���2l�LK���үz���jU��)��/���q[�m %8Ȫ����e���YEp��v{��;G��۪���8�C�˶¬+?;�X'����5ꧺ.�b>�b�+�y�s:���{ۮ�p�)�A��#�]���!�v���e����JA��,=�=��O��z.m�'QP�!$!:4�;����]�ѝAZ�3���̸��п�����>U6J�7���57i�a�D�q&u��;���俴q��Ao�?�fF���2�[� ��^��G�V�zB.�@އ��NJz�UQ��OP ����V���/qV�#�V�-4�����@\���(_�53�¥�T҇r��*��.����U7����6o�� �GyM��n ��|�e�V��S ΊKG�¬��Ъ(�\�&7\�L�,�M���]�*�;��H���m�{���Q�GX<��IQ��� +H��wg�Ph�>����x�4NYBe)8Rk$��4x��W 1qhk� +��+��y�,|O��g?l��ina0/��,�ݻ�T��0�M������U���F%��'3�֚ua�����7B*�7\��1��223)�� I� +�-'wH�ARZvSiEc;���j��{�N4 b1G���/^�y�P��ĹuF�h�z�0b�c�9�>$�d���ŇC���r +��:oTxU`�|���´z�[f����U�����Ъ��>����]�Y�E@����]ѫ�X]�[vnqm?vb�w���Ԋ^�̵sa���ۃ��_�ܪ6>j��]vڅ���.����֏d7��ydb�%�5ߟ�L�N"��]l� {Ww�� �m8�j��}�{�7�a4%�7��&��wu݊Ͻ BV��H����eI�������"��H���9BU����Km����7�`>bc>g����cS(㫰�_�4+Tpe0���|���i�>�ɻ��6pL+Ww ���R�c��!Zܥ#���3�z +�+��'=�Z$�8���s��,Vkc�W����{����!���]��=�/tI{Ԑ5�$��!� ��x��:0���`мE�0�l^�}Q]L�M��ʨQY�n�'�g�f�;"}%�A�ޒ�IG�ÿ�t4��1���w*8����#H��6�e��M8vf���'�� ����B�Wa��I���y8o���}�'�3%�r��Ұ�4�c���O C�6�Hp���q���q���l=�+�)4�Ko��(˂�F;�l���"܋=c�!����VӱjN�ի9������^������L%d�����A��Ĩ�ߙ�1Z��L>��!6ĶPi�͡?�Ń8��}��_>��������t֞����&z��txn;���o~<y6��w9��<FSL�c"�O��-�)��~c��ő\��^�f�<��ƦI[yO�*LJH9Kg���_K���;��%ExZ�������L!�ѤJ�㨧l�`��3����d����X�j�|kIcSwf����Myb1쉉��M���)��K�g�Hy-�G.<��C�nLWϥ(���Ew�Yf��D+-���g鉤�M�z�Jm%T��k����ojz+��s�?���Y� +�rHIGGX�!�,�G_�.�ӒO��Q-�c�; +J��Ng,���d +�dF(V:�����|�0j)�nO��F�t�ĻL@V$�-�R I͋�|'�Փ�?A����QV6'���!%kIE�!C�/ikZ#G�>i�*E�o?��VR Ѽ��fڃ�B�L�V3 +�5��B�2 +I��r3 +�6��%�0�9�8�9G�i�I�"�Nה�4U�vx�t��%�oSQa���|D��Qov'/�</|���3+V6/�J�I��,$�fe��%23�j� lx�d�������t���<���&U8��zr�Q�A8�U�����(�W�o�j���OX��5ZOB�å>�w�sz^��ﱛ�^I��X�d^��#�( ��8�tI���T��9TDHgۅVN����SA:��Ȁk��R���ߊ�L�j�i��6 "�7Y�����JqBB.�+�*n��l3�5�Kb)*��İf�L +�Y}�8�����5HwY{�9�.*m�.ج�fr�M���A����t�&�D���5w#۫ų�b���*3�����w2�k�X������?�N=���%5�#(�/PE<�E<�U��"��z�<�<�Z��L�� +�e�����ۓ�<�a�I.V���%���&u{D&�x�+O$N���G�ƣ��<���NX���17,�)�Ӟ��� X'#��s�:cy�+c��GV�K�'|�<J�<�G�n�W�+K�N\Q:Q�^v +���\u�&���#�(�ޑx�ߪ� 9eM?'������I7�#%�E�䴧�_���~OlgN�I�y�¿�0�O��2A��#��(&T�PwCc�}�b��3�^?��%�Te�$�$Nz�%�?]���=.�{�+�'|�<l-�դ��4< +%�- ���ip=��Sb��AMӴ�W<�D���Ka_C�>��)�c�N=)ҩ''��x�SO2z�h�|���g�8wQˑQ��e�R��Z�j��'����� +��0�F*`OEk6K�P[�!e�RP$a�U��~�Y&R��ʻ։���3fYA��\��!z45)�8��;�R���kU�hPVF��x�-#�H��-C_���?�E�� ��~瀄{����ȆB�$\ +�,J�%�X��F{�G�����/G��&����2����Ց�g]�6L�̬��J8�/��L�Y� �4TO(�-�ڜЍ)���!~s����#ە*��?[B�fSB�g3c������ ��˝����'}X<��BH��6�f�b��k9JKĒ|����F�I���U��V�v���0ޛ{�n�83�e>���.����x�`&l�h&�>�j^����&��������Ui�l +��4K�T����@�]��*hKKVܚ�7%��ufq�[3�B��VB����TdD~�&ãGqh��Ѽ���N��NhD��p��sm!���z�1#��-�}�� 8���xC�'�J�� l�"�P��o���S�:�q�f6:.7�*��i||h�*�(x���nP�c��`��\��_�'�e�+x��h�����R����m�Xc��&��� �>�UV��/E3��@�[�t�U�K,�N A���.�6��3<�ՉV��Kɥ)�X�4"l�C����{F$��'!��w�@4��}C�?�ɣPam� �hv��:g3,��� +���Kм���qN��//���J� �;]�*�\����6����������Q�zw���2w�b.AG�U��o�rIRv�W�W���{2����a��[^��r�Ĺ����|�����N�sC��)�0���4f[)�>ǻp9bo�j���n���mC�����W +���voD��%!�+�3��<�+�\5�c�%)?�E~Q�:�o� �S���[�T��wy��"�̞I��qxa�I5�'9��v�����F�˙c���]y��,��:�ň�]�;�:�����9�Z���G_A��\�$qs��d���!kC�S +B,ACBԕ�I����'�]GG6A%�d$F)}��I.�Ԅk)5�2T +7����pr@�]E�r���m�m%�:���)7l�@�x`��}�����b~�ǝF�]JQ���b;�m�!�j{��`������c$�����?�~ ��`�@�<�w�j�-6!���(�P��dO;�C��F%,2��b#��ا� +1x�{"���� }���/���7���L}�� �R!���c��:2\4L1��<�c��r&E����t� +��t4���fl��݆�A��D�)��� �E�C��V��n��ϲ��gӕ@�������U�UJd;�7<�C�<�����+�|Y��r0Ը$�tH �����9)�xS��\Qx���j%���MEc�2ζsB�x�rr[���������$3�H�GR��7���,)!$*����<1�yz$b��*� ���s�?�$~ȩ忟J�AN�S+���+��w0?����z��o�I���9��������@�����f�$+�i.�g��-%̈́���K6�K��H�|8�b;��� D��LHa��V�Gc���(EU�dU�Wɚ4,�ڞT�j�lƊ'�a�7�;������:����Ӹ���:S�JF +6!Y)x���1[ ��ʳkv=��� +�x�e�Tb q�_�W����v� ���甄e�8��؞����L_m���hN��c��VfX�sO�������[�xzr4��$�iA�ȹ�$��Ј���P'f�M�&��H���ۼ��O��˯�6RY�i�ow��.++#p~�U?N�UC$���_ʞHF�J�ꔌ�q8N[2��K�| ��&�X9�3A��� 8�~�$�>(͠�UNɍ���&�������f����� t��8��8�̌0 +�k�%6�i=8Ɛ;o0g��ޟ�M� �"�}8�+ű[*�-r�-�c��(ǿ2f��*V,A�P�:q��p��-�=5;Q;햫N;�b��7��"ܶ��4Ê�>�G��ft#1���t£�Ng5���٫�,S>W5���|</��NL.�[<��3���2d�/�رi�P�b��&��(cڤ:4��N���&�?�)Ś���kh��<I�<-7�gd�H�춭d%!�o����=Kl��� y���$X���q9~K�`��3���,j˖ڗ�Y�$*�iU&�6��AM�S|b�i�k��8G�եTn�a��!ʪ#=�$M bF��u��Ύ�҂�B궉�"�C[Y�"�g%��['��!I��Q�N�&d�l��U�`a�� Ug�~`�� -P���@�6�~v�J7� +X����i=��t�Ee"�Q�&0��1���a��8�1��(�\Ξ��a01������Q9V��FXZ�UGFM3,���A}�2�U����A446�g���q����:ʡ�O�1¾ܱ����`=FO#Ω����:�4�N���.�ԕ�f[��'f�v<�_]�c�(�V��� ̢K;3�`{j�w奻�\\&�1�5�EC +z� "$�����"��q�"���1���#��?�U[�j�U�4�͑R{K{6�C�5a8b鹿O�S@-���~{�/S���|��S�>�j)s��OlÔC���:0��:0���2�j�1�Ԯ!�J�_v�9�ÿ���e��[�v�e9����z���\}?��z�no�P)k�2�W\��닯��\Y)n�Y}�v�� c��֛�K�1v�]��s���b����Z�Q�R��ڲ�ўd����a]��i�=I��*�WG��>ў��tf�ޠ�SY��N�t���*M�[�����1U�V�#��c���b�⎸�B���c����d�{<3�貒Y��YAuV��?Ȍ��o��KK��j�e!��f5�V�jh5�i��Z�`I�<�tDm��;�g��(�!���K��F-P"�*q����AȽF�7��W�p���)U� �G,�.�+l���bW�Еwb�k�H��nz൨�[Q��U�R?� \�Xym6ګm/�.���S��.������z�eXj����bl�K�M��Dl��"� +�"z7"{\u�ݍX����ǿE������aP���0�'�zM������M���j&�-th�����"�e]�a�+UX���F��.-� :;�+YI�+ 8�F�+ R+%�4d�xL�~�����L7��-s�HܲL�Oƚe�veq�*q�h���(/ꖝ��ӭN۲���<Yc^{��lG&��<ۛ��5��͞9�dLD2�hB�S_U7�� +��7�2ϫ�ݲ3M�u�+Ǔ���=�%Dg��v�!JE؎F�U� �x�x��u?�l���x�4��x�e��K��ۛ��_^�̞��?�����5Fg� +C}��j���"����lΪ�Z�l��<ᰡ�Sc2��F��h���,�M�4}��I'�p����}�V��k�&�>-y��9% }4��5���P۬��&Ș��i��o>�����^Md���#���Mj� ���q�]?Ǣ���Vyޒ�}��*��������OO�D���XR궭��s���X��:x*�>[���'�\Z^�]>����LO�ټ���� +��܆3��k���h�iv7C��#U�tD8���K$�gӑ'B�յe��E�ǽ����GP�`�e��n�����3f3��Q؍�;�Pp;��#��=d����9ZN�|�Y�<�Y�I�if@����y��=z&��4�R���RL���P�{��>93_�` +��&�0 ���E]me�ʂ<D�ݦ��O�T��NC��h�QrQ�ٱ�~V���s�A���b Xq91��-���I�o��J���q0���B��8�+e1����3��-�; �q��<�$j��(v/PȚ�K�B����qQ �Z��(�])e�F��~3Ce���c +"���Ewqf�c\ť ���$��?� �DrW�͏�ɹ}T�29T�Ǵ,!?��3@��0�9*�L�*�4-�FgW)0����ME����8�F�a:�5���L�㩏5���V��H4�f`S롺/#���C��-&����$��J-90t�D5�0��� +c`�$�0���I :!b����ў��Qu���{C�"�u��t8�a �Ill1�z�xJ|QP�� h�2��Y�5)�m��q0Ytƈ�f�dyt<�����h�0����ه�x��\�x���j=m��EXx6Q�%��N&�搙C�&B����g�/L�D�J�I1[�Y�M;b�iq�P�T5��C���xu���R68�bJ>f��^�3���ÿ콌��!z^6�<��:�h�6��u�+�!�:���DbȒ ��ٖ09��WSФ���ȯ�1�3�Uܱ1�τ��Fk�����S�B�1�ZN=�C��\���N�4�C��S��N��Oyl��<v8���rir��af��>����D1cZ- +I�k���s3�K~h��k����G7�Q��9�29���O#&iZ�^� �,��̢�7���l�HgH�9��2YS\�F�`:,1������1�u�����<��H��w%o�)/)�&7�����,̣��7`��f�A��QV�-��N��N���<��19�Cʲ�S4�9fvC���C�e�VN�ݤ*�zZt��;*q�O�/�*N��_:,!~ك���7S.��'���9��_�?����2$�$zSb�*$�f�I����;03�}�_�M�kq5�@2K�ES�� Oj���B����D�"�͚�C�ȝ�x����u������/�u���μ����ێuײ����ѫOAmr|����ֿ{۸q����l�^�~��j�Ӈ_�_����(���i_� +���eOO��_�Y���?�+����������W�7��>��?_���_���՞ߎ��㷋���|�����?�:mE�lz~e_7��hz���2N.�@�f��Pwwh��H��:�~D�dqM||�N2�*U�<�F{|7&��`�G���c��rq'���D���TjA�R�R3��J�@_���-l�����v����-�#�4��nL7M_�����9U_;�$�F��ͨJ�T�Tm�I5���8�4=���%�u��=�B�!S��ߪ����ˊ�P� f� +&;��\����>R��.֧N�G�,sі�.��JB-�;fI�T+�s�J�Tۖ� b� ,��n&��_j��o�� ��`r9 +gCLك�*���+����0#&'�g�^|u���|�\��`�����Y��/���34G��,�|�f��(��#i|E���`�*�=�@,�P�UC���IWO���<����'����9�0cD�#px��G� �A��ѝ1�����X[c��,7�����Ik�A2�����ߙ��Ż��.������6��1�n�$Noo�1����46p� Ҫ�o�`�@Ξ�������q�Q|yҏz��^ �U�^�?���9�=��l����v����+Um��P��=�'&߆Ƿtm�~�{C�5�p�2dy�ɝ]�IQ'�>��TAk�6� ���5��Y��Rv8�)�*��������)�_.�>��~��@���*��#uB�Ϡ#�ʗ��9{ʿ�`�yk�� �!��:�٣�GXM�?�?�F�D�T�~~��;N��n4G4��O�G`ǎ��{�b�eO���ǛA��S���� �:�Ei���� E�99�{P3YEǐ�:��k��{D{��;kA�4�6ڕ��a4����hhn�SJō��q��(�� ,�6�/���5k8�F�t�� kM �3��������byDkeM�I��̈́�����'���u��Ŏr��ex��^����"G��H�?�FT��M��ٳe�X���, �i�{H]$VN�)Q:���tv�����Z �4Mi�3U�h����l�B�ݳ����@��N$��ʫ8���'�J'y�کy)ۭTO43d���F�����JM�2�6��OSCG����%C���TV�u#YU�:t�+�pn>L����|K;�Q0�y�*�w��Ym�4�s�,�.Bn��o�E�zog��EyF�������ڟT�')]`<6z3�;�o����h^|�6�UI�u�T��t�Y���4��c�ӌ�K�T��H� +���HA�f� ���##�'D 2��-��U�Uӷ�z�T$���:q��tMH�J�E���*-�m��U����誶�`e�E� �a_���N��T�x�c�q7�q������*r^顆}�ԍf� �U��Z;њ��Z��@-�{��&-Wk���=Sۤ�G8������I���86y��� |,ހ(�z�6e��x;na�I5�i����s�L7�z��t� S��3D���i:�Gv�6 9���':!8�D�1a?�g�\嫔ѣ���T�`<�ߕC m9�Ԏ4�:6-"+�}y�ԕ�g��ω5�Xk��1�;�h�h�+Q�Ј��3|P۵��,Qs�y$;��'��?���,�&��y�g�JtP� �euϴ���7a�A�/�f�Jr_�9��s�`�*���֎��p�m���Mk*Z�^{|����L�$F��X�Cu2���,i�%�7��b_�U��܃����Ƌ%~�,&��;�&��E�T�Җ�?M���_ɔ�2�-k���:��u]�R� +�$�SK%��:8R��彫ntH�:~^�Z�߫M�T��.�Tҷb�N��S��[˟��+���Vb���,Fnz芑7�UV����`�5����dSB�H6Eu�� � �y��T%MOM�w���r]��w� ��z����<��I�u�,��$�[V{�Ww�˔��>����T�dߴ=���m愚 AY�<�=���5���#�ĩ2��0�a:�FV��Q�`6��u|��Cs2���$J1\��w7��`�������O?��9��^���m8�-��?�Թ��7ܜ���Rq��t��趭V�j��z���e%���CƇ��$�:�8W��(�ь[�W���;�aa2��D4�zE��{L�jT7,�ؕ����Q�Q/��62���!Ӆ���ie[4F^fYeせt��|�W6���ԌV�Rۅ]�ҁ�q'� ��h���pg����[z������!��;@d, �w�!���@cH5 +Bq�%�Az��D�a��-6|͚d� +I���C���Io����P���'Ҡ%Y7 �hH����z��զ4z3��̈́�p��'��9c�4�uU��k�7���|M��n���_�����Y�p}�%�+�UB���p�|p�O���L����� ����\��~&w��G^쎔s�����x�������6�-��W_������M&��kߒM��oIT���zvܑ�H֙�1�dž�9��9�~�0���W�%�Z������&��O�?����{��D7 �M�%��̇� }�5�Glۇ����~���-�<\�%��D+t�� '�r��h��L��l�i�=��y&E +�#y�Da(UЧ�U���+3Sp��_�^��f_F�!�{sr�����5�:x�%wV8A�w��J���s#�v$V����+��������sH�+Nw�t;���-BP�Hk5]wU6�������o���V1�3���^��et_�#�hL�2�Kz��<X�Fb�Sn!o��%S��TC�_�=/:~�,���p^]�ն �H퉢���f����u�@ѱ���$U�Ƈ)]u�|c��!�n.(ތ����hd�X�u���B��A0� G9'8(Q�"�lb��f�����6�PON���G����&�=[T��@0����C�4�p�G|��&�L�y�����r�hj�f���얳��j�f����Vs7����n�w�[�a��X�~�ܜ��\��6��V�����,�X�'Z�n�B��C���ߒ�`V��HK*�ԕ�nJKvgD$I�w�Cd-"�.���E�`O�z�x?OL����u��-ӝJ�,i�R� ��>%��坫��+lEZ�:�t���v@i�l��QM�)k�����O����F�&��)-��@��2�0���ɸ�W���LH�3��צ�:���ץ�6�-�/�20e�U��3�QZ +IibX�Ν�O%+ӳ�Je��Yf�e� ��.VS* ��>`�9\��<'��Ψ���e|��W����>=�����`V����`�F,��_. �tcl�� ���>MmdNH�T���s�������� 'W�({R457���xN��6[Ԅ�+:)e������ �T7R�o��>� UG� ��[��7��?�OW��T�ԟm�g�����5� ��l��eeo����dY�I���z�a�Q��p�v��gL�>�3��7���5:�o8P3�呠�B+ �'�v �[�4kcA��}@�6�����Y<�+�LVb���� �C?��?����@�U�������G��v���XR��6�>y9��'8w㎢��9��f������xy�'���I�AC��Pg��������G��� +;� ��6�meЩ�h�$:�1�1XLz$~'�\�T��<B4�B��ƅ=_Ӷ�����k�gr���E +�K,i<>�B�le��I�As)t�A?���@��sQA�s�����+�:ֽ�������܁-�ķ3hN���`zk�vbv���!� ��0�����nS�X�7F �S�o�X��q������{�`6��^R�wր��#���R�1 ���DZ��@%����$���dx;,.�lE���1-�P�6�U801����$cB�_ľ~RJ�����~$�ä�<�a��a/(0�5�ڽ@��~���A��R�/�B0�}l:���ċg�4��Jr{�K�ʬ��bK"���ܘ.���Lڨ;��M�P���@j�9~:Y��A�z=�S���9V.n�s�<��a���.�fb�h�g'��hT�ۋOI.ؾX��!����x-���`M�KK����� �������8�j�4�X�xR +�CXA�{t"���x]g�㜕������ˤ�4HAHN{�h_�����uwrQ�.�+I���Q8 Du �C��W�e1 ��^6-�$��m�����$���?xߗS���Kv{�.�U�`g��Q�$�I�H��?7a>���q�'��I��>S8�<�;W�H� a�����T��G<�8�+5�V+��Ic�tӑv�wc�f�%�R�,�!]�'+l+<$�4�,�Ȥ�YH�ʬ&j���*����5ކ#r��RwWmW،s����7dDeb���?)TYT�5��*�<���Q_IYE�C!}���*�_�Src�,�8�λlD����h<I���v�v��CH�;� �9"�?�&0?NFb_G +4�`�+�Ͷ�A�À�Ȁ����a�T� =-��� +1m����j�}S�'�b-G�t���>�@2��v?\?������D�!O �����d�9�)��UPy,z�r1EZ��0E�t0EID��(�(v��?{K���Ǣ���I/~b���r��y�5��`C�4��A C��h���Φ0A�p���> H'ߥw��� +�>��K*���<7��������l]�����l�� {�\�]���ʆ��$氽����w�>V=�hj�pM"���N<�p`O1���)>iw�]� ��D^�O +���bu�U�a��l�x��k��<�������K�xJ�Q�I9u�V1�Ѩ3zWe��D��`�Tj������h�w7 4(3�4X�`6�O '�%�G�z�Ue;�.P$�.׀)� ��?���;��Cbc�3�[>��+ ��L�>��T�`��%���ԳH�=�p�wl���7���첝d�|R֊J0aIv��B�һ����|�̖�������}@�$v��L7[��p�{걮��j:��ǻ��zXt���c��~~�)���y��̈� �|��Qyʰ<e\�40���h/�b�I��i�S+�T +�/�8������}@ ��F����1-Ŏ���~�-&�E:�e�!0Z�����[���D �6yʓ\[�>���xI����W�u��=�ABr� +'�ѢF ���9��R��_a��Q�;j���Om Hm���Ԯg�M�K,ˡfo����=�Y�"x �F̈�t�q8�A�D8U�Ē�u!���O +!�xC�'���'���P{�x��n"����WOf[Y�m5�.�(��6��B-K�0��hqN�$��Пo���T��Eo����N�Z92�7Gs�c��\�A1ݙ�h<�`,�1�����g�j$�>���pf�Up퉸�,+�$Ǐ��s��\�F�އb���<kt��i�;)���U�C��&���=�h�#+�p����<��:�H%*f�b�0g�x +�p��{'�f���$�w�M�DX}�[�z&Q?���A��'�l�9�/�M���ؐ�p��A�.�oB��8`Z�IJČ�@kԤĢ?2�5S�ĩ����{�����?��UP��߉NϸNt�^&��2�&M����d���g�x��$�v���D8v��;�zW�S0_�SgV��m��`��6�Ԯ{�5�P�o�����5t: �x��q�Om�vl��T$��lg��vZʱ�G�f'���h�.��r]u5������ ��g��wd�|p }2�'8Cn�G1�3�A0���w3�!���A�fn%�ޭ�#�j��:��)�3��A����]}����0v��]DS��y��d �&ʺLz+҉��GO2Fa|�ԝ��;+rlM�U�~�� ��L�^��N?��AX��n���ePB�a�q��48�h@b�d@�6ܣ��k��Y�%=ME{��4O�^^���ӻ�;���P��/���q�S�p� +��~��4��0�=���C`���X�=�#�������o�h2!g��og=D#�W_��s�X������C��p��!z<�8#=��|7e.wA��{$:O#��/>}�������x,�YLf��.�(�5�����.���*���o�+��o*��ݏ;���E�bL.9)Z����%^�9�^�Aέ��۔����E8��;��$щ/���"�5� ��t;��N3U�P�Dž;z�V�&=��Ԃ�^����"��L�=��}u`��b��"�|�w��Kl�N���l�.RtG]��(B/�I��X�~0B�Ī�=l���.��z�}⻑�h���$���uW_����|�������J��"�1nK��K�'��-����6���2Z#~�k��ڪ��V�Q������"����3���(��e&U~�y.@�UHzk�1-���qh�����2O��.���xs+'�e��]"}����ۖ. +,�w�{�w�{�u �I��f +�p8A��\^�� �Jv>�'�e�/���W���߲�EY�,;#�zf}P �Y�3q�a��~�o$�/�$rVG������Tæ�]�z3nT���m۶5�������O$�o/��<���fȞ�dxK8��6Z���8� �����*����Sh�U� ׆�l�0@����e����K %�EbF�br:;y+�-��������-�� +��4�|� �φ�&�l�Fgot�D����ä����UR�Ĺ��U�t�$�g5Aw���`���w�g.���-tï�g��l�۶R�M��2X8�b��?�FY�Qa���G�N,���J5��xT���+�h� )�{�gҊˆx�c�r[p�x�F�w���"g��8@�w<�~�V��3��JNyk�Iw���7h��@q(����L��p����p��K�"�d�_��/I��8��<�/I�q��^�����\��y0^@[�:�M���D�>�Y�莢��{1���q�Jm!�����`9,0�, "��1nc��]�[|3����f�2��3���E� QIcѻ���'�u��7DB��j&����O]�#�A)���o>�K��G�d����w ������+�2����}qĀ��H��=��"q���T�����"�|�������p��vî�_�[=�zho���^�g'&�E|�ƴ`�']�yy �o|��u��'�g��6��d��P��;4 aNj��|���"��H=>�G�+��n3��OP� �߯��<��{M�t�ST!�����@����� �.AT �%�+�>r3��8�?P� ��?/��BO<e<�e�T�Wq����yO�E��Ƈ-�}� ��^k�ы���^��(���E�Qo���lE�|�..d9� 6�i���9,���TM�(�l��bI_�ƍ*�,����Ÿ�x�ԇ����v6fncK[���1�|f� ��A%�R�4�\��ŪsV-{����,�,oS�W��p����V���;��7�E����/N�oR6��IL������6�E����Ñ�'��� }������u���#>Ld��K�1 +��h�� +4��4�=��,�r+��Z�6� ������y��"'K���w9�.���1�Bub�팃�0��gHx R�}z���X*!������� �b�� +=bx�o�ߣٴ��̬S�?}:��Ղ�4M:�K��1�w�q0o�ֈ ����epˤ���O<� +��?f�XI��<� +�t�0��r��8���dบD�d�YO���3�"��M��U� �� ]5 Ĭ�04^��>�8�4��g�S`� ~�^�n)靖����WMD/�}�]h7a����"?F Wg�2\?u�f� �!l�H��Z���5�A�J&E$\���o������ֵ�nE[��w�Z����oRJ��o�I�ڸz��I0z彙��J�A��=��֙D2�._�ö<l�ն�$8l�æ<l��ٔr�m��O�N���>�ߣ�����83['�ߟ�����m������,'f�mnZmG��$�I!T �u'�!�1ͺb/�V�3�������xtz��H8n�#Dm¸?����T2kQ�uHᎊ<�,R��p�V�T2�nA�:4�^���e'�K�n���������X�G@.������������}�����_���n�=��?r��fP�a���B���p�Z�\I���V�_�Q�:���U6�[��_�%��J`�39��`�0����r�$w�� {�OW� �t�L�l5tL�ndN���B�����RN �h�A;��ԣw�1���:C�W���`��ϱڐn�_)�J2�n�� �|�oL�`*|��������������!f�����9|���d"w3w��;c����|T��t#�eqZMœե�9��UQ��� YV����� {�EP'c����؝J�s��w=mת�f`���rKBioɾ�̆��}��+;������&L؝���t�fS{�#`���7`�[�2�Be�B%���*��{&T,۸P9 +�1\Y) +���u�TP%H��Z��6�$F�N���4n- ��Q�L�5j����-���z��ڴ7�N.X:�Q����v�.B��)Pp� j��yp�w1��i�I��5���[ f/-&�ze�Ekl�i�F�Y�vy}F�{)�&c�ڋ ���X��i�̊tP�N��ד�Z&���%C��-j�a ̲r1�*�Y9���&͗uB��%�͔/s�e�2�0Vy�$��H����˺mI���%��zGy��jyx�<B�ޑGf����qy��Q�x�>��w�a +z5<� +�zޫ���R��y4EO��lļ�pᄴc�_J7<��������������Ӭ\3���w$��cR���F�"�<J�TP]?�"�,�z�<�%��Kb���CO���'����K �� �0�zE=�i�aP�Q,MfV䓠T#��@�'c��4N�(pUda��� <�m�VA��zY��a|�$�]�����q�M�x(�q��d��d���z2�z���du�h[�#������a�%���x�l�'�o�������l�,�����{�����;����#�W <�o��ϳQ���沥��C���A"Z�t艤�e����wC??H�lvSx�P�ڂd.�o�c��/I.ّ I�ɕ$�°\���2P�_�����ϲ�F�Wi�D{[g�lfLfr��Y)�$�I�`J�m� +�~8J(Q�����-�/�j!�71ڙ�Gh̋���X��,9r���cjڶ��E��� �B�`��&dKbjuFڻ�V]?i�g�p��K�� b�t�wA�FU7��p�p��\�I��a���*�/" �cM�9R��eE���>��/�,]��l���b;m6P;��Q�Ɍ�P��c��ĪH/��`V�G�b�j�bSgVJ�<�迄Zַ,�q�eZ,��-�����$����E����G�;���?�K��j��T���]�.�i�y�Q ��+4�Y&�<�iY� �7{9ԩD��R�H�%�%3ҩ�y�����I9��D�C�5�h�H���8���DqxN�Qg"x/8ƍ�2� ~I�����#�6��R'$��J��n=� �n0��B@7K�{�YB1���&Y��4�%�N�]6�P�;-I�\���fG�q�L��Fj_����7��ʊ<#Qx�!�P �hk/<9ٗ�cZ�N�*s����_�a��O ��G�Χ�`^"F +��*��6w�7����H3b��N�gl;�vH�ᚉ�0�;ˏ��M������: PV�G��H�:-�z�,)@$��"�:3�0>��\r��?�5u�,���Am�܅+G,D��}��Z2�ǎrsSB9�,�!6}kB�}��}ޥ s)�o�LSE���zG�ly�C���C{�����thW��se��s1���qP9v�F�u]�8�cM���M�$ON�6*F�p"�'��|�&}�N�p �$-�CK�V��ԺkK�#3����A��␦1�j@4�W��ȟ� h� ���:�J�r�*1���n���i��X���ݖXGz��u�p����;h݃�;ik@n�)qfO�咫To�����g�'[���:��� P鶖�O���i�i)8�y�����8 C��7 nUOq�T��Ry���l�����Ğ�Z��<��(��{s��=�NON���4K���]�<U�4���L��͜C�V.�k��얝#���U��o��[�\푃k�����j��d`I�< ������=ȡā�=�A����պ�٪��m�Cǟ�2��?!���ON{��aL�\��,ΘHFi.l�z]��y.�%�Y���V~�Y�X���Q�tL��UO.N���Ǔ�"�]�4cBD�3`����r�.{���1(�CDT���ZW鲖�yh�,�r�L*ccR�Y�+ݴ�+\vJC�O�2.�_�j�X���)8�\�� 1���U1l_�}%��U)}"�Fʎ[ld����Μ�4�k���E����k�Dv��o�n0Z��Փ�{����� _]�B��j4��Lm����A����Z���N�d��&��'Q?8���h"(L�#x}��7���ϒ|du6b�c�$�=Z��ˑ|��6�ߣ߿����,F�p�媣�R���tD�����ы,n�&��Nn�,_�Ax/5�:�� 6�$��LZ�`2`?.�w�F>��,���|��R�f4H@[t5�t�.�be䕞�d�o���_,�k�g\H�����LW+�����oM�ܤX�qL�S���1��f$l���Ӊ�gpBr=����ZrJ�*����@��<r��7 ��&x�B�z����1¥p:Z濅�o��^Y�BUx���6>���$[/��ra�J��$�0���;��`�p<�)e�A K +�������TȺ����8v7��^�\�9�R� I�[+4��~x��;oS��˲�Ʋ�_!�gU��և�l&Hf�] +Pf���4]R� +W��0�̭ZQ� !�\rH���Xϒ�בA\���ĥCKH�(6*�e�F�}�/ ru��������- Ʈ������!��< +� J�}-�)�V�3w~$m�0�6����m���#ς� +���ڲ�z-��u�V�&������M����[I�W�0� +�Yn�� +pj2)�����(��܁m>�%Xc�A^ȭ8d��kӇl�!��W���%��Lⓞ��Zպ�d3�fd��5 W+�CS3��ZY�f�(���' +��V D�����5�<4�|�Uh�q�%�Ef,���a�˲����_�����@X� :�t,�]���������dͺ���JI���Q�Q�Yj� }�8�#�9`�s�D�����zm���L,A�\�ğە(;���N�e��X2;��%ɓ��a4��"H>��0�ͣ���)�Z*39Y���XVK)�=��H��D�B�Z��|�ϰ�-6�dMX�ɛ����:��E�VYǜ���'m�jj�|Ӗ-|6�<,����xN� +�`Y�p��O4�� +��C�:�ԋK6�� g;m+[l�Q���R��α�>��!g�U�ji#��uZ�3�l>�U��<&�ɵ���o��:Vɷ�T��|+�>r�.RےQ�mrЀ�d� n��]^��m[����F�t������zWU�9ߩ�R�0�d��|=�����m��B�Iy�K���?dJ-�j�J�wW�{���s��b��z/Gs:kk�GF�e�%�@�=�L�~�'%�lח���Q�� k�eɵ8��ā6z92�OJ���~R6�� +��4}/Ж;&[h�����o��{�Ƒ��~ +c���`�c˒_9`�2���%�A��C�Cm��=q�?����Ǘ$R,>$��<���(���?V�Ūd�['}4v�'�-����}N���R�B�g +��8�wO��^'Gܨ�O������X��s���1���-��YZ�:a��,H_��h��W�f��r!@[ěE�����?���ҧ�t#�� +z>u(�����8��Rbd�8������!.�o�)WL��z^,QqJ�!G_@�!�����Snq�vT��4Dֱf��Aw��]����{9�+h��ꌧ��\�N�����L\w5u@ �E�8�d��7��Z�l�W�y�[.x{,���r%`����@q�ʨD\(C&��@?M�2��>P��Mg�2(7M.T�6��|�|i�*?���g�����z~ Ɗ�u/��K�����Lf���N�o'��NS|�*Bu�b@�d���c�+C�{A�Qi:%��E����0�C0)�֧���8������Q�lc��/;۸����l��6n�y�K����]���5�����W*[&Ņ-6W����Q�30!L0+Le��zJ3HI�H���W���{%CA��/v�_}�o/V�@I��ZJ�JJ�=Ռ��1;��m�k��{�B���r +�M�}�~��z�×2�b�%^����u*�sn��Z��m���0s4�7�y����z� +�?����r�����t���?�����7�c�Φ9~LΦ�V�Aܹ����O�� j����E��-Il�f�h$�F7c43c�%�Z3�(�2c�v��um/�5��C=��;�r��li�I�+]i��"�Eէ� <L�ݬh������92�Z3 2�W�_����d��Y-@g�nf�f��3�O[b�3?|�>1H*��j�ܼD�yA,hZ��b{�$�q�k���b{�G�/M�H?����>��%�X\J�W�`��Z�!1�Z1=_p.���)�g�%������)�5~C1m@ydž(Oz���g��~����c�<�߱���D���C;�v�AG�A�V������%���_���er���}ڲ�T�r�VM>����hfw��Ѐz�v@���������3_z�f���v_�wSa?���������z� qn�<I���#O���a��*��.K���P6�rvo�,[yGo6����Oq#�/Ȋ���#�]<$�O���1g�c$T �j�O����`����3Px���l�vp63' FRRi��}.V���t���v\�@]��ke��9�4���\O$˶����`rF��i��N˼A͐�6�A����ޑ���(Q�t���&�p�����e��y���E��� �KɹN�E����s�VW��Q�;^�g\�<^�g=�X"�Ձ�`0�#��<ɨ�������n���f~�dm� +�L�H��=kE��Ƭ�T$$:d;����m����C�r���6��pJ�X�L���Ь�$sbʝq���e}"t��]��I�����t��� + .j[�U��j�Qu�2�ll��, �|�1�>�Fc�v��x�$��GZ�c��8*4>UMt�\~t�Tf�}����6$wv�~�~�W�O]�̶�a�����x\ ő��f����W��H@YEь��*��Q�GA�S�i��]�V�%���N��d�E����x:��M���}.��#S�L�Vx +����L� v���+�D���:�=�9��`��aJ��~�A�� bX�m���U���|��������h� �\�A���O�M.�5�'Λ��^�RE�́Ep�`��.��]�@�D���$��}���Q!3c���Z�M\/b�+��W�f�nʌ#���r&��eU6� HD +��Nr��:M�g��p �a�0M�I��E� ;ڞ���*��Ĝ��{�q��72��l�]y�i6'��1��N +h#[�I�]=��@�K=��@+'���F�����5'����� �N*1����`^���̘��F�{ǭ�9&=���1�#�1T���1��昋�crܝg�9���aMq�b��^Ǜ�.[iꑜ���G!h�%'�C�ʲ���������zJ�mozq����us�t4���\����TPKO[�Y�i�H[`�0�� ���;�01�O�a��1r21�*O�����\�� ����-��#� ���smń�Vڔ79�^�zq+�@��sx�-�\y��kc�G�����KC����ak6G[��jkB1МoM>�q�8��> �R����-p�<�嵕��Q�ų���}���x�E|����(�}x��Oh��W������Y��\ڡ��̕#����֙��H6�M�e2B52B+d���< �������S�n_�d��q���1#l3B�̈�̈���c�YS���̈df�!�&����8m:h\ 4"wЈZ��+4���.i���:�m��pnh��s��^�H����C��!���2���Td}!���������jj�����-�Ԃ�x���k�,��y��}�lN?�������l<�tG[ZG�WJ�p˭u`� ��VQ��X0�0AI���G��n�bN��?ߛ|����Ɍ�-��s��[X�J8�L (��S���s?���MG���'me߰$�"�H +��o�����s�����k���������r&uh��p �c��0��![]p6�����>+��*� ˩ci�n|/ѨSx8�Х�B�3v��S�Z �0t�+�1]k����7oB�ѫy��-b� V���ƛ.@�r^��>D<��۶Զ�f��k�����:n�\-h '�XԵy�b�x�l�<��5_&��vwodT��5�l��KqY��[ʷ��)�ّ�ed���G�%�H6N>k�M/���40�B��d���|���ƕv��1ltJiVH�����/h�:��c#x����>""Y˼TIy��Ҍ��@����o^h�Tʄ.����Ȇ��K+n'��*�����pç�N����O�����T&Z*���2��7�5��<�I�_���V(c�_���A��h��D��^����/�c���h�T��6��FE�Δb�<�4#�L(�X!i3��Pʌ3�@�c!KsAZqK����Kr��[ٱ�e,�ݭr�IS�<�����f��X�H3����2�W� +H��$��(m^���!̯:F��cu,�����g��i�� ��j�A;�v��U��Y0���IM��$�����=���Z����=M`3�K�\Lk1�8�g��(=�>n��o�ۏz�I�L�op��M`�M�xӊۉ9��_�v|kZ��`��>sqoiڱ�fz�Zk�Z����� x"J8.Q҉V�I�� T�n�:�5gځX���,�]~���L]o��+���:��)��l�_.~�W�e"�����)Y�sp�hG�ʑK����DZ��(7�ΓU��8�8;���9D j�G����0��a9�)^5eGuƟФɰ +�ivM�{k_Ia?F������s: +�Ob�Ǒ���I5�,�"�����%�H#X#���Iؿ*oa�#��N����C0�x->�2�<�C�������y|w��=��u��bpE�\��Z�}�?�g�0�N0J�3_���u�xO9���7�_ +^ 5!����!���wk�.-&��]�K��D�����+B�_[9�yA4�n�@8�`����㲁����?�?�O>iC��R�̃��"��0�,���1��=����dZ$��#�>c�['���l�ބ��%�I���dA��H��$�c�h,D�p\=��,{���e����1�6D��_�%}���&鸃2�93�p �Cr�a:zBc(������q�..��En�*�����XtE\���Yp��'~����5�đ��e�Ej���L\i:PN���`D���Lc�W���aC�CNɐ��W��rA^=h`�z��z��Xgi=C}����Q���.��lZ S{Ӫ ~�/ �c^�����M*�B>��긺O��V��%�!g\#��L!EE8�Tbʠ������#�C��k7�n�6�E���F�n$�;I +�p��ğ��c5��R�i�SH^�O;\��G����ݮ�y�ӮB�E�m�M�����٫UCLV|����A��8V�h�gXg�+\����~=�O!9��7�D3�F��Nâ�u��WK�V��w-k�QgE���8�i��3%}HnH�BoX��:�<K�R��itL��O�-��u`��A�?�'�E"��>������]��������]�Y��'�����M���:���)�qZY���S`�ײ\'��n��H���k'o�Җ�W;[�fg��f[��r"�Q�JQ�R����ҼX�P��c~s�LAN~�Z���7�b�"�?�z�N����<_p�:�- +���z&>��W�s9AN�d86��L>Oo�@��v��-���Ox����\������`K�Z�ǚ�҆z�?�7�m��'�%���i��ٶ�n��w��G���f/�}��I��n�h��?}♴� @X +��7g̣$6��1o\Aj��m]�xۤaW%�)�t��=���&T�������HO.�[�XVp�^�[�m-Ù�P<@��\��]Տ8f%���s[B_ +��>�M��l��W�R�#w^�;KB�����a1�Ԉ�����?� }0�:�$R��U���}��׃��.�`Gd�]*��pg'�-���p����}nK�q����Nk�)�u�)�(�.Ј����{N� s=�]'����~���]�`�*~l(��d�-�@!o#�������j�_����F�g���E�pQ�w����@$�0����V�-)l%��5�Uį��,�5,4b���V�.XW�YH��ԲT���$��;KZ$_�����i�H�@�Ɗ�U.����C��7�Uh�P��������e6:�YýX)_���w�E�HR���E�J��6�9�V�����Tз�7픬��q��(�P���&<��#�z�J(�q�~���P�]N�A������!&�<��mB�?����f�F˔/����ػNz��m-;l�[W�b��Z k�Z:Yo����,Ao���P������x� +cT:�2���ИjL�[�����O�|Y�c��a��a41�� ��ί�͓������f�9��T���F��X,�� iI'����;3�ަ1�n}��ޡ�h�p4=�@�ŭ�����ӑF�/O5 T�z]V��!������Pݷ5MZ�["�NohZ|�w���6��B�kJ1���i%���h��їn����^���;spwWr��wb�@�5������T���m���s��/��;���a/8�UC�['���g/�-�`�a鍂i4 z,aC�x:����.�=.��L����+���!9�I)~��lyz���16�Cb�SH=Y��ԃ�y\G�7D���}2OmTvH���;�������WK�QRã��Ae�m�Q���FKV�P�=�w�G���4��8���0�*>���,}چ�>/FG����+~eQK�z��1����C�bEg ����L,w>K�6�S��Nu�D�V��AVS��HK�Q��3�sr�6=�n���_�� �|\��9��d����V ��)��X(h�H�����_�?�(5���B��UI�R������?vKE&��b�݆�:�i�C%�&S`�ύ�4���d�Q*n�U���v���G��&T\o�_��+�W����K����Jf8s�5�hB��"�6D� �����З��G�w�$˃m�d�a�D��n�ڝ��]�S����l������\EK�B�p� w.=Tͫׯ{|���F�h0s�� ?8!|�I��]����eƥ7�6s0���J_�%/����#LTk�i��@�F9�ڋxs���Oz����f�7s>-���|�m+E���b�7��mEd8u�X8Qo� �zwU73���h�Ư/�7ǡ�q�Uٴn��+�n{�Pw�X�50�-��NA��5z����a���a�����VK��/���D�ط��eƨW.��+˃�%�o�r���wg%�D���2QђjL� +���/�g�@�s�ŕ�[ȝb+�x.�DN"��' +b�F&jƨ7&���n.k.;;07m�a�б�y%�5F�ļZ)��kr�G�!�}�G�������巨��O�醠�]�_TU���rR���S +e����{�r�Tg-P���E�),fXԲ���Թ��@�"s]�9+�OW+�,��G�R _��Df�ͷ*�0��xog�˺yzA�D�uڃETXP���C**HBNү/Q��w4��ϑ��N�i���W�G�<��G�8�ʣ��Fޒ�u\�=�48�w�E���6���#��<�Lg�U�� + +���l�Q��ʉ�<7���@(z�o�v3 Ko��aK�k��'��&l�kPc�k���^\'@{���n����ۍ��� [pj� +���r�uk���es�!ל�iϯ��1������ ��e(l#]���?�g]�b#�,����3>t|k�FX-��i�>`�3X���w4�7����9U�=�G���T�[N�$#5\�Zx�N��u�Xbfk�� R�{�k��@�ԯ���Jtx�Ѳz�`�CKuS�R�d ���}�\�:C�3�5�2C������BC��~�MS�M%���rA�LDh �d�c]N0{ҙ�v���9�4��PG�/`�o�s���t���w��G���__�+�����y{s����a��?�W�w��!����l����ߨ �)h_��v���d���l��d��I�L���9|��&����ǒq0�(^q�n�����f���H[$|�����kL�&T��� 1����6|z�6����ai������!vT{@�=te��ù���VK��_��<@*x�� Sg��_�C���n��,�6=���1����$^j�U�]h�����T[q=8��L�F׃ߒ�J,�n�p�t�w���M�O&���a{s���82o��l@���������6E�`�w�f�v�i��U~�l�gJ>/ȵ��Tc�q�^3j�+�D�p�-��%l���Hڟ/nsr�n�[L%/w�s�!~z���՝��ʈɩ���?iQ ��S�V>��Vw#�� 㵖>����x6c���W +L�����-�����n`����J^�3�5�Tk�9�AD+z:���$Y��N[�Z�ű�|C(����`�hi\g�eoj#� �˔r@,d�+��w��!��; )V\�F�Y�mV��@����B������(Ȏ�1GG��Ӎ\_��z�A�+*����F'��4���g�&4�N2u�����é3����8v�ڌ�� d�q��Df��*��f�*�����r���L١���Q�\�tv$i�����<Z�g�Ր��HÁ�b��OU����N^.TlBED�")���+1h��hϵŇ�<�9QI��<'jAo�n����J�'����c����P�u���9�����=$�O?ī5�+���l�#��ݍ�`:�ݐĽ��>�X���g͇��_��;�ޅ}`r�_����݉��{�tX��X/�b��X\Џ_������y�iư_�i��h[lW���N\��;��$_m�0�a�B�y1v��,���!���wH����.���p�d�['�B%��,S8�7'Ֆ�K����3�����sp&T�h�IO��.T>|�X`~ơ|�h�ҏb%H�#Ū ��3G7�|Bg�Y&��E�=�����w��%T[k-l��u#���e��V�H6����{�Zֽ^��]��R\�5�>��!������ +��&dIc�'�r�R-�3�BM�t��E�i�Q��\��C.6�0f��� �} 0����rj(�S�£:D�/�,t�"pA��<�L���8��zΎ�K��e����~�Ӣ}V���8��ݗ���p�,Qm8�o +�*:Y�ư8B�ҫXQ.�C���{h,oO�c�V�.�(�:���N�7�ڱ�?#O�7�4G�[`��b��N� +���(7u��4�ID^��:�,gj��~���7�L���}��~�p<�?��ɂ���x�=3ԇ{h��czE��xF�4o��= `?��c%�(ڐ�, !Y*���>�(ġm�?�GR�]a0��o�c�p����h�Q�(8��|#�0~�\��S��KYx��C�V�}�/�yE]�q����8u�Iu+�n88����X;��m����v���S�j��J�H��g���j���*��9~(�ͣ?���jc��Q�s����0GM�E�C�������m� q�h�S�����"1��Z�o���NرPh�t�ڊ) +j���<IV.5���]{h2�w�+�D�v�W����wX�Z}�W�Sѩ�X��1��4���г���%�FX���!LNL$)���E(�BK��2�)�x�j�%�.�AFݵ]\��5(�'�w?\�pF���-WIf�hQo�A�K���(Y1( A��~A%kA$�/ץ�U�v��i��|�ݚ ]�"�=��kqC�������!��,�8�c<��u��Z�C�|�͵p�:�2�q���P��A���Վ$_���o���o+W܁��vҐ��-� +g��;��Z��at��Y�|.yi���k�� �^��{;�ze2ܼW�fx�q���&�+&���EQ�t��������d��AgU��_|J+:���08[� 2u�=�{�>�G(i���-{:d�R�1�+����n:Xj����q�V�^��.�칰��'R9$�ާ�i��۠��mF�l1_Z®0���A��~�Zv ��[B���c�4�1́�TR,�E��K������ ,_�fP��"�!X�!�UCĂ���{�?�ki�T:� �g��$��be�`�,h�a +�m2_��_��}MJH��n�!�aK���/~��Tt����Z~�Oj�O��ۿ��)PeU>h��eFۦ��Q�q��")J $��Qt���v��]����$0�7��j��}��!�6,���j�����gdg3���%�_��A��OK��)�p `�p���v97#��0QG���g��c�o' ��0�kd ��J��j�T���69�J������*�h�lp���Qg���( }\���kӜ�fP�`O�d�X�İ�D����Cfz����Gv�I4���(�����]����Ƃ��<��C饣t2��"ΡbOݨ��S1#Ӻ�W��055i^%��DK*y�sκ�Ew��bT�h�����'709:��(�\JӐ�5�K�|1��\�)X�p�����U]sQxB���y��$���hz�C����4��X-�9��6�K�0���PI��>�~���_���$����'�����4.�<C|��~�ݡ���o��a7�d����~�����~�aeh3P/,���<>,V+�Vz���ۜ�kR��fW���6%�p4�oa8�W�����{D�ۂv$;D!mCn���hӀ��wv��ꖯ�;:!�W���S�}� �*yQ4�?�����o�.H���t�m=�}/����f��7��k*��"��)A���F$Ͳ�f�U�.� 6�倻�9�n7ɲp���{�Fg�6�E�|���N{��>Һ`�$�ܥ�<1��毃�@��Av��Cn��_��pZ6x&��ȼN�2��o�M��$Eۂ���Z�b��$�3�=�]�����!O��<^�b�1�3��|�7nO��ը�6W��j��xs��.����%�Ჳ.�C��K�A)��>����Y���]�NiOe�����T����o��!� ab [ ���f�n�<C�]:�命��r�ak + ���� +OuM��?cB�P�8��~<���x�M�ő�h �\f�H��'5#Y v����W��k��wp^�-r25��1rF}�R�O�bqڬ�%�� +φ�;����s��r�l�6�(кN+˫��'ls���M]�<Z̆�A2X^��,������"�]7��x8D�a�["~�+��-o���u_��p|M��W��zq5I���&X�����������T#���~�<�ԴFEù%� +����}/5JQ��B���B�4Ȅ=�r�ῡyW���4�`du��y�[3�W��I�HJr����r�rQ�-k���M��]e�z\4�����_�����֞�����߷�:]��.,~,��u�z(J|� ��ɼ�����ᝨ���h�a�%��M�v����T~�p��27O��'MSi���&*v�\�u��@]�mO� ��W\k%���� ��BWc!���W9��f"���-F�c!���{a�&W3�y��9��9�'�_|�i��2�?��y�y0�QO�H���X�je��+�z��y��u���Y�LF�_�Y���G|�y�{���h0 +���u�EN��>�(����4kH=M�����~&� +���/�������^��/������/6�����g˻�O/��_����������?�=���������u�?��/D����C|�['���G��������f���_/p���k�H���K��T����]S�w��������Ư~�����^�q�h`�R@r�c�����u��d�z}��O��uM�����19SЪ��j�jO�ҋ�[���g�"�N�gy�΅��$�L��v�Eِ�$��iF`v������vPyK�'� \ No newline at end of file diff --git a/web/core/modules/system/tests/fixtures/update/drupal-8.test-config-init.php b/web/core/modules/system/tests/fixtures/update/drupal-8.test-config-init.php new file mode 100644 index 0000000000..18c3dcf786 --- /dev/null +++ b/web/core/modules/system/tests/fixtures/update/drupal-8.test-config-init.php @@ -0,0 +1,92 @@ +<?php +// @codingStandardsIgnoreFile + +use Drupal\Core\Database\Database; + +$connection = Database::getConnection(); + +// Manually configure the test mail collector implementation to prevent +// tests from sending out emails and collect them in state instead. +// While this should be enforced via settings.php prior to installation, +// some tests expect to be able to test mail system implementations. +$config = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'system.mail') + ->execute() + ->fetchField(); +$config = unserialize($config); +$config['interface']['default'] = 'test_mail_collector'; +$connection->update('config') + ->fields([ + 'data' => serialize($config), + 'collection' => '', + 'name' => 'system.mail', + ]) + ->condition('collection', '') + ->condition('name', 'system.mail') + ->execute(); + +// By default, verbosely display all errors and disable all production +// environment optimizations for all tests to avoid needless overhead and +// ensure a sane default experience for test authors. +// @see https://www.drupal.org/node/2259167 +$config = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'system.logging') + ->execute() + ->fetchField(); +$config = unserialize($config); +$config['error_level'] = 'verbose'; +$connection->update('config') + ->fields([ + 'data' => serialize($config), + 'collection' => '', + 'name' => 'system.logging', + ]) + ->condition('collection', '') + ->condition('name', 'system.logging') + ->execute(); + +$config = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'system.performance') + ->execute() + ->fetchField(); +$config = unserialize($config); +$config['css']['preprocess'] = FALSE; +$config['js']['preprocess'] = FALSE; +$connection->update('config') + ->fields([ + 'data' => serialize($config), + 'collection' => '', + 'name' => 'system.performance', + ]) + ->condition('collection', '') + ->condition('name', 'system.performance') + ->execute(); + +// Set an explicit time zone to not rely on the system one, which may vary +// from setup to setup. The Australia/Sydney time zone is chosen so all +// tests are run using an edge case scenario (UTC10 and DST). This choice +// is made to prevent time zone related regressions and reduce the +// fragility of the testing system in general. +$config = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'system.date') + ->execute() + ->fetchField(); +$config = unserialize($config); +$config['timezone']['default'] = 'Australia/Sydney'; +$connection->update('config') + ->fields([ + 'data' => serialize($config), + 'collection' => '', + 'name' => 'system.date', + ]) + ->condition('collection', '') + ->condition('name', 'system.date') + ->execute(); diff --git a/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.es6.js b/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.es6.js new file mode 100644 index 0000000000..b3a3af7db9 --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.es6.js @@ -0,0 +1,22 @@ +/** + * @file + * Testing behaviors for tabledrag library. + */ +(function($, Drupal) { + /** + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Removes a test class from the handle elements to allow verifying that + * dragging operations have been executed. + */ + Drupal.behaviors.tableDragTest = { + attach(context) { + $('.tabledrag-handle', context) + .once('tabledrag-test') + .on('keydown.tabledrag-test', event => { + $(event.currentTarget).removeClass('tabledrag-test-dragging'); + }); + }, + }; +})(jQuery, Drupal); diff --git a/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.js b/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.js new file mode 100644 index 0000000000..8e0d8108fe --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/js/tabledrag_test.js @@ -0,0 +1,16 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function ($, Drupal) { + Drupal.behaviors.tableDragTest = { + attach: function attach(context) { + $('.tabledrag-handle', context).once('tabledrag-test').on('keydown.tabledrag-test', function (event) { + $(event.currentTarget).removeClass('tabledrag-test-dragging'); + }); + } + }; +})(jQuery, Drupal); \ No newline at end of file diff --git a/web/core/modules/system/tests/modules/tabledrag_test/src/Form/TableDragTestForm.php b/web/core/modules/system/tests/modules/tabledrag_test/src/Form/TableDragTestForm.php new file mode 100644 index 0000000000..a5f1f4630a --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/src/Form/TableDragTestForm.php @@ -0,0 +1,157 @@ +<?php + +namespace Drupal\tabledrag_test\Form; + +use Drupal\Core\Form\FormBase; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\State\StateInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Provides a form for draggable table testing. + */ +class TableDragTestForm extends FormBase { + + /** + * The state service. + * + * @var \Drupal\Core\State\StateInterface + */ + protected $state; + + /** + * Constructs a TableDragTestForm object. + * + * @param \Drupal\Core\State\StateInterface $state + * The state service. + */ + public function __construct(StateInterface $state) { + $this->state = $state; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static($container->get('state')); + } + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'tabledrag_test_form'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $form['table'] = [ + '#type' => 'table', + '#header' => [ + [ + 'data' => $this->t('Text'), + 'colspan' => 4, + ], + $this->t('Weight'), + ], + '#tabledrag' => [ + [ + 'action' => 'order', + 'relationship' => 'sibling', + 'group' => 'tabledrag-test-weight', + ], + [ + 'action' => 'match', + 'relationship' => 'parent', + 'group' => 'tabledrag-test-parent', + 'subgroup' => 'tabledrag-test-parent', + 'source' => 'tabledrag-test-id', + 'hidden' => TRUE, + 'limit' => 2, + ], + [ + 'action' => 'depth', + 'relationship' => 'group', + 'group' => 'tabledrag-test-depth', + 'hidden' => TRUE, + ], + ], + '#attributes' => ['id' => 'tabledrag-test-table'], + '#attached' => ['library' => ['tabledrag_test/tabledrag']], + ]; + + // Provide a default set of five rows. + $rows = $this->state->get('tabledrag_test_table', array_flip(range(1, 5))); + foreach ($rows as $id => $row) { + if (!is_array($row)) { + $row = []; + } + + $row += [ + 'parent' => '', + 'weight' => 0, + 'depth' => 0, + 'classes' => [], + 'draggable' => TRUE, + ]; + + if (!empty($row['draggable'])) { + $row['classes'][] = 'draggable'; + } + + $form['table'][$id] = [ + 'title' => [ + 'indentation' => [ + '#theme' => 'indentation', + '#size' => $row['depth'], + ], + '#plain_text' => "Row with id $id", + ], + 'id' => [ + '#type' => 'hidden', + '#value' => $id, + '#attributes' => ['class' => ['tabledrag-test-id']], + ], + 'parent' => [ + '#type' => 'hidden', + '#default_value' => $row['parent'], + '#parents' => ['table', $id, 'parent'], + '#attributes' => ['class' => ['tabledrag-test-parent']], + ], + 'depth' => [ + '#type' => 'hidden', + '#default_value' => $row['depth'], + '#attributes' => ['class' => ['tabledrag-test-depth']], + ], + 'weight' => [ + '#type' => 'weight', + '#default_value' => $row['weight'], + '#attributes' => ['class' => ['tabledrag-test-weight']], + ], + '#attributes' => ['class' => $row['classes']], + ]; + } + + $form['save'] = [ + '#type' => 'submit', + '#value' => $this->t('Save'), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + $test_table = []; + foreach ($form_state->getValue('table') as $row) { + $test_table[$row['id']] = $row; + } + + $this->state->set('tabledrag_test_table', $test_table); + } + +} diff --git a/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.info.yml b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.info.yml new file mode 100644 index 0000000000..98d6bb4b96 --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.info.yml @@ -0,0 +1,6 @@ +type: module +name: 'TableDrag test' +description: 'Draggable table test module.' +core: 8.x +package: Testing +version: VERSION diff --git a/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.libraries.yml b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.libraries.yml new file mode 100644 index 0000000000..87876c3c2b --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.libraries.yml @@ -0,0 +1,6 @@ +tabledrag: + version: VERSION + js: + js/tabledrag_test.js: {} + dependencies: + - core/drupal.tabledrag diff --git a/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.routing.yml b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.routing.yml new file mode 100644 index 0000000000..1bb88ff12b --- /dev/null +++ b/web/core/modules/system/tests/modules/tabledrag_test/tabledrag_test.routing.yml @@ -0,0 +1,7 @@ +tabledrag_test.test_form: + path: '/tabledrag_test' + defaults: + _form: '\Drupal\tabledrag_test\Form\TableDragTestForm' + _title: 'Draggable table test' + requirements: + _access: 'TRUE' diff --git a/web/core/modules/system/tests/src/Functional/Update/WarmCacheUpdateFrom8dot6Test.php b/web/core/modules/system/tests/src/Functional/Update/WarmCacheUpdateFrom8dot6Test.php new file mode 100644 index 0000000000..663ba96bdb --- /dev/null +++ b/web/core/modules/system/tests/src/Functional/Update/WarmCacheUpdateFrom8dot6Test.php @@ -0,0 +1,88 @@ +<?php + +namespace Drupal\Tests\system\Functional\Update; + +use Drupal\Core\Database\Database; +use Drupal\FunctionalTests\Update\UpdatePathTestBase; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Updates from 8.6.0 with warm caches. + * + * @group Update + * @group legacy + */ +class WarmCacheUpdateFrom8dot6Test extends UpdatePathTestBase { + + /** + * {@inheritdoc} + */ + protected function setDatabaseDumpFiles() { + // Created by installing minimal on 8.6.0, logging on as user 1 and doing: + // php ./core/scripts/db-tools.php dump-database-d8-mysql --schema-only=sessions,watchdog + $this->databaseDumpFiles[0] = __DIR__ . '/../../../../tests/fixtures/update/drupal-8.6.0-minimal-with-warm-caches.sql.gz'; + $this->databaseDumpFiles[1] = __DIR__ . '/../../../../tests/fixtures/update/drupal-8.test-config-init.php'; + } + + /** + * Tests that the content and configuration were properly updated. + */ + public function testUpdatedSite() { + $this->runUpdates(); + $this->drupalGet(''); + + $this->resetAll(); + // Ensure that drupal-8.test-config-init.php has run correctly. + $this->assertSame('test_mail_collector', $this->config('system.mail')->get('interface.default')); + $this->assertSame('verbose', $this->config('system.logging')->get('error_level')); + $this->assertSame(FALSE, $this->config('system.performance')->get('css.preprocess')); + $this->assertSame(FALSE, $this->config('system.performance')->get('js.preprocess')); + $this->assertSame('Australia/Sydney', $this->config('system.date')->get('timezone.default')); + } + + /** + * Tests system_update_8601(). + */ + public function testWithMissingProfile() { + // Remove the install profile from the module list to simulate how Drush 8 + // and update_fix_compatibility() worked together to remove the install + // profile. See https://www.drupal.org/project/drupal/issues/3031740. + $connection = Database::getConnection(); + $config = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute() + ->fetchField(); + $config = unserialize($config); + unset($config['module']['minimal']); + $connection->update('config') + ->fields([ + 'data' => serialize($config), + 'collection' => '', + 'name' => 'core.extension', + ]) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute(); + + $this->runUpdates(); + $this->assertSession()->pageTextContains('The minimal install profile has been added to the installed module list.'); + + // Login and check that the status report is working correctly. + $this->drupalLogin($this->rootUser); + $this->drupalGet('admin/reports/status'); + $this->assertSession()->pageTextContains("Installation Profile Minimal"); + } + + /** + * {@inheritdoc} + */ + protected function initConfig(ContainerInterface $container) { + // Don't touch configuration before running the updates as this invokes + // \Drupal\system\EventSubscriber\ConfigCacheTag::onSave() which lists + // themes. This functionality is replicated in + // core/modules/system/tests/fixtures/update/drupal-8.test-config-init.php. + } + +} diff --git a/web/core/modules/system/tests/themes/test_subseven/test_subseven.info.yml b/web/core/modules/system/tests/themes/test_subseven/test_subseven.info.yml new file mode 100644 index 0000000000..df9ad9c16d --- /dev/null +++ b/web/core/modules/system/tests/themes/test_subseven/test_subseven.info.yml @@ -0,0 +1,6 @@ +name: 'Theme test subseven' +type: theme +description: 'Test theme which uses seven as the base theme.' +version: VERSION +core: 8.x +base theme: seven diff --git a/web/core/modules/taxonomy/tests/src/Functional/Rest/TermResourceTestBase.php b/web/core/modules/taxonomy/tests/src/Functional/Rest/TermResourceTestBase.php index 3a1a5a241d..f303072a5f 100644 --- a/web/core/modules/taxonomy/tests/src/Functional/Rest/TermResourceTestBase.php +++ b/web/core/modules/taxonomy/tests/src/Functional/Rest/TermResourceTestBase.php @@ -356,10 +356,10 @@ public function providerTestGetTermWithParent() { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\taxonomy\TermAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() - ->addCacheTags(['taxonomy_term:1']); + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) + ->addCacheTags(['taxonomy_term:1']);; } } diff --git a/web/core/modules/user/src/Plugin/migrate/ProfileValues.php b/web/core/modules/user/src/Plugin/migrate/ProfileValues.php index 8399436c03..979f873f3e 100644 --- a/web/core/modules/user/src/Plugin/migrate/ProfileValues.php +++ b/web/core/modules/user/src/Plugin/migrate/ProfileValues.php @@ -4,7 +4,6 @@ use Drupal\migrate\Exception\RequirementsException; use Drupal\migrate\MigrateExecutable; -use Drupal\migrate\MigrateSkipRowException; use Drupal\migrate\Plugin\Migration; /** @@ -32,6 +31,7 @@ public function getProcess() { $definition['destination']['plugin'] = 'null'; $definition['idMap']['plugin'] = 'null'; try { + $this->checkRequirements(); $profile_field_migration = $this->migrationPluginManager->createStubMigration($definition); $migrate_executable = new MigrateExecutable($profile_field_migration); $source_plugin = $profile_field_migration->getSourcePlugin(); @@ -45,6 +45,7 @@ public function getProcess() { [ 'migration' => 'user_profile_field', 'source_ids' => $fid, + 'no_stub' => TRUE, ]; $plugin = $this->processPluginManager->createInstance('migration_lookup', $configuration, $profile_field_migration); $new_value = $plugin->transform($fid, $migrate_executable, $row, 'tmp'); @@ -52,14 +53,12 @@ public function getProcess() { // Set the destination to the migrated profile field name. $this->process[$new_value[1]] = $name; } - else { - throw new MigrateSkipRowException("Can't migrate source field $name."); - } } } catch (RequirementsException $e) { // The checkRequirements() call will fail when the profile module does - // not exist on the source site. + // not exist on the source site, or if the required migrations have not + // yet run. } } return parent::getProcess(); diff --git a/web/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php b/web/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php new file mode 100644 index 0000000000..fb98743393 --- /dev/null +++ b/web/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php @@ -0,0 +1,41 @@ +<?php + +namespace Drupal\user\Plugin\migrate\process\d6; + +use Drupal\migrate\MigrateExecutableInterface; +use Drupal\migrate\ProcessPluginBase; +use Drupal\migrate\Row; + +/** + * Determines the settings property and translation. + * + * @MigrateProcessPlugin( + * id = "d6_profile_field_option_translation", + * handle_multiples = TRUE + * ) + */ +class ProfileFieldOptionTranslation extends ProcessPluginBase { + + /** + * {@inheritdoc} + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + list($field_type, $translation) = $value; + + $new_value = NULL; + if (isset($translation)) { + $allowed_values = []; + $list = explode("\n", $translation); + $list = array_map('trim', $list); + $list = array_filter($list, 'strlen'); + if ($field_type === 'list_string') { + foreach ($list as $key => $value) { + $allowed_values[] = ['label' => $value]; + } + } + $new_value = ['settings.allowed_values', $allowed_values]; + } + return $new_value; + } + +} diff --git a/web/core/modules/user/src/Plugin/migrate/source/ProfileField.php b/web/core/modules/user/src/Plugin/migrate/source/ProfileField.php index 93a0430d68..7b4b7cb21e 100644 --- a/web/core/modules/user/src/Plugin/migrate/source/ProfileField.php +++ b/web/core/modules/user/src/Plugin/migrate/source/ProfileField.php @@ -2,6 +2,7 @@ namespace Drupal\user\Plugin\migrate\source; +use Drupal\migrate\Exception\RequirementsException; use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase; use Drupal\migrate\Row; @@ -33,16 +34,7 @@ class ProfileField extends DrupalSqlBase { * {@inheritdoc} */ public function query() { - if (empty($this->fieldTable) || empty($this->valueTable)) { - if ($this->getModuleSchemaVersion('system') >= 7000) { - $this->fieldTable = 'profile_field'; - $this->valueTable = 'profile_value'; - } - else { - $this->fieldTable = 'profile_fields'; - $this->valueTable = 'profile_values'; - } - } + $this->setTableNames(); return $this->select($this->fieldTable, 'pf')->fields('pf'); } @@ -105,4 +97,32 @@ public function getIds() { return $ids; } + /** + * {@inheritdoc} + */ + public function checkRequirements() { + $this->setTableNames(); + if (!$this->getDatabase()->schema()->tableExists($this->fieldTable)) { + // If we make it to here, the profile module isn't installed. + throw new RequirementsException('Profile module not enabled on source site'); + } + parent::checkRequirements(); + } + + /** + * Helper to set the profile field table names. + */ + protected function setTableNames() { + if (empty($this->fieldTable) || empty($this->valueTable)) { + if ($this->getModuleSchemaVersion('system') >= 7000) { + $this->fieldTable = 'profile_field'; + $this->valueTable = 'profile_value'; + } + else { + $this->fieldTable = 'profile_fields'; + $this->valueTable = 'profile_values'; + } + } + } + } diff --git a/web/core/modules/user/src/Plugin/migrate/source/d6/ProfileFieldOptionTranslation.php b/web/core/modules/user/src/Plugin/migrate/source/d6/ProfileFieldOptionTranslation.php new file mode 100644 index 0000000000..b3eef04f53 --- /dev/null +++ b/web/core/modules/user/src/Plugin/migrate/source/d6/ProfileFieldOptionTranslation.php @@ -0,0 +1,58 @@ +<?php + +namespace Drupal\user\Plugin\migrate\source\d6; + +use Drupal\user\Plugin\migrate\source\ProfileField; + +/** + * Gets field option label translations. + * + * @MigrateSource( + * id = "d6_profile_field_option_translation", + * source_module = "i18nprofile" + * ) + */ +class ProfileFieldOptionTranslation extends ProfileField { + + /** + * {@inheritdoc} + */ + public function query() { + $query = parent::query(); + $query + ->fields('i18n', ['property', 'objectid']) + ->fields('lt', ['translation', 'language']) + ->condition('i18n.type', 'field') + ->condition('property', 'options') + ->isNotNull('translation'); + $query->leftjoin('i18n_strings', 'i18n', 'pf.name = i18n.objectid'); + $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid'); + + return $query; + } + + /** + * {@inheritdoc} + */ + public function fields() { + return parent::fields() + + [ + 'property' => $this->t('Option ID.'), + 'objectid' => $this->t('Field name'), + 'language' => $this->t('Language for this field.'), + 'translation' => $this->t('Translation of either the title or explanation.'), + ]; + } + + /** + * {@inheritdoc} + */ + public function getIds() { + return parent::getIds() + + [ + 'language' => ['type' => 'string'], + 'property' => ['type' => 'string'], + ]; + } + +} diff --git a/web/core/modules/user/src/UserAccessControlHandler.php b/web/core/modules/user/src/UserAccessControlHandler.php index eff48c7c5a..b057b1ea07 100644 --- a/web/core/modules/user/src/UserAccessControlHandler.php +++ b/web/core/modules/user/src/UserAccessControlHandler.php @@ -4,6 +4,7 @@ use Drupal\Core\Access\AccessResult; use Drupal\Core\Access\AccessResultNeutral; +use Drupal\Core\Access\AccessResultReasonInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityAccessControlHandler; use Drupal\Core\Field\FieldDefinitionInterface; @@ -64,11 +65,16 @@ protected function checkAccess(EntityInterface $entity, $operation, AccountInter case 'update': // Users can always edit their own account. - return AccessResult::allowedIf($account->id() == $entity->id())->cachePerUser(); + $access_result = AccessResult::allowedIf($account->id() == $entity->id())->cachePerUser(); + if (!$access_result->isAllowed() && $access_result instanceof AccessResultReasonInterface) { + $access_result->setReason("Users can only update their own account, unless they have the 'administer users' permission."); + } + return $access_result; case 'delete': // Users with 'cancel account' permission can cancel their own account. - return AccessResult::allowedIf($account->id() == $entity->id() && $account->hasPermission('cancel account'))->cachePerPermissions()->cachePerUser(); + return AccessResult::allowedIfHasPermission($account, 'cancel account') + ->andIf(AccessResult::allowedIf($account->id() == $entity->id())->cachePerUser()); } // No opinion. diff --git a/web/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php b/web/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php index d8fe60e40c..6b544f4235 100644 --- a/web/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php +++ b/web/core/modules/user/tests/src/Functional/Rest/UserResourceTestBase.php @@ -309,9 +309,9 @@ protected function getExpectedUnauthorizedAccessMessage($method) { case 'GET': return "The 'access user profiles' permission is required and the user must be active."; case 'PATCH': - return "You are not authorized to update this user entity."; + return "Users can only update their own account, unless they have the 'administer users' permission."; case 'DELETE': - return 'You are not authorized to delete this user entity.'; + return "The 'cancel account' permission is required."; default: return parent::getExpectedUnauthorizedAccessMessage($method); } @@ -320,9 +320,9 @@ protected function getExpectedUnauthorizedAccessMessage($method) { /** * {@inheritdoc} */ - protected function getExpectedUnauthorizedAccessCacheability() { + protected function getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) { // @see \Drupal\user\UserAccessControlHandler::checkAccess() - return parent::getExpectedUnauthorizedAccessCacheability() + return parent::getExpectedUnauthorizedEntityAccessCacheability($is_authenticated) ->addCacheTags(['user:3']); } diff --git a/web/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateProfileFieldOptionTranslationTest.php b/web/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateProfileFieldOptionTranslationTest.php new file mode 100644 index 0000000000..d06b012b69 --- /dev/null +++ b/web/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateProfileFieldOptionTranslationTest.php @@ -0,0 +1,80 @@ +<?php + +namespace Drupal\Tests\user\Kernel\Migrate\d6; + +use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase; + +/** + * Tests field option translations migration. + * + * @group migrate_drupal_6 + */ +class MigrateProfileFieldOptionTranslationTest extends MigrateDrupal6TestBase { + + /** + * {@inheritdoc} + */ + public static $modules = [ + 'config_translation', + 'language', + 'locale', + 'menu_ui', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + $this->executeMigrations([ + 'language', + 'user_profile_field', + 'd6_profile_field_option_translation', + ]); + } + + /** + * Tests the Drupal 6 field option translation. + */ + public function testFieldOptionTranslation() { + $language_manager = $this->container->get('language_manager'); + + /** @var \Drupal\language\Config\LanguageConfigOverride $config_translation */ + $config_translation = $language_manager->getLanguageConfigOverride('fr', 'field.storage.user.profile_count_trees'); + $allowed_values = [ + 0 => [ + 'label' => 'fr - 10', + ], + 1 => [ + 'label' => 'fr - 20', + ], + 2 => [ + 'label' => 'fr - 50', + ], + 3 => [ + 'label' => 'fr - 100', + ], + 4 => [ + 'label' => 'fr - 1000', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + + $config_translation = $language_manager->getLanguageConfigOverride('fr', 'field.storage.user.profile_sold_to'); + $allowed_values = [ + [ + 'label' => 'fr - Pill spammers Fitness spammers Back\slash Forward/slash Dot.in.the.middle', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + + $config_translation = $language_manager->getLanguageConfigOverride('zu', 'field.storage.user.profile_sold_to'); + $allowed_values = [ + [ + 'label' => 'zu - Pill spammers Fitness spammers Back\slash Forward/slash Dot.in.the.middle', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + } + +} diff --git a/web/core/modules/user/tests/src/Kernel/Migrate/d6/ProfileFieldCheckRequirementsTest.php b/web/core/modules/user/tests/src/Kernel/Migrate/d6/ProfileFieldCheckRequirementsTest.php new file mode 100644 index 0000000000..ffa19a5386 --- /dev/null +++ b/web/core/modules/user/tests/src/Kernel/Migrate/d6/ProfileFieldCheckRequirementsTest.php @@ -0,0 +1,33 @@ +<?php + +namespace Drupal\Tests\user\Kernel\Migrate\d6; + +use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase; +use Drupal\migrate\Exception\RequirementsException; + +/** + * Tests check requirements for profile_field source plugin. + * + * @group user + */ +class ProfileFieldCheckRequirementsTest extends MigrateDrupal6TestBase { + + /** + * {@inheritdoc} + */ + public function setup() { + parent::setUp(); + $this->sourceDatabase->schema()->dropTable('profile_fields'); + } + + /** + * Tests exception in thrown when profile_fields tables does not exist. + */ + public function testCheckRequirements() { + $this->setExpectedException(RequirementsException::class, 'Profile module not enabled on source site'); + $this->getMigration('user_profile_field') + ->getSourcePlugin() + ->checkRequirements(); + } + +} diff --git a/web/core/modules/user/tests/src/Kernel/Migrate/d7/ProfileFieldCheckRequirementsTest.php b/web/core/modules/user/tests/src/Kernel/Migrate/d7/ProfileFieldCheckRequirementsTest.php new file mode 100644 index 0000000000..fb2d82a000 --- /dev/null +++ b/web/core/modules/user/tests/src/Kernel/Migrate/d7/ProfileFieldCheckRequirementsTest.php @@ -0,0 +1,33 @@ +<?php + +namespace Drupal\Tests\user\Kernel\Migrate\d7; + +use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase; +use Drupal\migrate\Exception\RequirementsException; + +/** + * Tests check requirements for profile_field source plugin. + * + * @group user + */ +class ProfileFieldCheckRequirementsTest extends MigrateDrupal7TestBase { + + /** + * {@inheritdoc} + */ + public function setup() { + parent::setUp(); + $this->sourceDatabase->schema()->dropTable('profile_field'); + } + + /** + * Tests exception in thrown when profile_fields tables does not exist. + */ + public function testCheckRequirements() { + $this->setExpectedException(RequirementsException::class, 'Profile module not enabled on source site'); + $this->getMigration('user_profile_field') + ->getSourcePlugin() + ->checkRequirements(); + } + +} diff --git a/web/core/modules/user/tests/src/Kernel/Migrate/d7/UserMigrationClassTest.php b/web/core/modules/user/tests/src/Kernel/Migrate/d7/UserMigrationClassTest.php index 85f0688d96..ce2b2b7dcc 100644 --- a/web/core/modules/user/tests/src/Kernel/Migrate/d7/UserMigrationClassTest.php +++ b/web/core/modules/user/tests/src/Kernel/Migrate/d7/UserMigrationClassTest.php @@ -12,9 +12,9 @@ class UserMigrationClassTest extends MigrateDrupal7TestBase { /** - * Tests d6_profile_values builder. + * Tests that the profile value process is added to the pipeline. * - * Ensures profile fields are merged into the d6_profile_values migration's + * Ensures profile fields are merged into the d7_profile_values migration's * process pipeline. */ public function testClass() { diff --git a/web/core/modules/user/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldOptionTranslationTest.php b/web/core/modules/user/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldOptionTranslationTest.php new file mode 100644 index 0000000000..66cee39b46 --- /dev/null +++ b/web/core/modules/user/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldOptionTranslationTest.php @@ -0,0 +1,72 @@ +<?php + +namespace Drupal\Tests\user\Kernel\Plugin\migrate\source\d6; + +use Drupal\Tests\user\Kernel\Plugin\migrate\source\ProfileFieldTest; + +/** + * Tests the field option translation source plugin. + * + * @covers \Drupal\user\Plugin\migrate\source\d6\ProfileFieldOptionTranslation + * @group migrate_drupal + */ +class ProfileFieldOptionTranslationTest extends ProfileFieldTest { + + /** + * {@inheritdoc} + */ + public static $modules = ['user', 'migrate_drupal']; + + /** + * {@inheritdoc} + */ + public function providerSource() { + + $test = parent::providerSource(); + // The source data. + $test[0]['source_data']['i18n_strings'] = [ + [ + 'lid' => 10, + 'objectid' => 'profile_color', + 'type' => 'field', + 'property' => 'options', + ], + ]; + $test[0]['source_data']['locales_target'] = [ + [ + 'lid' => 10, + 'translation' => "fr - red\nfr - blue\nfr - green", + 'language' => 'fr', + ], + ]; + + $test[0]['expected_data'] = [ + [ + 'fid' => 4, + 'title' => 'Color', + 'name' => 'profile_color', + 'explanation' => 'A selection that allows user to select a color', + 'category' => 'profile', + 'page' => '', + 'type' => 'selection', + 'weight' => 0, + 'required' => 0, + 'register' => 0, + 'visibility' => 2, + 'autocomplete' => 0, + 'options' => [ + 'red' => 'red', + 'blue' => 'blue', + 'green' => 'green', + 'yellow' => 'yellow', + ], + 'property' => 'options', + 'objectid' => 'profile_color', + 'translation' => "fr - red\nfr - blue\nfr - green", + 'language' => 'fr', + ], + ]; + return $test; + } + +} diff --git a/web/core/modules/views/src/Plugin/views/filter/InOperator.php b/web/core/modules/views/src/Plugin/views/filter/InOperator.php index e0add0fcb1..8a884898f5 100644 --- a/web/core/modules/views/src/Plugin/views/filter/InOperator.php +++ b/web/core/modules/views/src/Plugin/views/filter/InOperator.php @@ -2,6 +2,7 @@ namespace Drupal\views\Plugin\views\filter; +use Drupal\Component\Render\MarkupInterface; use Drupal\Component\Utility\Unicode; use Drupal\Core\Form\FormStateInterface; use Drupal\views\Plugin\views\display\DisplayPluginBase; @@ -263,15 +264,15 @@ public function reduceValueOptions($input = NULL) { } // Because options may be an array of strings, or an array of mixed arrays - // and strings (optgroups) or an array of objects, we have to - // step through and handle each one individually. + // and strings (optgroups), or an array of objects, or a form of Markup, we + // have to step through and handle each one individually. $options = []; foreach ($input as $id => $option) { if (is_array($option)) { $options[$id] = $this->reduceValueOptions($option); continue; } - elseif (is_object($option)) { + elseif (is_object($option) && !$option instanceof MarkupInterface) { $keys = array_keys($option->option); $key = array_shift($keys); if (isset($this->options['value'][$key])) { diff --git a/web/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml b/web/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml new file mode 100644 index 0000000000..6b256637a7 --- /dev/null +++ b/web/core/modules/views/tests/modules/user_batch_action_test/config/install/system.action.user_batch_action_test_action.yml @@ -0,0 +1,10 @@ +langcode: en +status: true +dependencies: + module: + - user +id: user_batch_action_test_action +label: 'Process user in batch' +type: user +plugin: user_batch_action_test_action +configuration: { } diff --git a/web/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml b/web/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml new file mode 100644 index 0000000000..0730941986 --- /dev/null +++ b/web/core/modules/views/tests/modules/user_batch_action_test/config/schema/user_batch_action_test.schema.yml @@ -0,0 +1,3 @@ +action.configuration.user_batch_action_test_action: + type: action_configuration_default + label: 'Process user in batch' diff --git a/web/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php b/web/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php new file mode 100644 index 0000000000..87e01bf5ea --- /dev/null +++ b/web/core/modules/views/tests/modules/user_batch_action_test/src/Plugin/Action/BatchUserAction.php @@ -0,0 +1,92 @@ +<?php + +namespace Drupal\user_batch_action_test\Plugin\Action; + +use Drupal\Core\Action\ActionBase; +use Drupal\Core\Entity\ContentEntityInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Provides action that sets batch precessing. + * + * @Action( + * id = "user_batch_action_test_action", + * label = @Translation("Process user in batch"), + * type = "user", + * ) + */ +class BatchUserAction extends ActionBase { + + /** + * {@inheritdoc} + */ + public function executeMultiple(array $entities) { + $operations = []; + + foreach ($entities as $entity) { + $operations[] = [ + [get_class($this), 'processBatch'], + [ + [ + 'entity_type' => $entity->getEntityTypeId(), + 'entity_id' => $entity->id(), + ], + ], + ]; + } + + if ($operations) { + $batch = [ + 'operations' => $operations, + 'finished' => [get_class($this), 'finishBatch'], + ]; + batch_set($batch); + } + } + + /** + * {@inheritdoc} + */ + public function execute(ContentEntityInterface $entity = NULL) { + $this->executeMultiple([$entity]); + } + + /** + * {@inheritdoc} + */ + public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { + return TRUE; + } + + /** + * Processes the batch item. + * + * @param array $data + * Keyed array of data to process. + * @param array $context + * The batch context. + */ + public static function processBatch($data, &$context) { + if (!isset($context['results']['processed'])) { + $context['results']['processed'] = 0; + $context['results']['theme'] = \Drupal::service('theme.manager')->getActiveTheme(\Drupal::routeMatch())->getName(); + } + $context['results']['processed']++; + } + + /** + * Finish batch. + * + * @param bool $success + * Indicates whether the batch process was successful. + * @param array $results + * Results information passed from the processing callback. + */ + public static function finishBatch($success, $results) { + \Drupal::messenger()->addMessage( + \Drupal::translation()->formatPlural($results['processed'], 'One item has been processed.', '@count items have been processed.') + ); + \Drupal::messenger()->addMessage($results['theme'] . ' theme used'); + } + +} diff --git a/web/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml b/web/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml new file mode 100644 index 0000000000..931dfc2b6c --- /dev/null +++ b/web/core/modules/views/tests/modules/user_batch_action_test/user_batch_action_test.info.yml @@ -0,0 +1,9 @@ +name: 'User batch action test' +type: module +description: 'Support module for user batch action testing.' +package: Testing +version: VERSION +core: 8.x +dependencies: + - views + - user diff --git a/web/core/modules/views/tests/src/Functional/UserBatchActionTest.php b/web/core/modules/views/tests/src/Functional/UserBatchActionTest.php new file mode 100644 index 0000000000..60c1d25587 --- /dev/null +++ b/web/core/modules/views/tests/src/Functional/UserBatchActionTest.php @@ -0,0 +1,44 @@ +<?php + +namespace Drupal\Tests\views\Functional; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests the views bulk form with batch action. + * + * @group action + * @see \Drupal\action\Plugin\views\field\BulkForm + */ +class UserBatchActionTest extends BrowserTestBase { + + /** + * Modules to install. + * + * @var array + */ + public static $modules = ['user', 'user_batch_action_test', 'views']; + + /** + * Tests user admin batch. + */ + public function testUserAction() { + $themes = ['classy', 'seven', 'bartik', 'test_subseven']; + $this->container->get('theme_installer')->install($themes); + + $this->drupalLogin($this->rootUser); + + foreach ($themes as $theme) { + $this->config('system.theme')->set('default', $theme)->save(); + $this->drupalGet('admin/people'); + $edit = [ + 'user_bulk_form[0]' => TRUE, + 'action' => 'user_batch_action_test_action', + ]; + $this->drupalPostForm(NULL, $edit, t('Apply')); + $this->assertSession()->pageTextContains('One item has been processed.'); + $this->assertSession()->pageTextContains($theme . ' theme used'); + } + } + +} diff --git a/web/core/modules/views/tests/src/Kernel/Handler/FilterInOperatorTest.php b/web/core/modules/views/tests/src/Kernel/Handler/FilterInOperatorTest.php index e02a8430c7..b7b76cef97 100644 --- a/web/core/modules/views/tests/src/Kernel/Handler/FilterInOperatorTest.php +++ b/web/core/modules/views/tests/src/Kernel/Handler/FilterInOperatorTest.php @@ -2,7 +2,11 @@ namespace Drupal\Tests\views\Kernel\Handler; +use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Tests\views\Kernel\ViewsKernelTestBase; +use Drupal\views\Plugin\views\display\DisplayPluginBase; +use Drupal\views\ViewExecutable; use Drupal\views\Views; /** @@ -11,6 +15,7 @@ * @group views */ class FilterInOperatorTest extends ViewsKernelTestBase { + use StringTranslationTrait; public static $modules = ['system']; @@ -195,4 +200,34 @@ protected function getGroupedExposedFilters() { return $filters; } + /** + * Tests that the InOperator filter can handle TranslateableMarkup. + */ + public function testFilterOptionAsMarkup() { + $view = $this->prophesize(ViewExecutable::class); + $display = $this->prophesize(DisplayPluginBase::class); + $display->getOption('relationships')->willReturn(FALSE); + $view->display_handler = $display->reveal(); + + /** @var \Drupal\views\Plugin\ViewsHandlerManager $manager */ + $manager = $this->container->get('plugin.manager.views.filter'); + /** @var \Drupal\views\Plugin\views\filter\InOperator $operator */ + $operator = $manager->createInstance('in_operator'); + $options = ['value' => ['foo' => [], 'baz' => []]]; + $operator->init($view->reveal(), $display->reveal(), $options); + + $input_options = [ + 'foo' => 'bar', + 'baz' => $this->t('qux'), + 'quux' => (object) ['option' => ['quux' => 'corge']], + ]; + $reduced_values = $operator->reduceValueOptions($input_options); + + $this->assertSame(['foo', 'baz'], array_keys($reduced_values)); + $this->assertInstanceOf(TranslatableMarkup::class, $reduced_values['baz']); + $this->assertSame('qux', (string) $reduced_values['baz']); + $this->assertSame('bar', $reduced_values['foo']); + + } + } diff --git a/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php b/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php index 9e303dfb92..a9ec2475b6 100644 --- a/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php +++ b/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php @@ -42,13 +42,7 @@ public function testFilterCriteriaDialog() { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); - // Use the 'And/Or Rearrange' link for fields to open a dialog. - $dropbutton = $page->find('css', '.views-ui-display-tab-bucket.filter .dropbutton-toggle button'); - $dropbutton->click(); - $add_link = $page->findById('views-rearrange-filter'); - $this->assertTrue($add_link->isVisible(), 'And/Or Rearrange button found.'); - $add_link->click(); - $assert_session->assertWaitOnAjaxRequest(); + $this->openFilterDialog(); // Add a new filter group. $create_new_filter_group = $page->findById('views-add-group-link'); @@ -71,6 +65,38 @@ public function testFilterCriteriaDialog() { $this->drupalGet('admin/structure/views/view/who_s_online'); $page = $this->getSession()->getPage(); $this->assertNotNull($page->findLink('User: Last access (>= -15 minutes)')); + + // Add group again to test drag-n-drop. + $this->openFilterDialog(); + + $this->assertSession()->waitForLink('Create new filter group', 20000); + $create_new_filter_group = $page->findLink('Create new filter group'); + $this->assertTrue($create_new_filter_group->isVisible(), 'Add group link found.'); + $create_new_filter_group->click(); + $assert_session->assertWaitOnAjaxRequest(); + + // Validate dragging works correctly and the new group will contain the new + // filter. + $dragged = $page->find('css', ".tabledrag-handle"); + $target = $page->find('css', '.filter-group-operator-row'); + $dragged->dragTo($target); + + $remove_link = $page->findLink('Remove group'); + $this->assertFalse($remove_link->isVisible(), 'Remove group should be invisible after drag.'); + } + + /** + * Uses the 'And/Or Rearrange' link for filters to open a dialog. + */ + protected function openFilterDialog() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + $dropbutton = $page->find('css', '.views-ui-display-tab-bucket.filter .dropbutton-toggle button'); + $dropbutton->click(); + $add_link = $page->findById('views-rearrange-filter'); + $this->assertTrue($add_link->isVisible(), 'And/Or Rearrange button found.'); + $add_link->click(); + $assert_session->assertWaitOnAjaxRequest(); } } diff --git a/web/core/modules/workspaces/src/Entity/Workspace.php b/web/core/modules/workspaces/src/Entity/Workspace.php index 44a7915002..37ce8651d0 100644 --- a/web/core/modules/workspaces/src/Entity/Workspace.php +++ b/web/core/modules/workspaces/src/Entity/Workspace.php @@ -106,7 +106,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { $fields['created'] = BaseFieldDefinition::create('created') ->setLabel(new TranslatableMarkup('Created')) - ->setDescription(new TranslatableMarkup('The time that the workspaces was created.')); + ->setDescription(new TranslatableMarkup('The time that the workspace was created.')); return $fields; } diff --git a/web/core/modules/workspaces/src/WorkspaceManager.php b/web/core/modules/workspaces/src/WorkspaceManager.php index 837edefe84..b44e895d17 100644 --- a/web/core/modules/workspaces/src/WorkspaceManager.php +++ b/web/core/modules/workspaces/src/WorkspaceManager.php @@ -30,8 +30,8 @@ class WorkspaceManager implements WorkspaceManagerInterface { * @var string[] */ protected $blacklist = [ - 'workspace_association', - 'workspace', + 'workspace_association' => 'workspace_association', + 'workspace' => 'workspace', ]; /** @@ -132,11 +132,17 @@ public function __construct(RequestStack $request_stack, EntityTypeManagerInterf * {@inheritdoc} */ public function isEntityTypeSupported(EntityTypeInterface $entity_type) { - if (!isset($this->blacklist[$entity_type->id()]) - && $entity_type->entityClassImplements(EntityPublishedInterface::class) - && $entity_type->isRevisionable()) { + // First, check if we already determined whether this entity type is + // supported or not. + if (isset($this->blacklist[$entity_type->id()])) { + return FALSE; + } + + if ($entity_type->entityClassImplements(EntityPublishedInterface::class) && $entity_type->isRevisionable()) { return TRUE; } + + // This entity type can not belong to a workspace, add it to the blacklist. $this->blacklist[$entity_type->id()] = $entity_type->id(); return FALSE; } diff --git a/web/core/profiles/demo_umami/config/install/system.theme.global.yml b/web/core/profiles/demo_umami/config/install/system.theme.global.yml new file mode 100644 index 0000000000..52e499a993 --- /dev/null +++ b/web/core/profiles/demo_umami/config/install/system.theme.global.yml @@ -0,0 +1,14 @@ +favicon: + mimetype: image/vnd.microsoft.icon + path: core/profiles/demo_umami/themes/umami/favicon.ico + url: '' + use_default: false +features: + comment_user_picture: true + comment_user_verification: true + favicon: true + node_user_picture: true +logo: + path: '' + url: '' + use_default: true diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt index 72077fc14a..48aec4dddf 100644 --- a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt +++ b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/LICENCE.txt @@ -14,6 +14,7 @@ pizza-umami.jpg by Keith Jay supermarket-savvy-umami.jpg by Keith Jay thai-green-curry-umami.jpg by Keith Jay vegan-chocolate.jpg by Keith Jay +vegan-chocolate-nut-brownies.jpg by Keith Jay veggie-pasta-bake-hero-umami.jpg by Keith Jay veggie-pasta-bake-umami.jpg by Keith Jay victoria-sponge-umami.jpg by Keith Jay diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/vegan-chocolate-nut-brownies.jpg b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/vegan-chocolate-nut-brownies.jpg new file mode 100644 index 0000000000..f4bce99ca5 --- /dev/null +++ b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/images/vegan-chocolate-nut-brownies.jpg @@ -0,0 +1,336 @@ +������� + + + + ����a���Adobe�d�����������������������������������������!1"AQ2aq��#BR�������3b$CSr��%4DcT�����!1AQa"q�2���B�ѱ#Rb��3������?���G[��1@e�1_��K��*`84�5���{S!�1@���?:E�)�@R����P�?� +����(�?���,��&/�1 �d�c�@,S=2X�3L��������oALB�P��Zb���C>��!���?���LAjC��$P1�Ec��| +`,��!����b@PC�����C�����v�P�C�( G�悒$�RP@R����P��Z��(n�����a@��ҙ,JbFh��J�8�1�3��!�,���(�����KCqL������"�l���L��Ԇh +4XŜb��i nM0����HtJA�ұ�L�*l��p)YT ���@�6C�LV����E�kr�P:��(@2PCD\�d��ހd� 0$�$���0v�(*����s�&AH.ݩ�@ +��(���@3�������b�����(�~�ɡ?ʀP!�R%�L�?�4�ڀ��X<���@�5Bc��j��f� q@���Hhz�qޘ�����h���b����KB ���@=��Y�C���PX@���H���X�h)/z�RR-!���U�1O����I�`�jh�ҙ,`~��L@����@��@���#��4�=���"����!��bi�$�ZC��i,~^�%�i� N1�Jʠ�}(��A>���P@R*�QHd�zP0�dN)����?Z����EO���h�1�:#x�@��|R!��S!��/�@ M4HjhE=��-Ps�@����?z@�@Re���P0�٠HC��z�;����1����!�Pc�6�.٫D�c�Cq@��bX�?ց��И��1�69�ƅ�1R���p(t�/ˏ�z`>==M&� +@8���($X��Zb;�c�SX���d�6=1@J�A4(L�2E�AH�GԖ��e��E!cށ����` �H?�L@��S%�mC����GHCr)��?٤�9��Ա����1�H(^���1���&GL���h<Sz`��&��:��I��g��KD���&RD����R,�% %�����-����`0(X4���dMޘ���{�� +Ȉ��Eg���u?Һh��ȠvF��Bey=i��sڂ �Cf�w��5�H�֚U�`H�H�����@�p?���)�����(����b�4�B��i���)�T�b���Cj�K���T@���b���!c�!zS�֘�� ���@c�&P������@� >��0>��~(8@��HX��Pc�LA�x��Sߕ0�BR~ƀ&O�@"d�h(�FEIh-��H�����R9�v1�0�y����X�cLLS%�{Є0�o�V�,S��ށ�L��C�ԌXP�x�& �IM���P1g�b4����*F�v�Ih���"�'E�ˢd��Hc�i������P���1�=)�؈�?�2[��������J���}�!����@��+�,"آ�`3AeizLEw>ԉ">�lP ����%QLD��� q@?٠�zE)�^�j�b3@ ��@��8?�h���@���0�ҀPP8�11L�69�!��2X����4��M^�⁋�@����"�H�hq��?�4q�h ����ބ�X�!����ӡ�`�4�7���_ozB%Jc,'?�i��GJ���]�Qv1��)0Oz +��jt����Z�\P{��O��L�y4�R$|s�U@ (��!�*h,~(��N����c�(Dl@�d��_JiD��bh�XM&�D�?J��'E�f� �e�H)?JhB�P!���)PX������樆�4Q6FݻSҐP{�4�)�zE������eb/AVF��H,���i4B�搬E�@� ��UҀ%U���(�RT�/�@�怠H��P h�h��(����� ������T,�� +�&���C�UX�%��Jh���S�B�~���z6*�"jB�1���1�@�\�h!@1�‡����Ŏh�� =i�C�zSBv�!������8B=;���� p�?�L�1�Ӡ�t�߽0l�G��5-�إE& ��LL���C�h�h%�s���,���c�h��P0�=�$TP���Ԅ0��zP22x�H[��!�ր�=�X �C$\�>���b1��h�j5���Y�%T�Aac4 ����1LAqE +�(�>��1X,s�t�R@iYI@�!�ސ��������1�ؠ�ހ��C����i��0%!�S@j, �LhzCg<���AȠ����U �F(#�(\S��j@8�/�@ ����h\qM!ښ��ǭ2F���lPK��j,P!�ʚ���1P�ڐ �JCn���"�_JCA/�����L�#�c�lR��Ҙ����S��n��������D���X��hmZ@ ����M�B☬�~��h������"�X�E&1�i�'�JDdsH�ϵ�6�`1�4C��C۵0�4�'��Oz���X,����4� ��b�@ �@�C�j#4��x��I��Q�③-GP�/�(T ��T�UFm�?��S&Ǡ�@�?֓@�M��=�H����RCm���AHt����ֻq���$��Hv"���p�Ԙg�!�A) ��R�����۽�(�Pc�c��@>�!��)0AR�Κ84� �! � P�s� +`8�c��@(�����B����zbh!�d�qL��@�_�@Ŏ8���1�q@E ���?�Hց�23@���11�ʐ��� +��K�1��L�Ұ@�X�������֘P@sH( ��P�}{S/��L���A�E1��>�E&1,��|���-0w���-0@��8��1���P�o��8�V@'�ڀb$�t_ڝ��Ǯ>�X�؎}�XPG�+�'�)l�9�b���Oj�cސ��z� 9����1�I�c qRZe�lT�j�"��ozT;�Bl\U��L�9��i�Ǣ���"�ݪYiة4HX�e$7RϽ+������v�,P�Ԇ-���4-��(}�RcC�����1ɤ4������ ����z~ti��!�(��@��J�8�� ��Ԁ��-L+��4��� �(�ƀ�L����M�C��`4��?ژ��$X���Q#9�@���ޘ��ހ?���,zZC��@Ŋ��⁎P �4��v�4���������H��P4�韵)���&>�oJ�������S�y��(�4>�Ʃ2Z*�!����DP`N����'�j�Z�KLR-�n*KC�j*b`��})�X%Fy�L�H��61�B�~�Ұ4X�ٿ�jV��` <����Lb�4 +��h�i0-��1Y"�"�Re�H��jYv����U�AL� ��- +�hX�Z�P�@) I�I@���@Y�GR����� +�9��q�4���@g�!f��ޕ,cz@�IH/�����@Ҁ +?jb?�Ҁ�z���?aHC�E��/�0��o 0Ҁ}{P�8���dP0��)�-������1��j��o�(��}�0ր��-���ړ�M&1c�Hc�� �(Ǟ������ 9��E^�恆?� �?ҘP�:d1��T�e ��R1��:��:i��AGޭ2\C +ҩ37�j�\D�*�(� H�'��Z��"�Y�4��� +c�_�L��z�$ҋ�����46"6'�)X3Qb>���~����{P�@X�}(!�,0)���@M&4��sSEXK%"�'F�=��+P�7j�,���(�}hZ����e&I�4�L���; i(��3/=�g��� +�9� !�������()�,jL5#AԱ��H�ڐ@���X昁4И�z`,�!@X�P1PPH��?�4�?���� +��mm-Ă8���ڪ$��1@�����p��j�3ܷ�����O?���cuc�&�"���QlQ�q�K$r8D6�LKĄ��J9b�&7��l�ӿ����yj.�5#";��$��Fq��<�ſ��ċ[�{t�^��X^݄���k�@=�8d�������A�Eq��v dּV���CC�$��@w1�\Z{3f�^��DX�w:���R!�,&��ىS��*c�7H��8�0kB�(���)�� �����R� �w���1����Dd�M!�:�>� *d�]"�((N>�\P!��x�!���qI����$T���s��l���h��a>��NÈ�?J�"G+���5I�� ��3h��N()�{�@ځ��>�����R�����B"������ހ#=��dl #oz)����C��E��P"UQ@�4�}��L������C@@��*DlRd�%"� d#� +��_��� �ށP�/� +L`4��;!i>��4��� �#2�Ҁ�������w�f�q�j@�RC�f�hj�#�!��`?� qM��4�1�MT�14T�5�>}��P *��}3LB���_�4�8��Am��P�����/�+E�R��][����3�������iR:�.5'����O-��;<���^8�FN���(��.$[�4Lv�rW��WN6�}��� +���Qu-��K�d]9 +��"]K�@V�������ѧ�Ǎ���a�=L�Y%Ƥ�m%��V�'�|����%ݺlI��,}a�]^Gx���϶;���@���/�m��]�E�=5����s�^������f%e��!�3��x3ܺ�sa����|��:5·��i�EՄ�o1S�,�CxK���j��2���c�V�5 �n���X�{��X,X���ǰ�+N�.j��r���/��Q�e-0X������M^�O�.�l��1�DZ �)���ڀ�B�=�Ґ ���R�v�U�'�42'jE"UN?�Q(JB#��K�b�1y)1�"�_J�ZC���R�A*f��H� ��ʠ�z{U&K�̙��2�H���Zfn$l9���2h��鈌��� ���@ ����ƀ8�P!�ǽ >��<�@��!E1��1���=���� �LM�?j`H)�hӟցx��I�'ڀ�AHqߊ@l�!�^ �;ɚ +�6�Ґ���t�!�z7�M�1c�P ����g���=����@@;R)0��#D=IB�Υ���@?��?� cҐ���0���� }x�$j�l�B��]� +� +������#�2x�u ��c�'�SB&X�(�ݣc�$ +�K{�)� +I,�o +4�20�+t��� +���������Ǣ�?S��"�4Hou��V�'/&���-���;{pEqe�t�Ѷ<=7��>��/��:�]#��L�d:S�%�`���� ����k��Ǔ����������O'K��[�E5���K(4���' �q�r� ���a�.;��n, �T��Q��L�6Ox�P�R�e�0pB��q�O_�v����,�~.iVGݱ��|I��Kđ��2ß75Q���%�/�_����\\��[h[x��be�G!��<��d�JO�OӪ�e_��|4kgkKh�{5}�_�����4�G��g�2K����^�5m�_�{�~�՝e6RZܻ&�V.Wv�ds��>v�5Xd����h}o��\E�ք�-+#C�2�2wcڞ9b��w��Q�_M��kF�:U�R������ڝ����yfR%)��,�ʹn<��t��q_�g�b��B��N�w�j6�Tv��d��"���q�����@ϱ��{���º�ٮ,p�[�;וGa?�?MF�X�\��$a��2c.��-��3�\>��� F�i�}YܝQ=�Y4�/�:�p��*��n���8��k�[*^����<���=&�:�B��tMEݵS�mo��H�����"��I�=��x��y3�<m��t�����N;�BS'�'���)��R<V�M�ƆI#[yr�b�*06��j�����{`���R���OJLe�k�q��X��U�LZVRE�Ξ֬-��������%`�x�5v��tU��t����c$j�g"8�˽�}5�oQ���#|>�&_�f���G�6�4inm�Ւq�߄;��^,��(��1ˎPmISG%sm=������R�Gp�ѣ;#�,t�T�ZD��jVU�� !��ޡ�$ +E�N����- ��a�b���Z&f�F˜��̥\f�L�Q!u�"�Ţ6_�� Xg����������4}��I����P<���1�P�l��Dؤ s�)|�0����1�{}�J;w�!��������4�� 1����@P4#��nݩX���'�<�E��E�i����;��?J�b(�1��m ?�����Wq�*�B�}) 3�H�1f������Y8�,Y�>}i����*�(���b��$�Ƙ�$���)Ѕ����� +@?=������z��0��i��5� +,��!O�\~�#�J.����ěr����'��_��>�f�]�Vvz�{}ȌYO'�a����'�z�����/Mӣ��ŝwO�����[x���� +��$��aY���g���3F�Pƿ�2����kq�Ev>)�L�1�sF�q!V�6G��=*f�n<��@���q��?������rɡ�4!��%���<�Q��?6I�a��S�KdpQ�)}��]��vb���g�+b&]B_#�9x��É3��~����t�o��9Iݤ�£�z�U�+˦�6z*�[yaG *�`��`��ZF{o�q�������^[5��>�k�P��*���ʹ ��D!M�#�MQH���q>���]�UF-B�Xm +x�}s�kƗɜe��3k�E�M xU@Cg�;�8�g˸�v���R�j�6��$�"^�"��0�-�''�xQ�~�%Z�NM��=ıx`(��&�rs�`�g��sC[��ww�E�]�� +)��(|e�p �G�P�ѧ�דní��y���rʥ�9X����l�+R������U�u�ߌ�+m-��ڼJ&yJ���q����ۚ_��P���C��랖��6=Gm� � �DG6������^⌹T��*���(zyF\�>?����t����ȋZ��O��%�-�c�w�v�r�'�1]�R����^�+����=�o �@�hg�teG ���I����zn䥯��}d��-?��ֿ��V��mt���-� ��M�L2[�>u�p���O}ӿ�����,j�G?A�������i1��0�=ݬ +L����� �'9�S��=��\��*\bp7��g���,���e��-�K� +���(�.ce��Y��c,T��ӑj��]j�����v�FU�2��2s��y"�w��ۋh��0�T�����gw�X��RR7*�1���Y��=�����.�V����h��� �~�f��T�!A�i�}���a?��N���!TO��9�&P�9RC�ݟR���n1Wzc�rדٴ 7Fм=&}:5�j ��9��!�^��e�3�dž l��WQi�iz�]�݂�D� \��C�W�;���&q���+�Z����Vl���g�Qe�g<�q����d��˿������Tǎ1������L�^���K��͢�L���d��f�K�颡$�tΟ�qz��e�_��R�.���>��mo�>ə�H�˃����L�ih����+{���{Q�'�8�8"��Vh���X��b;�g�F?:돬��vy��9 �z�r�A�1�i7��qj�W~<A̛�=�䆋f����N_[�=��z�j&F��i�hY$ҥ��u�ݗ��Op�䏱�`�+��s��δN�Ѻ��~h�a���hp�=�YD���K)���1��4�b b�2Z#`?δL͢&��X� "�Z��DM��N��x��22NiE��@M�1'R���P1���C9�H���Zv�Q�ހ�@�J`L�Қ$����������� I�ϥH�@ +�a�@��;����!�W��@��0H�hqJ�1�c�)\{P��� +�8ŏ��4��R`"�?�RX۪X����bȠ�?�a���ފh���)І4�1�L�@��!P1�q��ڐ����+N����"o���O�]�'���z^Fyr���{^�)bMy*E��� ����A�1m���oZv��j��F+��x�א� $�Hh���I��ڝ�[�"{>�Ӡ������r0g�d�8�H3�OJ\ܺ*+gCw��s�4�\��8�'1"����)�ٔ���ݹ��*�CBcN�����{�dZі9�Gq{����Kk��`��Dʻ��q�O\f�1���e;��XO����v��7!��T�oZ��Hoశ6��c�1ZJX�!�A����㰡��%��Q��sb�!��� +P�Nz����$ʓ���'��[�1�唹'�d��j�<���w7��Ǎbi�i��eEb�q�yZJ#r!�w[�|E��7ı��Rs�c�Ï.9Л.�sn��"Ro9ᐷr��ߝgŚr)��H�|�6y Q���F���)z����i�|Zm�QMr��Nr�����[;O� X�&�S��3�Ej���iep����{��~UW�ﰴn���a�x���T*�DHۼ���TzVƮ�f���G�t��&�T�'۲��N���)��~P_��ߥǓ���5o��-�84[8�Ai����Z�>��X�=�Lʵ�p��*���訠���'#�S�ɚ?I+O��r��Y���LF���/ֳX��TS�i�]q��n..�Q�#�#�K枙Q�����f֢���n�"mP�c�*��w���b�H����KKԍّ�k"��9g�R6/��5[�;��Õ�ya�Т�]�Q���s,֗��W��6{jq����W]�孶�(]�#w���U#>'���6��0�֗����������>R>�X���zk����Y/Mz���K���k�mRAci ,�6��/�������NH�'��7����?g�zj�o���2�%���^K1���ƒ<�Y�ɽ���K�����d�:d�tIq�<�% R|į̹�3\j5��W#�_+��=+��FMS��x��p�{�/��7�Y28�r9#4������̗��~|�z�O�W���XOi +x���H�!OR_���r�?�8�_��n7~_�s��_®��M��:BS��0�o�HH���(����-V�#U��# �(e!��e!���1�c4�,��,�����v��a2'���!ldֈő8��RbD,֤�s���������@��C���zs���LLH(��h������$_�P����M�����4�,q@��1��@��@�=�������{�@�5 = � �@�C�>Ԇ?����]� ���~��ސ�$�-0I���w41��ފn�6n{ӢB ��P�zt�^ݨ��z}i���p(sH@���A� ��h5�$��Y�E�|����Q�^_�U��[�?�4��f=B& $��e�s���k<kɼ�hkD�m�d�ƒ�9���!#ix>mޜr��LQ�m�:4�,7>�u�`��HY��\�#vo�n1�#���s�z�,��x��t;���F�3:�6��BM�5��^��U�H���K��3�|1��{|�q��._E*��9��a��j4�-t0�2��81J�����\vJj-}��'��ݥ�4����َ&���yF���m�j+ ��15�e���U�k�RF �?�E�H�-vOu�!Koض�hr���ܚ)��0��� #C�z�S����z��l�9�� �v}�^?��6�d%|�\��T>Dv��%�eh�n؏ +�����Rz������Q���>{YN�0��0���]�#��q^ Re���`��U����`����Ҋ�����l���Ʌ�J|��=��R�h���g� ˦���Ps�~a�S�V���瑄H�Q2���>���P�{���l�"Á�ğzM"��3YԬD&G��V\��5%6�&��o�i�CK̐��_/b����M����O����Z�I9���R�a�[;��j�� 2�d��s��Xɷ����s����{<�rLe��q��\��v5�s-¸���@� �n8�92gL꣼ �\Ǖ�(I�tb䬪�+�@�?Zj#r�|W�-�ue,RrO�{�5tˎՖR��u�| Y|kt����X���� ����[���Y&o��Z ��� ���Pi<i��5��ǂ{���n4;g��/����UE�X���k���[*~�2{�#�z�B�R$�|�1�����c����;I�?Z�?Խ�4�Լ��Q�� c���_�)�XƲM{���"����;q�$���W�t��������1]�ڍ���q�J��IO&����z|���84�G-�ua��{�X�-������ޱ��vu�6�����9����c�����I��?��{���_��մ'˾�g��9�xݑԤ�He`T�BjL�G��0[��ن*�� ~N{��0���[��nO�j�y�s�ނQ�T�>����g��@ ��@���<�@�ƀ#c�� ���c$��c�K��Y4Y�!��v!���_Z�oo�4�ZC�g�Qc4�_Z�D�����z�TE ���@����8�>���P�C��ZC@��AH��EX?~h��?ZTf��LA:bC$�ށ?�0�����b �am�v,?���cm��J +�@��Z��ޟ�$��\�_�<5M������+�ήtz~�X�&�z����h��4�d�aV��@�pj+���g;��Ko0��A���3��9-�i���K��Y)��wF��i>7�Ui *��cp��vWER8�I�Z�2�hf�@��x�.��O+�_𨔨�.�����x��+xbDp����V��*6�d� ���q{��b)%dP�6�˞?�%kHo��2������.��f�_1�eb�!����i��xU2h�Uu���r�\���c�p;�ħ")�{t�3� +3�Mෙ�;c$|�i�B푨O��UM�#l�H��>�j4G'��g�����6$� �.���� ����pr2�0H��ϭC�]#H�?4Fn�;#xЙaL;ɴ�9���f�D�J�$�D�2!�[m���������f�E9��[G:x�Y(y߸y��v�Q[�lm�q�[����h�A^q���u���6X7�����7���<2I��e���R�:kkUT[�ѡ\��r�w#ֳf�R�{�;F +��$aT�D9YF���$��5�3�����>(93��&�.�l|��Ή�X��V�(ϓ=W�Mm>�A"᷾�q�D����zB���^jc��ٹ���$����^3�GI�� +��h-��d~���hú����(��n㐐�L�(�,��Ɠ�6�O�t���x�h'+勐�� 8��y]x0-4�gC�{}FidIea;&���9�=��UH�J{��e���r���%�THr�T��(��T�{ZZgG�w���YK#\̊�D����<��s�jRD�ף.�{=B��ǩ�i��2Es|H�p;���yk,��4ԕ�X�J�Cy��-��mȞ- �|�g�����8zU�<W]��ֹJ���ҝEmv�L�@��"��{��V�['.u-��=i-�q_<��( q��,{��Q�k2M��4zO�%ѡ�H����bs݈��� �Z3ɒ���w�!����[�z�*̃�.v����V�l1�X{PX-����O�,��[D�@o������`��ݫTsHl��LH��C(��M"��T�٠cz}(\.1�� ���������qAA��4I"��`?�4#��� 8��c���!���!��ր������\f����Y� �P����P��J�b?�# zw�};T��������q�������@�Hb"��M!�4=sH�� 0w���h$U��M���&��?�4ɰ��ʊ.1AV"8����,3H����[��A.�I3vQ�N)K��&����:_N��pjZ|{�ęR-�.}�^df�w���ƥ�������0<v��Ā#�_�* ��ޜ��p�q�[n!vuW1ޝ�V1#S��eŝX��S������ˉ/��D@F3�s��v�ɒ���_��8r�k4�4�V-��-����P�/>';r�]-�֪m�h�M�d�T��.��ڭk���*j %ӽ���gQ�m�#h������h��r�K���ެ� nh��w��� +t�c#;@ѻ#m���U��������%�(�fEdH��#x{}W9��L(g�Yd,�-#��m�PNr��@� ��x� +�G!UP������T��� ��%� +$�{,��By$\�MhL��\��XɊ5����Q�Bȿ)=�g�zTH����&5TH��ۂ��ʨ�k�����C�Qp�����nC06���Gl�ڥ#���m^��9�M����3(���M �.�}J�{�{��ɍ�d���> ;E��Ǐ�d�1�)d��ޛ>�����X�t�[�7{���6 �}N*���Ѹ�D̪��y<��r8��D��Ǥ�u.��Q���=��JUD�ֿ��u�K$�Yq�����/^�}���ơow� d ���1C�H��ưcn����/��oW�R[;���#���>�߆V��7���%O�����.�쬧�ҵ�����h]<#�O�h�� �t�'�˓�P�A$��� ��&Q[$�}*��Z��=9=��ou��R�v.m�vs�a��,jQu�gN2��ξ���ù�{Qf1�f'WhL�.�ѷ�w:w_�Q�[��9Ⱥ�T��[{3 +��30vl��,��Ϙz`��cݝ8���5�~�0���m��X�Cgn7�b�26��s���+�f���)��e�X�E-�v���[`14n *�2�xlZÛ������OM�w~ �o���l��{TljH�%�6H��n=��$��a����?��ZWT$7wPBw��ܡ�'�P�v�8���Zxݫj�2'����9=k𗥵8�m%���~ ~�x\Ȳ�.Y�7�dǐ8������G5+m-��'�Nt~�g�\� �ǀmn?2ې�7u��Z:�(M�L�Iz�k"��ֵ�����w��sM ��L�H)� 9�Τ� �8��*���1�?�4�bi��{����`��`SB }?�j`>1@���C�s�@7�(z�04�F�"�4��y��@1���''���i {��jCo�������k���1��4��H`��1��jC�������+ V�Xa�16H��E�"�S�l ����>1���P4>)446"� zv��U�Ҁ�s�Z�[�-.��RB���]�`���W����z�5��z~��N�#�$�%��3e#�����X�k��2:mFP�r���Wv�^�q��5�TNL�a��[����Ì���|L�R}S�N+TtJ[4��n����H-n$ +��30P��xc�����V����Y��t�,����i`B�a��A�[p'���*/�U<ku�A�#�"!�&�� ���Ց�"O��J��9|rŝ7d)��>�D�����Ê����^\�/��=�U4�-�.���#�8���!_�g��JV'�K��1�Y������z@Id��5��w�'˰�]I[w�h�I�e2?�H���P������w- 2��).n���`�|LH~���Gr£e"��fZr]đm�ʇw~1�#尶��N�Mkt�T�p���'�{Ԙ�vuze�CBX�B�v̈ʩ�}j�Ƒ�mua�i%�k?+G!~e�}�<ȇ�ִO�4��6�tΐ�Y��Y�n���-���`���y�Vbť�������Ғ<;�ʟ��Ю�gR�?�Ly�t�hT�����_\ +�t��qZ���̷,|8������ZFi"�ݓZ�l�ֲ��?*L���/#C�G�:��WA��A����ѓL�^���@���l�3����*��,�r{=������[Du�Mo4�&K)#�~����1��$�� YJ�$`��d +;�H��3x��SF�Z�S��n���챌�=�Q)E:��a��u�ik��Mc���H�v�}j�������O,�d,X��"�2�=���]�(���~)�t3��Kpy��X�P�N*e�lq�FL?��-����r̅� `h��H꽏q�Z�oڷ��X�ot?f��vڏ�l��7`w��I�;2iǵG;�_��iV2Z�$^lM�U�x�<q�JP�#��z�f�������t�=�àO ��<A���ǘ`w������K_�]7���3�hDȑ��|B������cR���o�h���]���闳)��y����Vr��YT�$��y�+����3�#�ԗ���©{��a�¶���Z�*Q��T��� ��S�a.�/���I�\4�}�V��"�,���~�a��k��ڍ��dixdv�+��Y������߯�F�C'��_�_?��e���L�?y{�)��Ţ�#���eK��1���u�n�g�.Q߃�&`����ZD��bҵF#ߊ�3 !�⨊�����*[) �1Ht x�b�#ހo���LC�LLEh#qI��ʟ�Ґ���֨A +�!@ �~������!G�@ր�Ҁ�P�恌M�.i�^���C>�������'�� �� ��Ί�5!�����Wi�??zcB���Hc��!���b)�%h�h����B��Ӡ�(�Y"�������BQ@?���@wך@-��E BcJ�`�����OQ�]�6�$9� zV����gW�����}yiջi�B;�S'�"a�f��5y�Z=<�پ�l��I���Pa�[��>$����ʛ��7l~�A5�Ba�ˎI ��J��Fy%�z��[P�"�Q7�䏺���$�g����xa��-�����,��*���2��d��'�����gU����V��_��|A?��@fO�� ��O5q~�JwR-�w�<B{��&�P�4Q������S;�j�tHZ�m����s�6�eU{�c�օ%eS���wA�Dk�r��@���y��v�L͢)x�8���Օ���`l�p�T��p�L墷i]U�M�L~��#��PX�P%)�8.��Y���<��6�m���茡����P?���v�.��ͩCt�i�ɽJ���d��gpC���I���v��Iz�j�������{#����{�Q�����v�b�M��J�]��[;y>Ny&�j��m�h�$��G���Al��R�S��]&=b-J ���"�V��Ҳ��Vu�[��)��UFE IQ�1�b()I���[HQ��o��ر�Q���NG��Yw3� �~kw���lz���+��A�����5Е�[���=ݖ��Y,��<@T�3��5X���F��d���fH$�epG�9�};և9%��Y��70�mg}���p=j��M�i�z`�ἳ�>d0��������\�p�>^QՏ$�q}3�}f]kK����-��h��,�_|�V���pd���i,�� �B$W��d���aϰ +#���5�#+E�k~�����^��3\�n�!P��ñǥ9H���i���Kh����o(2���QC0;`R2���c�� mi�}�����}2�}K��jV3<�,�����*H�H�m�2s���i�h��i�q�W�˯���Y�y�e�-g��5��d����s����{��R9���q�u��-wkk��9���Ȭ>t aO�9?��ƴ�����W��}��@c�t��\���!/�"Iv�P����Y������Θƚi�2��M_O�l����Mf�b���VP��%��b����O��g�E���t��m��w�4*m�d�<)�0�=� ��ۆ=6��/���9ɸ��9���ՠ��F�c!��<m4���$e�Sp6�ŗ�1Y��+_��������.���_����Յ���h�2K���p�(-�%B �=�4��a�jI�����Hu�î��;ֺ~o؝Cr�iS���ݚ3���?�8�Z�Ξ���r��҇��Q<��z�t,���"ZÀ������ֺ�9'�\�V��0(���07ҐЁ=���A���@��i�0�����V���I���G��H����N��� +h�d�Ͽ����b���>M!�Lt>�#��H@�@r~�1���Hb����P�h�P}(���#'��@������'�+��}(��q��C�����PX��}����ʝ +��S�`i �O��B$�t1�s�R(lҠ�w�ҘX��C-i���1(�#8�Z�<yA�tzi��CW7�u��}�al��`����8��em1kz�����p �"n���TG#���*��dͤ�S��n����/̍=�"�M�*/ɀ=q�NM�;�����Y-��@�Klo�bA�5m��^w��u{:#�c���Qo�I~OI�X��Pң�n⨛�t������V�.}��gêE��ʀ�o*��Q/���H"��/m.o���/T1�!���v_*��r}��M�U���-lL2K,�ݑ����q?��A-"�lf1��8�m�oHq�c��\��hђb�!�b�,�dV��ܪ�s�JEi34�*�eX$��c0@yS��Qh�`�X]��$� +8�/��<?7=��)KA�Ԇ;O��F���&T\yc9Q�?_j�͒(]I�+�N�!d\:NpsUd�!�4�I,3��#l.r�3)�Ƨ��|`��݅���ѥ��I�{B��|�����.�'��7�G%��Zqv�څ;�����+ +"8����5������\x�$_*s��ֵ�b�j��^R��f��������zF��!�*7�][�?jͧ��e]�:7X�z�,2���5��R=ʓ��h����C�zoT[{'���<|�+�[�%wh��L�u���@��5�V��#g��~�S�mV�+)1���}+x����ںV���D��S��$��_�l�9r�٭�\�C�K=�<X��h���c�Ch�����5�wS�{۫{TK�>%�����8��6�ŦS��K_�����Ŵ;���R��/=ջ�KR誎�٫b:�O�\��q��$]��27��:�M�H���+K+K�Z�T�I.v���7�f9��&�Ց��6۩a�Y7��� ���|"���#wOji|���&�u�am��+76�+G{iȲ��v���S��y����0�vԻ.Y<��Yhv1�g�=�fʈ���s��}�(��tJ�i��u�!r��ڽ���+�J!+��Gg*ij�?Z�e��Q�c�7+�x`�Ue��s���N���ufgQ�v�S[�n��ڔ�����$kY �����?&ޚr�����RX�7FU���<� �l�#�� #>��RM$�·)i.��l���?���C*ۅ�cÿ��w��q��k<��0�)��OI�Lִ�k+���eӥ1Ez�D�\"�.���I?�\�U�o{L�v�\u��wW0����o�Ӌ�v7$��Vv��.6��5S�C�ܜpn}~����4���4)v�|]�� ݇x�$ 븎W֣,��K������V��C��VK}7S3jZ{ ���Ź�>ˑ�S�������|e����n+�>h=Ϧ }Gz�<�����ߊ;Rb��@�v�鈐g�ց(�bc�(/ӵ"a��5#oz�]����c�@��(����c���zc�z�j/ΐ{P4s������ց<�'�@4����P��j6 G����5�r�������Pފ��@���1��+��ЇT��L,_j�*Lb=����7����{S`/�@��R}:H����q�nfa���8����7�$���sr/n��h�SY�)��ּ�Mh�ZRٟ�i��^ �qx7<^�ۈbr�� +��e� � �i�m�2]���/�H� ���|ÂiN\��pQ��{�����N�����g�q���S��D|�^��ш�P%���.�h��o�ZIR1N�at�� $�zY�"��u"I��`H� �}�(�tF�pHc������!X1a��Si�Z!���-���^�K*��q�qB��`�})BK�3���%ܢ;h�k�es�����Y��q���]����'��8ԘUD�9p8BW�2�U��_co����.��VA�A�<�ʻ�E,ۘ�(�k)��6љ��[�Y5�^�;��1� +���|�j��L$�h���&����&GQ,��aǑ�pyB9�}�Ei��[GE�]ťh�PM�'Dx�dFF �Xd�~��m�������v��,�T�o.Gs]j)�rK#]2-.�>y�h����p�, ��>\S�~���u:#C~a�_�bI�WP��c��<�uc�Q0�p�1��\�1���q��j\�_em;P����J�V��n�>�g�tZ���ե[��� +F����hi�&�[[�S�K����R]Y?�o �m���B�l�)��[tѢ��{����1����NO��=���w�X@��.a��D���g���LԟF��힞|6S<re��}��EvT��}>T1.,�c�$n�`��>_���%�Oh$_�hU��ϫ�U�&ُaqsaԑ�����_p(_l�N:{9_�z�L[����M5Է-Q���X��U��პ{���[��L��=6+n��!7�Ad�J�&����oJ�Ińai����n��Ţ��M,K%ׄ�=��ޯ���SOfyb�o��~0��N�k��x�\I�Dq�a�W��5���_g������$G;0�dn���~k^G#�W���[n��{awzS�$�XH����y���%�(� F̠�!����}1S�_����uöIj���I�Y&�Gi���\�����D��6� �[�ͽ��ҵ�R��ͅ���۲��+=��,Wkcs�d����pϽ7Ǻ�+���(���4��Ke/����TB��s&ӆǎ8��S�_f���t��]fK��{o'2� �)���<�1�}�s��.bY*�>��˭���[���B|�@��7T�/���������}i�e�eyԚ���֊.s%�����3��ҧ���VyF�ϟ�ـ���w + �_˵z��Cc����r(c���`��p?Jd�*��1(���� ���zDei �@W���>�rh��@X���}E ���ǡ����Lc�)c��8�c�H��j1����o�#�5�y�|�@��=��?������i�4��0��0{c�C�\P �1PY�!ǽӷ�0b�րLU�(��f�Q���ӆ���+jV���U��� ��=�ӓ���>.���b})���?��G� w��ğΕ�6�;�{P�+�ј�r6a ��n���b�tvzL�K˫�-���{�� K�� �s�����x��y�!��y�p?v��{p�kH�"eF����A+�������O���ߵBDM�;]�n�9-��xw� +#�G$�݀jv�E+����$FIce��C�������v_�OG��[��ƅ��� �1�3�۸��W5RZ3�����;�)�AI3@A>L����E��j�{fN����$��6�.�2���c8eӚ��M��@Gm4��Z�� +?�^��Cn8?�I�Sh�{I�w�n�$��d8��F9��W���$�u��x +ח��2o�8��V��A�j�G���>+헺CH�#��d�ȃ�'�n�������c����\���-6ݢ0�.�0�br��ԡ��kg)���������W@$ry�].Ih�eMJ�A��3�р�D��c�9��P���8��&u�Q���$�@_i�C�9��*�(�)�o�l#�Y���I�[w�g�*)9}�Q���i���sz�Ĭ��U)?F m�5����;f d�+��}M<k�S3��˘ό�A9�+N6e�¼�2 |8�L|����{7��h��� ��#��5vu��ܩf���ں�mU)5���w6�Kw�,Sy�a�v?JJ��6�d�P[)���]�HR}=餬�5������]�M�٣�T�ֻ[p���Nj �Me�8�6n`�nl�`k;�9�p�� +��T�(��iح"��O#^�7��,ݷ�L��e��F������e��2�� +�A�6�TVQ\h�U(�� +����>O��g���b|EF�0:�۾;��J7�\�u���zZ���Ϋm�v7��m�Ķ�C +7��jM���6�%NIH�o[�wT��3$��Tyg������q��I�T!�4�imT�9l.'2iw���)ԬJ<n��<n +���ғkŜ���_����5���t�����%�~��+/ ���Z'kG7���C���=����Ul�[�$nL�����7Œ�����j61�5Į�6�b#M�ʫϝԖ��F*]]��Tފ�M��)ӵN�Ӣ�r�~`x�h��ѱ��䑔RݍL����*W����ѱf�m�d�Մα����:��d��!�,��i�K�"PMm�I��!� �d� X1�T�����=� *��jO��Ⱥ�J����.����5�$��+*�� �� + ����sn����b����{����)� 1��{g֠�H�e�R�8�Q��Ƞa(4�T��@H�Ȥ0��NQb������1�jv*�ޝ��+�jv�88�h�Hb�Nݨ;;z�H�h�H�=(��}�h1w�1c�@,h6?ⁱ�4� �� �R}�P"��J��p�?���(����NA��P��.h�\P�� ��=�&�LA���i������:�]N�gg,qL�w1/�c�mZ�6n�\X���M����&�uy��������X�w8�z.{V�:�-�z}�~��Y�c�SG4vb�Q�Z�>+��P��r��my7���/V垩�MS�I$�7�S���N��W&/^��xgs��Oil�/���.��e���>�|��h��]���Qi���&�8N��*����/t�L�1٪=՛G��7;L��ʕ�k�~~L�������9�j����R���U�V�e���1���v�P{jR�J�QW��4�����.��^ݵ%V��[�zwT<q^voV��ۋ�Z���];a�u!�J�Oh�w�)+c��tz|���3c��q���2���n����K���+�j��^ #��),oG�.��S��5��Ѫ� ��u�F�u�(e���=�?J�X�Q���3��获�k�4�K�u�y�wD�M&ݒeyC�g'M�4Y5�t�o�ƽ�d�8�/�"�7�o�e������3�y�:m���l�Vۖ�/�6�p���jreQ��k����N[;��[�Ti%`�q���o��'�&pL���NM9�D��m�(�`��*�z�+bi%�t��j�r����h �y �T y�8b(��"���o�j�M��4��<7c�5'=����<Vk����&�p�,�8-�����ɬ��k�G)��Ac.��/���W'�9Һ�Vr�T�ycX���BZ "�u���#r �7{���f�=�ti�sy�\��L����*�GFj`�IN��\�*Z�A�+�3q!��n��E�֑��D�YEik7�xR��f+��NՇ���e��E{v���O�Ud��>PW��u�9w��j1x^��"��Td�δ�gh�5�QA�Ա��1��"�FR�+)��n��By �CA7��蛩4�����l1"Iߞ8>�����})��GXQRA.$�m�(;���T�*���(�~\֯���[x�X�rʌ����䢏aW��B�^�-w��z{G�]>�;���f�H��go��N\���{��:+�6�� ��"�-ETf'�_Ua�R��R_N���� ���V��)�(i�=�4̤�����P�b3lbU�������������׃��\�ⅆ�>�wen�����<?a,{y�s��Y���ɵ���?�If���<" ;W�ⷔS<��ke^��Z����;^I�8��2�3�A&|�A�fn��eTu�Y\�������M�u�[)m��D����~�$G��1%6J����d�uw�3V�n�hM���ϤC����[��}��7������qmZt)F +U5��5�sj�Y���y���">xUS�0���*��>7ǒZ<��_���QtԠ[�ET�v���%<�����q'�y:�䌥O�;9FV����麭����-����A]�j���4������\}��9�o��sIt��í[]M�����-H-��E66!cº��n5x�S�9���{#<��l�o=Ō�%��`��ݻq�RɥV��}�i�2���+}~�ηRE����nL�ٻ�lm��<0v�����Qu���=�����!�#��(�D:V:$X��>�XQ"őۏZ,��.#�U��+�kӟZ,8���E��w�b�>��NÈ-=��$l��S�QL}�� ��X%h�Fe����H���h���,X���)��n3��@}�{P��i���X�(c�@,s@������"���@���ڀw������Wa�2B�8��� �8�Hc�}E�8�@#�i�q@�Pj�:^�����(4�E=�����@r�Վp*rdPV�*1rt���;B�:WG:N��m<F���K3z�<��e�%.���.��s��@������7+-D���v.��]J��h���Yab2x��^~x9m���W�A<j�2����:V�?��.,t����d��`�b% +G��r��z����Q�w]�[�O��G}s-�ɕ\�/�$�VW��� +ׯ){V��}P��:�F�]:k��-�,`,bv�hU�+��>դg��8�b�f~��]_��|]��+۟�W�����r���#�R���cҺ�Jh�wrDd��N�9��wz��/�z�'Q���/�I\�7/�+��߾a��C^l���w���V�5]M-���RI��uݐ=�z�7��5s���[g�3�:�Kp��SL1 ���W�Շפ���}%�ty�:��ڇ�F�YI���3 +�1崯��Ɋ��9�'�=�c#��� ����S^�2�mt� f�d0�^B{����p����/(����r=�8cQ�rI��$�r}My�u�2�2��g��~���ى��n�����>��VZ���(.�e��� %�ϡ���ᾋy+��zߣc�Av�2#��6�9Rqڻ1r���Җ���^ޠ�����~���QβIy5���U�UFs&�bm�Y?����K�}L�{4c�_<v��!��l���S�b*=��W�CK��X�W19��.�c���j��&YS����#��ʅ�)����n�m6J�Q���Į�[y���n168��ފ�ԬҎ�hɗe�;{��wޣ���2�D�_���D�^,q<� V& =��5����Gv�a��^Ukh�+͞�5X�q'&>Fշ�{r��'g,~���)�ʎ4���zo�m]�vʷ������r��Ūff������nlf�����6El��a�:F�xln�9V9O��U��G��k�ҲY]]�Ԭ���2��g����gR���w6Aui4�_ !�����kH����7ix9[m>T�o�ki��f��XȘ܄����z�6��"���='�h�BotX�+�éoݫ1h�P�q���*gy�7Mn�� x��q�aG�.>aIF��'tCo����M��э��r_Z��f8��Ȳ)��S��t5M}�a�w��Ea-����v��� 2���%��?�泖*߃YgN-%M���v�H�0���_�[iò�|Q��(5�hj(-dYF�̛O$�`�ZmhX�:��k�wd�L���2G$G���9�nج#2�;�(E�9�m%�������βC$�$*߾��$�(��2�9��ݚ���翉�kYZ�Юg�uR�I�\Z�4q<r�4�튩m��r~lv�V'7ү���0�^ +����^S����V��-CS�,n/ne2|Mݼj�[����t�y6�x��[J�������WGUw����W�4�'���P��BʗIψ��co8'����k�7��4�Gt�.��F[Ï��\�)��F�p�O�����6�^L�Izx��P���74wf#��H�W����g�6���J��̏���}K�/?��.#��bX �{��һ#��$�X����稒�>�ǵM�ĕ`a�>�rQڋ�^�X�b�l���*VRC���; +�X�/�o� �����Jv&�h��jvK����VCEw\���##i�B��}}銆*1��Dl�(�H��7���b<��4�4�>���4�{�@�����z/Bic��� ?��� '��$�Pzqڀwځ����w���`�4&8#�K�hzg֘�j@4��j?<{P�:�$E%���bTw%���R$�g����43s�ۈ5��/t���?���'�^_�������<U���-���U��gw!UTw,ǀs�%�^M�H��s���z~���Kkj��i�y��ip����`�rp~�pJ*U�Ȭ�z�D��#h���c<��J#�0G\`}k��S������w̱i����0($����l��SG�e�����+�u}R�ľ�b���#;�Ö��z8��2�����:��[5����p�6���o�QN�(ծ�a�*պZˤ�R$�}B&�GOH��� �3�c�f��2Kgyi�-��a-�z�W"n[oF�/\سY��id+��~���:q��}CR���&�o��Imtv\GĊOz��ۛO��Q�]-u��KS�8!,��=��5��K�2TbG�iV���P�ۼO@õu���T��C+f��S電�0�DP��6�������l��H��P�f3O��wv��q^����ڿz����KB"��wi2@ό嗎��O�yޭ�r�N�1������#�fq��/�?j�Lr�F&��Jn"���� ?�c�Z�g�����f +���m��t]�w#}y5ه+��eƼ�Ie��X�n�i"�P=~���SF1{��z��A�t��f�����(d��9�~���P�璔e����QԴ�P��,zK�®܉Q�6O�n)c��<���ˣ�Sr��+�ۑ�4�N�7r�md��p�?֓�C��:{YҊ��W����1R��3?s^hbw���ɒ��`p�=�q+�'�Ԥ�Eu!��3�K���3�5�żv�"���?z�i#o�[�<z�E/�}�����T�e���z���2����3����26��[�Ъ|,���q���Ӛ��Ś�t��"�) %>|;�r*���j�z�Ni� ���ip��5�L,Q��Nq�����D�M+�bu�ԝ=����x�f6�C�A���)��`��$tO:kZU����K&�8���dw�R�%�mkVY�; ` ����ƅ������}�����[�Է���Z��A#���)�ڡ'tܪ���}��ԣf2�Vgk߈Z~�����D�_, +-�`Zo�cġ֥��|q��xe�}oY�.�-V3�:n��� g ��~Mܠc����,qw��������ɬ��Qg�M��o + ��呢䫯�O=�N��8�^6��wN���H��T�u�P}8�UfQ����^���BU�>�I�.1�چn飘�J��wP�+g������K�y<B`o ܺ����I����n>N�J6���6Q�?N��a�S��y2��6�I�x��v�ڛGrG�h�Y/�������2zt����$д=(�t"+y`����!%���I��ߡ�U&߇�o�r��_+���[E���Qי��F�k�l����\f?�yc��j����H�MpU�auOJ��Z��:��w]�~v$ﺶ�1���������:�ह4�)un��im�ڡn���X���$��[����6�����}�;��"�O��}M��b�Yw5��ؕ& q�㚯M�����y�C�Oʺ�Eu�zTr��E�#�~T���o�;~t ��P[G�@�ށ0��n�t"��Mȇک2+:^�3'�%Zd4v�����k��Sj[Ѓ�܂Tp;�ι�gq�K����e8��;Q���ՠm�� +ǿ�)�5�p=2�����FW��8�*h$q��#��3 +@ �H�=�P4.��5:���$�� ��b��x��6O��9�P*?_�@Q����v�Ý���KS$px���b�;������������J�[�N ��LFށӝS��E6����+E�l�8_Oz�{cX��G�]!�z������� ��:��YF[�*�~wj�2�)i��amm�H/ຒ��� H,���|ۧ�3�{W#�ҵݝ>�4���?���/t��fyf��ɱw3�pT*�1��m��}PJ���u�-�.b��O8�s{���ٔp= �cܵf=��ӯud�۱OFur��3�E+���rz�X���t�Oj�ܘ����1@���a�����C^ �; 𧤵[7]^Yg����PՖO�2p����у#{9=LUh�Ѻ,l:U�CǷ���B3�ᘏ��r唧+�%�W�v���-j�au�F܁��k8_k���^zK����Q�`y��tO03�'���W �$�DN�볞�%�.�e��v.Uq8��v�?S���飖�Z5Ǖ�%���u-7G��dj��r��ɮ�O�8�KF9�,�G?���J�z�ac� �A���[*K�ti���u�/4�DV���ȿ���)���� ���%��c�*Og�h�og�?���-ZO��y��M�G��7����#�����)�=D�z.����S�c�!���P)��{�Nq�P�����y��I��}cT��R�=gom��.�4�A�V�YG�֥z�ǽ�o��`�Է]�Mh���� +\ �b��=��X�"s]��iQ�t������w6-�u�-�C�a�`+�Q��*]ڴ�߸����OZ+�̿@O�l�N7�2�����?����>��3;�n|@�'fFO`��͑4�V������"u}f/�@���6�\��V��fv�O��^�W���� ̮H-�����#��:Μ�ޓ�k��7S�Rh�,��w\�&L��ڣ��Z�'X����|9�#,��[�G��E�����W;�����q[)/�4�v�5� \�TԹ"�#]6Y"�X�t��|��)r%2�)�p��S��J=�P�7f��� +����*�>.#q��w�H�!���+�=Ϲ�E��ZQkPjO��ַQyc�0O����X� l�Y=M��$�W�q�YGv�eec�\��[̣�N3~ +��S:�ĝ*��Sa��'�����F/��S�Nr����gm{�t��ϪD����M��fo<�/�֖9��J6�>J}I�\X�e{�\�.��_$��|#�n;��������\�R�u!�_�i�]���mz�9$���7����O۶�3Ȕ^�s�˓'O�4S%`��vOr�-����FnۃS[n�+�K���N��M���CD��JU�{WHm`�0#��`�i!�w,|Ҏ^i�i��r�%^N�ӯ�Ϥ��}fȤw��Iiu)�6 +�!�)1�\6���4��>LKH�4�Ů����˧\�J3-��xeQØ�x;��G����MkOɟ��M~��]���ީ=�� ?U��k���"o�WlA���ŀ_�i~I�)���O��B�����ZE� g��_3��O��P�$������������ P��w7�m����n�";�Ea��9�ĕԿp���ܟ{5̣'�)� ci���| �ZMml��F\�y������������}�5'�W����Ok�������{�[��m� UP���]���`�3���_����G7�zM�JuJ�D��`�H��t�v�>dT@7�9��*}��~�$��Eg��Skz��Ѥ�mb�É���*/�t�H���ْ��{b��D�<�GҢʢ@?�ҋ +���"/oZ�M���P:X4���@8� Ǘ����8�}����YT�q���� �X�$��.u���\�Ґ@�3�I�$�'G7�7O�X���_��[���T/P�f��+:-/Kh\.ԶH�X��r+�BWm��s�TV��b���� +Zo.$g�u�݁ۏz���rN�/��Z����>خ������ +��6n��@ ��q�P*��1�qR qځ�E1��i0?ߥ�"3ڀ�)�$~����������c�@����f8�2B���Zb�H��1����u�B�]i+�j[����[YA��#`��T��`.��I��l��E�Ɯ������N{����^�WI��+iq�!�i#�$:(ɍC��5�Ix����}6iiz�K�6���h�[x�Ig��Ǹ�*Ygߵ���+�$����ꎼ~�cI���L�y�Z��ܤ&�zۓ� +1"�*�?¿zv���4��.�������L(����ۼ6*V`��o�{��#��(����1�����y4����/��{�(3��rV�g%e�5[t�`��(;�U8ﵽ�M��'�8��雛��y�Y��J̑��r�!_\�)�i.Ό O��N���t�%��0ܳ��'̿¸��ⴖ�E�����4�9V(P� ����&��0�q�*f28�t����2��dUXs�`NX8���Sڶ��Wƭ��,�ǔ��C�WL����U�<4;�!=����)��p�n;9?-c��d���M�MR�K���+�N�D7����x�ݶ��*�R�5^���_r#������j;�:.mwL�mAŭ�;81.q��ؿ�+�zu*��N/�x��l� w��D����St:r�c]���x�A��N�ec����ތj)��I�r��5�Z�H���,-�&Yeu@6O�ߞ���5;{GB�(kR+k�}M�����|qFd���$<�|!���ں�:ђ���V�龚S��ͳ]�m���BK9(�A����B����'�{��ֺ?Nkv��Q����]�r� A&O�}hș8��ck�uc�=�-Z +���*�ЩǠ�r�}��1Kg)>�y�� ��b�fX��L$��0�'<{��S��M՝�2���6���M<�Y�o��sd���f�l�ZrY��Ǔ�����I�@�n�9�R�V��R�y!kE*�1B����}"N�:#OG3ӝg�vkx�w��d����|0�&��j��e<i�9;�kV����RAq ��R5rX�����)C#F3��~tdԮn.<�4���2ß�@��K�+�G�t��8\t�NY������&Q�[����H��L����A ��y3�"���$�*�[9�ߊ�U�X����HG�`��v��;��G�=�s}ean���Jv$��S�E�#��Y��J��4˓;��!q�g�j=�8��FΗK�V�[F��WC4�:���3�W&\ɾΘc�Z�`��ECs/�w�?ħҰ�Ej�f�1��DX�A̘���+�-�d�H�qmS�|H�ؙxe\y~����Y�J�B� .+t��{[rM�w :�2�ܛ��\�s�.(��~M>��m8�VͩX|L��D�a��S*�r����֟�e{���K��-n�S�v���K;p���h�9��V;�e���f#��Q<��Aw�W���?��Q����|^�m�UK#� +8ۓ�+8jRKɾI6��S[�S��v�����VH"�gAأÒ�\0�����$���8c�����Ĩ�&�V�] +�9u= V9bYeCo��D���~��ێ9<�㓒�v����ï����N���1j3^ɫ���,U��$2ۗ�.��<�v���aM�m=��+�N�[�55�z�W��} +���/"�c�/!���2��Jv$jw���1�Q��5�ȧ�]'��4.����(�{��{{qie�6�{��&T�q,I����-4�w�&����V�g��u\M�j�g�����c�����s�Ǜֵ������%T��<���o���_X[[������'r��IA��_^���J�B̴��gE�j�6sD�o�������)��&p��e� WI������AR�0���i�/M]~��Cк���L{��.F�>TO��q�bQ�'K�]u�c�W����7Ex���(���\�v�l�7���f���J�����~ubF_e�`pЙ�H<�rU����*��)˭���ο�ڱ�Yl�#��<�A�,���=�`�/���~��Ӟ�I%A��c<z֪&O7чk�KַoZ٬�&pۂ��1lb��k*f?�[���F��[�n�I��1ʁ�T�5JͱԚ:W����Sm�`T����e��j���GO�r$O�=o����D�FY�i�������a�}h�og3ȿ<�r���AW�G�?�I�-��JF9mc��L%�ƻ���mֈ抷��d�*�$ڧ�u���[�c>�0�@W>��ǭT�*��q�t�F��{���G�e�U��F<0%�Y7K�t[���n�:sS�{ �����ރ��RǞm&D�8�j����4θ���v��E�� +XNNm�<n�Ǻs�=�<��i�^��j^�K�2��#�u#q�f+x���j��tB���n�W�:?��)�?�I G)����}�j�A~=�3��Og'u�1qsK�J�?�-����Z��'نOE$pRtv���*U��U��`�q]O*J�xam����%~����̢U���|�y�٬_�U�������� '����� ,�O3Lxww�i23��)�W,=Mʛ�O��L��zb�Y��kQ������x��R�����?�v�xb�}:XoK�m��V�A����sY���8;/�ޭ�.f���}���<�O��5|��t��$�w��߈��1E�}��BI���_R�[�mN��8o����;\�O��۳1���$�vϳ +��9��ʜS}�J�c������ ���@{��o��*T3�����v�q�ʚ$ ?*c�>��)�|��~t��{����ǣ�ɹ,���g���;D���<�'��qū���͝X=,�S_�z~��ZV��2ZcŅ`2�K�x�ټ�@>o'a�k���K�����Ã�(�^�.�76�}?��՝�Ux��`�����'��]���1��焥ǔ�L�ҺG���t������Y� �<)>a�o����ֵR��%����g�I���h��[�G���u ��E��ȶ�(r�D��Nk)c�[�}NHʟ�cj wh��M���HA�*�c=��pi��4��p[��c�\� +������ b�~PB��j�WugF<6�菧zn����ui�W +�ZX�N���{g�����(qz;M^|isȠo�)�89͚�mvk���6][^յx�}����LW�ʟ��yObx����)ƚ��Q�?.����B��e��suyq'�BJ���`��}<Y�n?��0� I)o�@tu���ii�[�FfV�By��?���aIGG���9���ip_��r/� ��%D|0p1���5�I���c��-�k�~C�.,�i�v��e<���f�u4��C%���Ck����@�K���3Ȓ�T�!0�qZ�%э��8+��"բ������c���8*�ǡ�I7GZ����뢵�����M���/��!a���D���G�F����������v�@\�V�j#��s�����&��Yx������݇*>l{���NoQ�������Ȋ&�f ����0��՜]}Y���Ɖt�ؠ�(0��բ�ͩ*g�[t�M���+�qaj6�f\v��<���ֱNJ۳�ɒJ_��պȸ�������os6 +����w��l��*�<*<��ڈ�'�*�V?a�+-�E���l �f���ȄH�gw�W_����-ͪh�k�������R^k�[L�0�������:ܓG%�\�F��"@�?��P)A�W�@���ٌ�D��4M%��Q|�,�R;��8��#��>����"�����AP}}r=�X�3 +#���CQK�����ma3�5�'�?��2�#>��xk�6���#�D)��Q�� + 'װ�E��o���[`�7���£��E�UcEm4Lmo�~����m�xČ]��*���>�Xp �s�zvOB��"�ϫ?�+|8��#�h�Q�tm�A�����gBpk��F��������S,���*������L�u]wOҮ���$�"(� +q����WM)� +~�C�3R�>����#�;6'���g)z�4gi��D������pF�>�z�gH�w�-�Ȯg�T�?lTYMzo��/5{ �M<h�$��%��v�_6=)�ɓ�#��M�8���bp|����!��Ɯ0��"YU�?����]ڮ��p��<_��[���ZE�����kC���Y��u��<��o o J�H���rA=�����#Xz�.�z�J�*�k��j4#i�J�Z]8���X��*Ts�<���v�F�jZZ��Գ���c�-b������$�;��[fs��f�r��ɬ�4���k���V�:���x��f���e)�@��#�;N?*srM��1i}vm�k�{���>��[�qkw,F Zh�� + �x\Ǽ�z\�oW���+tq�� +U"f���"w���M��dž��0Ĝ�H��/n6���<����������I��(�W8ed]�[i�ŞMo__�,��(k�Esb�~�����=�<�\��Z�it����6���=�����KQ��^<������fypd�O���~�:梖�6��OLV*q4�{l�g����-*���g�鰬+����9Q�W�s�J��! +����ީA�k�3��?�"�d[�Y���7�|�Q���r�����=1��yyf�,����Sqn÷8��W<�����ܴ��p��C���?�= +��[�X�ĖҌ�Ly�/z댕m�L�詬�%�����!���I���\};R��A�G/�u<Z��.��&7e^�gݱ�W'�O��k��?�z�u�����Z���.�mR���ِ������t����'K��y��Tj:U�W6W ��6��o�k'��~��c�'M臤����RK��]�˒$q�9�Xgq������,�o���"���"�%*�#���2W��{��^�.r���m4�6{�s�) V<(�kU�������$�?���ԃ�jwS<�a&Y$eʊ���+�=y��6����sԥ����W����ef��F{�VXTˌ�8\��������g��,���%{-q�oB�֬�xQ.�L�C��z�Q�u/��Ǧh��4�a��e�88=�<��Q�N%R�q�+�N�� �Q�}�D�M�H�!����E�@��Kp�~���ꎨ��ճr�����R8nu�f�Pl*�l��j��q�|���k�?�:�ZI5ޒG�P��>�Ec��� ���׃թ�3����t�ڜ�U�ԃ� +�I7�%}Fk� ����ҳ�����2���˸����n�τ��e��1��flM��$�ʹ�=�hΈq�f=Ζ5�qw�i�LB�2��H�3�֮�WCt�Ug3��+�i?�V����p�{y��TP@u��}�y0�>�e�ݧ��OQ�i8��_����]K�_V/��M��m���?������|�H�ϗU�`��)Y�B��@�4ސ@{�������w�]�oցP��;P*��b��E����g!UGrI�����y� ��|,6�Ho�����Q?�m��8�z����'i����/N�Mj�;� x�s�"�� 1����5���6�_GA�m�Q��$x�T�M�NK\ ��5*���2�]C�z���������į�X�xL�yr};UM����q�"��Ĺ��L� <$K"�l�aE�g�8��d�c^ǎr�������<M|��a���ddX�dy[w��om�5X�QTgt�D�^���b�G1=۱�8�hߖ����ZJN����S/j7�%���斖����\̪��}�� �=���IJ֊p�fZ뷶qϥE�-��"�x�eB��s*6<�N�M���+�Y~�:}��ko��p�7�˴�2������ә�e�O4����pwFݙ�r���jZ5��,UH�^0�2d�v�V��$�Oeٻ��(Y�LR�%u��9��洆j{FS�ɯŝe����F^�DdS��Ҧ��,m? >0埴����Ted2[G�NF[���� d��j6� !�����}�sN�#�_�����ȳ���p\.;z�Kwe��)����5�{���N"�m>�_Z8ӵؓ��c_���y�8�Â8��y�O�.;~uM�,f>��kz��k�a?���ڦ�a����E-�C�R��a��c�StͻGO��N����v�`,��|'8h������mOkf�(;�@b+�f��1�g�=k��R٪�kD:�����q�uP �a�ڜrF-��0r�g�uŴ��<�[���|5a��ʾe �q�,�nZ6�/Ɵg�jZ}ͳ��m��#qQ�c<V���FAi��W)T�"� c���>�{�JDB²�ೈ�y(�ڠ�;�6��#Z �t���b�R�B��s(b�(��p{n<�J�g,♈��.Z9.Tleu�G�c�*�ѯ�Z�k�&����;F졎8��y���t��rvѣyҥm��%ʡA#6��� ��`<+%��n�.�n����I��'��/_Ċ/K`��1�nF���W��룄���7C�#�{��i�L�8�����+��DZ������D�m��7PIM�ߟC�Ufn q����~t�hx�VXܤ�w#��ժm;GY?��fl������u�c!@����m���~�rwwWs4�d��wz}�����ғn� ϧ�TI�i�[L�u>�º�f�8\zW<��]�vOuu+H���lG������)�ӄ��(�Q +�7�|��Ա�j����n��^iz���������O��Cp�vd1��*Ts�u�[��C���� ��0��EE|�d.�hQ�p�M�-x<�Q��4�����"KW1�S̙�0A�C%��E��k��+ۜ$I��`Ry��i5Ǚ����=,Kg��څ����<�_�/bҼ��1u)S�jRV��Y�]�Im��w� �kk�&�㍙�\{����b��h����T��z�:�I�O�a�E��_Lԭ�$�)R +���y��<w����G�<y1�}�zOO�t͉��亻h�&��H��p�q���d���g$�R�+�ޑ<2\�7����+�&.��r�����V�G�k:�N����9�:H�Lj z�I���f�G�t���^�_t���ť/!G���+ �B��w)]��rxq[�֗�/(��iaE�a���'�)�ԓø�7�Y�Ӈ�SB���[�NËMgK�m&�ö�l�h@# �q��q�]qjQu�Nyfp���-.�^O�v�����5!�+g��I�)S{�^�I�zN�aa�iv�I�[x�5L��������>�]�K,�=�ɨ��d�ܘT)w +���v�1� +�0N5fJ\e�g!a� Ed���o��99�ߚ�Eד�&'\��N�x�P@ke\*�O��V���F�ٱ�*{��]X�4)��,����z��KI9C��y��I�m=��&��7vi�N-wyL���A�һ`�_�6c)�tm[�j�lVQ�<�Q*���C�ь ���ָ�\[���6I:d��s���5�r�f緵r��-Ѭ�Q�.�k+�f���ؖ�����p|���ǁ�܌���:<��Q���KDT��i�W��[���-�my��<��4�o�ח%+rU��t����QN����(?�bx���O)'G��(���l ��BI�Alq��^�W���iW�;�a�� � +�I�k�"JI����p�k�"���8�(���1���ҵļ��[���I�����o�2��ŴW��Uf�p8 +�(�u.�T�f���7eU>�@��V�$EY���h�����f!����ܣҹ�����7 ��K[�e�_���"��� ��8�8�����i��jN-t�'NX:�439��纕�-��1�ZԜ�m�<�W}$W�<�w��]b�]6"����n���}�ET[��������Tq����ѱ�z坿Ut�ewΒ���i2aw� +���T%.�E��L��ᔣ:�������nmt�M9?�j�?�����#���-Y�䗃��Z��� ���O����c��i�$�*/���4�����]VCCm��KA�b/ ��z�;�����r�8 � �N���\�����iN$� /��Ȁ�B�A?Ŋ�m}������B&��� �(�3dx�@�5���M��k�CӒ<���Ί��N���X�_�'�G��m�Q%����f����;ܨ����d�[E�]��ʟF�K�9����nX$ҡQ�f��;|��1��-��x6t��T���>+YQ�Ekq�Χ2�r���_����������_�)4�D�?�>���צt�W��V7����/�;s����[�8��w��:�Lӥ��@��-�41�p����W&D�4m�n���-�/��H��Yn<5 ��Õ��Z�-�]�m��67]/q��ʰ4-������j��4����-�h����3 (w0ڇ�q�Y�����!�����ܷG����rw���m��n�Q5��g�������J_%r,����� b=�;O���Zm ������c� �� _�e�����e��&(�"���%x����T�9&�ʣ����zl�5��9������e�$r`���ٞJ�T��[�SP�|���i��F.�c��ĉN�M�+[-LiQ<�2,C�[�I��������'ig��X��㿯>�.F���W��ؙ�!�g��U;3y���*mR:s���a,jF�ћ�Ej^_���GpN��j��Qwf��j��e���V���Bư��v������2�8���:�飑Z%O��?����$*Z�75�l���g����Nd�����&��T�1��r���gE�n�as��"�ƈN�^��{X/�t8�]2x����h8I$ڮH��95N<W{9��Utz���u.� �6v`�D#[[��#Xʫ#����*g:S��sz���hs-�<.RI�^����~�5��F(��f���q:�U\�7ðͩR�>1�/���8��6���0��ω�O�s�� Vє}j�'FO$l���v�۲�o�w$����"��o�4e��B���s��]�V���T��Œ�������+H������%��U��T}vG $U�~)�c$&C���95fm���S�T&�<@��gn��ǥ� � �(.-�c6�;���F!XFJeg8��z�� �}FY�f��̌��$1���79w}����y�qR�K�)��}���{=RqqCsЛ��F�����#���c�� ՝;�{�^�K�6��u�`��dLP�|�~Q�ޜ�|1Ϧw�n���zTvq�oca-0��{S�`|Ƕ��k��qwд�>���H!u�a8h���%H����{�,�(>Q�Ћn.,�z�A�_�!�����Je=�&/�7��E��m������>�;�YV�)�~�Խ8�V���V7F����yN��9]q$�P6�#/<T�� w��������?����($����6�r�ƅI;�T��v��Z�g���k��r=5���n�t5��)�-i�9Nj �HN�6�*��~����7�ƺ��#7��f�:_���C�C6��#<��0>��<ס�0iE-#˖Y�m��d��3{m�~%��9]�p�$�n�20�<����� 7U&��l[���mf7 +cvlL���U��wgj��Ч�K{#���N �������T�o���p�$g�_j�8�2R<U�z-f(m!�\$�_^������Q fع�;�<������?��߭���GWӺU�t㩺��l����2�2�e�o�l���t���Z��ϗ���^������p>+8V;�gN6��n=(�j�UG>[���=CW�f�j�=�,�\'����Ǯ(n�@��7��I$SBK�1�?�Ұ�ά9����H#ć �S$��5���%'�U �I�$i�!d +`�T�oDt�Mk�;[��8�ח�f���v���@�?�Z龻��n~b�+z�{��Ȍ�a�gM=����uc���u�ܤ3�9_c�[�sZ�J��4��=߂c�h�_��@>f'��!��NZ�䚕�Ů�4�&{�����L���O@����nF���נ�����zW\�[���0�Ʉfd㐸;v�����K�=fվ�]o�]:�s�Eu5��9Ph��nUCʳ{�~�����/?�/C�r¢������-�c�O┒ώ1��S霸�f~�����[�!�"�,͓0o�\w��Eד�pՕ�5M&�5"H/,@�I�6v�Ck���^�96�K���v����֝ �M��Vđ� ��}�����kO�����\jIW� �L�-̳�y4���rF����3������fmF���h�#�Z�yT+���PH����j�8��G+�!��V��MK[�]B4�'���'�Ҳ����~�������馴фmf�e��Q��3���wa���.2����/���c��i}|�˯��Ҽ"���^WE�$r�u<�#�D��tj�i|��b]iZ���ʲ���bF (�mm��� �<S��[1���tK�������h��N���r�F>e�rB��Z�N*j?1���'+�����~�������k�n.єܪ�Kc8=��Y�z5� ������6��O�?�Z� ���������V�������+���'��)I��L���H@�`���jB�z��?ڐ�&��ց��h����E�����u$@����t&8�:X4p�����������V���.��kx�(��*TVf��^g����#�����\��soj��jo"-��`d�]<��,J�߯�sE���G|��5X�n��ѤfD$ �*U�RKpETb��nC�R{y �tW."�0U�x�/։��:g=��4�o�|5�N�H�B�����vp��<TBM�Y$���ɩM4��&ZE>���v�ey�V��F�����?d\ȶM/�܄�G�ߏ �X��q���'iXԓM��]-,��5ޙ)ӵ��$�ͻ��,�~��[���D;��mz�9b�����������#����Q/N��0�]�dU{b-b\��� �/�W�ٵ�Ь�ӧ3=�qG-�"Wh8���y$R�io�0�+�25�ss�J��څ!\���j�EE�96��I+Ih�[FҧȤ��=���T�U��GW�Q1�I�S�b��aݎ}�oTN�/�H54�7m���R(n=8��Z-��4[�"��I��v^O��y%K��:V�!������[��c�{�k�є�j�7m��N��A!�$O�t?Pk��L�x#���9g��!9����k�Am�h��� ������s��̧����Pi�u��ܸX��s��S�J�g ��,}G��2Fq�$���q���/l��@���H���i�U�,���,>ե 2��N��1Ap���CdHG=�ȩj��n[������s5�ʻ�Gʡ=ї��L�����SjF��4rbݤ8����i�>�ocsb�$��9e�C��o\P��f@���nnu�A�P�|vq�@�KLJ���yil6Nc��e��Uu<m���I�X�2�2Z�^�ۺ�v�WlS�� Q� ��R�Z�dw���$����6�'�fQ� Z/bq����U��[YⴅK#3��3��Fn{f�H\�ƉἻ���J�"�$�Ēf}���8<}�)d���=��]40ݓ������=ʩ�c��՝ȇ[КR��.I� �0�}N=EoZ0��1SB��#9-�|n� P�=�խ��u���s��r�P���r@��ɎF��-^MS��/����cHx���85��*y-^M[����?����OFr&Hf�F[��zfTDK<�S敶���Uك��r��t���Ěy�y��(���0���K%�kӥ�c[�]�ѱF��b�I#!�� +�_1l��8�ve�M�vk�A�ܞ3��E�x�y皙3H�3�h6֟{&�K�ho4�u�G!\�co�v[-��EP�?���Fk�t2En�n���$YG��1���V�'<M�&��Q<�Jd)p�,Q(b�#^Nx�O�I�ś�4�{$��h����խĬ$�@����U�.���)ݢ��Z]x[��t�Cl�k��T`����l8ʎ�Vo�,��R�"e}?T��p��Kʟ3#/� �N){k���K�F߬:��Q�������s�8Er6�=����k�坸�uE�Y�����t��5qv�����N ��\V�o��:c���/b��+E��:c]>�o�Պ��c?҈�zdJ)���5;�>�!q{��.쮜�>'��e�v҇�zV�1Q�bY���$rO��E��wm:�Vq��#�(r$uv���xj��+��U&����u�T��m�����1,�p�$䬒��X�^ E-��n��f^j��N#���w�����T{i=_�4y-t��a���`���UC+,s�ûi@��=��[Rd���v�/���jzD������xR��c����� �8��Yd������T껛XnR#�?(�g<c�O%ݓ��W���z��H�]�:4�0�9[��c +��r���8�����^�'M��?����)k}��.x���Z>��|�>L����?,�X|]��Y���P�8�����=����3pQi��S]��x��>�,@I J[�"z��kT�]R4���vΊ��ۥ4��pir�8R����g��rY��1A��#�#R��uz'^���][K���1ã�u���7�R[�#'���Χ�&�,���>�3��X�>����ܒ1�j<�G�t������cv췩t,r�#�䷨��aY���r=_M���I?��Mٶ*b nP(�Co*0 t�]V���ߝ��.�y���}����ramWgF�;�O�kb"�݈x�Iws���z�{�&��V��u}]�uX�'�a��Uv�kgu�he@ ���}��J���]���[��>��궪b�>� ����e^ʨ���}��15�^U�s���c��@[�V�K=F9�yw��8UYT|���Gz�Q�����w:���35���I{{(Dڌ�<�+�X0?��}�������kECۆ_�\Wǟ��PuGU�)�+ ���E����o.���8�Զ����s�x�I�����{[��3W[����w�7�۫7��>2<��0+���䯓�0˒9�?���}G�z���ږ��|$�x�cK��e_22��s����������AÆO��c�j�e�: ��J���Z�Yc�壢X�5��8t��n��{�F9U��h�s�#�V�Ev�&<����ND�H����M� +�⯁� !�p~�W���v�8f��'���S5酀s��<�[���I�U��-(����Ӧ]F��V�'0��۟����mvckgT�8d�ִ� +�>�z,(>故q��È�CE��C��@2sۚV*��Qc�|V���J�G���������x�X����?:t!{Q�V8��q�N�1��"լז�$���`r61�R�8˵c�IE�]v�+��j�)2`Y�Σw Ϙz�0����ge�~��MmSjMt��s�HP7�lq���3J�$wd����;�PZ=ϒ�3x���_�oʭ�֍��#��7�>7B���0�P60^C���5�����ƪ&T��=�$���2�>"_�2>C����Z�*�!�D�%�D���OU�S��q�9��>����o��R9൹Xa��,�,�Dc���ͻ�9lz�����N�Rk�ndV`萲��[u?�������֊� >�_����{L�{(�b���5�����ChEG�*Zt�[��i�+� ]n�k��^y���[�3�_e� >�J���U��"eDGÖ���9��~;4��I&��fx��A�C�>�����]�Q��!��B�to�������Q.�����m\�����{U�"Rf�����.%`[���|V3��F������ԋ�t�.0�˟lRĸ��Mv���Ԍ4�p�{�����I�2��k�ݹH�W�����KFn6�ė\�x���������pqG;*��G�=AК����H�ڍ���MI�&=��Di�+[�3F�z�n��ƫ�EpivX�t��6���\ʢC�V�l�O(���z��n!�<628#n��=*��y)�o֚���[�ڣ)]�.Y�ӓP�Ƴ|��w1-p��d�@�N�BqC�*cGq��d��N�,INh�L�s�]�w�ᑜ�DJ�����:�������G��~D$v�=����vgK���W���;g�SB�x[x�(Xl�k�Gs��7zQ�jMmqu� �w6O�9� �����r&���>�v +rc����NF8���&kCvƗ �lw��2��f�pGLr4C5�o ��c���[�`���J�X��,�MJG���Ekhe�I`ۉ@G�bH��Q*k����%�vx�\�RW��߽Z��KvV�H����NJ� +@n�}G�T���'��yR�g/�9�qǭS� +M��y|ϐ008��А9�O�F�Xg�oJfm�M�ꖶzkۥ�Zz3 �F��;���c��)l���Vڲ��.be���l��X�gn?�9&\&�ap�Z�$�I"dfky�*۾@��2��?j�>M9x2`�����'�i�i��W+����i�FjM:4$��Ɨ�3ڠI.�c�''d{�n�~t������6����uepЄ\Mlb*�\� I��q���vn�^�E��`m��ٛķRg�dPZ?��.®)U�%+ѣkiow������ll�U$w9��<T9�e�v�&������E�#WgH�y�G$��}�+����FO�4��[<�v�1kh�� ��nl`��q�V�L9��ӵ�7Vۋ�o1�� e\�Wxa�~Ճ���-���$����;�Bdte�x�˖���q��y��ƥIYcO�}Yd�����&TOX�c-�,8�}��1y-�,�uKԊ� ��.���UCϖ6b�ӹ�N+�Uo��� +��}�ܳHP�Bg���>@T�Z�Z1��?!GedUU��y +�9=�3�*�'DV���n��I�ld����� �d���n�E�] +9��ԭ�%�7�k�Y�$L���b$��km�V�=�*ݎ�q�Onb�x�tj]����>Q�Z�!ʊ�����G"�I�T�2s�$);W�mg8�p�F�}C֢dHc���,y䝠r��E�f�}I�,os$RZ�ί-ڸ��rXq��M5ggӋ�j�@ڛ���h������;���گ�k��4�e �}:������Q��{�x2�{��.>{��q���v���:4�-m&G{2۲�������{WD�BJ̣�jU�Խ?��?��u���t�0 �eۜ�s������)Z#�Su�q_ҽu�]Cm��VF�h�#Rm�6��r�I�ι�Nu/��uzoQ����J�u�u�l4���|K�v��X�?J9%ٛė�ޯa=�Z��n乏đ-�o?���QZ4�L�iJ��D�{�}R�+��/�Ʊ��n���cL���5ƔSI������B�%��UV��>����� �V���͒N�ٝ�߆7�~�z���7�`����s2�����,j�*�dzF���I:t��f�!�ɑ�[����#��9+� :{P��Ku�M���V �1#�Z�?$�"�$�?�㩙 �4�]'��[o�h�F9ݵ�Z�]��{}���Ί�N���d1$�� +x����'$s�ҩ5ًf��3�� v�� ���ϭc��*��Vt��,��,����l3?��Y�>n�����?�����f��<��/_���ѴV�ƺ�*�#^+�����I\�������O�+&W�M����}�k:�Q<��8��E�<�[>�����q�.��v�q�fB��=�4���z<g�_�ygL^���Aى�V�t��ʭ��ͧj�p��":{zg�Խ�{C|�{���'�:=���6$�{�푵��p8�23��G0��6�s|)��b�c������W�cB�#�ހ�&��� C#��j��"; +B�C��T<pL�{�"�d������'$�vX�"`#ٙb�^�x8=�c>��b�}�E��ռ2�Mc�j�<���A���RMk�ًJ�f�Qf�lÐ�v���8]��g#�ڲ�F�Z+XE��K��Ds�$���d=�H�{U�|���IJ-� ��ro\<��r��G��4U��Y"���P��DQ�S��˻����Tؒ���Sb��^͈� �5<�I�ww���Ze���|s�)�Ys�C3Ǚ��<��W��;�}�Eŗ�$���Kʃ����1��wf�Z0n�ų����/ͱ*Y�0}�<ֱ�{0yR�oGs,�-��@6,[�H�3Jc� ++�%�H�*�.�7�=�)��"�Ь,�F����Ϩ��P+^�5�6�ʲ����4(�W����n-cV�@�{���y��à���גb�B<"�g�j�8h矨� +�]_\�4�)X�X�O��q3S�H`I��w���p���>���B����2�/5����.C+���?6}>Ԟ1)��0��2��a��曂&O&6G��.p���}�i-U���K��,1��j� ��0��d\UcG�0��I�jE��O��+�ʾ31�<�q�P�i�o|�]���(��*JdR�G��19=�Q� �V�h�ؑ�q�&p<� p͞jT4�p�*m��dq���ɡ2X��a$�>�R���Fr3�����I��@���d�@g�zԲ�7�g@������m<�M$�gfB� P%��e�ֈ�����HX���caezuwh.$�\oY� ��W������0�}��ַ��|EH.�w`�7;FOcIF�)�J���1��]�*Ux�J�)8�M��ֳ�>{{��bM�R����ӻ3j���(�-őI���4�8,8>���f�(�'������vKY.�3d��܀*�95��ά՚��t�m�)�2��b�I!�p����2eOA�:%��m� ��~2&B��F�1�7�8lj����x�p�R���r�@7�7� �_q��Yy:_E�Y]$���@��5 �QE��9�n��F?�*h���^I��ԅŚ�\q�b��01���0̓�N�}x����S�v�m��Z�x�@α/���⯘�YG~��Y�tD�����i�D���EN6�E'`6��7J�tc6��4��-�݄���H6�rNr���.6G�]#+Z��==en��(O b2���юG5.Ѥf�v �����cU��2��ܻ�r�c�����g.GN�F�����C!��f����m��i1Bl�,5����k+T�yC���*>�p[ȹ!kۗ��1�ٙ����{r�5�Ipq#/}�N|���5/�5[VMi�K$�#��HJ�[pUX����ٍRAh��l/�}��x&(��8R��Q�{�ZE|�ͺїao,7�]�+J ���L ������ժ3��l���t�������w�S��H����(Qo��>�+�2Uct�����7���1ޒ���+�8��?��=�PG�� �:F�eY�(��q/$��~c���KE'��ҴK��|���l`��[# +߭H��:M3R�+?ܼKt��@N���3�u��'��'٪z�xa���$�Hv�s������d�e�>$Q��..���w���9�z��ָ�_z*X��u���r[�^��ocR�0��7s�Q�g�I���ƛ�_��� z譌P���1��Y<�=��F>��*�#��l������9��e�/c,�@�?��?���zf��J��[T{�$K��P�B��?>�xlwȫ�'�K�� ��gT�N,i�-?��c?�����_�]��]an��f��h�M�� +������Mh�4�F���W�K����k�3�b����J���q�/�;y����3#G +%�%��zz��M�qF�t`�~0��q&����$�2+?��~�.S�:!�^N���r�r���颚܂�۾�;�v�4��"~�q�����K̑��B�K��"�������ܼ��GV���vD�hnʱ�l+��\���o�E���KF��h�n���Wf�>XYrw}?η�D�e��U,罙�)$ߐ�O��)�8�4��@y^?�~�'�W�pXd�h�A8b#q�;�G���%M~����Rc\�1i`�ڋ(\z�g%� ���6�H�K��eq�]�N8��DI+8��ǵO1q"m/��9����\@:g��G1���; +9��i���R�H�M��>aČ���G0����S���|���Ř��Q��,�;QB�Y��T��!��,Mf=�H9��=>�TK�ZJ[�JK/9\�{;Q�"��1d��MM��q��&�r['�e:�RO�'��U%��3�o,$�Y�ۅ�r����r~���d�x�4�ɱ_h����m�j��w�%c�L�AS�AB�,�<8��Y�4y���g�ؓ�'t{J�Ğ���zI!����?V���WpGw��}���G�����U��D+oo�"@fx�360�G��;�z7������i�0����'��LG�G�?0>����..�N}RiLP�t���*"hv�� +F �އ�V8��s��cO�P��V��M5�#N������h��1pF~&rb�+*��\��\��Ԛ)3N=";9<Y9bq�3�^��b�d���2XOr�I-���I?��N*_�\���`�kȌ�"���T��եG"��Y��y��8��8�s]x�92:FŔP\��Z�~�c �ʺl�q�I��WYS�r����]�c�RAN�� ��>Q.,��na��ң����E:8����҃;���� +"��Ɲ�2� +���`P\�����~�w������h + �L�!��6ml�[�h���H��C�!U`T� �8�g��[��*��$�i<�����4�h����4��N,�<��I�4������*�Hs���|��/�4")-�a#���ݵN[�Oa�N�TM�Ga{|�%��E�#�L�/ϕo7���#�J7�I�+�Yk���ÝU�ip�� �w(��(�-�:� �˾���)�J�ܞ�v�y�U�e��Y�������s��N{��TK�$s[��\;�+�D����Y���l�Z���̖Sz1ed�t$���^6�\��zl̻XS �=�� +��'�dfQ�Fe� '���� +�TY +���)�E݂���w'�TP�G���>U�����.��r,p��`�[s�]̮W�1��e%���; ��P��Z�G��Y��`B�Kdr֩'A�)�o������X[�r�тJ���#-�vcS(��̯սG\.����S錱Gy +�R�9B�X��U#ަ��:]�����f��X&B$���@F@-�a�c�U�d�,^(��U���c +�H�p���7�0O�'��Fls�v�۸.�ql�����`wB��鞗�t�/L.������%�iF���#�Z�h�ɒ�����t!H�BQ��#b��,{G��w�� +�Y>��0_��M"��Wo�6�1�*3�uE����Č�!�D�H�q���Ѷf��G����l�ʺGID�^1`�*�T�yga�I�U��S�("1��<ڄۚ�g$���f��s�5Q[�J�\�V�1��4� re��JዮG�53��LS�~�4˘��ܫ<j�����0bs�51�IIP�{�"i@�F̬IRAǗ� +��R&{����AX�����3����Q)�eo*���,͓�ݕG�ުB@� +M3C��y.D����/�A�5)1:�����a����8������;4^W?͔�9���s�V��o�������FTD�l�{դq�2I!`�y����D��#4s����w�dr[G��'��>��6��wP{��a�&mdd`�����C�l�dtc�j]J��i=��>*Ȼ��v{g����B���z�к�f������,jX���pG�������F|��Y��}m�9%�rX��$��j���ٻea�hsA;��� �T!2:�x��n��ֳR�T�h�)>�if֖�Y [�`�(����1T������-����i��.�-l���)�A�_�� ޙUEޒ�;Kۘg�|m��)8U�T��UƬ�������F������+F�5".�����-2�Z��\���1��c�.�O�稭Nǎ�'��z9�|�vat��,�Hs��j�Q3�����Z�8lz�3]�RH�ݖ.D�Z%�����0�����WFr����}g�=���sa�@S���ʮLr�aް��9#%��������h��i�K��k�3,�0DUm�$݉�#q��6�o�7�^���01�����$e�=��jF`5�>���FlWڐ�6+E�����(�#k��M`=�'�ϥ!�~�>���CE�OڽZ9�ޟ��G!aOsO���QA�fU����c�d�G>�m�{���*<D�8`{��{W����:��Q����gi�%���lGKAp��]��61��D�;�$�ޕ��K���ԋf����ݭ����(��,���ܲ�C�Zj�!'�Y-��Y$B6[ r��2�8��|H���G�\c��K�B��.�H�?/aDZl$�[�x�K=�L���J�d+�aD}�x���Z3��&��fanU��̤_T�f��T�����6:d�sL������S����Hp�l��D�S@U��l�BpwlOzɯ&��� +�ڋI|Z�Gz��d��@bH�� ���[���c;z�R��x�r�B|e���8�ښchΕ���2��B�8��E]Y�m�}�v�R�B���A�aYql�I��-��n��ˋv9�+)J�TlϚ�L�5&#>�P��������C<6��]*��>$n����u�',�n�j X��g4���b2����h�%�:�zd�DTe��}�j�s����tHO����K�r�Ԓ�ۛ��R���x�C�)H�ŏ�����[�O0�z�i&SEK��$H����'�=�Ud�3�&�y<A·�<0ǭe&\Q(��H��B���v�<SR�.�y\nY�Ѳ�#�A��R����!L�"�V3+c��l�8��E��ȥ۞��W�Č��d�F��n�)�vs��R ��[��"F�c+�$C<n�ZY��w%���7NcI�]��Ilzf�!� ��G|<-nr#q�X.2�n}��M �=u�zcݍSB���y��R��S�ё�v���)](��9�H��|3�FW +� gQ��s��*͚"*L@+F�ʜ(Ly��1`q����m�dY +��I�,;|��-U�ѝ���C�,r~b9}�X�b۔!���Fr����zAD17c��q�$��� +��ĒA��$w$��P&P�ğ~}�3gg��7ϢB�Ƙ�m�L� 6�������ف>'�t�N�<��I��J/�{���de=� �W�Fy����5������i�v�5-����o��ғR�S��Dzu_��%��B���v��d��g����Ӎ3�cW��9�c{�� @��vs�p����G�m%cN��ڭ� �i���^9�˦�0�;�I��f���iz����1���0�n�v"��Q��N��_�&otP���'Ƙ�-@mg�bL��3��z�j�%;�dn�ŁRA ң6��6��˃�Փ���Oj~*Պ�0�I �����K�q��]oD�od�)������0"I�����)��h�FM5-�p|o��M�iw�q�[۩���"�m�[ +�q�z�&��@�}��-2Uk���ݲ97��pw(�z�NGD1.�Φ���n��7�v��լQ� +Q@��T\pA�z�V���E��he�Co��vg>]���d�V����ʈn6� %"vb�@�H8���oz��g$�<��]��A�m�e}6�F~�BD{/V .���&��/���P��M�m�.�F�v ���b�BR:��ob��^�\A��\+��ѵIS�P���rvw�n�iwMj��ݵ�ea�]O �Y7]��_Fc(!�㕧fuE��X��d�rG�S���3����T��c��Lm�0 �7r��ER�:c7��&��QI��k M�ۿ��D�s��z�5ь�'�5zv��4�.�9'���kS���?��FؕF� Զ,�¶���,����Ե��5�z�WxH�E7�-ʳI����J# ++���V��r��U�'{Ǜ�'�����sY��Һ���)`a��$���E�j٤у���Q[��R���:˶�;���$��q���:�д�����������G?#Vp�4�wwgmj��0������줙�ѽum���:w���&�l�=�6���=�i#IA՝zN�|@�q�?Z�$,P�:���T�Ӭ"Y�&�> 3m�N2O����D�ǍKo���din������j�/H��r]p��Oy��4���S:H�@~1�#�4��ft�iSO�p]�PKm$e�x�[�}�H�.�c��U��\x1����ߟ���5'k��Wҕ�n��ך�N&8�R(k�/pm�P�B�8d�b�ǫG?��T�a�e>e+��ͬ��R�������)H����i�-�9�H���ԝ7H~��8��&��k:�ým�h�9/�'�*4e)J�oY�9�˛(�}*iq��}�������)���n���5.-vk�-�jY@�T������>���<���''��E�(��E�#?��@��֝� &}h��W�6��y�\�3z�?&?<ב���;��z��\�n�VԬay�5��I52 �~n�"��ؔ�C�J�����AV,�N�^Cdۀ��~3��Vՙ�S'OY&���V<'�\�0;�L-5��c���iHh��T�6�9V�J1����)�I-��O����A�878N�"%��p�fݾv]�v�B2�G�$�$ݚ�Ң��e(�;es�yU�!%K�lrރ<�U &Œ/��7�=/yB�R-��f�m�n�8�P��>�����SOo,F6 [(Tv^<�a�~���6]���O��)��.!+��xo�M^��;ue��W0�p��FA��H��OZ0q��Q"��F5f��$nǦ���k�:;:{���3i&�V�A�7G5��u�����-����0��RM�1��/\K�#���)�N>��G>F��=gV��>,��1����������5�$���\U)"�k�.��@A�i������}E�$�����Tr�2<xo$�yH��{d}iج����- ������h��8ap������ƐP�����0B�v*}hH��.����� n��=�hldO(��D�X��I zz�V���<+��|��L�ٸ㷡�H�G UF$�g��G���V"�mp'H`d;�ᣰ� ��}Fh+Or��!*W�<Ef�ʡ�*.v���LL)5?i�f�1�+��6��=������c0ɿ�� +�~d�m#v�I�r1��Lx�+Hg�X�&Y �{����B����R� ����c�����7<�N�E�^G&;wJ͕`0I�03�4VUr|-��7�g�p��XnߝCc�\�Z�.��7�)n�NpG��і\eJ�V�?Q�V`� ���>�J�^C�H�A'�߅æ�>�p�ZIm�C.�w��;}k�ѣ�-��1D�K����I�'�E ��m�-KD���ʪ����M���3Ϻ��SBKy�t�&ȥf� +#lAon*��mmvy$C.�y`�k����NDD�S� �D�ط� ��u\� ���,y6��qښ��2��Gmo4O42 �@@��g�ݸ���%IQ^�����h�!�#��� +��Ry�t'%�ݶ�j�iw2�UT���x�Y;K;T�@ +�L��k�,�%i�R��9��tw(�k6�'��E�^tjA��|�b� ,&����S����=pi�pecX��nt�>8�ST���3�H���»�dΓ�����q7�@ՕV/��]��a��X<����~�.�2�=����<��Fo)FQ�Iڼr���ﳡSV�G]uy&_a�H��|�s�U��$��|6FO�9b>E�l�����h�E�[t�����M�I$�x#Y^FA���KJ�)sRL�3\i����#�#�)+���v��ws�֭� +���..l��^_�Ђ"�����h<l犤ȯ$/p�!�d1v�p{n��VFn&v-�rK2��ǜ�I��[C�-l����.ї���r�gс�r���dFr��G{g�-�N�'������9č��\{:)I"�$� ���A�q������D�s��\��;��>�i��O�� +Lrm��il䎵��_� ��$>_�'*��<�����է�H���#Qĺ��֗�~ι�V8�Q��w"�� +.2���i\^��p� XWan�$���obK�S�l�H�l��S�|r=i"��ossh�#A��,��?+&�Z��.TmE,z���Q�:���ۅF��c��ʫ(��xf�at�ܡ�Q�,8��'�hD�L�i+i�+-Զ�*�@�����_qUě�\�����ڽԲ�9��c���v�����*�Mݶ��E*�o�pc�����8�hrv���OV6�FE�a�7`�>�-�6���z{��Rg/�$P�ʃ`bs��ⲟG��>�ҵK�m������]������<+���g�'Z���٥��e�̟iIm���2U��T�Z���:��~UW��) �m/�V�HYXK��~�Ն����#�,��h�V��h��'�ws� b�i�\�T$��Qi�A�-��|�l��q*I>Wɶqz��o�aQ��+YbLx� �tn���J�<��,�0gJ��GG��������ԣ�"��ǓT�{�2�'��ɝ]0�U�-�,��n��O�s�$��=�&}+���yA��[��->m.�������`2 tjKfj��%� ^y郴���ҽ��L�;Y�6h�d����1ɊVk�x����o����.H�@ N�N����Eݽ��ߏ�x_� +^���H�}��ߓ�פ�g���ɚ0�H�o���(���xW/��kA�*5�����+wn���y�pK7�6�M"R�� ��6�+���� �%ٕ�]��&܊�:���C%���=�����Tc((���1VU�����o8Z��Į��_p@Ԝ��doE5�':L�Ŵ�I���eW������D������j��FD�+���.f�3�<�1��0f=���I�ꈔ�V���HnuX-�ww�P�)S�]�����#�fSW*6uH���-�Л���E�d#�m�r=�o���.:-���=��c���܆%Fps�{ +���V'��T�&�U6��ة?1Ǩ���c)߂��hH�����6�c�Wfugc����e��j��Fv���?�W3��u��eC��O2�`��.;�s�6r+x�"\��k@��������r��۴�V�L`]ꮉ��F��i�G��0�W+3q��־$��$d�6��g�� �ZPa�#ð9� �"��0��$���s���B��gY�ޢ@A.��A���v�o�Б�4|�,;+�Z��skw�$�h�;Iĝ�W�>�����HR��vo�;H</���R`o��i6�+c~�[���=�m[Td�������1��׃�eb�H�W�˻o�y���)!|2,�o�[��:�FF8�>�������V�pU�������d���ۏ�ڮ�m��4A|ѝ���$����8�zgd�r�n��pʨ\'��*�����i�2�<�H�0��;mW�os���ݨ�Җ�s�V!�F�I`�n���3�P&�M�� + 3q:��UT(r̓�}hat@��H��Q2)�|���R�%�N��]���Jm����#�<�l-"y�"�.�j?��I#v�\����Q4��½�7B�^�"||��3����#���X��$�������������VE&Ћ��1��s��4�Ο�GOд�*�nX�����,�KxQ�X�Cr+ ]��1k�������Gv�Mm������m��J���wz��Tw1�����d����2�� +�c�b��n�y��E�\�]��<��p#Xm�F�)u�����p�G�S���1VҮ�V��#$moq���x���q��zЩ�/Ǣ�^4Zy�X3���f$�P1"0�}@�x��52;=B6����2*��i�#g�3ߚ��d�d���@��^0�a�(;|=������5pz#"�K�j�C��@��Z��e��[y��.��Ke�H�/^HCI�҉��J3^?͞ӽ٢�.�b����"�-�'�I"RWx�3��N3J�ٟ#�iuq6��V$�����#��t'<P�%*� ��e�G�h^1$�E��Y�!�@0{��V�fy�Yh���m��n�*��M䐠��{��J����yV;6k{��� LSu����� 5���d���$g6�&I7�]�����-C� Wb���<dŁ�08����J,�-dd���G�V6�d}��'!�m8�|`VO"6P�`Cn���K�ղd���F �2n?�M2hԲ���me�K-���р�䌝�N{������Ⱶx|H����ſqu;U +���t�'����34S�]��C����� +qD�Yf�T���sC�]E��J�o�*Í��Ү��kz.��O4���/4��*��g���/����:3�?i,:��q����\yKq��1UU� +��~D��L7't�1�IlH�c�rq���)�b�$V��|I2D��|\��7��x�5�L��h}?���%��Nc\��#���$l}j���l�"�c�r�*1;����4F>E9�+���d�P�̤d.��3�F~R(��Z.躖�g����KDu*�Wv� m��R�2�V}Mq��d�t�q]eb�r.�#q���vD��Sx�o(ɝ�E�Il_�kd)*�Mf���Cp��(ڎ�������S[Г� ��/��9���dA�G$�6�㺱g������j+�4N�L�+��ﵫ7���y�`�`$����5�]*5�t���X�>��9-�`v9���O���D���Q�_(Œ�y�.t����F]��o��2X�6;��R������v(�R����[��L�b�[�F�>Q�ԟ���O�O�v]U!��PM��(q�s� szf�:�W���JK��e��d(�{נ�y4q��H�w����e9�Ǡj���H��6��Gh�ʧ��z��r�{6��*���vr����}�G?��l�^�8Rq =���FǛ7����+i��~U�ֹ!$ލ�B���,X;�A��hÀ�����<+&YԂ~Ezx(�3�q/M] |��x�xYв���ǥ/i��G������^Ù��)��� +�#e��ѷ���E���G<��me��bG��7P-�{Q�|B01�G18�~�P�p=jj?W/�Q���P �[�g%�!?UV��m��h��*� EY�$�O������į�g*�q\���u�o���w6~��~t���q���zɑ�V6���O��e�gkl�z�KL�g�Z�[�Kx�X.�!&Wd��I�P{�*+,��ۏE�$�������ҧ��! &�oR[h�x�;�98���95/�e���Pڛ�sx��[{Wڠŀ$;�����j���Bx�Y-�s�3̲ +|��Fe��(c�S��Aܬ=F��0B��5���4� +T��<�u�9�d��Ww\"gfVy +�H��lS�[��H�lyfP��a������'h�4V��m 2_[H�X�(pUO�}*��DG��Q�Ynp��|���~a�R�.2F��>���`�|�E\ea(�~}JHmmm��X�0�9\Q[��*"���6��bB�l��_�+J3l�;�Y1��,�$��h��DB��0A7�%bq��l~�6C���a@h_ +F�{��i1��A#���gre@�p�Cl���J,m�rrDZ##�(bK�B/��!��SnAn�g椘�w���")�# �pOc��#��>�Ҵ�G�)�"�[m�a4�+�H��1�I2{��z&�tN&�{8����$F����������#����h�!�h#l�e�G��1�Bb@&�m\F-cu�m�fr^[qe<.H�n��]��85Qh�Q��L�|������Ly��*�2�9"��B����,�{�d�<��qާ��⥉�a�I<ۡb��2��w{��Z�ӵ+�ǁ��J腘$3*�Q˒c�ޟ�'�+�hA�}w~,4-JY'P!�5��!}�c���/4>AŖ�?�qC�W�l�r�ƀ�����e/S�r�u���7����J4�6�ia[��o�@���{�1���f��ߔW�����̿ e���+LB�B����#�T�L�Q��n���}esS\j�6o�+��܂��I8�z��r~yq���M^ \k�dq�?�N��i�������R�Bc�a���Ɨ6_��NQ�t�Z/�{gYwJ�� `s�Q,������cW�l�fjK Q8�<�1G|c��?^®]�q�G;y`����Z�,�#�P��[+M�4Aq +H�ͼ[H~t�]�3��7�q�z(R�kL .`Y,<M�H2!9#*2����P�e��⪍}7\���Y�{m��\��%�I��{v��T㿦M*j��oFMŵ�����o7=����!�Q�p�jaJ����P�I,�#"������zS��+�5���{�:9Ų��3.��N|C��c�J|U��ɥѡi���z�I�6�I�IetF�7y��2rZ2@\��D�iT��P������3w) @� �v���r2�4�9]^h�Vv����n �#{�<2 8���9�SϽ���h��x���d�j�x�M��n�a��}��QK���v)d�d�%��$���Ď@0�_�\2m�lT���R�U�^ ���VVV�m�S%���� �a���k�ciɪ_�3o���t�+��J�Cq��H�,��}Jwd��j�/OYF ��� $��������j��Z�m�p �ψ#��"��l�m�r���}�Ҩ�E�L� +�d}�Z���w�{�OI�ɭ�X�!�Ȋ��G̸ �튶��l��]O 7f�I_����A���yN*��9�Vv���{�ݜ&�I\(�w8͏��U���ӫ"L�a�j�WƸ��L�w�]��v"�ʝM�Y��-�H�R�.��.�w� +�VFV\&M4�q�[-SP��t����ZY�-��v*<���S[�Ҫͩ۫7���;27���O�A�Up�}�3������Y���mw +O�TG4��F�:f�=Ph� 1L�e�"��'��)�"�r8�VPT�Ή;V�^���6����y|����:ЖY������L�DLU�s����J�6A-��g���7 RK��F%<��;�z���5+-��B��{p& +�q��j +MvA�������\�4���8����vhi�0;�e��J��n����4L1�{\j&����{k�$�O�On}G<R����9�(42�ѕ�xI>�=*��F���&@r�(ąNK\z���? 4�MK��� +�j#��-�H>�ɒjrIx:������uC%�����7�&IQ'wVi��}��[u�g,4���Mk�鏫G�ư���eQ��m9������m�=��RNQ���u,rP������(��:����5[���C��%U��q�U<�&�q5�ھ��Q�t�UZ�i$���d�h��Gږ9)-食�aqt���Ӫ�6�+K�=�q[)�o�뾩�̶r���0=���\���Όx�5 �]2v��%<sڴy�Ԍߧ�h�KhJ���b�8����s=g,M��o7-��#qqc�&���qsa`)�k�~�ǣ�Y�����(��6��Ќ��]�1�����M7�l�6X�j�o_�z1�#���?^ujXAv��n�88P��Js��1F�˯\�Fm�p=Mgɛ������D?�t<���-�?�g��y�X�6r����*dh�%ӧ?�M�Ry�P,Ŧ]����"��#�.�bj~��2�7g��l��ZA���:~�"D�o���Ȗ�(�/���N�x�FoP�g��cjZ��ijbpZI���,���y�J'/�����$7��M_jw2�(�(�E�� ��zRʒ�D��N���C�o�M�l�z*y��- KDSʴ��L�|ǏlWf��ٷ�����¾���&� +2�d��^@�,.G��k��ɛN�ο�:CU��.-5;�����|��\#m]�����+�MkL��'�h�c�&��f��V�/\����FG���iB��VL�}W�DtN�a�;g{ysrO�}=�=�`D���U��Ite{��~E�L�����n�%����3�U��#s����*�������Ն�`�� i�&��L�����{1�ӊ��}� ��¥��ά>\w��2�i�B���t�[�$��ɐ��ӌ��N�^���ùp8,H>µ�9�%ek}A.g�a���H>��5VLZn��];�:w�Z�;-��0^%Bx�J����,��G������O��3�u,��AO�g 9o���]�{uZ��5����2�6сߟҮ�>��T��7DbM�{��FO�(�1gXִ���}5��j춹��ο�(�ߒ�4�)~ҽH<�G`FN~��V���۪:��s���!�<²Z�7E��Bx%���d�s���k��WE�B��������c�UO1B��|���ɷe�Gy�Z�H��M�#��O*F�eu ����� ��'�k���/�\>��ڸ�r뉚N쑣�8�&nլQ��G�Z�GEĞ2إ�Y���<�+�~S����se�j?ttCko�k�z���氋Ko�R/!�U�+� ?���d�T�mH'A֚<��ۧ������E�g~\��a��џ)�ޣ&I&\h��:wR[x��B|'�Lm����-ўY��=ZO�N���d���r0Z��#�G�#���ONm�Ћ�+N��Ď�H@|��լz)�2���k��`b�9�~��L6�!�������%��\��<�e䚣����т����^�,m#˝�mX�-��x�ֵ�o�Y����,�A�5R��8R8Ρ�3!Pq��֤���9�B�������VW�l�n�7U~�jZ��@�o$����| CKm�`+m-�u���"��D��t;� f�!�w�V��) �8�Z&K�Q���[��ֲn0ǐQ�xr��g��R����ʾ,�(�(�Y$*�9���&D��9k�- �R+���;� �4�����O�Yndti�?���dP���O���浊L'h�t9�c�x�����0�n?oJ��൏�gc�12Z�sz�bm�L�A�Q����&�)Ƌ�Y|.�!{T��Ԑ�[<>p�m��55oEt�s�ӵ��c�+�H��䍇�M�n��hɶ١��H������Q�~��2�+�s�C��hO��~-���t��Ǧ��D�gu�+oO d�*�l�|ýU+F�h~�鎓�ᎅ�G<�+#�C�$��c;�w(>H�B�v�^*�*(I���tMI5Hl�KV�2�|�,���Z?B8${b���j�=��-6h���-t�CV�njJ��'s�l��Ú�#I=|m��A���Kr����P����z� ���_�>�K�K��H�X�*@ ��09������I��VK]^�i/�V�ؔ0�`ٷʘw���Լo��M�F�B��pt��ڍ�iF���� T9�bX���h�h��Gr\�y4���$��}I�E8K�*pqEs�$�\�K�*�����l֍��l�1_�i��*Gy� #��.�S���5s�NGTcQ:M#Qcnb� +��Y�ܰ%y8�����"��ZA�3]B�m���������"re���i�$�6ہ�5��w�78�Iq��<R�2�<:r�h�&ș᷆��<;��{W4��ܢ�#D���ẙŭQ�w��0�T���UU�.�=.��Α˝ʒm{��hL�r t]>�? m���ř�ܒsZ�bم�G��$�{O#����6j�U�zGA�� nxnn �o)��9����� קEp[E��h�X�;b�>gv\�F�i��q�+c�s��� ����B��j���\�^����p�N%G�W#h"�*"Rm�gM���Ê�F�Fl(����hc��h�xʻ��VU|�x�1��ȴμ5g����cOqkp�[��<c%������ Xz�.4)m�:�̰F^�jxQB[q$bR� �a�9�5�E�OB�%MR�'�ͥ�^j3��m��{e.�6ܱ>����S����������.���(��1���q��Is����5ʜ�ܺL��(� -�T�9�`EKl������ֹ�Db��ÖOr)�wo1�[�VX���)R�nH5Ap.,�d�{c��1�V�,�s��C�1k�64Μ�k�Y�X�\�����;l���R=GI������{�ia\�����69����e+KC���\�o|�8�֮��f�9U���kYaT*�=�������ѻ5��� �����>���p-H�P�[�&>$Ppc�Z�K�4i��is�Op��s�ѣT�CD@�R�������H���YɆ:R/�1R5&�H����*+�%N����(�,/K�����.LWZ.�c��h��'IHPO�4 6�}'L��_S�U]>4��m� ����o�z�t�n�՜0�s}I9E�]ٓ�ʃ�=��M�t�[襩u/���o4�:͛�(�G���j�<�Rt�&������r���*� +�"K��8�����J���6�l�^����M�>u��w�L�vG�c`����677�s<�o�:�t��*鹢��lf�q!Ds��B�o �l���w�������G�[Y��n۶�;f�]r{9[�k���^H'@wA>�m��X{�z��)u-��\�=�������T�|@�9!����!W�#�2�H�i���kCo&���@�M��t�Hϛ2���)�A=�0��r~Ԗ8���I>ٝ5�ψw�{�bO�"m� ̑09��#�{�64}B��m#�r꠱e��VY"��✕ѵ��)�kH���'��o�A���c�u���� ��6��&�up��;.�*��~��9�E�~N�����R4��-������7�W�o��J�q�9[Q�&y�P�ם3xt�N��͂�1;�rG�7#�U�Q�B���a�$;���������֔@1��g?*���@1�Wnݏڐ���r��=G�[F"8哘���{�3��PѢg������n�����=&_��+��l�ej�kl�.ZG���G�:�s��Ӯn�3$���UL��S�ZR���/d�t~�>��{@�&����Λ�^M_���i�+.'�o3 ����8$�9�D��7���{f-����qE������q�>��ʜ$��ޚ;.�f�);N#oL����93�f���躄04ٞXw�����~��|�/4�9�_��SL���r�M���;g���ҷ��FS��|��W��]_s�/�sgm��VF_��Q~M��d�:ƚ�>$ +�����Sq���������k�M/m�d���Be�Oz��ij�1�ҳ�]cL�䛧 ���vU`��m�̅�J�Mf�F�%�tߎ�Q�؟;B�[�{��M!Jl�n��KV�Kq����d�#W����=��M�ե����TJVE�x7�7"���j����d�ԏk�cI��]�_BI��ő����̍[�SZ�%����>�4hO��k�93��Q�kԚ|̫��[K��+��v9,1�I����V��GIwGy (e�q�s\�吹�9�ۋ`�$J\�x<����b�ۨ�5��7V��@ ��3�j�{�%�5٣)<QβĻc��-��Jۀ���7��.A�Z���,v�(f ��7�����Y��v��V3,qms#Ī��H/c�wܟʋ�7�-�O��[��-�rnY�!� N<��g�h�=��-���@\Ko0�9;��el�py.Vh�_DzV��.�it�VT��1@�w!)�Ha� L��[�5�4��5Kk;Dm*)O�����,�'�]��8'�v�4o��m�GL�N�k����2Ȁ�a&8�b��ē���5N���-O��8}v��N�t��=�x�wcd�>��}hZ F��mh:O��x��x�co��t�q�����N�/"H�/'�\�ۦ�us!Y!T2'����� 09ہ���=-�z}�榺�厗��^��Wvә�ż �H��B�YO|�ҽhc���rV��j�Q~����ʈ�X�G�?����ι%-�7�6����Uu�Ѽ����TC�����鶑��+ѱai:�ۇ�@s��~rx���L��FЎ��Z��[m�C)U�8�I�T1J��Q��z�Y�ȑ�1�1s7����_Q���sI�-��qx�RB�f�w��<ޠ�B�у�lֻ-��x㉅�q�r0"|�K^¶ˋ�W��`ʔ���6moa��n"k��i�� ���nW��j���g�A�t��N��w#�4�2\����X�J ���+�����sH���3|ߙ�4�R*O��22<@���x�Ư�sZ��$d���!���Iĥ:襡��Op���d��WE˶s�z����k�r�/�<�������݊�}������9ڣŘ�$�,�V>����i��O��S,7��Q��L��A�U�rsS6��e�+Viut:w�i�'[4{����0�jqJ��r�r��?�I�[��9@���#��&�f����.�����E3<�v�����<��Q��d��_�3��?�x� ;��!1,��J�mĒ�`�K&D���/�f��/m�t����ui�+��IJ���i�l��;�pY�9����1Y9�NW��Ea�)c��Y���Z��� +�𱅕��̧�B�O5�ƿ�'�J�����R��%�s���2����9%��'D��,�� ʩ'�5/^н�#��~�s|V�"y�� �N��}����:��c*�D�V��Dq6O�R�0�s���e�?�,3FHe�Zj�-Q�un�{Թ�����Lzh���N�3�����fG_����b���#<�Z�5�nσ3�2)g�I�>��碦�Z�t�:�H�ef^pH&�K�(&�k���H=�����k�}����E�eeP�(��X�q{P�Ojb9������U�[squr�P���a�;�6|�-F?�/�7�����>z���Y��]fw�H�0�9�r<�pB���˓���(�}�]������0����Î8� +�@;@팊r�oaq]#Q�QDs[�:�&� ��3|���J_ �ͽ���hYc�XДw;����pO|V�Z�̚���Ў{� ZO�����Q��a�$ ���h���B�4Ȗ6�n�,�J�|�``wg�VU��R���@�a���U�A����˜W<�r��i�4O�w�����t�~�c��=�y5� 6�9e���W�#�V|�K�яc�����m���u��Gs�z���a,V���,��bGۅ�`+�I?� �j��/�M��ſ�x2: �U��@,���t�ڳ9*d�>�V��8`T�G�z�m��K�w �]�n�='����i�_������f��{��V>X�_�w��Ո�^��]�h��D�w;L�/�v��k��ܴ��1���@��#,�*�28>���=,�c� +�؉mh��8�s���jM#(������F������"��Ə2m��~$~h�]aJ+�m�1��\{�Y��i�'�=Y�M�j���<+ ���Y���eH''k}* �٢�������;�f�1�Zǰ<Ks.Ƙ2��c����/uY2~�R��-�Գ�ț�;#��>��>�sH����Z���Zi�KE%� >����,���P�b�����·�����z�Bc3�Ʒǀ�O��ywe@��Y�'h��:�������d�W �7�<��r���q܋�����'eqof��P �ß�t�#�-���v�.r6�}MAf}�V�2;��T�?Z�t�C�����m�C��b\�1��k�"�G|]�h���4R$�,�U<H���IrF�Z~�\�[��?R�6tV��Ѫ��"��`8#�����Q��[������Z���Z=�6��&���w\of�B{BF>�*�4ljKl�k�z��K�:pYC˩^�x�;��� ��9�j�EJq����e��IEau�%����o�8`&�<���8QM���9�����������7ֶ���IL0A��#�BVn�/��3�O�M� #I��Kl`������1����Fj���2�^�t�W���J�c8��j�^<�����pة��ŞQ�h�����έ�ֶJJx���cn b�J>�s��9�'d3rVz������ Xk�2��A,��0�oo\f��������t+�Heo�#�D�P{<��e� �i�r;���L�TtB+��5}�eq�F+x��H�gu{��bs]�h�o`H-K�\>��t!��K��=��2l͙���1�ީ"1�_Զ�2K2�� �q?�X�B���I!2����En͂�j����H�Ac�<1��H:(�9��p�<z��В[A�{��#=�T�����4d�U���\��i�ٟy{t��y1�Wc��{�V�D9��K�֬f3[ݺ�A�� +˃�)��5�Kɥ^��%���=&$��y����_Aڳ�$�!ꤍX�=f���/nM�������W�\���w�L�k�۶3�]������;ۍȗ%F��`�X�箊��o�ɓXԵ�z�8�g���z��#*�����ֺT�v��i/�7��5�kr�E1�DU�n�c����Um'M�a:l�6Ѵ�$�]̥�˝��\TrocJ+M�2�i��Eu��<-�q���ac��皴�s�t�9����HH�A�%ڣx��q�\�x���h�{};G���c����ҝ��+����T��>������/�[ܼq��Y"[��/�{��U͑?N�F��w��Z�M ����O.��=���Ğ*呿�Pģ��V���mj��:���$��n*#�P��Dh���ƅ�T�ݤ;.��<k�7�<���kH����(�1\�ڃ|:[(��tfT�Rs�hɛ����E-s���Sqof���������Q���,��"Xd�I.��B���Tlu������}��u�\U�mkn��3L�<59�s���Jh�,��,&�����M� y���ӯg�z�O��8>��7n�i��K��h��┯��١l�<E���*|8�X�<;�s4�,ܳ��u�}Dg�G�~R��@#<���^=X�٭����hזm�"������2�)opނ�m����+��=M�Z?K�Z����뗳I�HS�Q �H����So����*\�v��|n/m�+�~T��y�D����������\���kq���l�Ɇ���q���m�Oum֗�X���$.�^Շ�%�p�(��\��������p����/&�~-tt�+�L0A*@�(ySUD� m3��/Tӂ��f�����Mk�j�g�i�7]G��+h6�p�8>�� >/���\�o/�i�@��8�ǽL��N��ٛ8��>��� K��k:DB�P������,�VS���4�X%i�gm�٘���F����P���ʹ�*(�Ec�vD��+eR'ڔJ�o�E��6������pC�f����<^NkQꉧ��xc{(X�$�}��ݭRT�sz����sk)}��9�j�4Z2�l��!�H����g����5�����Bc昏���BM�:�v��1E#?Ϙ�?��W��?�������W���SĬ�K�xc�w�2JP�G�?7�+��r~;5���I���\���E!�����;\y���7m� +�l�i��^e �<<~�G"m%�)J�8��3���]\,��e�ePYYr�Ǜy�ի�ug�-�\���;�B��kI��4c~ḏ7jsM� J�HқA�:v�㴻ydߘ���'UbH�0��dc\��4�z4��g�u�p���p��\9�g��7l��[�I3i�h�:k��w�I�R�g��x ] 1�+�n�4�n73�*��gS��j��jQ�g��.Ҡ`����Wު�3A-��Դ�{�C����m>тj�x?�7@�q��]�(3ĸ�@2����ǭk�t����<��.�%];�6�]�gyT]�0}Fl�b�荥f��on"���Gf`����ԉ�} �F�>��zc���>����v��`v�?ʸ��fJ|c߃OO��r�S��^V����41qW#yeOP1��{}65�y��E=��+>uѧ2�m�`�ۥe<�R@��+��t�g�h�I�I�)�*nb9� +��f��x��~_�rת�]_N[�)�U*�A��]$�c���Q'G7R�'/U�_4p�˱4�0�q�$�'$c���fْ��zlH�?�Ol�ɜ��&�mw��b�Lo@{�K�M쟳��~�{i��C�C�?�x�V6l��kK���u���e1&#��['��VJ +w}�}�����o�%�[���b|���Ԛ�R�'&ݲ;��Ӣd�����@�5r���m������N$���c�g�٤����|�2U|�;0xf�1��)I�Z+�ֳ�s�~���i���nvXcy$E�&�'���Y��FQ/�G��K�}/���co%�����&�u��D�ܾw"�G�n��0`X��f�����N��I���ovFn%�;Pd"%f'�BNXd�����e��,:GBҽ�9.�#]�!����'��4�l��T��q-�����KPt�ab�� �(nT* �A�+�e��æ���Ξ��������!�n�tҵ��E���,XD��oz�3�]=�om��(]dm�����|��R]�����{f�I�xW*�o2� (q�uc����zu����)`&A�|��-���&�ie����̈́��wM,�mh�A�H�� +�7��L�I�ŞM������Q|^�m �.ZY�ӋG �HB��]��9a�YݷGT�U�WB��pY�?R^ݬs)B��$ ��J�3{*c��ɑ�{х�߇�cM�е(��V&m"�2CM���B� ve��I��\3���^��9�/���=l]�ׂ5[��N�<�y��z��ryPyq�W�f��}]~tf������Ij�� �G��E�M�y#�d�0H#ڮX��V<����]G���`�{1U�����)�oBG�gTj�*�Yʳ4r����H���A��EK��z�@=�d�Hiyo6v*H�� �,1����uY}LXC���23��ۃ#8A�x +3��"d�V�ɚ%���d�`|�Sr�ך�K�u�Q4Wz픻p�dg�Z��L��2�>�^�-�"X�i��F���9!��pYW����4�9��M�pU��H�p{V�$ə�w ǹ<�V�c*� ($�&��>.4��#���Δ�{:�f��#�k�H��#r��N+�����u�Z��P�^Ox����RK���O>��p�r2;�!7yb�'i'����#ҧ�3.}^�U�a��T0��֊,�F%ˉ�-�/���ִH�Es����Mowum*���²����S*2i�5S�ov��i]{H���=�e ��c�n�\��fo!p� ;ö�˜p3���/[/�o�����4�[��|_3)��`�}�{/�z��T��"��Ƹ�c����i f���^�]2W���W^�Ӗ-�(�2J8(�f�=�{R��1�&�����70\R��W�p|��'�_#^��k�-2��ҥ��l��oV#�<�Y��F��P}��ӵ������� ���J�;AF�;�� J�e������.���H!��"�D��V��{X���)�ș8�AjZ~�w$��/0)��f#�y�ϭZ��K~�J�Ӭa���c�tR�W�c��z��YK%��R�YO-�0���шTBHyiA��Ry5��CFޑ�.�����D�����x�o75��f�Tt]h��v�F�M@3���+Kx#F@�}yW�8�eG �ﺿ���:2�D����l�[ޒ6�[��o��,�j�����2[��}M�A�����纴)���%��wNU� w)S��iU������K�jZ�����O~HY��bPm +����_�^K�|4�A6#c����A�e���O�d��eی�b3�AJqV\f��Nx�Jٹ�I �~� WE�=�P��<o�C�c�y��#��2�[����'���<}>�r��IQ��R�i�4@x���J-��rI���9�u$�럽UQ6A��B�F����s�Ii�JV���O{�i%A��y�O�qF�Q��17��=��+&J�]V���y��]� ���"�tK��Z1-�y�aG���i�aF���\B�D=�RD�Jڝ�_��_PY�w7V���b7�?6<� +�ς��%�W����������HY������� J4�Y_k:4���[Ұ�����v�(_��3i�V��#H��;D�J��E_+(^�9�O�ԓ���Uѫouo�Hf]�����`ȑ7���2����)$�k�嵔J�Ö4wR/fM�&�(c�O>�J�_Ъ7�KW[ �ym� � ;�\p{zV��Vse�3G������-m���`@"00B�[<b�ڽx+���]-Bxkkq+�WV�9��G���Qٻ������0>!"aj����v��� T]4�՟Ci�mscm<L%�b4R������cZIl���9�lmd"�h�r|F +����[&i�<;�&m=�Cu�j���%�,q ����(ּb�ڦrFH��'��K�� ����,av��zͧ�QJ+�,�I��ħ;��1� �W��J����%�d��[ b�m|"�џ���r@�R '�)'�!����w�m��d��6/iFG�e*������yOH���A[<x�M֝G�گbv��>��B/l��U��Οв筝�IEs�t��jΫv�.�0n˰��kQ4Prv���5Y,�l�_Bw\;N}��o,�ꨨ�V�+(؍OJ+=�̑�?�T�jNV��m>�e:��d���,XΫ�����&v���H7tu�7�� +�4�<}�f���&����-Kh����������:�I�ԙ|'~�'wc��<|ދ$|_�U��t[��9�$�������n�W�j��e�4���#K�l�$p3P/8?_�eJ���/�nO�DQ���֭�^�U;�h�o�iV%�����;�'��M��e���)��p�g�!���ޥ@�R��ז��0�����l�sR8����Y���U��7�Ol��2�PF��Ҽ����<���/n.�\�OzY�fÆa�����z�)(ꎎ�H��E�����O�_�$�>����7���D�qM5��N��a�jV��}�迌ᇦߵj�џ�$�H�-���wP[�݃X�Heʔa���Vq��F���j����4�(d��.UJ����;zɽW��sBڿ�&ҕ3��:Z�F�M>��.�fy��P���N8���8���wN�ˡ����jw�_BWX)�S�����]8�'�9=F4� ���OR뺾�uzv�ooi�H˅m��4o��fPw2�~��Q�b� +MvUԬu; F�P����x-d��HZH��r#�v�-� �* �i�4���s���m�+�xbA8f�I)�|�'8��+�a�J�G'��k�/P�L���G1jJOo}���ʎv�R�i&ӳ�������%��e�S�u+{��I������ݒX�߿-�Tv�i��S\6��$�������\����1����AoJ\MT�h�O����d���(o����7���c�ɏ��mU��Mhm[ٝբ��F-2�z�!kIo�b��w �� e2r)�w��@{��,�eh��i8c�D����7�IPa���q��\Mm%��'7V�A ���\ cf; �2?�zR�Ep��A�2���P�`�A-Ķ�%YW�!$�轊�s�{���������At��k�u(]'K5��Br�y�pB��� iə���z�/�i��t�M,d������9��ٔ���8N��1m_P�����n&�e.ln!��;z`բ��7��9ޣ���`ښE���N�Cgf�Y�1��/`c��ӗќa�yv���/����w)�m8>7|qS���e3�ʹ.�v���'>�ӱpe���&�<��) A����}�P�h�]7�C���V�=X��ۙ3�LG�l���V�CF3��-u�Ii�v����mqi�������|�g�<�Q�xd�g�Z�W�G��Qoi ;w�F�c=�*�Uj��s�^Y�Օ�7*�λ Χ ��f�㹫I�9/&6������E�ش�܄��kؖ#�qI�"�["�z~�M��[�H��$ʝ��� ��1IJ��a\iM ��,r�̪aL��܍��}�&�����?J�P�|`���ҲӚ�Z �~7!ܧ�CY�t�\a}Q˰ +ۙ�X�<�铊�"T�$ki'|D��Ƥ��HP9<R䮊X�Y=���Y���Q��������I䦑Q�i�8�{�`~�7�<�D��v�aA��?��9��RE��u�ʯ�ʪ�I�+��9�K�K�伇s���JLŜ�l�f� �+�m��9D�2�GG��$�T��K~���T�����$���^Y�$��ך�����s� m���J?4�N�.f��tWz���: #Ip��2}rkICP��tw�s�~�2�h�Ѽ�p��1�[��{G�ߊ2=R��q�[�;.��T�����x�X�q2�(��xe9�a�����\d��h��h��^��B��WHh=}��O���ue�I���"����s�oJQ����K_b���"�����Y-nchnbs�8�+)��ř�,ل`x��5�'Kӊ$_����㌚ +G�C��ͧƳG$SI�203����$�(Cл��$)�kH��mB)%�T'l��ES�>�-����^�<韥&�`��1�ڵ�Ȍ?y�*�Q-��M*�\��8)��+9+..� ����¶;�I��4NGg9�v��G%U�=�Sh��a����ұ���� +��N�~=����`d�HôEԨ�>eϨ���CN����� #�m��Yd��l �|2U�`d�lr@�:J�I���K�ʱ�<�9a <8��X*��܌�쪷c�kt�<�C!�n�!���.-�+�4�g v<���Ӿi�%اo��y�n��ai�Bc0�(V>O��x��E&�M=��5��fk�kx|?,Rn*����\P�9�*��?$N���Q���I.����VFڡ?�,������]J��m�no���;�U�6��>"�9編����A�6^����N��dFs�A���b(�~ۍL��H�K[7m/o4�6K]N���dFH!;Q�_�*r7�в�� +XԻE�����Ow+Le}ɱC�{c�J����d������*A���Rb�F��mqy����Y��|+{�y!�i\���qv�frt%���(�q��6�\{T�K�"���Vzm���D���*6�+���V��d�kD�i���ZAeu%�6Ѿ���!e��@0����h�9y9-'�5�䳻�67�6mð*�Frrl�,�:-���=Fg֧I.�#�|ѩ�88�L�z;1%l ;�m�> ��)q�j[&��%���D��F�S��U��T�쫡�ٝj++�|2!bG�F8�/�<څŞ��toO\Y�E�Z�PO���VE�ҋ��K0�>���B�E?]6qڇ��e�V����i��䒹G�]����3��= +�8`�C5�G bEo��8[m�������2��F��|� ϥR�2�Q[D��t��0%Ƿ֜���N����y����Y �0O�����a��Tx���7���rpK~�@OO��.I��קġG�tԇ��n��J�͕/uq�[O`�]�,��Jq~X���t�Au]@|:�`�3w��Z�'��:>eb�O�����[���"ԩ�3���S����f'Q�QY��t�����(,��֯����~�����T�� �F[���`��HZ'�|��^b�z]f��ᧂGf�|F�D +D��>@2{w�*�\.���f��E�B�/�Hs�,;����?�$�O�k�z�@| �'�Ƭ���nպVpd��䙟�=Kӟ����Z��l+,H@�Y��N*&�E�lR��>����cKu�lq$�5�Pw�����?�>^3S,t՝��w^J�]�]�#��c�<H�x�쌾q������,Ꚕ�VS�D�6ѯ�n#ƹ.I��G��;r +��)բS����K�g����L1�������a +����SˤT�&�:��oo��o +x��|4��p;��<�rٍف9i$<���>�H�OǴ1�k�]���}1�46��#������s��ƨ�7A%�\:��H��m�x*�{�>�,�h����A} ��Q�6��&D+� ���@�泣g�t6iy�[Gk����:�P���(��2�e��L{�G�gG=��f�4����3�A(f�F8\�'�\V���5l�3m��DZ=���k?Nj��w,�5톢�5�D�*G�:���W�Fy �hYԴ�NKi�1?� +,2̣p��n���Z��FJ +5k�ϵ���[� õ���dY�3��J�"@U��u���ЃS�H.�==�EknC��]�y;���g�8�3P��Lα�[�E��H��� $�Fy +��Y�r>�������n�B&�F-�I,�B�I�tcnWr��n�П!�ڶ`[i�Mo�Ĩ���Oy]��o� �r��91,Ijb�Mf��{Hբ�q���>W)�J.��/�<t���q,m,Q*��2dDWvc�'���S�¾ .;�̶r�\��Ԁ�Ż9��r;�v�T�$>�Z���w�U��!�2#El�*i����i������t_�Ճ�:���E�E0�6O�P����v�C��Yb��E|��2 #����ыęS�E���C%�f�r�`�~�rb���{�6;+��B�<�&�r�|�,X��{ +�� Ë�M.y#P��N|Ǎ�O�4��H�+8��33 ��͎�8�Զ�#�M���������ٮ!.�x�cvs�8� �GU�[����7�e8�p�İʜ�͞95?ͤ]p��J��.�q!fl�'�|5~�2������а�5y�EQ�F-u&�-��QG�l�6���Q}�A�麍��.��8�>3�����o�a�mZi/�6��ѹ7|i&����� ��2�^���9���ފ�Z�ekIm&W���� �[Zň�� �>`W���U�Bc=}�/N�z��7̗02�T�\3�cv�F��f�O٥ũkZ����u���Ѯ_O��[H��[�]�2�� �x�_oJX�r�"��I��-aj��z�m�.�\�9x�q��<�eqS'�4����a��K��E��E��'�%�s�U��k�`�i#�q����~ sdj*����n���uz�5�}FoHc,cN�B�l�8�zNVy�h�n"�DH����gF����\*g�K[./G���IG"ga�I�ZB=��D:��$a�r�ۼ٥�9� �-��n� +g�֫��rc�i�~����lM�X�EEl�!���N�G�(�g��B�0!�4��R�T�v<T��lѿ����6��Gc�֪�x�� ם������F��ӈψ���:?���$ +��bq��@��_Z���<�m����"nuX��V��+�d�5��+�b������ּ�6�K��Vz1�m4q�B�p�ʪ|xĆ"<O����8'�k�F�e�˯�f9#�bE��yq�bv�b�Ú�����1]-���n�d���[��CI��0���oZ�~4�lͮZk�֙%�������1:�a�#�� +�G4�w�c��m.d�J�����q$A�$�h���L�FJ���h�jw�<�H m�d�����������Fђf��I�Fs��n�02 +?J�)���o��%Nx�X��v�����G�oC]I��h֚��J��&��<��c���7hP��f˩��\@ֱ�B�g�;��U���Z��V�U��� n"���g�45���Ξo���2 #u�����x�l��!��y![���WN~��uE�c(�m��I�M$Iw%�!�5�9V�cں��3�'�q�C��н#�t����f��v2I�ʹ!A<��K,�M�R�2=#D������}���VQƎ畯��Ȭv�#��.BI����eD$�Dz��DЙ/�NK@�I����I(�')�8Kŋ/ړ�qe'��I�q"��Ϛf�ê����Ǎ�������x���;�+H�vrd��Guc�V��d���}Ȭ�d{lՃ�))ư�C��;qZB��X]�0\�2\�� ����9l�- +Mr['��%�g+o����G�\kҴ۳�y���z��R �~2Y�#n=�&� a�A�߈��ºU���G7�k�B@�z�[ވ�g�u��Էz�\��{[� +����������aT=���P�Ok�3.#>�Q�m/Q���+~ ���0)������pd�>�䏭K�%Ѥr���`��MP��������P�;�UX�<�x?cZBw����ێ����C��3��Q�oe�kd�8% /�~0t��ޢ���O�i�{�6�c�7�R5������5;��E��mY�]�f���;��I�� v�s�����_��U�t"0Q��X���6t��/�l�rl�����v�Da��;C�O }*��5�o���Dcv��Q�f�1��qG����2�.'{U� ��q�S�<�B�(��g%�ý4�S{!�ymf�r3+�Km�c;6r8��J���u6�%�McQ̪�Y�f�.O�͂<��(�mvg�&�.��i�M5����ѲB�WA��`��ƛIɶk�� `x��h��Ap֒�4~c��T5�W"9��q��4���Lgk��⺣9e&ݙK+�}97O�1G4M��ȸ�E;N\�����y�D�\՞@�.���gD��6�{�K,��tBP��NF��"��iX��*a�n�L�>��>��^kB�3��!�-� ���fl�4 ��[u���E����+��`��p�Vm�:#ut[ӧ�3$��<Mk#/�.�]��l�52E�Go_i��֞�D���b�۰�V���L�wv����gq�n:0:�^�I�"����J��F��2c�u� +T�( +y)Qю�{��x�TM���^���].$F݆M���;z�G+�.XU�)i�]�U�����&�|�I��yTg{�o�T�c^(�]ԧ����BDW�,I2��c�������M\c{"rkDW�}������.�6ƹ�9B&��M�',r��Mg���&����:�:|:��n�{g�;<$>+HxS8�;�8�qo�5�R�V��u7���F�+<�1U��Gs�Q�*i)Ku +Z����j��e�C���;mǘw�ޜV��V<װ��ҾՒ9B���!�v���`v����qv�{���JR)��n�gʹ�����Tђ��Y��+�ID1�C)�c\�|{�(Zc��<W���2|kw�%o6� z�>� +/���,��i2��E)�#����y��:�N�V��unm���cf +�>&���SR`�D�Z�~�ւ!#�J����(e?6{3|�ԫ����s`�ܭ��5�մ��#���NW���i��%�!�.���9*v��X��S����i��-.�S4�[��h���:E*�w(���7�=wJr�tD'}�'��x-���K%������0�G�qO)�.NJ�!���%Ә�Ђ���Ia��@I�]ۆܐ��8�9�l�M���յU�-�\3�cK�R�sg��9���EO'��QDt+KUYɞC,��3 2n'��*xx�Vg����� �^�+��I3�ި�T쐨;���0=�Y?)�e��}���8�[ �f�J�Z�H�`���1�'�X�Mm�0�~�MJ�� ��tԤK��A����/m���N-����D�����p:��4���X�-��c�,�@�#���y3���ک�V���L��J��z,nb���<�<o�2c��m��"���ד�]���O� ֗}kַYK�fP�<�T�?C\����o���g���� @�k��[�㹚4F�����#�+՚��"2�N����z͚#���iq����"�C=/N�E�b2�8淉�Þ ������kFi�[�2f% � ���5�Tme�Ŝۆ���)�Md�͓����E�%9y2xϸ��ұ��itm4���'��J��%dU1��n���#ڤ��� +)�W$��ڭ2d�An�����N����� �����S`�}��jvmr��ڗ ���� ��@kZv#�B�\��*�p��LǞkϜ&���g~֔e� ��O%̗a��#[)H@�`6�Z���7��U��?��q�G�H|��� }U�V���� ���ۭ�q/�D��2F�����[�7�����|q���l�W8>P|���4��&�����qe$�(�b��"�d�����ފQ�4V�[�a�݈���������}����c���� +�*��c�@.MCA�ʿ���cCⳜ��P}�S��EIo�%����iNJ���F�1銮>�4R[|"O0�ta�7����Ѭj�}��{=��E�+F�o�>����G?����Khn"[��.&m�F'���֓Z.2:���ۈbC��/�Ս3^G�t_�p�����?v��"�3�r+�j���}?8�=������cs���[H +�і��X�q��N.��ä�Al�M+�$��g�\� ���C���+;�6�\�n$䏽Z�!�vw?B_���4�ƙUR���g>���g$�G :E=K��J�Sqk$�)���O~x���;�KW��,�1[����� +x��L�Z4����ӡ���C<7�GG�\����گz���F>���? ���Y�c�� +n �D�N��YX�%�ɒ� �����Ro�O[�6��ex��lّ�7\T�6�C����R��gp���#�p��'�ҟ +�z*jw�Id��w����*?D�%����F��#�ꉿ����LԵG��b���#����Ωʐ�E��Sլ!��[[���ݪ��r &��K����ӯnKn��l��x8�Tp�w���0��oz$��ZKL�0{�^ݪ���)��ֲ�[Mkh�H�|�����d�6����d���{���jd�w�閷d>�JEŵÂ�s�(�;zQŒ�n�E-7�l�&�2�{�s~���}g*��Tv�?eh��O rX���V�è�@�H��6��ג"q,d�C(%q���s�s�>���W���Kы��=�1؞��i5��/�=ы��6��C�gk����ޣ�\'?69��Ѫ���ˆ{�h�b��B%��bu��u�p;��j��\����<��ee�9V��5ٞB�x� ~U���g;�uU��q�Kqz�a� ���wU��sJ[:�IR����)���&;��ӭ�n��c�de_ 8�>��X%�'!l�|@C��6F>�4��Km5�i*�fB16��<~�!���-���k��Þ�B��������l�=���PZ])Tަhp܈Ռ~p��ϽC4��"D�LҤ�ȉ��`����x c�f�mY��G�� �W�k�ѕh�2Y�fګ��nƤ�=��OJI�$�}��]:X�Ky`ݍ�x����W䔴e�h�2�5ͻۂD����tj3���|WD����ݳ{��.�I ����|S��xf�"yg-��N1Y&�s����Bݍ�[�����#�9�[{h����2~P���9<Ӌ�L�FޢڳMbDw��-6�E+ r���̔�?˾kF�����SR�G� �Emfd,���f��9Vc�F��J���k4�٣��+�c@�é�{�P]|ݤ�Y�,�ʫ�Z�[}�4�T��,�!�pVK��,���?1�g�>��U�dt�U�ͥ�˩�ā��r�� +�����5�_n��C�Geq���O${��G��qe˒>U���=����:��8aSpP$��-۷'�����Ku!i�HF#�y\361��Ҏ"L����pD�[£�r����8�r���ƕ��a¯�K�L���f3��j�����2=�<%�R%�,��ɽ9�a +(�'h� ���J[)�[x�Fe`<��Po��́�aۏ�]�1����\x�l!$���9���ʟ�'�7R-{fZ+�62��c!VM�C�{b�ŗ� "��Oj��5b��`���܀8���X���^[5ք���4�HnS ��v+M�N����QNʚ��]?I�)/,�U�Cip��d����Ǚ��I���$V� =�ʐ�[4�Zݬ�P��[�YG�m�'K��ح�F����>�M���!i,es��ns����T�u*_��J6��u]A�2Kv��F�6\a�*T��"�_$��Y�Eί�n&��#BvB�l��#���f�N�Gӯ�u�(~�N�'�Kf�Æ���`���b��W�6�;-�����y�-��.m��pc��ol���D�u�pZ]^��{{Q9���?##��= )IG_�M���%���n�WI�6�6���H�U�v���ōd��i=�����˗�7/����Y��fy�+�%���ĞI&����Z&ӡ{����}�9�5�ξ.���[�|:w�T�h�tw��@Y.y����sȵ��]]�`ȟ��6�|X�y�}��j�dPKrCq��e�Fر�cT�&�4X�n�5Qv)�,[M��t�� ����~L�����,Η+`�rc�j��w�U4�7���9nL��'�G���Q���}����<v}�z�%Z7{2�[@�w5��ۑ�����Y0!`.�Dd5$��@��TM�Kf�R��x����� ֟�z���;�>��A!�@��bI<�0��h�r7�֎��E��%�Cw �N�H�[�r�9H���ZF:.R�Vr3C��;T+p�F2�l��3�<���^��%��Mgunc���rAV,����쏟����k�i�@G�[ݳ�L��;�'���G?C�\h9&XӼ)�diK��($�Hl��})��P�E��J�*���X�);1����"�z��Bϖ7#ʑ�"��)}���JIf|��6�Jb�~9S�<��j�;2�/ld���B�V921�#��I���H���V��Pm\`��<S��O�[����6�8Sd��T݀4'HN6�qi�8-N�#q�Y�U�g�J!��(��?�=��J;[�X�"�K���?�Wy�"ԯ��m��Jz}*-�D�އ�ds��,c�;թ��7�o�xT���q��]9�t]-��&��xZ��p�� ���{��My=3�� ���/S� �71�8�>�3�zE����ȭ��x�\���8�.Y[-��k�|���Z���1�����Fq�;��^�Dsܥ�^%��c�"L��Q�| ���[�$R1*�{x�ۓ��[�ۥ�b����v�J�N��+J�:uĘ�������96[Im�wz"�� F�+1��9Kz%�y�����YǵKLpO�+)-�٪t�.�����5� ���H�Qޓ��q)_��Cqw-�5�(��2�}A=诂��l�U֯Χ�Ik�mgM�3��E-� +�d��:k����71��,F���>�j\��,��Cgv$Wb��\lcߞդgf2�=������5��#�UUWk��N��H��l�J19��'�>���<�G�'��hO�.��)��j�|��Rt�>�m���3jzqd��92�G!��� dˌ�T�em>���Rk�)n<D���`2c�H��<TK[4mU:���!����[y�Mr<�#@\z�F��_f{����S�{M1��.I�s�c���]�ڝ��6��gf��d۶Q�#�AV���| uU�.��I�[���1$d �oΉ=�-l�+ѬEv��U�x�@B�v�̒1S��w;�� +6ǩY�Y�U�Ѻ�G�跁�|{PmC������ڹ�nGK�G}��w��sj��gڢ8�Q�UU���TR��m�)�K�ܯ#�q��I��1A��#�3?uϰ� +�"����xl����v#�qR�p��9������2<]�.3���K:b[�� =��70K&��$jH|F��|�zTI�!�gUњ��ie�j$1Y]0�h�wx��¤.ӂ;f�wH>��A����Ɓl-��f���ȿ��>g�y�~�<ml�.�v��=p[Z� ��x���U���Ņ��Ŝ���������Q�c�_�~%��6��2�i�;�03���q�݉N�A��[>�a��iQڽ�_ '�����̅�*lN6�کGFi�������G�*�F�Ŵ̻�%*�L�`;�ϥR�!9y(]�[�G$�ى �����q'|��>T����Q�[n�������\�n8Rq�旊{)���R:�=�g��X~�/�3�����\�dZ�����ky����L�O���3��A�Z+�� ^��mB+ w�s�Ɇ;���n}M4�u��q��K�C�X�IU%�v��M�2��2' ��I����ca�$���ڦ���Gm�O~w3�q*����r@�>�Z4�=��)4�̗W�%����;l0YX �v��)���%�MA(o <;� +�����<9�f�F0�Oct�B��6��@D�������=������$e=]^�q���_Þ�x)۶��X�'sr�c$�ڵ�(�~�L��K�.D�7v��o���*I��wIQя'%e}&�;�e�X$��B�eL�u�s��Υ;�Z���eR8�������G1�X#Q-�B��E@�K��-��V������Q���[�ʅ�P���'|c���B������Z���Я�����(m�#�I�F����S'�ɧÂ!���IWO���,#`b��H�X�O�L������%S�_x�ٺ�Q�!� +Ӌ�eL�;�L��PGߌV�v�1T������.nk�v�A�"��/~���~FΎ�]K�����V�0o%߅f�������֟z�JU�CD�c�=�Q1̀�Te���Pw��(��^8��ѭ��]Ua��[�y�Bᣞe1�*�O��9;I8oj�� �GwGO�cs��G��Y�9�,��ˍ��B>l�5����.��q�k,��q���k,���zK�5�7,���z�6th�X��C �3I���G�us�ߓ��ʍm�Y��eq�EÅ� ��rN�Xb��C\�_�+��1���S��ϧjRX|I�O*����/��kMGl��� +C��Bm�RF�u%��vĉK��m毙)Xi�ԗm7����UvƢ��K��3��9����Fh��� ��j ���&���`F۳�!�S@P�4���詅��El��b�$7 +�I�v�A�;���^<�W�'�ֶ���qO�+���(�K1�q��f\��)�5�&�a�O$���<p�ˀ�D�F�+r�;�47aL�I<&d) ���:ǃ��T;���EX=�D�pl����;@��_۟Λv�(��.��*&R +��G�)<ʡ�Hj�����6�K�"�\3�G�{�UǴC�_P +col���NS+�܌ﳾ;�J"9b䉼c(�^m� ��{v�+D]3CD6�߳�V#2r�$�BOҳ��k{Zҭ幒�0���B����2�m��&�ȝ���T���R���Qad�k�����]��}�)"��v�y�b ��ݷj���9��<9Z�ݜq�[ǣ�]��M͵Ų��^1��X�����u-)���x����fk���ǂ�<�y�=��2�e u���S$\� �8�V�N~fv�w+��=�!� �%MBV{e�z��� �)����9=��uI�qi�5���0�I�Ɍ�xܚ��-Ceu�ǀ��S��c�?JI#���K��?9�U��%MGt��N +�١DNTX����H�c�6�6P >$�X�n^id���$�Q�O% �O����@��BF�U(� ���&�nek�=��ՊC�(�YQҥ�nh���Ld��x��P�憴&쵮���?s��j��Tx���}��م-��ս�L-!�G�L��Q�)3V�}7Y�5����IM�v_ 0�s��kD�FN�;ǟ =�]�EZ&rw����q�IF�wN�� KX��n��;>\��-U�s_�9k�S��3�taW�ߚ�4��U%gu�V-�٤�@K+�F1��01�en�}D�������L� ���%�pF��pMhݘ-��Աi�;In���&E�\��s�کN[����4��sw��Z.��vx�m�<D�� �>���r�$̝K���E�&bt����J�T��{��ڭF�_��*�u4����0�sG��i +,r�#;�O,{��6�''�|p^z)I��4�������f�d*�] 9 #w�̤`҄]rIF���1�-�[�Z;9�}�ۣ�ʹ@l +�z��BVS��Zt�llv�A��8/�/���c���T���&H�>�{�9�$�RDV���_���idB�@7�esJ��Gq��k����3np>��ReE2I���Ř̩���� ��sY~�E�ѫ`�=�Ip���s�@�ܬ�I#�{V2�*2}2����}.ŧ�ƥ�F� +6ܪ��fUʶ����9�C�]l�{R�-�ޞ����������\�nF&�#(��0#�Z�95}�..��di����"XE��_�����2��PD���/�n*&�ozF��Q�9������{)��֢�:J��$G��?r����8^�ϟ/�e�m�3��.�x�7�(����n��^B��J�ƥkDZ��m�-��K�7����oV� �?�R���/&��匑�m|�"��)2�ˍ��2a�����&����m����nFa��f\g�ͅ���MP��V����O��~�"h�RIwc��W>b�r���ȫ�%��K0\�A6�`�,ŲdP;�/�NJ��/�h��u��_��w��@��ִH��W����-38v�;��*�����D�[����'eS�����rYH�=(C�c�R���W�5�y?�/��*ZP7Ƅmh�s����G%i�V�� jD����k{<�ᶑ�B28�<�g��ֲ�:Ѭb���ZV�i��՚�(���g,�x���jൽ���j��E�zg����}�f�KeY�d��<C�qۚ.��3�]2�gQq��-��q�*�� ��/���-���/�-��S ��#ld\w��6^�ҿd,���l�*B,e��'pR;��g�\��}��hҼ��6ǏdžlF��&�!�6q�-�#�y��n��6����R��&�Y� $Y�� �d�O�s˶�x:b�&s��PK��B�[ʲH,��vB/<�8���=_G;�u٣yi�K �e�[�D1�� +d\a��.��Q;�nʃM�9�Q�.��J(��,��#a���F�zyR��ƛV΄�5�����A(�!��WP��9�������E��f�{�a��_��WWZN����r��!�ߺ�w��W]��P����S�ziz"��L�+H��/8�Ѱ~��H���i�&�����Ş���=;�wZt��)p.�0�EX�%�6Woj댹%/��q�����. ��.J��R���r�� 킱۲�}�S�N�#��q��I��pO?�O+�|h��jO>��$��\)��T8J�M��t�+�{�#0��9���=����Y�~��5�klxEy�S'=8T6r�h��!pC�ކ�<��t<Q��V�(�F����q���O[�L�c�j7($��(�`����L�>J���Z��X�X��X����sDc�OT�̧>�Z�r�q����3�1�J�2��[��>E�e���&�s�=�ܥ�����0 �}�c�2Ɠ}Z_��77H�.�^��n���m;WjEU!��d��6��a3H��ӵc��%8�JM_���'V���Q�ך啓 ��V � O6>f�O85�;f�4rv:U�ڣ���[�"���q��W\�Q�r(�=�O��7�<`���cز�磪�Vtkk�Ṹcm"���1�������-�����m�Y�h]�)�@�ϸ"�n���R���XՑ#��� +¤F�����U#���,R$�G�[[�i< �M�A�J�;��GL���v��D2*H�d���s�����a�E���,����Dk�C'����z��{��ڏٳw}���ƍ<����H�{�X%F���3ou���VPޤ�zb�������Cki�q�g'���Q��5:~ �#�7��RD�s�匉�K�d�c����[-ر�fW݅������*-kZ��mm�:�Í�#���6�s��Ljq^Y ����=��UqcR䬿q`�^�V�������R�������ig H}G�Q��ǣ�N��2md +�7#?Q[�9�!�u��A.���8�D�ikv�4���C�q��J +��h��N��&�f�uc�5l��3M��s�L�`y���WL�b�[x��Dc��3���UQ���+����]d.�'��cQV������3"���gv��vzs(���m���x#��_J��y2+�%�_ +b"�v4���c�O�Ȇ�5�7��o��asn�b�\3�6�~j�Kf�������Ak{��K�b7ז�;�������zQ��m#�H]��#�2�~v�z�YkE� +��IҺN��<F����t�'w�U��5q�Կvq�n�����?z���,ڙ#8��qH,�u4�����q��v�E�Mv[c�e�7 +��ceF6y�S붗=F�Q���m��rd<��4����O��r������z�r�ߠ�1�E;w��27a��YެַL��ԯ��,�,�9��U`a�W�x<��V�����?�*���OJ�:GN�әY����s�d��V�#�Y\���u֭͜�B�9���O+{�ymҲ����,���d{�QiR�e�c�Рcs���ҲS�����gx��|�⣬�3��c������F=��Ɲ)GPcݻۃ��Vd�E0G(L�p[�m4�i�dW.����;?�ۚ٠�� H�]Q��)��p61�o�/�l�<(��d\�!��͑�H�� d�ig{ҝ4������Hd*�����>�J��=��'�Q6��Zd�4֍a�;�ofPY����W����z�(ݺF����Ћ�i������� +�B�p3��2y�֛t��s:[�ޫa%���G-�mJ5OiBTɕ<��Z8ꙏ%��f=ŕ��������H� ���9��B��d��<QIQ!��*8�����fy�S����� r�o'ך�GvΆ�$�p��qM��@�h������2�!���������h��� N��V4�a�!�"�Y����X���qUVM"��r$�'�3^���8%"p���l��I�qtb]-�����s$��KS,��t�,�w+`�6(�ݗ,$����ņ(�̳�b%�|6���� 8�����$�:]7��F�8��cY��oFnhX�;* �.�//��TRr�vy�S�&��+-@\\f�_!22@ /__�M6�R�ַ��V�Re�|/����</�U�p|��x��#�Ӻ�K��������S���R��ᇳq��X��9ž�����Kyc].��Vm�O���ª����`i_f<����Ã��"���w�|$8� R.�r}>Z�8���jC��x�E1C6��� ���y����4�D���fX�θ%��{Y$i�0���6^Y�zc9�����q�r�����ͨG�n�&Xa�*�6��Y�\�YO{~���54�J\$0x�m[����j��L��R�dz7���i{����C6�Y�xl���w#֦-!�6�6��Im�8��}�Y$�y۴����0��4�z��Z�$v��<(��f�1/�����䷾��mh�{q�G�Gj�����d�y��)����=���t�Li4�W�}B��n1%������C��O�Y��Ύ^kD�U��4���a�b����m��ߵD�M�R�fLZ��M����x�>1� +�A�$�W�c�NWRa�&�zN�зV�\� �n�ɶ(pг�\z���'���M=D�����ɍw�J�R4��I+w�Fgro3x���\ȭ?�����v�d��*�rI&�6����������T`x�p��0�&%4I���pI�B}�7�-�H���������B2C��Zwd�������T�xmlZ"p��j�Yk���X� +���+�/�{S�ve��.�F���=��r��7;�y�����"^�ߣ4H+�-�j��C�'�ԃL��b8�}�Z�D6�Ų��UB����?����;�g����. fH���Wk��w5ܡ���^O�W�M?���ٮHqv�=_O����9,g[�WɎt`��8�~k�陶Y���w��Q��%Q��8bBT���Yf� *宾K��/>6�c�����|�4�"D^l�瓊���<q��ӟe�pjv���M����y�Ps۰�[(4�rRD0M�F�G���Y�:��> +���K�C�]G<�=�L�B�"x���U����/���V%'tKko�kbYe���R�`�F=���.�wfƖ�t"h��Eٙ� ���֢KT4�a_^bxP&R$<��NIn�'9�"�g)lչ��n���Ď�b +W� +��6�|۳�T��R�S��i��9R�C�(��?Z�+F`4���hY{8�S��E�5�����z cl���P����:#�1�xNJm�b��J��Ϯ=���l����^�������9��zUqI�6���4)�G�X�ya�'�A�8�,��[��$�Fwl6�ϥf�eMD� +n8�϶(@ʺ���_i��t�>`;��"�)�b�MQ�e6�jE��n�V��O��T��#kH���ib�r���+�oS�zÕ�u%]���@�����.[���-�c���C6�!HH��o\���9����[JL�n͟qR��g�և��Uܰ��ީą���R�bi��0r{��)ђ�1��D��{�'9�ڴ�̻�&���D�,Dy�S�`�ΨI4\��#H�m�[f�9?�U�E�e��o�Fx�pc<G֮(�n�a�ͥ�7ʤ�Γ��ه�ۤR:+��R0h�Gu�qBz +�\�K]wL}7T�h��R��~ޔ��UŜ��n�a����E����Zac�~�s��\�Q�v�gY��kf��i�}�aU�����J�����@�!� �~���8+��#��N���TsS��i�J�X)��2̥B`��g$��U�|�C���:��4���JH��������Y������Wv��}��.M�^'`m��<}i�Ͱƶ�WQФ�Ǝ ck����Yo�P7��\ey���5rI���[*����.w�m'e�8�T�Z1�9?*;�/nX�>�(2�P��@��*�T�ۻ�O��nXd���?Jh3�n��4�� �B�<,%�=����p��n�4ڳlQ}�e%�վ��=�kX��o�(�ƿ���ݽ��R�3�9[I��c�+"��l˸Q�Ϝ`�Nq�R�>HӸ��>X�f:����N�v�2{��ժ]��M�KG#$dN�8U8'8�QP�۔�Ñ�~H�4�%�U�o��*�l�A�/���s5-t�Hf����'{�ĆH[�r ���H�qY6m�[=�g�l���.ܵ����D`Ѯ�����q��U���4���{ i�����7$��9 +Y�9��y��)�V؟�l�z0.�tӴחL�w�Y��`�?��4�S�oP3]њ�˒�"Y/���{����g�x�DBU�^��jB�ޙ$֖�ъ����L��4���'ɘ����ћ�Bm��Z���W����6� ����Io$�H7��|��`*&��&����;�2��{ؚ�kv2K�D�{�<��9�x�h�v<�m�:u�v���2��K���˒�O is��ވG��r���x�;{��� �D�ˣ*������֕.E[�gM�C +���4�k�N����I����#�IyBO�5���#��g��q|���w�]�M�[�o��}��'�ɀspPF�'f�S(ۻ)iP0�r�I-ԢxI��|LoB�L(�����'F�Ƭ�}��<y7.�F�d�PUy��ɪ�aɻ+��4͋�mX�L(#�l3��趬h�5& ���V;XHA!]�ʪ����ҦM�J:/\�<V��o���rM4Aw�O��x���'�G"�ݧW��2[Ig>�,w��S+���e�!�Fd�o�y +A�y��.{V]���.c���GfXvZ�M�X�C��9P�El��$ً̣*^Kv���2H�����ZN!$c�ڣ���9�QC��5��'� +%#!�g-�~V��ԫ}������д��Xn�'7�N����a��S�Urx�.1���Q-߇������(Ԉ[=���P��%YZ0�ꨩ�]�@�<���ª�so�Lu�y5H��%��y���Xf H�g���r�*ϥ�鮔H���e�v�c�C +�sܖ�}O5�d�N�Ѭm�}��T~t���&�yq��72n&x�#�ο�t/R�h�x<{���^��-�R�i��}����X�#�������\%F�w�:�Lҡ]N��hR���C���G9>��$�;�l�]|�=G�C���Q�����~�IPq��MN-���|z=�ܮ����M��lj����_� +���t��s]����͵@O���ǵt�G� +� *Ѫ���/҉C���z;����CM}��V�DZ��yO���%L�I�h+/��p�� �� +�X�U]��NjN�)in9U��`V�Q���8�!m����(m��@i����Y����~0�x�xP�s���������������m-.fXnmf�#n_rƻ������$d��}��+�_,�ԙ�jq(����5��*ɮD��4��Pei5�{�#ؚ^�K៊�u�k�U��|W$��Œ�.9y�w};W.,��������Q��1̖���h�{���|�G�>���刺�tC-��v�'�&T`J��́�@O�T���MN��뾦�D�.�E�����A ��3�n< +�+F[^�Ԓi�|�n�I�� +91��c˃��/qXA�7�l�⸺��&�H՜�����~2�S���ڜ�����8mY����F��I<��c��A�+x%fn�!��FS��]ݷ����@�j�1,�^_C,��F�C�l6����?�B��-���\��7� ��+�FY�?��9$��"ڳ��総K���w$����y8��y��:b�=n����I%C�,�,G�P��r�2���q(�>yX�]�)�M�4:�w2�5�(�ڳm�}��&�g��ίZ�ֵ!6�ol��� 2�3ްQ�W#��P�d𑙡'$7�֜Q���iV�o��9�rOnj[.+F[��ŵ��8�;ѳ�c�>j�O�+�v��^��[�d�x۞>ؤ��]��v>�mFH���S�dl?�WУ+tz��O$��d��ʌ��J��ř~D�6�L���s��4cʌk{e�Yce�0�Ol�N�>EIɳ �6�`~��r��yl�gi4�=�[�!�˞p*\��Qǫ&7zo�c��#!VW>c�P6�Ft�>�9�X���j�G혀ux]�RU��Ƿ4��e�'�&h[�PY�O�}�ML�T]����x淇7;<���R)�KYY�FPJ>ᷖ%}=�� �#{�Xes0%���]���<T<H�f���Kj։q<�IU�~����ޔ�IZ.k�Emg�y��v@�*�����Q1�sw�����jPI���mʊ|�cC����j��n+����~�cn5�?!�0&�C�"�e���n�)I~%�~E�Ե襄$�\h��{n�<�V0��l=�~�/���;�Mvc�ev�+����SȔ���ǁ�m�e����������m��(�����U�hϦj�VC��j���M��od*����~E[��Q >,Y��s��n�Aq~!�ӮqK'�8K((��B��y��7J�lj���]{I�B84}nIl�^Ks.Ƹ�7/��Pg�zg4��RQ���5��MJ���>�0I�̿�͞]N1�[t�)o7���"��v!�Ͱ|���sN�a$�f�x$i�% �� �����L�+=/��c���p��{o���A\����Bq�b�����%�r\i�'�N��ȃ��������� +�Qd���+��ZP��#���Ԅ�Xm�ޑ��/*�ޫ�3M� +f�������b�|Q�]#Ipw�������XB�ѧ�}m��_!q,acգ�"$��'��=��5L���+���A��������2�B<�r7;6��D"��ғ2��ѭD�h���t�h�>!|"��"�$��ֻ1�N�'���=�3Z��$��5Ę��p�����k����se=������Z\���lq�䧮1��s�y:��$�$�e*^d�#�H�6J��W#b�<�bhv�-1^�im<�DwO"�CR�$C#b���m��U;�NE+帟O��K���}��P����ݠ0���jkcm�RK�x�D�&i +X��s��wn����o�$�G}�!���"W���,�U��Q#� +N9|v��%ٙ5�Zl�z�O<�e!��n%�XsM�օω�6�u-սޡ���2G���������UN�sr[:4�.�����$B��D �ߟ/�6�����$��y5�NY�èn��\bNB�����MX�̨o�I�^,`D���Ͻ�c��<���5��SM8��n.��@YZ) +/�\�^*���:�H7�E&��9�� +w�xnI���o��y[vg��Ƨy2��(�YU0��+������2�/��-�u�����n��|5 ����hʹ�r�s������2=x��+��d�\�]"}D{����0�3��ⅼ�1S.8$d�s�V�ѓ��Z[F�����9Z6(L�� H�?Z�=�r����T/}%�ۣ\G�WsM8��ۈ��$v��$$��q:��Cm|L�R��ud����e���Q�6� �1ʚ�Bڅ�� �2ݗqp12�ݹ�t����5�In���V}W��m����[i8�HԸ@�����\�⼉-���)7�ԖĻ�O4n ���r�Y�ۥŜ��"�FU<U�r�ЧL�o�ހ����}SF�����K+i��DD+)Æc�F{�t���V����Y�zݬ�_K#�þePZ�!�+�?�F,�.>Mr�|�'��w���e��$_����e��VI;��ɶH���=[^�:Z}J�K�Y\��7 4�z�S��yk��g1�(��i�V�Ď�VPU�� ��c�q[1�Zt��w�)�b"�7�#�����)2�& �wo#����T�$�<�*�T����P����S�j���[H�&<34�QT�H�$� +�e���z+C{��W� +;[��F��2p^A,+HMI_�e�ߴN����Vd�Uw� �$�� se�OB�;,��1>P1��^SU��F�^s��5.M��#;P��h��Q����g��iщ�~h���=������pU����2��u�qQ�c)J̽g����˳)l���C�C���_�C��q��=Iҗ+o9ic��{j�$T�^͐U�y��-� �|��E��wMq❲���Dc�����K���];G�����;�[#�����wy���H��/js��25хm�\�&���ca���W����ּ����i������w�wv�<;w��4s<L�t�����16іY8�<��J�wz;!�)l�Cuit�E��o��8B����o�x-[^���4{�G���x�[��9�[��ّ������6��!~�w�'ڮ�LɂůU���<��r�gr.��ҳ��H�<Nv�?*V�h���bMgV�2�Eu$V2̤�1�>�S�'�H)BA +U�Q���@��HXm�9��e&mtc�[�ܛ���?8�T��� ���h��8��X{{И�N�E��'��qZY�G�tGW��i��~�$���k��ɉ�gy��h̶�FO�����?$k�6���� <��O옡ⱸ�Aƿ�G4��d�]���1��Lw�rWO�g�vt{����b�h�Ț�{Uџ/K=�WѬ g`��~�ZBQr)��y����`�Pv�s�R����Z]��$�0Iڎ0N}*���f�� �m�k�7rUOzzD�ލ���;n�]�������I�P,N�s�u;;�K�Fm�V"w&��CҥNˎ6���ČѠ��U�|�l-�@?�����+;�c����@"B1��?*ubRh�і��K�k+��[�]�JyU�?/�f�I�/��;H0��0Mp��&ZH��o��;�I'�w�.���bU���éu��/��S3���v��4��h�h���$�B�fo7�Y�I��Kf�i±��� �$�x_(���Q3���-��n� �N�P�DL�۰y ���ά�tkhҶ�u sq-�7M��(�A\2��R� +��74�{[e�{�Z�h%�5��۸�u���!*�#n�S�ڪ.�g,M��Դ�>�I�h��R��Kf� +�Mѓ兘 0_�知 +u�ǿ���Ҝ��7Uf!9\��0~�.�Ő��� �1���>b���8��#X�Gq�y����Ǝ�ʡ�r +��vݞ��� �ލTzvW�!&@2d +x�{T�"̝s���VR��º`O��S'��k���<�X�Τ���8�b��B�D�wyv��T柸��ҭ�"�k�{��VKwh�t���7���WI��$�ܽk���65�CÕ��V�����ПOJ�����}7��Yj���f�Ә�ܛgHۼA�v���Fx�~[��ԯ�J|�N��\$�W��n9�\#QN�9ܚ�w�B�sGu��k�+��8bl�pJ��x��=҇�Dֲ[>��4-�)��.���f�!��<Vr٬4M�j:�"�H�A� ��EUl�^6�����^F��t�B��j� �� +�<,a�l�R�[�ylsS�A(Q^� ����!�)7�"�-�� 4�X>´�#��`�ycAo;I��R�Y�c��Ե��=g�H���-��>*/��xd�����1����l�6������HL�PȤ��#a���ִRD��2��&�mn�.�e��Ce�g���w�1�`^h�׃7ߒ�KW����̑ɲX���t�'�����b8�:l�KJ��-��it���x���$&H������J�ٓW$�-$��i�|���e�ƫ�dfx����{��I~��&�fN� &h"���eu8h�H�Jq�UZ�ٻb��������Yo���;�nH°������:&�����ynl���Ɏ�d�.ОN���ZG[�3{�-�-�&�m�\~�(/9G)�[l�+$]�;���_�ˌ?�����A#�FYd��L��$p�� ���*����j��E��9xٛ��SdX}����6�l��u���YN���kkۄ� Y�8LK!�QL>l[��/���Sڢr�_EE]"��,#XMպ���[w�#c-�=�6��qK^����Ks7Li�v��8�QZV�v�8�5��w���`�/m��;�cu(�O�;�~��ț���M��W����yW�^�9R<�D��F���R�_j�RF[F-]j6���B�}=��UV�k���>�~k�S�O��u�9i?�:x'�F�m!.���8��G�s�+���ӎE7��ż����]�����H �j��qJ�Im�����e�����v���k�H�V�E�`#��A"@Pq���U#�Rrv��V�X�m0Hm� #RKGkn�*!<��������m��ų���e6����uuf��rѲ37��69�5������>���oi?�Pj��6�c!��wV��*������i�g���ӳYz�L�e�����j?��!�'�����u5�����=q�>�ه�F9:9�zYC�ir��W����nm��@����@ @��;ٵ��t��1��O݈��+̄��G�(H������ ѳ���g����rqړ��I��N��[M�b�H�ƞTP=0;�蔕1vlo����ⱳj \���O��aDww1�l�(�}���}hM���&=v�O/=ӻ"��\����M��7t������V�.�F8`8ȭ\{9�>���4�I�Y�r"��̧�Mj��2�qz<Ǫ� �Z�Ų��"��}w)�ǖI���PO~Nq�_��n)gh�6�E9�Oї ���Yd���(r��#�W�TU�%�s�@����t������l��^�c����R"g��飝ܟSI�)D�6�7�O#���d^�������:e/4�a�L�g����,�N����w�ݱV- �}���Z��2r?&L� �}Ҭ�;�F��+kވ�mq(��&\��������y}�0h��p�%G�}kXcFY2����^ �S92��ss��k^(��Ʒ�kk��/�U����C�Jm=�!�ghX��L��J���G2-���������P�F�i�6}{t�\�\��r#v<��48�*E-9������:+!���[���)��c�ZD���t�[ۼ��[eP�T�X~�Նmh��SV�;�s<��+��[��ƈVe��M�X�s��j��M�/���B$DC,G�>����q����������Q������A�R2&�գ�k�g6���}*k�ەth�_i�Vrx�Kᕏ��n�W�h�we�\G,���S���$S!J� �*E��z��lʀv�ϥ���Z��@dY��y�*��'�o�'rl��tcy�&�+�H�4!|Bvs��QFђA���%Ι�Qw"5��L0^|�e$��(�&<���F-��mԉ +�-��㍁�ǐɎ��Z��:�[�:t��Gu�,C{r�7��eUS�p;Զ_(�Էp_M>�1���6�����%���P��F^�y�V����5#w}���O�4�y�Ek!S�3ޡ�C߂��jb���u�����"2?�PrHT����K�pN���S&�r��ܶ��+@������d����{R��$ +�6�ikq-�v�6��`ģ0����H�T������O�8��7o�%�l��l�76�9�ʩ�6hJ��4w?����4{��Um,x���7�&j��PCsl<[[D m$C���p�6�v��e�T\#o}�Kk���j���Z^bw�ɑ'S�:�9���<�RΒإ�e���J� p����(�#p�8棔j٬�z�H�K�4����5��b������Bx��!I�5^��:���trb�����xd�u�c�J�:����v5�z��U�4�m�R$h|8U<9vd��}�ȧ�=�4mH�i�{g�B�OPEnTv�\�т>Vݷ>���)EQ�Z�YHf��s��yl���dC�U�;��A���^Ng�в�V�"i{d��#e�*@\rO��t(��=��-����`Ҙ���Y����!��g����n�峆-a��P;x�,eJE)�:� F�I8�5)���ZatZ�W^���b��0lǹ��Yr�ϭe4�Q�nK��\��hn��I�0ed� +��>S�{�V�����sϤ����4ۋ�5��W�$����<�IT��V���=���ѮfKieo4��@Ǒ�y�{ +m�� �Ym�i�QO���s4:���J�+�9��Y9�&���� �B��O�h��6WB(N��Y�q�`yJq�Љ&��_�:l����%�FbCä�����2���8���i�f�C[�Wi���e�Jf���p�;���~�'`=�s�h��N�:#�}�W�n�M��6��� �<�U-�`a�oέ�M:L��{e�O�mXZ�Oif��n��`� �R@R1߽c�^ +���_���?�1���*����z�i�<��&-/������<c�.m����2��j8����T)K�EsoUf����<�<�K�7��@� ���'��ގR�!�otOe��Ы��\� .L�3�;�y-�<T~M�C��i��}i,�� �k� �M#+��p?oJӃ~Y���8? :69O�0�����ř�nI=��?f��=���.�U"=&�<�Xc�Ϩ�4����{��4-zgH��;8?v�1Ǹ�Ԑ�����.�,�n�ЇN�UUs�?!V�%�M�p.m����AFY�~���y��9G͞���m闐��FG'���h�,_f��}�J��)�Ibh������^F�3m���`2 �ol�V�ef�h�םmyӋ��� ��-� +Q��*O9�<�0M+��/��G%'_V���њ���֡`����7;9ۀ��LrFWi�YS�RM(��u�}=�:��w0�İȹ����������8�5k��npt۰��48�,���dck�{���X�Z�']���?�Kf9=�o�YO�>�>�h���� ��G��P��!���t�~צ��i���C���J��]��g�e%L��2O��a��`z�Tē$a�@�Q��j��I?AI� /�@��}��1 +�������oe^��^5� �����~����\�ld=����.@:R{�bMO�$]=�������9m1R���x#څ�6qw��3#"��Hs� �S�o.���v�)t�m�¤J�p��})+����ٺ�����%G���ny�� ��<jQ�ny,�9� *�;����q[�8���h��ǮϠȥl�4�s���F�8'��,.<��H��G鮗����l�꒾a�&+��Yc�N�F�f�����:�8���"�;�n�W��Hy�.j�;1��u郎�����r�[<���YMݧ��K!=���"�H��[%��uc�2�7+�G�ֺ;bZE f���Y�b��*�@�������v�x��3�1�� �?J��"_�@��G0�I�ϕ�Ȫr!c!���vI��2��SN�(�+��O!� ��W��㸢�2ܜ�}iQI��.Qɉ��3El���v��A['�[�i�{^%���֊.-��V雍V�H���P��p0��5�c��GH���C�s!�<��U�Q�(Y]��-B8�e��|,��>�2��!�QPj��w�w��(� ��'� Jv�ƞ�맾�hd��{�ϐ�R��j��b��C�I8�H�t��=���x3i�_���0���|6�c�;�d�Ob�X]-��l�{�#B��r�%W>�����vi +�����d��Ki�6�6Rp���K ��� ]�1�.�[9���wF�A��*�L�׃E4��S%����3H?��x�g8��Oɖ�U�]I�H���aͼW��Iʊ�(�.��KqEo,W2��%��I7��;F7/|V����-��-��Qx%���&���vʏ�����l�"�}%�ۈ�{���Iq(Ko\pD��Q��ӏѻ�tV�Щ�Ү��9�+���V�� 0} '�4*���'�/���g��R�u�V)#�0ˁ��R�p�⣗�ɽtS?�z釈�5��A��UzƸ�+>L\�[����bk��ˋ��nbalv����8�֟&�cy7iv���]/�ԩ�{D��O8`Nߦh��A�fͷM�v佾�%�f�@��O�Դ�b�/�2�V�ƾ���6�]�4RȾQ��F�~����G Rٹ�o�(�C�v ]��f�E.� ��$��@1LDsi�"av����?���ԜG�ʏh\}Yr��5 ��J&��z��3�X��樧�ifU��������Lf��&)���{qX�/�ZL洮�ֵa����d��g����]��� `~Q]���䉸�4-�>�H���Q���F,�7QJN@�2�+�S�GzNM���d��גտ༱����y�^B�R�r'��H��HR��c�zI�t58��:_��AӬ�g�+��Ȍ7R"�[vs�9#��+T�v�\�7�"��L�o4�nٷW��C�cp;�{g��)_V\r��������is�+����ٹ��\`p����w�56_��3�+@�-0e�|���j�{�4��,�ߣ�31Ő�$v'qj\P�ȳ��P�i֊��!V�I�#�/�\��X���%�e��\('��0��p��T}ǵf��Sj���M�U�� +u^��VOH�xQ�^y�~������i<W����<�� �@�'oz#�u�f��h^Q� +����HT���r=�\l�*v6�+���=��U�L9��#ֲ��4�.���CMm��Dj����*�� �ș�yV�����$q���R�D��Un[��Ňz��.9#��z�(�~Kt�BH��'�K��3J��;������ܕ�>����f�.Ruƀ�˞��\S��l�}�S�� +�v?�+m�� U����lA�|~t��ַk���j�%�`<m�W���$��ڇeZ��y���k��e +ei���+��8��7�z�rE�H���F�;�==�^�9$��� �o��ya�7KQ��n��$�}I4V���V��H��������FY$S��u��������|X_��0cW�>a�b�&����1�Q�������{�m�Ͷ��`).�}���s�k�j��z觴�`д�ҴȬ�̅yw [�s��z�����G���M���1(�P��eV��?~hQ��� ������2{�x�܁1�8&���0�Oj��j�iA9�re��<is�>�&>( $r�_ғltq�Ke|�m�i�Xđ��$��9��y��趵g�uX�ݡ���. 8> +��^�*K^L&ѣ������i&,���q���k,��h�hf�q\[�����zW;��*PLͿmZ�d���-�!��@��C�ןC�T�E�� +4ȵŋ_]6���>,��������6l����&3H�^��ޜ1�3Ӭ�m���r+�i&��q�ا#���ZQ��h�z}������E` ����t�����ؼ��s%�1*�H`=�t��[�n�+Ŭ��O�"ބdf��Jȇ���{�-]��$#a?�7*[�7��Y���|���203�B����R�aI��'��t'�͈�m��L��v��R�L�����9&��q"1m����Ƙ�%ېȧh�R�,�2e����M���ձ�d��Q`���_P�ٳ$�T����MJ��G��:;xנx;p��������>=G����W��L��J�E�N���k��g,��C�!���SВ}���.����]N�b<�������g34Rٛˋi-����b(����Ck���Ki��Q.�"�Eyn����E�S���Hd`�¡b#>RÜ��NBH���Ŕ��&��� )���Od�kd_���`�{�+�~$!�I���ٟt��4��6w�p6�e�Y������f�#l�jW~ ֬��{Aj�&Gs.}GҢy��G�:�'�zm�R���4�#�����29A��R����M:Z/��!�� ������O�Q�/����j?QJWգLizz�m�+��a\��q��<��=�g������6�aPG��������{]2+kx�OA��/����3��r���n�1�N;Ұ��ׁ�ם�֎C�L ���M:+^i��Fc�$P��i8��=�*:�`�y��� i#�I�������~�+^M}�G@`R��/%�O�T�1�fê<���� +�ke���[���%4�%��vixf@.T�`���3A9�jM���F�K%2�S)eQ�p��k9I�Ї/'���������"ԧ��>�P�kK����4^�:��� 0si���"z����Dx����7:�34��Z�![wAm+*�,�ۘ�ϒkF���l�e���Ը����f�"c�E��#�A�� �Uܭ��S�%���IB�.4S��x����0F#ڷ�b�] �U *��?�$Ta�x���H�?%b�=H��8��R��TVQ�8/'�Q���]En��S�V0���R�����Gdx�>vv�me�$$NMR�������s�W���u\����A ���P��.B���0>2�S�q��K��W�e^Cɛ�B�9������6��;Y�U&8R2K0�{ӿ��۪H�>6�\O�R$�U�9�OqB�~Jɋ��:�PѮ4��o�34l�����8��z|��B.�+<L�����,�1�����x#=�\�=$e��؏��G�t��`$���j��%϶���\���%*�/U��z�z&Y!I#����^�]�<9*e�&I$y"��w��g�뚗�cR]5e;�mj4+jL�<�9#�V�ei�:���ıD���.�C���6��X�S�����U7b�)�b����Χ��,2n��^�+�w�:��Su�^I�;�cU�*m�ᖩI�� gƼZBu.� +[����'���A�|�CE۲g�1�GK�h�'s��{z���4M=/A6M��l�� ��V�9�RUF�oJ��l�|j� �J�*O��4h�)���3`�I!�t���T\[/�*� +,tțQ��湌� +\�qdGZ��c�q�68���@�O�/� ��y#�?j_-���������r#�e�D�o�������{�+ؐ��A����Q�D?������Ag�����l&���T +l, �O�~�#�lr�E:#{8_�K��pO�Jo���Ǻ���j%���q�i��c�7)��/n#���� zBY|Y,��ݔ�I���`���H�B�"g��?�K�~F�D����j����|��a��m�ٲE[��Ѯ�}�Kq��y���H��Rh� _�V�[��DD?鯨�P�퇷��E ��I��H��]Pg<��Y�B}�� �ʢ���pTmIq�$�Z�J�ug��$�]_L-�a�,��,d��Tc����zV���|| +䁸�ɭe$s���?��H� � +��R�~U��-�eG��&RLRBG!���)����r���,����w94��{*K�=�;���8����M%��{F��u�v��xn�nF�����>�E85�0��>��2Kj�zl �>�ժ�P3��P�H����u�Ww��f��./���ZH��e*GީI?"`(���g� tX��~5��ˎ�8�(lj7���0^�eY�g�]3���s�� ���a��?:P�6�.�ז���<r�'��N<�5/$��l]��@��x���n�8���T�q��}�݈b���y����� '��/h�<�<����R���s�\ +�yJX���t���Q�����3�&���Nxlv�f�j�t}%��e��ĪOq���!(Kwc�Z|̧h��^�雫C�Eq��pA��F2��KN�Ѭ�M��>0ܜ~t[�C��ر�*>�b�lF�X�#�q!%Paq���aG��M���rx� 0�H-�$S�X��0y'#?�BB�&��O�3mQ��*.�:��4{�E��]��G5y�Ca�|-��;GS�� Bۣu��k�=s�t=1�ǖD��* �>+ȡ�RM��-F�;kt�� �?j��5إ�Q��N��m���V�q��Qrћ��k�C�^?,w� +�}+\p��D��Ϋ��]2x�`�F�J� �'�S��� �ʽ1�j��D6�p���` �TY�GZ5��͜���fz �D�E��I/�q�N,�:�/Oip���id��.�~���[��ޠ�6����;���xyy7R�ѻ�t�����{^_��n�F4g�3�v�J���wH���uU��YtΠ7��kqh1�5O3~tr�+�6i|�=��!E�e��]��k���*��M9i:4�U �4��-�'dC������vM�!�ڍ���Ka�'�-��h���#f��x&��}� : >Q��@�4��wQ�ښB�J,��aGӊ(VJ�����O�r$X#�`�1�)���-�������Z��!I���S� +FKt�Jwxc��*�Vy�#���K$03��=�L�����mz2��XR�RL�� 8�\i�/Q�J��y��F>.#[�Nj#n��@�����h|�4��X�B�A���a���9�)rC������-���Q�=�&�P>[`~�isc�����ǥ�����G��� Z��H�\\��H۬�S�`�b�r��7Vkq�?E���>1�!~��[���}@7/���+ɯ� �I���Kr�Q� �Uԛ����lRvZ����=�_Y N�GDotI��s���d&X�����i�f2��sN�l`�����k��� +sB��1�����X��O}��� +~Ȗf����[�Q��d�������j��{�������WՠL3��N( ������E����R�� ��8�i��`aݍ*@3�h��g���t4�Zܞvk6�+�e!�pf�H̻��v�=�)E��I�D0梊*���2�ە���T�tGf��p���ŒQ�"X�.����<(���@�]�����G�9t�[��@�Įq[A(�6�[}٣��mǥ)MV�0e���(V�<�8Ͻe�ˣW%��:�o�s���v��a�m��� +K�������b�Kv���.�ϭe��%�^?Sn��m�T�-Ċ�1;W?-98:�l����t��%_;�I�S�8��H�Zv����.H��3�qG�9$U��c$,����[O����sА\F����?ްPi�ˇ��D�o��x|�g��WG)%ظ����O�_ܰ��kU_,�&0~�q�*H(���l� fܤ0|��|��a�o��)��O����.����I�����WL���Xn_'$H'�4)�\���t7NCoKd�"�5`0)�ٟ'v��vs�2[��� +ɪ�����]3���I�h��H���UL�&]Q�&�k��x��������#-G�"�*�`*�2Ȣ�n�i���B�>�J:�rT]q����∳?Y���l��������S��&e��S��6!�h�^�#�����F�p8v��DM�����Stc�-,(0@��H���{��|��$����4�k��7G���q.3h{���ܱ�;�v�������k�^�g9f~�nQ9 �[.���(�����Ȫ\L�"+n��,g���93�x�i&k�MQ5Ţ��,wF7_L�j]ޘ.��ٚ#���XH"�r�A76�#���ő5͗�J?Z��!{�?8�G�SC���G��Oޞ�&T��F�������Ң��f��wIi�mwk��s�(��.�6�����3��=I�m�9�KA���h��������0OT��h��~���#����~��H=��ۃ��A�����O~G�z,8"9z�Sq�r ��ֆƠ�Y�{|G�E�#���ܟ�.ep����1�m�Q�~���j�������<��K�#���m7߹�B�7������Fo|�~轡�g�,Z|��3L}~�����3I�9��S�2��7�9�? ��0��-��<�m4sa�#n��0G�G)�G����Nت#��#r����#v@������G���n������ +6��'�2(�e�=�C��w�N{��4XR����=�դ�~��gkJ���_c��91�#��!q@�m����m '��z�O��N������ ��V���4�D� �a_��*�����7�u��Q�1��T���|��K����4ԟ�8��#�X�� ����TAO� �~�@�����>?#�t{�� ��K���n���?�������m��� ������;�����&�C�k�Π ��&���m}h���ۚ��b~Z��>����ð����4�Bͱ�|�4X&��ZM 2�h�璕>�4YY��xu)f�F���2J��Wf��2;n����?*��e���v\Qd�$]"`~����1h��r�@� V<�,S�d�[A�)E w�V�������KMj�4s�n�3S,�8�S��m6���{����`�����.L̺�\7�& +� -��Ml��h�6�t�$n��=96k����*gӵCL�d7�l��$�`��KL�����X�-�1Hs#���ͲIID7�lH��ϭU3���R�X�05J,�,C�驏0�D�[ޜ�?�Y<Y^�X�� +��A��}k9Yq���\iv3�+6�8�����nѬz�Ml��KF�um�$Fߥ;��n���j|������#"">�l=���Ei?�n>�pl���^��on����mM>�?�U�s�3���dRN��+®~ƝH(z��m�%�>V�V��D8n��5|�>�VE�"n��1��X�@Rl�W�Z��J����╕��) ��1��R+���1jW1D�G���O�S�c�ğ����Ak��٨�:@�����iraH_vG�Oʝ�R�t�?*.A����2d� ���I9���hqz�E0���r��9�<r�.C��E ��af,zgӊ W~���`�ۊT;�{�j8��l��y��9���+�h�н��A��O�B�XB�1��$�aO���s`��8�}�Rض��~�R`�/�z���� ^��b��zi9 DBg� +~�sc���fhS�O&b"g<�?����s�x<��ش �{#~t��X��i�M��7��d}���9ع���/�����������,���4�F��� gE�J<��SHM�[��1�Ѐ���&O�*�W �`���`;����.c��o��SCx���1��N ?u�Ⱦ7vTFI���cE��Kr�X��J����\dF3�8��I������A�'�P�Ƅ�x~T�}����%�7�����18��{������G0����_ڶ\��pS:��Y��)�A�[ɻa�ѓU���E.�l�T�E.,i��ݰ�ڟ�!mz�piq[����RQ�_�̥*ei�����ܚ��E#=B��I����}�;i�������8 N��~�����?ZC� �"?����z�z�����?QE � ���Q��k���HT�ۨf�~#����o��z4X'\�n��R�> ~Ԝ�f�_1�߭+K}/�c��4�@��N<�~f���G�y���~���a�������G���b�1�~t)�8 ���*Ԉh(����S�KD�pGsO���.G�+ �3ڥ���g?-$1r탡�K��ړ���O���I�y������K��sb��2ɟ��������Q͇?�{d�|��[��|��=�Zb�cҥ�����V:B'`9��R�����j���Oʚ�hb�c9��;BL��Г$/ ��N~�}����?/2UW�7� +Ā乤�7�9H� �H-�,c'�+b�����Z +l%�妚��x^*\�J,Be��sB�8�����#�iI��)rc��ˎ��Qɇ#$�`�?:V��f�_�4r"3�1�~��a�7/�)s W�bAMH3Ŝ?�.h��8�������F�CȋX���1�?���m�o1����?l!q&8���Uȗ�8���"?��`�E������:��h��(3��q?ڎ2(�m�3��V1�1���9��������4���M|m�w��肓���}����r����?�����X���ZS�\�/�9��ca��}�Η��H ?S�tp���kkmꍏL���P�d<��?���vr=Ȫ��>�#��F~��5� ͆b��=�j�"y��6���?�S���`4V��>��x��K$�c���T�q�9>O���P�r�������{pS�=g���M��@)��*H��|��8�~�E>+�`����g����O����~4�q\�G�����{Թ����u +yS �9���jDKl���m�MC�f� .f<�����L}h�Êr�!%d+�A�TrIt���c��%�ޓ����z9��ޯJ �z�,�������X�I���S<$w��)���h���ʁ��aC�Qa���F����($�<Q�D��>�r#|�� �P*(����U������ǥ&Ƒ4l� ��*,��*n�}�i9 "��̫�,�Z�,�]���|٤�$�"b{�RR�a�=���HE�zQl)�J����o����L�,��3Њ�E'R�G��%���_9�cP�5\Q<����eF���i���:SbV%e�{�05D��ͳD6�(�oCMY.�,�����-��1�/b�PX����Al`��8&��lL�膛hI1���45�|V�?J�p�x�Ɋ=����7���J|ظ��I��h�pD{� �������4ԙ- ����չ2RC*N�T�!�#�S�ďʫ��B��O�;���7rP(I�r��GpH���Gs������m��_��Aɀ`���z�P�jC�:��j|E�qk��L +v1����W�H����5%���5['B\�a� +j�ؘ͎T��:b�����\}���*|d��%�Rf9���P��9����Ǚ�}y5^�%��Z�9b3O��w�4�%���^F��j�"90X^�R�R�����P��R� LG����&؛o�b}@�>�H[;0��),C��dN����,�m���T���=����F�[c:�_�R�JN_F����S�T����qW?����^�}�R��\&���J���4s���ۗ�����ۑ��|��.�FB܈�1��AE���������i��4�G�����?O���?O���舐W�g�@���T�c�b1��q?�LB�ހB=i�[~�@1�}�Pb^�ҡ�k +�I����֊�C�4PX����2���ڠg +����o�,���+z-!��OQLC0olԲ�*�N1�h���4P��@Ṧ*���C�*�d2D�r?�L��bۂ�҉R�*6LY�LV^[�ፑ�}kNI#.-�1,�����P�_̏�*y�7�'�&���CY�=���\��"�i64�"3�$�E�$�`Jح��lo��R���Hq�P� �/�۵W�/lMp����b!���F+>F�B�c�)�46\�4X�%'?>*�%�����U����3�s�T�����5;@�l#��Zzň=��&��V�7���L?2xO�N�qa�?�1PJ�OqK��r?/4p!mb9�4{h9�m��h�й�ܑ�UqB�>��<Ӥ-�dN�.�I���6 E����uݜ�rD�c��ҟ1(f��K��\�Ҳ�BD�$�*z��4����?ҟX�;cqr��N���>��Hcpx��G�@�z��I����3���%�,���(hj�.s�^>���a~�)���oaBO�_!�U2m!���UqdrB\q�<{���`��Q�-O�$��|!�jT���e���}�i�_�6ɇice&�P�Y=f����e!xO�����E��?�{x���U +��@I[��f��.2�D_���cK�^���m���g4pD��/��`xK���?m|��DaE����o�=���2��(��@ݒ P���� Zd4��x����!�bx~� +��@�l��@�Μrs����[w���JT3����>ߕyL���J�-ƀ�(�L��&>T��׀i��9�h�|����ㄪ�M�o��cLq��� �'������G�!�B�~����O梃������h����4�9�����7���R*��8������LV8���4�� ź)�,!o��N�c�-���f�����4���ҝ +��_aJ�c)_Z1�\�"G�S���)PXjˎ�D���B� 0��EX���4pI�)�W<b�"�C�[ڟ���A�,=��2^D?���U{d���= ����_z�i�c�c_zOq�����6 ��� +��}�*c�6_� +T�����4q`�"C�=>/�9/�@<e�p!�| ������� ��i8��m� +T/�0j(���@0V� +JT;d���ڊ��s��UQ6 �}�2i ���Z�'�B�A�QB�?�q�~�S���}�!���be�~��;B�S�v?��EB)�I���Ƙ�-�8��hQ������:L�g��'�U&�qc��=�?@�\�<Dn[�N>�r���=���s�#ry�s�G �1��Rir ����4r���~����8 �(|�� +\��1��P�h81���#�� +�I��� +T4 ��8���C����M18��W���4Fd���l��R�ʯ�nI��F�bV���T'b. �CI�$�� +�Luu��}95Q%��Gg#���P߽�B�Q�[ +B?���"���._Q����}KQ���8�(��_��%q_���6E�+�=��)c{R�"?aC �x`��:c�OaN�A �QaŇ�G�v*c ��Z,/h�X��҇!�Ʃ����9 DcqK�p�'�+�c�NÈ�;�\Qb�#$����c�����K1�1�P+7zbg?z` �+�P� N)�0�8�H��i2����������B�3)=�0Dn�T��q��Z�L�g@9jm�$��E��O$]$�Ri���,��3MI� �"gnBS�*_#���&:������5Vɨ���{ �\SM��#ϡ�@�E�\�P)7!��y�d�!\B��_ҝ?�r_��w�ӯ�r��1�O�N�hG��b�?���������|R��@v�������-�h[H������i������Ř���Ѡ���R�4�BD�Rd���< +�@3/m�4��(�?�!Є����Z +lwO�E� �����j,tpp3۽9|�����S^��(~}�ʀ����}�j�R#��̊kB{�}�}�S�.#e�!���9�2�Ҁ���@h�O�r"��bG�����{RP�(IɊB~� +|P�1��A�8�����[�UO%S�9���o�s�m���$������t� 6��w��EC-M�i �`�8�I?�Ȁ����*��?Ȍ�£>�����|!�������N�BP1�g�E5� ���r���T�{���h�Ïh-��∡Ka���?z�O�p�y�Κ�q���B��ori�X�ǎ ��� \ No newline at end of file diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/chocolate-brownie-umami.html b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/chocolate-brownie-umami.html deleted file mode 100644 index 5b7f9f80ec..0000000000 --- a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/chocolate-brownie-umami.html +++ /dev/null @@ -1,7 +0,0 @@ -<ol> - <li>Preheat the oven to 350°F/180°C and grease an 8 inch cake tin.</li> - <li>Sift the flour and cocoa powder into a bowl and add the sugar and salt.</li> - <li>Add the oil, a little at time, mixing well to avoid lumps. Add the soy milk and vanilla extract and mix thoroughly.</li> - <li>Gently pour into the cake tin and spread out until even. Bake for about 15 minutes and check with a knife (the knife should come out clean when inserted into the brownies 2cm from the edge).</li> - <li>Allow to cool in the tin for a few minutes before cooling on a wire rack.</li> -</ol> diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/vegan-chocolate-nut-brownies.html b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/vegan-chocolate-nut-brownies.html new file mode 100644 index 0000000000..e0d4e460b7 --- /dev/null +++ b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipe_instructions/vegan-chocolate-nut-brownies.html @@ -0,0 +1,14 @@ +<ol> + <li>Use a little of the sunflower oil to grease an 8 inch square baking tin (or similar size) and line the tin with greaseproof paper.</li> + <li>Preheat the oven to 350°F/180°C.</li> + <li>Break approximately 1/3rd of the chocolate bar off and chop into small pieces. Roughly chop 2/3rds of the pecan nuts and mix together with the chopped chocolate. Set aside.</li> + <li>For finishing the brownies, chop or crush the remaining pecan nuts and walnuts, mix together and set aside.</li> + <li>Melt the remaining chocolate by bringing a couple inches of water to the boil in a small saucepan that is suitably sized for holding a heatproof bowl in the pan opening. Do not allow the bottom of the heatproof bowl to touch the water. Place the chocolate into the bowl to melt, stirring occasionally to ensure the chocolate has fully melted. Once melted, set aside and allow to cool slightly.</li> + <li>Whilst the chocolate is melting, begin to sieve the plain flour, coconut flour, and cocoa powder into a large mixing bowl and mix. Once mixed, stir in the baking powder and sugar.</li> + <li>Once the chocolate has cooled a little, begin to slowly stir the vanilla essence, sunflower oil, soya milk, and melted chocolate into the flour and cocoa mix.</li> + <li>Now stir in the previously chopped chocolate and pecan nuts, ensuring they are stirred evenly into the mixture.</li> + <li>Pour the mixture into the baking tin and spread evenly with a spatula.</li> + <li>Sprinkle the chopped pecan nuts and walnuts across the top and bake in the centre of the oven for 18 to 23 minutes.</li> + <li>Remove from the oven and allow to cool for 45 minutes. Carefully use the edges of the greaseproof paper to lift the brownie out of the tin and place onto a chopping board. With a sharp knife, gently cut into evenly sized pieces.</li> + <li>Serve on their own or with some vegan cream or ice cream.</li> +</ol> diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv index 6c9d6db290..87d2ac6a22 100644 --- a/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv +++ b/web/core/profiles/demo_umami/modules/demo_umami_content/default_content/recipes.csv @@ -1,6 +1,6 @@ title,image,alt,summary,author,recipe_category,preparation_time,cooking_time,total_time,difficulty,ingredients,recipe_instruction,number_of_servings,tags,slug Deep mediterranean quiche,mediterranean-quiche-umami.jpg,"A delicious deep layered Mediterranean quiche with basil garnish.",An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.,Umami,Main course,40,30,70,medium,"For the pastry:,280g plain flour,140g butter,Cold water,For the filling:,1 onion,2 garlic cloves,Half a courgette,450ml soya milk,500g grated parmesan,2 eggs,200g sun dried tomatoes,100g feta",mediterranean-quiche-umami.html,8,"Pastry,Egg",recipes/deep-mediterranean-quiche -Vegan chocolate brownies,chocolate-brownie-umami.jpg,A white plate with a vegan chocolate brownie covered in dark vegan chocolate,These sumptuous brownies should be gooey on the inside and crisp on the outside. A perfect indulgence!,Umami,Snack,20,20,40,,"170g self-raising flour, 3 tbsp cocoa powder, 170g caster sugar, 5 tbsp vegetable oil, 1 tsp vanilla extract, 1 pinch salt, 230ml soy milk",chocolate-brownie-umami.html,8,,recipes/vegan-chocolate-brownies +Vegan chocolate and nut brownies,vegan-chocolate-nut-brownies.jpg,"A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven","Scrumptious vegan chocolate brownies that are rich, fudgy, and nutty. These delights have a surprise hint of coconut making them the perfect indulgence. Serve warm with a little vanilla dairy-free ice cream!",Umami,Snack,20,20,40,medium,"6 tbsp sunflower oil, 80g vegan dark chocolate, 170g plain flour, 80g coconut flour, 1 tsp baking powder, 9 tsp cocoa powder, 100g caster sugar, 3 tbsp of maple syrup, 1/4 tsp sea salt, 1 tsp vanilla extract, 230ml unsweetened organic soya milk, 100g pecan nuts, 80g walnut halves",vegan-chocolate-nut-brownies.html,12,"Baking,Chocolate,Vegan,Dairy-free",recipes/vegan-chocolate-and-nut-brownies Super easy vegetarian pasta bake,veggie-pasta-bake-umami.jpg,Cheesy pasta dish with vegetarian sausages and topped with mozzarella cheese and basil,A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.,Umami,Main course,5,20,25,easy,"400g wholewheat pasta, 1 onion, 2 garlic cloves, 1 pack vegetarian sausages, 400g chopped tomatoes, 50g sliced sun dried tomatoes, 1 pinch sugar, 3 tbsp red pesto, 50g cheddar cheese, Basil or mixed herbs, 100g mozzarella",veggie-pasta-bake-umami.html,4,"Vegetarian,Pasta,Baked",recipes/super-easy-vegetarian-pasta-bake Watercress soup,watercress-soup-umami.jpg,Watercress soup with a sprig of coriander as garnish in a white bowl with green trim.,"A wonderfully simple and light soup, making the most of seasonal, local produce. ",Umami,Starter,10,20,30,easy,"3 bunches watercress,3 potatoes,3 onions,2 leeks,800ml stock,5 tbsp crème fraîche",watercress-soup-umami.html,4,"Soup,Vegetarian",recipes/watercress-soup Victoria sponge cake,victoria-sponge-umami.jpg,"A classic, uncut Victoria sponge with a deep filling of butter cream and jam","A traditional Victoria sponge cake, perfect for any afternoon with a cup of tea.",Umami,Dessert,20,20,40,easy,"225g butter or margarine,225g caster sugar,225g self-raising flour,4 eggs,1 tsp baking powder,3 tbsp of jam for the filling,Icing sugar to dust the top,Cream to serve",victoria-sponge-umami.html,10,Cake,recipes/victoria-sponge-cake diff --git a/web/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php b/web/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php index 3e93494404..677a2dfa4c 100644 --- a/web/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php +++ b/web/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php @@ -20,8 +20,8 @@ public function testAccessDeniedToFiles() { $this->assertNotSame('demo_umami', \Drupal::installProfile()); $files_to_test = [ - 'images/chocolate-brownie-umami.jpg', - 'recipe_instructions/chocolate-brownie-umami.html', + 'images/heritage-carrots.jpg', + 'recipe_instructions/mediterranean-quiche-umami.html', 'article_body/lets-hear-it-for-carrots.html', 'articles.csv', ]; diff --git a/web/core/profiles/demo_umami/themes/umami/templates/content/node--card-common.html.twig b/web/core/profiles/demo_umami/themes/umami/templates/content/node--card-common.html.twig index 5717655d68..129078c249 100644 --- a/web/core/profiles/demo_umami/themes/umami/templates/content/node--card-common.html.twig +++ b/web/core/profiles/demo_umami/themes/umami/templates/content/node--card-common.html.twig @@ -94,7 +94,7 @@ {{ title_suffix }} <div class="read-more"> - <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a> + <a class="read-more__link" href="{{ url }}">{% trans %}View {{ node.type.entity.label() }}{% endtrans %}</a> </div> <div{{ content_attributes.addClass('node__content') }}> diff --git a/web/core/profiles/demo_umami/themes/umami/templates/content/node--card.html.twig b/web/core/profiles/demo_umami/themes/umami/templates/content/node--card.html.twig index 698da17020..8e8622d32c 100644 --- a/web/core/profiles/demo_umami/themes/umami/templates/content/node--card.html.twig +++ b/web/core/profiles/demo_umami/themes/umami/templates/content/node--card.html.twig @@ -95,7 +95,7 @@ </div> <div class="read-more"> - <a class="read-more__link" href="{{ url }}">{{ 'View'|t }} {{ node.bundle }}</a> + <a class="read-more__link" href="{{ url }}">{% trans %}View {{ node.type.entity.label() }}{% endtrans %}</a> </div> </article> diff --git a/web/core/profiles/testing_site_config/testing_site_config.info.yml b/web/core/profiles/testing_site_config/testing_site_config.info.yml new file mode 100644 index 0000000000..31a390557e --- /dev/null +++ b/web/core/profiles/testing_site_config/testing_site_config.info.yml @@ -0,0 +1,6 @@ +name: Testing site config +type: profile +description: 'Minimal profile for testing with default site config.' +version: VERSION +core: 8.x +hidden: true diff --git a/web/core/profiles/testing_site_config/testing_site_config.install b/web/core/profiles/testing_site_config/testing_site_config.install new file mode 100644 index 0000000000..0f718d0b8f --- /dev/null +++ b/web/core/profiles/testing_site_config/testing_site_config.install @@ -0,0 +1,22 @@ +<?php + +/** + * @file + * Install functions for the testing_site_config module. + */ + +/** + * Implements hook_install(). + */ +function testing_site_config_install() { + // Set the site email address to something that is not sendmail_from. + \Drupal::configFactory()->getEditable('system.site') + ->set('mail', 'profile-testing-site-config@example.com') + ->save(TRUE); + + // Set the time zone to something that is not the system timezone (which is + // Australia/Sydney in the testing environment). + \Drupal::configFactory()->getEditable('system.date') + ->set('timezone.default', 'America/Los_Angeles') + ->save(TRUE); +} diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php index 0db5e5f74e..f2e9577048 100644 --- a/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php +++ b/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php @@ -37,14 +37,20 @@ public function testAjaxCommands() { $this->assertWaitPageContains('<div id="after_div">Something can be inserted after this</div>This will be placed after'); // Tests the 'alert' command. - $test_alert_command = <<<JS -window.alert = function() { - document.body.innerHTML += '<div class="alert-command">Alert</div>'; -}; -JS; - $session->executeScript($test_alert_command); $page->pressButton("AJAX 'Alert': Click to alert"); - $this->assertWaitPageContains('<div class="alert-command">Alert</div>'); + // Wait for the alert to appear. + $page->waitFor(10, function () use ($session) { + try { + $session->getDriver()->getWebDriverSession()->getAlert_text(); + return TRUE; + } + catch (\Exception $e) { + return FALSE; + } + }); + $alert_text = $this->getSession()->getDriver()->getWebDriverSession()->getAlert_text(); + $this->assertEquals('Alert', $alert_text); + $this->getSession()->getDriver()->getWebDriverSession()->accept_alert(); // Tests the 'append' command. $page->pressButton("AJAX 'Append': Click to append something"); diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php b/web/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php index ce5167ae31..959b663d20 100644 --- a/web/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php +++ b/web/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php @@ -101,6 +101,26 @@ public function waitForElementVisible($selector, $locator, $timeout = 10000) { return $result; } + /** + * Waits for the specified text and returns its element when available. + * + * @param string $text + * The text to wait for. + * @param int $timeout + * (Optional) Timeout in milliseconds, defaults to 10000. + * + * @return \Behat\Mink\Element\NodeElement|null + * The page element node if found and visible, NULL if not. + */ + public function waitForText($text, $timeout = 10000) { + $page = $this->session->getPage(); + return $page->waitFor($timeout / 1000, function () use ($page, $text) { + $actual = preg_replace('/\s+/u', ' ', $page->getText()); + $regex = '/' . preg_quote($text, '/') . '/ui'; + return (bool) preg_match($regex, $actual); + }); + } + /** * Waits for a button (input[type=submit|image|button|reset], button) with * specified locator and returns it. diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php new file mode 100644 index 0000000000..ee7fe96c2b --- /dev/null +++ b/web/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php @@ -0,0 +1,345 @@ +<?php + +namespace Drupal\FunctionalJavascriptTests\TableDrag; + +use Behat\Mink\Element\NodeElement; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; + +/** + * Tests draggable table. + * + * @group javascript + */ +class TableDragTest extends WebDriverTestBase { + + /** + * Class used to verify that dragging operations are in execution. + */ + const DRAGGING_CSS_CLASS = 'tabledrag-test-dragging'; + + /** + * {@inheritdoc} + */ + protected static $modules = ['tabledrag_test']; + + /** + * The state service. + * + * @var \Drupal\Core\State\StateInterface + */ + protected $state; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->state = $this->container->get('state'); + } + + /** + * Tests accessibility through keyboard of the tabledrag functionality. + */ + public function testKeyboardAccessibility() { + $this->state->set('tabledrag_test_table', array_flip(range(1, 5))); + + $expected_table = [ + ['id' => 1, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 2, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 3, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 4, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 5, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ]; + $this->drupalGet('tabledrag_test'); + $this->assertDraggableTable($expected_table); + + // Nest the row with id 2 as child of row 1. + $this->moveRowWithKeyboard($this->findRowById(2), 'right'); + $expected_table[1] = ['id' => 2, 'weight' => -10, 'parent' => 1, 'indentation' => 1, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Nest the row with id 3 as child of row 1. + $this->moveRowWithKeyboard($this->findRowById(3), 'right'); + $expected_table[2] = ['id' => 3, 'weight' => -9, 'parent' => 1, 'indentation' => 1, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Nest the row with id 3 as child of row 2. + $this->moveRowWithKeyboard($this->findRowById(3), 'right'); + $expected_table[2] = ['id' => 3, 'weight' => -10, 'parent' => 2, 'indentation' => 2, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Nesting should be allowed to maximum level 2. + $this->moveRowWithKeyboard($this->findRowById(4), 'right', 4); + $expected_table[3] = ['id' => 4, 'weight' => -9, 'parent' => 2, 'indentation' => 2, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Re-order children of row 1. + $this->moveRowWithKeyboard($this->findRowById(4), 'up'); + $expected_table[2] = ['id' => 4, 'weight' => -10, 'parent' => 2, 'indentation' => 2, 'changed' => TRUE]; + $expected_table[3] = ['id' => 3, 'weight' => -9, 'parent' => 2, 'indentation' => 2, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Move back the row 3 to the 1st level. + $this->moveRowWithKeyboard($this->findRowById(3), 'left'); + $expected_table[3] = ['id' => 3, 'weight' => -9, 'parent' => 1, 'indentation' => 1, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + $this->moveRowWithKeyboard($this->findRowById(3), 'left'); + $expected_table[0] = ['id' => 1, 'weight' => -10, 'parent' => '', 'indentation' => 0, 'changed' => FALSE]; + $expected_table[3] = ['id' => 3, 'weight' => -9, 'parent' => '', 'indentation' => 0, 'changed' => TRUE]; + $expected_table[4] = ['id' => 5, 'weight' => -8, 'parent' => '', 'indentation' => 0, 'changed' => FALSE]; + $this->assertDraggableTable($expected_table); + + // Move row 3 to the last position. + $this->moveRowWithKeyboard($this->findRowById(3), 'down'); + $expected_table[3] = ['id' => 5, 'weight' => -9, 'parent' => '', 'indentation' => 0, 'changed' => FALSE]; + $expected_table[4] = ['id' => 3, 'weight' => -8, 'parent' => '', 'indentation' => 0, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // Nothing happens when trying to move the last row further down. + $this->moveRowWithKeyboard($this->findRowById(3), 'down'); + $this->assertDraggableTable($expected_table); + + // Nest row 3 under 5. The max depth allowed should be 1. + $this->moveRowWithKeyboard($this->findRowById(3), 'right', 3); + $expected_table[4] = ['id' => 3, 'weight' => -10, 'parent' => 5, 'indentation' => 1, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + + // The first row of the table cannot be nested. + $this->moveRowWithKeyboard($this->findRowById(1), 'right'); + $this->assertDraggableTable($expected_table); + + // Move a row which has nested children. The children should move with it, + // with nesting preserved. Swap the order of the top-level rows by moving + // row 1 to after row 3. + $this->moveRowWithKeyboard($this->findRowById(1), 'down', 2); + $expected_table[0] = ['id' => 5, 'weight' => -10, 'parent' => '', 'indentation' => 0, 'changed' => FALSE]; + $expected_table[3] = $expected_table[1]; + $expected_table[1] = $expected_table[4]; + $expected_table[4] = $expected_table[2]; + $expected_table[2] = ['id' => 1, 'weight' => -9, 'parent' => '', 'indentation' => 0, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + } + + /** + * Tests the root and leaf behaviors for rows. + */ + public function testRootLeafDraggableRowsWithKeyboard() { + $this->state->set('tabledrag_test_table', [ + 1 => [], + 2 => ['parent' => 1, 'depth' => 1, 'classes' => ['tabledrag-leaf']], + 3 => ['parent' => 1, 'depth' => 1], + 4 => [], + 5 => ['classes' => ['tabledrag-root']], + ]); + + $this->drupalGet('tabledrag_test'); + $expected_table = [ + ['id' => 1, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 2, 'weight' => 0, 'parent' => 1, 'indentation' => 1, 'changed' => FALSE], + ['id' => 3, 'weight' => 0, 'parent' => 1, 'indentation' => 1, 'changed' => FALSE], + ['id' => 4, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ['id' => 5, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], + ]; + $this->assertDraggableTable($expected_table); + + // Rows marked as root cannot be moved as children of another row. + $this->moveRowWithKeyboard($this->findRowById(5), 'right'); + $this->assertDraggableTable($expected_table); + + // Rows marked as leaf cannot have children. Trying to move the row #3 + // as child of #2 should have no results. + $this->moveRowWithKeyboard($this->findRowById(3), 'right'); + $this->assertDraggableTable($expected_table); + + // Leaf can be still swapped and moved to first level. + $this->moveRowWithKeyboard($this->findRowById(2), 'down'); + $this->moveRowWithKeyboard($this->findRowById(2), 'left'); + $expected_table[0]['weight'] = -10; + $expected_table[1]['id'] = 3; + $expected_table[1]['weight'] = -10; + $expected_table[2] = ['id' => 2, 'weight' => -9, 'parent' => '', 'indentation' => 0, 'changed' => TRUE]; + $expected_table[3]['weight'] = -8; + $expected_table[4]['weight'] = -7; + $this->assertDraggableTable($expected_table); + + // Root rows can have children. + $this->moveRowWithKeyboard($this->findRowById(4), 'down'); + $this->moveRowWithKeyboard($this->findRowById(4), 'right'); + $expected_table[3]['id'] = 5; + $expected_table[4] = ['id' => 4, 'weight' => -10, 'parent' => 5, 'indentation' => 1, 'changed' => TRUE]; + $this->assertDraggableTable($expected_table); + } + + /** + * Tests the warning that appears upon making changes to a tabledrag table. + */ + public function testTableDragChangedWarning() { + $this->drupalGet('tabledrag_test'); + + // By default no text is visible. + $this->assertSession()->pageTextNotContains('You have unsaved changes.'); + // Try to make a non-allowed action, like moving further down the last row. + // No changes happen, so no message should be shown. + $this->moveRowWithKeyboard($this->findRowById(5), 'down'); + $this->assertSession()->pageTextNotContains('You have unsaved changes.'); + + // Make a change. The message will appear. + $this->moveRowWithKeyboard($this->findRowById(5), 'right'); + $this->assertSession()->pageTextContainsOnce('You have unsaved changes.'); + + // Make another change, the text will stay visible and appear only once. + $this->moveRowWithKeyboard($this->findRowById(2), 'up'); + $this->assertSession()->pageTextContainsOnce('You have unsaved changes.'); + } + + /** + * Asserts the whole structure of the draggable test table. + * + * @param array $structure + * The table structure. Each entry represents a row and consists of: + * - id: the expected value for the ID hidden field. + * - weight: the expected row weight. + * - parent: the expected parent ID for the row. + * - indentation: how many indents the row should have. + * - changed: whether or not the row should have been marked as changed. + */ + protected function assertDraggableTable(array $structure) { + $rows = $this->getSession()->getPage()->findAll('xpath', '//table[@id="tabledrag-test-table"]/tbody/tr'); + $this->assertSession()->elementsCount('xpath', '//table[@id="tabledrag-test-table"]/tbody/tr', count($structure)); + + foreach ($structure as $delta => $expected) { + $this->assertTableRow($rows[$delta], $expected['id'], $expected['weight'], $expected['parent'], $expected['indentation'], $expected['changed']); + } + } + + /** + * Asserts the values of a draggable row. + * + * @param \Behat\Mink\Element\NodeElement $row + * The row element to assert. + * @param string $id + * The expected value for the ID hidden input of the row. + * @param int $weight + * The expected weight of the row. + * @param string $parent + * The expected parent ID. + * @param int $indentation + * The expected indentation of the row. + * @param bool $changed + * Whether or not the row should have been marked as changed. + */ + protected function assertTableRow(NodeElement $row, $id, $weight, $parent = '', $indentation = 0, $changed = FALSE) { + // Assert that the row position is correct by checking that the id + // corresponds. + $this->assertSession()->hiddenFieldValueEquals("table[$id][id]", $id, $row); + $this->assertSession()->hiddenFieldValueEquals("table[$id][parent]", $parent, $row); + $this->assertSession()->fieldValueEquals("table[$id][weight]", $weight, $row); + $this->assertSession()->elementsCount('css', '.js-indentation.indentation', $indentation, $row); + // A row is marked as changed when the related markup is present. + $this->assertSession()->elementsCount('css', 'abbr.tabledrag-changed', (int) $changed, $row); + } + + /** + * Finds a row in the test table by the row ID. + * + * @param string $id + * The ID of the row. + * + * @return \Behat\Mink\Element\NodeElement + * The row element. + */ + protected function findRowById($id) { + $xpath = "//table[@id='tabledrag-test-table']/tbody/tr[.//input[@name='table[$id][id]']]"; + $row = $this->getSession()->getPage()->find('xpath', $xpath); + $this->assertNotEmpty($row); + return $row; + } + + /** + * Moves a row through the keyboard. + * + * @param \Behat\Mink\Element\NodeElement $row + * The row to move. + * @param string $arrow + * The arrow button to use to move the row. Either one of 'left', 'right', + * 'up' or 'down'. + * @param int $repeat + * (optional) How many times to press the arrow button. Defaults to 1. + */ + protected function moveRowWithKeyboard(NodeElement $row, $arrow, $repeat = 1) { + $keys = [ + 'left' => 37, + 'right' => 39, + 'up' => 38, + 'down' => 40, + ]; + if (!isset($keys[$arrow])) { + throw new \InvalidArgumentException('The arrow parameter must be one of "left", "right", "up" or "down".'); + } + + $key = $keys[$arrow]; + + $handle = $row->find('css', 'a.tabledrag-handle'); + $handle->focus(); + + for ($i = 0; $i < $repeat; $i++) { + $this->markRowHandleForDragging($handle); + $handle->keyDown($key); + $handle->keyUp($key); + $this->waitUntilDraggingCompleted($handle); + } + + $handle->blur(); + } + + /** + * Marks a row handle for dragging. + * + * The handle is marked by adding a css class that is removed by an helper + * js library once the dragging is over. + * + * @param \Behat\Mink\Element\NodeElement $handle + * The draggable row handle element. + * + * @throws \Exception + * Thrown when the class is not added successfully to the handle. + */ + protected function markRowHandleForDragging(NodeElement $handle) { + $class = self::DRAGGING_CSS_CLASS; + $script = <<<JS +document.evaluate("{$handle->getXpath()}", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) + .singleNodeValue.classList.add('{$class}'); +JS; + + $this->getSession()->executeScript($script); + $has_class = $this->getSession()->getPage()->waitFor(1, function () use ($handle, $class) { + return $handle->hasClass($class); + }); + + if (!$has_class) { + throw new \Exception(sprintf('Dragging css class was not added on handle "%s".', $handle->getXpath())); + } + } + + /** + * Waits until the dragging operations are finished on a row handle. + * + * @param \Behat\Mink\Element\NodeElement $handle + * The draggable row handle element. + * + * @throws \Exception + * Thrown when the dragging operations are not completed on time. + */ + protected function waitUntilDraggingCompleted(NodeElement $handle) { + $class_removed = $this->getSession()->getPage()->waitFor(1, function () use ($handle) { + return !$handle->hasClass($this::DRAGGING_CSS_CLASS); + }); + + if (!$class_removed) { + throw new \Exception(sprintf('Dragging operations did not complete on time on handle %s', $handle->getXpath())); + } + } + +} diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerSiteConfigProfileTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerSiteConfigProfileTest.php new file mode 100644 index 0000000000..791befd046 --- /dev/null +++ b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerSiteConfigProfileTest.php @@ -0,0 +1,63 @@ +<?php + +namespace Drupal\FunctionalTests\Installer; + +/** + * Verifies that the installer defaults to the existing site email address and + * timezone, if they were provided by the install profile. + * + * @group Installer + */ +class InstallerSiteConfigProfileTest extends InstallerTestBase { + + /** + * {@inheritdoc} + */ + protected $profile = 'testing_site_config'; + + /** + * The site mail we expect to be set from the install profile. + * + * @see testing_site_config_install() + */ + const EXPECTED_SITE_MAIL = 'profile-testing-site-config@example.com'; + + /** + * The timezone we expect to be set from the install profile. + * + * @see testing_site_config_install() + */ + const EXPECTED_TIMEZONE = 'America/Los_Angeles'; + + /** + * {@inheritdoc} + */ + protected function installParameters() { + $parameters = parent::installParameters(); + + // Don't override the site email address, allowing it to default to the one + // from our install profile. + unset($parameters['forms']['install_configure_form']['site_mail']); + + return $parameters; + } + + /** + * {@inheritdoc} + */ + protected function setUpSite() { + $this->assertFieldByName('site_mail', self::EXPECTED_SITE_MAIL); + $this->assertFieldByName('date_default_timezone', self::EXPECTED_TIMEZONE); + + return parent::setUpSite(); + } + + /** + * Verify the correct site config was set. + */ + public function testInstaller() { + $this->assertEqual($this->config('system.site')->get('mail'), self::EXPECTED_SITE_MAIL); + $this->assertEqual($this->config('system.date')->get('timezone.default'), self::EXPECTED_TIMEZONE); + } + +} diff --git a/web/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php b/web/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php index 99a94d182f..1237e72487 100644 --- a/web/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php +++ b/web/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php @@ -4,6 +4,7 @@ use Drupal\Component\Utility\Crypt; use Drupal\Component\Render\FormattableMarkup; +use Drupal\Core\Config\Config; use Drupal\Core\Config\ConfigNameException; use Drupal\Core\Config\ConfigValueException; use Drupal\Core\Config\InstallStorage; @@ -38,14 +39,19 @@ class ConfigCRUDTest extends KernelTestBase { * Tests CRUD operations. */ public function testCRUD() { + $event_dispatcher = $this->container->get('event_dispatcher'); + $typed_config_manager = $this->container->get('config.typed'); + $storage = $this->container->get('config.storage'); + $collection_storage = $storage->createCollection('test_collection'); + $config_factory = $this->container->get('config.factory'); $name = 'config_test.crud'; + // Create a new configuration object in the default collection. $config = $this->config($name); $this->assertIdentical($config->isNew(), TRUE); - // Create a new configuration object. $config->set('value', 'initial'); $config->save(); $this->assertIdentical($config->isNew(), FALSE); @@ -54,6 +60,25 @@ public function testCRUD() { $actual_data = $storage->read($name); $this->assertIdentical($actual_data, ['value' => 'initial']); + // Verify the config factory contains the saved value. + $actual_data = $config_factory->get($name)->getRawData(); + $this->assertIdentical($actual_data, ['value' => 'initial']); + + // Create another instance of the config object using a custom collection. + $collection_config = new Config( + $name, + $collection_storage, + $event_dispatcher, + $typed_config_manager + ); + $collection_config->set('value', 'overridden'); + $collection_config->save(); + + // Verify that the config factory still returns the right value, from the + // config instance in the default collection. + $actual_data = $config_factory->get($name)->getRawData(); + $this->assertIdentical($actual_data, ['value' => 'initial']); + // Update the configuration object instance. $config->set('value', 'instance-update'); $config->save(); @@ -71,6 +96,14 @@ public function testCRUD() { // Pollute the config factory static cache. $config_factory->getEditable($name); + // Delete the config object that uses a custom collection. This should not + // affect the instance returned by the config factory which depends on the + // default collection storage. + $collection_config->delete(); + $actual_config = $config_factory->get($name); + $this->assertIdentical($actual_config->isNew(), FALSE); + $this->assertIdentical($actual_config->getRawData(), ['value' => 'instance-update']); + // Delete the configuration object. $config->delete(); diff --git a/web/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityStorageBaseTest.php b/web/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityStorageBaseTest.php new file mode 100644 index 0000000000..54bbea515c --- /dev/null +++ b/web/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityStorageBaseTest.php @@ -0,0 +1,63 @@ +<?php + +namespace Drupal\KernelTests\Core\Entity; + +use Drupal\KernelTests\KernelTestBase; + +/** + * @coversDefaultClass \Drupal\Core\Entity\ContentEntityStorageBase + * + * @group Entity + */ +class ContentEntityStorageBaseTest extends KernelTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['entity_test', 'user']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + $this->installEntitySchema('entity_test'); + $this->installEntitySchema('user'); + } + + /** + * @covers ::create + * + * @dataProvider providerTestCreate + */ + public function testCreate($bundle) { + $storage = $this->container->get('entity_type.manager')->getStorage('entity_test'); + + $entity = $storage->create(['type' => $bundle]); + $this->assertEquals('test_bundle', $entity->bundle()); + } + + /** + * Provides test data for testCreate(). + */ + public function providerTestCreate() { + return [ + ['scalar' => 'test_bundle'], + ['array keyed by delta' => [0 => ['value' => 'test_bundle']]], + ['array keyed by main property name' => ['value' => 'test_bundle']], + ]; + } + + /** + * @covers ::create + */ + public function testReCreate() { + $storage = $this->container->get('entity_type.manager')->getStorage('entity_test'); + + $values = $storage->create(['type' => 'test_bundle'])->toArray(); + $entity = $storage->create($values); + $this->assertEquals('test_bundle', $entity->bundle()); + } + +} diff --git a/web/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php b/web/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php new file mode 100644 index 0000000000..a826706daf --- /dev/null +++ b/web/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php @@ -0,0 +1,24 @@ +<?php + +namespace Drupal\KernelTests\Core\Extension; + +use Drupal\KernelTests\KernelTestBase; + +/** + * @coversDefaultClass \Drupal\Core\Extension\ModuleHandler + * + * @group Extension + */ +class ModuleHandlerTest extends KernelTestBase { + + /** + * Tests requesting the name of an invalid module. + * + * @covers ::getName + */ + public function testInvalidGetName() { + $module_handler = $this->container->get('module_handler'); + $this->assertSame('module_nonsense', $module_handler->getName('module_nonsense')); + } + +} diff --git a/web/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php b/web/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php index 26a1abeff1..85c0f5acd4 100644 --- a/web/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php +++ b/web/core/tests/Drupal/KernelTests/Core/KeyValueStore/DatabaseStorageExpirableTest.php @@ -153,6 +153,12 @@ public function testExpiration() { foreach (['troubles', 'still'] as $key) { $this->assertTrue(!empty($all[$key])); } + + // Test DatabaseStorageExpirable::setWithExpireIfNotExists() will overwrite + // expired items. + $this->assertNull($stores[0]->get('yesterday')); + $stores[0]->setWithExpireIfNotExists('yesterday', 'Oh, yesterday came suddenly', $day); + $this->assertSame('Oh, yesterday came suddenly', $stores[0]->get('yesterday')); } } diff --git a/web/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php b/web/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php index 5d68f95e79..3215d9ce56 100644 --- a/web/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php +++ b/web/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php @@ -3,6 +3,7 @@ namespace Drupal\KernelTests\Core\Routing; use Drupal\Component\Utility\Html; +use Drupal\Core\Cache\CacheableJsonResponse; use Drupal\KernelTests\KernelTestBase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -56,6 +57,7 @@ public function testJson403() { $this->assertEqual($response->getStatusCode(), Response::HTTP_FORBIDDEN); $this->assertEqual($response->headers->get('Content-type'), 'application/json'); $this->assertEqual('{"message":""}', $response->getContent()); + $this->assertInstanceOf(CacheableJsonResponse::class, $response); } /** diff --git a/web/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php b/web/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php index b6a79b3a73..9f30353a7e 100644 --- a/web/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php +++ b/web/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php @@ -118,7 +118,8 @@ public function providerTestPhpTransliteration() { $five_byte = html_entity_decode('𐌰𐌸', ENT_NOQUOTES, 'UTF-8'); return [ - // Each test case is (language code, input, output). + // Each test case is language code, input, output, unknown character, max + // length. // Test ASCII in English. ['en', $random, $random], // Test ASCII in some other language with no overrides. @@ -143,60 +144,9 @@ public function providerTestPhpTransliteration() { // Turkish, provided by drupal.org user Kartagis. ['tr', 'Abayı serdiler bize. Söyleyeceğim yüzlerine. Sanırım hepimiz aynı şeyi düşünüyoruz.', 'Abayi serdiler bize. Soyleyecegim yuzlerine. Sanirim hepimiz ayni seyi dusunuyoruz.'], // Max length. - ['de', $two_byte, 'Ae Oe', '?', 5], - ]; - } - - /** - * Tests the transliteration with max length. - */ - public function testTransliterationWithMaxLength() { - $transliteration = new PhpTransliteration(); - - // Test with max length, using German. It should never split up the - // transliteration of a single character. - $input = 'Ä Ö Ü Å Ø äöüåøhello'; - $trunc_output = 'Ae Oe Ue A O aeoe'; - - $this->assertSame($trunc_output, $transliteration->transliterate($input, 'de', '?', 17), 'Truncating to 17 characters works'); - $this->assertSame($trunc_output, $transliteration->transliterate($input, 'de', '?', 18), 'Truncating to 18 characters works'); - } - - /** - * Tests the unknown character replacement. - * - * @param string $langcode - * The language code to test. - * @param string $original - * The original string. - * @param string $expected - * The expected return from PhpTransliteration::transliterate(). - * @param string $unknown_character - * The character to substitute for characters in $string without - * transliterated equivalents. - * @param int $max_length - * The maximum length of the string that returns the transliteration. - * - * @dataProvider providerTestTransliterationUnknownCharacter - */ - public function testTransliterationUnknownCharacter($langcode, $original, $expected, $unknown_character = '?', $max_length = NULL) { - $transliteration = new PhpTransliteration(); - $actual = $transliteration->transliterate($original, $langcode, $unknown_character, $max_length); - $this->assertSame($expected, $actual); - } - - /** - * Provides data for self::testTransliterationUnknownCharacter(). - * - * @return array - * An array of arrays, each containing the parameters for - * self::testTransliterationUnknownCharacter(). - */ - public function providerTestTransliterationUnknownCharacter() { - return [ - // Each test case is (language code, input, output, unknown character, max - // length). - + ['de', $two_byte, 'Ae Oe Ue A O aeoe', '?', 17], + // Do not split up the transliteration of a single character. + ['de', $two_byte, 'Ae Oe Ue A O aeoe', '?', 18], // Illegal/unknown unicode. ['en', chr(0xF8) . chr(0x80) . chr(0x80) . chr(0x80) . chr(0x80), '?????'], ['en', chr(0xF8) . chr(0x80) . chr(0x80) . chr(0x80) . chr(0x80), '-----', '-'], @@ -213,6 +163,13 @@ public function providerTestTransliterationUnknownCharacter() { ['pl', chr(0x80) . 'óóść', 'ooosc', 'ó'], // Ensure question marks are replaced when max length used. ['en', chr(0x80) . 'ello ? World?', '_ello ?', '_', 7], + // Empty replacement. + ['en', chr(0x80) . 'ello World' . chr(0xF8), 'ello World', ''], + // Not affecting spacing from the beginning and end of a string. + ['en', ' Hello Abventor! ', ' Hello Abventor! '], + ['pl', ' Drupal Kraków Community', ' Drupal Krakow ', '?', 15], + // Keep many spaces between words. + ['en', 'Too many spaces between words !', 'Too many spaces between words !'], ]; } diff --git a/web/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php b/web/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php index d167958326..5d484b2903 100644 --- a/web/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php +++ b/web/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php @@ -44,14 +44,11 @@ public function testCheckMemoryLimit($required, $custom_memory_limit, $expected) * required and memory_limit, and the expected return value. */ public function providerTestCheckMemoryLimit() { - $memory_limit = ini_get('memory_limit'); - $twice_avail_memory = ($memory_limit * 2) . 'MB'; - return [ // Minimal amount of memory should be available. ['30MB', NULL, TRUE], - // Exceed a custom (unlimited) memory limit. - [$twice_avail_memory, -1, TRUE], + // Test an unlimited memory limit. + ['9999999999YB', -1, TRUE], // Exceed a custom memory limit. ['30MB', '16MB', FALSE], // Available = required. diff --git a/web/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php b/web/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php index ebb41d63fb..0160f6930a 100644 --- a/web/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php +++ b/web/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php @@ -322,6 +322,12 @@ public function testSleepWithPluginCollections() { $plugin_manager = $this->prophesize(PluginManagerInterface::class); $plugin_manager->createInstance($instance_id, ['id' => $instance_id])->willReturn($instance); + // Also set up a container with the plugin manager so that we can assert + // that the plugin manager itself is also not serialized. + $container = new ContainerBuilder(); + $container->set('plugin.manager.foo', $plugin_manager); + \Drupal::setContainer($container); + $entity_values = ['the_plugin_collection_config' => [$instance_id => ['foo' => 'original_value']]]; $entity = new TestConfigEntityWithPluginCollections($entity_values, $this->entityTypeId); $entity->setPluginManager($plugin_manager->reveal()); @@ -334,8 +340,11 @@ public function testSleepWithPluginCollections() { $expected_plugin_config = [$instance_id => ['foo' => 'original_value']]; $this->assertSame($expected_plugin_config, $entity->get('the_plugin_collection_config')); - // Ensure the plugin collection is not stored. - $this->assertNotContains('pluginCollection', $entity->__sleep()); + // Ensure the plugin collection and manager is not stored. + $vars = $entity->__sleep(); + $this->assertNotContains('pluginCollection', $vars); + $this->assertNotContains('pluginManager', $vars); + $this->assertSame(['pluginManager' => 'plugin.manager.foo'], $entity->get('_serviceIds')); $expected_plugin_config = [$instance_id => ['foo' => 'new_value']]; // Ensure the updated values are stored in the entity. @@ -603,14 +612,19 @@ class TestConfigEntityWithPluginCollections extends ConfigEntityBaseWithPluginCo protected $pluginCollection; + protected $pluginManager; + public function setPluginManager(PluginManagerInterface $plugin_manager) { - $this->pluginCollection = new DefaultLazyPluginCollection($plugin_manager, ['the_instance_id' => ['id' => 'the_instance_id']]); + $this->pluginManager = $plugin_manager; } /** * {@inheritdoc} */ public function getPluginCollections() { + if (!$this->pluginCollection) { + $this->pluginCollection = new DefaultLazyPluginCollection($this->pluginManager, ['the_instance_id' => ['id' => 'the_instance_id']]); + } return ['the_plugin_collection_config' => $this->pluginCollection]; } diff --git a/web/core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php b/web/core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php new file mode 100644 index 0000000000..e8388d6b89 --- /dev/null +++ b/web/core/tests/Drupal/Tests/Core/Extension/ExtensionSerializationTest.php @@ -0,0 +1,32 @@ +<?php + +namespace Drupal\Tests\Core\Extension; + +use Drupal\Tests\UnitTestCase; +use Drupal\Core\Extension\Extension; + +/** + * Tests Extension serialization. + * + * @coversDefaultClass \Drupal\Core\Extension\Extension + * @group Extension + */ +class ExtensionSerializationTest extends UnitTestCase { + + /** + * Tests dynamically assigned public properties kept when serialized. + * + * @covers ::__sleep + * @covers ::__wakeup + * @runInSeparateProcess + */ + public function testPublicProperties() { + define('DRUPAL_ROOT', '/dummy/app/root'); + $extension = new Extension('/dummy/app/root', 'module', 'core/modules/system/system.info.yml', 'system.module'); + // Assign a public property dynamically. + $extension->test = 'foo'; + $extension = unserialize(serialize($extension)); + $this->assertSame('foo', $extension->test); + } + +} diff --git a/web/core/tests/Drupal/Tests/Core/Test/BrowserTestBaseTest.php b/web/core/tests/Drupal/Tests/Core/Test/BrowserTestBaseTest.php index a8eb65f667..e130e07dba 100644 --- a/web/core/tests/Drupal/Tests/Core/Test/BrowserTestBaseTest.php +++ b/web/core/tests/Drupal/Tests/Core/Test/BrowserTestBaseTest.php @@ -79,4 +79,22 @@ public function testGetHttpClientException() { $ref_gethttpclient->invoke($btb); } + /** + * Test that tearDown doesn't call cleanupEnvironment if setUp is not called. + * + * @covers ::tearDown + */ + public function testTearDownWithoutSetUp() { + $method = 'cleanupEnvironment'; + $this->assertTrue(method_exists(BrowserTestBase::class, $method)); + $btb = $this->getMockBuilder(BrowserTestBase::class) + ->disableOriginalConstructor() + ->setMethods([$method]) + ->getMockForAbstractClass(); + $btb->expects($this->never())->method($method); + $ref_tearDown = new \ReflectionMethod($btb, 'tearDown'); + $ref_tearDown->setAccessible(TRUE); + $ref_tearDown->invoke($btb); + } + } diff --git a/web/core/tests/README.md b/web/core/tests/README.md index 0ea2efc9ba..468ee65cad 100644 --- a/web/core/tests/README.md +++ b/web/core/tests/README.md @@ -4,9 +4,9 @@ * Run the functional tests: ``` - export SIMPLETEST_DB='mysql://root@localhost/dev_d8' - export SIMPLETEST_BASE_URL='http://d8.dev' - ./vendor/bin/phpunit -c core --testsuite functional + export SIMPLETEST_DB='mysql://root@localhost/dev_d8'; + export SIMPLETEST_BASE_URL='http://d8.dev'; + ./vendor/bin/phpunit -c core --testsuite functional; ``` Note: functional tests have to be invoked with a user in the same group as the @@ -50,8 +50,8 @@ For help installing and starting selenium, see http://mink.behat.org/en/latest/d Example for Mac: ``` -brew install selenium-server-standalone -brew install chromedriver +brew install selenium-server-standalone; +brew install chromedriver; ``` * Before running tests make sure that selenium-server is running @@ -61,24 +61,24 @@ selenium-server -port 4444 * Set the correct driver args and run the tests: ``` -export MINK_DRIVER_ARGS_WEBDRIVER='["chrome", null, "http://localhost:4444/wd/hub"]' -./vendor/bin/phpunit -c core --testsuite functional-javascript +export MINK_DRIVER_ARGS_WEBDRIVER='["chrome", null, "http://localhost:4444/wd/hub"]'; +./vendor/bin/phpunit -c core --testsuite functional-javascript; ``` * It is possible to use alternate browsers if the required dependencies are installed. For example to use Firefox: ``` -export MINK_DRIVER_ARGS_WEBDRIVER='["firefox", null, "http://localhost:4444/wd/hub"]' -./vendor/bin/phpunit -c core --testsuite functional-javascript +export MINK_DRIVER_ARGS_WEBDRIVER='["firefox", null, "http://localhost:4444/wd/hub"]'; +./vendor/bin/phpunit -c core --testsuite functional-javascript; ``` * To force all BrowserTestBase (including legacy JavascriptTestBase) tests to use webdriver: ``` -export MINK_DRIVER_CLASS='Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver' -./vendor/bin/phpunit -c core --testsuite functional-javascript +export MINK_DRIVER_CLASS='Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver'; +./vendor/bin/phpunit -c core --testsuite functional-javascript; ``` ## Running legacy javascript tests @@ -93,7 +93,7 @@ have to install and start PhantomJS. * Then you can run the test: ``` -./vendor/bin/phpunit -c core --testsuite functional-javascript +./vendor/bin/phpunit -c core --testsuite functional-javascript; ``` ## Running tests with a different user @@ -102,10 +102,10 @@ If the default user is e.g. `www-data`, the above functional tests will have to be invoked with sudo instead: ``` -export SIMPLETEST_DB='mysql://root@localhost/dev_d8' -export SIMPLETEST_BASE_URL='http://d8.dev' -sudo -u www-data -E ./vendor/bin/phpunit -c core --testsuite functional -sudo -u www-data -E ./vendor/bin/phpunit -c core --testsuite functional-javascript +export SIMPLETEST_DB='mysql://root@localhost/dev_d8'; +export SIMPLETEST_BASE_URL='http://d8.dev'; +sudo -u www-data -E ./vendor/bin/phpunit -c core --testsuite functional; +sudo -u www-data -E ./vendor/bin/phpunit -c core --testsuite functional-javascript; ``` ## Nightwatch tests -- GitLab