From 814f5a969f0a3f310fddc086b1c0db934d01a1f8 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Tue, 18 Nov 2025 14:30:01 +0500 Subject: [PATCH 01/18] feat: Adding support Multimodal embedders. --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 22644da0..a4fac860 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -58,9 +58,9 @@ # This value contains a list of modules to be mocked up. autodoc_mock_imports = ["camel_converter"] -html_title = 'Meilisearch Python | Documentation' +html_title = "Meilisearch Python | Documentation" # Add Fathom analytics script html_js_files = [ - ("https://cdn.usefathom.com/script.js", { "data-site": "QNBPJXIV", "defer": "defer" }) + ("https://cdn.usefathom.com/script.js", {"data-site": "QNBPJXIV", "defer": "defer"}) ] From 2aa6057cacf26695d7a2de1d7360416421b94e98 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 19 Nov 2025 12:30:30 +0500 Subject: [PATCH 02/18] feat: Adding support for index renaming. --- meilisearch/client.py | 68 ++++++++++++++++++++++++++++++------------- meilisearch/index.py | 16 ++++++++++ 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/meilisearch/client.py b/meilisearch/client.py index 22b1c70f..ba490176 100644 --- a/meilisearch/client.py +++ b/meilisearch/client.py @@ -531,27 +531,6 @@ def create_snapshot(self) -> TaskInfo: return TaskInfo(**task) - def swap_indexes(self, parameters: List[Mapping[str, List[str]]]) -> TaskInfo: - """Swap two indexes. - - Parameters - ---------- - indexes: - List of indexes to swap (ex: [{"indexes": ["indexA", "indexB"]}). - - Returns - ------- - task_info: - TaskInfo instance containing information about a task to track the progress of an asynchronous process. - https://www.meilisearch.com/docs/reference/api/tasks#get-one-task - - Raises - ------ - MeilisearchApiError - An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://www.meilisearch.com/docs/reference/errors/error_codes#meilisearch-errors - """ - return TaskInfo(**self.http.post(self.config.paths.swap, parameters)) - def get_tasks(self, parameters: Optional[MutableMapping[str, Any]] = None) -> TaskResults: """Get all tasks. @@ -996,3 +975,50 @@ def _valid_uuid(uuid: str) -> bool: ) match = uuid4hex.match(uuid) return bool(match) + + def get_experimental_features(self) -> dict: + """Get current experimental features settings.""" + return self.http.get(self.config.paths.experimental_features) + + def update_experimental_features(self, features: dict) -> dict: + """Update experimental features settings.""" + return self.http.patch(self.config.paths.experimental_features, body=features) + + def enable_multimodal(self) -> dict: + """Enable multimodal experimental feature.""" + return self.update_experimental_features({"multimodal": True}) + + def disable_multimodal(self) -> dict: + """Disable multimodal experimental feature.""" + return self.update_experimental_features({"multimodal": False}) + + def swap_indexes(self, swaps: List[Dict[str, list]]) -> TaskInfo: + """ + Swap or rename indexes in Meilisearch. + This method accepts a list of swap instructions. + Each instruction must contain: + + - "indexes": a list of exactly two index UIDs + - "rename" (optional): boolean flag + * False (default): swap two existing indexes + * True: rename index_a → index_b (index_b must NOT exist) + + A single request can perform multiple swap or rename operations. + All operations in the request are atomic—either all succeed, or none do. + + Example: + [ + {"indexes": ["A", "B"]}, + {"indexes": ["C_tmp", "C"], "rename": True} + ] + + Returns + ------- + TaskInfo + Task information for the asynchronous swap/rename task. + """ + if not swaps or not all("indexes" in s and len(s["indexes"]) == 2 for s in swaps): + raise ValueError("Each swap must contain exactly two index UIDs under 'indexes' key.") + + task = self.http.post("/swap-indexes",swaps) + return TaskInfo(**task) diff --git a/meilisearch/index.py b/meilisearch/index.py index 0207f1d5..60b0c685 100644 --- a/meilisearch/index.py +++ b/meilisearch/index.py @@ -2347,3 +2347,19 @@ def compact(self) -> TaskInfo: path = f"{self.config.paths.index}/{self.uid}/compact" task = self.http.post(path) return TaskInfo(**task) + + def rename_index(self, new_name: str) -> TaskInfo: + """ + Rename the current Meilisearch index. + + :param new_name: The new UID for the index. + :return: TaskInfo with information about the rename operation. + """ + payload = {"uid": new_name} + + task = self.http.patch( + f"{self.config.paths.index}/{self.uid}", + payload, + ) + + return TaskInfo(**task) From 97fb11e41a260f64feb71afe4eb5f18bcc4a7f2c Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Mon, 17 Nov 2025 16:43:53 +0500 Subject: [PATCH 03/18] feat: Adding support Multimodal embedders. --- .code-samples.meilisearch.yaml | 14 +++++ meilisearch/client.py | 72 ++++++++++------------ meilisearch/config.py | 1 + meilisearch/models/embedders.py | 6 ++ tests/client/test_experimental_features.py | 55 +++++++++++++++++ 5 files changed, 109 insertions(+), 39 deletions(-) create mode 100644 tests/client/test_experimental_features.py diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index b919b4f7..09661514 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -767,3 +767,17 @@ get_batch_1: |- client.get_batch(BATCH_UID) get_similar_post_1: |- client.index("INDEX_NAME").get_similar_documents({"id": "TARGET_DOCUMENT_ID", "embedder": "default"}) +search_parameter_reference_media_1: |- + client.index('movies_fragments').search( + "", + { + "media": { + "image_url": "https://image.tmdb.org/t/p/w500/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg" + }, + "hybrid": { + "embedder": "voyage", + "semanticRatio": 1.0 + }, + "limit": 3 + } + ) diff --git a/meilisearch/client.py b/meilisearch/client.py index ba490176..46ac03f0 100644 --- a/meilisearch/client.py +++ b/meilisearch/client.py @@ -531,6 +531,27 @@ def create_snapshot(self) -> TaskInfo: return TaskInfo(**task) + def swap_indexes(self, parameters: List[Mapping[str, List[str]]]) -> TaskInfo: + """Swap two indexes. + + Parameters + ---------- + indexes: + List of indexes to swap (ex: [{"indexes": ["indexA", "indexB"]}). + + Returns + ------- + task_info: + TaskInfo instance containing information about a task to track the progress of an asynchronous process. + https://www.meilisearch.com/docs/reference/api/tasks#get-one-task + + Raises + ------ + MeilisearchApiError + An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://www.meilisearch.com/docs/reference/errors/error_codes#meilisearch-errors + """ + return TaskInfo(**self.http.post(self.config.paths.swap, parameters)) + def get_tasks(self, parameters: Optional[MutableMapping[str, Any]] = None) -> TaskResults: """Get all tasks. @@ -977,48 +998,21 @@ def _valid_uuid(uuid: str) -> bool: return bool(match) def get_experimental_features(self) -> dict: - """Get current experimental features settings.""" + """ + Retrieve the current settings for all experimental features. + Returns: + dict: A mapping of feature names to their enabled/disabled state. + """ return self.http.get(self.config.paths.experimental_features) def update_experimental_features(self, features: dict) -> dict: - """Update experimental features settings.""" - return self.http.patch(self.config.paths.experimental_features, body=features) - - def enable_multimodal(self) -> dict: - """Enable multimodal experimental feature.""" - return self.update_experimental_features({"multimodal": True}) - - def disable_multimodal(self) -> dict: - """Disable multimodal experimental feature.""" - return self.update_experimental_features({"multimodal": False}) - - def swap_indexes(self, swaps: List[Dict[str, list]]) -> TaskInfo: """ - Swap or rename indexes in Meilisearch. - This method accepts a list of swap instructions. - Each instruction must contain: - - - "indexes": a list of exactly two index UIDs - - "rename" (optional): boolean flag - * False (default): swap two existing indexes - * True: rename index_a → index_b (index_b must NOT exist) + Update one or more experimental features. - A single request can perform multiple swap or rename operations. - All operations in the request are atomic—either all succeed, or none do. - - Example: - [ - {"indexes": ["A", "B"]}, - {"indexes": ["C_tmp", "C"], "rename": True} - ] - - Returns - ------- - TaskInfo - Task information for the asynchronous swap/rename task. + Args: + features (dict): A dictionary mapping feature names to booleans. + For example, {"multimodal": True} to enable multimodal. + Returns: + dict: The updated experimental features settings. """ - if not swaps or not all("indexes" in s and len(s["indexes"]) == 2 for s in swaps): - raise ValueError("Each swap must contain exactly two index UIDs under 'indexes' key.") - - task = self.http.post("/swap-indexes",swaps) - return TaskInfo(**task) + return self.http.patch(self.config.paths.experimental_features, body=features) diff --git a/meilisearch/config.py b/meilisearch/config.py index 1891a2d5..a5619094 100644 --- a/meilisearch/config.py +++ b/meilisearch/config.py @@ -47,6 +47,7 @@ class Paths: localized_attributes = "localized-attributes" edit = "edit" network = "network" + experimental_features = "experimental-features" def __init__( self, diff --git a/meilisearch/models/embedders.py b/meilisearch/models/embedders.py index 9dcd5d00..71380ee4 100644 --- a/meilisearch/models/embedders.py +++ b/meilisearch/models/embedders.py @@ -167,6 +167,10 @@ class RestEmbedder(CamelBase): Template defining the data Meilisearch sends to the embedder document_template_max_bytes: Optional[int] Maximum allowed size of rendered document template (defaults to 400) + indexing_fragments: Optional[Dict[str, Dict[str, str]]] + Defines how to fragment documents for indexing (multi-modal search) + search_fragments: Optional[Dict[str, Dict[str, str]]] + Defines how to fragment search queries (multi-modal search) request: Dict[str, Any] A JSON value representing the request Meilisearch makes to the remote embedder response: Dict[str, Any] @@ -185,6 +189,8 @@ class RestEmbedder(CamelBase): dimensions: Optional[int] = None document_template: Optional[str] = None document_template_max_bytes: Optional[int] = None + indexing_fragments: Optional[Dict[str, Dict[str, str]]] = None + search_fragments: Optional[Dict[str, Dict[str, str]]] = None request: Dict[str, Any] response: Dict[str, Any] headers: Optional[Dict[str, str]] = None diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py new file mode 100644 index 00000000..b0564df6 --- /dev/null +++ b/tests/client/test_experimental_features.py @@ -0,0 +1,55 @@ +"""Tests for experimental features API.""" + + +def test_get_experimental_features(client): + """Test getting experimental features.""" + response = client.get_experimental_features() + assert isinstance(response, dict) + assert "multimodal" in response or "vectorStoreSetting" in response + + +def test_update_experimental_features(client): + """Test updating experimental features.""" + # Enable multimodal + response = client.update_experimental_features({"multimodal": True}) + assert isinstance(response, dict) + assert response.get("multimodal") is True + + # Disable multimodal + response = client.update_experimental_features({"multimodal": False}) + assert isinstance(response, dict) + assert response.get("multimodal") is False + + +def test_enable_multimodal(client): + """Test enabling multimodal experimental feature.""" + response = client.enable_multimodal() + assert isinstance(response, dict) + assert response.get("multimodal") is True + + # Verify it's enabled + features = client.get_experimental_features() + assert features.get("multimodal") is True + + +def test_disable_multimodal(client): + """Test disabling multimodal experimental feature.""" + # First enable it + client.enable_multimodal() + + # Then disable it + response = client.disable_multimodal() + assert isinstance(response, dict) + assert response.get("multimodal") is False + + # Verify it's disabled + features = client.get_experimental_features() + assert features.get("multimodal") is False + + +def test_update_multiple_experimental_features(client): + """Test updating multiple experimental features at once.""" + response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) + assert isinstance(response, dict) + # At least one should be accepted (depending on Meilisearch version) + assert "multimodal" in response or "vectorStoreSetting" in response From 50a568961fb9b216b3f20bf1b3bad3c0092c5892 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Mon, 24 Nov 2025 18:37:48 +0500 Subject: [PATCH 04/18] feat: Adding support Multimodal embedders. --- meilisearch/index.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/meilisearch/index.py b/meilisearch/index.py index a6570119..cfbff045 100644 --- a/meilisearch/index.py +++ b/meilisearch/index.py @@ -2354,19 +2354,3 @@ def compact(self) -> TaskInfo: path = f"{self.config.paths.index}/{self.uid}/compact" task = self.http.post(path) return TaskInfo(**task) - - def rename_index(self, new_name: str) -> TaskInfo: - """ - Rename the current Meilisearch index. - - :param new_name: The new UID for the index. - :return: TaskInfo with information about the rename operation. - """ - payload = {"uid": new_name} - - task = self.http.patch( - f"{self.config.paths.index}/{self.uid}", - payload, - ) - - return TaskInfo(**task) From c72f12d2d6e40bf597d1bdfee6c46dc6341f50e1 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Mon, 24 Nov 2025 18:44:57 +0500 Subject: [PATCH 05/18] feat: Adding support Multimodal embedders. --- tests/client/test_experimental_features.py | 220 +++++++++++++++++---- tests/conftest.py | 39 ++++ 2 files changed, 218 insertions(+), 41 deletions(-) diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py index b0564df6..caa9cae4 100644 --- a/tests/client/test_experimental_features.py +++ b/tests/client/test_experimental_features.py @@ -1,55 +1,193 @@ -"""Tests for experimental features API.""" +# pylint: disable=redefined-outer-name +"""Tests for indexingFragments and searchFragments in embedders (multimodal feature). +These tests validate CONFIGURATION ONLY, not AI functionality. +They only ensure fragments can be configured and stored in Meilisearch. +No AI calls or document indexing/searching occurs. +""" -def test_get_experimental_features(client): - """Test getting experimental features.""" - response = client.get_experimental_features() - assert isinstance(response, dict) - assert "multimodal" in response or "vectorStoreSetting" in response +import pytest +DUMMY_URL = "http://localhost:8000/embed" +TEST_MODEL = "test-model" +MULTIMODAL_MODEL = "multimodal" -def test_update_experimental_features(client): - """Test updating experimental features.""" - # Enable multimodal - response = client.update_experimental_features({"multimodal": True}) - assert isinstance(response, dict) - assert response.get("multimodal") is True - # Disable multimodal - response = client.update_experimental_features({"multimodal": False}) - assert isinstance(response, dict) - assert response.get("multimodal") is False +def apply_embedders(index, config): + """Helper to update embedders and wait for task completion.""" + response = index.update_embedders(config) + update = index.wait_for_task(response.task_uid) + assert update.status == "succeeded" + return index.get_embedders() -def test_enable_multimodal(client): - """Test enabling multimodal experimental feature.""" - response = client.enable_multimodal() - assert isinstance(response, dict) - assert response.get("multimodal") is True +def test_rest_embedder_with_fragments(empty_index, multimodal_enabled): + """Tests that REST embedder can be configured with indexingFragments and searchFragments.""" + index = empty_index() - # Verify it's enabled - features = client.get_experimental_features() - assert features.get("multimodal") is True + config = { + "rest_fragments": { + "source": "rest", + "url": DUMMY_URL, + "apiKey": "test-key", + "dimensions": 512, + "indexingFragments": {"text": {"value": "{{doc.title}} - {{doc.description}}"}}, + "searchFragments": {"text": {"value": "{{fragment}}"}}, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + "headers": {"Authorization": "Bearer test-key"}, + } + } + embedders = apply_embedders(index, config) -def test_disable_multimodal(client): - """Test disabling multimodal experimental feature.""" - # First enable it - client.enable_multimodal() + e = embedders.embedders["rest_fragments"] + assert e.source == "rest" + assert e.url == DUMMY_URL + assert e.dimensions == 512 + assert e.indexing_fragments is not None + assert e.search_fragments is not None - # Then disable it - response = client.disable_multimodal() - assert isinstance(response, dict) - assert response.get("multimodal") is False - # Verify it's disabled - features = client.get_experimental_features() - assert features.get("multimodal") is False +def test_rest_embedder_with_multiple_fragments(empty_index, multimodal_enabled): + """Tests REST embedder with multiple fragment types.""" + index = empty_index() + config = { + "multi_fragments": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 1024, + "indexingFragments": { + "text": {"value": "{{doc.title}}"}, + "description": {"value": "{{doc.overview}}"} + }, + "searchFragments": { + "text": {"value": "{{fragment}}"}, + "description": {"value": "{{fragment}}"} + }, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } -def test_update_multiple_experimental_features(client): - """Test updating multiple experimental features at once.""" - response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) - assert isinstance(response, dict) - # At least one should be accepted (depending on Meilisearch version) - assert "multimodal" in response or "vectorStoreSetting" in response + embedders = apply_embedders(index, config) + + e = embedders.embedders["multi_fragments"] + assert e.source == "rest" + assert len(e.indexing_fragments) >= 1 + assert len(e.search_fragments) >= 1 + + +def test_fragments_without_document_template(empty_index, multimodal_enabled): + """Tests fragments can be used without documentTemplate.""" + index = empty_index() + + config = { + "fragments_only": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 512, + "indexingFragments": {"text": {"value": "{{doc.content}}"}}, + "searchFragments": {"text": {"value": "{{fragment}}"}}, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } + + embedders = apply_embedders(index, config) + e = embedders.embedders["fragments_only"] + assert e.document_template is None + assert e.indexing_fragments is not None + assert e.search_fragments is not None + + +def test_fragments_require_multimodal_feature(empty_index): + """Tests fragments require multimodal feature enabled.""" + index = empty_index() + + config = { + "test": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 512, + "indexingFragments": {"text": {"value": "{{doc.title}}"}}, + "searchFragments": {"text": {"value": "{{fragment}}"}}, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } + + # May succeed or fail depending on server config; both are acceptable + try: + embedders = apply_embedders(index, config) + assert embedders.embedders["test"].indexing_fragments is not None + except Exception: + pass + + +def test_update_fragments_separately(empty_index, multimodal_enabled): + """Tests updating indexingFragments and searchFragments separately.""" + index = empty_index() + + initial_config = { + "updatable": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 512, + "indexingFragments": {"text": {"value": "{{doc.title}}"}}, + "searchFragments": {"text": {"value": "{{fragment}}"}}, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } + + apply_embedders(index, initial_config) + + updated_config = { + "updatable": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 512, + "indexingFragments": {"text": {"value": "{{doc.title}} - {{doc.description}}"}}, + "searchFragments": {"text": {"value": "{{fragment}}"}}, + "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } + + embedders = apply_embedders(index, updated_config) + assert embedders.embedders["updatable"].indexing_fragments is not None + + +def test_profile_picture_and_title_fragments(empty_index, multimodal_enabled): + """Tests real-world use case: user profiles with picture and title.""" + index = empty_index() + + config = { + "user_profile": { + "source": "rest", + "url": DUMMY_URL, + "dimensions": 768, + "indexingFragments": { + "user_name": {"value": "{{doc.name}}"}, + "avatar": {"value": "{{doc.profile_picture_url}}"}, + "biography": {"value": "{{doc.bio}}"}, + }, + "searchFragments": { + "user_name": {"value": "{{fragment}}"}, + "avatar": {"value": "{{fragment}}"}, + "biography": {"value": "{{fragment}}"}, + }, + "request": {"input": ["{{fragment}}"], "model": MULTIMODAL_MODEL}, + "response": {"data": [{"embedding": "{{embedding}}"}]}, + } + } + + embedders = apply_embedders(index, config) + e = embedders.embedders["user_profile"] + + assert e.source == "rest" + expected_keys = {"user_name", "avatar", "biography"} + assert set(e.indexing_fragments.keys()) == expected_keys + assert set(e.search_fragments.keys()) == expected_keys diff --git a/tests/conftest.py b/tests/conftest.py index 8387084c..d122775b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -308,3 +308,42 @@ def enable_network_options(): json={"network": False}, timeout=10, ) + + +@fixture +def experimental_features(): + """ + Fixture to temporarily set experimental features for a test. + + Usage: + def test_example(experimental_features): + experimental_features({"multimodal": True, "new_ui": True}) + """ + def _set_features(features: dict): + # Enable features + requests.patch( + f"{common.BASE_URL}/experimental-features", + headers={"Authorization": f"Bearer {common.MASTER_KEY}"}, + json=features, + timeout=10, + ) + # Return features so we can reset later + return features + + yield _set_features + + # Reset features after the test + def _reset(features: dict): + # Create a reset payload inside the function + reset_payload = {key: False for key in features.keys()} + requests.patch( + f"{common.BASE_URL}/experimental-features", + headers={"Authorization": f"Bearer {common.MASTER_KEY}"}, + json=reset_payload, + timeout=10, + ) + +@fixture +def multimodal_enabled(experimental_features): + """Convenience fixture: enables multimodal experimental feature.""" + experimental_features({"multimodal": True}) From edf17807533d5947da14204eaba597804cc9e449 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Mon, 24 Nov 2025 19:18:21 +0500 Subject: [PATCH 06/18] feat: Adding support Multimodal embedders. --- tests/conftest.py | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index db543c2d..b9aeed65 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -323,42 +323,3 @@ def enable_network_options(): json={"network": False}, timeout=10, ) - - -@fixture -def experimental_features(): - """ - Fixture to temporarily set experimental features for a test. - - Usage: - def test_example(experimental_features): - experimental_features({"multimodal": True, "new_ui": True}) - """ - def _set_features(features: dict): - # Enable features - requests.patch( - f"{common.BASE_URL}/experimental-features", - headers={"Authorization": f"Bearer {common.MASTER_KEY}"}, - json=features, - timeout=10, - ) - # Return features so we can reset later - return features - - yield _set_features - - # Reset features after the test - def _reset(features: dict): - # Create a reset payload inside the function - reset_payload = {key: False for key in features.keys()} - requests.patch( - f"{common.BASE_URL}/experimental-features", - headers={"Authorization": f"Bearer {common.MASTER_KEY}"}, - json=reset_payload, - timeout=10, - ) - -@fixture -def multimodal_enabled(experimental_features): - """Convenience fixture: enables multimodal experimental feature.""" - experimental_features({"multimodal": True}) From 6b40c1aab8f095d06131194f7f3cf7a652c93ffc Mon Sep 17 00:00:00 2001 From: Awais Qureshi Date: Mon, 24 Nov 2025 19:29:57 +0500 Subject: [PATCH 07/18] fixing tests --- tests/client/test_experimental_features.py | 208 +++------------------ 1 file changed, 22 insertions(+), 186 deletions(-) diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py index caa9cae4..de9bcf8f 100644 --- a/tests/client/test_experimental_features.py +++ b/tests/client/test_experimental_features.py @@ -1,193 +1,29 @@ -# pylint: disable=redefined-outer-name -"""Tests for indexingFragments and searchFragments in embedders (multimodal feature). +"""Tests for experimental features API.""" -These tests validate CONFIGURATION ONLY, not AI functionality. -They only ensure fragments can be configured and stored in Meilisearch. -No AI calls or document indexing/searching occurs. -""" -import pytest +def test_get_experimental_features(client): + """Test getting experimental features.""" + response = client.get_experimental_features() + assert isinstance(response, dict) + assert "multimodal" in response or "vectorStoreSetting" in response -DUMMY_URL = "http://localhost:8000/embed" -TEST_MODEL = "test-model" -MULTIMODAL_MODEL = "multimodal" +def test_update_experimental_features(client): + """Test updating experimental features.""" + # Enable multimodal + response = client.update_experimental_features({"multimodal": True}) + assert isinstance(response, dict) + assert response.get("multimodal") is True -def apply_embedders(index, config): - """Helper to update embedders and wait for task completion.""" - response = index.update_embedders(config) - update = index.wait_for_task(response.task_uid) - assert update.status == "succeeded" - return index.get_embedders() + # Disable multimodal + response = client.update_experimental_features({"multimodal": False}) + assert isinstance(response, dict) + assert response.get("multimodal") is False -def test_rest_embedder_with_fragments(empty_index, multimodal_enabled): - """Tests that REST embedder can be configured with indexingFragments and searchFragments.""" - index = empty_index() - - config = { - "rest_fragments": { - "source": "rest", - "url": DUMMY_URL, - "apiKey": "test-key", - "dimensions": 512, - "indexingFragments": {"text": {"value": "{{doc.title}} - {{doc.description}}"}}, - "searchFragments": {"text": {"value": "{{fragment}}"}}, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - "headers": {"Authorization": "Bearer test-key"}, - } - } - - embedders = apply_embedders(index, config) - - e = embedders.embedders["rest_fragments"] - assert e.source == "rest" - assert e.url == DUMMY_URL - assert e.dimensions == 512 - assert e.indexing_fragments is not None - assert e.search_fragments is not None - - -def test_rest_embedder_with_multiple_fragments(empty_index, multimodal_enabled): - """Tests REST embedder with multiple fragment types.""" - index = empty_index() - - config = { - "multi_fragments": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 1024, - "indexingFragments": { - "text": {"value": "{{doc.title}}"}, - "description": {"value": "{{doc.overview}}"} - }, - "searchFragments": { - "text": {"value": "{{fragment}}"}, - "description": {"value": "{{fragment}}"} - }, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - embedders = apply_embedders(index, config) - - e = embedders.embedders["multi_fragments"] - assert e.source == "rest" - assert len(e.indexing_fragments) >= 1 - assert len(e.search_fragments) >= 1 - - -def test_fragments_without_document_template(empty_index, multimodal_enabled): - """Tests fragments can be used without documentTemplate.""" - index = empty_index() - - config = { - "fragments_only": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 512, - "indexingFragments": {"text": {"value": "{{doc.content}}"}}, - "searchFragments": {"text": {"value": "{{fragment}}"}}, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - embedders = apply_embedders(index, config) - e = embedders.embedders["fragments_only"] - assert e.document_template is None - assert e.indexing_fragments is not None - assert e.search_fragments is not None - - -def test_fragments_require_multimodal_feature(empty_index): - """Tests fragments require multimodal feature enabled.""" - index = empty_index() - - config = { - "test": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 512, - "indexingFragments": {"text": {"value": "{{doc.title}}"}}, - "searchFragments": {"text": {"value": "{{fragment}}"}}, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - # May succeed or fail depending on server config; both are acceptable - try: - embedders = apply_embedders(index, config) - assert embedders.embedders["test"].indexing_fragments is not None - except Exception: - pass - - -def test_update_fragments_separately(empty_index, multimodal_enabled): - """Tests updating indexingFragments and searchFragments separately.""" - index = empty_index() - - initial_config = { - "updatable": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 512, - "indexingFragments": {"text": {"value": "{{doc.title}}"}}, - "searchFragments": {"text": {"value": "{{fragment}}"}}, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - apply_embedders(index, initial_config) - - updated_config = { - "updatable": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 512, - "indexingFragments": {"text": {"value": "{{doc.title}} - {{doc.description}}"}}, - "searchFragments": {"text": {"value": "{{fragment}}"}}, - "request": {"input": ["{{fragment}}"], "model": TEST_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - embedders = apply_embedders(index, updated_config) - assert embedders.embedders["updatable"].indexing_fragments is not None - - -def test_profile_picture_and_title_fragments(empty_index, multimodal_enabled): - """Tests real-world use case: user profiles with picture and title.""" - index = empty_index() - - config = { - "user_profile": { - "source": "rest", - "url": DUMMY_URL, - "dimensions": 768, - "indexingFragments": { - "user_name": {"value": "{{doc.name}}"}, - "avatar": {"value": "{{doc.profile_picture_url}}"}, - "biography": {"value": "{{doc.bio}}"}, - }, - "searchFragments": { - "user_name": {"value": "{{fragment}}"}, - "avatar": {"value": "{{fragment}}"}, - "biography": {"value": "{{fragment}}"}, - }, - "request": {"input": ["{{fragment}}"], "model": MULTIMODAL_MODEL}, - "response": {"data": [{"embedding": "{{embedding}}"}]}, - } - } - - embedders = apply_embedders(index, config) - e = embedders.embedders["user_profile"] - - assert e.source == "rest" - expected_keys = {"user_name", "avatar", "biography"} - assert set(e.indexing_fragments.keys()) == expected_keys - assert set(e.search_fragments.keys()) == expected_keys +def test_update_multiple_experimental_features(client): + """Test updating multiple experimental features at once.""" + response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) + assert isinstance(response, dict) + # At least one should be accepted (depending on Meilisearch version) + assert "multimodal" in response or "vectorStoreSetting" in response From f3a9cf2ff4846eff5f7c373ee856d40ebfc56f64 Mon Sep 17 00:00:00 2001 From: Awais Qureshi Date: Mon, 24 Nov 2025 19:33:16 +0500 Subject: [PATCH 08/18] fixing linting --- .code-samples.meilisearch.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index deb31979..51cb2851 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -797,4 +797,3 @@ webhooks_patch_1: |- }) webhooks_delete_1: |- client.delete_webhook('WEBHOOK_UID') - From aac34cf37474a62abe1bf8f860c5211128301d88 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:25:38 +0500 Subject: [PATCH 09/18] feat: Adding support Multimodal embedders. --- .code-samples.meilisearch.yaml | 13 +++++-- meilisearch/client.py | 44 +++++++++++++++------- meilisearch/models/embedders.py | 14 ++++--- tests/client/test_experimental_features.py | 5 ++- 4 files changed, 52 insertions(+), 24 deletions(-) diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index 51cb2851..bf7062f3 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -769,16 +769,21 @@ get_similar_post_1: |- client.index("INDEX_NAME").get_similar_documents({"id": "TARGET_DOCUMENT_ID", "embedder": "default"}) search_parameter_reference_media_1: |- client.index('movies_fragments').search( - "", + "a futuristic space movie", { "media": { - "image_url": "https://image.tmdb.org/t/p/w500/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg" + "textAndPoster": { + "text": "a futuristic space movie", + "image": { + "mime": "image/jpeg", + "data": "BASE64_ENCODED_IMAGE_DATA" + } + } }, "hybrid": { - "embedder": "voyage", + "embedder": "multimodal", "semanticRatio": 1.0 }, - "limit": 3 } ) webhooks_get_1: |- diff --git a/meilisearch/client.py b/meilisearch/client.py index 2c75775b..be11faf6 100644 --- a/meilisearch/client.py +++ b/meilisearch/client.py @@ -1111,22 +1111,40 @@ def _valid_uuid(uuid: str) -> bool: match = uuid4hex.match(uuid) return bool(match) - def get_experimental_features(self) -> dict: - """ - Retrieve the current settings for all experimental features. - Returns: - dict: A mapping of feature names to their enabled/disabled state. + def get_experimental_features(self) -> Dict[str, Any]: + """Retrieve the current settings for all experimental features. + + Returns + ------- + features: + A dictionary mapping feature names to their enabled/disabled state. + For example: {"multimodal": True, "vectorStore": False} + + Raises + ------ + MeilisearchApiError + An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://www.meilisearch.com/docs/reference/errors/error_codes#meilisearch-errors """ return self.http.get(self.config.paths.experimental_features) - def update_experimental_features(self, features: dict) -> dict: - """ - Update one or more experimental features. + def update_experimental_features(self, features: Dict[str, bool]) -> Dict[str, Any]: + """Update one or more experimental features. - Args: - features (dict): A dictionary mapping feature names to booleans. - For example, {"multimodal": True} to enable multimodal. - Returns: - dict: The updated experimental features settings. + Parameters + ---------- + features: + A dictionary mapping feature names to booleans. + For example, {"multimodal": True} to enable multimodal, + or {"multimodal": True, "vectorStore": False} to update multiple features. + + Returns + ------- + features: + The updated experimental features settings as a dictionary. + + Raises + ------ + MeilisearchApiError + An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://www.meilisearch.com/docs/reference/errors/error_codes#meilisearch-errors """ return self.http.patch(self.config.paths.experimental_features, body=features) diff --git a/meilisearch/models/embedders.py b/meilisearch/models/embedders.py index 71380ee4..a58125ea 100644 --- a/meilisearch/models/embedders.py +++ b/meilisearch/models/embedders.py @@ -167,10 +167,12 @@ class RestEmbedder(CamelBase): Template defining the data Meilisearch sends to the embedder document_template_max_bytes: Optional[int] Maximum allowed size of rendered document template (defaults to 400) - indexing_fragments: Optional[Dict[str, Dict[str, str]]] - Defines how to fragment documents for indexing (multi-modal search) - search_fragments: Optional[Dict[str, Dict[str, str]]] - Defines how to fragment search queries (multi-modal search) + indexing_fragments: Optional[Dict[str, Dict[str, Any]]] + Defines how to fragment documents for indexing (multi-modal search). + Fragments can contain complex nested structures (e.g., lists of objects). + search_fragments: Optional[Dict[str, Dict[str, Any]]] + Defines how to fragment search queries (multi-modal search). + Fragments can contain complex nested structures (e.g., lists of objects). request: Dict[str, Any] A JSON value representing the request Meilisearch makes to the remote embedder response: Dict[str, Any] @@ -189,8 +191,8 @@ class RestEmbedder(CamelBase): dimensions: Optional[int] = None document_template: Optional[str] = None document_template_max_bytes: Optional[int] = None - indexing_fragments: Optional[Dict[str, Dict[str, str]]] = None - search_fragments: Optional[Dict[str, Dict[str, str]]] = None + indexing_fragments: Optional[Dict[str, Dict[str, Any]]] = None + search_fragments: Optional[Dict[str, Dict[str, Any]]] = None request: Dict[str, Any] response: Dict[str, Any] headers: Optional[Dict[str, str]] = None diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py index de9bcf8f..058abdc4 100644 --- a/tests/client/test_experimental_features.py +++ b/tests/client/test_experimental_features.py @@ -5,6 +5,7 @@ def test_get_experimental_features(client): """Test getting experimental features.""" response = client.get_experimental_features() assert isinstance(response, dict) + # Check that at least one known experimental feature is present assert "multimodal" in response or "vectorStoreSetting" in response @@ -23,7 +24,9 @@ def test_update_experimental_features(client): def test_update_multiple_experimental_features(client): """Test updating multiple experimental features at once.""" - response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) + response = client.update_experimental_features( + {"multimodal": True, "vectorStoreSetting": True} + ) assert isinstance(response, dict) # At least one should be accepted (depending on Meilisearch version) assert "multimodal" in response or "vectorStoreSetting" in response From 4e155445ed91c8a88d9d07606b6cee2a101aacdd Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:26:14 +0500 Subject: [PATCH 10/18] feat: Adding support Multimodal embedders. --- tests/client/test_experimental_features.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py index 058abdc4..2d554a0a 100644 --- a/tests/client/test_experimental_features.py +++ b/tests/client/test_experimental_features.py @@ -24,9 +24,7 @@ def test_update_experimental_features(client): def test_update_multiple_experimental_features(client): """Test updating multiple experimental features at once.""" - response = client.update_experimental_features( - {"multimodal": True, "vectorStoreSetting": True} - ) + response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) assert isinstance(response, dict) # At least one should be accepted (depending on Meilisearch version) assert "multimodal" in response or "vectorStoreSetting" in response From e2cfbc4d65269e4c14811ddc5dd47f878c19a1dd Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:26:51 +0500 Subject: [PATCH 11/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 297 ++++++++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 tests/client/test_multimodal.py diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py new file mode 100644 index 00000000..77df040d --- /dev/null +++ b/tests/client/test_multimodal.py @@ -0,0 +1,297 @@ +import base64 +import json +import os +from pathlib import Path + +import pytest +import requests +from meilisearch import Client +from tests import common + +# ---------------- ENV ---------------- +VOYAGE_API_KEY = os.getenv("VOYAGE_API_KEY") + +INDEX_UID = "multi-modal-search-test" +EMBEDDER_NAME = "multimodal" + +# ---------------- Paths ---------------- +# datasets folder (movies.json) +DATASETS_DIR = Path(__file__).resolve().parent.parent.parent / "datasets" +MOVIES = json.loads((DATASETS_DIR / "movies.json").read_text()) + +# fixtures folder (images) +FIXTURES_DIR = Path(__file__).resolve().parent.parent / "fixtures" + + +# ---------------- Helper ---------------- +def load_image_base64(file_name: str) -> str: + """ + Load an image from the fixtures folder and return as base64 string. + """ + file_path = FIXTURES_DIR / file_name + encoded = base64.b64encode(file_path.read_bytes()).decode("utf-8") + return encoded + + +# ---------------- Embedder Config ---------------- +# Match JS test exactly - fragments have complex nested objects +EMBEDDER_CONFIG = { + "source": "rest", + "url": "https://api.voyageai.com/v1/multimodalembeddings", + "apiKey": VOYAGE_API_KEY, + "dimensions": 1024, + "indexingFragments": { + "textAndPoster": { + "value": { + "content": [ + { + "type": "text", + "text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncatewords:20}}.", + }, + { + "type": "image_url", + "image_url": "{{doc.poster}}", + }, + ], + }, + }, + "text": { + "value": { + "content": [ + { + "type": "text", + "text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncatewords:20}}.", + }, + ], + }, + }, + "poster": { + "value": { + "content": [ + { + "type": "image_url", + "image_url": "{{doc.poster}}", + }, + ], + }, + }, + }, + "searchFragments": { + "textAndPoster": { + "value": { + "content": [ + { + "type": "text", + "text": "{{media.textAndPoster.text}}", + }, + { + "type": "image_base64", + "image_base64": "data:{{media.textAndPoster.image.mime}};base64,{{media.textAndPoster.image.data}}", + }, + ], + }, + }, + "text": { + "value": { + "content": [ + { + "type": "text", + "text": "{{media.text.text}}", + }, + ], + }, + }, + "poster": { + "value": { + "content": [ + { + "type": "image_url", + "image_url": "{{media.poster.poster}}", + }, + ], + }, + }, + }, + "request": { + "inputs": ["{{fragment}}", "{{..}}"], + "model": "voyage-multimodal-3", + }, + "response": { + "data": [ + { + "embedding": "{{embedding}}", + }, + "{{..}}", + ], + }, +} + + +# ---------------- Tests ---------------- +@pytest.mark.skipif(not VOYAGE_API_KEY, reason="Voyage API key not set") +class TestMultimodalSearch: + """Multi-modal search tests""" + + @pytest.fixture(autouse=True) + def clear_indexes(self, client): + """ + Override the global clear_indexes fixture to exclude the multimodal test index. + This prevents the index from being deleted between tests in this class. + """ + yield + # Delete all indexes except the multimodal test index + indexes = client.get_indexes() + for index in indexes["results"]: + if index.uid != INDEX_UID: + try: + task = client.index(index.uid).delete() + client.wait_for_task(task.task_uid) + except Exception: + pass + + @pytest.fixture(scope="class", autouse=True) + def setup_index(self, request): + """Setup index with embedder configuration.""" + client = Client(common.BASE_URL, common.MASTER_KEY) + + # Enable multimodal experimental feature + client.update_experimental_features({"multimodal": True}) + + # Delete the index if it already exists + try: + task = client.index(INDEX_UID).delete() + client.wait_for_task(task.task_uid) + except Exception: + pass # Index doesn't exist, which is fine + + # Create index + task = client.create_index(INDEX_UID) + client.wait_for_task(task.task_uid) + + # Update settings with embedder config + # Use raw HTTP request because fragments with complex objects + # may not pass Pydantic validation + settings_payload = { + "searchableAttributes": ["title", "overview"], + "embedders": { + EMBEDDER_NAME: EMBEDDER_CONFIG, + }, + } + + response = requests.patch( + f"{common.BASE_URL}/indexes/{INDEX_UID}/settings", + headers={ + "Authorization": f"Bearer {common.MASTER_KEY}", + "Content-Type": "application/json", + }, + json=settings_payload, + ) + response.raise_for_status() + + # Wait for settings update task (embedder config can take longer) + task_data = response.json() + task_uid = task_data.get("taskUid") + if task_uid: + task = client.wait_for_task( + task_uid, timeout_in_ms=60_000 + ) # 1 minute for embedder setup + if task.status != "succeeded": + error_msg = f"Embedder setup failed: status={task.status}" + if task.error: + error_msg += f", error={task.error}" + raise Exception(error_msg) + + index = client.get_index(INDEX_UID) + + # Add documents + task = index.add_documents(MOVIES) + # Use longer timeout for document indexing with embeddings + # Each document needs embeddings generated via Voyage API, which can be slow + task = client.wait_for_task( + task.task_uid, + timeout_in_ms=300_000, # 5 minutes timeout for embedding generation + interval_in_ms=1000, # Poll every 1 second instead of 50ms to reduce log noise + ) + if task.status != "succeeded": + error_msg = f"Document indexing failed: status={task.status}" + if task.error: + error_msg += f", error={task.error}" + raise Exception(error_msg) + + # Verify index is ready by checking stats + stats = index.get_stats() + assert stats.number_of_documents == len( + MOVIES + ), f"Expected {len(MOVIES)} documents, got {stats.number_of_documents}" + + # Store for tests on the class + request.cls.client = client + request.cls.index = index + request.cls.search_client = Client(common.BASE_URL, common.MASTER_KEY) # Search client + + def test_text_query(self): + """Test text query search""" + query = "The story follows Carol Danvers" + response = self.search_client.index(INDEX_UID).search( + query, + { + "media": { + "text": { + "text": query, + }, + }, + "hybrid": { + "embedder": EMBEDDER_NAME, + "semanticRatio": 1, + }, + }, + ) + assert response["hits"][0]["title"] == "Captain Marvel" + + def test_image_query(self): + """Test image query search""" + # Find Dumbo in the movies list + dumbo_movie = next(m for m in MOVIES if m["title"] == "Dumbo") + dumbo_poster = dumbo_movie["poster"] + + response = self.search_client.index(INDEX_UID).search( + None, + { + "media": { + "poster": { + "poster": dumbo_poster, + }, + }, + "hybrid": { + "embedder": EMBEDDER_NAME, + "semanticRatio": 1, + }, + }, + ) + assert response["hits"][0]["title"] == "Dumbo" + + def test_text_and_image_query(self): + """Test text and image query""" + query = "a futuristic movie" + master_yoda_base64 = load_image_base64("master-yoda.jpeg") + + response = self.search_client.index(INDEX_UID).search( + None, + { + "q": query, + "media": { + "textAndPoster": { + "text": query, + "image": { + "mime": "image/jpeg", + "data": master_yoda_base64, + }, + }, + }, + "hybrid": { + "embedder": EMBEDDER_NAME, + "semanticRatio": 1, + }, + }, + ) + assert response["hits"][0]["title"] == "Captain Marvel" From 887a7e3c196022178820905e781af47ad94b1649 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:27:33 +0500 Subject: [PATCH 12/18] feat: Adding support Multimodal embedders. --- tests/client/test_experimental_features.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/client/test_experimental_features.py b/tests/client/test_experimental_features.py index 2d554a0a..f321da1c 100644 --- a/tests/client/test_experimental_features.py +++ b/tests/client/test_experimental_features.py @@ -20,11 +20,3 @@ def test_update_experimental_features(client): response = client.update_experimental_features({"multimodal": False}) assert isinstance(response, dict) assert response.get("multimodal") is False - - -def test_update_multiple_experimental_features(client): - """Test updating multiple experimental features at once.""" - response = client.update_experimental_features({"multimodal": True, "vectorStoreSetting": True}) - assert isinstance(response, dict) - # At least one should be accepted (depending on Meilisearch version) - assert "multimodal" in response or "vectorStoreSetting" in response From caffc26d5b0762eefca849ba732cb87dfeff185d Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:41:49 +0500 Subject: [PATCH 13/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index 77df040d..e5895c08 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -5,7 +5,9 @@ import pytest import requests + from meilisearch import Client +from meilisearch.errors import MeilisearchApiError from tests import common # ---------------- ENV ---------------- @@ -146,7 +148,8 @@ def clear_indexes(self, client): try: task = client.index(index.uid).delete() client.wait_for_task(task.task_uid) - except Exception: + except (MeilisearchApiError, Exception): # pylint: disable=broad-exception-caught + # Ignore errors when deleting indexes (may not exist) pass @pytest.fixture(scope="class", autouse=True) @@ -161,7 +164,7 @@ def setup_index(self, request): try: task = client.index(INDEX_UID).delete() client.wait_for_task(task.task_uid) - except Exception: + except MeilisearchApiError: pass # Index doesn't exist, which is fine # Create index @@ -185,21 +188,14 @@ def setup_index(self, request): "Content-Type": "application/json", }, json=settings_payload, + timeout=30, ) response.raise_for_status() # Wait for settings update task (embedder config can take longer) task_data = response.json() task_uid = task_data.get("taskUid") - if task_uid: - task = client.wait_for_task( - task_uid, timeout_in_ms=60_000 - ) # 1 minute for embedder setup - if task.status != "succeeded": - error_msg = f"Embedder setup failed: status={task.status}" - if task.error: - error_msg += f", error={task.error}" - raise Exception(error_msg) + client.wait_for_task(task_uid, timeout_in_ms=60_000) index = client.get_index(INDEX_UID) @@ -207,16 +203,11 @@ def setup_index(self, request): task = index.add_documents(MOVIES) # Use longer timeout for document indexing with embeddings # Each document needs embeddings generated via Voyage API, which can be slow - task = client.wait_for_task( + client.wait_for_task( task.task_uid, timeout_in_ms=300_000, # 5 minutes timeout for embedding generation interval_in_ms=1000, # Poll every 1 second instead of 50ms to reduce log noise ) - if task.status != "succeeded": - error_msg = f"Document indexing failed: status={task.status}" - if task.error: - error_msg += f", error={task.error}" - raise Exception(error_msg) # Verify index is ready by checking stats stats = index.get_stats() @@ -229,7 +220,7 @@ def setup_index(self, request): request.cls.index = index request.cls.search_client = Client(common.BASE_URL, common.MASTER_KEY) # Search client - def test_text_query(self): + def test_text_query(self): # pylint: disable=no-member """Test text query search""" query = "The story follows Carol Danvers" response = self.search_client.index(INDEX_UID).search( @@ -248,7 +239,7 @@ def test_text_query(self): ) assert response["hits"][0]["title"] == "Captain Marvel" - def test_image_query(self): + def test_image_query(self): # pylint: disable=no-member """Test image query search""" # Find Dumbo in the movies list dumbo_movie = next(m for m in MOVIES if m["title"] == "Dumbo") @@ -270,7 +261,7 @@ def test_image_query(self): ) assert response["hits"][0]["title"] == "Dumbo" - def test_text_and_image_query(self): + def test_text_and_image_query(self): # pylint: disable=no-member """Test text and image query""" query = "a futuristic movie" master_yoda_base64 = load_image_base64("master-yoda.jpeg") From 603df34d1d5bef03725792e3d01b9c6810932694 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:52:55 +0500 Subject: [PATCH 14/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index e5895c08..933c14d7 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -131,7 +131,7 @@ def load_image_base64(file_name: str) -> str: # ---------------- Tests ---------------- @pytest.mark.skipif(not VOYAGE_API_KEY, reason="Voyage API key not set") -class TestMultimodalSearch: +class TestMultimodalSearch: # pylint: disable=no-member """Multi-modal search tests""" @pytest.fixture(autouse=True) @@ -216,11 +216,12 @@ def setup_index(self, request): ), f"Expected {len(MOVIES)} documents, got {stats.number_of_documents}" # Store for tests on the class + # Use request.cls to ensure attributes are available on test instances request.cls.client = client request.cls.index = index request.cls.search_client = Client(common.BASE_URL, common.MASTER_KEY) # Search client - def test_text_query(self): # pylint: disable=no-member + def test_text_query(self): """Test text query search""" query = "The story follows Carol Danvers" response = self.search_client.index(INDEX_UID).search( @@ -239,7 +240,7 @@ def test_text_query(self): # pylint: disable=no-member ) assert response["hits"][0]["title"] == "Captain Marvel" - def test_image_query(self): # pylint: disable=no-member + def test_image_query(self): """Test image query search""" # Find Dumbo in the movies list dumbo_movie = next(m for m in MOVIES if m["title"] == "Dumbo") @@ -261,7 +262,7 @@ def test_image_query(self): # pylint: disable=no-member ) assert response["hits"][0]["title"] == "Dumbo" - def test_text_and_image_query(self): # pylint: disable=no-member + def test_text_and_image_query(self): """Test text and image query""" query = "a futuristic movie" master_yoda_base64 = load_image_base64("master-yoda.jpeg") From 681d9ae94550f59505d7135d135b05a0a977c9f0 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Wed, 26 Nov 2025 15:59:36 +0500 Subject: [PATCH 15/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 9 +++++---- tests/fixtures/master-yoda.jpeg | Bin 0 -> 182096 bytes 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 tests/fixtures/master-yoda.jpeg diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index 933c14d7..6fd3d41c 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -131,9 +131,12 @@ def load_image_base64(file_name: str) -> str: # ---------------- Tests ---------------- @pytest.mark.skipif(not VOYAGE_API_KEY, reason="Voyage API key not set") -class TestMultimodalSearch: # pylint: disable=no-member +class TestMultimodalSearch: """Multi-modal search tests""" + # Class attribute populated by setup_index fixture + search_client: Client + @pytest.fixture(autouse=True) def clear_indexes(self, client): """ @@ -217,9 +220,7 @@ def setup_index(self, request): # Store for tests on the class # Use request.cls to ensure attributes are available on test instances - request.cls.client = client - request.cls.index = index - request.cls.search_client = Client(common.BASE_URL, common.MASTER_KEY) # Search client + request.cls.search_client = client def test_text_query(self): """Test text query search""" diff --git a/tests/fixtures/master-yoda.jpeg b/tests/fixtures/master-yoda.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f241a85a9b1c151ff8ca9f71f9385c7c4c565efb GIT binary patch literal 182096 zcmb5VWl$X76E3{CL-1h1U4py2%i`|tunP%JaCc`3EWWsFkPyLPaSax1k?_L;1iAd* zs<-NXy**X)<;>~s(={`v`|0Prth{Uk-l!|9DFcv@005-d3-GcIPynE#qN1UqqNAaq zp`)W?VBuq7VPawt;o)K9lM<1UkrI)RkWbc+b_=juKc0DdWLP(KTD( z$_`9a>nWrqJ!eK6;WhcBa^?<1#Z0u*n!3+D`L{PZH7Bjv#mhaEHF1t8pd#XXMjMl= zKd1HR`-GE*ZhmH#gGUW%vVUOdwCs3YW4M<||Gu&<&pVQTn?}?UJJfV{Sxjh0a`Sox z!QT3C?G;XF;16w@qi(Rdz2Qj`b)HnH7c{zZAs9nXc{9Q?K4OAH=T-_wt`XBv9!#t> ztT5;DvUM?_{@(kx#eh@8Aru))fRBkt?i#Jg{AqNFEaij8XV_%j6zgxYE&$ep)p*~~ z-xOr_KrX7!tC$ZqVc2s5p(tHf<{uEy=NG`XzIT;$nF_m0@q~rA1Fx57(?G3Qf5y_j z*umTrvA8Fd#rRwogCE*RA+{&DM;ujtUA3D=cSgVl;f38@R#yDg&O8)3>R(qYW5Ke) zS1*D^oK7mh(X)#bG3L0cdj(kAlh2kHOH)esP|+pnw}tL=eauu!7|fra|3<;J@A5pJ znoEE^wwrd&8UO)Cm^oV=x1Or|A$i1^J2O6DlGgieV6shJZ?RDY)3@R{?4MTBsfkme zvK2%;GP8X1g7j|v&K=3&^}cZni`RQ1xXyMW0&lR~dKEGK>M4bgtif~tc@&SfE8-4H zF>5{~Z#DJ0OsYkiyTRl%IL1gA5^21nIaA_gpQg?DfD zh%R+J^&mXUq4M_l9%1a0bez8@wVjR!9ahop$q*6@o4v=a6i5E_tY0x~Hd!QYv?wf8 zcHnB4+f+pd#8!vgy)fezynIIpt0UoYUn3Ye(WC%-XR+2RoLn2Kq@+N*c!3bn;KPry zw=3GcF=d(PNv(FYV9+fYt}-Ees92el^^n&hnYwSV$&MA-cmeR#>`UpuDzy;k$ILgiq+xi(T!;O7rr*EkJ-wC z@r<4_$N1iqsSrYT#UI;B>DSb``Ti|LTm2qC;~m4cLiIKsObsow z)G>{~cd!|PopPF_YOSsctO=$vbrer`E6fnG0-6Pdw8&bO2x2H;4~ z{jW{)duA?Q#WfB+S1_y4HbQFAxuwHft3|x4H;V$;;4U_F+Wu~w+s69^U>%k??~x_c zF8cxi!)MugGYBV6^;$?YIJIkq3W_K|aO6m3C)!$IHC-@E#n;p|Daw-*xWvlv>JR*X ztp2S(EfXbHsO)pKpB7M(==RU!TXaQu(`_@+VI5AGtiI4WFX1{=+-A>!8^bBTe-5s+ z|D}+sFir4p5cF5!9T>Yy$9gL&9XiOc%2b|7rB-4w8ALjH)>kY|#q0sIRuJ9-uKE=? z_0q2Yq%h_vSYF+Aq(}X9+R`dy7G`ke-lfQ@^gxv3oe{-L!}z;u%zcdZcUh)zt7%j4 zHFhwCTOMaTPp_0{dzT|H*T%yfL$9|>H3}>#|8C^6`(Tx@e<%w^!%7Wr<;37h3Dgo& zrIQ;zCt5!({Y!vId4j(WbIK^ANw;oj_-LR*x7qs6@&!Pm5>$!woUh*VcIF_kHP?;_ zGRREbiGXxHVJQ!3jnCR2R1KjhTOm*e5?0nTDSsV@cr;>lG;fRq|5fmBlMLeskB`5n zFL252d(M7Tpu4-j;pi~R;@|q*D{$8EjpIh!XlQm5mqqMo!kfqF#-IY1@V{}$C1>-ico#+?qdG4Y;kAqqi9u`Ux4TbdDp44*;3+sMq1jG zpqiv#rqNwF3zX8skdM275WC0BEb6ekNB^s7cIx~O_F3EV%|Nodj5%0`CSa5E1;CN- zl4c8aTX{2%|JmUC_l6WTxLU)+znV-zaR_k)oxT1GK%HQpaA}K41-x9()-xy#Gdqjq zz>m6!e>93=%@ank=a{mOa{GZeqgDJ2%Y9$jdWIby1Ja?RXKJNBSQ-NMWkgu?n3D^wRtc)=pI<`oMup z-y0I)aJ=*Ih>q=B06QgtTahJT~kDLno-r~`j( zO#>?r;jC3M9ttN1t#OEOi~U)qjZj|cdLW{B_33Iw5~ru%%2h?cSzNVZ9rBE}6B zqT28Uu!&rEDfs4uCcV(ZT8%ib{V0pUzGK#5jWR{^(`?|THMSx}3wbxtD=%=7{w{}Y z-cFApU}t&4Gh>Gic~NAW+%*9r~(|0G-e)u&*4{xwoYv8+HHxYNQM-r_SR5;%3wRKcIW zV2Vbbu?^?6U^D2vZt+%Dz%xMi!@ksCMeZ%H1hT1~`t~0Z#Ijr%Y7154ekCt}Ovdt% z*Hq(rI_lcY22QXo@w~Z!Idii}&YtGLn%dYtS@#9a6hrYx8Q#?R-sH(?{4qLS)g1H% zp!Fpu43ny8k~!-mGi$T(A<)C1ctp%!6j8Xl-%7H8ij4Ak7flt#@BNC|afxQs{O%DE z;U5vLZa`E{Rlur*+I={OyR~rCWAq`9OG+jCX{*s+33d#L{cbJh>UqXX9U^%1!oO0i zAXyXyq!WCFH3xhH24}K(&cm2xiIJag8So+>5Je)B1XEH^=BL7Xy9YJl= z)3W~kOwwln!$zyPTWp}@tT1NfEGyRyJ>F)=3qZ(FJS6K5?@1|H)7`G1B^SN$$>5im zGe|;oUCx~)i$%4M`vpLhe|fapwOe&T@EvfxiqB|H@SWWv=h~PTZDyO9Roi;KRqJS3 zYrrQx|3>pPoaw#dMX&om))^aZQz>!g=6E`|z!ac%i;1jz zG->@H-9>nT<^^ET`u)lxl#qz!$CtSF8=%htgH4f+67{sm$=t1C5?S#a==r$9_$Z#j zv*{F)kx#g8^(9+!z{^>C?^e-+224i0sX=I);caZ_mW==%pTp*TJ*ZnK1B@^P8m`b3 zEXgdY2j*M5)C%AAoz?+e6CTjqiuYrR?BrIknisrV^BMkYMBuuLcz$BBSQ8HB+Hz@^ zhzRW7W;&!Z>KZhEs6v-*o`Fspq?#0s(mtls5E93TOQG!$G6>qkDxZ+Q?{;_39 z?=3V1s58j%;m`fIsBRPAv&kBi4_?+;q(_%sIgQsPc4#BVISOL_k8D4^TB*1TBD_e=3Y%}*y79GUu#IFw^DP& zg?dy2>OATzs$!tt5|=(%pk6`(<&Gx@>AbE>dXxx*{v<5oO#PbL9BU z`7){ON(QetL6cuEaM|$xO@j64!vD2w`gg#@`zByw-+zMLDUxavzYSDc>xq*ZrmWnk zWK^s2o@Mx>FQ1oVgc`-*61Tj+T<^GYOwfF!&D1G8J|zn)&&)NZjk6@(pkXCLGFnKp zRPp7&t1)%cyk#|X$N1Xv2&`kDD+iXRR}MHLVGb0?~AQj86WJz7vWe^2mE{yx?sjiJtxhwzranKm5LeHHnEjb_W1>{ z;(A^Doj{o4ypKlnEO#fEh3Zc1D^AFyGEen$gHhUrbEGI{T|5SK<{n3_gfVG^e2x^| zIMQPnDGkiJ|8Dln3jphpY1;%C{;Ot=XC8{rd8e}T;30H0_sxlXl!loVlER7+Bc0V8 zC-MzM1v{_QJDl_{@3C4{4ZW-)oDegz%WR=lDN&Mg6IgD|lpY zkWOnq5|fup?%xIS4cK%GM=aD9D%S=jxw?Wy4XmP3b%uqnKDmTBsbc6ZP-aIEYi)edKS1wL(x0GPsd=CX znKK;suDUcgegPQM*|GIzH8mOZ-08_parI1KSeYvHG3LxKgMBC8H>-cf`))+XpOprz zl^W^-6p6;l1@cBp875{c(YVX(LE7tmY<|x=Jtnq%)B_ zta!|$t*EOJH z&Awj6e}?=yO?4btD-*YrP}PWA85MM#Ka{9ErUSzzoaR3qRjh6>cf3JH@fc)gRrOY! z@_Ev4&Tng1Va7dX^UC|jAdy`FN4k7pxcO#?MkPcN)^^RGW`w!l^Xm=A2_mEQ4WMD( zdJL#z!TrF9zT%%1Icq1Na2(&tN zC_RW*N#bR|cb zeK=?13Y!*7Uzz7Qp`;%yx%Y;a*nWwvWNq(NSv2DBL=)dm`ZL%Xr`HXC*UbC_OhX!; zR^*kWj&_|D{40ok{k@5Tdz;)=~nErQ7RFSaT^?w0K}g^h5CF+8Gt~-96F!ga^`L+p^&GLAdWpB*u*mE z`g-B)bkX}5d6t6)YZiUK!TRnxz1qoN%^fu^v?F`ZlD{;T{s-_|C7h(_J1?XBw2lIX zRiZmsjQAaz%AIu-O^6>=vFbo$zlrZbYjq`1&rKz2_Jv=|KEg9Jc+Obssb5J23nGq* zMy%W?&Xxbrkenz*xmAO>!3}f+=XGqudXu z75bZV1t8Lqhw#Fc_)ba+Yl1)hoL`3)NipruZ5p7u!-Cs~x`0K2ZQf*+(12Q`$fVYryVJ0`xI06gxq9R@tXunZg6uz2- zk;O`MWOZbI6ozzSZOj)cya0v@74H2`7B%@XF`N>X!x93pRkAS^;9t}m^c-{;8?N;H zb*}%hTMLFPSl-doYen4%j#HC;66^hxcr_kW7SvXfE49eNMyEQ7zz%ti2b&XB`#(a(RQKcilvR2U{t~40E2G(mVZtz zCAIn6Uv1}tkFv}^=S+_tK}~MS5*P-lmtz&?~Q^O z90eKQh}-d9zwFG)$1@!2@;HN9WAm571&cS}Jg#X|Lf2RhU+RT84DvBXZuAB|3ZEw~ ztqGW40S^_dBTbl;H%Wg;Q)6}Moz}MWcj4W0f=WBVy01kyH#}T4bx_F{GKim;BI3wG z6)M4*o$L;qX^%Q~Es0+O>lE>HVkiN)WmYxKjcOd}*Jl0!eG@1`ADCI?dQ>OE9eh<~ z253&EwpTRks}wxSKr1fa^WSk;J7 zZ+Wwzz$7@n8wIpb233yI3C*SsnK4WxR4AT?$TT3op2<0w0mOs&d}((t<25m5rf#%2?Ka#E<%x+^A+d!Sh-oF-`t_1 zEK&p8L|o3Bd$^ zA4fm(0*LOHO15tS!wkZjCoBV~IY&OcBUR*&A#1DMv>>SKw5V2FG;#9gx}hNhniMD( zf!#P=@rp1(s##(c9$;mmC=On7(=|Gv!s!#`sy?nihAvoXnm=D5_%eSL?G;SJ)&jU4 zpJ#kf2-P|61-#>^CBp*+C|1&EP1ZRR@N-i_+lZ+B4qT*2iSo_7S-#i2mck5iJPVdO zd=qGLPOR}E6kkJ>6SP=)p0st2X&_kyI?D)IdoBa*5i%Ro=;y*+z79q_?Bri(nn zi;?7u+XY+64h4Tq^PS(O-cH__qGexONZ)G}m-{;g#3E-vU3NJ-&OO&BV;{juz9dfn zITN1N-MG(I?eF&=uCdqmo=gHdOc z#iwPjD$G|AV;pbmi=HEHN+)RXmt!GIncMA#qd)V{Ma{$Uv@3TD_Q(Zk{`|x#iL0$! zZ)q(1fCiHG7jw^4QYS7eJNKq(bqUe{h4FU{b$S z{BY0pv~gkzGn|UlJ$vl9yugX4gFKC;L0LtG(5DHX&+x{XT)l*e5JM=fKL*%HR!1Y| zfS)JdeJTf6Je^%}qQyxAZT~_Tc3irN>Wm)g(x^9JIV%6AJ2I=`yEx|YxivS@X4=q@ zp7}<3*eS*tqWSa{fJ2LnF$r~|kljzQ)gX@gCvbW&P|){IkRC5RoS6|zOp#_Gpm>mJ z3Ve8!_dR$j2LK;e>t_>Z*%CD3tLM{K6n{mw;zpIT<5O*gyBy9QgK9#6B>_g_M7b_c@*x`oO;G99$bpBD^mnU#g%6C9k+zMatn(7*RUd4O>n7KQpVDC_ z=Bs2ac&IU!hnkHKFzeD`v8#LhVO%+%B9MN#=CVk790i2Y8gAwb4OdgUO@k`%dZ2%` z$B&?)VeK+l$M=R75%S!JpRwO7m2tK!XLKHWvbt|U>#~_Rye8?@2Fj>TOD8s5YZYw{ zAeq`oSx(#T^-#-(&X!9B`yZ+&^|ibQ3GA-X*~WmoZlY?+y=np6xn8H4GAyRdi!AX-8p7dt>yGX>cr*1;9( z^bn`t8o|Ri^utpAJtvh^07nOd$e@W5>iN+Ia#mp^)Lu?<4`zyPr!~k-w!h_x?A+a* z89t`vVjU&v7VwMI7~d-k?77G32_rtv&kA>V0UX)TOjOm5g!h`_2yN0S6oE!u=p?A& z>q=rvR48__BivE2&%eBEK7@yw*sk*p8>FAv-8ulFI&_Yi$KX>W5$Uil(C<6|A^K-~Jg?1Y&v|@dE8U*E0r?BFA+-BYzOJ3 zW8^ERRW3Lree2NTwEf%Ec#k}bvlgKH@Ay^4O9=tF$$#suZOWP|(}v1dl9A_zpbZV-^%YN$TL5|}Mt ziu!k^7tO8ZKUoO|nfZ&<#9Zb*=GR^ow@0l0w}lxQCB4GbCEm(}I^?qmA(>UA#tmVn zP47L+f&&*l@abwqqdsKw&#LZ-U)q(@$C4Uy2zDHbW`}wx{2JuK=ztxTY8?(0z-v4M z=|1N&+=IJ-HzKQeyLMca=^ej{mz@O!z59D?-C=_&N#1$>v<;lG7l^jBT< zeDP^sp-Y)P$FS%urxREjyfELs2i)tZ^d4Q=+E3TjN&6Bk&ddy`dG0!@S#W+o5LZ2B z2{Su!>@rj@pA2>>BzE%R()@GBg@9VvP3RD!4?7QB$uL6|rH3-|3{hIVeg0IT@U|;IQ1g!_*|8Tw`}N~4Sn#yx$nlWDbb#~q z+1IlR6}c}8Soq~0Q$jw?^}dy?cp~8f-LqSmIMOC6&z)iETw{_GVcoN|vr82|$j!2h zZ#EKkqGC2Px2h8YP^eB*%|PN_*ioyt;vhM|ihwxi&qHmeH+Nvq973Q-N%%?_AF?pO z277nQu-R8}G#ILGOzGZvOzt{m7ZH(B|D-+sv7<;8o1#>?jK2MG-u) zR`|AgQPR!d8yZN&S2W1=uGT_Kd6`kT3+UyvvY%SZ7e+8n*VD3mkg*S+Uti@K2@GbF zdbkn4tR}Vltu5Bkg@9@zD^&lhECdQ{x+{8l423}5ponewHd75Td=0GW{4k;-cE2TW`hqU(y+@LfK;-<;fFE0RY| zu5Wmdyce0bgP}w^P_%jM)IJ$Zcu_8cW3ZNl#JfQ{ETK|+AQl$2MxX92{VfOWe)tv# z&6lz_3Xyp(3DkTW+WHGs6FC_<<%8$N`_Be#)UD=Z3og(Dh z_J<1_X`#}?X{}3%OPyhlXVF%HQMlk0C)$YY`ca(`RY;EUEkDF4$8xW5I;tTjvB&J! zp;uzxPmxa8Kr+gje^iZP#n&r(xcF&YuEXKr@9Mk>N64fhD51>2XKIdUl6GSGQnv?0 zwh^y`Ed6$sFUwx%@~DJA;g2uOqrX|)RM3E@%}IC))L;otrA* zU%5dv*&ZiafAF%CeVKP7Vie+1QUGvM?uQx znX)EcyGgHRkELqpWUr32xQatiWV`WPLeV!y&Q(;nLJL@8)5Xa@3GXlrfcJU>o} zt*xHTFHr83Zl?H6e0(Iq`JtG`*iPfM1MfHVeuD9L*9T8GuIhsw-i9&TgQex)gg;~` z%*lM(o6i9GGuo_2$t`-VdI^y`lKP|ux@Ag>@6NQ7;E&8Z1lPA8SAH7QTDZ)epan;6 zANy=bJ39(}_S;@>VExZcYeqfE!irp?pvr=+b&q!uvE-=YCkQelZ9Z@0FKom+ZRWM2 zCvsiBC9Y`5`hL_#a4;Wigd5>^`gDwW6w?V^&scuHFEw zlJfg$pG8u!V_VZ5Ga7N|Cz=_Mcn*iA(`{0fqghO|m(CbK3glZsTY%|RCO}=5?5%!c(rs{feDB$VrNJlO9`NiLou%q);SnRo#dJKIkEJYX1Q2mjNhTviMHE} zsDGc4j`B}^>*s#r=!6WdXo-%($cB23Bs8m5pFu$*Lip6kN&pw(_2K)D8(Ea|e4vsv zXVjjgKtiFU%H$Lig>UZ!*hBeUPpu01{;!>7*L%{{$NUcVd=;1Q>qmUPRhPX&EO;u2 z*1dGshiAuwxyc{lVHlaZv+^+i%~ii@r_w{JX-QBojI7FH!Pna3D};JRU&dhGf?)C1 z)}Yo{*e$iz-gnV$ey`i?gY$d6!W30mM6O2-Oo zhbju)d|}_jFlQdDX6-0PFNij6GHCg0Z^@kC1D(L>jhHLYMO@ZTdl+tCHr=4}Ywr-# zR9aq4Zfoa(w9qoTK_bEsR|T&rI{a7LVQb4XB)(k8WtX||06*=#quIi)C~oz?rfLf$ zN~wbLjJyr8m)u}>r}}vm`wQhZ z;9khO80lk1*f?cK@^AoIqnv?duj;A*z#at>mSmM)9Z~Po9UD3^RV;YSk@j}TV0iiR zaw3czkKVX47rfSKCoK96OaXi=E=V=i#ec550R|6LDn2yk<9-})ZBzPTr~I$-Sw3+fLeg*f#q67-Uud54QYEV`dJ z3$<}nZ_`UhpWSPdXJx0rBG3e(t^@bjaigigknGR^fn9pR#4Y=HcdctNqHlepCAMAReyjF6Bu>Sjw2EP$SQsM_fQu%BbSnN^QQ# zXexiCH->@pDa;msnTnAtPJCJ}oM(^+kq${zy~~cXDwDSS`?@UiF#3Xs9SK1Ee zitLq}19q-6Ge$U@POOlU3+|(cjJ;V=yC09*nL4R+LZwdGVJH4hi1ZiT;EXxBe%D6!@X}ui184R!QO_thwmmNC!-&q3XRG{WtEjeidky zH2u)BF{9q4*N$!Ui{ePr2P0R5>HAqktse6vYiyChN~jV!HkRBhv6xh>B0CA zr2V9KJU`*7F~C3Vp#_jF>F2s;H4sN$Z0<=vf?_zY}%2Y<`+?AH>D&* zntTeoN+Cb?47g25f8Be8eZX_#d9H?Y^s2Zh}kfGX?2r{Ol=AHe`Bj zyeq-On&$!L?XV@{N0vT@euplEhIK|R&WTn4pq!3Dub8odm7tE9esd}wIOg4t51f)j zA0<1DJt#P1cS~2**!Y`|NT==sFPN-mhGVb?K`2uQ3>K=4=W@`9eG()okwT3Y6qoT`@gqpBreE%i{~{ae&)qlK ziE$BMKYCTL*z{@C#O)_^1M$<9qZt?q6dnd>g4j32(XGliWmV_Bzl-`%ijOO5RdZeb z`>K~e6gUHQ_IHIURd!BDEruYAX^zf=IcLVWmZBQ>mC;=uvW3T<$g40W-_^GL+G0vc z#xJZ8cG*&V0Vv9!b>CNc_Fezg4{Iy@R|DR^k0Iv3L&Z&yQ9_}Z6dzZ*aBRHAW-hz% z`}f(=T^?O+620_uW?I#7tIAR3vA60nl);4iy?Cv(Q) zxZqx!T}=o130FCYdk@u$e4+_r4ovFn*7bQ0p1bZ`f{18;MAyj|QV@C~USRKHCwir- zwI;MBi|Bcu7d|px0N?pRl%Mn{raXFG)XBBYUzu-h^DHAKe>OEZG;jlc>elOn{5^yX zk3Hcg4nwJSm5nOj$l2BI>kKvo9)dZtXW*vQm7A>InNzb9$->z7h032{q^zfj@F_%g zC*Lx=zc(ds>jd^OrXxQ>8stO5!e1R7(l!#d$60<%N_p{+0Gm`ny*@)qOWvS9~il;J0G&%Cy67n!cZK zaC+J#hiuhSmVQ?K6+WuiITp=%R<^-1?)Ts+tiu!+i||BZ8Esis{96`=SENwE!0YTw zFD2|mTg=#&RWOy+2E2x(pjP=bMS*2>7V;e)?iXiY`Pp5T+LV@j8c9`9DXh5`e9*p~vEAVl=)~>}OsMAueVzjeXZg5NIEfb`=w*qcly9pwRM@{xD%TyP*&qZPl9{Mr8|Y9M zjW0JcZ~rxJnUd?fK~%STaNn>j2zz$4K;zRjnrLx3ZQMRFs+r>us}OVEy>ko~oewCC z?~ZnN$h#O|nE~kaaF$hnOQ@js2+#5BmL#-|ZJFDofxFwD%vD`*gzlxm72?Vj3s+}% z>O#w6&0hd}Ft*AGC)Y9q-jzd2D1-~Tj4WhEVxhw~wZUakuBOmY1Of(7_dl!7FLtU2 zs49hX*Drm?Mfo^UXzX(RO*=2h z7d6hwAFx^s#6qo=NQ~!n_Gt_x`~Tv{NbYgaq^3s4 zs^$ChA09?~lnvt2%?IdXp68zzqDUnAXcCZDQKgJ@)~v1(URl}i{@I@WD4L4?*PqBz zxxDF;bD2i$i@<4yPm&PPQo@Jowu9w6hH9J&6~aKlA3AViyr@8o8jhWd6pRsR ztCL*$7Z?E*va9vhYaQv~Z+lbq&-BvWZe4v$Pg9Z$9|)M7N?&aU8tXwb&mFev1_q>2D5Hl1zaXYH9s!g(J4 z&jr{|c%8}{pR=A?kI`&v`M!j*Lw)4m(k6E&lq77?NOu9Ogs;H;WvcNUIo*-o)^}yT z-5Pth9mERWu<6|f*co_PyYxv0Qu-+mvq5#yQ4-A3EcpWXqO{Q(6bY_Q&!I;Y6C}HZ2X3q@aeXA@@RkuMK$|Ag5oFBZ4SRU5 zm6-R;`YjOt6KXGJIE2IV@H~d;{T&wm^qOTyQiZuhka;I@rj7+O7m4tgdle(uh|DtB zpreZ2ceI+V3F@bM8}p3wWbW}O)Ul|cPom17yFP@CdhX|5;s0Ym&s%YVIO2^NNb4?* zwz9a|K_t<6YNoVPRQ`_JBOogrr#HYFO!C|zjr%u|DWEO`_mD{aZJCLxKPLUNh*0!^lv=+3ad_@4q6PE@n7u5%ieQP|R|)7?gNl%KK;Ks_XGtJs4WrWx z1cn&?1V&#Bo}6wu$h~^(p?*B7a`+wPup}EQH^{V@r(Mow)kDf$a5I^Ge#%XbaA;83 zn&&eb%k-8Zw>n!6CBr({*rm;`Oue{MC~epbx-mtE2(&2qQHxfl0u)>&-AL)WBgx-L z9*A?xvO)k8PHsl>;J|FWsYgyzqfab9-rfC7CF|8gmssVubA=;v|^;-tUiAIVgyZH?^-+ zGlxv5b3)>=w=UZid49q({W!8O^izu>p?$6X=maj(Cx5pX<2gBSB3p5@SM2>?Dh>ov z&M&dn{gy#P^EW4sbK;y$`{`k@2B)`~Tbb*a)>T}i_0z$dMjysJ$LE@Ka-|cCjuBnM z0h$HpJb^rWhU8(d6sUf7a8l6M!H&z0(f2GAx(6~1*A{Cwp=Kg53)f2$B8^#ylW zad9Xvl*D44C~(uIKEgL=){D4fC?0QK2}OFSR*)_jLK1|ccdC=v673z(raR2{_#qHa58`Q<$KvGG-l=r!~~MUKRefbtpE zY;hr9vWCW0y?eDVc0o#?v|RyzHY%=58C&JSWa6JnZf^%cQ1i1Uhb4C#@a8-y3|Fb| z;Iy2+6UfUVyeixEER85mXBFY}Iyo)THo+e_1|4*7Dh+Lv^|G@l%}R`0)iR9urK2YO z0Zr!$JVxh_I`Yb{!|XP0@#hs)kWbR=-i%HiFL>zHAQcnzh?n)maS?#II_Xwe`s{e< zsvt=bs8nGbK>q1C`#eX+Df=Eh@yPn)YeNP<1sfa>w65&mkef$Gjk(ujT!~4LQMuWT z(^^3WZT~&KNlfjX{QUb0=JTl6wjr~y&2nlXYT+)1WVA13n%B6PMkD_)9IpXw)x5Ol zp%x>7m8X{-^y4+f=L$T6Om7^MA7iCSIF;M>z7ct)@gz*3*n}%;6xqztN?5%0JN6no z9?YMHZZa!RMOd6{)bdj4z^U{ZK<3phkPai)A08tJQgI#LAP-WQH~#G(hhq6tAG2zF z;d}M=Edxj|M|PiZKxTa_Rk^u%dMjwt3PUi3Zq>xS$MdvqKEN|HJN746*tjkk zO7yDM^g+Z*HcRFUAc3^?YzJs(FH?xW`G!NVXYe4t%9;;~^Luy-1Bz}KtWn)%sNLuP z_q@r_74Y=Fx7^Inx-s!gm(&XU8U(|ST)r5dq>1HhtRGwJuNIdVfglvgp6O42G80_+ zmCczbP&1DpVXnOEIqSddWs3~t$RzaPYV~6Acb&lGIi=KL$~5|^`XuB;M|PI&H7<(5 z4e@A}&Pw%?n)Z;a!9P|Ok4u|kwV%&NJl;zm6_v$SW^~Bj47!-7G{r;5Kd1{cIRzMI zedV2QNVHe*FX-X4Cxef;lg$Ua88K*Dpi!%SRzk3jmj7KWwgA%}jI$;#eN!+u9BycK zn;HSuCa`p<{J1pS;KA?YuPK)+{L@YY=gL1_7`EfINASmoWXgK?Sd~R=-}q!7>4u9z zhphe}q{wBqUpbz(yd%>Mrah}4$pN>Pjhw_9cuEmQc~qbn9)r=^BZ_aoZAmt>dKT)a zWzga$faRZy2`9#D?!!Q0(_Mz;3U6+EB6=n(xVBq7^PmUBILgVLoyHJ{z*VDNNm>Cs z50QR?F-o(;b-oFvKr9hb!v==WV`WS$+Y`8T^3>)uZQRLByDQWPE0ag~MK?AVuOKUV3zv#zUa1Tmx@fvFJ_w6x$oD#!Fg%JJ!g)}iyq1aO;<*BaIpu%8miI- z`;rr(@``Kyh~o6&DN3v89U|Rq`>8( zRDw&G$;iuQ9X~#`cFIYd%nFAB-ay=CSg{OQzcLYoyN)g*7QB-E|8bz@k57G}j?ycb zFj4D_a(o-`QJlR+uSh2fy8*rLuuh)&J%JCx_|kcE{M_%W>_audMp2*wTMCyH2c2*Z zOEc;&(R=RHr#E$yNaL%FV0z}*bVzeB?1Nj5mGtFz3nXEKA+hh_>m@3!?z;-(S49!ynWNK z0)gl2=_F_vSUD8N+5L`M^r6IwQ%F_ZOWM``kzVaCD2MmDAGRI3KJ{lqIjPLa=|a@P ziZyL1<<@?pNzOz55-$dWgPNpsB+b> z6wL@Um<{IC`a+Dbw{IqSCwY4?vV0dKG0zAq*NN$bShrLDvf7^Sa~@Rk!PS5JDCM+T zwbwcwMl^ulRiO4-?ixJ}B#Dr0`|LTJTfaMJ9!5uRJ6;|YfU}k@@W>E;O$mrnl*pZ~ z0^_*HCgN6c7xRW9T(LWr0wrIn#pfEKJynqoWJk`dt70=6^&>$f# z%H6W5V9@{$r)Lz-FF%jGh$+up#t&wEVI|CwIa`#(^oCOfKP-L9FQ6t-6Z8!!i8T)u znF2bXpkEo}5`l(l(mz0kWS?XgGrWgUBfOhT6+hBroliJy7i3^KbviTuN8RT>S&$+? zsr}mj|M-PtK-G`yUT6z+o(Dkdi_RZnyirH_j7U8m<1)3^n(O~z6hShg7D4rH*^)d? z66<@v{C~G0QksQ%xkI!<@8B(+{tHJv=i^I#d@F9fTLdovJke!J+#25VN{xGnt5w*TZe@h{ag<8Gbgeh5~(n7>fJdlC#sVUx87&Hl05O^&Mz z1D?(P!5Kwk%!?d*2vyEyQ{z;cMrO6i9Fb)57`nK#ABX&rbJJ)?=epco9?f?}F_7Zx5y=}QT+6sV_bNiKB%_#jEZg-w4Uzt9c%OChgBw+dW9njktIe|V z&r@5hW%Zul_q{Qh9S2i}%9h?`MP1NR?NpVJc1yZaH&wyWHnF#GS7@d49Ebw8VEWRB zj@3W!&;=sw-E8@?i+_qJEP!#iSBqG|P`^qS#+GL)32m6jr2h2xwW^3l2&N{hh=clj z9uM^6`?8+zF96(v_G)i-R$Et9zZ7g^q;kC;#RW8Le1AD|su&O6owyxx-j0@BRwc{p(ubV7QoMuX-g6 z#tmBE-&Dt3G)7|(5vB;u@J6 znj-q4wWm$`BOmzbq6r+*U3F`80~d2aZO25NXIto&$CrH)G5ew=lO!iAheNt&JCx-} z_1}HdA5;{zKtwbMY}=0B3LS^ZscqM-Nl5OwOU zEg?R^J;N`up@}0YBW)pDd-AaQPwcbnyt;X#q%Ckn&jk!gKHXc;EccjowA1RYSJEll zsr}U#lQ1;hbl|4UnCv-uMp92zW{;=h&;ox&TAXFOVDwhlG#hB8s14C#gG)VIY3#03 zWXEet4GLlK(%G`qp-(elwm{NWd6bD^=^U`MXt3LtL@G4HMe}z(70PYO;C`K!Eux^Y zhh}GG%B?bjNl@9aOmafWXxf6`)wT&t(tP^Y?sjF zV0n5G{%VNHar~8fr!&AV(M^xs=n`loxCqewR5M=sY=mm=9d#y`I_KPVM9mB6oYGru zm3qy!zG~BjuV__XGPKIu4vg7L5Z;QlR-ffXtV>Z;ac&n|;Nn-Nv)KCWws4oq5L9S(|aWIMKqd9(*mm33u{DRqOpC&~Rb z+$Xb1Ok**d1EPkgWF%@niaA<6J8kZa;iUCLEk7=yN@75xko7;(hFVCI?5uAYke<<* zYNC*s1N}|D#WA#%CxffE(1bU*10#JEpn;3Uk4+RE2JO>ei6OSjebC?OJ0!Xt4C^*V zYw7b$bsW+Kawb+Fv;3ET`0R_LReS`RS%l&8v*_@^L6((!FZwo!Am>(xx|d4#BX z9RlF$P^1R9*5x2!up2#oY1_>sUdfAz0DdZfX|=D_N74k`6*rwFw&~xhW(yK^*+Z)2 zanA%#K;14!MH3l-`P)?aMZe1=_LlyTkBlRrP6f{VXZAxb+0FUvQL}SjO;k(^X4FVe zasb}U-knX5b5jq>Z5yLyv&nV0Lp;C{r0AqobRMXlTa%N!=2K4{z_T-uc$B-L$~?C-4dID*HbBL@DOG? zHTPB;>&ekqU?JY0sxaTEHXi9J*+s@YZttS8Mb;b6ikl8cPvO;AVL4_LxY7h%W5!=q z{{VDG7(TC%RoF~j*3^V%7?b`5Fa?T7GjC!xMlqFFWAl4;MRflFFS0;A>=3H+$qu-& zD4Sl$Pv!Wp2-wP%9CIJUZmL#r%Rdo1?5);tna!@Mm3NH?Ta)@LVuGbkR*-M|AUuq= z*M3w=&IbAuph0tUcj}Hb5J0p=?sZPq;~JB9tTJlB4W=sK!c3_G#-<~K9B&G%PoVTj?h+~-41qq5iFIBXRb)5IFT zdg_2Omhsf564yjcKE+!A(_ifPb~>P?{WkfPtHUsVW60+>Jy-Ivtk`xh;0rb!u*oysuwfpq;qum%^G7ZJthft;cC$0uBhC#SlpsWhQ#z-xB4a` zhBW!jca(Z=wkbNbW(sum(&}x~DI1kB#p02q-e=jvy1D-V?9lF0Q0`Vn0qx<^b9t3w zIn}Dzu~MHm$1vRAh)JVKEq%JKXPr>aHQ0BY&W5;1jY6c#wEVJLS+>=uSyizjyB$uZ zNo&4nNpc2@IEZ_sI!?;Xs#7J;mm9PVm0Sl8sZp~{uuaB&mbD%qPJ|kdY>u1!l+=SM zGY3+r64tzG4s8|6G+R&o#%*Jn6BAmF8Kkw7*lwDJKhCBq8eUTco1v1NxT1aqt%wvD z%9(jjx8${WZYbg?hda}<=JAXore@WFucpZOTzw`{4LO6HU^$Nb)I_4D4z;j!OnF`D zvaLrF(aK-U2CB|r=HBWG8z{?V7&;4~)UB1k7goLXj>7Cjp30G+G zJTDJm^Izsxc7VUCZ3#1=4(O&o;;^Xriw{)8Uk>T4qkpc_V@77W4*vkzL>KI9xw4tO zp+b%(mL{K>Myp6E+~!c7OJsa7)Ed-UWVN@6Xj&D>Yhl_IlZmZXjcLs-Iu*7V zw?P1D;pkQdqo}vc7LEQzW&Z%6xsIvkK3el4S|oN_A8F3=+AMW9JL1_Hlxx%lwYIxT z-Dc4+bM?G8!idOMH$ON1bA@4Q)e3)m#f~0b0B_g;C;EA40w0* zTW1U&$Kf&D^uPLi*J12Z!*IH|W>lw!tx@gu0PRF-74LyTz|_MAID+`Sr?OvWsOIwQ zCsovAFasFU=Td9P)CR+tvg&YSNE);saq#c-ShW^8?8(HpGXt`=V=32VMM>EVx zSm))q$6>_194CVR0D{zLQKyXJ*-cU;Qt9r!5tMj;2gCU^+fJ1*Hf#WXN~SZ$cuExB z8s^Bg+`P-i9yxh)#TvIWV6paV{e?|`iL>JG8yp)SM-Nq^@t<|&yj#ST@n!j+uIn=& z#H-_~lTpsT>Y3(j4fT|pd43g#jxFpJXPVQQ(fE`wqY}ZRC@+ix_{%* zOaB0mV#v-PrO3>#SK^|J$fVr{t2lA&KzSw5HA~S{0`@FZ!SM_=Rz_e(gf09Bjj?x^NA-ewR#jz2icqv;*@9nAk@}suCb((?x2O{E1XpcjghYxkcf&Kf2AT z*cKYox^~&tx$2#d)4u9adpZ*Q57IAhPnr|i{aRTS%-^DFnvAEJR3It10AM$=S-RRb z9Te&U+h+d&@!dhkmfCKdayb*7zfYPOaNBJ{cO1X`MDeH!;x>zM?hV5cUBt1e={@H>Ji>76NzGJ6rs^lz?oZ zuD<)By}SI89qN?{%F>9i2I2it3Jw9zoU%r$Ml#!TJ#L^|%0|h$WQe%tAmtFC=L4={ zLQ&WIrrXo5imQ-)AvSLB!7!J1B`f~rAq}_}*d-wYY|M=#4PnPMWR`O~_QJVhyeJRLj4r{Z#8bIp*=(-2k|> zeoB($P4o`4$PiugS@?n-BsSx9VzbF~9qtu6$2&+aZND|91eB|5X6ve=T1`mXu8Q&0 z&X%64o1M;jXctPVGTzBCyux(QtvodgGnOK4`l@(JdCZ%TR?ZI&TF^^x(MEXZIY%gZX1%*1uDJ8Y(4xeS8W#%qlSR4EPvGN3J;qfY3Q>KEIX?qyN*{)){LkdA9^ zt@uA(U}Whr@ITK4?1Y*-p8+jWm^5 zzaw)w-!;;lLoyt8Aj5pRA%|7 zw#rzDHQM#+kjt8X1kQmcEObe(5p7bS39uPpC>G|BHQ(7GI=b_rPq%)hL0m{DG=9i$ zlON@gY}o}2f=#tHO*qjdckXhz`$md6j)z27wCR@UPiYtGtriXP9nggm1V(B0NHiOl zSaeEqo`E`vLcI|;o@q(Gzf^VhN&b@#zjX))SASrLo8WAno!Lt(3=ydO(AvTv{SiO) zvXCX3Bk?LhqGY!Fl@>Z1*P?bFY0a&n6f5AHTp$f@p5Bn_CdLCgMiO!o=q)3SHyIi)e@cXUr6JECu)QElJ) zl_v(0c7)lY`J>$?E+B?nx%p&uNVEF1(N8cUa=H$R4(4n&{gQ8@m4m)x%kS)?mUX*D zz0qG6jKGbxP#}LUnvZml!H`%i+Z|;LwjU$ap*tcvTkzjWDlX-a?RHlrSQ7FYMpz?l z)Lh)(6y@~;WAaj}cF{A$)E#yF5yS*^Ga4IwwmYTg5ZD4wQPC*nCvN=|8_Muof7B{* z35gRKb1}TV%8o-aH0U=4PheCFTpW41r$m#Y$;L*X<^58~T{)Ye-7{W6=wn3rrunVk zPm(M{`J&s6(JAu(04?-E1nV5IVOXR~fG1s%44y+%we~2?mozlmH$!BYhPXnQA{u+b&BMYcB?4-~cBx%t@WhoW1b=nYL+fa!2hRO|B9KAh~ zP%@=M&6M2!N}XnxHXEtDt2l?dFJEO!vE?PV>k7~n-tVtOJK6bN?49JebRejmKx?Fp z`l=VfHkok|>e)&gP6Kt{vX!YrMbBS!5t;fm$Ei>28$_M!09;L#!10Er4r!=#RVfZ> z%7|F!i?-XTi=nDRK5IHlr*f{~=!U*ub7&n98ALgZIiXymgm!}NkWqU=I%mY(ECIB4U3zOHP%kbX{qk*a@w!yY8?z%ekTZgDBwyUZ% z+A~>Yp5j0?8Um$nMXm6yfAsoqBB9MstUFax35oKV=DDsN2UMwJYF4Y6&VUYsKo>r4 z=%i>jgW+pKjarn+&<*>n{w;%{!Z7}2CsYkKE-R?RwY8|Q<%m>x)&{mK3sRG*HXWmd z{{RIkxisMOTD~B}dBLr0G#yK3+bai(Ix|}^8K~?_%?na8Y4Z_jD4A`2kF4O>v ziQ+;2mt>|kN!V*fh90?ZC~i*WTYE#PiqzcVchVO*{-W0~0RC^qYG5(0!%_yd+dh+Z z4Ri_i6BkDnMW9o2p4y=0BTt$h4}&~BIB1S*sU;J z65l65gX0t!+`;XG>S=Al)2GJiF`(0DnAdzk)|KaN^RwOA2IY>`Sf!4t(dAR5;Mu&o zBe_YeWTe^XgNV?o*>jo(^5F?L7f3L=jhKEf*?H&MYtgJKHSIgJWtdtl#^Z6H@70m8 zYj*i8oM@}y+{W>GSen9(8o9u;q0t3KjU3D&w5nHWFhh0vpm6^H51dPder7Xr{!&** zMwr7>6zOFVXbASIAFpRJd@+p0RwTZqI%h#q!rw)I2jHA7Bbu#OJ=^~PWzaG6Y^aT8 zp-i{3r=vQb0Krj@x|lK()!^7_j-0X4Xf-~nLP}U}9_kirTOW$KPLqeJ(mE-|#^Fgm zOGIE(bc7m}@&gzA(cA-t(+K`wnnG}9KOb0I?DaZGx?gRrN1CHt@zgbFmWL&fL=U0` zC0bb8IJh~YHqlvTSD#dc43z9#*3QL7mLDU_n&$vanM+KiWUEsVI)y}vZZ#!!d8~OzEMBRI;hgd;u(lE+}UV1<%PNSaBC3j3DfmZt%GPK z#jpmab-o#{L{d#HLz>f~-QwACuBGO+%rVOF*&fR)7lp51 z25Hd6XUl0Ct?=NMWix=c6yAJQI+&1bb6EEGRUL!H;PF)JRD3z7E{5Zw3f~RkJXy7c zGXDTF_i=1lbh)b0tZ8Ey(*hU_6{NwD=lo0zE-t6u`AwfzhU&90{591XUal#x9}DU1 zdxN6wIFE<$oK@!!S&q!(Ed!#%fAHPZs?7@CTQn_pkcXcT9*pJq-wimomsW0YPb2Bx zLcy(quZL&ZtFgw3yJ}^)`mbK${uQCa9?EU2_J+S!I_(Fjm6_sx5NTqbMJATm7M9!O zP~n6%v&HIQ>WO_e%X+GnD3I*V-FinA;S^|L#Y`?>9qMRo$>_3h-U-F=hyMWL;VT!P zgtU*vPH?uxDo!4$%3wC!=tg2GfFpIK}L?S2gY3t)I2OkWgpaTtInFTx7+ zS`_$y48rBYQlmnXMa4FO^<2*$@y#9_3^zFJvG>a-4bV79=y8vwg~68Lyt-fw1O?|_ zB=I#o3o27JyuxIa%=nY|hgPv7jaM)mMr*DQAI5PQ@=1G$JCu8@YaNjpX65L=#{5rK zrBd2%^>&D`IL^c6T|)xcyM;J)-=?>nLrlowsU*Zh1FYLKEIh?2kc)#N8@%b2?A? zD&`vxnb56$8-fg{n!_|LEFTVaYr4^>?5yFi4P&P*wkff^L}5%dtpyX=n{DV=+O)8g za?|8@P_Qvr`n4*OYRCz=jw#re`MID4nEHj!12R}*{EillD-|zf>SG*QMro7+^EdjW z??I2BRD;LNUKeg2JXArOZI5QhHO<16ul2v^pgln$&8Ed&aw2w!>(xh19b%ciI*ro_ z7T0?x6d;;deA1hMT{F{F7hGT7$uk% zk>;_}Woll5kTW1Aws`!~cc-d}v%v@58&(22MeSauOJ_Oi$D& zxfZbrW;tM7CUjaF?x+q8YCOQV>(NTHz?s`+1`^g~2z4GB0oHo16m+l-I>&L+C@0n5wonu7~xHnA$fZy@yFMV$ODAg=BAomF?&_<4JxSE?KD z&@A`XC*1CnT@1hWjKeT?OK7D=u@=;<-#FM!_bSyMgEhLO(N+rW%Wl%vPFC==4f^K&ctk(Gc)5Y_LPawJhQ)bHu5w>u21KpbU3GU_-u_{wO@%gRS(-ucfE>G4J97b~u>I7?4a2=Q8hfnYNTeV}pEQg(MpYKH z&8;&fJ?1k)iv%%lX5Vdnklxw8$d2Zdwz8uT*v)v zD!bd6{{SsutFa(21=0qZC_TV8DRYGGiBM~oZBVZGmbX+Qq#NF30lvxdkZqJ5Qh3;F zvE4hGEOnJrz^{RrHaTs3A~n0_)eW(6nr%PXOiS8g(YZ^pk_Tv>hh;qFqS}N!`#XC= ze~Xs=l8D#@%tK)5uXLnMo%2i8C#d-(*wgBV5duOk*)#`hu8IEu_SG~2@jyqxh|Gc0 zeW4=mpG2nO9U>$p@Xyev$PF2;8}d?;>**HiQ%HB~`zf^AG?4_9^&ml{=P8ILKLVBP zG}=?;=JiLiml0)Suw+YMW}OrsOPyy)0_cS8x`}R0U0@+k;1F>o&@z+!WpC?B9rn{sat|i(b42kCN zYxPLweLuWyy&x4U*c%V{-6wB1ll4Q620l>EQ|~CWwIu3b1S_=2%mG#@b>)+y6m5{$ zc1YJ<6~+SA+bNyKfmL8F7Wx%#i!!)J%@ff<>9Zj9IG^)HWsEMl-&jLtlgd5SiY)oc zPh{9egRa^HRyQxX5~9Fn!v6q*GXdGt&?#@B4drsnU8cPgoe9nIL~BM{*bjw86&b4to~N+ zRUZyv1|RP$HXX26xNAPu#a~?Jds<+0w#u7?nGd6-;P?vE@T9r!&f-gsrF1wvGhIQ2 z+BD1_%99v!L35cT6AI7TDT<~#?fa}eHW{s=4O*?H z-P@Mu_E&J;O-6mo?Xfzj&Jb^tdkhPknaynP8>;yJ6Hck~X|tH?AF^0CnIW%kVQA{5 z{-IYlmg-IfYfF`^cAQs-9DKOz9IhL7 zT%J3F*P!_q&L; zQg)q*U8fD;oHK&3Q^Me|?16XX1;qQ6i}GbOY3YwAmf^T>h`5u(u)H@E8gwPOK>Dk! z@PCUdA1}0vQ2HjG@*7ICjnogsljy;tG^XF;n zvdg83sfMmRw>D0#C`v@mnU9eg9nsruU451{JY%ao9Feg-Rnu6pvR%s5;sCdtDEWm2 z__|;TcBnKfI<6$;b4v!>f`+O_otjO}zMWLFA+o3v4T?^9Dse5aj#aByYXK*2ioX)Z zI}J?3Wb|AI74fbs3iC#l7e1-929mE29KDg7_<9>Ll&aV{pzb$C&+}e?;c8rSiC2Cz z9rqM=XJ4A@ztq0Y$C|lFZjkL$%f}87r6p#itWV&UevY?w&%ck1-ll+e%!yBoQ?4LZ zXmHeKvR}r--5WvSx;ZsxPP!~HjjHLX=F=^hYi8>18y`;*AicKglkv1tXs{~9oY@m@ zp-IopQ!CpoBT$3qHT2}#@D9ciDOGJ|0$metm{N-baCF@14V~vgs~R=_*7?06A{Ew} zjdzyq{Uj)5t0lDZ_m!lM417-sIErxZgv(;fJ^Uu79Q~n{e7d?gvDZBpP~0s_&3jzv zo`{a%_(16`aVJ^qt$AREa0+U?WR1br3k16zo_JS&Kj0S?UzqyGR;!sUZW zzx}FoaMZBYq{grvVW~ea!c1IG0;!2$^4{uC(>T}NR;A%ARWbhn?b*roXT0_HT|qph z0ri_rvgfn`sVaYyF2WI=hu{>buv4h~?izGcJ{-ZkJYpQ`jd!V~)+!J21{_y3>AyGv zTzW#s;$AAEXw++7(d^{oCJqjR4Zyfg1)g0DB@olGY~SXH{7x4L+@X}|#=)R3JU%t@ z2i{_u0MKT+Tu+F6cZ;qbDdOGz5bK0IfBgz#l0Byx#%Q^O2ew9wmdE&Qm>+!yi;eum*ZmnMag@ zEL0?uHPSOGJOYVQ_@LPH5FzZWtFyZk-jHczn+XEus~|P)lHgIiPB`IByP+ zDpYO1Wm5-0RINP?%GbnV#Rdv(79t8%X4x!OGM*Nhmdt3mJ|&LxoLuV#dx_)A!2zux z3(Ds)Sc6gBw;MvNFn&h~QED+>&tk1xK8=pUc|s3{fE_&tbq5&J>YtU`HvM<*yRlfM z2+g+bi#^XQPQTenjmqnPfkQ9-q{EfHV5cF$JsoV)H#&PICq$*i(3V`ThTLwcgxKSt z*IWE z^i}IHSs$QP9HIsHl^1UcZUW$2-48BTPbr;((SCrP=>Vubmr`?K#&rBroWI#oBr^aZ zKW6W!QgAaJ6gvwI;_E%=q1f(?(M`FwY8HpTL{LkB*&n(W;GNU1>7B{$Q^z!SP&&`z zY=^oT9;4<^Dl{<9`6|J=zF6zs3G5kfq1jT?M1!7Kb%+~u?xN=q&R1)xQW9N#ijCXx zHWf=GZQyED?=jO=7PJHUcS*3}IuK-})L2cEcP)m6Hg1iP*L0g_7jq7t$r4>~=u7EF ztK37f^x7ioymh^NqSfqf8R( z4^rB|(u{+Bl;r8i(&*H{(E+2D%U=$|ZtAucl#%)NS~M6O``@H>ST<002DT;ELB!%Y zEtI1kKuKA+%DG%dT~ygcYW3syR4QUG>h?<$T;`K+ebpB{m&kOJ^Hi`CW`-WNe~M(! zrE1}wq1j?#$;|@bYC_YXOm^ywSgJ`Dc9OCvz1GWlSD90nuWpN- z7E3g~b7+a5LTu=?eyX#ojIcEaRXTMJf!b=XS|yf4NoS?HTdIaaJx#IcvL~uKofO3> zH@VPCOHKdZP2YS`oa7%D;%zprrM#s zheaCWEB^ojJ=9IDz3jKcKFpdV=a%y8YbiADbpZkHheK}~AK6WhIY~R}R;bJ?xuBaS zHktV-+e7XTPKr-}**{XLK1BpbE*JMhcy4QGr<_}Ui5&^jQ|bkv5OWTfQM4XeJyn9y z20o}R8iSa3?z3sZQ^+kXm)Iw{w&@oB@{>+)hW%8W!6}t^RDMvaa@XM>KU*oYVk5qcr~jGHm-#{{W5C<=neV+o~Ih z%>~J&vAqwJ?B?r^}Jt z&e!xw)v!eJ#j|LotHitKpiyn@szQFEVJ=Zaw40Hj*-SK8{u`*cy{`95Hlfag{{R#& zM8=G*3BUG{(L0<*mz|Pma@PnoS%?b|G z##!p7>wEr66`XT>>GD>mV95G=z_<59cfmT``${2!a_As@zG!^8b7q*|Ez?~P`yqX- zB-|)wm>FAr2<)aLn_T`84dgn*+==J{#aODkBx8BOiXqVGW& zTxVgiO1cRo;?gf?9fD1FC;_dVj_NScW2oO`oW|+6xRn0@1`)0g?K*t6R;aY)g75zT z9;&N3jGO2ztx;}K&8Fc@a>V0;%NiUmsKaUi-y72p|)D3Y}z zYoo5|HXY7e0U3fhhp6bGyA%%AHxJG65%g2R(RFIF8suyr4t6r6RBSg=O5fp}9o4G} z4a&-G^*C-2rf3~2Eckzh)2W{kRh-lrG8<_+Eqp!{*2L1~ca%)H_4ikJm255phcky@ zn(4Eu7TY=Khk(S4N0!>o$m8&bUdw2NmnJQ?&?ZFg zgGudka_4A+aoHN7X<#At8wH=1;f)*LY^LXsT_9YmrkAz31{x3dal%TQMrMIjb|Lg zLbH2>GQ}2DWf!#bj;6?U@M9T5<0O^q{F97KlpO((FF za^551b!dn!h}^Dam1SQ)ek+7D+~$%*g~`9dCXIQ^Y1dVvY42dyMrR1a zy0u|Sqg=p7Qg*u7!!rxRoG9V*W*WH<5r(USYsD5cG>e@|%B{tng&tw0H;2#WpArr5 zj-sC$s>gX{na1uLExa{m)&b3SaTW(vz+gDG6Fir}H!bPaXwu_&tUJXz4yIc&T;7T^ z#&k-~9i3Jwjd>1h92{&_8kBy`E)`un4*vi&Y!?#yTdkGgjeDoWvYsZXj&j{v9b&Un zFv}l?W8F}F<>~j?YlqWx66@@_yhU1csb!?vfz2|~9rzHZg~rum%(>NO_iyC1cvO=n z<|_s@V4=ilMPnsBZn&Nr%LT#4*F&R^o1J88sTyOxg;LO*W2G3&rX@ zGL=%|X231#G=ZXO2Ra?I_E;6L&81QGs5VHrX>x^LGHPM`s;=_KKfTUv$I)nD@gbEXFU&4_mlGIzCZ<-A7AJAlO`K;A+Cj~Hxz-I1y!)k}jll4Bb*8(X z*{7#e^=o9LTwSJ+x&9jZjE6d_ugpP9AI52krB&`=mYt->|2`09UWWm=8S z--v3k>tk>fe)Q6&XVP+s3nHdIxdpWAb@JPmLF`v2#dxJ`&uvOosaI*cOywi8*U@9M z8Eon}mxyWN=+vi1wo0tK0no#yOpXs556x!2wR*Eu z<}DX4Pu{=8uSvFgU4A`Ir3}EdxyM1IEVl8ngwIgbzrq6JDe*G_t#glUAqu`aDodT7 zJ|Ep^yo>uYcsAhfaNZ-Wi(~6lbE&X=Wzb1G0Ip$tK~|sMIQrPM zzss#AaM4ypJAvv&W*A$Qpnj>e6Y$7p8m@T`(O7j6o4ej7Uv$_i(*FDY%IHHT!jQLRy}iPNgFMyY!}F_&~F;j>k>)yGq9 zDkGL$->oFQ)sP%eTejSmKh|4a;P|`+J0&KhuA$(hy8K(Xv)= zW6&#cuz~$9^!#<;^mR(KamS zH*LaMopaOrlK6UsESbI*&fuh~K2ESBH zv!?0|1en-#M`IhQ)A3O@(g896oqt4ZgtW)VAuw8U$=MNu{*P3O2}(2{Laozq$vce| zPP1dOu}-FIBq-=F{{U$p@lkVTdlXE(gzRr9Z*ltG5|NP18?NHWPho8RQA`H)ls8@p z)Rfa;QmVoq8FjsoU@(4&*o@L(-&7xj%eC8OQ=lW5=A6Jr+hek83k~d?I!yHZ)N&C-o0Y)zIwfuO{L}Z{LJ##G zs@NKaU2VG|7UU#m_ErmnLGG)VxH|0%j|6QtSFG6=S$Kn!K5e#Ib@OHQESzhyu*Or- zYLt@9y3P}qn1meJzaT;-VU{_rbx@)?vliUI1G?U78J@I@_!=eGJ#M-j9T@mwW^npD zo%LJzYG2aZM6BF8lC)jJGzgoXy%v=aKUGeXPxAbgmb|f--oWO%%i%*}s{qmkj_VH@ zSl&!RwT#4!#5(;7#>QeK9&X;GtR$^ows|`$^juzjRs{w1rnF{vvOX7@4p`{5h$dvy zpgDmVzp~V!%-gnio{KjR1)?t+%G1LM)w*aF4Yu}LRieuqn*DS}%yQd8hZ-o=sqpmZ zv#k_KugW9vMW*wZb8BTuuIf=}yv>#AC?%s`4|WOLWn(WWhPZWAD7!F*y2GluO~s%9 z=_N?MjRp(WekL;z9qzQBnkRkMeP9nR`p@W^dIKiA27gWZpgd&~@0kkbA-Sp$fabLN z9d)egNv;Z{^w*(KVcRq!)M>uRE(Mx9>bAkw%-XQceqkoW_1E1?KKmO%KnHVsDYkas z>a>o@WSS04$pTCg-d^Zs$1U>og(kWO#Aj7W2qcs4eSJZVJq7SC^^w=w&;fVcD5S>H&$wXJ=JFnj)L}?*-~pv zA7W#FruL4iY+(iu`Q1j_I^^n*=J)NmRLTqv<%ohZ!DH~rL_d8cBR#7S)0NKp`eDE-pCjFU;5HUPXO zsXK)iI@72>M64_t=}Dqci@sx_OjvEp?56oH^(ebDf0_oVa$3pEWp}J?5$dS$J z?e$RVGW@~-6Pg@AEp$!2)C}h!@Aw2Vkvt{l-fLw~N;14Xp-1Q^g7dY`CH?AdPX8xoQK0CSbC@BNg3HX~E9O7j$@!} zo+9B+#odUxDh-iwn)*lNlcy;sDFy|)rJ?)`$h2v?u|?TH15H&*S+)3PernqqOGax> z>1njZ2(v}7=^Cr7V9Ntv-BzMAE0n(xuE|9QC5m$0E(WUIG7Do;6-r#PGT*AQ$A+6I zdxSE^l6q*Car(ySZ6%}~M)Rtfc39>18>3^cNt3g5Losn3l6eKax+uVozbvNK5h65H|$#uGJYYqpIvRIZp;0I>Lan3sm-)ACyQd=R+} z&h5J`EH)npg~J+6W4!l^IBh8PXwkt@9%m({H;}3blAww#6vL(4khHM4udvV!q{lt( zxhlRDn0lEi24p1ei;1mDtz$}y;24)180?z;CG--$Hmz7KeATdxg4^J9L+g3fStX(* zsBmr@g$(oR{ox`YE!vzkQ=%O~j^@}kR6Vgxfn^sqtLk~O56}g1n3`E2wgJ%hR52{X z3VD30gJIZpTRamFg~MUZd{r+ptYxOxbvwspmV4MBPQ=xQ8ccBjSnh=SHL)Z(y6#&z z{01hb9h4~5YcmYai)-wuGljPd&oZ;!nYuV=vvyJ}vk1yKQ%KfsaxMnHHDd_sR50R| zH{4wJSWn_LDc5^k-0nM#2F7;&10kXAl)oIgn93P#> z)N@>}YYm7Pnud|eZDZYBek|ZA3XbG~@Ax6ckdCkIZhOX8WG*qAQwi}n+998LRk?+l zeU}eg#FhTh_fLrygj^pDbsls4zxOz-&93?OYfHVS<%`OY{Fz|21 z7y=^C`|v>4%_YXzY~7WX}VipDF%G;tVLiY=x9&}GqArZXj`;5AMpFm-&#bF^51<&llz&BRs)lUfH( zs}mi@MOGSg?BZd>tl#wdjl`4OD=yPfTt(u6@ zPM4~cLox7_H_8Yjl%SLM~@WL(|C#o~qEEyQ$cSOq@QKQ%Y0EYe}Zw{kT)jbY?*8JD1 zywiO#QI4_Z4jan(tHapG(Qv0#`39gbdGL-f;6Xo*=eE@}0zVO0FuE zI3@W3(L>5K+%q+#od}St<1m!!Qv)m+fP{q0uEtV)mOD*WZxY1Q0-!Ik7yigKaMiHb zX``08(V^}D&vl2#c!O{inf{>qY@q--q0;Q#ma7EWC2lug?38era@SI%YG)Z6>jz>& z;<%O%78c{O2Rb zL!`p!gt5IDw`LC;;11#3MAOA$sh0Y|Yql#b#*>T99HdGPB-O`aUTRiz=W^*j$>?F~ zvZhxv_FQ@Lk~Hc=)1v0QjMFO49-dPL&F-vWu%Xg)F=VMxBBv`|bGnFQmBFXw3@!jv z_?}>UD!x#Bxw)X7`u10`c!68Xq8n;VgB?&QGs_PS^zGKmR*a>xzmb=}>QUQGv_J{Xnhz!2SRP^vqa&CZQMHdlMO2y1P+gPE3`I^^6!Rk0pWzpF?pcq%TfCzz3VNxlk! z@VH=M)f*j^y4XgVU}S@;wMz;$9v5U7m+xxBjIC9I+q&x=y0Gp%%&FStsCGmPwImb1ZPa7nh0zl2G zfPtfb!k$Fm+Q}HxE{b972|2_!Hrs@UGi`1DN*B=FZl*Ve%qp;<&X@lHqLuSq*XmP_ z*}F~DON$(5RG=q-nXT-TIb0(^qS^jkQ8L6M^@MyT#)mrl=#JLIVL`m40d!9P0D;{@ z=>jI#2RO#P5g9Lc#iq&vGfw;WM;@MR+%d2}8YkCt0a@*_GCwFzV{{W=3 zW!2XFAuP$&$^s%9XK~dx!`!6j4MT6&WX5cIe@Yb#k=ips8jgwva>i(bqFM7g4UWkf znEG^7wF3yphY9*5@HNf!L#5L}uqcgjcf(~H0xfK};SsS>GXh;5LYv?;a{kGTYLC&8 z$TEm@xS?D-x;w3<&qO!$+xAx^vKbG|{t1H%gbR+TS;y04ub4;4C{aTefbMjJt#FfI zxJzJ-vng-sut6q+-VUEGsBiRI%5HEvHva&U1y_u)ZP4nuyGDgt^+Q@=WMkf2rH1mf zaWz|)pc9%_E;0UXTRGiit#DI9bXBY~v=G_v(OAIY&S^hFs|FVl8H8RBMX`dSJ=Nz# zNvDCO07buLv4*9}&rs^9;OUH_K5JVKr#IDL;JGX@g^u@8tx>VvNv|wq>NE>C8CYBg zL6}lk1uT7R-yvvNn2NdFd9+sXwf%h?(PP%CUg^yM?6$)Wh-{c~&pED0w^Foll$;t4 zhW`K*tn3{>HPUaFs@%g-({Z4bn~6flW!yC%>Dt9;(e&oabQ%n{T(A}9FfpVKiwvS@ z*Bt{VFR|SOyb0#+J<)5sD>`3QpHcAX8l@b7S5zU=btw3J+bTk!w>SN(Sa(czR^W%x zv4)(n(9EmsyM0ZQpjp^yERInvh}~EX=7Fb9sXofB z72FAc8=@1NIyGD@8V;LvP<0smlr$wqeot8D5%ejD%Gmm=l_^Q|>V)#$ zzo+oBgV-BkVs=$3(;D+FH`5Njk)o{jYw0km*uE5W_*@cfyVYQ(@K|$eKY|;jq-;8- zU9B7r%r)P5>OwvG2HE}Y)~0E(D`-&MC7 zDdclR3pu)ONa&?J-kokfN;ZMiZkNM4jlxV3DJBnHPRcj9KO&_d=+i7ah@pwYY}0v! zj5(93?V?$yU&pFhd2ZI8pxH0NppK68+yw_Y#kO<jYbQ8R{-WHIw zO~|ynT))@}XGx(wyQ6@VhZK>*zZ!w&s^-{fv%Nug& zlUzw4>fr-qd=IQ87i*VEu*|J7rUdV3RoKGmC9X29F~-E}qF;CfT%yqLhBmUe!I}p8 z6;6|h9S>!3jW9Wq2AENI$6uncPoT^Dc0i^kA<%Rv)Z3Oum;930Fy9pHl#iauF6A;3 zwT|i{!4I4U`e8xj2HDVcl$>N^)psoZ3YH?^oja>9ep#H}{_3qy zQRxc*0HOYsYfG$KroGT#*|vdnT7Wd!-!vm@)OYN(Rib_ap-0SdE_OjTa=C;p`#@;8 zoqDRZD+aSJTXaoD`5Gz<5_U)8u#=&oi8N~$R}RPwGzGE6MH<*jRjM(>5pU)TCXN-= zFqG=Kt-a?qi(?JM@U{4B@aT#HmJF?7Y<(7u)CmyteBc4iJ+&)ah2e`{%GKP^&_HWdS`=xF zMq=FXIYPYWQp3}IO4VB;?WPQmn&rv4E&}8Dfvv=9Hj5#;2Mr*1Pll^S^^cnGH!y+? znn77OYhK*2jJU7gdZS}prVJcl{0%ezXY zhQrgVRtskP?7Cb%AF;Zdi&{W}0M$%%FVf!#@Mau1R>o4eAI$&RqNsw$5B*m&jpB6tqf&z! zT+drWw(1o>{$ciNY;%6~!>hLFRsR4EPelI!B0C3GG=2v?zsxpAYlGSdTvz`9Ijqtu zc~ME%Agd?E7+N){xvq*;gvM(JCH!ouTRL1*DL$DMY&x!Ij&N))Ck^INt)4Xn%Ef*^ zP0WWqrKfev@f=~n)_b$K(0RD%uMZm<%|XcVx)m^QEjDk$b+X0#S&7YJx}G`)E{7|c zWZ14d7~dhh&7OoK$f`+BLOU2}$sxoYA;`3NwKj6rxHp{3AlGxwQ15wFYSav|Y?!&) z>M+mOfyA9vJ~v0sijQe&0vISiSM zTR$RX`aTO4aZaczLt&@tu<;dn-<8f<6|p&*X^Rb&BTJvu(cE2SoXr-iU>ZxHmvcqc z%mxg-;MA~1rAH3NPI++ZjghZlHD7P#8_F8zlH@I3Ddm057UY4hT~ku5Dza*3{bf_D zIjTAigv9Ma>8X{ZS4h#NPMhb=UPs6Nxtju0Il?w_|!>)oY;W6uFu&9as(z;Y$2&s4mO_ylo4-;Qs)_It^&^9Vez$e}w&)g;5!uPMdm- zkujb>p@pa^aQaTf)Y8o+{{STYF-b^!H=|1p{58P_d5&$j&?CRV{0j!bQoUMWI@0F_ zk4m?Uyh8bF8-t|da$Oc$ls|^&6#oD>iSb(197Gl|*8EcZCicpBpAGmDtwBn)YB`OX z;TKu>-{B{RaV{f=aSCjF2L|T7*I3Wt$A+kpPPHdKrn#K&)fW@|J>eCc9fPY|4O9yj zRVIF^JXN?YKc|xMpW%-g;EnUCv+Xnnrki1v8(O|0hc-ro%ui0s+x!^w zLX|u%7w4n^k~AfGL-;-;1ytc(nw#2UAJuwy@Y;=fcq~J)52pID%EmYzQPonV0_5zo z)T-yxI<(nh@qAO8BCC0rc}``m=QO#Mn(b_T)^8rc3~mmkL+XRfEVc3MoYBnjFA`z? zz|2s6N>!LkE$Jj^2bkZ|Z$-VZvuVpOQs&6xytQIU9E?30d72j;Hio@fux&r3s z(t3nET`Wa*RINqTB%G~x@*OV=FOAf!F=ehi%>W9Fb;*m$tlRa~6OPI(;O@j!&6xvLK?SOo8O^Hy04dG#s{Aix!9Bv=z5IY^h z&0?HJ!#P{gIxKBU0;_Cvg&Z{_<`+9OGUu`;BMfL#V`%fz26F{q(TXhP=6I5OB=;mO z0>d{vyQ;I~2ede~(mLo+@btwa%c8YbsK@|zofJEw^i_LY&r7YWA-s^o`l}bH*~>6B zL8(Z*Mq3}MoexOQeG`ay9Miu-w>WMT(*u`8xPJ#PcoiDpwJ{iBf~9Xz(HP;#o1!?z z(x-=<){Q%^CynF%W~PnVYh(DEnhQ7s2iObY@c4y*i8r2@+?dA}@ zLoZztzob}d0*^?z8im=w*(W=i6ZYF#O`G~sYePW?VF;ATf!P_qH0B!UExL#?0DdXw zn))iQ><8&BaqOf-*l(cPxAcKYh?t9$Q^F`DGknp zV4~S5qtyXRD4Tj_L}Wob52}IYZ0G`BmksA+s0n|As)e=b)jOvA(Pan!0L9QyrT`^6 zqGM6n8$Mr}sx8`8iRseeAAmEQHOlG#04|2uU=5lp?&A+we^18;sCWeE$GXblI~ybQ={wETG$%P1JK3 z9M{mwktL_7Dh_e=W{#=P!bZ#;@ZVJVvW{)<>QKM1JA~e?a*d${4%cRh(se{@`AE(E z(6dLew5Maq_C3Y_qFH|p z(A+R!i}E@T%`UlbA0+Mtx7(&&(AwfZo3f?)Niy5cYbXa^`>CE?Kfsf1%5VB7H$Yi& zF4EK0Rjp99hd0d9({81El~#;WmA<}cMx6N@h~`JvHo z-o{((dWF#mBRMW%sX5|yG4xwl8X88kr&XVXqFV!gp6h!DL_i%@UQGBvpu2`-5#RF) z{W$<~>VZvxq;|3?IenHaq&0fMjJBm>V=98~g#8uFWnq+@-o;?!D+`@YgJ@b{q#G(@ zt6a2e+jW`d7q;7#I@OKiQKwWoLDgR)Cm^ny#NT1*6PQk=U&5Jpr`cuEd6U~hd#zk0h}jOdi8b)&CwE&# za+|h1U4LBO>7Z_q7CW_zjRb?qA|3R#SAvb6eRU!V3#w9J#Ry3su&Hde_M47Ws}kA?!U z8GeJhe3$5U9hS000;5ML&D9p037PsS`9+{KTqkP=Yqlp?au~(s&%^%!Nji=zw3SE_-a za;;gJhpSyw%h_8q-pxR6ztVu_k!J6rw^^HNMu-n=h|3YWsapsJ4pJjY{8aS-_0XZP z0Xvm2(j)U5r}TRXmnplugq?kLHc=M`@F_Irw?Vgbgo!#&w?z`^5*vBCLzr8A(->$V zHN#+2jt3$RhfZ&JZ&aR1*5KGBm^4P6f?2O3)45IE0vHRM~zs)m=_x9?S za@}-9t+WIBeUs&xO~0m7v<{fQlToHe!-tdPT z3yWP5(%TKUP<8&ACHOzkZ)kkZYkp{Mzr*uHE@>W?z|izUC!5s(@32h>4aD>|_e1y6 z!4c7T)L;9kiObZxPK!lEU4e#-;O6Q=o?(-y)DFcc@=uZ_RBkg zvYSr&?Hy0{P$w%-GzidjMWX!o%b=J?(S)T8aP6ckOc8x&r|g2l00%9R>4_P>Nj4=# z%sV#@v@4YTGp}H&(R6a@KQ(Tg%#AxKZBWY;Y-DYJWM&ilN(gST^y-T)GU2HHl`<$F z;E{c;-6k|Omv)~tvuPIU6r2OOwL2v}2k8g6HK68%Cy-2=bx%;1xD7Jtx*Li9Z<3OM zKh-AWs;?Pc>hB2ec3#kg_EdO~)oD2yQlvjke*`DYfHKDF%jh~iH`xk}8jr0RWOiz# zqDgOpty|gJZ3@O3j#@yQ!nH?-2h}F4U;}bdD|vNdofktv-pR)y_-#;QTf#iII_B;j zl>9M3H;Nu!S8|c8s@MnAeJB?q0@~s9YT>w@49&?-L7uBc6lUs6`0N0|`BZ3+TkJPl zbZdE4so_N|^*$-sD_EQzJWeyt%W6x!WJVmhdO0x-Cr9H~aJrA_S{ z7}gLl^=duhwP(0diH*vyh{6V9Us>&!Y600M)(@=1SDxB-Tp7&EH(w2WHZ`H)p{=IF z@Q>AA#2OWtz}(L#(hkLQ?7-Kq@L8IjJ#!aC1$v(p7z#(pcbieRE-ke62vYV-H86O5 zMjo)He(Y)s^dWVa3Usj;SCN-6VV<7r&;J0`Yhp;NRqig|y58WtVmWg*!s9Zv8cah_ zoHc*ylRna}VzJcm4f5LO0yQDulC0}i4h(5@%Yo>6D!fA(Mb$@?_fu;QqBY%ISu}N+ zCsk%0hdj=ik>6FgcMmf)I>PZy+@u}HMafa)71+jRd!99E(Jmw62IA=XPJ2aGdPvvi zn(>L`bhw;*YOs*}m0Na&mtTt0#zkjVj71?1V0W#da#g%RQLbm+!O_QEH(5CBW2#m- ziVt*)z7lU0p(Ob`YTRC%ALh2Tj)d#%sMO+AgI`jfj`eeWR}WW;R;gz?`;es0CTLox z-U2LCza`OrjU%qB;$JF{+1lT_Hyf2!pBVGQDY@<$Opd{Gjp9`6AH384F$fQ?8t=Qe zbq_XD!0)j9RvUM@?KTqSWN~_A8a10B*oEgG>b2Pv%cN|M&NE*yIh&-#^SA`T9_fX>!Qy8097?aW^|sYb#aF&1+DI-=9y6TfWHV_*`)mi=c=Px zja`{NO1mYIQk$i{P%GkG%B9n8iW*O4Cdxl%#5us^a3f`MjuNX}CAZQQoHjkxh}dYi zIBpBfK5bU=i-WQjJp<0PWw(aB!N~)nrHSFVickBdNGq|#*1^&M)T-NR0?vOFp+9p* zK#@AFKaF-m@;65w^HPh8YBjv0?@d8b~Dx@@Xf!QmJMu=M!!WK zoifuijcX^>-kh(<3euj zEV~X9!+3uJqzG*{zjvOiDy}+*38wmVn~+3Hbw0}-j>hqd{#6G#`ONyZR~X}YY@cVW zbaxov9^r5j+I4e*u)WqsBlv^GvGlUw=)@V!WiAWg2I0Q{0EzN5Uo2{6c6cm*hxk1V zl<>G(P5?ov%;HB`OZ?yZs6zh$AN`riVEC7eIISSsO_tcs!26Z6gW&!qsB>cYwjT~g zysjX90?@>N5;#T;!L=(<18j{0muaA;iF0}=K2*+9m9BE62=<5KNjv4#0AYK*{?sMTsMz!3iXXlD;r79^#(kToGlI{ z%9xf@b`ueW#5J}QYBiVt|HL4Te_jI!c%D`j^-- z^&L^p4Is42(&4;XjZZU&Vw+nI;APlsOLI50O~Nf64OQ=bULN{zQ^WXc15xkA(5q7p=L5-72p!i|%4RIjW*6+3I*`{_ho8I+j#H(V0mQI1 zs$#11K@XUHtb4CyuY|!fhMX>Tyx5$sy@KKKm=lNdDp91`t#jN_g(FKkjHOyuft zs<>fI)hkPCo@XPj8Wjr(LdN91K&-Fzrp&hx!km%3-Z- zHZ)!Rzjd4OLzKreO&r!64N{ARXFKl2i0keZ`jneqiK|Vq{X2Y?g<5ndzwGs|PiJO> z?t_WJnk^LDXuS42sfuz2Rvo3r?Y7D5Q4Zz~xL4lRy_3qv4NiceP{6wo`O9SuD6!~< z7Yb_Kw<~Xl@E1MPRh^W$eIFs&aTn`%K87h&UdnN4@wh`=R@$M*d5lz>2#dAgGp(n20Rs4H= z{{Z}farr74^>MN47T!D|eJPNKW%y&J>6|UmJKPJTwJf36%Y6#jM9`R;*wbE~>4Sq^ zA5^lB<%rohA>PAqm=kuQGM#sxrtQP_f0)c{W52IkQfwiCu zPH=mpFJ!@|DVP0I7LveoOm2=x1Y8cIRUX^)Qgn$Obn1p@QR z%1OUc6?Z%OU8mxR$BdKHWB8`!AVrM%n{77eg7=o#d%~VU-4>%_*_uaQp#t`s#+?<%Vj0IJ&$41i z!*Dw8le;!!MG^<{x>4{WmPqpI==M;}cpIs{4D$P-N;iL#Ujmnj?K`IwIxzo`l%}p2E=q zLov%Iq9F92Q5zxLxRcXOkeMzVJ%iljKT$EjKL!FIX}eAdPRg{~Qz;6}eSr;$Ml*|&nHzet{|cL`53Y~3{r zF98gQY^{ne%LHGkT&&d=X|&~n=pXSy#MR2*!Vz=p7yU}l##QCIP|Hlu##ZK$eyct8 zL$AzEkP^jL1^05RpEt#KS!sgpndZ$LF+a`P>t_ZBy28S02C=DIxH)U5Kvd@{gpE28 zme(rF8gl+pgG59)=&dz@?Db2Em(wh*S>r)yvd^#C-ByiBaJ|-cA*H~Kx+#1CL(O*o z06?bFbS{pcB@5<$-BeohVY;kzCR}5Ljn4hiTK@p9>YE?+Iv%L3s9e|{qN#30CAJN^ zrx53S?1sZ4_Bx+*MmeNj-PVebiFrf$xl~-q zGaSxVol0ysPvs1=7Ye@!EBSdG2hl&22$A#Ztz`w)w#hQW181sg#U)&&ru%HArSkfb zOF6ozJDaojn2|vW-!h(sbGtdVuIJ-C4wP z&e3&Jp^Ik!018D(TDaCvaH>?wZPZ7yxmGpHDx1NGJLm@e(@(L2ZlG=1O|b6KZ<2#t zNCz#V{bfzLB=WlY?vG#i57Fl((~>~4QP$*Kl!+4uU(qW68QVo}})xX>UzMe@kl_CkrR34(ZS z$IcFjb`U-<`6Cx~%VW1qkc$Rc9OSK6Y?i)*4Qpe}_B_9;P9es0{E~A_u#3mdGjs$y z>-r~JWcJ4n6Y0L{ZH&OR+U$pSICDruWYqxlN@S{AEHU|A&7@j7t2Ep#H|nW|fM=$q zS*GAMb7nS8^aboWGCFRqGnLbtM`ccp{{Tg0gH5`Hk0UL!zP&;tK!en3fX8YPei;1q zNic$Wdb_wil6g9dcL}q@a^{j0A1x7@$$SoGNIowPkaeD@M2w^hoj^|aY&7hLQVReX zt@@xK6+&{MzY$TrhMws>hj#+ja<2D6wJyp09rfzHkX_gOy3)e&S{ye8m*=M`E0USltrHUKE%IBp*f{{S}%>UA7FQrk~uvRdku zeEiudix#y4jVcu$Y14D2QJmKo{{RZj#Zk+TCBBDTPj#t9l-YuK zHYBNE?E%D^kAIOym1bB~Ci z@3ew546=4YePMqw);3fQAh^b8JrOYY3`Q~b4*A$6j?EfSP1u|E*-g01`dme>wQ#-^ zHHR}?O3c#H;;r)NecJ~602V(BqxQ@}E^Jch zx(eK53&QA%G}_x}0<0sQ5thr?PY>XzHgR=)_r!>>m7|0I07}EOw9=zZ+Vv}!!hfl8 zy0b@;i8gt#3eA2Jcxm%7IJZ}*KatQEMmZ>?OHY%c#!%t7mJyPPBv@ozhY{d3XuanP znwz!C9V6te(eVZhxYKteTcVMzO0x*0{PXbk_fwy%D+xz6jq^OLwHuMzPf(T&w+!6b zas^`-MB*MvY)4e6P|oq0&0`vG-E-#JNt&oE;4pQu^|K#AIvv8_#A9&$F9;~n%OhBF z%&W%e;OY5vSltzB7#8F6*Tz-y=@b0X^H+n7Y=)=svKZbfb5ag1j(1dcondZKsdpAHNv;n-@dxozt#*de zd#T4qYPg(li!0X7^I5|-q`Otk;n-^fR<(CCaT~1cWoFZ@6x!kjrE)Qtn9zWpzFriNm#OZk$w#G`~(BbS?MsbedkSbR5aL+K@OEi12 zVrk+=BCBh)^oyyMX={azhI{K`YEY`#ZDDSq%GZQA{uhejsr`x0q*+Xgv~x()P^)5b zmAG~!RW|^^N2hq%zhl&qdq7fs_n-*C8K)=X&h7CRkuE@-MTFPDUPp( z52sHH%-73Y=Kdj6$8nQIl#5w3p20OfA-D>ie-sQk9&Hb_Q>Y-#?d(;5CMr>!PK}=n zW3d>?`)wASk0dzsJ(kub?FIqVK-dMF;qS3=ECH{Fd#DmXgSTa|R{#S5HJd0}mc(<| zs#mBTaz%!)kHT=(xULP7*Brc{<-9Jp4Zv`Qtvpp$+>3*xtrJF$38B>3);CFuEF0)( z|Gjn*)g;4^Zx*(oZ;*Zt=Uu7#{-^eC9}{e3Cwnt77>;oq)er7)0*A7CBTVgI)_1p zD_CpM4Xw=C=KlbtHiBCvx~0AVoEKj!iE1M+2cZ5`AJb%ZORlCM0x{YMh(%zwQLp?| zSPT9u4Z5PYnbzM$E$Iye00D2RD;uHoSU}jJfzQ-w2<>Ltth3QX**Sev(K{qqw@nlq zxHj1m11ue?U(iQGX39O%4IZAGC75PlOIbO-Nr4Am;jW9WByS)$T@z^Fda8hBywcd*Ydv;DG9#|Ap&-~fv$~luIbPG( z-6aF0LGI-4ha)UI{FI#QLDe>4m)%kjH<=RT84RWLYfXCa=Ng=rGvc0|9FjK4&h zMcTrA#5!`@L@q&)_1J2Mr!Kd$oaUIdlWa-;<%$EEyDdXbJWX`|EbGohsa=6OP)a3`R zijAtiPUihSiSZB4Z>Pb_x-J@-vxm7_aU?d|E@0^NZMDo+_6eNRmImI+h7OLCrr<4H zD+^#92UX3Ud=|Sju;L&L(yuTETVeUCbX;=&D37fJ;+2bhmXOuo&1YCFd~JM^f6FU) zs^m;%>D^%C@qa<8+YcEnlyR7X`<+e9=(F7N=gS`eYwU@Ls9Z@VTd3dUs=2vq4sKTu z#dM_eAfQ4jG1z5;N%}yb-#o>plU{|0|vs+i`{Nu zn|aY?n<*O@XBSwxvAVj^m5>_f>)lhsIAovAUd_r6&g&<*9|c@PISe+-HnVw&KSimC zc!LhtqgHMrUwud)k`rYVoZC)b(17L~zsU;G(tdD)>E6?#q{-kI>UP;o66X4DN`YpB zE%!(cTRA!GQORnPh_T8x3d1_)RKvu;cehzaW9}Q#T6YLVuyWs1tf`VT>k7LbTmJz2 zBDLJnu~+&c!&{qINYN7}Tc5!Sk<4IRZwk`^X@POKMM#%JKV!07tke9ILIfVWl?Gn?9&GAo9Wi8-3+9>6}rPJ4VLj({zWQ%!#QRckc^9kU!k<+K- zsUWf3_;eP}bTZu|HLhVv=Rud|G)d8>ox+vLL>(iTyI-n8THpdjz>yzR&Lyk>-@f5c zi8@@+TJ1L3O3|-ypd154xv-Rr0^1$CCCH+J2JMzR{;Gcv2ShOFG0eg%(xH?+pz|3|NI(k#pHPj^%QL$${1(3s;JibM)$*`-TGhyM)KMt}Nw@x5AafBJ1P z9|@`fKZ?i4{{RKNX@ha|I2I$zZSyw&07ydf<3Z}q5;BqL5}q?pPO}nML0`b!e+&Vw z!SRADW{FjghB&)jKk2xxpY1#LNAlwvp+eD?*>1Y^)99?z>Ta!nqvJCF0Q)8&PxKU- zfv(T@DO3?-Eg=3VeoS{IN*;{uva?8n-&6!9QK$(4x9je#vkg$Pa=6FzsrOT`3>-E_ zzw=1grlp3e+vIfr0L55l0~AO5H9dn)hlxMsD2-2GhaG)N zbz6n4E+9CTkO1ntsy+zD(s-y_OuT>#symg3*EIA+#mMpbrdU(wg9+`{nM zn8W60acTHVZWiVj!?ZAr2EA8eYZE2L!CrM5RG(h~k&kR)=ro*8jXtjt ztZ?s~xhgpG18XjjVkr57Ue||lOKZk zGL3&F4&&!#%>bUGLwCB)b&7q<;W?sbK)fbd=prR!F9Bih2tTvTvI zQufLio-4uW0BJsAzy{6!ODew_sP~bE!qg3mauapvxE~Af+5*@{*zc+(UJ-=M_@vMU zo7>48`zg zhc*6d55#V()_ZY{oUP6A1%p%iY46#QcQ~E49n{4WQQ?`aE_*8@1AkYvDY31j!wvhx z(^WCZOz5`ELooC_wzdpF47nv*;ruF->iPKVom)>ehq}+hMHd?G{{VDo4@7!r6~wBT z`>H<`L;4i@WWl=rD~F=*E%lnljRSilvbPJaXAsKOXZf7~sBoMX4vWW=g8OA{JldLm zHeEG59#@LBFtmD+Ns|;uOg;qybXQSc(T%Fj|9brWnLv#_h{3XSzRSB4T}6d;5P7Mmvu*l zV5;B?4OU!qmDOPJ^qSEQYV~|C2-(f$_dLd~7}GDOQLY7~gYWFK@jNV6eCBoTIxj`> zABUU7UsD%@b47FT?Dfq*gYh{O{>4%67KSjNqUQ2=-VO9uk10h?8G`#bkHvMK48pq^ z#%a_!izxFGw`ANe_dB@MxJQT4w6bp^7)gd#f@m|uypWmVBvf|jWb4sd6Ds*mq~^2V`Yc#aMaJLnQnRPWpaK6 z^C;n;j;PNni%f~uqq?o9_>&oo#G0b5JT@MYfa;I+p22YEZdQ(sB)K~N8N+yg3@`F< zxO#P6>U${$=lU$a5b$=^d+Us%n};`J-98JCSF1xXt4|Vk0@Lj((=iqCR8N^pC5U@B zj=-$dIUSyR#VEH6o}FyKI73L&Hs4i?!Z9O=Vlg~F5XQd|hZ)!%sRL2;T}K!#z+=W2 z9M3-sSN*!55bU$~hXkX8#$h<84`kFfd$u5T`D(j7PGO=m(L$FAcNb-Pbi-ZTQpPwAb(w5HA0=d!LKnJi)P897|(r?~b@66#GNr90_ueyX_F z>tz0^9}nt}U!W}GUTqR{^AXWDZkr?xt(4BF0cYj6;HJlB5w_(=F1rDuU`y;9?yUgr z5(i2ARKtLL<&MEYkukX6^-_$s*x$NOLC8j&jgRmm)Ad`D);l4X%O5VNt#H#XPnws| z2OQT#WE~sb4VkuW(P?HM3=hd& zqLbiEwGI5XKI=eaZ?{sTn$~RhPV#jQY^II5XGNwiiR6<{#2nGn-6@&eYYHiPTir{# z9F9);WNGYy*z2!lJi7CIlRERthzTO`mSWr41d`e2&(tCl5(mtv8$k}S{{SIh5+WCI zwukysJ$m$0Csa3#qWNcVfEHYDoIfTnwBq5-u1QSb)%vg^@JuF8G3)k68L)jM6Rwr?LIlT(NX9M^S+WY4&RYyA{j z@Yg}pZdE+Nu-~a2RF;Gvmy|Z$N>Bd)0)L7}%{1SsMa_tVm|EY6%8NlQ=mzCU%_YSC zDmlzayL)bgiKB?3)BLWIFD}_>;c(~PFLhT7LIzW>Q>xd)Q4VYsZzK1!{8M%@u=klW?cRhNpWbCa2{HdBtq3m1xk zI}>8D@pX&D8^-F^AcuTX4xY;|5mdS5x@7QYT6pTB-3)hMrm{)yTKZ*QV@jkoKuO}93N!1PI{D?#b_%65WD zZ)Z=sndWVsbGjZ^G+ndTtS1hQ9W$r0iBeM425IHBy2n*4*VYkZt&e`GKx}muOdZV!>Jn)>YFnyLbX1JyoQ78Kf_y)Rw`qk-VW)1_6l z9zUu=@RolS_@*jwl%uC-_5tvQD9Tz8&rT)7#!9H|)ogd?EN_FZv z?QU0Wbe_pS_}@~uEjC+O&1ha9iEEfh)1;tNty+^Hy4@Ey@@2`aBk2qu@t21_lvHQl zbTCKaui?Lnd>;_-8%mfx*dQOG`H7givSIPKIkiTm#VgXddw|>rDqdWYhJ^5)GwS+2 zC*c^LV}-%J$5Z7u_Esvh!}#&{yf*_-5qYHD7t8n`7T3c=slCuO1QLtAiRpMf0Ek z058RdnRBhO8@x}5tqyyf`RJkf@#t&El0Kkkh`c|HVQnfnTJfuVrp5kASAT|^NIJg_ z;o?W9${H`5aNaM)VVDIfu4LX7rufetS~FI2$3pE9{J5oPm*dK4`U;!;BTSNbPY+{t z%xMG)&+so0K2=U1!{`11zmo8}-YLb^rW)r%dgfJ|#c>r6nA*++bX2^U>`w-J(>yoe zJWHXxGl$H=yg!G&535AC{R;;0Z#SR7uLZ+#s`z)Ztyj3gk~3acqj+!li}rR3XDixu z2UUL9ztTU;l}ANe_*vk3B-K1UtdluI^i|v8KL=pUw+`Q8`(N2-@!uBEuS`^?_OYkb z1D7PuFzVQ-`&6{db1KzI8+tus2f+L`${u|j4ixvxCf@0&@g5q&e412gW!bC(-zDWZ zuNKt6ebZ|=wl+ee;;L^Vu6IGy=DHGxY`JfP*vA&bkN|6l?2U=3N%YwEx_UKvJA7i% zk+iOV<$rLt_;-vcnQNU9c`BAN>6N8tON_?RZ_;>?I~t%jO+RLL2z* z9=R2HPePrQsp4AmQOym=VtXx@(qO&9xQ#4s968K~bUhGw#|bW^`m~(TVo2&1cL>MO zWwT3KO1D=TLlE;$omR_*heXn4G;+K{0bZ3r>Ut5#MxDVzei)1(sZrl}Cp4`dAynb; z;)%>0(=9!U%g1p$Q*Qo|w90>2id7nX<}@|It^nIePg&!Ut+v;4)8cKW$~41U4lEhE zi3<-ATObt~s}5h6Rh~*1wu#pJn%Tx-J1!@VG`|&A9ijA_61x0lY~EXoxla3q$9R#2 z*w^`QXm-suS?2x*3R#ZU1|FSKqgc~@u7^&YO#c9S=CKl;7S*a+G_}@G88nq5eRn^3 zy_N0{!YX6lF&Kuo%5L4%@Z2<1eEb6E{?@6)`834}HV2}ogzP=|M%E7;+#&KXjA^M6 zI}dfWfWw!OP`AvjvCCk&+zuGwDgC0iATcwkTP^V=JT(`!xmhC7saBOF%<^%gsKL{u z4A-kBJv#(UPl#}s2KjWKpP*vk=y5Dx6vVQdYdB4#_badAo*%=}0=6p<+1w7DlzE))sROgv~#vZ!OfiuhauOKH13 zwb2jS1e#hvxbJ{C#wFk!R5y1Eu7Cdk|JY)RUI>GyU6xNRn@`xINgn?nCi=-kbrRNME0 z(fg;1P3%ub%|0ndhkesooQ(il7<$}yi9y1)odzB1*dLbbD+7aT-pbz)I&CAW>TvkS zF~X>8c}9ap)}^BwLc{n&i`M3?#u^;qIVrHCyTTk%jLgm;+LZtTDmFA)7;ZKz$CB8! z<5jbRuTrZgFJme*_JWbZ<7ja@F^9)t+V+v_5=FbNN00b$RzGOM8ZLVi;o3CVYEZTGT<^sW5o^edfAtE~L{(;a-?}II)fNoSqSH_da_oUxjY>p{ zjqNEujTh6*a>23LJQhl%8YjN<#<9f~n~iaNx!KI=v0XQZ8B>U2X}=K9x@MI01!3^~E)t1jDml_M zJr_rZ<2ZZ+4H{0j^9HQrvCl~K7vr%Qnl$iue5@7$t#{zMe-Gd|W)7hHa~o3;@S2Pz zqvxXY{{RHwF??4QnwDqNnI|+x>)0?4ZUu~_?80}{Dw$2ea|W$Cfs6)@9*f(*mz6bK zO$vuCW;&HYrpM$^-HD*fhP0E?#b;yqt66NmYjrH%J08mzkdvAIBJk%P8&arlcQEH+ z9luqFhw)V$H5?`ewJ*G*Od6ANTyL`KDr1Kc2M1T4jZrjQZ#|ce_>#3uA04ZTZfvc7 zQr~MU!#_nVuZON+*@wja^#{XW1~$IXiHvP*6=6}jJ7Kt9bHcnr>dX`=KO=z5$L5cb zU1tyRZA#Py3hisa)^%a`T}iC8Lq_E+b!;6oh%BgCqa&&6rH1hp3}LBD7|Sq8S#RT% zX;Xig=CYR5#mPR(t`mvy{9%VT?AiH4ona_=f5|_Et|d{lDKe{FG@f}5;B+e&i{dJ@ zFwk$9NP>DRd~&mJbVVaq?Er|TDYuq-O6E9+5p`O0u(Y1qRU8g#Vb}Sp_34>4c5=K) z^>G-wt*cecEzo}I29#k#vuH0Hqw!n~M^iOJdG|WXqlA8D3Kd-7O`xZbkJUp7_-Wzm zRAvn0DCNr0mF--A7{t_lXSucn&6h`j{{Z}Vn@c-Q7upKJ;`nyuE}@zyMOKoMzYK9v z&pxR=5c3k~4YFwrp2pIr>ICJ8{M76Obsbb%GQkRMm)}@W`2A5Tm%th1<@DVzQy^x8 z`lo~Q=%dY;ew(50!3fL%Zghm>(;d?~Bh@pfWU}kb>usgcKqJZoHvQB3VoQ_!KfbCh z>RjbXfJqwuX)(g_Zt4#*;Lz7V(o?W=N6reDpbP-QKs~=M`4%7MsI;0Vw)>znr{Ipx z-wo`hxDHD!>Wtk4YBfM*;C&T_9YdXMU@2-4`3}LFWv!h*x+4M9Xg5Ko)1Kb`$j$V? zcDpRx4nk%l*&;IA@kyc^`>0kW*M6XqV^>(+KkmcgMvLCvP= zG6!;z0zmu}Gvy#<_D=XFeiF$&ZQkd|(}Qr-^Q z4K7rSw@qSF{09TE#nZBxbE4Xyk5QdADD8X$%X?_EYoV(XrqiNYx_Ur_vmCwCvE1L~ z(}IZZp`^#j5yLgJdrD`3Z?>?6#B-D>mY+_BMn~AH+PG4ZJV$MffPx$Dv z@ek)GQguRC90csGQR4LS#?rE@INo(^m7!VzFzfHrn&|j;8sLlcS>)qjqk~5Whqw8v)T2%t8lmCn@`!KA zUS%i~AG*URq-c}_9Gu>PqN9m;$U?nYu*l8Zy2r-608+(EfytA^aR5mAEVq{zNz-Lx z82y8^JMO8y#!hYY>=#du7}1_iLJv~_(_dw+g<;nu6`6*nL`OK8pWSWY0WtVOJdcSb z8dy4U-d5foou^^dWnkktn*eUMsokNYL%Qc|)&o&#YbP#UEDI;PXO(I$f)b!%htRv6*#R(&d&XR+T!VwG&JBd*F?wb4buWRJ;DCb6kN z4>Re5(O3=*aO!tZ*q~Wu*VRp&uJ_p{b;_n8-Hyq~!&7t#A2fD)y|zFa_Bx}{Jj8x# z({w>+JKG1nk}qkRhct9T^GUX_pz<`$snC9k({fA^sQr3I%RZ}vRhPRfNzBj+rBUZx z-}b8Ahr*?2gCIH%u&O^%8NO)sU2sFLbXDp&yO`W6V;R69ndv1Ft@;fLmE1i#DFjz6 z<&mNrm~(tF5FuKCFP3}mg7%HQkGh!%WqN_X56unTbn1-o8e^`gFSp4Gr(Kl8zpGT5nk-(O z9q-jW;_a~1Cu>Ac&=k()*4@(F0NwUGjgZLHX|$t3aFLeVAytytE%_%*Bvcq^ygHk? zg6TMSjPU`VXRhBem=Fonc3i_{w+>UzBuCA0`FwHyNY@e+B5(IDQuz z!f@|t4ig>LE-!*q!#KE7aUGRBNcZgIzR#Nf0Eknkh7YlGzje9f!=copVc9|W7Mr#D z{{WUy@O>IAxqy*$mLE!#c*O2Z+>TtlsF&;?)R(){;?AV4nzc zTC-nwyZ({z`2PSY#1_PEsy`Six^n#*nV5=s$ab6jlUQRL25P&A%tM{}DYJ^YjAe76 zbXj#PP$JE6J(YJ>1kPuBDTghNv~(@wwIBC+>~#e|@ee8U=D3NtT-8d%NDpv3AZM#o zh;xrpdnB=JUa1{LZYxdqbF2_)@m9EznV@vcuqD-90oFPNsl#|nMk$psu8Jb%qf!Ut zw@J4GgptwVv2DWPKG|9A2mb)14u`r_JX4T{hrmCNy5~6FHQZYeU59lxP;V_dLeK|Z z>pG4eyB;OZE|3+x;l>;jAO4R>e;+j2Pc2yvH)+{i!}z|vDrMQ6`{c?sjsdC zFY~ctqg{A|@?C4I2ULA9{Y`;b9AgeM<}8-)9aQF@0fy}6snD%gu$>mg90O@E8hMMq z1kGofMpkl>s<2#WutVJPbqOejXy-v3_#Rli{%F_=G}`|FHmmg6Q=$uJGyZ*$@wmrP zq#7OUJE>Udu{}Ytj^h+;Jl`?HVyDA!-|8pM#O7rmg`;%b6N1og9hj~mcRuY0WF9TY zsPOiASbEI>XhoLT_Q-$!R?XqXIDZa#K2uqjNa_}668<3;K3eT98!j6e#IacV*_)d8 zC17zjV%>>-I*zHA=&k1BgZRJw9Y+-L$*%HC<=q;&{6`V)yG5Z zyM7O7Cv2YHc_JLjjhVtokzNzS~ZyP=Q?^0%b96H6w7iBokQjkmhLuP z9}U6N!!T8>-eM(S@Y;TEE6q9s$`p@QP>ZCKAEVVQZh7sN)B zVzb)8zeS?Y5@7`~Qk`a-K>^oSO%BoNRd~H1%hhfE6fupVRfb;D4vWfhUN3XrTG#UK zrAx(?007l!8!mkPWY*d{?0KU4Z=zhQ~~;fv)2#nGo;m~=txu(7l%Q@uN_3K;ii@@uusBXZTCXwa*0 z`7v^pIxbo`#@2Ngkx{Pw6#m$51E6@d0Xm<;k<9O!Q##E+TK5Ha< ztnx}A+s5q2;k-hLtK_+^rs50`<#!9jgFMP76zsDg=7aTE%)>ZV2AkaS*)EMBr{TCa z96=7u^Ca6r*-G|LMdc5Zq8Q9pQJMMa>*~BD{xESFC5{228eg~Ws(++bW7+nLPK`S% z_|PzQuE!P)2zC9|$!8Q~{dCT^faB}Erk)}B88$hrIu%F6I5y{HS`70mw8?gBDjX{k zaSW;Ewp!64!&`L<&k&v=hGC-bEXO0phD%lL@@tE4!3}@dp)dsmnkcKN#;zp%v zZsydtaD&A$+(QiZQ>@8>&et|URN0BbRX1a>jwjUHwQ0AqbW0mtQ($RpmTf*FTk39b zG&`*-*qRQO*2?j-hTv|o>oSu`EYT*cNIhCudY^jMx)0#1{llwG}@Y~pw z*>c#r`-JEPHv>zlTRcUzgfe+#ItN8I$%E5CkOgTay-XvrL~`8OSEli)&DkED?CYs$ zG+CxbU<+@uJ2xe&yBsq28ltvh{{ST{vda%Bn|q@&HQZ{evID&`bVX)Y3v5LJ@qS$QyDA*JDpgIpv(JMq9zf{qdI`8bF(_lx` zq7$&tM_gO+QEcz?NzMb6LC5y@M<6jFw&qZFvRk*ho80Wcmg%TNpXB^i5+eNHH5QFF zi%Ly11=+1+hQ6yRd(kWOmUA)kQOtjpppBG+enYB_+W84>K*T!bl9hlxe?+G#F8UPN zvzZNO>UKi7G$l^r<=2H4+~xWv&6vhtX-XgmY(#0%5w6ZUDBDfpNscYC=bh4N zY!fEQXv@^6H%%i%_ckuF&dVE|SYB!o|jl9oCH6oxPCX1NKL$$~~2Ly56NRQzd^!el9LESbl3G6!2T= zved82^SD_!w~6cTqT3Wrl-@Jy=$$rH%oo7S^Rrc_oU&TkJy2=0?=xkCpzH3oO6Ew* zR9wMP1l)X=O@X8!Lty^^nk=3jOjzZBbzKetgueQ07CuJ}j}_UcMv!X(%!{N(o62TW zxB|fwD9PPn`Lk3}#ygh#Y`NYgSV1D&LfpsH${s%q%a`KygInpDT6om7Ms$qY$1}^b zOl+d!2@M*Z4v97$-P(eC^-#|)1X?a9Wz*D|L1u-|HeF)NV-5W|wOIIK9i_e2-UcL2 z$~={9YvHql1Ln4aDLkO$5eHgwHULIzvh6-N^I2V$<(Iap@>7IrDX zdYkT%Ms6(XL!_M+EmxOTF@B!wR}@Ka=&|b$y|Y_up405N!eGla(KfiWb2@eqj4D90 zoK+UIw8^(l=*_5N&9T{OQ}B=bG$_EmCAK_eO<{}Xrl0_TH_ibgT9lpsK@h2(4sWn4dq0PxX({rf|-!p z{I*raQXA@s(5G!sT6vYN(J&v(%G-ar7YI*&TYVkesAmnf{ZO9s>{X}GzeQTCNk2tS ztHhC~Zi-bZjWwNiRi6CLCp495h#g1tKp^EFqdIg%BpYV>A?7y9?KBGSVkXxEW3K9D zyuc{aJhFAs9k5$DTWgP!i+UY$0qy1yak>-vZZ+tvzH?o__E4VQYik>BrXG?4vziI- z(E;OAp#K0gRv!*=0^QIZCeCw2tC0e6w?Vpq8RY!BDZX-#!9Y6qveS(bA4u3=@%>aY zJ2jf=>WKTl)gbjl&n|}8fF(UU91I1B%kENf%-{xNX_X+t*(K6CCU#~v&a~;(C#NDA zz-5B&x+z!y4U4Qs>N%v2-G4-^=Mhn@u==K<*hkQiGk!-^CNw(AIe^j52XnAa$aOOP zI`>QTBj`QPa9U9FYpOsp!lTa+EZRxtR_Dfhg73!WO-+%wTCQ^E0D(&Rmsb|;6_q6Xkt6^X<6 z#auJ9Gw@w+4ad>qG)St}mvsG9d%1vXlwh3A)z&{tD2jAyk~2UyB(9Sg!5dPEb6b*E zJ&D29!M;w5MGt~jZEUAghf;f|HM**g;nbTlwB3lb8=uJoCU*(A=##-liE1ew|a6Qg96p zoybt4`x|Bn;jU-HJ&`Ez*nVQ~s@C#Ljhg94W)MBuO^UjxK`h5-4Q{2XY`{}%a)xsq z`URz12UU(BI(D)%IBBz;o0s8Q#41AfOvOAnVdKlt>PoL#jX=kqXov^0=&==m<#Qxy zJFNQL?44S79Xp{<0V-_g+eFd$n}5j?jZ;RuC9o!87ZXmEIXyH8RG8|767F8AVj3=u z>NxxsB8jDn;q=Wz>8VZR5%SSnz%vU|4)c!9t9}aVW@-fV)$|GUwe$WEtF#K=qVS^Oc zX9mp*&L@oG>pYw`BBoai!MUa*P!;>8<)S?r(>Jjd+%XJ>IgAI9g7)gVTC^L)cxa|t z*P28eqQ>KO!EjDFim!}i3a|47$Z2fEcU?9Y6Isuy9QM-B2QFolqsUUc2ueb zcHHcJl{aF3(!$bO$9zEV3q_LOGY)JIr0iCHF96q*na-t93r6cFFZ5~wwzdwHJh>&u zRZg=W@LY1SyC2yYGL9MLxmx!P_EMQ#HJ%z-*IXQ0U>B%D#Rr z+`!0cm)aW1CE9GWF}SMrC(CS;r}tE|QDcc^{ypMQ+&)~+<+z2*(5+XBR+nZYW~k%% zKM<`-OPU?7Q`2}>xE34iKzaI)&1r;6Y$7ytyeEUSL337ri+D%aUr!NDvrPJy{tt`L z3=-D?^hCtt@OZiprBS|RHxEwIy7OK zii#Pj(VI(WRn+kB3gGBr^J22YM3Vj2p0LVX9S=B3Gm+t32Z&?9ZWfI9HVf8#HQ}m! zD~2=uMeSuFcQ>lY9wFhp8KhxY*OurC$Krk};v8lC)qd=HTHO^dUmdq(Hr-;5yNme3 zl{S5sh0<#%vy>H?!&-5*vpCB~t-!OIk3D-9COKc zASNMEJYcz@xts?5lxrGqV3%HZS=AYM&FqilR+#?)jI&#bPvz=WzS~vpvz!M-P0t@a z=R}(F;z)0~2!2HyEBM)`LljI5$kj1|lV_Xyd-hrQQC0r{?Y2+(qSL_es@0$7Rc@LE zpOZd~5YV3>No~@G(m6s zd$-v?5=z+_Ht68^_lC>dYBkYUu3IihVk_WlnpN82mtO1IF*s)8K_e*|z+6{~d^6`w zR<)(W{Ml1ep(n#IXya(sq&eW|67xf<`kNZc=kWr*0-NLZs|%Dt30;POB#qj5*0>Y_7a?S-&H>Enr{7@f=GfwH(@wCPhH9@jOkbT$Co8A?)jV5nS#iOz+<40_dyih_8Mx;(OJ8n+%bsO-F|qlh(#BW^ zb^50Bkn}pN4;5?JX_v%^^lcqJ|R$={{VMcwl3;>tBFu#>727a@tc@tWXLF(3iWH# zsfVQgd%B$NMxkuh!_cou^c>db_zzXgQmOVFc@42^><+3Sp{Hd&CCBTsp`%@y+oWzi zl`LSW%0a>3by#L>w(;C8j}UNAx4D?AEy#6vF17bqd|MM*v+1?1aHof0V|{|FnGsHE zH}0x6zFE>V_duyRW2XI48C1X1>l(D^Q6Goet)WVc`Q=(AuMtvVLiT2YvC zgUeyn2ALT|wrBd08_eMj-6)+hf&ykoybGzh{KV{31EAT^XGJFvL}mIT@MKBM>EB_Z z6Z3D{6!RC%w?sG0PWvJ`0CT7)E_8QI&T^$E{h zFgs+FZHP-K&mzg3?qe>_5Rh^ffOF5j>q46dn0NiE^cY(Zt}qYfaOxL3frEcD zNXr0k)l#bCa4%(YuO^oo!S1M5CL|+~vpW>?aI!Hxvo4r00@B4*Ip=et%XsI3_^zB( zDI#nfW{_Ij-gi$;gUl0d=`a@)&0vp)re5hSkgf41Y}vq30fU;u^IMo&VT3zx)n#DW z01k^=2;hD%aJhVtUJ4nc&Q{5|K&P4<7k=%YK@EE2qS{GV(AvKr_uItdR4N? z8faCzZy}MP>al2O*QZo`F1oPF!P>gVNm+DiYBOu9uqy4+@S-$|FFEkgN60C8hkvT6 zpO@9`*(TM80h-;Ci=Zs|h0Zae6Y3nktAqyBHzwUwO+yy?s>W8yC04gF1L~_e(WgZ> z9L$6CQ7z?KEy#g`%XYR#oz$8&jnjq#N%?ysHG=cL{T8?(3Y6x%Y;;9r=8g9DOdXfv zzQGZo`bN6SmaG9jTw_3XK&sxKP_4bDAi2b#J=t1GZRceTJ)x&oQhTzvfw~*oK7A3N zwA^hdPLVV68>X5i0DiJG8p<9){IZPp4L=k&Z!XhiY4!;T*=%}k?hx|8vtl$-Yja55 zET$lR5i_uWZfVUKn=?OxPJr0Wriy&d22(+syG<2OWW|s!9-W4}6wPjFhiRcLn<6+| z7}EagI=|Ho+=nN7Ok#r&TQ}4q53Qn9TGN{_%Nr>GA3e^AIjbMxIGeWV4_B*Cs%H1u zId8=fgu5ubbwO~~p|qntoRTfrbVD%U2UTANS94D8kPJeL#%Th?>)9RtqduOQP_sz% z{L@c@Sr$FijOnI|-8@M%n_VwuPUX>|8U;31W%1o5;9!!~e_<+G$Mj2hhQ@M^c(et_k3!-6Y+`8&PJ2VU^;fEJk%*>A=bM3_C(Y@mYnFZhb?0xH)J}P zV9KGv+Wi4h0v;jAtgFt!w@&F{g~*yk%m~iNb%^S$R-+9LZJ+@g-2*&7Hdqm$M`dbt znE}q7{z9H!G6~YS4if(pea|+Ze6ipg@1BgcwG-%QC!6sjtTt~X-P9}>e z)h%OLSkW!e2c0D@pEafdQ}$z5B|kh{m~?Y&|jM!4d$mjV_>TI;#N8(Ui*1$y9~AEL5CM z8-^NT3(~K5sF(ZP#^6 ziQ_-<%UP5T%J9L`e7UT1_5ddP1qQzKn>UfIm2k?Gat!-LYO-4l8k1>Sjl;Le^y#c> zwCi9R!8x0+r1b2QJi06;%xv^g30Z#iM>&XQAejZmEp=U(iuB2*<}{wCMb%Wq(Q`l- z2Et)f#b9vt8D`(8OWmdZAt~&`cM`7OT_&EYXT((*X3=X1*fkds!yRm|x6@Tm{Wi0m zcB=kdwm($=01Jb~c&bJNeTH7Cs`2c0DVbeWz#Y1%GlJB7L!j(dh97~D0du}ZEWDX9 zC5kervbAc#uFU?+qTzfn=N@M!mQtgKqey_N$>qjcf;5UkE`YvSqaO68ig$GFcj%g!-{#Em<-Yv zJ>slOYSPHo=O?DJwQ)5Yg`sy@b9kA=)&M$5GYd?iS|i6ToSk|#=(LdC4ue&fj>O`e z(@m_YnCZ)+^apUz(U|&)LvIMA#}{OmJ6Tw?-i`hK9#`aXJo&R!2fLB!vxxry^&aWi z7Oz#O!0@%2Nu#gsIC12jy;ozw z@buk5oVm!ej1-GqX5L!0qf zzC}tdA+4FPI!|o2}cmuhc@P6a6C(e)WFpHw^(kyhZRPRYCjX}McNzFb<1(C z2yrxvvP9e=sVO#(J8fqp0%A?72&%^!J z878!9p@#EA=3R4O6f%sEeU)!JC1Xss?FfevAWz7tT`*{cW^+N(6?ah2aM|s;wi?=o z@4v!}P*R&{9re6_Zw^g9}W=|}Q6dOo9##tzBv7}t^-VON7 zV=0ET&YvaeoHGGIlm#l8O|R~_-v#0FV@sUdL`w9G1{t`DFn${jpst?>V<@(TN=~Iu z4)+RV=&wH-DX>y^`^@yh9ab7O#WLtK%CmUT^LUvQ-3|a)Xu9|^ba#9w8TQNrC{|@M zNVwj6E_=m(5_SZ>wI*`aypF3q{8pw4jS9`HlA|LqE2yEz=<%!-I%e)79K+YLaSpUj z=<_@y4IFbR<1-ddE4NvmA>o7VtglGOB!?eu7gyqb5B563wKqj6ndu9c;+U}a{{Z2= zxo$b#y046zL}=pZkSNy7#-37g&(2mq7U1<*+LfqM^XbL^0Gset*~Bpps%cegK@W>5 zR^#=k)HLbx2H1t4yf%i_Nr2Ntyk@0Qk+!Im>zq6M`V4kpY+qokaR=uE5*x_0leg6( z&%rg)Z!5EAf?`z=IVG}lX|K9woWGGNUQ9auQoCoHn7FHP0%^mKb zqQe{gS|bS{a{S7!%Std2ee42GkP`qm@Dfskw&^rw?w=@d{YsnQa){N5v$R1Z?%4fN zJ`=bdP@g$__399}BKU#5yXXdpZy8{X(H_we_#t=EX&ZndW!}Q(RC5A7(k{*MC$k%7 zqoPF_VY-91WU~iPEXK)njgvf>y@ynDB?;|1&HC)3=WY4)QnpX>6g}>GCYq8+KcxK9 zk{N8WlZn*Y>4TfAuhaHTY#7taCD++IWVZJ^0GN!%K9Zl&@n8Nbwx9+ME@=h6>BDm9 z>F$=F%j}xMV&h0h_9bJr#Ln|>=@y9ir2SHivH2(tYbE*wuV5SVNzE>a%^ebK5gBZs zG0O$AKjf2CE=1XjT6YPv^I13pLtu1B#zH=%Arv@vXL?~s84_-EP-rRhb6;zvS}I9P zNA(3A8{2S{W;3MfQfUr!X1D64{28xC8s4YA=%z!icoPa&HwYl#{Ih^sCw zI(J$4m+~2Odn;9*F6`Zwb!Y23s#joV;@zni8Z7$FIe^Ow{daQ^8)0}=UoXCBChL4O zL--Ah8#TN9TB~?!L>LW^#S0CG4sf0KS{QZ~ztd}7Cg7OSqlEx4P0v-KMj5AFdn%NG zwC~j!v6}ArE_UeIAhqh75bvi&nT*78_bSFBtTuCNp;-9(!L5wi=!_Qv1Bk66PG4n< zUBfvUr0T3zc)v51F_rH0!8(=Mg;9=fe+0sB4z`kdsfP2N$rn1^L6F#oYxF4CVK8}Q zeoCD!3i~uLY%gdfu>vypTbNc_bXk}x0zf%uUz*s%H0^M?{EX8CYT)S&cj&a48DO_f z)f^ip0awIiwamiil+BXt9bhudH@qy$Lz#BpK&x4@7WmJpn}*~Z63hB}C{<|6X2|}RN{Mc3<@Z;Q(h6h? z%VhKknhUH4=!#jWZo1!8(W&2Hwf0*SXq`5?|uyEi}(2}3Z~$y&gvgXWr-0PwM;5*9qyphpv&`1Hn65NG)%v2 z(wDgTsF!vB0HoKR$W-J%Nt;0zjTE&JxBQU9j)v%vTCK-6pe?#rmg+zs#a{LI;$Flm7tqAw2cGZmi`STe=h3 ze^mEUtO^eTK{lE8Kz_H=RbsPa)abT~v!cT-&qSx;QOGym-&8lVDLp!NQ+#Ik)FHU$ zb+)yWNG3EpvcYg|qTp(v8XW6rq$VIb`=r-&_D!;)h~Me>rpimNvLGMRGMgx#`uvl} zmWg&j!R=(XYF=mZQwB*o zokCDiD_FYZXp{{DUG4g*XF0F(Nw5rM*ml(nlt9|W*3k{p=H?dY5leGA*8$H;E~0O3Oq1(I7QZ*-hau5(cCnxU_Ty&PC`24$f}9S$yt)P>H^ z))mSa=QbMc^(&Xj;IHvCS)D%*<8H&(hQ3GayG|9xa5(0$R&-R2HM;XJv<$Y(ePI&~ zjH`!sYHn~`_)2gYB?qoo@a_*B2^mX`rD9_|80ut-OmS-FI9H4DxMF2dB8jB$DL-#QTq z^KgtyqNX05LUhpzUWVUilQR%=2IY2_?ym6cxrq+8q;xCP-{Fo2iDl^1WQ_vG;$Oqu zK2J9U=P>ltN_N$XwvJ|tX$uW^*)>e1o|qdd_}&?g;gt?{x&hT!XAnM`jj*?}c*COQ zB_+H==s^`*Z3zn#8fa9ke6L6`cEZzjX1bAWCQR$P%*0_Tmu4);HzX}80evv>cmVS9 z+@_xAvKglsY^9FN5GLhm)x#REBQ#Uq8@fzwI#mNtot2-`B2t2`42(q@m}UrTppVT# zj1^ca244RF;ag9~(R0pb$lSgm4!%Ey)@PJ3?#wx}F@-k|5-h_342c*&+U zZoqq>KNC{1HE89rTQAnG+(mcR4u-T?X>|B}SjtATsohh=<)*<#mG?Z? zB@K@h{{Y-{1<3N9vtL>_@Z9WUbGuUrbud0m)U5YDO`0uX)T*3284mSCX)4WJOP?-2 zrxv)X9 z4J-w2BhFmlIwv`+R1v1*RdLvpMwVJ_gV`bLTPxxGJ4iUXt|}s8cSFVS?<#zn&8Rno zdQ|G;t3_A9=oXDyH1Jq>a~fOIsy~fx1oC{Gy;szx*mE5w!0eihX0SZfyy#Y|*xXCV z3~e^frBcQ4w+A0B(-wridNq~Fp4@*vT+`iHr^GoQ+hC~I;kbrrN@mD(aF~xyOCQNP znBv{btgqHFB_bM&H8KBUDmrs9!)(n%Q^(x%Q2fkxrFX z&S-4dofKb9%pbCK!3syC%gdF_Gh%wBQm|!E2EBh|sM4tKye^qQsZySDTgGP^ad$2Hn4>}D$$grFK8=djvM9uT zA+loYrp7$d1k-!1zHLJ0u~^26rOmPHsh+AOBC%2x{4avL4^h?X)Wg*x0n3ePks5D9TXL-S{Jh?x8 z(SF?!3zck0bDmCJbPAuESmIpW4vHTMAcJ$w4tQ=`8|Lh$%1u1Y(Co75)-jOj7x}A9 z#1|0WoAp`cMu|z)cyG(3@4K;>UCs)%T;S$wGY^vU{uXjMgHlMc@7U~^Ky-9K8?LYX zZ9rzI(Zf-vjC@sdOM$T(_E_9=g*yRX&d<&@ox;|@KARlMgDG~73f~*SHyeXB9sc7- zDeSu>hNT=X#A()~_yg24Y*s%QHTZRC%M5XuZvN`V0C4a^h*=d_Ss=FKQP72L^(qI(S&q8fx_ndU z)@v&kxDp}p)GBN_1%|9>vY~Tq;RCFc48@P-bVtxDhYw5aAk(bb&v|X5Wmx%5(bFS9 zmV!ARpFO!}w{$lF{J!Xu%bB*>H8;3i^UkQf4aa08J5OZ3ARTMSluEIe?%OTug_xTg zs!;Y$iQhb%j=j>cuxoXjq~_)^w(2GrJ+vyJ1c4>*{^)_H-?oS%9N;rYL|}W#{807*gu279 zRv9{MtA}O%)rxH&F<`T9$_xg_)l|Rt|cPWj~pDxuM@t2|w zTgTB_WRVg4tt9+{e6Z`>blD*AEw{p##V&8`h7cz}bd3qubkAun^;@ER^QM=&XAtJV zHaZ_<4GSpAf9!@^4=(zZClCZS=b{sueUs3M=a$>*hGSCM2@}i+`K7DABO9yGK)o&< zQ|t)WszP&~$-XXuJt1&Kyv-B0=%z{8(K{w|M5j8&{S$xu5XMV@Ift@M0gyEvl0EGS zNNvWUCltp#5h1xj{>oZuVY+t1@7Brz#jppfqL#)?G&ITjC2a@bn|nLvm!>1+hJ$0d z#F)!I$(7k;-N8c+xOK>x@VU9&t!_7o2{K% z>!`jm$=b-dc}!{gs@0qWW9qpuo0CnIYq^Hw=(B1(xy4bCaek+9Ucfg4|{(W69%=IWLjhE{|ALeOOx<~^1p2P<)-bEppL6s822|u>!&io#m-~R zZEUvj<1kKdvb|F00`ArabyGG`cR-tNh;uj)-A>&QGMu(_jW4R{h@%<|#(+dN$6eLj z9X@$?`PovY*GL(8ZGUC4f}&tXo6mI_WlR#YOAAa}s@KD|;C0nd!c%TuofftYoYGq{ z`4!3JZ${W7Lk`f`JkqQ^pftGxn{^zvO0&*cF1F!ea%xt@)GV0IZ3>}L(=z6nzp_1N z%Z&XMNAinlvb+b8QxZd7PQ&$8@{R9n1WK2X9q%cFMu%RDbeg2hMh)wxvZCS-7}P?p+&y z#Z0uF6by@VPgJ2z3}-u(_5D!(E}i;zPDu^*XoZ~SkEAMSN$?yKnHSY&w#u+5%y`f> z)72}R8DW5Yx~mk}A15_}tjQwQ-W8f>FVFK;B!(>IzN!vkV=Uct?ucA-d!*=dMCK<* zPDzdd5pn7L5L`J-nCw-ofVb0qzDN~;0F!>HM<_)sLpfypx~df?;98ZbhO$ogS@pIp z-AYnfP|jE=Z=A9=v?Dx2`3| z<=(J(`fdJdj^GD=pdmgDkIZXiJ|zW!am?v9 zBIPz=qnjY~QoH6IAvR)KIc=n>dKV+uFcG&$Udl~&Rvv~7{)i#PtvgTRq#R-fqi@ws zqN9M!Z~zRm`J*xN2VR*_8D|cgsfT6;HRy@pWtLWR33g`3K&&#WUk(nworzS${Q{VG zFQ#E*pN%lJ1>+=w?|UnLaB~A{ZF$VI8tRQ`A=;~yYtc5Trpuc@9h%Q3o*KW|*b8eo zZaJ08J|V?Xeq7Ey3c`EZ9m?q&BA1Z_wtFnr5KFVS;l4GkMjME#?7c?It>Hc`6_^D& ztu1zic=O**vtYTvbkSX@VJsMFavnL8zbC4ZkWRJ~WbsRsF4s^iKYEQbj z?gN&rweBNW4N=6ml6+#%HjQEQ;hi&Zyp>Wrvq)TK~r|=D01(+iqeZlGG~AU)C6YP@g0w<)b>J(yb0{&W^%q~XajZ1WE0^oAM8Y`}@8AR31eE?ZatQ(QJtQDG$FL#zSIwqY-EhfX$ zdsxiXEDorRs$Vnl8x3rzRD3fpTVJ9+9;QqDfLEl9n%QK<3kO{4h{l%*F4sooRH>Zx zCE2@nS57sp5H-;gp)_8m`cx^Gd`I(8d;H#dmIFqWL6yAc6Q91Xey=Hk;1NE}!2xL$uXfb|tJ}1=4yZ^J&1L z7x5V9F|$q6VzO~Knzd!x1EPzuA(_K(`5@GJExz}Zn@BOkvUDZx5bKk5(eT_mt2KqK zmNx$DoxxExo;Mn-z6-5;Zavk^zH0$)hgF%0`Q=(a|TC=>iI5uWA z{MLpJxS{|qpUPGfu@wUz4%#ZzaqeT|KKJgPP8eW!xC*rKQ=4;sWu3)YNQ#Zj;B*}d z%i#P}G5K@2Hg{?_6~?y@6)L;#=EQ!gV{%lLXg-rYRa(k`!95m^BD-IPigj~{)PBp4 z;@Ij>&S_QCLO)eggm}B`HO(^Y{R5zd3pM>3ddaN*G4^6bX3kPzj-A!V@mf#9ir9M* z@&~HmIOiUHPAKt7?KGbRjJxzthvN18ud}wSwB9xaH=0jnFB>{eEyi+Thw~Y*vgE2` zF)eTu*)2NDpu)2DRjTmnkIr``%5THxo?DIfT<<33BB>B=Am!$6s=ZoJ@=m`AQmom% zH$-i+4kEE-y>8O#)a;qGSHw7hk=hMaYLrcmodUk&PNM-kYJ*we^0l#jHH8hvjS}pt z$pp>7JFB=yht(g71DGD!A2fO((H3K5!cXaSDbJP zE~$v7LuJD77ou>y&lYzuT_5<`WaiB5T|8$D#0NF5fu`WC?ia)cHjk2B%x1^(OBGGE zX_|FJgP{u_2ZnA39xHj?P@ZYmaHBXmc`ctipRR0SGJ=hX>ApmI%48nMvf;6$5V4i22W+5;+`bjLvZ!z zdQC9X@=<;bl-&BXa|%w>9_qd`hGxJ9=52{Bmuos9w-CZPFtK#SNFmM**6Txo*QZ9Y zZD-`B;SA|L!lhF#8N!WQ&WCTR%dA|=)0=xjg|dw{6TWYjLA?58(y zpU-sN((mR_toK!X)XgV-O1wq*PMu*%g|2M0`iJbG+5Tl8Y~9py^8#C@`L#q`ifReC z)NQ$CHes4hZ*rBgNU=JNN^&za9KOL4fSo#_jmy_rL=@@OY*TY){HDjcul+p9@9i2L z(e!gxf>fkg%I3HmYh?g$*dtP?=d;SGdvd#{%>yY7f%BbFGQ|`=Zef3Yl&zM{a8S*f zMplw~B**K~9Z(MGbPZ11DLNhTK_Akf&H%+gI=@mzy-4bcJ8#t-ASBt-S?GwyWqhBi zjVBE>JvK&Q-z$LqQegoDc|bWwNJe9{{196^>J5=vV22fxEeCDwmqcu^$@)qQ8x5bR zL=yv>O_Xi`Al>(`>3i zr}l(TFg{1N_MHsQgyU2|MVXtRR!(!Yu&L5 zUCyblBd(z<8187$YNGE|>^`bZxSz#Ey+^qy<_0dHXrkkm*{7-<2iw39|pa9P9C z^I94kYaMTOw}YjY0?fcu8RtnB_gk21MXdub{j4(PO;^K14^NaG^cyW~B_nBTRU9*I z1-jU+N-Q=%Ah`UFP4GeTWTo6+)vBjm(>%~Mg>IvRTN^5Pix5Viy3MPDMcGcXqf4y% z&pEwT+^bd0e#&UoTxC5DSp#G$V=ekC_;zJ%yXd9|B6TTjMYV+rl=)&~xmL@0uG?)0H3v7R>ZOep zoWqs|zp}4UnSLwIitEQm*#@&4nnQahy$qvTGLx4@TP{~-<@Z)AH!EN^{r6Qf>(Uja zG|8TW2lE1Mdh|tO#$&Jwpdh=HcRwU-_rGa9QIcSyORRrA(ZkIAU53hte>8NB5yQie zWtK%NG}vZgx*~?=Z2k(S9pv*2qRQ4|^Fx3U8uaRcQiy2>P*Lxcb)6Jm2|lEx3Ux%a zXX0DGxw6)H4H24ptorOGXYoT3msiwDus>7@zs3EPn#?Ud2h~+F+YOb}ND#AJVXoJ7 zL4Mt~P;Y&dnbVqkt4ooRZz&sDAaxG1mD=!gHV%O&64yb{UJ{wux=D}e2bV=VX1?kf zgQ9dlnwW5O?2n=Fi-gHJdvd7QHcigK6E16hAwlu&)j8078N}xHu~8D(jUw=sP+0GM z)Nd!#C{XAE2Y)X1OGe*rsw_FZw3R0jsBWkM^F$G0(N8hUZF`}+m;CCJ4pInm0R)~{ z?w;u#%JAky6fn;VmRq{o(ak+($9ZU$)4ETj{ax(Kpl{{UfF?9JBJ5&0?7jYeVI zD($fZ{s^?}?%&E9q88ZP@L6v&@{F=BN+e~O)S(Nv(**2}!X2mmAw7&Bf!f!Ups@1p zljO95>-8Oy^!!)RX8x9m3eY;ru}>dNSm-t?oAw!d%3+4j%v}+>m*Y%QYv-osNWVad zOAtc;w)AQs|5$T1;{I% z!#q@g*J`dlu%Zh?WyD>^_Hl|-=9Xtvsj=But&FPr zbc3B~=Iz}c(@c8Nt}xUn^3nK@sZ_;bDVYv*!hyySL_^xL@mxx)o?6$~{tEab-N-Ck zS{`ZBY=AC%s^4R7V^P|Go%n#p5-&QaKN5V0zbwF%md4wFes4KBtTluzQ}R*+m=E&m znZy_*Se;YU#Cfj=o6C(7{T>4|6ZV>UOP$&_Q_vaFX41`15JBr8`>h7cof)p7DVA#b zBKfx7$@4kGmo)B+O`NcF->Mti<+??I)k_6ryvCZ8;no_WwfUY#({)YFkLDBeN%)Ro z4S~^BOc3PIZCYYLzwVi}iGQV0^J3xJ>XT|2l;g1?`>Tc$Y5d3RtDJ2|JJF_vRC#nj z%?X<0luMim(I*iMJxd0?NF=queyRb)^Jex_Ej1u!y|vLi1~iS7JlRPm3GFX_Qtz6v zPP@!gYitzhQEQua$7GmV%^4$UQra))1&lbWAU7~1+;>GZNx60PJrh!_OYY2x>r~Kk zp2{1xN(So9VT{^p5XD1Uplfb_L<+Q{)0nueE*F9aK4(HGYnkLR=^s^ zWxGyk(euli8>RPI_&iBt#URdI`k-RCu6o8Y`Ar#Ppj`?!WbD_Wk9BNB)OMB;V6Ikc za~B;tE>HbiBZsRf>kDE0S0)UM&5|ZcT)`!}JVKQsY2=f-#p1k5ld8bv9Tr_aBT@CL z2Hc*Co+hDl!K&w6pORku6qTBFaZYAJ*MG~ZJ{KQFuLm?vt1Zu_F!yww#^`4eLWyKL zPUEUg!A}FNH63b!+@(;&)@=Eda+gejnNzFA+Hihbb&HOk#bMUP*7#rCMyPq!0`bwj z?k$L6oX!V+p)M=pG5(cOnR|&K%=KK`_=Bl8HCMFmWdW6H@p{aU_9yC;wpXG`NHdIA zejWuXl^je&DNv(~##S!Lu&`yC*&0|?{J-R5ZgG8Runlnc0I-{L_yL{D}waaWSMU`^cadFh@ zm_!1jm=Y>j4L#J$>CK&Ua-!~cPK`~68C-dPRNA;@BFl2*zxWZbz&YR^PsvpdIy*yo zT3j-StyzG&?lF~3y&7b9AR`!##I0Y0TZ73EREigbi!5tUcs z1hIly-a_y3c;P{oZ0PuIG-E)bImqk#Dx6yn_m*!nO`Ngtd_txMwLGkV?H)DuD|ZuB z)$pEcTMn^Z9|@U8bL+bdNNZY265v-o#Hdm)ePK#w<(n>%-d_^Kd7g^&xm*_HOT*5Q?WwzL)*61coZKDB4PuBz*s1>9rs7+g*gt}6#x7(p&* z{$<2Jg}LuJU(GtC)g;1fr&6^?+~zTSr3SP7#thBBRcjeSts1O$S43VkRI5uIXYlT# z803MZH*|CgT)9T&Lomz+@pRhg=Jr(%mjN+h92)H%4$=}@!7c}xK(t7WHwg!3IY!%} zIYFSAwIec<`A??jf6YQ~cEX-gS({kU_D%4_LASpucRYs}Zki_l0B8}*2cl-U<`a07 zrO3%;)bBU{0Hj8=HVp5rc5+{{WjJvArDWLICEL{{VDaQfwV^ zp}w{_3l<#Lol%Pej1QU{A<&G`m8O5dvwwvXZ!Ly{sv}xl0Xh$&gCgDcM7#)e#MwjX zXkzWvNziO`(1fis$~}}{I+tAD=xhPMc=<{b=a=+Ec;y7^x)~R}TG=Z{N!Pq6_Zha6uu0yL z+h1iTIhqTn$Z#mkZSJD!B6pZfXDk~Z_@}#Xo93I;3|;r#Nv#=AH1^#u>K522+xeUF zN$3f=v302Yl_ejxJut~8BVpIjGTq7y;aD?r^9?m4G7 zx)`N4F8Qsg;%5#?Q(%xbH&>{)BV`Jk3|X?SQ>0n}4%20uC@la5`f85n+@ZJZZ8sU@=wOobzkZ zQFF~km~)FqRPTQ@7V_%>$POWZ?j?3$sLLW%340*wO^;xo4@^DmBQ^CJ${3v2_YE>uTtTkF1GR@RU?71hic!ItlzyN*spzt6R5{~lS{TP$+f|cM;JO2@b=h@bs$j=AWrkHRj#xcWT~p;M zmz+g7`u^%vp6A`pxZLk6LQ4VJppE*Y(U~BiFy-eq+p#FjcTZsmaC!DYyVYY}Qv7Xs^r47#d zDdz^_(4b0;i$Kdp{{H|Z3XL!B2I|IPuG6OIHGL;5Zc_ajLbEeT3ZbWwuv;hcS`Th{ z*#-35lnwS;0Z;-A~b%n%vFn9TZ-9dnDKL9i=aZ6uFV0 zFP%RnOA#%wZkns-q0}n1=TF5n&>1+IL;0dKl|k%wZli9iUl1DBo%-^u%8VJ$EseXY z$7DSK^+^qtHZ+$2Zemk98>Q`Vq{wq^sMTD}p`uT7n%LTIlYwKWQMz%~IflhIt6#+d z@K*ZX6qy^{4%X?_Nrx-CPO0;{4hcGP^13AKr2zahHa$|m^Gs-yU8l`2tYjY6<@D&F zZ0X#KDY_i%H$fihoF*pyAwQr)vF?y9v$s#6lG&8PTIl5->D(zMQ0?oMFZd}34Dps@ zQilF^o@*T?N@PKFbO}l`lkEX4))DmVg6It=E{M;T z>e!7C-wl#}niXtd9WeGdW%Gk_pN>D%&2XMLJFmbVqw?jsgqAlKG-EM`g$66-JU> z>^D{^^ET=V4CaUs=MLS|H;{Hg|;=%PyJflkv|Zm@YdTRQt3MA}z%;U@?KxInjZIiY@@Rjm)^iz5UL^D?9(6#%OQh;X>n^oS zRXjly*zST`vKXs~GdZ<_5|<(A$)Q%WolKDEZiEGI2UXAE@1`|<{)ku(3ys9l^D;wS zp?)nn~56b&sL<{_c)6vc~mD2#Y!9-(uf=?C;$?C`a7ihr8+ z(#vz~sBvx;JfBL>!(r-BV4@ons9Hgy zvw){~7x^V@Y?~Q;`ZTG%x#>n(2J^B{acvx>yuDzQRJPT$1$c!82fRkG$Q5bR2vI+UC7-l;|@=~W%InkFmR&efUaF)pE zq4@O2?oE^n8z#f5jaqpOhPT;XsalsKGe`sRRVvgB_+~Xy>Y$_v#1B@ZL>D|g*@OOD zAy=qsyC`%WyD74*pk?S0jKh(_;gZ82{EW`H&@PINaY3MlwtqE-z}7)JpT$?=Tujk- zrNDJ5q8e?T6>M{8(tEQ*oGh_^+A9Kb^BskP=4$b5UNWv+J3P#`FzYGOqsE+NxO|3g z1Eei*DdPs?E1HiI{{Squ`F1MJY*BOpR^(r@=U;>3&8ljBmZoF4bp8q5M~v2}DGDv7 zNrGL|g1c-2;M-55aY6VgbfgbwWmhKwDUU31I0z zDWub}C8}N-NPi{>z`}8UK~42rb2sRp6N{uA0DUsI@m?Lmv7`z#$QBUTDux%s7$-UP zOB-`>x?Y)Su>M?Kqb9EsrpCx~s%#n%82oM_-*(?EpNL%{;Fx+WkxCAsKbME4M)^l< zx~1y52jp)?Z4L?NFx0H~Jf6BEaHmtjx#0XebXFgarACdP5ojw5656$DzO@%Xey29- z(@7{6DY;KZ<|~XBXQtg9v3AQb%yVy=+W!D#snK)kFq`*U28i+i8-*G9GM!PT7$jHW z%=09j0=+HImqIQ*l}st}M1D%acr^i7wb6W!iL*pHU9ss1RG3)Y-FH8lJ|<6O9PrrY z(^OWP1O?9#1=rC#eG*-L!hvDW?qyCMT_vp`Y5S(SC==QrBdAYAWThIYKg`cPZDnGO zBNJBrHdNXKi8h?GH+8$=+%WTnLe|X0bXoLR(&E!$)1mfV4+f*;Q8Qd?X z*(hO?vUrLuWe_lxTb16hbTYa8RXTWTujI}RjBWd>GWvcu8YeBZgsKx8*g*l^ z(HhgQDUFb+^G8ccFo#>bDRd%Zm`~%ps{$rGhXmUxd<+af*9<37t%O4Tk?54pGOQdfWPz$j)r{bdN-sUW(8XO}u z6MpHO*JvGnr&N=eV_;wPjYh~{(lteNG)7lW=wL*XmLlO=_=WM2YfSokC_6K)x;yhl ztvdT4x_*6CP>8%7zoM=|)8vf*0E^q?hUUwCv^rf~=#X;kr2DA5ZHy^Aa+$XAvKyWl zeOjjgHfU&;>uE`?gCB`aV{@#fc8g^`>b?N^x^+p-&HJX=Os(|2g6FPPY z{YTSqm_&97yNgFeqP`MJK|Y&AVqESR}V({q%a&wlDG9Q3Hd71&&s9F@pLFrKX0+|K24TVn;ERr?RXw{}b^;q;-*q%u_pzMD{eSxzh7gH+3 z#ML0YX1>F9uaD&<=C;cYv)t+Bu=uj-x_oJJV~{$$?Y++DG8EYJUqS25%BSYP5;F*{S)3%D97KynTdVpHCaJ0VYOIkZDv(4HyNo>D{ zU~6Yy-PWA|Uf@pJsyKEVMx9os7y}=GTz*5N149hltwyZ;-v0pQm3mKx^iiu=T=eL$ zU;H#+>c1)O6)Lamsx4=ol`4;mmwT1A7?9ad6<8mgmNiP59|g149JDc&opYK_;Mrx? zyRCh|{a0QILCo@UOE4}OtRYyYNRoX$RVrR!`?oq^*yV+Go4_PyalWUbZ8U;WX^+n6 zF1Dc(pDTe?+WhkwU?S3fM%#UpkxZA^@NVl{^Hym(G;R6?LW{^UZyHLr$ACW-qDY2Y zWl-0Ce(J*>8649;RZWf><-X|D>W6C7Q6=_USAW`K;OHYX3n0^Rdt)<1XcXK7+Z!z3 z!jR-z?v9C{4iId1Oi9yuQe!EZEuKGi36gScST*bQubIA<@akQp1fpqB#gi!Ly zY@HCQ(k}X|?`~p7WEawxdQlIt@=<#>%cs>wKjc-1Q!{saAi0M%y4_0}B-=DXw?xNd z3Z_8UNxwna5rm8EvxbV=G^rfyonaR~Z;RY2bl;XvXq_b-JiPk9{8ENG!~ZN2=+Jx8bY`dRbQ+mQ_93K=K60NiynKnWLtls4BH#gywf9uMfh^pir``;68z>(U|wy0;D`czr3pt z<<-(QRo*#Z+-j;gVC@2YALX5YvL9YqCQ%0!?0fuww`E>Q2QOuz(nZ1C<3T*Q_ZKAzHA6~2f0FX+pgTV$dgt@OHu84Ta!`6)L zgVD*$iXBO}S%RB<#=ks^fUeX|X3uT8_tw)<|N=2UA7X}aAtglQ85@wMo;m6v{#vgdI$Jldtg;9RYC zVdpt^VDK)p9>+YxUA^T-a>`B&tVI^*lVh^1Gg5bRy3)kb&fehN2BjeST&;pMSUh_) zOan0vZEk0L%ClMLD0X>O-Z^r)xBg(IBPf>kot97ozN?~LtXP#$ynKQum}*GNF>9*z z2yVI*M-ozGpO)l0;Al5d$R69~1SvPtGX5z?Ow*^$CHf2-3_1&^r}tJ_5J`2v6;7}+ zNpyaxQm7i)-q9$T{Uy<&!dS@+`KB10t{Ig&xX{=E+UTlQ#}{d+vZPE|to&@c8tp9# zFT~~^yXfJ%#-)xMKfIM~m77wRs>glSPPjFKM3>co+m&*SH;ep&uSe7Hkw1V(bz!D} z`ctX;C!)*V<}mD5EZswSwlm=|_@Y1LYEg58VMZF+8z+A2 zY1Q3Hkk;J+jBoP6gw?BLx%#K1;Lc@=w-c_-7~neS6hGFb*^6T>)c)H|#7kR!NzxS@ zOB++n%a%IzQSXxEsK=CTQt@>c(u}PR8e}euz4w|=!Xw+dD?YIj+{curvG~D72p6eowFy;ZFQ~N$wPsu0b%3v3d6sXX5 z60KOtu-FAcrY^W~{#nrx*{lO+Vi2k`Cc2#v<(8m>95EU5YBcvt{ibC(Z>n}nGD}@2 zQlnb1aU+&Bm1#^U34=!gR+wg2XhZ_7ilOZC!)Kz%qT=R2&2Or=MVTOneN?sd0=}Sa zKm%M4L(v}Dvu1Z?U;V=;Ygt)f3}A6?o0XeiOGN8GFr5{8&pjJ&#G_VzW)N*Ubh@Kn zu#CLc{81_g1iaj@ySpX!kko5%?wstty#|atV_wqpby=SZ^uUs>h>U)t>tFuE-p{)~zf{T~t%4taBZNuSsf* zQAk$%1}n>|>7iGZ{V$SO7eRXu}- zvNlwe5P7#1;SDSmX}zJ5x}ev)1xxPTOu&N<*=}Ro_Ii)Q;xiA*S2>BmhPr7xm!VJ} zQC_HZT;%$V(4S5Zs(Puv%%W#AtZmB@5kA$P)tJ}p4u|TFWVBRoDLt)Znl&oMN-i9( zb3N`5>S0}SF46G|s=@F}Oc$k~w^5>fNDlcQbhBoO&|BNxLTB5up%N`FC-O`48lBR} zP4i!HY@#(2mImlz6p!YejHTRIePYR5r*wm|xC83cC&t2l61Lwo?SpftL3@P>8NUyb zS%aM%(X=Asg(RHgRoB1a@=1dI2UP$_*I83*gO7NR@FD7oP8u!pG=OZMb=J^^{{UBDscygoWpw3$bm)R% z&Wzjqm4_RAB#R)pa(*Yexmpkx>@#~Fsur}Tt21xf6iwZI6|F>*Jdw%?v$fGkHbey& z(p&!kYFV~7=?Rl0vgRJ0uA9P~Lc-rt$6R{7Ne=YYR(h?jRxEsv-ZfXVOmOx_V&D-E$^el23K)*2aMn zi!(NJT}7-LyG<30GdX}8*+0QQ(&iqXM_*B|MR+#e{{WH&219b`2%(OH*JYeuhKksd zHg&qJY;{o9-`Q(p9s^^RS3i!a^Ny;pM7Cq&-)zl&y6UrJlb7aut2mb&#Qgh8s2nU@ z?&L1D5e9B}8!2fqXxv>An{&UHLUT^X*$xArm}bkbWoC;U{{V&vu>Q!_f+uCnGYde5 z%!wNLViIxQL?P1~ZUL54s&3(CC5WcYTl zTv^_Y@g-E{{MC2XyqvSuMzuj8W}Dn9ud8cyNU22XR0Y1JpNg&+BYl7E7PUq8#tb-CcDtn4QkW z4a{!2ZilA8rs`3z(J)}QL8w+k9ddWsK+-vHY29SYLpRkQ^n|MOYn!(zARPsRd z!Tl7>SwRk4@6-N}UstAzZICawL^3xDUZg$(s__!5)aM=5hc}nqSF6p~4vF1J6&}N% zs8F+ef9tY6R&x5G0l?+8<`#+70V2*}IeuyK+-=b#%zJ24#5kSp3H(BA8J4;pTSD)nQogXx?%%IH%grU9HwrDo@O*s7rU^0x>bE9#YS2GZF>Wt@r6Ty zqT2)dt2A|x=KS?ZtN1fthc}#(?2r>bo#dBwj_7!2=A>F3^iFd%q#JfU7A>fuDUtH! zxYKdb3ZoC@{gGV&^6&IRaQ>*B6)1w2WpLcBGq32V;v7v#9W5(S(Do2CR9%LLmu9kQ ziHVN#sq=G^R-Ov2EHeRfHT)KS8IFBGN=)f2U3S_vSg}G_9uTuxzHzQs-Q%-3gaCZ9lRw)H#cYuv=U#I<>0Vrs}=}4BCzq%jIw3 zuubyAe;w0nrYQ?gD;)v6qU5FJimwD-nb3tlEwSY_y6TTXwD8P~mX2YWL=+)T8b*K% z#-&sHaH4Xxx^+g!V%<`Y{y#mvJFKdBdbM16W!uU$Ovz;8UglJDtVvaI7-Gixl=LD< zI)$R_9V{&>bt_z-Na|K*CZ%IgxNEX9UF;JpWi4sV@{}`3mrq`b<{tr!#LJw^Zc4Vy zH7qwPn$uSD?UXcVn=$b?YJt9Ju#MJhsvNg;iCtZMNOc%2Y)880vEi<%%W2y{vGQRK zQAy1*i{Fru{gTg3_YL`}5C|Z(0qrd|%6lxQp}L7O48G!$XQT6eJgk!aB&w#^$9s5UQ|pzf?UCtsK)mRzz)+oD9ommcEw0$ug!nS@bzaCNpN0hMZ2xwev#W1Bs-_F8|~ zxi>KQ;gCz4ebFBAzGBmLhf1++g}aq(V}W1})k72(D>1Ke%IkMPru?HRxHk7et6Q4S z(^P6t^H>IGNDB|dHk=WZLZ^zam|e}e{1kB<#5A@B#Y5~)dt|-@*nWv^=svKNYBjCQ zcF_`%HEp2kmL827K+B|oblzro$Ry}ew(n&y&S3x(exX*xG0%7#f10Z%p)o$nOmkcJ zZW1R`(Q2@JL^8b=XK-$ybwhR-dB-ib_g1kFr-yglwo8z(>^aMWp{D7)dE{8;Tf*Ts z%-EeuyHAHwXw2t0&Wg1v`JQQ=4^F7e%*S(Xv{)pq67y}An}wqGOIqOJ`5+J}=WRz? zH99GSl1X>bRK`{r0Ocg=u+AXc2G|PK&S?26;ep`hb5N^19$%tIF#rJoZg*MqYBL{^ z(U*HdBPG@@`f8xZ59NY7tC$=#zcF-l9h3MtEYPEozF}_Gm0_REa>m6o-ZFujZv=!d zHO_dO_V!TIWXYh$ny+Or*Fhsivr&~k&r*qWTa{4Z4D+i9Y`EA3zgxq+O0i{8Nx`ku zfIZYEl}BoC{ntY0wvI7{+7?|<{{T&^N*z&|2-Njgp6XQ@>C{7y zLcImiieuyOVzv$Jr?uKgk_hTA zbmO5rvy#PQYS7|LuT9SKD~#9D`l}djFH(*sr3$URVaWW}lnx_7*gg(LX1g^SklpN6 zOiLYAm}>M~;_QLYFQOYI1mhIOF`2SlSdN5lxja^EJxjX8F2aRhI}BY@Gcx*yT~{~6 zyq8oQytj_2qD)**-WknpPy-HG*SgTe;VBMkZjgcGkjV^mB-qhT9P8{9>DG21)7O|O zxtR$Wb=?i@({i8D{{Uf{%6O+Sv>O#pf!Y#KcJJ!K}oLAoAn!}gPL^$!6M>Mst4wsf{7jHZ_OsLtpn6d z*lLt>PhEY|EiGAH>v8Id-$Y7v>Qw?r_| z--V?~kQ?owS+dJaaGR-DbVn*)7Nshfar(HVjpZ^1^w0tKUokCv!055a_8P;vtO3j$ESz7Ok%08WbNDY@O`lDqK z-eL-sL;W^P+|$`|>dOem0`7-#*<8cY(4bRcc?$a($_7{)sd)zlnotC9)k)5V&Z!34 z$`u`zgq;&^U^HiA-Y*V`-@4}bjac}bGk9BA%D`K$i<;s@T!%rQs^7+x*$?5FS?A1? za4iU2+2zi$wYE-qo^~gy6__VC(R9uxPD0aYh5+q!9TogDLn3ulDAP3zH{`T1)cL?R z0O+GQg0Pu1@PL+x`K=l(Kg{VGD!6ur>0!Fjpa~uS0OYuHh<0@0_#TjpmbWr1>Vn(5 zvKDrOYY}pS_lc3U))C3K!D1=^_zu@)UG)ZRqQmt`@3|YB`zp0+T1#bVjtq?2BUYh% zN~MXblo`wHQ6E!os-7f_qJ3Ao>cLrtS|DEMHZrzP`Jx%pGTBAa8YRg&<^da69*byv znNLWA;m!c&leWbcjZD7}r3v;VKQZX1NR2m5=n;0Cv$*VwNyVf~UEHelYUO9etRu2r zKB4|uPw70CSWcOtr$QCFF6EPARR;PGeGheRnHho2?4pYwMGK3u~3?2pj_EIQ?|(M7BV z2KuWWS#gu|Q7k4w*(oUiH0I-bA>;tbR&pEjX{w9G?%!gRr?QHsiJ!?u%y4MwD$AL% zP{YDQXbLr0r8Q$JKhp?LV9@;$pBe7tC$n$Ms$f=l4t$^R z?1JVSlavkmt3*M*h%aVajM1{Z9}7YSy#5L9B7Uh6l)=?BIu6|y)u9URu-P#HG6nW2 z!?)j4DWjM>l`VdO6K7vgK1rk}{ccltclim(po4*SnPWtn;^$8Nl*yB3z}D&+uYGn? z96?h;ZlLwl1uy!5kak^KqnKtA+wM_3i{UGqX+K1wBho=noNMw(jrSUKRW1YcO=$zP z*p#%sWSu0zus2DhW`pum_*VnEUf+qH>Mrz{+jS>s253!TKA9;)KtaMzw$yT=RCiZL zL`SsfT@j)8LwgVNY1Kci01HgM(fEWCEhoi!*&)0cj~iqiz05c>u2k?0!* z9Z8)xQhzY@H#W#^2Qd?>b1W2c8b(>o5%BC~Sf=9W{CXnN2%R7rl>X+&c zB)?7MK6+hRp;**^Hm7x+OpoQ)e9FrSY{tttLz2VTb6YfS3sBz|15x=Uo#sjTjNKGm zd5Aill-t=uu#ECu@>8iwn~c(JwLQ>HAnRsy4G`N^PK)X>qF;T2rDXJIQ>jvoD+}mP=#~+#uJH`I0IgFHLq_XchO(^} z3WeF@WaVfe=y(S8L?6H@&WZE>-r&FoG-ldR50jbn92y++of zId!z|v+}u&lVzdg{{Z0T?4@4H(MG8Pi6OHVk@~Fmy|rhPU#htd^tHO`jfUVjtX)Bs znw@>pYIrZ+3>tuEkMhc$aAq_cLhiV~fic()8gbbrjrGQ>i>%mrYqi*}SBI`%tht*- z6Ug8TWS!JqQYW^^l`hXL>$g=_wQPf#u^XZBB_Rs4VC|+9T`w{CAvM9*{{SIaqfxVa z?4ldk$Ygd)x0|8SNK*{e(BZOr)y8h)q66_XoYT$NY@9-bEtVhjw9j7ZK5SAD+n>cy zt%)Fx+9AIjYB&Jxr4h>h;QFtr9_UnLG?zO46tjmi z1?5lZ1fx~0`IwTeu$Q(Cx1SnL<}2H_%!SG+i!jrbCJ?Y-3(I zjC3QfMVkCb*|G+Q_d__B2T9*$t8K7Y8dPyLvk)`|HAgzNPz$UzozU4+B`nQt;^=NK ze>PtI%H_{44vbV2cb3v}wX&m-z9%f~dM0Fs+e5k|7-~#eWNSnPET;FL#cN?)G7*`i zY83`r!sv`~E#!2QX-(M-wp`Z`1Lv$F(Zl3ypQu#Bn@2}9yYNM0{Ne^{okEu25!wF$ z4cUhO0A8hE8+f#2FheO#T>n{qau) zUGfPKOP0Pj3JQ)7M&lk4!s2k>cE~%!Wn}*V{Jp34U^jT?mD>zkYcLkNLVP>?%2IYe zMXJvvLrbH8qx?O74zMnNnM{!Yw?)ukJS#zssZOQ(E`jfB+9lq~I5YQ;X*WmmWcdV= zI1dni3{EkXTS3ywhFrp_a3A5TczsgZ?3lD2F1=CJM8X|V9R(-kZ9ptia(T}X{vF|7 z$F_wQi5d;pmhtc5rxc-!ia1wQrgS|!FQyvWX?Yaga>k)~9++iiBk_Wj_hziDR4d&<&KE%Gfu)fk!VeQfVXM zL)-)er^`IDBEa`jV_mLP!d(#EcSK{0n>%z##)=5iU1OTten{+_a>ud@SaV3yHAZAN zBncwqX8cx6vcnr_-4sos38N?*ltw%@=Qp~R0U{&|PU+cq4sUXqv6rHgZKuoK9B3#Y zcIBV`N;9nOWS-*T1=mr1?0%^L*?`jhksAfRt8Re-(os2sK+6ZJt_gdAR3|rWk8~Hi zHS)!gUU`@_+>|G~HNHg-Mpt+x-?{_AX&H9a7Nq4H89{kJ%j~pE=^$S5?HZIa^KHG7 zez(;&Os;`obqhq)$PZ!(_(DP3>G`B!+cSNXz9}uX>2L^gA=hl3lU)2zbVNuAuIA==m?nzFfpHU-95NM6TOrq=qT8yDRZVq&nm~eI-jD9oAgZEYVB^UP+Ys=9)k=1 z8z8V|(@ho3GeCAxuFKBF%o{M&7$!A~tHGn@gGz{-t3#AVUz&d)L}X=!R~1tzR;vF1 z+RVnhYn$Y$K#a_7VVdo-=kf6;Y16XT##AJkZH?9*DZ;&-wyUGX$(B-3dz!=QliKJm zoWh%KMyFL`tq}H}TMapqr9e5Na|19|lfbMt8kaX%3tELCvtrtwh!|`zfI0}e(Wg(6 z1E;82W#lgmY&IUBT@}VdTN%4YbzYDnIc^b)j$VtAyMw0$P45kCYO5Ntrl#GK)^{oV zl_OZT`u0LnHWIaCGA**JRpsPMZL&tNd!sZ@MNYM18UU~dn^UUk@#13N0UZ3YO^0L} z&JPk>?J4}gVWz}y*r+|+uq?t_VN~Hz=MxO3sJaaqm@d&+Y>;P7l0Zp~4S~2u2HA4| z0G-fj#$pDD>}#z$>R~A#AzI(~-4Tt^+J0&*gJbh5LPfRcQ6dP=Qw7@fL~C|Cen?Gr zQO&w={d@IJQBV>?pO-9wvRN<7WBMi!Yn{;OpUro+$ylI_a)=roN`_gt#i2w1IgoP$ zs$k#hfRmnvfw_Ue0Pf_VxuK>Dzq&c$>la!SbGdI$RV{87(E_Y71 zS(H~aN6A%vFxPcEEe8#dYP5eX$U=QGN+cLR=7=w)n5%`F^1=yW{k@j>!7QrkdxpD@|-ub`B1wbkB&L$6b@Xywj{E&zO2$JIcN!WJ}2qesG&e zoTv0D%d)m}T&BnXJi6?M*peVzF74*(L}t;_HwrI@Yr2)-OTEyfWL|dZq$DQ5`&;u; zJg$<~zoAGF>mQn50S*8j+QCXoS^;jQHm`y8DO)wqutI5mgjpv+`puHd{XbOMU>)wB zXGeUL(0&P=)A%U9?i|0_OE)jXqbGZyucS_d9e0#0#K}5q2!*3H{a=r=8MBXmsla^z z_UE?R{Scco8udGTm4ZW>e*_0Q@s{IcSb;gYd3mF?(Yu|Z$UbIt7+2!fM~*w)>#uIfxl;r+YJZ_o zHc@RVP#bfp)o9@{W`!KBYkqpHsx{o_!=10@u2OKRQZoGZO1KNz(r}D2vnmA=WC$2I4dM4bW=5=`G^45mOo;6}?a z%j|boa99es$AL!u2?0+EYB&tC1)*sk8(H*)DpZ_K@VX8a;kw4F8fjeE@~=qn z_k?Isq$*Zr`=chYR#HvUJfnd4KNpL{Fw~`CqV+xp;QACPjMTmPS6PPP7+NG2(rAqp z*3)ZrYQ_0#5vuXV%&b?3FgVNwOeI=PEPFDZ-PgO1Ee;P5oMQh4qWw zk*Ay4d6)60!`OZ&!9UbSQHaC+NLgF1OMRa;mxef#sIt$jKzt1e`K=6F=ByU>g+jYE z<(~Z#PEg>i@&ofzus1E#dnM;w0lu+yUZz_#W&}w2C^)#V!|%COv;p5xILX&f?1JjO zDMapibVBnDhF913Qq@C=Lr;y3aZ!nkAOYNzhqBXPyHf56*Gjo|!ameu8yV#zHtg1yw32`zw z=(l!`txzwx=z1p9ecsyhC_ZwKeq9ntIe|QxNNn7tew9ZW};684$tWE$1})lMnpkRYsD zxXO|Pu1@O1F$G?@Wld00(R)q{D zEFCZjmo#d1Q1gWbsd8ACRA6XqM&S*#vJX?Hcj}}nRmd#RC-70JTAUenLb3W?l9vf< zvfo5cI?&ybIM_N|u{LS?rB&gChUj-gsZh>Vx0v;6 zD{y6u%~#q^i$tc84UuEq{Tn?>xr3-E$u~Nxm8(-{Ej@Qk*U!b&pLIE4*0dNjQ1K@k zoI@JSpfp}*Rk{2+;*R@k34P{edH(l`O8d%X*letesOh1TxhSL?=g$0 zg%ZZ+l>;man{J}_dP(7A(!WaiH0kUotd{+*`<0+Qaq}PXQD2#}LtrI2HSy2zrvt=r6)IrpwUt1SzHsAQ6A{93l`z%W1*QqveX}&nV^Fw%8vg(dxOa%C zKBYQM74{)*FwEzG zE?~=>HI#Z2zJMY+?wqg`GRuA;1zf-l8thVbT;8rzWbTa9n@_|gm#cL}Fd8i(+Nl8M z2|9q8t&x1eJ3(w5*FXejv8Qxqa@;m%$aLc^o2OJpPxAYf4c!1*T6%5_9%NQCL$9{z zVga3i{854O2Dd&)&fxxs6`c46J`bO#( zI%&4bRt65EL%K)_J{tQvN*l~Wb?&F0R0$h&MNp8McFn4utmzugstxAXREBK^ol34g z4Iw=2c8xlrJRR@2M0y4252y<|FW0Vu=3$ zpe{SnC}a-PRUSYkGX4TtkQfzzuD$*-yD|$S8CHKdVlurNEgh4~jY{oUFLj zO3ema1SsY&h;P&LNMxBANGVRm*GplsN&cf2j;OH_o?9t2bC(p4rg?4osJZ(ekW?~l zZ(Daz135?#>x7G-sNfL2E)9>FQfy_OnuQj{&gnOre+2%Ch|kYSNbfoitfrllhuZ1> z4UE@kxY;&x)|uZ_`MIM&e-e>)$c{t$8N}t1=m6-HjrIK!02>XrN<^hdMvflsfuLGA zc0kN_RItn;zoOKn%(KfAs`KXbZap~EZ=yW%#;9!Ncll&Vi;Ynd6biGzVH!%u#XjU6 zc3Ktc2q5dRSs2HD%F!lPGNcnfFLj#u)!VHMLnmAGRhrGRa_#QAaDx}JxTnA15h!8Z z>Im$kC({b$DkJ`o^V=z4h|#B%+elgzXv3`48f<9Qw-#2Zj!-&Xb7z-lMi??dgDD?L zK(EPes@`~MCCa6D=C)-JisYqOMMDu-welR%D$Qz{W%eA^#iuSCjePw zKqVA(=Iba-8Q^_UTOiv|iJcHloUa6J`6~@Op);Ha`lA3F2pWKmhqgK?ho5NBp|(DW z=QgT%*-#m$H^V*Dn&bT1>QI{et^iszPv#d`T+F5r5x$`}>k3)UQg#{?7e3z%sb|X` zqX>#jWSso1zMG`y<6aqeNy@&W#x^J$qzR$Ozxva7rW52@_gA!$wsGC zzv)M5(M!2#)%&=78RBVF;22t-g|gTnW9?pzMpX z?O_)D&>lshu;Z^%iuUFMn?n!~o&&#|FxRKmTAoA+%yw%zqIzng0B!TTTcSFV%_Xpg z26qV8cvQJu2uu!{%-!xk1ZXfN*Vvs9{H(tW9pM#?mI-yvp+o5pTL~=@%@QE@j*8nM zje(dA$LfG6jIix@*%hK2)TG}iP*@HQ5^d2=`t7nCAZxDQG*-syXX#(i&19SD*$)uR z))rO;GUs}4xY0tTDUfa14g^wbPH;0{ax_E?Ac50aKbo-0aL>(8${^q6(H_j0f$6k8 z*|OX9TX-xG4fESiCJvxmUc#5^=H*VLnME(>27S(M9Rr&a5m2f-LtQDsuwz?FW%X=SOskEY^Ek*(=7si(W3G$~7=logfHt z%)JA~ULmEy_&r*pt8)-xe6ix*IPM{es^?XiCQn7Lj#7CUc|ZJ_*qXwti<`~~y3eX} zw1(U&*gSSjN0#IFW?-F_%AunF0D$PSX{KHf5e8xD$vNX~3{`HgThuSH47*Ci6*&%6(fK~0>t26>%&qSj+W^5)JW#ShBUr^FVCX^uwC%ptb^ zUa9glnJwugeo9Sda%RzQWf!xUjMf|I5g`LUi%&4H7X#TLP0XJ!d*4kI+-fnQxm#_1 zY5db*=IbWSN68e0VTctkZ2~(v2dc`W2|7EQX+&$woB1efp|7Q_eL`VAW`jJ;cF?QS zCvAZEwK9n3jFNtdMx>c@C_7)C`JBnnX4I(F&q=O0a)ps~3Aj^>QUF3tI2@TRjIvK*?@W?eF@d zQ*Aa|m#@(e$*U9zm;pYwJ}$1a4NG=u5>Ocb0P1zOL=_8VqW#isy|JR$c>|HZG{LTX znukpYRUL>qZ0l{k)abdz#$5xTMbc#c62#)U^3u78_U@A?k_Afc*5DwFLqm_3y@@I; zs_e%$pH!d0qfM2YLA0^|*j6YwUDyWRi-LWsgRF1+}<`5QeuodC+RT%fUPlQ2R9| zvDt|Wi12>{93%?(icK{Q&&_)0@bG=Fj0%pmA?XTykJ+S+aKqJ0Jr5b-d@er-#<`PH zJx5&^l6aTH)wn(}?hSBg{Fkxu-Xu6)CV*~_umiHk;@AotYLoodMr}^(Z{t~G^uf5v z!R0(Nj=GjIn@jRU30|4N`1@X2N~LK7ORqKYPlfAntVfxK%=XT@Ld)U&cD)=+8eI++ z60uF;m##%qQjdOhT6mV4LHw`Nu}PJifFh0|-emeoTu%+-&J=08Jh<##y56UY{{U5{ zNo-bcPK$C5{{V+$Jmv=Fffhu?8jNmW>jlklOl@{I%Bf(_Njrto7mQvSL#`GXsAj9O z7&@8RFR==3U}N4xwOBQ=6>ybEad)yl7mrd54L2uLprcbG-1E%?Vyw|2z_i?KR#kp2 zNr1TK0Uw8PdKlIdNzJl{u^KKMysm{>jx6D^2hVkh*sG4{{RelhY82j6tM1nFNMqLJUx1?gR6fG7Ws@ZK*0H7Zhp-DEw7`lWqY;@{!T9w$npX)&;UE9bu$ct;W8>|v)- zu7GU1u<|Bzyc&r)LdO39Ez>!bxms?+bZ}FJX_WBPUFiO^-SJj?34n@%@?pj zh7dr@eS#CuUH3$-8s^mr`-7#EOiUY{s19l96<2_7?J|z{neKq{9MUv}Yp?}!^UWh< zpn+z}PX&Y%aDU4r8VB=2*w2AJ)_2i9VBtDJ(MQ##`gKluK<4a;v{KMX+~}d2W%5*KZ$^}HPn%W=o$~k)7NRm`=tj&&CLG*i%k-OjkscgT1d-osBxK*%h;*uu3wUiq99wcls-+o zCp1l#n>`+@?z8aCB+Alb227((mj}aYfK$&6`Ki6a2+i!E_VZunnxV7=Cv+SX>s2=! zEZWV^O#Uj>cZR#!P^j|j6{40&TN2wH`T~H)TP|zcMP=~mZlyCAbHTqws-!~`DQU|E zU1brQE?dT_sL{|HZmzPD&9rEcHev70@|9tX>MV@L4{Idm05fV~bGIhSij`fJzMHBQ zo*Q9vq^s4lIlro*Tb9}os|94XXJRVDk2lM@#l*jyoUzmmK1*8@8B4Z0?6K?AyW>E8 zM(5df_|kUHe73B)(j(;v5A;Kt>uD&AB9kSp{{TBJwPt?{4a;&f z9VI5dB#Vvbr?L}VSmM^^BS|}_&wqyEC)-pyvXdtEhZ#1A%6*W_j%#W(=$=~FTQPxV zjUWWos^${WE;{y2K8PX#E{AFa%2#YOyGSs5sI;7bmrmZPPAUe$<-M-$)jHWRAy`AT zw{g6pQg&93g4X=dSR0hiTWEKJjK}<2AB5PbZpzVmjNQXcy_L#*u`Tvlv|})q%Xe4l zyw9smO3AC1IfP%NBH^}Hn(5WI*;8Q_8mmls0&>Yo_8$wBZy!})09+?SuezsB97J5J zEj=w7p$8?3Z5aU2q71uckzf$n(bh%FmfwnohKV;%TaL+IIkZokmfLI-7Yx3ylADc; zS*|1IQ-Xh%=o#)|PGUKx6-__~E|!?}ehMMq)nqofy85Yq$L5%VXS5HRfq(SbLC*~D zuuNaqaiURSB=emH$}N6a>#`1cxoi%KE_uymo@wp|S`IF3=GR2Ca}IBs0EwK_+eGHE zZHD`-pk;>oqovZzAe_ixxHkJK>1|0-Qw5C#d^adB8K>24k%TsTY7|RL>=j_>8Y#Y& zuYTw*rL1kTy5{U1CNx#v&W*n7RQ`#T9>VQyv?}#!2N2=6@`teI|>*RtOX z)LENON=3Zf&9NUf4}?Q~{gsC_9V~~CvI^2uQ~;df-)`v^jPdhQAh!I^D$aOC4nbHX*s#^p@DEPHb=*?!^bw4WJ{Vtd^x3vENN*p1PV}B2< zscUn(U+sIHW4b7(x%U460!tx-7r)UjEaW+^HC8eY<+>wiRkdv^$%R20CQ1iWsB7^811<=J3Y<{I^iewvac}QWeX4~^a&2B{o zbMTvHiQO-=WpE<>R;SsE^lS}fKiTz-PW=%4pF$^QQ!v4^%QJhTvWG3%b*S7nR(`27 z3MOg&}{$jR6Ly5ZojIpaDo(A96=7h`J&juVd*>*R5gn&lyZsC_g06Sn2g$gmQ&!%PQp!*FvKI0J|h_vbn;r&UCvjbI~06z=>La8hjJ)9Gp+_Cyds_`IMaJ5X}Pd9DB`L&vUFa3)DPX{{XcLj`)s| zy7ImuMx!bh2Q~!R8FY~f<(a0iVLf&AE0_);PPII_np_qRE~Dn{v#!!VRa%xQ*gC(N z31p^=RcBT;ka@RI&rm~MezALYRjA_4dKBt4wutMZBdVPKVRrBW#yc)-i_Is1OJT=+ zs=MiDoTlJw+hu9gsoaN5Z=!Gpfwt?>FK);9R1B$@lK4OINzCPv*&_0-zKNM`_azDR za$jO~S}0B$XR08&v+?bg0_nkp4YSwDhbf&r<$8V&2N2`Nd`Uu4!u#@#=GLY z?X;+Guz>6z{_d@}At|iqTC1S!T7n5-<#w8#l(Ul&ZGqlg(~ z_3EI?Vxu5A)6+5|FoZfw+zeYu4QTMtF<-!=7W zc&Ttd`?Rv1Ax(s4b@xvH05QZvc}9v{Y&F2rC^Qz_&Z=H%jLvi(icOlAIuFrBluMjv zL%B!jimz*1G3qJkw17!$9*TIEhH0VHs;{W#Uu~s0njG?2ZEDqBYYwGGt|`rNjW#{i zSL2`)pDKJ<)OoZ>lyK zpK5oQ=EF8_YoBGTLY7KXNWDh}arI)0vNXlY-@)+e95hMF`lsV6whstt&=mtAv&-37 zs`2Ltc6I?{-E(K3XJ!~eHAQLVsOy*m*>|1|eOxXl4%&I7ol5ik0|j^al^G$i9T$0k z;}ke=*{WsdksF((<7?W-9*JVEne_Biec=%$R(LFxkfvz)`-ga|5rwVgSIr{JwBQ~% zsZISx-s+c){{V+Iu-;{Q4U=+L2g7RO@EE~LreGR({MQTj#nU!Ta(yeoIIFnb7F2Va zN~X;kmDlk905X#cUFz9<^T7N=i*6>LlU5wq_^e~9_OA^1rJO>IDtM=VsZ z5Z0-Ord%6+%H^nWsyIwn-d;z^dIu7~Hxq_?9LdZVllYH>R^gb>GNxeNLQ5(solY-^ z41EwAp}MQWG1V}bgGf2Ur(n3Y_^0gh(ESW6SZ@%T^_UvybB?LFq7$>wF*x?ptOZBe z`>kP#pxho>Z036cgq;@Ik9i{_|(xyD8ZJ}EjJar20 zhPkr5-yOyv2|vx4H4YL-=_SLBoNt_3HkKzIW(;=Fy}8a^hWJgjh;c2%*$ zxWlV33Yq{U_ghUZ#M2{CY*JE~vr?e(z6rv3Plhnh;rVIQbGckgZzXwmj{H6LZY5H! z7E4Jm27!G8#{30`tBz(eo7@h3#l2T6kMO&3F2vEQ+~Nso%XQM4dNR#6p`+(Fw=1CQ zH&Pth+oIU5q z;CvHnhK0Mx-4Vom`ysQ_(EjLv06!%K6K^#1L>Cg)-|3-+ zuu*BW9XcoYyQDE>g|5x}H;*@r=*V-CJw@F(~N{W>Qu%_MA` z=m8fDy-B!2e>D1xScFGfIe%}O2?fm{SoK;UU~0PkV`W|QJ&3ZiRtBxVT*|#jbEh_& zs(}M>Er`G9p?iYXo`Ea2`uFUmBTz0qQmJ%i$1Mceup(@iG5LQ=Y}t>pKpE|_tYQiz z5A?_%MArs18iTq{HjcWd&DZ3mfUlRKJ1JT~?O>K)ndp_Z=&HbuX_k+{N&L_>I;h(` zo9-b+?$~&}rEt*Zh?D0yb^=r7vw1 zqbo@+k-COqGBX3wHvS0dFw8keLHMlb40ac(WA*4!Z(s_4TITPWgo>8CQIe^ShiXLNrkP9y6&S| z#O?=0Wq|FcRbLX^vKwvXLN8?s-l-0<GVy3noll}4v1KZ4mV$Yv)J5F<{J)nrs0 z)0)vIq%E!}$7`9~t0J^LvCAMz?D48klb<%`I4jlkNOqzV2lDx6Z331+={ar$llvjs z{I~c{#cDuD9#DE&!>XGcDstp@LM%?Hi4An~O#WdfInT439SHo=9Fl8(5Y~?RCcl*M zZzKRclU1}F(>tA#BO|$N;~MCPIuNtuZJOyic1f+w?4h%5PLiM-4=rhzYd!vIV3r03 z>oP#NRnQK`O@)lyZ)A2H&m`(Klm!cvBtpOK8l4X${ox$GOW>dUw(@?;0yGf zBp=CJrgGa!{FN3+ZMEywTBhuu<#QC( z^wcDenNdA*-6_o;lhzdb^srMbVDek?K&afH^3QM8S}<*~*de|%O3`J|pr-b1zeE_# zf2VbA?9VdW^w9~?^Vw*#geFvb1l`>D4Kb^ieRZm;<r z09T;lyeEdmut)ofmkZ%dWg2dyOHYwqj|ZdWGc%h9a=PW>iAg<;!Z-~+8p+DEpI)RE z{SvELtpg{`S8Y&Ub2{BtE?bspsX_-=HCFW-lqb{_SV~x|V`!UcvY>G$tBG;4*9-}4 zoo*u<*;IZom&;z{*qXyM9HeZr>sM=CE&LXX0%x-8_@jX%JRXQm;|^hx>nuEGFot!G zt1lCes9R@GKoe;p`<;vYO+}Y-uaDx?u~-+J%@QJ4onttgoY)O;JpxpC)mJo8bFKdX zC7iJ=O+HXEtb{_BVFM+~c+)E146(#qZSh%=bqwEM2p1B90r<<`e_o8lf7<;_9#%Ni+P4NRUFigp^Wm#8`w zuvjZM(%WuVJ@;*^PF>7>Q?Xh!xRos8k$XYw{{Tu}JfXQSK8;AW`W=(fWlB?;drS+T>k(zPOU%Wq~O+1H)~$# zN?Zffgbiu2yePVxTF^4d)>T}UGiGg9Gob1b!>UnlGp2S&t^6E_({p_~N=$V|G|QY! zSqS2s%Xv;C@SX)w*3&>iKQP1fhEeX+vu>DQ*@04 zx1yL7y&8U9HUcwL%b}F0;VHY9&VWD5tmg3$_DQPS3y#Rtv2?-A9c|BE={y`zy`0&5 z$!$9|?j_rP$byI(KkBKo6-)V?0Gnp~kv`d*)8;?%QI;=ISGjc2rq+Tr-0G{I}8k8!)Ih;gYxst|42Av|pTIaR~sHVPqQ_^gP>@YA~`+vz4G9D>3$RtHk;byE|tlGb{00j(KTI?r^7`J+WQ zw)})>RYzj8ytbQj#lP(=RJ4g~YOdy!Z|ta7r{_4AIvddFW27s!Xw-C6Ezg(X=oNah z!8w{p`~v7$)beLMBObm#Bl5IZSgJVshO>o1p#l%GwTfVS%r~1*S@|JRqSiyJwZwGy zRfH?#)+a$YHxG6t?0rY_O}AYRD+~Ub`ec3JbVGv8Wq+~1Ee7Okgb;Q4Ef(=wbs8zx z%t#!jFFjUyw#~7{BIPV^mdDW*WIFj#=!%88LvOiQteUkm3&FH#w=h*p9LiJw*Ww&!2g4}8%xS3E9Yn8uBQFc2+H8UtzH9y*VC!*T6;P>{IAP3J)6`gB zh5&kiTP&j^1f@1}zi#p!ma`%>D_08YRhgT;g2LmEsKWYTmkIbE5b|;iL!)c%v~AHS z-NbO;wJ?f|^C_RI@_*tN@az4|Rt}diyaumu!q%sVU@Xf6LKN{lHjXBl1&uSZhSstM zx;{d|RmE_6`D|*@UMvn-G@FZgJ)*BU3c*Z_*gOcSJ%NaBgNn^7-bx11jc=q zvt43joxW=;!PbVH(>|Tx9whs71q%MC<#4z`@t+NDGlvrDQt#b)2ZlUpQvyXQj&Wq` ztS@Qc-XOs7j2jy2x!gtPUz#7Qv|8z(J8`x<0gWRhUv;6waWw5vJ}PS~ss1Q2|?!G^;kABm(ON(Qs}sA6VwN z0s!u-$C~7pk5=HEL<}xnPW@L!z_G4)%D65AiKfPR)n5SYx_=JwH&wH!bRM0P(?gM=DB247&c7`=Pz0-&99mOOe}D7d_1fa&=myppY*RFQTsb zck+~Kt>5H>R{p_OAV6N_Fpb>={wX?KLEa`3Bc65b)nC#_bM-oROCSv-Hs?gnEG9EJ zo{8)m+hB-*7#zR^`7>O75^ppH>$+M38tcyKr~x$ELvE-40Jfj18)dfNs&3j)`7?>+tl8KO(d!`a2tTRp^KY8+Bos zYy$J9tk|zvjt}@mDtMUuZm-ulzjd35v$}$wI~hsr=R@*AcjT;OFLY{;N{RJvqI1Xt zZXc8#N;MiKzYdDiF!BK!cT#OA{nY;emcq0%7zK~HDc<1N1x>&WZcs4~%irBh^1*aA zWls|DT{*WZZ>|^*D$lK09ezr&TWyX=R55bvAHh_AG){<>pDlobT_0T**ugECyiA7N zHOnR~W;As7T3kWS&u?f{s<$&osC69*>Bf06e8E~Wx&~P{B?Y40n;zgpgLjLK(HRASrPA-o36NU{Fgr$wgIM+L(M$L;-5zHM z(ApK2o_TG7ROvj}jeliknJ;La^*vJd?3TJNG2HovmXNJcjKt=f-`P|S=7acjR%z^a zIu5?-96RJ{bYEkGpJv4MR%twC{Z%?|<`C~?Xhvumt#vR3mO3w&T?!)~{aS3RgTKSD zy_DGS-F7xo(Mk4Mo88mV3GOYrMf3U~Re61uc8V2BpvPW{6LK?YbrSF!>6HgRajK** zg^b}W{q5NZ)#W_aNIYf#00O;>K}q?Z={SdcQy~s?=5l@KZ31}gOj(2&b(C{`6Xwj{ zhDX&7LtWhJmB~S8mI@;#PW0Z$McHC^))d_A z*VZ-(rO3eM)Sr~9?wITQqrJt~%L8Ry^L@JoXhUbo?0?8Za&si#U%^1?L9zT6f*Hq} zGdk(r&G6i8n@Jml;O2v@?2~-GjF4_!RG8ei%YBl8m!g-$_$XjVWp&PEhz23v<8+%G zoU_!TIib2X<5ew<2rxDd+Yj9xj2VQtODHlew{%8&yZ(twkp^oyqv#P>!06`ehR1FZ z>AOO1m*@nfz*_~nXiSc|-o0T8Cb74vK39;1;#AYLIh>5aC$^%PvFf24fb9IlJ zgQ^U`eh5yjwrlC~NvkO^oVsRcJrNk;p;f%h#&XAWyzZ{LNiw9g*8=F~KiL_v>=i~; z%HcO1d!y2SH({|;z>6%U8oU1h$xbvwYx%GA2+VPGfuc#V{(}SJI;Mhe*K&yFQPnB2la}8JK(CK9;jMHo&sNEp4~ecAVBD2a_`$Nz zJVvET&koRNRa%&wk29DBYXmQTi?#7UpH;i6*oGV_|iD;9)(6ir*&f+s&T@z)z zPCdo&v+H6=^*TQ!7uOG}a=Yq8734!Ww9vp3S{w&|!L|pe&C}L^Sswo%WXYvu5%r!ofT{FwPoBUJh9VNun4q%%To=+sMY1EmFIa_xNJ9);C$H{ zcE0LFQgo8*jSioJmtpI32IKzD_GYJGslDxE@`txTTopF?0p>9dEjJB1D8I^O^$6-i z(cBtR(!l1s>W2FDvt=&k>wOg_V=^!|bEJMr-H#cd(ttE0RFuhHg}S()(UI4L24b4) zJCa8%x1tMil-m2cOj~j6q%oA;o-){Jsz0Fh`c3$z(*V0EzvtObljvnWV;V@gJ$nQO zzKhsA##n;`r_B&~G+pJFK{p%Nq6&|rz0{uqlX+qUA>^jV^Jr}uP~VCT5ZlG1+R2%W zq)fTGc16Jb6zscA^r=4V`3r+8^&EeaB9kqt2X5;p&GQL9ZbCKXpJg_@wV8QICudu{ zDf$n`^w)O~si?I62tVoN+ISfiD|H@3uCp{amMH zM`AKG%XQKgQ>nY*YhZn0D!7{ToRtSM*lTl2bV6};?OCWvO?y0h|qW+PuRe6+J*3PH8p^L3Wj4pM~fjl}T zsr)Rvj8ZJ}i*j^X)vFi0ihF}SAyZ{tqudy zb+R=YS*qsCvag>x05$=Lm13E8V=mk1p{~sn=+I*&fHPCK?yY5UklL*dI-M>SOR*-4 z-%+`q=(6g)dBPO`TW!|;kYd92!%2oNm$S>~w^7Zg#&aJqPg6Xi>n8^m}!sn+u< zSPOs`rM`w>CD600;AvtQO;)xvo~p3TL^4|C9M1vA)oX<|yO&|vbyTs1&<>rJXZizZ zyjG*8pbZt@CC?0QjvMt)D9BcgPc5~XcG&E^+xU^-3OKO*UKbDdpc7`VN5eePU~9e| z6^BK7C(UbpmTAB>C&jp`Sk4uSsYtcVz1L;n&lns89PXCvSEGLt{{V*6_=P%{+#M!| z>uuMA<2ZgRhGIzOW12`ILr~=xgQ#cF{1?QOd`UtvO{N<;OL`!9hrkrLqeX5S=9uWb zhr`}1ZULWq=Lhx7y(7Y3#436Gy0v6D=$g$n4cN|aj9~E`9sdAisK{`%`>ec94;0o1 zJ23*%y`zb6ejnnzH<%vZHYKhdR}sZLAzy{y>eR(nm^NtWgq)Jm=I&u@-d(8JEes1y z76Y34{Z@7+qo`va4UsD55~Hi)GaTB)B{UzWbHN2%dnt!MBSyU47k9vFQ^LFq(9ynS z=NuW8Lx85;bt|x=jcahxmf&r?E}R$mneuu@4rhRsalmUz5x6y(HwVG@fmATdrM?R(^>(3$Cv;G}c(#%BHWo`6KCpGj)PxeZj zPqMn~0<`FV$Wv@w>IT6Ljnr(2*tE4v;ezO%L6iWT2=6xRm`q(hZMl1;V;?NG{{Te2 z7tEE9QK(0UrHqn7dikP0Y)!j=stcZ$PP5#P|T|&^ihmqB`!3{{T=s{)jJc zExuhJD*lv!|IzS@e*l7B8QuRRhOxt`ZjOtYV4}`O2ldokP z&v?;3T+jx)rELX}v;*}ex&*9U9W{-T^_VxEJ0`YkSvlZ27H()6yAqytCE6z2)4kGk ze=E8nY;1X(CbpkMuIJkO5|zV?vwW30u@5<A@uAm9NZPIpjrWj#*am2o_iEbl0m{|4zQ%;s4^EJi+87S~0(`LB=su`q>^?y$mRG47&kSnMuZg#9(J>WEwbU$(P9$bM zP?U*^wPM{bx~%HJU#-Yh>Q>Dq1I^EEdURW1jy#z;EawgqEpz_>NOdZf+n1s4gxZb{ z>N+Sr=P#xQ))l1!lAbB;HA_xw^i_!s*G-{Vt`GA#Y6#g^aIpo~T{zK@H#jwtcG3_8 z2TQd+s78lAb32r56dpr)x7;iG03Pt`w|f?y`=-mvH|#qiWac?p3J~VV^m}wkI3@;Q zFC>>in**$LL}M&xF#}VidnR<*$1Dp2mhh!%=6#G$vbo(4>LULDx{@1hqgYX9Wv~jiJ2&X|LrH*)st4RB1SRgQ9H;%{Lb_wvwf%BdwPh zPEt#~qg1m;U^PGwC*tg-oMyer5TVHAHgT8oQF+MAd!hN6MCP`VqDXT_{@SRBvB<`x zI_^+w!EkW=P|MnTchxiSy5!XtEyswN6Ze4roGbl>{VRPoGC+9Y{Q>~{)Vy^Rea*3>7>duh6E`LsxS zXHV5RkbsPKcEH!FB`!(kRqt`9MB)33PU<))wAY!Da*W!7XLIya+Wu(f2eKrJu8kX>e5miRFyel?PTCy;|s_)Fio66EXu}AiAe`Dy>TQwZg4e z5_B%H>X)G8y8653L91MBs8z3)2z1I3#Rq8X9hIy*13=nqf2T60RvEDBGfRh5GnCf!w6z&e;X?z1VXNvly3xcv#CDbH_|r)v0b+45(M`XK z&&8R(XAfktFLP@B-n~#NIn8bCV#REUlD%w8v)cav`k>XTPN*cg(l*Uy3ia|Zf~zvK zG91>85aUAv^HJ@1%^kZS`E?tkqhb`X7=rfz+qB;>*dXF7hBgJ`>Y|`lM6=0~U4P|S z_3iPVr5s>!eseMGy4F_vP7;}KtM*)NXXy=+e>K+dmN}RPW^I#Of>=jAuIA0mEjtvL z##W^88!>WIIfbu%Jqf#1DOC-AP+{GbCk#zd$@r57+)E2areGE3{7VH>1BooC*8nvC z0JZHH{u@rTyPGgvpNV)43ivmY&SvOFp=kGG#h!OHGEQq7j;S9q0MD)CHi=@e?!neH zos{$=M9qKH?h`bUN6goh1HbB;OsSw)wT} zq}h9*=DFMTL(Unae`rtUw7dex8PNgAOn^(iNBbai0{pv)AzXePtz!vvyv@4}6?0Xu zFUzU21`VX0TRzQ&APb}nvMmQxz9=^KPR}elLwcD#2Sk8P{{V~@*o|%w%bl2k^D`eb zMpUL-dyOOVP|nvn&A(*8naxbbXIx)ko}E{67Us>c_CwDg66Z+JB4!|i%63Sp59d@6 z*ICDG+Z1|O<4BHcjk3a~=lO;Y!?4*Jh7P4~hRwcWrlQ81EK;pcGb%OQ&OF0lI)!16 zbQ+aLcI@D(KMVz94w5$x(5rZ7hA`7}W}cDXa|#+oCuQ0gdTzfdk|VcNS61?BdLng> zik=%2OD~q%xg0(mzlyMN6&(#NZ9zP)8hflB?9**8(i%3UMk?o#r!bGA1F@IbAMaA%fs$TI<{n}`p&+gQ@- zlB*}0E(+9`*$utm_vn|MConE#*`Qv3WI7@BnguqxYy!7S1p-|8aj*k!(v)^N=w5Kl z0Lt>~5#O@Z!QsBr(02o>4g-eM)OxR~*u$_;m~G%)VdTw9NY@qFM;PZZf{Dr`TcIet zCGDk(rBA#9t5>Wsc+*eeV7XAN%Cssnvwb4qtA*-h?Vn2c1H~2am_|^=J-=tszukIP z4;Cvk%%bf?i0Hmx@IQ&%`qYhjvqh#IE?+_TGmYW#5lV(%CBu~TLxzI~!Pv>Khv;J6 zRVsO_G4zX}!0Gy{f$hUM4AYrM7eb{ceWHcj1;W7=29qi?mzaU5R$YdtS%BvDK*M5A zFx|N$Ua0S^DUd^C^a;r$Ft(A(=E(`!i>1#t9T98MZCW{noJOHxI|*HtZuzG=Zitdm zwrMvXhAr87XYmX8Xx<>l;;>C5GUZF<2txUE$DtNj+UMKGzG~6^(J(UN^oM*%J z_*NnGt1=wjf^HW2qN4+Cc(U~W0OCJ}-u@$2t6J=?(CobL?9Rc~%vlAdR#{;TwD>(| z!TfQ&HkB$BpOT~PCd;>O8wJKKRqd;r;a&j#D_0eepHpH9=oh4T1B%pm6)RP99NjyG zrWwnC(ShS%0#)Jom*OZ={{Y7%=&^7wZVHJt8O`vO?-iYdG?zm47cp=zI z!PHrunwb0*#r+|wFgQJG&wJfWK#TtCPYU|2uF8&g-Gj_Js%)nG8~mur)o4-0@_^g8ijSZiTN8L*f5Bf-fCjcFMb%+AsiNjls_7$GN0B{^ zGj)!r^)@$@f}@A3YQY*K4^qISc<=GEgH^;(7>3g2Zl~FJS*MoGZkn&LxaS6=#;|7( zS+WZ89~*xSsqi+`#87Ov{JP%<^oFgz4;`q_lwCeZ5DMuCx^(d0^|jD7?2dx^J?t`w9T?4vqf+@LTrArtT=N)`2-)#D@6PR=N)<`%ecz}@>3x1?_~?et90Y& z4FfmmcIuxo$|2fYu}mXGt$DX@%BUb&a>qp(yXS77vPGnedw`Q&nZC+miA0a6eo4&1 zIcKCM*pSs31`eG&q)|9A2VGi|d9`oRGhE$9Q`Dq4n@*h}SK}vv^GD?gIoz|EGspl8 z-oY*XHVIQH5^OLJ$tQBeXqcSWDL3#+Dg)@V9R`V=&Mf4!fu`D}X2A}SbSk!;6e;Eh zExL74%5$8Vvcw{x}#$%bH?XopHi-Nk~G{cFfwnU8m`^24!z17>YJRp^+~1qNy}}C+@!|u zw!?L-@I(o|X)L>Ppe{I4EerpKkybBm-LqL|euGb786YkWNu zr$WA1n)92L&a}k0P>dX0-e*ACR9ka<`*#R#bw;s(<;~FPC!%QzxGgd=f*oj5qI$YX z(4gn1N{IA>@ggzO>$(GW>DeuW7pc6kdZ$b3j>qPizQPp-Rt|4%z0v5_5t}z;qfG>I zXtBoRYAmf&cyx3zs?VcT`m;glva?C;ck=%L_az;La$5zVzNzSoA+ga@^GqJ1#V1r~ z_@wmiRN6xONBE|}FvJhaC9CHe!H(Ja}cVHOBac`XBSU`kAX z&!U;QY_iK98Y8Fbi<^{fQG(mxWi1hiI2){*>b_sG7jh0#6(SYTX@=&GBBXWv1 z+7?ZzElAljd_BrpcFQ2_Q3FKTIT5Z>I_`-a1M>3oX8!6WrOoLYB9{LEPO1-S%AATT z=q$rDeo34|FPCk5sb%F5=p%GD!%Swnxl|}5AJ=Puq$(E)-=YcVU1b+l<{;(P$fgCq zH$8=daOjV$s;+r3ebE^Gq6$t5ED!ly{M3K-cd}-SK_-4uh9g*o0+%& z04|2-nYYY!3v3s{b+Xy7a(72&ApG_VGtA0ueZqF)1p1&GDtKZkHQQXtIh$>f8H?Yl z%JZ_^>7hzIR~*)`*R18NKJ#0;igrO+RU>2bQG{7GOVD@@n|pfLrv zE|K~wUN^{_Fa4l3;CkcatTM4LzQ#(&&&?&$2Fk@3x$l#AY!K2H>A6a<+v={-s6#;O zs>Y*RE3LU&7P_)tVZ#Y8MGPeU-`;jW>ri&_?4`n8I5mJ4I^`F8FmeS;R1t zvhep3t%<10HJRqM-CHZt_thUh2hMFeTtRFTIlcJ3}P=)Af556db^07U`^6S9{AOJ2497V%D@~ zY)Yw&y@O+?bqu18GObrLB{#SY3DmA%i8k??Pgm}@s~2B0wdvVp;{e1N<>c6`vs0~= zflc0EU}$xY`Bi-N3(E_m`m|RV!&s0U)&Pd;G{xOjq;yfumIjp)UrnX*NzShu1vSCv!ZUThQ?2~^4KuBle3+`LA ze3U2Yuu#vH)=GJ-fF@va^Lw4stsbC)H+#MsjuG7mOIZ8n( zK~fj(CJ2cKWLj9aQvU#M#y!XdQ!b?UM&RuWJUll~m_1X|sZ-M34TuTp(&vn}-c=<6ZbCA+ z$YkgU2m7hKmx;}AEJn#bn_ZE#naqmcFwC|Av2K@9BS@;;!&{dT9c3AmoC!TNclK61 zk;rn)ZTq9M0%~&>yD7Usyhl)nl>)()@QkY3*|NG%MYDv%3cgzdbUFupQ83&!wk>Nx zzL#2fTp6Y_HMZ%!)*0rRwirVQ+%Tdgy(jxB_}{pvQmfzhaUgeElxUaOZLdjO_lc{+ z>CkJWokzNl8keE@94(OG?E9ZGqjQ?3b1sh)!$uVY06yZ#pB!zsAlRhhnO5%x9A4I09}L&>zEJ5Mk+IqObc-fI7R~qmh7byroiztk^k$ zZS0egrgJ=RhW)bw_PLEN8W6mnj&K@mB;Dg_P?fW&Z`@?7Ja)6x}U zq3AzOzX6KD;5`g+G0pC_So&DXK4+CZmOl=|(KArnKBK2~dkn(I7SgM2Knk;gqn+_r z3#9r-6H1OqJkYq;0ZrM9_tT>Fj7=Z3QGOPt;LNpoABi|sP7lPM*FD)>c}CEy2TF|d zR&H?qChJqATxx7rO~M>;IF<_9t_uNJvb8@gt}f6n(}gn>%EQcKiE*(Deh53-IcTy4 z)Z;6}th_6$Q+(9ZzeTG?qiZ)aU0}JG!&!2kKH&8@rwXXrTE^PK>dR%m**}W@1*+QBIE@B!3C+s9b0J~MbnDS=glxstG1}3Z zG=xU>xY7_>;r{?gt#(@le1`rl9;h01C^9u4L`F;{MqZ!hYO@*Cf$LC__-}pXP2Kt^4n<$ALiIZPe^O924s;!o>&li;CV%ZI-~{OxZ~p+pWhYCcn?)A- z{aU4FYLCH;Bl&Hjc6wmk_2?59LC$muAHNN=#q{AV9_R9Z4_KfG|T&>V0>0OlBVYkO~^!qX)+Cl-0q|5 zX&?5a$8$mXB;Qs2Lr_&Fpe#aSMu9V$GR{<|nsZp{0!|=&F21EpRt1Lk{8h>zyx(JF zI#_;LEw^=cl@qpwdA*}((0n|w#>HEvGP*a}4UEbl+^ZD3A*nBr!z&plP=#8xJMGyb z{H=|8Dj1rf&9lAH@S&<=PFT=rLdwNdFPPuttW>BYuFw?<&pO1EPb`=4r&BYVCg-{Wn~#@OES#~Mut+l}%XOy^gZ{zf z8S`eiL903&e#*{GLCyNY9ah+o=sgop=`M=yCgW{FgQP}ZnfF9!Ci+@r-oYnx7#rR; zSNbo&ZsoCRVgp?w{{2xPhMwo>6fLW4e+8l@0Ke5@hm+#afJEx7J%HR>*#*owa_BZE zs-)h<3xd0t1AnQ$=T#R{<$RlolfSSij$yV}Kqma!`y@4kp*J0sD25M!bfCGM@*)C$ zT;edUi`B5Yp%;Q~Im=AsBg(%NXx4lZJB@z{ovOnOCOEK8xkkmfcOISPnY=AG(-&3feCU zrzvi37_RloZ7QV!=5=9hoT5(u#BhbWtSeo4I1CBfPtW*YMox5+cAG@RLF zn-ZeYTPABvoZ9S(MeuK!hbr#No7HX9nEl3M(o%EKqv?8)+nE}ZvbaNRz(pyz6R8G8Xb}h<@Ge$ zVJz+~goL|KnxAbh1}6Ui>Z0I2T@-=MZfHsaZ}@cgPHi+)Pzr!;U=SVygzBt6m-bcP z2eY?YC?u}q4*viwqnjgODOPE)+qSB?c5C;7w8P;oav85Jb=_gUu!zc}$QR$;P-Bky zr0OLWoo=@2)>W)U@X~Ee?~K+OB8LY!5wg!?+UDC;Vx4WqZ)Gi26k84(TiGG?LC-fX z_vIpAAsdndU3-#N{*7BERF3J_HO|NtUzxyZZP5)( z*VtJF)SEvP&DFq#=JR(7BD8zWp~_BgHJx#I?1JfV2Q{@0N_j($0}8MtyEq$-)O_bm z_1Q*$msbdIP#W}+bmw6l1r@Vfr}b=^^^430dmWI^!5O{EXY4aiba0;}z~;4>GeOX7 zhWEM9b7}ggdj(Tw$5Y(~OYfRhHsM)OWL!&3b3=rC6pP#~%WbxloZ#6!y$`=+%%syW z*G{r@lmrB%ci+D1!(Vs}bj|vzZ6&Zxh5jAFu}S=a!&v5>NkSA=niyxy0@py(*=XUP za1P5RjaT0-yPX!68=2mjpUGzTW70J!zAc(ZRlmS+10RZ~NV(J0EX)@J;uWbe&BD|z zIuO&k@4OA+y6nYym06Mn!PP>;+bvNu!QF5^7TgX1Hs<6>}$T_c|OyXYXbDbR! z9>-92VC^;CMHL0czaz(&Zh>@|O1W6giPzn6^>NhN(aPZI*Y;f(4dN8*F_~Q?2!e@A zA+<%^Q!+m8&)9S*OnJmJFwM$UrqlD<_iwXu?xxx_@ULT?n=|f0(e8L7f=!>Q!@&Z%F90!%&%%cP1Yg zrZPrX0!51Pjy-{?Lx@%L8tao0)q9_ayuUe=!>%-ri_biB!@SHln@=kXZ#i%5rhmz! zWu$rQVA!VegRU(z4d@d(S#1p5Zl#}D-t)S$sE3kI#F3!kZPD!KGFsd04(Qq2pk=?C zQ*|;pDCBT;zN#jFmdj2-X(5dQLAT_VM$~+UH1<1`d;AYire5O7PX7Q^ul8yt3z*l* zh!Y`8>@=M6GQimDf08}^2ceI2{LLma4y$YZHlDRIfwU-nfIX%zk8~b}PDf_4e<+{X zYPW^70889X!4bSUjCm(99W~V+>wxrTOE8Xnbt=c$3&reoJtb*%*}rQ_(uZUn{K z142{M;q5KEn{UV2ZJHFrAi6bdnEjf762(=n_mtpWM~7`ErNcE#V!^q0qVE&sWP#{x|@Z= zpUmFdU28P9JGo`#&B>-1u1Z6OhvcV~uypEG{2v8%nr%8OG+fr0ENl+Ct90>&nlZUX z=T(c%@@kM1!%G|{%^JsEsK*E7uw?X~>bkVbgAxmit+KCCwF3;fuqH=k3JZdjYOTUy zsyWt+kCNi)z4-nlaRsgoVVk>kv*I2lGz}VggNf7iRJa})&1_X{0)BQ~-ZYjT%;WO8 z$zqP9gV3o{3{5vg+vK)s(W!@ErWu@X?yBI8Iy8r+k?IP|vD}20HV(@en>73>@q8G4 z6V+qjs$v<$snf%Msv!m7I-Rce;yPP5$Z%5o29# z&gdb8655vv(^w+NZeeqQ&8Eq;DKfZ^2d9YUYhl|iQxY7^L-3`y3(()oeV0AOxNSc> z?NpmC+yzP84CeSw8y3pdJm)yJc?sBbTMhe04Y8G`ZVI7K&p4mFY=23zzfQGUk9{{b zK=hH-XvBzOIG$+pZBS~te;qP~Tm?Gil7E?9<2*MPgg%8GUH^ILS9jl>v4jscI!OSmtSDD0y8jMqH9aB!MhT!$=H;7LX z#Rk%S++YsNt-c)t< z8mlaRc1~rPRgJ?_ID*(E6AJg$rREI@ShWS>X85JJTxJ5k4y&7)z=4~(`E$hlDxV7C zm1s5j%Sm5N_`8Oh_zIP&vEFDJh4W8}@OZ305PPfUmlG4y-E?@B5#)AYxu;RdI;RdT zb@V%?<_?pV$=dApD^eDMHQcfIqA}OCz`6sy1D3?W?1<0!$Pl6afJPk7Dt{47+jADF z7&Zwu2#_aMx=&;?J3Ic=Oo;Ua&S}#!YxHA3mS+3HuUDG=(Ohla0qx6e^`CWX;hP3v zIx_zNolxH6c(_D=JVlH|pVbQ>YrR(AqO~LXG~^zwHQhnn*4wV?d3mFj!{nk|HU9vm za^A!?a{J}>OjrwlM4U#u4HR>WOIm*NeM zTw-*aC76{zKI|56NRAmWP^-m&92F8@pf6qOjmHj$L*`Zz)wIvN=x8u+=+2pNpcO#yTgF zmP2fJ_EOJ}PU;zE?b}300ln{k z-9gaqP+Qq*qAWyRcafL;3MH~VH#&tk0~T}>X-K%8HnO!G5?8nbe!&gymP1=^sP%I) zCsTOrg7eE7oz9xAG1#^Y^wV<bDeT09oA;+{}Xglcg1d#`&-dO! zli`4Ry{)PtXQCSpHXYPl!q**+jrTjNn0(OAnAeTyIIW*+hns4*)PaOysB>pE6#h`KyH)KLDv(YkCJvW zbly1&T?FdgP0?9Uwa{)2?10%1_<<2Tzp5Z{jKR?YK4bSu?iiuFEHTG^vH{byD*?gH zgQ&R&qNWA&W}RS%N68tE69+D1w^7r&91Sm}kVU)dQ@!E20NYZlimz))EwsS)Qx{Ow zyA5bNYY^~Ffl_O8OkVps$T{;^yXDzACAZ6O%jBp2#-#*&?emm_;=@v))>(%w)Y{=< zlWZc36v+hhPr9tZ!z89X(oXt+KQ_54#DBvmt4c4L@&*&ew$PrL=Od-(Mbiw1_%1Q$ zJn17%(ZyWX(0;0uUyw+2{^-no<2AqJm*5uxz5V@^g+SJU-|AId<0?&g%^P*&!Vfoxwjzcfi1tlew@{S&*X{{Zbj zq8%hKd9#2V%Ls&Kv@jUT2K%6v80mSnl-S^ObP;QHPIx9dEz#z8;#W)I+LZA4mQ;5* z9|>H&G6@8_doGWI;xM@bD>c$cxV4mAgFU0dyg}6%1!mI}PJk}bg={GkPbfVDR|DZ* z6;JGJt46b`Q5TKZRfAxn$B^d@g4)_fY4!(=WBiJow+RGkn2$D#Lz?*qS8XWft6o8;pwM+deO&q7QSG(z_4ZTkV92@TfF?$-1p(}!T1dM# zo~Tb_v4@rJV@|PSDe?vn_j#M6c6v$38Cbff4^%nLvA1I>2RW|+w3>acBllKuR6Oc) zms<|SXSI%@_f30-=iI1t{sCWzKh|9AfLL}bp2gx?;~~y@I{PiGV+$p_ckZ&QwX_^g zM(0088RyBS3XHn7njQ<}!dsXY+<@h! zS}{C0IJcRfMT^1leoaipyrf0-C2CD-jeRO^$SRM;YvXidnzEf|RIgf{Y}ReSIsz7! z4;NCq%|n>l(V&G!mJE3>6{@*}8*=Lk_YK6;qQgn8hE1igZ>qd@E1HH z_D!290KLV-r{uFKJ_|0W228DKj+T<8M!Y-+TdZAIVbp5kB+tL*lg?KRyJ$2q)TX1M zz-i~@Y&K?dYKY3k&_;kw)n+}R+|8LXJASE7W{}r?EL6tJf zyGpe-v^d&qJ%Tr!+FA1Z$M;w*#}Z(*r>4XrGZbFZHt(loo)3}9r0hv^GM2TG1f5DZ z+nU%p?QEsLqQk3+7w2}L&1>&W<00 z<=tgtxT&dG;g5DvyH`(>#{E_YKaV?koo!w;81mMcgNXtGF0;eJv^>18WxN-Jc#bO#PaBGJX)`znGruMDCxD-a;QS(h z!?nJFF}YmFhrfrkXy6Vj#CW$?4>H;X*+V0tTbMj|3*lHgqMcfFsd{OG<-hTyjDL}~ zdY1s=gNYBjb78Aj824n1w%u`F4&eSn{?&!Yd4a<-fOLh};juJvo@F5UE%h!u@P=z6 zVJbDOkoL&4hGk!g@T#0jwjQ+#-c#6lj-a&chn9%*Dphk>DG~_ktmE-+ZwfVVzwR_k zKu9(-I1U$5>Veyk=(@3iz#JRME|6{t$>F?urYeqF>~#v`(&uirFc{CYu!mXg)hL)8 z@LFgpIXP~k%B^dj3%Q2M2ND_!j*47GmZU35O3s*7-&EMsY=WweD&dTM2T^c{gSFOa zjtiB611WUMruvlWjIPwB#Ia4KPwzE00BW-E7|JwWY1Mz3nAycR!$!mmr2Zk|pMLKkx*3)RYBY0is3(JdpDp7wZ*O_>G zxV=g&if@s$F1N$pAjEL&GYNZ(ovim-<#Z+V^$OUa`kqBw^yw=04yPn#fHYi>3gZ|#`{A=JK zv+aS>Pt{kC^q(e=4$+gE<3O9@_t_Eb$mr082r(;9!!g^pZHhBFwA~G^%;?KuauFFQ z`oeYKf{JBA64^Madmt+V@Q2Ge(D}WGYZg2J!^{YP-v` zbd*YtfG6Y%6P|Xzy0x%m597Lok|S*ti?ZJ|?ejzGJ6&p%AdR-SM8t;}&2XK-Sn1e= z+4@|no&ttC0$m^^24`K@B0fnLHsg4*i)VX|o2j3GNJx-dzN#;7&1~-}5*=}I`=sto z8!5D%0vh?JF1jV$CNm-0^(pfV)@!@M7jgm+<0n#_`czy-Z%&(py)7qHeF4KuNOt8T z(7V|yJ?B&qV4(P5E^VnreT{huE&F;q!c=}Gsi-1p-tqwx9GI>qc+PR=AD$=eO)C9r<>EK zS0b^+v&&Xln00=9qg_*W4@l~Scbe*4(roozXtw*b(`O+cDhWRR9yaV zPh{pZLERm;9SQkj_9yaHp4oXBk!nV3I>T+y43ud;br(xneA$V=vepEKd|F!YBoWPAbCv4;mWsl=4HsGjDY=LmgBT|gYnY7Sc zgdBmkbDT#_(x&s6oi@Kjo-&7td{pL~+M>3$foJE-8E!r=bz+@fmg_fIWVw@5L6tJN z@}e@ZaP>ykRG9v5fOYDMA0Nx6?N~epTn-t3B;IIqeNoX@Ys;oxaiLG2D|&W2C(%J3 z{{YDbtKrw(BJr3Lu9Aja8sa&L*p+E1fqel{<3sIrUZb;Lz0qqCe|yfBRi1gX8v}K| zE8&}D98PYdWf`}9`>46(u#D0Qketz|H@>TS**6dwl}UB<8*HbXWy`47=Bp1tA0Poz zY&u4pgqjo(fE2D*3X6)^0? zkm#~}`C?koH|mrx>|EJk)s})?Anq)mFf0dM$_r}A05-=?WbZt%Y&R;sWkiZ>Pu%8d zJ@icT%OgSfsG6~G+wa*#xw?lsPO6?U4TSI~JO;;IQ2f!GD0l3lTpIH&a&J1sYB%NG zCk~Pw>~chQ(g*ICxQ<}&f7vmXgZ!e}LK%=fT%z!l74$P7m6MsWY>|HBL2`whh|23b zPPa@%>epL*+ocT^Awev+RPAtRg6Zx0pvZI`8lqm^G(8eh5?C+fBP>V7*Rqaa>6;CL zi(i$%Xrf&@Hv65E)G!`0$r|)fyJoaPKc}~U4{<FTo^2HBGOOtkPbqQO>XD(9M}<(ryi}y< zCs_Sdokh9xbl59gt$7t2%q~KwUZeBISk0i^d#M6XbA>WPdj}1EYdW=NzOZZC1n;p! z;@m?OfWs0kI(F`;U>}IBMAog9`LyV>Zv9dzYD;*`Jw}P5_WK1+wMyPmE^Gm)%h5Yc zN-q@}`5I+Y#8#~M0lK9egp{b(sKK~~iqUzh z>IBkrUJQsk1)GhhOUS2KIozi$M&^%Vx^kwOg3w+zNO%<(-d#xT)lj8KR;!mt64>9W zwTP`t89)&Cd93xrY)~neQJRI*Pft#SsL9-;MW{JX5pdB{9ZZ(HD{Om$yvH2FM;Tt5 zTMX>7TE36 zSxKag9j>SuXa=r2O`%84+_$u*b1%zqrrKsBcUmai?cqd&pVEM`PkcZcMbj6NzP}20Fzf#S^rhwW&27*Gb30Co zALJtBh$h|BWaf<{stE^mqrvcJ6JB!X4b~Ml)4!%cT}K9>aMTO3jibR((vu;>P;OS!d)=CuQN|YZx&& zPls__MeJx~4J5iXUq*ikd?APM{sdy(_mx1G%S0{G-b|`%OacUgR#%_+j7*yh9Q=_Y|X1m^?8RskP$Oj=)Z<8}c^@s92>e^&St7 z#D5LHg&03KpNjErb_dVgvu^9O@Ea=dt_J*H62-R>h{bcyLPm?qaMbw!0E)b8SBUYf z6>L5S4FZ#D`U6IQ4HsGCPaWZWJ;0ykzMXtb2Ggfc;5tMj(In(aopv*cgTnFka?M#0 z9hScjtk>{*1hvJ_5%peafaBE93c_LQJO2PD5Ch0M&a0|#7^=)Z9+e{QSMx`*mxQnJ zG)1R5_&SwnR;1e*2RG!kFn)KI%w-qOLk?i*R~_O`D^rK#8CI*j%5D-4-!-e@jx9>9 zI*!eqm07d2Qt_sWnS-RpV=B?&6sm?utjLMHggjm*o_2Yae7o~B+vu{s*yiyTJJ!lV zLyvWz#xah@VsP}!xt~xN8o<><@wha_q|U*dVuNV?%bQR%EX+q9Ypb!f8zk-ns)jd?ia8xhu5+;Nq18!Cv#jwa5O)l~KD9@*QzG2gUS*B((_PI`?l1{t z?1keG98;|PJ_OazA}Tbyb;J10_2SKJ z>eiZQ+%)E`Cge?r>avGYGq&ONs6MMa$JlIiTlILQD%l%_b<9gMeyh)$S?qC+tFrKx z0+uF=@pWCy-2&If-}=EVa(Da#2~vY8)MMj4-akd&aC)N;V*3^6o*Kv0b}@pRWwRMh z-Pd>L;SAEv+>q@SnW`QP>FE$`9U$(pd{yCL$FPQx)!F1eG2 zQ&OP$KgQl3ufX_&=+&hHOdXdf;Ai$C)WHK_(uvdtInE0K#hhBr~ruOx@ z3J>L;>tF1FJ<{J+pBK7}7TWHBZBQ$Q5 z_0wXTFf9W#CVlL6+u2VtnEwDrY`VeHLPe6&4T3-qZ^9DNz_k(B-(zJOSFH!t?h_ZCOTCp^ zm4wel=Eb`@q-vG776DYPTjJPgnzdqIA30T?^7xPc0E<$w3k1}knxG>~ z{s>{jx(jSn+v^RdV6Ew+C$mDAHHD_~tkREGr=qVw*eh&gPhFQgDIv>qfO?_U9ENUx z2uB-&*d5d>0OsAgZiL#<+LTc5n#WYnk?`DTis&HzNN*g`)BJ^_axDQqsLJU&s9acF zeoAhBR};2`l?dkLb-ImIk}rKG(1iKT*4mwsUIuGlw{-_JWuEp|yFd!7vO#b8Wec&y zo%$)g`Je%Rz$h7r9}?FW*nzn2p>^$7=n#9**l-zOVUp?THeV-BoaznBy&JFDsE$2eM#GLhQb{o*At*hla7N{ z*v~<*PH2|8EQdJ2?FwvxZ&^F+fE+9|BUb*X%_K}Uw^MJCS3w;ufe<$*RUT%#&YrW^ zvTroBdZS^>_@^MeX4r4KU!xUC_;u8#d^NtSr#1u+{fXEnX)dKJ_!M6;t!G&Ll_tEnoZ1_XR93vPp{FrB zc3HKQnkX%Y=J=H7Ez7Kc$A=I_&gxT^ zE%(_yH-Gg8g+EqJ3PxKt+YHiF$6VJt_CuL?jddeMF_<`!q1`@YZhIZ^5*w%a30cH6 zHaaG6rUrvgnoZ_(cHL9PqmfAWYojzGJJ-}5{g8#6Cg5tMCsz$L8{H75(6$>e_-tcs z)C;oPHoGOCD_Ixp5^pgl=u(v-q7Y^d!`TZqqfOBs*Icvcg;BX0Cqg~GO6j5UMb81l zb2{vYo!Xm8i97ZINzcoFm?$o|2Q-`i0NR}>8{m`bJ1l8Gl6f!qo0=|9;Gojhx78zC z^yrhXZc%MQA)(Jii{Ox2=@vacspPfrM!L?3a!t-ygEMrqkj4hKK(Qqi!y9Ag4%0B| zb8e&?%s~8ZLWnTZ4feaF{L?g$@HO2HYDAm3AF*_s#KxgWJO*8|Mu)l^@}K1Z8$yem z{O}tG@9-++ax_xpt^(oc=Xjq{vh>g4?}O^%Ycmy9t@4JQ*PP)PO<)bo?7iE; z6mb|%6-W%(ND8pRax%&NI*^)G5CDqm1e^od-duQ<0}edFn1}?en}|VO_bdFcQqNI({u^*m|aT1Y;_3ir{_Ep zVYVlh_UKV5GtRDjzD|cvssPM&637i}o_qCF@hrqO{{VSP`vaoiEU4PAY0APnH&sf# zLsjLaw{D?BT!M6Cwbd%o&rz*s!aJdgRKR$x&e^wOtk%S}f#)nLkFA}-p|c?79aev) zh|k2fs~Yg_?$g_4M;TBuiKrXSJx8kE#8PYUnR9ZqSoB=oXXI%WHkbuVR#G!fJit{i z*HP6`#bM&6Y}E3{r*(hHby;z9ddFm|QKsSQn^|Qa3zMG}s^P0Ltv1A2-OA{AcM~{@ zK1-U}+y&3$=@-;3%IF#tOe^Y9BsVnd?%OKT(DxK{?7&I$c|%6s)y^AR?A6&iO}g1+ zQRCc!wf^ne1C?n}#9?bxVDp-1LWk=WvM-fKQ(CoLC}nC*&q(@)&~-qqNMpX|56;-k z_Vooe0{T4#*H}MbQ(|*)_lmf8IArw!+ka)cyi;n7c__V~Wi;sJaT*BxiasKZ zN_1H)Z8noP>(HVMbtloOSUPboyV&T1?5k(a@M^lHNV8kG>{4wak(-ZanMv~Jc5vBw zPm1t=W5;F=v+h^1V(=BI(-jLESZ*WrTn~-7Mj`Y;G@M;FJ1R{gk3XN^>Yz#`dM=|- z({o|M#Sbd5A30NF&T#C}2z|>`#Qy+EKo=<1-L1Bx_EIhnp1U2TR&OJKHzTH>G*2^j z<-WZZaA_gl92q?|=AWV;m;eCl-}OK)%MLf)E4`$js&Uxof$Bdz#jaE>o8dF1?J3;C z9~o1%fNIwFPehCuHO+KD$36gWvr!pI+gKQaTC7u|=4aggBf3q3Ob^)&ov!c`8gTyr z=_bw!`!Je(Wy0N+mte#1soh7haAp0RHVa!YZc-RhTj|Iqaaj^vzxMJCn zZm4;n^f1m5*?ldSX)0q4zFuSe%XOSKNGAO{BQu8_^Rk!Zjg+uCmtZOu=F08i5}p{= z8AaU?c3n`x1~ziENH^471^gVad6Y9xPOy*UU5D|U)l3yq>$9|t;Y0m16IHo`9V1U= z*kLfVt56OuZf4x|vNlR^{Ir`5(b<0_eUygI{%#}84tFm8>!D>BJeJOPkG5$W*h(}o)L7ygN%&Q&Twq|Em{M!O z(0i<^7>~OEI(wB{8H^?~J+LO*%H+W5$)211H^lw7iFx%H+~8TQ>D^EG-^5LJP;D=} z${>TGRQ~{l6)JGih{ac9NP&P z;@%*kQl=Hyj6EZotmp@I^at56w6Lt9SsNtzw zwK1ZjKJv$**2-7-sN|+b(N{(QgjH!OflA&pk;*XA$!1`L!P0w1tW8rdn3ZN_1{`qMclOva>O3 zLaF-Q2VaJ8`k!cfUiMQiG5G|zXNb6NH;0zhtqzIoRa{SqXykng9D&}ae#+w? z_K>+QQQ}o=Vc%A>+$TolFsJ>|op`)hj z7v)CSV08FCC5y(?drO*5LzY)PUld=7sBur_X&{pA)?fO;!#B(|TmT0nbPJ#2JV^O< zE4l6@nFBJ<`Ig7%b=capC}0Sz`_&wTI{yGQ#PKdGT8<@@DOHfuGOD*9UmDSxtDxu( zp;e=Rt6LLL<#G2|w%gHY#PJ>;rE2f49}bBCE^YYAq=8lWz}s-U$8fJQv&B}pz_DBx z6`}TAZAv34gFee#4B4f^>XTFu+iMF$ABm7D0%FZ5%U^_q~|40{XPeEE}-VDTbKhp!S{{is9HiJ1Nq4-#AO7Rky(C(ta?y zqur6l1!w!hY)gUs8*i>{1?N0V#%9kWe$>m1o@6hF28P_3Rjs8_e6403$`Uq-kWRu$&Q8D zly9j!B5uiDi!mP$HU5d33v~7yg*eZxqjeM7!3ujEu2qSo+`E0VCGCFdPlrRd=oDjL z$vcrEL8AQA7b-G6T*+;iJKT3t*m_{-mCwLq>Usw5Q%=c7Tjr6m3BxkFdYi_`bOLNd z>UWg?02TB*Cd+bnx?>IaXLtyU2p!Hd1MpA~8EcTGf9A4@Jm;Hh4`h5|7`_K6zPC^j zzSchFP1Bm!wf_LJW{4m)wmQml5?e*hI^|OHYPP(3%T=AM>g!DT__NL^d;UeWhEZCDJ}n zvu#|6vxjAX`YUWXT@KY%pzDwuAX!+q&-PhNvf;!8y`jo4fjg-WP1H!wcIDVzH=&f? z(APk2x+oZI=6A^!xGuhH4Ix)|stx<8P62^=59KY^(xP)P6Zj$+_9JvRzBz+uKu>jj z5H+&KYwm@Vn+I)RQ7kMSJ^ui@9&$k$bQ*529+rvU=?8MS^0rhv%dC^0XO+4X(Jqsi z{{UsQaD}1T$Zl@7Do=+%%X?pIA;Hb^p2M<`GT;xZqBL!&n7%d=SKC$e0xbQ{E5xl7TJr!Tq~$mZqsLPT5clw^`WjTR2 zXiL}N=Yg6@Z%+NunES?PpXrn~xD1f#Dca~G-Ah+5L!OapllB)x&6U6m)|u#nE;@8l z&Nb%lR&7nP)8Hej-VR%oH*mAP|Vt zAIsV_C~Ph=4aamymXY%Q%9EXkG%V)(O@_%a$2F}R^-ShvftF6;Nv$5l>DmzrAWCGG zuFau3`=b8<_L$SEYB^nO(gxuXtSmOnLO!uLAkZ^g+z!bXJ1%UpbUl$9&IunV-W0_= zj3+JrsVYTeDE|#`uP@#~CaLs+yw=~06R`N?lofo%6Un$KX=ADQQ>ZaBi5%Tv%ccS)-IudVy z`d0FVotM>brpcdAH!j=9UW(9U>zhpzI)Gz|7Mq`vXr~|9P}2@^hQxnQRUuDc>HPuO zT6-n{*L~A6n?%Q5x}hg>6Gc3cZcsEboz%{u+TIUEY|#(Z)=w16t*Qz9DViN{A2gWGxqXLHjLKPC2Pjgx z3DGPbYE>BRFLm!84&p--!D&-EfV@|QU=BMH%1yhRSFw0=hC7DfY0=Fjr{kHGqdcGd zo3#P+LxzD?stK!@wWM?kL6rt0@0{UHN&ZU)YHpoXw_uT%jK)-@RJ1l3yem{OO=B1+ zz0tVtv+psPP(ZtL3(nr*d>wytdVLXFou4 zg+l>OyBu2QOLWb@(H|e?;hB}LXb#cI{TZ8y;jJ|dOx|Tv=^3mL>CH}Bxr3SMCrId3 z%2lY+VVBFbAa1DRF_=-3o<|aHNOZtS#=yGTVf6CnZfAPBLYs{WZo8Xd0RHO~R6p)g zWKfvR-5Nz^igg;;Bh*nK%R;3$QhTa7!Lx7OWn-9F;^65gr$upso>5Mdv(w&Pq8=v@ z+KtNGtdG$S=oyb#(`L6IOdDNiR>br2*psPRxX&)8dZnDrv<=oCBD<h5R}BTH%e%VuNhbj| zauvMhIFMpC*(OcJXSzm#TH@5*N}w4zo3Q;=2V&u%7P#$xi#JTsSUhDg`6D%k`>YAC zfyH^Qd$RYq`7WT+sNv|6ZqeCgaXcK+B+{9*BjCbd>QTqPE@=kDgy)7F1~Q%@wVeU? z1=0%TSzfOV#mu>siQDmARs)D(v5jCgbGUz0C6bCrX!I@#ilQ*@r%{sE-KU|2YOWyG zrbC-gIJG%;qq@n!Q8n-kYk%Bjz|zX)I@GFBWjd9vY#q^WgM^G4x7l5oH)39CHLa%h znaDNyDO7W4xSH*7s@*EHZ*Z?O2r$GxtDN_P$y7Sy=7*1mwA98mz*@4|Styrey z1`il1xc#ZlIkbCp`X$A9R}bSjQ%%^W^L;|4TN#9)MLN!F!P280%11;$v(s!;Ywm8{ z?4n`PlB4O*;(vrRA6fNj;@tK)%K+5-tiKv~FBMA-LD(z{TTXz28LQ7#-Zva7G_}}@ zjB743b@?l-^YIjmaQKWpKrU(29=x$V7e9>t6bkPz;rOaBej1xAkfY6mT>$diUaD*X&_l2MtG&d3 z3h}gXZ>xu_+Vw}SoazGSv0fA6m@<6a4Peo}L;0lsmYOjeOEZ9Qw`n%^L^yEUG1f6V zD-Xd{pkd5#oqGI~1s68iE&`uo;1`q~&eu1W;nU=kM42|$BSc)Tb;Bjc=csS(M^mEkmolxfv5~|Y0IUoe?&m+#tVLZ)L#IYb~`M$ zmgub|f=ik~wUEFNLYsXM8zgST>9{L`oj@?PywJAM4bwqoV~8=e=sufX z;Z?T-s^u{lr&e*K=end?Ey3w}(0L0G)63Lp+nJ$71z_PCAhCDlRbUW^&TNCEA7PZ0CsL-nQ zs#J4`Eo(H5W<8Sri+xG!eh}kFiEzeYGgD)Tq7&=XmHwJXm{S?9CJRS_LYv#BKJ7c56^Y6#cTb8gj43uTrN7S z@$x2{=-J^76?m5v^B5bSAfHn|&DMS)!-+G?%;q+pqhfljwqq((srP}%_7-;rgjB$)p71&12b8_a-S2&xO?e}l`*ccfWg^P$MFsy#VC)nvCMe& z6VtMP?Z~yk4k5)(aMxddRh2j5e%Kh(ln#eanittyS<+u{WCT%8n145=wgDxCY;*9t z!`VkZS3T0*2E}w3E*kGOl}3kPu&}h8=Vlja-=gaHd)#SL%b*ZSwFq`&@w@|`582(3 z!p@CXmhr9|TAnnDt&-=-C3?3R#yf`AsaC6HuG6~VIIb{bG2U@wLw}U)w86B@bAvC3 zG%|^6o22Wi9Y>0_fXfhURm#LuX)Vij3@#hYe7eI{{{VHYzEPXmZw*`Q&j&8h+1M+2 z+WInWJymzMn<{x_vK593PSn||=EPLSxWEGa09SZB>EWq|Rp)cM?6Ye*!nA9c+u3Tc zMK&6CJGb>%r^#&XI37BK-4tm}S3vaG4y(Q3I5R-!ErK*B(0}WcO zRtHjTj_a!r^|KyMqlNLIhJ89twq?}OtM-Nm2UxBzhGBgA%+0i1uEL9c%|tX`y5{oi z=vpp$A@s{l*ll~%jOaB0paN^ols0OKF(U+29 zPn9F1eae1OA4S%9o5A>w1tH9I1051j-64Rc^P#;_+#XnqCpm!od`BiI!|7xy1dW09Z-vJ2k=@if(AqbJv1AkwYh#< zA{L!@3J!cb)1``~u}L0pbq2RmE!9oao1xSGlw91lH=UNRf>9FE*^Lj-D9Hj{>d?n^ zEXORntSFCAo5qNrfJwunT+3_SMa1Qu(hq?g&{8h~32%Ps(zp$b;2<3*Wd8u?Yb4%s z4quzMN$xI^P4)wzME?N5h>rV>6q_OrUctL4>O{83SyH@6)AC91F*pgF){O#gV$+)} z>IP(_7#nO8Kh>A<2w@=_^QMDN=?714suwzFH&e_eORcwcEijSGhF^&LbSXIW-&BMT zpH!`4G&(An4U9xO`*l&wGR|52)V96shwA=e`l3F7@7RkE$v3IJPg0SPAT`hwekXn? za_AZ*QR68mUW%nx=F;ENiu0IDwAd%=kqo=Y3vig2Vl^vVm zlqc-$s8vXpBR+E5FYK$nUh7yLQJ`opB@N)Z!pCoQYjP$J(eYW@PgEDW<8J7#Ia*7c z<9i|cgzkDRaYXbpuW?{bzREgjuD+z1YaOnd0kO1beU^#xCWW^yS?-@L;IZ8TpDFce zsZKXL%ujBJ`~o^y-)ZimMBH5OKcbV1S}yC#c6ZBrnb}kdc?Rxl7wM?jp}fb^1R{D& z?05Z8##tnM)hJIu>=5Rcb6-hs;+^u*X3t2pC%CE(Yitu_$sljT5sJb4~)*#ZK9@OyrssKWJB{H-A#PN_VF1V~nL zgD!-3I139Zw5Kuj&coeUV{(`cxzbP>3)_fgDp zPWv9}Zz1e}?@#EIR0tb`uNsSq)mF{RmoA1#D6e&-SfM-9Y{Z@Vt&?QJBIlOeH&e1^ zi;i27a66{z4p{t3K;>+1Gzd$S4^R*_t^|K6w%5xT23d_`RN@1DE;DrK zBZ7Gg+IA;I`5MD^#__UW1f0FS(}{yQNC6wBAe7se;kM|Rxi4YAeuW4~*5TSBMuV3q zh#@%Pu;M}nL$hiR$rY^*7T@HC#)96Z6Vq{Enw|-c$mDaZ9c|+350NnKBVW-?@W}0d zR;Ujp?#eQN5UPh4v4|RG)?p5-Ai!<)1rp%F*Lm;koVCBq(fjP0ZIbJfu>rR&nM#z1 zmch~ye6wQjNc>d88uwkW0aeVQC)hDejU5s6MRg(SEtcp;h=Q0dhi#;yww|Y_T@e>0 zmAtY1vETb9br4^hn#SWuS2A+@8x#@)gz9%GYSzWFuaq;}KxR7>yt6j652~={2RcSy zWEZj=0NTY@I~f-+kL3*-w^Z!P^XcZBr^*Ayz}k0Hb54UVHHOnOw8`E zguwFrxo^9DmahxpwedAr1t&!5l|xiNWTf2iP7*kUH#(HlIZHFE$p3`dTx`IuWqopy1r{39LMu_ zN2A2+Qe(-!U3OXfT$-I7IuzXwr}t!RQJ(5~#X8NF4M?)(@ZKb&QR0!yn{~HJtvbR6 zDYYC#a9N->{cVn#Wl>q z>eq|UWjfeuShwb(N-_&OG#N%4a3)RE>D0-G!?mR9JukVzzNl_;Y}5KGkF8fOQpnA@v@HkLp!#FT z^1#)=by>CEaTR>P*Fdm46g>pk3{b0((G7uVJ-$kt8A*@I>aBjEyt=Ek>6%mKJ=bKm zHTkT(9T!x2s&fptg0jh7l$ko!Dd65kHr!qi=;D0m6P_=Bbg|fKh2D5}qUWqCSqO0r z=X0+amS%`1B8y*1^&aNbd6*rSKZs*k!sj<8Ur7r}v8u-q9N9Y!mJTP+FMErf9qysN zAiRE-aP>=U=Qu~Bx_ZnNsb(#TXHRvW%FWiJxrd=%rIpQ-S36uZNp?24IgT%ZEpaBm zpPIoT_*$%eEWzzMFG0sq^Ju-nt+;~Ys^jq(F-I0%S2f7fzv#61#F^+m65_Qh;6-QL z3mvYteEL;u`PF~g(=J{5u1A35XkqZil?P`!yP+MHlQH#~P3E3bb_cqI_y-$0tUK{F z7;51E0P-;U7MF7}J1uM;Ck2Va`6ced)f1dQ^#yQTGarbfSk$KXFwBvn*~WO1h9!cY zE{!_%K!D+6^;+SY#@U`qbPpTCX^d;d2jq*NF6}=et1|(MH9WeMbJL4eqWq+Ml<3wJ zSZhtQhWwN115*X48s#1&Os@Z8%{{UP608VVt%jKPEo@PI_)hzMnVGn?(0^Cg- zV(Go(()w@8KSmB87f@4R^i<|*U+dl(#MSb+js~UxzUI9amek=n%# zE5rCtj2bXLBEmNhiWZ@dr@v<@t#VxQeAk$`&(aml4I=jnhd^vMowQv?jQ;?Kc;5=+ z%^Iw8=pJTb7~V&Nq$R+7F;^LfA+2s{kTsv8rtUc@K1flcPLB_!>a1z19!p$xAq-`6 z`fOH~D*=qDl9fiZhH^BGK1nlx;+o9a9hlo7X(z7B8GM@I9h62~qFV$Qkci(XOj*0e zsL$cpigj|;W2v-m@JHsV`DDC%OLbyt*s+%Ahn;Ynl$Bt1v$|sjy9_OMKT)jc=n5BeP?K;T=~!LtsX_ zs}-5-t+?qyHxa{1-UHc>X<(jh4@-$|@-<qqPSokMyi?jY7V(|ESwdp#mL%JPSm?_E`kCC*FgM;wD^o$cIHpEz? zR>ZaMBCB#Y;XRbA)bsHtBcu%sp3A* zQm%6VfHp;CQp$p*XSI}>q-sjZ;tzF7&#W^&&oU*-ANoSsqPHOF5MTz#>J?0T#TRC4 zoqIyDgQf$CYkax6o~oubjeE&!WD6{QG+*{p&gX;bJI3mkKD1IHt%5!fwDNg0$t`mU z>ajKyNiuC9=6KE{HYrrC-Kc3eH^tifXyRS!GEgM#$x?W^7U%nt>Kz8C!F``(Ph7d zHwO7@fAw17o+Rhv%c9OB5?Mx=Et%D7aMw4<=J_surZujr8s}&==(OU8KIDbqHU zx?G(3eJ%>Y)q_iSysNKhW*CvFST4k8lbQ{HS7~Ak87EJMQE_1eDpZbVI_E&Q{6AWr zCG4kButl%B=hW(6<8K*k->bh36W69KTr_+1IR=UFBbvSH5s>o|>xw=&7 z(*w$Dg9_Wh(x}QH)6sKzj*K*HP-zfze3i=HEiSi3exIdcft=TjyeWs{d_JJa z-!Kbu>b`N~{t?G;tYtvzF3LALFRh%==E2c$zr;@syNK}ToIM=oG#ysT>6yG^{E_n; z>0~fea%yt#qT1sA9>(A*JXfUVNzr3f86A5#BEjh1l$_*U1(58gMdB}@& z37lo2nv<$mvDhcv^#ffJxCa7h+bk2LrjAV6TtBi>==|Y1aBI4e@(PfK0Ji5teyLg4 z+w+u~;AA&2ympe5WCVPV$xQPD5IYRB-(Z{^E^!YV2Mx*=;KK( zzRBGdix8VIYkW?duZy*|L)ZzYZO-Xk zy8M$}*LK%wNz(Ie_d6lZ!F?8DWSe(M?Jy%vlmX8_M4a&gcGRNuwh!rAp=h>Q5x;d& z;N~H}MRDY~6Uz~0O~Y{8tW}qgdLhq(H9D)faDB?BOVSVJ)nB9Erphw^0O%?~asv&` z?+DCnN*L1GA_(5g7a%O<&XccXQ0&h2AvQzgCz03w)JtPHP3 ziPPE;*+bOyz{_MT+hxDy3Eb^QglvXjT;6vol)$+avl!Q=$(}^8Ik1(ZuS7TAKz5f_ zy=IAE>u%uh@F2P)mj3{{Gug>@+ht!V23w}fWuqiJPHPMPH&brl>(jb}9nE_I`Jy#} z+{W;pisFTvH!0FJPa0<5L;9&Ppf-Lj(jc@KZ#IsIiM|42i2dGAOpVUz7G-a)!$4G; zWO`s5pPGx>L=%{MT$Q5T=!ftZ#b(T0s2B3aXd=+2`344^zf>@Fmbbd9>>D8YkV{iq zz})DZv=My6V<>NXMa_i3j_I$07}&gq$3)FDea)<%O9k?o>nal@0Nr$jQkX;Gi_I(# z?se%M6IGi$HUW(k+siSOiPvHZi{1lFx?46H5{X<7qAdaByHU6;f|1P2>URN4Hb7$K zMWkj0&as;f5_*w~EL=L{s((X!&YLE4$YCd9W)xrdPJwVY_t8sQ>?Aatk-U={DQ7MM zY=v;!I^Pkzh}li9A;L7+Zhr;k44#>Np1BiyBcKoIwI3|mNfQI{{Z?h-}=~I zJ=4!L8_2R79y+=V$V3wW>(i`tljiTI~<`SOzC@a$0ULsT|!{WEpHWctYtw|&ZElnBeNkn1PR zTG=^4{ZRM>5rdyEQLfibVP?B{9TNvSZrLf{5hHsTS@Kvn=4_5>?XnqucFx5X@I1HAI|WHa5<6d);%~O-p`q-9 zVt3HW6Jf+1BVMwKCwuijvKs|(O_5+M-8R(|a7%2U(VE+hk50&$O!w+{?3%iObS6$* z$0(I18vy3a-{urt18#Rr=Lb(LPfm)FGPV}hCAT`GcFiE`*;Oyg+-#>!`pd2^gqWXU z3%(Pzq-*j*d!k~%oxfEa<!0DFz_d=yxHN~TCe-&bz3#@fIe9=EaN(jc<&C~p{C}?f< zDlOZWQ~bz|mbiLMA%HU7KQtFOwW#j&*!!yWVWb?|ozupf08eN1>3JVj8EI~8uAj|D zrz=R!bq_E&UDw~}n}`sLhq=`%PS#!TC?0LdI!%(!SOnOg#Z2}!x;j4%(G{`ugPPaL zxGi4m!F(x%#!;nKlN!fBmEk@TsA*&Ax!H)2zMSxvlH3CecN^-2;}%RygGUX77(5`P z8=!^8alANoFx4M1nRS@#V8aKJ`*d7a6vk6_DekFia;0-68TFbao_O#PG~VpZ@DZL}iU-N8%spPPYwftK~U>ZjRibeX73(tCTs_ zDILwv;H_f(#^OAq_l*MZ>xEvfHP~7&s@GG*(e##<%YjoCk#j}f9mk!GX+Cbc4A&ne zp;I;`xv;s9^E6odt}3?7~j5>v8P|pq~2;b_dKE&5YNrQjc zndet~a!)Wie8QF^7lp;VQ^U8I8#gw-#aFA2p^N*ryPdW!_v#fY=AI6irAdx8h3(&> z9ZEuw99IvEtBMAtC~Gg+_6pt-wp<(PiZ;^j(GH#`{YMUP^{aVxb!+qox4NN*t@aFD z*UTF8mF+InbxAv(3TU*-HH!Kr4q1gUz|3r28V~fcNWAx4zZIhCdxKzp1$G#$6R^}yT~4sEc#Q&Cev(L8=O&4x zj(hx>kM|CekAo#6aD*Hy>RT&jHH~As&FI-1<@wkSZ%%`%=lG@_ z&v|uE_Qy}vZ{X?|Faq0+Ph<>s484yf&~{BXP3V`=m*LY+jw&-YA{rMb6D>&{ETMW-KlW5f%MK|B*oH!JzGQ8T9@>Kgqc8yqXb$U%HbE#p|JLRjAK_Z9WVWlR#F!4UhiGb1)8VS{?-6j{^nM|Tb$SlHI>yhYS1HCg4m-h^_{!h2 zxN=tyFj`i24VCCtd%WD0SY){A0d>4Dir~Cahkpa(Psq|HgMZYrRqAikr0Uc_`= zhlHrq@e3(c;&hu+EjVk#Vq>U7@?@bsge7L@58;&jLh51IT6J*1b5(Rn?6$anfH*}e zqLnNz9h4X(0>DiBsnMixRM}4s+=N&SmhTRyh&2U5_W43Hb(IadZISIihEEdy7jQgv zB5QEQ)ue4S+8XKVA$iA%e}dH_rG5tY7V0qdr!kI&d+RZoUMU7TGzVmVvU!k8evMhS zzxGDUDADmAGlSxA7`M^I(RDh^Bss6K1y`*4VZNstqh5>c9xLFU3&!ZapAq5oYmyH+ zY&agWF1&ZgU;dt*g~L_G_;(fOxw7Mht!IDgbSO^4`465kb&KjqYytVIY@<^fShp*p zBoMXuhYZAU+SMrH=+vcEgywBVkl=bJ;Vf$jJDGsDStyi7*>A%!riue%DMf&YEXP*+yw>**Y!P#I=ovx=GNX@Qg^S#c2v} zb1F@tSFJ_NVU9osr=r>LMjDeb%&S$cd3D;{w^Wj&EcADjb5o+mX1=q(b!F5Yn=_eU zC%kN=$_}kqLv5~Jfh<>@h9;g$hc(RVIs|66*(j>a1Gt7IfzGBF**%o80I(L9SZI4A zFt-ncCC!Ix(p2hHr2H6jnB38R%bub3Yi1pMFs#5@`

>1za$DfOB1$qfm}p@Qv4#_|J-B@tD&^&Wd)h?w%Im z3-qzXykklDYVGEGo#{G{lH;mlF&MWvHM*UwRKCki&yktqak{n`);NI1i0Hakt_rpu zt^O78*gQdbbBlwA&+59r4RPnus4!UPTSlAcv2!|{4SJ|!1B(SlJ1Mqlxm|LCXWLbGV62;q{dKd<+}^Q!Njs216vSu>bg8$P8&FU_;QOFIv!;V)myIWb%|tC z&}@juIhb}dTk}=xJk_Wplc8EQGEO73xA|-}omSrg#8<0bl*gnle7I!|IkSEXweU^? zo;tG|n|rDCwE}OLJrlyXZ?;rr6JZipXa1pu!c-VqY-wothh@#N?BMhU7K35#v#NGm zd>a8mpcSjXmvfr(x?&U=CudE=>pK|GTFjJ~CC)2zhvQpWzF5#$EP6guXbN;(;NSA) zTfksk%9(>*aBWGiIUGX z@&5pas8w_8xs4RymEgQ?jVgG$jir>d74>h4I7j-w4yi@HqAb34@mGNOo(CBCr00Tu zOGewq4BcdKj_tZ0gW`p68HBBcd2MDm5&bHmcG`3WM2r*6z#mlyxB9y&xCZ=9ontZ| z!<%5XR7)WJddK7Lg#Bc;(<8Ezy5{yMbxA(T(o!I9Ji;_TKgA;A-7O!YR*%XPI{I9# z5d<9#c42UpiGgmaLbMq2K zwuMsr1}wyVM4svbL(IG65_c=dbmZpvTRWk4Dd3rL-r(*NXAb`T6i9SVX2ir4+}GxA zW3c^G{0JS#ln~iH`YAQV+gK=O<&fyuj^QviyPN^jr`1ov$3X*ZIiPNKP>{zHw!u8* zX=&?Z#&X+X^-U>ZESQ&EHabu0qFfq4*KWx*z_tswm`a!pbPkgldL>fiA(IZuB@J=0jU^7kLv5~;xNvBNn_ zLv9r+l&?FRtp>2>JN_0yr~`Dk(#x4QF$Fc#uy}R|la@xx!yi$zE@}%LL7q`Ms|@Bo zs|`}ml#rI}Gi9*~e~D0};#g(2*)V@h-s=~tC?;+GiDwoAR6j7Abl0MM$M;G65VKFk zJyMVzdv;3k-|>{e+_3BWbxQVFoYV9|bT&p_Z^b*GE}m#M5TNIC{!pzh$liwaA6AD# znEI{n8ien6F+CIs$jHp=3Ac5kR4E5{H`M9hq8&`R#{E&*8DzTqbx>&Eb9HMc$t;b` zZ5o73+YN-6P=S_1r>M-P%Z}gXs*qd??qDL_K~fDFXGqyAIiqko*r{2d66a3ma;xVA z{{YxHCQfS|LXKHB%sci(Ee^QTvS-9w*$+ZM9_>l?LCwh zB@jfw)w*>3FmRjHWAPzsmfad0Tb03XpI~X@?0RsD|Iiby$Yqv@2mU3U^o57NFvQ-`*Zd-|G_exU~S|-Mm zqqHzVa-ApY1&+tE0|?Gs9O59z=zd6nvI%Qo>~@5q4*3ee>NgH|x-$%9I)JK&47qbp zQPhQCIA|RM@VY82PD9!)a&-LB9htxrro{n{=CiG#B@wR{0nUius+R~aWWFyJRiKFK{4r~4+;pWjaDG~AP_c!rW1={#Kde z(-s`Sb4`JleATN>8NG&Uw2>v&x|nbg%;`FGLu-M5^Pb3o+|pd$zW&Ll%N%qP>>@8Z zyEcf8yGZ5NT-^|y{!z{s`3!zbx#LbF>cC4a^?uIr6;z zMK-B0o(UR+&cs}`OU}$M@9OG?$NvEP&q=w2?33(n5j_c_$ZtQr$qMxow>9iNmVG(Q zPJryRDGp!{$sf?aLkSwWsGgRQ^-Rb=m!@P1V%GzhoJ za()%?rVoPQ*lBb3T~p|^;pCfvZm7zX1_|utc(0iHgw(`1H&7Qh#^_Xi7qzZ&k*`(J z@y0hH1J%?lLFZFx%-rDX?4|No>CbT5!-nB%2UV!YIzT$XR$q*%TMWlh#5lZJ?$+MR zZ1Ai;KA)WGG~UMETgpNGRSZ`Ft4W!#ucjK~c9z4TXAOQ7WmArP?sY)zYIG@7qe+!W zbFvaSAE(tFl&WAK<<{g5k{!JFN!UZgsm)hpbXurv1MUiyGXj$`tIHoX9pzRQ4ySe> zcvGs%1?-ZPMK$t?YGf$RPha}!BZH=3XmbX zEld{^qWPxgwTD35(ytufB51kxgJa7LH$Bg~sLV;LQ_IQ9XS!7<5W)sh--~JbD%r~) zm}mq9+kk?;GY}f=rs82{R&6@0G|u;F>DgI+7`~~gnoF;nSoc-&l+8GEn_uv>OXh=+f|ELmFAZjAHbJm<@S%upE40|^(iM7g z_EQaegGJiike^zmJWgz_%5+(KJb4@^vFZavfZDL`o1tPW)~8Au{ZFfZk|SO`;!aZ< ze#um8aa4)kG#e`Skc&X*<0^~is7V_^R&d;B5lBO7xX1Ifp|b`lP%aH^M-B8URPYV1 z)>I9s$3(04q(er|3yxzLLq;jgX&}R0Bj~sA+*cW0qc4|<4U$=u2NlZGz%_@>b6q zyVOO(+`;(Ihj@aE@UC-cRf0psr?FTV%JuMa+*TE}X&YwCGaU$7n5x`4;-RC2f<@xd z?xtGgw4~nRIDfO@yt++oP;XJgQnP7bs#6TDhp_}rGu2Yy+*!1L@o^7vY2NniyWSh& z%J}ata+(!{vY>Usd!k)z)bREn72=vqrC$i(=8T2LV2*`)hljimO9_M&sy8GKP~8@9 zhUrt`lqu1o-5?h(_lHz;CLYo4s)ZUR;_oo zn}d(AL~T~Zv`IH;8dT6Kcx{VptT~V^WnQ-ur9tAGwK@=)xbHdTxm*WQkhTXIju=K} zb=nL%6JfD5apRTNjrtS}W)g#%_VYmoL3dS$!*L>ssfBH5dr8O+!2*_Nc<=a6!aQxl zu?=e}vx?H6ClD-8K<=S@uf#YGD}eDT_#A6IyhRt~sKc`Q{{RceP6o5+)bhjqO(ov2 zZFRx_02n`qZt<=F_=AJdXva}u^Jxotz;x~v%N`kWeAkQMCmD#A)$+i+>a1W-*uiOR zL5{yNu3>m?I+M*hjDx)B5nsXaPOfn7r4?Nqp|VN&YOC48lT`q!KAmhihu>nmPvOrE z6lwjcyLpeKyQgJ$z`w#?BaPw=JW~Twg%T#8nBQN?duAK>d%0?lgM(wso_^_~H1O(qIsVS-l+0h6O62&jf^pm+RIP`7 zJY6^ZLtkiA^Y)=AM=gn{D!N4}X!Sy?h^jIeZKKk!<8YX)H9su3AtvA~ej{7SZAnVKdd+=8X|e&ZjZkVbpTyBisD`;53XB9tt}tZ)oTsc0!=T|Zx`Y`8wZtDw$L2Qgz+9Go--Ss zpCeA4p+6C<>aP_Jn#X?YKM>;f&Q|=FM~?`GHb#R05*=;EYbz`xJY~MOK&H)F9O2bi z0_>c&{*?1C4QP`94d(AfU~b=7%Ic_U+@$;aWvHyLb#r8tHjM45~+K4BDv<6g?P zA(a>-LVk+HOgNzY#nC6zvW-g3d``M9q~%K4#?&}qaM_9IxeEnxt*Wfs1T9DeBw&S2%Ciye`I?OgUlkn_mWCL(A^jeI>`D_k$;>(%g zt*H7hYg*^kX}RpT@R(Y)=?^n)*Eg09j~bx#IK?;C^4#rKrEFC(Lo;qbvgYv|B+U0Zci+`)+rXZGDSp08? z(!|juv88Gd=V;^?(=Mb#uBkX;$ocE|oll41<+NDVRqK^`W1J4Hvh@$+9uU#uq-2JY zVR?(%H@c?hA`}60qS<|+4xuk_>J;4V^2FQS54rYQD2M_Bn_RPV@*|=Ot@z67n#vRPlg-SGaok&xleM~ z)M%2sY#+il&pL$z%`oU26hRG;*838M@s+W-=&e45y^aHN&oJ(o4Nm(5`NCO<_*<7! zc1|6>T`eIc9E3ohIYBz<(i2=8ZK_Xjeb4tPwv5--f4Z>dv?wx0TS5Ayb_Dx?oHz@e z`spc~mv=}iED1(f9XB>9m@=8wLhpMgUW#1YCi)v_GlShW4dDv_-vs($78x+@BkX6%@njkTpgHuN9vn6be+!qQ@M>V zB<7BRK(tupk~B~I6Bj;W2HMJrA->%|x=?l0bWqLK!Dy994e=t%L$e=}n1)E!N`Z8@ z(%V>fl|PF9k+*ee&N?B}*o0a#+fkJ`X8In<;%0WxjnNsD4!eBNq;m>}b8|FvT{~s{ zqQ`$^qF-l6RV%fI9qw}5vT5)D^Gi%v{)G=OE5o!l9s8oZh>>%;5pjE9*hk7%i%>)V z0N@f%c>Yv3!`%Zh7rw}uIgj8oA>}h>#3F2{1m*$=+*~AQAb0sFgdF#|>QLPdjiNNV zufcK*a|tbj8fuyCE^t3o<+Tl|y4?rvnf#L)lXXtE!kaP2}iQ!RHZkpaY=_1ZLAL z>{GLpUCxaJc1iBXJRpvS!5Z4#)ag0IgR$KWl5?E^(mypib+j2}-;^k6lvrk0ItS4a zuv|vle3f=OeLL=o$6P~i{J}ZskI=I%8x5m%HoN+-r2gn^yu+t(5^pSKzVMJhM>jbX z#ev;3np*JJ`_FVq4%O58DC8ge8_G1{j2oI<)4NWd%4}hf1;*)bA+{;~5;JNox*bqW ziqm&R;tC)ByWFB>ktdvuLKEfg2Qy#;KFdA0;J>3eq?j5F0)xSGqkWMbneMi;Vww7o zU4Gk?HpaCDSF@T=EEqkMP4BtT_eOm<&P!mOPO2_ww{DA7NSCoP#?Fgsh}PSv+BHd_ zHK68cAYZyob3~1HCrC(8NHFEhZ*?z*L$uiHkT$X1&CH^QVezV8gi<2BI7h(ebbFTL|3TcsmuO$RNmKJTzGD4 z@1f|cJ*{i=7ix4*@YBLnFj!_{ zDYrdWYc04cB0;_m^M+A%94kE5?R5B>+`d~}+w89qR8q=X=@wX+$6_dl%_lr--{g)< zRAceOk+yq#tad)G9kMP?t$TI$S237(VokGN;AXl9*_&FQl~wJe{*@%kG7=+O6On?O znCc9P4rl74_t=^~VEfjM9vuZ!#=55t&f1*)0dmg&08?dC6e_z3QJ?)kh3Xqfc5311 zVlm9AMx`omqqRcdBiUu~x4Qt!bo|#nzLO2ocPmd1#9dyP6#SZQj$(I?$?9R6{Elr} zbwjQ<$ae`ve~5mZ_8N{BrA8Mz8cm6~f9#LMok64;7_MeUjW!mt z;5rAo1_z8|XyLq?jHigEcBtErn$6K@t55BFXYhhfgY zDONDlG1$kNv}-z+LovVoD-Oj6k21HHN~><#fwLtgF)SYF%&mhMW--CeeHWM`b{^|n z35~CXtjZs1ZB_w2qoN)kiBPQQ#AX4bnW3|uRTovF9!)k>eig*T*v`Vre+PV>8|b$e z6@D0**XppV)}_O1O*Zu+j zMxA-YQp9<=z8u;GTC?e3-pYK>aXRQ_XW^M!4N%hNVHR&sWo`L@^Q$xN;>Ff7vYPr_ zS!s*nSz6@cvWDcRPDJ z%MTK2GO^0fED`RuE8;2^7S`K9EU@vo+HTLv;^DT6b5f|+0-5A{9A44*EgT(v$-m&S zeB)Vx?S0#-xrMKppuOKN%5;YBW|eXp(sMQ@56@-K@rni1PnV;Gg4d~5SV+uBv~05R zK3qRL-D{TYs}9h7Gq?{OsfDUAxTm<%HXD$;FC;yJqng~VyJdN_$R z;y-S}hPl#PV6@N1rjZLL48CxlTxJ(Hj)5Unv~z;UAMv>NS6;`l(p#ObFkR708HM{x zysB<%z!FHYSo$*M885{Lx62NIOc1oVd+7&xbsfqDfzd(yAJI&+FSv;z8{4^0nl0`cx{gJeN^(snj3+J&9VU z2|*EdGq_z$W5qg7ozE-~s@I@!PBh%vEzzZ3;rv#g-ciM~BgN!Mw?$^Z13W^9+9~3^ z_LDT(QPAP+RpPyr3Ald@W=E=%-7^8YfTS_Cu=TvU&Z$TPwvYg;Kvcg}sbOld?`=*; z%tcFS(5PduG}+24MRF%A^fSTXeQ!SpdcI(ESn3vjCapT)W^-T}1a(m_*wQG65@lRAB)XfWwlW{|OXn1pq90oG^nMz^9V2tWsArhhJ`ftOpZY80)wB33K3}9mb z7hWac&OFfZHEeWVvB3DCswXss#pCj)y^lX1M)o_*ZXB9zn7&@Ciml^Xd^We2igRg~ zPu=c4*Lg;(YBhN0@xOu$HZu>z=rbUzYJ_zQqH0l$Tr;3=i!iwNlTFa=iB{$u&)Z7M%+7JWq?o zJ}FdYj(Kq%mr3HjJ%q#fTNvs%riU?-#^!>3m(K%@*2ZHzu~oo0!=3%qWZsccv)I|< zw_-6*tC^=LA%|#QgZww~4IdEUaTKY!#ncQu#fe^5;Z7NX!(hh{#b(5Yvefn`y6gNu z#c(_yABf^SHjPX@D(oI*I(BIJd#hOG3ASbKmQYynFYtd0TaOMe!#OEeC+#>>>CL$v zJ(i9K!JIF{RBB`DvW_DYL`^bUISRFf;@FNL%9xDxDbi>p_d69s7R+Z6;qNuy=F&0< z7F*+kNT-tE==>kz8eD15aLQltc7?mdFm&-QGTFAP&pahqaDw_yXO>CiD}Vn0k{X!2 zxtv(vQ6HLL#O8>3qh^RSWwhJQ2B)IMtH&u}yv#j(zG*O6RjM_saT8Kp(9Ia^(0+@} z{B6gp;JDo?m0M3e2?i}7X)0TXWh1vd6Nh+*41D0+J!U+H)o!<5ZQ`#6aV`~#saCx& zGJ{Mut8Nbe09C2s9xKH7uNY-I4r#%Io~=UbF?x0mi+GJ{?si&~8UtY6uOTeb$$T`! zHk}_m7q*KCcA^X&KvXMM8Q^MVdmoHE8BT*LW3Ze)o+Azc^C)~nxH`h{&lKPV94q*b z33X#mVxtSQ274?s@#-1ThI63ey(3ZJy{rIRnOA;3k!hz*_v*NZ@ha|c%=ZH`Wj1lT z+1X6BuurKkL{*y{XCB|P`FY%2MZ)3gHmw{o34i4oaY@d@DC&t@HHH^a(Mdxr0mpA7+tH8@Ksng`U+So8NgXtl2HMl)t zjq+);K4W9Fbx+5X*Cu{^BFnxV^4{>{axDwfIBOk*!&41x)O2gI;Sak;2@X+#d%~mAuC`N&FXAgvFM_THD3vbyEw%syURMo&&ZD z{cJOs7}mCGcG*-#6^Wt3xQ$vbc&gaV(R3eg6zIroPJwe+N{wZn$*I+DQ>*4QQw-U1 z`4ycQ=+MqFG-^%puK?SI=L@FAdVbga}7VSRIlcldwulnsaC( zLATK+o>)8dyd;8!>5cyYlqBaF9X~FrErT%YZhNKpo0%?j&Uc*QhOE{P|8hq1wgz4MaF(K1BYJO?-$=cBz!0GV(p%T$+ z?o(!vX2n8t#Y2{Q=!oQOm~dmDw)+#hU|pIA%aunli5Cfj!(2&hPMuW3$@0q;{ zoCq^=bwe*Mwp}GAJ&hl6pL=_$LpeyXw7#?Ar^_*BGTa- z&)}uoL)}J@8ad9*utaN}@izMQRFr8Bcp}i-AIT!{&~oefDY3lVzW)I9mtOX|Z)yYy z@NJq7u%VV@2Sg&h#kXzB85SpG(3l#H4i>a(hZi2M-pJ2j)aV3|gkiTHuAS9DCo&4F zGkjZmPelUWaShtgis70$dwP)XkVBxxs?2wH2~ce^61^a@=U1HTMOr`EFn%f$|h` zk(sb!VGt5-GfJ$&9g*3swCmg=wxRP+HljL0h~!VA#WS|YZ*+QhXa`YmWmcQZ**vos z>G-44IWM5p_6a@caWEZ# s>^F_PvH4ucyX8wSG%c728Jtj0AQj4K|9h2!TjR8_{ zH}dxU)FU*UuqW|O=W`Bg3lu%b#?5fkzObFGhr~!4gViRuIo!wFtR|7_b8WCwe1iBn zCP)?lsJW*{YDK-2oeyZA!6+bF&@Piu%1*3~SY#l-)f;Kn=#R?xk{uh#(Ke?s-*qaf zkNXDZ=X74JAr0N8-u$MaQ8WLX8TA-h;*>X3}XmDdv~%m-z6;FEI~ z<{N1mswQ6}oo?GoPBxO*odHsjnsVI@&T)C2kFiyH6n!0}{{Ttcr2+%FMChRBb07LHMFIJ$j_!$^_|qC`h>5qHO|c1k{6<-20?im<_L| zblS)k{@v6w9Neyv8h1%Up?(ZrL!&E!CM<|KwaX)3h);Nrylg}m7D&booA z-3f&b__KBDRcg%3v}U)-S7UQL1J>%*PfVMjjy&&FQM=vo*|N5ajY!- znZHoM5yj!@F_EEM{ynr#aObqZ(QI)b0Fe6u?zrA3P|~VPUng|DOOo<@9RC0k$2$j! zsZyO6RA{)3rDEf;O~tU*tyQc8;5IYaYw;>SXkm3Ku;Ht7L0rBrwmO$CD+}h(8aS~$ zn-AqzPzwh;Q`u3d$~fw8sMh4vx}Jo4DsHWVtbXe?Cr_dGYHUSgESm__ zEPbWfaYPwft`)$$H*vTM+i^JF9efQ}8Z~a^pIFpv9J1Y}--OrB6^^oto>{w9rD zZ#A6SfusKb-I)-rs1jxN_^Sz3-dkxkgjm$cs8lidY(630Wfr;hs`^{8REOE?R%1uq zlVMk68kMn}HmDABi)WPRK1EEuy%h_CLaqqmDIY!6GPcH`_zyy=xzzC7*ebcpu4dEh zp9zV@Vjcr(`IO#y+U=*RSjtpz&x1#k`3=5cr2Yc>T;aHhc&VDFnhoijYPTukFpae* zJIp%MH-fqB9yWy*zQ3)&Lji1=?xjN$OBst58}|>tG4zt9PPrL>itwtn&Sts1+l7IQ z#ASbzh}EM`fptyCgG^@2=FAq4(Q`f_;k6n@E{hM#LyJL4{5#QRL^*vfxSY4o~j8g$uF&bH%qhs7KiOkRHgx(s9f>JK4_jh83IaTOU%w=BtmM@6O)Fp1r> zBN8&c3!4Dg`=jt4AnqH)shsWW=308~cugCH7Xmg0X8vlGe8@&$`Xx{{W$; zzq2d?#ypBvJBHmhM+}uqY~VlSQW>+gv^G zEpMMXqF2V^U65hk>U4&z(mSZ*=(`F$%64}^+udc*tyZN%>aKBjQLGNhHq@e$PR(|4 zD%nmRr7u51;&u5e6?jz+B}QrET}|UwJ+eNlE6yzc0AjOVejs&)p+gdDaLSZ(wws=L zi**Wp;+Xwrz;SLBi{V&o)w4aMODYa#5VqcbW4##^TIM*z;%$8q9bEh^=4h99Rpy~2(#rn;X^2)Sy^#Yc z{%)$SG6j5~8R@->Bjfj*sT z(^>T?wk;a2PbdC7-X$+2Z2JR&_}c}J{{UkZPNYPP*H7cd;JiWMs`RSWXnO{Bd#{#g zajZ`Y#1~G%WpcQi46yu+=i>yJbjm zj9wZ40CR|_!0Qk+A##7}-ecsx=IQHkQB9^FF6pU6Iw4?g_?wKE@b4z8+-g1}+oI&~ zgonv*aI0c*b#WxRtE6=4*%tuJMktDO+ikloQfUPxv(r2i<0Hb{DdHJUtp{?wj=TeF zF5TQ~hqA39grwSSt?OXfzRSzFKZ3ZU+!PU{zmr+~oW=}>-pRfvj%Pi1!jj1*jGy3KWq59Sv=fjF#lDo}H&oZtOC zww|M*K;sqhTsHysyen!7?3TT?T`RJG##ss3)8b7A84aDJESyzdAk1iP9n{En@7yT( zS09Swbg9$CQOF)`lR$mfqTx7II&B%K)0XvYl|Jby2eP*c!&JoZfYv&jE4Jj0tH(cz z^l{kEJ%+>K>3Nl^vzP|-Ue}GUM+Z#QYkZ^eWc`-|#ac1kVVKHUPEZB)3!Xik8q6sV z{59~k93Ko6xSk=w#`!7BXR#~OFxY%169zE2cC=Cg%?pOZ{Sdu@HfP4;uUb1-XB_lXytZWKiIE9{t5B=7;5$FV=A`@2sG)rqR}%2dtu_VrkyIc z&Lxj7QmFMm?cy=x2 zx`SoW;?4OmYm+Y`{ydgQ_WIl=rF=N8O5!X~FxWq_RLts9;i*|(3h|hJ7-6v$Z_uu` zwK{l)d6b=q*m$~6O@FZg;ToHn*+RcsBqtV|tB zb+EzMPInW`?A8dhnV%B>05R@+h_Ki#S|u8kYE#8mE@N_2Y^_cYT)w;p+eJr(U=CR= z)pT4ko*si>Iibs&Hf_Oi^vj!TK$Xotty;MAOJ&wpy)ISH;jm_}5s|1jQHL@On;b6) z<~UV$q%B$52A3mY5Cn-G@sOdh#J1?U0o5~_07@7PeJjj=i@Y|CZW#LK)EA?@13+*owh-Xn7Hq#E_$YrN}I;lC?g`4i8>9E;opg`XEf)L$t%WkpNODMndbO>#C&neMbnTMco zNw3QLH)tgcOxxW|HGeqfm)0sD=!W@sRUkxYB1F9Q=$VmOvob0akUv(Ex z^4#jVUD-rO`&Y62)Q{Atw2Y+k$5kuqHd56=DUFwRZ?b4>eYXlv8-6_$c7oePl%nJa zNX_p$p@1ecSSgu)nM^3;0rUL2q4Q&16Kk4v*JQGsvUWE~%nm-@pq$;Xb%ef^L`ZAF z{E%JM-{)muy3w1pkX;+L>hWEJfAB%kmVTi0Nt2d(Xj3}QyJW??r{yg5T4#E|aMm9;2$3VBgkysQMa6u+Rj|a4>UkJ=K6r z!$RMfPztv_s4b1HZzjY_pmPQK;Ol5tPQK zp-12m%OciMwrR_uo2Zz0jLQP~z?gR31Rv1Rj({)v?{;fs! zRw;S_&AzHyVJIk7U3)N%uPU&fux=FDKy_)INl;y##XEwVXN4kZv*CI0Z zcb`vH4BG~_f8+Y8W+p&widjoqMrr9fsiaoKdA=lwxXUL?Ax|~ieu%;w zP{!0D^a5^o+EX?%yz>dyn^ezu*EhWElS5zMv0EwVmMgS=Atud%-0Bo{fPQD9i`rXe zw%Z^Gy@M>fQKDdA^5&gC={w^v=J{zkjfy(ZYA+2rNO3xQZmu!IJdF*NIy0bd z_l0VdwmErKC&>+2dXdcQ>D3c7Hv3p1QuK&y+QAUMc}}pJhp@XAVr`^d475DivDHoE zD@0$ai-9*T_W=)x1u#{t!qeBJE{nka7ak(ViY3m=sf|}W_C?#TPOGi{8e{5U_}w7a z#%nmKZX5yaUJUR}9ti1eT7-0W*$!nZxHpk3tkHI}>HvwE1I$aRiSA4&;;WHNGdxp1f=VdwV_F6ceJj_3? zo>1*cr=+ZwVk_m!U*d%LmD|whKMOkC43-|81EbhcqVGnZ&x4PQEJh-3o2spc!~w}OKb&*Z{`s2dGbw1d1UD~VOQ~3+SD3wm1{uJ z!qS098%>;{j(rdyg4y}@QqqyH!$$+;QKSV|IppZkCBwKOEJS(GYPU%R-;q@Cm8sNe zbvMhKqYtQe3d5<>#5Q@VRDv@W?lwKu8dcTQG`I`>f9EkJ57sK-NG=eX_rtxO(QjHa*N>aeK4 zpE1lxR%q49HFIBf^hHVrT(3_fk2A89W7T8vS~V&&&2DG4yJ-t;mFSvcZ8s|~5c;Fc zq{mq36=c)23R5}bTAQSE04_&$djnX~rX1^Z8~zA5o*7!0E^}-R@+%lRWHU8P&@9&K zvS`#UE^=n6pc?zGe~CVxCPg@(zjko$Leh{HfuMVe7xx{Wpnk_1rLx#nQjBF08KckYKcXadxJ6q*!LQaYjVb+(RG`hqgn*a zO=sdmj#vf^tykhr96y;sw{qtnP`0@PN#yO>U;hAAaKo~mR)Qo?Wesv^@ViQ|sz7#F zZQSGe1xJZKm1>3^Crj*pYK?qJV@b_6xhj??j#3PYOwR4+MW#46!4x~|3^@(d3&>NW zTAMGOv#frr4z4n$BA{`x?4T;t&SO*f`>mIYvR-EO2b^VZDU5T@fQI$mbeL`q+zuK+ zZAZkGKX00chB#BOSTD3yYeTAuA2kj&#HrvY)aRGF<8_@TkhY9Gb~(+jE_MF^m9G3Q zf;hRD4Y5PP`MCGZYF=cWclj->2ZqC4<{x|Pr!4Wtp3N2$qz$bYiXx>J>-C-0>@NV~ zIK~eyi;VvOO4Y#d{3aBGS12Ol9K9dGoM(VheKz78+D?$r<8dpQ`CqkY)p%5F^B?{T z#u&j{{XY;!vKcYfR-XpII|)!1Ga(xmucmld;q@qj9Zl?ZkEanG)-Q?tH^cFCpHaAa zerLk=Gz0i5#Xiiuo+Q;Cafag*aQHJ$wFhR7S2f2f-SF=eqgI0`RBK*!X*zox%A|RpQ zz8gaignMe@oX52CGcBX2T`n_;3^fBTaU#;&{Z=j~2r$o@UZJTAFO1^r7t)~GwyWwa z*-}%pH^D9~jCLzIFVZ8MRmnS#QKgSGn%S!n9s8|bCI0}8L^7N6m@rqC<1sFNHmzLl z1U$$Z{FWIwbZxYHP9KT2^`G{Nzj!`_ve&?II(~57$9;{S^4d0*@Zyn2ZOT<$26=L-mOZfZ+ZlbE=9? z%JCcO4`tn8IG;T{*?g$KE#*dda*c6k&Mw1of8pX{A7Jy*cvp=)5yiYGh^F2lhw}W;OLr0O zvhpXhtHf3=}oz&X_j zIc=mK%c>SualG=x^;&)~!d7pgvU;^&;kaB^h;a<3PwuJfm}CNH$Ff*><=H+@D`@QaF9gJJj5{#?Yka+L(RDZ+6%IOF2N@p z-!vl&Ec_i>ueMoQ44k)8Ni_%hWkvO&(183-Qx0-cQXzH^BrJUfN{z}n3C#x9T%_v02z2zBN2e?v~o}N9pW|fsJy>8XJGoLe|Xy>(|*VuE;?5 zj)@C9nXq>W$I*TlTI|got`q?|Wb4!-2XgwZqj2Kv);6|_m1(kHL_x~YEo|--z1)MD z*Ey}*bZS?K(k_qEQ7(~in72|hT|L80zS<6{y-;;GQ2H zJGcq2ztKYm z8yRlWhQrQ(6WJ8V5t`qcn7axVUqC-iuAerXt&yoIvwzxb?StOIRta`XZiUNo9ci)s zlja$i(U=*6d!}eG0d9&pn&uM{L5LcyRt{uDTm<=lH3IHw*8c$Hr+k?@o}B^{+spWr zqd-5PpGcHE{Kgw?2vT=#FA}4iO|5Hukl{)xAZ5YEcF_&zJ5M&2>18v&s&<4wRFdCu z(Mr_~?1o9SUAu)5%js>0!koFz5ulw$;V@|$I_Bn8ty>Oh5o|U=YouNja^`%O+ep#@ zDa-RVPEg}+>K6`?uKvelY&1ouER4L`4qX&-mN&4N*!P7u6EpCL7SyEIhtH=dof|N! zh6?#AG&cVL@=qYJdXCMWyOi3yE3-k-%0Zc(4RcF@o21_lLS2#0LxTfm(eh60unw>$ zPhBB9xt=3^^CTN$?R)hp0v24%H5~3?r?*H6T!1n|M0pw-OkEwI?uWj{U8nCiQP!^d)$%Jx*hCt zz#rf?PNsvT4XiiImHz;ui{5i`w)=dM8y4IXe*XY97cwT8)Y^BlK8Gy@zZ3maE~L-Ir;;Y~6*C^4rsL zt2CMQPvEULsIV3(zlca#uV-m*br(ZP?w#>&->PEs>5Gd_${T{9t}f{xvbDl7wRnCu zooYU&oja<}X!ecPhXL|m#HoFw(IQmj)6pl;o(soR;y7AZoI@eb7hT2;pA&C79LtE{ zCB98DL;aw^5W6k|0hxXl=+R_(bQlBT^lM@cS25AhE=L`PsfKX}(oN3myvNctT27Io z8ac5S|^)c9U9 zqo~q#Ch)Q4S__DB*z=pjsQ&=vQp3)lcKMHyS>=Li8Ywn>=~8%Wyt?dxxO%MTw-Wc7 zZOI;{e+{tCe?l?Fkpa$=xd@DV zn*RV)wnx!arHQ4Si23YDRw*^EtL6;XylwJXeim(Dc^oSWt%mB{vSD0pY$hd#5Z73k z@=k>H9TrO-+D$O{1Z$NNi$iKMwJ~sR+}0~Z`q`UZnhiCu?afa$aCAQ%KV@6&#g8=x zA;PIV#5Y;kt8F70oQl6@tv2Pg)vg@eH3AMXjWx6YSU=rqRU-T{yqa{w+UicLxi0+* z1MoRSjz%3$T|L6nuf(ZW#^tSta~je^CD9!{)ZdJ5Q$RVsX*pouI8dI`(657^ZWY){ z!l-vByIdV&7SY7uX;BqjifP0@(@a==)^`!%wQzaPwDofjUdofOj>hEjsb5^h(ef#2 zxJ4`3dx+vFNOvgmMhMKVQaL2a|x{{Vqg;*{z&@ABDm zaP>P<%2eROWHFL$n@HcXgUFdVwEPijJUOy*^6j`OGs`ZD&WzrWdnBCL$xy8gEpMpq zcRd`*ofIvkP`IN5oG4_@NxW#Z@Hi2M!-kf_dT9ke58>KY zbF-6i+p5>YvYtnWJDXsex?|Rg^au}QORjfZ-;Hqe*;vW&WQ_U?;H++Z2bas385>*Vy0^ZKW(ae8f%>l}@b?=WDc~169AJ#U zn(L|YOy7G={HEmUt2Wcny=5ENx-{9!8zZxpCNi~FPFpkuKmJFCErRxkZ8lW#JW;hM zoUd!oWerJ58GJ>KdpyrJ0WxA`7sFgo@ZLLys%!ZIMq*uK+{&Si$I)wY=V>Bru(9~D zT!>^whIU36w+NM(}Tbs8{?cBl{{7k znKXcFYE$KSj-`3Oj6Z`XhlkbR^}f?bYHw^jeuZ=U<2HvZ@!Ve%tBM7=U~LMnS4XB- zpzxpJUmD{j^zi&Pr$;^Q$^rK)z2Kj~EFK0b@r+xmy}$h`b`$QlPN^B^M z&0~o>09Q@H{0qgg%oWWqB7rtFZ9gUM)O;_&cx!Udz|mo4fwb9E;x*fPVv~HmHVAoD znSU#P>W(S=KNp7KzCo(fQLM_+HVcwI8pTw`Mk^57pcw}$@3HuwTWRGdK?;>BFg(L| zZdVtR&BiBhgAASJqcZ`*sNr%Bg8dZhRIKm2qQ_+#k)$Ky9&1z->H2hW3ulAj{Fc8r zJt78RTc>r;Hg+863}z7Go^f?^yWwlM{_C!x!mzcl(?X0?)zB_|*E^5kCmF{e=&%^FO&do@`` zpC9AcN@21XW#^y^-FOuNM+;7qT>t@ZW#fJdbtiFG)oWrby?=+|c~~<~MSeXqkIS@f z$ZJS9T=qS*omK709SB<)^AA^PJa)`8(VN6^SXwmR*41#S-OJB> zN#YuKI>1q@E*2qlUMgwBPBOFG5pcYpiDT*FF+{ulzV4O2dBTKZl({;b9~&6f5a+mN zx3cpLek!gLjAD7@3WoW$Ti^VGj|`|QWoy_00lj9+jD9V+oOMdPpghQ2t;;%A6m%@d z(XIojWo1r_O98|kN#o4BX3LYMR59hh3f95mX|<4Df5lI;C-~AmABAFQ<`oOHy#9;O z_&*wLdMs&evNUWT_dq~* zPj%y8{-pRt97QY_9l~MidCWdtYOQ2~4wKP$JPX7wYne`?v#{^59am}g3>OmN74Vq6 zJv?3?6v8S~KN$I}vryVJ#l5YcCGbxYW3ZS3SBJU4x7W>i>KCE-WB8TC@h)R(Rc%Z& zh=Ee>6+PDvzql{^7h4KeGB1^G%=WpZl#2pSb-VD@;qt`uCcf}at>D0s0`cjmE~Lk)#+A# z2;w}71Vc?10!2-o>{oS!;w+&<&8O#8Hf>$`hT(R!`7@fMUlQ8X;L>ZV2HZ7{)pH&? z{vP0eh!_S`saB>R5XN$yayy|5Ql>JMM+$y!A%js+G=Y632ZPjgE+JmI#5$wM0o3Xp zTeF9BB}AVxc&GSt#QZCXH1Q42(qXTI3!eKQmfWx3Rrb~|1B2r9JiJ~WomLx$z6^UV zTZw-OJTJvrRkd)C_ktMqz%2Iavd_nh(b0#SC9~wuvm29gH&Mx!#jfmEzkmI|Q>99! zCh-V+Pa(--I+f*KFz|O4@Rt~V2D3c&llOHR-ddBJXK^4pSPA-9Fi z_voR_qeT2i-CPX}7EJoVg6M3K+San#Cng$7 ztyzYo9*S%tHMrFwki@>8LgMR%&trJQSV&r&NO>$Zd5rC{^Zqf!U50b&Ij|NXv^tUuMshm&aXQaQ=| z5Zy8Pqqt^wk?%k;v1Z4pz4-T=_lAF95Cid zdY}vUP%_(PX-^KO;n3RKDOs$6dDQL|PXI$NG!Xz_=9#W7xyl9Pi=~`CPFHM1?w!Cn zhj`SYdjb)*yMelybFu&}`6kJlOTMW$KsDVQXb5EzWwJ`1K_E9Y#;0W$=67y^AY3Hp zzLA#b`X`|{Ish7MqT((!14m_@6s}|kHZ}gqI_*6s@vZkyl*GP`n8mkCF#rs%Cs;}2 zL8JpIuari*`jPZvyX3n439^vpXd&Mu*|l#?LDS@+0JpK*L_-8$=3tG^=x=kfLYbDd z0Pk?3_W~q0`z|SQBZ<%;L!AfY0xM%JwA`VCU#X-Amemq7LuAsR5p2H)54WOr*B|zf=69#+ zrpe9ew^Y!`WenHqhW66um&5dzE;vi!xnCYImy)jm=Q9X07Gng0MA zEh5aOtZ|v3fY(n{?QTa#Z!VBeIK*cKaRw z02I!2I!1=asn)4MJEmN&FnOvWH*C%7hVw# zC^XXKMgxfsldi3?=kv7QOrw;9-jLoBjvcw3H&C4F~`<2?_${+ zB^t-7ZhI)6b_jF{fgabomRAY1PN%AwvXUYj1eZC{zLV~VIpUsqon^K|06;C%a5hrP ze6tyS%cJOtCORyzM!9o*LvM9quaY^f-BxEi0pD;n_xYnW*?^YEKzj8=tqeG|#`~$j zcpSDsxW1?BbXJ>3);3WKK>H-mP@8w{)j5_}xugyBNVL78EO$^Z4IIt7NC{>hoo7WV zeKU8J5!bIx6k5>df^9b{T#O-jea*(nWf>%BIwtL!Cv(w1we17sr6;6QB4ys-erXaL ztENSiy%Jq}YAg`FFTR?Rn%P4`oWM)8{*?yHNiS}el;oE<9L*o*$qgWAv`N7ee@M8G zP`uhyG<4=@=u_vnZt5?B_5k+B`Leup9Kjlr=K>$f3=`INLd{Y0&0(ZBWjDQ{<1?e6 z(FOGjc}9cc*2uW9{0R4kz%GM*I(JcMFM{o7e%dHQOwP9Kp7H~XyHI=lwM|CFE$ASU z=;{4hDT&YNzgNENE%e$a)e6gJEwc`*RoOM7aWVc`1gN*r1;%-oe9Mh(C^ z`W+Fl7;3dEGs|m<5Q6?#0>^Y*E-I!O;-hUBQI-`YpF;Q>2~v*@!}+dtOu$5H7ouUj zs&u8T(^cYM!`~j_D;8i~MYe#~ZoPtyM^U6I7hS_eIXP59McUOxS9LmBb9_h!7u0Lz zyM?WQql!3!`i^TFY#LP_Iy|NvqT7MGUOkl0JLAu$_mi3%)n)m#u|8ckvBPOr_?2M% zW9hlBV3@t7S1xO^2HrPDPUui{oF1+Rg}sKWU7zGa>2Tab1&e$&)Wc24G{0>Z4TEr^ z{%1Iz>u(14P^=>NVt8Ix|POSiUFl`Nm;#jukuqEK#xI%d(b zu|EPY$aF zyWP#GVCmIRFLSvX=CFS$(MDw?Z_~rj#nGVGR%`0FLzhm)Q^&XOJiIGC9;c0GvaiCp znBmbQp*l)BN zV{xbVD>k4lsA1gGveV%>f?grb5wS*J29B1AZW@Sb=bc9AbvTtVBsAR2;db z-Twe3i;lu#97*K`#`CA(r7!p-)OQtbBBz&?)jg2w@up;cAIh{rp6i^chsI&5kR0cj z+H5+eqlu|{6&ntAjy5-1V}x28jTsoASy|v_AUwh9uiR! z=!Hh8Z>^qVXHAyvO0zXu35cxMyb*ELXki^%tr7#>H!>kd6T+KU3Nctlx$XGJL_7{9 z%x9Jy)|mq5T$Fw9`ziQ%y7KPYL5GWB3g^ z)ZID2bo`ZHwc%fmH0wR3w2i{@U*V^Z-NK9bW;OXJzI?ZTBaX_)h&a|Sh4JU(C_g6??72=O#xbm|RF?T|CPB@z<#2vE!eSac*7-zQ zM#WL%9w;@lmp*9eOtp1?B7B@5$C0Ox<3D&RmrFtAonyM^_@5c8S>?sq2Fnv2#i~9U z*Sjr=l~#@-rZ*THnb}Q`GRHRDvwS>SHmKIAS@W%>9@Md^We4N{&jTNb@hRbUarYImHTev$g)9@#sC4Rv(EPCpBj}z7+gl z6Axu-zZ}8&%mIypEbWNyu71%G$*;pPl(1|yYx#hk2y{SL+;<+@n4d5{XW}2KCmY0! zUk_m!X}P17?Xmgw3xszXs`+h3x9VBqnA5t`#{FNc9KKa9Pe5zSub)Nao-y$qN;vxT z>AEr7P|6GfmJgE8@&{Jfua9;m10w#QKG7+XotrguNYe+NmCipe$Wj%m74y5>-1h_{8s)L)#DYa@je#GtU-I3)j#8x^war0 zZ-Bf5#dv-_!mxOXcq(kg;fOU09A)Fa%hLF78>fqmX{zcNdCQ1l)|u)8`G>&XAgkg2 zDOU%L%*u6s?xRa|E8O@G6m3owQk^<3V}Swg9NF4Miq$DsvHNwS)iAjH4O(Tis?(@7 z%46}Bm&Wkb8HuNi!scURn=XWI7cIfCbt#iw%*0f!oB=iujSB6sn9L^|3W3agA5kjkK7VDMEm}U;H2C;Q7y`u3M zgRkufd^Z_G2Ks`YYIW%onx0Z6rs#Ogv^4uW2eUL0^;Gfv8;5a^FYTC0b=^hzsh2m< z;kZ-5;{Mr1m8m_o8b;0u+`uZDlvcAdMdtpUY&r}#s_xcll?bL(O8ZU$V(a=qIU z7m|4A_%V&}{uZV)1&j0OF@(HSY&d&%Ur9djGiQ|w_-r2#qWT!BO{g3p)Zcjsl{SZQ zO!#XL!m+Q!`EH`;leSZ3*zi6Q;Pwoc2IDS^>OcM`!>HiS9|eWO(g)%+fj?D44d6}> zfvK6eCcVz}IR1*)s^o_(@=gzet(=0$0B`y(j{(6kxW;|U9Qii~Md^4y4q#|Jk%y*F zcCA`?Y80I!RHWr`AxDrPXfbeEH@lv%`$n>|MT~7|+)bPv#vs(8J)|ey ze=I$@qG4p&e+jakI$|2wO#0anUy7#6f|I}8Iw4{~EFsT{(1e6pWl>lhx`kGwMswym z$5lfI#wlU(Cl6WK4$`ghKPwT2HEFu-y^$S{dL6j>CH_-gByO?s9w0buW9j9PbXnsW zT9eIYq;lW)v4b=HxCv#4M@ADhhPl_hDImYQ@Z@ zsBjWirVf=nvE@sUqRkSc3xjZal$gftuq&#o?uF$Rz!*a5GTY$sk_-%hW@WP*s+%q2{lzf3%nH+m` z=!WiC{{S^w{vxAFj}@;@m!+>DEO*~b#D%^ulMpWkPE86Em@@&J`;>Ecl3o3fUf@J; zzx^#zfovB*HckCQWh?qlTZl2NA-U})+6{J3prTp%&o;I{vXFN#^o=DAk$BK(6tjj* z{SM(*(T}P1YxGWiFf&~L0D(l9Jk6epR?Qi#M0P_F7fJRO=#!n1*>c>(?_{JIpY1)8 zGnRMV9?}p;A^vL%`zd9Y5*rq@r*2)Y0KdOf%m+C+t~Mx+$2ddJdm~fXm*7z$4=?* z5?g)KWe#kecIJdFj8$6=<@pWJ%xHJp`>9K;Mf#-i4-qT<;)b>mc*{!X& zQEVHRU-wdXG{amwtcro%6B(2lE$^w6oo50s2{EOv?W)lbO_O8tGpd_^_ z*+41s4AygxQQ1McLqXYG5&a5CftOo#O^~-oZ64}xXmk;`RUD)nZJ_s5wLA})82v%SVO*pK%(}LByNB0CuYx=n92MTk;^5&K7kJ5ialf#+%thT zjfxxHaT$pleyGf5q%o&y)8>XI;osaKV;L?0TSz6Tgn6E(^6jDbPVtnw4#a333G#B^C@YBlW~g{K~XP|A-^HAkdoWFN!3Nob9HPT zZ@{{TW1TJs~* zud;WUaA|kbs!_oI07ot!t;b!0X&0LSk-f`p)Avg4Z%{?IQ+q{JY=Mnkr)47G$Un7>E(01Pz~o$5R(SW0)LkJLOnSm1DzX< zPqG6XLyR`@sW$7>b!5dC#8{^YPw=U{_2`ZdV+R$UUf+gYkkQ>#$ej>HFCa2n=GCS#H!*X z=V)x|cU$z>F+>LDc^id;qf^iPNy4~(chsuJu?^4}+_*S6N4Q=$;|~uzg=0gq!%V}rQ{_^< zknpDkJOtNx*S?;qijDM!P8sG}fNW&2mD! zD!#C)*SOB(vJaI?wKGx8$VR6wzUxa7PNAp;H#LKQbSzZ@$Zl9C^HbzWe~|EVMniC? zIj54LY)eP%r^B05%q`E5ozLpDaIgCwA`VfQMeYot;@eC-id3q52L452lG$yVTspl* zVwh@qepExVy2sgVRi{H94LmzM#(`&Q<}O*3zSs9{ZbuJ{3JMrAx^0~v*yZms3faGb%~Dpj}^E%;+q*Af2l(x+foSo&?p;K_3voB0O))dyiQ z4Z(~hXUzd|4!AwLD)mw+XAz0vu67*LhYY%A)pIzfjPJv`(WA2NyX<`$v|Rdi+R{Iq zX$zC$yeZV`7mUTG{^4f@rgPMqYQHY6_@TdwonJ4V*5*2s=|Dpw~RUG(WbrrU|tS>W^w-{uR4Y3!lKSk_{g17P&p7eT@>wCLfP&7IB> zIZ*3m%#(g4l$dF?jbZ9_S$MjXUr~Y8bkq$c7mi}7(P5_7NM+33a#br;t8nPgueuU% zVJTUsTM}C0+BKXfPG8kmqlOr#ky@*1)E5pNRaew?IHormy5rq9o?D(b8VweZ)`C#@ ziZyb5?ehFu*;BTMb!=62R%I`kumuRWV`66N)9lTJ!sDyq=vARlG(TTu3IH&dIkr7g zrAWBO=VWn(sPh4?5xLgrs~_lBAGv{+1-fdhMo7!7{{S-B;oJ`yk04RQxb=xLws3w4 zt%=7{!8x8?TEsQJWwlvPBc2h*Hnmw0?&{4vWkTD!;`7ydKZt*XIKK_nr%Mr4zEgyn zjNBfIjxYFaTm2|;4jSiTSPWEdUSa#IiQu1qryoYSaSqJjL7QnSsNuX|<3Pe<_w+pK zg@N!_7JWfTV5$=1$^%OEp9lW{0dW|tAg{!p+GOa#tS)@KUfdP@ka=BdK3!u>Hb>@F zydQ=*hZcXAMU_0QT;pIDyYOG&#}2{qL0c5}RbU@>9^Lz{vxxWtg)S2M966N3h>;D8 zq`XkS$=NSC{{U2cpW+?}IBT-DtDjJM`XKNOJwo@pD~wrs^Zx*ZSd3mV{{ZTEk1P}E z4Zq^MUkrZ?xEBYaDbc0plNp~@Xe)gmqf$x9wWpl6GI7D z=HDv%e+}U-5m};@Tn!hr861OEe-Yu1A4b%vQ>571)>!`l7CzSKzyAQC#*ddU-Uaah zdjoiVLJV_kx_lq->%^FlXjY|7jo6(^_lz|P6l(cKlVfF~>KHu0ixs!=;Gshy`SU!3 zf`1CCP^B2!)ao?+EN||tfBd}g=i4&WqUY3Ypt|2h>ltWMVLYTROBDJK$CH(zq}^$b z80ASAyz<*-9y|C=!XJkLtaUm>a>L5=Zx#Ol2F4rAt;1_Lo!L`W?v$&B;fbSFwc8eH zcI%wt80vK#_PM@U+=MJKWKODL`7nW3HtoM9h7p5@J0<&0h z8<%!o6OZ8T##Q2Y>|>l7B(d4GTXid9xRcoG)m`>u>LK^DRE8&zOJEJtIn;~3?alz|JFZJi?x-wN zr{~fI*R)wTlUo5%l_;BPApwQdPnK-bY^-I@%%Sd`fl%LNsM+Zr3-NYB#+UOAM?=|r zr-uANhvO6m9}wo7aya$qzDVKktA(r~&IP7ds(3%dbtxKPzBiR0$?E-B)(P3&e-OWf z)OeGR6yWV`JYKJ*v;DiTA$uy|>zWnwG0Zt!(%XU;(EKBh({pLntna!o9XlP0&i*3* z01mKTDZq{+!yQKtk7&F$)%s6$K3pF0**>4}c%>J&XJ7f2{sW6)=rB@ocbl`bNLIU_uwBg;)#P(> z)OLhsv=!rAGl*2dF@}qqOxPXny*I-gRj;DScbMaI?z-`R@^ki&JpL|!4=B@l<5(QD z>pJx*Xispe_#ckCwGm4Nh;XY)8B(1`b3Scp=)I%FI6NN}WieKZYBzS92rK8jRvwpx zJZV%_%}Rw=@?_{wRPv^>9u@vAp5?+kMUJ6c$i{u$WNHFp2!(GMhWiC-j{8HZ zvF9;vZ6|QKI+-z)X>m5<8fp1qr2J2Be&JukQ>o${4S%z~qaQB1-gah+zS(m z@ZDOpX;JgdYK6{tY>cP&UV*^)u;RE0KX+D<%J%mQEbx0OWW8CYBO zP;nJLARrLy!kcR}wlzC~lfla&x7)hNL(_X{I0E~d095O=y_VH1jeIz^=zeR3VN6^R zbI|}zot=Hvd~IAq8#HNWJr#$;9cJrp%D#Hct{GFFnbH%H!Jq!GilIgBs@W~|4u~%Q z0L%it2f3Aw{XN#jOa&Uj=Oa&nRNU@m4(!rXThkfHdA-ry% zhVe=`swQgO3rZd|QLRPdt8>+8fYG2_ZZf5O9Z+aL?I*)%52s4KI;Sxt*b<|N<24H&2EBR(Hey|g!&4{J(=*vAlxUP4CJzltvluezy4k{D zm?_9?6Qaf7IO;X3`61UGS5(GWLdndAY-}wLCUabrdbBCj7ixC1tZJW8_hBu@9b7o_y|ztw1+0bZ-X zc3|tCi2@klPqY^5li)fAg7<2RVox=|nKx9FAQWXWuDWRoR|ZD#pDV8&G($1<+oW_< zljuWw{wO0-Q2{P&<-F;#i$MNaZ*63$HPFb_+RyBW>|%AAPQ>fFi=p@2M084Y%-4IQ z*YjmJNx~1oNNFct{{W&*c3X#iZ3(kWptI)0o$vtZ@3+k;mVj#q039HMVWN9wlX$!) z{{Y&;2<-_z55$^_fD>FD*p%bdKUDX$>9NyQ5Z+&l**#cPY*1U-Lp&eADY@H=!QDpf zk)-S|s$8&vt*%+RPIokmfTuZJV<^k03IW4Y^yr#v`Uo!5eT3L-)hU{1mg95=@;*za zp;PlSSi9!9+^YxBrLKt7C(RQUGcv1(a~^0rA~2Td>;C}7OG}N1=uk6B8A$2fD{kbc z^0X-lI=AMcBVrfB0pCRJ1((gLT|v1`bEd7|@>-&2vO%zJ>+30I`lf6XB|9TDklS=r zuul02f-kuv@j)ccT)#hbXS6%N{>U%qzc7=hvb;55>n+vtrFKt%f{eUEKHQy?u;60U`O2sR}QlbBBT{{Xc+3WAr~O0ji+`m4N5Dv?Ssf=+7fo zw`9+Zv6-?qIt1<^(A?Tg0je0FW;X9U!gOxk(HP(uTOSRb@wIf$J0oO>;PXxV|n++Fj&b^@- zuv$sD-Vhk!7RwfyMPV6i?3YROHLD059O*WQQgE2)bx~t&BP@67noFP-*dgqd@J{M2 zdnS9c#I^`BqFmq)q{Wn;+e@1RZT3Z`R_uU`p09aGI&{q)R11ke4_76hE3cUQSt$BA z{{WDap81_6EqP9}Aw|bD_4=gN%RzQwAJm*o$R|)HgEDM32Xyisqq`Lcnr{RbTpyQZ z9UIE$MuZljQ2zi&sB*_Mr>EeBS;Bo%;H2(CIo*`ljK7&etnAkogSLhhR11&~aeK)w zu+y))i}N+vTrIH)>OG>|!*MOqLCto4XHP;MpjN(wbV-2cGwgb$mY#yss(`JX!y{yW z%Krc|rob~9%3|U!rPh$RnFzxSlienBHu<%XqD!1E>uN^HQeevi)vKn+O00iF z(`H%B-0{Bsktl%ZF)lidApx#w0oj}=h{6WV6ib9V?}4wHa*n}EHq_XWvGF_~3C7m)aCo-jW&Z#JiE#Ior-$M6Xi;aVk*F@XUUT5T6L4-2 z*VMmu?kESzN#;DCnNbYd2H9&TG2W4N0;hOqH z7B%fUwF83U8e3=Btw9cHjHjaIbj>(CZ^wQOr&Z#%1&*NS9%c)J?74gs>hRoe*&Npz zjf)1GuYBS-F!m4_**ohC&9VLg#8cwcIDo~r9C=1qkCy9d$x7K4nArEX7lNl+uiZVd z4KhC@9v_cwBbKMxOHKEg?yX|DmJ0z@lrc}H_lS|Yp@`#nH)BJER{_zi3Y$}GEa@H0P^sSZ7f3uX91(v zl2*dj;njS+Lma{k9bseS!Q*@vgHE|R$5vK^L-99wF)%P(;a(05t1ag-@P%rs%da*(c4 zYbyZk%?@_MPm7pqVPBAU2CK)Abt}R-6xJ zZFU^?b(Cn)FMM*z&;@dh0LEqCR}_3F52)|F%Rhm-e*6O|QNv|)J7e=ktA@M4J1clj3ttyjoho#k`8i-VbxGx9!G(sxJ2*LJ`uAHnP9EymhBqUx0MAwL zo(}#8QGN>!{6!Z%uNj`#HVkxLhyMWbdx1UFkJ%}(HY5i0?wd=NLdo=bkMQfj6|tCM zE&Dww1=V_vi_o~g@biWiQmsOjO1PRZ<~uIyy20>FKMkQz4~Jw?V6fF&<)+U{kK~G4 z2uvq$hB>8pR&{%IPN{@*s;jrwdSh@9>A;4;|{C~q8#JE7?7#6q|iE!#Yl_^xn z$#R3@ykA0$8V+b#*#7_+8qiDh-Fdw}Ay%Z(c5K5`R$%I48fL4zc1?QMsw4clI~VxQ zo1b??Zj-!r15ZAit`{A_>b99D5n*u)Co8Gl&T$=8dqdGM&s1me6Atl|)@X3mr*)ge zxaSYzPZ*3nZz{8WP1vs~#!{{4W~Z2L3K6Z3ZjN=dg-ghm(7%noPfKSWpeyF5j&mKO zm~>j$OhywKM7pOrJM~^P`k0Fv?Z^SubUYKp^sudE3e}v-V!-P#lk;NSKrbFkM`@44 zQpC+N#)h}jR~5$arI@2eqjStDVofkBLul88j+-4HB7mAOE>Ic7do_R$2 zn_#DC=XkCPr5rc@7|4Do=)C)h@Z4K54|AC6f!ChP*6`G7mJ`e5{6M)XJO-9C5GlEh zEz~Suk?h$h(c_eGb*i!d0CMI=oTYRg82%pd{{RwH4Z(2w)n`YRkl&dr=noF~ON7yf zoFzA(>TIt?;OwD*U~LArn|cPoLw%R*`aBzh{{Z@C@diDhQF701Y_D4#Pg4616;Fh=I!Q zqBaV*62aj{9}$PCLaQuX_Wn}67~-i0`kJfaarj5G%dO?Tr%>dZ!E#<6O!Wto_^-lv ze-hz5`mc;@1TwBr35|;Jz9WULfW^NLQq?IKGQNuAX9b7F7U3VAju&oeiSD@18Tcm; z$GBMH95s$+KMv2lZ~p+iXus7bmqwZR)>!)*j)5h+2IDCpLlhUy~Vv9%Kxux1b>byhv#}%k{l{7}XwtbT?ZznVQ-(JQKvKwcXTQffA9E!#a)ABQb-F|;X35cUA=_gz;Htn6hLRW)d^kO&nu zJwozc2jV)EFk+TF6xZdncG-5A9xp=`f@K^nT=l`0HMc89rXygU&WnjLxOzgi4e%~< zWsqICRdD_$!Qt!0M^t548JuhgD40B3aX4qwrsjt?m`AHH)m6n{@HMe4tBZ9rS>kf< z?FmGvWoYQJ*!(^#4NkoZwHcY015~hlW}(T2tmw-bPUoRR;nb*9!5OOBRH~I+IiK7l~LJSpRz7~~gc}rSCsb~)+#QBs+Zcm!8 zQQ?Cz&2T{Oy*G(?X9taFmicbjh0pOX22l+HgPdI5OVvsmXC1=u&cuV6xyd&Rt-x@K zaLmoMf_@LcP8wR~IN#K_DB-FC8XF*Pmb7UlDtrQ^97wG~z%GXfDw;#hZTg|%@f9h> zH&X2@L5Y)8;N{e&6O8Jod@czc1RN3uv>npS&nO3b?S)n+Ysk>gf{{$mA#6v5Qn?s zPWFdDHc@k(o2=bEgRbRL*a$ex3r78daQx4c?mAC&!v6pS_bHrAz-xW_c0vgFNVpIP z)J(>Sk0=8`MaW1wqtw|OsAb7eJ1cu8qi8rKEiV9irUdAbeuFNWBza%Wpx>g7ZdlrE z3R31klXE!wzvPp$x!$LI)DCQ<53HvRnfN300D;2nck_561G##arhwS78$LvQjl(K?ztxE3DGRWeR`BYG;qIE z5$cldborta@;j8EO^4C9a(2$SqQwT2a*5P$%!mPViP1zRFoqm5^IK&d03q6HJ0$lO zX@01Ag!--(;J7C;a$NraRF24(GKA7~MD*C|v`9o>BjRlC5X+^2mbjh!CVR;Qf6{}A zb8h8HKj?qE1&DTQWc_}vtLF}XtFqf_4BZ7|vlu4b)bkUiw?Nn2blDM( z4sG=oDqtlCbIzHh9VW_b{z6UC&9D|u5`t!Am6-2{Su~8fj>BY~$lj#e z(wMaEp-y<<5f50lqUZKQCMT?1en^GCS@|LQt;z(+DpTmaY=&N7Gjg9-zhu=0NDa8? zr)>jbW@SS+DFwH*dnaI;;0LIXE!8h5XB|z#o>vD+&}a&T=XJ95wxL{hDd7Wad=avewLMN{o`()Tzm1 zW0ip1{z;t;Xyw%104F>KW^ML6LV8VUgPEn?cf+H6on3fGYl~Sj(jxrQst0D1 zm*kFY%ek@8H+_)~EOTX=N6i7bTqfj>iqmxx={xoch^ak^xOZ`?w8(Ibyr)tU=0w?L zwrGoqv?qKy(V5y$R3`Gl($*(rM$3q6wLes}hAfS2H!Sb-OxX-2&iN$g7fX+*SPx|v zw$YkSsvu~IIp#DP!W*Ff05!$Br*STjI#};131fjQXl{_4)`$I!Bv>|gJxEe5YlMu` zsO+NV^mUJ`w`B)Gb27QzI-hi-=|Xe)vSrD!8r-C7ON}ttcAY+o5MY4UMx>WQi_5JU zpj<-HX(C&=Bu-Zyj)VTto@zPAeBd&7aEKp@6-UVt(j_FGpdZ1VA+eT3nFsPf zGn4@6AV*#MqP^!PPosm7oYN?P*r&9IPDL#kU=m93gRorr$+zkp^=~ z)BcsKrb~8QqzkScuKl_NVU})D^#1CrBQ{*pe+6U?NZDFMGHsZ?n+~c4rL83Vxs#4& zj>u#UOQim&V72rcy;i?L)4COzFy}&>$$WC}^FesYZF>hObwM^uIT0G4#cFtai2aL* zQ+8(nUAWsT#Gm^ zii{RcZ4*{&YcnaoRgO8sD`@%K#r_-P4B{2>jcck>Iyf~`!Qv|L+F;eJ(@^sk7hQX= z9pH|whJTRRBrgc@Uk1l;++lVilx8ORR*fk3$7IWxX8!;V;}tP4WkBjI2E?5L>2TPZ zIFToad37707YFLR_k-~KWp)aUbuma0tG8Pecz!z(RF=}IQN1&OAaqxQ$}I&Q?i^Kf ze9yJhs0<9Hn)SN#kK#v%@iiazx^$w8M4n&8br^m#R}R62ZWf~mwcZGyb*v~mABKBt z(W&LVkp>*tJr%^LC+XmLI<(wHJu;n2)T@XvNpzipFO9ejE(?!gq4#WYvv0D-Zfc|# zfBZ|2G}Rj@aLp!S;h9bCrk_Pv)S~xhHj{Cd>BSLM=PRbkp20{0TYWPua+ozmvs`8J z!{9`T-`!lm=5zcSZ^<8Pd|K*0eV)p340fx%nIZ z-f#Zb_A3sKE|{#q=QhzNs_1ZUr&y34(@EO2?cH`@<-yL;ZS;Yr_U3`4eoHs2S zx=54mR)!-P_GkH2-0GBO1G32jx=(FFI@3B8rCBGO<8XCq66$$-^JuZ?;i@*QHJRK^ zhO_crpB(V^GZ9(!Fm!4fX6_-jPvP$j@f08>zru?6n$O}cW1n8B1m?J1w}d=7{{Y9Z zW{n&pX}J1^T~6u$02)@Q0c;yCZx9^nq~-Y)^}q37z|}b4 z4Haq8Yby^)4gHsi@sHr|9^tq#jH`#v55UWj@=Mm}uYS%e!+sjYar{d#m{0c}bSvF_ z5B~t^_Kj>e{{ZH3bjaDX)!*R%0PyDtgu*k4SEW#52AQlEtx=_s!krfRY-zX&!b*82 zTYnEI;vfE<>0vRLfAr@%y(d)r$5e0-&)s*v9sU(?KM&RwXwhrSW7l);y6PB^=EI+F zgra%lGz*Q2&E)th1tpmp+c!bk8P0}-nh4bd&D`%v*%UsT+74+S30X+Vwc+*-RV%-r z%R6eGv)JBhe#hNp*2LDQT6JkKttQDWH!B;KtA6dvKNW}=3cyikn8$9FYSp-e;ac2; zXjS|KGLPBoHKpy+Rm5yW@M9HC!mdtJt9x})#WuDd5-aEXvtka)RCuK-k9`AbjkF@L z`QXs5$p=Lo+88?6$}C`W+nzPuW>(`^d_72|mn*daZZi!@jPlyX+Sll_c#i>~{{XzB zNuk=RPZ_X-k*|-!;P{8y4>+o9Iu+CKta!xJ`yFOQ7mi+#c3GT9f(oVW@?u1T-AjUb zh2n))xH^fmmf1s6B>o&9k2qZ(3B;dLjVz6s`mT2a#ajOWGG5WxFIWB{_3P)4<0X=gnM)3gXymE?}hG@vvL9n@@>QBBLA3ET=CDVTX`hKZ=ShXEmqhws8I;q}G{qt`508 zJeoCg4u@hDR%6JhNPBg$&9`(~NkG&3dW$?snht+uGvcF426p=|IA<4aKlduPsOD8M z9x21pn5^GrkCu_H5PFyY04sF*;BJA4@tCC3HKV>|<9tKL^r>yZP9mE#GpvE4@DoA95@^)11c5sdvfIU< z2N(WNjvul*o)uT^JU1!I9MLU5&N>x^;v5lo3#bdA5KL~C0}+U!j1m6chuK4qVrpVd zLzdBSG+MmUia8!V9$k;7=2l^+XEfNZ_rukyVz3nPjjc|dRz*6DE`nNDDT%`e*C*o9 zYItWb$979FVn0yvL&8J$U+Uwh) z)n@pO{6`Io`&Tg&H0o+Dhr;kRsZtHCh^7q_1Z&DyRa*mt#qdYdt6R+=dYkZkmaw@T z^k87Pj}xpa`ITK&m6^)W*t*Nb;j?*-sM?rn#vId9?IdbGOG5>L#9`;kbx$p}9MW~s zT;f1<^4`}Rz@0(YQmfF0!tg9*de~VEhcsQ7hgGZ|+PO%3LpD9(LsbTeon0JeEtFxEsMTmN99wYR)}|V! zdNN+z&D=Hux|S1))}@RFqv{qrMrPS!{BMG!?5aF82RklPp;hYD z21add3Z@T=(!`M7X*xL;wHFHBXy+dgADW1}8VBb(m2WJuth5c|-B`fm;pT;EwDUL9 z8?4+^03A-QM}JONntTOnq-2|AB&N>^+XsNC6Ailk=5^)BhEPW7@gT7Sq(DTB1w zeEri2u?@J_swMChHc6oEdwV8n=Jh9O9}mqic9U_@AJEBwS#sA2->QwP_JfE^9T~bWZ8G&10%; z*<-$n)~AsS)5>-VPbX%~D7B!w-9B(#CAw(2p5&ea4p=4D*nWy_cbIw<7RK$i{@W?t z)*m$$!YlMU2saLbh#niJ_dsYfnChn^C*d8D0tilL!P}w^aNKN|=>>JBlEgd<#CI>c|fYA3+ zbeWd4%=2ucmc^q;<&J}@ZlQ2i>`!P9Co^)5L2@1;ys$F>ci2LZVYv;{UF9_STDn2J z2JiDoVA#VDb7)EF^G?Pcb8B)xNmFz+_R2{Y>HX9nI*XrF?LNgD9>}7gmZ!%s6@Ajuh2z6$OO6y99pn`^+jxrdCi-a!4;0Pyf#n!x@Y)v9mI&1H`O zbsDJDZf4Ge-{zFiMUc$do=^^{jX-6*#HVyQvUTra^FuEHMrn)6Olx)`?7#roXw)Cw z47)4>?LQ?lb6Y{bF6eG!p3YY3>KdXnk}7J%Bv@~zx_3i+%N+r^z>@E7iOa(rd8|l= z=KK^YT!#mIwpX=a_C@692jVvyLLZu8^RSRR{^>uK;j;qYH30C~Ilu3^pk0$?qFmxY z1dr|2L9Z^h@qS;;CzmZvQWafE>qG5QyP!iS`Ya|2-rfSNrnJ! zpYqvUVSol{BwkhFJ2P-xrQvs)>*l`5RVM!c;84f#9_DuHr9vt_ zfzFB7q8q!|Zsg2yw=Z>rIj%MFg-tgM=aPFsy!B&_c#);zp0N_no>Kr$R)nh5qHqIoK zvxCR|nc|O=<_6ehTu=W1GpSaMI#mAc#?LvHj|;}teQ{Jep<_KpbWPYJ(P`pGCzQs3 zbs44=_B;?=8-4mNZw4F^Gr&1P+v4CL6qWOPb%a=SL(K7d#(&C5GmV9*Rl)PO89zTunclu>vg}}O}k|s;-C2|WU6Q35Sf&Vqa~ph$;vM16JA%RtZC^Q*G|U|zntmIJsp)^(p2?DP0rN{7 zqM8Q2op&GL6!_K}r`jmGy`_@d_PX*;CBv)mqFU-M0k5%tMeH~h(|r+Hxrm5!9aQYG z{7K=@^_oxeX*KSSUTMF{SCa*j`WUvE<@h?@Yt2o-Qmt1r17FuvZY98L@RxyI&SgWO z_Eg)5r+QUef970S;L`s9Bcm3blF0WHFXh;UVun|cI(%JF>E-8eb4UW@DA9PV;u~US z!$q4>W`?~QnO+>$wC&YyVJlcVn|XrfDL2bx2J;P8#}BPmwI)-i>d|e6NjNdh9R?1M z+c6+heMVPwW~Oe^y38+xv2S%cepEM8&7vQId^=sZns|&wD5B9adap)iB7}e&2ddxQ zt_+eucqaqF;4os5Wioe`tMqt21(8vdTO&fNvl!Me+Gfhl3Yn?e-BxYo*yzw^Rx$z$ zD`$Cz@{QC(GmAM9m~cKTs4O96I@WU(yJ~&&!^jM>UO@XSywJ8%F$-I-ykIqSZOG zH536IRn$QTDJNfbnOW|t(gUsx!oOHmuTTA}n>ZCgm>f+f6H9GpqNN0qXBWcLBAH~? z0`T9>OCQ8Af{)r7=J}g;LC5gwRcZP3+xM|@77acdUn9e_LyXDUXt7S@mQKGIEv_*Q zcf2l#hxnfhh{G|@bU4{^)i_{t0H)X*p6IwP7gg>Q!!iNWWb?r>rgeviWIkqYPK6%{ z#cASXXyN#UpN8S?^8BjqbnH%w6|mH>t`!5^GT4#2$>6vdp^Rt$09K=*4Hk1a#tc?D zOJ6#jAuLlXVsKArd!F4vTv2^|HA<9n$tKG1#+-?r<{|VkR3A>Oocd3-uDmzLJO!-9 zR}|{E&7w|FelWdT!<=&uL9D`Y2V|;jGwzp(dKOS35rny7?rnK8ZqSV3MXLVR`)T|8dYot0lM#{x3c`fza zSjwjP1di*3V~r>jYczwg)Gn6`;#zcGJo?G5inL^;xWt68p$ z{TgSnVllX0H$qEVXLZTr@ECeU^#1ajh~;o`g@eMpPH?XcE|}=GIF}!#jc1vfUHGB- zaeG!bhFeBWYBi}6%9Wh<{{YEnW3g1IxW(f0y0MJnbi)g?U;ayw;#^48s6aP5!?amH zAGA@b&$8Y>iHeLg!>)A!b9J-TaUs|3v@1E9Z@Gv~gE&2nYMEj5Sl7Wp}X-Sb3D>pzQI#@jHGISY%^eV1EVZo*l&3 zz*eMbI%zyXJ=d7ue7E6afcLjSd55v)+NtIgeR}NmvpNzaWPsP3+t4*w$)MU1A4j;Om zWd-N{Sf4q4ur{BR*SH;=ui!8a#!)5DylK@{cLl45#hNu+kcZ_mx^5T4e3lWJuRjXt zR}AvAZ5%#7g$y&^>Xz0ztQWuRxPelet~7DcdIyMbjud928pji8=(s*A!T@Qo8+BUX z+>LN`+%q3g)Wfy7s&92r9SwBJ8!pC;635i7QL!U8Pj%*A6vfcPVkv^jA^H~GdT$NG z;_C^mN@!;wyRjWtW*d_{x@N8s&BbB-%5Ik*yL*PcmG2Kzt49+0A5v?helZr$1Q06x>~64(p=f z_zWc)ud7=Y>_tI%Z+od~!AZ44ht#E5ns29-;1(9T&-VzJ?hA~n_Ee*l?r4zU{!=SA z5d1AigNJoWVZi3rLFyI$8(zIkF~f?#dr6$7(xJ}HU~V6W;#i+DjvlX(iO*ntFS6F6 z{w0HO`*X9qLPL3dg2ouCuV5c&`_>&;*dUJUTvz*L5l*#d7Yp~5IWK^VPx~!eby{%} zK+Fb*=(&~}XNrBEh2@00Z7WlU)50?oo6T{mEaG>Bv3x4Iu5r|8H#2=L(ZwZ0aZF>J+G4Xjvs3^>tV4pWgRf4mdUc&g zJs(4JX+2W}Z(y;b9fgcLU7CT6-Bz{>jZwtb`zULLKslviaQtIh%9Ptyh;Y?|P^;mC ze&6R)s@Q{=X1s+D0Gm48CNSbzQ)1Fb(HYo-Ns?}|@VL56YbqBs7l;CSAn~kQp2lG* z@(Q}VbnLNs-4t)qtlF&(4r%sEtD*?eU|=gy;nd$x&2ezhJ%Z=hN6=1;*Ub|Hp+qio zq-+LZSW2jRQKpT{v!sliBrzyG* z&>7|U~G*z zLfwRssmfx~6tfG?WH$c*yL$+?Wi0uueLA9kgH$~9%rC!X2h3Y9WQ)FmCXnF;x@vPH zLnD;t1bpR40U35W!e_gb9V0}|ahvGd51ORlhuECfwoc#RP;-E6WoQRZsb+I$)7YpG z3rN;<^bU zOPjd3{S=R^1DmDyvWwd0I1ucUs*~NBma*6$^K?f8`az5ha1Lye2$5m(O;^fmfXg$4P>HW~(mcuN~j>7w*IVwoJxrddly~-Wl{%oL~2zJx?sn&B_u7^&+2*XBf zu;HN0hjb*C(Dhn9Ih|u~WH;^VCw-06x};?0k}MNuB$#ZQNz{9z*|#G|XXeWq1FU|E zH5}aDn`~0glFfCsCs|DAg2Hn8b)KjV2t4f8h}4bICos8a0_21yxVPeO%eq-h-wnC# zV4uQZH5a!17%kmfq(#Ye0(RY0qm(?1&bWcq9+SXvCB482KKUF`vkIGsvQV1P4fU=2cg&B)^}Xpv*7zhpA}wLliq2>ny| z9TE1-4|d5u$^or?#hvuHQ+Um*T4zq74Xx*%rX;ygAeoD-cCqO_lvuzbTcp`Yifv$U zcIG|QbDWcw=RkUORn&+@ux`g`sn+E)y+f8r^-hI8&@4AP{F6z2hNNkwwkkO+CSjQK zS|)Pd>73_sORukV{(u{o`*$d1`H2k^`l_OAI|;CJwtzl+q6U{;u7G|*J(Yaclj>-n z@FGcljhk{|NEa!-m@*pTKbxYvNVTq=dY++W(R*3|4uEu>$5nodi<&2W0o7gdMQFQD zq}jQ;{FRnW!<#dv%DpIP%r)IyV~g9|Xtl>u%-gym+jfMU8X9w06Q*6%n;C}o*D@P{ z-$HJaLgW=}xw4Hm8zDGFxwCF|`69i+z!UW7fl#&V%pKiJOM;fcIoE@tY~a8Sx>=gr zyDEr=KQ`{sWcK9O7=YA9avB|T01~_I2|&@oiK}y>^ZG7!a5C$pbzS!XbG(XXqpug; zV;v2fG_ex|`i9|mz7NJy7-!SOIm8iR-FfI0JlGzc%GKe#O0E^mbtg$1E5Wqnm+{A+b|YC2y!!>^-YUR53@BEigs8ytl+qf5 z))&0Ff%7^ne18F;`oC(YNw2C0C^|~jc@#!OJUTpEhgPqL0-bC;F#iDi*FarP9}v*N zPL&J{K$kJ(5>}Q!!g$8rJiQwq9^qqGw zU1#R;`y|%QJZ?5{f9$qs<`Jt<*;ofoY>t}+EJJExALO~P;j0dys?KSsM>hNFxmw`e zIX3uhVT{E9>aY!`y7lh`crLaAy*x%U4%11)H9wm3Zx47Xrxe2ds|AZ|@eR468fR7S z91g8~CkMmf@gMF|V42&p-^YVi(T;6BGg7@#MuQtnHJz0w;yjqmXKQC!4-)?Xwp=;Z z&<)D3iJ?`rL8)>K1*%JuG+w8SBs>>;by{?5m$8kfu7zdrtQncA-eR^X(fb?0*yyv) z3NNwdn*&axQl&>0((*S|e$pOt<#g_rdU$td$mus(K~iYddsr^y+1f+}nO73$y^hPv z)T=G2P4m>E0!gzCO^(bRbE>jSVl`A-U9^vuU44p`9AhAY>#6l&CGRw4NtFT7R~1^} zXG$GP;)U|r5LA~WM5kzJZ>GyRnD)N;?1zctw5Wa9bd*ErJ&~y3)H1-!@~n(6A8sbL zUQyj28HlT`EU)Sj4?tOd8MQR9jh0q330g9rNwb!X3eGe`jgwZ#(!)H8j&D$mTT~4u zW8v7!HN2AEZKX-fsfW*>PN7la{wm=Qtj3zu>DHJITbLiS;;68fwxJ@&HHz7|RzwiP zR~VWg=8`N?P7}>x4s6cpzRmV(!*uRt~OaWbTXd~XO>L@-d&YmE#bOV zCcPHH);q12Gc%>FXpL0b^6_>f-KQw1ISO1055}pM;u(^)Ee=??Tl_YdrAO@UvxU9Y zPAN{HtSV5=Ppg8V=3=nb>DKdHM2S5@xBg3Dm7Cs9SCCy0fr{ajF)bpkCcGVsRh&j3 z`E05#(k@U=I5-C7`Sn>TnMF8@IKLBr4LCO#!&IkJ3rsltOl%*L@LwDM00_8`hu>2b z!*#1-O46oJJGwu@f!~uq(>AukfRb@T}sS976}Gu9UqfrJDZEdHAuLw^dUS zSlEjn^HeN;8yUl&LOHCn>(E+byAl}3$EH0aVbO<|*Y83;;os*=hk8rNh&|floUv}{>*Fv-MV7fK&Gp^tjvOSI$8}$p(ydlLt z$&8%M%JBdd<-7{8IocftY`ZQIh;v@bh1{UsaW(!&T6BBA2gl{68t=TK>$Rt1x;_$X zdDVQ+MOZEUisAep#IWz6!J0|XF6V~h>Ea*dxw#zGO#{wR=U>E+2)7B3JVJ#Sqgdv2 zXbR=%3UpW-%_8GBMekf+hT-_n52=L2Hd^rjjgL@QgZRIP*6{W&rU*Bf8EozjgeQ!r zXD5>hvkQ-6U5lh?HO(>UW?TJNpK&JVf0XRRix(XN>~S?JK9loh4%EYLK5LWWPix*m z%tz60(TYJhJ{p#BSqCYo|4@)oO6# zild4IwhOd{(}#QznvN7Kg^)f%zcWOiP4jK$M# z2-3!v0_IC2VmDh}279SsUTb9`$B>1y+DuDFS-|nFt%<2i8<^5{navpv#cff;VeoCM z=2gyWK2I%|J}S|}R1T@nK9aYqVV#P@QpM17L~B2?Z9~}8lw)yc)5o;nyq___`IvHP z^GgLp@Y>9+QO&sLAELX9CY2vLo9Ti?Ir(}aQKe3;FF)-P1%$UnOi*2BGY0%8m@2qs zFiu{pPYU+aWidtVsWz9|0o`R`nM)GWNujT7^A_5D)#|uEvWcwPl-lNIWH&G)ugPHl z08Oz6j=YWycoaz;+wDY#BAdNKatMMv$d`=nV zwW-sn(;is-ll>Cp!sC7|!f+bcb3(V9T=Kl-u^m?D5Ag`%xC(XZTB#Npm!0vy4&t$u zs8_1$FxTicU5^IA3N$IxIYDQrYYG~E*P*LLx>&3~9-{mY5Nm^}Jcc;TgRu(^js>_Z zeRj2y2!l|#lD07T>@Fu0P<^4Is~-~P!7DS3VXHo<^0Q?x<{{98l)#^5{tsIN!?E*G z?WkNmZd(|hErDaF4@#Q@hcVtaTvj58!ro@{% zaB%eT6zYAVTOhS`Sn92Q4TZj5XplZ z2;F4xRy1#6v6O?J(%#_g0=nH~Q4^w#r`tP& zu2+%&02mx8aPw3-!RE`;ABm{)Cqt-QSMd+SwR}T>s@g8ekP|Are36=?=4#K*=bcHF zT*!6rAzk8FQ-j6SpzD^Hl}k4$+o3C?4MC6$-CGhh*+I?A1lkS#k?-+X9Zz&42jQ4E zj*8ZRu6da{eu-Vq8FI&5(1_qetlyU3^rMxn5?s}!)e1p@%g{u|={idz@zF`FE`MH% zBxcdx(b-G@n%SPc2k4^*PSzz8CoGqHD2`V8ZxV>nNr~R54T9Ox@cIvMOyE^Gw*>ewm$Y>eExeG&~VahqN{sacjSvAp{x(vU7qRFTP zyV!o}6@d^#W;X1b&&xcJCf}+)F<#L2d5t>kh~hI!7ICi8Af)W%$h^c8rPVGa1W0%2 zd99_oq33YFRToq{x8=GYn(Wb;ue$}sVdgUo zuyjsmVF4Y?XDk^}c{yd;sJ-McjIEtyrg!^0oWI;o$W4ut&6M5Fi$rXfu1IrZwbU(k>mOfbHvq^XzQ?k(+a=KXfN|b+ zP^jQ88*5ytImbikHu|U#TGI`&>X#BYvJGYA-ta$VESXQL9p3Vjp`*UAp(Vr-mPoW- z-!yC>aO~AGw$LXx&qTr*KCOO1C=F+^*D7~An<#V$)ZHG^!UlQRIwTn#(A_U^=72PJ zUv)ny}Rs*Bok`kF32YEO83BP_;;qK;#xXe8O$ zbyNDnxFYr!NiEda>tzxe$r+{v-MIEoS){=l7`b+e1-Tp{?t^o@r~QXQV|6ZekU<+E z1{W|E<-Gh`4ytbDmYlcLg%?X$d2DWyvig|Y-8g|m^1-V;yU+^k<8XfJ=rM>?ERHdzHEw~yF z-9e<88|;`#aNHG7=nr=??bBH9rpU@B;&f1JocnUd$u-c>dn52aL$sK)ngO_teyFth zqNo1=k67xf(P(=>bGwi=varcA)0eD{%65uGTD}?ohbBj2lgkyQJ(t z1UDHTs3ze^%cfZ|x&0C|VUf2HXgMJ|(7ut%8TW$3ivsV}2CK8fvt($Sj-e;Mo#O2m z`l#f}C9e9rs(WRsBVgmX_)v39)Gh7vM9ERYGPK5|Ya?OVIM&UX7wHLERDd|T?ojiFJJlv)-9Bnwr$*-RcTYjG$HdcwNN4iFp%MBhYxF4BL>c2?=Ux&xc7rBh&^iK^Wr z7SrFNweWzkZ&%Ar5_5@>mB56XP*`SZ5S`!_jk?b0awW2>+m_+2>3z@~$!PS#J!2*` z9Z(-S9MQ2^<@C{f2KX+MyafRTzp9m1pXPx!P-}9q4AOcm-|1-A;FwA;srRjHXwbVX z4g#JTrNXO@Z5lLOw})sNm4#h}p>`D8k&tiENIe8$<}EJeN5C)|!Mn|sQX123RPeQY zx`2+VSI|3L9y1Y#U;@;_>o`{v4r4s$UOhcm4_6;em})|wJFHK-+u&85jdZq_M+-T} zMYqW_OzCjkRnM#{Htm>=A#_+ujx80#tQR=W6mZV-+WzID;#J%?6DDa7R)B1$JSRn_ zbd>So=b6xYE6l9eldjy$lP;-2`Kw#HyMxBM(%B0P{CyOe(bbx)6#Wya2&`sGSxcp6 zQQ`&A3w7$ONY6Rs9Rkhb(NbK@*t(~Vz);07HOy%pB2#^%%bCz@iANUD2SSTMCqIbb zl<@V7okpB!2yN9)BF6oYwcd~*1=+L9#KA3WEY3T?>G3K;n_ZIoT2sBnRfbgPc@ED+Cesy0Pt^u@ctFRc|n=$xJ^ojuVu4dn6Rgpy4b4W_G3&kTs7{8 zhQb%o8JTmaDEB4|s(3J4Ep^7IlyKE6znQWIi)EMwuzG#b>3LMIqMzjGs0D_>iY)}& zx(+80Ge%j2EN(KS^1GCND=&y~2DO%ZLxO7t?SpV^vx!i{+N)sg)m7rWN|sP5x>p0n zc=jc=7d-Hq%o|H z^MzpDh32i!5=^TJapJ3S{8 zjHgAA=QJ)W#5_gVygnwS2WRqFWQCFAKNeS|NYSC|KazjpQ!8<79~8smIo$C#?y|!l zU7B$xhj@pJV{787xR(xl5aY7#{{V(R#TwWwO)Mu7s^_vm4m%~rd>-Go*QJ%buOddv zk>Z{e#cjp(uTdP7lU@0KxHGDKzP1 zsy-ptRpvOZ4(=C>G^*0(Xo60Q=^A)8`ET=EuU!`x;_nRLF{~z=nk(!=w7Eq&O3yao zczg~rF!ZSTSkfoX&1hOUpEi#Z;gp^J^cELxLeJscE~Xob#YefCi)sj43}rK01y>Pw zQh5~LI-cvN3~G*i-NCDj;!YeKQ7z_dv^YBc%Z~GK_@~Wx{op(FE2H9+oa{5|2idPA zlihjm62^Ux8Y+6}6P3)-W94>{uZGcMjqnU5THa+Qc|h(jb<5*;J|hJ$&7HlQb>FiY zLm7r2bnLAHAquYz!Wucg(FBi+^-%4Wn@5_mtvtc5%t*IL?xy;aRyNU~{wq_Ca7NL7 zY%NyQCsqxXb1?N;Rvgzz7u^mMlSK@*LAIK1c2TNlwyVx3$5w`y2V7orYPtIE zYu}ouI0o&~%TE(j4D8XHRP!AXm8vN*>z)xdMw@L6In3uA*;ZVs69 z-0GBxpSrTh{{T;I8q5_Q+Ho*N%G1KV)EdU-&ItkGjo6)GTr}*7r3Yh#b_)|nE2%l- z)Er%)JFcS#iNoM<%rxBU?Q92)Y`A*NbvkT)I!=2IuG}p=9xd2RJIJjQ9GRt57LLjM zKZfxdCGE@_bPRW(p39QPa7=9)wJ09_ zRb5f7kY&(mf%&Vrz7o*S{9Yj1ae2$PPj#DWN}4ZXcuh=i4W#PXMOsEqM{^il{vU&R zILf8ZaH9TTa?RF<0LF^Weht{SSH#mg=F}CViJ?`k%-6_i+kUD&nx-|mIBqlH;d;WX zxxBy&ehNGut5`F6&87#fr>R{YHI&V4#hj;>4^p$RygLZbHjX0>(jTBzJc33hFAqih zMrc>hHwSfco>qs`b!!g2QpDg}gs)F4TTBrF<6hF4lY#cQBX$` zTrznXYPv+tp=&ay+HlorR>HN1B!ibvWENq~caJrWrdnol>JhOR%Gg@INoH}kvaFlg zI3qEQ#X6btKl)beVPc`C21#@5N|% zQy)-M7<#Vr18sdiN**(mu*B$@P+|lZNdrQy;n?alz{wyTc3JhS`8c{|t!T`)%?BJX zsZrJ!NAy@m5aKojxxOUSvfj6Z1MVaDPx~brlVDm_J-W))oPtVkRm75*G-c>qby~%F%QDW_0GfTpo($@-I{Y(UNs3*wEI% z)afdDL!IfjZIiiymeh-r(Nxs2a{%f~3=PJiHed~|bo!~^HJ#oQz{z&oS==emW!WpvxM)Z>yfK{pVT9X0&bO-M9EOQa0FTkM-40CXE{r=VaxidjXE%=Rj7Y+rzW zCPt3+M#(vx;0u#^L~C-4+@zg9={GFjFzdg~3n$1&Ll*{HQ=)?<(la>C(Q+FBbGZqd z5;l!T=Bh+9ftbqEI)8N#0R2*F1em?-RD*;bSe?@D0vT5h%cO+uTg+=X}A3?2lG5;v}mf{g4@t&jVlcbs22mO+o3|MUM@FZP%h_^BK(9 zn+~NWE=w$Mdt|!vZN92O#~>g5%DpCL$qukHm)%%tE{<3r#P&&of=zj0jJ8vAhw6nK z#O?J?_#dZ5D~3};Kd(~;R2oaE-|WjwOjE^X&c zR13tC-7WtBNuA~qCCxBy2Si6={3ReZ18=t~m6OzBxpssuk=kr zl3xT`(U-K$q~2$Gnr7|lph?!At}*mbj&o4D{{Wg$`7E2KG#B%2AEKUN7t1{Y8!Zgw z1nbx2ob?xJ*d;e11Hh9xplS0=#N8kGZc{p3`!>epj+>_`gguCfb+Vp= zWab*t>7ANCRLy2l>U3#j`K%`HJCCBTfI);h?$cszDU0UipG59unBl#nG7%eRJmeGB4bgo z(`4N30Oq=QxCc|O$tr|9M%(<|AD~MqYk~SHF~P1bHyRLB1Q;%E(<*IY$Ovrh(IDVM zH7mqT$jz}wrN}cm*&^VLG?iX;2Ph*>RC-*JPxedn3oQ}O*GM;$sI}FM+1nz~Vgqe; zT8z_(usW0eSs8@A;1^7EP>?Xqy8}z4j+XorzC*J$(j5}j2DIJTruqjdvz5S~r&L&) zU5Tu2VDF&O3G5I1ZHzP;)g7u+j#F96;hOK|PzD#s2_h63ng21@JYUq;MUFL^+3h(h|7IBkm?J1Tgzll&2xGQ*8S86pwlhBhA;F)Q28P8nQfcV zH<|#uW^Q9yPY@tBLHt1MlOree>l$maEd#q4KRZD!m^LL%#Jt(C(0xOyj#!b+WSz|b zHNYnvhrslPXAmM_J$Inp}|iFVS=~9JdoB z>aVjam=2`hx}#0E%x-!sn1A@pt52Q?XgOwiIc$;2TRhT#B!k7XHsL85h|AngzQ}3l z3e|>_zN)zyZOdz`H3@O`HcjXBKzmx(4qNFT-DLYIJ`l}l41((`_-+YX65&#xJu{&T zJ?;){eOGDWUon_6(#T-ZX7*aqE*FBQ!)b$-!&azhh;QtQUgk`;H<0ASU3FTpGP-8g?6x?6 z6|aO~4XZ9XE^W1QiOk@vP{bN<0J}kGLeHXL?YMV}9>>LJ=MLDdmSZ#4r0PzBZsNG^ z4?(!8bxg8-GPY^FQG8UZlOS8+t0C5ohNm3!aYBt(=cL}ctqR;)g(eDt@HGcj$zo`? zD5`TY#7K8gk*(z6#X7FfBG8!5(w~S!sg7pBwEoMW!D9pH2R+bNmC-dSF_h@Kquf6L zx}Fv>Y`teVQqt)>6G10eR;yq4zHD1nmtTtcH9-&LZmPC1^r!<@&3Bg;8!m4dixr&m z+S1s!M3;>~y^iaJc%FlpO-Jjx(yPYkJ_RSqE6XT-)e!2BfjV_sHL;Gt&}D4WHL{oC zTQA)7v5%zoMr)$buT91?e3zeKJV+fzYFnhIXNl?ghs%6Ber1>N58U)@)bAQ@Qu|FN z7|hvRWj_#90A+Nvi8ADNad$k!n&UkZ{w7ztIt+gmr9+oCt0#!@0Zxdj*EwPFjwatS zn?qeXg+;tb;s#2&gMSsK9xlm}>$vc$056F;tUfu3bLxRkt)W8~TL{PeQZ8Xvqlux4 zW58sQ)otjAlBg!Q4Xw|4Br7Jns8KC%*PjR6PZJ%Iiqd-KzRkMef3%S>f$Oe=Cs{pdG2e8 zF8M7CHFEqY4Y>+dQpD)GYB`OHewk4?ntA;&=+~-)FqOQIG0yI)Vn>xHJ)v4|B!|#! zPZfqkU9>A)D;rA@L`&q3x~@kPSX3t~tffm9>>!NyI;i)CR7uuxarUMfRNmikgTpZ` zp!PI9ta!4=qmM6hIj`4c8r58JLBY}7Da$^#UN|{D1BKx@eloY6#9y8^mDzC4HNtp3 zH@An;YY86Zc-;(UBCTOeW*vQ(TfwmP2o(+g05q{{DlMjznt0k&@tDe$&5O*XiQ$xA zgDt4mkb1Vs-sYQbHd%GJy;syUT-N|J<+8TSe@(v+e+#@b#wdB!+T&VnmC+Elcs~rQ z;kxg_m*-&11Rhz7E|VVWo<9mJ(qpp2hr|}CD554A-c!WWtAk^j{$|9K zc4OMyh0d|FmmR}#H88YIBUWHqdLvGe`@ics#XPZW>vF38F zOZb>_U@6zjqSC|h+IavqTN-9Zr-kDf zhp>lLcgsc4(Eb`4#MC&7Yyq@qEAD}9y z6Bs;ACQV;0#Cu(F*gi9dbrRE6)Y-886@DwmC|6}aE~|@ai-zkXLW+nqZOHsfhxs*y zM%8pQ^8u+H)-MtA!|7C}=P`n&zcppNZ~p)qt7^VvSnn$jji0n|!1^!v!6Z9Hcv6JS z@7m4YB@e;WX|3gn%p7;J;QT>GpOiV8PNB_5t5BMWz9RuR=BM(if94OrqQf7Uv-&?eoP$EZbpq<-DPF}0P-5x zIz^@KdD}WkN`_l<)z;(b8#&LEP^#VE`M9IWt?co$71Sa z06oNNRZ3h+qacc|W2aGTEj(|Bs{!V=vrB)F*utTN;5G3zvbQS$_=@UF6rq{Co3zVy zIQ?gU(U>^&cB{DHHELGDv&?ti5xUF3e+}xki!pR@RPio}^4jPlyo0W#Vv+bh9$B~?kUDaq|_?Mc@wH?hCS@?`Otp5PJb@%92D;r4!_8)~} zP7WQH%)P<1twY9f55|W#F!IEJH2SI-4=$T2itKaUKBJ@!R-QixNsnc0E89_z5?Ve2 zyS#cZ&E1ykW6L;=JVh+U&R{NK()z7#8^$RNar3_JOtq}k0kXrx;vH3)O&WQCjK^Co z4gzWU#-&EJ<}DX8v`MQ(H%Dau01;BFgR4&?h}quDHQ2{Lh8$4ByZVXSy03u8;TreR zs>eYjxy`z{#CVXz@Ymrmcz6IuNkpfynw%4i;pb4 z`BbY-^H`tmx?i!=;#7q{vQ%X^i3Nri6UI1S7OR7&T9zrVIA^utl|4jF*Hy!7V%tWO z>sEGG5o&J-l=%nh*TsMVk@a{7D^j%q(-P*2$8HdGDrRTPjjjl6(i$9IxzRkpj zTvLb-0{eojeZLs?7B!Bj(sddDcS)%pJq2cJ^uUCdGOT(nP4Ure-7cPf@(U_W*0)|(Zsm< zOqsE1(F&aw`F>3{XQ)-<$gH;&5_#GG!G9vM*4Yei5u z)>8(k@IF4wK*!V=w#`|;GRl8312WR$_==dEWm?rPTxDlC2?sWss!;|c3})(3-re=- z?1<)Sa@{qYBsrjU)lzSO2a{&lG)rt7oz%VGlq~T;7)hw#l6?oxr(7$~MY9za+Cnw@%qrPckpSMUj04 zu3M^!V0FgZW=G`s9btIXN@jtW&Rn5BMIi1PK;F=ytiyfC>WCTz&atM+WFp;f9nm`z z;2Wg!hQJ!8_`d>*TLYoiQ#qMqD_myecS3N-_$m!1%rXD)?s9W_-@idu<(+ zfbizYyjgO;z(sfe05<&`Eeg3vdDGov5Rp2pQ|W{5ib zDEdh`Y}<(ZQ%dM2h`rfb0c=cIq*@q#GH>)u-!Ijbv#>*ZfhM0c9X*p1CSFTSAF5DT zB3e8AlZPDsrkIOm{nQ-}c>^&3z$VCVqzkDe9jFd&!@7HiM=))(a>{I_$Jg!EDw(w~ZgFrVWwFz`svp8#&!%iPlsb)TY4WxV z>Rgc$+qOllp!lc&%iQ~+yOt)tnHl+GzFU8V zQiLe%VHxKw^|qeKbzPmr@|n1eqpF`tbD)@wlr7Fai8Zq3$UbcsQhReU+iIfkGe><= zEgL?1ozvh3$u9VP)4P(}l$hRz4xNx0csq?c{s`3JuePK7gj-_OqQG!78Ds+?Nw7p4MyOKfG_*PiyrQ-o z1iD7R>j^Cq#?00X!`jzF4LWj=4BZx{X`f;c-*>@mM&t8CU-CHmCuMLvt(!;cg85^} zE_6n}l6_ipWxl=BRhPjHxDpDWQ^60sEE3z1{LoWoET85(eyMyUyHY-2Y=@sQlIc4R z!}Cr)jy@7CEO;f`=n$%Zx?}76sh0sDW+zj<`lxz6O`XX-La2cC@gbq1?EtAzJdPiN(WSaKvq9%Gm21b%hgWX8% zuJCdQydn8D9zhLvQZk~xy-h=-w?zt7kD9{g$QvQG5*IL7!SJe;o&%d7`!36cVXEM$ zd1bp;2B3I*4MQ0J0K21bJ!N$*qG+-*wD(-<&1MW-^&HX#Cjxq`d`%ostaJK$E{dS4 z>hJ`OPeq%=A5rzob^id>X4Mp!_zF(@J>TvTYcaV17nC*v&STR>CsmQl{{XU=2t+fM zTP=}k&Urr|tGwi_!?D&?fb5WVIwf0@;M&6D9Yul0z+19^ww&SFvyap)_ErD^Q#5Q8 z+YvqV3jN$cDC$4g9gV}&qUJUjAUJeXSo(suF>}L>r)5>u{Jb_wRHef5R2f;%aHw5j zc<7sMFJz_Gk451vp@72*g{||4G8Q|HyD`cv?bj(siq?AvNY|p4ABhTO=CiYpgmjg+ zx}ss4zv|eE)SlN~lk`HVM6rN1);C!n>LRntTa-1oQ>Vr1)OVNg={u$FhYYoh#nlXF zHgGmpF?>nYaCGSgy3r_EC>B$uT-Fj~l(86`H5qGe4T5~^T@8rERIJ7v&SP33Si#}x z78;Iq%FV4a3b3s{}f2 zr&SLqw6m7&*Od?8%&cAwz!zm~10G1S9daxSV{vS`Ml?sC?- z-mFd6juuVcgGX=1oL9hziH^Zx)D_-_eXkDrBaFua5> z40wjO`g8D(civG@t0#*ZbdI{e8?T3W!-vQ_DdKpoO1M($O@~F=xV#sLMkk8_S3z!d z)?)mxC6%cbl4 zT^a>3yDD^bhOwoG4lb6P$XlKp@j+!e^cv?t7u|9A3eA21Q4eq$nY^p~2g#+6eK7oh zf*tcxl)-K6<-Aw?N5o(_m3nx3t`Kb+E>+*e{xE9VtGjb6f5aXSLkGsH`7ZMq>-!S8 zEKqhE5CPEodnkG3?F6NX-qHRm@zG1m&gYB$RSqHJj7Jt=74BQQ<;7mN-pEdyxw(f) z+@U&f|J~cU6u(&-=X2fNo0DrnVTa z8P#HO?Q?SF<#8kstYVlM!H=0{xq#2lWzOMWR}%40C7T@Udk|_jhD)8x1OPiL@$St0 zi3`l+s0YJL6YQ~%3(tr+!0)<=?6&ZADc7L)Ij}sTeA}%0*y>+m7;%;2bO_H@EH>bx z$GP$v{S2OMl{{MxJ3DEyq_lc;x@Q4Ov37U_*}EB8_>4_TZzi3Fmeoexqg-UJ`gI$U znWWs{qT(JH{M6pi;d0)#L#c^#>3NxMH`7EHRF<*Dts%x^DE3sJ!rY~?>$(0&A@Tgf zsul*LXyQkj=xESZp-6 zDI;*OIBqcE-f6k>P2ZnowD@@r&1ZZgaI(vS){KhWVy$Qndw`p(d_NX^uT!&hJNu=H z;ncAs%^85xCWU9yqlm#g=4+tn2B39A!8Jooovs6k*1*L|HC-*#c3l|6;Cxk0jdNQ= z94y!M_g-g%;@FHc!-d_UAJSFKCm41Dr<*~}Ovdn0#Ve0@xbHhf$_FAZt8stTeW7u=J6R1YQ)~iOWw=ga+H9~z! zaSnTfv}jjwK4rE@u^ z?_?as&~2(an@bA+03y4bAOUR*X?4xf<7a|RdbFUE0lx{JtD*aK4l9Bcocc21XtYYr ztAj+#lxuMOWiKqX)SfK`+QJo4f_om?FRABJ*j-cMoEm_5uG~|IHZDC?)^MYP#J;5p z-k~HNWkX1$$YU^Ade~M}@@jdE5<=8KhE7sXpnq*Zja_LUFynsl7ZEjRP)CvcNa z2AMo-3>a&MU_|V(XkhCx$2MXF!S3S z=H>lYf5vz@1oGSxxomF@EYZ4MC7e;4z`%ThK53{{ZRL zXsuA1Amo1Z11-D8i6)dd|Bk3Iw)uD@|?!05s-3V^rB8vRd2N_Czep{H7DM zWpDWi*glX8WsUy;7*h_;$@+CqX)xR96E&rV?w4**q#;EN)`vdUAA((m`=|7{own-< z?B>T^@}hYV9Jyt=eriR#k7P!$fCH$OChZh^Y~YJd~Q<+@lV^xJTC?26DEe6SDV On6PV;O@d9$0sq Date: Thu, 27 Nov 2025 13:56:08 +0500 Subject: [PATCH 16/18] feat: Adding support Multimodal embedders. --- datasets/multimodal_movies.json | 9 +++++++++ tests/client/test_multimodal.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 datasets/multimodal_movies.json diff --git a/datasets/multimodal_movies.json b/datasets/multimodal_movies.json new file mode 100644 index 00000000..4f4210e3 --- /dev/null +++ b/datasets/multimodal_movies.json @@ -0,0 +1,9 @@ +[ +{"id":"287947","title":"Shazam!","poster":"https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg","overview":"A boy is given the ability to become an adult superhero in times of need with a single magic word.","release_date":1553299200}, +{"id":"299537","title":"Captain Marvel","poster":"https://image.tmdb.org/t/p/w1280/AtsgWhDnHTq68L0lLsUrCnM7TjG.jpg","overview":"The story follows Carol Danvers as she becomes one of the universe’s most powerful heroes when Earth is caught in the middle of a galactic war between two alien races. Set in the 1990s, Captain Marvel is an all-new adventure from a previously unseen period in the history of the Marvel Cinematic Universe.","release_date":1551830400}, +{"id":"522681","title":"Escape Room","poster":"https://image.tmdb.org/t/p/w1280/8yZAx7tlKRZIg7pJfaPhl00yHIQ.jpg","overview":"Six strangers find themselves in circumstances beyond their control, and must use their wits to survive.","release_date":1546473600}, +{"id":"166428","title":"How to Train Your Dragon: The Hidden World","poster":"https://image.tmdb.org/t/p/w1280/xvx4Yhf0DVH8G4LzNISpMfFBDy2.jpg","overview":"As Hiccup fulfills his dream of creating a peaceful dragon utopia, Toothless’ discovery of an untamed, elusive mate draws the Night Fury away. When danger mounts at home and Hiccup’s reign as village chief is tested, both dragon and rider must make impossible decisions to save their kind.","release_date":1546473600}, +{"id":"450465","title":"Glass","poster":"https://image.tmdb.org/t/p/w1280/svIDTNUoajS8dLEo7EosxvyAsgJ.jpg","overview":"In a series of escalating encounters, security guard David Dunn uses his supernatural abilities to track Kevin Wendell Crumb, a disturbed man who has twenty-four personalities. Meanwhile, the shadowy presence of Elijah Price emerges as an orchestrator who holds secrets critical to both men.","release_date":1547596800}, +{"id":"495925","title":"Doraemon the Movie: Nobita's Treasure Island","poster":"https://image.tmdb.org/t/p/w1280/cmJ71gdZxCqkMUvGwWgSg3MK7pC.jpg","overview":"The story is based on Robert Louis Stevenson's Treasure Island novel.","release_date":1520035200}, +{"id":"329996","title":"Dumbo","poster":"https://image.tmdb.org/t/p/w1280/279PwJAcelI4VuBtdzrZASqDPQr.jpg","overview":"A young elephant, whose oversized ears enable him to fly, helps save a struggling circus, but when the circus plans a new venture, Dumbo and his friends discover dark secrets beneath its shiny veneer.","release_date":1553644800}, +{"id":"299536","title":"Avengers: Infinity War","poster":"https://image.tmdb.org/t/p/w1280/7WsyChQLEftFiDOVTGkv3hFpyyt.jpg","overview":"As the Avengers and their allies have continued to protect the world from threats too large for any one hero to handle, a new danger has emerged from the cosmic shadows: Thanos. A despot of intergalactic infamy, his goal is to collect all six Infinity Stones, artifacts of unimaginable power, and use them to inflict his twisted will on all of reality. Everything the Avengers have fought for has led up to this moment - the fate of Earth and existence itself has never been more uncertain.","release_date":1524618000}] diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index 6fd3d41c..dd6d2e7e 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -19,7 +19,7 @@ # ---------------- Paths ---------------- # datasets folder (movies.json) DATASETS_DIR = Path(__file__).resolve().parent.parent.parent / "datasets" -MOVIES = json.loads((DATASETS_DIR / "movies.json").read_text()) +MOVIES = json.loads((DATASETS_DIR / "multimodal_movies.json").read_text()) # fixtures folder (images) FIXTURES_DIR = Path(__file__).resolve().parent.parent / "fixtures" From a6f505703e4b9641228cad59b01d5f7e14a669c8 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Thu, 27 Nov 2025 14:46:36 +0500 Subject: [PATCH 17/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index dd6d2e7e..9d50b8a8 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -151,9 +151,9 @@ def clear_indexes(self, client): try: task = client.index(index.uid).delete() client.wait_for_task(task.task_uid) - except (MeilisearchApiError, Exception): # pylint: disable=broad-exception-caught - # Ignore errors when deleting indexes (may not exist) - pass + except MeilisearchApiError as exc: + # Index may already have been deleted by another test run; log and continue. + print(f"Warning: failed to delete index {index.uid} during cleanup: {exc}") @pytest.fixture(scope="class", autouse=True) def setup_index(self, request): From f4984a99e0dfc49f3747f42f64dee51b9ebdbf90 Mon Sep 17 00:00:00 2001 From: awais qureshi Date: Thu, 27 Nov 2025 15:26:00 +0500 Subject: [PATCH 18/18] feat: Adding support Multimodal embedders. --- tests/client/test_multimodal.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/client/test_multimodal.py b/tests/client/test_multimodal.py index 9d50b8a8..fd1eac12 100644 --- a/tests/client/test_multimodal.py +++ b/tests/client/test_multimodal.py @@ -269,9 +269,8 @@ def test_text_and_image_query(self): master_yoda_base64 = load_image_base64("master-yoda.jpeg") response = self.search_client.index(INDEX_UID).search( - None, + query, { - "q": query, "media": { "textAndPoster": { "text": query,