From 6242bdfd620207c4d1f413d3b601809e66d7eb64 Mon Sep 17 00:00:00 2001 From: Michael Aydinbas Date: Wed, 12 Oct 2022 23:40:11 +0200 Subject: [PATCH] Dev (#74) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add flake8 config to pyproject.toml, add flake8-docstrings plugin to repo, add .pylintrc config from Google * add flake8 config, remove flake9 and use normal flake8 with own .flake8 config file * first functions for downloading cube files * update * no verification * pylint fixes * add simple test cases for _handle_status_code * update line length from 80 to 120, change indentation from 2 to 4 * activate more rules * fix pylint errors * fix pylint errors * fix missing dependencies * fix mypy errors * remove unncessary code * fix pylint issues * fix pylint config issues * add missing dependencies to .toml * fix import error * fix jsondecode error * add demo notebook for tablefile endpoint * fix return type issue * adjust error message for http_helper * fix column header issues * remove unncessary cut footer function * integrate PR feedback * update unit tests * refactor http_helper module * set area to optional parameter * fix typo * debug failing unit tests * debug failing unit tests * add .env * restore config_loader.py * integrate feedback from PR * integrate PR feedback * remove dotenv, use configparser instead (standard library) implement a user config using configparser module upload created doc as artifact update module docstring * merge tablefile and cubefile PR and use latest config module * [#43] Cache downloaded data; Implement feature with decorator; added tests * fix pylint errors; refactor code so that common code for downloading data is now in data.py module and table.py and cube.py only hold specific parsing logic * remove helper methods from get_data, move logic to the individual moduls * added clean_cache function function that removes all files from cache directory or only one, specified by name. Likely to be moved to cache.py, once this is on dev * Added ToDos, Unified query param comparison * Updated destatis status check #45 Incorporated further response codes and response type checks. Output for Code 0 tbd * Merged updates from personal branch * Added http 5xx error check, added destatis status tests * Updated urls, unified Destatis type-style * Added generic response creation for generic http_helper test * Updated type hints, made contents rely on functionality from http_helpers * Merged changes from draft branch, including pylint fixes, Exception and Error clarification. Also moved clean_cache function. Some ToDos still left, #45. * fixed linting issues, including inconsistent returns. * hotfix of overlooked error #45. * narrowed the catched exception * Updated clean_cache, updated http_helper * Fix lint issue with assert * mypy fixes for ci/cd pipeline #45 * Updated clean_cache function, added a first version of a test * Fixed linting issues, #45 * updated with remarks from pull request #45, #46 * updated logging due to linting errors W1203 * Improved test coverage, update temporary test directory for user names with spaces and non-latin characters, added mocked API call, added mocked create_settings call, moved test_http_helper, added TODOs for the future, #45 * Added mock as dependency (as otherwise CI/CD understandably fails), #45 * Also update project.lock, forgot it before, #45 * Fixed missing config dict error (in remote CI/CD) by mocking it, moved load_config into function, #45 * Fixed missing config dict error (in remote CI/CD) by mocking it, moved load_config into function, #45 * Fixed safety issues (mako and dparse) by updating poetry.lock, #45 * Fixed linting issue: timeout for requests.get added, #45 * Feat/update cube format (#67) * update cube module to handle cubes with more than one value variable in DQI. Add correct types to value columns so they are no longer of type object. * introduce Table und Cube class for coherent and simplified user interface; both classes download data with get_data() and provide access to data via .data and access to metadata via .metadata. Cube has .cube in addition for special cube metadata * reimplement cache for download data from endpoint * use compression for caching data * new tests for cube module * add tests for cache decorator that is called with functions that don't use the data endpoint (expect no caching) * find endpoint (#66) * simple example of Statistic class * first version of parsing cube; added pandas and notebook to dependencies * adding find and hierarchy * adding find and hierarchy * adding find and hierarchy * adding find and hierarchy * created results class * created results class * created results class * updated Results class with get_metadata for statistics and variables * updated string to f-strings according to pylint * solved pylint issues * solved pylint issues * solved pylint issues * several improvements based on feedback for PR #66 * several improvements based on feedback for PR #66 * several improvements based on feedback for PR #66 * modified docstring * modified docstring Co-authored-by: Michael Aydinbas * Feat/refactor cache (#68) * refactor cache; no longer a decorator function but part of the new `load_data` function. This function checks if there is a hit in cache and loads the data from there, or load the data per request from Destatis. The new cache function stores data under `///hash()/.zip` so different params will be cached differently `load_data` has a new parameter `as_json`, which defaults to `False`, so that the response is returned as raw text. However, setting `as_json=True` will return the response as a parsed JSON dict. * Feature/#48 hello world and profile endpoint (#69) * added clean_cache function function that removes all files from cache directory or only one, specified by name. Likely to be moved to cache.py, once this is on dev * Added ToDos, Unified query param comparison * Updated destatis status check #45 Incorporated further response codes and response type checks. Output for Code 0 tbd * Merged updates from personal branch * Added http 5xx error check, added destatis status tests * Updated urls, unified Destatis type-style * Added generic response creation for generic http_helper test * Updated type hints, made contents rely on functionality from http_helpers * merged current dev into feature branch. * Merged changes from draft branch, including pylint fixes, Exception and Error clarification. Also moved clean_cache function. Some ToDos still left, #45. * fixed linting issues, including inconsistent returns. * hotfix of overlooked error #45. * narrowed the catched exception * Updated clean_cache, updated http_helper * Fix lint issue with assert * mypy fixes for ci/cd pipeline #45 * Updated clean_cache function, added a first version of a test * Fixed linting issues, #45 * updated with remarks from pull request #45, #46 * updated logging due to linting errors W1203 * Added most of the methods from helloworld and profile endpoint, without tests so far, #48 * Modified pre-commit hook (set black profile for isort) to avoid isort and black conflicting changes * Added most of the methods from helloworld and profile endpoint - this time for real, without tests so far, #48 * Merged current dev into feature branch, #48 * Updated line-length argument for isort, added tests for helloworld and profile, #48 * merged dev again and fixed merge conflicts for automatic merge, #48 * Implemented removeresult + test, #48. * updated profile password test, #48, still isort issues seem ominous. * fixed isort in run tests to same line-length as used in pre-commit-config to avoid reoccuring conflicts in profile, #48, see also #60. * Fix W0707 raise ... from, #48. * Fix mypy type-hinting error, #48. * Minor requested updates, #48. * fixed mypy type, #48. * isort toml configuration commit (check line-length specification at only one point) * fixed line-length -> line_length * Added notebooks for helloworld and profile endpoint functions, updated get_data_from_endpoint to load_data as requested, #48. * fixed profile function text outputs, fixed tests, #48. * Added casting for mypy/ ci/cd, #48 * Feat/improve cache (#71) * refactor cache to work properly for jobs: no longer cache endpoint and method but only name as identifier, so a cache hit happens when the unique name is found in the cache data, irrelevant of the endpoint or method, thus working for data/resultfile and data/tablefile * normalize an object name so we can strip off the job-id * fix cicd * fix cicd * fix isort settings * fix mypy issues * add comments * refactor all tests to use python-mock (#72) * refactor all tests to use python-mock * update mocks * Feature/#40 automatic job query (#70) * added clean_cache function function that removes all files from cache directory or only one, specified by name. Likely to be moved to cache.py, once this is on dev * Added ToDos, Unified query param comparison * Updated destatis status check #45 Incorporated further response codes and response type checks. Output for Code 0 tbd * Merged updates from personal branch * Added http 5xx error check, added destatis status tests * Updated urls, unified Destatis type-style * Added generic response creation for generic http_helper test * Updated type hints, made contents rely on functionality from http_helpers * merged current dev into feature branch. * Merged changes from draft branch, including pylint fixes, Exception and Error clarification. Also moved clean_cache function. Some ToDos still left, #45. * fixed linting issues, including inconsistent returns. * hotfix of overlooked error #45. * narrowed the catched exception * Added notes w\ Felix regarding automatic job support, #40. * Notebook for interaction & workflow with jobs * integrating jobs into http_helper.py * Simplified if selections, added TODO comments, added catches for fail cases, #40 * splitting up jobs function and writing first tests for user input * work in progress * changes in jobs params for faster tests * Changes in job due to http_helper #43 * refactor: Updated & added documentation, identified Windows input issue, #40. * Commit before merge of dev * commit before PR * last working commit, #40. * seem to have fixed issue with destatis response, however, currently am timed out and can not finally check, #40. * Fixed new implementation and updated jobs notebook. Code needs clean-up & tests need to be updated (for input), #40. * changes with respect to first PR * Removed user input, always starting job, test update, currently on timeout * pylint changes * commit before merge * Code quality http_helper.py and tests * pylint uand black changes * removing _generic_status_dict() * Changes due to bandit * Changes due to mypy * refactor load_data to handle jobs * fix tests * Removed one old comment, #40 Co-authored-by: MarcoHuebner <57489799+MarcoHuebner@users.noreply.github.com> Co-authored-by: Michael Aydinbas * update dependencies * rename package to pystatis * import all main functions into pystatis main namespace * fix failing tests * add authors and maintainers * fix pyproject.toml * Feat/56 57 final readme (#73) * Updating README; add sections about Installation and first setup * updated readme with main features, how to use and how to contribute. * fix tests * added new functions cube, table Co-authored-by: dpleus Co-authored-by: frederik9 Co-authored-by: codehering <64325723+codehering@users.noreply.github.com> Co-authored-by: MarcoHuebner <57489799+MarcoHuebner@users.noreply.github.com> Co-authored-by: Daniel Pleus <40323679+dpleus@users.noreply.github.com> Co-authored-by: Felix Schmitz <33942086+felixschmitz@users.noreply.github.com> Co-authored-by: dpleus --- .env | 2 + .github/workflows/run-tests.yaml | 27 +- .gitignore | 4 + .pre-commit-config.yaml | 9 +- .pylintrc | 54 +- LICENSE.txt | 7 + README.md | 151 +- assets/structure.png | Bin 0 -> 211484 bytes mypy.ini | 15 + nb/cache.ipynb | 91 + nb/cube.ipynb | 118 ++ nb/find.ipynb | 436 ++++ nb/helloworld.ipynb | 70 + nb/jobs.ipynb | 543 +++++ nb/parse_cube.ipynb | 721 +++++++ nb/profile.ipynb | 56 + nb/table.ipynb | 556 +++++ poetry.lock | 1996 +++++++++++++++--- pyproject.toml | 51 +- src/pygenesis/__init__.py | 10 - src/pystatis/__init__.py | 30 + src/pystatis/cache.py | 190 ++ src/pystatis/config.py | 155 ++ src/pystatis/cube.py | 201 ++ src/pystatis/custom_exceptions.py | 7 + src/pystatis/data/evas.csv | 306 +++ src/pystatis/find.py | 280 +++ src/pystatis/helloworld.py | 49 + src/pystatis/http_helper.py | 301 +++ src/pystatis/profile.py | 73 + src/pystatis/table.py | 49 + tests/rsc/data.zip | Bin 0 -> 418523 bytes tests/test_cache.py | 128 ++ tests/test_config.py | 128 ++ tests/test_cube.py | 166 ++ tests/test_helloworld.py | 45 + tests/test_http_helper.py | 194 ++ tests/test_profile.py | 74 + tests/{test_pygenesis.py => test_version.py} | 2 +- 39 files changed, 6866 insertions(+), 429 deletions(-) create mode 100644 .env create mode 100644 LICENSE.txt create mode 100644 assets/structure.png create mode 100644 mypy.ini create mode 100644 nb/cache.ipynb create mode 100644 nb/cube.ipynb create mode 100644 nb/find.ipynb create mode 100644 nb/helloworld.ipynb create mode 100644 nb/jobs.ipynb create mode 100644 nb/parse_cube.ipynb create mode 100644 nb/profile.ipynb create mode 100644 nb/table.ipynb delete mode 100644 src/pygenesis/__init__.py create mode 100644 src/pystatis/__init__.py create mode 100644 src/pystatis/cache.py create mode 100644 src/pystatis/config.py create mode 100644 src/pystatis/cube.py create mode 100644 src/pystatis/custom_exceptions.py create mode 100644 src/pystatis/data/evas.csv create mode 100644 src/pystatis/find.py create mode 100644 src/pystatis/helloworld.py create mode 100644 src/pystatis/http_helper.py create mode 100644 src/pystatis/profile.py create mode 100644 src/pystatis/table.py create mode 100644 tests/rsc/data.zip create mode 100644 tests/test_cache.py create mode 100644 tests/test_config.py create mode 100644 tests/test_cube.py create mode 100644 tests/test_helloworld.py create mode 100644 tests/test_http_helper.py create mode 100644 tests/test_profile.py rename tests/{test_pygenesis.py => test_version.py} (62%) diff --git a/.env b/.env new file mode 100644 index 0000000..f6f196f --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +PYGENESIS_USERNAME= +PYGENESIS_PASSWORD= diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index f9cf44d..85edd1a 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10"] + python-version: ["3.9", "3.10"] os: [ubuntu-18.04, macOS-latest, windows-latest] steps: @@ -39,7 +39,7 @@ jobs: poetry install - name: Run tests run: | - poetry run pytest --cov=pygenesis tests + poetry run pytest --cov=pystatis tests code-quality: strategy: fail-fast: false @@ -62,7 +62,7 @@ jobs: - name: Run black run: poetry run black . --check - name: Run isort - run: poetry run isort . --check-only --profile black + run: poetry run isort . --check-only - name: Run flake8 run: poetry run flake8 src --output-file=flake8_report.txt - name: Run pylint @@ -73,24 +73,3 @@ jobs: run: poetry run safety check - name: Run mypy run: poetry run mypy src - generate-doc: - strategy: - fail-fast: false - matrix: - python-version: [3.10.2] - poetry-version: [1.1.13] - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Run poetry image - uses: abatilo/actions-poetry@v2.0.0 - with: - poetry-version: ${{ matrix.poetry-version }} - - name: Install dependencies - run: poetry install - - name: Run pdoc3 - run: poetry run pdoc3 ./src/pygenesis --html -o docs --skip-errors diff --git a/.gitignore b/.gitignore index b6e4761..6ed180a 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,7 @@ dmypy.json # Pyre type checker .pyre/ + + +# VSC +.vscode diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 012fa98..eed79bb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,15 +11,16 @@ repos: args: [--markdown-linebreak-ext=md] - id: check-added-large-files - id: check-merge-conflict - - repo: https://github.com/psf/black - rev: 22.3.0 - hooks: - - id: black - repo: https://github.com/pycqa/isort rev: 5.10.1 hooks: - id: isort name: isort (python) + args: ["--profile", "black", "--filter-files", "--line-length", "80"] + - repo: https://github.com/psf/black + rev: 22.3.0 + hooks: + - id: black - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.14.2 hooks: diff --git a/.pylintrc b/.pylintrc index 9cdfb9c..9b33a96 100644 --- a/.pylintrc +++ b/.pylintrc @@ -12,7 +12,7 @@ ignore=third_party # Files or directories matching the regex patterns are skipped. The regex # matches against base names, not paths. -ignore-patterns= +ignore-patterns=test_.* # Pickle collected data for later comparisons. persistent=no @@ -52,35 +52,24 @@ confidence= # --disable=W" disable=abstract-method, apply-builtin, - arguments-differ, - attribute-defined-outside-init, backtick, bad-option-value, basestring-builtin, buffer-builtin, c-extension-no-member, - consider-using-enumerate, cmp-builtin, cmp-method, coerce-builtin, coerce-method, delslice-method, div-method, - duplicate-code, - eq-without-hash, execfile-builtin, file-builtin, filter-builtin-not-iterating, fixme, getslice-method, - global-statement, hex-method, idiv-method, - implicit-str-concat-in-sequence, - import-error, - import-self, - import-star-module-level, - inconsistent-return-statements, input-builtin, intern-builtin, invalid-str-codec, @@ -88,11 +77,6 @@ disable=abstract-method, long-builtin, long-suffix, map-builtin-not-iterating, - misplaced-comparison-constant, - missing-function-docstring, - metaclass-assignment, - next-method-called, - next-method-defined, no-absolute-import, no-else-break, no-else-continue, @@ -109,7 +93,6 @@ disable=abstract-method, old-octal-literal, old-raise-syntax, parameter-unpacking, - print-statement, raising-string, range-builtin-not-iterating, raw_input-builtin, @@ -124,28 +107,15 @@ disable=abstract-method, suppressed-message, sys-max-int, too-few-public-methods, - too-many-ancestors, - too-many-arguments, - too-many-boolean-expressions, - too-many-branches, - too-many-instance-attributes, - too-many-locals, - too-many-nested-blocks, - too-many-public-methods, - too-many-return-statements, - too-many-statements, - trailing-newlines, + trailing-whitespace, unichr-builtin, unicode-builtin, unnecessary-pass, unpacking-in-except, - useless-else-on-loop, - useless-object-inheritance, - useless-suppression, using-cmp-argument, wrong-import-order, xrange-builtin, - zip-builtin-not-iterating, + zip-builtin-not-iterating [REPORTS] @@ -155,12 +125,6 @@ disable=abstract-method, # mypackage.mymodule.MyReporterClass. output-format=text -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". This option is deprecated -# and it will be removed in Pylint 2.0. -files-output=no - # Tells whether to display a full report or only the messages reports=no @@ -227,7 +191,7 @@ method-rgx=(?x)^(?:(?P_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase # Regular expression which should only match function or class names that do # not require a docstring. -no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$ +no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test|^_.*)$ # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. @@ -265,7 +229,7 @@ generated-members= [FORMAT] # Maximum number of characters on a single line. -max-line-length=80 +max-line-length=120 # TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt # lines made too long by directives to pytype. @@ -279,12 +243,6 @@ ignore-long-lines=(?x)( # else. single-line-if-stmt=yes -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check= - # Maximum number of lines in a module max-module-lines=99999 @@ -292,7 +250,7 @@ max-module-lines=99999 # spaces. Google's externaly-published style guide says 4, consistent with # PEP 8. Here, we use 2 spaces, for conformity with many open-sourced Google # projects (like TensorFlow). -indent-string=' ' +indent-string=' ' # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..b3cc99b --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright © 2022 Michael Aydinbas + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 7fdd7b1..b40f0fe 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,163 @@ -# pygenesis +# ``pystatis`` -pygenesis is a Python wrapper for the GENESIS web service interface (API). +```pystatis``` is a Python wrapper for the GENESIS web service interface (API). It simplifies accessing the data from the German statistical federal office. -> The GENESIS-Online database of the Federal Statistical Office contains a wide range of tables which you can configure according to your needs. As a matter of fact, GENESIS-Online can be used free of charge and without registering under the "Data Licence Germany - Namensnennung - Version 2.0". +The main features are: -See the official documentation [here](https://www.destatis.de/EN/Service/OpenData/api-webservice.html). +- **Simplified access** to the API. No more need to write cumbersome API calls. +- **Credential management** removes need to manually add credentials. +- **Integrated workflow** enables an end-to-end process from finding the relevant data to download it. +- **Pandas support** instead of manually parsing results. +- **Caching** to enable productive work despite strict query limits. +- **Starting and handling background jobs** for datasets that are to big to be downloaded directly from GENESIS. -## Setup +To learn more about GENESIS refer to the official documentation [here](https://www.destatis.de/EN/Service/OpenData/api-webservice.html). + +## Installation You can install the package via ```bash -$ pip install pygenesis +$ pip install pystatis +``` + +If everything worked out correctly, you should be able to import ``pystatis`` like this + +```python +import pystatis as pystat + +print("Version:", pystat.__version__) +``` + +## Get started + +To be able to use the web service/API of GENESIS-Online, you have to be a registered user. You can create your user [here](https://www-genesis.destatis.de/genesis/online?Menu=Anmeldung). + +Once you have a registered user, you can use your username and password as credentials for authentication against the GENESIS-Online API. + +To avoid entering your credentials each time you use ``pystatis``, your credentials will be stored locally with the `init_config()` helper function. This function accepts both a `username` and `password` argument and stores your credentials in a configuration file named `config.ini` that is stored under `/.pystatis/config.ini` by default. You can change this path with the optional `config_dir` argument. + +So before you can use ``pystatis`` you have to execute the following code **once**: + +```python +from pystatis import init_config + +init_config(username="myusername", password="mypassword") ``` -If everything worked out correctly, you should be able to import pygenesis like this +After executing this code you should have a new `config.ini` file under the `/.pystatis` directory. + +Each time ``pystatis`` is communicating with GENESIS-Online via the API, it is automatically using the stored credentials in this `config.ini`, so you don't have to specify them again. In case of updated credentials, you can either run `init_config()` again or update the values directly in the `config.ini` file. + +GENESIS-Online provides a `helloworld` endpoint that can be used to check your credentials: ```python -import pygenesis as pgen +from pystatis import logincheck -print("Version:", pgen.__version__) +logincheck() +>>> '{"Status":"Sie wurden erfolgreich an- und abgemeldet!","Username":"ASFJ582LJ"}' ``` +If you can see a response like this, your setup is complete and you can start downloading data. + +For more details, please study the provided sample notebook for [cache](./nb/cache.ipynb). + +## How to use + +### The GENESIS data model + +The Genesis data structure consists of multiple elements as summarized in the image below. +![Structure](assets/structure.png) + +This package currently supports retrieving the following data types: + +- Cubes: Multi-dimensional data objects +- Tables: Derivatives of cubes that are already packaged into logical units + +### Find the right data + +``pystatis`` offers the `Find` class to search for any piece of information with GENESIS. Behind the scene it's using the `find` endpoint. + +Example: + +```python +from pystatis import Find + +results = Find("Rohöl") # Initiates object that contains all variables, statistics, tables and cubes +results.run() # Runs the query +results.tables.df # Results for tables +results.tables.get_code([1,2,3]) # Gets the table codes, e.g. for downloading the table +results.tables.get_metadata([1,2]) # Gets the metadata for the table +``` + +A complete overview of all use cases is provided in the [sample notebook.](/nb/find.py) + +### Download data + +Data can be downloaded in to forms: as tables and as cubes. Both interfaces have been aligned to be as close as possible to each other. + +Example for downloading a Table: + +```python +from pystatis import Table + +t = Table(name="21311-0001") # data is not yet downloaded +t.get_data() # Only now the data is either fetched from GENESIS or loaded from cache. If the data is downloaded from online, it will be also cached, so next time the data is loaded from cache. +t.data # a pandas data frame +``` + +Example for downloading a Cube: + +```python +from pystatis import Cube + +c = Cube(name="22922KJ1141") # data is not yet downloaded +c.get_data() # Only now the data is either fetched from GENESIS or loaded from cache. If the data is downloaded from online, it will be also cached, so next time the data is loaded from cache. +c.data # a pandas data frame +``` + +For more details, please study the provided sample notebook for [tables](./nb/table.ipynb) and [cubes](./nb/cube.ipynb). + +### Clear Cache + +When a cube or table is queried, it will be put into cache automatically. The cache can be cleared using the following function: + +```python +from pystatis import clear_cache + +clear_cache("21311-0001") # only deletes the data for the object with the specified name +clear_cache() # deletes the complete cache +``` + +## License + +Distributed under the MIT License. See `LICENSE.txt` for more information. + +## Roadmap + +A few ideas we should implement in the maybe-near future: + +- Improve Table parsing. Right now, the parsing is really simple and we should align the cube and table format so that the data frame for tables is more convenient to use. +- Create a source code documentation with Sphinx or similar tools. +- Mechanism to download data that is newer than the cached version. Right now, once data is cached, it is always retrieved from cache no matter if there is a newer version online. However, this could be quite challenging as the GENESIS API is really bad in providing a good and consistent field for the last update datetime. +- Improve Table and Cube metadata so the user can look up the variables contained in the dataset and for each variable the values that this variable can have. +- Understand and support time series. + +## How to contribute? + +Contributions to this project are highly appreciated! You can either contact the maintainers or directly create a pull request for your proposed changes: + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/`) +3. Commit your changes (`git commit -m 'Added NewFeature'`) +4. Push to remote (`git push origin feature/`) +5. Open a Pull Request to be merged with dev + ## Developer information To contribute to this project, please follow these steps: -1. Install [poetry](https://python-poetry.org/docs/). We recommend installing `poetry` via `pipx` which gives you a global `poetry` command in an isolated virtual environment. +1. Install [poetry](https://python-poetry.org/docs/). We recommend installing `poetry` via [pipx](https://pypa.github.io/pipx/) which gives you a global `poetry` command in an isolated virtual environment. 2. Clone the repository via git. 3. Change into the project root directory. 4. Run `poetry install` to create the virtual environment within `poetry`'s cache folder (run `poetry env info` to see the details of this new virtual environment). `poetry` has installed all dependencies for you, as well as the package itself. diff --git a/assets/structure.png b/assets/structure.png new file mode 100644 index 0000000000000000000000000000000000000000..02d899fab35f623196899b037bda58e02e28c9a7 GIT binary patch literal 211484 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�mGZl@Vo=4!)-{0}aW9|t+Z-e3V79Ol^f^rr-V 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 h&OUt+~looCA}eYA@qgHQmYC?c2+wt(L^ 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 literal 0 HcmV?d00001 diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..dd2284f --- /dev/null +++ b/mypy.ini @@ -0,0 +1,15 @@ +# Global options: + +[mypy] +python_version = 3.9 +warn_return_any = True +warn_unused_configs = True +show_error_codes=True + +# Per-module options: + +[mypy-pandas] +ignore_missing_imports = True + +[mypy-requests] +ignore_missing_imports = True diff --git a/nb/cache.ipynb b/nb/cache.ipynb new file mode 100644 index 0000000..474b9c6 --- /dev/null +++ b/nb/cache.ipynb @@ -0,0 +1,91 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "6a0fdd61", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "import pystatis\n", + "from pystatis import Cube, Table, init_config, clear_cache" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c4b965e", + "metadata": {}, + "outputs": [], + "source": [ + "# only run this if you haven't done so earlier\n", + "# init_config()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "601075cc", + "metadata": {}, + "outputs": [], + "source": [ + "# first, let's download two data sets\n", + "# these will be cached under your \n", + "Cube(name=\"22922KJ1141\").get_data()\n", + "Table(name=\"21311-0001\").get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa6c2498", + "metadata": {}, + "outputs": [], + "source": [ + "# You can now test the clear_cache function!\n", + "# Either with a particular name\n", + "clear_cache(\"21311-0001\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "836b9b2b", + "metadata": {}, + "outputs": [], + "source": [ + "# Or without a name to clear the whole cache at once\n", + "clear_cache()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/nb/cube.ipynb b/nb/cube.ipynb new file mode 100644 index 0000000..ef9584e --- /dev/null +++ b/nb/cube.ipynb @@ -0,0 +1,118 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "25e9250e", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "from pystatis import Cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b28edfd3", + "metadata": {}, + "outputs": [], + "source": [ + "c = Cube(name=\"22922KJ1141\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ead4f13c", + "metadata": {}, + "outputs": [], + "source": [ + "c.get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac68d224", + "metadata": {}, + "outputs": [], + "source": [ + "c.name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bec2cdb", + "metadata": {}, + "outputs": [], + "source": [ + "for k,v in c.cube.items():\n", + " print(\"Cube section: \", k)\n", + " print(v)\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e69759d9", + "metadata": {}, + "outputs": [], + "source": [ + "c.data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b57fbeab", + "metadata": {}, + "outputs": [], + "source": [ + "c.data.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2f260b3", + "metadata": {}, + "outputs": [], + "source": [ + "from pprint import pprint \n", + "\n", + "pprint(c.metadata)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/nb/find.ipynb b/nb/find.ipynb new file mode 100644 index 0000000..80b9447 --- /dev/null +++ b/nb/find.ipynb @@ -0,0 +1,436 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "from pystatis import Find" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can initiate a find object using a search query, after you execute .run() it will automatically find the data (tables, variables, statistics, ...)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "results = Find(\"Rohöl\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "##### Results #####\n", + "----------------------------------------\n", + "# Number of tables: 16\n", + "# Preview:\n", + "| | Code | Content | Time |\n", + "|---:|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------------------|:-------|\n", + "| 0 | 42131-0003 | Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Jahre, Güterverzeichnis (9-Steller) | |\n", + "| 1 | 42131-0004 | Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Quartale, Güterverzeichnis (9-Steller) | |\n", + "| 2 | 51000-0005 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warensystematik | |\n", + "| 3 | 51000-0006 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warensystematik | |\n", + "| 4 | 51000-0009 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (4-/6-Steller) | |\n", + "----------------------------------------# Number of statistics: 3\n", + "# Preview:\n", + "| | Code | Content | Cubes | Information |\n", + "|---:|-------:|:---------------------------------------------------|--------:|:--------------|\n", + "| 0 | 42131 | Vierteljährliche Produktionserhebung i.Verarb.Gew. | 18 | true |\n", + "| 1 | 51000 | Außenhandel | 79 | true |\n", + "| 2 | 61241 | Index der Erzeugerpreise gewerblicher Produkte | 18 | true |\n", + "----------------------------------------\n", + "# Number of variables: 6\n", + "# Preview:\n", + "| | Code | Content | Type | Values | Information |\n", + "|---:|:-------|:---------------------------------------------------|:---------|---------:|:--------------|\n", + "| 0 | GP02A9 | GP2002 (9-Steller (Arten)) | sachlich | 6147 | true |\n", + "| 1 | GP09A9 | GP2009 (9-Steller (Arten)) | sachlich | 5250 | true |\n", + "| 2 | GP09N1 | GP2009 (ausgewählte 9-Steller): Gewerbl. Produkte | sachlich | 1350 | false |\n", + "| 3 | GP19A9 | GP2019 (9-Steller (Arten)) | sachlich | 5018 | true |\n", + "| 4 | WAM6 | Warenverzeichnis Außenhandelsstatistik (6-Steller) | sachlich | 6339 | true |\n", + "----------------------------------------\n", + "# Number of cubes: 16\n", + "# Preview:\n", + "| | Code | Content | State | Time | LatestUpdate | Information |\n", + "|---:|:-----------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------|:--------------------------------|:---------------------|:--------------|\n", + "| 0 | 42131BJ003 | Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2002 (9-Steller (Arten)), Deutschland insgesamt, Jahr | vollständig mit Werten | 2002-2008 | 10.07.2019 11:54:06h | false |\n", + "| 1 | 42131BJ103 | Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2009 (9-Steller (Arten)), Deutschland insgesamt, Jahr | vollständig mit Werten | 2009-2018 | 16.08.2021 16:30:29h | false |\n", + "| 2 | 42131BJ203 | Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2019 (9-Steller (Arten)), Deutschland insgesamt, Jahr | vollständig mit Werten | 2019-2021 | 29.04.2022 08:02:58h | false |\n", + "| 3 | 42131BV003 | Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2002 (9-Steller (Arten)), Deutschland insgesamt, Quartale, Jahr | vollständig mit Werten | 1. Quartal 2002-4. Quartal 2008 | 10.07.2019 11:51:58h | false |\n", + "| 4 | 42131BV103 | Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2009 (9-Steller (Arten)), Deutschland insgesamt, Quartale, Jahr | vollständig mit Werten | 1. Quartal 2009-4. Quartal 2018 | 16.08.2021 16:32:10h | false |\n", + "----------------------------------------\n", + "# Use object.tables, object.statistics, object.variables or object.cubes to get all results.\n", + "----------------------------------------\n" + ] + } + ], + "source": [ + "results.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "| | Code | Content | Time |\n", + "|---:|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------------------|:-------|\n", + "| 0 | 42131-0003 | Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Jahre, Güterverzeichnis (9-Steller) | |\n", + "| 1 | 42131-0004 | Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Quartale, Güterverzeichnis (9-Steller) | |\n", + "| 2 | 51000-0005 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warensystematik | |\n", + "| 3 | 51000-0006 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warensystematik | |\n", + "| 4 | 51000-0009 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (4-/6-Steller) | |\n", + "| 5 | 51000-0010 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (4-/6-Steller), Länder | |\n", + "| 6 | 51000-0011 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (4-/6-Steller) | |\n", + "| 7 | 51000-0012 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (4-/6-Steller), Länder | |\n", + "| 8 | 51000-0013 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warenverzeichnis (8-Steller) | |\n", + "| 9 | 51000-0014 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warenverzeichnis (8-Steller) | |\n", + "| 10 | 51000-0015 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (8-Steller) | |\n", + "| 11 | 51000-0016 | Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (8-Steller), Länder | |\n", + "| 12 | 51000-0017 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (8-Steller) | |\n", + "| 13 | 51000-0018 | Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (8-Steller), Länder | |\n", + "| 14 | 61241-0003 | Erzeugerpreisindex gewerblicher Produkte: Deutschland, Jahre, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen) | |\n", + "| 15 | 61241-0004 | Erzeugerpreisindex gewerblicher Produkte: Deutschland, Monate, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen) | |" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.tables" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CodeContentTime
042131-0003Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Jahre, Güterverzeichnis (9-Steller)
142131-0004Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Quartale, Güterverzeichnis (9-Steller)
251000-0005Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warensystematik
351000-0006Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warensystematik
451000-0009Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (4-/6-Steller)
551000-0010Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (4-/6-Steller), Länder
651000-0011Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (4-/6-Steller)
751000-0012Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (4-/6-Steller), Länder
851000-0013Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warenverzeichnis (8-Steller)
951000-0014Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warenverzeichnis (8-Steller)
1051000-0015Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (8-Steller)
1151000-0016Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (8-Steller), Länder
1251000-0017Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (8-Steller)
1351000-0018Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (8-Steller), Länder
1461241-0003Erzeugerpreisindex gewerblicher Produkte: Deutschland, Jahre, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen)
1561241-0004Erzeugerpreisindex gewerblicher Produkte: Deutschland, Monate, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen)
\n", + "
" + ], + "text/plain": [ + " Code Content Time\n", + "0 42131-0003 Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Jahre, Güterverzeichnis (9-Steller) \n", + "1 42131-0004 Produktionswert, -menge, -gewicht und Unternehmen der Vierteljährlichen Produktionserhebung: Deutschland, Quartale, Güterverzeichnis (9-Steller) \n", + "2 51000-0005 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warensystematik \n", + "3 51000-0006 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warensystematik \n", + "4 51000-0009 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (4-/6-Steller) \n", + "5 51000-0010 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (4-/6-Steller), Länder \n", + "6 51000-0011 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (4-/6-Steller) \n", + "7 51000-0012 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (4-/6-Steller), Länder \n", + "8 51000-0013 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Warenverzeichnis (8-Steller) \n", + "9 51000-0014 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Warenverzeichnis (8-Steller) \n", + "10 51000-0015 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Land, Warenverzeichnis (8-Steller) \n", + "11 51000-0016 Aus- und Einfuhr (Außenhandel): Deutschland, Jahre, Ware (8-Steller), Länder \n", + "12 51000-0017 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Land, Warenverzeichnis (8-Steller) \n", + "13 51000-0018 Aus- und Einfuhr (Außenhandel): Deutschland, Monate, Ware (8-Steller), Länder \n", + "14 61241-0003 Erzeugerpreisindex gewerblicher Produkte: Deutschland, Jahre, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen) \n", + "15 61241-0004 Erzeugerpreisindex gewerblicher Produkte: Deutschland, Monate, Güterverzeichnis (GP2009 2-/3-/4-/5-/6-/9-Steller/ Sonderpositionen) " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.tables.df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['42131-0004', '51000-0005', '51000-0006']" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.tables.get_code([1,2,3])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TABLES 42131-0004 - 1\n", + "Name:\n", + "Vierteljährliche Produktionserhebung i.Verarb.Gew.\n", + "--------------------\n", + "Columns:\n", + "Quartale\n", + "--------------------\n", + "Rows:\n", + "GP2019 (9-Steller (Arten))\n", + "----------------------------------------\n", + "TABLES 51000-0005 - 2\n", + "Name:\n", + "Außenhandel\n", + "--------------------\n", + "Columns:\n", + "Ausfuhr: Gewicht\n", + "Ausfuhr: Wert\n", + "Ausfuhr: Wert (US-Dollar)\n", + "Einfuhr: Gewicht\n", + "Einfuhr: Wert\n", + "Einfuhr: Wert (US-Dollar)\n", + "--------------------\n", + "Rows:\n", + "Warenverzeichnis Außenhandelsstatistik (2-Steller)\n", + "----------------------------------------\n" + ] + } + ], + "source": [ + "results.tables.get_metadata([1,2])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CUBES 42131BJ103 - 1\n", + "Name:\n", + "Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2009 (9-Steller (Arten)), Deutschland insgesamt, Jahr\n", + "--------------------\n", + "Content:\n", + "GP2009 (9-Steller (Arten))\n", + "Deutschland insgesamt\n", + "Jahr\n", + "----------------------------------------\n", + "CUBES 42131BJ203 - 2\n", + "Name:\n", + "Vierteljährliche Produktionserhebung i.Verarb.Gew., Wert der zum Absatz bestimmten Produktion, Menge der zum Absatz bestimmten Produktion (BM), Gewicht der zum Absatz bestimmten Produktion, Gewicht der zum Absatz bestimmten Produktion (kg), Menge der zum Absatz bestimmten Produktion, Menge der Gesamtproduktion (BM), Gewicht der Gesamtproduktion, Gewicht der Gesamtproduktion (kg), Menge der Gesamtproduktion (Stück), Unternehmen mit zum Absatz bestimmter Produktion, Unternehmen mit Produktion, GP2019 (9-Steller (Arten)), Deutschland insgesamt, Jahr\n", + "--------------------\n", + "Content:\n", + "GP2019 (9-Steller (Arten))\n", + "Deutschland insgesamt\n", + "Jahr\n", + "----------------------------------------\n" + ] + } + ], + "source": [ + "results.cubes.get_metadata([1,2])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/nb/helloworld.ipynb b/nb/helloworld.ipynb new file mode 100644 index 0000000..4fb6fae --- /dev/null +++ b/nb/helloworld.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "from pystatis import logincheck, whoami" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `helloworld` module allows you to run basic functions checking your login credentials (`logincheck`) and test calling the Destatis API (`whoami`)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test calling Destatis API (e.g. whether it is currently online)\n", + "whoami()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test your login credentials (set via config functions)\n", + "logincheck()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/nb/jobs.ipynb b/nb/jobs.ipynb new file mode 100644 index 0000000..b3e1c43 --- /dev/null +++ b/nb/jobs.ipynb @@ -0,0 +1,543 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Jobs\n", + "\n", + "Die Funktion `load_data` unterstützt das Abrufen von Jobs für zu große Tabellen. Destatis verweigert bei zu großen Tabellen die initiale Abfrage und gibt einen Status Code 98 zurück. Mit dem speziellen Query-Parameter `job=true` kann man jedoch die Verarbeitung im Hintergrund anstoßen. Die Tabelle wird dann für den User nach einiger Zeit bereitgestellt. Diese Tabelle kann dann über `data/resultfile` statt `data/tablefile` abgerufen werden. All diese Details verbergen wir jedoch vor dem Benutzer. Die Klasse `Table` verbirgt diese Komplexität und stellt die Daten, die von einem Job kommen, genauso zur Verfügung wie Daten, die über den normalen Destatis Endpunkt kommen. Der Benutzer muss lediglich eine etwas längere Wartezeit in Kauf nehmen (aktuell ein Timeout von 1 Minute)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "import json\n", + "\n", + "from pystatis import Table" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Die Tabelle ist zu groß, um direkt abgerufen zu werden. Es wird eine Verarbeitung im Hintergrund gestartet.\n" + ] + } + ], + "source": [ + "# Wir wollen die Tabelle mit der Nummer 42153-0001 laden\n", + "# Sofern die Daten nicht gecacht wurden, wird uns eine Warnmeldung darüber informieren, dass hier ein Job angestoßen wird\n", + "t = Table(name=\"42153-0001\")\n", + "t.get_data(timeslices=20) # timeslices muss hier relativ hoch gewählt werden, damit ein Job angestoßen wird " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Eine erneute Abfrage findet die Daten im Cache und stellt sie dementsprechend sofort bereit\n", + "t = Table(name=\"42153-0001\")\n", + "t.get_data(timeslices=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Statistik_CodeStatistik_LabelZeit_CodeZeit_LabelZeit1_Merkmal_Code1_Merkmal_Label1_Auspraegung_Code1_Auspraegung_Label2_Merkmal_Code...2_Auspraegung_Label3_Merkmal_Code3_Merkmal_Label3_Auspraegung_Code3_Auspraegung_Label4_Merkmal_Code4_Merkmal_Label4_Auspraegung_Code4_Auspraegung_LabelPRO101__Produktionsindex__2015=100
042153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2003DINSGDeutschland insgesamtDGDeutschlandWERT03...OriginalwerteWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-B-05Produzierendes GewerbeMONATMonateMONAT01Januar76,9
142153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2003DINSGDeutschland insgesamtDGDeutschlandWERT03...OriginalwerteWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-B-05Produzierendes GewerbeMONATMonateMONAT02Februar77,9
242153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2003DINSGDeutschland insgesamtDGDeutschlandWERT03...OriginalwerteWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-B-05Produzierendes GewerbeMONATMonateMONAT03März84,9
342153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2003DINSGDeutschland insgesamtDGDeutschlandWERT03...OriginalwerteWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-B-05Produzierendes GewerbeMONATMonateMONAT04April82,9
442153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2003DINSGDeutschland insgesamtDGDeutschlandWERT03...OriginalwerteWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-B-05Produzierendes GewerbeMONATMonateMONAT05Mai81,4
..................................................................
6239542153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2022DINSGDeutschland insgesamtDGDeutschlandWERT03...BV4.1 TrendWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-30-01Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a....MONATMonateMONAT08August...
6239642153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2022DINSGDeutschland insgesamtDGDeutschlandWERT03...BV4.1 TrendWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-30-01Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a....MONATMonateMONAT09September...
6239742153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2022DINSGDeutschland insgesamtDGDeutschlandWERT03...BV4.1 TrendWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-30-01Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a....MONATMonateMONAT10Oktober...
6239842153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2022DINSGDeutschland insgesamtDGDeutschlandWERT03...BV4.1 TrendWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-30-01Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a....MONATMonateMONAT11November...
6239942153Indizes der Produktion im Verarbeitenden GewerbeJAHRJahr2022DINSGDeutschland insgesamtDGDeutschlandWERT03...BV4.1 TrendWZ08V1WZ2008 (Hauptgruppen, Aggregate): Verarb. GewerbeWZ08-30-01Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a....MONATMonateMONAT12Dezember...
\n", + "

62400 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " Statistik_Code Statistik_Label \\\n", + "0 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "1 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "2 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "3 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "4 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "... ... ... \n", + "62395 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "62396 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "62397 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "62398 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "62399 42153 Indizes der Produktion im Verarbeitenden Gewerbe \n", + "\n", + " Zeit_Code Zeit_Label Zeit 1_Merkmal_Code 1_Merkmal_Label \\\n", + "0 JAHR Jahr 2003 DINSG Deutschland insgesamt \n", + "1 JAHR Jahr 2003 DINSG Deutschland insgesamt \n", + "2 JAHR Jahr 2003 DINSG Deutschland insgesamt \n", + "3 JAHR Jahr 2003 DINSG Deutschland insgesamt \n", + "4 JAHR Jahr 2003 DINSG Deutschland insgesamt \n", + "... ... ... ... ... ... \n", + "62395 JAHR Jahr 2022 DINSG Deutschland insgesamt \n", + "62396 JAHR Jahr 2022 DINSG Deutschland insgesamt \n", + "62397 JAHR Jahr 2022 DINSG Deutschland insgesamt \n", + "62398 JAHR Jahr 2022 DINSG Deutschland insgesamt \n", + "62399 JAHR Jahr 2022 DINSG Deutschland insgesamt \n", + "\n", + " 1_Auspraegung_Code 1_Auspraegung_Label 2_Merkmal_Code ... \\\n", + "0 DG Deutschland WERT03 ... \n", + "1 DG Deutschland WERT03 ... \n", + "2 DG Deutschland WERT03 ... \n", + "3 DG Deutschland WERT03 ... \n", + "4 DG Deutschland WERT03 ... \n", + "... ... ... ... ... \n", + "62395 DG Deutschland WERT03 ... \n", + "62396 DG Deutschland WERT03 ... \n", + "62397 DG Deutschland WERT03 ... \n", + "62398 DG Deutschland WERT03 ... \n", + "62399 DG Deutschland WERT03 ... \n", + "\n", + " 2_Auspraegung_Label 3_Merkmal_Code \\\n", + "0 Originalwerte WZ08V1 \n", + "1 Originalwerte WZ08V1 \n", + "2 Originalwerte WZ08V1 \n", + "3 Originalwerte WZ08V1 \n", + "4 Originalwerte WZ08V1 \n", + "... ... ... \n", + "62395 BV4.1 Trend WZ08V1 \n", + "62396 BV4.1 Trend WZ08V1 \n", + "62397 BV4.1 Trend WZ08V1 \n", + "62398 BV4.1 Trend WZ08V1 \n", + "62399 BV4.1 Trend WZ08V1 \n", + "\n", + " 3_Merkmal_Label 3_Auspraegung_Code \\\n", + "0 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-B-05 \n", + "1 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-B-05 \n", + "2 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-B-05 \n", + "3 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-B-05 \n", + "4 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-B-05 \n", + "... ... ... \n", + "62395 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-30-01 \n", + "62396 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-30-01 \n", + "62397 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-30-01 \n", + "62398 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-30-01 \n", + "62399 WZ2008 (Hauptgruppen, Aggregate): Verarb. Gewerbe WZ08-30-01 \n", + "\n", + " 3_Auspraegung_Label 4_Merkmal_Code \\\n", + "0 Produzierendes Gewerbe MONAT \n", + "1 Produzierendes Gewerbe MONAT \n", + "2 Produzierendes Gewerbe MONAT \n", + "3 Produzierendes Gewerbe MONAT \n", + "4 Produzierendes Gewerbe MONAT \n", + "... ... ... \n", + "62395 Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a.... MONAT \n", + "62396 Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a.... MONAT \n", + "62397 Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a.... MONAT \n", + "62398 Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a.... MONAT \n", + "62399 Sonstiger Fahrzeugbau ohne H. v. Fahrzeugen a.... MONAT \n", + "\n", + " 4_Merkmal_Label 4_Auspraegung_Code 4_Auspraegung_Label \\\n", + "0 Monate MONAT01 Januar \n", + "1 Monate MONAT02 Februar \n", + "2 Monate MONAT03 März \n", + "3 Monate MONAT04 April \n", + "4 Monate MONAT05 Mai \n", + "... ... ... ... \n", + "62395 Monate MONAT08 August \n", + "62396 Monate MONAT09 September \n", + "62397 Monate MONAT10 Oktober \n", + "62398 Monate MONAT11 November \n", + "62399 Monate MONAT12 Dezember \n", + "\n", + " PRO101__Produktionsindex__2015=100 \n", + "0 76,9 \n", + "1 77,9 \n", + "2 84,9 \n", + "3 82,9 \n", + "4 81,4 \n", + "... ... \n", + "62395 ... \n", + "62396 ... \n", + "62397 ... \n", + "62398 ... \n", + "62399 ... \n", + "\n", + "[62400 rows x 22 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t.data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/nb/parse_cube.ipynb b/nb/parse_cube.ipynb new file mode 100644 index 0000000..1ade731 --- /dev/null +++ b/nb/parse_cube.ipynb @@ -0,0 +1,721 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# only if you get an error from below\n", + "# from pystatis import init_config\n", + "# init_config()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "import pandas as pd\n", + "\n", + "from pystatis.cube import parse_cube, rename_axes\n", + "from pystatis.http_helper import get_data_from_endpoint" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download a cube file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `get_cubefile()` function will download the cube as csv cubefile and return the data as string." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "params = {\"name\": \"47414BJ002\", \"area\": \"all\", \"values\": \"true\", \"metadata\": \"true\", \"additionals\": \"false\"}\n", + "data = get_data_from_endpoint(\"data\", \"cubefile\", params)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(str, 84324)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(data), len(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['* Der Benutzer DEI6I4B3UW der Benutzergruppe DE0142 hat am 16.09.2022 um 23:24:58 diesen Export angestossen.',\n", + " 'K;DQ;FACH-SCHL;GHH-ART;GHM-WERTE-JN;GENESIS-VBD;REGIOSTAT;EU-VBD;\"mit Werten\"',\n", + " 'D;47414BJ002;;N;N;N;N',\n", + " 'K;DQ-ERH;FACH-SCHL',\n", + " 'D;47414',\n", + " 'K;DQA;NAME;RHF-BSR;RHF-ACHSE',\n", + " 'D;DINSG;1;1',\n", + " 'D;WZ08N7;2;2',\n", + " 'D;WERTE4;3;3',\n", + " 'K;DQZ;NAME;ZI-RHF-BSR;ZI-RHF-ACHSE',\n", + " 'D;JAHR;4;4',\n", + " 'K;DQI;NAME;ME-NAME;DST;TYP;NKM-STELLEN;GHH-ART;GHM-WERTE-JN',\n", + " 'D;UMS103;2015=100;FEST;PROZENT;1;;N',\n", + " 'K;QEI;FACH-SCHL;FACH-SCHL;FACH-SCHL;ZI-WERT;WERT;QUALITAET;GESPERRT;WERT-VERFAELSCHT',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2015;100.0;e;;0.0',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2016;99.3;e;;0.0',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2017;105.7;e;;0.0',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2018;111.6;e;;0.0',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2019;115.6;e;;0.0',\n", + " 'D;DG;WZ08-49-01;NOMINAL;2020;96.0;e;;0.0']" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.splitlines()[:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parsing the cube file\n", + "\n", + "The `parse_cube(data)` function can parse the raw string and return a dictionary with the different headers and the data section. Data is stored as pandas `DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "cube = parse_cube(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'DQ': FACH-SCHL GHH-ART GHM-WERTE-JN GENESIS-VBD REGIOSTAT EU-VBD\n", + " 0 47414BJ002 N N N N,\n", + " 'DQ-ERH': FACH-SCHL\n", + " 0 47414,\n", + " 'DQA': NAME RHF-BSR RHF-ACHSE\n", + " 0 DINSG 1 1\n", + " 1 WZ08N7 2 2\n", + " 2 WERTE4 3 3,\n", + " 'DQZ': NAME ZI-RHF-BSR ZI-RHF-ACHSE\n", + " 0 JAHR 4 4,\n", + " 'DQI': NAME ME-NAME DST TYP NKM-STELLEN GHH-ART GHM-WERTE-JN\n", + " 0 UMS103 2015=100 FEST PROZENT 1 N,\n", + " 'QEI': FACH-SCHL-1 FACH-SCHL-2 FACH-SCHL-3 ZI-WERT UMS103_WERT UMS103_QUALITAET \\\n", + " 0 DG WZ08-49-01 NOMINAL 2015 100.0 e \n", + " 1 DG WZ08-49-01 NOMINAL 2016 99.3 e \n", + " 2 DG WZ08-49-01 NOMINAL 2017 105.7 e \n", + " 3 DG WZ08-49-01 NOMINAL 2018 111.6 e \n", + " 4 DG WZ08-49-01 NOMINAL 2019 115.6 e \n", + " ... ... ... ... ... ... ... \n", + " 2151 DG WZ08-N REAL 2017 108.4 e \n", + " 2152 DG WZ08-N REAL 2018 110.6 e \n", + " 2153 DG WZ08-N REAL 2019 110.8 e \n", + " 2154 DG WZ08-N REAL 2020 94.1 e \n", + " 2155 DG WZ08-N REAL 2021 101.2 p \n", + " \n", + " UMS103_GESPERRT UMS103_WERT-VERFAELSCHT \n", + " 0 0.0 \n", + " 1 0.0 \n", + " 2 0.0 \n", + " 3 0.0 \n", + " 4 0.0 \n", + " ... ... ... \n", + " 2151 0.0 \n", + " 2152 0.0 \n", + " 2153 0.0 \n", + " 2154 0.0 \n", + " 2155 0.0 \n", + " \n", + " [2156 rows x 8 columns]}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cube" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FACH-SCHL-1FACH-SCHL-2FACH-SCHL-3ZI-WERTUMS103_WERTUMS103_QUALITAETUMS103_GESPERRTUMS103_WERT-VERFAELSCHT
0DGWZ08-49-01NOMINAL2015100.0e0.0
1DGWZ08-49-01NOMINAL201699.3e0.0
2DGWZ08-49-01NOMINAL2017105.7e0.0
3DGWZ08-49-01NOMINAL2018111.6e0.0
4DGWZ08-49-01NOMINAL2019115.6e0.0
...........................
2151DGWZ08-NREAL2017108.4e0.0
2152DGWZ08-NREAL2018110.6e0.0
2153DGWZ08-NREAL2019110.8e0.0
2154DGWZ08-NREAL202094.1e0.0
2155DGWZ08-NREAL2021101.2p0.0
\n", + "

2156 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " FACH-SCHL-1 FACH-SCHL-2 FACH-SCHL-3 ZI-WERT UMS103_WERT UMS103_QUALITAET \\\n", + "0 DG WZ08-49-01 NOMINAL 2015 100.0 e \n", + "1 DG WZ08-49-01 NOMINAL 2016 99.3 e \n", + "2 DG WZ08-49-01 NOMINAL 2017 105.7 e \n", + "3 DG WZ08-49-01 NOMINAL 2018 111.6 e \n", + "4 DG WZ08-49-01 NOMINAL 2019 115.6 e \n", + "... ... ... ... ... ... ... \n", + "2151 DG WZ08-N REAL 2017 108.4 e \n", + "2152 DG WZ08-N REAL 2018 110.6 e \n", + "2153 DG WZ08-N REAL 2019 110.8 e \n", + "2154 DG WZ08-N REAL 2020 94.1 e \n", + "2155 DG WZ08-N REAL 2021 101.2 p \n", + "\n", + " UMS103_GESPERRT UMS103_WERT-VERFAELSCHT \n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "... ... ... \n", + "2151 0.0 \n", + "2152 0.0 \n", + "2153 0.0 \n", + "2154 0.0 \n", + "2155 0.0 \n", + "\n", + "[2156 rows x 8 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cube[\"QEI\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NAMERHF-BSRRHF-ACHSE
0DINSG11
1WZ08N722
2WERTE433
\n", + "
" + ], + "text/plain": [ + " NAME RHF-BSR RHF-ACHSE\n", + "0 DINSG 1 1\n", + "1 WZ08N7 2 2\n", + "2 WERTE4 3 3" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cube[\"DQA\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Renaming Axes\n", + "\n", + "The `rename_axes(cube)` function can rename the columns of a data frame according to the metadata delivered with the cube file. `cube` has to be a dictionary as is returned by `parse_cube()`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DINSGWZ08N7WERTE4JAHRUMS103_WERTUMS103_QUALITAETUMS103_GESPERRTUMS103_WERT-VERFAELSCHT
0DGWZ08-49-01NOMINAL2015100.0e0.0
1DGWZ08-49-01NOMINAL201699.3e0.0
2DGWZ08-49-01NOMINAL2017105.7e0.0
3DGWZ08-49-01NOMINAL2018111.6e0.0
4DGWZ08-49-01NOMINAL2019115.6e0.0
...........................
2151DGWZ08-NREAL2017108.4e0.0
2152DGWZ08-NREAL2018110.6e0.0
2153DGWZ08-NREAL2019110.8e0.0
2154DGWZ08-NREAL202094.1e0.0
2155DGWZ08-NREAL2021101.2p0.0
\n", + "

2156 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " DINSG WZ08N7 WERTE4 JAHR UMS103_WERT UMS103_QUALITAET \\\n", + "0 DG WZ08-49-01 NOMINAL 2015 100.0 e \n", + "1 DG WZ08-49-01 NOMINAL 2016 99.3 e \n", + "2 DG WZ08-49-01 NOMINAL 2017 105.7 e \n", + "3 DG WZ08-49-01 NOMINAL 2018 111.6 e \n", + "4 DG WZ08-49-01 NOMINAL 2019 115.6 e \n", + "... ... ... ... ... ... ... \n", + "2151 DG WZ08-N REAL 2017 108.4 e \n", + "2152 DG WZ08-N REAL 2018 110.6 e \n", + "2153 DG WZ08-N REAL 2019 110.8 e \n", + "2154 DG WZ08-N REAL 2020 94.1 e \n", + "2155 DG WZ08-N REAL 2021 101.2 p \n", + "\n", + " UMS103_GESPERRT UMS103_WERT-VERFAELSCHT \n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "... ... ... \n", + "2151 0.0 \n", + "2152 0.0 \n", + "2153 0.0 \n", + "2154 0.0 \n", + "2155 0.0 \n", + "\n", + "[2156 rows x 8 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rename_axes(cube)[\"QEI\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['2015', '2016', '2017', '2018', '2019', '2020', '2021'],\n", + " dtype=object)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rename_axes(cube)[\"QEI\"][\"JAHR\"].unique()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/nb/profile.ipynb b/nb/profile.ipynb new file mode 100644 index 0000000..cf6c624 --- /dev/null +++ b/nb/profile.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "from pystatis import change_password, remove_result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `profile` module allows you to change your password (`change_password`) and use the (unavailable) `remove_result` functionality, listed in the [documentation under 2.7.2](https://www-genesis.destatis.de/genesis/misc/GENESIS-Webservices_Einfuehrung.pdf)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# change your password\n", + "change_password(new_password=DoNotUseThisAccidentally)\n", + "\n", + "# use remove_result functionality\n", + "destatis_name_code = \"42131-0001\"\n", + "remove_result(name=destatis_name_code)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.9.7" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/nb/table.ipynb b/nb/table.ipynb new file mode 100644 index 0000000..b8e37cf --- /dev/null +++ b/nb/table.ipynb @@ -0,0 +1,556 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "165da3a1", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import logging\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "from pystatis import Table" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5d25c79a", + "metadata": {}, + "outputs": [], + "source": [ + "t = Table(name=\"21311-0001\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "632fc783", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:pystatis.cache:Data was successfully cached under C:\\Users\\micha\\.pystatis\\data\\21311-0001\\5d17194a9264f364cb40\\20220922.txt.\n", + "INFO:pystatis.http_helper:Code 0 : erfolgreich\n" + ] + } + ], + "source": [ + "t.get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f5f1aded", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'21311-0001'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t.name" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8fede338", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Statistik_Code;Statistik_Label;Zeit_Code;Zeit_Label;Zeit;1_Merkmal_Code;1_Merkmal_Label;1_Auspraegung_Code;1_Auspraegung_Label;2_Merkmal_Code;2_Merkmal_Label;2_Auspraegung_Code;2_Auspraegung_Label;3_Merkmal_Code;3_Merkmal_Label;3_Auspraegung_Code;3_Auspraegung_Label;BIL002__Studierende__Anzahl\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;907403\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;727254\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1634657\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;92321\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;73673\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;165994\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;999724\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;800927\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1998/99;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1800651\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;872178\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;723246\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1595424\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;95460\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;79605\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;175065\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;967638\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;802851\\n21311;Statistik der Studenten;SEMEST;Semester;WS 1999/00;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1770489\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;870016\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;741820\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1611836\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;99906\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;87121\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;187027\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;969922\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;828941\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2000/01;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1798863\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;887462\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;774628\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1662090\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;107831\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;98410\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;206241\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;995293\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;873038\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2001/02;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1868331\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;903218\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;808567\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1711785\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;117205\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;109821\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;227026\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1020423\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;918388\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2002/03;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1938811\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;935718\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;837611\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1773329\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;125826\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;120310\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;246136\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1061544\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;957921\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2003/04;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2019465\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;901979\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;814795\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1716774\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;124220\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;122114\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;246334\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1026199\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;936909\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2004/05;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1963108\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;912696\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;824712\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1737408\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;124447\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;123910\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;248357\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1037143\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;948622\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2005/06;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1985765\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;909740\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;822934\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1732674\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;122923\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;123446\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;246369\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1032663\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;946380\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2006/07;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1979043\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;898061\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;809738\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1707799\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;116700\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;116906\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;233606\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1014761\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;926644\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2007/08;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;1941405\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;938552\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;847612\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1786164\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;119254\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;119889\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;239143\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1057806\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;967501\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2008/09;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2025307\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;984097\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;892306\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1876403\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;122353\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;122422\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;244775\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1106450\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1014728\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2009/10;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2121178\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1031086\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;934176\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;1965262\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;126399\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;125633\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;252032\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1157485\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1059809\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2010/11;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2217294\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1122200\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;993482\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2115682\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;133172\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;132120\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;265292\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1255372\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1125602\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2011/12;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2380974\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1171894\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1045314\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2217208\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;142123\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;140078\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;282201\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1314017\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1185392\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2012/13;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2499409\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1218965\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1096566\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2315531\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;152675\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;148675\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;301350\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1371640\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1245241\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2013/14;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2616881\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1245029\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1132312\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2377341\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;163505\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;158064\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;321569\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1408534\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1290376\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2014/15;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2698910\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1260203\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1157291\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2417494\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;173923\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;166382\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;340305\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1434126\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1323673\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2015/16;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2757799\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1269166\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1178949\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2448115\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;184459\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;174436\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;358895\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1453625\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1353385\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2016/17;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2807010\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1270098\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1200297\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2470395\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;194545\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;180038\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;374583\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1464643\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1380335\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2017/18;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2844978\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1258281\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1215276\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2473557\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;207697\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;186968\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;394665\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1465978\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1402244\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2018/19;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2868222\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1246852\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1232596\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2479448\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;218015\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;193586\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;411601\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1464867\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1426182\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2019/20;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2891049\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1253399\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1274309\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2527708\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;222967\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;193470\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;416437\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1476366\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1467779\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2020/21;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2944145\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESM;männlich;1231256\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;GESW;weiblich;1270095\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATD;Deutsche;GES;Geschlecht;;Insgesamt;2501351\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESM;männlich;235026\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;GESW;weiblich;205538\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;NATA;Ausländer;GES;Geschlecht;;Insgesamt;440564\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESM;männlich;1466282\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;GESW;weiblich;1475633\\n21311;Statistik der Studenten;SEMEST;Semester;WS 2021/22;DINSG;Deutschland insgesamt;DG;Deutschland;NAT;Nationalität;;Insgesamt;GES;Geschlecht;;Insgesamt;2941915\\n'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t.raw_data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "874bbbb9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Statistik_CodeStatistik_LabelZeit_CodeZeit_LabelZeit1_Merkmal_Code1_Merkmal_Label1_Auspraegung_Code1_Auspraegung_Label2_Merkmal_Code2_Merkmal_Label2_Auspraegung_Code2_Auspraegung_Label3_Merkmal_Code3_Merkmal_Label3_Auspraegung_Code3_Auspraegung_LabelBIL002__Studierende__Anzahl
021311Statistik der StudentenSEMESTSemesterWS 1998/99DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATDDeutscheGESGeschlechtGESMmännlich907403
121311Statistik der StudentenSEMESTSemesterWS 1998/99DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATDDeutscheGESGeschlechtGESWweiblich727254
221311Statistik der StudentenSEMESTSemesterWS 1998/99DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATDDeutscheGESGeschlechtNaNInsgesamt1634657
321311Statistik der StudentenSEMESTSemesterWS 1998/99DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATAAusländerGESGeschlechtGESMmännlich92321
421311Statistik der StudentenSEMESTSemesterWS 1998/99DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATAAusländerGESGeschlechtGESWweiblich73673
.........................................................
21121311Statistik der StudentenSEMESTSemesterWS 2021/22DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATAAusländerGESGeschlechtGESWweiblich205538
21221311Statistik der StudentenSEMESTSemesterWS 2021/22DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNATAAusländerGESGeschlechtNaNInsgesamt440564
21321311Statistik der StudentenSEMESTSemesterWS 2021/22DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNaNInsgesamtGESGeschlechtGESMmännlich1466282
21421311Statistik der StudentenSEMESTSemesterWS 2021/22DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNaNInsgesamtGESGeschlechtGESWweiblich1475633
21521311Statistik der StudentenSEMESTSemesterWS 2021/22DINSGDeutschland insgesamtDGDeutschlandNATNationalitätNaNInsgesamtGESGeschlechtNaNInsgesamt2941915
\n", + "

216 rows × 18 columns

\n", + "
" + ], + "text/plain": [ + " Statistik_Code Statistik_Label Zeit_Code Zeit_Label Zeit \\\n", + "0 21311 Statistik der Studenten SEMEST Semester WS 1998/99 \n", + "1 21311 Statistik der Studenten SEMEST Semester WS 1998/99 \n", + "2 21311 Statistik der Studenten SEMEST Semester WS 1998/99 \n", + "3 21311 Statistik der Studenten SEMEST Semester WS 1998/99 \n", + "4 21311 Statistik der Studenten SEMEST Semester WS 1998/99 \n", + ".. ... ... ... ... ... \n", + "211 21311 Statistik der Studenten SEMEST Semester WS 2021/22 \n", + "212 21311 Statistik der Studenten SEMEST Semester WS 2021/22 \n", + "213 21311 Statistik der Studenten SEMEST Semester WS 2021/22 \n", + "214 21311 Statistik der Studenten SEMEST Semester WS 2021/22 \n", + "215 21311 Statistik der Studenten SEMEST Semester WS 2021/22 \n", + "\n", + " 1_Merkmal_Code 1_Merkmal_Label 1_Auspraegung_Code \\\n", + "0 DINSG Deutschland insgesamt DG \n", + "1 DINSG Deutschland insgesamt DG \n", + "2 DINSG Deutschland insgesamt DG \n", + "3 DINSG Deutschland insgesamt DG \n", + "4 DINSG Deutschland insgesamt DG \n", + ".. ... ... ... \n", + "211 DINSG Deutschland insgesamt DG \n", + "212 DINSG Deutschland insgesamt DG \n", + "213 DINSG Deutschland insgesamt DG \n", + "214 DINSG Deutschland insgesamt DG \n", + "215 DINSG Deutschland insgesamt DG \n", + "\n", + " 1_Auspraegung_Label 2_Merkmal_Code 2_Merkmal_Label 2_Auspraegung_Code \\\n", + "0 Deutschland NAT Nationalität NATD \n", + "1 Deutschland NAT Nationalität NATD \n", + "2 Deutschland NAT Nationalität NATD \n", + "3 Deutschland NAT Nationalität NATA \n", + "4 Deutschland NAT Nationalität NATA \n", + ".. ... ... ... ... \n", + "211 Deutschland NAT Nationalität NATA \n", + "212 Deutschland NAT Nationalität NATA \n", + "213 Deutschland NAT Nationalität NaN \n", + "214 Deutschland NAT Nationalität NaN \n", + "215 Deutschland NAT Nationalität NaN \n", + "\n", + " 2_Auspraegung_Label 3_Merkmal_Code 3_Merkmal_Label 3_Auspraegung_Code \\\n", + "0 Deutsche GES Geschlecht GESM \n", + "1 Deutsche GES Geschlecht GESW \n", + "2 Deutsche GES Geschlecht NaN \n", + "3 Ausländer GES Geschlecht GESM \n", + "4 Ausländer GES Geschlecht GESW \n", + ".. ... ... ... ... \n", + "211 Ausländer GES Geschlecht GESW \n", + "212 Ausländer GES Geschlecht NaN \n", + "213 Insgesamt GES Geschlecht GESM \n", + "214 Insgesamt GES Geschlecht GESW \n", + "215 Insgesamt GES Geschlecht NaN \n", + "\n", + " 3_Auspraegung_Label BIL002__Studierende__Anzahl \n", + "0 männlich 907403 \n", + "1 weiblich 727254 \n", + "2 Insgesamt 1634657 \n", + "3 männlich 92321 \n", + "4 weiblich 73673 \n", + ".. ... ... \n", + "211 weiblich 205538 \n", + "212 Insgesamt 440564 \n", + "213 männlich 1466282 \n", + "214 weiblich 1475633 \n", + "215 Insgesamt 2941915 \n", + "\n", + "[216 rows x 18 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t.data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "81d27994", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Copyright': '© Statistisches Bundesamt (Destatis), 2022',\n", + " 'Ident': {'Method': 'table', 'Service': 'metadata'},\n", + " 'Object': {'Code': '21311-0001',\n", + " 'Content': 'Studierende: Deutschland, Semester, Nationalität,\\n'\n", + " 'Geschlecht',\n", + " 'Structure': {'Columns': [{'Code': 'NAT',\n", + " 'Content': 'Nationalität',\n", + " 'Selected': None,\n", + " 'Structure': [{'Code': 'GES',\n", + " 'Content': 'Geschlecht',\n", + " 'Selected': None,\n", + " 'Structure': None,\n", + " 'Type': 'Merkmal',\n", + " 'Updated': 'see parent',\n", + " 'Values': None}],\n", + " 'Type': 'Merkmal',\n", + " 'Updated': 'see parent',\n", + " 'Values': None}],\n", + " 'Head': {'Code': '21311',\n", + " 'Content': 'Statistik der Studenten',\n", + " 'Selected': None,\n", + " 'Structure': [{'Code': 'DINSG',\n", + " 'Content': 'Deutschland '\n", + " 'insgesamt',\n", + " 'Selected': '1',\n", + " 'Structure': [{'Code': 'BIL002',\n", + " 'Content': 'Studierende',\n", + " 'Selected': None,\n", + " 'Structure': None,\n", + " 'Type': 'Merkmal',\n", + " 'Updated': 'see '\n", + " 'parent',\n", + " 'Values': None}],\n", + " 'Type': 'Merkmal',\n", + " 'Updated': 'see parent',\n", + " 'Values': '1'}],\n", + " 'Type': 'Statistik',\n", + " 'Updated': 'see parent',\n", + " 'Values': None},\n", + " 'Rows': [{'Code': 'SEMEST',\n", + " 'Content': 'Semester',\n", + " 'Selected': None,\n", + " 'Structure': None,\n", + " 'Type': 'Merkmal',\n", + " 'Updated': 'see parent',\n", + " 'Values': None}],\n", + " 'Subheading': None,\n", + " 'Subtitel': None},\n", + " 'Time': {'From': 'WS 1998/99', 'To': 'WS 2021/22'},\n", + " 'Updated': '13.08.2013 13:41:54h',\n", + " 'Valid': 'false'},\n", + " 'Parameter': {'area': 'Alle',\n", + " 'language': 'de',\n", + " 'name': '21311-0001',\n", + " 'password': '********************',\n", + " 'username': '********************'},\n", + " 'Status': {'Code': 0, 'Content': 'erfolgreich', 'Type': 'Information'}}\n" + ] + } + ], + "source": [ + "from pprint import pprint\n", + "\n", + "pprint(t.metadata)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('.venv': poetry)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "02e23b522f8c3795158421909d41ced4ef90521258d58d1c53bee449d96f71e3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/poetry.lock b/poetry.lock index 48ae9cf..0a3b3e8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,93 @@ +[[package]] +name = "appnope" +version = "0.1.3" +description = "Disable App Nap on macOS >= 10.9" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "argon2-cffi" +version = "21.3.0" +description = "The secure Argon2 password hashing algorithm." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] +docs = ["sphinx", "sphinx-notfound-page", "furo"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["pytest", "cogapp", "pre-commit", "wheel"] +tests = ["pytest"] + [[package]] name = "astroid" -version = "2.11.2" +version = "2.12.10" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<2" +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." +name = "asttokens" +version = "2.0.8" +description = "Annotate AST trees with source code positions" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "*" + +[package.dependencies] +six = "*" + +[package.extras] +test = ["astroid (<=2.5.3)", "pytest"] [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +category = "dev" +optional = false +python-versions = "*" [[package]] name = "bandit" @@ -52,20 +108,35 @@ test = ["coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "stestr toml = ["toml"] yaml = ["pyyaml"] +[[package]] +name = "beautifulsoup4" +version = "4.11.1" +description = "Screen-scraping library" +category = "dev" +optional = false +python-versions = ">=3.6.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "black" -version = "22.3.0" +version = "22.10.0" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -74,14 +145,41 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "bleach" +version = "5.0.1" +description = "An easy safelist-based HTML-sanitizing tool." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.2)"] +dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] + [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.9.24" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false +python-versions = ">=3.6" + +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +category = "dev" +optional = false python-versions = "*" +[package.dependencies] +pycparser = "*" + [[package]] name = "cfgv" version = "3.3.1" @@ -92,18 +190,18 @@ python-versions = ">=3.6.1" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "dev" optional = false @@ -114,7 +212,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "dev" optional = false @@ -122,32 +220,56 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "coverage" -version = "6.3.2" +version = "6.5.0" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -tomli = {version = "*", optional = true, markers = "extra == \"toml\""} +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] toml = ["tomli"] +[[package]] +name = "debugpy" +version = "1.6.3" +description = "An implementation of the Debug Adapter Protocol for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + [[package]] name = "dill" -version = "0.3.4" +version = "0.3.5.1" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "distlib" -version = "0.3.4" +version = "0.3.6" description = "Distribution utilities" category = "dev" optional = false @@ -155,7 +277,7 @@ python-versions = "*" [[package]] name = "dparse" -version = "0.5.1" +version = "0.6.2" description = "A parser for Python dependency files" category = "dev" optional = false @@ -163,23 +285,53 @@ python-versions = ">=3.5" [package.dependencies] packaging = "*" -pyyaml = "*" toml = "*" [package.extras] pipenv = ["pipenv"] +conda = ["pyyaml"] + +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "executing" +version = "1.1.1" +description = "Get the currently executing AST node of a frame, and other information" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +tests = ["rich", "littleutils", "pytest", "asttokens"] + +[[package]] +name = "fastjsonschema" +version = "2.16.2" +description = "Fastest Python implementation of JSON schema" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] [[package]] name = "filelock" -version = "3.6.0" +version = "3.8.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] -testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] +docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] +testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" @@ -219,7 +371,7 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.27" +version = "3.1.28" description = "GitPython is a python library used to interact with Git repositories" category = "dev" optional = false @@ -230,7 +382,7 @@ gitdb = ">=4.0.1,<5" [[package]] name = "identify" -version = "2.4.12" +version = "2.5.6" description = "File identification library for Python" category = "dev" optional = false @@ -241,7 +393,7 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -249,7 +401,7 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.11.3" +version = "5.0.0" description = "Read metadata from Python packages" category = "dev" optional = false @@ -259,9 +411,9 @@ python-versions = ">=3.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" @@ -271,6 +423,91 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "ipykernel" +version = "6.16.0" +description = "IPython Kernel for Jupyter" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +debugpy = ">=1.0" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=17" +tornado = ">=6.1" +traitlets = ">=5.1.0" + +[package.extras] +test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "pytest (>=6.0)"] + +[[package]] +name = "ipython" +version = "8.5.0" +description = "IPython: Productive Interactive Computing" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +appnope = {version = "*", markers = "sys_platform == \"darwin\""} +backcall = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pickleshare = "*" +prompt-toolkit = ">3.0.1,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5" + +[package.extras] +all = ["black", "Sphinx (>=1.3)", "ipykernel", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.19)", "pandas", "trio"] +black = ["black"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["ipywidgets", "notebook"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] +test_extra = ["pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "trio"] + +[[package]] +name = "ipython-genutils" +version = "0.2.0" +description = "Vestigial utilities from IPython" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "ipywidgets" +version = "8.0.2" +description = "Jupyter interactive widgets" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +ipykernel = ">=4.5.1" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0,<4.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0,<5.0" + +[package.extras] +test = ["jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + [[package]] name = "isort" version = "5.10.1" @@ -286,42 +523,143 @@ colors = ["colorama (>=0.4.3,<0.5.0)"] plugins = ["setuptools"] [[package]] -name = "lazy-object-proxy" -version = "1.7.1" -description = "A fast and thorough lazy object proxy." +name = "jedi" +version = "0.18.1" +description = "An autocompletion tool for Python that can be used for text editors." category = "dev" optional = false python-versions = ">=3.6" +[package.dependencies] +parso = ">=0.8.0,<0.9.0" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] + [[package]] -name = "mako" -version = "1.2.0" -description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -MarkupSafe = ">=0.9.2" +MarkupSafe = ">=2.0" [package.extras] -babel = ["babel"] -lingua = ["lingua"] -testing = ["pytest"] +i18n = ["Babel (>=2.7)"] [[package]] -name = "markdown" -version = "3.3.6" -description = "Python implementation of Markdown." +name = "jsonschema" +version = "4.16.0" +description = "An implementation of JSON Schema validation for Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jupyter" +version = "1.0.0" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +nbconvert = "*" +notebook = "*" +qtconsole = "*" + +[[package]] +name = "jupyter-client" +version = "7.3.5" +description = "Jupyter protocol implementation and client libraries" +category = "dev" +optional = false +python-versions = ">=3.7" [package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} +entrypoints = "*" +jupyter-core = ">=4.9.2" +nest-asyncio = ">=1.5.4" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = "*" [package.extras] -testing = ["coverage", "pyyaml"] +doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"] +test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyter-console" +version = "6.4.4" +description = "Jupyter terminal console" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +ipykernel = "*" +ipython = "*" +jupyter-client = ">=7.0.0" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" + +[package.extras] +test = ["pexpect"] + +[[package]] +name = "jupyter-core" +version = "4.11.1" +description = "Jupyter core package. A base package on which Jupyter projects rely." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = "*" + +[package.extras] +test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.2.2" +description = "Pygments theme using JupyterLab CSS variables" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.3" +description = "Jupyter interactive widgets for JupyterLab" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "lazy-object-proxy" +version = "1.7.1" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=3.6" [[package]] name = "markupsafe" @@ -331,6 +669,17 @@ category = "dev" optional = false python-versions = ">=3.7" +[[package]] +name = "matplotlib-inline" +version = "0.1.6" +description = "Inline Matplotlib backend for Jupyter" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +traitlets = "*" + [[package]] name = "mccabe" version = "0.6.1" @@ -339,6 +688,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "mistune" +version = "2.0.4" +description = "A sane Markdown parser with useful plugins and renderers" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "mypy" version = "0.942" @@ -365,13 +722,129 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "nbclient" +version = "0.7.0" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +category = "dev" +optional = false +python-versions = ">=3.7.0" + +[package.dependencies] +jupyter-client = ">=6.1.5" +nbformat = ">=5.0" +nest-asyncio = "*" +traitlets = ">=5.2.2" + +[package.extras] +test = ["xmltodict", "twine (>=1.11.0)", "testpath", "setuptools (>=60.0)", "pytest-cov (>=2.6.1)", "pytest-asyncio", "pytest (>=4.1)", "pre-commit", "pip (>=18.1)", "nbconvert", "mypy", "ipywidgets", "ipython", "ipykernel", "flake8", "check-manifest", "black"] +sphinx = ["sphinx-book-theme", "Sphinx (>=1.7)", "myst-parser", "moto", "mock", "autodoc-traits"] + +[[package]] +name = "nbconvert" +version = "7.2.1" +description = "Converting Jupyter Notebooks" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "*" +defusedxml = "*" +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<3" +nbclient = ">=0.5.0" +nbformat = ">=5.1" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.0" + +[package.extras] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "myst-parser", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx-rtd-theme", "sphinx (==5.0.2)", "tornado (>=6.1)"] +docs = ["ipython", "myst-parser", "nbsphinx (>=0.2.12)", "sphinx-rtd-theme", "sphinx (==5.0.2)"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"] +webpdf = ["pyppeteer (>=1,<1.1)"] + +[[package]] +name = "nbformat" +version = "5.6.1" +description = "The Jupyter Notebook format" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +fastjsonschema = "*" +jsonschema = ">=2.6" +jupyter-core = "*" +traitlets = ">=5.1" + +[package.extras] +test = ["check-manifest", "pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nest-asyncio" +version = "1.5.6" +description = "Patch asyncio to allow nested event loops" +category = "dev" +optional = false +python-versions = ">=3.5" + [[package]] name = "nodeenv" -version = "1.6.0" +version = "1.7.0" description = "Node.js virtual environment builder" category = "dev" optional = false -python-versions = "*" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" + +[[package]] +name = "notebook" +version = "6.4.12" +description = "A web-based notebook environment for interactive computing" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +argon2-cffi = "*" +ipykernel = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=5.3.4" +jupyter-core = ">=4.6.1" +nbconvert = ">=5" +nbformat = "*" +nest-asyncio = ">=1.5" +prometheus-client = "*" +pyzmq = ">=17" +Send2Trash = ">=1.8.0" +terminado = ">=0.8.3" +tornado = ">=6.1" +traitlets = ">=4.2.1" + +[package.extras] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] +json-logging = ["json-logging"] +test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] + +[[package]] +name = "numpy" +version = "1.23.3" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.8" [[package]] name = "packaging" @@ -384,45 +857,91 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "pandas" +version = "1.5.0" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = [ + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, +] +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" + +[package.extras] +test = ["pytest-xdist (>=1.31)", "pytest (>=6.0)", "hypothesis (>=5.5.3)"] + +[[package]] +name = "pandocfilters" +version = "1.5.0" +description = "Utilities for writing pandoc filters in python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "parso" +version = "0.8.3" +description = "A Python Parser" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] + [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.8.1" +version = "5.10.0" description = "Python Build Reasonableness" category = "dev" optional = false python-versions = ">=2.6" [[package]] -name = "pdoc3" -version = "0.10.0" -description = "Auto-generate API documentation for Python projects." +name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." category = "dev" optional = false -python-versions = ">= 3.6" +python-versions = "*" [package.dependencies] -mako = "*" -markdown = ">=3.0" +ptyprocess = ">=0.5" + +[[package]] +name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +category = "dev" +optional = false +python-versions = "*" [[package]] name = "platformdirs" -version = "2.5.1" +version = "2.5.2" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] [[package]] name = "pluggy" @@ -437,20 +956,72 @@ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] [[package]] -name = "pre-commit" -version = "2.18.1" -description = "A framework for managing and maintaining multi-language pre-commit hooks." +name = "pre-commit" +version = "2.20.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +toml = "*" +virtualenv = ">=20.0.8" + +[[package]] +name = "prometheus-client" +version = "0.14.1" +description = "Python client for the Prometheus monitoring system." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.31" +description = "Library for building powerful interactive command lines in Python" +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psutil" +version = "5.9.2" +description = "Cross-platform lib for process and system monitoring in Python." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "pure-eval" +version = "0.2.2" +description = "Safely evaluate AST nodes without side effects" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = "*" -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -toml = "*" -virtualenv = ">=20.0.8" +[package.extras] +tests = ["pytest"] [[package]] name = "py" @@ -468,6 +1039,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pydocstyle" version = "6.1.1" @@ -490,48 +1069,68 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pygments" +version = "2.13.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pylint" -version = "2.13.4" +version = "2.15.3" description = "python code static checker" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.2,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.12.10,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pyparsing" -version = "3.0.7" -description = "Python parsing module" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.8" [package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pyrsistent" +version = "0.18.1" +description = "Persistent/Functional/Immutable data structures" +category = "dev" +optional = false +python-versions = ">=3.7" [[package]] name = "pytest" -version = "7.1.1" +version = "7.1.3" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" @@ -558,6 +1157,55 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] +[[package]] +name = "pytest-mock" +version = "3.10.0" +description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pytest = ">=5.0" + +[package.extras] +dev = ["pre-commit", "tox", "pytest-asyncio"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2022.4" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "pywin32" +version = "304" +description = "Python for Window Extensions" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "pywinpty" +version = "2.0.8" +description = "Pseudo terminal support for Windows from Python." +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "pyyaml" version = "6.0" @@ -566,43 +1214,132 @@ category = "dev" optional = false python-versions = ">=3.6" +[[package]] +name = "pyzmq" +version = "24.0.1" +description = "Python bindings for 0MQ" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} +py = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "qtconsole" +version = "5.3.2" +description = "Jupyter Qt console" +category = "dev" +optional = false +python-versions = ">= 3.7" + +[package.dependencies] +ipykernel = ">=4.1" +ipython-genutils = "*" +jupyter-client = ">=4.1" +jupyter-core = "*" +pygments = "*" +pyzmq = ">=17.1" +qtpy = ">=2.0.1" +traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" + +[package.extras] +doc = ["Sphinx (>=1.3)"] +test = ["flaky", "pytest", "pytest-qt"] + +[[package]] +name = "qtpy" +version = "2.2.1" +description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +packaging = "*" + +[package.extras] +test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] + [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] -name = "safety" -version = "1.10.3" -description = "Checks installed dependencies for known vulnerabilities." +name = "ruamel.yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "dev" +optional = false +python-versions = ">=3" + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel.yaml.clib" +version = "0.2.6" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" category = "dev" optional = false python-versions = ">=3.5" +[[package]] +name = "safety" +version = "2.3.1" +description = "Checks installed dependencies for known vulnerabilities and licenses." +category = "dev" +optional = false +python-versions = "*" + [package.dependencies] -Click = ">=6.0" -dparse = ">=0.5.1" -packaging = "*" +Click = ">=8.0.2" +dparse = ">=0.6.2" +packaging = ">=21.0" requests = "*" +"ruamel.yaml" = ">=0.17.21" + +[package.extras] +github = ["pygithub (>=1.43.3)", "jinja2 (>=3.1.0)"] +gitlab = ["python-gitlab (>=1.3.0)"] + +[[package]] +name = "send2trash" +version = "1.8.0" +description = "Send file to trash natively under Mac OS X, Windows and Linux." +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +nativelib = ["pyobjc-framework-cocoa", "pywin32"] +objc = ["pyobjc-framework-cocoa"] +win32 = ["pywin32"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "dev" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" @@ -622,17 +1359,83 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "stack-data" +version = "0.5.1" +description = "Extract data from python stack frames and tracebacks for informative displays" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +asttokens = "*" +executing = "*" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "typeguard", "pytest"] + [[package]] name = "stevedore" -version = "3.5.0" +version = "4.0.0" description = "Manage dynamic plugins for Python applications" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "tabulate" +version = "0.8.10" +description = "Pretty-print tabular data" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "terminado" +version = "0.16.0" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +test = ["pre-commit", "pytest-timeout", "pytest (>=6.0)"] + +[[package]] +name = "tinycss2" +version = "1.1.1" +description = "A tiny CSS parser" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx-rtd-theme"] +test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"] + [[package]] name = "toml" version = "0.10.2" @@ -649,48 +1452,98 @@ category = "dev" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.11.5" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "tornado" +version = "6.2" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "dev" +optional = false +python-versions = ">= 3.7" + +[[package]] +name = "traitlets" +version = "5.4.0" +description = "" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pre-commit", "pytest"] + [[package]] name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.14.0" +version = "20.16.5" description = "Virtual Python Environment builder" category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6" [package.dependencies] -distlib = ">=0.3.1,<1" -filelock = ">=3.2,<4" -platformdirs = ">=2,<3" -six = ">=1.9.0,<2" +distlib = ">=0.3.5,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" [package.extras] -docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] -testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] +docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "widgetsnbextension" +version = "4.0.3" +description = "Jupyter interactive widgets for Jupyter Notebook" +category = "dev" +optional = false +python-versions = ">=3.7" [[package]] name = "wrapt" -version = "1.14.0" +version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." category = "dev" optional = false @@ -698,141 +1551,226 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "zipp" -version = "3.8.0" +version = "3.9.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" -python-versions = "^3.8" -content-hash = "a8c717fb9d21bccb7057012d80773c1429ee986153a21422105014354700b124" +python-versions = "^3.9" +content-hash = "b98400d2fd75045beb31ea54ad12a6a2edef2b34404b2fe33e14142e44fccf49" [metadata.files] +appnope = [ + {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, + {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, +] +argon2-cffi = [ + {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, + {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, +] +argon2-cffi-bindings = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] astroid = [ - {file = "astroid-2.11.2-py3-none-any.whl", hash = "sha256:cc8cc0d2d916c42d0a7c476c57550a4557a083081976bf42a73414322a6411d9"}, - {file = "astroid-2.11.2.tar.gz", hash = "sha256:8d0a30fe6481ce919f56690076eafbb2fb649142a89dc874f1ec0e7a011492d0"}, + {file = "astroid-2.12.10-py3-none-any.whl", hash = "sha256:997e0c735df60d4a4caff27080a3afc51f9bdd693d3572a4a0b7090b645c36c5"}, + {file = "astroid-2.12.10.tar.gz", hash = "sha256:81f870105d892e73bf535da77a8261aa5bde838fa4ed12bb2f435291a098c581"}, ] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +asttokens = [ + {file = "asttokens-2.0.8-py2.py3-none-any.whl", hash = "sha256:e3305297c744ae53ffa032c45dc347286165e4ffce6875dc662b205db0623d86"}, + {file = "asttokens-2.0.8.tar.gz", hash = "sha256:c61e16246ecfb2cde2958406b4c8ebc043c9e6d73aaa83c941673b35e5d3a76b"}, ] attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] +backcall = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, ] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] black = [ - {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, - {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, - {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, - {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, - {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, - {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, - {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, - {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, - {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, - {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, - {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, - {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, - {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, - {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, - {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, - {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, - {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, - {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, - {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, + {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, + {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, + {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, + {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, + {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, + {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, + {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, + {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, + {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, + {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, + {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, + {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, + {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, + {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, + {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, + {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, + {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, + {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, + {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, + {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, + {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, ] +bleach = [] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, ] +cffi = [] cfgv = [ {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, ] click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] +colorama = [] coverage = [ - {file = "coverage-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf"}, - {file = "coverage-6.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05"}, - {file = "coverage-6.3.2-cp310-cp310-win32.whl", hash = "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39"}, - {file = "coverage-6.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1"}, - {file = "coverage-6.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4"}, - {file = "coverage-6.3.2-cp37-cp37m-win32.whl", hash = "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca"}, - {file = "coverage-6.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2"}, - {file = "coverage-6.3.2-cp38-cp38-win32.whl", hash = "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e"}, - {file = "coverage-6.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684"}, - {file = "coverage-6.3.2-cp39-cp39-win32.whl", hash = "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4"}, - {file = "coverage-6.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92"}, - {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, - {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, +] +debugpy = [ + {file = "debugpy-1.6.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c4b2bd5c245eeb49824bf7e539f95fb17f9a756186e51c3e513e32999d8846f3"}, + {file = "debugpy-1.6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b8deaeb779699350deeed835322730a3efec170b88927debc9ba07a1a38e2585"}, + {file = "debugpy-1.6.3-cp310-cp310-win32.whl", hash = "sha256:fc233a0160f3b117b20216f1169e7211b83235e3cd6749bcdd8dbb72177030c7"}, + {file = "debugpy-1.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:dda8652520eae3945833e061cbe2993ad94a0b545aebd62e4e6b80ee616c76b2"}, + {file = "debugpy-1.6.3-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:d5c814596a170a0a58fa6fad74947e30bfd7e192a5d2d7bd6a12156c2899e13a"}, + {file = "debugpy-1.6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c4cd6f37e3c168080d61d698390dfe2cd9e74ebf80b448069822a15dadcda57d"}, + {file = "debugpy-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:3c9f985944a30cfc9ae4306ac6a27b9c31dba72ca943214dad4a0ab3840f6161"}, + {file = "debugpy-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:5ad571a36cec137ae6ed951d0ff75b5e092e9af6683da084753231150cbc5b25"}, + {file = "debugpy-1.6.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:adcfea5ea06d55d505375995e150c06445e2b20cd12885bcae566148c076636b"}, + {file = "debugpy-1.6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:daadab4403427abd090eccb38d8901afd8b393e01fd243048fab3f1d7132abb4"}, + {file = "debugpy-1.6.3-cp38-cp38-win32.whl", hash = "sha256:6efc30325b68e451118b795eff6fe8488253ca3958251d5158106d9c87581bc6"}, + {file = "debugpy-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:86d784b72c5411c833af1cd45b83d80c252b77c3bfdb43db17c441d772f4c734"}, + {file = "debugpy-1.6.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:4e255982552b0edfe3a6264438dbd62d404baa6556a81a88f9420d3ed79b06ae"}, + {file = "debugpy-1.6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cca23cb6161ac89698d629d892520327dd1be9321c0960e610bbcb807232b45d"}, + {file = "debugpy-1.6.3-cp39-cp39-win32.whl", hash = "sha256:7c302095a81be0d5c19f6529b600bac971440db3e226dce85347cc27e6a61908"}, + {file = "debugpy-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:34d2cdd3a7c87302ba5322b86e79c32c2115be396f3f09ca13306d8a04fe0f16"}, + {file = "debugpy-1.6.3-py2.py3-none-any.whl", hash = "sha256:84c39940a0cac410bf6aa4db00ba174f973eef521fbe9dd058e26bcabad89c4f"}, + {file = "debugpy-1.6.3.zip", hash = "sha256:e8922090514a890eec99cfb991bab872dd2e353ebb793164d5f01c362b9a40bf"}, +] +decorator = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] +defusedxml = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] dill = [ - {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, - {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, ] distlib = [ - {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, - {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] dparse = [ - {file = "dparse-0.5.1-py3-none-any.whl", hash = "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994"}, - {file = "dparse-0.5.1.tar.gz", hash = "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367"}, + {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"}, + {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"}, +] +entrypoints = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] +executing = [ + {file = "executing-1.1.1-py2.py3-none-any.whl", hash = "sha256:236ea5f059a38781714a8bfba46a70fad3479c2f552abee3bbafadc57ed111b8"}, + {file = "executing-1.1.1.tar.gz", hash = "sha256:b0d7f8dcc2bac47ce6e39374397e7acecea6fdc380a6d5323e26185d70f38ea8"}, +] +fastjsonschema = [ + {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"}, + {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"}, ] filelock = [ - {file = "filelock-3.6.0-py3-none-any.whl", hash = "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0"}, - {file = "filelock-3.6.0.tar.gz", hash = "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85"}, + {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, + {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, ] flake8 = [ {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, @@ -847,29 +1785,79 @@ gitdb = [ {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, ] gitpython = [ - {file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"}, - {file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"}, + {file = "GitPython-3.1.28-py3-none-any.whl", hash = "sha256:77bfbd299d8709f6af7e0c70840ef26e7aff7cf0c1ed53b42dd7fc3a310fcb02"}, + {file = "GitPython-3.1.28.tar.gz", hash = "sha256:6bd3451b8271132f099ceeaf581392eaf6c274af74bb06144307870479d0697c"}, ] identify = [ - {file = "identify-2.4.12-py2.py3-none-any.whl", hash = "sha256:5f06b14366bd1facb88b00540a1de05b69b310cbc2654db3c7e07fa3a4339323"}, - {file = "identify-2.4.12.tar.gz", hash = "sha256:3f3244a559290e7d3deb9e9adc7b33594c1bc85a9dd82e0f1be519bf12a1ec17"}, + {file = "identify-2.5.6-py2.py3-none-any.whl", hash = "sha256:b276db7ec52d7e89f5bc4653380e33054ddc803d25875952ad90b0f012cbcdaa"}, + {file = "identify-2.5.6.tar.gz", hash = "sha256:6c32dbd747aa4ceee1df33f25fed0b0f6e0d65721b15bd151307ff7056d50245"}, ] idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, - {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, + {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, + {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +ipykernel = [ + {file = "ipykernel-6.16.0-py3-none-any.whl", hash = "sha256:d3d95241cd4dd302fea9d5747b00509b58997356d1f6333c9a074c3eccb78cb3"}, + {file = "ipykernel-6.16.0.tar.gz", hash = "sha256:7fe42c0d58435e971dc15fd42189f20d66bf35f3056bda4f6554271bc1fa3d0d"}, +] +ipython = [ + {file = "ipython-8.5.0-py3-none-any.whl", hash = "sha256:6f090e29ab8ef8643e521763a4f1f39dc3914db643122b1e9d3328ff2e43ada2"}, + {file = "ipython-8.5.0.tar.gz", hash = "sha256:097bdf5cd87576fd066179c9f7f208004f7a6864ee1b20f37d346c0bcb099f84"}, +] +ipython-genutils = [ + {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, + {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, +] +ipywidgets = [ + {file = "ipywidgets-8.0.2-py3-none-any.whl", hash = "sha256:1dc3dd4ee19ded045ea7c86eb273033d238d8e43f9e7872c52d092683f263891"}, + {file = "ipywidgets-8.0.2.tar.gz", hash = "sha256:08cb75c6e0a96836147cbfdc55580ae04d13e05d26ffbc377b4e1c68baa28b1f"}, +] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] +jedi = [ + {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, + {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, +] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +jsonschema = [ + {file = "jsonschema-4.16.0-py3-none-any.whl", hash = "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9"}, + {file = "jsonschema-4.16.0.tar.gz", hash = "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23"}, +] +jupyter = [ + {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"}, + {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"}, + {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"}, +] +jupyter-client = [ + {file = "jupyter_client-7.3.5-py3-none-any.whl", hash = "sha256:b33222bdc9dd1714228bd286af006533a0abe2bbc093e8f3d29dc0b91bdc2be4"}, + {file = "jupyter_client-7.3.5.tar.gz", hash = "sha256:3c58466a1b8d55dba0bf3ce0834e4f5b7760baf98d1d73db0add6f19de9ecd1d"}, +] +jupyter-console = [ + {file = "jupyter_console-6.4.4-py3-none-any.whl", hash = "sha256:756df7f4f60c986e7bc0172e4493d3830a7e6e75c08750bbe59c0a5403ad6dee"}, + {file = "jupyter_console-6.4.4.tar.gz", hash = "sha256:172f5335e31d600df61613a97b7f0352f2c8250bbd1092ef2d658f77249f89fb"}, +] +jupyter-core = [] +jupyterlab-pygments = [ + {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, + {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, +] +jupyterlab-widgets = [ + {file = "jupyterlab_widgets-3.0.3-py3-none-any.whl", hash = "sha256:6aa1bc0045470d54d76b9c0b7609a8f8f0087573bae25700a370c11f82cb38c8"}, + {file = "jupyterlab_widgets-3.0.3.tar.gz", hash = "sha256:c767181399b4ca8b647befe2d913b1260f51bf9d8ef9b7a14632d4c1a7b536bd"}, +] lazy-object-proxy = [ {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, @@ -909,14 +1897,6 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] -mako = [ - {file = "Mako-1.2.0-py3-none-any.whl", hash = "sha256:23aab11fdbbb0f1051b93793a58323ff937e98e34aece1c4219675122e57e4ba"}, - {file = "Mako-1.2.0.tar.gz", hash = "sha256:9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39"}, -] -markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, -] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -959,10 +1939,18 @@ markupsafe = [ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] +matplotlib-inline = [ + {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, + {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, +] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] +mistune = [ + {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"}, + {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, +] mypy = [ {file = "mypy-0.942-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5bf44840fb43ac4074636fd47ee476d73f0039f4f54e86d7265077dc199be24d"}, {file = "mypy-0.942-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dcd955f36e0180258a96f880348fbca54ce092b40fbb4b37372ae3b25a0b0a46"}, @@ -992,37 +1980,165 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] +nbclient = [ + {file = "nbclient-0.7.0-py3-none-any.whl", hash = "sha256:434c91385cf3e53084185334d675a0d33c615108b391e260915d1aa8e86661b8"}, + {file = "nbclient-0.7.0.tar.gz", hash = "sha256:a1d844efd6da9bc39d2209bf996dbd8e07bf0f36b796edfabaa8f8a9ab77c3aa"}, +] +nbconvert = [ + {file = "nbconvert-7.2.1-py3-none-any.whl", hash = "sha256:50a54366ab53da20e82668818b7b2f3f7b85c0bcd46ec8e18836f12b39180dfa"}, + {file = "nbconvert-7.2.1.tar.gz", hash = "sha256:1e180801205ad831b6e2480c5a03307dfb6327fa5b2f9b156d6fed45f9700686"}, +] +nbformat = [ + {file = "nbformat-5.6.1-py3-none-any.whl", hash = "sha256:9c071f0f615c1b0f4f9bf6745ecfd3294fc02daf279a05c76004c901e9dc5893"}, + {file = "nbformat-5.6.1.tar.gz", hash = "sha256:146b5b9969391387c2089256359f5da7c718b1d8a88ba814320273ea410e646e"}, +] +nest-asyncio = [ + {file = "nest_asyncio-1.5.6-py3-none-any.whl", hash = "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8"}, + {file = "nest_asyncio-1.5.6.tar.gz", hash = "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290"}, +] nodeenv = [ - {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, - {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, + {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, + {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, +] +notebook = [] +numpy = [ + {file = "numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9f707b5bb73bf277d812ded9896f9512a43edff72712f31667d0a8c2f8e71ee"}, + {file = "numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffcf105ecdd9396e05a8e58e81faaaf34d3f9875f137c7372450baa5d77c9a54"}, + {file = "numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ea3f98a0ffce3f8f57675eb9119f3f4edb81888b6874bc1953f91e0b1d4f440"}, + {file = "numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004f0efcb2fe1c0bd6ae1fcfc69cc8b6bf2407e0f18be308612007a0762b4089"}, + {file = "numpy-1.23.3-cp310-cp310-win32.whl", hash = "sha256:98dcbc02e39b1658dc4b4508442a560fe3ca5ca0d989f0df062534e5ca3a5c1a"}, + {file = "numpy-1.23.3-cp310-cp310-win_amd64.whl", hash = "sha256:39a664e3d26ea854211867d20ebcc8023257c1800ae89773cbba9f9e97bae036"}, + {file = "numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1f27b5322ac4067e67c8f9378b41c746d8feac8bdd0e0ffede5324667b8a075c"}, + {file = "numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ad3ec9a748a8943e6eb4358201f7e1c12ede35f510b1a2221b70af4bb64295c"}, + {file = "numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdc9febce3e68b697d931941b263c59e0c74e8f18861f4064c1f712562903411"}, + {file = "numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301c00cf5e60e08e04d842fc47df641d4a181e651c7135c50dc2762ffe293dbd"}, + {file = "numpy-1.23.3-cp311-cp311-win32.whl", hash = "sha256:7cd1328e5bdf0dee621912f5833648e2daca72e3839ec1d6695e91089625f0b4"}, + {file = "numpy-1.23.3-cp311-cp311-win_amd64.whl", hash = "sha256:8355fc10fd33a5a70981a5b8a0de51d10af3688d7a9e4a34fcc8fa0d7467bb7f"}, + {file = "numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc6e8da415f359b578b00bcfb1d08411c96e9a97f9e6c7adada554a0812a6cc6"}, + {file = "numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:22d43376ee0acd547f3149b9ec12eec2f0ca4a6ab2f61753c5b29bb3e795ac4d"}, + {file = "numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a64403f634e5ffdcd85e0b12c08f04b3080d3e840aef118721021f9b48fc1460"}, + {file = "numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd9d3abe5774404becdb0748178b48a218f1d8c44e0375475732211ea47c67e"}, + {file = "numpy-1.23.3-cp38-cp38-win32.whl", hash = "sha256:f8c02ec3c4c4fcb718fdf89a6c6f709b14949408e8cf2a2be5bfa9c49548fd85"}, + {file = "numpy-1.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:e868b0389c5ccfc092031a861d4e158ea164d8b7fdbb10e3b5689b4fc6498df6"}, + {file = "numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09f6b7bdffe57fc61d869a22f506049825d707b288039d30f26a0d0d8ea05164"}, + {file = "numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c79d7cf86d049d0c5089231a5bcd31edb03555bd93d81a16870aa98c6cfb79d"}, + {file = "numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5d5420053bbb3dd64c30e58f9363d7a9c27444c3648e61460c1237f9ec3fa14"}, + {file = "numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5422d6a1ea9b15577a9432e26608c73a78faf0b9039437b075cf322c92e98e7"}, + {file = "numpy-1.23.3-cp39-cp39-win32.whl", hash = "sha256:c1ba66c48b19cc9c2975c0d354f24058888cdc674bebadceb3cdc9ec403fb5d1"}, + {file = "numpy-1.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:78a63d2df1d947bd9d1b11d35564c2f9e4b57898aae4626638056ec1a231c40c"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:17c0e467ade9bda685d5ac7f5fa729d8d3e76b23195471adae2d6a6941bd2c18"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91b8d6768a75247026e951dce3b2aac79dc7e78622fc148329135ba189813584"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:94c15ca4e52671a59219146ff584488907b1f9b3fc232622b47e2cf832e94fb8"}, + {file = "numpy-1.23.3.tar.gz", hash = "sha256:51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +pandas = [ + {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0d8d7433d19bfa33f11c92ad9997f15a902bda4f5ad3a4814a21d2e910894484"}, + {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cc47f2ebaa20ef96ae72ee082f9e101b3dfbf74f0e62c7a12c0b075a683f03c"}, + {file = "pandas-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e8e5edf97d8793f51d258c07c629bd49d271d536ce15d66ac00ceda5c150eb3"}, + {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41aec9f87455306496d4486df07c1b98c15569c714be2dd552a6124cd9fda88f"}, + {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c76f1d104844c5360c21d2ef0e1a8b2ccf8b8ebb40788475e255b9462e32b2be"}, + {file = "pandas-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:1642fc6138b4e45d57a12c1b464a01a6d868c0148996af23f72dde8d12486bbc"}, + {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:171cef540bfcec52257077816a4dbbac152acdb8236ba11d3196ae02bf0959d8"}, + {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a68a9b9754efff364b0c5ee5b0f18e15ca640c01afe605d12ba8b239ca304d6b"}, + {file = "pandas-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:86d87279ebc5bc20848b4ceb619073490037323f80f515e0ec891c80abad958a"}, + {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:207d63ac851e60ec57458814613ef4b3b6a5e9f0b33c57623ba2bf8126c311f8"}, + {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e252a9e49b233ff96e2815c67c29702ac3a062098d80a170c506dff3470fd060"}, + {file = "pandas-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:de34636e2dc04e8ac2136a8d3c2051fd56ebe9fd6cd185581259330649e73ca9"}, + {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1d34b1f43d9e3f4aea056ba251f6e9b143055ebe101ed04c847b41bb0bb4a989"}, + {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b82ccc7b093e0a93f8dffd97a542646a3e026817140e2c01266aaef5fdde11b"}, + {file = "pandas-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e30a31039574d96f3d683df34ccb50bb435426ad65793e42a613786901f6761"}, + {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62e61003411382e20d7c2aec1ee8d7c86c8b9cf46290993dd8a0a3be44daeb38"}, + {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc987f7717e53d372f586323fff441263204128a1ead053c1b98d7288f836ac9"}, + {file = "pandas-1.5.0-cp38-cp38-win32.whl", hash = "sha256:e178ce2d7e3b934cf8d01dc2d48d04d67cb0abfaffdcc8aa6271fd5a436f39c8"}, + {file = "pandas-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:33a9d9e21ab2d91e2ab6e83598419ea6a664efd4c639606b299aae8097c1c94f"}, + {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:73844e247a7b7dac2daa9df7339ecf1fcf1dfb8cbfd11e3ffe9819ae6c31c515"}, + {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9c5049333c5bebf993033f4bf807d163e30e8fada06e1da7fa9db86e2392009"}, + {file = "pandas-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85a516a7f6723ca1528f03f7851fa8d0360d1d6121cf15128b290cf79b8a7f6a"}, + {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:947ed9f896ee61adbe61829a7ae1ade493c5a28c66366ec1de85c0642009faac"}, + {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7f38d91f21937fe2bec9449570d7bf36ad7136227ef43b321194ec249e2149d"}, + {file = "pandas-1.5.0-cp39-cp39-win32.whl", hash = "sha256:2504c032f221ef9e4a289f5e46a42b76f5e087ecb67d62e342ccbba95a32a488"}, + {file = "pandas-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a4fc04838615bf0a8d3a03ed68197f358054f0df61f390bcc64fbe39e3d71ec"}, + {file = "pandas-1.5.0.tar.gz", hash = "sha256:3ee61b881d2f64dd90c356eb4a4a4de75376586cd3c9341c6c0fcaae18d52977"}, +] +pandocfilters = [ + {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, + {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, +] +parso = [ + {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, + {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, +] pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, ] pbr = [ - {file = "pbr-5.8.1-py2.py3-none-any.whl", hash = "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec"}, - {file = "pbr-5.8.1.tar.gz", hash = "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25"}, + {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, + {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, ] -pdoc3 = [ - {file = "pdoc3-0.10.0-py3-none-any.whl", hash = "sha256:ba45d1ada1bd987427d2bf5cdec30b2631a3ff5fb01f6d0e77648a572ce6028b"}, - {file = "pdoc3-0.10.0.tar.gz", hash = "sha256:5f22e7bcb969006738e1aa4219c75a32f34c2d62d46dc9d2fb2d3e0b0287e4b7"}, +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] platformdirs = [ - {file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"}, - {file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"}, + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] pre-commit = [ - {file = "pre_commit-2.18.1-py2.py3-none-any.whl", hash = "sha256:02226e69564ebca1a070bd1f046af866aa1c318dbc430027c50ab832ed2b73f2"}, - {file = "pre_commit-2.18.1.tar.gz", hash = "sha256:5d445ee1fa8738d506881c5d84f83c62bb5be6b2838e32207433647e8e5ebe10"}, + {file = "pre_commit-2.20.0-py2.py3-none-any.whl", hash = "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7"}, + {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"}, +] +prometheus-client = [ + {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, + {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, +] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.31-py3-none-any.whl", hash = "sha256:9696f386133df0fc8ca5af4895afe5d78f5fcfe5258111c2a79a1c3e41ffa96d"}, + {file = "prompt_toolkit-3.0.31.tar.gz", hash = "sha256:9ada952c9d1787f52ff6d5f3484d0b4df8952787c087edf6a1f7c2cb1ea88148"}, +] +psutil = [ + {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:8f024fbb26c8daf5d70287bb3edfafa22283c255287cf523c5d81721e8e5d82c"}, + {file = "psutil-5.9.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b2f248ffc346f4f4f0d747ee1947963613216b06688be0be2e393986fe20dbbb"}, + {file = "psutil-5.9.2-cp27-cp27m-win32.whl", hash = "sha256:b1928b9bf478d31fdffdb57101d18f9b70ed4e9b0e41af751851813547b2a9ab"}, + {file = "psutil-5.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:404f4816c16a2fcc4eaa36d7eb49a66df2d083e829d3e39ee8759a411dbc9ecf"}, + {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:94e621c6a4ddb2573d4d30cba074f6d1aa0186645917df42c811c473dd22b339"}, + {file = "psutil-5.9.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:256098b4f6ffea6441eb54ab3eb64db9ecef18f6a80d7ba91549195d55420f84"}, + {file = "psutil-5.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:614337922702e9be37a39954d67fdb9e855981624d8011a9927b8f2d3c9625d9"}, + {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39ec06dc6c934fb53df10c1672e299145ce609ff0611b569e75a88f313634969"}, + {file = "psutil-5.9.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3ac2c0375ef498e74b9b4ec56df3c88be43fe56cac465627572dbfb21c4be34"}, + {file = "psutil-5.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dc9bda7d5ced744622f157cc8d8bdd51735dafcecff807e928ff26bdb0ff097d"}, + {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75291912b945a7351d45df682f9644540d564d62115d4a20d45fa17dc2d48f8"}, + {file = "psutil-5.9.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4018d5f9b6651f9896c7a7c2c9f4652e4eea53f10751c4e7d08a9093ab587ec"}, + {file = "psutil-5.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:42638876b7f5ef43cef8dcf640d3401b27a51ee3fa137cb2aa2e72e188414c32"}, + {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91aa0dac0c64688667b4285fa29354acfb3e834e1fd98b535b9986c883c2ce1d"}, + {file = "psutil-5.9.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fb54941aac044a61db9d8eb56fc5bee207db3bc58645d657249030e15ba3727"}, + {file = "psutil-5.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd331866628d18223a4265371fd255774affd86244fc307ef66eaf00de0633d5"}, + {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b315febaebae813326296872fdb4be92ad3ce10d1d742a6b0c49fb619481ed0b"}, + {file = "psutil-5.9.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7929a516125f62399d6e8e026129c8835f6c5a3aab88c3fff1a05ee8feb840d"}, + {file = "psutil-5.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3591616fa07b15050b2f87e1cdefd06a554382e72866fcc0ab2be9d116486c8"}, + {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b29f581b5edab1f133563272a6011925401804d52d603c5c606936b49c8b97"}, + {file = "psutil-5.9.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4642fd93785a29353d6917a23e2ac6177308ef5e8be5cc17008d885cb9f70f12"}, + {file = "psutil-5.9.2.tar.gz", hash = "sha256:feb861a10b6c3bb00701063b37e4afc754f8217f0f09c42280586bd6ac712b5c"}, +] +ptyprocess = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] +pure-eval = [ + {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, + {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, ] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, @@ -1032,6 +2148,10 @@ pycodestyle = [ {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] pydocstyle = [ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, @@ -1040,22 +2160,81 @@ pyflakes = [ {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, ] +pygments = [ + {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, + {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, +] pylint = [ - {file = "pylint-2.13.4-py3-none-any.whl", hash = "sha256:8672cf7441b81410f5de7defdf56e2d559c956fd0579652f2e0a0a35bea2d546"}, - {file = "pylint-2.13.4.tar.gz", hash = "sha256:7cc6d0c4f61dff440f9ed8b657f4ecd615dcfe35345953eb7b1dc74afe901d7a"}, + {file = "pylint-2.15.3-py3-none-any.whl", hash = "sha256:7f6aad1d8d50807f7bc64f89ac75256a9baf8e6ed491cc9bc65592bc3f462cf1"}, + {file = "pylint-2.15.3.tar.gz", hash = "sha256:5fdfd44af182866999e6123139d265334267339f29961f00c89783155eacc60b"}, ] -pyparsing = [ - {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, - {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +pyparsing = [] +pyrsistent = [ + {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, + {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, + {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, + {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, ] pytest = [ - {file = "pytest-7.1.1-py3-none-any.whl", hash = "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea"}, - {file = "pytest-7.1.1.tar.gz", hash = "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63"}, + {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, + {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, ] pytest-cov = [ {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, ] +pytest-mock = [ + {file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"}, + {file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +pytz = [ + {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, + {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, +] +pywin32 = [ + {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"}, + {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"}, + {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"}, + {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"}, + {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"}, + {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"}, + {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"}, + {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"}, + {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"}, + {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"}, + {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"}, + {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"}, + {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"}, + {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"}, +] +pywinpty = [ + {file = "pywinpty-2.0.8-cp310-none-win_amd64.whl", hash = "sha256:9cbf89834abc8d4d4c5f295f11e15dd93889a8069db876f2bc10cc64aa4060ac"}, + {file = "pywinpty-2.0.8-cp37-none-win_amd64.whl", hash = "sha256:a2f9a95f3b74262ef73f1be5257c295c8caab1f79f081aa3400ca61c724f9bc6"}, + {file = "pywinpty-2.0.8-cp38-none-win_amd64.whl", hash = "sha256:23389d56258d6a1fbc4b41257bd65e5bdabaf6fde7f30a13806e557ea9ee6865"}, + {file = "pywinpty-2.0.8-cp39-none-win_amd64.whl", hash = "sha256:ea7c1da94eed5ef93e75026c67c60d4dca33ea9a1c212fa89221079a7b463c68"}, + {file = "pywinpty-2.0.8.tar.gz", hash = "sha256:a89b9021c63ef78b1e7d8e14f0fac4748c88a0c2e4f529c84f37f6e72b914280"}, +] pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, @@ -1091,13 +2270,134 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +pyzmq = [ + {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"}, + {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"}, + {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"}, + {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"}, + {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"}, + {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"}, + {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"}, + {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"}, + {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"}, + {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"}, + {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"}, + {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"}, + {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"}, + {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"}, + {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"}, + {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"}, + {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"}, + {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"}, + {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"}, + {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"}, + {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"}, + {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"}, + {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"}, + {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"}, + {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"}, + {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"}, + {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"}, + {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"}, + {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"}, + {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"}, + {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"}, + {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"}, + {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"}, + {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"}, + {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"}, + {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"}, + {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"}, + {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"}, +] +qtconsole = [ + {file = "qtconsole-5.3.2-py3-none-any.whl", hash = "sha256:c29d24464f57cdbaa17d6f6060be6e6d5e29126e7feb57eebc1747433382b3d1"}, + {file = "qtconsole-5.3.2.tar.gz", hash = "sha256:8eadf012e83ab018295803c247c6ab7eacd3d5ab1e1d88a0f37fdcfdab9295a3"}, +] +qtpy = [ + {file = "QtPy-2.2.1-py3-none-any.whl", hash = "sha256:268cf5328f41353be1b127e04a81bc74ec9a9b54c9ac75dd8fe0ff48d8ad6ead"}, + {file = "QtPy-2.2.1.tar.gz", hash = "sha256:7d5231133b772e40b4ee514b6673aca558331e4b88ca038b26c9e16c5c95524f"}, +] +requests = [] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, ] safety = [ - {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"}, - {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"}, + {file = "safety-2.3.1-py3-none-any.whl", hash = "sha256:8f098d12b607db2756886280e85c28ece8db1bba4f45fc5f981f4663217bd619"}, + {file = "safety-2.3.1.tar.gz", hash = "sha256:6e6fcb7d4e8321098cf289f59b65051cafd3467f089c6e57c9f894ae32c23b71"}, +] +send2trash = [ + {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, + {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -1111,9 +2411,30 @@ snowballstemmer = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] +stack-data = [ + {file = "stack_data-0.5.1-py3-none-any.whl", hash = "sha256:5120731a18ba4c82cefcf84a945f6f3e62319ef413bfc210e32aca3a69310ba2"}, + {file = "stack_data-0.5.1.tar.gz", hash = "sha256:95eb784942e861a3d80efd549ff9af6cf847d88343a12eb681d7157cfcb6e32b"}, +] stevedore = [ - {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, - {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, + {file = "stevedore-4.0.0-py3-none-any.whl", hash = "sha256:87e4d27fe96d0d7e4fc24f0cbe3463baae4ec51e81d95fbe60d2474636e0c7d8"}, + {file = "stevedore-4.0.0.tar.gz", hash = "sha256:f82cc99a1ff552310d19c379827c2c64dd9f85a38bcd5559db2470161867b786"}, +] +tabulate = [ + {file = "tabulate-0.8.10-py3-none-any.whl", hash = "sha256:0ba055423dbaa164b9e456abe7920c5e8ed33fcc16f6d1b2f2d152c8e1e8b4fc"}, + {file = "tabulate-0.8.10-py3.8.egg", hash = "sha256:436f1c768b424654fce8597290d2764def1eea6a77cfa5c33be00b1bc0f4f63d"}, + {file = "tabulate-0.8.10.tar.gz", hash = "sha256:6c57f3f3dd7ac2782770155f3adb2db0b1a269637e42f27599925e64b114f519"}, +] +terminado = [ + {file = "terminado-0.16.0-py3-none-any.whl", hash = "sha256:3e995072a7178a104c41134548ce9b03e4e7f0a538e9c29df4f1fbc81c7cfc75"}, + {file = "terminado-0.16.0.tar.gz", hash = "sha256:fac14374eb5498bdc157ed32e510b1f60d5c3c7981a9f5ba018bb9a64cec0c25"}, +] +tinycss2 = [ + {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, + {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, ] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, @@ -1123,85 +2444,106 @@ tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +tomlkit = [ + {file = "tomlkit-0.11.5-py3-none-any.whl", hash = "sha256:f2ef9da9cef846ee027947dc99a45d6b68a63b0ebc21944649505bf2e8bc5fe7"}, + {file = "tomlkit-0.11.5.tar.gz", hash = "sha256:571854ebbb5eac89abcb4a2e47d7ea27b89bf29e09c35395da6f03dd4ae23d1c"}, +] +tornado = [] +traitlets = [ + {file = "traitlets-5.4.0-py3-none-any.whl", hash = "sha256:93663cc8236093d48150e2af5e2ed30fc7904a11a6195e21bab0408af4e6d6c8"}, + {file = "traitlets-5.4.0.tar.gz", hash = "sha256:3f2c4e435e271592fe4390f1746ea56836e3a080f84e7833f0f801d9613fec39"}, +] typing-extensions = [ - {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, - {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, ] virtualenv = [ - {file = "virtualenv-20.14.0-py2.py3-none-any.whl", hash = "sha256:1e8588f35e8b42c6ec6841a13c5e88239de1e6e4e4cedfd3916b306dc826ec66"}, - {file = "virtualenv-20.14.0.tar.gz", hash = "sha256:8e5b402037287126e81ccde9432b95a8be5b19d36584f64957060a3488c11ca8"}, + {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, + {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +webencodings = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] +widgetsnbextension = [ + {file = "widgetsnbextension-4.0.3-py3-none-any.whl", hash = "sha256:7f3b0de8fda692d31ef03743b598620e31c2668b835edbd3962d080ccecf31eb"}, + {file = "widgetsnbextension-4.0.3.tar.gz", hash = "sha256:34824864c062b0b3030ad78210db5ae6a3960dfb61d5b27562d6631774de0286"}, ] wrapt = [ - {file = "wrapt-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763"}, - {file = "wrapt-1.14.0-cp310-cp310-win32.whl", hash = "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff"}, - {file = "wrapt-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3"}, - {file = "wrapt-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0"}, - {file = "wrapt-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425"}, - {file = "wrapt-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036"}, - {file = "wrapt-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8"}, - {file = "wrapt-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06"}, - {file = "wrapt-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9"}, - {file = "wrapt-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68"}, - {file = "wrapt-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0"}, - {file = "wrapt-1.14.0-cp38-cp38-win32.whl", hash = "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f"}, - {file = "wrapt-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c"}, - {file = "wrapt-1.14.0-cp39-cp39-win32.whl", hash = "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350"}, - {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, - {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, + {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, + {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, ] diff --git a/pyproject.toml b/pyproject.toml index 131aaac..cece210 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,44 @@ [tool.poetry] -authors = ["CorrelAid "] +authors = [ + "Ariz Weber ", + "CorrelAid ", + "Daniel Pleus ", + "Felix Schmitz ", + "Frederik Hering ", + "Marco Hübner ", + "Michael Aydinbas ", +] +maintainers = [ + "Michael Aydinbas " +] description = "Python wrapper for GENESIS web service interface (API) of the Federal Statistical Office." -name = "pygenesis" +name = "pystatis" version = "0.1.0" +readme = "README.md" +repository = "" +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Operating System :: MacOS", + "Operating System :: Microsoft", + "Operating System :: POSIX", + "Operating System :: Unix", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Information Analysis", + "Topic :: Software Development :: Libraries :: Python Modules" +] [tool.poetry.dependencies] -python = "^3.8" +python = "^3.9" requests = "^2.27.1" +pandas = "^1.4.3" +tabulate = "^0.8.10" [tool.poetry.dev-dependencies] bandit = "^1.7.4" @@ -14,13 +46,14 @@ black = "^22.3.0" flake8-docstrings = "^1.6.0" isort = "^5.10.1" mypy = "^0.942" -pdoc3 = "^0.10.0" pre-commit = "^2.18.1" pylint = "^2.13.4" pytest = "^7.1.1" pytest-cov = "^3.0.0" -safety = "^1.10.3" +safety = "^2.0.0" flake8 = "^4.0.1" +jupyter = "^1.0.0" +pytest-mock = "^3.8.2" [tool.black] line-length = 80 @@ -29,3 +62,11 @@ target-version = ['py39'] [build-system] build-backend = "poetry.core.masonry.api" requires = ["poetry-core>=1.0.0"] + +[tool.pytest.ini_options] +addopts = "-s -v" +log_cli = false + +[tool.isort] +profile = "black" +line_length = 80 diff --git a/src/pygenesis/__init__.py b/src/pygenesis/__init__.py deleted file mode 100644 index 37d2076..0000000 --- a/src/pygenesis/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -"""pygenesis is a Python wrapper for the GENESIS web service interface (API). - -Basic usage: - -```python -import pygenesis as pgen -print("Version:", pgen.__version__) -``` -""" -__version__ = "0.1.0" diff --git a/src/pystatis/__init__.py b/src/pystatis/__init__.py new file mode 100644 index 0000000..6e37387 --- /dev/null +++ b/src/pystatis/__init__.py @@ -0,0 +1,30 @@ +"""pystatis is a Python wrapper for the GENESIS web service interface (API). + +Basic usage: + +```python +import pystatis as pstat +print("Version:", pstat.__version__) +``` +""" +from pystatis.cache import clear_cache +from pystatis.config import init_config +from pystatis.cube import Cube +from pystatis.find import Find +from pystatis.helloworld import logincheck, whoami +from pystatis.profile import change_password, remove_result +from pystatis.table import Table + +__version__ = "0.1.0" + +__all__ = [ + "change_password", + "clear_cache", + "Cube", + "Find", + "init_config", + "logincheck", + "remove_result", + "Table", + "whoami", +] diff --git a/src/pystatis/cache.py b/src/pystatis/cache.py new file mode 100644 index 0000000..1c0f0ec --- /dev/null +++ b/src/pystatis/cache.py @@ -0,0 +1,190 @@ +"""Module provides functions/decorators to cache downloaded data as well as remove cached data.""" +import hashlib +import json +import logging +import re +import shutil +import zipfile +from datetime import date +from pathlib import Path +from typing import Optional + +from pystatis.config import load_config + +logger = logging.getLogger(__name__) +JOB_ID_PATTERN = r"\d+" + + +def cache_data( + cache_dir: Path, + name: Optional[str], + params: dict, + data: str, +) -> None: + """Compress and archive data within the configured cache directory. + + Data will be stored in a zip file within the cache directory. + The folder structure will be `///. + This allows to cache different results for different params. + + Args: + cache_dir (Path): The cash directory as configured in the config. + name (str): The unique identifier in GENESIS-Online. + endpoint (str): The endpoint for this data request. + method (str): The method for this data request. + params (dict): The dictionary holding the params for this data request. + data (str): The actual raw text data as returned by GENESIS-Online. + """ + # pylint: disable=too-many-arguments + if name is None: + return + + data_dir = _build_file_path(cache_dir, name, params) + file_name = f"{str(date.today()).replace('-', '')}.txt" + + # create parent dirs, if necessary + file_path = data_dir / file_name + file_path.parent.mkdir(parents=True, exist_ok=True) + + # we have to first save the content to a text file, before we can add it to a + # compressed archive, and finally have to delete the file so only the archive remains + with open(file_path, "w", encoding="utf-8") as file: + file.write(data) + + with zipfile.ZipFile( + str(file_path).replace(".txt", ".zip"), + "w", + compression=zipfile.ZIP_DEFLATED, + compresslevel=9, + ) as myzip: + myzip.write(file_path, arcname=file_name) + + file_path.unlink() + logger.info("Data was successfully cached under %s.", file_path) + + +def read_from_cache( + cache_dir: Path, + name: Optional[str], + params: dict, +) -> str: + """Read and return compressed data from cache. + + Args: + cache_dir (Path): The cash directory as configured in the config. + name (str): The unique identifier in GENESIS-Online. + endpoint (str): The endpoint for this data request. + method (str): The method for this data request. + params (dict): The dictionary holding the params for this data request. + + Returns: + str: The uncompressed raw text data. + """ + if name is None: + return "" + + data_dir = _build_file_path(cache_dir, name, params) + + versions = sorted( + data_dir.glob("*"), + key=lambda path: int(path.stem), + ) + file_name = versions[-1].name + file_path = data_dir / file_name + with zipfile.ZipFile(file_path, "r") as myzip: + with myzip.open(file_name.replace(".zip", ".txt")) as file: + data = file.read().decode() + + return data + + +def _build_file_path(cache_dir: Path, name: str, params: dict) -> Path: + """Builds a unique cache directory name from name and hashed params dictionary. + + The way this method works is that it creates a path under cache dir that is unique + because the name is a unique EVAS identifier number in Destatis and the hash + is (close enough) unique to a given dictionary with query parameter values. + + Args: + cache_dir (Path): The root cache directory as configured in the config.ini. + name (str): The unique identifier for an object in Destatis. + params (dict): The query parameters for a given call to the Destatis API. + + Returns: + Path: The path object to the directory where the data will be downloaded/cached. + """ + params_ = params.copy() + # we have to delete the job key here because otherwise we will not have a cache hit + # we use 10 digits because this is enough security to avoid hash collisions + if "job" in params_: + del params_["job"] + params_hash = hashlib.blake2s(digest_size=10, usedforsecurity=False) + params_hash.update(json.dumps(params_).encode("UTF-8")) + data_dir = cache_dir / name / params_hash.hexdigest() + + return data_dir + + +def normalize_name(name: str) -> str: + """Normalize a Destatis object name by omitting the optional job id. + + Args: + name (str): The unique identifier in GENESIS-Online. + + Returns: + str: The unique identifier without the optional job id. + """ + if len(re.findall(JOB_ID_PATTERN, name)) == 3: + name = name.split("_")[0] + + return name + + +def hit_in_cash( + cache_dir: Path, + name: Optional[str], + params: dict, +) -> bool: + """Check if data is already cached. + + Args: + cache_dir (Path): The cash directory as configured in the config. + name (str): The unique identifier in GENESIS-Online. + endpoint (str): The endpoint for this data request. + method (str): The method for this data request. + params (dict): The dictionary holding the params for this data request. + + Returns: + bool: True, if combination of name, endpoint, method and params is already cached. + """ + if name is None: + return False + + data_dir = _build_file_path(cache_dir, name, params) + return data_dir.exists() + + +def clear_cache(name: Optional[str] = None) -> None: + """Clean the data cache completely or just a specified name. + + Args: + name (str, optional): Unique name to be deleted from cached data. + """ + config = load_config() + cache_dir = Path(config["DATA"]["cache_dir"]) + + # remove specified file (directory) from the data cache + # or clear complete cache (remove childs, preserve base) + file_paths = [cache_dir / name] if name is not None else cache_dir.iterdir() + + for file_path in file_paths: + # delete if file or symlink, otherwise remove complete tree + try: + if file_path.is_file() or file_path.is_symlink(): + file_path.unlink() + elif file_path.is_dir(): + shutil.rmtree(file_path) + except (OSError, ValueError, FileNotFoundError) as e: + logger.warning("Failed to delete %s. Reason: %s", file_path, e) + + logger.info("Removed files: %s", file_paths) diff --git a/src/pystatis/config.py b/src/pystatis/config.py new file mode 100644 index 0000000..415d120 --- /dev/null +++ b/src/pystatis/config.py @@ -0,0 +1,155 @@ +"""Module for handling settings.ini and config.ini files. + +This package stores core information in the settings.ini, which is stored under the user home directory. +The parent directory for the settings.ini is called after the package name. +The settings.ini gets automatically created by importing this package, if it does not exist already. +The config.ini is stored in a directory that is configured in the settings.ini via `config_dir`. +The config.ini holds all revelant information about the usage of GENESIS API like credentials. +If there is no config.ini in the given config_dir, a default config will be created with empty credentials. +""" +import logging +from configparser import ConfigParser +from pathlib import Path + +PKG_NAME = __name__.split(".", maxsplit=1)[0] + +logger = logging.getLogger(__name__) + +DEFAULT_CONFIG_DIR = Path().home() / f".{PKG_NAME}" +DEFAULT_SETTINGS_FILE = DEFAULT_CONFIG_DIR / "settings.ini" + + +def create_settings() -> None: + """Create a settings.ini file within the default config folder in the user home directory.""" + if not DEFAULT_SETTINGS_FILE.exists(): + default_settings = ConfigParser() + default_settings["SETTINGS"] = {"config_dir": str(DEFAULT_CONFIG_DIR)} + + _write_config(default_settings, DEFAULT_SETTINGS_FILE) + logger.info( + "Settings file was created. Path: %s.", DEFAULT_SETTINGS_FILE + ) + + +def load_settings() -> ConfigParser: + """Load the config from settings.ini. + + Returns: + ConfigParser: Sections and key-value pairs from settings.ini. + """ + settings_file = DEFAULT_SETTINGS_FILE + + settings = ConfigParser() + settings.read(settings_file) + + return settings + + +def get_config_path_from_settings() -> Path: + """Return full local path to config.ini. + + Returns: + Path: Path to config_dir / config.ini. + """ + settings = load_settings() + return Path(settings.get("SETTINGS", "config_dir")) / "config.ini" + + +def init_config( + username: str, password: str, config_dir: Path = DEFAULT_CONFIG_DIR +) -> None: + """One-time function to be called for new users to create a new config.ini with default values. + + Stores username and password for the GENESIS API, among other settings. + + Args: + username (str): username used to login to GENESIS-Online. + password (str): password used to login to GENESIS-Online. + config_dir (Path, optional): Path to the root config directory. Defaults to the user home directory. + """ + default_settings = load_settings() + default_settings["SETTINGS"]["config_dir"] = str(config_dir) + + _write_config(default_settings, DEFAULT_SETTINGS_FILE) + logger.info( + "Settings file updated: config_dir set to %s. Path: %s.", + config_dir, + DEFAULT_SETTINGS_FILE, + ) + + config_file = get_config_path_from_settings() + config = _create_default_config() + config["GENESIS API"]["username"] = username + config["GENESIS API"]["password"] = password + _write_config(config, config_file) + + cache_dir = Path(config["DATA"]["cache_dir"]) + if not cache_dir.exists(): + cache_dir.mkdir() + + logger.info("New config was created. Path: %s.", config_file) + + +def load_config() -> ConfigParser: + """Load the config from config.ini. + + Returns: + ConfigParser: Sections and key-value pairs from config.ini. + """ + config_file = get_config_path_from_settings() + config = _load_config(config_file) + + if config.has_section("GENESIS API"): + if not config.get("GENESIS API", "username") or not config.get( + "GENESIS API", "password" + ): + logger.critical( + "Username and/or password are missing! " + "Please make sure to fill in your username and password for GENESIS API. " + "Path: %s.", + config_file, + ) + + return config + + +def _write_config(config: ConfigParser, config_file: Path) -> None: + if not config_file.parent.exists(): + config_file.parent.mkdir(parents=True) + + with open(config_file, "w", encoding="utf-8") as fp: + config.write(fp) + + +def _load_config(config_file: Path) -> ConfigParser: + config = ConfigParser() + successful_reads = config.read(config_file) + + if not successful_reads: + logger.critical( + "Error while loading the config file. Could not find %s. " + "Please make sure to run init_config() first. ", + config_file, + ) + + return config + + +def _create_default_config() -> ConfigParser: + config = ConfigParser() + settings = load_settings() + config["GENESIS API"] = { + "base_url": "https://www-genesis.destatis.de/genesisWS/rest/2020/", + "username": "", + "password": "", + "doku": "https://www-genesis.destatis.de/genesis/misc/GENESIS-Webservices_Einfuehrung.pdf", + } + + config["DATA"] = { + "cache_dir": str(Path(settings["SETTINGS"]["config_dir"]) / "data") + } + + return config + + +create_settings() diff --git a/src/pystatis/cube.py b/src/pystatis/cube.py new file mode 100644 index 0000000..ba52689 --- /dev/null +++ b/src/pystatis/cube.py @@ -0,0 +1,201 @@ +"""Module provides functionality to parse cubefile data provided by GENESIS.""" +import copy +from typing import List + +import pandas as pd + +from pystatis.http_helper import load_data + + +class Cube: + """A wrapper class holding all relevant data and metadata about a given cube. + + Args: + name (str): The unique identifier of this cube. + raw_data (str): The raw cubefile data as returned by the /data/cubfile endpoint. + data (pd.DataFrame): The parsed data as a pandas data frame. + cube (dict): Metadata as returned by the /data/cubefile endpoint. + metadata (dict): Metadata as returned by the /metadata/cube endpoint. + """ + + def __init__(self, name: str): + self.name: str = name + self.raw_data = "" + self.data = pd.DataFrame() + self.cube: dict[str, pd.DataFrame] = {} + self.metadata: dict = {} + + def get_data(self, area: str = "all", **kwargs): + """Downloads raw data and metadata from GENESIS-Online. + + Additional keyword arguments are passed on to the GENESIS-Online GET request for cubefiles. + + Args: + area (str, optional): Area to search for the object in GENESIS-Online. Defaults to "all". + """ + params = {"name": self.name, "area": area} + + params |= kwargs + + raw_data = load_data( + endpoint="data", method="cubefile", params=params, as_json=False + ) + assert isinstance(raw_data, str) # nosec assert_used + self.raw_data = raw_data + self.cube = assign_correct_types(rename_axes(parse_cube(raw_data))) + self.data = self.cube["QEI"] + + metadata = load_data( + endpoint="metadata", method="cube", params=params, as_json=True + ) + assert isinstance(metadata, dict) # nosec assert_used + self.metadata = metadata + + +def parse_cube(data: str) -> dict: + """Main function for parsing a cubefile. + + Args: + data (str): The content of a cubefile as returned by GENESIS. + + Returns: + dict: A dictionary with each header type as key and the corresponding header block as value. + """ + cube = {} + header = None + data_block: List[List[str]] = [] + + for line in data.splitlines(): + # skip all rows until first header + if header is None and not _is_cube_metadata_header(line): + continue + + if _is_cube_metadata_header(line): + if data_block: + cube[header_type] = pd.DataFrame(data_block, columns=header) + + header = _get_cube_metadata_header(line, rename_duplicates=True) + header_type: str = _get_cube_metadata_header_type(line) + data_block = [] + continue + + line_content = _parse_cube_data_line(line) + data_block.append(line_content) + + # the last data block has no header after it so we have to do it here + # for cubes with more than one variable in DQI, we have to repeat the last four columns + if header: + last_four_columns = header[-4:] + header = header[:-4] + for var in cube["DQI"]["NAME"]: + header.extend([f"{var}_{col}" for col in last_four_columns]) + + cube[header_type] = pd.DataFrame(data_block, columns=header) + + return cube + + +def rename_axes( + cube: dict, + rename_classifying_variables: bool = True, + rename_time_variable: bool = True, +) -> dict: + """Rename the generic axes of a cubefile with the names found in the metadata. + + Args: + cube (dict): A dictionary holding the cube data as returned by `parse_cube()`. + rename_classifying_variables (bool, optional): If True, rename classifying variables. + Defaults to True. + rename_time_variable (bool, optional): If True, rename the time variable. + Defaults to True. + + Returns: + dict: Same dict as cube but with renamed axes for QEI. + """ + cube = copy.deepcopy(cube) + + old_cols = [] + new_cols = [] + + if rename_classifying_variables: + old_cols.extend( + [col for col in cube["QEI"].columns if col.startswith("FACH-SCHL")] + ) + new_cols.extend(cube["DQA"].sort_values("RHF-ACHSE")["NAME"].to_list()) + + if rename_time_variable: + old_cols.append("ZI-WERT") + new_cols.extend(cube["DQZ"]["NAME"].to_list()) + + cube["QEI"].rename(columns=dict(zip(old_cols, new_cols)), inplace=True) + + return cube + + +def assign_correct_types(cube: dict) -> dict: + """Assign correct value types to column 'WERT'. + + Args: + cube (dict): A dictionary holding the cube data as returned by `parse_cube()`. + + Returns: + dict: Same dict as cube but with changed column types for QEI. + """ + cube = copy.deepcopy(cube) + + for var, dtype in zip(cube["DQI"]["NAME"], cube["DQI"]["DST"]): + if dtype == "GANZ": + cast_type = int # type: ignore[assignment] + elif dtype == "FEST": + cast_type = float # type: ignore[assignment] + else: + cast_type = None # type: ignore[assignment] + + if cast_type is not None: + cube["QEI"][f"{var}_WERT"] = cube["QEI"][f"{var}_WERT"].astype( + cast_type + ) + + return cube + + +def _is_cube_metadata_header(line: str) -> bool: + """Check if a line is a cube metadata header.""" + return line[0] == "K" + + +def _get_cube_metadata_header_type(line: str) -> str: + """Return the header type.""" + return line.split(";")[1] + + +def _get_cube_metadata_header( + line: str, rename_duplicates: bool = False +) -> List[str]: + """Return the metadata header of a cubefile.""" + raw_header = line.split(";")[2:] + raw_header = [ + name + for name in raw_header + if name not in ['"nur Werte"', '"mit Werten"'] + ] + + if not rename_duplicates: + return raw_header + + # header can have multiple entries with same label, which is problematic for pandas + # so lets just add a counter + header = [""] * len(raw_header) + for name in set(raw_header): + if raw_header.count(name) == 1: + header[raw_header.index(name)] = name + else: + for counter in range(raw_header.count(name)): + header[raw_header.index(name) + counter] = f"{name}-{counter+1}" + + return header + + +def _parse_cube_data_line(line: str) -> List[str]: + """Return the content of a cube data line.""" + return line.split(";")[1:] diff --git a/src/pystatis/custom_exceptions.py b/src/pystatis/custom_exceptions.py new file mode 100644 index 0000000..2b09525 --- /dev/null +++ b/src/pystatis/custom_exceptions.py @@ -0,0 +1,7 @@ +"""Define custom "speaking" Exception and Error classes.""" + + +class DestatisStatusError(ValueError): + """Raised when Destatis status code indicates an error ("Fehler")""" + + pass diff --git a/src/pystatis/data/evas.csv b/src/pystatis/data/evas.csv new file mode 100644 index 0000000..4733815 --- /dev/null +++ b/src/pystatis/data/evas.csv @@ -0,0 +1,306 @@ +EVAS ;Beschreibung +1;Gebiet, Bevölkerung, Erwerbstätigkeit, Wahlen +2;Bildung, Sozialleistungen, Gesundheit, Rechtspflege +3;Wohnen, Umwelt +4;Wirtschaftsbereiche +5;Außenhandel, Unternehmen, Handwerk +6;Preise, Verdienste, Einkommen und Verbrauch +7;Öffentliche Finanzen, Steuern und Personal im öffentlichen Dienst +8;Gesamtrechnungen +9;Sonderbereich - interne Zwecke +9;Sonderbereiche +10;Sonderbereich - Leitmaterialien +11;Gebiet +12;Bevölkerung +13;Erwerbstätigkeit +14;Wahlen +19;Andere (für Länder- oder Bundeszwecke) - Gebiet, Bevölkerung, Erwerbstätigkeit, Wahlen +21;Bildung und Kultur, Forschung und Entwicklung +22;Öffentliche Sozialleistungen +23;Gesundheitswesen +24;Rechtspflege +29;Andere (für Länder- oder Bundeszwecke) - Bildung, Sozialleistungen, Gesundheit, Rechtspflege +31;Gebäude und Wohnen +32;Umwelt +33;Flächennutzung +39;Andere (für Länder- oder Bundeszwecke) - Wohnen, Umwelt +41;Land- und Forstwirtschaft, Fischerei +42;Produzierendes Gewerbe: Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +43;Produzierendes Gewerbe: Bereich Energieversorgung, Wasserversorgung, Abwasser- und Abfallentsorgung, Beseitigung von Umweltverschmutzungen +44;Produzierendes Gewerbe: Bereich Baugewerbe +45;Handel (einschl. Instandhaltung und Reparatur von Kfz), Gastgewerbe, Tourismus +46;Transport und Verkehr +47;Finanz- und andere Dienstleistungen +48;Wirtschaftsbereichsübergreifende Ergebnisse +49;Andere (für Länder- oder Bundeszwecke) - Wirtschaftsbereiche +51;Außenhandel +52;Unternehmen und Arbeitsstätten +53;Handwerk und handwerksähnliches Gewerbe +59;Andere (für Länder- oder Bundeszwecke) - Außenhandel, Unternehmen, Handwerk +61;Preise +62;Verdienste, Arbeitskosten +63;Freiwillige Erhebungen zu Einkommen, Ausgaben und Lebensbedingungen privater Haushalte +69;Andere (für Länder- oder Bundeszwecke) - Preise, Verdienste, Einkommen und Verbrauch +71;Öffentliche Finanzen +72;Öffentliche Fonds, Einrichtungen und Unternehmen mit eigenem Rechnungswesen - (Stillgelegt am 01.05.2015) +73;Steuern +74;Personal im öffentlichen Dienst +75;Berichtskreismanagement (BKM) +79;Andere (für Länder- oder Bundeszwecke) - Öffentliche Finanzen, Steuern und Personal im öffentlichen Dienst +81;VGR des Bundes +82;VGR der Länder +83;Zahlungsbilanz, Auslandsvermögen +84;Geld, Zinsen, Währungen +85;UGR +86;UGR der Länder +87;Sozioökonomisches Berichtssystem +88;Gesundheitsökonomische Gesamtrechnung (GGR) der Länder +89;Andere (für Länder- oder Bundeszwecke) - Gesamtrechnungen +90;Sonderbereich - interne Zwecke +91;Auslandsstatistische Informationen +92;Forschung und Entwicklung +93;Weiterentwicklung der Haushaltsstatistiken +94;EVAS-Nummern für die Altdateninventur +95;Bereichsübergreifende Statistiken, Register o.ä. +99;Andere (für Länder- oder Bundeszwecke) - Sonderbereiche +111;Gebietsstand +119;Sonstiges im Bereich Gebiet +121;Volkszählungen +122;Mikrozensus +123;Haushaltspanel +124;Bevölkerungsstand, -vorausberechnung +125;Einbürgerungen, Ausländer +126;Natürliche Bevölkerungsbewegungen +127;Wanderungen +129;Sonstiges im Bereich Bevölkerung +131;Beschäftigte +132;Arbeitsmarkt +133;Erwerbstätige +139;Sonstiges im Bereich Erwerbstätigkeit +141;Bundestagswahlen +142;Europawahlen +143;Landtagswahlen +144;Kommunalwahlen +145;Volksentscheide +149;Sonstiges im Bereich Wahlen +191;Länderstatistiken im Bereich Gebiet +192;Länderstatistiken im Bereich Bevölkerung +193;Länderstatistiken im Bereich Erwerbstätigkeiten +194;Länderstatistiken im Bereich Wahlen +199;Geschäftsstatistiken des Statistischen Bundesamtes im Bereich - Gebiet, Bevölkerung, Erwerbstätigkeit, Wahlen +211;Allgemeinbildende und berufliche Schulen +212;Berufsbildung +213;Hochschulen +214;Ausbildungsförderung +215;Weiterbildung +216;Kultur +217;Bildungsberichterstattung +218;Forschung und Entwicklung +219;Sonstiges im Bereich Bildung und Kultur, Forschung und Entwicklung +221;Sozialhilfe +222;Asylbewerberleistungen +223;Wohngeld +224;Pflege +225;Kinder- und Jugendhilfe +226;Sozialversicherungen +227;Behinderte, Kriegsopfer +228;Sozialberichterstattung und Statistiken nach dem Prostituiertenschutzgesetz +229;Sonstiges im Bereich öffentliche Sozialleistungen +231;Krankenhausstatistik +232;Todesursachen +233;Schwangerschaftsabbrüche +234;Meldepflichtige Krankheiten +235;Berufe des Gesundheitswesens +236;Gesundheitsbezogene Rechensysteme +237;Ambulante Diagnosestatistik +239;Sonstiges im Bereich Gesundheitswesen +241;Gerichte und Personal der Rechtspflege +242;Justizgeschäftsstatistiken +243;Strafverfolgung und -vollzug +244;Bewährungshilfe +249;Sonstiges im Bereich Rechtspflege +291;Länderstatistiken im Bereich Bildung und Kultur, Forschung und Entwicklung +292;Länderstatistiken im Bereich öffentliche Sozialleistungen +293;Länderstatistiken im Bereich Gesundheitswesen +294;Länderstatistiken im Bereich Rechtspflege +299;Geschäftsstatistiken des Statistischen Bundesamtes im Bereich Bildung, Sozialleistungen, Gesundheit und Rechtspflege +311;Bautätigkeit +312;Gebäude und Wohnungen +313;Finanzierung des Wohnungsbaus +319;Sonstiges im Bereich Gebäude und Wohnen +321;Abfallwirtschaft +322;Wasserversorgung und Abwasserentsorgung +323;Wassergefährdende Stoffe +324;Klimawirksame Stoffe +325;Umweltschutzausgaben und -produkte +329;Sonstiges im Bereich Umwelt +331;Flächenerhebungen +339;Sonstiges im Bereich Flächennutzung +391;Länderstatistiken im Bereich Gebäude und Wohnen +392;Länderstatistiken im Bereich Umwelt +393;Länderstatistiken im Bereich Flächennutzung +399;Geschäftsstatistiken des Statistischen Bundesamtes im Bereich Wohnen, Umwelt +411;Struktur der land- und forstwirtschaftlichen Betriebe +412;Bodennutzung und Ernte +413;Viehbestand und tierische Erzeugung +414;Ernährungswirtschaft +419;Sonstiges im Bereich Land- und Forstwirtschaft, Fischerei +421;Konjunkturerhebungen im Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +422;Strukturerhebungen im Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +423;Fachstatistiken einzelner Zweige im Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +429;Sonstiges im Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +431;Konjunkturerhebungen im Bereich Energie- und Wasserversorgung +432;Strukturerhebungen im Bereich Energieversorgung, Wasserversorgung, Abwasser- und Abfallentsorgung, Beseitigung von Umweltverschmutzungen +433;Fachstatistiken im Bereich Energie- und Wasserversorgung: Elektrizität- und Gasversorgung +434;Fachstatistiken im Bereich Energie- und Wasserversorgung: Wärmeversorgung +435;Übrige Fachstatistiken im Bereich Energie- und Wasserversorgung +439;Sonstiges im Bereich Energie- und Wasserversorgung +441;Konjunkturerhebungen im Bereich Baugewerbe +442;Strukturerhebungen im Bereich Baugewerbe +449;Sonstiges im Bereich Baugewerbe +451;Handels- und Gaststättenzählung +452;Konjunkturstatistiken im Bereich Handel (einschl. Instandhaltung und Reparatur von Kfz), Gastgewerbe +453;Strukturstatistiken im Bereich Handel (einschl. Instandhaltung und Reparatur von Kfz), Gastgewerbe +454;Fachstatistiken in einzelnen Zweigen des Bereichs Handel (einschl. Instandhaltung und Reparatur von Kfz), Gastgewerbe, Tourismus +456;Kfz-Handel, Instandhaltung +459;Sonstiges im Bereich Handel (einschl. Instandhaltung und Reparatur von Kfz), Gastgewerbe, Tourismus +461;Eisenbahnverkehr und Straßenpersonenverkehr +462;Straßenverkehr (ohne Personenbeförderung) +463;Binnen- und Seeschifffahrt +464;Luftverkehr +465;Nachrichtenübermittlung +469;Sonstiges im Bereich Transport und Verkehr +471;Wertpapiermärkte +472;Kreditinstitute +473;Versicherungen +474;Dienstleistungen +479;Sonstiges im Bereich Finanz- und andere Dienstleistungen +481;Strukturstatistiken der Unternehmen +482;Flexibles Modul der strukturellen Unternehmensstatistik +491;Länderstatistiken im Bereich Land- und Forstwirtschaft, Fischerei +492;Länderstatistiken im Bereich Produzierendes Gewerbe: Bereich Verarbeitendes Gewerbe, Bergbau und Gewinnung von Steinen und Erden +493;Länderstatistiken im Bereich Produzierendes Gewerbe: Bereich Energie- und Wasserversorgung +494;Länderstatistiken im Bereich Produzierendes Gewerbe: Bereich Baugewerbe +495;Länderstatistiken im Bereich Handel sowie Instandhaltung und Reparatur von Kfz und Gebrauchsgütern, Gastgewerbe, Tourismus +496;Länderstatistiken im Bereich Verkehr und Nachrichtenübermittlung +497;Länderstatistiken im Bereich Finanz- und andere Dienstleistungen +499;Geschäftsstatistiken des Statistischen Bundesamtes im Bereich Wirtschaftsbereiche +511;Intrahandel +512;Extrahandel +519;Sonstiges im Bereich Außenhandel +521;Unternehmensregister +522;Arbeitsstätten +523;Gewerbeanzeigen, -aufsicht +524;Insolvenzen +525;Kostenstrukturen +529;Sonstiges im Bereich Unternehmen und Arbeitsstätten +531;Handwerkszählungen +532;Handwerksberichterstattungen +539;Sonstiges im Bereich Handwerk und handwerksähnliches Gewerbe +591;Länderstatistiken im Bereich Außenhandel +592;Länderstatistiken im Bereich Unternehmen und Arbeitsstätten +593;Länderstatistiken im Bereich Handwerk und handwerksähnliches Gewerbe +599;Geschäftsstatistiken des Bundes im Bereich Außenhandel, Unternehmen, Handwerk +611;Verbraucherpreise +612;Agrarpreise, Erzeugerpreise gewerblicher Produkte, Großhandelspreise, Baupreise +613;Preise für Dienstleistungen +614;Außenhandelspreise +615;Bodenmarkt +616;Preisvergleiche mit dem Ausland +619;Sonstiges im Bereich Preise +621;Verdienststrukturen +622;Tarifverdienste +623;Laufende Verdiensterhebungen +624;Arbeitskosten +629;Sonstiges im Bereich Verdienste, Arbeitskosten +631;Laufende Wirtschaftsrechnungen +632;Einkommens- und Verbrauchsstichproben +633;Dauerstichprobe befragungsbereiter Haushalte +634;Gemeinschaftsstatistik über Einkommen und Lebensbedingungen (EU-SILC) +635;Überschuldungsstatistik +639;Sonstiges im Bereich Wirtschaftsrechnungen privater Haushalte +691;Länderstatistiken im Bereich Preise +692;Länderstatistiken im Bereich Löhne und Gehälter, Arbeitskosten +693;Länderstatistiken im Bereich Freiwillige Erhebungen zu Einkommen, Ausgaben und Lebensbedingungen privater Haushalte +699;Geschäftsstatistiken des Bundes im Bereich Preise, Verdienste, Einkommen und Verbrauch +711;Haushaltsansätze +712;Steuerhaushalt +713;Schulden +714;Finanzvermögen +715;Vierteljährliche Kassenergebnisse +716;Vierteljahresdaten der kaufmännisch buchenden öffentlichen Fonds, Einrichtungen und Unternehmen +717;Rechnungsergebnisse +718;Jahresabschlüsse der kaufmännisch buchenden öffentlichen Fonds, Einrichtungen und Unternehmen +719;Sonstiges im Bereich Öffentliche Finanzen +721;Jahres- und Vierteljahresabschlüsse - (Stillgelegt am 01.05.2015) +722;Schulden - (Stillgelegt am 01.05.2015) +723;Vermögen - (Stillgelegt am 01.05.2015) +729;Sonstiges im Bereich Öffentliche Fonds, Einrichtungen und Unternehmen mit eigenem Rechnungswesen - (Stillgelegt am 01.05.2015) +731;Lohn- und Einkommensteuer +732;Körperschaftsteuer +733;Umsatzsteuer +734;Verbrauchsteuern - (Stillgelegt am 01.01.2015) +735;Gewerbesteuern +736;Steuern vom Vermögen +737;Steuerverteilung +739;Sonstiges im Bereich Steuern +741;Personalstand +742;Versorgungsempfänger +749;Sonstiges im Bereich Personal im öffentlichen Dienst +751;Berichtskreismanagement Finanz- und Personalstatistiken +791;Länderstatistiken im Bereich Öffentliche Finanzen +792;Länderstatistiken im Bereich Öffentliche Fonds, Einrichtungen und Unternehmen mit eigenem Rechnungswesen - (Stillgelegt am 01.01.2015) +793;Länderstatistiken im Bereich Steuern +794;Länderstatistiken im Bereich Personal im öffentlichen Dienst +799;Geschäftsstatistiken des Bundes im Bereich Öffentliche Finanzen, Steuern und Personal im öffentlichen Dienst +811;Entstehung und Verwendung des Inlandsprodukts +812;Verteilung und Umverteilung des Nationaleinkommens +813;Einnahmen und Ausgaben des Staats +814;Außenwirtschaft +815;Input-Output-Rechnung +816;Vermögensrechnung +817;Satellitensysteme +819;Sonstiges im Bereich VGR des Bundes +821;Entstehungsrechnung +822;Verteilungsrechnung Inländerkonzept +823;Verteilungsrechnung Inlandskonzept +824;Umverteilungsrechnung +825;Verwendungsrechnung +826;VGR-Bezugszahlen +827;Kreisberechnungen +829;Sonstiges im Bereich VGR der Länder +831;Zahlungsbilanz +832;Auslandsvermögen +839;Sonstiges im Bereich Zahlungsbilanz, Auslandsvermögen +841;Bankstatistische Gesamtrechnungen +842;Statistiken der Deutschen Bundesbank +843;Zinsen und Währungen +849;Sonstiges im Bereich Geld, Zinsen, Währungen +851;Material- und Energieflussrechnungen +852;Nutzung von Fläche und Raum +853;Umweltzustand +854;Maßnahmen des Umweltschutzes +855;Vermeidungskosten +859;Sonstiges im Bereich UGR +861;Material- und Energieflussrechungen +862;Nutzung von Fläche und Raum +863;Umweltzustand +864;Maßnahmen des Umweltschutzes +865;Vermeidungskosten +869;Sonstiges im Bereich UGR der Länder +871;Sozioökonomisches Berichtssystem +892;Länderstatistiken im Bereich VGR der Länder +893;Länderstatistiken im Bereich Zahlungsbilanz, Auslandsvermögen +894;Länderstatistiken im Bereich Geld, Zinsen, Währungen +895;Länderstatistiken im Bereich UGR +899;Geschäftsstatistiken des Bundes im Bereich Gesamtrechnungen +921;Ausgaben und Einnahmen für Wissenschaft und Forschung +922;Nationale und internationale Berichterstattung über Forschung und Entwicklung +929;Sonstiges im Bereich Forschung und Entwicklung +931;Test der Teilnahmebereitschaft +941;EVAS-Nummern für die Altdateninventur +951;Register +991;Länderstatistiken im Bereich Auslandsstatistische Informationen +992;Länderstatistiken im Bereich Forschung und Entwicklung +993;Indikatoren zur nachhaltigen Entwicklung +999;Geschäftsstatistiken des Bundes in Sonderbereichen diff --git a/src/pystatis/find.py b/src/pystatis/find.py new file mode 100644 index 0000000..5715998 --- /dev/null +++ b/src/pystatis/find.py @@ -0,0 +1,280 @@ +"""Implements find endpoint to retrieve results based on query""" +import pandas as pd + +from pystatis.http_helper import load_data + +pd.set_option("max_colwidth", None) +pd.set_option("expand_frame_repr", False) + + +class Results: + """ + A class representing the result object of variables, statistics, cubes and tables. + + Attributes: + df (pd.DataFrame): The DataFrame that contains the data. + category (str): Category (plural) of the result. E.g. "tables", "cubes". + + Methods: + get_code(): Gets code based on the index of the object. + get_metadata(): Gets metadata based on the index of the object. + """ + + def __init__(self, result: pd.DataFrame, category: str) -> None: + """ + Class that contains the results of a find query. + + Args: + result (pd.DataFrame): Result of a search query. + category (str): Category of the result. E.g. "tables", "cubes" + """ + self.df = result + self.category = category + + def __repr__(self) -> str: + return self.__str__() + + def __str__(self) -> str: + return str(self.df.to_markdown()) + + def __len__(self) -> int: + if len(self.df) > 0: + return len(self.df) + else: + return 0 + + def get_code(self, row_numbers: list) -> list: + """ + Returns the code for a given list of tables. + + Args: + row_numbers (list): A list that contains the row numbers from the results objects. This is not the object + code." + Returns: + table codes (list): Contains the corresponding tables codes. + """ + + codes = self.df.iloc[row_numbers]["Code"] + return list(codes) + + def get_metadata(self, row_numbers: list) -> None: + """ + Prints meta data for a given list of tables. + + Args: + row_numbers (list): A list that contains the row_numbers from the results objects. This is not the object + code." + """ + codes = self.df.iloc[row_numbers]["Code"] + + for code, ix in zip(codes, row_numbers): + response = self._get_metadata_results( + self.category[0:-1], code + ) # Category is truncated, because + # metadata endpoints works with singulars + + if self.category == "tables": + structure_dict = response["Object"]["Structure"] + + output = "\n".join( + [ + f"{self.category.upper()} {code} - {ix}", + "Name:", + structure_dict["Head"]["Content"], + f"{'-' * 20}", + "Columns:", + "\n".join( + [ + col["Content"] + for col in structure_dict["Columns"] + ] + ), + f"{'-' * 20}", + "Rows:", + "\n".join( + [row["Content"] for row in structure_dict["Rows"]] + ), + f"{'-' * 40}", + ] + ) + + elif self.category == "cubes": + axis_dict = response["Object"]["Structure"]["Axis"] + + output = "\n".join( + [ + f"{self.category.upper()} {code} - {ix}", + "Name:", + response["Object"]["Content"], + f"{'-' * 20}", + "Content:", + "\n".join( + [content["Content"] for content in axis_dict] + ), + f"{'-' * 40}", + ] + ) + + elif self.category == "statistics": + structure_dict = response["Object"] + + output = "\n".join( + [ + f"{self.category.upper()} {code} - {ix}", + "Name:", + response["Object"]["Content"], + f"{'-' * 20}", + "Content:", + "\n".join( + [ + f"{structure_dict[content]} {content}" + for content in ["Cubes", "Variables", "Updated"] + ] + ), + f"{'-' * 40}", + ] + ) + + elif self.category == "variables": + object_dict = response["Object"] + + output = "\n".join( + [ + f"{self.category.upper()} {code} - {ix}", + "Name:", + object_dict["Content"], + f"{'-' * 20}", + "Information:", + str(object_dict["Information"]), + f"{'-' * 40}", + ] + ) + + print(output) + + @staticmethod + def _get_metadata_results(category: str, code: str) -> dict: + """ + Based on the category and code query parameters the metadata will be generated. + + Args: + category (str): Category of the result. E.g. "tables", "cubes" + code (str): The code (identifier) of the relevant category object. + Returns: + response (json): The response as a json. + """ + params = { + "name": code, + } + + response = load_data( + endpoint="metadata", method=category, params=params, as_json=True + ) + assert isinstance(response, dict) # nosec assert_used + + return response + + +class Find: + """ + A class representing the find object that includes Result objects for variables, statistics, cubes and tables. + + Attributes: + query (str): The query that is provided to find endpoint. + statistics (Results): Statistics that match with the query. + tables (Results): Tables that match with the query. + variables (Results): Variables that match with the query. + cubes (Results): Cubes that match with the query. + + Methods: + run(): Queries the API and prints summary. + summary(): Prints summary of all results. + """ + + def __init__(self, query: str, top_n_preview: int = 5) -> None: + """Method for retrieving data from find endpoint. + + Args: + query (str): The query that is provided to find endpoint. + top_n_preview (int): Number of previews in print summary. + """ + self.query = query + + self.top_n_preview = top_n_preview + self.statistics = Results(pd.DataFrame(), "statistics") + self.variables = Results(pd.DataFrame(), "variables") + self.tables = Results(pd.DataFrame(), "tables") + self.cubes = Results(pd.DataFrame(), "cubes") + + self.is_run = False + + def run(self): + self.statistics = self._get_find_results("statistics") + self.variables = self._get_find_results("variables") + self.tables = self._get_find_results("tables") + self.cubes = self._get_find_results("cubes") + + self.is_run = True + + print(self.summary()) + + def summary(self): + """ + Returns: + summary_string: String that contains summary statistics. + """ + + if self.is_run: + return "\n".join( + [ + "##### Results #####", + f"{'-' * 40}", + f"# Number of tables: {len(self.tables.df)}", + "# Preview:", + self.tables.df.iloc[: self.top_n_preview].to_markdown(), + f"{'-' * 40}" + f"# Number of statistics: {len(self.statistics.df)}", + "# Preview:", + self.statistics.df.iloc[: self.top_n_preview].to_markdown(), + f"{'-' * 40}", + f"# Number of variables: {len(self.variables.df)}", + "# Preview:", + self.variables.df.iloc[: self.top_n_preview].to_markdown(), + f"{'-' * 40}", + f"# Number of cubes: {len(self.cubes.df)}", + "# Preview:", + self.cubes.df.iloc[: self.top_n_preview].to_markdown(), + f"{'-' * 40}", + "# Use object.tables, object.statistics, object.variables or object.cubes to get all results.", + f"{'-' * 40}", + ] + ) + else: + return "No data found. Please use .run() to retrieve data." + + def _get_find_results(self, category: str, **kwargs) -> Results: + """ + Based on the query (term), category and additional query parameters a Result object will be created. + + Args: + category (str): Category of the result. E.g. "tables", "cubes" + query_params (dict, optional): Additional query parameters (Default: None) + Returns: + pd.DataFrame + """ + + params = { + "term": self.query, + "category": category, + } + + params |= kwargs + + response = load_data( + endpoint="find", method="find", params=params, as_json=True + ) + assert isinstance(response, dict) # nosec assert_used + response_dict = response[category.capitalize()] + response_df = pd.DataFrame(response_dict).replace("\n", " ", regex=True) + + return Results(response_df, category) diff --git a/src/pystatis/helloworld.py b/src/pystatis/helloworld.py new file mode 100644 index 0000000..865c853 --- /dev/null +++ b/src/pystatis/helloworld.py @@ -0,0 +1,49 @@ +"""Module provides wrapper for HelloWorld GENESIS REST-API functions.""" + +import requests + +from pystatis.config import load_config +from pystatis.http_helper import _check_invalid_status_code + + +def whoami() -> str: + """ + Wrapper method which constructs an URL for testing the Destatis API + whoami method, which returns host name and IP address. + + Returns: + str: text test response from Destatis + """ + config = load_config() + url = f"{config['GENESIS API']['base_url']}" + "helloworld/whoami" + + response = requests.get(url, timeout=(1, 15)) + + _check_invalid_status_code(response) + + return str(response.text) + + +def logincheck() -> str: + """ + Wrapper method which constructs an URL for testing the Destatis API + logincheck method, which tests the login credentials (from the config.ini). + + Returns: + str: text logincheck response from Destatis + """ + config = load_config() + url = f"{config['GENESIS API']['base_url']}" + "helloworld/logincheck" + + params = { + "username": config["GENESIS API"]["username"], + "password": config["GENESIS API"]["password"], + } + + response = requests.get(url, params=params, timeout=(1, 15)) + + # NOTE: Cannot use get_data_from_endpoint due to colliding + # and misleading usage of "Status" key in API response + _check_invalid_status_code(response) + + return str(response.text) diff --git a/src/pystatis/http_helper.py b/src/pystatis/http_helper.py new file mode 100644 index 0000000..689eea2 --- /dev/null +++ b/src/pystatis/http_helper.py @@ -0,0 +1,301 @@ +"""Wrapper module for the data endpoint.""" +import json +import logging +import re +import time +from pathlib import Path +from typing import Union + +import requests + +from pystatis.cache import ( + cache_data, + hit_in_cash, + normalize_name, + read_from_cache, +) +from pystatis.config import load_config +from pystatis.custom_exceptions import DestatisStatusError + +logger = logging.getLogger(__name__) + +JOB_ID_PATTERN = re.compile(r"\d+-\d+_\d+") +JOB_TIMEOUT = 60 + + +def load_data( + endpoint: str, method: str, params: dict, as_json: bool = False +) -> Union[str, dict]: + """Load data identified by endpoint, method and params. + + Either load data from cache (previous download) or from Destatis. + + Args: + endpoint (str): The endpoint for this data request. + method (str): The method for this data request. + params (dict): The dictionary holding the params for this data request. + as_json (bool, optional): If True, result will be parsed as JSON. Defaults to False. + + Returns: + Union[str, dict]: The data as raw text or JSON dict. + """ + config = load_config() + cache_dir = Path(config["DATA"]["cache_dir"]) + name = params.get("name") + + if name is not None: + name = normalize_name(name) + + if endpoint == "data": + if hit_in_cash(cache_dir, name, params): + data = read_from_cache(cache_dir, name, params) + else: + response = get_data_from_endpoint(endpoint, method, params) + data = response.text + + # status code 98 means that the table is too big + # we have to start a job and wait for it to be ready + response_status_code = 200 + try: + # test for job-relevant status code + response_status_code = response.json().get("Status").get("Code") + except json.decoder.JSONDecodeError: + pass + + if response_status_code == 98: + job_response = start_job(endpoint, method, params) + job_id = get_job_id_from_response(job_response) + data = get_data_from_resultfile(job_id) + + cache_data(cache_dir, name, params, data) + else: + response = get_data_from_endpoint(endpoint, method, params) + data = response.text + + if as_json: + parsed_data: dict = json.loads(data) + return parsed_data + else: + return data + + +def get_data_from_endpoint( + endpoint: str, method: str, params: dict +) -> requests.Response: + """ + Wrapper method which constructs an url for querying data from Destatis and + sends a GET request. + + Args: + endpoint (str): Destatis endpoint (eg. data, catalogue, ..) + method (str): Destatis method (eg. cube, tablefile, ...) + params (dict): dictionary of query parameters + + Returns: + requests.Response: the response object holding the response from calling the Destatis endpoint. + """ + config = load_config() + url = f"{config['GENESIS API']['base_url']}{endpoint}/{method}" + + # params is used to calculate hash for caching so don't alter params dict here! + params_ = params.copy() + params_.update( + { + "username": config["GENESIS API"]["username"], + "password": config["GENESIS API"]["password"], + } + ) + + response = requests.get(url, params=params_, timeout=(5, 15)) + + response.encoding = "UTF-8" + _check_invalid_status_code(response) + _check_invalid_destatis_status_code(response) + + return response + + +def start_job(endpoint: str, method: str, params: dict) -> requests.Response: + """Small helper function to start a job in the background. + + Args: + endpoint (str): Destatis endpoint (eg. data, catalogue, ..) + method (str): Destatis method (eg. cube, tablefile, ...) + params (dict): dictionary of query parameters + + Returns: + requests.Response: the response object holding the response from calling the Destatis endpoint. + """ + logger.warning( + "Die Tabelle ist zu groß, um direkt abgerufen zu werden. Es wird eine Verarbeitung im Hintergrund gestartet." + ) + params["job"] = "true" + + # starting a job + response = get_data_from_endpoint( + endpoint=endpoint, method=method, params=params + ) + + return response + + +def get_job_id_from_response(response: requests.Response) -> str: + """Get the job ID of a successful started job. + + Args: + response (requests.Response): Response from endpoint request with job set equal to true. + + Returns: + str: the job id. + """ + # check out job_id & inform user + content = "" + try: + content = response.json().get("Status").get("Content") + except json.JSONDecodeError: + pass + + match_result = JOB_ID_PATTERN.search(content) + job_id = match_result.group() if match_result is not None else "" + + return job_id + + +def get_data_from_resultfile(job_id: str) -> str: + """Get data from a job once it is finished or when the timeout is reached. + + Args: + job_id (str): Job ID generated by Destatis API. + + Returns: + str: The raw data of the table file as returned by Destatis. + """ + params = { + "selection": "*" + job_id, + "searchcriterion": "code", + "sortcriterion": "code", + "type": "all", + } + + time_ = time.perf_counter() + + while (time.perf_counter() - time_) < JOB_TIMEOUT: + response = get_data_from_endpoint( + endpoint="catalogue", method="jobs", params=params + ) + + jobs = response.json().get("List") + if len(jobs) > 0 and jobs[0].get("State") == "Fertig": + break + + time.sleep(5) + else: + return "" + + params = { + "name": job_id, + "area": "all", + "compress": "false", + "format": "ffcsv", + } + response = get_data_from_endpoint( + endpoint="data", method="resultfile", params=params + ) + return str(response.text) + + +def _check_invalid_status_code(response: requests.Response) -> None: + """ + Helper method which handles the status code from the response + + Args: + response (requests.Response): The response object from the request + + Raises: + AssertionError: Assert that status is not 4xx or 5xx + """ + if response.status_code // 100 in [4, 5]: + try: + body: dict = response.json() + except json.JSONDecodeError: + body = {} + + content = body.get("Content") + code = body.get("Code") + logger.error("Error Code: %s. Content: %s.", code, content) + raise requests.exceptions.HTTPError( + f"The server returned a {response.status_code} status code." + ) + + +def _check_invalid_destatis_status_code(response: requests.Response) -> None: + """ + Helper method which handles the status code returned from Destatis + (if exists) + + Args: + response (requests.Response): The response object from the request + + """ + try: + response_dict = response.json() + # catch possible errors raised by .json() (and only .json()) + except ( + UnicodeDecodeError, + json.decoder.JSONDecodeError, + requests.exceptions.JSONDecodeError, + ): + response_dict = None + + if response_dict is not None: + _check_destatis_status(response_dict.get("Status", {})) + + +def _check_destatis_status(destatis_status: dict) -> None: + """ + Helper method which checks the status message from Destatis. + If the status message is erroneous an error will be raised. + + Possible Codes (2.1.2 Grundstruktur der Responses): + # TODO: Ask Destatis for full list of error codes + - 0: "erfolgreich" (Type: "Information") + - 22: "erfolgreich mit Parameteranpassung" (Type: "Warnung") + - 104: "Kein passendes Objekt zu Suche" (Type: "Information") + + Args: + destatis_status (dict): Status response dict from Destatis + + Raises: + DestatisStatusError: If the status code or type displays an error (caused by the user inputs) + """ + # -1 status code for unexpected errors and if no status code is given (faulty response) + destatis_status_code = destatis_status.get("Code", -1) + destatis_status_type = destatis_status.get("Type", "Information") + destatis_status_content = destatis_status.get("Content") + + # define status types + error_en_de = ["Error", "Fehler"] + warning_en_de = ["Warning", "Warnung"] + + # check for generic/ system error + if destatis_status_code == -1: + raise DestatisStatusError(destatis_status_content) + + # check for destatis/ query errors + elif (destatis_status_code == 104) or (destatis_status_type in error_en_de): + if destatis_status_code == 98: + pass + else: + raise DestatisStatusError(destatis_status_content) + + # output warnings to user + elif (destatis_status_code == 22) or ( + destatis_status_type in warning_en_de + ): + logger.warning(destatis_status_content) + + # output information to user + elif destatis_status_type.lower() == "information": + logger.info( + "Code %d: %s", destatis_status_code, destatis_status_content + ) diff --git a/src/pystatis/profile.py b/src/pystatis/profile.py new file mode 100644 index 0000000..94bba5c --- /dev/null +++ b/src/pystatis/profile.py @@ -0,0 +1,73 @@ +"""Module provides wrapper for Profile GENESIS REST-API functions.""" + +import logging +from typing import cast + +from pystatis.config import ( + _write_config, + get_config_path_from_settings, + load_config, +) +from pystatis.http_helper import load_data + +logger = logging.getLogger(__name__) + + +def change_password(new_password: str) -> str: + """ + Changes Genesis REST-API password and updates local config. + + Args: + new_password (str): New password for the Genesis REST-API + + Returns: + str: text response from Destatis + """ + params = { + "new": new_password, + "repeat": new_password, + } + + # load config.ini beforehand, to ensure passwords are changed at the same time + config = load_config() + try: + config["GENESIS API"]["password"] + except KeyError as e: + raise KeyError( + "Password not found in config! Please make sure \ + init_config() was run properly & your user data is set correctly!", + ) from e + + # change remote password + response_text = load_data( + endpoint="profile", method="password", params=params + ) + # change local password + config["GENESIS API"]["password"] = new_password + _write_config(config, get_config_path_from_settings()) + + logger.info("Password changed successfully!") + + return cast(str, response_text) + + +def remove_result(name: str, area: str = "all") -> str: + """ + Remove 'Ergebnistabellen' from the the permission space 'area'. + Should only apply for manually saved data, visible in 'Meine Tabellen' in the Web Interface. + + Args: + name (str): 'Ergebnistabelle' to be removed + area (str): permission area in which the 'Ergebnistabelle' resides + + Returns: + str: text response from Destatis + """ + params = {"name": name, "area": area, "language": "de"} + + # remove 'Ergebnistabelle' with previously defined parameters + response_text = load_data( + endpoint="profile", method="removeresult", params=params + ) + + return cast(str, response_text) diff --git a/src/pystatis/table.py b/src/pystatis/table.py new file mode 100644 index 0000000..071fc93 --- /dev/null +++ b/src/pystatis/table.py @@ -0,0 +1,49 @@ +"""Module contains business logic related to destatis tables.""" +from io import StringIO + +import pandas as pd + +from pystatis.http_helper import load_data + + +class Table: + """A wrapper class holding all relevant data and metadata about a given table. + + Args: + name (str): The unique identifier of this table. + raw_data (str): The raw tablefile data as returned by the /data/table endpoint. + data (pd.DataFrame): The parsed data as a pandas data frame. + metadata (dict): Metadata as returned by the /metadata/table endpoint. + """ + + def __init__(self, name: str): + self.name: str = name + self.raw_data = "" + self.data = pd.DataFrame() + self.metadata: dict = {} + + def get_data(self, area: str = "all", **kwargs): + """Downloads raw data and metadata from GENESIS-Online. + + Additional keyword arguments are passed on to the GENESIS-Online GET request for tablefile. + + Args: + area (str, optional): Area to search for the object in GENESIS-Online. Defaults to "all". + """ + params = {"name": self.name, "area": area, "format": "ffcsv"} + + params |= kwargs + + raw_data = load_data( + endpoint="data", method="tablefile", params=params, as_json=False + ) + assert isinstance(raw_data, str) # nosec assert_used + self.raw_data = raw_data + data_str = StringIO(raw_data) + self.data = pd.read_csv(data_str, sep=";") + + metadata = load_data( + endpoint="metadata", method="table", params=params, as_json=True + ) + assert isinstance(metadata, dict) # nosec assert_used + self.metadata = metadata diff --git a/tests/rsc/data.zip b/tests/rsc/data.zip new file mode 100644 index 0000000000000000000000000000000000000000..c036a7ce59fe21081f516f451de1780030300e5d GIT binary patch literal 418523 zcmX6@2RzjO|L0t~lXZ7wWOHY8$jUk#ij!3+oA3=~Wp7UIC@V9v%F0%u>_avUtFlLC z+1v5|^!q;^d_M2Td%d3T*LuI-&-)naQGuB#C@3Hls3QKm^|o8)lZR9k{jEF{^gykY z^mQpI4P7)^O5%zClQ+#)RT90PuL9iLE+V#;D8%nLE}4C-d}$x|M*kbUQP}Q@U>p9C zt-zHN3hMKHgsAJGqUg}{W<0a39M5B;P4BlNt)|)!u!|S_aW>>*o6zlkwTthq7r!oQ z)I#?=+)v%tB@@)hQvn{#sR#qsb#*wn%O&~3GgxtY*yhKr-PKfvEvTy5%3 zT-ZgoP0Am&&F-+rODq@UFksG$GlSNnxeN001zGZ-G34xp+d}D&Ds_D-Juexj2YxJ>6|R`;~jKszwGxl(|a!%!D1= z)IDmgRGYlG2<`hfr@T$>-cs@5#rEks!_38b%z8rWaoJ|*@dEdF*iXr@GfK77QTL0j zg{ms@&+XQ;_8iN~NVPC>N5Z%#=h1Fe%LO?>ZLrLm`Qq1M>*>Q^31wD)&bu$p|NYm` zkk2+-$;V5u1NGLHlhMtYi-U9WX4uhV@^V$^+3Lya#rgU=!^QsL4Eg9gL+j}jL)cOE zt1SldPE0F#TQDdp>_qKiOYI_eeSGF(Zu8Gn=wYL4<6ozvEbdUfii&f`s<;@-^{}(S z+?I^+%spm$GC~Pzj8Bk8Lq*Ixx_T18RBkK0qW4p~4N6jA|u(8cH1Ww-A3o4XaUAD>y-`n*p zZ1MelzAv-woyFIeQJgF4kQ18o@TOK;K*z&CT)7(#*AKqU(B>&L%$+kkFqiix$3-YA%pG2luoA>;K(kbda|I}Cj$e#KrkFOk(T}tIR0r01&sgn|Oy`YVQ*E7GqP45w_(+);h zYYSDR=*GT9rv2ZO?GSN-fNP`2h(h2al7Zg3TYvrFC0wd8-+7t1$U-Q=t|t)}T)1&Y|w2X9IgO zljuxTEwic=%iqC9)!K0yHRFpGVgI$DpjxWgxUXhSA3AeO8LH{y>mfE_?s`qL7kM+k zk~zaR+x3DG13{p^QKz#@U=CE@cBf#T^@l?1(jW50sz0CDZ1pnQk|bG=!5KSO5HG^N z*F}2jT+o&yTTnOt9`wKWuh+)Z#OpP~1MhRQyArEN)X5ZkPiR)^7I2iP-;t@BZ7FqE zz!@1=xZVzJazT8c$E z6`cLecTO~%9Bf}|Sw?Q@>S)~YQk%!zrtXuCZr5q^d@gfN4RX7}bCZMe&ziIHb;ydD z+I+rxTf<3OU}1odofyo+T9b8Jjmq^SH|Z0WBJloZ%!f&ac6L--;QcQOAeRGZ-7mzG zmlW%(o#yxZLlBnK;DIveUw060A_1qiq2S)zlq`OzWBP7>m_8bVOE?Eq#}Vc<74!Ob=yltaIv`g@jd-9Ut09C$iFmAI+MjW+=kNPtg)I( zpsoDITyO$~xzCB4Ra_YJ1~ahK)Q#au(M+<$5gdvxyNz~)W+Xf6hW7^dzlXJLNQ#u70&NUp(Kle%-&s>&9$`wyKWOuRtBmvEp@d2HYfr;5*mYwuVadDvAGJadFeX;fVc3&w1ZTv;Snu-BXJ zPS#0Wc&c4;9Vo>7HJP~EAl4HCY4lEqJRJUFahMiv;&Hj*Nlz`bn-`l>X1?o0=nyk& zFZ}&Z!jCuODZy!YV$Y~nATMPyogt{K^Q-|m%TZdd(TC>=O?lK{cP;IqmBpYzJ5m?( z@wT0)Mw{p02>QLGs<+KlrOe@1@{Q;%9?$@Z<$6?jfPTBER$G9+-OMpF8mbWeh@Nun zd!*K}zQo(vnkPR>>cZbZ#4bnLZNQE7U~=LT$PXKlM<3se7)L|k>FM`V!UfY`x~$u- zRop)HYVY)ezAc2trSuz#Ybt#4e)!gL%%A5IZq$qB7iW6;{UVQ*xt+U@%vbrh)57oV zd-~|L-7~JZ(p^2P=J&Bo4lZL8FJrT`kx1YaEYDQ!F5To6`>Oiq!<)~eu|q5e4HCz9 zy_i3pjguMWXe2KA&P0os^+!&ndOXa9Sb#rxeylz)J-P42eIXJNkBYCbL` zc4Iuh^C~O?ZQUM+?exr~U3>IlWOjvE(+E5x*%|GMyb(>3SlZx^sz1}&IqsSxh;6x~ zmp6s8i>OV^e-W!w)s1BNXzUI46#dI0=C^oABY9AmJ+|#o)LahR#?VlhQCKa(9ny8KroJJBh7eNq1rn7Q5U|novjLqo9N@2 z;KsF;rt!NuPRvheqTC$+^L%m@F_x)PX|NUDFgp7zWCFKg#!R1|DP&f$J*R|-fo%Zn-ArUvX2#0@g*A-@@cd1-FKCkZKGT5^{>8TJ1o19f|EX|)92O^}TovqOz zvyGl-+L0qgBUYhyLU9mF2@AUnE27qE;&&*p4@>1^Kk)DjW3+QYFNiszaCCveC;j-+ z2*#i7fUPv1Y_iywsz2J!zlaw~#yj=yM*B zb(F$DF7ytRxbB6H2r0c<3??%bDnmclGy~>- zhFza_$rGXnOrqg(4M8=Nw8rp;mZpvpwmcf$^N=r5-w;0qhi%b+E>*;3s0b~7l?DtD zR37tH14EGTJ>g9RW;sqxC@ST@Faw@b9h#OP`(?#7N$fUtL%pv zbDhwDgIwy5g9Nn;Z3NJ=VW)nDD3J20PfryOZ2ZDBK+GWr?WdELvA;TPPG9ljk1CF7R>D>qi zo}Je2k>Gr%$V=WlYK=(=L|vUhd;hJ6724TAeuz-f z1c(V0FAb6CDa*^7MSOTQlbGz7xumSZq?JsaYWk49+m&BCr8AhCH5%sH-U0U-#> zG_rRwj4oe@s(r-cJ4+I9*cgkoq|!yGL}R6 zaC9$ia}j{Gz@n*MruuaF6Fc0-xB?!S-_Y%*f*GJhTZpRkzkUGb0;^?I_8Q`A)h@x| zRVHgsoNmZ5Hr_B6!=9X{kka@m;>+@E1+}b%HV|*>h=T$whf^WyceinrFQiTeHrS#$ zaStBRL-{YLejn$sBMqa30ku&kRC~A_r-rjbwnzTie{_~!*FU=W=GG>h@)ySNHX!^H zqdu_4cE$tZzokrkz&^=t`Ak;tY+H3z1_J#NPv<|ELPwJ&3adyl9L|O4n%8$;O`Gb` z{gx0CgkAPM3Cx{w;bEe1DBx|qzHeGY-Nz;XqjG%fHK=6tK}aim{0A73ykjnZ`ee>9 zgTUE+QtDhT!X!N3aDsA6B4Sp;XVJW*MO&I*W_%vEu=YkxOL@g793O;I^f_Q2pf}Sr zsYQP6722Kg=w|-{lby2Oh#gZb(;rMMfeNM9be)kBA$`b6XOk0HMsK39Pm8}sqbCal z^=)3UXOL@1{X}P7N2|&LCQ3!dNh55AC(lTh9cd8*okapdA>VFc-#J5y(6BP09&(!aTN*IsYHXVglUc7lNkF~CpdEasrJ<|{V?{>J#O>VE zho|^^@!{aUb~y+m57n1}Pj5vU<|YsWU+LDd!05Wn_f%WO@u<#n1f>@1$Cz>pXRn#Z zvA{7+Gv4@qJ@Rf1AESM&VYE*Y!~~pQK#w2@A?BNjXf1{4?^pR4jZoN^j9-o3S=&TB z)?$=i%S3CjYJd?ix$zjr(aGmfK&267q& z71Egegu5;yI$vi`V#@ETDZ=$Q_nqj_pUCfkTvr#;>F5!$MQpOLMW7%{;ZVRR;w{su zu=QhD(DzJ?fVzE%`Af8}8?RJEnTY+SID$^_{z+`@bvur2n&D0~-*i4&>QQm(OEabU zK6~$1kneb2%fB69OHhrYdDxImqwL(XdO;kM@TXX4C$c-#6=k@pd}ykm!x)$dQHZx^ zK_S*Tc)5t!wr19DLv+n`UTggpC!R`^r3qg_~bm)M{p zgr_pZIzZqo8izGm~r> zElvZ2$i~w-pm6Y^Be4i#ylAR)2P`@9p5fzL88z1kM8s!5r~B&gz+mfkaBRjEsyMhk z-PPnL8A8SlYKRz=5|(G50%Fmh;p9qY!TMPz@_z8lfkZK8F}RsoIb(xo?77ebZ@Y|LG%;{>~5dm15h&0Mk;Zo zVN!nIlyECp6*=q43p$TFYDa-%p6mWaE|%(5{MED-lK`&qFO_>G@|ES$Axw2R14T`qklDBD_1;4 zNwDs48Ndoyi&Q0f{fUQ1xFwN{0|}D=IXj~#nSFKAZ*uHnzeMlyrI zYCSah5Jiv}kL#VSqH>_P*U8eI$KB8$u!E5u{Q$w?g?6o#&4}2NtoQ+zPS9 zhcZTmXfxET9Nafu)#4su*1=v_gTrwc!jwtAZ{c`g$eM%cSe{8M5?JD9 zoWskv{pJ!Hk693xd`=cNJ=pqV632(IT`rsnzPUAGccz>{`=awDx+ue6x2s{6pKFs{ zyTO&;;@1$K3>X)T%$~XuZ$PChcc|gnqRg0wv$~t7RdwY z>d(X!e5&^GxYh5Bu*66_JZ3T$%|NRg)_DQt>{4Nn`bwnhSEP74%-LEh!qpR;9;J6* z^;0#)@f*jkrw6zC@1kLr-@G1?ggkHc`_N=br@wcTPCfBL;JJ#g1oNix+;RN1o}8BD zp(ut}TGRM?1;qm)4gExlC!jbCKE7GvO}X{}^!I@s70}6m*Cv@*`l#<8Z0J2QUQESs z^0I{M$18_CG7%1rc3B&>Y0D^uaLcjUKRWxPi~0=syI&o}b9I}Z_up4deaD~vA^3Lt zXYYIc#c;w(ZQ39y&h=EPwrXXyA;fCh%ScX8!u?}5$>q;ZT7tL)svFxJ&)aa@a@uPO z|C&F&-m=VtXMHEl6=Asm^c!lJWkfX4sw?z)2lVeV9e4tDj@q|AN@_A*?_3f;M6v2f zxCh*6pIhBYd!+U@p%ZZ7@W<(O%F!eiTpLzM!@L9l)ySiy`tU~%T#{b(VE}}3SK?uS zkW;c-+Dg4alW` zP);q!0ncLF`A_9b-Vjt}|NSv9HmjetrJootFYcrr>O+4$A@(1nO#Jy``P&O75{L15H(|8+85}4u+G5fM@`I-zytURj6EnhF@swVUSxPFf`|~z&2%o; zxJue*dp4npfymky@E}zuPo-)=G}41tZcR8yG9nW3o$s5Gb2u@zdI3oKM`=$BXuh^g ztsH1OpO?2@pfk%@`@rWWv!qap(3M+^KjR3I{VEIA0-*GY&(2WXop+-4dU)tfjSVv= zkPeze5VX%Abe^iAitdP|LH*<5D*hHwae7`Skg3Loj6(s&*LWE7aB;$*9ozgek>N zmY(}L;r3iNYCd#;1$Yma5IN8N`>~zS%{#yQ?F1mm)l3ZeyMh27I->SmB^k#7QNO7| z#p_h_sv9q?@qB6(hk@D8a3c)y6Lrp@eC^UC|HkL@CBYhx)o%{&AtB;&W7i6MU-EEx zR&pXx5EWlv8N0|lF?wtU4`ft2<3AKH$tel~iA0wY+VY=QXERF84d|*Ybk=;D{^b7n zb*Ep`4@gaVBy<8olx)4E-m~mL0;@N4#1Nm7x=J@!%-lU&L=g+@vUPtlGq&(=Ad4c< z0?p&fET({d@LwH9F*F~J5ube@MUPmSlo8Qj+`HEZw!^7ECay594BWJ=DXuw;gF-Yc zg`$WEUdT2od?z9Qvd)Icg9ob-Xm??qu|15!Cuh=L-shy>xHb%dVK1WuZ83j<1Rc6} zM__QX=a1SS@Y~N$uZ>vD5p>W6L5WQmkd!n zmo?bhwV}07vm?DT2p~%0wK&L&D3O~tU}y$>;Y*+_ag!d#34&kYg>`_j=1jy4<7dnW z1;$v1z!pY5dV1cF7evmk&-F>!M**TV8MbvpWF>1>z4%olz%i8{{Q=C z{7PB+#LFa_6NSyQB-$z?j0{C|FLny4@Af>j2UYUTO~gSg--()AV>8%s?RFYqn%paY zJ@`C`ruG8UF4b4)#riy_Dnn`5wZIZqER#`K3>`Qf4J%N&iS6P{5hk4|A1@hFwSUCo z|4Vhk^b)O|$(A}OhOd^zWW-niIST&x}w=kP+Y8J5Gs2AK~Qb<$89Gk7Ln~5?6NR4U%RxQS&L4oBRNc_;&b_ zG^f=T25yvCk$Fs?h5G=t=HRns_&rVItmUaKgQ&iY@b)NGH!=1m{G--t7%4aNs$))d zXZe5&WQ*;xW(?b!D{-RvzO=jxIcw8GXPiV7Uh&ypLsBJ(EF*5_9HXM!?vZ z>8N`4jqT8Ms0o!_dOKEzO!(uCGOQ8#3TPf8%mXkk9NRyK0Lvz*>;X0%8WD;hod7e;qu;xY0EROsn0VYn$n=nF&0*tE+RglLB`RZ!_bLnQkKk?q4s9u4$A zApJ0QPXd?mD!di-Ke{t16F_sF*CmrdFcdOK|yWM z`^V0=38DjPayQj4a&FTMKNzX@6N7 zp=kjlW*8=zyAv=0Z;$>X5<*^h^=7t(N=Y2`}rZ zK^W)X%7Oo4uDV6`heKAvvfKJQiHivXLc%NFcH_6fy2(&oJz|xUF2uqNEv|VEHwRA+&u7Y
y-PRai;9XmcbW__$bEnI#q7BdD5vL1JIv2bhG}~U?xQMgvz+;!Hv9U z>U^kd%TixyPKEhjNiB@^^cU~Y!5a8p4D5gpdmWpSLdbaZVvNo#uoEKnPzxWvE$6qxem7fZFCp#cpI~#B>uH7B>207d zA~c0&I>E_TqGhh@dTUwzYM_D&r5nb*q)e&MRiVsW^;Cj=NhGCHo*+{W?b{w;Rv;j! ztC$FHJCsrF+9ye?iw${Z#yVRpPpP5D8q7`v4Gt5A-4q#Uz8m$p^Ia|9w-rhiijn zus5Qq>qegaH1fiI@#JGXmfYxUfg48fZ3GY|?4&=tYpqrkfg-sRDJG*b0waq+;Mvd@ z4X+@WTQ5iC^Stbu^mr%=-vT}&!qcD#X?tY0J%3B_t&ocZ0SQyG4_F{#!Cp}BVT?q6 zb&Vjf?=}#L&_y`v^M*J`tLG9g37ZEkX24>=V0U5Qv=x^QA+#~^sS`1UQtj(l@PJyo zvpRnNnCYqkpW#CsI+*yMG4m~y?RlX#6i1n_%7Z{(fMeugJ>1XVJtKxg+=yLkS0nVd z#tlu^KaB}cF$tVFQ;Z;qO4$?y%-JZo{L=$A3Sx|K8@+BHbfN#Pm z=@`#8Q!-;|Nexbth%XfF6|JV8!_2S zhj$-I%jo7&nxIo!;f^mVDIGvC${I~~LkZEh%*7P{VJ5<8IT{L8s7CZk^x7$Ehdb1J z!rxHR^0W%)IS@d9$$+fSp&U*STa$@ctl z(4Nrj&%Iz=tGQDK#;C@>qXVpqLtXtPFT=BMnivi%#>>>aR=BV1D;(j|inr9J?(^yN zrJ_m<_pji~=hyFoF7nI1}A;kPgxR;0E8)ww2oKU*t>9tf-hqB@necYPTV z8Aq0;*wLK7b01||X}czxNAYpKD;mzH5Fg6r1JUq+ ztpLD#=D_j$Lo7w@Q6WUAL^qoN^L)}?WDCU#sxRKrGp+P3K{d-qh^ov21bL(W(R)QJagRN3PUlJYL2Zv#z9); zzx9ikOHk6-1)tka3*7voY&M7obQKf4AuD9!qZRKM&IhHYyu33mgK17V)(Nk;AQdHs zr<&(bCYo_EFo1p|Ey*N`+P?jGi}kSQ{rXbXS+*+`PpU4qDP^f*piig2yOMK>Io9i~ zjK6y*YC)F-5is-fOANd)M4av0{M(bilUDz5-isg|cB`GkR>E04DgYoRAvxW0F5LJlwT+ zzKVx}(xKFhlv`@%G7jUeMBDbaqC21%kpN|7NcEBpdJ>|5q>4($CFxYE*@<7o4r*f5 z)jMc`ZnnFOhE==@L(u<s(oIZ`M11PSwx}G1%Tg7jrr3z0RaCx*C4pmL8x(aLi zm0Ni6^Q>zAH*ZEbwa7AUpC0m1@feCd76N&wc`6q{Fy$UJDHk4<;@=y(SDJbyKPT>B6}%-*EZw+8*6C5 ztfxH^QG9135mHW$1%72G!(*3Z3?=5cw5j9QnQl`;+ioRzOsjY9>=m-p6y;QlAR<8M zQuVl0o05-R;7;qUbd$i%rvtBW>sRqX&@A;nO)E-!Hi~viPj|*@TnBCVmvDc5ehM>K zaSNq9tUFeh;+vQ;h3WZ-PHwsv0o(hg=jyo4s`c@uN4#yOq3!-C3c<6$?kUmM>O=%^ zDhZXQBEu^!ZEY=06g~@3D2A1qY7FIiC}=3YF+aLwpa^SZ(!yXq;>F~s>0gZaAM@u~ zYt%rg*-5DjqY04mQ&QlnbT}PB{<#E|zuDxX1eJMhyd`z@8*vG$39)p4yy5RvUHV=M z^TP#REsAdu^H2FGETS3?AsA(hauTFX`~@IS#BlBPqp9KjsESk4@APjv^?HzM=eDsB z-p<5uzE?!Xa334syR^Sox{leZebl6`kA0enekTk{oXtPnyMI_*J;vyvYj-E*daRgQ zI}NXWD_)eFO$gN{JllXTt6?qC4Y^7E6KOfsiP3p~@2y?U+7;7x{YO*LBpsaXr~%!* z@{`8A9f<|A*!M*^lNBtD`41j8in7p2HZTt@57#2NjSCl|IUL&Y2`5ce-Y6hLQ7gM= z`pGPWcls4Y=WY>2`AMnS4UfVA>bAF4ev|k2Q@;m;+(ub~JHfOT7klv*W#^3Vlfrk| zN$qlu#K+@I1s@?3l3kbdfixsj@gOeL0Qe^EgtU*QeeWi^?+Sd*K)G<^QmY`P`A)Q^ z7$0snTBfv$!t_jk;xeqpSYe?u@4aznXqSyT#n8C}Gv90?hX&ZT%b?l#1^qRM`BPi! zwwkcD*GX%LLk`ND2hX~>9b+CRBh`T!{J+7%kE}w(nk$Y<&E7gq{>u z!L-+ra3ba8S#luq7cHJYDlEa_+@tV;t<_~=s->1|3fUgCJiSVnZkDM~b^CPsP_VYS zwsikOQYVhQcxXCun4qslU0#eR z8@T`HQVciMATEAHG!x0f-GR3K#AU%qiz{Ropjwu7;LoM7_!E8Y1?xl=+m$bG9(*Ok zuhN}_e4OtHJSXce4p4Z^bvvYnr}pGhezI3ahby#t-(PlT~s!&cC&zM9p z=ryB@g{hvHr9B3;XWuP(!3F!7IkQky2|%ljDw^@@9pJGQ;w_{d5cANT*Cb{u^b>V1 zQ8qs4VGO7FQ!2=jp4i!oxm)mx6|?BM28G=F9`mjFTenXHYqfp|M@f5l#U9Bi`J4Qp zEz4C}5Ti>v=*@sGHT}}{*oZ(VNPTG?Y@z_7H*=* zbpe`O4-URM*p_pQ56Voadgf@GYCBBP5H7l}tN$|q{-yA_0A&MF*xDLW?P$GKfUxav zs;0`r4(dzmLd>Nm*z$yu+-W&AFb)8xY5wiGv7(2!n(dM3qW zBWuhL>1t8olXv9R!=^8y*9>Erkfz`H8(zrfFw?i+<~bIxTSsiL#XKoQN9jC;TdyRQ zGRbZA1V9f>VYN&cg6J0Ht%P%nV{e=AfKSZqdu?Bp7J)AWidtmX+kluGhrjMc(!t{jmx z9GQ*|#ArBnGt+TR@Y-yO?pH_VV>2p6~qrp0}B-dW{D`lm9|LgS5)G3B)&*mH1 zr%e5OS?>yM0!-DqJYN5$qU}GSDo5S_c5g1BMf|&a3I$hY4<)) zHv3uys8Y%^yLIudP*3s1dR~h`jb}5>Ycf;+fc&!LSJ}2>y*=W>8L~<`Osz|L{mpKA z6HU-D(>k$z38;imt93aQG`?!Z+6?@ASObso$IFrd%nS#@Y4-$Q0rPIJ8AxTh@637u z;)sTuQp=J_gFc_7$-jZ|d`GHXYyH?PgBo0`VpuP~n`IU0o@$qMaZPJ?b}M$~>5VX= zTcu1|ru&dhfuw&+U-snGkj;*W%CU)?04jbredTrMsa}pPTZs2Le5&UOu&kFS_l*p4 z#t?|^@#le&KW>!Tj~?qi&~flNhyP$U0`TRy0~L$SUOoVxrCX|9aI)z?m=b-(6C?F9 z|2i+rJ80z=J>xw2n_7b>e>VT_SM?0JA^#bE3jgf(>JH29+8J_(QpiE;FjK~NrMAbs z*?JVviQbVO>-wi3-RAZ-B=e$~c<28uv33X0+rLsRBDJQ-J&Mf$1)+UjG?n-`uJq0>PV$w?t zT!*X*ZfE^&Lhhj6E4mY#Q1Z*-NsSdi(e3T^W$}Q!3G*gyEAYwedaSi&)^3_|ek_;K zRQ5Y;&YM9+JuW+9-uUlq_fq#csMT3w|AU z$bHIxB`ZNR0K?pT{3;#$*CiLv@Avba0LN!|FUK>wsdz`XHKnOBE}xgXNy_17i7f&~YU4~kD-6@-M=P6Uo%d^up{z@&s@&CrI zX?A}EoUy9N(u-*Kq_Ug|~`1$2WwLwW|EV<_?=lR|VWnn_coSV7NGP+LikwP}z zDgK+E@IsPoUy5pA%scJerhIEvZw1%A-gi%s?B^x>l!X>QI(`Itxhhx~gr=#P24j%- zr=4Gwjqr=wD*qf#&^bMx^R1TN|IbX3>(A@YubT(`-}Eme6%FXD&*6raTCGN=z1)wq z_b0El7%hCgh8jI93clr(`Saq!xNjxob>C}eWJutquvY7I$(zk}mDK;9|9ceiV86h*4@)armmqbw>#|7u42@v+XylIYXEVfKXk(*Z#_hD0C!)%pMfq_+Dv_uU-b_e}=9 z{{NPBOaR(OKLcIfYugV9HmkU&NNQ|{>;6|LsSdo#jUG#$EYcyAE-&*Nm%8^oR?XX! z+KhXw8lc%#e3)ZAZ#->sf>TUB7!Lvr*P9W0nBsMHD@S+FOd7tR0vsTgPXjfClUO%P zv0;j3`k`a|Wq-2xvH))hLoUcqo5WV_s1$Be28ZZ>TuRU(FS(f?H)hja%k5|>hOf_U zm$X`rbOX-T8V|G;s4mvbm2U_R>kdddJN7qk0A=@#6-k!;ZM^PY`n$n}nZ{Y)Ti(xf z+)J{ITSAM@o(_d<;ggLeXB?oHyscvdt0wk~{H$XXzMZKQcCNJ;4XyL2^#^b+Zh8TY z!^!ZYX$L4YE8)g~qG-$}t1&(e1%YkIslc<1R!>`K{#ziZlUX1#azzp?bDsJVrW*bVjaw&r_# zDF>vfcC?fx9ETfAL;*{v|K8larynC3FFee=yp)*r`rm15DRDV=*Q;l0qlp6u>P^Mq zySNZJCHa`i!J)xz{EfZe9*^liX1&T<=zRz0{5{EGP*Pe}E*T>%-_5TUBl+|g|Mo=s zF1Js{uD5c4sr^$$wV27Bp<&+o{C^c`f0wsp(YZ}_-z}z(6?1~kv`N{oHFNETzVoUL z1l(9OeG*UqQ3a^_yQ~vWZ*yuq&b+*uSp1G*ASHUq=uM}5swB4|k;^-W{-YvSz>VNh zy^p!CiZyc`hDLcMsS-e9!M%C`v5IEhFPxFSoV!LbiU!>;QQ@FsWiUD0V1-KGouW07>1FyLVzq;exqW#`EeJl$a0a8uG|)_7X= z2$a6l!F9>$NF&wDTbX8H%TZ*B-diyzj)Ee#?8CIC<48?8XzZtv?PQ4j0pd=VM**_G+ z)0)4_+e2OohSb6pxq&LOQJ6~Khb<&u?)zZ-A_a!X$)`h6JcqTrJUz`D$`FHT^jDh& zqcBAV5<*w4cV7#+l;%ed{z&(VY7Q`MQ2234Yc|y!v{1+S#5hHI>FlysztTknFiF_f z;yvPd;G){rUCE{M8{GTpyWA!26ZL}R(N`C<(8A#=x9Gvc6t37sQ8(3xnjyu@qHcX7 z=OwKNK=ftP8win8ddHXU$aak{1%G>bk`!IlFP!jvr=*qZm?PNgHh^IGAA;TfV~(7r z{1&ynQRPu`KG3QDGykS~oy2mG?r`Lg>29#W>NJBOMJ8GvX`rJ z-tM0KOR% zQZXR-sN|Qh<+72%%PnTPC73L*UGS@gSEU{U>8orI*g1v@(z~C&TLEUjN(S8Q{`9>) z1EFT^rvSji9sal$wc3?NpjrOO)n>ph1z|f@Q2l@hUr*Wd0JjQrSBN`@7P|I%{2RQQ zzqgR2wYmNr$b%s&d;8j>)(89AOY)Q4AI@HfQ`i*V`CFw^7f`3W8l*cD@?59x*u%6= zS*{OQk?8?owI9P{Mj?PRl`I(btJMz1ysHK5!3AucwYi2T0ZaZ59K8$2vDa>hTAWKb zJE{TU_mDfGeB)pCOZj_m{!{%YW^{J5SZn^f^ju}V!_d>f7QiiP9xKkzALUm*yNh%_(XYB+k9qj^A$03air$$l z$|-Yw`255O;>^Fv%6o9i`F|W;bwE_l6Bj(>aVXqz zq@dh!bRT>vkvh6tK|tULi$+3HjsuR6PANeeq*S^+LO>KmK)O*F~2~@xOk4QjJ?h zlYT>&t-FW3EJpcb@762Jkz74kM_>Ns{`%=mD&t|)`LgHl-8uVn&bpkv@x$9DmBMv7 zQ?gROGXt*YG;B6z?}d(UjQ2^A8k*`4XkgZ;mXS8JEA(}^W9$U=*>+o66PeUhPZDr%}?==Va=LG-{uY8Yy@BrpvK` zOiW6-i^csR3XFylL+sIPIM$OdZOTs9g44xRoS#PU>9-A>Yz)@l)J+@}9a{UdjbC}z8eRy67tyO6F-aWiQ>muo1bVRRU znt1LWcPqc;HEtmI?znog=N)=eW4$@+dm^XQxmsU)^4foCI=^rg4xn>Z4_-*Rm46nd zU$~k}5pBlGdeK!}`>6br6q9`E+)6f+Zb0hced5#+SlRDa_?UJ6`Z0CxC}u|_fPb-Q z-1^8wMRvscsDQts{Z}cm{0G>~%bo3nzMayQctNM0Oe;_C;|G%D*p_N*{PhUo|NT@< zBS4X&%tRD#kc&j zgI^Q93){C#iEa0TXN(QODHtg&re3gJGJjdlo@*bvpVF}8N%Ed6+oJp1_N|}Nr1xOR zxqPGI(3Kcu7(8VRryViy&jQ;ztEB=15J}8*1zNqE#5?SBzyQT6suYCjLLL_+H7|t*@xBo6$RxWrv z3EcBGcO>=hcxA^A>Szf#;TliZg0-*D-_bmPivbG)XTB5QL7&SqePrk(x6+YA`~mCPqOqr)3ZQlr_S zadQU#-+Nt4pc`kb>lw-ItD17x{?y<8D89n_H(cZR=-P1f{wFSdFh)6gks7Q#C}Mac z;4FM{08H(6Ubh4*$H@Hgxy|se(hYr_eQo=a=C%WSJL+EBMJ$iRm7clZCf@Er$0Q5P zLC4&0&MB4Ic9b9g8H0XvdgpwV?_~ES*Wm7?>+CC4zKMsD@>X}>w}V8jUS|a>-zNia zgsYw;toeen^K56wjskJsGBKN`L^!QIC2*XC!}^w)|1lFnN; zXYUP~e?0#^j{TUu`Bk4pPZ2CMD*RIA;vVm}ia+Dntwq~;sc~%N_OoDtV^T9o~ zuMU%+tag>&erj3fwGhCvXdBY*taaOcKTS7MUG}1q@7dlG8%zGRi%+J;`EIgO;Z3(? zMZ%d==XWybKHoc+FfL2J#T4H3<}3vZB?#?zwWcXfpA?dW65CB5 zuUfd4c*nLIYyHVQ7ARB+Ih4|h4Dt-lOP*XFviLo(x%E-X%M^O5&b?M5 zO{!UAW61xuDw0T-b#>-Nh(J|?BQ+m?vONwS{_ zzKlB}B}Nemd)g(~t!cW)NnnJzJWaPwbaSB^HrZpkS4thdr&Y3%? zihRL4DU*%zKAf~aPnOx}9K1@P_U&u{w0fZd-QxFp$N0!YGK#mQqW&Omnj7(FUi@tGdZleec%tXdQ4q0=XC zYh==9^`EnhP6=);6CSuQ5*&W9wL_xwvAxg|bYDGTtsxl>rOBW!M6RXqe90Tbo~_ad z)u0YQvCrU(-lNv9xP)ylE(G`Y1Ljp;^6j$yu|+&9DO*4O6lj54O5vGVo`&NnM1#Ml zruWb9Owu)fe1;|!_C;tDqjTa?Va;Pac%t*#p5ktm)Nz0BwzHV3YdA)?^ZoSEFm76QQB=cj?VVDH(mj5i)lzAvoTx>X)pV z^rPav^gPwHC@T5>u%y{|5cnTls!mHZ3-6 zh%$TG6820jM?*eS+3D8WbJ%|OG5aXXhPceGE6?<$ru4>@=Ds;-+5^IABpBSinBHMN zo`eNQW=RIMHDdKF*w3$d;09!RLytU$c93;-w4oZ}rY+AN+$s*8D3`ZZwg^0<@H!4p zN|One&937=YW_(|-K)9!NUe44;jQtI2{-xg9CL1662($WY?OP9(>yK!gZ(<_eY2C z-;Fu~AKUQu4-D9c;}y%cybu8dWY&CNVDzVgTlaI70txd!Jlo`vr+|{;;_ckm%>Ii@)yxGu zs_)lEmEDv)R#d2WW095}^^2OVYR_B&t5@)&oksoS66T35`-+!hpE^+K!BQ0m)-+%$ zExIz;CY<4WL;4(UWcWt9CU!>5FQ;nYNdVzbdCs}lSg$(q)46ktu)zTw=lSfjAhvRUD z0~^nW;$S3?v2ljte+5xu-9U(0KqAL6Tx>kLdoK*eDtapX=i=_=;Vam!Tzb`GK#6NZ zd|0I3jBVfR>9#tsJ@})MNx8FGUsxJc>HAlEUZWGBEUW8XP-TFW-=_BnY?2aoaN>uL zgCVG=;(pj|GDbJH3a9>p*KR-Zw@O(-Lx$x{&3d!;dPvv_OPM*{(j~95F?C{O_wD;> z9UxVcxLR)6_7`tHHmc>A_1?GM-3P^P4>tO_a2bLd_7u5N^CNfk$r1i+lm6LTLHaMcS=<_a+m zly!x^XX5T(MiMT_sQ3g8c~qb~aSu_ueH#|eg=%0w@pZl*Oh9@(0-E#zEwYIQ)XMZunpt1Gmi49r#K0>OlIvq62W zv|y#6gY`CZ#{OzfP?~q+Ty6^3REOWUCeP6joS`+3SO8ctM)wyV*tsEXgUCJ@YZtjT zuxl>g*nfbAq^ctBq*u}S5yJuv1Q!XfrnLfZj2*&_D*Xn>DYoUY@evq^6g`U9w7p&U z@+lnu>m$ln1Nh0Cdw4=#8V4JN2;lwW<4xPQyp%w7HRQ=Rru@8Y-?Ch40h` zNZ12ji;$$z#Vvuc7{$N3`PvAt>=WKWXLyOS^U?3u3c&gFhq1ETM-Pe z@=gD7WH6!QnrWD=CNLyeRE|Q{iN~@c`WxI)royLdCfz7hT_@)>%mzU83d&* zc%Sk^5ZEJXW!9-?PF1gE6tH7&S|dR*YI&=csuZyCkO@x_N1P#T=jEND^QlUZa7V3y zCBzy|?EVhf;YFP~Y?O;81jo9ycP|>Wj1gX)=mlnHT!42n5R}KdISx~>W`JGI=j#t( zYJQx1y?Oo5S;TD?8})%{gD5UN;x*Z@qUJXzuB4yALKh#?kM~WkXbOM`x9nlYGb|$3J1_MC^X9a zLEA@$+3do|Yc%8?zNg?f!eOU-532+o{#_X&==Hl zbt%bs*$1P3>$`+G@XYxn#CQr@rAG0V`amhY39l|q9G~RR#{CmVx*6!q=tiZxg5-wA z-PhPr)q?bgNR+6mlgUH5 z#q%h4nHSuQrE0U|4DMCsKLbDpByGQLjIhKRK^~-OJHG42PQ*5u^xUf-FVt4R8jw2z zJS~K*yK)MRqeuTxg?{e^Xy8RQF=tsjKGEHhVTGXmi@RWV5V(PE6Oh4*FXjs%V_qFX zgdsY-cr?G01_+&5c*-1@8Dsxr&3~?t*jD5+>%yx2q2RuQWbqO@cAZ?B^;R$5FKV8 zb2Pdh)Y8Vgg0`RW;T5bFu4+pEn8xz4-VCsKl4cS(Q6%zJ1QuOOjcFCmYx3@1MlD;e z^<`kL)J&*7-c}au;W;b`QVJT94SFjmiPCxj6J#o$k3iXP2~nJe#W$t4`L@AE+|oIm z-cU8tHY`6WB)E^PdcG8s7 z`v`&q*kAV$_(d-*-^(cJMK(MUfqT2P33eN>y>}fQAptmjc+PZ9Ve%9TlU7Fq^UkyulN(6OhkbB{c^|3H<`MVRHtI_i} zxFBmO%5IavsxCD!L3eEYgBq$~0|h3Mqle0F|Lobk%#oR0j;?4JXMjI7avHnUqv=;?O@gVX%ma zk8-eddy1$Pq_&mP1Bay=Dij&PrqKZ33Di(MCddo8)<`FJNS4{xDp^A;2EV=hu8t6- zzWeyf$Ha`!?R$cd;wXXt?7~y#ksc0?{W6d@PfZ4jLId2(G4AQVjj$JcC)Z-t3)_q#845dy8Ko zYHp4wv#OYm+VsfEmhOCjksXcr*j>aXvPv~W0FT~U)?&7K> z(At7Hfk?O+Bi=X+gtnY@CL)C-hK01*fBaFm1`IH$L6=DIl!*}6Fcs|xdQ?* zpXax+Zq(=o!97?iby}xY@jQnO1cxF#!i-eMb~k>DK}H+9O^V~qHm zUYan@OrI9!dF?e^(a7YmU^)sGHt<1$MvoNBSA zCY<{?uQwlm_wR@`=nCSR6Ty4HWjUBT_hDFGB-*oabg}X&%k)G0R_j?(e)k#X(ssa20&Vz zwqyDaEn7E+H*2`+qT=n)<`5ZX{*lE#Qk8A255yX2Z5#xLfdsmWmkjJI)!AKSY+ZQkQ#}f=Vu8f=AcO!E}e*i zToM#-s395svp#kMG>wooQS^jWmix^)re(%x4BebZbT?mtsCezBR;RBI%d})-*h&|u zmDESe7J`$Elz6e)AwkIACkMAF8g6+lJIH`)B$~(^V&?QaPZS)C>q1|gpT(q`y<_Q( z!{DNI8Tfxfv2C^#{E!~)&z{TiZjX`rWS`m$L5S}}#zpNUrZZ`>B z*n>7yzWCD%y!RnR%`cW|FzW@ScZcTO2TMM4^p$^}ztdkWiZ6R>%xotg>TjG1YSq~h zUmXS-$a`obRm{ZmQq^kffGbjZjbfnvOjfo}WSV7l4L|=ppJTx$-wSlH(sVL|%6t!{ zYK(bx%OJ9xOdLe{m#2(ojM!rdP*-_ojKZO()!*4fw7_rX=IWT{tJ|-^z2bciZtQQU zEu?chX9$=0)#9DGRh0gKR?-Dvi|} zXnP?h_W&_;wczB&DW3v%z3d8G90qIPb?1>i7Iuxx{wfA9)~y8faCg)NXF)FoQduDzxdNL&NK!bmbtUqVK^MhS)Hmg zBW$r52^k1m+<5(N?i!yX2$DG5aONu!0zDyfyRAUx4=Gwu&#` z8GH9JU>DO3bZ45qlMaYY_;%{vNeKeRDeO#?ASkXh!F!R_TTklpUIL%AhM8oW`sK!7 zPU%=8>8r&j-(4J3S97T$rh(z+1NY@Nhp?d@cv;N+bAPBKIcne0vI+Cf!?6q*|^+k)CpPH{jFGGSrV_0(?@WsyR}q*tuP_(EOXe%7#C2=v{B-PCLO?PyI2nfpPN%o zXU>DF&o-kPs;ugxi#DF%rNdt)8vlwlDiSpk_g=6ef^nxIg(`^5I9~rCEPqr4b*{dK zG6ny?NCsyJ`49yg4L7nbr<*@^&pE>MxC)dEy9wwzEhRPq6}Ite8hNSJmh z(b*A^N{$!l=_5;0uLjd1hic86ULo$+Vmjzhc@KNbMI4P=XKn3q(qM zO&PdW$Oc7_*D$-^AJNO`I-R`NtB)$M3`Dp*uvu<6xlfT40ZPV4A7BFsgM{6Riuq%D zOMaW_9~Zzw9(!T%1k-^gA#LLOqIYwq`L}=L>dj*KeEq0GSj&Llb_BL3x?`s+jM1|M z)krY#F_m86vhVKtmPO*qbHZ5C}TGJR$-Ey1bWf| z5EO*1IP~dWMBDGTRkNcDtduoR91B=IxE)vMqK9b~I%4C!a>J^_(DtfWsNQK6m{Xc| ze$xb2+YDHoigj$K)BYn!fH_z6y|BuEIT53h09EN-5iFmK+Dpw57y*oM=> zpONf4^#RcONCo!+y+m)Jh)V6iR2{P?bXrEu6!AbDuhA!W@IlmQ;YaM6n!U>dE=XQ}Gjdz4oNY*%=|sK%H#^fTZxU=+?(c#ajk z7a-OJ_7nAr8%t;8H;V(y%zo%Vflo13+sbrGaq?Jzd2I=l!_jR2>mWu2|?Lf&K96h zO>PoY=)K7|g%p8YJ)`+6F9%IJ2DNOJ)%t>7l->?A3UjCIVdVKGj(cqQAj@KiSgQJ@ z3yCI;g7zjzg?TTnwu!bWu(o63m}J4cHxPdFz#eNu7}oEL^w{f~eYqRtUZ3yA%7r$F zR-TBX!-cQ3@%a6{LoGgM1h{--ptE6C8eULNKO;P?SgI+`Oz^t)*5(CF>@LNE?@ylP zQJ2@8kjJ)vMaJ%8?}%D%w%9w;rPtY^s*taqgPJ?20su>!!j02nZ)0hNE}RK zaF5-grnAf;_vlfpu^C^}?=K;EaY&}ufIJ7*+kcRo4NKq87%ouO9ikqSem@yr{7Dq& z=MJT?W)8W}>q3sz5oxNmLKY~W5-5`5Z6#w2Oo;HW(T&{^r7;~o=8&Z*qu}xVsIInL z*d`+ZMyZy1ADEKH(qvw6#Tq(7P&8HsT-eE`BLnu-`ul8AcN1XKT|qr$y)mye&QTT1 z1i=k#brRn`Q{BqVUMmcEhRverbv3s)yBdM=e->{qPEf1qh`hvsvlxDPke^~Bw)}t| z2lfi%UyjYb$Pk;S3)4|7K=>QxjJ0%|%_+X*4-c+H0@*h6L{=BTFgE6GduUvrnkXlyXL*Lazui6_JM+tkYkjs zu}g z=75!a{TAb*G*0cyX;eh_iYF_F(~6b6kFhYnEx3#?+%}L5SLvY|&lM9xigg{Q46M2E zdSxo5;tEbEq740UcVE>8K^Vsn;@ag3GOg_V&{Huk%V8WdLssn610 zSKAsJHFipq2}?|iL7v@n?{6&F9!@zDO&fJy(s2uHF4&e&nP*5FopC-NZ{GdX1A{&h ztHpED&FwncJ+(dDNo>kA;!KA77KXzN*AknirYYJ9+Ut^5{qHBfB$}`&33@R}eitrn zP7yv@wlb0`L)c$ui83TmvoeE4n(vugjP^jYYcVR$*A^~4osM?fTuE&5S)v)#JBUd!v?Kuf8?DN*@kt1hS=vCC+BsiP>CO)*Y&^uSRB)K1;f6e!M zSh$`wf&wqryu2MKn-W+$uq~Ma-<8NPSL=b9d|mNjx1yqddOYI=_+*RX4bk+D_A200 zkU@tg_yNnH`mNfqFSKcMGoOa^P@-bViciz#oc*75_IMo61m0b2wF;_dDU^YHKezfN z+H|(<;>msULb$#8Me1olGM=Ri9y+k&A|x(2Fr^e;{Q+##P%8Efx7Gv`pG|2v+jcxK zYPmQ*+eVF+*h0*iwf@T=*iqv<8C+Aw99S7#O`DVR=|=DDHh&fiyKJ5|7pS+QIJV+5 zCFuyrOQy}Yy0-R~hLBpa1E^6l!rlIJ&JXD7Uk?11_jX9|l9}!0qd$KD;X);gOQtP3 zUkR@k@{yT+v(@Du^7;2R7K2m^_f1^$Xz@4HQAk^w+2GC!JYjR?tLj+u&6OKI)fSz+ zjS%woFYM8HH<4+x8Hw?xR(sObwd~R2Y$2SL(#YoOAMVx${&oLQD1S7k6JzCuX=K|e zGKs@MGP{k$FJHmeFm&?&mYH3G9i++kPDw^*sHw&J+~|^@UGvpmAPV=MIz=HqtoTly z)KXnIq%Av>_{_wF2c`rw#3cq(ZJe-I4iw71-KZlWpD7<>F#)b4z&k#0(cTekC! zmfI}1aqu~bsa4wp5;s_sd{-E0b=9~N>+CvhAf^6YT)EcqQ(Y5;DRma59G^ICb8-Br z+`@cjf}KNBaa-Xcvy^wgD0wGr=$u)}&H2UQKum>wj2RBBTn~%y0Crm}oD%7FxtTM9 zLTr**T(y{M8WsGr4Ey`Ys(b==J2k9&H%ghF@XEv4lf_0vrvId#q`H3+PA`ZV+}M(&8ug*w8yL#-@+r!4323)+6;!g6?S$J^XkyQ#ljvUv6f5`Iua^nS;#88 z%v_^TpOD_SvZWN0*v~&%iR4H@vUURwMGsq!`YlhU%ww z%)5<;nW7?8Kg;_AZrcMa8@Ims3L?bb-&%^9Uys&hc1T9H}kyPbHA5!3}h4kIqysszHx$RvrMmjbGi+yIy`x0a3e!~3FtnkyT zsD`)oP;CX&4W9!jIy^q4DF-i$hfSArPpk9->vPn-W!CY9jPG@9xe<8cV~1S?eiBwZ z&&g>|Aq#L{MM*bLF7Dk|yROB$dhe=NLD760+Fp=zpT0zu$?`rSi}$fW!yR53W`@W9 zn`RFnu@4;(+QcpTVpv@t@!UL4+U-R`)ZVc4t7Le3sz2_A#pB_gROOy;&Q-~NHP2ow z(O2BW>IlULXDe2`S%u+mFn`yzA$T@~CPwNC_H#2=gNr3kyVbS&Y)?3n?}IZ4s4V_} zQxWv95bn&vJuP`&0B^ogL%4%xB*#WQ*TOjL)CZ?f@Pq zLm40}=50?p->3k>T1NC4@up7=s_CedWcC;-5#o4{)vkR9aAL(Tz)2s>V5AnF#(;T= z2jF6coxj7}^;nbmM!&~Fo*jpYs*XY6aR*ULFXNkeb;=Sbp;Q1jJId4aiALZ+B-9Vj zvnW7bQ|&l#yPJfI<{sUgMYJ8Rh&Pd%%%X9#9 z*4!>k{lJd!IZWp!2-(+CPZ<%>ue-^HtmC;D9XY!TwV1yvL9iH z6bEuF%MJZ7sEZg*`(7!QH*8?1((FWBL;Y^iDm5v8tE=>d_Rh9N^oJB?B?%;|Jq%px z_?k94A7SRy_1+^wdn>0uBV}N7R;rtNMXcF*k=l69!F$KFM7mc)JX*a3JP!07$1$#m zA#+jRJ7Y$b@BLukGnA%W&WZ5b)9M$v+aD|)4~Gw>^Ju7ud4Mt|5r($;S@x`y2O4;4P-;60V954gEy%#4w+&*KI*C6{z3x*7(z zYjd#y5d)jTj+{mDkNpK4sF%c=ZHW)A3^rAs((Bl#O;~*vZm_YsFLidO#-!<;%jnt{ zroz+pXjJk;8++@*J4;Njr)`xbQ9t5|wU$;ai;9A7mRIobq^MSCnL1HZl|eYdz96%S zcN>lk*A+#1r6xS;%ki&42sbpi^fB3MQf%I6-El3QNSOgp+zh(Bn9qGRyB$U%S42p{ z4HZ;Mf|hVgDB564 zo`{9vjNEzaSV3}ifx3awnySWvK3Ldf{t+dhw38dz7_8mh#&c(Yi=plg)Sp`GlbVZ5 z>Ps@t-U?4&@2uWbMd$19}JaI$fi-@t|^AU!YS|U4zQ@YyP!0;e@H8>iJ6V z$Z2(^ZChNyQiYnCl_iJIn`YSXPrAkgO#b185Pd}LW~0jXy_991w7%9u4yQ6J4yj#s zF)OM(UM$%YHGU2uinwg;W%>R-x$c8;tH@!u$m#c-tSp+6QFenX?wN3I5_!XaE?KB< z>_TnBX=Q^dpE>jRPpV!$m1J!`L>D9~jXFak-kZJv^A?LkI3t;05X0j~aS$T&s1MSRz4@%NwQo96s$-P;s2h z62mEI8-l_yWWPAg0W6)7??mAx0Ot=VyhNHcHv=(kDcx3QRdd^deX+*kh2l?oDWm<3AO|s|@x{>hy$g#Mop^EIQvr*Xhus_G1%5 z&L23bh>I<_N5_dX*W8$+U$h58G&Z?n;~XFysL?eCl3zRY5lsvmvmL&I&dB|YDOVHZ zcrHvCp>`{)7_UZ$YYl#CyMra}Uq~;Rn5vC2q9gNwiOgsvp;s%O15;A8ilafI*C zMn2adJu=Z@yE{c7Q-f66Gm>Hf`l47we)^BTe9ge)j`vliW7*>{VF%mAmSpGvc*Yvq zX{h%#xZ?RGtEN2+{!rz`d3cOX3UAkcDAIpj-0tgptQ?X{iAphl%42Tkiem7WJK()1 zqGAc7d^*ptdh}+|Ry~A?dp?6!qQAgh8V%PYNFeXQF(ms&iF_(|iWrkEn{4=>HaA*1 z^pC(i&Kuyug9D=Oh@j)E6n2h6O`rgVR3Joc0-wv0O2M=NovqU{@7Qqc_C4n&Ps;(= z^&$Up(EPT~=janrt+2dk2#i$ZdYq?DR5Ug3oKb-Y_YSl&h>0&T?~9N|h{hT^_T(G-|BF5&M>k6@qoMN*KWfp;O7A6j;YdCRPzsYVRnj^LHKf8ua(7!=L zzKccCrong#2Gx-XSJa>7Go@iS*I=<*01KeU2uX~OG}3a%-$vJ|IYlW%)cVwWF(>`h zG6pvK28$JuPP)3SXXj}DyU9CYi{7PH32$1H8zVrU|C6KipyTn zkdPFJjaTBEF8J8jSo?BGHO%8_eacEAi(ot@mkWVN{zUw%fI);a_Z_0e4VncSTeXTE zb;Lm_A^nz9v0IBKprf9bPJtG^q2H;fP+jeVqw7 zcw*@#j%|Mq8WOZeIg!}plG6v%sACY+<#d+vfa5XHcmdz01rEAff2 zuUDoD9M!1bVg9t>Y~bH6u@qtz#?rI{j5iDnc2fY3Na1p!2nprKKoJr4?3FRq*+0 z$c7$8F(thBTQRIvMWs~@p{E%6u%Ssz6=_&YDty7rQmsdL9}DBuf-+f&<3LRpqFo5u%Q*m{|t7R(<<*dklm5_8&pgzggn&TlGyyOShQ#AZq zk4}pd!ge*)!$XCn7~t134JUg9i@C(%mQ8>uYf&`-Axw3WDw_@0m0V}Iu9<#>agsCH zuH_h3$rD(xD&iQpcc#kI<)6i~j}>(wal9ymreNgni=wL$Nb}@p&3W^M@o~z)psKC7 zii%RUbl@E!hjdlZ0bWu-Y=(1j8{;@5mc6J@SU}c=c1$_E$&#a8xO)u?r!|1;znph3Rk10>{>~SY;-x-@&a~Iha|y(uVLWZ4PC8Zi3aJSRugtsHj5462CA`B3H30r4Ogi&7AbamZBOh6; zT3Te+ImEsIUsnV@<*xWm5H#%zIEmdDT>7QUP4i?{x-m48|F|r@V|!e@5gcwQ{Pu4Rz; z+_6Cq(p93NN^o?f6}7YiQi-j#sTx}n^-1JN!}9S&yuu6*KU>gTC_yVL^z#i;MeF(5 zP;Loq(?9;pv%|LhFjA4-_ub;D*Vs()RO0J58ss~d7F*)%#~|33>T{7aAnEaK0Xt2d zvY9<$Y86^&%IQNT6kieNFuqH`EDS%fEf8;*WYF2UuKGvio{kwF=fJ@)4d~Hx<>NzV z*lDO$FiKnW0)3n^5p(`CuR2Y8^{lznabv?_LAUWg)=d4`A-Hd?r^OUlfw1`}l&CH3 zU%pCgf!d|mtSIL~*}FgQ{o=xEPT{)N>yI^b?!8z(#01~qzRSTV5%qgcm}u&JS?jRI z!4N{AN!jV>v=jL}?XJ`#i(r)EGn*qea_!XMU9`!+8phX zHxa9^NY6 z^3$0J)pdhKQB~QzpvH|Xu*_ocUnWJ(TA!Qc`#qw2qTu=pTS9vEpSOih!~Od+Dp;;7 z>hbmv53PNx6D&R5*gWwD5=!M6k>(>wpxwl~9i1@K zl{1Qf*HfvgIyyrq7*w>{hvQ&Easrwxt=>^2FIS~CEKG=V)3f@^WlSkngndhnQ&4?A zK0KT2Rv|@&5AMGg_*TsIQ!{r_k6Z9K+E=(AdLBVBosb+Y4kAFh##? z7gF+l_omJ~sv>)|eQ*v+Ga(;aHjreXXbLz1p8n*mD4rTX3uXZ z%FO3Tz3dZnzdN_ac+&qWvYbB7`HxrS66Pl{lnzs_pBq;XCJI**>;F;vB`?RZ=?TkI z+B|emRr^@5eX2BqAoPD)MYaPfD~_G;aYcG~>I{<~BEg@Qewmf@4vT-rNNg045+Hf- z&>`s__pl!Mz@mVV9g4i0k2{Yj+<7Hd=1{Shp zzTDYXhTBpXRU=0id+NP8@+AAis_N7Ut-fpgiZo?%NsDSbM^cujX(h#DF&bha6W?SCpRPq5*lD*9xAo4`lhGOFLnJC;?QI44 zKb2&pQ2{0aQiZwl%8(cIkKxf!u5UF&+Xa>xdrx@gSu~~bD>rg?UZIsGGT<8US-g&RNs7s+tzOV9;F0 zU>{$`jZu~Oz-eN{7*LB$oqhKftMP16N<`DiFgAve%o9XSAPm`4W66Lwqvy~FQlY23 zz-O&In|+o`bkM(HB4rVH`zJ3{g4a?Kr1!tstYiz&3kKcL!O96!=j27;C4NLIV|$+* z-)4){X1$&w>zX$Y>~3*#Q_u#led#VMZSuK#X;oI5Hl)KNSH4@*#<_jISLhPeDwV+@{zx8BmWGAI@|zSJ?EY# zsQ9lb*{Rd@Q=eqrpxQzl=QGho=pB~D(5d3nJ{u%8Yzs+SLsUGW{s!_I*z+&o>!D~Q zHlI>jya(0ItH%9m=s1X(+`!XbVT8=d$3Ru>RlS-poUZuDnU}6icJBqXhUNF#%e8m- zjLC~H;f#LtQEJdazQT196-$bwfrm&FB}M`b3<{C|sE6f8SbtT=b}6?@s9`0#?>k_z zT_0>ZDReiqQ{+=l4Up1!QEIH$^8FxnY)FS|QoO;9#<}~*8r3(_nw#cVpae-GG$)S| z@3mhhL6>$yb9cKXP{-m`C~~+t_Y?+Dfn3WO0E34&ed#VePTGk8F71o+o#XAJW`AFr z*m>oy5VF*U=j6Q<7Gjfg3Hz;A>1srxX{&IkgaS}%c-F=mX)a-P{M>KsviibMdzT^z zF9mnv1IcUD@l15=aeXQ$s_J<-+jI(AIPIbez#7X{CAn3#g)#h zgtCZG5h_ByV)e=8njbdhBc>8@)f5R=R20lG!A){dolX=rXY8PU$Pb>!CmNTr-##e) z7wT=gLZ(E22~#TKy>g8o3gJ5D^jj8zN1Z7>y9B6)*t9|OqqSP~DTifE?(|gVcL+>q zlMN4C<|pKL7`eI1K`YcnpM;IRR|V%9E~R^E1W*{z^O9}cVB=G=iRNIr^hjT;!;oUA z?$z%(sY_J)_%0scj_Cuo0)k?RV}t0e99|fku_o^0L9Y@o6hdtV!aYwTcJm%Z%Jx~` z$OEJwJ+GCig3R09D-0C(JFzST=;gqACA#x${~an&&D5Hj8dCK3fTD)Rbro@#f8F0p z*hd{UJ`99|&;TxRs{MkibgvW$dV`kKG=Cz=HP1p@yhb9?46jtlL>_W~$yfaK>e4%2 zm@ma8qpYJ}&{v?m0hbK^_K(PA`M9lK3)!HVoDRNht%P(lMlQqf1qh<~z>BlCTqG>{ zRg#&Pk^RL%4ifgX4OLT)O7{sv(nIjhMzAt^nkZJqKgjrC|2q}uRZ!hPbeS91DJ!vJ_8fYkqxelXti@B=)wa-E9&W5sF2j|XNOW#%fgGe&t_!f#hX4nxMEQ(C&(SJn7%ZV$zK=<>G(B}q+ ziyg0(Q_GlPPA<>Wx9w-CUQrWv<94XXs=CGx3C|1vgB4dYy=mDEQt_znC(pZT^Y0S| zvkz6Y%&1!Ir<0z4KD6#!$SX zz9!HyJa%`MiQHfSr_fLKNB98qMOo490v+;G9{-K*`7zDQ&u}xpsv~F~`fI2v2XN!L z8S{evB{O`A0Psi!KSBpvw`NaP34KUrBM`I8bBWWR2g!-vCA*~Pzts7MM)B}(VeSvt z7O}GBziBp|)VR-G7(nQh+?I=I>|g?pXn$$37qq{#Y>gZFkN%s%I>?dARoKjx zP!Wlev*f;V2fId86-n+D7{Erh&AU3tkuAom3aVG^-TBK-ChdngPSNN5-*Z$9Pzz3S`W!La z&BPQ3uN>q;&GU}YQHHse&$>>(H2bfMUIt(JyxWfdzQLZAcC(v@T~-6OCZ_b^c*c8P zqek=qP5%OP{>Vx!C)S&Zfg6r}4pTV6+BvUj?|DAH@$=Gl*whY@Dl?dh!SqH$&fgh>Bj%J~P~Pl3U^^$JAC3-;40opb+uMF>6@26B&`^AF)F7 zisR@a6hs2aMn)d6SsJ^g26K;*-))1rrfDs+Lm!UO!-R-UQJ$iUh_Tux)8`1VjurN`bI`BA?Z+&{%}-&L98kpL^yU)}@_B7< ze{ZL3f59z3Z2vQnh%v0+h0S(u%10wh``n zkbuiI9{bICT@ZVaKugb%^t{)&e6)5L$9-|)0i#)kC8Gx4*sP6>?0da*BSD7*TQsyo z!SuOLW#@cYTFnle?U<5N>1iOu9fbGj)LWlD*bUa%8+RzBmoZ9)so)kG`#m5vJe9m#7&$Emiu=__p3<&`yYiqE7S-EI25 z2(lB9f)>^0s$ohwIC!U!Rs9Tfe?Z4 z11YaGKzQ#gX}oN}z{ZyV@*fBFVoL z3$L27l#Y0xo`KNkbvezZ3WJBBw?FtVu@e^@@fW_SbUP5xu4tsC*MX;8k2p{D++!nd z@LjIw^Z@O;?Fq=kETaDLVF>W{bQk-5!I0_IgnAC*N!xRXp&_x z%a@g?Nqz#m|3~}1HH>OJK*(&E%jjo?jSS!s38x_QsypHF7M5BB56J8sR?D7cy$UCo zkuGV^@_YRUzcm#2Dh0G{4v}E(R98)kYRX>Ab{<=yH(wUTuF;$A1@^I`4r!AGu{aft zhOvrd;|6K+G9=jjil^6VCG$2f$8KESJ_>U!W^jax5;s4F9T9@$r)5nIcS-BxJ}-jq zF3)w3HEpmAzCX`Oe80`DwwvwKOEqR!AJ8J!G8vc_)~tReyX5a(wwd42rT7y04IOCQ$Z#AxrelovU4 zs9$$iJEOy+{z(L}+z#FA0c?>|h`=Od7JV4+k-!yNhu z41LWRH5kvw!b;XD9@|QrYbc47jzjoC*1sHih-%yHoM`B}gF;KD`Q#QftE#$p6v}Nb z5HEs0Ol$(J{b>lk3`zc#VTPInt$PU*`Jl}({wBdbtoFoKZP>Z{oVQG%rXcBv8R+dn zj$iko{#=p}vEp!c%Dr=$=okp#S9u4gl0VH?g|*l?XL(L5lb;b&JzxcBAu9HHR zmcqQbIj_vCJF-l&uBH(FG*D(FOXoShaFt4NVPS#S@J2wK{gJF>`yZzLoc2*i#jxIV z_rC}6e;Ni94$S5#Sre5b*3P%Hl2eKuep!hMt0n(1&E~9VTB1*IfLHHx;G4}0EYL%G zwn`BxrCAfZa6zy0F!9C0N~|E!w*0k%;q$|IEK8{rHy`XFeYXr2$3|(q3#q-YUbo5q zzBwxLrNjDDDi$kTxAV={UyJ?5A*?s7`4D@?g^({dK{t~AJLqcCG_%Da>fcR!NBrF< zm0{c&boT;O!}t}m5P8N*Ay2&7@`#ang|l?&i5P3xu$XHHM}-QNF2D(14~?-340@}q zeP*CH3Ke2o+dC z&Re1-QEprJ*g%jT=-7v%<7iKZxp<`+IfwXnSd6W>KkiXsY#lw~Kh{@2Pcn79VU>Yq z9iE8UNZM;C_0u?B4k{WnYPz;fJnAoAD8S;;GcMRPN^Fl=$ni)#y71;!DTlowLwH|$ zxb8*FXLb(tKHuTsENJ@sOBS;(&tQJ2UnT=`UBV>K!UnTFN}%g!*@^1|Qe&6nnUto9 zrLcbxcBXhc4uLh=L3RJZBL!HLq{kANtjc1k)+~OhL<^w!%QS6o3@r(=Z+p!Fh8m{J z0kwI_CjB-w2MLeWV$H$i^m2=bjY?Yjd6SfNaM8o;V+KkYtQMZuuwrFq-k&g&t1Gpx zF!Ktbh!5ViVH+xoeU6pR6t*XnWQlIJOZR_3zfBr^xF2pxVMmnfxuN@)aB%1XW9Ou1 z=V-cuzEgDn0;DwYL;u&rB6sY@gH3|U3*x&5`Utf7p*u36d!;8IJmS$BpI_oU%BaIRkJW&d6FA>>OT9&h=}(} zm_~`Pl5nvjiQR}aU#Ecl#?3zh5~0Tn^e@TQx0fzGkeFRjllalFb(wtNr9`#z$LzME z(I15LZz}JX)V1x!kQYLoBven&H<|AY{*JrB7q1L|U$L8$x3|X>-(v*(-4edDDvl`^ zcVFkVq46uO6m7iRqq?}+mO9Gy+nyIHjQvF+)t`U$S#6HwgrTHM4BL6PO>j-;=g1~| zRmKd__~E-nzJarTf4#ahHYG_{1XCYVK1tX9;f7jQ;wL8m|77y{sD} zyVpxGOYIjmjI1A87JqnN_$4v-yZ60*OZb!!Yiqj}P8Zpf8F`r9qMGfOgAd?=zHti4)pzerl~fxh@;aUNqPS^9r}r68l}PspOuLM^ zI2D^aKU^bVZ#4(yzv*h0WSb`U$|RR$4}AC!l_=f&&UVWAh0_UW4W0F6JKx6rN3E0Q z<5*rz_n5}?%W|XSu5`QP`bsbH&76mY)tkYy9Tc(`c+{5{)ps>UjIC4)L$?Zar~DVP zSAQcIkBOSD#`_P8%ZXFSrs>&rUerpCPgmJDWwnY13k;+Pm=WLLQwJZpmn7TQq)kjL zjo5*aRRpi@kL>ou=o^(8hnmA;D=7Y{rFtz(p~mw#jMwAFN-wWX^Xrp#fvE$wkIZ{_ zAAemcVjj41--$4qE-OQMTYdiOVt?9QpTE~P4+f=Pu*i2Xbz&DLVrW(T;!Roem0THp zuf#Esh12#)1Vd=BpfLm1`^)^-6>7q*zw#MBBhy!~KIB;6Xs_)zPlA8%)FXV}(sKfy zR5v}u5e(TFRV~{U=eGI@b=ALkD~JxCv@miJ6mojHkpP8^OQ#>E44DSYuu{kc-Sw;V znJ$Ua>dhZB=iZExOFUuLTMV`Gg#@k{`BF+G|IJb_MOC`)NLd%=UeoUOpMbxqcrS{$ zdQ^!goE~%soZ-ZcvE*q$kOh`Xy)iIPgHxM=$nI4}?^RVV7Le#vq%(wEjh16mz@oJG z%+OSg1Fm1kCpyV?SaA|_wJ~Jr&rIx$WCLRTqn2fUJ%U`lcQt!m$c){(PUBeVyr>%e zJkm`5&2x6v0Qu`vM=eauY9h)z;1gxrKZmHI;+ylUcck4b(lIKf!R{2RKYmLFj48}w zbkwF=4AcDFi)!M$ft=TsbM#nt!Ft3i@F2wLr3vn(Y{oyTc_LYzaXl;Ki+bFhrcNan zj;odyw|Wn=T3owjp27OMs($PD#<+a<`0irr0b*4e!-ldV)cteGTyM{AtlLm3(J21P zy7}64HSyCKg6lw8)Q*BnN5^ zm$74G{wYCr=LqSk#DI?{S_;p@hw@EkvlBjb9xndqpkP2 zfjX9AzXZ-M?Q*<>Ah91a4Jt&T!2#3S@M@y)XU1RN48-Qw6J(CrXScNmpbV)7;{arw zYZJQwWLs|uWqSsFNx-hLdt+?(r0#JknlQx`w2s3|^OFqzmdQ%(T@6_k8q9uQpkZ}; zW+z{yDUa`9B1jz7k|lRR7)&z$hcwIKPg!|$OqXi=fVPcwmAyZR*GIkO_Sn@9iMz5m zaUjEsGkX^2=l@*SZp%2SXc3+1N$)G+!mguk>^Tr;XUew0;g}!aqC7A$P*yr+BIzPp zU{Y(dKG>)Ny;pXA$lt-!IbvX^30ib&`)1^AfYgXq`0B7!;+J+YB(^->mE%oWz=>hR0C zVU~R|PJ#H}eIzLpUl+NNnyO74=7je4=CvgAMnQy*W{3&xjsBU@m9nB)JDs9tA*~Qm zsi5J%Of-k*q{(O$arPlcdL1nD+o+tl)W{xAT#(@vvVie#{2tL_=CZoorU4bLgY&jF zUUy$sv^h<5RooFQEWo;2`!j$0uF7Y=#)-#b9~rs&HU`IUHcF*EA8EI|>$_KWcf)SH zwxoRZKRZ!X`X8}P)%*5@{tFyelg1l%(FkRRO|@KXDgTDrI% z&5P5QXMN+YBwuCsx_g3lnp&3;nC1#hyCYY;eIh_KIj7H5|5EC_z!gdMy!joq9d^}x z%aRc?bbtNv5DR3<40QxdLM2bSwcIdk}IT-T7zSt(*vXHk5^1E zwjV7n*y%WoZ?=D)PYnwdTtvHhhNsWG_|h+Fq~&UtBR_~cGFjAHWq0gA)J1oH@n39j z3exUPU3b905=cu_hWlJc=={}6rfKI6Wi?ka9!em~H*W`7iapiSLyyLU+ElVzZ$B@h zk%zpH;YWvC!_HDrYQ@Z(`YF}n^J-dY=NYeEdz?}LO1%A<!i(A(?3syU(`%b(3%J0o7Hsb5TD#`ggS^E~1EA)AZ=`{Oc;MEz z=wgKaE%7S`t}P>6C?0zmZ{*5`e3f_+k`0+|9i8xsy1sFkv?$W@u!J#B7XSw?!kJbev4F?QD5^4^$#6^|{L|gp9&C&heG#!x z8a&j9Vb9zcYkmKog0kgjTY-oB!El80EIJPtL2bdgw`QE+%kG?XdNA-RGLkG6@D1YF z5aNx-VrNgsWfbye{jnbSA~2ef)qJ$jhE2-Lj(1x{)!=cpBvaM(af_kTyyU{l_{l!L?_Myr}WAC2u2gr0>LoyVn0LSrZPfd5iAc zb!RiULSI!|eD*B-#j`(Dy0%VF6ZZ+jS%I>V>F);X-nSQ*P*DypnM1jkbOQBA?ZoiS z=z3BpcvY@bhK|iOt*^W*tPUUDy7!)iv%y>OrBtT>l8AI%xBA{AA%>lE?~APGosu8c zwD#{ne%iRW%N})(Tq)TT7&JKAj27Unip{~-OZixg{dhgAfXvDN`)`g04?nA?nBpa! z={i4cr_UOkq6cg( z-H_~8m??YDsvE-=S@K+>C#$(CFr8!Ebs@IRiWa9ztGqzx>bcbRcrdiiYdnh0^Qyq! ze+PN{HG{28mHq`u{IttbSzlk1L&^)ktLunJFjGpVDjbO#wQed|!paDX5)`;}uEWz6 zk7X7%w|c)FJrK?Iqcx$Lf}*BYSK9u~7vSZ?;dGpPjxG4H$ACU~Ubd>q7vfb`#GNQ} zuNbbCLPhq^DAO*EzsmSg60U78;b9^kZgEEux1lqBck2#?U9!klQ+u&ZnPjnq>kIYn{zU=F>osw?u(3P$gK7gzd(oytFPGiDD1q-S5X!OlsQU~Kz= z;mK!Hx=GDHg0G@0l$T-0P;S`el~Z4@vcwY?7)4@_7-u{6px)x}>NH_t{ zdi-Q#T}}uo{3@v{iD<(Z)z!F6%4%L3=mdtYu*VBl^f;|uH$mphI^ri;d)|lOCa_KU zuBA4{aL&p%8bL}>=H=C-q8rD`a#7t~>)M4>l~7Fs=s@uMTFcSzM zUAEL}fwtR4t1#Zv-?00sh7oVkV z_mND4x8z^R2ZAzqpgJ7=2o=qysAbC9vtZHQ65gOR7NDX6 zx)l1ionP5Q`+az7J_W7-kGX8!m(@%d3b?xezjA8$<#E>oE~~x}=+Ec+|H8vJ*_lJA zePHNylQ#r%#ZdUD1^sN=#r(j`>`Dvxb$ZZ`!oUxd8>@N2fZqGe$O~5pHf-ES^J&WA zaIkR?5}sb*iA;KUi|`ySwO~|vm9WXBv)0nl6{jr|S-%x60Nm#k$y0&T*lp+PVbJaR z|5C%Vn*VB^2ey$^LT3Ro;Xi*o6CajDk23otEBvTWF^ZtkK&PVb93Xt;*Qw1)!u5pN zB<2*?^8-b!zp(&U6eVpSqAs4v_p!_&$qZ*CfbLq~eYL*iQ`e;yW;WF{S;9rOp5qPW zGDnv06w|HI+XvzZbio!fK5z%u# zXbW?J$&!p))bo0TOKdvj7|Q&+a5r{oEzoHFl*?Z{fQ_8=bHu>_y~}@jWrg4E{ydI) zyRkK$C%K-==(Ltp5JM&eK9L4r{D#2IaxCZNyGecxA;Dp2rOV3crmUd9lWW%CK9jLr zQkkyEMek714=t3o>#Ij2Vo~R=^}Os>Se@5be^uBn;6M^S6rQDxWY_+wdEBFs9~rZ` z6tv6Ll3#0`&V)eg-K=>?>WYoga6eQ-`uO<#I$ToKG?( zbY2XZe>{cxb}ikJ8pUQ_TF0uhrAx7X9&Qy!vOdh&Cy+XNj_CUS)`mkJu)cp^(+p&U zS!=A3E?xb$G&r!gHX2E%jqLxD`9k6;>HX}2p0=z0nZa0C=5~BXD?hRzpOyL?_75u0ivt}Gr#H(Cad;Cn^oiE!cfPB;{aVSbp@VT<7v9l#Ua1LXuWTPOWWw3Zn z+on&5Qw&QDOnV8!=vz0GHLY48cC!T7Yv*5s^(!wssuQ~JDwAx(fx_+$ut^3~8tm!; z2D4etgQ}Airgq9iU0l;u50uJeY6p|ga_Yf@yCs0nWdzD`cB~&#r#S4*^`!v|YL9b$ zubc20214QXr^n)`hSi_o4!QkJbdCMaXRB*%r`?ZGt*a{00qUWQ#f~pu7a0^i%UQ&` zLy!j`Zd&y^p(X3-1XBTEwFyP)Iq=3h8mqB$W73fI!#LILzb_ICu0_npe}&Xp0-Qwg{Q0#d>ML7eH|7AjHk~ zH0g^XZAC<_ST1J`@L7%O$Fh;CUISUgXr;u3=j#a-h)eE+o#gQzxwfLSJS~3;^md-{ z=u*V(7wIdeCCZusVMG1naR5pRbY1=1XgvvL`tIpDCqSdhBa%L%Ra(9wEt#4^DIt=X zodP6MYD=G7>CJID;eY3*fakocdJ+K!qx~Ou%P%>!$IgC8u`{v3!9e`-TpML?84Z+f zq3uMm#n7-9#}`LNWohrz@7`FWq5~rGN(ztl$X#JZBf^1D_+Nr3hl%7F9}+M8Q(%|3-q}HXL;De@0$qFD0 zX1bOR7u$m{aiU-kU6xzhkFxf-uE=+o3LS>5GyS>?0Faz6=}%Q~RgdE}UPL*Xm+E6qfM0 z5vFIxKl2v8jkf($?5Uye_kGy!=PQY2+b03E5_7;iwNgm3%CdA% zTsIm0{b8ut)v;-R;fz~-ocg4-(*SdDOhcW@Fe9+qO1O|zcZL%`Q=Wb-3{YuVuhIbl zhpJ1-y4G*DE6)L7a*8~pixU}q5wjm`9gU^{fi|I3-iz4uo!3lVlws+a;UUGt!`InJ zU96nX(=F@EYCmD^A(Kiyw*F(*uw&vaU3F#@2Wb2&QYX%Y?QZKV4Tyzgh>T4(d zvlS5-eH_ac5&-S9k)64Vk{^tCSNFrW&(=Q{o%gra)a!v@`5I+mnY&UXe;DV6;v4*k z+|zQ+g1#AlU^u7#-({353pSU-bFH!xeMe6e(15aB{rWzImo|a-z?N;{N1o!q$m>@T z;h18lRZ_SwjpI(wj02^kf>y)#2s;V!`a31q0S=) zg=(I?#U~6rm^-om@ERZ?a|ZmZbV&FHu(DTAjn3y))$#)Swoe2YQ+mpevY*{=w)a{p zC9Bwp8S7kta2K#y{uNb6_I*6(`8&zl;_r8&4RX&#&{(vy7I+uA_H&PdqF(8qjTwSH zv$sIgJ#22(3#lt2l|;FDtZe;HyjUID%91wdD<5TSJ*BVyw4qgo(W$*on#nG>rliUg zVSSLd)Ytjt|5cWR*sJIh8~<(K1b`p=)!ozqVD(8Z0Hwz8s1kfG`Ma`snJwM*^uBs4 zyv7RjK!myCr)dCCmWC$)clBN?6WR|Jh<7c8BymuSi~H}xrNV}rRuO}fc~lcP5MC24 zRJG#0Yb7MvNtysFmV7@BGEeP9f=HPjZ2)w=TD}|{Q0d|cN|u{kS?N)?=qC((q~bgB zU)r3%SmpBM<)Dwa@7Swd&vnKzQbGpN2o*x_I}afu^SL!Qjx1lr zt_hYzJ~zC*Xu?#l-r$i0Nhm(@0V-c;$OBj~;Dh87KuHY`XBr~&v=Cw8^WS$k^@p_@ z$Om~pI)U_MO}BAI&v_1CMa2`l$xSqw_`wgiHb6lnFn!K?X~%4`VxvydBz4PKZrsqG zS?{TSnII5}r;JU3?i!AK1Pqk31LC9kYoD?;{x{15C>FzBoI?*zX-fdX2bcmpT+Nno z4rlOgKEQ3^tbzS1b!#xS5d`W;IN&_)yaqp+DqOUSJx*_#ZZKf{R&&NWiSXU}eY$Qc zu7%Bo8#l*bdYo2rhzYYZB9o5mQEb!%*+2TU8}sM2z({Ok*=*D88o716*(fe4;nO^h zUyZUxev!xlY$$x^*nk^)bE#wzxJ9m3SQjwXK;8y1YqSE@n;ek-|B}$_8=7zqstD_l zEz+BI`v9eNCtGFt0DHJbn6)QJv_8?)bb%dLx?Kkb=YqMM=32V7t-G&gM`OOM5?)7w zG#{w1ky;g_Y8Fm#O}Nbm>H*cnEv&lS0QDr9N1&*1syXP;e*R7sHPlI*)VAUU9~=ew zL2DD-ZI-NonC+{prX`!YVe;SS!jgT3i*TM{AkC1wZutG&6+ld#e@s)+N-l%UUc>`e zsYT%R<>`7Z;7>uivt0(197Tt9ZA$Yuw__jI!p=RJi1z9aqVrA=bv zs=5t&a&hOvd*Du`IiC_h;yvyC8vW|P|FPDM-H2A7ju&d-N1A`|Bk#`jf%?oO9hkR7 zkPv%I)}MksH|;|5+NXwLgYV}G3HBj_mCh?9vHx?lUiJs=)k&kR*@>ln62S*?Jxv4V z31)uxtMdg=Adq7~;`-5b)!hW?P8&Y}cHs#Z?oOUUt@4nLBRQGgRhqK~>#k-2wb5*j z&2WIKqYa8IXHJfTs@~JQjdE0+mm`4mFF+}|_!~nG>G|rEVoA_`DaQ2HK3`H}fPB|dq>~`d9)789y1WuC z;1?Do!SOsEdjZ!OvYOnCej2QohcQvKgN?V%9n+o`C(b( zUBtWDYkeKiY_phCRYCl%8^?AO>iO=ebWW~|-R4zkT&Dj|Y$V~Vc zsR`XYP5v3jK>1y+3%l-c3wL|JmM{0gu)_5;W0yygte!4Zr=smlJyP6Bd&_7g zz7tddC^gSjB~7UF!*8TG`(9G3WO)FrMUK=R&!p{CSSB$355CI5mlQw=-mkG2>s-_K z?+3;KDCi35%PU}Uy?Y^ zT)o*~`vLFf*G@f9lDXpN@=7;-!*a>K$0=Y4%;VzwT^3FmE|ObU2#0hBl3%42=SSzD zGSxoycEtrhz21y=?k^ianBeODHtlbyF<<`Z)lVFQO-d(*(RarNyZ)k|uoni3LG>TswiLd32GYE4 z@>sVcoBLrtvQud@B(03~2+D0$k_-}eL5M*OPm({SA5sBO#rX|u z%Aylq%Ta6z)=yr#(t<`FDsBt%@@aYP9Rs!9AsUQmCN^|?;S?RPt)sl1Utga?CesQw zx#fkf#B{w6buGhw8Hbgf9Q`Ma$odw_yj^h6P?YYo-FwYYM(9!E=_sSXvzWE*_bL{r zl6N>QB?AQC^m)8AGk$O*PNNJx3u$N3vzM>4A=}Y`5$aLJx|;{M!tX@Y;qpSv@OfJ0 zk>NX`G>9dOUQVjlXU%-qZ1K1@8lgSFj|!M^{A=Rer#9HttnGUH{!lFoDjMN(`&GpQ zj6*@XTnHG-Tjr?)AUFOo?ZTs_8;c;d$G4c9dr(@nDs5vCt#dg+&@{uo9tV~FNz$^3 zz;Ywnt|4`~5#DkCK|MOnpSG#`NYAIN58Y7m0-^=}wP;%z)t#3|D7yTJ=gW4gXfpCK zB87^6h1rZymkiJ@1HYIQ+W9Ll`AX7u=i$MY;;4Aa30UTB?d6wY-2x9*5>Uv8+}Zx4 zKca%l^-%beu6BgDM>^UOW)J4Z!`L|**1k$#)%Fm!##q9fyM)%zX;Z;d`DA|r+d(#D z65*>?_#ToALA@b(DUcsgATAZxU_!?*+&H1Nkv|n1nGksL;$s(tQ$xwv1s2zrXjPr3 zU}xLfqO=v-R?_urH^~d>8Gfo+=)hAU&dqN*hG-{C$>hu7?X3!X-$IjzmDy+l z(24vyx1~r9@|=$ml>SIvMe((%!{`@|r;fzNml)jNIw{4W7kW}$%2d+E(aJz?{N+Kx zOKraog>Jd-MYFo!mfZaEtMV)=P;&YC8-ogek|?1Z6)uE`@%*W)6SFtubupy-nHPO{ zS_|~8R}gH^i+}xdmse+1ZNzS@82U+H5(x)8AC3>sz)D9WlXy^rOKa=B_7DS)C_ey2 z#@iEgLsTpC#?2+sGa(vgTA%al&?`uL0*x2cUVr*{kF0X5;sN_Y1u3uo-fC7M~O^6a`Qper62xLC%T{L zGxoT8p0rL{22olLvQ78#%ODfx8+X|GvLZq@S1gM!3*M}wXu~t3&rnXjZ236y2!}xE z2;S76Q<+2s`3s}+534gj9Bz@)E2X$Z+_AjTl>Xz2b9=tBwt-6(BkC|mUp(7}Ji6a; z!R(j-n~69ZR)*(MgczqhOW4Q(Bp0)}MI`(+Jg0<*3BG>OF|ZjLXM#3(eQ`={PE?<9 z5V|Aw$%7_><%XvOAA$OXTz6gxHu=#aySP~fY1qswW1qV+AeN>f*z=OF@a{|cBJ(Tf zHLs3UGJb15RaQF@Jbs+BkC&nFOi}<5Gy_B3$Ugkkc(v zn0R{SGd`=!m`dC{>Ap%Wd7b`Fip zLU+rD&PHJyf5S3mN~hC4=(Dt)=kmvBwNVBqFjt)@RFf4J--QnesMO%&-C0d;F2`A4 z2W~v);H;1-9h{N~Df)IKB?4VasY};8sA~JJOfjYDvA7-QXYh7diGt;a4cwcNXSI-D z?46LDcBD;_G*I$vrwCt@!kwEu3OEecxz3~*9LwZ7(}*`3@7`|dFM4SfKd8@(>hik* zCTrL#y6Toi64ZV?azIBNg?n5%QRaI4b#RF(&!ep+xMb~%jI*e^7h@H751_8an)q!R z>J&7#-IIzl;~Df2zmFtK5Q_YaFYBCXNO@Z$**CvfIJnfU_wD;^5*O+MlgnLWpw9+T6qu)b#4?wo}aWyA0~iQ%$g zGrzpa@5TI4`Rr>&B!hQkw>GV4X=ssT$jgBsPE>q(j7peKq$+c8_JuWgJdAG13P?ir zz={0d(PVWkJp3%`GIPuL1WLc;OJ04f!r|O!@kgOM;&I1#`agBW#2U&#i^|o(&#pO_ z{D;nfofUt@cC740zbxd=eMXtZ*vVXEi7O+)#M9dm*4l8CAkQ{tvGjvb1ldB#MFA@! zvn*&;tCS|6>b!EM4D{2}(z)O$*vVG2Es7*oMjReCd)w4+B?TtwGipNbRv)>6dbk&} zH;aA8b=gnT&Xx~)a<|&alV67ssz0^S#-!zRT_u_w85}pSM_268)D7bXx4l}9 z&Og|Tq^0QS)S7|RTSrRUXe!nJWs@_vrnV0qci-If?(B~O%UEsoKch8xi!i@OYIuno z-F(%j?|M1M@hOt51w)Gb-zY+Ld;z5xmZl!4@d-=!pS^kMRLG~jQk)p~j#Tj^Dmb%l zuS0GU>=RxxZ8%o?Cqy-^DL_2QbcAKlmRR=74OaKd5iBJ{`L%NCq;Zl*O?}N>gJ(;U0aL}7&0d)1NVjaIpF5rm+GEAXxGLU zbq#(Bgu4W_jcIoTwv%E#49)WDQQspnwnFGrkcGtbOfKZNG4^Q!-jw|$;>-WBsdReVt`mS zBW|Wqw!~{*%xUKrtR;`~o!L9FRsC2l=!@ZahY?7D7x`ZP9ztl21L32j$UUL1fN z4&U;EHIau`z-Bz&oy7x9qk4&mv03U*E@J1g)f84pLCj1DzBVwF0M`7b1z*_lLlUOsqt17B6T$MlnfC(ATF^r;7`bUeAAF~4D}o6eHh;$^md`nk>JAG zAK6)PN;MqAUNW`2e^%5c8!e$%& zx_*|hAVehVZ4V--vqmv-|2~R0imS>%vJ0!_x1pGL=R_kn!rqj$7*tiov0{#e0`0>8 zSt=7JM(ZV_u!@UCf4=(Cnnxjl_a#EtcZ5ZN^V_(H@e-%$(&@pl(mykca0IbZ-di@z z)N#+(DsAC+UCzsFC#J%zRGRj80 z{-ctsdriZS2WBSQ-Svv)`vSxFG;tL98)FUG@^0G;LUV+jRfzaPj2;HJy}A*zQE&%x zJ4E}+3Z)*M&dG+}4$uRvVG9j~qu*eIWLV3GNwa(rI6Wr5YgdTpKO8Wv+ zd}v%Rj_C(g)HWo=n2LtRansjo4(9(N=sc^FfpzhjvBZt{g7W|Oxg=sSy%2I(oCs27 z>D#`ZbOoELWrX!&oqE!%vaHJdc0!RO7x5wSGphT*F~5WaVkbv=wj`@XLY!81>s(hA z*YhRfge> zpMhm;DpWlSCE99|3Mo)VyaTO~W&KHGV&EY8%W?5Pv0v%K%d9V|u9c~qv6={af}N<# zI1HOMOMaHT9A4_Q)M^l{JfQY-lvIe+%RHn_wt3;s7e88E`cv4Th|@WB))$OrHymsR ze>BmwVvF&^ivf$P3x14e=d59TJMq#~=2G@dMJ(s0H}{9lqfUzFUA{S{XzqGLrJT7t zq4f=(9Xc8Qn zwx9!p!_i;w&^Scp)BaUTLANc|{*E*-KLyP2*0`kn5KC+&oBHNySUnC57Cpm49eU)& z@8lVSw#(MT^49EFz_Dwah?1TL=F-9G{cWO`-x7r%Zb9pCC9mKuF+o@_KDDZ9J6zSL zmN_j-of)P-&tN`GR~9p66c3*obPsFo8ifq1=A_R;lk*J&@NS0&klW|p9~P<&g2xsF zZ)tE7G3>ce{Nki(UfuTG>W~a{ZGlmL96C>}7D;2Zc%2yA*V@N;0cZ88DDfQC#!54` zzj1y@?da?BGkQUMecvxBsi|=Dzlh9Z)>>PG5H{Z^<)k#ary*SrZZ;s8J_)~{%Lux$ zY&>5(J~Ia?oWFV!_{V%~AD0}*75atY{ND$4y5}4{n~#FdtB8GM{(5cghi)c#`g=qo z7ORK-Pi8Vl3);Dwj%nG~gei1aOz;sk8j3FcW2?<++-c=x2<_n|LmJ#FJP({HiS-H{g=qSWhtT+%zlyD2T|G!KYF6 zLnI_yT+#;eG4SRbT>7Shk}9o^h^26_+*e9+`JvCDq@|Ta(C)A-e2Bz)8?=35ZTkHu z-&DtQZw8#wZb~{seww=#ic{tJ{;R9?GAjT&#AGQ zn|o^Kv=zu-{&P9>Z#ak~7hG>F%H8kY7Em{_K=>qGQ|VY%estX{_~%hVirjn0)3~Ls zwB_oJc}mySfG1&-^1H)B2gP6AUP;tghzZ@eT4r@q-i4PM;j@ZZ+uFU!yE+_{$K2Sc znn3msGap;64hJ-91-5}qS-j#sQL1w3;x|&~)u?Nwe4_p6lX*5Ysf8v4uUc&MhW#f; zIWPUk^`RSLZo$?WOVGA6n9+kYwD8Ahd; z+X7M_`ZaY2y}aX&xA+e=GTIYaDNOK;u^lQ%c(=paDSSG^85-c@*s!P)yWqmFgI9vu z%?5B~3L{hYwLgYT-R}JMGp+VMP|;r#fbgF3j0PQ6QYNv+r<9qbRGeefMqk96M9nnw~+x<>nUbFMWw6)O>%>+v4_ zaNhIt!Havl%37EG1K6~0pE8N1t+#R53}^^^Y%Qq>G*vOpt~AZ>4%nb{n>{<)n6acO zXN`K)RmRrfgtsiT#5Wh_i3Z$yG=p7;78SC>JeK z3mtw;B@N5W^IpT0Zl>^6@bzbw^1WL(3vqaqYEJdt-29AKlZ;Ria2)nDean7sB6FI| zR+2eJ#^}A;Hld53w`uH{VZ^$vP^Nz{^($w+*3NUlPJ7)Wla43TLJGpRuGS@&-yw_y z|8Co9t*@KYYTqTKRQFxov6{&_cDXrdrSG_ssg?d|)3a-*O-b&_;voaX$KyFS2ncSJ z#S|$N319n?l=?rCt~?&9@BN3dXBkUMmO-|BitMtCu_XH*MYhP6B-xqCmZd^Uwlbo! zZ$;Lbu_jw%C)*TR!jQ(y7&F7~`u_g8uRDix?sMMH^SqzuoO|v$Q31}1ANuo#%REt2 zVnbs8nR?bT{l~H9J3{05s03XLt=CT={+3eX9T3{M%+-s z?LZrMFe6h_wH|N~yI7t^@a?F7K`%tyW60A82l-=lBuDcciYVUp61Nrkla;Pl$Sf2aTVuxTF6-Zeo@?mQthey3*T7d3LL+kAY<&GYfVZ6UE0hnTV# z?N6fcZ>1(;e8SNn)yg9*C5gZ&1@^S7K0xU>0%7wm3mc6 zzo;8Q+3t>Xnwz_t0TaGLmq?=rLCr}H^|=$Zv^Z%ke3dYW?EcMzpD4Cwtx4l|NV<&mEcCJ>JdlWFs@oL;~n!Xq<^ z_szjsM&R4c()s>i0`R3@^lPV|K^}U{QM!4oUNQxWUE62Y0`Xp7AZ^{TJn62UMJ+*j zNLY4AmZ;-!X@&YQf3t370c}R(Tftr6#ZK*?%(Wy8p31<(48XPp*~5|At&}g$D(w2R z%4}n)Jbl~21bBIH02F%r6uwhj&;cPgj+ob&5rw|pX*(X>IaYVyrQHsj!AHPYrl!PE z5O|?@msNN1_`eX)niKC?7RTHOgp#!@xtNi#bvsX%Dv%g3Z2ivUhx6(j*<(h0&Gf~o zVJsx0lg6?9EweRyF8PYoOpyCTadaWA@!lxPvJ7YsRY>2FOU7Vy4o68-Jt-IZMwhU=8J3|o0H^-W^^=6d!(EZ6#x5fO$o_DBQ zd+j_~B$swEvZ_CZRV8drgG@IO`i&#aA!~K4SB(}&XOo=)kb0#)ZRu{R4saFD+2?H_C1z31s-dg=M^p?F7#*kOeV=B^dN^i1zOCqC12q+POVs|>%q2KS& zgA~Usb;Qsjku;t4vLbD`UM5pBMPqI#-l^6^^ojzOuwVF96_c>fw_V72yb`+sP=Jz9 z5+!!tRca&`q7N|m#|$MLEkk333>ok4U|t)1sTH^Md@UEZkP;R8OE04*mg5YF7hiEM zRaCWpMr4GWX*N){x6OHWDA}pj-LaE&y9+HI>{##Qcykr*_}JS-26z${H?z`B*h09r zVEH=XwH-@7Z zYV|X|ZVkZZH3XhG(5!p+qkJQOwVL&ImqP4zfQn{i+aPEo@x5<~aM?ev0vrMfK{TVM_P9(5(+KkCM@K ztq-A0PvQUvChF8Kye=Md+tq*{E#@e~6@^Gae$+I+ZSsXWW-8p_K^Ge3jy&}QRd7dO z$thwrnJjJm5qYc2Z9VDC*Fx2Ny~ZB552X#zsE#Nf+Ww6M;BKL{?n5H|X2+4jh9)C* z2g`|dKU%O}WC^+ZH;!w0*ke;YRfP$mmZ~CzNf7PLe~KLeN?Z41=b&-msp9W%=-v0T zd@nCSPah6X`L?jcuWkB56AcJ;rMiguX7Uz&y?Ctp2XNE8&XTjXysnaH5&Gq}nt$B~ zr#?4UO#ey{97Iaq%7v26w_sK0?lJRtjd+lB%GH>Tb-n=?^$j(YStcpv`{sYM=9{)r zM_0AqE9tFb<8*|L3Ss!E;<-0;vU0h)5ELoyQ1}#sgEgHyIEFQ~9#9CybFQ?xM>at$ z=O{qwdn*q`gqS;41&ZAz@2vw^9>oH~3-WrEbyFt*8zz{Iddc+C34*&w&$`Il4Ks&T z59xUNA?5s|_z@&^S#Z{R;82tlx(xNiTp$?E*2O=1M#|o~d3-vCLg+p~^8FFRW4&>) zqajvs6qHRX(XIy1(M z(3heiv%vmx-DGKmTdNo))TON1z(tce?0#b~A#@AjhoiMl{TqXGtzjE;p%F(Zq=2g~ ztvIQ_$BocLA}4;n>a*Zk9LXBpcfW7U?P%e-^_&LczWJCxP*3!@G5BcVM&u}*bD0xg z2yM<`0@|q4!G6}o4iepAvGFKc)atHzF%sdP32oleo>PoJeoq%Z(3lI3SI;2Dj6TaG z1;quqz($Wwn_clkFjKC~lErQ&@5vzUlkIQ#aRE6zEuIvb6#QA>XS>~_@gk2cjJfyVj5?>l~PMDC1GLuZGO^Ls4RH7q_liL{0KLDRv{ zQ=16Ba{!ntiU6=p6t_8K&fYYg569@-UdW6s_-S;S~v8vfX_D%fiOz!37VCrI@)|=As{35zX3s@&lsO$xluS>&?lIGtLEf z!A0OlEz~1l-VkXF-kmWMnnnzk_9Ll)0Qi_@Vq~Lx_8vQx zgqkOXHaZnioRk3K3bJwhkB2X`N_ZNBhBuux|jG1&*iJ3!aZ@%&r=a^#t;8e;Y@rXDc=^&WsE za8lbj?oEJXE}z_<(2IH%XT=BL3fno*I#+DYZ&rxfJwO509(8vu!gYGw7W0;=ack>e zN*VBib@+o6did^_r6ST8O$6u}m2!3)8>5J-+ggf4b4T|$;dh6SRJ!XdHVur|=H_OYYW`+j5k8yN$e2!T&ZU#ypb3*q4xM5A>7`Jo1 z(OguuJ*WT4?CXJ%#VG>vHLtLeDiP&0y220Zq@{XFDD*gmK1nmB>9j*}akK<__OO#D z<_ks~$c?a0P-r|Iz6(cyNdMMzw#H}+@XV9uW)fk+v$R%he>dC=V6^pKOc&gAli#C` z66LA$4G>;=R>A#ND}3s_(>7KgXF^pNRqS*-(jh}Lq2!}8hem%aw~0M)E41RQ;=m!8 zwCV5OdUR<|_N47h)>(1m7)mHrw;Ny|wEG5EDN*x(q{%f47y#Mc1Jg+HrqPhGPm$K$ zZn9lJBDtu#1BzX4{bwBhM-4gv!xH&M&jXf9j_`m=ADtnE7Ds%f+wIAoJpLTXWf|#- zktN=(hi225wz1y2+*E}M)}s>(*|I+&UrfXX{|QYq%mO}!1X!6iG9%T6j@#7}XN;MG z&aN|2)e!`&IO*!$N-u=W5eLcX6O;}0j@C+a0;s@GM@$S+1jY6vV-Rdqb*SQPYr;Al zbBY9noWp=w6Y4v_e-?K!03;oM$*b6!r4*9=C=}p5J05oGhh^(FsCyh-kmO>=!$Q>^ zRh&4wPAWaIXPn~WI4WFW#a@<+LR15^*|5TJ*n4*u&@4d4(Xn%i190)}(pb*_{j{3{ z$Ob9dphGA^xu)xNdq)LriSL;tWOX{UO>v1^GKNJv9>Ykf4LKTki zd+XtFPAWxkvV9!RL87W}@RxZUzx^K_kxt^yTg12J!@)} zdQq5CdFF2Y%u#M!(WvaE+(tT(Z{VZfkj(iqJ&=>K6X@rxQ1Qofv2E+IBQ_GNKZ1qG z4v+-p;{KDXM>823Co&KyjmTXUgdPx`DVP5TW=bP2Ayyl&2F*kw$m?Y_Devh&wpaF! zSAm4Fj6#^GGx2~j(^*f_2E33FRl3~zBM@?Ex_Usj>}Pl5^%6*UDshjKWQu-8a#B8~ zG$2a>k6gpjqd|wg@@c?8fNt0aH=V}RyC>2v;G4bU7-H}#b9<*_REQNjr^5@oh?sf`quxjOve%K9-NVt>z@RjfZiGkrk5MWcr!#ClCO zxZI7Y@*5Z!RqGpc0?xiU;wMfyNe7&EB6v3a{SgkdsTFM85s2he59J0Dx&>$i0)9X{ zwV!6shw%XVRnz=F&hA*BszyP3UFUe&)9nB zV4%2M_e>z)3!TR#leXe0v7-NDr_fmwLg*}DuW$?y^9PBlK(LC~;3|aHb+`krg=3&< zm6w&EHqTu|Ah`Cyjn?~8jkuRImhH^qrN;n-HP6=9u!)p`%($4>DK+F`z~=N2+;PjV zhGl^`j%5YZyn7-n!o40h7hCZV6QpxMQwM5`<&k_p6(s;Th9i#WkAMW2fBj7?hlJGK0lzT^p&CV0*U9#=io zwM7e%0zV-@)Jyr$9yrftia!EGv;|^!#HT%B(jmO&IA!T`9OesB3E2EBaO=kxn7Ht> z6qtA$bvJM{W#@=0y#FqxF6G?*yLhO`{=2SN|IrkdJ)hAOF+FkZ4MUzP_oEX(->1qa z>ZyKfK7BYkH0?WnLPTz2`|l=(tVdbnH&*#a6ZIcOQ%?65^XkSWof9Z2b38qPj(UVC zRg*Ka-j!fUE_X^Ag`mFhW zN&~{)B`_ON?~+`_b`jwAR%{lq%(De16HW2ygz%$iUq*my$1~5YG%H1CDoWoQ8(4NEEoBj zD`4!;YO^+LtDo``;tS^-h+(h}i*lY`nW)emam6HgEWfZ?Nen^@w=wza_19Ifh}$# z6&M8=T2iI+7ADYrQQ8wF^fUXjr6^ik3YsoA za`&3KM`bKK_Sxch4}YWskVOyeq{n^IzDCu}3mJ2Zk%8%GIL+04)l8tzn$4xDIZB2N4vI9z31NuB^@-ywT2h&To}C_ z!|YePh-6~WuZ<(s-sjCO3NL&HAoES1>J8ik+Bln0FU{U9iTh-EjVdMgs+fMW(dk#f zFUnBUyfFx07)X}7FOWSK1VmogI}Lo;gPW_nRlHv_nqk+0^V=ElWPKp{k>XVzKe9N( zoS3!$?{gpQ`evwfBQpD*QvBKvAH#s`2S`|g|uc4vY$ z@%{cq-Q(rl1s$r7%Pjz39}?Wew1T{y`2G<=B@JdLY>^H8wrn1QbCPQP>$1bN^?)XM z*{_*a9HUuGD->bCbgNFgJBTZL-2aoH3+S$N(u(YUBx$OSpViTyQ#~gp%a^Rs3Uj(j zNz`QbE{d~xZS^@*G_mo~KVMPCNSzp(PdFA%(fSFwjG~DkcykZEZk))L`!KOZHSaUe z^7w?hc?mtlJ-jEARPb5oN$;e_Fo(u}Gdn8LiEWRfe~`XVA&QH!|DFB);piZ8P7y{` zo~shA5`~p^O!_LZMpYin=t;^S?iI-ROlVqN?8{k^bS~`Dz>Hg;LLf zg_85@e50|{&2_`XUO={b{;c5UWPVVz-q){XFrT@*_-TGF<%t2ZEeL``&sl0Q9_|M% zD#oKL_z={^c56lPKGqt4h%}^r(f7}p0t6QG#dqz#hMRv~e$48J+b~DT?ZOyq^%pEn z{@IzLzdxdN&)`d2sSpif*q284#PH_EVBjDpvO!D}xe^%Gb(~xM_+bl^5N?GdEn>v= z;5-i}F8t()o>;@-&x(S|fQLqQhz^MYMR%f))Ai*=UV z=zR;dc(Te<82lDU)ss*~w|#u;lap;VeU^ox5?UWm3LLe`Be{(7z6RziY;s5@4?1P> zFPR?tAr@1RWn7Gt9?!KnYzWji5!#SqH!Jg|s`WJgb3O;eHRX8H4@J0P*ktj2>0+&e zzW!BMQo(j6_r=LGq076F@V|-NYVr?-lgcL)j`zh`q0|$Zg|l?#m`9aub%*QEa^ z`VPB@X}Z5nsT+Jzt=u+I{<)#peRsd%KDW5xfas<-|%iPq~8HJmwd$HG+~kt!n*r8wiGgj zEHL%R4Q;Fq6nM|V*$&GBY8IHGu+I%Rf{xnXACpTLj|%8RTQ9FL zjK$GbG4ZxY;cB8u+~)R-aj9NdgRBPFPyA?;314naJiN}B%V(MFz7cvbXuo-RX@>DM z-_)9Xb@O@E${;hh*7s@;I}^>Cn7apcH!PjdPyVD<-ei3ja6UFiNLFZfWe(yP^!Z=+ z9sK1bb9R=7&9$m%mWE1bOA^Waff5H^`r&8AAl|COYyFMEmzOe2VAY#ElJDsGlZn8o zRfzhNy;Aq$UwKSc9-8)*I}#;)Co8S=gs%EIDq_?K;uV$HwG6wdKJ2Y)6_wD~giiUC zAYGcAqwYW3y~qQP#CxNaGRfBxox=*ua^DN#Q7aIqAThL(LwgF@{{U8hl~TJ8+W#2$ zIy9@=>Z$d4o`R__ho2-od27^DZXdwgQkwG@@4TwHm3#`n{yq-2=Ah z-~D31{#c{~x|0fAEpLedUw1aFK5Cqytdj!I_EvYqg=D2fE-JYhuu`W+Vpqbf6k7oJu0ZMFwkJzo`gy7kgFhc1oXmiJh%9gXq&d z&hE#!n>$sSF-68o6i-%1@Rw$U5kJ3y_0QeV+H<0*#Wyo^fL{9rT)lpCezH-?W)L1de#>Vi({D0JgyS&#ZXsnMlIC<1>LRP%I^^IhCiX*i<} z+bt)TMUxozqV0O1ypZgkSUg2G07krT)~^GDYrPYp&k%x+40`%PoWB${woo!3lM80YU&6md)&k%nT-T3#+ z;r`+cMzG(`A~{pz%(`)YzZ&f;h@VGAlJz!j(nHdLsfLeF&Tv=KlicYf~ zxcXyIh4JC;7w#hc-3v}Fe|DDQCPi|pVYM+1pAL)ufqpNYyo&i`1*3c|_6d@x{3q5H zqqtxgvD+F!D?m}P2;R?^mvp(kru))O{BaBIK}cW{WeF8?uDALrvgNeb4aKDsU`bX~ z6~7rEt6ZWpKH&Y#(swp7PfhL|pgc5D9KX7>LXBH!cemp)o9@|#av9vf1pseNA525= z*!L-%@d{=_&y}Y=WC>8^8%VZuKGmPGE}6>HAC%L7FDBk@u>IOLM+yZMM37As!C6Hk zb|4Le!b+2-kmd&Z-xsYdOxUY}|1$<|wI^WRZHL315YOARXuqub z%X+pt*PVsj+kk5vf@f}bVB7;Jy@4}|@wt0(CY1T@JQ|M#>_{*XXf4trMs)lx>q4;y zQTFTvS}Ou`MU~B&2Q#L!;Y7c(2?Rg>N??Kp#pqvG`!ji6i}>}z-eYP(3swFPqOl6z z^iLdL>5e`!Y2Ta(E)5SO#_*ShtIa~sH&wy7hRbhrO+N#EJNIVHO`#t0Sl{}()Kh$$ zOXgEz_|#CJALc@X$7t>4qbIERfGio|#ws^)Ani_L2LAeV(N7Tvgo2fMx>3| zDbu(4#S_xzu?TK=N12P%HH|l1h&~6P(g18tvEX{-=!v(ow zqQYI^=G5N;dUM!Id=9m~re~NzlKoct=}!i;HbndGJxSGfU^Ufm4R6OA>1$Wq;5wzB zu_*q_LO)qqeI~}>V#U>n7;HT=JjEbTGY#bi(o zEn$2+{2iM|a%j z+mbguG}u0+bQ~8ZNs}K5l_7YZejh1Tq>Th`b!N+D+bwL54@l3Q>xUTxGeVuzj(d(%7Ip1G&_|d}7Pr|Dc&MXI4qA zbfpIOj3Q`K360iqX=cUL8mqtzOw&r^^N`TwfTDe!;pmT;>Y(MhP+Dy3^4}0Rnj?ab zKp63cT!B9zxSfq0!A3|}<|D;(A2e$-*^i%N%zFL$oPp9Ndm*tb&tmraD^CAwx^BP% z$-Ze){xNRpQnh6#R$*+LMtdg$fOPxH_`c4w=-E5_9p00FDE6r{H2Bd_`Oxukt}Rx_ zJsa!9A3sd6l#?3-UMa+WjBCs4_=@F`Am<~U2D|nMcPCej&#bE4H;A`~!-YPbKZp`3 zx-chxO_wA*L9lH3FAv$@5GnU>KNfR$yY$0)f7p}$Wtz^t=*{HsTf?VY99J}!@Zfp{ zpOp1I=<$4}?T?&D`%D38{eCGyR*^{yyBy{72XunumZAb3Em{@_IyehPA|3t$F=E&DZtfYy-z&MZ5yrR8EVLuN$+!1Wt)p zp47ZDD&@S;SEP{QF;R4$CIh~7*?$Y{-PCI$%?*ont=@j-eCNm91)`S^eov2dbo>-? zL_Q9^(jL0hmpL<&>GUh)7T0cTzsfPSK)9lRix?uJtGo2@nEE1yCLjiV$Yq*2ANftE zwozMmDe1}k{>+6HUGk39-i|rKK65uM_hwt+Ax?#>wO56RAy2Nv)cRcL`Bf?EEo@g{ zi5`co?d3;z$XzmI2PV2hm=5<_D#A7~CXo(nQS)6sV$h_FlKz|@W|=^%_IZ%~gZxO> zM&|t%uf#tgE{VQkPWO~_;jZFBOV*hR{7GU?&o1iL4$GSHW1F;Jf6ng@<&q!J(S^T{ z795%xUTF=_-9D>ZR48VAZuixnpz}GA_a_MI(B+wT>p_$=JW9%sue&h(M{S&YtHx$*j9zAt5{Op^qic{{n@53@KabGVP zYWE%%z*jlr&8E^4D57vtwWwkVAxau-{>N?_TpCO8z~p3PF!7=@5ME z^E4UHsGFJic$nZgiyB?A{PBF0kfOx@XRqiijohYIUW?Uso5i{8yzjBrg01R2Nr=?PDz}5+7J!Cu)h&|3tmI@Cxa!P7C#zpCGiC0Bc-Y z^~BFYb=~W*@wwL6`DF#-Q9n@&P5T3EVf0-kIvOq~Y=$ko)=zj*)E@*+TaPd;1sbUy z1blVZp81Y>X0t2dPRQG6v^!Eo2njss7;#Y>5q&gFKmNP>vB;^d*`}MA@hSCO=hvQf zqb}J~PAN$$MGOMsRt)MgddPAp!}WYF6J{m_7ARBk@FUHjvzqpGkLpICWnQ`rY?EV{ zUv6*L-Pn__6X7jF8x4D2r@(;L+aa%MI-f46V68oS2C&GP^?S6G^^ul-uVJi|%S8gv zsTqfuXtWHDbyYzbE8gvuirk%9uP-iJH~B;_t9Smj4vx={6hqvd6MsrrlyS%3<{nO}G@#+7z z+?M0`nKIe!txrW?6{`YGZb`Hsu-6xzxeH~OoM)3EY~MZg3Vog4ZT8~(sj~N< zUfH9h-TiN`j(qI(G;dO2YK!;F8IZFzCn4q3mcOT` z@u}!r;!DkiYoVjt{HLIn97>i#;ok-5ZMq*m>oR=HeR>J?wC+;K8z!bNcld8`fjV!$ z{L`{pXUgy;n)>Du;iRSMBA_MM1b~9o^Bc}otnrniQzCErK4$;>OfH+OmpvtIcBcw< zYSX&kF!3?TA#Ismv#3@X&UiQ#TH`&h+r?@47{AV(0%DjQ?f;U)S7$43xSQg$BYxQ% z&Nw*n{H?V<>SH}!qWCr;v>{pcl#uCrw+i3FFdfIAag6tT74ys(ttMKAH98}toP!xH zX3f{m|3pz-4|dt>q0B=j`t6nV-=$Bz7^rY})>1v^q2o9m$@oz%uyUokY(?q<<7**V z0$1Q$aja%;m9m~MH8SA{fJ6G(Nz)UOxnObI@TR{<-){w)jWJl`oGk zcWwV#tC1~+=CsEG+Lc(7J!RfHsqn+j>TebO)Ll}0F+XVAy4mzSyRHK&kub2sKe#4or-(^_~X;Bc6%Y&-i&ed#~F3vWrrP+<7Eept~YQ; z4_G((ZN=)w<0LQcNN0`|53wxdP}cbw+aDYNA6U2Z-qHsd?CQ-FMN0nsBPe2ORE%9= zla-vdH0*XOOr>AtpSWY%`K;&n+4|MD_2)vgUhojZk&jm@Y<}}U{yaaa=n*C4@+jAg zVxx1!t{DV=Lt%dTSpMF3_Qx*J9nIYORw2*ln-A4Te)slZeSa7wYFEgi#}lol^s8Tv(1i>%wbln^qV8 z=V$AjJLbs8hc+Mora2QI*yG|oIvjYGVJ<`ywPngOlKD7bOqWZEe-3wKy%yaCU2Jn_+9JBj zR_$EK@|u;m!vn$TYf24P48)_Bsh{tz0_fX*GX?s^b*%&&td?i+2sspSX<)jqB6z39 z=B8z;#DlatWA>&8z`{o0RQlYbHftE`ZIxCwcE}OWfr?ic$5&js}!u z_jFpj5;V0wY?;(Ly~WR<#+#v%mRI1Lz;<4m$H^q_!hN;81fql&CLqn+PRTRi?}N}j zep@hO;oPYOq`hu-+-BD9s!pk`2>mf|5t?*0Y z1xCHckr!?Z%1*_8v*=6_sr!}pShyF?B6IK6t67t;pxAGFM~UpuvS*+6fb0%e5uk!N0g&GI zE1m%lzV^3S6x*0oYg*(9@AuB$4j9dd%pL5#pU%I#kzcQekb@l=c|gzBdFT1H$mkKz zt7A=K?{@-%r`?RHihpozq_=HVQ>C_;MTJ{JmJw)A+fycMOTO{)DspF*=WA(FYE$B~ zbuI8m7B%t>F5id-q6Fi)l7`G@?C)Rpnlf4ZjOO;_=8G4GbYH*VwaVSMlK#(ZjGh4J z^+a&A2gy88F`2=v++dOz%t(7;u5Q;GBFf`5tOurFz2*8LJ#8=2vz!0Q^HkKj#hV!k z&;&owBR2mPi{eQ8jyj+2!;U_NL<@)Q5al3dwX=IaK>UBX*On?*va^QeV3P6m5qG@` zxWBrI$lPPcfz%EpvdsTJFrDXbSh+Y6S!ADaaZ-N+Ci$S`Y|8N!+mL{KNeixwgWk97 z<*;p>4`bjHO?(P_^|_=RJ+QM%@2>-kH*#&@Ooc(+J~{9WWusZS{E!f48IN-yP7_dN zPp_W2%v{(uVD%^1&#Io-j6_?d*}H{#Hf#k<{NDQphuX{a|w`doKK#D)MBNR_LA z`vgp8k^Hvr)+=^9;YxZ<-dH4v0O0}tgA&p5|c(9(6wYoCaAZ|hbT6vL|%nIg@ zDF1labIlYy{oqwWK+~v16wXasX_b|A62ZA$-}hDZ0L{!J8L1BoSi3tkcbK<|1l0}?o| z(& zI#4&Bmp)*0rEdV`h`J_7`fj8;AH_cAU?lP}AWf@f(t}NF$Kv$Cp4fyT4M)op(R7 zX=0KbS->eD0{|jOns^{NItuhDzQf_yt7ob9_9BDcYHBv5CZpcxbXFKqmR zVFhos`4Po^Cd7Kz1L1^J^d%|v>r5xYyL$8 zzFGK90yg`hdxU^+CN(jYab66;3Ko3vX;0)ri3D5&=*zv}VsCBm*b55ZynAu!6oFgafdu)|7rusa|%58(;k;y zpREFWzJ`@s4gmIHa|_8<9&e+Oo+gTU;eWe4{^6Rj5$bz3HRH*{$_kujt^I(vbV;d$ z-{z1lTGg}eweYZE>Td`T1~{r_#2E!Gp7I)6gLWiSQB8Pj^jxlRZ*U)Avbb)oZvf5g zRc59=S$Ouq^-9Q3Z9AisYk+kJ@a}5m1B^-Kk*QV*bmcuNlq0vowuO8cV-hvdN$ip7 zd^IsuU1v=GocLKNF625`-l7@>E4Q_Pe3Yxb)D6-xPSe9o>D#CQI2gp=l>vw=Rs;yw z4XoJ!Z=XS`0%oUVR|*Oky%Tn~)D z-Qoo&>SsBdkk2o&VIJhoB`Yltum0fPMXNt`?O&>8x{uy;=khbaQs44hj9+nV+u*SGn*e1!D7+V0j_ReEiofM^KJ0)2}Ku zbYqEn7-pE9R4*vO;*O9aKbu1O?H!9ZUn+!pUuNHwU;_@V#(ZH-Sm5(afLu^g@k|&^ z?$ZPFCe7{*gFx^4oVZmOVH*`=?I2)xn~`t5Pub5a8CZSGs3+545Ozand4A7qh^y12 z9BX)gfQ~wkk-%irGhBLV`ctD7MOnsdUK5aV$n`1F{7x|#ud5`>`%A`o7anybn)FuS zUFAx{5^erq_N3VpaElWLaPP@$XiC)sg5tJdaD zu3?jCq1=5sB&oz`nYZ`nl0*yMBQOCC{#2)HN29#re0uxIU!svf1)~nXprh_`ux!b@ z*9JPyshagosr?+_j~v~O;T9gHy!{VUu6&3NvBUj{NTOhi)`~= zlHqUed*6y!Op(9$G|l;Z^03^^N}D8UE{Xm&c2%N+x#05e;A_Pk#?B$U$}`d{6*77= z9|H5?t{Nrm5&x7K9rF?dOWw?ip1Tv$%xh~yQ55Sja;Uz$l5cF37$|%6NHU`;C?OeA z(o^uYv?!H9G|hwqoT@WIXK{ele|+_;&0oEU%|Z9fn^2?TFBKjVsrqW#o|1eGwU#p` z%QJ2gS888h6tRDh#v6ZV+&!QOCTtpf(2}Wl;@uYUX^~X0biTtEU#;3@3`8aaOCrSK z-B(Jbg}$JAS1XLo0rsuQ3pDdCIH8gMlLKtljrY_20RfV3lD^J)P)SB`dB_gE| z5SFxAarg@Xdsadg@;ZAfL|tt@Dv&tRqTp5C65AfBN{+mrbo0t*9CWIUR3kg=aSXPa zpfPDsiA~ZSF#`yP*{GC+xj+*AyaaEuy)zpf!kaAVkn82WSoB}4-iL3s%i#@OGTlbM zcu$Lh9WO?88ND>iRq-qtO`fR#2-@9QDYUWm9_i;F2kF8 zF)5a>VVrMyz}(2VK6~j#v)m(zXD`_JlW#u=1bezL{~DB#sdwakpAHlmI;(=?m%~E} zB*1dMlS%s8k`@918FF9Z!DsFoIb5*w{VHe#lRMMb%c08`UX%3Sv2B3WVhN=B4tu;D z+YCbGVeQb4is8|jWX*v>aB9K>U^S1$&4nkBZGlvMdY~sW%&3p+N=PVpto9+t-KVKc z?JpuD!D9{Q)1J$N4d0vtKy` z;Cr)wubx@OP&KCr8Jo;kiJ0ODEX`K0P; zo!6>pX~V63^t)xT0OD}r4kP&k`w(36fnkP+ZEELRwr&Y+aQR({XC9JQm8b1`^~0|% z;EgQq33&BMcOU5_|FHT|_g9Sl{B6mfx_sPKsY;e|X(7ZWTi$!T;GvjThg=g$Dp$8*dAVzVt%M7+ zHZooKl773(O!u)J=HjwPz0&S_1@YVUda~%by;1Vawplix$Wt;c-WRVmisq}e@}QC;<+oUW;PYPae25CF9wZ z3wLBJz{+3VFEHDz)Nt~DWHYz{;TK)iva1P9hqSEb>5tD{W)qaKNz&DegZ$>c%6FzA z=|AJtw^gh@--VTvo7BKIAkQhIB>4oJ@mFawtsnE0jCnbvl*Sr((q?3hPH!77C!Yeh zTsAq2F?utaH9Kf4RxNKJbngs!R;pK`$pW$=HzwXJDOX?xBC&Pf0&-f=yCf+8?Y7>O zGzMyIX11a+?~OsDH*yDM*i0AjtHq1p7U!smb&6fm%CnbRdF7-V-QSaeS`u83(^iBB zE1$91C&_RBNIk1bw4#6Qu#yN%OAD3W_W6kC1HH>rl}a@bO}K8qR4pM@Thn87g+0ws zD6jL3#AV5@B=+vh|E&UHi|hYby6$*5-si6zxzlpzLVmF1W}_)bfQI+sFzcMkfKFI?-4$T==>hv*Y6Lzx1MKbXXcq_<~_5|?hCOrSJWnef4U2xQ_*UVWz0s`&!)D5D?>OjDm+c1>P7!=@eYM}6V(gns;| z@R|$S z&;#;{WYhFB09&&-Ml(9UL?ct(5<&s6}F z)=HG4E^?6$q6v?PrOJ;%RhGE#4U&O#BeGxLP?_s)k1RV`| z3_%19N(kllM39eI7wcz!d0{my^nG|Jmu~K?0HbcT!F)?!1@EhQRvd{5NUOTB&SE>P z!BxCov3rL1?|cGzK)-@_H1QsOI*1=6espney*|IDyFMM!4uOh@5N~`=_C;bL?fZ?7KO+RX32s`nJCS6>t}c`KSwN{PsmvzQh7teZaoQLngR|`df9Gtu z+JE}+Te;lczd=&}1tQ4=((5SrYgLeAu}z%SweTbSSjW=@-a^(0fT}tKmU#*qJjOk6 z(4;EnI7)(Q9dk#W0i-k;`Z$#k`FjxrgK6x_kf$Ht$O?MX;u)|?W>BVGR742I)$edT zDhp@+rb-rZPdi|A$%M8l^Twx1a5W*F4m(V(Vwl74^JBuO01Fs?gaBwMmpQuts_6xk zuaI7;2MmBHH)%4AaH$hHSFN{F1W)-3GCt%DNDXDn$FxI0|$~vm~$gO|5dlzL4eOG(Mx~z z=6bt3T|ujx&5l4Srw`d=S(&Z644lcYkT6LQoY-uaZDf{SY`S-Mx83?-sAY zlcWzFLQ~~Ymz;!M6jIXR6^Pq0bqL}0=i3H#i5B`Ye%{CPw2`u<`~M%d`{#EEI=#yhP|-l4i$Haq7laBUtftHMKzxy^$VpcPks=Ys9L;C4Wb z{qmkA{FV9UNTVt9TB`(aFMNUdU3z#EbB!#7teW;tBaMA%!p(0@*#u7vhu>=_lUKB_ zj}a9RvEZF{%+w3bc-VX%eZCg>rf2^7G8+cGACrJ_I^SfLYd@a8KTr)+=tDYTt zOHZF+Z3tYtgB3jK(th(+vmh^tJiQE~_m5E{q6Mxkw5_Ll9r97%`Ni`Jwfcw-Yp7~t z?Z+`27Wl@#_gyaC4MQ^cIobP8Rp?YF}mUu9iS94XKBp3Kr#E zLy0sn1y!S$8etLaW|Q=(ymY?mqxpEFpq{5AccI-ah*n-hbp^6K`sG$SB+R!Emb}Dj_>`4 zq=RVF$URx8P-@Lp!Q5H8m?vh4@CP!ppVZpJE3~g`5SE2#k^@U92hFd05yM!>ih=rR zEL@x3{qo*=;l|nFFrDx!12k#qRNrqum4!?>qt7!cHBf-1>eQKCyDMNE%g4m{zk`n# z&JG^S%Q~6xK#&M06XU@le^omC^aTMrGJ3~CM}qjVBTbbey~>M!_KQY56wd(dW9QYU zgSaUpP3fAkv*cS(BZUjz`e0U;0(U5WUVzf+v^Uva)#U1_ z?4f9o5LV81#g^Mh$l!(5KD7+P{tzNEw=CrwDoh}y@lZW!-dqUD1V9a{P7ydIKirUy zpzsD`p!q71KYU0GzIT^?Zt{*$W`fXPyVslH|GWD)^$felUjtAy;WI| zjPfmotw-$Q5>yw#ZvKM3&Hz5tKaXz z!u@8|$h}hf00woW9QZ)hka1%~sWN^IP^J~ac8scPbl)*AsmDyDRV4^wXKQ}--;IJp zEg=X>)Lq>7XM{^dBGPJ&Zv`MEJ%l3$?j|K=EP01fR~38(@t8`YLnoMeU6XnK1tI*Y zoJ@PE|K&kT-dt+Z53z;vxA&Je6$Gi$7ctW;2+{Ahr&|Tohj3C9!RlIkVA^Kje*#wl10zY^x9O@}O`#>C1X zT^I2eXY~CVa{L}N_~phmfTZvXFgsBAjJ_{Gb&bc?3{)7RXzU8bMlU7z$*MLsRpp^6 zuEG7eDH&lGIHnu$E&;Sne&5vEt#)f%2?4@=a#Y6OETq0Bl}AUv$5lRqzDcA1mX6ic=nm1hGV!|83-PT;h5z(GMy{q%=3SRVy0S&Yq@=Nr)8YsL!xCb*iD3*-?KTzs z4cj8GI1RF{NGwd(vy)$Evx+xYr%6pUS&j>m#sHANj^UMwM~EY^40 z%~Y3fP~}o>QlN6(C`~DyQuV|B(9C9daj0J1ezJPYWA(A{CM$&J0iT3Ox5if{1w!#S zynqsS zSE@?1hD?#DiCv;b#)myQ{YdU*y%{Voa}F8ot=Ep|9+Z`SBf_Vj2I;ptN>jZU5LBv8 zP7E6p1*S-er6xgE2fH^Z^v&+sfb|BA@ekS|1L4?BXA<8uf$h3J1M>M;-ABmCq_-m- zvTA4(izo0?dgoq7D#@vC`WrL-j+2^a2y5Qn%Yv!~lb&2de36*Bl1MpJYCw6sTKzGb zQb+Z=9W1T)6O4N4>a07_b9$1Ntc0XBE|8;1deB8#!@#4>XJ0P;^$pTbz#>s6dfBAH zPQYTlK{>{QW*J8X51-gnxE>DW40TnMouZ_$FXL9FSa#fYsMUZ=@lasqv~ujAAtGn_8)qKOtmFB16(| z77HX~NKfczzv>74vN0{wLx8As8E*#5B|>QQ^vLAfO7FqKfuK!>>a{kwNA@11e zr0p}+o-V|`Za-I0wyv}OiGt?S9!L8Li<}oEcSy(G9j5xDgyoCm4Bai-NXn8I*{Q|` z1j^b|+}FI!?|+!rm$8m*T0yvvs<*b3*ozY#;a`%R18A8FF7r}LoqFq_kUCJ}_Y3K& zuDMlJXsYyZTw|X5cLSTd$ZEYi@6%KvX;lyTsTNg~AGqeE^{)hD@U!Jj<{gB)thk)VP*ZMZDCur2a*$u4pyqnRStIlEhCNJqM!_v?~m9lIv{EL zY(dW;Ix}qyfAxf@$rPl}i07OLQAR!s50G&#x`t4XI9R(Ps~^P4@H!sT{6bSDIFQ0A z5ei_*SdhkakM`Iib2vI@?|Lds;RwILgFq(G2vaesI0>Jsw;!Z(g^LzKBJ#*)<%n4h zJqi-_oHT|aA2J)sn>#c9k0I<$!jN{x4qN5`WSS~*NOZ=7WG0%GYMgh%*-+8u6>ZQS z0!yCe5VAD-`?uxC814;Id(FVJDsOn#k?Iq7No(Zh zR0NWN*J}j1kqA{Kr&i&4^L3NorQLni3a9)jsjxs)_100_INNqy(u8CNmo(N(x;eO7 zT~IiLFruj zRcU~yr|-;lsBsiDBwKhE+&Mh&lx`6ABcx+gl>!^=Y-$L$rfpufm@a8**TcEHw`k$N zGXe{Qt*xmHh3n#>X(4&DN=PA^lJjkM4k92oX}$U-_udjziBFt}T995UL9ve11vWzt zBD<7Z$&{+Nj#Gdtxol!UBy>ns0vN$qQk!@>ExX6TQlmI zQ432C?zn<*wD~Y0+EI~8|rKZe6a=EOo)55}rjarzo6tk5A6t_Z49NH;v27go~ThXf0qz%dQ z&`7;MND^#H*I%BhDsT1byF~4}6X7mG)xSy~!$S4y6MjKQ!&rP=y!-LtHu7_md&qNVKlXP1*_lkocJ~mjUnJF!Sr<4cesGpJNM&%J z`zqi_z@UsFSpX-(bqOtk%r-6ek+c&t@+bPLzL`4p&+ zFK*@uP%E^L7A-&AsvirJrF_Y)Bu=mrP`Pu?aVtXC;U%+ojqK2ui8_5{p+qEN-V#^|j0F^FPj&tr9&EppE7eflRX&4@vSkN$z~r z8T)cLBe!2&`;t<2pY%?^@fBUCZ&H}4Ols085ziR>WJ*9qdEKdga_T$f3luD0QBe`#|n~ zP^2m~X^jXkOgh4XQ*6y*!{5%2NJ+iDoZ}%amAoa+keO=ig$u*Y9rVkmHL|ViW+Yv1 za=`r#&vvM9aibX8&~3T(VHQdga$+2`#c;RmY3iG@HE!F)b%}o3)Hk9mT}QMY&fFh( zIIMORUBe!AKc%fw@eSj6+VM!cJ_wv5=do_tq-;q`F3!(`KS|0b*ud7C9!RPa?%h-JMLXdN>gSe zRs6d=`PI~t7e#`UPg&a|o^RUnP}~{cdC_VRod4R>RC3J#y4;|Nrk)nrFjLV-z64?7 z8*{3UqC9_dH08wiw0jm4eazbOvc|WB#i+0FKS-n`1g<9Q57BfBP`a+t)T6-)W?YG& zDsqRrT|d}}v9(6@X8iVE>{#EnercwBIF%sh66dJJ9bh643Y?K0Eh zmXf_9U`7(IbvCY%j=QkM5G_ado3=Z%VNYswW-ON zc9uW-=`Vaz|FCem$EnQ>C_EXGZDd7e7ueefN=5%g81WbVRMztYwN@p`u)b%U(?m6KI1fgk^s zGQP0%e9|2Faqe`3Q{eWbAh9)finJ#Jri1&?hzSEmKmJidGCE3h*UoeKw9^ym- z`##i8MI|q*l>A$*kFzuj)qMWH9{zXHZFwq<0cyj)o!oYfM7}!gn1}9v&tx0=A|7Tl z*k|^1*kR!Kz)xn^NX!YICHSwyddq0_iRO;w(32fIB9m`H-=uLm)3#>+JTahoRl3dl z<)hAxiOHag%=QkBrlZ!DemWj-%K)ACmyhjoj?JGf(>&(8eOh^6L$XT0=-50}r_=UR zyu6ufY2zxYhH;Z$W71JO|5En{`|YPY@{Eeewnf%e*L}yMhvSwMPt-abj;Pdi z{-bwqKD?R~Y$?4I{pH-7ZO!KW>R0fKsU2m5S2sS!cN2WE*J<*Ok(?Xj-02y-7FoM< zjOKq4)>((@9zCl^+*@BtCn>iUM-M(YaE_WL^{7;n-OC1GyfzkH%)MP!!%K|L=^?&x z@L(@RBf|Ax?3^2|pZ|^cv?;pvaF+5dzTb{qW?Y#-1*#vI$~}7CZe`SOvV;hryLKWd zhiv&1#OrgYltY;09T4XI{rHi6f@PZZCwVI)hMP<50nxI1g06kYfOv&bf(L(=r-lb& z>Ec(njP2*wlMD6)QxNh?mjZM%4g}>Uk6&@zY&;HrxXWhd`u^B_;h1KGx#`b!KBMZH zQ}V%w$afWEobCdVZ+sJ$Yd`Pn{Jl!_OB@XP&uH%VLi@(lqYVF~9zC87p@gV6{z=XIb^URm zuM5m$;1+Mjhs7KGtMTrWrunb%?^{;u7q9bgVG9F{K4qlnm+QXTPU`8Z3os&HqkgrU z)FZiagMUkCGdoefEoBUHWkWb%`vK8F)i*n_=*#I;8tBZpKVbT;xd>>CJ5Fpc!#_I_ z(62H051e9!-5AL%(vVXfFy-Y;^p8tiyu|Ob{ZyNH{ix-&#^saATU&+uMXma0Y`t(^ z5=>YcFM}s8{^Ilbedy@lxRaGJZ!RlfI5Dmyf790^Q9dbTdL%Pd<3tK5P@VtZI8d+O z_l+RF%8M%A9^W%xoQ)c90%OW~bV5<=c6{@GmBw`{=kx-?3*Lb3M2_FfTzp$ET4H#e z%2&09wG)7OYP7RD6VWDJTG*wllRMz0$jpT@EsMXERTS?ri3qrzvpjESvk`;W6jx7n{k4zZX*ce;&xU6{PkqSIUk5dYC?CY+s=pWKiy5M6W7 zY%>#SbUrdz+3vIK3{-D9e5)ZT=uc`B4z@VJntBQaKb+Gu_*9VqKI2{JNB^HCV-bj^ zSA)2+b@^LhZ6$b`Cv}s>l_Q*2R~q*W_z!*$2fh|Kz697C^YYg8EcS0pUaoWj4=sy0 z{jjf)zyIyUwq|2i<&oV|nS4;4?q-D4ko-{@Qx`pm*?)$6^IFF59OBM#EY>IWkfzM?7hc{f z0vb*8ho$;FXucNEFJOC8m^9W6niyYJmx7C*FB%LFQs-aOk~y~}UqJRdDP$InvYa%_ zN!V?b|Gb2%+#lTV?rTnQ)oRhS?~V+N_mGr0B~jv1=Sg) zd*tK~RPNv3koqN|dQ#yRIU^|X^Lr}i-e~-Fm zL);ph*+TUa+KxQ%sN*zhY+m`Az-i#z{ryN|iPa_)+r{r1rt5~*L)A-6*3k;E;49C^ z0tc#xw<<>~CE}p|?LPAvLA{krCgP=c(YF1DNSnb+^Jd-}4ZfLsGXEUncV6BV%Q~%I zvhlQ4&otULP-*0g7l?zVQhy^?FJa=DHZw8@)gJmR`6-YQGtEplPW9$q?R(akH`4CU zvKnL<4F_CiG8iiLy}@;R$ztj0lTCxDYrH`V&l5s#WEky_WQ=|(jFcQf#ocfyQ~x8l zfrGbw+UJRMMYGr3cq?}`h(96E+R8!4Wf2vutf);!og{8+G>5q>6OZSE5chv8I*|KM zP1*_z8(YbrSk9GiYcXu5W-4K>^f4rtErph}hX384pFo&i5u3bJy)bp&@(S@^k0Rd? z$HH~y(yRWLiKy1>Z5=;vAB7iqq2bmmvE!x#XzytC5pGuE(+~$k*XYknw#@f8uBB=W zo|+_Q3^wxFt42*M4)9BN7T|qvW@1$oQ^~>uc1wxIf=RwN2|qEBrPp~g^=4TNazOK} z)D~rWhLHS#;AZ~kqVf*|f_Wm%+c&vpe=FwT@9$?CVeDGLukk?8Fu=(DS2+8_9!Y;y zTd_!ktvkV2m%#bNA^E1A@U z=7QW(it%XlfOy{9cUd-=U+V{Vp_}bx*T8MY;JX8oC^?7i5ZIsBLH8u9`Gf9AR=*B% zlJvf{@jHN*A|`e za6JEAKsSCYXh0ejcs;{kpD@>>D4+p*I3S&8D72B*Bd=k(OWE3$vAn#^KS@q@_l<*X z3Kb}JgFW(4=*Aasw7ULc>CX1oBV_%aV9uXwR;(w3Ve!=? zymfH6XjGRnDUQ<31BdJK4$q9hVt3}CQWK?0{QccbON{x|rDWrbi2#1`jqJ+v#TWIK zk`**R&Nefbiu>Ec9x=CW>Rtgoo)>KEHix|mygOIM7j5Y3z;_FnY?5*E7bSiTn{{e_ za^!!8Fz+O#A~JpPr;j~~{AS2SYW}TC`N^YiNekci`N*b+i$Tn#)qcvb;dL-#%QBmF zlA0UZzRIw#2{XU%lBb5mR6eQf5e&~BZArhlAdr||u^m1N<_ z(S1xNmM5q3qp(PxuT^7(|3o_+Mt{ygZ!8ZOBzLYr`KF~1b%djh@Sa{`st zKdq$7&v)`ZA-sxu1*~5MGx1(pSHa5UW93M9zJO(yiWafY<<_ z{YV+`dd5ZGeTSM5=BuNC+QVm{4;q|5R5AmYwEyJ5Z`YX)F8Vly zYCe>yGTSNnT)yp!c`;DL-QA{bZGyoh=sBuC=0M}O-NrX4=-_8LF?nq6Ysp#FI{)_W z?n!Aw+2^7*y7lOar6Yu7uE2Tp(hIn_n7ZBP_2aUORSH*u;QA>`uNn`6L_80`70I2~ z)&DT^3AP?$Iwfy=_LzSBe=cT)eAc0Lp1(6Z!2Xe|f?_;)knevFbQe!TvVfxMz8=>4kZi-IR!;bE36=Fjb=*q+n)w+7uA z_CBoywlDD?M)rA!JXa+HKQ;1_zfNCAtm+O1@NRMY^*GnHt?(@ojNO`iHHzbXH3)^n z`=~8_bET00)X=S^X81mLqMq^o)`aA%r@hX@iYT(tE6IbNMxL!$TYI@ouH#)yk6S&&zi6%}le{VapiH!{LBS zLk?Tk9QU-=(M!HPvVS^1lst%>;bQvm{_Xa{mczS$N#g3kUp1Av(Vu(l<|i1(YdjP@ z)lYs6UHJH4D{Zw+R;5}*b0z9?&y9Io#sDqx0j12>YHQ})JMpfO4HaB}49+P^K2xx4 zNd;Xl&1W(MEE+2fH?otv9$%*Q=21BJtmiM=@!S!8fL4RzG~0Lkqd523On=mr$7PKwmr~pq!2RTwL$4_cNM&vf07FESsgIW@FkfKBe-#5xLd&dc3}I z;n3}x1J2dI(4QY@JT%i%)m@(ZdAuwB>1l{`X$7{h?e4R@e=q!DcVh=*bY!<||GNdf zr326qr*_-#iGFVL41YS| zdsK9~6)NUv9-HDh@@Ic=QK5fji+m~rw5Q2(w zTL<4aYf>3C*~6z@xU{3_I*r86e(&|I*%O3B$#(lvmK#9_^6K42PeE__KZ+GQNT2b_ z{-xUr-0{J+4kd%P#B<;iGqO3`3M#0P!)~4a)5ISB$^+@nEhJ74&(tA=z*2XGh{);URmI*fT@%lVzv}p& z#Rub%?fW4SuiRmmJR1C?1L(B$Exl`(`VtISY zcE|fot#$&648#Wu4wO+n>JJAsom5bAyAPg96z##P8`~ZZ)`cpgkdMWN58*Ljh4{jG zAc`AlYYKa-%a`V#=ll!bIX$r^o|}OGNXKqyxRpDO7x`_Zo_vgfdf49|Tv5+~|Fm{r z^1b!Wh)^N1DBRD65qNx)^zS(w8RM%g*m{KVs8(pITIPrB{&St#{3#}eGZga|}B>oY4Z-L|96fe>P+gcu9VS}BIB<}oV?lK>}Z2ER?;gLUk9s(Wd` zvDjNp)9XAg?XmQe00t!^NH zIJ_b6-xAB95tN)?a53PI7?WD!5yI+cwj}-#sC|H}A>sckNnmaF*S_VmHuSUpy4AkF z%H-KGyynLF8ZwqotY4fpIJA{}k#pad?@^5A4H|6-N~rh-MAi`6dnJd|ng}O!vhWds zgoue1e45oe1F2wqxopgmZb42w%(AEoDF|_6jjH0S--x9oh%o=0284t%jXfKy7BtxHki!}~ z^RLWQWyibL*1&iTd%_p)=8Jk(k7e-8;u)6vQZV{r10q&>VCRaMPiEGusud!oM8((D zK6$&c2ebANa-uZq8Mo%^?-XZ!>e@Pitrk89$BR|NCoY|B<%syPiONTP{i(r?xe?-n zU{Xmbr36S5I?G7{n?^qU%rV!ZrZ4kB9`u=3eZo)k;!zFXVfXYLOrQf|i`&EFIbgux zYwW<#-z~)iE29*qCnI*)QGJa3?#!WEnIq|)0_EZ`Yd2OBT?+hf2vR@>n4;CkJ7CTo z!v_*z)d5~2u9@(p=xcbSD8^V(6Ly^ka#c|d^^OR-)I!0s9iNZs5&1n5FmKQ3bCU}^ z>vB$5>ffgD?tNRP1K`gTA};0Vsfw9s;QLg{yCtC9U_5FH?EA_2{X;BZ4w?UF3!V#$ z309J=^#S@NNvs$ZPNrI|kpg4kPbxCtkJO>MSf#=Wci+EeR7~hE1!3Lus*lPNw(`PLG$EamxRD-Aw zo8PI?_+-t~X62hDSo(xVIA2k3G{TqpZdzZ+yqU$v05Q4claS3ys0p%*u*2dW?O}#sCNmgZZ7>)Uo9Z>sEX0z~3wIO>^!u z$6S`I;OH30?{?abEvH`Bi1~%R6~W-4#l!06p2Xgf9sw`tf=ZlY;YD$9=yjS*$;_+- zx7O?+vA*LYM;s9BE#Q}1JF)I1TCJVD?~ndRUX&x8vy@yt5}Rhl<<@NM0>XCLrhO~| z86yDYM(c^q9xI~-nbu5>P1dJVyu3Sm;-o6}%>0V@i7QlwufCS46#5Wa<;t|oH6;{yoyKh-g0_ET`fG4A9ZJe z`1^TKj3#pAC^mOD;z@{>m+RNrVFk28tpf7n)}(c&_#~eUm9I3`ND?i;`no$?6yr!6 zNDO9+oz|M+6}tcx7G;v#7T+DV)TkT|JMwJ;4aH2+P zdr)gE!m|vxU>1~hBEn_tp*O?Px@^O(Km5#(l5E3=c()EH8M_Ey6N?*D zCqXmgF;-}_mpW|n77$5#j>1lBI`Y1^#Ci1pus|cjdZ0)KBDKRV%FDHbU>zrtDIjIy zwUxcfMu-rvFa>jTZ1!WImWRAqIacBs=LH!PNxA99aX;#(F`XzbZy6t6jJZ`j;M1aT z`hyq8#QQKdzE5smo@iwbCzlHGh~&h+X^&v&VQ^~4ucr8`?ZCLyd&=D)J5E|bt{pvJ zs2;IPSC2(xBDALKxkxy&o0oi^4?SS6zr=q*oV8ncxfKv7WZl$x42YXBr;JEE`*~X| zYPuf-RdRCqBZdu?IU6LJn?4*90yl})0WlHxo-Eq%uo~#>yOCoJE_`F>=!obsuzC(m z-;Pk{>e85p-%0D6mRN#Mya&VztE;NPxphun0`N6a`Ho*RG7V)WlP?j3h#KTB$Ha$O zPOz23&W3n%Oqdi(p&3g;aqAx#*5%|n;u;w|Y@Vk!IM~wqi(-E8f=Pf8;z5r^rzj}z zb2fI8#sX0qhcN1q-pv#WEyO$PX>7|oqOyJ6VS4_ZNcTy z3!)>m?=lz=ZREdXiDw@S^B$iA78hl#l72QF-pERspl$+x=H@kOi>}OyF#eSU{$G+A z-Ndlo^kSkOL{TmTIPbEZ6$xC#L0B3$6I0|?;f1tRZ>V!yl+ItYEEcOgb5cB!H_20a1GYcYC?zt z7Jh5?uZdO)(j@H=-wrF`qC?^UFOO0ZDC;YxSNI_vFF!c$!#W0L33|!QJ|FU!o!1_? zp;%b3Z`$JuBKgU)#umExw3|vSvW5g==Njzw-@00%My*Hylh0+tk@UaQhL+UDl9HJV zoae~*3m037nm4q$6q`*8rMM6oxmY|)c~`^*aHrJmEKvAoYp&XyVU4&KaQr|%4B6AJ zxRrgtnrW@?#0!EloSC65L9*Hys{^$*)Hw_0d<(FhmmD1?YC?jYI_j)$Olo2iC^2o= zO5cyiT(Ydmz_U8K-Gb1o_k0m~CN0zXF%V;zNu+;pl9SZW z&l-&e3`ES<2|%pnqU-n|0RVumq9GnaGY6bnaditfk98fMy0idTCWN^vu2og5a0Y>v zd>*gVZn4H}>+JLa6T4>}JKaCa!o&^6D4#xr9dpqzVD>t_mPLvImRGX6ssINc((SRj zIaLw@+?11~RuAz~PL;`lT8dQ?K4PDlekT9<30%@zPHFz7mV>b zc!yyXo=3QHL)c}(njDb@d?ChK7=iopLtyU!YHgkA-StJ@Cnn-y=bY2co>sB8Nvs1l zPoW8>M(eK^TWurun1A&Q80Z?bu#>TLdI}ggy&&Jb3=Vf*b1a&<=3g?&srP)1bBWX$ zqJ`7*dt?HKR|wZo13)2KB|SdUiwCuahl^d1oB1yxzBT{aj&&oMByi_G-`t?IZyQdG zbD`?woHaIqQ%a$BEJ>k2B_JsDF)OY<3Z5jy=F#s287&pDr@>tGz+M3OTCMSgFqhYv ziO*i*cVT2#O90N>%t=uf#D4tkFH<`EO-DLa&iL}{^iI3F(B5Dn$|$^}n>XDd8^!|F zVZbd_ZCp9sKj@Mu0MoLGjyn|^prW<04Y8crs`V2vPO0bjn;1@OTfqzfkT6ubaM ziv-Q#ESPJeTcChkJ56xm!5!_A908zdwayiBiOudFTmP|wkOfYc3N6-P)a_rvNs7qClyVj<&`Ds;Yx9bJ4)G%4BfP38UPB@P^-mz36m zfyFwXf0_flp0U+5a9!B-YCdUP(kb&sB6~P;OXnTPBp-H3P-%_d7FtE`gL#)E;RJlC zPtJ?~Xi?E&33Zhdrs9!e8Hk_KKnh(EBwA_YX!HFm;GKM9c9Uay`U(YOzlpQHCWnM* zS#++9#ex@}2@@N!Fp7qsk(jOj3X-L$Sy&J^1nm<`HlCAiLJ?m>2}Ew3dX!BZeYNH&db#9#QJ9tvkBdg|JkL zw1S=h3?5p)}0re@Uuhp=8wp~uE$_$==j^iG?GtLU`Gd)@V zdHOS#ZfarBNSw~0 z-CdV64>QqAhOXDbv4I@c@(Zx%`cN|FKU--alBtytGY*3zNuNVYv0Z)qGXz9>Z|EZM z0Gh<(lvtL(dTYzB5a83+&p;50DFvaxi~klATmD}pxvIG{-yhgx&ydV-4(m?)*}XG( zS`;tQ4agUN>j&WAs*@9_GWdXGpc7T@2nri2ud1H%zi|kjf>7%L$M%3^9}B$kPb-&2 zdNTHMi8ZYHE{WeGcFl4lswxx+5`4+0Q(UX3>8mPx3ZCcLhptbFv5xI)-t1E7hCz&w zXvbMR1DXCh^TK8j3K$`*{*JUy^iO%+LpvpUCq5*uVi|FcQq9gsY7B$2C!Y-xL8%OXvdc@Yns)F zV1Cpi;*;`ZyklPR+8zjEP?#yeltaAk~M$4>8hcQwbO0yHh4|x0Nt~k_zTxW$6PS+NuzUrxwWpveWm%X4V^GH zjpxIxXK8{*3at5ikyD_IRE{$u!ZWR*$wKVmocGVB{xp69Z+#QmuX#bA8)YTpj*CD+ zT0+T)Uw~!&K}u{pOxU)hAEd6XSc^%llL?39Q|J#%6MOdqXa~ld4HS4lKh80ZaQfRq zwjV*VaDDc!5Rjmk)de6o)6BI;S|X*C^oAF}KfV8D zs#&lW@!V8?#@TsIw#Q0at~vs+*#h$r%IOgQR5m!R>}vZx8!_~bZGF}S^40jmbp2nB ziDQ=eVK=Yc?7P+ctOB#dkh5S`=&98;zFBaaK`AETX|->1$Ee^I$YPyDS7jPvgnbq} zEglNxO)8+FnUnaB+Nm86`?3}CGY}1Vc%?PKawcgdqi_2Ct@MjW@R)}&b1ylo&z2`O)%|Yb#b}y6fq*D{OoX< zq*gjOZOC{c31(77@!<4&@62nU0TzG2fCqaj2gs?QmhrMU>ThW2gjB2C$osB9=c_2O zX**i^i((OJR_?uLQml8g4D13{axfrC5WH@QoBDRg%h@eqKN+M-(H21SEu#_)dSG|H z^Yt>2W)eSr6AZ`gtoFJT-XNN|*2O``yG zKQ?;@1bLB976BYeNAuhS*q?QTM2YX4o_xq#1h*ZRFjI7fq`vp>@LrN>n7O1M93mfl z%Ww){dvOduot8i}AGDedOsY5rFxv~)c7ti_8Bd->gCP=`5c>rER+Gf8nbT2`Wbfi) z7tF6e-zM8Y<2xhU@UQ?r7@X7bE4nHSWD@4Zztn*Ljs638DiFyt00jRgUUY`XRKT`? zwLL(-jln|p4>18oTGMzIk6vdN+wNjqG!P_ie3Ju`SBu&7!dP4xf~Nppo|@$`gaFg3 z?S5b{pfCE5`Tt0|?m)KQ?;Q~&T4bQLBlf6G(UyqVYR{@&qqeqa?GcrzTD5Dp)LtE0 zTbf$c(pJ&hw54`!V*Kvs`}@O1?#+GQ^PY2_=j7hp=ZG-MyWIFf80biP<-KvOP%0_M zYW$dmD+%!}@y2|gur~cwuRvvWfpWG9;-aj82;-X%SsProH%watx;{eFeIP~G1fU5B zB>JL;=wzCv$%cj~z!R@rQZDEx6{p{P%<|x(22VG8>l1*d96$UsPb&VI(9k3dxnW9p z$*MgX=+>6|jdiM9*BFA5Oz*~0fSk?~9jxtbi&v8%3h9;G<@`3O+~VYWBANeSop z6DkcJH|r+tc&o>AqqGgh2iW4P};yS5;4%Z7}Q0a(VuY*ZpS2le7{`HYeaI zF2a>{4wdWnz-f-+YLePG`PSu|CX8;O6q3FYm`s&0_zds-#*k=|*F45X5MwB&RH6zI zC}(|hKZTkGH&1l!@n}st|I|?@+~i{)#h3g}SgB0Zqs{kBJIgGivSteQBXBo-^|veJ zP_fm?9#(mws%6>!T}Ejk`L})&n$ZtBA%k<0fbdBRto(eYOd_R`K1$KOG=^rBGJ1#T zA51k=v9I#-Q*YRoMV5^ZRKd#AfkDm8F432DRbuHi6e>(;^V5=bPYB|#r!BD_hjB7gj6_Or4U7}`C_$%OC4Mpxx_I)72{XH zIWi^V%q6d(vL&Li2`LCvqVP?|Pkn8BvhywGN%=|w@t%+Tf3YXtp)eb1rxGjQrb8P` z++Qm1O0Z=IGoCWwIKdu-?^67m>QKG&Nmx-OXAYyjE;oGOEsVgp8C1nMDgP~>wCq7A zp|ls)l(edRhxIs!kYjSM#E45knAP2R_wdd+ttq;CH2+&ZV`aD#g@CJ6>4oBMv@`(v zwr+oiCYx)J(y>E-7-CE^N?#s8Rp>8@=kawGTOCgvA~z&b+Q3coD5M*!54%28T@3@9@n zoF5sJpPJ|+-E9VM`mAtQ+FkWam`j^vL52PYC+%Vs*U$@p_vP_dd-vcSf@w<-_+vA?WMnqNP1^&CA3eusj8}9+bQBQXuRMGE5Q6GeBqX{U z?szlKVGNU2^2rzi)SPqzH$2B*j@*S`-N~5s7I)^-JF(8vU-d|N|L>w~rl@5@4PjQn zJn%a__DeXFYKfaIWf%V^5AKbd9}$79^mFuHla+g2{gOjvj1G}o*EVHDc29(_oY;%% z4-hNymtf!SR8veBELgOEx;^EdJD&=a814rf^%W{Xvrr2?}f9$&< z0Nj|VMf#$S*$Bl(aRJ7+%krJ_Js8>ZiA}KxdB~k0x(zV|Q@=u>HzM$+Ju&rGspB)~ zqB=gw`+T<%T(Ob z|A-bwzUlAZIfpMj7j(*@(Xb%KU61-YwyxRyz(6qZ)A3+*jBW;odl2E$9wpl7tq%1o zRgRyxPO6aS96?eOsW&+lxo1I{xGKFX)sqOt38{;E`C|g#cEy>2jS!oP!{F4A>?E( znU9}GxyZX;K~3H9#$Sv7F2Zl4zaD!zI~Ao1!7& zH*dqLjd7gJr;s?EK4-fWDasZ2*Ty?P%w}AWC6oFCeUw1G{GkEp{9H&k(_S1F({d+S z6M9oeAM~^6xXlie(awnwMkJ&LYT)f1zMYRL*6sdiNE!I}cu@fH_Sop+9zJO$hpfvF zzMMz7;3gMSW2g}=_9&#aJT?0RB%eu03P*wFGbNx?2svp>xYrTdKN-J`OsrTz`-^md z9Rnm)ep(KhSRC9X%8H+-03nZjL;03)QVVw%l#_lV;Hp2YgQ?kW7FTwMX@h)ta%{ zbS=D9W}Ae~cod+kjko_;dHxHa>*Z2mi1u;_=tsreoaBz#DhVu86&9|`(tn*PMo53Z z{lw}Wf2%gskDqLn);hZ_46g38zxa>P^<|h)VT+sfgxB@lf>i7NPAY=GM1-*!X~Vk3 zn|?bCy8pJKOX25VWNhgVKL;sYBilmwD>ejd*f0ZSBRJPm7sscZQo{*f>3#@Pj!u_g ztxY@5MVFjy{324xJ}`|ui=K;9M=}Ww$_E<7ETflm{bST#T{}JA6G8a@)kGlqa-!8J zVHU#hNhFJlupu8of;U&WSac5UUh1g7ix%!_`F>S%@_U&)Un8=93G)^@=KlA94G$&%EChhDxZ+hmAeMSD;TA?uZcXd4{k zmlXn*H!+|{MWC--f3QY~#r*Ay6jEpbIrj=`bhkCYfL~yA_xh%btc(3jJi$que#>v+ zgk1m?$n!7qQQBR$9|PxI%^6-!G5|7%o35pVZL z^wL}-aXlhR6%5PE2DFF!2oiIk8A-l?*nv>TUy516vz~6EVGS32cf)2`MxR@nLa-%X znx>PD`PDC`E5@%|$l4~6)P;kp0Cz5a={c_>o6n@Z|U(Brt#nhO?RMHR_$+1W{ z@jX8`Mh+Y(8h9T6j4;ik^7x;iaH*5Q6HLGqp+O2=+WmuT=n{r`1oh}jA(2^yq;mm5 z`+aXgO^{5{s9u~AIi*=M1@7j;6!356TcymTnMbPg!y>=^AX4fMvxc#=6Y;VXx^IjsgWKsGS4VjcW)M2LHYR0c4&^x#RnF@x4-NyH>P|mnug;%sof9 z;d2xWov&eUzvZIf&mP}#BwT{BBYvxfhAVx*f2h4wx#9V?)SA!QfU`Wnk_*+B${kxK za0_clh?nOFirrR!O2y-K^WfD2#t|rEwMri$ZWUw#Korv?+2-7^9Se^ zG;E?vU0jh-P=pD6$!p@Z&dCdn$b^W16s@M^b;NBYLr1uMC?BfS!ZQtXK782 z=BKruLvKys0@M~MY0YAHT-D6=i!CNU@?a?Xk~<90bfs_YMQ*_a)EgLkVnxkqhkfC93i$30sG=ExU`s-GitYYAsz67{R11 zx@(o7M{4*XQu;IlTJ3{*s7IO|6C~HXA6+B8Yg&H^wG%DIF6MnKKtyU*Jcqn5( zZZ^eiKR%B&74~`Y_FM~=5?Fw9yC{5AC0%Rx&W_y+#as*PHVTA(X2p#fnL+~(G#I`9 z4vthLNRAr`pRx@MP6bM$j2$tI1i{n$n1Jp4fE^8pR3Yjr(CFkKu^~nX+=RYgLBe+2 z;&$zU+;JwXNgx)>elbU&nkAw8KV=&Q#`HI~rETHvR}eu{k5c*bV59(6ElLRthTsWH zAMro`@sIiC6Z|hC!qm8T#?)U{mFU((s>5 z?@q+Xt8peL4@oYn7~r6{G&mby_?Lj&xEcXKoLvAX$bxuFkQ=jlJEfMK?*Y!9IQQ8R zV>CIHdB{v83$vbiP*mGtAI&g~>t8;F6Mr-d-vm?vNn~NjE0l97`q!AumwI#Ct8m%W z*CI7%(A)}~(Ax!A%t`~}5kT3fo!^Zy_RV2&N0p zy-Gyrh!vuS9T8FR*Mrz7XCp`XO1STXh)LDb_%0R~Y!?D^gW_vp4ptaLR9*l^AFt)E zw|wPi3xQv==1Pni{xTcFiW#7KlNwq?U(|(r3B(|Yz&}?EQSR=AGwBVzufaK8s#u#{ zREz;FD$7}q+<0ygj^`eOS6u^CNYNR+PA)YCc0Mz(?%U}BjS2#yjSmX?Sb& z1r+!~@oSFXgMJbz;+kDoq2CgTv28gc{uUXb!=2%JxNC%B3?|?(r2!@YwpOKlpvk!? zj3JX_pn`4ZN{t}vPYegUg4Xn*Nk&9Z~N#rPs!{6x)!J;&kG5o8kqmt z+yZwG1=?_-+<72ld?==ON1=9?v}BlIm*6O#{a0l-LhR{Z0Q!{B>j4w;fq4%pq;xzM z;l-`m3&Efk4uplR=Dn6{Ylc!rL}M@`HrH~MrOHk(p@@=1>wd%Y+|aUVue#{P5${~g zDvm=1R}8h>?2?cD=Hkp2W}<(ImEXZxjz)`U-Dp@m@6tB!QF@8y6Wj#ST?mhPm32RY zOtGP>k%!>27krF`1Fn1KSDjp+OdNI@V@2tDr#zCEX{_7PLqMOf(@P_mgyMJ9I@vVd zW+al5V}FXd)EMZ>Q*K_k=>eTQV)L*^IVT1{OO6b&2;|E>D+vD%0npY-Ke}U1$m1fJ z5RknWJ1wQ6&wam>K6Qk(K1=h)Bf$q#G z(Qi_cO2lY1C5%VdL|r18z5be>C0FjE0VF%axQh z$;bS53FrI-k=h_l85$~xxe`dUm8+G~8@g`B?ccEo{RqLVdONK744{jClZ>MzPqae> zbRbfDj|9SUfU*4igaL8v%4V+>;j;5F_rcDZhWJkA4{TUKg;iKmij-saT~rwE_D1OZ z=p`tXSg?^K$zT$`8DO#{3DG#Xk1;WlS0lTXdLeNX@roQw>LG6tMutWMepLjIzF{lF zj7LK>QgN8iY({8QGg{O=4Jz0G{ZjyJdqs2%(J|MU({6$HcPJhAgyG=@-qn#}mQpzv zzor45q>}O*E@S3zj#-L8p|PoQT@V)|h&mK#aDm$u5Jp2QO~D%DbTPv7(b-~J_a^V= za;ynM-#F+awmEge^&iA!WYd9kRnXaY0s$ zAWf(RNpoRN{o?0D*Z*_^;T1eZwQ{lng}l|QfGX?tO(s;Jen~sN*lJm9+!O;3z|>HQ zSnaA=R}46!a5<%nAyy6L>>VxdY>>sPz(1BsDk(4rJ{V5N2k{{m6^**h&opy*^X-;D z@-s{%ZO1a}XH1!fOVZYyQ<>)#bg9(v2_bo|;69!Q+I5)s1Dy+?i)sJqZgOZrO25oY z-V%m~qHE?w|FWeq#Fhzz-z}4`ih#2;Y~BHljYgh^R+s-kVwfjyq#q?G-$F(RPJ1<+ zYc;|M2cyO2fv=T)TU_~5pxlxOgFJ<iPLXMum}~8yv+LQdi^}ak(;KXrs#-nvYmgN7gJ0Z zE5tu~T(c9nGtVHv8dd)@dN$nHo8`t*uyiQlDhq`<#Xuv@PlMM~(2T+Edl@z1z1 z0b1Vqf4cBb7|Udx%j+n+);ZDazdBrR*1q^N+u@RAevNq1wfn-UW)A!LxoKD7!KP;A zSZeWe8-e+JUiyG<+Kd%rtSu=Z-I&=(LGbH(f|eR0V(K`ZzelyFA3o0RQ`sEL3jOnV z%MRg-errm?HpIxBCt1#ajcFh)B0?CrBUliTU zx=PN0XOSzQ07L8L*9z ztq*22u*Q7;_)0*&&X6$!ylc2RwuCD(m#RUKTN0vUp*81Cgc|va`Ij%#Vqt{1yBNF> zdj7NZAbgyal3AN;qhH*-mW}*HJWFZ1`y;Jj?8_=j(WyV={v_7e%M2UTdG=I6UFA;i zRzLB$kCXM3Hel_%ot!_WQt4<}g22gg&hFP62u%Y7$Xm6-HzE~wJ%paD7r`Z+7oNP_sqe~FC+ z8dNMIcN?8`^D`r1-PtJT4t#<0&v7Uq82`kBK2UVQ^oXk^;qpJyvrJ2#C72LX>2I%D zY~O(hSPK5~hNFaco!!W1{3lu{lZe5uX{@L~4pdQNwMDg~DOL`0DNTq5@vvBEE6l$% z#Qf7B|yuoi4J_E{V_&NEo+a0ht^vk@^FGth1WSJD zudO{q6}~-8qHsKXR?OlrKO8Yogg5tYjj~SJTlmf}4mrvUn1T{GHhEcM0%i5-h6Ss? z8vm@j);PrXxR=y#3`v$Sy{I>9$ToQ@;3tv#Ha?G_fSa>Ev57f;+ER-(4i8ItvtW2v z74|xhibNt?ZeDhl<@4?J-ESuf_S6oP?V41-^S?pIFVP^F-=H%QX!Cm@^t{CEqZ8f1 zO6^GGBPssvpW9!8Cs6`d^_C3#Sh6uC)VgrA0j35!KVXP_;a6W(^S~xX=nF&(bMI)C zYTT?d^l$meRmeU5hd=|{`#{zKWFHt<(LcT>n5FUeZ8Bsm-e;wYZsyjk7@Lt_9G2v+H@Re z6QsUeI;m3f)33Sut_Evh^INAraQyM{eu!PnkCYqyvR|VQS-fmwvid@v3_nO!FA^xh zG!p7Jfs^mdKT-Z3kUn<)J>wwhjWcrX1~P==lcK#qxhV;@e~A^x+R!*oW1Ze1#~?_X z`tKn@@bPd_;+(v1WHjwb4sHcq>^ zAyism_U@jbg;;(-3E#T zupfN)M0^D^AUkw!f<3k-ZjSv>L8(^Z5}Mr(auy*G>?LvEt4;s6$}LD1!S&2jx^RdR za=IjC#7&17wtsheE_{c*o^*5P+3WlNBFGRjR4}|>$MxS0>N#f!Qhe@&RsCvlq(d$(lHChfwAp(Rdmq*pCyu?$MH%AL(|b;Hbqv4wB8be40<#4(onW z@Ai_|y0^vzGuQACzW8`atk8QV!3Wz@uftL;Ww?J1irwcs3OR=j;XQnO4y#lQ@icP& zE8<&eLK`im@Xvr@_O0BURP^@1FXS*$)m~?QlOtO7yg`)4GCB=VP({spZ|f!f`S-Q{ zhWT2Q;G29LLx~h(W>e2aA!V_7#25UB0M_8D;-o*v*CRti`l)!k3M4D z_P=ctO;NZ2UcPAj+)2YT%K~$F9`}i#bf1Tir-{_FgA362ZKO{3|Cw zf;X<|R&Z1_%{zmTWgC!J^BqRH1glBw$4`du&k?2}jel`d14n<4n%aw>I~=Lc5u=sw zCa5eyth53!9pEn`Hy6+7e_FE999*X>eu1M0wScCgI6;_Fy;U5jD|s8_F<> z84n84y)AohLKhQGTk`&lFta6mqIjTcKj$WB~{4%>Vo>y(_PDn=9FK&qrai?*YRB#B3}|G}IMYf?8zTaKXZ%%ud8 zhMPKbuRFre@E7S_6dqBu&q{!N{x_(kX)&|oD- z1@tag2KbI1ia`zi#==|xW*I4j3xb=Sz77c+xM`tQUUG~gDZ*RaFoAf&8w(x|>Tgi0 z!3ikm{f&%M@*N@V9Tap-9r2fj=p>eQn*lzcUZPAx*fLf|ffV!vf$1IA!&2Cz^XN~S znTlUDnSyW}BavpJXZT5&Q#*3M6)|2XpC-+K{$3Q|hpk|caek=Lw_$uR?kQey=Y=@> zMpYm~v}(i_a7pP1mB`(NoOrhL{id7VHWCeGLi zAQyu|1z4PxA{_r{VQSjyW%%KtGv1uwFn$L)?oi4nj{Z zvN@EMnZ#%BCt!8giaIz_2!4nytNS`Dl_MQz7Bm(8T^pjH%9jq{mWrPeZXoYty3YF` z1>HA0!(qbo`~f#fR~|!`9PV_EEb(Rj9O^8yTN7D@L_3`5mFz`0iqO11{N3DByVvf2 z-RYxpE@ZC(byzDqa{70u8I})p0>Za_lP^&QdA1q2{l@kCs0kQ2ea`4a*wj&M+`vtn znV(qo#Z1B1os2&@@R!K*6p5i_r685ZOkyV#o_xXQJ17T9)$32CVyi(X`saHwaQ&HV zcH}Tk{a6EtJhrbPA7hb~fE7Inaq4kcKl z2)Z4MY;YhYGJs2VBKqZHPJW)`3eoHaFLowOeBY0|2Z{Mu z(b$-&F-F^X6@`evo$WC<=z;C+-_N(7N*D2$JmYpepu?#~NnMJ+7wHmAP3|zW$1L%2 zM@!}J4KZQQY>&=)nQt01IbG*~f##M(^5sDT8~68Fy3!K;K!nf6;rJ!y@4x4#hiQf_ zUL23!S2;RN=m?4=>w=(Kvs~TKnmNbNPc%*jzbinix#5a23qMhe99_8_3Ut`WQwwlj z`FZQ;!rOQG;S%;g!%Md0(;(3%hp?A)Xse$^XUK8+Z+~IGaH=4WWl>&yk=Z2{!5dy` zGs(hc_Wa8ixUikbF&^Z_>>jIVE$f>W(UxQXETcEKP*RG~*S@uDqZJ~_Iy3?9`theU z%{|gJJHrPCx0teiBsE-(a9i15jecUN> zk0Uzkwkm(It$k*@;A6+1oOiY&p0dW|KVfl_sEd;#8Y}mL$Zx1EATVMmbJ~ng=duvy zGC4@6*VAZ@c9;h)gbkrNDx+=i%+RJAj>cC4! z`(OPsJNzU2CX!E0{)Tm42In(di+F8_rAApzWU*fxpYfs$`Qg5Q2k^On=QXlLzgMs4zqe zxGjJPEynldmzMJ7EVm&y4mdMw`Gbmdg~2)IUnD@a_uS^5ubVq`J?|v$$BMx(f=bp=DsmuiaU4xC4Of}RxOod(7jTUS$TeX#8o(prftpkM_^V9lkqEL8Ezw`K zq@9M)B3*m0f=U4%JA5-p2myx$@npP_IC(D5mQ@lFtS|H&RPl7W?)^W{X5YwWq={Uw z8ZC|e(Cx99=sWv+C9ouwNjB^gW&N(DkJTWZ@`22*2SJ^RKw`J-i|9bei`zHiqH)K^ znw{w?00Mn)HwIu-;aYV&tm1v$&W(LT7%E0Uel`WWoIxL*t`gsVuR1Jh+7OM|BkymT z?Prd0F008>v%5Iwu&{Btmwd3*+^&?aw0E9~UAc`|(7mxb^$SA7a^HIxeqMR%*IxrN z+jsB=YC+5_n<2OI~z2Z z8%Yl=56YGS7_2upy8IUax}q_JdKzF|aoaS?=3exd@=74cDr7YB6#&^m8$-b`ioVF8 z6fjP-4sg_MAg57#G+l)Q(*K3?uz}{(P=_2t^hi6OxK^>-LkPF$l25Lj9{AetW^hhD zWfu?WDbr)a?u%v@@@Ka)6i-ILhR^%fLjdg9PjCcEpDAjU4)}Fu$M=Z&r}Q!&RmLy^ zQukKWfBS>vA>>wLWg8H%CG>)lEp%yT4dZE-hVpTrEJjOyV}e2NAeW*6k3R4R8I-?z z+?98y;XhEKU_rpDe~tlh|9{Nh$~sRkRvssx&huuFmo97o#cH_d}H?W_8?4pt~<$#x$`@3 z(rQdSDpF1kMymMLE&6ZeV^-l{)lWpd6K~RyH8OcW?#K54`yc+z@w$c+59CTzKY#7$ zcpsakY<*wmQjpO4lfQY2wqb>VX@0l~wTt#;PXiA5lB)KQeqZ8DH;Wn$S+xI7SH79) zxp$Io#4Y^XmvqdOE99aACd$;3uWW4POAWv0It?Ztn})Y`yyf95+h2Jk7iHjz)}`{IBQiE-HX08^ z)uV=*BQmm^oo1MRW$HAw@@zfzs}k?qn5lME8}MeZ{-u~Ef6^9G*tNmax5Bv=`!;X; z+`O48-M=#7I`-PwgJ4UCBwTdtL10O`Qlgt0X8sI^Lw-d^d4D;BO3rL_oQT#_ zKdw$B90#w>xKqP3X6jGuf`)Vs7pOPKQnnWNamO=TC%is64vmqQwQq!gw@#?0<2r}x zUc%}F)n|$)k$zLEmZv9|=7ezJ#^J4S>qT#ko0^CO1Ap zMf)N<l{=JT`~xYaMH$(w#Q)uFo0>U;kKyTtyB zc{XRYk52`LPv5Hk78pKzySOhP!_|Tnl^hN$2oH|Gr4-Sj64E z)`al4ALDy@E|{=Jb~LG}xyOf}MY^1rMt-IQq_Wtpx!&xnpYdo9&p3Pb>*U$-X*>JE zvvBdA_~YD7>dd^?1F>UHOYFp_xLl4F@70MfWS!!bLL4=SW;ooezMMvKY%A#ev5wPY z(J87Z=-v-X^E)~|8byu!wdb&wjWgo&YTy^^p4ZRfOU4%KFPBC_EQB_EQPB;vi_Lx+ zDbdOAJJ{ZbL&&ir3Id?-WW&sa>C?CMzXggL4(((Ib+FrdwZSpr;U_cYpvd&Go45^E zT!%fix#~&E*1v0EYv&$J@fMukdl;xVIAb{z(1u%9b0*<4!+^S#|s2u_xHOoFDM43TTJ|VXY%HU#5U?xlR2qtTZScHW34$u23FFiAi;^ z-CNVhDbUg#*`nVx#r|h@*WT;Qw(a3Nc%Deluc(LP_@e6&dn(?b7PaZtE1+9L?YC)V zw6iQu$yM44)vsuLS~#1xZYYL+ZQTSZ)OLmWf{d<*zX@e|BHi=pUwrfPw!yIyX1*BN zTM8#1rjn26eAz&m*TPb0qQ!aJs~NBoC$;l`1d3Iai=4s5viRxCkmAf!rM6v^j2~-N z+h|}XAz~@nlw)AcaPNtL?4QRI796na#n)}Z!2g$fyU|LHq&9rxO(y)5ec@bThU)oMx?xA2wDNX_kyr;6GT zE0yfb7t{A1nEn>IT^_$153QK{kmmz_k$g}9rYQ~&pZms@7j=8)2(1RTR~(J^FtIva z`7Xg1qxB?!@!Si+&tpBLlxV56BPE|jfnsON(FCF5%sL;YN>9G0G{m#>EN?bRRRL=& zC$s(_b9sfQn>%@Yc+XQ4li<72CJ&BpzvLIxez-Bg=EMi1J96~s4;NG*-)b&VgITH^ zh0~EVze}H*(*;%?eLadfBid~by?ET9*Y`7OE%j7)$F#K|(pq!3`E<9XBZabbw@FP2 zR?z*%KSU;6@J)l05?KI_m>!duPzU$E_EoYqLc5%O)7Akgw0iy1heR{7Zd2Q4nsuU{ zdYvJL*ck@0;rYYCmy>#v10gvOx;4y@7sxBNBu8WPCzU57?dvD6h zo(3~aRef_R&;XguTzpnLcQwL^#mO96U=2Gl+Ky^>TNWtkI$eo(;UjIUq5@C2pj>c7 z;M}K&OyeGWDr;a`vHt&buFEqc`sS0PZQE*0OrB>Z?Z5hPBj zvukYMro;W{e)fv@h49%y(nzbL7Ej9B3ioLW!L0kl?&XY5=}NGO9h(MDAf?0T*0F8{ z_t9n+j8NK9e?cfxkabtlPDsaPNXr1N@Nsp=Rt&iMbGov7w}@!^{%&|{^Q=Hg#l{Mg zBp=Mu(qGMXZ)wge;%M|2HSMDPXSK?MrQcrL^8zP2>eg^2Eo0m#ritb(VC0sk*_B(t z#-Ad#gx9X$+pQDaszl#9Ir-nQTzk zFEJAlbVo}t!uo}Mw+n(JANO`KUsEXMjhu&yoweQnfQVyd_Rgk zOjWwx>-ps?u?T%AImL`aq@K=s1OW z4DY$W6!`e^@7?duJ_bz-7ahWCwKDE5l_Eu zr-q?6#TIqtaU&lrXeXS< zZ7a>hNXGg5a9(Bp?CMJ^v;wI4!F47VN?b=d4Pjk$yX>~01<#1@Uu9sbjvhXdf(k!E zU%FWcW-u7xL(t6E5{6#HK2SPVf7;LQ5FRQjx9m%55EPYJilk`} zqv+tUc$<6Y>S|wL8WT77xGCi>R3u;%HT24c&U|X^ZY~D?B2lVMN@HR1x$=O=I#$7! z`z#`ws91zFMG$TA%}0!Q&xbbmt5F)B7^{5`SF{2jbp><)xQ3y%*%ZzEL0N5|5r_I> z`sSeJ&JADL1(CO~!ixi5= z=Vy!(qTVt^4%BFqi2nJZb?j33=FU$ByiMG~=B^uHi{PDG=vRL_P=$oi<4v{_bTHGk z&38iZ0ceq0=ecpI(bp&lZVZJEK?6l&&xBTtNV*Xo%Zeiyd~$A>HMM zxA6MzEz+aOoP_t@Gi=aZdXdj)4bO_bv5(Q}$bUtP>p>Wz`6biS9kz&aXQtp8K76TI z^`FMJ#Bs$T5paRN^3cwkIVP^+uIY#J$;!E-Yr7*0@l z|Hn9c_W8E z_6OaQ4?U~HCTSo#+`)tzjrr%C6e;T5kUF+vLvYSER{8srU)!yoIt3XC+dz^Xx(MdpFoT(!@1tG=FFn1d{CQ4AeW| z=!>TynUlN2KOXR^S1k>xfqr|e^|d|XA_uTfujlYBd#mX6t*j_fH83690aS70x{b+2NsXPrDKEEc zx0pUpeWuBc`uTl*94*@%L-@?p^4Lsou;thIA30q~)!Um?M*M2}!ir)jAIz54F-prN zskHI^S3T|pYDG;#aKDfD`YEDW5o$fM9t`)r^=!2RjPO<~P-@1z*wEUsX}g%74k$II z+w{&B?o71TcK^AutJ}wUZ-YNBRZ-d3n3m+s)F$-+^`7&9Mnh1+?f%PMl3*yjgE^Wa znKBq=fYxU23gbZcgsev>!=0J-rtCc6TSvzV*O3cX_P;0*4?bHv2C?8q(fP~dJa29- z#|XjWZ}odm#F{+Fg4#Y#-s-xdO3Ej9qit@f_*!0s6>tqk(rJjATZG*KtXa^)1oy9d zd+T{-9~3@}qI~33;DZ4Z8~2?;0@lua!@5}2=GA%%mW-q4+W$*EYB&a3AnG?g9}O^% z@I4sRHm=?}I#TeVV#A^r+F^T%(Ob%U_=JQ3qV{C-&3}3N!#G8-(bJ^1_Nzc6ePgIU zjL_EcM?e~W^f@Av7jWHB| zDh7`0TWU2VR@1L2DM$D#!*+8HZg?P@=%1XG0#8Scw_RYyHFht{lhMh6N@>%ilOVs; znO148m zVE5SnhX(v%?D&!iu*0z}n+E5h)jD+Nbf)21hZ1 z0L0jrWhQE=7@TRvm_+DdfbyfU+fQWb3E-k%ohjBnv(;L<`OnlEH>-QZ?%+0JJ@fpR z@7DhZ{svZumQD0J4%Ep}r)%MbG=PU(n@;Ef$nhZ!&;T)JrS4AxUhK$(PC>3vukJnt z0u=>RCfE1g7u^7ic}-<~M@^D}9+FNAamcUdpNt8i*$ci<4H3{?u7e2(uyEr>MIUHN zZp3}_u)!|ftIVAKUfE*3(cW=|S;uGgMPfR@{HRQBfYn~8cY{mDonFeD0b#29ivwFz z<+8gggl6SBIAsA==$PrFAS>5k2N+CniTf0GPPFi)^#AZBXp zKj*Xq+&RNW96leh&*2OoU{&O+jxqUdyA61=f&P-|6GoROC!61k(80fVA}C;7h`I3m zUHG%|z9RSkIp+`lAswD8O5o&Iv*J?gkWXAHLqk{u9pI07<7~jax)!6+L}Q_w9~lFC z>8(V7B%0lb7YH0rQ)38ZrkWmbHPK%){Q^`q;i|_SM}MuUB&Kj?4uA$WX8C1> z%?~!XDH!Tp`+0cva>z+&vyM3K_>FDCZ%E0i6J~?yrO7 zBS)C)da6lh_ia}XRjfgYfo8fkqXlSXOL zz+`G;1OW>@Hd2QbU(hjy*u{Obc2746mibpVOs&eZD7qjNIF>!$d=7W=Kjf7=8me^% z1=`V8hiLeyqTb}ffIL-t>VZb&IdAWSQw-8mY?WFD0=_<6XwCA|*8% zFHOZ^mN}o5igaD_F^fU{A35*Y0lZby{lnKy9ViOgx3rkN|F@Qap&RL`iksOY|8eV^ z0jV@a<#0+<@xJBvhfhCMr7h*%H#_2TjU)j~RFb?qMIAwBh;4nF*7aGqHBzSnE#Q)z zo}mM%t}zyE^y$K`8n>#g2=E)2UikoL*cMQz#T04dfT91$YXNwPpS3)+RK2`uIW71` z~N zANKFFrJ0m_?&Wb()LwbU12I;3H+}eBx9Jbkd(Od3MR=u0BMt_0e}t@UkGpDwGt+&%vvk00726RJ|%IsjlU z-r=r~j3dunG+)^p$n!S(@>gPBkD$1u_QDu9<#AeQ3Z#0lW2eD?3nOEM3Gu_uU)+1P zRsB%0;%cw*<<0gZ0M6LM3&MeWPUh8O*srj!NDd;Z7c)BXarWaO!@>!#T zytDI$ouaI@SExo5$iBu9m>f3$wR4$`tL9C59R8ai&lywflIwifQ9ls$M^8+VA9FN3 zu7ThyZx?&Lyx$<@F@1TAJDH1Va$nq2?#OTZbpYdO(&0xB^y#qa|7 z(LfzkQnd~8oAno46UvH@h+y!!@#+nUTNpc%coK?;DSm=|Z?>Vxg#4rcbOV^ZD6eT!s( z3OjG@Na(-mmNJyw1quQxBSCoT$V(GR&G~5iV9Ry9d*H69`Mm=}gsN??Sd;o1ZOL8Q znfC^z5?pSJ&(m`<&+X^YP~?^+B`B)y*ym#lYyi+l>a7k8PpC#9RkhUGbm(!prIboF zAg64N>>eA;cdV6fT|UaWdeer*HV!DNq|plRruUCiq29yDLN(|oF?|~&cxzRl?_~y( z=Ihr$Y6d2IRgpu~06LJOC3qz&@r?oW&E#FI5zkh-QfPV>tZ`ob3pD_pp*Vg#K_?5O z#vf*aQJP05N(1jB!xt=!Cb?QbZQIYe+$*}i_b4=kJK4~b%n8&C%EuwhK+(4CKu>%y zdCug}k}(jK`4M2|oex04J<(wLmn|G14s!#z*V&IYMG(KY%!9RUVQrs=`&Xc)W#!QH zVTJThVRGm{BU46#+CuN@e}PI!qmSwzgG)HdU#JH%G_EL20{h9FlCPV?mX9axUSF22 z(b#tQKa#FH5X%3LpR@OhP&lK6q%sqCXQdD-TSg0+4U%Mpum5)V z)cJPnzY*+g33e0__s{ItuVm+UBOmoBSK!7ITjieKn5U)yb6dMHAJUdv`hAgUT$a6) zmAbH?Cx2-aP7u&6LHUrY<-Qq6uIA{nR))#7-6p##!?x~b69gVfh!wzFpi=|n$zW>M z!|g){P=j9&hVDd)!feeR%#hdo`JJ1s*+7QCHgV+oyqH@~G4#Gi_nUWrF{0I*yEPME ze77Nr9fZTa$VU3bXKph;Lgb@Uv=#^`8ndd3#>AO`lNs$T(XZm^MYQ4`zAICT0`ft)n;j z=S-@&KzLHu?k@kYc+UxSe+i1m!3h@g>sF(JB2P&U+HaWoj-+%{QTxYybxeHg3Bl1Y zNkxI#tunIt)WB%0fzGZOA84xK!)72lVy!{F$r9Di!F}rqjbBVL7IoA~eg5t@-}1udN-Fl6T&`Y4!&Zr>U5(uiP|`OC zLcs5AL1wZe%cn_5URzds(PMD5&>-aK-KBTBXTd<_m9vhWW{W{#`#I6&|BS0y*8$YC z_=#eR>lyTNhFGGh$zovXH3ZG_p2+y1H6lI^jB{GmZYT;Yx-LIW)g9dSH9$wTN*_9W z1qBL?J14Yd6y>_g$Ck7~%^%OqURP!eZi*~_%|FeYsR&s(f*ni``0uPFwF*;<=R>AI z18C{ps{_gsj2EnTAlG9)GsWgm8m{bhtUe@a|4ibo8B<AP>I^yvY0booEm!BHu+b%P=sc zvWtE03sTbv-BL*;Jff=6C?U3j1C=3@c%=}#L!-%pG^aMHf%cwmtoyGIzdO=+mf5@* zP~<)zo4(b3^n7U^&qtEZO@8~V!lQD69@{AH1O>ZWhQNeBkLp1{2K^$+i!1)U2~5P>!10(??)BJ0>G4vb>(5VhvaM)gaEEYfcJKT>y=~W%Y1sY{3;70xnE+ z`ePS@C>lsa&tZ z8*dpZ&vYSXh+CA!Gv2uKO9i$Rxijj=ICU~`rHLzbb+gKcb|O}Ud(>z z5~EES`FHWzh(}53H}EvTJW2sfq|B}$o4Qm0$)&^yM5<^0vSfJD-9Pb+eS>Qae*CBN1I}AbJ<#(qjQfjDUM0m3w&+ zp3v6!3Ac*%DSDpw96{@FJ?58HfZXR2H_d(12GC9oiv!z7{)#82+ zG@_y?RJjsA%nSrK|2zSWrmjHLBlhdO)EDi)n6sLw52VBKelNj{2UJTJ^qBLYEfap; zgo0<8!*wuQyA`4h43yE>t+a_D553iTJ`s|rsM1lGcIX~lgT)9nb-NH`bme>R89cFj z{34$>vm{=>$2+9PfMZj(vVf;K)l86xUXk2aLFd}bi_1*Y+zv1{il2DQs48 z0G{-zMAlfE2_h=9wOB?JBg`S!_G{vf$#sYLED)>@7Z;E|OL5t~TB{!CZvDFIS@qw@ zWnIS>WS%0ric?H}MaV7wYLhlDF1x3Se|$ke8lh!h1BR8F5DUf;heKC2N(}{Z4eKR0 z`D-zsP2YcPY;~E(psL2DS_^$0gaFAIh7JHNFA%uEPl zHtTBYcgGSuxzbI4PWt@4Zu%tfKVH?{3XV!d7DV_>?vW)h5-!%gq|O62g!t{C`G~8l ze6^927nr+!V76iVp!u!?Od$K>$VX$v86~h`=|pP+Kkd067%h|ngJ{DA`4atT^T0a^)Qe%tTXS7*msJ)udPD+c-eD+#&KF1~vk zqIhoy6D!Y(4ZcuxuV=#4V#;PV-arc`44;@IjBla&eNyzdA!%JfJy z>d2q>T%E&eD-LH7RGm_$0{mPlUwWnRUT9f$Mh;?&v1QYk803Myzya7 zRkbMg`^=!`8^^-lw;tK5LOi@y#HQ#4;|7q$W7!!(Nv*o4*9#9g?~h#_i%{c7Zs8)ZjX6XyK;&Gvcj$~-A-c-wwehQcIon6{- zZo8x-G-08(HAtiz4!a>wl|pV8)7a@?2aHs3(zd|muM3q+q}W2`wrm#eVVxv@CHD^%aCUyYk6X8FVJ2}i&Q{SgyYa} zp6{Htf7u-N*Nd%MFDrKMLI^P#ZKGR0CKE2Qq;yfS7kPL#M5`1{emc?0#aU1vR#%3! zP<-4oJEpna&Nv3S#(vZVZ{*QvAJuy>dUi}?@d7v`9`zFHQMVJYEYGzvJZTmztov#D zOSTHzpK=YtUBi+kP3X(5z}n}?aZ+;Rq3F>Xr8F*u^5brwqisgl-%SAgxPR)dM}*IL zxcc8d%`F-IBZ>fP=2}U-FD!IzH+k@^g14RBU38$Ae6DD&$(&H^V_|A_h=`Q#T>Q5b zn`8g5>_>8Knsg4O*&O;PYi?|$WK^d!4GYps;gUhNb9FN6S1&%ZX>z}Q-Y6Fx81%R2 zuijYNYBID3d+SVDG+2oG6leUb>0Vi-Lk?s}^{sc^Lr62%ZnGAYS|wfGo!pdLZ$Df0 zPB{CayO?xwKd?S7&Yn-3<&iM9b7keL6>_=GlU>woSjLON3LpMhpSUcCGca3K{m^O7 z>(<+qDK?Rg@>GbCDN7>&3%6`q3#Xmelq?YGZOgUT+ibju+$2{pubK3%z1TE0zn*Gy zI7L?(EglvlBI}Mh$rk#vP#+w&UsB5_g-{wDk0x$G^5!LxNmgZbpfsopk!_ zP<{8*xLY_q8iw4U)vBi);*hVi!r7KM1Vo+fY_x-11rH)h5l>yq%Y1FQ?f z-}a1yAeB}|epv9d6k>2Uhv&LoRANYvp?|l}b?$7I z;J{zVXHKU>weGo~6Y#373qqt&?V!&-;;$!aA+;RP@omq<(x}7 zU(=#S6zt6t$%wn$QVw>AxqUYDCm9ZE0i@GmO57LvTT7PllwF9U$vW|9x$AGAcp2f5 zmez-4N%UI%&ZG?bBqXi7H-{QjJJc_m#p>;FJwP-XwVE}|0hwEV6%oYc(fd7OR&r>0 zOO(bHyO&(9NH?q>h`OeOUqS>K?i~vIxZhs_-O9E)Z4NhMG3sv-cbDNd+PqGS5E0Sa z-PkMxk6>SJT;fi!V{glM*D8n)oj4rp(2YgriXzTEaCIW$A{W=~{cl_U`WR{0afMtBSqu*h{EQj~8v;@W-bF}nZm3#+ z(vT(Eru2L%?+O!BOgcp^A?eJ}sCC{*zWE7^$P4ehFHLKBGwhwSE74NXr)+-u`~iPV z3B{nzfB1P=dJOu}I^0JzR|Xr0&GPQ}jdi#@L9cwF9D&wmHHVGuqjTw*{XZ4hjHuY1 zq9m}QX!SkYobP5Ffh{A!%r9FfT5IJgzXzA!(uI!@YOwZrr{O;dwWH~U_LIa#*BG;q zJHB0dqlzDBg5j;E@-L&j|7^+N(xWzGI4*d@I-U0H^ww@`Z(AF&UZbJ!i0G|tIBcid zbPeC$^ij0koE7Xa59%Yn{YD&Jz%lYF9UUN-Rr;B; zJPFL4a;EQ{RZeU=v3VT0pBBoP4tgjJCst9M|6gXURb$1)rUIDb$EC(?Gc;pn(y)#mh;=zs81&oAH*3u zP(=G^_irs4)xE3JNrimarN7k|xj}ns5TlfP_vFS(KWyp~4 zMO|r#5mCL`H>T+ru^7@OwudG4ctzYH%$gC4R3cOn$^#74!^{InoPayQ6zM!c6@p|e zZ>c?G(_H*fqnc_HgTq-qjy>A2dx~ArXmNQBya0AV{b_e`&T|J1T&-H3{9Si>zX>rZ ztMOT-b2g3cj7R<*sxn`U-MEhDl~h8!Ri3Gd%bk4OY)g0{1@*7ejlRM6P#H4sozo4i z`9mJw6!I?aE~drZIiejH&hjjkz>|~e=JMzQlHD~Q^Tl;}PEZ6anIlX8V6*L+t&&7* zl$y`x8qX8!bcP_B_}@czLJ8Jk8{8;Jr4)=88@vz^Wy#`U=X7t6RZ3-lYgLl%=lO%O z5@_9Xn-;Um;CGi?HY2I1orAa2BxdUg=W@Pj?!<@a!6vX>Ugu!gX?R^wibEAfPytfv za9u_*x_8GtbY|qR*P>+7rDsHDe5Yaa`)w{VHRedU~^FosMvTEH|zjIJNytE(n}Y9g*8X@0N{N0 z1AV)b?WYj7!#KW~d{7E3Q(a%@tZHdBL18jX@@Puge z>9O-|<=v0!2O8+6DZ?i5PwJD%Dx_rze;dfp^?jc5XTq>=$+mm6(GiOk?G%c(sv zQkM?VWQF58>5a!nO6(z(0s5sh#X;Xt0}fav=|ncXb|Ss0!Qm*VPt zT@VJ{Fr?nyVViooMnFSHjMzuqgrR!x$O6Y8(*3(jqL4zP=grM=kIxJNofIHMl|Fj& zK2PbchTAlj6nuiIn+8rO&*U$Z{Y2BG;1^~?wX(jSkeneqMn9={4vx^1Mho1hISJ^U z9V}e5o`O7+x=Qtj_LQE$ctdh7xf1MIdJJUX=Q+#IrA#WQLTY<@tu$alvb}Rd#xSij?oV zYP+wCErXu0K+l9w=*|uA;v+^-xH36x#$nuI&-XJQH$Ow4ZDwsLY*Bs0$H9yLGF?&Z z$Vx|AJS(#0YlPL|rUKOueanA|B~p=MEa=?@PxsGkFowqDpS-~PJjB0BIV^vNHO0|X zqYS8!4~kTE8zOEh0g|BJl4{dYc6-W&4bu?Wc$S`M%Sv+zWD(_uY-WA5&F1*c_-Y|8 zEusZOASm=Pr^gMM4&SMQ@Q*K(b-Sg!I@C8>*L?FL{CHi)tSHak6h@eAYU7ZU5mD_f z3yKC`Xjnsl8nL^D%X{ug*;Tom7pg+a@5F!4<9_iAAR>y z$gFzNpAOGr?gfP^nM07}ejZhX0BV_;cxjYYH(_Hq4UZgn!RY zG3^iFAx(CUKi2K=ePd+`&!3gU+BA}gz7`|W(HWgwL=tY^p42$?7=3hUyi_#WY4+OU zk-Bu6=k!5nt<d5EU%kGU$Yl{W%@+tTQ}KQ7OzFZ2y|xby|96khxy>izoBX>j3a zcq~NIcy#EPXwLz9$C`}smjB@k$Zuz`msnORvf~7c7GrkYM9>{i}l< ze%&Z6GCp;p!6+^Q7h#k|+LVy8hiIye%BYIiP)cijA=+BiE*F8jUWtg{{3kKZ&D$jL z#^s^K<&8@Jg9`KRLcytq;b+>vZ8oYiQc16k4|e#%oJ~=Uv;(k?66?k-PNS9(Y#pTN z=1@kLXwP%U9ppQ-xo5+$AhPlj*b@_SdpBd>FMyvINPy*>c~$KbjsEE|Rv`ebWpvuV z5wiJe?{xe2ZY)1bj_@lA_S*z&iUn57k8(=P-dU=V>cNBDoni1$SXW<}PdR0=Qcx6X zsxo#o)1DOxKaLA&f?@acN-oLCN)gU>r6jliIeR4q@yVoskK}dK+wjWl%QJ}RddtQ^ zx0GQTE43HtrqQi}^ZG`MaP9CFcp`0QhMZ1{yeEoQxz(@)%~}3Ldo2vH>jXTa9OieTe+qyd=!s1S;U9uG`*UyIPX4&wH<7<*a($bA#L-&OK8kevki1GI;>r2C zKR6Ww#sqRqfkye%?ADk3b+S%nPt9O{e|3Ca?{??Gg<*2pmW$p?JHxOIYwpFWt-6}j zAhtsGMUDMH!QZKjn)tY)^XmETmmkK|D7?!INDO%dpKE124w}kF>V4*vYq&a*J`%XN zz4z%T$|5j-BD+T@1x^aQv+{lG>^JGGM_X4@tyUb*D?K>=L3Dza*HQ~Bqay))s>F~AlNPNuu$_=ubFr1_ja3Pci`RhcVewI%gF&d6I0af zwp0HC@4EhU5<)bT?JA*`$G7qXB7ObYe^3WirYd!w9&q^KWEins5I5zr>Q0_e&Zmc% z-`>wQa!zyN?JHBnTlB%rbG9z04*lq0-{^AjdXi~><(>Dnl2)Zl4|{gIo2NoB7E23S z{U(Kvz6Q8dOlZu^FDDl~nwTn9S4qGQ%MPB${m>!4zj8HilxM1K+bpUxaAR{XuX790 z8lQ0@F<$nTmUL@)Gs-ZcajpaRN%a!%ly5T!GNL4r$bAU1VNzaCGH5^53HEf zgk|^ir@ZrbG+F%7cJ)B_F`tAIX&kI^n6cf0aj>BsPYl6e@`5(CIiznaZGGO?o3Z0? zd*RUkDRLvl!8mhJDn<534tuC;qL-TXOv`l#2Bl|shc|jRlz!?n2~gCy^IfoYdi+xY zxj9gFZ!GI*f;yO#+w&}=HMtk;6I#o}swv>|n00aDm1Y}5{mSB^ zyue}ii;1||8wYpG_j;fAG)zW-!VOVd7xmkhWH&qEFjXp#^C}gaNw%C>U%0VA_#GN_ zS`(ug4TwU_xzjQnZliivJ86n5_P!S1i34o302qk z8Gfm!#PFV8BzzCmB+<02rfTY;tkf^bp6}N3md(y~yYmC$jiafX-DVcn@`oR4ZqtIr z76U1p-7J^)kmusRvq&_8Gdq3|C zr_@c5YEOM2QG;XZ@IJ}aRgAW)efuf6;9c38Po;g8MdyyIzG(=&W%BwnoJ^Wal%+zdICTRPDuT`4a3@?s)>J9(}tR*AYGa5choG|yli`(h6_ zYxmxULNEE`q}Co7l_Wz~!|J$D4B|goso_~C`lkZkm$zJQ*O+l>)s;f`dT&Kh`xJISw!paY)>Vk+%#XIU zbio-az-x^9-7Q77O%c4c))Lf?tv#Fz!-}SMY_7c)Vj(#{c@jY@?6!YD8PFl2&|b28 zmd3=s+2J2>nJDX6D&(&hO@BH4Z(UdBbSHIh=u#U z>c^rOp_tLAcEL!-@NVY>sbV-_--bbS(TVzPfpI|Xzk)cWxT_NHFKmv!Q@Mm1ZkS;Y zUEJJa)Ng<5N;5{;N{JKpzdq?*)af9%p3#_{U&gA|qJEb&6qX~*qO51hf!rZkr0}V? z7*gMSIskI}d-NVmJ@VafAokJSy8T|MBHlx*sF(dHPj|^Shgjc3{HY{`aOaw6bphdL*TMxcWpQY3a`wswC+Nu8%mM-`!6I zq&8Cld1?tv4#V}&F)#CcMVj;(JpiAv3-?Zwdnucj#Y-}{%VtP9b9couG?;NOFtN>cCzp0GCSqWG{P88 zyPriX1UJG>F#Xc?B-sTJeGzq;!4>X6G4T3H$W^}cBnm;N#>3r#5k%~7itkO3?*DW{ zqJFiSrDVdf`oxTO;wAW$de({jh!NlL5ktVdHY%R>Rn>q_7l?#A5DK?KXX($*29-5F zqNN_odSAbkph`3o6)SCcOnX-pQ&8X0Q_6^^z3%M}1ls8!e=2}wS-M_;~T0e#vSodYpYr_g9Ep5>cBPK)PNVQR2f))puPC)o+4XwYkoGrJF=ds zIyeSGdH2iR5M}k2XyXq~C=?Thmb^!wp5W=uM8EEF}-2}4x(+hL?z+IxZP8?nV3@4j>mYfYf72xcS z->WB~K6LvxbUbTp*(K0X=!gg+Tqd5WeuNw_?)i8*oLhViF=gTtemtZd2#oIEZUO9B z5D-H^<)+zGR;Z9_4`|TC10tEi1VT38o6WS;XQyc0P=|r9z_=U3hlYnRHjMUG^_1l8 zZHms;fpfH3z;QgBJYShYd>wIMX5O-aZRW~6K4o|}y_pI`xN&rb+!@LPk|YZBUn63gse=B8pZ;Z|tI@`ZO7GUxb^*Ex{9UcXxB;e|CoZ!fVAX#88 zkqkD{=SDc@8Kc>j#vU5XC;rYMJBLv(MgrpADct(jEr>*Qy(J=1b>c)pV^sG*vZ33& zLOS{W(KqfOD6FmW&KP5;oAzH6t9#;i!lUayY1ZImNt?kB!}&vl6&xd>lrku`uw>8QsMrC0cGz3OE>;O2aig8rN z-C9wf3BDL=3akn16+?5Pl7Y=KE$DLyknF?5q{=nMiT1)JNv1C5=jE`wB_v`Ayo^Ky z(q||E0v&c@9)H>0g_7Ph+#s{Q5!I?68#8MsFK=yd&CI9N?1_>rcDo-$8KD|LAV-4x zkab`<_jq^pcG->a6%?BGdIQtzr^_V7md+rl&8*^*8Lb%`|F>0y9Kzk7Bw&Cx)lgkI#GbQZ zfZ}Bt`P5(cGDR?bE%|_4RP2*V7cSBp=d~NCt;0UrY54w>WUU>reMb1tb4GB#YI3d| zHVdPIi|QJYXb*gS`0&h)=*Xl)B&oG){vtCip5uoQF!k&;Ul=sU@uN;5F|Z?NLQOmbja4 zAuK7|)ouUSzI196&0!g%bKj52j^TeUrX)|?+r!F|a`FCdk4Oy_7vmowR=+cr=DUM8yipc5EtX>wy8J! zCE0>%N(=x-)V+YkxNzl%S=)**c8vR?%XezYI@kH{<1rVZ&bI@#S-fp9gAW%h2aKo? z{wBwTW`$>l&)^>*IdRpacc2z`iO)wDcIqFakAIW)FoaFr!Td!>91F{`%&VtWHJ{}- zjr!88&0`uh@;HN?|M|V?1`T#324|3}kW=DU-v}vRkg}v&v6NOA>>Oc{FxD%R;>Z~n zqMc^dy=*Shq9v&iwHrk}^G-@@-elSIL3OxUPyIIZRVp>yjK!1<<4r}C>EbR%bB~qmc z+nhJ~#UJjvzM%UYTS!XNcKzZ+;Uz86=Qq9eo?~u?fT~mz`h3fM0h^V(O5RyG`#jwW zv1KtjKRju_g9?&nc^ynNLWEhjH0L|)+3(c7m-)gJvj3JFezBnwLzhw@_WItVq9A|vJi@@@yOlpyoGsH&^*mwQ(R0U|L* z5cd?45O^E8V5Z@-*&oT}U0X____HhF& z6N3d4`+p@D3_SF%>r4JL04aSF`Xyf*q4N&SS4Uozeg09>bZ5bm|Ai`7OhD@+RgxO``FwfD|k0%Jp z0fTdGk-{ksd1tVC zH)hss-)AMCCnr!3=i3NCMOL&T;RE*5|fU4oLNf_Z8f{%JHGPrIUo;E%tsi1?L|@{)BE$cw%lhh3a8d7C z-j6DZ%t`3yzN}DVG)$GTCi- zF1|$s2)tWX2LEYwePSyQuT>vj*C0#()FmhZyK^;?)E1JQG;Dc((>v5Zv18h-+jsNg z8r$`JK}=R?P(w9-Ip1vDck})Yu474?!3UFn4p%=++g^z9Z`4Xf9*Z_HrRR~g-pMs+ z1q9NazE$0M~c+$ijRyLQZ@^_@Okv|2*j6 z^z}-&%|q{x)H2eK3wUBT?8Dc9*S;~`BQ6vISL~ZY7qeI&suw(%EaBH$J#^3 zq^jRz(4V|3|LC!N49|id&9R6i)dd$(;iD1>z&^nT9-K)OLoN|KgSgLgJI;ewVC=I? zv4%+1?0uPlU}E@NfK2ETl?YtiU_&7%z1lMqeC(ZoP>+s(zbRW#+?Cm<{m*tkRy1fS zqAJ?B+1?C1i+t?0xe{P-8c;WMOhiJi(eW~pqKsYm)wb>QNte)tHhJ|NA_SO1Nd zv7J3CwLaX%ab581U;_~a6LM*>o`%7K1G`PRJNGUu0wBo9=40?Zue!kd3gwIT-#Uza z^DP1|knfF+`9O{F2hq7}n^}QH)HSLq*VfB`NX^~{6HhK8ALHjTxmwM2#vRN-9ADka zd!Y^Q?XXU*#YPBTCO2vyX!;s6XkRRxkiLfU)vvovKgj`TVmu9h(7!ixlqD3($d$!^ zxe+xJ{i5?DO_3dyA1^~_a9uRh@h1|39|rY54#E6CqCHPTmTm=D7;ry3bas_bj4}zu9E-D&A9lf!`{0TF%WPCozvs)1yzFW!;Sf|!EW=>zc6d$UF56G@LR>t+ zAxu?)IxlwUJzI8)q^)}wt~Ls#HC_4}VT=#&-tE0Keo$5h;p{V=TjoVu`Djo-8o4uY zR75WM-Pqb82d?9deJX)Vc_Ktp-PaTG8r-2u0!ot8kuN>mYUw6)5t4p?#F{rwR z?we>yu2rwM|498owE#Chxsr}Kpt`!O0x%k>&bL7=fawec_n%la0z%Kjn_clI(~)dJ zM`{e@uVP%Q8jrqc;@VgZhzuHhfOsAcg0}(R(ei?+uVxPZL`D_7)+fADA)9N46p{RC zY(2A2kUots#7yR|(J3u?CDqiAXb?am>khHd3$0`IYklf)BFRAbYYiRX3&@%FLJ8@F zO_ynVa$;Hm^9VUWD5ZOT^}o;l3;_|Y#DGOfXyOZQJQd9s&S0$_qzC*~WD>vpgxfoR zl`g?%6$*`GraHjWd3^XS+Dfs(DxW%(wC2Cb527_HU)HsXWduY*yYa|hYSFoCt3wZi z26sk*Dd}E5GtIo~#p(Z0B~KZ$eOU9q#sWOgMf@D>uK=R#IUx46`(p0e{HQDyQR_1; z*~c4FLhY{;0Q|10n<@&aMvm1=0%X!cYd#>2I$YsXaB| z2W>T%B|r^oeW;VxoHDLelUir|ahwT^1h0nA02Z!Q#PXQ^FR1YXN~ibd1zx~=$$0s7lJ<$yAJ zX=%(ry5~sKT8gim} zm6t;q77h?o1I@5PudZ-^1oR%gxUo>o&-oi9ARsR6DFv8yQ+2rrfE1P)%`4F+q~a~W ziN;+Jt$`XslEIm7EU?&`Kfm%y9t2dgCIeK~{$;>kD|Z_>vZEsdE~&BGVEglsBhaSj z?HNF+(gi&AMKoKO#E<$Ri6t=aXk$r8f9E%G0pfcSVR1{|uAz>Xq!N)MALlD@Jf2u~1^LVN)FC>)AXo4am zEE=s}G~HE8tUL}h4fl_q>$HKE=&S&kljxE;s}D*?Ok(>U6?(oyU*AJP7DN zv?~nsSeFi9fghaYiN5F*-(gIAeIp9EZP_yNU+2uTeHMTdi<;4m&iI%m*P~IG!8U_; z=`!=MowEh>hrdN4&0#n#P$y-CfwCr0qZVY+nhuTFTK6Fu85qnjaed*1Ytep$tfs3G zpsw)r1y8Mqr(8~h9D~uO8pG_vDxGeFd{h{`Y=L*_mH-I=cmD-|*hRoSjdcp2RIf}j zDP5KneHF}gn=As69^Aw804a~%hMLdqrgMP&Z9gZJ65<|K_F0QYk7ULWoxnnt)~FMx z8Yr-2Vt!@_u|@~jLABp2z-e_;OjA3)P-miSO(%=Y%>SOo-0gKWzfiz1DxXh-w>h`B z%a}1}C>qe=PP_=Dm%5JzOg=a)JTj#;dj3U|jCgzaO^5(^36#-nLyl7ietUZKvNiO{ zbo~%gXWsi)IaUn)q}p#Tw#kP4z!%bUsqEso@OkM$rq{hY1-KY{BMLPuNO}gYTDj1V z_&19W*J91#E;omu1=d%353p=U%^X~_C*zY06mtN|PCekI1|)?KYmxsr0srx=z(~d^ zWst`qfyo72v9-kXINo5~iJjw5fiVx-_W(1A8dKB&*v54sK`eeyl_)s?_FHHIoBDbL z+YX8p^;pi60}av@#xNjrS#Kcif)fwT4x*h;NA$2EyL5IACjf0+G=rGI>JN~O=|@h2S5FP<|FhIfVUIxtyMJ+F ziScFg8AvBoOL_FPGyP%}2zqpM1W*%0>NND?wbyhR)LsP>q8p$+hXe{9=PEkVVt-Kh zyw-#e5cB6_5V7lf3DN*XJKsyftm?rghz>Qu8vAI6({1s$AO~3Y{)vI$f}=n>%>%{+ zxsbH^+q@8F{)&Mj!Sygs7U_SXW(R=^)8o$0Hj6PH4MdV($b&FpaZCEcnofA<1)vH0 z9Z|);xL>#!&;?tellLjYh$ zu}V1?RN#5MNHxi7P_m@n2Cum7Z#|F#QqLYV^01aX09mTq>Ht9TXVU001peR}P&)zq z?6$K?kXoL!{^fPj+NNq`Nx1u{wTE4_*=%l&r4~C2V7gQjBKg)ED46p_-5@aphN0gqvg1C6>L!x5_QfD!%RJRAsY zzn1cs50bxHf1lK!x&2@G0>ZVDha9<210mD2p$*u#%^K4nZS$5dii5&Z6&uX=2LPXH z^grDflvsjag;OsAJZ|!+4aA_o-voT;5&{OG)CFZVSrW2QBWs>e;i(X8CNpAp>Y*#&=v3Vs2U73SRVu^*2MW2;5Ey#Erav;!0Ni! zO~Tza6qEcl(JDlsM-jE-pi(gL?3Wr$V=3qX!?}^xgPSZ84H@<|P)FNF*HDhG;dK{Q zbdpcxT{Z~aYf&BO9VgcG`u5Bo=iep9y3=j2GeL$GkQnDb(37~ZJ6?Ww3T=1m%a#rKxUQr5aa9t`dVcl#JS)?23iFY5eo(P zpNfP-o}OM7^GNsd!|6h@L}o#MOVY-h9AFMuCM72qe!>fRL;}|b`Ad(>}y@Wd3kjMM)>w}54bN_60Q|vXsjx^j#!pOSn zHC3J7u8%`uvTZC9gveR-&ew*9Y(WPmTTVk1Lfk`{&6#m>Z8+5cqI-FV1m9OhdGT>e}*VGKUWnD!}Ba z&E^((A_cEEK(CA*!&>IY^+a<#wf<*PfE7p!;m^@8(On+QT-d+K1yTVvy{VYwUvr18+OkV8+I12+ zE1A@3E5l5SM7rPtwwAhOjvI(X<%7DzhaY;s!1oEW(=(PU_pCsG5BVR9c3phm;STWM zEAIGIRsenn=+~^>xMOQ4N{bbRmI(6=+?~Z?rTQ@g4Itx`3Jc8Oz?g@Mx&)oXQ#Uz5 z$)T+S;xhfZh7v$Tmn|a!dINWk`hPx-Cl z&)mmcJqs_0Nch{Q$J@&l7>H0f>+8eAcTGV+V?1Te(ftEjR=$>i8Xfcz4S4{(e&&W! z`K>oMnZ#fh{ZJZjwdN86Vx{K}|9532BY` z!(fG$-{hDPb<`L%1$I%%679J7qeK!Cf6m+a2;`q_pwnco*;-=-2qobT%oqaFyhQq$ z#Z@{9!1qBs?7G6Pg#)i~X+7^z6kg&2wvup^PpNmM1CTHfMHLr zG?;|-V5|4i0UZBNO(BrB(=i{6EM=`(CCr-|?U~Z);{4ZcsjqOy^Bk4Iy60>1#tsT` zUZSxeGXpLnT7K7&|LB3IAi^qwYQaQ}Wk}F5Vj3NCpluZF^I+zgdNx|4|11O<_o`6v zH{{s`l{k!Ml25}ND~#A!k$LV`5_ydUc#mB&+koA&>upGJUCs1MP;5GYlmcu7jHD(S zy!c=P4cMQAC}!d&wkZpPFm5&oR?W=0`~XD^xsAc5NhB1aS-c??2rEd+<{Hb)fC00J z&qC=8JkN6`0<*6r3y1@QiYnmpumZbhw3m;I7(;zMie)V8IBWsY6z+F{LG+5Zx21p*ssF^9!u%6O5g;2m1Xci(o>#O}+^nF);vCJ9~XQce@WX&qW+gd#H(VlJg5v4=a6ukmIw)o`)H`JExDR!>igxx8=@F`3Wa`xXMA{F5R0g;HlA#xoBEIg8_sT z{<%WqN@bSpBGc3V3kNp?6%gqChz<=ne3j4pvvcnm>uKbk`DS&%;dvrHf2k6;aPM#O zVsLY7e#bNLvR1B42cG}kPLeNG15m1rYRV>H=0bOc?bFEU=dC}1fOQgxQrDlg9^z)f zME|a1eI2U7#>z!OYGC5$wMk-wMZ#YXJwA~5yXV*eL;wH-{ecw7h0!vgWqc^`e)qY; zs$B%CKxI&ENyYh{7vIQtAy9iey>R$~ zkV9T@FBdOwH=cM6*zhZ3lw0rD29x> zLzQ>L&_HRB9{?KPek+IJmw!IK-K7>?soazrCZ7vVy-j-%o_Pzo*i{>WN& zLxij53V!V7RUV2nMTaS}(O7*dhumh}RRnTaH53oKc!4}>YQ-sOGk6*p!+Y^#n{{Uq zD04!f#T)cwEh^#y=b;;0B9;8kOyQb>&9%d_O^Wxm!!O4$9;)c>V+=ply85V$ zY3XKV-Za-=C!72`(K3T2RmK4}c_nxngFcu!4ry^4@ zNhb}S3Pa&s)Ra}(OIt9(5jU<&aZ<9+018LigDzp3-MOwYg)7|vx(qMedu>BC_Un1B zI^zg7Hfe%Da?1B%c1XX@62poxzO~%cRPwv_myBg)%*wLCe;_RCipSuur{dF zjSHC?oB`i3?cSD0{o!1PUjl<3To*_@X)MwNj$F6LVByN6`(;Xsc#)1^4bXDApXtAD z#doK;Ri@>IYA#XgEnu)1Y43upejf?FNBoIFAuHqGLM;c!sT|s1HXb@0lg&M zo(`Coc*BIKNw>P`Z)=k%8W&9M={oI{LA7dA$s$V4FuG2+#m9O0#jJpjs{Y~3SEp0! ze?6BwF?+v@HF0;L;z{e5x6ajlAP{s+m`L`8ll|jyrmRGhfB4RCD)F07lY&AQozIK)x-ksUWv0uJWHPUc9 zA~Q?}?;rG;4(c+q`PQD};7eT%S(aG7x*qmMb_b2RBfk~sPDD?EZfg#7=KOF!4`7;XsD=SA9|Cggtoc1p;Da8Ny4=ZrG z6#7^8b`Lq8`r&+lIpCTbOo^G;&!9QI6voH}ewoKQ}0b)No#pGe(Xo+ud$ zQ(*J@ce?|4kq~H#7kHcpD(sTL3&`FK-k3m-1e$&B&i_JT4)|3#gwlU(vrHq+rw z&%)WADmPSE*S*jkR}!!_>1jy9ojlf)$B(BLLkhoiao7H9_X%w&4hpd!|HfZe*W`g( zTJTfan27g2cx!Mn`OFpn%_(rX@L#K4qGepj>PY4Y*HLwLbI0F5Td9tq4-2RIyt=l-xBaAucMP|fA0zw#r-{n2ju6#IMVLVzEgOdjVE;yc5}(ZQ}~KYo7XpVc`#VV?6k8f}RE z+tJZ=eDn)lp?ubPnHV-{JfuBrpyD@2mdHy5)ovAP2b;!6C=E3&_S^&jv zFeR(M4b1_~dd^N)%U@Wps>~NW4GFS57F;|F3A5yIT0A>_YPmD$_3!Md<=}kq<NgD$0jC&(paXWO~p#J_$+=52hN zl+U_lKklD=OI@YB%2))JX!DigH+hWCN$8I!{?KA$w%ha>yi1WUr}%~r zyY(kNo_)Ulo3(VEbCUwJK_T=qc&)`{#hbgITGpR0Of0LvVibyPE|@()hoV!k z>i&hp5G)uQJ|VDCrMy)tZTgQ6757#E`{^F2;kNAvBmT8h#-k=->`O;Uu3NLulK!{@^!4PXRJ#;zw|t#)9-2z15XGu4ytq$?oAsRr1|0zafglY zO&v7ftLgYn?7}k%3v0#;&$v&xFh{)!(s0ZXfm2O6$g;$Lp89ku(mt0;3wSMxbhMH=|+kDofssr|8dmYgV?F4oKiM%EWMl!pCS zuB;nXUeQIlf3tp5;}v^Q=5Zz_+4ea)R5sNYB&`V&KO@pz5Izjw;(q#G2j^W$>Ec^& zi6j41{5;N|W2{{8!*IFs4t-Cf$Gn*2n?meFc^JpXKuw-7GYnpt#~BC9Jp)T$!u`TR z)T-Uy9g8UX%DWJR zN9?`TE84O=<;*KJ(8EGylJN$8)`5*N)K(h5JgM(Emz6MoRDeZ5sBipGGz z`u(9ubSmZRh)8no~5Q|3*SnnUv< z^It-@UMY|Mo-VZZOjLxp|L4m5kR{RD7;5(6)&7Z?Eq(=QvDgwfc?t{GLXE;_u_v^~ z1H;?&aQcAAl$#HoB4~FYaF-OW&#`21C3g1o-tu~ZMeDP9M%_r7Lt>o5cgKk2S`{#H z6?sdLsHkrA0S)d6PjjozGA|y_bD}u%f@hSGh$h1?)G(4rSFY2y+SOU)bdaNKgaX&rZ&$eM!qM7Ou8)I=yA-~#(Rhpx&B8daaTh)OcL!p|?XyO(>3iF>usT9&~k^i2b z`ey!s#3JKHjp(c^YVxu4UeU{Lirl^B=W2pmW>tgQhOZuLZJNEY0ZG2{c95)l$$l(H z?Oa^IzI}WnDMc=#Z?dESy!W~27psy@!1n0V_#ESr!sy$$5#Ra4E3(_zG0GQ5Ri}$h zzGXCMK}PxM8;S5Io-u#_x^kp`Wx?n>w@&V+JAl|#vBHw*jc+^_RMLcoI_49*L5d6I z4K*s+`O~y9jTTSge^R*B=j0amguhRUIo5ocyNUgAGmyh(WfjoXx&2bQ&P38%J~{rW zsL;Xgns?;*$ap6uJs#?tW4(qPOk{4$dmQrVWxYj$gBT>Ml~d1vG$CiUj-ei*gi41! z#OO=*_*T|QOED!)@5-Q^xC5=+(n$rr)yd7{U^8ik6_r9WgD0zBW)`K<8$aqRb8S^I zN=I_LKUjM>FRksPKw}r1_9Mm6EU^s~sz|t6>`cmZGq?(w)HvG@mTM6H4oA97zKAr= zr!~~Onq86YUFrAU(5uH>r&IUb zl|&zkx>Y_0nnv!?p`^-5ST9K2Wa~0czwk|uhxrl#lM0^&%jd!BVZIgecQJOXMYOKl zq|C@tES?5E78>s@G^iG4swhHqB`Th@B~H9m!L*&_m}l^fxS1Z4=9vB@ zQ?)<#4*4wng%UW5@EJ4max1n%n(qwxQF|*0&cKFcG*hpT{(=}Hm$NL| zVhf~c=SU=*4>Kl*Cbq@no0mh(^ZdTTHXkB>)T>JE^$n0Z_B;YU$BJ9rVxpF}ea^Sr zZzJGWXpsR=lUbeg%DPUEHN1m%oYshf^`)pJ_kfi+P3?8)goLo6l4$9C!@^QmVYmHw??`NWW>&R${IcVUkT;(3?obz+*jR$ea8Aw92T1a|bWss26 z2P;Q5;oAtM+;_F(gLV!GeHxD>n1vmEkAF$3=_uo8VrE=2F`%T^TwN{7A1N3^oMmWy zW*tU8+VUz^TPE_%{FYPr!>Uwg52xcswxr2T^9hm)Cf=LO6iE|gd7_t-^w_tfcBzrY zybg&M>D@;@ntVdJ1Q83q>Cv~Rm(;q%d8vc>d%&>^BpJ!Oyu~VyJ4O ztb*ij=V&70i`<1ocnj^YtGaK?hDAGM1&W-575XH@5%K*04H22ORLl>V9EywHMced2 zB<&^BPFS&Wu%1qs-N4t<-Vh|xN%Ss><2W&Apa??qg0!sdcBNuOhSjkePcNMi$$odm zEFzh3jfPO79CKRlj(?RiV3*Mc$9m&@b1#I%lU!4=U29M0j!?Hc4BXlZVV1WB!Rmry z&=5&P{37TC3r<})Y5kNBC*|voiXb=QUJ`-bWvYM68Sk-Xp&e#&w-ETVTh!lYT}8`% zpvTeOCI*G~c+jpW%2bJ&B?5}f$V$1bbGGk=>`ROfVFSAOXaep5BTI8XN3vzXo)}OF z(0giOSqiB3bRr!tiU$YxDOj^wj=yhj8(OrS3`^aL_vpRDg*-A8dogAFPloj+MBSG- zyE(&8^a8%VJYo;DleQ1FtR7PvJT(HgX{BwVQOJUgqF5h_fU`cvL=G#dCXee<|J1xI zUq(ALO|m)OL+02M(~g7yEtE7jjS+z;{j?}Fyn=QT6|JBPp&j0cT7Cy3sLEyA^q;{H z@p(i8e(bWaMaiNyTzK`meM)vgBBR{^O61U-*lof|n7$Xo#dcp1Z_}3u{qZn7*{Q^l zvFZR|71A*cXjjCBL?HV}Dpz|8mG|E|iK?>6@L@+yX4kKT#IeVVH&{72giQtZCEHQ- zY091@)3!+q zwrlf~I4t;>Vqkk7#y-Pkp8i3N#RmPbRI4$&!~H^KwHwMqC?1Dlmu=+M)ExM{NxE+t7y5FV6%v{({Iq#y(GLlagYA8-#`^;-RuOc! z?<4hxf?qHq)x1gxD*PZv0~OssNKZn#z8038(~YvA1Nyh~B79N@E35Hc-n)XYosEQC zB8|S??_DoxT_Uy_ufzgPine-(bihvH3_W;(;sU0WUvY41dt}2mM^K6i{0RaJGX*ac zB9!3Tv6b=c@$Hb`P?kTQf&z?xC9%nlVhvi(z&!MbBrw*`Aq=`Hh;*5fw9D5Yi{n#z zfGW-kFf4xwNOKbZEncEc%soqgUt56FY-Ywxz{t!htw`REgZo0PJfL^C(#timlY?FT zuut>+N<64yYzq_PM?gs46OXJ&Ph3Kut_lvi8MkEH*RG&5Yl19miPs4H_4aTs?*H%g!u;Xh5DY#fT0&08Af#xb2mdnac znOkrU`7;i*uq-Y48=W)Ii@kOld*A;3&B9({%HK`a_NZhoF`?-=6x!uK5kX$kCu5y2 z$5te`G%LDtDMYn3s~A4}_oIo-r$H51OtNFh9-OeFojnOj2U=Kq2eJ>Dg}~AEl%>`T zMs)r5(q}yfhl5jdw;EDrE#i8EIEEGHz0A%|jxiD8C2_jA!jF$0W0lRU6(ptP?^bd3 zW7B&e#uq6@RHSYba8yzXS47jaI`jDf*G2ZSmLSWvY0{{Cyzj4ZFe$P?2oTKPirLS+ z08den9|`d$D73NwktEId=ep zl)QEl-KaCu78Ds>8Snj06HMwS7t%j-5}%j*9S#pV%$^)ffb%wg+UMd%tL0P?E^Df( zsFW`Y!9QRetbW-*dQNL}MTfwikaAc%lTW*@6MW8ogE_Og(R&cQ6{Xu_S*nj%jGQcq zPI+rPEz3*d3DDoD9t2o2$(I8Nf~&c+GDa#P(mU~7uMD74z~^491E5`uT8!zZy(Zw; z0#dQDJW2u3YY*^2WU{L$$UhAx&8o6daW0&#&_No24Xv1eq?9v`O6Vg#t=}xhPp}6O$5Iz=@UpDS)2D1-!z6vWj2NOw*bL0@lSo>D;>8vsHZn|ENYo9+W6a1b+P)x^NXyJC(t#f<4H{ttNcIsr5wW0@4}Naia1*4V=Z45DAsXPHvXa>I)$4 z4^ZGcwHG603;nqVibSNCk++W0v*G2;+R~w>|5&k7t<yl#0O7N&Z9&$5S+_)QmGAuz3s#-?RodVOJTsJOPr#2O z-VZ#Z1N2nWExc#`y7pYjKhrVo`N}4!B#5rLikh)#hXT%-XjS{sDBBR7_9diuE9X?t|Bjz>T*_qkXQ(#@OVj)|uIfdxuf{EiZ{AV^@tRVPt8Y5Ftl< zZT4zwHf>XCGO;S0pkAb5>wq(~wFI20UL4GbsV+MNK2VJToS3mVH>6g#K`8bzu|QB~ zgD?h0#q+v^5a~Ysh5$bO^5%aauBhQqXT7}T9zf_)Xn;K=O`VaPY(ySkBgDy|S{C}- zIR%kVPE-NezmNDg3VhX7Llps;kxXmj#oCAxhrSXEC>30zc>k>iRzHiXiM!akJC3%c z3~1+29JqGPD`m#VEdH)_Hq{6BLlF)cBp1PFBT~}McKlVcn>M*{Ukue(p)!=6%&0_` zMffM^mSHL)C(#k`dGDXS*;?ep-)xe_nQJ3h@;&h9aawyvc2^fTBks8UyNMS9Ya>?f zosA{qS&>+$t5c__pgP(|*O7uNtQuPgNjJ$TZ$UUA%f+;%hPQZ>xd>)AO-)aSQVXIF zO2X;T$r;3-vevU&zSTmlc4yM8-H4?PvlXwK^v=t2Sl6%pM$CMBE6oKkDQseqepy-Z zws5W0tR4$a)8sUWYfK>VR!Z{O!w$#~T4Djeaf&!ZsqjAZjst1n3(<+0#MAZzc3WSV zHBV)}w^kWE+K=R1B^HQRgHx!HG;DV$O~NFDdQ6=6{g|xy7c>%yFqu5Vb_90Wnpr6h z>F@%o6jwOBMBkA|)U?7fddk@W&0ZHLG1lSQ8OJrTx*7i96oAl11Yu2}Z&U^T8UQ8M zxM2@8NFxm+AD(jY-T2JHDmZJ}j*X*3@}e8^Q=D|F^*y6aMo3Ta?N>z+uzFTprT`hd zyOKET)f02OuuBYmI`u~Pzp)t8c-&Ac8Z?(YoY2cn?PmL1ZS}#Z*(Y8X$@KEb6tCPF zyPIfojNJ4-KJf?D?DAG;U-I2mxzU0Y+cXvH1puwA?}luBqL- zUFRo(U|&yc?mhveC~w9}0$IY$2NoISwb-rx-Yb;$;3B+^G*)&1z1_vL=Dh6iz%S(Txfu>vQ8m6EamAyZR`1=I6cWw==`y_O_oiz6eGQ!ZLkh-_I8!)_Yj zD>?ZVyclsIn(u06~Ls}AThKSa-?M-@Ni5bQ0X z)`P4hn}*jg6DESWCuatnH|w$lv7KbI>u2dU48%CIk@$U4M6{vyXI;0!P_qYCn2#F+SzIFpEg9XbO&iFP9sLIuq*mpS=xVwn?N&6_anp>Bg;6fH;d47sn&Ieh@E10J4ST#L%6KeRFC}r%&mcb# z8T)})EE^;H%P4Q42pYl7-czZ6+vv0)b@`m>ahr+s4c=9 zMYUXN(~bB>Sv${;G~!-aS!D9>&mP8A#`&<-$wuGl6$Re>Z@Xzg>9KlBM5pcR+U~vT zNj6;mE*W<>K?UwqA*pXY)|q*htYe?TY>Wq1tm(hwCIIVl`!0M>f^)I~rFWhso4Th= zi)ph<0$Xt3*d{rcNcJ@I0{)->lQb|H_+Psi(L`T!E>(`yw3(rhbEawh(k5e0KFn}g zBV=t-a6dcQ?xDWctM;}Mi@}1$#fZf)Ri}w7K)?Q@MbRmvF_+SjcLIz*~t6LyS?Ed!)=_7`3%MYTh z=>|}2N>M0>=9fBx_4dVzkxZU%0VndF*vhWTu{F|4$_99@Ay2ECygWI5xIyA%WV_L>OHo?9z-hVfZ#*C=&E4 z$559A{G%ov;2OET9@g*(%Y)k{Q0p{yWzVtMK4(KqFPV8)frm0-o!XPm4)>0}wLXl4 zYbk!7fefB2MEZY`$ypv<8|;>ddnqYV7c?+vJl+uF`;7 z)O@XWw4FnKQHXDvxtQ{vbz1^U}b|7D7!GUDHQ<0Z3UJvDfv$D92b$NinCTn(!Q2$MJf{Z zn1!J*RtnH7zy4<4;)#)C7-37@_Vs1-WsWx$lnSuY%^oWn`sc7GWja_!8l=nZc8IYn zajPig9PL+8)C);GS2bKd50WcJNXXKWEy_AAuqJ|H-e!Q_i3pV&JnKM)LQYu`@$Jyv z0+DZvH~BOtG9G=$JrxOIzZrN_1qRI&T{iEs>me~&anv<%ylNvVux}%ToSNIW7!yHnmW)(IX@ zfAe)fEopLsyG8=e>nwO!48m6YO(udNY8)(zT-mZvhTK5VJ~ zK$i#TS{Wo=s47bSNyQ;|X%Z%q3$R-p) zEjQV-=5#6U=Bn$t{c;Z?&&|+FPu0n%Cdrop0Ka6-%?7Ya)GdqzZwP`rn5$mew3_j` zjNafA+DqZ%9UFM(_9zo>FbCdVMGV!)Jr3xWBJ};J^HT$+p!enTjx=xt?A8Ss{^MgO zV#?f4``pL<01VtTi?RcZ`!!jcFn#Bb=a6WRBN~%ks`m;*>hJUv7*Gr4`!hH#pOw6D zSH(00ORM!k?qzn$@o*enKRD_)t?4A`2}#nznjRxHNf*jxim?+9S7D_{XAOtmw0K$V zwFvkTyx&7O=$S9gkEj$bfAwAwRj`H>#jMSy7!_=O`6sEtw2M2?&Pg;?*J3oLKRu-4 zTL|EWP5Ri5#9aM?Oa(T9xV}hvF~e1K^s2e>G(d?fGMWen%q_4ClO^p@(~f?5+qKc| z19lH?pJxNNu;VP~!I8z9{p)f7*i_%}8Ufg1S-SerK*)Wd*RFQIO@}PQ>c$my?%>rP zIu_5CfFs@_$}s8x3IgmSU0V{*Y5L%K)&sAfIsN-C`tl{{UK%2CQAA6RO{S2D%sNooqar0oGUINYXjqjqwuB&KqOj5EZa)Q+?j3B( z(Ypm!<oN53!u7{^x$ypB9Px2Rjqr1HPqCm;y)>*j)9gj! z=_ss@-v#4qbzigtN`w;0$ENoJexk617O*U%F_m5CkoSPBJ(mX}9F?j9ch*QgNEGk?gxZc1@LeZH{XqiR<&_ywZwQE^0t@=68+;ibb zrq{2*g@WfauxbI*CYw%*0eL39G*N0m2buZsaR8NuE)M|w43$sCDJ+p9rKDm~F7m6B zk%e{E!20q()c~>wF6xuE;Gyc<#CbhH?cH%TcErrf4%H?b@rI-P5cf=Oc3}vRW+<4` zWC5}xmp-#q2#_RwmN_iRK$67z$t9*hWlU;K+W&Bl-qRA5b^+)G{UZiObX{%b4?;_C9?hEl&4osTG&!lQ87`xTaZf_~k2UZs3!=)rk zMi3|UuSq;vj=k-W8CMBjL?9uR$@Xdk`m}RH#LTi90oDMrlkh<&^k|;A+^ONx)ekNj zUiPY;`ib@BL)-i5Cb%Oqa`q$fAr~C&|-{@j`+CN@Ut4)U>^u$rS+c$AJ&JK;T*#RAmZe}HZ{L=(EHNS# z#(Q0`IgL20p2F;=95V-jcHzJe-H5izB$-kP>=WQrtOZSVTrz%9n&66bSXYGj7aDBI zqiL1O1wds7DgL_+OpfOML_3GeD8XPNb8&6;RXa)j6luf>b3KzUlhi$M?G(4hBM1^F zDux0%w&2vLk8w5vo7c>SZ@2YS@~vp^_c#d*%XQ_%l4K=EwtM^TW_zf{NIBnBi8?LEhI+-dA|hCoHo0+UAf_^OVY);T?ai3D-zbZA;!j&oBXz68F5Qrl z$|W}b0x~-w-c@j__m?Km+W9gm1mppQCj%n$!eU7eQ~UDEY~YVrL6^VnR!k^hvzZDV zS`-IAu97VU+(2*sMqG<-ukA`m6nkt#wPSf0*_Bt{Jeo-ARs+jINIc)~tDOK(efq?C zSELCtmkN`U;b~U1?>-}H?NJ%NYNKk=p-tmzwhk^uQ1syKcyt$yYSCUJ?KrqDZ{S!z z58lUk5=eUy&8l9+?hnGRf12LjVONsVF)bOA`~a&Sxa-&oE~LMRE?fmDW>XUELIGpl zEnjYf5kRghmnt5pV4OUvs}-^oCu)2R`iSh1ekhXq;`?b^W+s+gC+t%BT(em`gO<&c zbva!}I~&Ed<6MES-7atTr;Ez1>fzawL(y=cpy{&;c6MD|fG+mSKlrk*gb5ate`GW+j=I7w2gn z-%Z+*RuJC(Q+P9>{kbm!zt}Jss`-&uSk-<1PwjIhc6_uh?#-2}we&rUr^p(38&9LO z-5ZHW8UrvL6rEG4T<~TikRQb4a#ojT)J>d=5zSdr{xtVi8k@791*cxiqFfc_A9w?; zr_0JjPwrXY^&rYdQtZ>g4mgqTv`F?Smyo3)uvQ=cQ+*;&|9vvWxfs=H>JPC4#X>_u zD#<`Z`(`;9E;Y#^eIO*53$Nk@<6}#)uKZ|7l$!2$aL?$4!n`E-U+GFO2ZRy=X;B5J z3Wdjn1^arMcVmrM5SGOF1}?SypbvHn9JCD1=BGAnI*xtvBBmWu&XE3(zqq9`j21pC zL0I9ZX7T{#CV-iLLkF+HeP2`G0~itiNpH}$M9?M_JE7%?=+5<%~&PYxqt73eKqogL^MNV{mj{f9MnS+1!V`@}T zKf_0vDDNZ z0#XDj>_&r{+Q6p2k_!^VqL0&kTsq7qd5@I2ZhNX3)9nW*2%wzKz6EMB>ZQD@wNgQ? z%Y2$_?!|nXZN@sg_6YG%14RfbRnl8sScJ*k%EiVbc<1Y5IHo{1DSWVV&l-R4XoQcZ zj&i@tR~SC{yKu`skte0H()QDFU@Z^oZ=>}1FCq}nnKUiWS+`10<+ELgOtGG^jwBGP@G3(MjrUn zB=`a?TrGi>z#}}a;?%$+#F!!qW=wq_L#{5Lr-R`~K|SgM)DaSqJTZXvjvLTX4&usA zR=*D-;TW}GNPAS_lIMV}JazSoE2lma^#g2j_v`uFaDrVXZ>c1);GHvDks=l&&jU4z zPmX(()2pr%!yX+1uDXB(b44Xz)gUX1@3(4RLSGhsFtcAx?7p?7PG&)Y3L|#=N}tb= za4el{@S{fP{no7TI$k1!a?Ai8>>y98eo48(nDux-+SXhpAR@LVjP{kQRza)LWPaH- zHm)FQ9e<8!RD+-+>Lu}U2TN>s48B`CXQ0qg=^JlRk*m*!dE*SMbx;yN@6;p8C}|Zv zd50AH%~$ZlUBeZWM=ss0%WR2JT9S$Fd3-NO{PpxumzJVdT*#%- z-oPu;_|6dEMM}t%rW;k@_*(I&HmH|_iW}xxrm$lKM$ZX4 z1;%ehG~Vh~t`~F)agcs*?O|;Vmy)!yEX{NH`gFgxGa1!8N)WSIHRb!%RrOIMi(D-Z zR1>TH^3$Y^TC3pqXOog~4B@XMuo*a-Y%NYf=cOd(y{B|X!`mtL9t-TU-a<@){?0Wu zm4nq%sW9t`lcU6?&u>2pr}_3$Gm)LmzdYnW$k502D`#~qppz>c}18))jP^@{YT(ImbhQ`!puL1Ag*3;gB z=CQ-~eFa(5z{SOUJ;1|VemAVNgzB%?Y&{+PAdhT{97q79uC8Hq8SOf*WF96dJP^qa zKe!EdS$fN0m8EEWW2Ko1&l~AmFabhE`m#$gwV1++;3&BdiqlXm$S>{}KO=rCty?1h z1~R?z_F!Lo_=lNq4G?S~57UWemMvLXNhEv!NKsj3P&-6my}tJF_*z1&IK)=V=2AGU zp7D_yi>&f&(v1?C-3m;dTqP4vCYjX`@<`S;AyYJT2n%zLYE;BDnh z;(fJCPM`o6Yybo;eZ^xzngGirqGYn19o7pg>)kF*EpmLIIeY;gEoZf2L}AL!ydTCW zKI}c_NQn(7fuUghU@3a|Bs+}~5&UG=iV~(ZIv#ZV^VWT=8QWb9p2XZUg`)NhhiNe3 zpUdH`LthX@V_1}Va6t>cq}Zt6Fl3Q^j{k3@Fih*})R-r0JGc-DSHqZm zzao`l{i<>*lz)`hoq*F&mb6>oCPL_5F>H%yB{IdWWo<|Vjp4fNmyHDXDwBhry4Wt1$CsWi@wv40&*?n_bv2dkd_$ZrUpip`7_JPypcWDBhbxEn3k*J-G-LOI^x zD?%@Vw)BU<8Kku z8rwbld-BCQ9rCH5!>&ds&mh};i5z5FGj z1M0Sc*kWE8^Bqn6l(}#I6+w5+szg2LwO#n%<1~M|*Xp#iP4=yCbqLg(h_ptCS%Q6{ zF`HaDqqJBbOn>dpGb`N2@b@gz!Mf6=m-*A%B6lL>$*4X7hH^6rvn#oW$x1H#ToszA zJ49{vpuH8Y`a0Qzy-6`NBy#u~R-qDA%EU1ICuJ~{Nhqr7noKoQ+*Qn=a>kD`;Mvyp#C)@LXG z4i(Nm{yS0lm-J6&Zgsbyt6jJG(^*ViLZSZPORtT(-A>VIu||dCD5o`UUBk1AEk?ah zOZ{nQGMS&Pt+!6ZUR6sy*nfZ1eRq+(^ZCI1S6F=Ew@(+{!$N)!c$O6@oa}7~wT{e7 zIDZnG;=Xf&>=K!?EDwf$^{o9%hYQ`gSkc}|6lyl0-xBtpL;VyETR};fg*LdH)T=!H z{Jpv6D{I8YDb>4{tji`LcaAVmYp&E(b>(ZbP5IZ(@UMz}rJ+5Nl}rEnzGO~e&426% z%TlVkXDw?DoA%rPrjzzquO2^a<5yqeEj6bbOXs#Zp=AH}C|>3H*!BCz{4ba6w&zL; zsgEy2odpW7f6fSg_S38O@9}d<@A#~H0@c}Wj=T4D+WI%^m!eeXuGE}uX(om*c;^D| z@U=7}cK=E|d5~=noUl%j7Ub5RXuecM$d&+mYij*+Z9N#ap{&m62Zc@yN!vF6E zn?RUIO-uhIV)X*hc2~z!^6|g?;GwhQ*Zd21-}dk8wAyLY{P+6rg5A-+nDKAcFV;&A zljgwUSe7o?t!v#qYB)H4{tsB&>#NVaWUZEH1H@-{K=ED>&1RF(5Rufje!mbJziQK9 zP4U(>C+UgHoE&!*R#0w(oFD9`#G2$^DTiJ`MCcb?vl&JHdY;h}%ZGPV3qAVuE=Jb8 z)9VL)Gv^CGg%wref+NF`(yr7kdcGkmvBxd@0lNWB!F5-9=AVXa*ZZ&Kq!w}K z^-JWtALpc{c8)oE;4vHuUc+TF)yfg4GHOlazEEubkf#KS$MM`Bz(c#;B;)KW!ZET^U@?EcbKqr=hQ2ouwLv$+ksjWb`xqSu~f zEF8w4`Xz*n*dFEm?VOV}TFdF&tg7#AH@AorwbDd}2N5S{*0V6m1rU7^O z{eAwyXDw$G>vla_zyVaFQ%vkQ(4^hOE?pAko z`iZx%)r9VTmt9aXPKjr;azGY8T~X=e6t#N#ek`BOYIU~s)(T&koAslS{pc<)<#9`e zpPJe^LRJAOj;mkO*-WR!fS)vF=Rdndr>gUV^8(gX6eemd;5@m<`uB(UoLh$Ndqvz4R)O!W z(F*r){?NrJSMp$0hSgr_rbk88-vI5v6tD4-?7dxLyr6TxrbOK@)AqgH%GyaW=Me$t zmn;$;8-mgi%%dVLsq_8qdOb=tmJ z%x3zc6zCcEWiy@a=u&&9kVLs_DL|X=!e&~AXj|Tth=h-eIk&LHl#oPSiFxiWN?v0M zDslYacW=Bq`)2m9qR#s3M^iz&GAk`)i3ngR4LjvlRKgB(c2FhvjRe}rD7XFcc+Lfb z>Q=Jp+o?C=b<>th1{nhLG3|BQz9|x=diY7tP`5zbu8spJ}K4P(92^VeUa9=^ohXkk z|7f~;tK&wO-)^X%lxBCgT$aiVvizB8YVe>{?r6~$b%A3DZaIm)aV`omF&R$G=AGiWCzRdd z_}V!>B(Y*JG3`69qeJ}`v4`;dn+vs7rCC+SbK0LDAWy9wBMLKu&GVbckvWWOjeNE-fBm={+MyGwHZz1B6@A(Y=jo!+N6_g_FE zv-Fijuqv}sXldPfX(pB36(B06-+M6Rh-yFWs>iv+0Nxe7(68Vit;&>uwqm6CJ=TWz zS=7Vstt<*1twKbv?bsaRe`DrONEPR0G)nXS&coe8Hakxp?j|zK{=&1dIBNNCMK!|; ziYjLI=Is3W@qJpP@}^cn@~m4n`uauK-Se0}O_I=(B*df82N7~~!^f;GdgD0-*OzEb z>z&v_E}FNA7QECY9ZLda?OkDEq9EIu3TZ9kAG*{$hysyaoBw^TdZR5CdG*tLLY~|= zUNLmnLl2^DkQ8P#L{AOn44>L_SW^~nXO|}~9M$HekySipPVAy`0B@@E@MY6p~O5brbJ3ZMl zpXO*w+b?xvZ~2w(jtJ-|sa_I_pL3}k<|!>drG{p zQnA_k9G|_TW;YLc%%w|yN|8azqS9Q_zl6CcX>9Y8`aHxum(R+K&Eo-OEMbXP=cZ5g zIei23S3)6jDZF{9Iy{l^HTM#P83dg0j3CTQTyc_n0maD?KP*Qm*e&J_3@6Kx|Go^P zj(HOu2$AZioZ@UJX=pYimBbHFctn+eUOsqV2De>eG>9j_VwBP@Wge1;h+7tqsqif-b(U^ zfo&ts>4DlZNhW6b-!4@>d0gO}euZKEF=g`KlSMW%zJ~hgwCUv+og!Cq&}RZ;L$s9-K?Ze>Qx)^*%2KVdZ->ldFBIK;DzM))Vcvyal;cu#n_l zwR@NsbH{w=@ls6~4k>slmU%s&Z&c*!^Zb)n)!t7gC~jHACB40!U)1$OU)cP^{)dah zSA;n7uLhr;vh}Ju(f(-8_Ja1^O!juKNtJWN4X5vgRrgF*H|L5&zR{Uweb{r6dyzle z<9Tr9ek4)3z29chCN@jx1Gmv`K<|_|JYUoFB|LYv754OLxkx%L2&IiBKO;k55@DJV zgY8RwIyEUy!p`aOPI^v_Bo;!KU^EMXwx4K2Sv;Q?^QP`d_l`$>;!n|93vC*A;-&P2 zWsz&oB{DCxnD+>uBc8ZC{!m2_GuM7pT#0Do-xC=~_IYl|9F{k%>vYRkB2%vAutAuC zNb#=CzY1Q36nA74mv3oSlQdoraS_;C2vI+vgkxAl=NiVct`T1xdMbHvc#X`^3VxL~ zg$jF|hNx#{8Qv!5$uugP+2^~<)t?tn$QO#4V$b(z;pjzkDTOaxU3p9qBy#usbKjEJ z5$_|)nXGgQn5BIZi76Ym#eG^Tr);^E9oV)UU0r(%)O#MMN&g2Em(-zdM=doBsk>25M}8@iq0xqbBG#_79Sx|ZaU)wZjFl|HxfJr4}}qAzIWe)?bnYPp$C`T z6L@wnL}$C@KkqYDf*mjHiht1QbtjIUN1<^LLCK#7^;NpOr+0;776zls3eCz2o8B)|yfGjv`c5T2CDM#hl#Q{lw6(95M5*Bh&xfbX>N9t;}%YUcSAihcF}kwOF+qHUSu#?zBTVXM>Rru>BWJ+OzA`TNAIwdBLSbt zztQ4G$v*M@GJ7E-6|I%{B>|cV6NoYCo&jQGi>-%gi|ITlbdk# z$Xmt#Xv~|rHCpHMPat*9xmV|encct~n$@s>wb;dr$RE^;IimK;h}+LHFIw8vueI(P z*E#MT0^n2R|JMdZ8oYs z4;r^TTOmJ}{{(Sw4dA?A;Kkp0qTgKe(F!}FlCFMO?r0_sfQ6|R%`Ge7l|1@ssR>nH2WUJpe-Kx4+RZUE+~$Xz=pCP$BSvyY*Ug*M8I|2KcN-bCnq{T>Z>fO2FgPxrqWI zfvA?aMAxMt?^dp4ZlcuOKUYt*x9~=g_tMHdi5X0fRn6StfAD#Yno*)vjrHG#hy%|6 z$|Gj5r&E8^s)od}fHj+;_F2jVx&xAz!}Z`$-JE)SaMQzy8he|-6bsG= zk><)L4#2(2)1o!z?5@MNHGIEli}jel5kGT#zdM%jJ&hWZJ?GlF_hR7V<4jYIb*4*s)uH0FQ^f3Cp5X}l2Ggqct-@ie(iT|whRRZ_#I6%J2*^JA>z1O z;$Z18%d*IQt~s!^ks0*{Q}s&wriaqfTGC`jSZifZD?j;#EcW5E;o~}}QPnP_*}AbS z;<}g8(!y*D;CHtCItn7)cD*{cyaHS%HpxaW$)D%>nLRoZm3V7kY2S#P82EdE*`wzS z9~$DM1td;ud zyN%+hxs8LnM_N;+8+}uAhU*ST35lFUg;T9-eUsF6t&!V@7k(9%+<<6^y*1|QU{QSq z^|cJ((PmL)rG9G}Fi!*@c;8!AkjK66)b2BS->TjJZ1S^oe2pdJr};b`-}}H?iMA0} zzW|wH7G$tSjOnY=@KZ6}Yuf2_X>%y^8;vxkH&omz9)x(I{K(Nd%v8b2p$r*##|1>z z&T%j0M>|Mh$Xf~zzblP1=Y?mcDWCL*&`DmHIt?&60)NZ<{lKWyYD7h6#dweIX#oEy zU0NEY$&G(SE9Zr?_E{ditJ7&Q7s;PUq@z4|=6yv0`NHOh$<1KM*3?V2DZ!ej3W!ns zY@_+j<`kYZ>BMehqEBMczzdB-mWzhQ?=Idmp833iNH4ioD}H5WZ2z95etL4E*pnCL z*@<7eeox^eh=wgIAw6`TI7GLkwpdzL=(Ff3{RL`H*2&U2uALKHHa(Y+ud6P<`|X{5 z{DP%Mx21$-N_`6Rz{T1-x!P0Vz;4#1-zQ}iw|uxE7FJy0F_HA{$))7VJDp$$Z1r9b zZi{wz#X6Pln>aYWo%vD^>(4B`}^$`a@gUY;)FqWi*i`8LlN!7vFZR^ul8c&*!z|;cJMfup zMtOPo-{O#4AGkM#H_S5M(D!I;Q7AO~J3coHVl6#5NG3+_EjN{QGS^s46!5HjW;#l` zoZk0K{oIqxy)N^RXMkZ(?xFahPg&+7nLLtgEBml=hCe**Vk)Z4=JAT`EZyDrpO>Cq zK6v{6Rx=}|1bhVMFf-6T_Nq&(iq@TDE$eYCs>G&k`S)y0c+5bPivb!yD%4ClK=TwY`6fTVIrC7MsmsgLiedp z&pT9mLwfMv9hQrBf@V6^9XsPHBl`|{3pHXc)fTMJMPECj@-ppnlID4uAqwKCiS`90 z%E8r5yE3%h{KJSCmGrJIlBUX)-Xl#NW7w9wb4Adxq(jye((}zqd?#IOM{4&^!r>#G zt%KSylIHjIqr1JZ&x)DcOTutpcrVNVdWFO%zZMy+)4Rkij2@D7qbqkH_Q zE2i;%F*smU5{ydA%uV<;u6;>;dBBf*$#x-W|IwtA{6oKehcp`lTw2%eO~mNg0rMx` zT0S++Vil3#>YqJt9bP%$4QvNrXa7S+Czq)|OkFHih`%XYrA2xwWe)FwN$ngQ;v>rP zY-=p~sv6;!+68afpuR8gypDCGkYCC0&_;c;$zG{gp$k;}xh%Z&kI6uTL?N%w@(%{@ zhPezld3mITM3!+cdi>y?Kcs#NrNeh^my~Obw>TbC;AL;XyI`Ez3v(Bu4&Zw9lpV|G z<|vsBV8m^?zA`Z?dFT}UTkx%L+yb^@xx*{W`Umxwp+}du5JO$tgr)jSsRq0q1W0gP z)|-)xiZRH_$78g9`c?0*sH=ikA21ApAZspXV1y+c4 zbb;TDpS}ktKW&s426B`&k2kmFM4v|ZswYN&w_0EDcoC2f{t*gf&(9pr z#i%GYM{H{vNKT*-TQ4oW9{6*wN&_5S&d1)$i*f#<;wKx9e+JZ>GuxvEDyaPqu~3K7_Zz zUP2rDbcm8}hTgVSx_A2ddg%m$7Nf!OtYDAxs3;osc<)Wd(H z5nGy-%PAh%G_*lCD%9rwL(vhi%SgU4Nwc?~dg*CYo@a$Nzn&B`ykT3H;Wkb+3NI@R z|D!)eRtQVWve{2~_??|yDDtV^>NZ3!VL4I8&-zDAVV~M%sSiY3{)E@P-t6ky@9ZZ_ z8@W-_;r$UCPjgg`NZLDh@eCWQ>PME^9BkjeX&KPkYCWAEzCZAZ&?EH=R}K@3YL z7OCByL4)vJYxdt~rkh=}rOu&V+pypQxkqL2eGOf!nhEX_WNeZ!`g}QVLJJ z_YD?C7#8inV|TV?D&0kC7M=oZ7Iv-urBXo6IJMQjvjULW}{HNHdjBtI)2b8I7#03 zNYr|I@mRW3EQ6YCn`kQUkT|E;c%1_NS^v_tJ1Pb3UrOpu$v%hLMC$ETLGFiO(7ShCx9jgcY(PtYqN17+Ugii0 zW{&3moi*vZk50%QJyLiJ(;iTpDyR;5PQQ}rkbSQVHH>7^`44Va98&+AyVM9Ts|B|$ z4h9dVDj89sTUoHreiy=BZ1m7~QfK6;vD!XQLgnHfnJqzORdHF({+XWjF68cK0F>tv z3_|sfygS6m-%(W=FM8)P?P95Q8U{6f&h8dVxoz!kJCtNRcUly(%Raw7W}($1cKAE~ z_3Gx`XZo6VclD(PcJ)v{=EclN2iSNcpFr)YFNPya9Irp$fa~fzcoXmH=*t%-)$rsO z_1&vrQ3E5_MEFay_lDg=gkO~w>g=WMv{L6fmE!ua) zsCD3Wz|6XH>_iT%YSW%-K{Q;3KhPH~CvC$%|B%_=!WzhX0qKW#wWo#~A1yn$X0Rq4 z_F&aDv-YB4#h#~niMXY0SUxg>hHDPT}FZ~pMugCdZ$nl4$ z$>h9sNO?I*6N%b1GF|_%5@ek%?|U4oIq;d7`v5Ps`%iTF^Qx?0uu?iM0^46VZu2&n zC3T|@I*WT5l(JuWWUslEdh|*YDou)pHdgkR*JHkaTw6d0ZatZbXw>}Pypjn%_wOh} zqle$DI|yd%QzjMgELWj;GZwQC{4j{W%VW}-E}xRJdGZT%#&q|-iCZ#7!>3d&LpFkS zMj2~yeUkl#!_DZQdbyN$8*8hrN&{qj+_2GqQztLn;xF`W41Y2OiEW9xf&SLIWN z7nznnTAfXXp&uwoU}2?Hf^0$ zGePdqxF@{D*4pSDFPxHnb*v9vGzbQb9CwL(m9;vd)fS>tG1Vx!k#BQ?cw~d~lCR_c zsY6bFxr6qrgTI-~)FE6(FR4QI@dTd&-`eJ5{IJ6CSlG-78vEzb<<+FnH>h2id-Y>N zO}q8U5gV~<5Uax*aS0q144Os0>tom4eNl3${k3+(IMy-hgI~X=j_|AdZv;p`9h5f? zBWuT&bOLV-m|YlBg7*Wp3nm(Y|Cf)=+!4GI|ePPpMif+e=v!KE;@uE|dtgUT@r~1W(?H+TJ%y z-$55v!+N!33v@K=)2b8l$T&<0zRYxUD!6{q_MY-h1t{m?nxNYf#J{?)-A!v3;yle} zKlQSPZre&@wBvcIj^>}58rx?(=+?dy8U-2Xq5lSzu@h;7tpJCy)gbQuO~YY40>`a` zy%FRR_#cl41kCP&SL2WnRax4lzpDZr*WRiBww>EXs|Q1`cszN~o}w4NzAMZZGEUk4LY!)hv0A6t@8^8m++7nl_k zIf6u6`o>$7qZLhxL~MAWl)DQV=1W4z(I`^2&!7<1mhGDqw>P6v-q91g=z0%bt3!v; zsO&|wFQG)hMJLkcIQ1Rv)}M`?VI7k@Z{p>A5QNy(1cVNHWJ^YCQ#n`|>HC5uSqiwd zs@BKL8ua$9g+8@IWc+ju|5WG!8DGaRQnq3E6PU)_$-9fGS^{3izwxJ1i_rfo>YEUA z^gA2L3%HLMPFJ3N889@)^_Rg}Fse}b^1HL#^+G~aHZ6I0Bm6Y|NaeRIX5i1|8-^p? zz}~$)i?aB-*z1q&Rq1DEn5=DDS3k_fLs$UVX{!-s;g44Ij&~$i zcq0lJoDL=rry>5^|M{tZka1{bdeLXAk?mx5dX4*NIO;u&xC@~OYu7v`voTtgS$Ey@ zIi~`N)I;M2Nq z*0l#_`$_S%ArnQIogv}@!gZX@;bX>QO+QoCk2;E)No9J!V7wU}`$C&1;IgR~CUNG* zPJJ3P5ZH!E!nfvAXkRQz>sO|LpqAF7U)219IJcR|DcEe(I~e5>MBl>f zz~ktTp*rjfs63Cz5N-Xqp+ms>Z&gnbgyu23YQJ!YR;YE23sawftGdDhNZi}TtWsc+ zNm7EVJC600$vO`|31=Q8$_>j;)s}s7G1Qv{QKE)mT$*T=p&V*Pk{lV9m zY^;3rKRYOF_+F?E!C-4)HHL6sFxU|#yNkvM@h{VSOu(!;jO~okna51t7ZJO#lb)_G zxL^2WNqnF>S;6d13DSe5ZB>xN1kQ#vkq`OTb} zvv7i7euN*MEHpH3X*>|YC$SId)wty!;?wjYFK~`{!eP|0*TR4f@HD0oYB;;00r4w3 zEBM^@-p4o{P5ZX^%dPaS}0QE_UN@vM#RO@|3ut^@S0&O$bbVO zs(0w$VkuoqEk-maT#}VJTG9+46FCoid^=4BBYCIqdVmJrTeDPgg!U7ac_Ucpi+F3^ z8*^O?!5DYlsM{^rugM^2`ZH6Xg>S{%aOOTs-wH+?GYom6Xs;Ck{+R{aioll5=@QQe z%Q!1ip2lP3q`dzoqcK_U9F(qW(%aLDt@42^Vj8RwY^z@kS=I>l6CH^GCT{AVx{#nk z_z4@mP`TNxX&j}tI1wnSIMd|0akN`0?Vvsy|7Gkkm~9`HBTnEezilgsXsB@!kDuh9 zy4X48;Z&fbM(aC4s$4IkR(ZM(y*)bDesS-5aPehD%IZa+LX>!e@-nyd+iU7jrNI7Cz);oc*8Uy8u<&GUhfI`!YM2 zkIc^GCe(NX(5_uzluUtBmGQIuJBb0wXjdv4wZh>$6D5e>Axzg;*Dih81CyVnq%9BY zi=}aCAz(yDRE<{*2%2Gbr;}=AkdAU_JXQ$wCE<|O>#zcW-??2qXSq2&tt8wR<2UGG zzasYtdB>@2&qezh?3Z{}^Qanv>YX|>Q5S>V6S(J-3x{skq&cK)P=&SsA$P-A3*bIU zz8!>fhkX4Ah`%rIOEDt7g$8?KJB|N-|3?xd%mLkP_Yq5smtshuXfz{bhCA>VFzTUDybiM+DsorXiN=t@)-)>dR0!a zpf_Q1D#Fw&NU+=`$+!m6Z%2}CzBP|>%+Nh^Sf?}>vCA-@`Omq|k1@cK zduN-}P7)#0K}S$&_EA?@`U)g^exkpkivb3^SC#AY68X(#{oX_s99Wl;nopAwA_MW2 z68qcv73*Q%JG2*1&@|?qqm*#gOeh`f4aS!7mv(a{y;GMTblX@euX#7hJlAm1H5_9}=`V^Zm-`)Ec9Q;{dCCTJ&>jKxXO@3q@kzDq$ z`xp!6rTvAm4f3_gJ;+NqwEI`~%pOQmQLh(`y5#cG_8$Q(wQejw%5^*{6j*w`@C0VX zEfb!wWOK%Hc>6!y(HDdqULTK3OJEDcVeYQ|xj&SI1=tF*1FT#8!7oSa`Tk!4+tc~T zo&H}Hj1+Kd1R}TB)Mm3o0#BQdNUkOeukJ)!_y(L@0cL|9lV}wN zrB(@bu`yMh9ac>>g1xQEQOFx<-TYR1dv%dNNld_mrTCgLzhTYa zFmjGj5&)5PTQHHObS@SIi-LP0{k(wf3=YX?5-ft(qz4bG2@h6ot4*6qJG3quY+9oI znp~{^YVrei*6*S~32P=8J>TQt2T5I?&PEQpDO%36FN>e^=;D9nieLQ&djhDBOsRIg zph1qa;EdKG{Mu%K3O(kaNXQYl@+ARincPj=z+R>OJ64Iuu%=5&uJz@rs?jD}8NASOem z4?&&4+c@Scl~W+#0deZaV%g)EVSu{iT$C{)Sftrsbt=R9iMA#%iZkkGb_y*%!k54t zB}n7a z54ru77nuJ57?rznBIk~zW|P{yZn57 zMwx%L0nmgoJSo`0(+_k1L-}DSwv>z)x|v}P>JajOcPOTMd2bxkAD}f}(B<03FVr&v zD=C_Me7#De|IX&=ClkQM2D1Rs0Q#kzUWT8C2nGB?h+_Z%1XFh^5Rz#LSsgf5uYh@;+{0_ozOG~mFwBQb z`hV!xHSSs}G{NVE#PmD`C14A~lJ)t#R6ZjySatv%E68ihLcmp|3f#1fpByrJLlNw& z5l-bAn$7b1%m{h})oK@`)8k;7dCr$1XEx&bSIOwV{f+z2#1-g4e-3GnBqYYBbcq_a zE!Xl%jLCI`cJ7&fBIg4gKe}qrJ2e6E2!U!t=B+ zSI=Nh$GA6I_q0JXxiI6KF*AkFd&uiytRHu8nadh0>}vcTBS{Z9jjI3^Kh?=%2A< zY~gMhAS1|!Hv-r>#k2#25lze=2~R;tTe)F@~W+=78Lb~ z$7o@F4wJoJ%Z$$J^nc&P0UtH^!DF2<%Vy295QOoYf(0ac0#lACA6kq?B~x;qRTBYR zx6X1&lFLR=cMgsXU*by2^JRcKZ`|w(V_i%&`Yq0bTuwFGJVx8EhrUI>P*ZjFH$FtPVRtLt!jxTW-N43v5Nn zJ`MDp{yYR~Yrs2HI?s}A-uMut&&KS<>Rw%}eH$k$G*~CSvKua_lj{sww?$*!xP5X( z7XBA!q+4^wccK@3Ht*kyU|UUEd%pJuft)O*tzN_WDZGy0C3%hZdkr0iVJ{!@&2hnC zNU?g)4G9WgNxBzx@cE(GG?yeUFy8ntLU`b$Azy~h^6A*1f(*!22EUwNQvLqhcKs$m zw|_+nvtU9-0*o>UH^gKDMir2{#V;t~$pCRGHtdoFUQMJ}Ol30fGm4V{-Bn zEE#ZYwNAT^L+tB4tSWZ2o@yJ#6Xb1mIH8-x*wH+`;CG*$F3{mwzHG&y@)O`CBofucnRG2^J zF6YYR_$das2kNKGOQikA_0rsp1q>F}6Hw`f-1TS{$A360v6Yf8z>1MlL@`jRI(&x0 zaQXSAmyq434}ObS0K`?_6h6VQ#SM>fj!+i}xLV|wY6A@?i$TRu+(pKfzG)>8R<6uH zfKr6f(fTlfs)zA)GX@kMOyo;qFgQ6ji^F#p-9d_Z{D zWJHcnE=wD_y~>GTwtr@{z%2nQ4Ri3Rts|_qm(eNQh880YT7+!C@Rhrhg8^~9I{#L} zKYoCDWGGWqT?>4t6lXjJ5KsHKS!wE0&CBJL zs#nPQ39n0uJO@HTzjD2rpcKYW&bn?^3yK<%+hidz;XlXMq588$H{^-Qoxk|$d>Xa^ zN4C{?!m|7Y1b|H7+hjQNW~%-kK|c5KW9`>^dI!`6o6_8MB0^&zq=-vQpIyOv?FRFEYVkXuA$0?9Nib zc#m2C?{?|%!Zf{b+kq-Q(d`9u=PiJHF>I-X>)Xx&UUhKf;H^<|df+7ea6SmAf%t<$QHU zAE9erL{~aY2=x%+S>!pZ$A9>dn-c+8C)L3K1x8Z4E;m8d&Y|eDGKfTW_(dz4TC-Tp{v|NAk;4^(LbVpPejp>cetH9|15try@8zkeGzsW zK!A?HrfIO>AX=$_M*o}PK%E!a3b0K)9bS^uscTOQm1al-z}Q4MU|Ky7HnO{I!U0&X z{=5ja?WBOrOalOTzdJh`!+sewUwe7x_L%*v^`k&nR5){lkdfj9YU9|fbw-_%sZCqFc&T1w z-pP;0a(a9Lt??C&y8^gG(A4v-7i09_zw*_SDWkUJgoiLK$7*~A+;gUzYNr4k~Av}n9x2f99>H?#p-SR@}BS3h7T&b~*yn)M4b+Z@;| zWO4lW0mi;n(?z9@doZ6Sq*C%NsQb&}ZouHj6TS-e+ns=1;$;BZ+;0OP{6tG+4hqk? zFc;5OI;^0i2sacQ4l8`G!mgGTUg*RFI?qc8KvHdG-C@9D{i?J92b{0t{KwO8b=GqE zy{?qR1?{fN`8Kg$yAzfvn)NFtSVCI4s2kj7 zZ++V|aeGE9+hJJf-r@^BBw)%}_YRwn@B%Kzc2WdFHQ)FU%<9nMo2+ucNa0j~>^o$e z_27Nb(9-CBVr#pAfg1O!n&Nl}@4Z;A0QzCsl^g3K#sO=lW8Ql4Sr8e%A?A}C4Wqyz zXk?ItZ@24Lb>@t^3N?PTfUz;OJs)F6E{_k{!6Vu5nc%T6rO>|24Q}ZiZR4Un_CtAB zE^8~^E{7%ot?s*^r}0YZxa-7t%6&A-+V#y+rG%ADu!q=+tUU5l{{XT=MQM<&N;lL3Y0HjXN`C=LeAp62^*QJ@;r z!t6AMuK5oJ+&4tpb3eaXJop-uW$_UQ>YPS(9&neUBSc&^bR;VFQ%x@6dS554%>cKR zxbeDHa1XX{+u{n(9)@lI%6yX=O6Q}ahkap}uzUI8ndn67(w_kO8F9RA!4knbZan6p z*mISlq);oW6y>YSN`T*tR7g}Nu^koflulNj4&DPmqS|WL;Ro!rd*cE(8qg^Z2*L)C zjnyb~75bx|Ny@QDn*JTko(6aNQc_|{YZ?f3pfQyIb*}4_;xXF?g|~-Eo4p*ew`~nI>zVWP&`Id7|>0S zH&=&g*C>XWj}luHK8V`Ne;TANOSAd=CWLK_+G^z^gN9~frO(gpH`scQ|Dd9OZYWIj zk(1HDlJlfbgU!3=^1kqOb=adv`uIxRoZ?UX-kJgJK(hQ!b`iY`JNWAPMv3r{aH2Gj zw@DAWti`3b@ORE`TLdIJ0A*tmFL*tsKhmQsSFWW#SxgzG1Zn8@a6jB;lzGfi$$=a8 z>z+tR#6ysg|3^e%{A()*MueE9=6q*EOxC7ynalBYSQ*2UQAAgTzaEJK(PVw0HV!17 zvcjRAOu*7sZCOBz+n#&)JS_m%ZsCybsVHogKH$oqM6(PqFns751)cv;sW?IMRkqin z=?Bp)7vm`&5D(vC%R1o}R9j0mbfZn&pcn7Zkn6w)rB%Rv_xPWV)`s&2Fsrh(>*|1o zfEYRPZJQJ|3{NuZy{>nzUKZ{C=9~F)`UidaQ)~%`a&OUaTMS#y2kyiFj!N#pSS8&u z&5IyG0vUnGj`jlOU|Y8kSdV)-8eQ!iX1gDTuj5M6U$`v+@uL3sL9Mp_4_9uW`Kf;K zMbV|g{GCZ2kc_W32ntc{A^Tb=UsAnrV*71RSUqGGqEe?vm<)2#L46K8sk`3W(F%4X zA1Bc^{ifhU`eCUzx>5y(OafyWqwDw^P<(>Binmn5{)5SCTlSOh_)DwYBVNah6n3sm zYkHTYJ>%<2!20d~fLaBy?PvD=PXyHS4?d0ASFXq)_kQd(g{Y9BH+XBBZ*xK-j-^Z=L5H`-tJz87N|8a4T5`a!?GP{5&ba9 z-OE4YAoH#D5(p0bjk3t>ze5nv99^E%XDnXp$#YJ`0<;MG{r0TZv7QBhKE3LodYKBy zc4l>nA>5W2C{X^PN*?uX4(4O>$GE}B8xoL(`q!$CRLF}nbE@JLNXAT7Rc=A>)^afI z?N!1bP#>(wOflwUFpCPup!Z)%&45lHTtzL9g6c(70(3SWThhhZFnM4)wf{=JicXc_ zhZ&ar!hGxnpMrVSAq|SCB0|!3c_?p^@J&u5T@y|O-Hwp zhz-1Xj|;aiMoq)XW!(g=J~j{QqyYD(?+J0EF(2K%?;d#~z6rGc_-cc+Q@=M8i+`XY zmMSC&lUDAPIFdn3$I++4xxtk3v7VZ`m+&iK*T>p46RE5B{Pz}mqI%-<`mCs+8xO*3 zbP}mW5;LNw?(=B(L`Q=Aw~$O}&y4P<_fpC$Xg>$rrMm$Bqf#^B^d+m@iSDGM4-Z zrN@Zb#TZZIyel>|=Ptq`+*M86_wh3xfi2&a*lPrfm7i}~&O>CK3aRi#&&oM4S?(VUo1unc4bw$&UOu^F=rL8LK3{3TS}{s8NxJs;|k zr5663xVwda@OXxTJw+11xJ*!$%~N_gu$0`;+QQ2}^|zf3EgcXetF1EofS>=a_Ar%d z9voWu?ukYdotmb7qDh!cF#+GCcxkvtN8(-coc(pgHGC%fJNE2|KvDME9j54ltguOM z!khy)+d(lt;7ghjJ@;qKMecTtX&3zrd*AOVA><){M=%3~f~Qrx$`2#T4~E)sE{ZcX zWI2^-sv?6a^@gBjgc#p7B|?pClG@=VrQSp%Rl<$Q>O2_L*81OZFQDK#&*kJQI>soy z%EqbTw@RR=7vIB7S*g2tY+X&te{<7?2)ZExp-joj6egZNMFmgM_z2jomXS(;+X*k&SM;v=#>H|WJv)j6Q@W}lqVHgOs zJ96}rRRrrIO*Z*5>tf66)*n0qRF~D=)|b$J;W60@-V**^eF&1Dwcz`-LHqttCdh)K zGg%JWmtv@WSqf^kaD^@WJd{TF!h2GsJhU@)>eBr?4MlPX6W{op*%iYc@ANNmHPU3k zq8uMK%q4U@qAh)K9~&LXp8RA;rY*F@>+AQ1@KAi2VtR_)MGV{9uc0eaNW>UkBiC5) zPVo(S(@fzbOD?u7(G|OANJjREi22k0h|o~)C6W@dt>*lo;Y&ilPx?1~4vej|YjLbS zILCZxb>oI)a-6FrX5`M3QjI2hYiko~@o`5s?2E_PdWGO2l6CFcuR#Ns1Q8^H+oEQ* zRpCSE4HGZY2se>+6%u%KU730aYc{Cj;+9RolXT<305uPd1pu|MXDX?b#o!`tNK;2i_&IvblLf zW;btG|Ix|5PaTH+#5&RK+QU81#3WhLgHWMIur&tzL;V|4Ib;+GH*Rtz)SX`9V#3OB z%u_>unX5cq30PvxK^2T}G5zlLSPsBesy=R}!x+hm?=2Ru9ZlISncPF}%6kpU>=CSo z|Ee4o5@H+{uUFC4KIC`vIag2rke_7&7laK@>`&je#3+V(J>%4{p@Od8?ZR*-wA@$o zXAOSjjG!V|a7(6&zw{aSwHM=3f{ygIk|>SE8-DV7^i?|q!T&JLjO_F^(lx>|)Ws%k z3gW||{pDSk?UfbSosEI)&cm11JlOgcN^*l7JM-k{yq7Pj4yFnzNZ7+{2c4Ze#9FMP zoSe8%M4jfu)^GoggI6uA1KnQ?9b}#CT*i~wOnxF$)#PBZhV8#Ltf<(diq=(>2!o98 zYve2~J|I)IzhJAJIm2Mf24h?qkxV&&VgGDz>9RozjbBNUYoK3OPm0$>HkFOhXC4`h zCI2~+SZx5ZCuJHuJO;{y2$c5^>^-I;*yJ5na>_XSYIkrRU(15@EdvD1zOGesC_iA$ zN_pB;&B>R-^XNoD(bN5rYO|9n)te}K@dJZ?g~}eU#7LL?W%~|8b*~UNwS|w+=r77P zB^e08@Nkn*Jr%+#Ym@Y$z4ZOq9;F0qS;MHR=Da~~vZ`&xl|ZcYeI)cr0CvQ7s#W5- znZTOuSNrR@{HWcMig%_B^!#|?HA^byJK1mGE%f|p9EQAv>DTf)K2lBel;+Od!Pd8zUjX=&96!5lS@N1;pYZ@tU~)+~M5xK?w%SARN4 zsqM)5R^7;v$=#WgTs?%unCCmWy3dk(s(R06FUtpj5v{tYy|+mOwxGW1PVXg^13JNd9SWZ24!y=f>XuzDy(pC1IAx#|#& zs*+;2EAfKS9_vJ~PxbPUP<%x4jU_Y7IkLGg-6MPU23p^%`KfMmBRIv3)2NN)}d3G2K`2Y^reuxK10! z4^?9Md^LZ@Wt^YGwI|12-m+=6wY}J}uf6{h4WW(#tGexobaf4zwhyubx3F*27Wxe|81~JMSa;NqlTe z%b@|NE6uF#2Dy8dlF2Wv9fn#?MU3I!q)(hj$k1(xC%R@=S46ZwrZPNRmr4xCG_3Yi z;`Z_tffM}+|137$x4&xVURtCmg_TTFAJP+gaG^^f0 z&QVsa4D=kH%pKStv>d-GS5)wHBEFs6S+?}x5UkHJaN4N+BQZV4cJ$3Ejeg^OCZXD$JeuFJkqW0` zdJH0eBnGDhmeYm!N>2^GhnsbKlDVPA@_%e(WfaOhO(q_3`hNW}guFrpjcSPg6>55X zORqW6{P?Ar!17B;zP<&66tme&1I-IL530kRc6XX59!n8Y3_U!JJAPSt8f5O-vEKWT zKl7fnHBh-~kT4mi7t;EuMolW?8MtFw7$_F?GHtS0r{RakKzf7G4z8V#Ys+={S`8sI z$=M>fIp?;#W!XT_kfOXUOtl>n?K;{aH!8&#QIvS4{xl{%=mS};j*m+!oa0nrUw|u@ zRWHHK$kT3uF#^1OPHlk8pwP_{qi`6-7EQGb*?yRM-TuPV4{vS!#9?$gm|37JE%4Kui+_%Xp zVn&j?VJ0HE=Y9=I$u-w748w-pirmVjBod6M~EOw_Sq?5}tO?QX@F^HIMJ3OSYF!88Cu z(w_QkN@ymw?96Na7&Um#9O-u{pvs$W6`NgaaNKMCa^CaJLRt#7H{qubdBG?9PdN)D^&kQCi;pv1hfmy_9fVPr#OgYAIUgh zkWTVk$d`NvQ=9f3C{6=Dl4E$p)W6zS_qM~fVB)>^p@cMc)dy~8jsG2QUU4)Knlh7V z&iFkh?2+vwT4$>Eek-l^F{iYGm%`E~1!u}f0mjC@-4RWpsB@SBUsmGI+4QE!4ouX9 z)cel~ukyRPRj=3fZ6{@XkTmh8g{Nng2f}YErjKy9_Fo>i9{f|vY4xoQjP;G%iH2Rm ztoo!!LoY^q?sXF48th?2vUj)q&?$R7o)k~bZ729g{ar{<{!#l{8nw!{aS;dz>R5LD z2A-8M47+})ZVT9-E4$-w(7I*Sqa2yW2~6T6%l2_D)Wy9^bYv3M^P9WOJ158K`VPo5 z)6Ts`yk8(rnBTOFe)buhc*#vA01IKY{PnM_8^sUX^W2d0Yuj_G{A72Q$xm89DJ!d} zE-GPD`t(#$`+XVdu{pCSyWJPDUg+=o-G+-&EG<$7M{e6mHxjs@t8pbA6Iy{ZAnXC;2sU1+4k^bj2d+hv-lu= zp)Q+%F2_WGUR(RHoRao3oys~qTSxoEx1n)nh7vEAr+3uzcC9F_KIWcL_w$ENxso(k zr(ae(ffIjjTB4mzmC$A*br6WVlfG^E?V=;7qR+eiItsz}dfo##x>G?CRoh9R;iUq$ zkJPH%&9oKCtpnfi%}OYL`Zx&z1ym<10C6selDi%)j6m?&9slF|O^vso<(0-h>~tVr z1*`e!Uo%Rk_#`?N6hPU9T&wcl3&6B@-wZw!VCvkx-1+bplbX*rCnG#IVr$untaR5o z@nL$qt6sO@lr6d6{%i>~)9x%}vl2M8BcNOO##R1-7`N73-WHfjH?vW`WblihMIqNS z?g}H|_)@zE(A%r>QFeKd@REe$0V0g)t^-V<5WettTN0(G1~zJOv27&C@x6x|IO2w~ zS_Zd{yYhM4$|IO!3RPZBxkJLou5>6|a8wB%KO$0Nm#Sy7a~$R>i1UkIMw8NWb5Aw~_D6PA`QIx;$&^-jT`dq24np zCmXixxe$pDq~q;T_;YVBkpTniCI9mIj6hwS!`vyyuxI0!We!In?3q$oMQ0Jc&24` z-0xZ1UpfcY&-%mhR<-k%vy3NNB$sj*o}^7%Exs>@Ce8*{2Cdh-e$x)WM{1wI0Q)(j5MZRvHwO)vQ6Pe($3x?ELH2R98|lXtiZIPEBmAp%yHbAWZu90m!()ci?sbp?}{L_)vDEOK}%3HTj75|b7HA#YMKYM9Zj&3V` z)Fo3TjW}Q7?he0 z8?vj)V6|MlEc0XBkVjcwHS-{6v~{JM<$HF9&jh^3IfUI68T2~$az2xZKmfp-R3lF5|bxO=?Uy^OSjrUW}^RTo6I7}ViYL#x?n-0`D}qpEjjtp_L@Z2EMh6kIN;Y=z zC`qY>1@F>ol|ex?Sx{P07l##9r0?wk!ad-u76D^2pw!|wY zQ2gm>QVt}j;-P)IDIlRjxf4!wIqtpC<0;u5npV#Alt2B;$4dwi1aIK_s>&m1^lvEp zqf^Ptpklv&sZm_|1e&IGl!6{XYx)@?m}r}dlg0T18>iR8&t5_h%2%VB4}|}&mDzi@ z+lh>Sfm;t0|BwTT9%&tM;jwtKt9}f%qC@G6PzG=o8=ip=wO`Y#r-JgdlpB|W!|Qxz z`Vz@w=ko>5qV7en9SZHGnK5U@wh{PwI@19z8A($r$pAKDpKB$CzkC!cOMtoh;Y(>u z{cE3MLv~LTb>l01MBirVJnHY3m-3I)L^E=UCU80x8}`O)AhN9B+c{8Yn*E}PX0}QF zKvpsoPi-N4w+{A%lzZ+vgN0C=f-cv+!o_FnT$jQrkT~;X-z%`DA0Sk4oni1_?(@Ng zG(!7-*!y>+Z(~Ar$2!U1@0M&bh0in>NjQNzG_k*eagaT)9!H$$+W=-L+A;TOj4#KL zu)eU{Rp2`e<(SMJY?8rx(dk(-(M)c}=0p}TQ&^adD`&nG5U=3ZX=JiOv=M!50~*&` zkpHLR;k`n>GZ2Py0$$}D9^=rlo&*Dclgw{~$Dr&M{n=1giQm9Q((Lxo-$k--!D`7% zZ}Wr6%mubDf)5|>R!LrDUn?kA^p;&Ia6U3BLfcw{yf} zZ(|zF3$J5u&y-oxWuH=`7QRNE(g#L;aO8kES@ZCXCvLi?CW^HL!w}k6r1CF9(cU0S zJ%&Q8g*aHS17ab&$efle@Uu(^uIu&fz}Z9GaS?^b#N3L$z$^eL28%YG9NVL$@N!ZW zy=j}1n!oG~Mth|$;HMX=-xmtm8>C9fQmGYV z2n4q@A8@n|3x~9iwg^ffsetdARQL=Mj?@E0%U|?X!Ve`-{v`rKeUD!;O-uZFw-zhnTsA1dYrZ^ORr#DSxM67#jN1uQdTEP{AsD%pLaw)1IqwrU{IZ zv%3hueMd&_H%Hutho{$;>A6LmHVhq+)Ad&w;9tDZhnJ|-L zx0kA|FSi$IMTTHL+kxQ}k(MWD!1xB?Qsh?8zJXIoFOZ*|TkXKw2yHy$8T@ojBU4~F zr;#NL7$2WHMJ=0#DYwR3jyU;>w>|aBt$DmdXAp@tkGHmG7I++(IT4<}|M<5Z_=U!4 zdf?4fP>-YU>t_QWlgpMva2eF(|6#W`cttI2r+J+5uIv!z&YealVt=KKO1At)JKEhY zhDPtH;l%Gqoejr^zZ&fMN?S{+*Aj288oHwm=AA`b^|yo1dO6K}gj5vD^M-+O!rXXG zAwae-n73f2a#%az6kgOm7@zZu5?SCpQ+iO`Lo};&Bb`B9{N^RG#MIb8v)1drL}AaP{!21I zidbe?coln_a_@nh3DL+usQs$~f@RLK_8}3f7>st&r~LqgY+$z!8{t5M=|*W04nc96 z0$)jYIKsa#*eP~R39MVcT6~ufQce_s$Ul*;C{B{qdN{ zL1^5>%ODH!)V?d!nDK8vYPeAa%To@cdLjjRiNhnNP3xS0UWyc~xhB!eAq=Io_BlQT zho?eI6;h-!@45-w(`w*yEiNT;T_JF zN)b?@rW7ax_}3t~i5+WT<7O!esqkfO>tu{D>302xB(@Gn;>Wb`53NR6G?5_l%^qWR z1mHZgyNPk7TptVH+c3vaT5gHprd7P8H@txCk?rm*NbT~^k$v_%2EUyO&>Z1La%h3y zegYFivF6_6VjO$f19H1D7k3|3AV{i=4*82up)wf3sN0b6x4S*YR}g_FT_bB}fGT?ao z`O!{S^i94#4IJf+E4lhE=s3ftPz6t698Rb|pOROVUyV&+2p-#V)i!R<<@}17AklU) zuiCH%tL7}BnWO;8jv^5TtGKM9iwKuH%LS*P;n{5iU@u68RwLglF+_SimOP1ix*v6` z)%mZ=4-}^lZ<7{|GSus>sf4Pl{cWqGjHABxG*u(0V_$p5;J^v79zQ&Y%lXY1Jh`DaTg#RluSVH(m& z>?;eSk{j}}PU9)P4;K~%@V-{@Axm(k41&7CeX=*~``w8%#r=5GK>Wj7GAq2;3QBuP z;3~AjX}Z7X6bivH?sB0K>~V>F*$*$wfyZ(H#|bH2PZZ2>iLz<}_nVWi%aO_BZ>Q%Y z+JGwZdj@n?nYYvp+(}a41-?!Tmhnhn96TGXYf0}4i&;mL&)*ltiAG6`I5CWiZqJ?K zSP`@`ox=3BB=^I=>5>ECY9P_ys|!9`4y6KWn+^N<>?1W&cSTnI{-qy?imV|TkMs|U zhy$-8ppICXthyd>w>GMpLQRO0juODp8gc>S zrx>0VwQuR*DO>ZfDI-pD(@*&jnnwG)o;AgW--sIOd+n7-b*N5cRnVLR- z|9)+b+?Xg{8-_;pg7cvYC;_Rms)YBc7Fl>$YT+CYp8HK!el*bprF;4(a^wT6-t1 zwf3$onZM+ZrjB+?=>-O+zAs=|XgG1+4%ot77!k1GyFwQ3{OVHJMQE|2dcI+=Fyvv) zo=FAIYVjj5BJss731}?FNhFEtH7jAEKPRQyd)? zsPcA+Py$hEJO+p=sQ47gqnTbFA5-Kf-F`(XY^Vjl{tQeYLUR#Fk!ksTpFb-pBGTo}AFu!8vp`1maU?Ts zQNMrPO;_cuv|C!^b0D4m+Tev6(f+TkF!(EV4cbqpF1oNN$hm;( zuL0(qzO2;%ixtIRr`r;UR>pslFyTvJw52YX6S*{Pj~{*eTW-W*U%oj8#=#JYi4v6x zFI4e%I){R#-(i_MQroDHl}UL9DUjv;N7@2HR&^Np1EgGDb zt+3q(MB)9BbO;Sx@ghx7s~Ma$TB~=)-f=ng41Ml`<7!fW{)GQZs@xIxF9vG6j06Xh zcFl|u-4;T!CVQnrWPHEKL&?-yMxlAHbV`(%$Bc6dY*F;revZo07 zO_oGxMaND}UC374%Hz@Y$sx6u^%q;EpL-)GaWF=9Cz|rH3<`l)O@xm6OWd6%Ql+Be=W%o`^Me^4e3)#^|5c0rRO4{ z8fozcj1eV)ecxMZDv=CU^YPtxkmnZd62Y{HDNjh>j!Y#-UVdSPaso;98DVBIo^o&W%%|ztoIfK<4)S?VF(aJ!t=;qwz6XivBDn;F}{D1zoXj^B;+s-^Jpe zNJ;H9(()4{`DGp0&!N&&mo0zXa+P?ag^rGg@Usob8Gt*%9RiRjClega%?ta*n7pi6J@e^OOi zA9$|6nB z0@=O%@-TyGWS3QIjk_QhouBi^*d(hWx%lYvYt~l6g_rEsga~Lb8tJeatt=dK(eG+) zrIdjuUtYBclyVjY(bOQQ4++?%!)Uja>4JaV`5VGW|MdSHzQq0nWRd0U{De4;MAGFg}MDix`7xfH*a8vbuO=@k&zI@q8f5({A>^5p(pBE^|k5Y&#l5~Qp9jOiBzJhBnROUBST%D2+D9z?`S*g>% z+^ZR=GIJlzkSzAWs|h5dHY|gMX7>7&vvb_9{-cDzalA5d6`j27BAv}7Qn#ebB1-A> zUtjXLNwa$PSGPck^oK}G-`gzmxUYHfrj||y>8?jN zgDpc$S8ZcdOcbJ1YvNOM^gS3^L$M`JA3U48aPN*NcepKj0>x=()Uq#v6jyQBVdEIN zp=F2Uoa(>s6W!zT^R&V?>J+mA2xSC42oww`A> zpGvZta^oK~@_&Z8JVTXLLQYZ3vFU=dau_@I3WxXALzghJc3b_W2LxY^7 z;COy0K_1)8p&i~`^}!nD>Gvs0XDh{k3vF64Ed40 z+-ildq{5EBSBL5fYq)@9Nb|5spRJ{YhlVU#v0&X48QowcH}BW^&De8}Wtfuq946?# z(yrgWNyP2=I2Poz@FNB%jmeVr$-^IRw^BXBv^5krood82h-YkN8l92i|K%$%auiu! zHCl-VU!BKSpgF9uP435=4d!gOwQCa(`EWKLT!W5zjBb^ezWz3GYkYT+E)t+dvz86u zYsgKQ0!1}9J9_!w09%svcpK`)6 zX`Zv6a$*ZSTckqO=4(vI&uBc~{SxQZ!NKNf(69b#7(V{(Ahr3gZp;DxYJmaIsae}m z{hwb^-~P3yG{}={w$J0vE`7f#@T=FO!R04^y|9d}d-Q{|5{1vG-*=;Y!z%5BJ_++f z2QW%D5D&qzskpjlf3Hi8@(>q<_MSc63O#;tym{;)`k8s=czbT_K)g_yZOV)PO+xhJ zceO&Lf?BWH8h&pa{|&~BsdRDlUN;j+IBZ%B*!mdXq0aTQy}Dp|il1%>O56&IsZ3vkT@5g=K^}H&7kzZUZv?pS2 zWNzXkf#(&70W7*8^9soW2vhF0*S9T2U)l>Y?>|zw<%($aTioY`>!KyNv|` z5on_{bddE$kcaw$4Oh#C#$&GYWBY-8z33NXa>)}f>)oyzKNSU)unpa14puNr%w5{p z8=wb-UMV=N5quBTuYb_cpqKHlMo`Un&(ZZz@gNvuKYkRvV{TeME*4~&=q|Ru`*``$ z@#7VawWXY<#3er!dc=0!z2QB=O6PVwKI$VByd&n13}vzb25uLTNJztv1895`=mB<{(8hwX2iHCdovPgams+(BRh_F+=COWRv#``Sl=xrQX8pKX5U5>3 zROLTkKElU2Yp0rpd#`>>G|s#Y5y+uK8*92AT$KLVj=e&v^1@v7NA^?F#w;U9NYjnlC+ZX=eO5mG8(?X;o8SSzqmS zQpEP4l#BJ#DjS^|mA6_8vrQopOK&f%8QVTxov2!;llF`hCfL~Lr)u3=y^);QsBtDe zKoV|78+;e~vg7uPiH-Xz3^dAS!TFT;3Ap|J51V}V!9tzV9>X8b|Dy9;@7a06y6 zaW(lAXJ_Z>h%hUt-GllL$Kz4qBaU|#J~s@BVOfI@*I#;C?fJOOY32OX$!`8s|4XO+ z++!u9gGof|C6)S@AwiaFMRH{?Ja1&b=@3th_$G9`=hL;^u`TyuZcW=M!?h4cd!P!E zuMWBS;g~Q%jNcuDWsGv?Oz^!`gu!oKZvlV4j<~FIDi8$fbskW$-t~MD6)K_h@|}&>V-<$>N>_%UHLnC{m zx9{a`O|)`+F1E3#3l`bo-+SO{B^2}NuJVtG8K%kEgVJlOT6uXdKFf~AG`4NLv|&Ti zKT8Bd*q?B_VV}_cJBMsAriFrXHYaLP!3@4k%he{LLSf#!N2N)-D9T!Pr7-kK)Z-2L z@G#!I%cutC%3hlH`lN42-KSjp|K8TgDuKbnpZCgkln-^1%bgf(X*}@nj{o6uxX2~q z4)?yN%qF9d6Qw~nzaJ2CuILR*3P8EI#OYJeFnP29)tTXMeeP!`B;~zjV*T}YV(3cv zHWetRw%TTe>|Y$I&2L7Kh#-dw@db{JR-_OmcC7<*q=Gl#GK9 zMgLHz+9XHcUSNnl{_v+m%YL_eV|S2azSAb~Ux-Mr&`XyukzmJH-;%RPX5WT+3ljhP z84x_p-rL;rw0fO+D=;XFvI&Jvy<2=JehM~0zY=^oZpBx*v3Oinl64=wL54M z_A@TQ9@^*m{?+|6$ee>si-^cXP|C#mG|8+8)Ax&Q@P>5LGa5D>Q7uIjU0 zLNS~r2c^^Nj5%(6v%WGj!@+|Hgu3Pf4qR6@`>PKblz_6^KA?5uznpbe`!CB%3YE8% zzad3Gs@RZgTv=Bk&aXOUGbIS=AuRBsFH#OjN0arF6>sl#EBOj787_mx!rD9LMmzIN+OVM|AE%VtQb`CB?RwUDs$$3V7|E3-ZSK$Wfe zSneO+ez>qJ-=wiyx=E&b_Uc+di$PTPH3!GU&2D+IS*yn|ld>vFo4II$ZEwPt*JnMi zws<}sL_~QN*t|BqGF?-zXY-FhE5bieUJwbKqotwto_FO3hr#a8mE;G%AYX^I7G6JkUs-nLwhH@2UtW3Ln;Pk- z{;DuOxYDosXBaO1g7j&>VClRSlHDz>viNU_#@7!{0=ofE^N|&$EbmQkx&_sgaX2d@ z)7L-MvNC>pZ8+va_y4CK>Bdif43Wa zt53MNM|e|rMSZ*|L0UY_!-WfK$5i=dg#+2lUS#}Q26)BUGKI)n-LXec_4v#}?-Axx7d>h~~bwMrGjd;t$cJkZ)T)DeGDc zBP}+JAA&`i)t~DW=CX&i*Xj&$a)h7quMOoIY)NiGZ5gsavnm zj>yn<@LP^>=ZrMyqx=%X+01sR`?0+R4<=KqupAoxGkN<%;jGqdG0%{s5&||6uy7Pa zt_;p_elT0gaxY}1^nlu^xLd4*MgA7Bj;Vi#vbUSgF%iG4^%*xFPhf}Iu@TMhtyjMD%(GjAE_^s6O-M|%zp>DdY<^2$6 z{u(iHxlqZ+{4gFj_r_IgydbWdfd9BKyzobe+8Y%RoOS&WT8y~!fzW4PFx92^ClDL% zu|GT<)g}b>W>~a|ZVuA86&P|Q!=(}2Z(y<+I;+L!+`n@URYT4+=d~v1{Cc-2W{2ZA?HrfSi@W+`!#}0084{I|-+GlFf71a!x=sBT zu--&T;GCEn)1W1S&r#x5iEUu?P}cADVwFGqHuZ?5UOH(zE;TKm4BLS9DH+uU^t z(OBPlU-bi~cBh{{8gfWa=20)qtt z51_>~;Y--t-w0!uMCdRS=$foo=Mn^eHV8SM773L}ShCT&5UPO_vtQErw#1h7q9k(A zDJY#f{!T>uPb$<=Qg%Ek7FvKHE_rS=VS*4pxdJVe?-<;nTIIk-;ABJjdt_!|n+{x% zM(;hh;H=3lsG7H@U~rmMLvJ*BMk+k1P5y&0M|fu28Y*7}=~Nig^%{y_l$EFiX4KTB z@Jb_?-dNRx{I$Mw-xsolNmm@)TTfN&T=YGj53EFn3T6F;j!1!8`19pQi7BV7teXi3 zf4ZZTa0E3kf#8X5fUV#j41eSx(rW+x)z#+^N9pcMEq{S|f8wb^B|#j7oBys5^W*rN z`^%veV1BfcGEReyFr8D!|Alw@>6OyP#PD6o92fnt2*NEFo9M4W8oo~ZNq&ChoXX(E z*B9}=FD-`YI2uuG$ET`G%kjR(?{0u6P-JJre_#)Zla~lifQFl-EF{H*ky8ZDKi&OC zZZw*=vi>C%ekb}3#~i?xVEZWNF9C_;{bn5-1* z1$R*4A72cwPXLqm0k20FQ3dw3MXOs)gfYX)1CHO&xZmmLh_=sdV4u+qKYoU4a=(?T z(AvAY^66N(ju*)fa1Lm0_P^|x>%h= z;ikdpT&RMzse(~Kl%w#JMRkv@V>6G=275d;GUdVer+qd+5CM59GQf7&>yLayww3V~ z8oea~GB$inTNc3Il6}fDkV!eK-8CA801XIA&Nx4zlt)`Hs>eWNOzJXOeb_5@PQ5O( zDLU{K;xV)cCg!L(4>~oGbGS=*v(F&X|G}%8o1((Z$a_AJRV~n=A%5VO7(yWN5pC84 zzrLlT{5Ykq)cRxPGgaE?nY-BhFbJuQ%&{{Wp(gI!Kj#~H!>`(GJ_Jf`d|y=C6Aks} zzPfZ?47X?)C-zMWm{NZ45<#RS6i?K~Nuf|jH~8pPsT8Kt@1=Zja~C$>g@L5Yk0fgp zqxSIxT->|W(05n3&!`3Nt#aJPv|1LHONA@*`M8#ffHEFD?qs-xr|ik5Rds;XevjS2 zZpKry_Dr^OHE0r*gIT9fCgVHH*vxSKdYuFIYBVngp9(u+?kQ9!D~OykY$DZsi)bse z^|G!;Dm>_))6WeER`$_GteSW;?=V2=@TVWn*SVKJyv+q}3U-oZ*1WtJ+={dL#F69| z0Sa!>0k_&OFk9mxQFqLNF(jHziW;w;$X8C)Ke|EEyt4_;D0*0`CFI_u<2G8JcV`?D zcQtnTUn4l2(gya0ChgWR1>aQz_#N2o^#Aa-r{b69%PN(CT^ZjIZIRaLraNAbTl3oW zeK$;d(~J3b?TO;#STVZps}d`I9tT&U49d8ZnyI*S(%&ZU8)%dhTW)WxE-gDHZF`#o z0g3D1TH!;iizP!pA|3r^(?_*L9hI-V*E>3wee}KbD=;)~-YTSH!V4!Pf<+BWAB?hi zeE6ylZbe!F#s{+R^ZCnw0;^va6hf?vZ}eX?A*za}W`Al2KHzO5_>QQn+vG-H;Hb!v zOsnU~Xa6NeaR)^+H4VHl|8tXrU0=o0FZin(08al_AEaxEyJ65mZxDmEOJF91Ks;w= zJ=X~rm3;jaCi1ts6Btz|8NFc?npRxBu?&fgb`Un&#=t;jc5_E+Zt zNMmZXWK;x#Ww-TmIKxNmF6MWKQv{-FD_?35#(92@@|*~}-FO<``}+f&Du%;UUtM^F z!%v#)j-ykcoE!P*4{-<$*4xVYLdSl2K&D1#tzfKn$d*6Hb2wq(0na--l0o)0-f4X4J~4V<=5`=J0nw@3a=Q4cy9Tpj?S#{hwAHCl(i!oJ(;$1P zx~*1t)0thf{z_+1wkFJRXZU!|oLT8B5vm)buib8U!g||GfvHWbzf$id3xlthkXrz& z7eYTdM5)+InLI6np-x9$w@Og36=}^QiaS#^!&?_J=T3bAvlspWPM?B>nQd#Cf(WOxp`{A+m zyZDm7^8j+_u-z_hSo#+d)5cG)5q6AgyMQt!ryQDY#pwbcTGHjhKeQBAYEGplu$jya z{)cktu&Xoy=x*tTcY?{2;bZC8ZN|MhbIaOt6_l&iTgUk*Xm@&zcl`y_Tqlx(Rzc7r zr30F<6&!_y;_3Dv{p0@5D`aNo_ZJ_T2%$JWgT1rlQ0K=zlbF3Z!kNCia+)`MBQ!sa z_vL_%42V_?@!-x?d@rd2cs-a>9|?XG;d%Wl-RlmHaglo&*;Tbg{UHw|l zAbW%8H@}4)1GzsxUv?yE7S}rY9$Izm>WEhe2DX6nhRUzcc_9GZc;}<=zOpH-qkvUk ztX)o{Uf~7^M6~~s3O0LAgzhvWFS}n{F*#NfEU&rKC#wR$7AAR)Ngb?sUM5CPRhZkW zb6ptabIf%=fxW_O%KL>8-WP)1|27AW^Wie@X{7z6BQ1on6}O!7>qLRUDsuVf`J}bZ zrq+Yp4J1gB-yE#LhpmM1OQ-HwpP*hr{yCyIY<q_UC@XH59zXD=0qCzp^Nt6NT9R|Sy5fFJ0{pVI=MxZrzt{MbvFdd?&z{deh#t+#(9Q39#9O1mi}%G9GO-Ro(5Y zJarNfj0IK@Ktk1@%8s~)qCYvj)cMngTjyGq6Y%KCA!1Bn#qYco0)Ro->%V&vG^gU8 z3q#_7$C)%2pV^6ri0DPL_-$ss~>`E_vNTO ziQUuv+fT`F4x1{)Za6hS;)Z~)0fG6Z=?`F#aQbDopjWsT*upfbRfCOFiz|L7OA}ZD zCiyK7R(JsjiBYThGynw3^5VsClcv9YHntGlHC&1(0qlG-oRz{H{PDna85)P#+XfQ+ z$a?q3-ie@C<$R6+8rt2Chzc!g8_gK8hq^iL{)tHgW^A13vqJK74q_Vj~49% ztB&e6AZ#2mB%RiS#Es)#3n-2wqPz5-fOz~5;1uOeJE25AM%ZEb27?S1^eH;x$ zvN(SK7O?x5m&xd3;fB_{#i2NI!ODe`WC0C+ywy}?HZK(i>-iVT$v}7)s{J5|IwPUq@5fCv zDgePQ-6hJ*f9ZdF5fQu;cf6`%UygC!{7+5$cmLH-K=r}7MctxivG^=7!2m!Uy>O3X z5pb!F_plbQIyAgKUr&}3L9!49c)jd=ubi#EHWAc+4E;NC#)3y%+X(L9g-_>!i03Jq z6_oa2929)!(>~g*e`Kx>9hM22Qfb^f2tE$#Ri(xp0^7 z*ezADlV#@PsO+kQiN8_;hDgU8kpY4WTBNnv)v6hM18dk1A z(1K}QVs14+3m()rL@z*ZPcQKegu>K*ZuDnegt-#HAGf>^1ua@bK4oO)=czg!ba2Ki zX&ktfq5luEK{4(&V2Fg#4}F@&4nI&YLu>M`biP_8fB#1}uC{arrCE9{E~0U^R;|BP_9Ps>>GU^A;6xLY z^Z&&G5V;~Bx?CvY6{mSa-t8ukEW?N75DIRew=^#U&p5hu|HR7j82hEzJKAJkVWogr zch^Sf6>fON6Nszi+(RB*l}+*34M>GjTo6zd06-$CE)G_EdUJ479Hth~f~mOAq!yqq z$Bhm>^9pz1%=k)rp!x+Hn3uxfAZ5>$)j@+fUudwGkk>_r==>;U9KhP4(7LrTK`07Sb69mwNgN_BuV zvzPQ?07BlZ?yv)JG$d^)qwGUR&_u);ReVIV!!(b{?AA3M$QcHHrA7@0>%r4Tgkx(<9 zV8ZJ}>Y3oac)26tM6>Rpmy+$Y8FT)_r=M8-OC^boMvde9rx*-#Z;m`pqV8B0j0OVW zW(Oj{nmo(5?q5ZDoqzHCQa4yP@?O^x8rSb|`T2qU*!zp^o%*!56T>Kb_@%n_O-Boy zcyI99Y}s;Bx5yH(h9cg$M62P)kJzA!Jp{MiC2h$VYUIysombaRnhR+jbzOw;`uSqr zl@l`rGKkV^sOyx<*{@(!xgEX#ejM=Q20nLC00_kCopk{Daf@|&Y?5=dw~e<4(13A% za1BN{+VxjYkq=TF0h;)r(hA^4InMKdUc7_RCpicjzTgCCL|$E(dj#kPgqc<5>g)V3 z$sW-^hQ{?Je}daN-q-H$Xk)8b5|2s%MzEYTvjGA!=?e0;6cEvCE3$zK*LW9cTcFlP zmd*gu;Boz5X)?ZD8O%jktY1*KimgyN40d%2;GJh@lJ7_-LBfUy=0*Wc+1M48j7?#I zfaAwx3+O8|fEx|S79cdrfp!$)kylHDf{<@tU1LU^9)NF6O5-WYJlqGJ!yOk)fADN* z9$o4LIy{Z@N_ZgPai7glOaXU}JsCzb129LR&!Y-fxkFD{3HPt5iD40m#W{(}fN17y zuk3)(T>(sq0pmwrp9Df_-jbjOSws$H{6!2wi{cH)lR?!?X4e{}Qfn2epSyoqF&7^7 z0iu+%60nQ8MCW(72Dy7&MD16c)CPd01t!349o{Cd0VT&!jABa2@Lwf+1Jh(4U$QXs zhihSps^ZPz3VXKYcFlo(tda;oLa75D+>U4N>puA7>C{pF3m{LO)<9MYV1d^^hXTm` zIP%oJV_Kq_aIjweK2Td5Z6ztFb~!ZaJiY*=H=i7KBzJ&=3FPT*ljg8%YbOznUX=-~ zGjg^30S#Ae{eIz?xa=#Wqkq@dkr5$z{}Pm;;nBj!LBK6DS8*+1iJCfKk6$2>^)^AH zg44R^Vd4k}o1rhQr}4Lv%$d`oPl}l@6+o1EQ!;h~lk_mbC*yT5AlD&#T*`hOJxK3;|W!{LP6N;6gL!4wYgsL|hOE10Iy> zqhf|1N-anhdK{;jC9k0h*zQ#U1Cd!K+#;Vfkb)#U+Opb7(N)5bs8vg1+aH7ha4qz{ekhCck{;Ew@m7$>c4>S^UN3cKY1gtN{KuhN!)WrT<@t1e8w2n0+Wf^UUn7 zb_6Z33}7Zt^j>bqstjvIT4U~0AmPHZGTnkWU&!smMq5ybQ=Oh{H}`oEjg@jYH6G}a zI}Wcc*=wKlUo;cYwm`i>zLy{*Vxu3lJQ;Dn+$s z{4~$GeefSsxr^yw0vE#NcGf_jP0S3^#*ptbQKmqK4M@EUTAmCab^tY}T|pM4;$~!S zsV8oID^748&{y7vH!F^SqqxqKkch`N=iT_CARxp((2}Y$lUwCOuxNAE#wJq}>^m2Q zf*Tai=kuIG0STeVIUFG2%?VRr!JRnS{4{xaE9zx%IiNHP@f)3Z4>rV}>m`)X1qAJb zZ~uD$!9GZ5y1+wgs}<#Y~lChZb_lnDXGrM_udAOb~qd?pk}ujd)? z((B35g$%i7{`KB`ltO`rI zcm7GD@Nlh2mX{{D|4+bBt{xEfHn3Zf5Mr(b3Si-qG+#dgGoa45CF!K416iVdwx;H% zKmUznN3ITcoa7!rUvt05etsQToX!2g_x=u~A7|67t*ADc!h;eZ0fu_ZI&cG}PpZkj z)D2{Ix$kpBC@VmpL@x^{$DYq@0Bf`C!6HCR2j>fD-g zvN#Gzk*FW*o}YxBrnx?=OeUa#_x#gSNZjj%H$6xHE4xNN=Td!)kKjmVzIq{RSVq!Hw>%FzhML950(Lmhd_}$ZHTM%9En5Eo7Q@xbzk<>`jxbfueoSmau>$Vj; zBGF729u45X!9b_r7~llYsa@dgkWY4uC#{-Qt%)<&Owzx2KLK=B%UpO;w+Fnvh~hAi z3x3*88!f(xT??mVv0U{o0obH*C0dl-|A7ZFQN&6RXkfI82{$MMz>~Qxr3X&>)GmjE zR9n)IBB@!**BqnOfozIPrQ)XpQ5a?KyI>{-)NU^WeU8*ZV$N8`ofer&)$+S~7j(_! z($elpbKFTV_+6}RnuP6LAhgdU*i@=07BN zTREX5g<<9oA8&ns1X#An`1dR-NV~T3{{L6W+=68XbfPdMEO(pn|46#(fF{4M4+CLH zZJ-E}qeD7Gx^r|0NJ}FP(v7q*KAhOYZNd!P~zU~}C6 zgnvp18>wV$0r3DK`Qf}x#ta$0Q)UIR4N1zi)zNiU6qRhS}5@y}gku<(Y0+f)L zox7~n+u9;`^CWRv4N$d7J%dEB;thNTK(PZZ@dL9F`)@~+MC*U%sgTuM7VMYRCdoIo zjMn>|(Gg~(7?IP5t@g39lZ9GhN)F83Vh?Z(4GYomhXoz2$V;C54c^k?L@59{n{F}X>&^gO4d`XRurE&ao&W}y!i`BpZT#hDU z?!uor-wQSv!080iAJrK37mWjD?!vSTMl7 zUy-N0AyHUwQ)cVJ=)YKe6#W{Sfcd~M7%MDybWruG#hO=>>h;>A!%3u)9a8Z1foAxn z#+B6;0vJ9G$IK6o%10TbVgqmYo;t+hT za|KJer?hWj&zYh@JpOZ`X9oi!5(IdG29`In;tvA9<&m# z;X}e#rq^Tvd?_TjKyT%FzO>z=p(_CZmyhf2v){#}oZoxwXuHV?ITH6xV3WT~y!{2V zp1La44247SX7>789zua&C+PPCl@!r!Du)x0I#>$1&x_D`U6y6t_kfr0k}XgabVqD0 zRJC2eV$>=I!eafC8I{w4R$FT0x{IG+{VSB5!ak6Q)t3Iq1#~}5S78G%i6k*1@-uRr zFf#0NGZv^O!Y%onUkG+wr^G6h1s|wqKdJI-@`IX#nAaPSLuoZI10_F3dYw z{{-1_1LQ{hltAra&p-o^v4LJ4gY)$TiCPp9R6paU#MQ z6vj3-DS~KneU+Z=;36Vt#HI!O8a`)@s-OjCz2(H;X;MisxWGXoAf&x5-XX7^DXHy0 z#`Xt7F;jp9CpzEE+!0XbL}34I`%TY3PXo#( z{|e#d5@L$wDey{9>M1=762b@LR~^oJbd`u-)%_dw^qAtt1^{LOxwYoMAceKadQZ9p z03v_E)X2&?8uJdTDYCP=yM2#Uj=yopxqzs4zPtY$Ol#R2ez^!Y~G0&x|u zJ^UX(^NK#`0Y#cKtw~BL(yk{B6Od$tf7j>UYYa@YZ#s{VRO^jb4if-nyqyJ@>vj3n z1wbD}?gWSH;^APtpScl@fG-+o*8TEmF6G&QtcR=58_3Fl_THmthwsjl!T$^L6Wo3S zxWa}5VjC!9o}AGnZjr)B%l?aXr;$=mnU2{j?NX3e_~pC;CYwt!QcbqBIOxb@XOIH0 z#q$> z!l11;%9nLkm|8rUdjwK_7gurZ_cCEJ@j8}3RJm_(6#xXD72BAsQix?|ONY~k%D*=N z(jLw$1w@N`-2RtJ1It{^`V4e)T!LH#h&e8HvGm)Y;I4vJM;QfhSEj58{F?R=-0cGj zZ}tEPvT*W0*n|Au?V5o^Ri6YX!&QZv076I6>~#43wv1WrGQ_H2|Er8YBk`o?{#UVn zFjF$RFKxNEup7`O>oM^E50V&~sR22gQaRzET`ar`vkL6=*fF_l99z+$j4nU3jWcm!b6lT~Nop<6XEC;zG9m;y@JH{}YTBwZPP zTw%HYzA%Z?9UqveVDFOwq_JoMn2+MW@!7iA)uk~MV?sh502l*)pPj^ZXoewnkH#Va z#q<9{*-RkA1;E2Y!Y+@iO^xm1(LAg*NSLLFt(9ob8tnwKWr*?)Jx@qYIgKg;r@_Y# z7@x3~Vm*`>B|bn$;=dbWDEHAPRNxsI5T2g9NCK$;ej)=}Y-iPoVqX%Ot>BmD5kQndaGkV?|zA>*)PM<};b!fEMnJru*I0lq1En_bL34px9t#oy72XUR&tEnr}ZMj#Xa zsK;u@9!~}f%e~zDj@%ACC$B1sJ>>-?R`0#RPjGsR#XpN4`qmpcbTEueN1#mUFgf9B ztZW;63$P7#pQc2Vyqy4#7-M;dd=y8(Moo7BN1z$+@Xa$fucifv~lK$3%49w#&g zM0-?9evMReY^^dThRjwNCWCcA`X{psFFzFljnLE=T6_#&9t$FAiDdsi`FD$$2lts` zQ@`q^ttzuqL_HE{j=zMT8s*nN^E%_L)YE{!$|OZxpbAo1;i@nRwxY@hQ~Fx-uuS)p zx8@x=meYeKQFlZw*W2>O&Of8Yu1a=2ndUwBb%+z|`{{VC$p!_ll3ppBV;W3+2BX8q zqaha8;ZUMt*|-(GcC)a~3cRw*4J0AOd!IBMI=56^d!QTKCDPTFIJ`7~6Z3g2MmQo2 zYrnZSIw5wRQ)gKGhO!96npH6!9@QTeWutwwwN927ae)((~-qQJZ7I& zDYqCg4+B($@J>S|*zA<&<>@zAY9_Gv4td%uo{uURF`l#~I^zA5QIP%i9o}q8UtnHD z&!$KA$5D3jT{c8PHd`nSuAm_6r)b|OG$1tND(W2;* zN@PMT#4y!!JNC=co>c!NPOvs-EO_Pnu^X#KEM&nlxaSpbv$lJYQ22)T4EaM>NbVU|cp~pGsC= ze=+afq4mUtv0PY;85n{GoiE&zsO6mB@_V?s${}#xZ+LLkB(DphOev+_xW7t32(oeD z6$whLYWD5ebtJ}X))x4_BnB0drg9*xG5yJ7zstw2+6nV#ic2W`S&obAglGa6Rx5m< z!Bhh7>^!2&?_M`(z6b_R(bzCe~b)T(|(~P|I-m0rdb;>n20Ht^KACZ;8^U3 zLatF~DJhmxZkB(*gg4nt#fV;9{eQ_o@xFIthpNP2<}r@_NR)wf4b{j z4E1FwI54Ia>Qn*8b(Ru0k#z;WBwi<#toNH0WhIlm91vtz4X|LAot6y=>nvvOL!*h=7QoDi=7p5_5f&JFddQG<(bPcyqudN9WD2 zOwBN_oy_<$Z=Y{;8p@%lVd~LV+fW!-hn#;PmgXLEG2HcAZ6RO8hr_mbh}=6WY_9|v zeg}-NE^KjZ>H|kRe@(!U9vBVUop%RXIm=;`aG1qwf@z~aWY@_YzST*&&$?_}t|jX= zHwy7drPM==&J^k-r@LGXE%>P4Nbrdk*-%3Cr!*e-z5qLz9H zlE%U!1z9=rr{WU?S(WBcOo0q>PYZ4r#x_#bEsWO3z*&AXcdy90lH%X51hB@dPko?= zLy4rI*oh|(l zMIq{Ln74gTsWGJzVhJ2#3o=uHVW>J-bXV?VO=MvfG;*K8Fc-tH{3<%Xuqj{NrI9Z< z%s&e`yP~#%L1q{4B1t{p$#sLFr^aRxSt5ybJvIgg-@0F`MjM`MKao3HO?B-51*Y;- zMNu-+Q~BA+wq%E`Mh```L5PGjin2;O6}Dw46&Id|(HxP^#N9DdXKw$jmIdn%1d`5+ z6g^$R<*}WM2&1_|#41rs@w5jB17{ec$|&|NwlSN7DfYOxWxSrD3?dNiPvEIYqLBFo z_iOCUd}7gME|#RQ51Hd__26JtK0Xx@iOF`yB#=M}v)~%3FzrcOES4xdOqkm}#*1;6 zax`qj%OY=Sdp9SGmKa7PEzgn;P8gWiw>Dp{*j^`QoKYpI?zql}&cg5MZVRDib)`!K z3d>5I?}cMK1r>Z)pVH+*&4LF&)N(J+IEICF<%DkY=z$qUShT*@CV>$Y9ua$h*=zCyJ%EGd6mSy=bI_Wm`X5d3b=LRm--anKmunqp}&YZIUJi}168{@X^b zkeU{xP5eGGN~nOc8$3x`31dh^R6yn0u;_$0OOU5u?Sg-c#;yx6o``aa@~1?(j-_ne zy&zswsAc&38(!-y8XjxQ6O7QBt>S{_LQ~`Z5DRXPIqE<5Jm_ zb}z(vLhW8|?uq?S4i>T5i?hn-X_3+8_UZBiGA*eS8lR)ofmZ4$EBYxI#q)U|z3hB*Xjt3D@PFY~N)`hrOR zywFTNLz4X|!BsSV&K*MEP-8KUfKI87Y-GRcsG>g^%wOC^)Y|iwT)kfMH$p8CCmf2o zrw9;l9vp9PUdzg~$+P(UfS?o74iBj@`rLjl$_7Jo38X#WS<_DCk~qjhzxUfB@!?Ne zU;KNut(6?<_0MCsCk9L}i7Ws!cGIRc{}Lgt2A>&n0}qi8Hyc{#)iC#L0Y*9I5{{qm z&AVM*&fhUubcwd8LToTb!8gynYhe*gfk*Iq0Slv^9))0ET?--{y5}yFEPoq-^VM${ zdyHdgN?dksVRFvcI?WebI9-%eI-BQUIt5))Bi~|e_0Q%}WmzIGY%nO8yrne1J2k(X zRnbTr0592lrbH42<`0u{6Z7B8&D_L9e!R@6^OTbDB1nt%l!#Rsa0`hX4=+q=OxLsF zVXex#hg_!{@SUYF(dNF+Y$Yd*F!yNnB`H_U2^Nu#Bx7!eyBeM_T4Ug6K zvQl{m4Wr3PJNKuf8!+o#EWxnY;@Z_@l|$@{o#E*{{y|bJAmB@~ad zrma&mo9aFW?MfYagaCB2Qu^%^ZVe~H`k{UWnHJ=fs8{;7r?Rp!CO1?ybOI5HV<_yN zPC6zdh_C-T@Jd>wdzDl`h90kHoKpnq9Y6XVXm$@5I@1$lv{PuQw6La)4K_Z5!evM? zzJD*cmH^%rQwg}a|2pyc+d;o~`>V{?733}A7D}V|V6>lz-_}J*$+W)}=?wLMqTk4o zSvdecNH4AAuqs%qn#%8(JoH+!w0%P?Y&HRY+iq7zj3UpvHEpzNPHDIHp4Kg%_c-L2 zyWrPKVE3}R$$t3NjNlrVq$1)3d&jvAG+(|B16vI7Iv+C z%e{VrygQDxx&02mjtSvhZPpMOmRwjY)B$^DTI_K`}a!a_5^0xz9S~f3I6Hv z{B$BN$0*WaBdL`pjmTqHy%+Z>`HNGXxB$^F?;DDUqnFit=9XU#Yp$qAysi?K?0}7Y zw`>0I9RF8K(Q<9_Sx9%$2f6s+7tf@$W($4W+H&3dsZnq9`yZU7cPwcGUlRpZ1e_0D z-B;eXq4rjc?>p`?K=*cOa(3q}qc^4=w_9DixgDD=N()A99zX9J+DwjgQvHsc=!TDh zepKI%q1S4<)$m*RBE)wXoJ&y9@ljVagHE0BMfn2^ZyE$e`EOisc)-^D zMF(`8ed3X`xvlL}-AZZ=W3NI%il_H&_$N;YQsRH8iGAjcOrcX;F}lZ;S53*s@9jGI zz|79hiMlPAK3|O(RAayFa+MabJr^{npu=zV$t;hn@Tf7k32POy$IqMY^HwfH4szP` zR(aKZr1Lr#M5Tnk)btLGdvH^UDGy7#>{m6bEe3AP-M3MMh7qJ}{RnKM5GmRkNIv9amv`CgI&qA|Wv9lD zXAzgh#~z;bKkA{UY+ajHL{d};7?Kzmo$bh$;s1!#ZOC8gt#$>Li=qd5onKm?jqT3W zU_aEm$!XmS?=fBP*^1g35T-`m&WM~;tm9`hc$fNtNnoa z2bTFJ*us;za^t(@gz^RsjY75aVB*Q$q9>ucp3*ODo1pr6({bCACxx=B)*b><%C!b2 zT~pIF#Xv5#GfPyTx_HpVNCPU#Pv|7t}&J&&EgIjW&D{P&lbz8LEV_XG6PY(;DSvpHtY&xIrl^BH|D>vO{TcZ zS)#a?&Z(Pr1FHye@2T;z?~P5yS#M1JKZFEot3R|+wMg8j)r!@34UX|11U~!q(B}72 zzKbpNjM{dbPd$%{6{%5go%b%3Gx1cfx>yjYWdClQ=cqw>_x^o4*7vZM?= z+-0T}&*cYZz6amy=7))@P4VIE_wQI=vG*HSckH=2F06QDFUV83zf7g8Z6zZ*SK4`y zFPU8#j#$$kKe26mRqID4DZvVAJP6blzHbvDdx2LgLM{eo=M3k)Wc3^`{!_Lrc~eo_ zO8%epa0Ij^Z}ayNtIf3#ifg7zWjN`$MGIX{aKh*JIO?dOmaA1s<-dUHTB?9rKUo|9 z9!PfRc^Z?~$syrcmZ)Bb{WroHP9~o-j^GLF<1%m`gvub^^{qGSILh@Qzj$Y5*z@hb z&~xXaz5V+5!$5bTE8pwJ2kxnj!_D8$3dWY=Ov5ff=T)u0pM8E7piG;aADW2oeO|Cr zelUO5Oxa3@^Wa_W_fkkxbvy$f4KAM!7`}lm_wIqBqz7inH7OJXdra=Cyri>+bS9_EwOT{kuBz7x5%b zft+f6CD*Kuzl&b7b6$$?UIT*t8JEyt`5=&w<;K^$wGq3+mtyU~CgJMRm5EAjcy{72 zjxRA3Xq^_nZqahkZ;rS)xAi9=)Cur0FgXasFTeHmZ)>Tav-NLjQDw|M7rpp1h=R!b z)Bi>x+$iS?&l^V*zeeo#kK6R#i`;<6?hj8X)=>B9GcTB+Q8RDlYivY?Mh2um&(KBO zZ(N2&SROWPfyE8t`B0%N)(zz%dRei)=muGz-(edV$2vb_ud=2tBGZsFh$||<9*)r9 zmm1#sW9{jR8<5gZR*B(JyXaN=sdRlE??FC3zhidm#^f&a-k6Z{or99G$>DLlu5@6P zlTCDBb^D4@JAG@wC2*-vyzcq#&I!uPbu#wuhnP4e(=^#nr1WHA&k*wTu1X&#u&TdS z`{weGwU_F}>5}zThY$OGTRZv7US!1D%n>STf)pD$k-Qi{eacI6xq96P<8TV}@}7C4 z-`Z+Z6_h%ALye#GU<~ZAdmymGv!3Fui;;-qlaj+#@9Rm=H?<-r2Ke6IlgABG=O1_O zXYsyu%=W`L@Hvf5x~mc51Qq=o-AQ9B2Z1U`V6O+R#eER>Z2^l909t&Bf}91OMLhW4 zJx!?YI27wGduY9Y8C&MWKT_`C_F#OtsBwxC>@B40MgE1PG7?rDMj)YVKQ6b#dLO3O zP7cp)kX}bOG%o5^1ShC4+jrQ=&(V0sR8@zA#U*kDQM37u2OBGg*4Y6R_ot`McRUuG z)^B*goBXs@YC?*Y>admNrzfY7p!5QsuwIF-$mY;ZL2}mxuvC=VzO1U;mC_ z@s~OGZB(gBOdVr<>!z&%xoedjRQ*l$|JnLWVef{X|A{<3LYXg4o%-;x2wsb%J@q*9 zyHxlVdKX1(G|WdSm~xm6zYn&~4CZ=P9g zGQnOl_L$*G4BEHJpbh=4gG!(oByNud1syllK9`u4o){j>dU_)Ozcp$UgS+Tc|D2`! zqh3nZ96(rRv5EToyEZK!xv2`J8QD-cwhp2yMnZt z3hLl1y<+aa;}a%LlJ&yeD8{I{ooo%e{hqIz$xpQJwnF4k&rf`I{sH)XwF`HDmu2y3 zuoS*cn@s13dJ>ylC&d`7ff;@LY#u4wNrBdMGQO2TT7!1>=08jHpu3`YYE09;;*Z7Z zWUB($E3eSfFgO@kj7)kY^sgmb{$}SP?Y|;q!kOt| z?z0Lcon>UFlj-RX2_GCSMqx@T}RC`eWzmbpcO(PCcly56iw6MEf zxwmrFu1fwR#`sPWBo;x$jz(HjFs)y@(+g30(a3Pqt)w<+TuLHaQuE_hVCElF5LE&X zHzF9LN99GOQ{10~UE!8;x>e*&@eYk?<t;2;u%O1=%b)XBr)EUH#(D z*$C&oi!x@#{SvI4#tB(^Czt)qVcH z=s&4glPN4tbgprWUuYOy<7bi?Xje zehyozE0LXzuq~2a3apavc;#1-&HGYHwAMSZ8y+OYq{M+{^S1OZ4U^(XTJcU& zLg6wu{uO4oS+}7+2+0)f>JSG=xWmnSR!8}&{yp`VCOKqk~%xr=!^T^`HoP>7duG9Sjl?_chUBTPcOpE zH5?d!pZgBve_{ytn=Q5kWLjs<&p%Skf4&&`SIvQa^1LUZ!`*+t)8ymQi4pRBbGs=~ zS##D9$wZC3I2t;$(!{6)h-T%y=?j_{(menNefy)(MiCua;e)|2QIG&cNLK-E^1nJA zd9;m|^4VLA#gn_lX>~l)!t-J|G`^+|e#h(ObFa)y8pHwpdJ6`Fah&GfV1^mJ^++T}-`3%{DdBSdDP$uYG4yJjVNNqL!_WsQy_xemgT95i+&e%d0!KLne#XdZKOA@Nwx~8x?OCQp#kC<`Jc-&E-skSL2F3;AQ)g8^Y7BSlEeXkfHoOJs5E; zB+!TU^xduSB2Pf7*fT7Me-eQ$)_A#^RX%S}atensR?e@x2JOS0XFOfm=+AP8-iu=_ z9ba*C-MQ@ITAIqe+dEuKIiBb3mbk|AmRm<6<@;N&P@?VwLl1#||8a5`#X7OI&~Dhi z)2~4sSA28hH4zt6$-24rkue|%Ahc+$?Y~Byys<1;&&eAI5&Z6l24a=@WM~HZ82Plx z0@IZBv+;Y7dLwhvYf_2LJa;ADpsQFs1b0xDlk%7|Y^5`xq9N9aM>;r|EV$tSasBu5xp3||eKG`{QOY%P4(hl~Va*tD=yCg4#VrxYN+28S;ToSecxl}#f! zOI)YlBy3FT^hA!-mB~_n)jGCox^3gLY+b`QN1KkGul#jh_LW4rB*U*K!s}t^Edvo3llg8*({`u8eh5 z93YFi`ggW89nB)v4yxE0HBywE9rmsMJ_SbtAw%s64(eAy3a~~ks+V+tM%;04a*NYe zJiK3E2%}wd6GPZ4w9d#PlPeAEfPc3QBB(Lcw|Umb&|(G1md#A-FATkunXN=E&e<>& z;*vk%;nBR&P5HweB=BTDR0b{a{o4y7D@o*ER-?dxzM+3{Pe|u`^O615uPVCE$=H<9 z-c%W>x{LaZ4Lr$F8VX6OFf<1_5B!z~#Kc|F_ zKZ@QIP0zdH#d6}}H*K1x+|`Np9`>!42AM4;EQAARa%-}P&Qiq^0JFYhN&Y*OmCbB)ctZ%w zRMbWs4;^u4;7tTkdrwM+$yZQRDI)FnU?hwOjy&u@((s@k-;pz+fjA0==RF%4?hv*j zcr;zQF*=~#t#Qf&(z(9`u6Vo{*g?tGok}-IXJu6Gz8c6XF|*CNq2Q3GFa#hkGgK1o zKhmk>2ssw*>F-P+R-S!bv;w)RJq88Tf%4~fljP{HLF#jjXX6TK$x*|2BVm7%g$>ok zaD8nF3TL|fK>zfVanvg|pIx3vD0V)(Wb>SJQB8G<3hEJ3CmNTsd$qJCGi%sHfa$&{ zse}(g*p*QZVHyq?rLe{fF}+?id(xR>7ihn@eveR0!!s3(zi=UjtOv|Ga)1yH#Xl0k zol3(NdRSbw2Ez=X>dARpIyANl{~>J!oS&6y6PPp|-GH9D1YVgeKD(^5LuR3Acia38 zL*uKQ;Lrk%H_7=fgCzn3^*e{rYOL$7rGeLT$xBYI1(n?aQgp~Aib>;`LGz#vLW5>( zNZH6p)7zH&5l7IO_8mISLFxfSDrbk68eO4zI*uB|wIF@S0OC0FZU~%YKlqxWjM=M{ zEi@%75qVRo2Eq($q&7H#Le}pmqs%e+=$#f8Zb&Y}fheMX{p=2MUOkvCTWHO-;PiX zqoE1wEELxOVPOSTwa!35OM%K-iw!EcJiuO}V(8GM$Lh*Hp}|FG1t93ylSP|MN)k7G zM!S8TWa5g{)!^;pB=>*Z=-($7CcBMda3kskzK)8~t~yxAn4!OhwGof78(^S$f2uHS8@U&JPUcN za3sFR)>Geuwso7TT6Js777H$mH9lKiyBmS~Bk-kg4 zU(h3co32U0upH${GT;^88H;0p;XLXdy{J(<=9Y?7;!~!G5SRMI>{0;0jqK(hf*7PF z9R9p`In%ArlJPQ_)Ai9&TT_2?NhK0K;}!5Y|CAo?!2zT-b;Q^zr*pH;H3D+k?DP^N za`MXDD*8q+p<*#NS8cSrTXK;wy>d`O{^_6Y%b$&?CE-^Q-q$gwm zCkp7of`OH$3!rbCc@JqZU^p)f;;~?L$NhE)APZVhMWvEf=kejuDA7F@vqcf|4Mq=*&G{S*fCOC3k^Jnp=(;SJ8EAVRX`l`yNex~s8UTo`K9%rE14}3mt1ReaK09;N zM_+Ax=Zyuv&8?sTbz9AL8DK$*^-+q}%TRG#rCb?h{{@4iOlpnkY3T2}HPxcT-Id{3QtR=B5d=|H_P3jY+ugm!VSfs{uhjSWuM<0{v1QuiV-Z$2!hO_dS?IEiogAmuv zCBSXarykS%kFRR zC!3Q?s1t*0nTeG~+u_Vzp$Qq=-^Glytl<3_7>MU#s$H9wD|Tn+r7F9gcSP2l3}yV9>j5@|w^f^J@+8H+91cyA>&uF?uT+xR5AXTJS~F zS*!xq=vZMtEf)~c*ypNAl)F##i-Rh!6ooE>qxl;edxn%!nF}dIh~npUY92t zXXy#00SkeK7obp9lswIZQ!X)vt z(O3SIvE4lB&KD7hcu4JVa=H#2G!DZvZSx=ip&#w-NKm809wIJKM9%BC->c`pcSNii z!c6s+6+xz>$WR)csqP=e{CI#D@o7|6W@s#Y86{qV^?IX2fL;sgXj@!Qul3x~R>wD5 zi_CG`(cxv0(4yC)bxT*t|t{QZB`kwV$$CEC$`nKLw3BsHjb_gzB|S#YK2g$fEf(Ssw0H{OJ((WY06xgf}jejaW#&TLK@$0y_N25PKBZGDq!FKybJT(M*6 zjlHpIfAg*DmoQ&Ws*t~Y9@>q@HAMyeeVLE1OPhn{K5NX#RXtx_5h;PuUPR0uCAh^b z#3C34b{WU71BOU<7JhmLeKEgmM@{nFd(=!}zC;pp#;_s49At0oAq9c*0_pxU=+VP= zJ}>$>TCE(B~qSW!tBYr!*o)VefR;(s0L*qLp zr~&2f&$qc#>J9d_Sx5$#Umpa9XyIe#E?LUB@0BIuEuire92h!TA{BmEr^G-W+*yJpg*y+ZCGY6ak=mz5{EgIgZ!E+ zI7OvpaUW>BZF27bM!r|zRcaZm!=KeQC(Am)O@Ecu3Z`}bcQ|R;g&88QB4nSIMgZH9 zGB+0rvv~Ct2Qx7GLDt_kR2sNt!|*p<%Td|C-UXP07o!!mvG0=IF7(}U)7wy$Y{|F`a^hb99H zBbU2(wMCw)B71gdBhIhhGknFCI2;=c$_I0hTeVu-KN)ugyB#fSkd|hhQzVW} zXi(hYm z!JBRcAuBxYCb*1T-*Shv$rx9eg)E-X5^Is$RHQ@)*ry4)HWZhx=(+k^DOh%Vk2UBn zY+iYqdJPI5q=+~hkfBb9vun-gLI!fEAtNhDG^0Ey%69N(8&M%h-R=**;W|r+g7(zVirP zAhg;TaRD!oS~ZU)H#5&dv(SG-tan~R(LboU zuvPN1vF}Bl6h+!8-EYnGv@F^?{{o-YNsq;Zs1p3zKE>xEZ>DDm^FlSCZJ*!eUo%li!ig3TW=#xPq$jjZl@T(+<)7cnkY=UYMq8ZG2N#FQO& zQKUzoki3Sh#02J>H)#&HW#vXzAphGK<5O)G!_RBHa0#C6Fmc9@3e^52D#_iFHYO&e z&nmyVBq}C%Z%!6=13E!goFZ1DE2v$8r_BqUr-^m&ed6S>no*_M;wnf8{IJkBjIC9lMhR3rTp zQ}(>+mro}AbzQk_8YS+He1GYa>>@(P117XZ4Ci4b8;YjCZi;WRKD@Kc~L@z$h8Cc_7AmE z7J~F|YAGe(8Z(p+?M4sUY7hC7pQoN8$lk$67G2Vx_w}Y-@8GViW*imro<;=;2%cLI zG7g;;DA7KDF#b?dRQ5nH8ZVlR!>9I#d$NaS@dCT?u1$M4OowlLjrL^*{ zwqdNq;*cohwV-87+M_@*&r4^Q#@MgiZ8g?)mDqnt3lbPtX-yOSmmzUIUG(&?P;8QA zDOcrerKoI4H>r0Go0^!Z1CmskmAg`QOpzgv#?AEi@~O6kq1~+YgtjH#SZ}uv+<_}4 zvM1)YK~0}`8yxG7_aSQ7y(TNeo~h$n7>g4B`efETjf=X{ z7BFHP!@OTi$)cO_`yg~lmrU_iaL^AlPb0=slCL@FlHqr@!#@p7Q*(SlJdPzRuxh@3 zbV984$3;P~!d`31MdW(OM}oZfyT#^PSd!nimK>`nN9w^3#oi3;66|I!4XgTQdd+i} z&uQJHD32+l#~+o@)D3@VM+y!N@p7e@ElM z6L{A%N>GhdDqF5ayMK2rVhVQu3c2TNFkT>9noT%~vA^ zKSR|N*;4W4OBG!QZWqb29e`=#l{bZVQziGLjv6;*ne#c0Kq0p9sl^$C-du|o`3Iqp zWIII61o%^wux_oCJ0~$$GHjMhPj~rXgmUUWQ9ClW2AD1GXB(Oe1P{;N(ANc=Xh#Dw zKoT9lJAF z(rR|5d9=oCq6qj1bIrrYj#|lt=9DPF#*hB6psno+7~qTseC$$hC}4y*98?+2e=Q)k zh-h>0M;YzC(wV<|dW^*2Y$Q-lUJmuf5>}SWr#FR8R$78IEJVjraOSWUCfzy(<}6d5 z0OF@JKMIG(SI15ebIT82CT|4^e0!VV^m>|hHrIN92fZqos$ig(Ah2bs4&JF%u*J&_ zozK}BG6$%!tC35<@rvePC(~p`StxDE)v~gJYvR9=GiSP*_vgZ zl(2oe0;WiJ^Cm0t)#$k&6C*;{Yx@TwbSrkY^0rir?eInWw-WsSX6j@*1#Eb%Ln4Jl zyHO(&n73lGx)>iz{Xg9c*6~YX(ua-~nS&A~t-;(b5-HnNDPXT?fje1fa7Lb1c6U^e zL(bnVAiVfsKuF}G5*T$W_AQa0UYeJW0IJ0^FegC#T+@B$Z7#UTUQq>e9jjUE4RItb zGEx}Wz`nu6NWIfa&3f*fz3#hiBLb}Bsxt}W73zF=kE&(f1B z)*!I$VfkpBXhpl>8CrkKMc&xK-OtI0BgwVXO}c^I8SS7opU3j~hfaJ1e(^^*S8Jb* z^_jbg6(i*J`1Boob<9XvgH~NC7df4l29*V-z<{!7Dfi!l-pC4FhDIUqJbows2ap%b zU#z4%hvj38MhqiEm5jZW(atco>?eM7s`@>{GUeBm@6P~*aUR%aBOYLx4Bbfwq*D1Z zlApS`qsr02bi^8FZWr3~kmu+yUKZQS4Yd~wzgUMr1C0>|Vo>{K)%_pz=2p*d64z$1 z@&`W{G9G1;-?P!Gzt3ZW@CKK!8|g|yxE(_C+B9TF(yEQ!0A>h`r}M*e>@yFFhI`ML z>Hp zD3M(L{om}-<#eimU@fJr%%=|~C>>vsh*6#Q>)`GqeWHmYig_i5$7pfpIX60W(1B1d zX8Wm;)i^gGBGS72MCcAd@2^1U4mn#e_fmgZLam+-<=!c*d1*CFpR_E46bO3YIwP>5 zwPe(Wu+em!Mkxs%y!6k*m^|>7dBZ$mGFeVrTSFag2nEXXLpy=`Es zy}2F6e#PUf!x9uw%&hr9Ss7d@HHt^Unvr2s!#bqC%gS%-QHXY4ZE`@h$hR{A(Mz&r!vQ9HMCj43vIsR_SVCOvLz8{O1ekqPF^GjJllN2dpT zezuPMc@$tRzRrZo;OV`ZS5v{XgO`dmJTT(HTsOay_VK)}N3 zAP)_uujQ~lXK)Ag10xPtqoorl1w2);3>(-&g6625h6A`$ux9@L9yg zOGt2ISEbunl*CWe_;+or9u7C%%_noL_xpfCLZeGBYi! z`5Eel#ytCv_Q?$mXnys`b8rf)Ma$)pS;h6+QQHVHgEAE@FD>A#jUF9GZCAZ}yxwVNajz-OW>n~D#F8Xf=02a*_w1(|jU{=&6wD0YTT&9jZ@_MYEPV#&^j!fO@hgpX&i zj66S^=1B+I08oZRfq_qbdeE$??UQ1G@!vUV;KAx0A8SVEU15ulj)ZDpQC zmU8fYY>%=jM1~@=%=S)F=7-Ox|0C(T1EK!^f9cdI>j-!DIU@58nOTP;gsjXsTgsj# zqRTw8M|Q~g$c~V`&dgpJW$#V4-`n^1M>^iG_v`(Bj@R?`d_A7edp=SAf6ff_wg%+= zbXIN5h*BNgmBb$uiSx|(0>0|~Wd?S0y&Pqh8^C6s0JtHjF=I?Z;(Mt)Ni#uzONr^R z_aueYN1TF?$;L$DrdC;zIKVy0n34S@!wGDU-B&LgDw-bFeYkc#0V$8$EZ8hQXCkQg zFPpFd8=}X3NHEQ+@vR3LWNzQ20W5)#M@n6~bTN3;VM;XFn5St5cy#sMKXZ2fN5qE2 zSQ4-yJZ&&x`%3)qB1G*^ikRgzh_y1Hn0hj4!`ccEBe5Uf$l9_ z&LrzAD`W1zeW8ES2b{-s-#SlTojdw1QmBVwe|M3kXBb5Ow4ap=I5JQy0cTQvW0`bK zX0?Pqk`fe^FNd7wG<1P7&t3!HMdGj}??BE;l6>Ar)sT;$e{|4=q$f+mIP!W<(MfAj znW63bPtVk;D`sC5eI%0{!N}H_>I7QfE_1L?glDIkBp;=6+F}w8@^(qXCq%S6B&cyG z2D$ui)%zL0OoS&I2Ovc`;_Wuop$S8zCvh1}G3RaudV&2=$q3?mv)XmFnIhBUQu16{ zlO3V>#L1k%$}#eJ5S+=`=-lPm->Lr`N+MbBi+?g1i?`0pxOLD1-M^v(=)5}1?(%z? z<@mJR<)q%@q}1c2+T-NA(@AXY)wy08|0mJ;hR)y5|NmlF@=uCIo`iIJnXknc+xF`^ zqoes^lE*TO=~el4F5V_*v#Hx3_&xRF{`YVD-c{|%yZ%KUfj#LkplIBfkHamCvny5EfJf!Dvj0yJWK2C+LiA1d>$c^sSMt5@SI z8Xw0mGs^D?qBilBxMNgP&ydbzB0c)TO8G$@Mcx5*#8KS(UonH~dj1!mP*|R^puqu# zq@qtTU4w_q%`cyxR2c8DKzngC1}TSyt23`0ktNN-BTS4Y8-Y9D*EIJWSyOz*T!$Jo{IIX{t7MH4*Ml3 zeYMrP10=GYcs}ZvDNfhgpB?y|yWZV(cKz|4c3RQw^O;|+AQWYq3oUCegW zI0?8DBEoh!e|op1&8Dupzc}>Mg#(iBT=Ofz4P~w7Bsk zShexcI}d-%sk!|i;nJw!-+lKh&XKplr-Mw^?VWd>e3&scQb1f{lBKcn#2c!91v>a8 zU(`wcUQ5_-f4XDNZ@J;|4X3$_T9YQ~_Zw^vg`nVCrR0yK8_u_lC+OkxSE;C-Yo17c z{pWUZa^iWXCwKkKM()8=SOaVH*T^f+(UX=#8oOnlv4l^%ITyK>tI`#s7N*qxQoGyi zv7F{tk7HA$ZgwnZCNxp^&n?s*j4v-^nRlou&(J~KQ1If__V@)gWv=JEb_RF*=04J7 zjwE>htRW^h{r&0c)mHNbs1dzC_E)<3s&;UmT@Kr7y0oh zkg@G**^P{umDx^xjT=-w7ZkR4PcLTcM$>MvlNUc0-Xpn6r8xoNRK}Jdx0aVP@9a~* zhy19gOl-c){IEp*o+vslj{M1`=E(sFcYf(vsX>(247uAZRtI_J96D&^RTe2f*;G6bPmC;Bh!b&K-?wPsbzsO`CzmLb1|C0cvm7p)LkQ z7Ov77Vf-)WZR=+lyxAMT%l4FCgh1>s`(GY}tn8Sdnhw9~_p|LfQZP;rBG;n0p?;d| z9KrF$hj|h&b@Ol^>Ap__HZgsE^xF2l>t??E*i~)RDz#HP)_awli{FsQ+I{z~QzlI} z(fjhBe=+b3{Ud4JNAbVBVetJi?c`t^1mMVpNV$mh*f--s`pwbt>VtFaLFo&Wp0KS;;!LKgRjbuL3>`I6v6A>eO* zP$hFV^tucw;Vm2G#*5>=TxPGlj(0?-%bA3A5@`J9)5gP9)nAm|JDPG=Ae{c#31{3I z3{t!q2vM+ zv%KWL&|imW_?ts+szI~{Y)?uT79RA1T|?n2r7zPz81klT{9%4#zEn@&B`4|;8f^a! zqV;5GsCAC>OJJY~IU&DjbtBMCIp?X3sQS(PnpHO(lvG8q?=N+lN`bWm_ zF?D(VuiVuxuP{H~QyxbMv~a|QtygvjLn#HN6Xr7?u&F)iP*Ya)c?XS})#(uJYOt?O z4?cxa#0_b*GHW;_2Ii+Zikb7o9kg{enI7ifZ*SSbbAIUi_1X&0T{tT9_jO2e;s8bU%mEFBVPN_BU1(U#!D$Bax zSaJg_{)hNc1p@B546j=xk)xV)$Wua7I!;|pKRqXrvp56l1A^sR2T1I-QXf!-^UIG@ z2e?%@uy;`ran8vL9dd%6b<~u^9`a1sZU#+1m>)EWG#@1kQBqEKe6_lJCmKZdL=9}* zMwKm#{L7t}&(b!y`{4ul9N2u7IE&EO8O6?4*lt4iNpL{s z-POO~22OL_S0T5%5bPs~iA+C|SOzh5NjBtu>&}0gNiXFzbX)EyDPL?T3EkxcPsp74 z7Q(^l8_RM7?pAJo@(rSLT{uk8t#74(hn zb7nP(oZ!nx=aIM##PbaA!5KCh<`L&HPC#k7jDdpMxIzh z)gN-}Pg~1Ra%9U=zy|Em{fI*7_uIHeU!O#^ec->sz<=)}lM*V9j#tX&7AmL)<#Xv3 z#T4)wDGkp>tX4w)F2rAOn5Q2Mm9PhMm250Xc@+34Mi$tgr9?>tJ@5W#V|nMxKPki= z6)v}C2qKfSS=#gz%NeM;?%AUZbvP>`)5ZLWpK|*~30w<=*j;>>dNap+s?Y}hYDx3% z+!AyFCVxk;0`ZZkZ=M2`t=hlH*Wep}*^0@+L}(Gai|t#!wbK z{@%q2dea<2h7#=7x{{h-B9Yr$`>LG}^=CTi_q!w^kt+T4v3PHk`mCjAh7;tm@Rf-I zpP|=j%h#w}=nFH12@wgn4tzAkv1--9CI;|0rfLSQlu(yJ zC~ObQe|#$-O>uEbZwBh7sBHO-2Q2rwt8xcETk}P9a}H~17#ldr38GzWVQ=AFNYNV~ zq)4t)bK41mD6s$MT**4v7y>o z3M?Pl=Ee><7%a8U?>X3G+pKgF1P85~gBtj&%4{)OEC^^AR!2;T=wH?VYe3Y*ii%Pn z*uPAST;7;6Af>&2r%ui4nKQkq+*boTC@rqBurQD%fHE*!DDawp~WiohcdBbY#60rugd(m{7AL7f$gj$A}>)eB?Z5s{P#tzDp!~@jGqII zHZX1xi=YaKJ`F1M(NMl>bk2I74$%5s6h{Tm+hQ%#Aib#t&XSz_eN(&j)o>jYQ*+>3t3^Ncw#N*cZ+_ae|UlJb}}+>#uF z)YwD{@0o(S<^;$wohEC@b0!&y&g%UbUO0#E{5!_96ow;)In| z<+&hKU2~7!Z!;pG8BX*>@sYdYRYSp}R4&Bk>_b;_4pxxL#2E`5uIxvO69*u=nt}bu zD5>H9sG)3@MfKPQ%0bPtSBZ|el$BX50fnY4og_770me-_=+6OniQ${U=nUR9Bs)+H zn7H__ab^9EoN=TdPJ1zckplD-W!sL5#Y z1IS&3pW=l%(AFIe7AC;#rF8O!Q~;qXfmFGMGn=k~mHnZgA_Ho9A7ARwE<3LX%VInp z*F!Lz?0Q!&T14QG5t;v-ffB{)%ACTo%IQq?@mqq@LE5fegpbUofwWl#Gh`8xEf6{I zAVaA01{@^4tq4l{^jfZYxHcDvMKH5y^>a;`gZxAg-jR`F+^;ajHW*+{sN24$WJhnc zmo5tc`dgJVlFl(16g4CJy^(l^`C9o9&Em!oA}gTChz*APei+mRA33oz8~lLMrCAM0 z{v0Q3AohR);4Uwq?3%Q>&#=39s^i+Mgx$%X4G4 z78{l2f7v1kir`T9e;>E4xWha)Fc={?qA+{f$&=FM9l9Q>M9jULN?eQi5f98-JK!G_ zbypze?-nayRAxv87~yw(6PDhP?;q)3Kn3!EK3| zmDb}#MUwqR=d%?)Hf8dLKHKk5Zd(!!IK*v~Q%nw;AnS*0)B3=?_p%PT5GA~LW^+8Q zEH4+kM+wMA_~l0^pa)Et#)tx+s>t(ROairc?I3rw0s! za*G1dyqJnIR~WWO$_x;j{=|7z8C1O_Es{q^3q>@gvl;eKt`<_xn%%?vPF1-rn^pb+ zbs6HF!(Zy!I7Q{%oLWFTQ^f?~oHb&wEpoI(Xu=q?%q1RxhTi%E_S2C9&|C5>1S>*} zTet<9N&gpMjdm}FLcC79WPvywnglSlBoL&L#8kqZTu?YP8uaw z*wD@aV5YG6#_+*c@9VbKZRmdCDt-yw*iZ%43MU13+8y%DL^j;-6w)ROrJ;6%c8V;TSd^3_o`qw z!GOVSZ7$^Hh*ey!L9EDAt<12pI1{PT^oa3|jUtQ+& zwvW0~5hHHZz5hNN9mRuhmG3YG%Lz=(4|@Y0sWQghZv;TttDsWHu%^UP6B|#YONN&I zTV<$SxsJ!GLEjJ6fj)i=68rUA9ZD_j(HsG9?9XVpO&w6=zu1pqLs*^i9X7DStKeC!u?KDzAk;mC z-v-4Vi&bgKDWF4`Vs{L(WYD&c0FM3WykxU*-0H0G`wSpRS7TZvDr(>Lb>N5KsB57& zqXaYBNX0P(8t(j6VKYDsZZ@_g2x5`F!Sam5V{y`(s^Gae4A4A?i!hDb3d}qP%gt2`R0c!b9LL?INf9eE znxu6a1lj$&El@a6brkcN7FZg+%92?HXnol>8+T~ip40Y8w)?IOFk zo)&`_)**w62*L?Ls4qat>&Dll)n))QhAhgU{#Jj*YV$Vex|&y}nw8}ky*K%t*L2cELfjaq8E45*iRK^ED0tNJ?&Z=EBc89IEHE5!s3D|%oGRdn zUN3T%B)`A92hZTc`_~J-N+))MmpRu489z1g$ z-mE7RMHWMu7xs+S^6DG^sTCtlz8*A=HevT6b$}0-#Su9|GBnYhpB+K?UM#U47)4vw zux2TX$>8Ug52q$_$Hu-#61fkMEtA3Nx*m{vKl#|8oc6lrb^s(V%;N8EZp}*8+6oUs zGO%a0au?rNX)E#kW0WS{^a@iiL5HrF(y~?7gb`!HCIodJ4vcUSawXOde-hQ2aro-o zB2UH~ZDEYbqQuO#_J=wXSS>q>2A&yV$P>FTlo6DqZPTNa>ca!W5}toU?e?<7eEo z?js~`m+?RLt;@}kkcf}$hXy_CZzFg!+*9othK@v{T4gP8A>ZB7?JLtpPn25K!kxDQ zcjeVcYBvOb?&5|i`doN4w9PDvd_HSikRF(s$W7*M*E(CXfu0OwZoR+&guj!soT0ba zR$XVI&(h^2y`W2?&w}|Yqx+ARkq1<|WC-akOKOPL-`1i0T)@Y?z~``o9?=E$)mege z?_~)g5!x1ob*1F?6JQ7xQ8*UgVg(Yxh^7$h5Rrys)!v(fm|tb}qyR+qat)YUrcWrG z{^nee?Tf}DDFe*@A@4tcFE7&vIUm76ce7xJLOrrrx8)ydJ&cYeWl4@7pA`()_`~o6 ze6?FA9cmx#mKN?q%7e@WAK0LXB!|R>A%o_>@0%#J5MXB~!V5BRrbh+s*!W2Qj9lj) z)&=yl#=+;e;+!jTSVVN&k$aHa10w-Zfe@K?lEg@%qwx6~aCSG0PoL^9!RD0Wz}M=^ z!SCxB((DR`Fel;jUF_Mc{+*HZI_SslfqySKv->cz3Cdh~4}sINdFUt@b^uJ9M5 zzWQ9@b3SqTt#5I!m;3~(2Dva}5KJVm`!}iXN4J(RD&_^d6d3=bvyNM6@}po$9PINn9YO8uN$G?s^yLYI7elCukeRsMK{V zrPylcdnyfW&}3&kP3`luuO2?*o*cJc*b?Isy@AlA54yY!m6Od{uYh5Yr+-<3HKy;wmY}+x+P=A~4^t{xuTS%OmF14I`fiwIe<{v9dM^mDfL_WU zDqeEpt|fvX^A?wANQ=^>uSK1{j}o&uQhloiCCPafCVehQlymc*nSavm_KO5sSMKmi zyDWbglzy74)%vyyqA(`T^G41yj}{`c+bZ*dR2fO)+vm8r?b}1qb9r^Fsb5FI4DNEn zYTukcJ}cQ1&U_U4sBVvDc!E*+OwO?A1W4EGR93u+^H>uST$gtDphxu6KV?|Kn-R75 zKf>TskhTZdm?-I7MZUVye){h~k;)Mt3$BE*bfO?9ba}Bl2&B5+7ng z?yqf;M5)g7`64}y;_j~}AfN2aLOvW`-5$ntoS8bbY#xD6kW^|IFI*ypY79k zz7|m`aWkMt=E5ZApu_ZOvHqONZ9V?^sl=BJ^MAklg#rTjPS07cbH=n(h<%woxxMc~ z`dQ~}S|0FcfH7xSuL!6(BvW+wRlx-_c3NPXI2_&HywniaUMb*Xu5D+mG~_OXXB`+7 zPXJ~v@yB-#_G}E@9)#bpj#vc^WvwRq_l<|c`Fdn+Dhj%jl2(=Nc_vBPN!wm44BmLib*W*&$bR_C2MIi@XY&fCLs>B-w3JU9ay-Fg zY5~kD&;e3Y{8L9i?GF>TAv+&5d85zSw!@f1wexIp(u6PC>k8 ztiZG$#`&Ap!9pLz`De`y?x^QTI9ZA?%(Me9ZyV`MTb<(F?sKob;=*JI8?k^M0ZwRZ|wf>PM6IA{|dZ@qG*L&~h-Xj`sxPrC9cT|ZEq`PsjZ6eoK0 z$yuMZIF4=GS-mitBo4!mgj{fGD3zPgq}59G3aPjNjSuY!C{qawAwzn>TdB{OavcB~ z(gxakTh&q_%heoT|9F#|6!dG!9ZU1i7slOd?#8BQxX2xs!jyV-D1D8S;g4M8ehgWr zK%U!V2RONXFg(Q~(yX9&S!r-p(|J1QAEvhQFOb<7Zm^7qg*gwR^t4x8C?{Y?FT8pl zpW)wQx6%O2vxTwe!Su^C+a`B|L;VHjj}z9K&bC?&wZ*+sddaZy1x+1#?i~ovTl5N6Meo4DZ=yWsy-%jvk6)GF;|lYDRCy97_!7Lv8x zmpcaT^QuV#an4Y(oh1J*u4D(D5rC+ff>Lp9IWM2j_MRkhe}xsy7Gx!P=jBz2|CZX3 zRz2Yd%cO{Taf2!1u@b_&+)T zmFh}oxdA&~wDZV>yUj+ThHp_WU#52^O-`48hGuqaNqGs3fCI8!b|PY?hy?Fg8@Jm@ z(|nNcI-R}Lfn{3Z4|;U&G8?w<_~xoO4cirMpxh{6?Iju*&EaLSuUZ^pDmtStV8ZPN zq#xiT0d%(3-)?H7yp;X20%Kve_zS@l13!H|U(+FMxRQqSlXS>u$T=w<$9?FC8gN?7aoJfS%?8fn5&8WIZ$yFH^=h#fzdIdcoUu_W+$QImLpTh6E zbKjzf!e)QY5!@+j^Q_+Mwmx{PgCG{82|x%s{#@1}d6A4_Pl%%DZhvx9J?_ujS3-Oj zfOboV!aH3#yndGFu+W~e@fPOPX1Mzr)pjRl6&^f~=Wa^YC5q*4G7^2`j|{+zbBc@V z28iau?jyKXr%3G|>IPW+SQs?vzw<}XXCt4A(W8fIFtdZK8o1@xv~6WC`0GCj5d&^e z(9XYq`{x3Q2?M~;Q0J~dZL;I>lzA)en=G}c!|15XkfEHY z#CYz;;-%wxZDKEi)jTwYyRq8?sy&gIG~JFD2ip|fEbdL5?p4kUv;Hv#ose(YnB4DH z&bvpdZ!9;-*upRR0Fk#OH2GOjFjs61A&x)@_k491L{>Mrk2=pRpie z`MbRBU~LR#3v!JG>M!55(}5aXinR1IQg?T*DEbaGnV8h74TZvNSBj_C@fqT&&rmAL zNqph%W3m{{Zts_fK*+Gm3spzbHFF_jFFd2G(*+Rfftvj%#e>g?FSi96ZYnJ%_nF&( zti;~|aCgnP0FyokNY^K`?RkAdKA#8ThnrTovu#-Yx*7>4gHPRrm!NDLR=JLVA(XhF z7RIcIOui%4WF$T%(+po~i8qt=8Hp!CxGrte2UHv9!Ugioppb3tDl!|;WHaO!VJ= z+OwjkzL>j)NwAK4XwBB@J-Ehe=ZH#H{;!p?&p&g3_5}<23d}%@VwgBa1e1Gu&5y{a zzwR;?3ux}o%yejQg<@TWc)KzQu{ORVchX#eUu09?0)P%ulnyBn04|Os?*ae<+vKf_ zKIMDa_Ep^1$LyBUMrDc%Eq7ue#5}c1kLEefO!ntrz0(hBR?Y|V9Xc?%!rGUfEC}~5 z6yFI+lR~>Smou7NA(oUUin0P#@Al?CVn^Y1yFV_{TL(Cnb9UZBD4>(C~0beG6I z)J5v!IK|o;0BQv7*N12N;WrZb^Hb~aJ=~1)d(?w}YK`8;YtlNejR+=1O1n~?Q+RWS z&3qzucIF8)udqOXOmZU1*!ivV|5^K->1dH!m9F=_!8evU>7`R1XX0-N1K1D7846Gm z;gAUMS38Vvnj^N&p*7HE+c#ogP`w1lYKs*Xw*XKU z(H;<5)5Aii3h5G98D$QCT$S)6OILi9t_1D%WQcL*nkp%hP_%IS#0@HH#SGe+AxCE=EhW4XyfNB~zR zRX~6o@;3V?j_|E(=@`2En6(Z13bzFPiy6GU0Dzf?#(1E?1ws^v12sZO^>2(Z9#FKi z$_lgpggeRWT5wVWuOVD+4ulDOS3Jo5fC1dmMS7I%O2&bjY}X(xY1pSo zsRPwVq%Y80%{?5J@rJywx{VBCuZ0Q3GQ@jvJ!l4b1hvb@qF0ze{*kLM$RTk~>VRO~ z>p-FV8>NJ;fUJN4>reFD{Gt%U}fOeS+H3#5yf~Du*!mp!!>U20pCl449$^*cB)MyNVa8H-; zkgN`=4F0DCo7=7x-Hw zaOD({moggMw1Er-D-T}aWeuQN6R-(*2WgTTpzPXMWpHd8QiK$c`kI}W63HrM2}YU} zZc&f=#tZgmcquxisdIAAsuVWEj5a^~4;32%DZI2h#)9SUVo(M6>-ZZqZVwOi9c93} zp*3xuk%p@&D=|*&0O5kfk1ZNfPu*K1cV!qg*H8nlsBlrx{*8p%#Ev-FiBHh#TN~gRF#iW z5=L%7(`B%e=tT?EzYIAEK~i;nq3@N1+0BS2MNu27-T46nLJG^C)j(@3Z$?ewe>NIk}i2*BRxt)Rq#SeB(BZ(=zn1^uZ~mO zUP9ux%LGcdSYe=BsDD}T{CL+q!o3n2{s`CtN*Pus@Ed8JEz0_|-&Uz^V9XCGT5{Tz z3ootIz*xWz7TuD^XS{1E5`x2$JQfF4i)?4jVlM;(xEWghZ0bBD?QUK<>?Yt1R*(`1 zN;-_A!gZM8a{W5Sg$bj){sqH+EjmSN;7?qb5Ez24?>vw(t8A7m+Vo!$7UaNXQOE`C zQh`wf0=ea85cV+q1_%M?7n!#Odf|p4&ElCG5Q}Q*F)$ePo*7_>(FPkB(bwodf%NT- z^q9M9%&*x6wNT6k0M90#y{KX32eAGk)hnnSygmFV8L$&9mK`W;!jcH>Ovk7cYYa;4n2D<6c@?Rrhu+1yHErG?2 zqWTR@>S`WG;z*&08sQH>K*Vb32(Zqo2G9>m(1%}v)|vo8Vj{rv+H9Tr2safv+MrF( zn)0Y^fOwq*8PJg=A{w@-Zez*H(FoX17dVG(!WAWv)w6I^G(J{rpJJ2A3ZyOkdr&K0 zobt6DP%kuA+XgKN#79?xX%H)jmkLxs0s#esx79;=gN)4nu0Vi__VGt(ZZ^HALFrI` z6FVIl_k#PFaziCx`N`xk+;RXqDE`%df@2h#){&8hYa2sVQh?q1i_mr43OH#B13EbF z_Ma~xtk1i3niGy(Vc%dL9B^X6iJe1;R%VpDF&?5%`_%K;642x^Z#w*+Jf{@`7!j=h ztq_PM9}2RC;7PNE*8|7##$UBRcKKFOs^mJ?uv+#t4>l=bkoVRFH{PN9VTG$;0fg<5 zd2E7Uz(HWqTd>eIS#GQt3E{l}O`s6OBMerM>OVhvtQ=sGy1pNT=&JpiBBK-5z58qF zLtt(~q(qS0iUuAquie%@1RUc&=sy`0dJ@00CWQfv!T3Q9z{$TG*EXwljMxyFcfDLD9aWc`&bXvKq<6OjwA%1;rW$qou;~Y7ELmsT7 zh{6%Wkv#ZwKTHNUJ_Uo3VD|fKpH#p`Y4W0jKE%wlowhKr3#Fsq#GFk(%uT7_6_UDq*=)_)O^EH&I%9a&SNd0vvhDVJ%{$y za7x>|oWDaUp)^5Q)@Mxu!itZiY0;76B@7IBO50HDRtT8nsk81pkQdcRA>^Zn6aI-p zR6Hew*r3o9z!SThi_Qn{kL<8h2aL>;3E}VhS{%+JhKQ0P=f1lEPU;%6<~NG!v$-U` zf)-6);U?lz1Gcj@{9>;K6?dKzEu$uB>JjRA`~c*wc{WKQU(vjhstOivb7IuQ#fk^% zIQkYq$ejo9AwhWDk4F7o8unJjZ#5Pa2(0c#yDyx`!Yf>x2x60$^)&1q+nkQ~t9H&O zV9Pe^aWkCSQ>^|soy~hs|3ZUst%Du@9e(FV+6O~U(o`l6Kn?D+&>k&( zd)SV2F$AxA(Pru3fP5dN}{JIMmPrCM}ldg#YEm%9j1kpwTz<*RKX-+ zg7xP)HY87qKymzK1zv}>y_}M2jtzXli(@482?9MnGr4P=y*P=eX~GZQu$|g$*eei1r%{b0 z{)OZCoLsHh{D=5d4Y2UXn45~qycc${?Lt(l+p(vDL{FdLUB%%2_xt`S5<*z42~y~c zhh2bI^-5}9^C?(wcGpES-?7lQ0Z%Om*MHa1rbKwmxgz0-IhydYSqzuc7S4iGA;{Vz zuCUmtKkY|(+wD^A1Mmd z9D)#$G#K>=-*~(n%mT za2g_P;+5A8%s=H#dAC)IJC%u z9IvLBNk)e;Uo;xdQFA{ChRmDzBww;BBU9hEE{_Ug|M&0sjiTh>PL_C-k`68yZC9eM~wE!}<_^I~lJg zg&mK^2_K7u&!gbV)<|nd)Zi{}4L%mKLXxE+2xOg-Bj#km2MVqcY`DhdSD;VOq&Lkw z&nb!0U5zH=`>8vsEBNlIlVB3WF_AsU(HDCgSJqxEV3_NJ$w7+R=0S1y;l#*(YV7Jt z>pKiuV?*)Z6J{NVvGi{J0Ubu+0zY(Y7(6aBW}TR>z`EI~8KqG1%gQSyDY%YGz(Cap zeLC!UTFz7ieEm8;k8O~>Tj|^~A>R44EEFRut14(>=wVB}W53jAf z@|XMAnCOI6zQ@LWyK#*IAAB*CjP(M(O) zzakA$D!nU8Q~G8x8mec~-(UfW!KZd(&7U=honb@CN$+vUKtm)Ei8DPjA3B4@qs8k1 zJG+7u-O=_pmbDxPDx`}X>H23m^jBXb<|fib36ZcR==#^4fgAJ3f;q4_gtG9m2pC1g zvR}O;HFKIt{}c;rS~U|wYvEYgb=|2@2qE|+@^yYA{RI^NLjqw%9?&mYeevt6ot{m3 z-YYg^qP?kPiyDU^S2yF9E06o&{703tt6ZSvTYARC`>7IlD%@YpG_slM{vG_N`wNvo zpv+GE%#04Rt$Duavw*ubCw9L@Kt8ZQoc$x!3)W4!?K1sHwD66ldIrJ%Vni3G}| zv0sK{4SS1z8YGCD=vLR^kaLb7#}96TK5DJ@CC-z!J=}Alk_R5q`3BzW4H5yP~pVB&Qm?fyCni3LZ=HeIs}Y9I5w9C3|E}NT?fEY1 zDgXOD9dwY=)Xa8b-MkYqFJrXV^%xe{VD60c5+huMGNtFL^_i9)dAr=a3{BlmBb(lT zVdh*?p3di9_=fxHlqSr*yrF8idTsT_B@gZT(d~Of9q~o^VIwicXU}P677D|(+i>C@PK248? zW$OO)zaG;qeS4HPUi(JlGUhb)=f4YX?`Me8zF>~Hm$<}l9)3>s}H;v|uw1IQ1%Yt@A zga1S?%{;on-2HDx1?O_8AKQ40XU@-4V8(wpsyVN^0{B(P<2zjP0Oq9ka?o{aM>iEi z$KhyqvQapA1xKIAHlOw%bTkEPA8ox~@YESgSsUwsm z@+bd2Ezy59`#D+;Ud!olr5Dmh3>?K_j+LCn-P)LuVkqyOx31Q?VViWb#XsLTZqc!% zGs#TE3|akim)}ybI$McI$(!SEiAv>n+^U>&6E7QTBTr&7dLiZM$~>{U7t8REhwjd= zT%SHu@dHSCx>1NavK$DxV zOXucZY}E;m-t+js$-ftSf8l=Zla0|%J?apx3cEP5stS88z&ty}eheuvkUvF#gIA^3~?_&EOHm`FzKjHkaiLH#W(dT6mUe)T!9TxK1A8r3hj?aI_| zxbDtcA5|YG3)$2h-$`3=H8_Sw|H?TnfS(vMcig&MDErkG&o{AbzFi6oJ$!RiJ)WQ2 z5%+w%*QlvT`B^;irrHiKBTeQC~2BK@* zC~UtkIF!b{Qk|idEEmE%2>a|e9HOxMq)wdw}8-z{;LFaRcTt&+6OFQ4Rf7s=F4Oi z3s~=$ANF`WP9eYI&w1+iD><&ZEJU}{jrWR=YaX9Gf3^Kgb&IC9=PSo{XfYwib#a78 z?qrOis90aNI+!5i#6BCkxnbK`H5WFqV6-c$;__`Aav1-Z=d$WEBTs!hz4zkGW5%wA zjr5a(!zZc^G`}BBL>sl4Zcm-JN(V^zmb1rOjL1I_YelKObDL_bE zeIq_7jzjs`Q~}FEl%vwU&)zMWLtQhQ^xh0JB%T z!5=PP4xIj{sQMyWG>7m7g7*S6KUx6wi&h(!d1r39pQhQ4;f;Pcs z1$AHgh!2zAAslBecBb#x?BU0g#k?^aoT?F!vnH3y5I(Kq=l1baY>vL>rkZIJJaha8 z8Z%^`op1IWepZj|hQ6$SIv(RV-`ji2^YS>Ll=D|RLzm1IYVqHd)k|z!v}wylMv|ee zYL~vByHEp^xc7Mz2E=uF1xK&qV}%Vicp)PH5#i_?IMV(O;IEAsZCRqA~vmA zwRf!|W@EHgjM{tF9x;ATzrTNy+?#uEp7Wg7d7alem-}enB=Yj*g`S&@3Y zOsuzmnm$V`2zgkJ5fU`=vTMj>U=Z|yP3Z=p-{y`N`lV6Eir0xvHJr|-(4EKgf3ef) zp!|1j?)jUGNAY%Rl}_Zjr}c)4{sIFpg$NJ$N%SejpeLe}ZOrjJ2 ztd|RK$Xb9SNLBl9VHiK5Rkz1bJArE@0keM->zYkUE?zgD79RL6)~}3t?*z)68}y~W zXB_%lu(Q@1ZRnzq*wm0YUbt*R?bLn6s_-+|Yf&;ad$7j3vx1SS3Aj|`h# z(Fc@qy;hg4^TUlzz1bDphfacjWc#8K{_NUEQF}Tr(`rMF^Zt$dDBZNBi;V90H@8L# z|2{dW@;-SYl&%<{7qxY!AsyG$l)pYaVKg+TD9{<$R3Mks+h~}cu%rN9a(Rz+dd8Y9 zp8Fh_y=Pm__~g-Zrjd3rp>8q|z^@mcnWe=(I2t@j5V*1c{&?Euu^`%5+YYixa&Y<8V>68ydn_T3%_ z`n(YeS1C%A5bN4($O9w{9b2qyF#ZfLG~|o zoA`R#Y&X2I4W5S{LQBSH*$h+u2zGi zC%Vc@4WVy_J>_pbN+~p2Ec_BV^j-A5o#<=3 zzL+I)cogs02xiBsF*f8l)LkqYtw*_>|4GPd+5u`h$6r{_t)?e` zY8(?aZeA8@8n7MSZ;o_Z$PzxBP(Lg`Uy5ryTdHFae^y>Tt*foN$yh}=o8w>n^cEN( zh_gv)u1lmt11LNpQ7i~Kc*@XN|7CZD!BBOvTWBjWmb9kUWqyK?!1zhu`fr@O-UwQ+ zNe(}6vf(E*5)7^|^1$czly2BZJ}^&C1i8=cuQCtm*0)71xR!PV4^1^+k`f(?OI`^2 zu$uYAEteD4&+a3V?8+hWw=XDDs4Ao}%c+SI%uBKalxB2bD&QIei+5*nI$E+UYENr}0Nz>*$ z)cGc|5woy$?{G@z;ucYIX{Elg#Qpfs6i4^Gl}n5nJEFOBVfSxyr5Pt;yOX81CPT_*Cwa z(z3rF_>RKQRb%~dQ%2qLi1$GYY&(io3+y|$$)ss;Q^wtjyA&1U6DX^0MFhNSfvwB} z?H+x6RqRCVOhkN?vY~FG=PU2+2&mK&_`%R33!~i_fh)Z6a1Z7KC1ZV39QZ%kwNlsD4i<#`S{`TW$U&bn@NzDSRno6zl6nL|6)k+fY9 zV#9C&l^Yyo@vppM2pL*lF%2!rgK4My$OE;Dh$0rQxFDQDlt1%_xq$zC#Csk%wkWwb zdBiM?-76^#=@;r(^$EF|w{ymruwFN9Nx5|?$I@=G<;@nmmlnpOqvjJLl*+UBhTb%B zY4zSAp9UMP=~Yxp6axL<*b~Hd(E?W)Ypah;Pa$I+2Ol`h`t5 zKCrv&N@1`2JQRz@S!@8$=y*zp-~xEZRCbq~DOWwGm%b2A1(st7lreHVohgQ54B3|t zZfm4R&oy^#aF+2ZgAvwEC=0jNFbTN4)UeR~(yfBPNL;i|EygTx3N+312**kidIZG4 zB@#O7Sz_hxwM&M%+fgyDcRvAhdk*HS->_^N%~pzdUoU6Xu0Xv+{-F93p8Lhi#>=?X;i=$MxE2m6diHfsPYFFpX&g_@96p;Bsgm%0J+H`vQUMr1G5+3FAz zH+>c&0btR%QO9m2gosxkM_G-Vd(5#PkF5Gs!^e07zeJ_jaN#E8kI9N{Y~N^d1?*B^*9QW5LL`9gYsv2)N~U#4i~pL{*;H#t_~8b7u)j zIYpEUYag|jz6sE4Xs+yg=mr$dg4v;KL)};355yC(SG?s@;U0siS~z&X?Lq%%DfaB+j-p`3!lGP zHPACdjCmkyxIp|=*mi+zimvlL(x1PF5NWGXGCcnS>!29dTbal&EFWW^srG0A7sNiWv%2)K$LnKF_nv0e;3Q4=z1Qn8ai(r6-5mFG#ZMoGY8{Cm zD{;nJDZD5T6ZSyGNk7+o_ldu$?!Kgs|AQ^k*l$^FXYaZh?&qBt+nT<@M#pPqSv4KI z2>i_z{mJxKBz@igz--0DX6x97%+upT9Mf~p>@`vY#bFdvH`UiXf#0!A`=OB@lcGl|C(4Hz* z?l!*?TK7dyy{48Z`s9tbVNYIo@j0dbpgGMld4Hu zy1xvL3(vLO+M?K?$IB<5pmHpo2cu%xhjyeT_nfkgoJX0)74!E7MLgp5d1{UhEW+g& zJ=k*vk5oo=&oW5c?s0Pu-hHx}Sm)=l zFpApij`-CfQ-$suG%H!?SlN=ke*zWuW)FBz{BF0g(LEQi#9cs(Db+8+`O?W!KFlW)j zpz--XC6}$D*p#}wSdTA`Td|AzE)qIYK4P}gZ~j{%Wq>2uICfw4II~slz3PGUE1qW_ z_S>=zfQ`V0LIbMqJGn=p(6?_r8OCl?IaC)}&%@qWuI9$(wOv@cKdkpr?^h9myYVV{ zd495TKHpe(-JFpdEobRGjmCYx=>e*7>lOE&l&2R_aMJn!-Lh9p(o#Crf+>Yq_sP*I zqI42U@=uIUt*w1Z-AMQHGwnf|q)yY9?UT{ntI$aoK56-$C5peP_?Kq(F_UaL$!c|S zj1`rPiefJ|Cr2%KUi1#bx)0ovNLS_VR-_2m%H7=)3*z+=M+$7^B~*-g8-^}B9=7eb zF0Nv8)&(cnAtb7`%XJHv_fq_77XDk^YLSIpL2K-cQYr9{Tk`7D9&53mxpB|Xmeetq>~@#2X0m%gub(!=0t?qaCdm1708QFi{HGS&iB#ZXW-&$rM)6l}~Y^8{8=F)`( zP=;i4s!AN1CkYgc*WXYH^)0Wq?0P<3)tEi6cY|oi>Mz@AiK*OEq}3^kC|O~e&%<+2nxaqm*4WouM>r%BQyVrSdJ4>s)L79C*&r9XCXL(+Vxuy_wkf&3vb+9iAP zAxw22e;C+IferGGux=K@26F-~o7=eNm`@9jRWL)_6EOWdl+po3{og*{0E_b?Y1x0g zyy715yMDXBl9WTC#^U40TFNy=NU=JUqS|FZ^L2N3lQPT}dS1OfAU=I|_5kW#6k%7m z6pNR zW{UVAFGK29p}3Y>dw;c>S|oODD$zdqr`N^U-^rmuo9L+Lzaq}7v?}sP7Z_Ndu{K)# z6c+*avqc7noJQmoVhxhU=eZ5Oc^5U$bI(~%{QHb2R_Rt0@cX=v{>BqIL10hujl-Om z6<92=aXkA;I1EWf@`bxskg6y9)?HAuPiM^lOjCLAwMEp1f2MKow1~?6EeC6Asp*7B_ChLA)Qq;J-sJDG7|2Vdt zuvZe2`~<^vZjwKCL5ja-x}4G5xVbkS+Q~OwPgL#|;Jb?69Bjam&6c2&rPFZI+XSyD6l)Fvs~`UP%&m`M+$JtE3JqoQ+D`zMZG^^66gqL*l`or!m~ zP9ioxz`kZxhCKQHTE_VqO_i9p#b;>)O4sNJv$dNwosY|X{am0Q1*+d~J`gW7I<6@h z_;%U0eLo{NJxYkzc2H8TiV$YSvuX4gsZPij;dfaq=%NWA73YT6%1m4>s+4!-y^K_DNdvXxU z7D-ofin2yB>OUg3YE~t>PAAskvKN|!E8g?U5UcTABg`8=#fJM9QHHtWbqysw&z(w9 z`nhXW8}G$H>aXvxi}ahMo|zfZz-cqd8g4cFn# zBy-LDZA!5)Bg^XTPDhQirJ9(q@oP0Dor0f5x7VQt!xJ^uFMjn+C0f5YAR%03)6(?X zDumXrxNfIF3kfNuA|207YYyA7ua(A|Ao^O3+wY-;uhcgEpeerW&Sg=2$xFl+cwyv& zqa3UOrei}ES^>WO_bR+C3mvXwAZlxlRgYa|{ra=41m}3!wtP2(k3{4s1iQO89>}sw zthymRWDg_C;04DU!7CSE(V-L8pz6xu7zYA%+C*6qA+U$KgM1eMiqg#ndR8ma`keC5 zp*+@Db9Bo=v;qu*GfJ=Bqc%k9E8%73_76uy>Ebj%=Ux&oWGRA*$A!PQ(f&e=tnn`)X0wE?K^I z!*S;W7s+^lQzQLgB=Pr8E-$`|aUX#xM`91$p!qO9(YRsx=tH8hqslnrONL)27ggJO z-wghYnt#xGB!;!vZu4E5)S=847_mopPj0pBacTzJ*!#?fc^ z<`m(`>?<@3)tfUeQR-5s`C0gK++CpW>3E{qSILQ{d9n8qSc?b3?I}*vuEw~Cie?70 z$ej}lqENeXC8{w;Cg01#B?&jwRdSH<`AMZq4Sp?Re2#hdW@)?R(5wEE;e^lem1oN^I7562 zhn7~lR6c*t6W~%w&%Qgg$R*=MREB%1_BZwGd0q`Ds-R~*MWxu%zRx+dO<3zDd}c<( zzOt}Q!o^&a7$hLx4VP#otih%pNDbLF+>o?^xllUu3};UUG9&n0Ef56?b3&C_Y`Kj& zPY&)LMlnE7PaWPZUjDs-AbWRQdg#S4yf+S)#EDo_I)<}~5+**Z$^$qsnmJo22cY;yJ}p@%0oDL|w^6Cu#K4VFY2 zI=FPq_rKk6i3YdH+di&Ous{u|Bu3VwXSV6AMU0%#^mi1XUUZ+zrvBjhJG5#!}>+&bG^9^m0(c$)b<5G z$uh^K8(I-sd)vg%`))d9lJraS^bz>|YxVTg5~~p{sK2A4yZj_aO3hOrs!2)St88k^ z$+#FHjMvyzK3qVjg$Ijxy?!HdPQyho0RH$XWt`x4XrRuAz z1ziw2%4@$y30}OT=1z>*8Q%~j(Bpp0+oQ#|<)Kof2hqcO%R7G-OKM1us$3F(rK$S5uvi?&G7D5f6u@C*pJvzzz7l= zahW~N7at4!5xO3Z7M^GR;X4(u=|Ni^{10#W8^jNgR93&-o%%=kK$4>){9iOyL?~%p zp6L|Flln_|QWj@3nsMYC%1>faUVLQ#N{7lZ@~m@Zn!lrJA$qBqzoY+3Q{*+0<(b#p zPxy7HDzg)Uj`rd35%5%(+ZZD6o{ZEN3zOJOqaVk(nG9QJ2x9(Mk>&!6ijw;;c~kDFn^T%p5P!|BCu8vS3=na3Wu%!{M%Qxo**5LsCX#@PUF5<9!$ zBiFxlFe~<@JAhR$w#IB1xoHTzMBjg6sf!Vb=cU~nSubB-e@nhGgv#zT&D zCW!mV{JBc#^2`a`%&k?eQlSX9l)32HmVa(JP@`-E*D64NvqW2(0gLC=Ga!?kC(%MA zI#k7(a={QD=<%|gkB*B_U59@^mm;*7H!Op+tS_KZ5+GTM^zEuPh?BD5<6F?5))Ily zJ8iWI7@z$uUK$&57d}qC^$anSh*$KImxCVK6&p|IU6F_0kx9HR`w>{! zSajsSMHkd}-D4yA;^6{(jdzk1_tsyWeCHa%)oUYrEn^uD-=%e=K*)6%T(^kBVp5+m zo=GDp`VQDP6?8O1E~sYHxO3|+8fs4Epy6@LaeId#Qq0pt2T{2}dtMIY&K+^hn|+D* z9tuJSVxI^5eZo?mYiz3&WkAeKk;m!&E?bFs!G#~;O500k)l>081i)j@@BEVPTC>f4A1VZ1q$P9b zSQZ42yTHz4gea-iy=@k#m)9v)`DGkrUo)N)AezJC_XQ;LUkGkEh4)YBtcQ2j?y~z$ zr9+N+wF-ju`ex$i)mhT!yeeH56 z;MXtj8EL~D)llq&;+Z61J}`3fqQ85uZoRfV zhR8uOYF!sx3jqLb2(C|r;Oimi4F)tAzg9sI4@p_yMdwsFX-5@q1INu*aJu*B%SjHe z*Cs9_3_ucg4yE6UP{KIy%trB(1ZbRCKPS*xn;@1=!iT|}6wITjaCESZqilHod%ljo zKJXmS`s#{7Rk{saMw4j?dD8`fXCF7IP(lK#%Yf1-PQ`vIujj;9ZHF@ z;2>Gf6hKdS-##hgRY&0zNB|)5yNqjB!v(NdsgPt<#QnASyctpe;%otF8-ynOx32pQ z92M?&F$_7rEr8Y(_CYWp4|O;*4tgg|ev7mNS~`h!CkMy=a{~tDi|8pbKJ@_spP=Ur z2LNd#zqkrzmGD4QRiF?g3jMT*AlwhdqNiJFkXPLsYR&vUPRHz&Z5e>BfAy~4G4JMC-UI0CbJ@nW?%eo-gWq!7UPIedz^6-UP9jd*8K{;5d?!H2Ma`bP#z8SvuH*0IadNbIlr7!}}IB@r~f+!wLSTJl@5KhXja z8h>FvZGw0zLQww~xxKRgfIT|4%`}kVcG#%Z|C8+K7IZzTIW6_tXl%|t7xjGAY$7$l zNYC^w0TSm)TXTeD4*jtF3v`8DGKON1G`+%lThdYL0pkzqp~TKoOIo(i1mLi*B3 zPzdZn>e7JU)zCRDKG(z%?>gp*0sZEn+4?KNxK z-v;@9WUpoHWEbu(OPrvd|6VL*hoh=oxa&3cqSU1sZ9$UlcaQ2Ga#C2Xa9i-LobJ+W^uEa{kjz9&#*wWU- zWTsc$`DGUUnw`r9WoccQ&f0O}-wJ+UDcZ3;0KxFE=B#XYQ4yb*K%W&I%cR-V5d57V zDd)nsFCwa6x;Gas->O5k%d1j%JN#V&y%l&SaJZYfeDNG^D_VDYfX8R z2Ug5$XvW?T1m(B=1iE<>y^th%{7iN3 z*x9$ZWe+I`!ASvb{Ia$t~Zcb?40SaL2$kVLwCy;6nTP!$`zAPF8PKX2o{3)2U z7ibH=ecTTbjVHBg5#7hP+$Xtz0MA*IJ(PwHduo@)1Mb{cd^jryw9J$62XsMqF@=nVe8T5a$TX?%B+$`n0ptdK0Q z8VfGM0{E>mS!jR)?oIzF<+KE}ZMlnV`!;~>X{Y-NKXP{OtSn|(5$}z0Xom@50pA3_ ze1g=3#UYb%lx6eH+iwQT0^j^j0SCQ;RDA zu8V>T%K?zl*xgQwM*a?`pIo?;@a|#{w@n4ujcFx@T}s^ZS14)U+-~c%z5hF{kqn9e z?4mlEg2V62Y}Ym=G9AH}TGEd1%qJ_~Bmw+ze+ZkiebFHz)GfUQ&}hQd{xMu2T%Tvw zoTEcwTo*YhIv=3HFy{i`D*S{wf=OZeN%$XH7%B>5`A;ORn%8;<_`b;E<-4VvnhN4p zACU$!c@BQUvZFFPn-|OtI5Dd!F)36kL)05gu1t#P(fg!X`NBZdBLFA(P7v@$B~AYU z2S5RDyQdC*M&Z>{GYlw>R{oQ*nn|SRt$}MEByZL#q=U0Z+3Q==`eo|OaFmU_t zYPtx~yk1LEx=BJYcnkY4cf30QxntB(8NXHEyfZ?(S3cJyfGi*Fq^!FQa{rTv92)(d z^pUsA5nD7tiP%o02R+p~IA6 zjOFYG;YbU_EcJYkGP@!ymp6w@A{lV79^;uRqLk;g8AvcN-HdxfaWEJSw{xrc6TEVN z48riAU@=Hf~scKo|}aq*zy(@nHI0;wpQ!UK=B&o|cHpaz=LOlYgqvco#< zX|Di4(X;;aXom>Vlqg6>XMBjU6~5Mj3ooiYef|NEmBNkYkJyca1h;JntW+f#K?GiT zwxkO3frde?U&Jbw8+M}^FlvPK>JCZ^#EWf~@CT55dz2d&b^5;&d6D5O%|KlX=QKq^ z@W+DdGkgA>wHJiA3xMhZeozL|LKfAgnJaPlDQ@H=bg<7lUUTR!1xgw(s5sindfD~} z?%On%jzGGy3-TI1qS^{7#;F0rMAyf*TTlZbV^sJbBKGinUXI)^NG0q|9KMzqq|>Lg zYm`Tu2L!TMoMrTdXiY+8ZFC6JF~r!XrkTjxj4&%80~vnII!&1^1{=8js7x*59qaGd zf#ye=K^ONV4sdU3==!l&&S_4U0TAeOwj!{Ld*;_CF7xb$t86Iz9IpH zapB3GoL2e<;$xJZGg_PKEcWvxC+^KkfA`qQZ(7())J65`DK`*T#seAd`{pWelH@II z$O1f4FGC$L)?P(afX>ccJ3v*r-ddVKJaY}SuRDnk=Lzdq#KOJiU<4411tz{G+8Z;&?+s1C~X!3 z)JNhmhJW)bW3`Ca{=WQe+&^fDS(5k-{N!DE2#)8$|F9-Osj3i~f$wc@wX5;-wG`8O zeFkY;Dv`SFpR#?e%oYS}MamN82V&t7+%$vde;8hqhXX;wNkIHFjM{x0CpelB1eWcJ z9SC1CmFYyy4H#I7|zPWsZVc@Qvu9A%fAC8T3qZeIl$ElphsZW$|^&PBVN^d(|Xa?zy4ytX&9&{0Vn(g_4bTaZsenC|1B z`=>JydGX?S_w}-yKdF|=hZ&aP*d1e;ux3(|a-@GVv|>{7z4bAUXP-%eGrfz-5nge+ zPn?0n6H3u3O#K-YsA2%Ux))~6ZJ1^F$k;Lv;KY{m!#nfkiLwnPNl63jRu8YiC{I1w z%U&V=_E#g#NV`FzFu+|=YI=KRR?{i3icfg@2^=DEpumG=+<WKBNuu*Z3YRn~q&-(qz%MC8^F4BVv-=)?0r~lT4I zQfj>JbY{gtH^*nJZB%KsVv6Mxn1pb4mMvJDI5|{a{ zcPjJvggR(9L~zIv1`{n&#TMW&X=#&imS!Z+^O9PTPfXEqlogvvEn`fHnTjChsI00* zVZC;IWKep2hbCd;puVbrh>s{&EcVnNioVz4cC&`{}9W>tWZmnm`f<1{;n z9_~}XlU^S>fH6{}6_nm&(EQ~>q2gZa4hPY4*G{@1LI>@s0#<42+lUmp2k*|V8%};M z3X(9qbUs4kWyafm^EMG<)IS2y4SJSn$xc1L{HV?^Vn;^UD&Zc?o7FHi(F%Y*9s-5Z zoosR)=ivlP#-cndK|hY3S6ds9wz*rc*Tt5LruUY-0F)CUhP=O6dx%Y%^UJ)Bj>4`< zAl(|pV1Mo3i(X4*I_4dnJwlp@>C;rELk44$Qos-^Fwh_+J2SXug)k^*`K&~uMf;t9NFgAWhqz5cWHk)j(J4vbUK<~^6Ay>^gv@65O3XpBzX+cWt6Pu@;$r33>g?j=>(dxWt&Y|& zRRl*IJc67isN~DN00t=AJgx7~Bv91f;tW*=6#YEwB?frSB=`^OKgs`9di506Se1>S z86uA}ued&u0ls`z?phpCuyw8DAOSDFl3I$6VmhlB3Hn!`mH&LII9iji5PKc)!r}p^ zawFmPHKFbvDiqQ+j6UaKG|)~jI2F}2-^u%uyFn2%8Bshqm2mr)M9;$-&utOuTJNUH z?0a5!ps$wIpE^fk7k934zC38N!3n&$bLNZq-Kloa*}wdMVK$xz=CWgp`rGH|3;}4Z z${Ky&E%2tx;?{c1%7uqm=Bns`5(7u&&t^3x1f&vo?^^~gAUa2G6kVaKc8Dc zFB)O?icHRmuc-!JsuEsC{4uHD^5VkE3@&U%dIRpNnMaBnL%u{L~q zlR-Zu94(>etHz!}Nv)1TNN{ri)GJ`fMjETvxN{-;VSkDxyp!v~?zYf?)-j*}> zDOKOQ^1W>TBgrWft^-LiF!qWzx+Y3IfmKW|8U;gc+$uAaZMu!M_u96xIuZw2T)3jW zbvv0!R@SJE?caf8Wk2sn&B7{No5|}JE}%6Dnc_N^6V5^!hX!HW0sz5+8~q5-O{4Vf z0kwWvF%T`e?`RNL@NfLtvLq9jWJ$e}IuvAJbPARqJl`>;Ui0YHR=8b>d;eY=cz%&~ zw*_z)HXbr+0}YZ2siWiv`uaMo7xcctGTl8bX>T1g;IJsbyqA?#1O{v5DJy$tF!r6+ zuMi&`ND2#gI!BU}wzvhn=l-v)AeFrX;{~qyypV(~lg(ymd4U95NG=u!a;R6>zJxV< z8bBxhbNF5|o~qvall*J^%&ofMDJXJd1HzSB0|e%)2-Z-kiw=NCjB$AXy?;t`K_W?@ zn9}Xy6ELR{69iff8ZNDUGRO^k%Z(vxIfv56I_|RbF@ioEs`%k zcxR#!KUt>TGQ|nHtY&jkH(=qO+F9E{OgMq1@c9T}e73}`tu$~m>RS7bBq)WS(k|T) z1=c34hZ~1G?SEOmCM58s^Pm*Z6MfXN6SVth8Z5GW^02l35eP;;J`l#>y^g}~PEx^u zpj84h%qwh&6Yl{Sry|(A7f;n(I44H}8 z!gOi7zwna0)VL$2kLPHO4_RYHCaYP^N2&t9aa{A-_jA3~L;G16r};Sk4jh9G>5rS+ zxC+&cbyg?}m~!SVlNI0kX33|*R51gkx%R$w%jZ1To%h`xch~LOSS&B!b2s34%P6-) zKN75fkw5N-tc2lS_&e{{&1%il&b)Q_OKE9Y-B^c_+T_o=hMuR`EdS7je!Tf#Epma3 z_+ZZ?456j0Mkz)Qu`$C#RGkY_!LYJu=0}SF0-E{cK%NLP$RlCi)TdO!)Z(k%cp)Bn z@0JaIlHB|x=hNl75F7EVh9oAPB%v00aQ`(T&HkLlKct3wRLY8jXXzA|$PAdpt8R7q zlp*$aupSi2fE5U~&zB$XyP|55;ZNGFpQj<}12|MS5n)27KhslGi;4lFS^#5WMg3ckbet1Tvs`t`W3)y@s?M1n6(PA#Lt=QAFp`S9q5&jdf=S3p?jkE&Ss*Is`!= z5?5)sqKBA1tbd`5GfZ-mt)xgILs*8r;9Xb2n6snEm=V|=!R|YTJJ4(BZ2p#Q&JJ!< zW$){-7@B%zKohA!!fzCSC;sDo0y<^3JpK2dXHW-yTh$CSqY3(EZ%SISD#UFt7S*a5 zB1kcqpVT6a6`GRjr7E`_m60Kh`B<#!f+V5Q-gqi+#efyW@drS<)Y%2LuG)|wZ5ba9 zFs|i3WGb^@V3$T{wTkaRA+EK=+Qy*=8KP!v+Vp-Ye&1Zh<@A;GS=2fN@ONiqHYEr zqgIt1lgLZb*VPk9r$+VJ#Jo-^;vFnD#ODG(!(yfqE~BR-{+x##wT0&~QhRzU5Q~}S z9#Vn@`LDK)djELa^c?Hg0w@bc71igt3xbw|4B8c!^=dVE=bpEW%&6|i7j_NkSV(@j z@pI+kG)T?;coU7aFWT&J4zosdv5HQ7v#Zp43XS)cggNiLjMY_ptWKn=C!Z_9#9SmT zVOY)+c9QfVs$E@YnN0!-lFA!+vqB1Q;R9vjA83dPFCvx{8GBLl=Wbw@uNsx0ZUI|3 zWN4Gu%I-F7Am+1CDDL>ruMi9^G@WTRFkTHq`Y=9~AG#GmwiglpE;MsyXMyFBO7X~? zycphwpqe;iK&}6`hP<&2@J`p00%LBHq~A?_P1kIm_KwI)lMcir`^vqKVd{_J&5H6~ zcd0qbBTJtfnNDA82sSA%YG&OIq`p3JIFeaQdHB^+NfmrsPZG=^j+_a_3s+tTySpOD z^s1_=@=`J|F!I6os!DE0-+klLPT@Zl{bG2*-H&Q zwd)z_j#5vjzVb(AtoMuFT3xlam-rdQqM|9kUyq*rDEKzNfVy{5W=wxoB1(6(D2}zh zsP!nBCNBE-Jb#b+$#dJGtK59-JwH3byVYnyNyUCEI#GCVL!c*J52~{uNlSNojpUh( z*GJH7hl zFRdj>_nY=$%Z_30_Cp!iPm7g*)wp4FVS7j?p5vxF`4^!i=z-C}%132+_vqmu8vSUo zxvP&<$L$QPQiZwieQTLXqazXcB`_2vc5O#Jki8F+c7=W{t$~#K_TKwBdJ))5UCwWQ z1*Yr1(E4MtZo++Tvs%-684B{Km{X`e$1PjfZv}%0JPa}SuIws**ReQnMoV~v8ZCt` z#5h+{nRG!B*KSR3RYuFb3Uhexfy5AUo(10_fJcLU4E}W!58gsP8sQ(w3R|`F!orQk zTh@>y;~(KH`!*fxJ|TPpNI7KIq=a9+uYg2xk}XMk=So>v8 zO~nrmd6}R)wZVV-G5h_>wnTCZQBJe(`Ec3Xc~aIL>MCSg8x{LHX$GR7$)T(2t>MC| zOL+pk=NRl8Gi8Q(_PO7`*5!`d%w$w)MvBE^d+TY|Y?zePVg|@t!_ArCgfLvVEjd^YU(Ly}!AeDZk3W-fr#I~X` zb-t0|B%zb)^Q1Y!rIYH-yqX!bAW~i4;{~^S9Y1)vJ=h4l@#Ks#>hmxr? z+=oMIEZ3F#^H*e)#6lT5i|$}%qBjCt8V@oP`84J2vN<>SCSL_(9SM}K`(a6r^jS{= zKb{nzD4MuA*MqL=ox_`Kzu;?ml4;(YkyUA87H)?!ce*HoA1;UZfB)NC#`0^ZlUBLnca+!YPup)_FC)j)$kqV2tKK5+}n6(2IohJ z%)3tQA+-2M62)Bi_@TLX3n@7nl{F<25Lq;01Lk}SGi1==d##7Osv~yye@2nNdyQp& zvunHoEp}_S9rs+9lx*fK4g|PkPNP=(bK2YM94TAL)Y5ssm9_LB1sE4-osEw1d!M1e z$#>U~VJQ34>BS4_c56*{FKA=!8UuZ%Bf{IuisQqmb}h= z026Nik1re5aX%0&DaW@5vm^z(W*L8g0Cj1iw(6ep*Z)8(?x(~q>pbvmx|)Tr>uorAsJygs#_v5AG` z-b*7IFJIHeIt62G2yKd|g6sOZqDour?r_zwt!WzSv<9Iun6)djMzo07k0DAtm?0fz z^Ki|7Tfsgam^Ydaq~3lKX0o>7{7;>%n6mwt(tXrdQBq9RZXw*vfMwNu>KhBq`;bT5p=PGLstGtIPn%!9^5|HVo)A>{mGr`R#80#PpT|@Aobw; z)L_cEm_zVD6jsh$##$Sln4MJ>BdOM|Gfc5jb}&a|5sz4Y3FMih)mvund*6$dp9aQY zI6^I7(gya_aYD+#8c(s5Y8f|n@`VY8!B``_k89f`0vbz=wTM&VSDM8JI}|6&2r$Q5Y~uv66()Ez(vVvUCG4_Q;|X;}m> zS*zZq$P78uRzA%W&^pFojm#pq=mHP5+jV(tP@yMtI}+OFxLVob3sOZqThT&NIMY?HrSl*Ux(S{Z|>97Sm-uPbW`u0@7biy?Ab_1s@7 zlHm|(jl}TB=JE>GAHGLv364mq$j!1cj==&KLI%cul5ss#z9!8L!7I*xW>hWh@lE9< z$oRA`vSBRWm2voE1pS1iy{0cXYmDeQr`p3Kp0MuhGpX+8VVETQz^X`Gu7CGk%1SLf z_D#q0ysTE3x%n7gCCVsubZ%r5SZr+q#%Y%fVCA~|EGhEAJe3}O$AFqpr?iI(qOqGb zWS&?|W~B*a1h4*Nb#07&M8V@_S-}soTm)tP9SGA3ZA4os=8@p;FXGjHE=q~2;75X= zx`eoos+%EM!q#W{qD4&5G9zALA3Iz-m)AGQJ0r3(1yy`SSF5OmYAG(K^Sl*fX~GI{B*dcMoNPC z6%udr;WSbyueKxNBW8`eg^fFVhK=r3{W&0z}#LMH9v^bU~Z{hEEueB`#Um#z0k2Q{OWt;57p2{ zo!3*O;(EG7{~t$J9?$gu$4gTi$~Mg8oVg7{hx-`j%+-P1Bg(fNMY&}SW6PbR-m1Yp6|~)MsZ<4fcW#k=AYE`gfqAA z^^r*Z#54goz07WwaYi4!$q^L@9t~f?Uve%Nd{XxK2VUY~rIFNBStg^fIX3O3bB_|e ziR2smQ;8g62EB|rn!1dGwCbj{vZPCCbaf%^1ozB%ePKqn9S1hhF3Qb z&jNU!U!n{0al0Z!Vc|GJd(C$;)eSmm`K+o*%|U`en%U(SyeXp zFt@DgHc}0EcN7O~HAy6glwuMkwC91g)|M*DZ?Q;USb%mU0gc1Rp?)qEY~@f;@1#dM zDKdOwTAaTKJJ|XQTjrG&@0AXB%$P(x4Wc}=3vzM`WkLfg5}vQn>3!$TYT97=(|5EQ zRDxA*6oF4vwhjj~U4s(B`X!TkYl8$jqEB#rKI4M28FWwmM2fzD4AY$skE2 z^{ikosECJ=P>ULfKgvuj{c&0+Eg1KJ7d=d_7;6;B{G-1jZ_y?xM+t-)w>{*A1ro-b zcxKzst%i@h(hww4MnVJ?Alwl%CM;ia$(?&Q0lw^qDw)5&5vP_7VV0i&FHT@AkQk90 z`yolW>0D|v(=sNwE}aHdH{4f2;#Z(gaUi-?FrhpZLMP+l0<_WzWndlk1R+66aUbaf zro|4tM4OjA*^LMGm)%PVC%Xaz#$VFrglo#EbXg%xy^o{_o?kA0R*|^@Rj);#q`DzA z9E@a5tDwfcgydEG-M{As8)^Hur}R9SBDm#EFwIC$NzrXRCB-bV+u&0ID{6vB?#87Enwjud8?^CB51{~| zN*A=EEz4F8Ldu~0R{*yQ=B+g#Jml}W$f{a=K&dX3MEuexHUo^qLRNf zHa|-8X2b!q>um8-CSbG49w}9J5o(#IB6SLm$OJjd_&Z%N+|oP^Nh+D!3+|WDt_)rh zAnR+TXcC~SV{YVrYw)eWO;{Dx#Iwl{jdzyu29ZAf)PbEdpg1RBNYNxx?d}Ol$YSPk z_rY-3ut1EzF@O%s`3#sb+A4V!&L&~9-w9~AE02S}O=dMvx>N%;6Py(cG%$sAaGWy% zp4df(nFGYFCUBAA&wS-Dy>=FFCFRyODN;V=rx0+i7Ds1jSBELXR^dMxNYhE{4w}R8 z-$@nCjoL<*G_Q38x)Y5H4qkJ|^;oA|>i`fMqBwbwQXCv9G2)|&dOmpXEq|?r3;qer z_{Xx&W?Rj=9B*$2KUhIpO%4t5_bI}L`GAJ@Yn?_3yilpaQX!G zH~@>k>HqHH9p6oAM<~1Fx{zn=@npsYZ*2%xq2Ld}K^gN=^hzpR&{hpoxp-ruTh!3b zL!D|C7;>uQWJNIJsKh@PJZaEOpzVP=IYd(bkcm2Zp^nj}Nt8m7Tl%Q-4L(9XzH4hM z_xdyzl2{UwSU7l`5OWuB0)^L|BDEExu6lpT8GQaSff^*{6;wzOH#U#&*!cewt3E4} z2|cSZ^`*VOBJPPMMC4Iqu$LR|^4|m1c{DQ*&8uc2t*=Mf*2x)j+RgV2`99rNX;uMQ zy;AnjFeks+?M~M(^WW#1t)EmuxeR4=gE^avo%Vw022!pofhcHXuc5IsAMe9oPY);- zG+vP2c?+%Gr%7Rn(u*aC3gBkg6A`kui`}wAIRmRvKkA|2 z8hKSzh{er}xzt-bfTW$D9eW9;n08~89^Nahs_g^N>@>F!punZDNA)7c*7s}p^D+_) zZGyue{1z5@BvipIVhndY@8di1=V|g^bplUgSzRA{y{m4N{4_!qZVWh);vzx=?x?$& zId$Mxow;Nj<{Z{}9B@u9pQEOYo%yh$EBbTDRJ$;(4kQ zp6CnBAO1pH8`2bqd?;SOE(%of5~NVt5@%V!=f*2nI4D-7)d;eVBS@@(;@Jjka-B3D zy3kJ5-q9qX)WyqlnY!Ub_xLBr8g&;0;#!b-LF`l0EVb z)UiNYwa*Vym{6m+Et%OOFtXrk39!zrVFL>M&3R8dm1Z`w{0^#dW>Dk<{;;y@ejh*` z1ncn{(Vk_oUd;@9tKdA~GM^85s0-74KeIYNCOHq?)7wz_vOI|dj1(%pN0G7n!c5E5Nyw_tZIdiY zr!Sv$`~JqF|Li$XAFu+rR2Jbdiy-3%WVOyvK=9=Czk}*D)TKX>gPimivMcx+i$R^J z$$|l-n+*coM`2J4BSD4Jl>t$u6zgN~LYyRR(S9BW9MboV2m)-C0Ly651Gz~-^dQIx z&!i_jU?8{^tK$73?#JAzO9GD3JnuS>@2|zz>S=d&CQ*5EkYF~9s}V#v+15PCu%y9E zp~wd!Ydtw#XM}t27DFC-H<}on=1_sZS}yeCiHwX7J9K0Z!(zc}5M05#09&^r!0YGy zTev^j6NHXn-&QZIy@Z3nkz2b(0k*lk;xJrocUS1U74S8yZ`>F-ZwX%>Vgi@wm5L-A zQQj+eQE3VD(gGiv&^S~GVZYT;4hg5S;Cx6zdL5jYEx=XlOn9IT*49Naki$@+!;@&^ z+!Kh>U`lZ}F)yGON=_$e8i3S?_<2*4T%l(3kpyu_h!x-VuA~UQ;sy)oX427wWPb@L ziA>i?z@SbCM?k@&Ss3w{vf|*g3R*H{(nGQkD)d5Lpi*N8CG^QaLBF#%hfjEPmy33h{)kr2Fj~D_0dbQjgOoo%x zZa_pX{GoxV+kaJURHN|O-DkFE!W&8%RY!=Zs)cZ?H=HoX+1xz`88^rrlSQzt!xFM= zEJAY4<2F1=n8!^ZE;4$XYyXJePc`TcZdb~YA$Tc4ePl#hKMH?FA{K9r8ANQrX(6yr zptr+UE+_^_YsM`tL%^A3i?(wTmAFcX8F0_&tIN$YYC+UZWswE=GeAtaOdJ%C?ix#> zp76@PqewlJn)~q^q>vg+0yuYutZyO>x{U8K0QRF(5H^K^ za`x%~Cs%3UYsbQ;c0jA<7K-JGIy@EQTf7{)=!(MLpK_vA^Aa0x=-L|Wm;~0M39oW8 zCeF!k9KT94Ln=vwdrBWNtI=4XTG43`0nCV+QiSPRu=xpD zY#ssoi%4r?ray66c-euPwL@Ck zTd>K4vN=v5EEU@Wxv+Ra^EoX4FTrEA4cTvj7fZM2Un52@`r@j=e?IHR{SL|`oIgh@ zyLXNVH~2qxV<-r%I48FQ-5rb4!Q1?=StOpf=^_guk|En@EO=0NYHYWDsasrjy|Wv^ zT@qWF^nd{{nMt6gP!@6}XP%Rwlaig=f)0+5c0TOmIFuv&rb+g!6q}pYj$pRaAJPyyw&0UY>0d z9oVI<8h8oXzla3_|E&k7O!2k<9tG^FF6d&fF6AmUstqXe^^ss9XhNg3v}&L?)2%-P z0(QsG&MDS{8ygQkhy1+-|A%9Lbs*~T$wK}>^P4q(g3_-u^llocisMph)RPbcXZc$X z%QLsTK-HC&@RWHI@wZNEtu3&&(&fDs0sqGbdQAhMmk=PG8VEboB8f7hk}u!FVwJXC z5frifE+4z>nqFrQN=5KQWXdx7!CGblV;_f`0N*En_!6?3WQ=<#Wl53p&){xPNl)nV z#^`L^07zKUe?0?|YYzQpUlB|QJr(>I+KTe?&Je&_Ty`g)L6T*h1V#b~jURUSjE`n# z0@x%uKrE#}ssQy1jNr_+Ni$d&e>(6{J#K_NMD$?xR|yUek=6&;#j;WQJ{kLrpXofQk7O0~rtCmEjzKSgo8f?9?{(-05 zJ^}9Ak)5ZHX+G(M_l7Q9kR%l6!ku|eC`d~|>^z-GZP3Nxlustqw8WGH4tTC7&V-ae5(c@d{*z?ZN&KmHWtZtP-vxKAZJTX^&&ND=A7n{(0l_M z<t{L9yU0Ohzz)IoG3Sn=zz1xPl~5?@zrGnR94A_s z7&%al1ju5!$XRJ-H7{s4kmC+O&u120;%cBr;S z$U?3_ZqW~dtq6!*CVS!y*n$WVVkqHVgc@+a&a*V@`S8lwe~WiK<2(av&s%95Vl13^ z?&$)f$drJ>3(pS$8*W0)Nv9cKX{Klcw{8=5j3Qo1bYIb z$o$nv-o*z9u3BCuH^a$4jNG+yDB;@l;8r9UJf8m+A{=$HAsg%uPv+R08bKL3X76JN zavMXv1_nz0w`R$&VlzfP80Ds%Y_oJjq;p!0uG=lr`tXSNniw|EE^ZA}m4bO}r9nu@ zfjvw33_kmH;3tZ9nwvKVPEDxki_f43ocsZ*H;C!FDK^Q0(jX4r zXI%p>F1^iEgqXubj41PHz{SchT!%k%32lwoHEz6oOtMMMv(RiU=|q4av5PBUk61^aW57n54ys_TC`1&%3c zlDDp=wkzS;iZoD)2PBF;oQZgBB~TSYjNUvUcG#b3Zo;~%0e17KTuugb4!KT6^aZuI zdK03L3{ZWn=w4sV(_F(vI?u<@OzzUXQj6hKuZcoz`0~P?YdJ+?*228r-;}}oXQ!Pb z(N^e(tyJ)!H!6)qKWIk87d5vfvdf6x)C71UNoMnM;@XUWW8-7B*lbGidk^%5K4^ga ze`0oikg7`iVFpx>ro75R8+)eKsH9{}e$-zvpCNgtnvJCPQ2UUy{}j-j=h^frm^!Bs z!vPzvYxE;eCQ>r~+#5*Usrj)~znrxtivpcHBitFi2iXAN*u^~9%G-vfQYe##Hke}N zew|2F19LoUMT!o{p5Qn9hZw(4{XrrIi4)V~b}H}Rakh|m4*^&GJzd}64E^*a>u^F$ zrkj|AFC<3W3?BtuXfDwD+-|Wlid5FXOm`u#p2U+0Q6rH3Xaltd z##slVmqKs27ifJYBD*%wFGU;dKq0#{M+@2sGMI%Sa3oughlpJi;e9UFhUv?+eliZY zjEBCkaHu93e@ZxT=SjS-iZ@CFtMJT@?0oUy$OBl^KD0~hQhW8#=QlUMe_f0Da=787 z75PEU(O|511-PsVXC+K_kJ?u+GQLsU<0;TJ4)}+GxqUi)oUM+C9xgR;KiBF1*# zg$9-2m+cgUqbHuk4@;aAoAzT)K?}E0e0PN+odK{u)&!*Svf^ZQzkNt2sB;+eT6c@Y zmuPX<4v9A0T8$wz9=1a3bwVQ-Q-WLn92~jA(|0attPoq3xI_GxxUB}|;_S$^V!I7&=?P0>eMCJ-XUZ4O{ z-l*of@7k}KxjHGR;$sj{{{q@9y@~Jr9QxqZ2?B)oEr%PD#um2%#!zy;pgdVJ;rU{J z;1vP3M>H||Zi1K6{}-!?ML*>{PJY*NJorxkwM7MY9HsOOaqe3SWk3_q^VDnNnxI(u z9%n&yGEt2G(-g1En-$}~xw|`x6Yi$xt$797?>sITkDL`(DmqP>gz26#e8e+Lyjm%8 zgp&Phf7s?y_7-dZ!Oatlj-TSU_ro;9ubq!MBk*b&dU>yld&KW!9k!k2u63viync~jG*A2zbNR~!oh|pgWA&7E3Ec$Oa@g#XYdl15 z923h^ezKhRrkyUg;qqZ}f1N{(>KW~AcRBSzc+StcQ>+3$Z{sc7qsQ~vN+0e%oh1pj z?)fhDT2&_gYw>#i6LELpDlLJ1S5l=m-?sfqYX5f1pFWsTvD*i3tN9nFll3C_bGORo z+DGl3naJhcs@>V$*U=umJL7hDGAehTwYbR}-c5^rC9xg)u|>d8_!tzV8a*wM=Im)O!`j~y@!95f0C zH$HfJs7|y?8itn!@)bm@VVjj#F>3NfSMF~0eQZ^Ze6-bSH@u{`HgkD7ci>)2nfP|g zX6LRhZ|>5uDdxr88%6D_Kjy2y$Q3l^_oNvfx;H&B^-WA?Eh0*d@v-6EkqB!Iy`2UT z!ym9=zx+m_A6x(0x1Z{6EG$RR1i=gIrt*d!20^QT#?uD-TtBZbv=2``S@^NgzB%;- z|9hdmR$z6ky+W#Kn4Vc**7`B+ZBqvSe9XAG7+3YM&f3CahNnTx(nRjKvgy_Naq@|$ z2c@*v)*-=7UnxUs*wGbiAFsS;wEBfEU z)aF!}-{0}RJ5LajYnT3*(>z-)O`FHuiJTuT`sez*`QW!0@J`I=;XM*@20pOgt$n$D z|9u%5@4H7jcBK6ULUQKPoA&WOABIVI!o|1x9@qNxck~{2X8mn9T^frE8k}`in;TCX z{&4^|L39a(#1YK*TN4&YpUy8WY0+K-JJR_ zc^q5A7yc+^Q!TwEu`$s}bnp52DCL1@NOWKN*7J?Y0?#Ggv^_l8<9Yk`zH9#|xyRt^ z(uCdOyIb)4sc8Ouwb zMugTG^LIAFUi<`$c5~&k;NsfS+p5N_KHYcswIe*h5g}W;ORpy`Y$|SMyto0Q=!hQ zqU>uo6BXS$@{^Ko?1@_6bUoUKO*g#PQobu0PZ~^!J+_q-R9&|&v6p$AwD0~e+zW)0Ae@eygNm6@`PSn0O z+vE4E>GUrHuK9Y~)ct%*t7jsXq2a&RT3xKpAEoZQV|YDx-`(ixxzpo_^b7Y14D>X9 zu^V!+>F~oN0tP03r>hzGe}aYba>05Y=39D54~@gOSvJL_(B{*x^^hOirM!$$i z2+573jBe)TsKzvU?X79jE4Lx(?4UsH!KJ&vprrZBPCb0dDZlHm1#yB%YzRm&86-=Ox&j+7u^)e=^47!!Qk(_2=0qU?VlW{>pkT!-#uows_vWH2Tb; zCjI@t{5=+8EQ~Y{EKhh3oz`NPLHCV+^sJB9=lXbk2!ip-M;A3#U2PhU$PBU*j{jF{ zZn)=!q0x-h%pfe&uS2Op@~Zkjr58x*bkW(Uya6v#-sA_L zZ&F-)J)(t$T4Cy)<1}nc79OR|nLTFETrBm`xIpsa@;mUtCC}Nrh z$u_i|(Cn{$b)@+V^$j{@&_yzhx%FSj3^qO>_v&I#OqA;(>pgjIOydXL8EKHu3uQw{ zEaP~H`1YZ{NZLvo^yJQEmMR?a?RC8^v~1M;v8}1i5tXFYD{|3uHjl>*O;_(;3Nra7 zk-Y3ueRsg{jYq|36=F0vsy5b=@t-yH>7J!9yT4e+{)a+-Kl86Q)qH<7Bas~VYfDFA zGXqci5qW7gQs!sH&BLy;rZ{Zd@Wmgy$f^T=)$L~#5PnA+`IjPPdIWHqj|cop^ZpKv zM`cqt9{e{A?o%s%F$mjAqkP#j6P7ZJRW~@t^VJfPxuyN$9M!q#gGYOS0m6bek1V!z zDC+A^|Mu^4h`i9vR|?x1Z?qond@k6s@akHio4hpj3M_{okuBZin!S;g7d?K>*{cI` zwV^riOsq__a#8HtZ;^Pm7(}4qyJyAcZMf?dp<~zD`D6ap+@1;R`GF;`Ue-LyNV0(X zWn^oWFf497%pE$2VY=?HXKzy%YX4Jz?C(R0Z41A&5hwH6e_;Js$xaK!nsJ^XWNNxW z*BgI-1hKAJg^a2<4NuWZIFLsTFio!3mi}6ii@ML1KV9_VSHI^`gVn=rgJOuv_L$#> zF)}?W1tBL?5puAwXEinPuq(XnfLp}L*uPTLiZB(tqCYs?QESfF(e@uQWAV=Or%k?vuDD}8Q2WNkIiHArr;{Ux+g<=*wWiSd9Gm*zxTOX$4XW4__#0JF=OK2 z3H?&18tFweo_HKC^SR=mm}uz0{)l{uX4RW9GVf_iI!i;C(OG}{p69N4vtf?KI^7NgNh5pK=c>13Q| z>OB&r_}7v4Zy`W<*Fc#!#2A!bZn}9m)>Lm-%f~YnE+f^g6{*_o|E=j=Wi-J)I`me9 zP+`VIou5yL4CH>R?1UUN{(_eTvoq*H(K*}o)(G_s=aUxQ@P74|c-wt&@5J~f&4IJgraZ3_$3M#x ze^m@f58M{uate6X@bfyH?&(tf)=?5c_p%%u9_ln_PN8|v9LEebYP)V7bNs9H71>k7 z*QbxMIPqNMfHSnU)MH6%B4`ek9632;EejD+l4HrYaLX#KI!sJmrcv&8ueHfTO#afw zLIl`RPUDt}^tFcm!KM>-P*dqXiCG?ug2V6Xx}4^bGuHZ|qX1ig@T)&4|IeUg3@Q(51<(4LswQCBS}G^){cL%->W(CN!$+O` zUTu$fXW{_D+!bp4u#4~Cyp=TMrIPM#`J(dH3XTXpD57^ zU`d=Q7m=9hz!TNjQAq^u<5{N>Q!{9!NLT;y{SPYrmc^re(s?#zYQNb+`4Y~K3u<7R z%Ocud7+@+bM3n#3NtLy}2>+(DNewk;L-{dioov?vYZ>3j1O5gP*?7S-`Vkvnge9O4 z?JO3%Mry<#*gL5Zh0E6*G{`^9^i}Q80dZz^c=Ud((DS6DN1lKZsPmJgd+)(_yps;y z35bIFZT^*tCL*$~ESVA1iZT)|GZ44`a%!6!n~MqNG7%f{J#l!lS)}G6Elu(_iwJSd z(9Ho)r%eOtp&8X9Xiaie{iEjJ4dJHgxwo|&Rne`%eI9QqBG~4S+hLE^K~Wj)q<20S z;aPr$k*9#g3-#2c^Y5ylhHi$=%bMW6;!3`}wOIPyZ!Xy~&Oa+}CrR=)Ajc|xBlQpS zOx{B1ZT~xXiqn4cTyTRDGlTx|StEH@#$GuySE_)D;8a%a{5Xhuhxbu2*Yli*K1mWY zL@vl#)+HS?#BT2!mo~@&9VgrzQ_n~)@q1&Hb%ZJE>y*E<#5R9Ot-=GQhz=32@u;U} z@;U-{p*N&o2CHzX?#|zdIxjh^OC{ZJp^2sRL6zHS&=hpleZyQ=oL}kzq&ivemixH8 z=OUva=RwOYPm;Q)aEYPxyfO_4O^eNXo9l0A=0x9Q^9bCbuN`KIZII|k{vMy+^Sn9=Tz+te~qn4!V*Uj*D`u@^ovn@1&p zWGv6Qm|y9XI%v??crlRfpx17%8cPnXbQYs}`Q~+h3_w3S=X+bmeZdG0UYnbrEt*8p zu0FwEWtpPqWa>tzc#;qgzt~8&C(JRWzY% zBbpj9Xy=QHh^N=Z^o6Mj`j*>IwvaTTifNH}&oARY&l2%x)!MTJ(6tq5|0XB+Unf1F zxWo|Wm#Z5d+|Kync{#6|1hE^X7&flMj9)CK(1c-~&84p?nrR{-Cx3)te(@7x8arHi z8qBf~RF;@`nkcA!=~VsSiv4HxqHluVrf6b;ZJ%Y1>*lBLZGXu8afl#yKegS5DdKWp z?Py`iKcH+R-S(H|lu*uI@NR))MKI69oB6QZCm;IF%_GV04ro_}`9Z92Pf>wJH1tY@ z<0t+WnprblD?&BaooP}bvM^g(pl9Xz;bQJ$>pkY&&CpLnwsJE26c>Q@1gHt4Y~e+Z zCDJy1AgqPSluOox_rc#B=dc2xa~pXv4WSX@#n#a!qHgz`5wop8{p!xBIZDo$z}k-w zXX->_Q1{w7nrEQGxbzkZG?m@+&Pc94(hIx~3!13$SnzY0I-3*%L_nD7#u);nFgI*6OWvSs`2_iS1W%G55X&0^Ww6N)nuXlm7H{8_ zBagLlL`RpZU$;qS#6MC4l}L<$@EmoC1nS2DBX~(oR@{o_ippp5@=Ict`S zQcATGuW)D3*{u_Ghpk=tRydzEI`J)i5`0fwIg_{{=_l@a(Xt z48`kpdy1p@?9q_mw&d z{^85x$5M0{;+w{Xb{@4yYb)$%(r_GOHT; zSOe&k^s6MXzQ&nsSri8@ZQio46{SzOuBXQG7B-8kuZx1-Y42l>kB+5uf}%EWT@>4i z4&R(Q>L_+vidjX|_Ph8N4$P;_8GCD3Kl>bpvIcQ}edLe&{yhY1pcm5s00f)Ln0`su>^e3t=H!feb>(U zHZ(KOT6R#Hp+EwP+f}LECA@1EUX~4fdyWa_wX=3ueqvSG2S_O;p@XFVD@hYft^)84 z_14qFieD-U`KSz38!iix2Z?fy$9}qsOI>w8!g^7b>PcncYJrsAe1*~QzkgUN%`byjS9Y6_~j&ijEM)*nZo&ruq4{wpheg|@>?=e)f(;w_8Yai2w z4R}{z@=?m>v=(1Z%L;NF)1Vr8liv{Y-9LoYstUY7g_UrC5;|?2EbxFL)vE6(Rxbl7 zH2W2DHXTmouCf+dN77D>yCFd>Sax6qae0uDkkx}$Y_`RMg(6qP!9H_i-mS>?o)P#^ zqNaK10Yal#O*1tOL5}kv098@wmkEjgWRGrt4eS3YRIwil#4EyG*I}Iv*=+SvP<~#d zKFK)Yq&fCzMhei;N@Fav_KBpaOY)C&c z8Wz5|tj`z5dfO%vQk%B`+Ua_=|xZ%fi)o?;5l6;Lk ztMLE2fEzPABZ+f&Ux2fkDzMfZ>62afmOkjKixh4NkYn=7;b*PDr=5ZER-#+oW-{OE z$btbdh%Vsk17OMQ4)56pglO(G-f>QA zNeF=P1wfZuCE_=VHXexliND$k;Gb`89_ZzDkykIPvrj~DWE4OF;U|n$xO?d+ox$nB zO1GcBOP4Wc3~_^8DB?N}22|DXGX*igfW@$Zic(Eh^_U;zKH+!Coi`ox6!+<5O$`Ub z&pt66aZp;g2B-hExmB{+WH&QV+o|J{Mg`M1mT3SL#Eb;bk&d>=d&`#!_CBxl>!xDRSu|x6hMD&zDa}&pYZp=YM`-jrI zIiSgrw$wonxBi)ukjC+y+B={#k6xHSamMAb&<=E7%7H$5Ce6YQ~S7ML)zi zvsLkc^>W0IBp(ns!5QLG^SJbBD*Tt=i+vyGP9>^oU_@@EW6yA4!_OJf3SeD#`^OI; z(Wqr}FVaJMBm3@qYvaGbfg=T5`Aq4zf`3i79FgN}74FVKM-Z=^l#-X!A`2=v9=;vW`bC_lG zimnZhW@hb$VsKuIzqaF18z4IGb>yd?5(a-0l=JQq?TCSWx#aLM~OX`V;-WfTPy%Q^-h~M#I67?Ohcq9g3RA< zC3aG}EJ}Sy$UvBoh&h@NW(DSEvG4{E;6HCA?r+J)C9^mpNH|Rz?L-OBJy9TZj_H4> zUFaeGlw_h95MLPKh@bd->iscgAAoGX{HnOVFh8M9HxAwUG041yn^e0&2NYNBj$t?} zu=e@|#Zi2{bLghRfp#P*!(We*gb2M;a&lwOOvm5qn!3V_A3N4!zcEaGTEmSy01{nN z7WG$UQTh`0eb9#`_k&j)Dr%AwwjZw5!!!H0kFbyEV6J+d?E{Jui-a!%e|JFsC~Zpt z@)96IIUyqQhtABuM)-N4+s{V`3mHs6PE`OcS;pEcDafE1?bZ0tXn zaqi9h8hPrqFU;*tdZ^tM<}pJMxL=_a0icJQ=Ol)~Kw`o1v~L5ew2GoLAYDW5Gmt#| zP~#Bm)OIU8mx;Qhn^nE@voE%s<1T4pQ7B5W@$Z1zPv#xLG0B=|C^pB(-bx1(N9vqw zyO(Y>IF~iZW@S_}X6DWA+j?jBxi9eWahSSRd#^5rdtd#PA<&0BWOH+BS>uD(>f^OU z3`mdP<+?x*ePxY~;Hp&!F;T@rP0J4JVh2`vhc81f7!!~^{o(#RSU_k`-WGYuTQTm- zgITFMnOOuRaZvq6dZ^k(8jB2EB*isP+kP0PTi0=1%kcR&qxvG2lgoCtU$LJ_ zaa5;z4T%V~z+~D@&^SCVPi)QxN#kG|Z5cX)PUdKfiz|L3rJE==%=Unb%SduSrC_}} z@^Tc4ppgI{J$I7v4tGl@;rA=_&o`8!g!HY>pMTqmKut&7{pg`B*@0f}qqeNGBF0At1Vf9!>;Ykk|MS>=isg1dmxiWZW&eYmFn` zG`UL&ZwnB|yc00lxDrxZBP!=n%LLLn3?vEgi!$Y^7qZO%epp4j+YeU{GFU)T8t)%p zqHzEu=c@1`E$pOfQ5OGhu5+HWcyuRBCEtnWGfo+sd26R*G&hsx;q&)aIxMEsyzd;w zK#tiKmrnP4tz1ZWOa1q^9=|=%yt(Fv3lM&&13ncq$5B;!2Q7la*tB&DK=&iKl2oA0 z2<5YM_8v<`=;EF6VT-cE@elmo7HoO*Zd^|ILW%3Bcb=GcBmrTU7UUfe(=kOai!4+~ zRyUK%BJZ{K`!CQx3ElrsWahiCUz6cr#yL z+~^OA_s_5%Qt1Hj-*!hxHty9%Y#7?$IdGcwjR7fV-dz@_i~wpFu@%)9 zl>{p_A;CG0c;RD;Q`WP;2FwL>YC719?cJpYKliV z2Rf&Jo+*@iyUc2?otMD+mfljV0-AwCHkWFT?tslRBh}g&)(JR3$|y&{?R4mXE=XYP z6ekrt+pZ-6dk!dv%EIfVu-^=6J3x!-ok)0mixLih$^z+_x3)Q4jUOmHjs|LagCi3m z5y!CK&k6V=MHUz{62wU0-Oo^WfQ-A*n`JAF{oYdK0~Ad9XRe6FbmE1&c)lG6T8mVP z`}+a2KT_gD&7iF1d96nOTlhv&PXhY!%y_0iC0fyW+TP?ZM{Fc#C11pCS*7_EI8+uYqvXbkzG$1W5LyBt$qd zWpt|+APtk0U6XPh)RZo>a*-H`=c(;aG%p{JCW&&67d_-`O~~n&Sm2}*NEX?yga1* zMI|}z!?Q$*7b`p0J_J_=-dZYe3iZm_S4f9ua9O|);kjq1fL-z%tlvyc3VW4PO@sZ5J~AI^Q}#!k1ohy78&YPkqLvGj%XvIj7^ zvY3X6udlj9upQ46MXjX{oVdDtwB2*!3hMlA#LjwA-Su7>y<0_fHGS_xtO;W{u2(YP zBj*M!G;OK6G}Wvnk%cdV`cmlly7RB(WI%EmV6t}$5`KF z1+2wg@e^_qcrx#wyEXW@0@fk1a9C?+>Fn9#bfa@iViB(IIx3zf-=X!n6w5lXg_PTu z+RAMU;99hkVXR}s8izTZy8pH+#y1Ph#N(4}psFuZ&y=f^c>R9gzoA44m5Q%X!Axh@ zhsDGa(+@rm-4Mg_wpOVM@S|I0g&|uo$ji?@(Dr3?kHO~v(=e!dT;{}Z>B zA)B6PQW|)u7g}KU>GV;w$e(}bG|<>TxX>q}#O5!#4}Q`wMt6OF%}Y3>x0o4WMS0_b z8%~!qVBIy-kGx`L5oY!<^^E|RzeCtv4`MLbB%YkE7p@(tX7J_3AI?lj^KlwIy-0q zw^F(++!fFJ4+ewWT?`lld9na^JCN|MV>LzRs{(>-U1bzf*3vPB+yC^9fJH>@jgP|; zgy8gVua>2;2S1(Ix08^bdKmEvh^2#3u7kh5A-yEQ7#k^IV4Y$sYG3T&f-f*@TmPWg zE?i9p-7)LK40;@ja3DS$ZJCB2!Mv**aD<*Z7BxG3oRIihCSRu;3@XxHK7F!lqi54` zXZoL};izo>(K@e(xf?KMHgtic7Qa0dr_;PxaiIQ8uqOH5`F`$tkqgbI-yd(JjAeFv z2y1UrhRFHKV=QPb_l;=ydOFNFthoGi0bNS8tI*ZY1GpJWc}Ln4{jge${qnPkRS(+O z{D!zikQBt)t@>2F+~y*a3c2}bqhSU#aQ)G6phrNeu6 z4sU$hO#(k@F0saNsK^XCcuVbJ$2)H<-fnk)2Fs+g*tXB#mmt+CW`e5nX4aKFqh}zl zq2h-FfUfQ7O~;=n$8bOUTdU&0lnD?KNY3b7UO^Wy*5pT*p~XHat(5&%xp=P5UFe7$ zocxW|9}r61%6!y)*c6Ot=ylP$3a`Z&p3p&Lc#qw_0rxdI;coj&ZBd)ne|D=r+FPOQ zp|3%Ctn9gor!o-ngRlN@y@957_kC!G5PDn&UWCcXU7)^2_ph(ZG~Z^0{z zqu4^d2dqqrU{TCB)szhKnsa|d3}vkC7hltqJh0uffa?e?+U>J=_@uGN;aKHeE!xKU zZae7H62JaIJ4!>H^9CaoP60pZmdAk@HnP?rHfn(Tw={P?F1)O(^p|u2Bo3E%dRZhN zE@md_9(Xq+b-4b`%S`y3>e)|VaQCO&r=95O3E6wTT_7Wt$Br51tg8&UKQ{U^4Z^Dk zmy)Bd!R23D|DuyJ*2}ei9|mdq5MXrM7^-u4XjOV?>7AR=P4U9qK9`|>_bCSA=@>J~ zz!|~i-=72OBWz;}_g577HI$jtf4-1)ynjbm7X4J8?V!^>Fv);CSv#q3S<9glDd~IN z9S3uY($|w|nsygU4s{LyQ#R@wXK_0MG(tZp`s=NrIgvaH!m{YW6~Wz)3)>;6s}`9- zvKS%43v+)2oXov+s_C>;*=vZAc@$KHntJAv3M^ksmK%8pw(!g7bhSF6@xZ@+a|gov zGht5KXLhoD4Lrk&<+oS{{{8p=s533h%#XR-QxPLB14if+c&PVxlhI}bm*r1B-(e)F zZr5u#*Qn;G$>DIWFTrg6gfX`ZhKA~!-xY%Zi81UY-RHzVI_+vTW$pE-2ERxz3H1%| z^buzjcVcEna%gdBSTzOb``}W{9itASmC?t1B}zDJ=K85sNp^23L|O(MvU&d8;r8y# zS~EVo>4=7LF0j0LyNXC{(_~@ffo`fwoFQzF_(_>^d$xh9t`#MfymQJhY=hj()b7(WL?_xiA@Id75>`Y&mB;i z{O4UALfG!(PEXlKu%eD%6j#*fVp<_F8CD%dFCH%98PEb&*6kP&NVcQ&BhglAEu^A4 zw8=FeU*CpbE<|&Y1yN;po;zTy6`heW^otELDqj8*Yxj=_dhe9=+PagIGye7x?kxNt z6>EOKjwMmnI!Rr35Fqow=WL{2)Q|Mt8;v3C|2i@orB1BzI`iqICH1fBa%)P)&3%6} zUO5pPw{JFEY}2B9OSuo7p$q0}T=>t@V*3wEqv(Uwp8j$)dPa*rO|YYn^_EUE?$C>Q zm+oaLpyOq(go!x#`kE|OS8Iu=Us(u^0Uf>GQhlAl+Xx88+$+e^Vuit_5%A7p>5coZ zlR5@wo*^0Yfy(MfyKlON`YTE!4`xJ@>C#s(p#vg=X&OdS9w?8L+##QUL2W)}6?)f+t z!s{0lk7>(@w#=PCm#Rbw&OeilOSgHG} z61~trxV9XZ0D4|srO9zV5+t+d;gvBFFwI||n<#m?mHzxLFQ^Dj;U^bb1+kw*KTdyC z#%MW7h+{ySD9vt2ST9IW(YWLV%m0&EHlLO8w@vA&TC9)IJc%OK_x!W!j3k%8_f$&H z;Tv^BX8sS}0fWUAm>n$efUPs^BZp0(8!q&W4M8p1w#8m3mU=em+q1g}i1bC(@&t@8 zhERIWh3?gw_b$86j;fYtu9g>x`GLxgpCu+Ne|5LzTC+`wh;eN8b3o zQ5J`RC{C=N)F@&Lk7%we36rc$+OwhR{tnhzANYvxl`n-g&1@$D^aW3R&!K>a5=3pq zfLS!K||nwZKdY zw50e=r%@AhsRP~z*jp5@R>8Za>%!{=ECtuspxEm5`7QA@Va$L58QLAUW zMnGj8_kIO`L-3mA#?&r{PqB`8a(Li$w$mM4QwLPz_nqE)UjP9bE1hJJDDMAp>!IrM zetQQFbTXzs821R3fGd!*g`NznsFIb=mMWhN5gf2@Ru-rAXJBZpfBl_Pai- zmMOy~nO@8GgS-s>>HfBESDW@}U%eh>j4b+&TL8p`v(D)o={NpcHnR8)e92*M3+3Tc zR5u;CcO1Y>%#5-vp~k_@TGW}~^&xU_uQV8XahEkPU0-h_=?^X-;AX_qy|aaUm$%k( zB1j&kThnu)#FQeI@0U`J!P4p!P8`61LxX39#qH$EUdDeC4JW+cQh0wW8Bu^s39MmJ zlS;T^i_%xZ@YzcQV7-qsU+7YBhcNY8&a`^AX8EKEJZBa;X!EdsDZNXO2&WFcnp47x zujiPxY*OfXI2vMt@$OAVQo4}9VGg-{C^W*!{xkYpDcdlU{P>JsGCbX@v}a z<*;{S0br^yp$2%s&4hyT7NGB!w>)rEA@jF6sXPD4S!RW0KJpJ1!=LNJo`)gfk_r4f zahFeYxGitLzQWZV&3z02B2VNddF232AU8?s0=TSGp)u-;-K{$0+@$x6$v+&QW_4^dI<8|RA(Lpe&FtNg>n};i z;QofifO=PLMt`E_MIVqA3t)#xo=3N#8n2^n6UzS68n+m{8c$ z8sAHno}h{!g`43JDeh}&Qesm8fje_*9v#e}ItG)KB0`l(8{@V@JtHoF)yjiVB1MZ= z-BO>MY!y3EEUHh_VXq*zMV|rwOwj}Q=Q2&!OZyHgZ8i_sG`FEjQU=Vt_e|Tih9tn9 zyB}Hyx}8Y!2?^oL5knwAwCziDr41yBmN%3*jF~X$9q{g5dd#t5SY-77S1(`49U4`c z!S!JkfT9CdAH6~%dqG6(N#xzM^rnUpTgKhtQvs~{>ep1Ay-dM&Bw$Bv-tKfnxz zmyq@Y9+qg>cVrJwz~2SUi9Mrl%m4W8%jhvUu)1k6VEvWGa;g*D%=OFd0Rz0gDI1{) z0Rk$krb|h82RBr19^=#DT_&ho5Zy}aT8ucqd@mP0OAK2BoUiil?0~&6zh`d@q5GEV zYgKnc!Ep93QInUAd@x5<#}o=Mm{{9Ch+B|_Gq)tK1c&h7sZL{Mah#meThE( zzmBxTihZ@n-jDh5wIAX_YOUzlib@Xa8vOe45E1ZTtP;Qm3WXhYyYVvoHq0o7JCpr= z-&5-jOtZ+rQs#Y^Hh3BUR_c6_edg@s3jjLgNsXCwO&` zC8Lg?B}=zK&Jv{SwdBfD+aD-{grgB+p9>{XY&Cl(#1&EF+7&Cm09nnLRa?c)fGxaW zoWH$qd!v~UZ)DnFR{G*GI$SxaiJ_5<0Us8dp6o3Yb|_ZhF5FE&Ob3#h)t>qV)kzxC zCZm6h-jSfr6b&=h5la5nrNH0!?D_8@lrX+$=hYkw#)WjoMJrjg{DGrVOWS`w<>tG| zaCWM~XURX>y9F?3+(+JYt2M|`{Pj#m_~5dzto|h6SYeY}gZwKbdqThg#cd^rnfrrn zE~K*a;oQ6pR3-C3NS3WfEaKOh72Hvb?OWl7c2*YnRsa^-;xNn0jmjTj?d~Zdh7L!P z699cY`#vHY@FEm!twc6LVV_7M2LsIjOiK=a4lnOOo7h!LA7BPFt=-7~*8Cdz8bSW* zbJ*W`S-%Wuk5`z2GhmKS3wLN40b}W+6fcoUgdnwcBH#Vb z?EU=DiQ!19%0KH40zRWUg|N!?Ywy;c7zIV+tZx2g`MZykSXs5j@U10$N8mjCqV{vI zYi=XpM)vuh)` z2}JKBtIPm6&kdT$3)C8+ImUEHww3YndE5yZxq*v^vA!6AX4o09j;wD^u`TWf2zdCXj9ce|Fm3{MIPeb(wiB3;TjrO?z|EU-W}}8W>5noAJwNhhTvL`=joY}W$Hq&p8-D4 zlb_q6K%R~IsL?k@al1`9GOOJ|8l-=B!)t$J{C(oarubZU{;%@~O8999jkXU5egAtg z9g7Ntac9nBy{#`W#8aGsY&eP>U-Zki$pgCe7amz(p$xxu?bSI*ndtBaoh_fqr7YlO z@E+=jYw>ta;_*oR+%H;weCbG1xWl^`zWAoLQYi&i6Kb)80MWr`VrJpT5pA&rf#IK; z;p2BnM4#BT4C9nj3_h_(HO-rWL&ZdCLk!BV^xhZ!9Lf%oj3Grk6OA@v#mq;*j`XxT z2BtP%eEhTKNZu-EwBsZy*DxB!>4*XBhKZK9(`|^xCwQVtfEifpkL+ZG0V7;MYb3a7 znKq}%JnGau2z55N@l8CpSwR2A=Ok`*Y@Y9FaH)QctX+Lv9`%v$DqjpSRI>OeS90MC zW1X%~3j5bBfz*wPv>2+6=O37QP{N`9yZzt*xY?1qea@#kBM^ho+sI;Xd^(?;@h_ZY z<$tTI^}kE<2H3O}9hz-Lw#{nME(M%4O=+IB5GF@+nSAIHhWJyI?hwm|*ATm!eJ74I zj*tv}NcZn~ipyfq;?G`vAFC*+_Ea4n;dqeSyD(c!7vyJym_OuP0vwr>$x$D~6Y$!Y zw#zFX5aeRWXuTYfnl;4_uM>Mi9g5&Bh6YjeIQx6|z&bphHZ=fL6uck4h z-aDB=RPh8NVM>#z{ZIoJB2hY|I#r*u-v(hlaF;fCK&-aZk|Gcvl$5zSe8WgY#iIHr z^`%tswOBf~EaXOJMh)EwiHy_HLYSMbSc;tvMnvP7ZgMawdfS}2;$ws$tUj`Zf&esF zn}Yly^c!6w7m*?zW=79BnWG=VS*02_Qzqe)!=7#-+kGT{ntcAir%j)Nx|jhB<;dL` zo{<3iEKAlUOYY9?M{%nER-o3Mf9br=1wT!%*luTp?d{1=wi)N-p8pv1W-xA;oBv9{ zvrtvvgiGH>(1CE`6k#xbZr>Icr+^}V7@zdWw|waJ6er_dhq&Nd(9f50FLX0Fsk#&b z?^D#?wJ69Zbd0!;1ub&d{v-?`UJmIgu@R@UhiguP4Z$HjdDes60qv#+)8(<<=MFOa zY!Ft|`0Ks*(AEck9-4;1mKBda{A-28u3AhMTm(tJHB0?Q5U{g5q1ODs*7$_w@SVp$ z^+}Ria^VctpZk;wUbk+YsQG&0BR$pL50YU{tuAS0I7v6GG8&?OVB=PqDF@>RB`GLw z!4Z#b1nvjHO+5(A^7ow6n?%&$Q9mLSXdUQ5POt@i);ReX6LxE6N->EaYIRhf96z-@0 z1$CCg6U1jMlN2RX*T)BM7X|gK$zo(G6mP#1l@I?=pyZ}M6U~&AB8P3v4UM>bWo#U( zAIg<}A~SW!^Tr?;{V@|3JqR1o7tP!$^rY{X5-W3snl64K9R|{F+_nDJyqaS&T@w1? zIf4j)uR;`nLlw}^TRFu+EfSKVPxRX|eI>D{F%2yeQ;r#`jO=@r`9kiIT|{O47xdk~jHJh|k2gjpt(5!EPngfC zm5WG=D-jF5UhV3hUaUS%OIw;E98!yvpVVnhFyV`<@102%2{@?aEXYZ=W7N z;vlNCz~p$OaB|sk&djoq(MAXSeW=WoyMwBGV6TkeGp&{5r6!|fh5@fa zD;n$X8UH+7b&etv(6|2zW@dOC=G9Xg>=@g`+O0%LzM_rw4@U@hMs;W0-)1BwS<3M> zKC5{$xiJ!I!W=A5d+M_DR5y3r)7Y$)wKC7zhj%#{S}S}Rt7k?QO!WBq-vY++cVb!K z>p~*pv!{HU@q(1f8vA@~7GF@oABK+HdSrZOMgwS>aYdlrSh#R_#Bk*bopJV$?-@k& zzZX)?e1v1keiG!|G0n1O{Z_e1oGd*r82oG6Mu;x%p7mkgjkXM9yD6GwC8Mk0N+#Q9 z_qP#%9j711pyQPnbF8|FIN;ZMuSvn?%MH)fGHCl*cjdJTO+g_t#i@pEX#tm(TNCIq z>1CSf2qGg&f601P=HO>C2(T3Dwd;)um=04?nnc!0qW{eW2~IM^@!#% z`74!rYRp=GwBKZE`nCx_Y<@?>4gmlMMD#pDp>|=#TBI zkqR=9@A0H(ru`w#n|RIjRw5>?WTF*37>Bf@K>wJ3BzDs`$8u6axy(BP6Cb;aLm34{ zmLqrus<(oim?x~~5lu?7EdBC{E{4ku6?lX@jE&y?)ei{8WTuwvx6f>qfs3^!BYYhm zYJ1o&Q$6%!THXM(T^lw(qTg?>7N*cfAL=^W->Ruj{xV}Gg)5kjX@Zguwp%I3Rp)u^;5R$g8R#i+wNwg&c4VH9E-??fKf?u z;6X!~qUy)#=N%Xy2T|e-$8$*Trk4$UKSOvnelE}3c_S_xV_f_vul4Yh&}DH;oJTbA z&|^rHEm3dK9%y1jKLj%K0KAPr7}fi!pH@-ATzJ!cUfF3`y(b{NDWBHq9is z5ntXwTA#ppaA@@3a)9n85vo;>D1J=7TD*~tiY9-sydi5Dy8nULLmI^wp1beO^`lN% zuRaZ5N@{1SR{kGrF>+_n4x(7Bj{n8h(&J~;e4GK%!{(AWuhlo|li7k+q^q}Gp}QY_ zUMUz*2qosxmX4n4P%YmJYy21vb(#1owt=oEHLsU+6u4TGs9~4Y>9IV@0j^S4jQb02Y@KL3vB!%2Li*Jxs%YI z-_IJ2t(+EZvPS%?{pG61H)(vC?*wl4^;b7Gldl&3ySYEU2{&L_7^LG7G2F9qT7G>! zn?~_Ebg@M+dqlI;j)M9?4QPCDY%}JH*X2-7krZ3mRULA>FQ&9(|oyuUSedhRPto!rll`&-LZamE# zWfZTsM_QNz9^7K=HmRkw~+28u{ht!Ui(nD$Hwd;~@EZ-*OAwM*0PzX?C1{EZ05p1_cw}@qN;7dS6JU$3?f!6|@sAGL+KLT9Gn#94bADtD(ixpa9~?~jX1BE~Jb z7TaN^lqf=HT!y2YoF} zrO1h1+R^)*Vks1>3vVB~M)G#wll@D$N<4Cu2uZzv#D!Bm-W+d#FWk`Byh-g#DDRzy zIe<+O4BKm{A_)wz_f^_mTS7(-;Py)2!aRZAS-)Too;*(!nUV;>Q|6B#3^H`P==MI9 z)Qt!!9oJgmjc?73a-qDJYbR!r!wcs}ujnSlk{OJY3G>j%tJivPB`@3YCTFg6T_c~a z3@shsGBE*@c6t|^f8=;EcX5^0P?e@k2iM>!F?jdQ<^3W1X8CT7C$YFJFgo`;{i={=AGQLn6(&72at{7G0 zC2>2>5+hC1X9M#cx95)~L^xI33!6;VMr1p^Ua(H}FW=`pxD=ij-%Jee$XwYQGI)r0 zOBHptfAn_r;_&YK(5*1dqx032{6ov!xXZ>LlC&0Kow+xDy7=G3rOSUE9N&bydihAK z+#*YEhYmT8y~KgP1?bF`M$LD|H{n8f6m})T$8IjR7w*0>A~$5V>pIVNENdF;m-2Sk zb%1?`g9OTX$9DOa)8PY!{;*&!Z~oSH1|BX7A5hck!ok%hl9EOrw2%(A*hI55i$%zb zi5}n6Jxaj!?_^Mky}VzsX@1V*3!HL`#*OPVVeNK}?%YTD=N+}Vn1 ziO5jc?c1#{0yWt1XS-Cw9V|lx@Gyc@4#z}vVq>>eJ+Soy3P~pRc$F{U(?W|$jf~;l&AJVB<1r~e1f>m zn45-8T8iOSCrf?5~QMmWB@bFTHomPLWkHnJW&P z2|M>{BK*`gbyX_U`}!aAze^J*&KGQZCh8o**2<2&S52p|zt zdDSe5;>Bh@rRRYOXM3Z-=SB}{7E7B9tA@rFk9wIEc}(N5o6}m4m#@Z@N>Ru%wH|z> zaZb+5OEwPBMZ{!2TX)-WpfakH@>{k0uM2h5_h5UCKgo#VdBDzmIWotJ8;5z znKD)lai3T2v90$+GsX{z7tO`LIO>^&BosPLpU=a)DUMkmI=oG99>=*6rr}5Ajnpyv z`%ld?J){yjb14L^aQRc7E___NC5uWUDG*ybJfql2I?E$0@=&+m!oeXGNt7!4$lz@S zE^Jz?*9d6V6a$*^7J~1<<@7Rpti*cXG5K(P#vq0&Jf6r#uyj!KIe3sN`Ej7WYY}1B z(2sSwf!^FXA?1~^Djh^@{IM))PK#h=4dq@SNu@abNpRMFjsQF3Pic$d3$4$6K29aj z2>Ijqe$tQo6EklqqC{Mh?nU;TowNlp#V(#tco36py`*U2)0^Cae~=JkrjYC>pd?&;SPFrQB|T5F!ebMfQ- zg4--iiBvfi6%?vvwmzx5iIy2bZOXzbc(KwmK$SC-`ag?Ubdh?|$M zul4tH#|CXzcfz&9W1GYCsp5LV;KPgCy9t$x4L1aacMR3pUf1U*92Jrz>Eo+L{*=!@ z5iTbw>xsCOBli2I; z^q3+o*!RR@E>Ucb+pq8md6ET|7Ax;&3)YDdFGoCfrP%m-Bvv+YdQ%t z8LM-_P{Cv=ww=^{j2G4A3<$vFc{QiGL|5vU#B61ng#|hWsF+VfGe7mcun%(=7vK2n z@CCcX7)=^qPz)c%{$Fk*oEw&cx14W?nV&i#;_>6L9515?LJ-3TQ1TY`hQUv!hKquI ziVQ8YKDT*!bE<~fq$yqlkf{T@wMK)s0(zy!^ohxdQ9rVV{@b^1z{2SAP)oiDyJqNJOHhhMO1q!gQ32URI5{ zoZGJ#IgNxF>idrOvp9JL0NvwmzW;_rwRhqY=SL#4LsSNPIDqw|{Tm0jBK)oUo6JOL z%gZqFMcAU!w*&Q`nNJjT3_()o>;#J$vhphspsr!W0_!uQc3ChsB-j}eiv@|zIAFW_ zd%?UPO7?tzBIE;w!2-u0Jh7&~_o`w!%eMiLm$#ra%44v|4x1#aw z$77yXt~eBF_v=bLuU0wn?To{~s!mUWAjRECX2j#& z14v6mm~xpRmLTUe2yQ6glh|*H29l0VYE1lAN1^Opq99sln79k(TGn7mTtq%XxSkP&_Z%?SBpoK zGS>Rxytsaf2WZgqq_MmC@W(lmnYLI{5?j0gS|j#>yY}ZiV#Dv^MEkT^f1%R*8_>;* zAOh}PxKmcN-{qj>!B;G&7?qbyK}SxeVOW@>$`0DgmE*{TE602A?yAelS7B_I&pRH~ zuO+3Q%C55|7Z^;h5pzecu`F1C>~V7U^P%r+Iv#U14UKO!5%caibq9Wnet!J@^-Jsr zX7;?9evw?iqKR>Qx-u@ov*kM+oY*D$uZ!L#UH#0(0@p0E9z$#Vd;0l)t>Cb1`eKc) zAlFG`pPDT;MQgaK}`H~N~*F^>(CoEHg2!*VV`Y`P_ly}h2t+i z{4}7(X`H0Z%DR1ZL2}!FJ3(FvrfpU-Ab}0T!j+2hmMOY071*ESe2z&)k z3723jrU!1xu6_mhk%Y#;$`+bVY=ix9vfnPVwa(%#Bf+$PUfhM&)t1WUo5P0*hJSy> z;`1En=j){s6Ujkhl`J{`WWwHYJ|@NMpMB;{D&O)7I|-u|VE!UnQ2~pw{Ah7fF-&{D z(d@?;|Em-Ot!97!vuQ!KW`AtNxq9a%8MkApraD1V?E1^GyzUcNK& z4rKc;szjt!vV4KIbb_obnTB_}MN)b`!{ZrQnd5BCk~*$^WZXUu4rHc>(hE01_{pUT z!cT{S{MKkOtNQ~;@>MF+V;_Pi3Ub7%J(N5>h7veGtQc_CfR{{u)WRLE&@*S};id~8 z@&d(2^Lq8RbUtdDCI?zb>HqkpcJjd@+4Bpf(T~wW@Kzr^#xLlrjJyF{>_?L8qNnG| zwMNEEf}AV+%}bcK#vbUMR_JAy7{1Z&TlR>bv!;fMB=V434vr9@Rj>g!RSNJjTV(@90dP zW{php;XCuw?1|Sg4(7PSX#L(Oa!EXvf^bu;HCt20RP6Ek9(M8fHwA(?U@FTGZQpk* zE~MA*dHizIlnZwmCxS?Xjx0Na&S&DQ-ITM)dSlClnBP1y>-z;#CK!(ymrH}h|D^I5 zdj)1Z*7205*F}_Cq@h+G@a4%ez?k{IB4-@vqx17Uvv~c5?L6e=!Rt5OO2o>BgQ?+A z1dmsB>?Hx;=pP*%P;>%EX)M{4i+K!d1Oe4WBG_<$JMBv5m83hKj{=qCyM(i2FfAL~ z=~t21qHhIESX&{ykj|E%{+FK!XRid)Rr|1d(|agIaCH&M@4d?I%N#6=Mp~5I#CfwdhW8tV?yjpCL%QUVc9tB{^+t=qZT-(Q#=dNeWDkq*BpG z59aCE+%k#p7*ql2Tl#A`|8#)Y8+z4(fv(rjC&EW=wauFTXwkFWIPFXpY08@>`*lq^ zyCqGz*p7ASfClUH8**q{cJF;omg2BBxzzp6sUfK`Lw9(}bl98ItjKx<)H>>Dq!A*lzwZI z91kc~?Krw6?fink=dAfr<28%18`|np9Oi$s_nj*rs+0@#^SB6^kxSBA65^&l-xfu&+sRKz2GgQiyjhVI>z!h zyp+JAp*@8jU?IQHI*38PW0`@>#%a7;m57JBOv=zhk}>JUr96-y`xD0cxD=mr z+Ra<_S_o!yVBAuP``~`p%~d_zr{HkF2~0`$AXNlZPz5GRPL_YJBMduUVXP_DDcc7! zJVQ^v2>LnLPYYVl+NyaDn=5RwKrJzmAuvHovcFqQjF%86bdeCoTik#>nXEf+LpvD{ zRn_YV-@>5>V7>|EEQO4BC72&h7i~#% z!D_BDryF4Yg}!<`Y3RF*mY3w%?Kj~~d~}9QqR}0)Sm0E(k>Yye!rndDP%N`DLO_Y=inxakeB#v1H{SrtJ`Hp3qLWG`XwgciXa#(ORL9`q(zeMeBC;yNjRWIoo10-NuLFoolb=vDuUK#VM`;}-W0STA6j7F*|;rq(-n<+P{@gF=Pl397&lU+C(I~O z@nsl!{^955zeGUkg#8|o(Rji;!6Hdd!IvoVAQBQkYfxYyKDyBRHS3C+1>{)bS9yg6Z@T)J zeqm?sXRqXVBnltK-=5G@ZXvO(qK5x_sFrDDp1t{+4Q~J7!_fdZ#hSn1-#yZ+B#Sy3 z(i&77@XnNz3K(`hfkY^u!Pe*;w~?cMRcH{@@qs3b39nH}mO!n9DabjsiufyfZ*H({ z-|$v_P(AnzCFx)NVKqAvN`(^@9?k7P4JO98h+4C zEehA4P!Hx#l2q{%&*AY`wx=Fv1XcNhK9Vs%jITNhiF;1+S61X}68h@5A9pnLM4|Na zeW#3kv9tS;g|S;}T)zeFJ9|^AROl{DbsM28$*G={tl0R6?TD-wZs z6DkxFb6sn%t$|?nxK&#bOfb%eU#+ZHVhLT{2EqQp^?Lf}h>>}L!f*=&wo$F^zm6d7 z;NrNNB)`grJ~0yJ#Yf-gqxD9OX8!ed^T5r?uVQkxnlT%X%nfsW6+>*OdpYTqv)sa; zPH-E|8$NRPY?r~yeypG9RHHJd83lE68u7+XmVAk=_r?#s=b71WLB&FR{MHMPHcm0A z#lhZk#}SI!i~e~oo)|C{`Syz2K@nBntR%+91ruDe5r#vs8Hc zX;lr)*BdYgX=L2A z_xGqX66%B{JT0%MX6z~PZR#u3EfAI&HAGqT!VFtk(yqiVHTlPzzdN`8n3y`pfW6$v z{6ZTj%yPf#^e_#D)(a*?5S3>QOy+CQe;PcGbrw#(pulE?xCIv1Ya#p}A~a`!eMy?} zN8(8>?r%tsOh6m2=K7PNU_9sZhs;D&y9GlBWRkPIUh|8ak>|>8I)c=;EMM)})uW-! zETe3P#81!3A>Z`dmYbaZ3NUAhOg=&;ZQ3p9$xCn=Ih59wKZmbB@-Tet3JufgyFJ?D z$maz&yjtX4A$}U-(w$gVlTolj09;68iC)?bg~H4^osn8GFkWTjAi z1n$q?n4{_{Lz|h~OMuU8zn9NcA(Qp_BzGU4+(Ia6pw0XCc9-fmL8jpQx(CXo&5do3GbFS84eq+aH|MoV@PtdaNrzrdfkKQTz%SrM2qXb*Rt|0fof*C7> z(R>!3c{D20{GZ4NByi8!RPX`wcNlU#n#cc)9{c_k#;5*us4f~HMyO7-%b>0C)r{;0 zHW9Ynn^V@W5HLg7ZcK|z;M|{TEE%UM7w>1XK^!+PGY`gY8(Igw*>c}KJJ%;foSJ1qq$Yv;ZJ}eDCG3%0}lq)u@U_@ zQ;~0#vu-Sr1GG7Tbx2CsABMK8A~|5zJ{a;SY<+0>5#seuX59512hyUgP~B=q1t22# z51Vq9kRmNU8d8aR{2rHHHznih-SGDv^JmIgl07j$7n_4T18q}-57O!dxsf^N<1&Vs zKbQ`b7e5iz9Mk8t|Le^Bv+-y!_q-lB4^b9=@xsAw7)hI+0@=l?3`l{d9<$gJGatTi z!K$Nx01Ui7TCWB4dn0$h0c9yPr}%&z=(vlw0BzfPgB`Uqb6fw)@JBO%;dDhl%L9}l zGk>Eco$Pmx7bQR)n@W8Rfd{zqJKeaf`uG%e+tgUF=bBT_P0wNLk0wSeaOj66#O;rz zF_Jqv|25grS|oxi2~bI`@PgTRhHHOX4el^+6vim_EK@Lv<4#oEjvM4UBaEbzYdIknqZWh-ctD$n!1z z!z12G4!Rr<=fQppJ~s=S0(6=1g7ozVKoNYJ{zuI7He3DOrC}Sv$EPqGw;55idx(Pt_4rnUSsr13MUSkQ0+wNeK^OJI=>({(}TJ+}rN9h@2`e5(Q3E)lr zlvH|`D70B7k5f?;Dk31_mkS;oZ%E0aF*@|r-C{??(GL~y;b_{C7~r92)c%Y)bd!=B z--wsaaX*yEf!PB~Vp}mmbARdyfTjra-UdOPo{1j{ZXe@{Mq5k1c&EYUd1CVn#fEL`JK87DW3bQbBLJ*?i*4M+O#8^cHgWYEB6g_8;lCa@tp>1znuXe9v* zsi2U0As#?N+3CDR>`7G(iRMr!I`p>0>z(q{U&GBiKjkFBvOukML_cL3r#A6uR8!@H@+ z-I2ii$>g^k0M)|nY{SQlJ6Of569lbfA6~;sIylbi7c&8o6h7M;N*1~xaA#2lZ-1SB zE5sA{{QbwS=a+qo*B|CzhTaj-zbK08e_`G>h|7P_hvv33#DAa8oJ6*7TX)0-oVS@= zWBm$DQnm?FdDm6q>Mjr+Sf|DN`5YjsY-YqK8j^baQ#D$7Ds7S@_ZiTm_dqOq`lf#W zgNn}pGrpx_W)@-Zb>x8ClCQpGfm2eytIT6=^Ze77L;&lse&4%^2Y+sS*$u~slPtWb zP*QUA@;&7vOJ~n1?jX zZ<;uI(fp#utq+mIaH8J+l0whNc|)6In{Hr$$ISRb(O3V9`3Zx- z%Sc=EHdZjUxnOzs<>)HAG1rch@bJ9C*yMNy`WtgWjaQ1kHzHtD*q_MH=|GxAd$$S= zfzM6!s#3gS&q&faGdQ@ukiRMn%QeuUPl1ViO+!c0DD&zCL8%Dqd~DF%t_Myw%P4MF z?$1%KGh7SPd_)fOCaEI_W6rMjN{gGaK{nVRV=U%RgCQ#U#(;Q|de1WFtZe2Pu+sNa zPbKzxb$VG$vNkKz#uO=DlEc>t&1r`vgOY1OuyxqkgdGVCU(@XLBO@r! z7P(kOkC~a@j!$bwU4tEWkeSjDp8T?(^ZYO)l_kq6R(R4yPRILj!{yAMLxn+8?+m$a zKf?T}0_ZB}k|pK-MpGy;pM??2lY<6I>-t~Qfo!vPX5E@(76g=`CWxy0kZ%NlbkQ#;nc>xLIqOreiV)4+8Jyx7KhP7CD|`U z6l8`cB^@Pm*{8Stp=Aa1fD3t@+Hr@6YYFU_|+Tgd9*K|NB>1zA#8TRC` zdNWQ*_A~8SlUT;5Yx|wi51Hg%c)Z!SjQcX-BzSK`&rHB4@LclpQc!2jS z>MMa%B4wY+;{Q@^P3Ao|51MMCy;ScP-UYs;!{(Wh3yv}Kr|wz{B9ch(zm#f$b{UN{ zzLSwC$d4$RbRf!Mnsi%PjU%@OhofF{(pk~R*`gZ9_xwau^Z;k~kB_~y|Ez|V3ToWg zftr#Lza6et-&ly2dOCMp$2r%E`WvF3*rZO6*_Gar|NaaC+Tf0w{|sABj|=s2hVop$ z@mv(ojDElv{amU$m?T9lt{0+0sMq)Bp8j4o{xhVZeIfuRSH=&~ATs>s?)yS}$`9ri zLS7~t)FKL2atH7@)k86MWOVqM#5Fi{V4c8nC-WC{-4gh#AEH5L?$raP%ht)h+@*Qv z#4<^~?=`!WP~7*!q4OTFk%1C%5$0Fmo4|h=twEP~j(O-yKi_T+j*AdY1RH)aBLCm0 zGElph0UvruJ+>Rps@0Qc#MvHcek9EaLtNQd;yV;1g;9Sz31~L$&%?X&;5B{)Jaz~jq-gjyC`wOM_ib=S#q#6eB$IQ=(6~f8tO9m6mRD+m`GgUx zYo}wd?4EWKN{_*oab5cF9@&Sa-tMEP@@hS8kgJ1YhK-Dv6(5DV5&(iiN5p{-9FLbC z&(r)Jz6ddrlV~u!3rY(9XVnW4!+cQN9fX|Wnf0OA8H6M=9-SeA_Va|?b=o_3_(1cVd^7ZcTA!exyg0Z zCCff{=?9yARm|+DOjck3|9fC}2{)sVow-I5*hFq_R{0iWBkkDkq9sU2aJ1FJ4FkD9 zcpdt3=1kJ#sE4=65>ThpfjQe$hL3&#_+815b2tEf@{=MKnBx@Bn>kmOrMANUe1h&D zC%;ceWw~a`S=Q$pFj7ZO0e;K;ryi|Hjk(h_h#NXrT12^~grkhBDQLuOj~?eDT*HZa zG*5-hYF+zxLId~c$d;|bB`1Jba2X*V4{v!Lo>%=TQEWOo_fbb)6sP0Yarkvg&9<{I z>o>ZY3DF58z0F-=H9hz6%Iv#4Cv!bJPJECsdo4Lh-N z`4>fGJnH2iqkMZeo}07so(-W~-To*BhikaXUokbUj+srV6W-qpy-gCH=qf-;Mu5TI zA8VfghZ~$Swd5u&bn}X9_{Pn|>wt_|Q_SFpzloP4bGVX)x*=2@1&1B?!Vh(>MC9C| z1$*jFJ*slt*Ts26T2dU;FB>YyC3)4gqyN$TAZ>-HWkj(fJ239&qoiMCE@GreHH<(R zIWLcX`p$jc{@`pREk~3=_$?bTIy@;tR8q4#Ud7>^+zzSpE0wp?=X~j0m5%b!=6vNW zJe2$BsQAacp4PD`IK4%S*2{zKr_Een-+Q@5)=yFKmrtf1nyg+sTmRf6-dEdkb?wmBVW@be=IZ7L$paPY)`##4@v=JVLhH{^T0Poy*kH<|fKRSK5^ z027uwI~|X{OEkOIvg+b=sPgU|*$71H+2ps&HCLPm=Cwi9w zbM)4Z9=w9#FtV@$d^bb@+s~>h#X6Y@)YRtGO5U&ExBrGyCz0khgjQRWAxH}wiTh2- zWv0sC>OVNu`yup0vXh7A7z=~MQGg!}TxZ+7N{ov$uAZdc{t4A!0L)>ge?(hewH&X} ze^qT~%Oc@ktR-Q8n^^p5*Q~br?3sH#zyF)4wCy?lJy3shSiM?jqxUBk0GmCnd3E_L zc8BM5Z-k?EUY+FxVO)}vI6EY$H3E`NB>T(t4{=(s9IGqMOYewtPw%VyWe?LXaqmbH zY^mj7U6OqfyT4jotIuSQ+sr>%C?Rs^WL;vBCHs=0=KG7fc`OE$M6!R6S13z^6&(#j z7Y_GTnP*SQUiId<4iLRXty;4kakw6b`d)Sc|q4I@)Ci7YZObT>jc-3Aum70{^ zOZzuEIXcKKvTctGjsqp?;V_;)Hz%irIo-`46)r_9oGygTyR zf0JqpCYzZquQsj7Z5@;RMos|sIMhamOs_fumN*1%D@`Pu5oqwgXvymg_D~q=W9s^i z6U&LfDDaO}S3xpi%_R^>VUxdC+)^Y&@^`_c>EE!lmce-tN595hkzichq~2OfP7~-k*Jk z+!Nt2+}mm?POIPKeR=KZM85hQiR#%%{n6d&{)0Z!%LMa%3rj8+WQERSl#;ELz`JnW zglfL}2}#^pj)8fXH__%dvF0muJBCM010@5W%-!^7wQ0qe3)=v|FHhn8>D=fp+;XiA z5}OzDFA{^==Ll&cZpiz~_U0lQ07V~f>TKwwJo0{n>t8!n2c@F(skYIH#n?Gmlsmb* z%SGc%;^^!k)AWYx6-C03>402rJ9Q#6Z1x>!T{lN95*wYr+5$trtC4y-lZLfmaHc{dd7fl=rrAk2V*5?X&*)kvJ7LB|7fbV%`H0|YKjHvO>RChbc)X7z16EcMo+YCOND zVv|>_Tj89@zbJG7(l47u%ErJ=`r6_8qE{Z6%{bLjTf03PBvO4FQPNz%QkhH_rGp$M`tH@FtPlxm$EkHzvxg*`4?lLZy z6oOeEUf5gRY28_mJrU;&Tn2sqcRN4H4uATIjGS?)H5X}%MkrXjZ&mSd9RVSf`tSZt zf6(`^Y2Z6D4}v9y<>C|b@QP)yj}?($!cpB`JYc%8$Tl7zXhroCAE0ME&Wg@bz5nCr zs^gma`Y_!nJ&;hk8C@zN(jXy?jP4jx5)wl?rBewJK{^LxqdNrY93dqo-SOVv`^P@# z?(VaD@6Oq`p65B|NZe#;aepN++>psi+DX>+qq1F}FjP4bW97OOPk&)3yjHht6ZPN4 zC57jb$z_eV$6v=iBbo9xw+2RTo)Vr8ECV*0EKjYZJ?zMj3UAR{@TnX-Gp6l8d+fY> zt7IYIWI_C)w2_yHp?|JTZ=poGP{J_7iC&EDG_+ZNp-x~w2|DEy?k)w(@4oyx&$|56 zbvvoE?RyYKY-xas2=J7V=uWeruK$9lgRCCH3z+Es+S*($mC3}Qf9}V3+7Q|VW^iX| z9X*d_Wiv3!34&|beEkL)?Eno z%jhPs3*I4k0W6!=n85R{)-}x4R$p8x0l&rT*&2o0%#YFGAMM8Z&0lY?;2r_sil4SP zI=jVbvcQD?--!w5?*?6;AN>``h->mNEt8;w)o~&GDS&lgZnguDD;Ajo9WuOl;Wf;} zK#pNNE2G1qBe2xD;8jnA0SDf*q(J+&jaeL6mDe_47cWK=A!AZbE zP_oirfj#v0pH+UC&hWW$;YZsR%Ile(-k+tr<@ucA9RLj{Ss3E`g7eNADvr-^@H>-` zE~ov9SnKzN-QQv!gjeqrlS(b(R!07*7c&TjKAYse4*RGM-+I(t;r3TNyOG`Cdkay( z38nL}8Lk}%OfEiJqa9}rHwbGhMja9FC4!#Jn!oa{Fz~Crm)weA5QUEz&VX!_S z$9N2!6&98f7FJgi5)u^>@bdM_MJ@aiY~`KCocE9>z^~1sF-tyfY_+I&9>*2)w{x0v~D)C~OXMY%cpZ9PNZM*#Ua7k?YP&fE6 z$7LOK^xwO0_p#y+J#*%_i4SLe!FPXT@75w8F7h5O+7@Lmv>r|pAFiPfH|GCjuSXw_ zWN)X=cH2<*Ylgx13+DHyTWxoDXF1FF=NWC+z^;XD!FNM#537B7!IvB6_p8?|bP;@;5qtyO`^UrO)1W}Q zl=!Q%w#j+3nWyLnRK@La}BsRZ!hi#@`AWz z&kbeo4_oqrnohqD{R=wj(#mMoxY~Fudyf*|tj!1vy0}@s-Ldy<9zs2=%OZi-?Lo$2 z)wKDV>@D#0`-vHCw>Kwk0m1iGz|)^Bn?IbMoSi(}Nz6RG->C||ni!S6y}yvXg*Ci! zHR1L&UGLkKXuIx`eb;v1^7P>ro`I-5ho?U*v?1=#BbU9;GlIQ?A2d-dR^-@cG2(e5%ad$iIh! zALjSw89LJM<}W|q9U-3E26~NFiPs$U&TH3j|Dbe1)Lh6OT6_^!p8aU;iC2DtZ}iR0 zMU=WsU$O%Yad2|Z5Rp2tH0N!}=Na=uJ&wy5n(7pAsC%qo7*gq=z&Au~$Zj2QbD4L~Jq8MPwbdzXnCV z-`xFt`;yl86Whu^AEEAlh%M&ZWtF0?D9P*jw$Z(`ZRvT z@Xc7II811g^StprUgz}ubGyNh)@SizA>Ln&xh455mr_SIG4!W#mDHqM&d(dFKK&bx z$Z;@l|LFIuc8^lw>(h36Kyjv=YNp)w`TAIrgNNPk1sys(T$W=l&>k%|)hN!^+$Qpm zMbzKV$PO)rS3u$y^y(?P0mIDq_i)RIhJRgG*az3yyYaymOkasvY>OS3zvpY-e|QX| zpP+om1rxntiX&X4pG1hh854dtS*P7(C1!16N1jFOy!VPimgF6l>7*M*+7}JUj&r9O zj@sIRSu5*ZOD~UUP9w8w?~vSIImOlf<;B)ik!2b}nGqAblE z#ClVpVu><%TuEER4to5?q15MUy9kRlI(V^ zs-YLto8BP@?0td}=~Vyt`>{e^DyuIiOSIce@!;DP20NqkE!7LtmiFA)m!k1VZL z>=FOmb4#(VhtAP6AoK)>-`%C7n7_I5!>NX9K_!AatPXp)CAM}5zJMHzw7^W}mEwtw zBug78<-&2jH34mb9i<5&trUlE#1zgPF@2-yx!WTRTY^bjh|m+|WYjaZz|=cvGOB&C zW1oI22{mRV_~%_sShM|{Gwe0AYlqS$2}Sq3e1cFs&F8lo`l|&L+cfe9yAvjSo`kAS zUe;auViCI+{?A+O>Ls5$`1PC8bShZQ<7ULj@6uu7)^$?m0P@VL61lMJ>c8q$wyY}J zPnUvX;l{An0*|dvaC418-}AMOLj=o-k1P>teEH$tFgmKaJHCAOe&PxaFukMQ5~8c+ zd9GILndOr7jK*mWW96PU?s?i2=7AmF?7$+HvX7}6!ut&kOhAN)eJLz&`@F@3fVtz> zz`_W5smo{g7fnzq{VL_vpD()blXphQQd+6&tTfo7(E`&?Mz3!jAQ;PS68I~IC$GY0 zX%qTikCaiD^ap$xA~}F>o{?i`F}s{MQ-H@TbcTRi4--FcZCPgER?P-Q_7#s51n$$1 zA>mXO24eCjc#8uzZg&}CV7@Ld{Du%8d3<_mkzJdSg|!A{#$Tv+kjtbJzYRKGN61il zN%E#*zFj((>WLLs3af(rN#S5Z?i+GZXnpXj*u>572GRME-{s|FCTx-P35Vz9eqt)r zIRvBv)io}c9k0_r{>3tVh2mmBO7D37M#_bXrx-=X1yazvTd&@cH?oPZpjm!u?m64q zJ4b$r&ru4}+!Ku}SIaT*-zPTa$@tbM#3E?Ulh-fqPhhv zvnG#c+*rg82#Va{C0Px`uhj<&p1+MqyuOhPXw5G3$v*m#?_3gX4X^I+ z;#tkwEfFht0}p+4!IDoUUm}S@3s+6^lqyxrle656r67uy%kN(c%;fj1OlV&|qJotg z4#XOZM=v$j?*;$y?2J$+{_!2BW}h%$p&&UWH5 zliDL3({2GA6&Kn>LYi5LD$Hw=t-m=&OZbspnUk0CffWopoDiMJkw!>@AU*c9f~6Wn@GOYcGobib#P(2~+*4zsJ6ZB7rb_hzdDae$MFps9O_;lqqa z`DG8D>Mca7i9ZMBoDP4PxRLpqqJ^+mIOWeE^(jq@*wp3VobVELkDF4Ug7`J>9={JI zk!{YKd9e+zb}VrdyNFmT_y*%vdpTw3Y=xV9u#XG|+6u(LV%j(S8|d$L+&aS?j-R<@ zIkQWQlVveWb|!U>^E1^3@ zGjrk)Z!5IqC(g1fQMG7Vl>yFo-ZiU6$Bu@_$5cgyp*YPd!P@AT24EEI_-=%rpgL)4ax63$jd^WcYHHr{ z16v|lKt-M}rYDaaN}M+cGh~|o`Z=OxPO0!zT}AQ$dxF2J%n!xkq=2)@E7u$G*lnV* z%9fe8ZINout7xX298A8+1?P%h3daVzU-^B68yRR!pxa_w#uam)rA3qq6(Tc7@|ghB zzCK5LDQm!Q?v88s)ii>Tv;E-3NEp}XLA1A}#OKpZL#*93@mJ6Uds`e8`!T8i{$pS9 zmbaUlxucijgr+GBpLg`q$8yf_h%lzFR~}G=sQ&s*^zN9hdgcP}2>O+-q{U0BQ*M>cDQP(@l z*$j-QAA5kxrUyJffezUd42y#Fp&7;&Z}J@-&Iqz^hC{u^Et5yxt%{Y;tRkft3IV{B!WqUS=GFBWeN{ACxA{3-g&7{MjVRAlSx*23xFq zp5CMi6=5x)+2qj>DZ&K7F07oJU7z)CM_Ax7odq-8EpD-@8Zr98$L}P7_o6ds{`XQT z0kRbIt}}q~99Ej98MVHxi|nStqdBFdou@ zHNPb?M$m^fZ%#X{`c*h|=ge4~q6=|Y!SmIt$q@AQePy@3WTvBqpTT(HWqo^&MzkPRnL4>2^oM`ECE9ftoz>) zWt(_i(zHb|J`tgw7;to4U zo7>ohUmCPj=P&X{U|SsQJhvISJb+K1(I}@f(M9)DtSV~eHAizendL5KnIdc}7O;v* z!2KrhFN8zWwniY+22RExpfMvE8AkB4?QhJ9J1+T5g0+rRcS9Qq-%q@*a&3{TSn`S( z`s@|4Bwtz{%OdrjxS+`UJ>P)NS5B`H2eV;iv9RZ$*+TCl^*g#o2Qx`{E}j>RpB(an z^I4A!%`E2^OoHWWp*hF!z=JZ&u#C%bPQWxcy07IDt`#k!52tAYeel~&cV9_=k~qjO zQ{0^vI?LXJu>&7PfxdJ+`;BlvtSsLG%}>zll?rdM+R9~y z(V0p-@#=&kx*@s1L~K4XKJ7__uL#7i?-I%7W2*bAI?k27A%~x*FE{Zz7mA6$zxFlw zF_1g*s;@HsfhEsRg*Xi2l_Xi}-c5e_22VuCTC z9<|iS2p#0u>bkgT#o~eh(VQl$+3O?!KE9abwI1@b+6k=~5cco)p4yd9?AvL&f?~CD zF-_T$;^kBV43ISEwQps*u>x|YJ8YSEM|4_BErjsigu;mTTrKdsT~$fTanA=F+iw#y zhY1_kMR7niO${WDfG-B* z@%AOP6ifBGsGQ-a6jLCkAmM&> zkHy}TQ=l2>Nhk7>y=Niqd;CtxQt|{wR@}V9hsnc~2@L5aqoJn!BEN=EZ=)Owx(qVK zDmSqw9`k$Rg5VPQv^BfBsxL=GuYV^2IjsRoewDyDAcRlsNxMpR>L2Q)4HwcrCHuOE zFQPwSSspn*Km0a}2qs6+f+B)VqcV*%jpx>2jl1X7X#vc?R^#VI zkM;GT`xWYJtjah(b2b9s{~yc$uA@^(unCQPLEhq;y5unUPB<#%$INRkcRRDVpP!## z@j5)+@{W}fsS{u_aP*v9^>8IEa@IZe6)qx*!ZI;}o6O=+IA4afo{Jr-gtCSw z+gP~h7^WciNW#2Zq+1F0e_q(O}eqx9DK9*O z2(f3RK4a}>4>lwJW0G%vB8@x?8J6as8HzrS5&eALtf56ETL79u#>#&Yg)YRo_?$Pm z4*ewE$uDaLZ&FJ1)ln$y?o^tA3;nq1*k3K=ZuZ>b)JpSLZ=9P9{b84>Z!cz2f2&M0 zTj*!%NL1T8Fv~e!W>Pc*6pfqV0bOq&4gBY_(CnT*A177udU>r%@tnm2ZstKep&2p6 zc26_Ghxw*o`vNUi&D;Yr&RXAp)yDP_8(i+M7Qk6RChrec3)s*V_2iO^RY}7(50XW= z|FneAOow}_l$}Or5$(RB1#;AL!iqf%Lyh=(#_TdDi1r*eQ@yV<+5pdbRWZz42);Zv z&qi@*X?9ppa^7<7fZjReaEOpn9Env^_MfF5HaQr02Gi17(B45XHc< zPKV$83QSb|98bDU5;uF25ghK_zyJ)pg-rhCU#akeF$w#Xs^As3qCrbHvHc$2q}bip z`E`lwt_2%jA;@O9)Z4Y`Xw3oo4JEo`SM50^k}Io94CPNb$r*oWbdDQM9%rw*>Ku!g zEQnHm2LFslUVX3fHch}%zerwJw6K!Y`;4p@$L3_g9asp#U%pgYFNoWZ&&I_XU4qzG(l-)!y2K?QMG=Lv!b4WL@B@XWc+M`*mdxvfDY z+0se+yBZ4E#*|nS0|xV~gu<}e9)7%#9#-{(a=W_DbA0sQB& zqVe8=#_q2OGu97;%VTvW!d>mB!%1*8AJ5oqrz~O|zuiqSxaktJ1_h}b!xzqnDC27d z7GJ=B^$*J#gUWUsSw~Z&y@kGnzUE?Eq1+6oaYaLqRNdO4UL@MdNbUjw;jcA`Y<`rG z9YX=(glB4yelA{ivV`j9D$4ZEfs1U;ev_K{URD=!2u>LCqoyP8`Ux7{ftaGJiTl;Txc!7dMayrM(Qx*M zoH6m^rwutbfVBEewN@0UQrc8kFesd#88X{yDp5(ZJUcUZNftKpN0%A<5A`$Oe-%r6 z`_9WoP&ulz=D!qG?@fKM2%BQs7i!6b+CI|KY2&5aKrWSZuPm^DVX0ByUB?8%^w~B)l9UP;dMc#Q90N$PU^I1!GzVvuj+QY;X9<68U+LI+oC=u4_a8n`{ZEXJds%G7Fwt24a>cPf0+drw-2{z1}inU zE#EqSlXVh%oJGsIEd3KQ8kL|qwQHkQ_!EvIsBvfe>A%3*6`Lhp3W;h?-Ws*BFwc); z6OU@=99*cC$rMx4MpY=*J{uR_soQZ42k{x_0eMsw=%Y%?Mleh>usb#Pp}bm47)%n+ z31PEd?#Am*=%}SWS9J-INqM~jb=iO*JCz=Nx3$ngkztNle|&?79wxr}m5_`g*h`qn zt-CP`^aW8-P*<^3tGnc%edJsjMv#e$vGoMwqKrXNo)3ofn2o^4t#e_wM8ox zq%SiCBX&tbR>Nkp4}@hq(tJ$!ad$JbuKE2?eV8mzt)YJAnhuY>Lw>)O1)ri1ulh3fNK`+@=oWWs}){{2a51twIH489xPEk z;L^Gcn08t7cfSUSC42N1ZwJ+gRt`D9o15JTLAIjHe3D65+uub@8^oz>0Cz1{MC+ji z#Z6G$u^OIqNAgBPDyo|*F;R7d0tJxrD!W=cj%K!ihTh8``V0+G2oMqHiyyJWmqEMe z5Zhm;A? z(yWQx-vSm2+7`_tVDj9G!IL{=J7S#6CbUgcD(bZ-A_&l@WC+t#G)#w*L#dJg0q==A zD~{$-sHeA8`znwMTliMbu%(Uw#VHJ8^|v30_f*I}&*zqKRo?kZ*QC!obm!Rd#FT=e z+D+kr(s^dKFu>B*t4n`TO#B10;g6dO-}G6-3#ax?O4FAJ(D8WgUqVsh;ujjmRm!5Y!XN=v4jBJPV0-$37WJ8>vq?|bNp)0frtM|O98-)k` zFF#S2PX21N6x*QRA9||uCfZeP47#({NdZv@)~w@?92eZvXOP{0cnMqcPKvsl;^-S zNC&P-JP6P5hJJbarW%3lBKmE(ROLm{=mCx^kK9o)Z7&R9rg8dHoW^s~ncn@F#}Stg z6JO;g0lwM(AJiYyK3dQ&P>D`FR*Q+R?Xjb%F0C(#CT{6&;52d9m1U%%|1RlewCB}z~m!#$6_ zc$I5RKK;;baG-BtWBZ?d(5lr!m?{2I!%DySFSVdFDN()Q7q#H3Mc~n(M5h1g+_d7nnnX8w&}4| zPi?Y%U`X7)*h)Z1?t*eU#iPUTgJGJKZFuLtbJ~t>bPwrBrcbLewl~m$-I~-~qD7Jn zcCb=jtqV)UN1aqZza7E#SihJ>T^=<^Ig|MMmOz1Zj6&*C2D7=#l<+#Q3NWrulBi&T zPXF8+KH~26&-im{Wki4MpuUxleSFo4#k5!a81u@?P<5<>V)`q4)r`6N0~S3ojf?Xh z`FUey-^k+^8_m%pAQ@}p;smL78u~xTI^-PRCHnvj8tX(ja8T4Q~V)H z-bS7A5b&0WJuO z8zMScVoU?r$l9iriu60cp(%1Q=w`74RES0kk&g{N9c@b=OR|i^(KN~(w>yQghGZC| zCyYcA-L!jjPY)8cXmWlWAqxNV56TeUhht*|+W3^dKe&y4e1r(~p&oA-tz8%`kNqch zB@|i@l|4P}KpbI==rc|SfX0$nX&FmUE3<8vUpdpb)8S&0+*t`+yPZ;5bWG=_ z7{sg=;jmO2mcsG{foYyz$=ZYPra*G9;SYd^FEnF!4#{#VJkZa~l>b1(d+7O{v_XF@ z({LJaqzbab6 zGj5wMg3PPR`5mqJ-I18U3n|lM*W9>VI$CHqr`voq0*+d+NXQR|$-iLZef)R0-FGjI z<_*_2x@cYAmX;QKk|Bu*0ZM%EO#N})-QNDjuY(*2?6Kr(KJC%4-!BZl@~0fQ`Yiq1 zq4bmEm*6<_eNvlAXJqY&ErG{mFgv?pIwxmvgxgpoDfftSXy=%m&6U z?)GbUKe{3&%d|&Kw)a(AO;sAR{*6I_<%D*cKXd)|NG1gvHgpp=Z9P;PV>5kpGY$RF z3uFnD>sZWM92cj0wAg51Ol2v$x?Pm+@bu=0EXAEue( z6Ie0-)$~^crWyhs@a@t$+A}{$~9M~!HFW? z-15wG<*~&yXDd6{=2==R^t@?YV0)TDvhaZh$@K4*n~_f9mIg_i*c{0r^zNMB_hrO` z(BA-JW2cPO>RG;EP6ZVI*Z%U3!WGxK2II!x8Yupj^YX4{bzqioQP-UgJ*i4%z5;2a zkk%^w^*ns&FMA6Xxe*RHn~SktGIe)Jj7%Hs<1Hl1eP+dwG?f^-;@W<6xP|6P$bCtS zHo(_Nve?HmJ*f4&)YbG_#LBsTRuikdzeyf2en7e16VDWuEm6Z>`^mF6702*&)9WnerpdzZRXB^r;WgBTW(b1H$q!2*LMtBPXUPwQ7- zDs$#Uk|Xn_a$kn}NTDt?GTOZC%rwdf49=fLc)wRHiviIAIl^VF-M%uIax$_yh<4xBu2@L5l~y)wJ|<2N>65vG}4hs0|3U$Lsf z*4zlOOKvl~4t2^VM;=uO=^24qiMZf5R!2z1`)Q*ubQDyIRlOdr(>Ei~AkBSKB|+8g z&q?gRh>0E|nCkt8AjsoL`73@Kw+z{O4k<5|+HOCg>tJZtMO#X@A1GnCAEK8Ot3)>! z`xlErvA-5X?U_6>)DNM`x0&Hk$dd#!IdevYD9$Y~X^9^f}_r-qomsz!_I z*b*Su$ljRjf%U_X5Alh6xK9g}=~=YRmqa{l_+DBb7@s#PQR~*uDe?eBDO$os^13X@4+|crh^E~zGP2d)pMWskRP-($u`heV#O{txj_9$I7qRyuVm)~ zuqJ=bp1VrHL1I;%p^g{-vQ`0b&B?e{wD6uVXn)Vr#q-f{E;$>x_<)xuUC}1`v{CRQ zTJ*?y<=&PgfuM~YO1aJBx%f;4;uTc!X_14~&yqTUA!8sJ)XhmcBap99G$Ul9oQ|Yr zT<0=RN0$8lwAUKC9?$TNFc}{3{=-D8TZ?>m(*8b^3DwbLa0W*W)z7VCcZ^7ppz zX%Z4+eu?^Kjs0=vxr% zo1WqE>FEq2_F17*#2ayg3cVgVaXUS7RcY}zBW>be8>A<9&XmWP$96LZ1b(8^(*p3O z6b!;&EO6c{9u4w?On=S{oY?B3xP~O3Q0sy1=*PxtaTu^sv5rbt@CFq-W0vlhWsn)X zw+oamd+3;Ic>vssxR_EQ@PzUI1bGaVKjz$*`8o4P>31LH-Zy`tu&Pd`^PfLKR0VHx z;#)Z$RabZ?>~$$x_%RZUQ*Gm7lN(X^Go!@kHG_Tm=~oHHC-lV0jr71c{-~t3BulfX zgQQv=fRbjj%T0>}vS5PX>z@4K^4Qf4i%HB=OEW5CRUdy~tk_g{-hEWyeQtq?ulrLO zFI|F1@MK`%mz)vY7AwaL8*?{whaFy~xRSDrA%}AJ1q=xyGAAOZdgc_)JuOXVC(1r& zdTNThyioZqeImtyh~K^^t`w+Gm^Lc{mM|};P+V0iUqYyxwjp{|)9zs$+mJ*ZZTQ00 z%or0~jQtdmsIhV%ctzm!Qli&QAROPlYkmK1&XI&&`(5y+idPrv0E~pC;wl ztAK=r-K&`G4dLbM087!giwq-!M06EuYqnY17sKs%UE8AKsP^8-wnOz3!t>^Syuf0^ zIe^$*!AQa;rfUtDJO z1>tQ&Jcd=_%kE&cJB?atnU1Q`z#(?kO$@r0y?2UCG@p|c&#j`Q7BpE6&s`q_n@ly4yJEhxNb>7h3=sB+%9wDe&h(6!gNPsMP%ZSZ5H)8;f2+Hq)>`YH2*64 zK*OFgK!0xGwF4U8r>dicR-(d7e~wsZLFlhL<}eB(p3_)?jOFgP?(D$w9fC;aoxB<7 z1xoX@$YgxL7NTsj`EFizA@cv0r{Qnpc*mb{R{RJ0E(lGy6Y`huVmw**yXFq)Q?$a| z3nk_Fj%{HGAC7}_)3h&s@a}+7?sndD3UG+onprSYHfON_LD#}JWstlnEa1q9i$oC;pg!P(%KhvnTp2|1*Sh&s=nsG-vi*ni zA1 zFdD+n|LOU<8K-)Ki3ZqOWV_nA_EKFeB49$KVj|AD`2j+I+rhq87Yf zh9orvNUvn{#%%xbqRZF~zYIy-vZRkUkJP|6Bs@=wO-cYjMtVN)SH~J#y?rX}t?&iL z-nfnSu?=YIZSIs=g)Fkh=?A9+;Fg$V0ppiLdedf*K_hfBf zxJrEF<_W0K<NdZxriInx+K#6#Di6E<+QXTr$S1rI7ZEZ=1X)@QrIuWVKs_)c(8zp3FiMf|NbZSKGhdIpO zS};(^hV^thoMwVh8$J{y{n+u)jz>hQ#!ZR8xVO8WT^!PkDo&H4RQ(A$7K*_;joVc# zlz{)l3(`|2F6W*ZXxC#)3yKb`tSg`zPRbHpPM(nvDKiskQ#x+~>xc_Jy5;vfVq~l6 zEzBmiX?)tcDjVS4b^f{oI)~@ijQ4`QOi^yMM7C zRp0br&8nl11|nWLvpSC^gN6h%HSj!PfohT=Tgj*!B2zWV6@3j&n_VnZ;JVH|mnr`O z*}yi9OCsk*qgoNzIP4W1!grK_l(fPBxAjM3y!5x?WcdrIis9JDN?dS9v>NgeENquO zpIi3v&O7n}UM%m}5?={7^8c`SUma&8v?0u=+`0FMY{r;OSBC&zcoLG#&`XIaJa9C@pqEtczE$jD!Q^ZJsy$B}yY-37H9Na-31a zr+t^OC=rtkdR(hNIcyIc2uBaTZji>*+xIVcIY}Tc~+g30j>Oz6;H%?bb-J8k#u!c=$7t>&q`;B?%F-f zEN2@>@|pBJtaLrGwcbL7$!jm2z5D+*97n~(WLOgD95uR-BpfOB#8SL;R5B-wk+8s+ zggzx`ta7l5iCqYf zv0x_3jef)~J5T+qZ94g?0YN9Ip`4w^tXBrmMs&*w<;+s7hxbIRQxN~hQ|X0W{KcR( zH3*yW_p~v;X;gRjx?saPLG34EoaR_xo6w+r_zKcAyISqSc^EdNNUrGHjAzE4{lc2p zSCJTGYM4)pne=-hVIuEoD3+llVdL=Be(V=OCUnyYrl#0lI>z@C z3HFld`H-s(xWoJ+!>{Y4zJ__nPu!S^Eol;2zrd!V29sq@&kKFx=0O*~sIa6p)kA*n zFF3ml>!ZjCnDQSL?~S(^h((EiJ^5&Syf!6BNiEV8y6*a2m;^3LlntkLr{$d$_}qm} z{Yz+(HwtZV4aURlz4GxkQIp*-mc z=qC?0=2$dG!$wwD6hMg#o#;VkXBd|y70U;R}1hz`ZDs$K~9_V!c} zc(Tckzg0iW#_BI*m)7SML;YW*mgjwfdS{`Y37W`IOZZ6cq1!EAimRX7c3z7z#nw8{U^%pd7!{DHDy6{S+h?>voa)Uue8|`z zD_MKM8Xaz>4l=L*b5a$;xNo<`lQx*>-R~}2=P0rTVz;7HhiI}@LDywpo?lIJ)?l(l zYSwZN7ZGD#=DfCre_tfLxvzF+&3{ACJpU1cuf`;k^Zg9v!uK*TWzhQ?$>OG|rS%sjg$Or>D?CRL)oo0>m5Zvx8^RQ?VSZr52 zwo08VTU#k9+0N_|{LPsBXF~oRe?4uM_p9l00!@;a{n-tQrnb<`zjf-Gvw$GO^}COw zbRt1qJl>BmVR9p^hLOfvdd==wIkzd0C@&2ou}@oBF<5%@PBI-PDE`fOm22LHqT0kF z*3O%ZVc@7_snA$xIEnB`p!%x0N4w3Cyn@eqS&n}@Kr^8k&^QbhR`u4W z?zb9p1@-1%!Y^lYm1AB`NX}+OcWe~_K5E%&)r^b>?lcRn871%(?{5eEPE`a)pg{f- zBY`IC9I?Yrsy)ljM@)b*B%*WvXZv3qnGlS7>F7-`i3lHkJKe)+QQ|}mW2XmEq>m5^ zdbj&x?ZqTG{t*993)in~trdcxHpm$VV-+|n9lTomF3h%9*N*l8IZyv|kKp$JEoeqq z3hEqKWtSF9VB5GPwU}{0r8@!4u&gWXb`u|a|CQYCGg(s7;%unEUmq#^sn8v`>X^(S;?@)$UW7iBp z57NkKWqT^{rUH%!qNSatC-!JtBlR51RG0G5*6eA*^*bu?=PJhCj;iX!wVvZvj<5AM zN{*Jv&kONn0Z^(YChiA7z*n>Vnf`qgGZsUjVc1>>A9M@abbd$Dh$ufd<>;RM#1bE;?_AbPjlS$K4Ad^bgmARUZ^gh~q2`Ce* zD|;tC!2gR5zVUG}(&V%)YJzU7hpFB*9)&eIct49mIQ5l=4wQi!9=#4A33eqdaxBjE zJlEX_x={kE-IL_CaIeflDAu3T!nJVfVk&tHJ9vrj^QoOX%xPq2E5M(>(@sY=WeJHx zgN~fH4jc)$GF4d}&;nx94A0&s77<>s2wz-_AT+C*oa!+@t;C$%Lq`_$qf~6Rw36aB z!#9G#S9-)ZE&=F(A8F1z^o^>5M`m*_wz zfsoyV@0}TdxJSr-bSK4Ugc4ggDxPz;V0!jaqcQ~dAUrXgt_7EG!;NR`Z?)t1nbyzs zK~n!DG*6$v%R;K17iMa;lm4MG_NBX=4ftwyJFDO4!9;d>j3#ub9IQe@w#J-%8u&6~tAn(6F(PdANg{3Gs#DA4UIu4BSA8rh%^=}r@`(?HLN$9I~f z3e%|aCmBo4xUd7J#jMf2SS2lmt>yGl*`T*&`qLUvK;Pq6=&yI7zE|OAsjRb8Eqo93 zl83{il_ReYxIwSMK}RPy*zV*grlM;U`Ts>$&!QN{H!oTZ&IK1dWE^Y4{Fpf^_9~;R zc>Ktv(*07C*cZnjSUy?IBJ#(LF+i7gJ+x`bR395>9OU;&_0nd(%!PkKac z4nU3l*@pK7fX8*-?k*D6BbnpKt-Nve&EJZg;{Xg(`OP1?b&B~6I{Jx7TnF38V%D@h zzyu0#GUz6XKP(kw$Le>3cJFFF_-X(I#dPPRFH+p2YG$gmiL< zL$s?df9nAPdlE?vtv%z(tTw4e7-`jHPA0<+N-im2f|b7 z^2l(&>$>aRM={TQO%3)NlOQKPA2#^5+LuE?jlS%rJ+9Jg&L%3tem+{l9>ow19WycM zx6mOs&Et%iP{VUpr9*LMu9j9dUq%Hr0Jvo|82-scfTnp^FEJ!T`l8d`m}sD4;&Qrl zOX1#ALo!;WAeduEe#%OCraenbkh)|JInvkQ-xRrcx^!I>yG{bGc-oK1f>D?|AiKZ; z7YWQcyqOQgfvSJ50Z@-nc=+8?aRr1|Vf)S_B8r-vc7amj(W8sT5cXcv3{LwK`B?Z$ zIMi!?4}RJ0%gh|=Uqvtpnp8%@i2vE*fWs7ZQ`?fsk=5;SRhWDQ-zx>=JkvG1fzlx= zb=P*g3sGI^#}8=s%mgPcW5O{i_CmDGrK-+hHPP~4CNZmnwO9lgzE)T2G^Iu5{4u7( zgd%lZ1+ct-q@t{iRDikl7;+7XItf>ARFBXWBz{i6sM!X}sB=qF;Z|Ay0J`adHvH)8 zk-6%rQ@D)f_-_f2X;&azcle9Srk48#+Q;J`5HAdmT@!@uCWqn!C@_sjlsvcZScJUPDpqU^HpD|WrBb1>9hbzc}G$}vt-u}acz+r z+c@;RSy;fJkMwIn4KS~R)I^dI~ zd3)g;a}!6{m zq5NlRq0R)>Xjpi?iDR1lEP>`vm1q-C<*{V81_!2k9H!3=5W*{EgwQ*vuV2e`{wwcP za#Xo&G4~q|e5c$9HO=}b?dKXrc0;$E)D6VwOpHLeS~t(M#Fcif5OvFA4RSZ{nL2xnCXlE7np#spfMO$D@kd>b2QJ(+j-CMB2LD#I%t2ye=hiMJh@cYr5r$ z`8A*L5|D~Z3$Ka|#3{Z7yeEBpocW7{#4^97i*xxJKpxeC>blan=bt;|Vvu=((dP6+ zWC9_j_&k0HZ9JuXt(^3V;V~w9h{nF^MWOxxHHnFXy`9CUc#~QPU$x@JS|cxlb?;2m}F)Q{8rS_^lYL`-@Hnmq``>7SRNtM{d-lJ6%)uKY}Jxc8w zHA9Trvo=-woc^Czju#{+IrsQp-_Ld378!G*ue6fcUz8>IkfTH!vkKOpZ&+m6NRz451%glp@ued`6ggd&Bw=ChqI z`fhAv9*p&xhzD(o=0ScgfFb{!cRA;qjiwiU879GA+#m;5C9-^;;(ex`%~;Tlz1dHI z)+@&w>Z)5_>+SGR>aQs&^=B9b=etx4e)dI%>}DXRth@~yx)d{m>^^LbJZ}Z8gir#7 zwaglTE{-74PH5}Ol5>(#(u2Q-0~BJMo*Ou}>m>3%zQF_80vhB7$jS+kt+7x`EZ7}A z1Wr1<;Rc{-L5?@)Wp*}S8hC$flW~v$P4O>(+Wy%C?XD@ne;po)XlWpRxO%RFbOpcz z<6DtrDkz|ZL9y3hJLX)G`M~nz!-D%M&~tqs?YXRG+fw*zrK%Pp5mhVPcIHhHzf72C zsPJC6GrC_&)fTXfGJ%Fe-j@W?V3`f;VuwLiEM$ZbLq*nlgd0q-wUFc6T=AybU!z>6 z`hEY13%2v-(DX-}1@+5%OJ{;H#WF0Dv3_OwjET5<@bB+~k)B+$ygcWzo$ zBj2cPB}9(ZPCEnQW8wlE1IhEj@-*v!LIkX7bZO`l9zqLu%YI`ngw}V0(SCLeQ>@7h zE_#$F;fSO`)*wExrzF<>^K+zCrq46y%{H0WcB{4iP2?T|BNevJanXD*oJn~fz;)wE zlfw1h9`}GwOz9bo@*ZS5W^Q; zbMuR8*VIaN_1PeECujHV)190X$^$Vf-}=QK^9W!s*gQ!Swn7D9M0@rPFQ$g76N_eM zmtHo$SexzYh&nQ{WzeK-BUfu^ys>#v5VQT#)<5wkZ{|IdtL39q4#wTSIzsMHK9zPh zGwMde*ziU*9SIc*U~eT-E*s6J+KnkFUNN<^_*LvlRtwe(ha|2$2ISz2kdGYZz)XJG zlP-GR-~JTd=wS<#u!eBF1>IH{*Vp`k)c_u#4-Ny1q%4yc>7h#<@irS>ylwueg;Gkb zSs7|j+jnVX3}xK*7X9>0@;XQUyMRV$sqz%r2{d7b0;`565`m}EuXiwfJy#Prm(p4~tFQD%Ma65az zTnK+fKC`lo*!Wi)Cb%Yylw{$<``_Qol$LctR zvbTJ}Kh2*i#*xXO$BwMZBZH2gE4V%T?R?c3r!k-1aXmXZ$qL>!$d!Kk zYOlAGA!$8F)3_a~u%atra_4d0FVoFlj*VQKX2ppKC(|qtPT%#&%2Wt2Y-fYLIJcvk ztH8?eHzR&0{_FKwzuWGA5hWByhNiTVR!5r7{YWy0Z-{?J3AnScjLY;W+QDMgv7cS^ z{s~n?;xq0IHUbTE_rV!l(_VJWw!hkxp8x^;izQ8;)+vFwqO4g9j2p_nKOu9C$ zoBoHNAnUcWs0m=wdPHsfdLh#P(`-4PmA^Ao#z~ZC;Qb(4cw7HOeE_t;E5#-7y*}5s zMkx%VYU&yGQ0ohgqwW6KI$N9%IH#orj4r~0Ha}CNnJD0@wyZCj=+^I~v+4*16Vwa* z0+Gd=Q6-#JlZ+QLZ8;I2PXcReda{gRkNe4!axrP^2k2C$`xeLiSGI2tr~(JvMB`8Y z!29-Ax}M0_&+oc9X0t!u*AL?!vieVFjCqg58{(uuHXT3kv~{#$z0yQ|_b!R0`MV@L z;~GJqGRw8OGNPGDoYT~?8Kn&SUP)WK=yAN7PX5Fja{eZh$Rwq;#B@-awj6?7tA4wl{>JVcxe>>t3LhaMI;>ybwi~tkwgLV*O`xADr+57hxZ9}XzaQO8t{W!iK_L{`Y8~HRM$o8&w!GP;?(}!{K~;b0Kvz$rIGNIus@%W z9VhSAB2g9_+(XQz^E$WsC0-lt-r$V@2l|&VXgcQ&H(skiFV>=2E!uCD)S7V~7XU&j zp_T~%pWwxbsqFX%i$s^$t3}h#^u<3dxx+63>zaIfF@jQgF{wvhj*Cm+PmP|8M}t$%eoml}suB&I|fw8%|6imF2}@=Cc5&y~-lUaEn_InV+q&!UkZ z^r8XXc4;3uK&*i4GVKFn>9TOr65jBP|N4Q&+5G{V#^Bf>;hN+58nb=#*A8()Vla*1 z+Mhue)Ci`zLcBb?L32A)qOR*f3yu53ArwVGf|v&`AnESPXOKv}W;HJ+`&Am0atXE# zA|y_W`BtF^w)GThalEj4#GOO>+$mj(%<2V%7*mSe`489tr)*5HtJ!ZRzBcE>3gpo@k!+_`UP4K;=3Db;&^&^qr*D?uql)JWluilc9~m zC-2VY%kL%{M^fWU0wwla>t+gGV&UC;w%IxJnFm%!a!sB2iI}=cHyhIUbulYA?g*sK z#zu=+;&k6?zh}XsBxv#P0Om8c;n>>OzYMxQw!N;-xZqKHN}TuGG~%(K#DUbd{g`MS zid`qkOtl8ne%YVW&gPFnb?f;PX|=LalnaH0+&?l;w#OZT;;!0Ww*FQP6tf)?5(=L? zC@5uWj_k;iML~(C`W|NMqq!5!R$qsCZGrNmAQ5EDRg339**%Y-wZ$>prN7RLf(xVO}Q7#<*0V8ex@K@`(#q`&!W zkXz*Rd_RfDX{GQRZc()pKxR%R?O(a>Qd?06VR}7=3T#n_9@F@(uM(Wg^fM}lK=d+u|Nn{UR&O4F8VT6Y zeL2Rv2V>UJHHx7J90d7#&)?w1x0u;|oo*WON-amwDXQApJNBE*w42{fuYWbD26&$Q z!Jj9fCU21oi-|T-Dhn9S)4s~4hrHX^i@FFfkq7n+Gg;@b0ROTLdzGd?<@18df|!Bs z%a__GVl5CSu6y}Hg|`F^HTU;`ws=QbvfLXYK9v{wEtjMVnW~Ki4z@ty{WTttO)NlQ zg}|g1?j=;X>=3yIV-v3I7{nL8$N%j*?U0}l?0`C3(ow&(m*cAc4!U`)ikq|oSj_d? z3Fl1B)9%-FZ5DZg;%o*1NZQ^rfagCs@cw%Q`|nTt&aIgU3{}|4P1hVOtuD?hf_R_x zfj`%qham0DS~-=sqxpBgEa_2+*BL;-P7m2iyC(0v4C!8Y+a!1kU=4TuUEU>I>K=sY zwFk2BO9|J3meA$Qc?`-s>d##a47^A+md!lI_{VjYO^t`Wh1v7fjqtm+8BBH zy|LlkD_{?M!~Dp?n^By@3~)iX4@YK_eRZ)4i;jYb38JdfXod-V2b_KZ#LEJGx`>Pg zha0AP9R&<$ixHbl;6;Q`^u+Z zZ8@^gu!Na(fSb*2+1Yh{df8El<}O3Yw;U5pa9;#@gP6w?z$>5|7tBSImE6whdk?Xt zxdcQk9DvpN8ZBXAIyYT`L42GW{nYf}mC@F5lV{{pj<&!bp0y6&bZrTewa9h2p>h26 z^{#4?evrPgXj~FZdNzL86G{I30s)lgOUZYDL9k0uHql%Oyw?+M9{!ToU}@U#7phs^ zys?=ul19yqJ*AE+|p{dc<2wWLmMq7?U73Krit-Ndln~`=8W!hV*Ch`aH~3KRDH0gvlL=L!bfjj4$s zI8-`yRfc|^=ysNHeWkYChJ@QAt-72hP|wTy+~4g$mi=_WtR=;bOB-vxNo>Im5)+$U z#^Eld)J>UBDck4P%umb+72`-nxwvNd@P;MrMDCdcPv64`xKp*W5y0IQyE@`XuiD4n*|JVlP__bo=JtEO4+g8!kkaQ*2NsR!X^|Um zB?rja23N$^b_uKcBN2r3OrfLg0O^bg1C~*$83OP_&1frRNF<< zG3;EFXgN7sE~Q_Z0?b<`O1iZ zD=bHp8+la%egC_*J1*ZNZQX+jU(l@q0Eqp`pRUGpeusCX^l6;Z_So@^E)|(Hr&EBI zc+PrJ9Tt8PcihuqqkO$ARB~vu&S1lmpPI1ffo$h=dDqC)tY)0mN?d=E;IJ+nUmFMt zS@(<(AK@5U66O=qm)2@Kz@L-&Dlo7_xG4FY8%r-^lFw-w2Z1NQ^{uCb;|a^yallB) z)1gn=y~T#1cy5iQC(cNrYj78@RLbZ+$m#^*#m${7C;)Vky-3{gQY(RUvDTaqZ^qEy z5j5NF&Qqq6OnuU3QDG2Z@G8SqNs^OrATX2jF9m&OGznSaxPXzrK!-yO*CQ1^LOXyhyWY$={2 z00}apM;_CC6|Tz@-#QDQBcPd*lMom6GkLIhIBspSZ~Eaom$DK*eHHlH>N3__pcBY* z!J~fjKgDf6nb{6y*=W)=?HvlNYTCOm!~`Yw8vNwn`Ci#UZ$2o0YiZ3N2c!e*%paTC zrZZ{}a+;zv$6F3^VZ*=L3jJE86P$S7S7M6CH*w~+cGFZ}>Q`HcT0)AGj9}d$t2$xR zD3iz-`Z?-_D5s1p9jF~@rq7=&t_oN#_SP=%`%E6b_Y;%0pc(uf7gDvzeQ*0;oE5pj zhiQV)ar@l@4Y2B7JdhRx3JI1$EaPU43zL>p0HAW(cbwVd5UE-S;E2_PJLs*D%+twt zz8!q4G)3T-sHKklbd)@GvZ=mv|DI7_-bP z^pqVkI=nIuq{*))-HEiE^2KMgDiNO1YrRD>nriO4MiJeY!;D7TNI29z;`My~XQl;; zrZrs`a@%#j4Z`eNsa-av6cGUoH^C#e$=NNwOUkrfgNHNm~%0>`_vep8EItQpj?PEbeYaf@m z;w<-kZukDnV;i16l#(A#0@N@IQxBLjy#n)V_g}xO)ZTTB?dl<>To*SzYMk3j&g93H zFfeRO`DmI!xOG~*=8?y*7OmshhZ-_^(eJ0$2Nt9I?R-Gu#&S*c>HMxyPwrL&mTa3> zdIA^&NY9lH$I{={5htjOJQ9boYrrCUre&N9NYWbFJr;b+XWLkkJ|5~)ZuJ7J)eEtb zg@worE_haqFVAw;cng|}Gf2!y=7BQN;GVwRV=Wjb1(`|*LmDh$lq(3sezutnx-Rw` z#YO9L0*P+#1|XRgPBX8SPwb^sWUl(z^N~NKPLTgh0c7;6$6VH(U5e8TpQe}$z5Jqd zJ#w3LcqV<22Ng$oj{j?mQ>uyo#M{!YJml(#dwGfgcCfE{Wm4zjiTBe3GRbecg!8*6 z@&R47aU4DR`Y)5V6y5+Q(GeaT_q-}oU_76z5fE-GCOp@>0ck2ZYS7V2sdarRBl$Px zSz!G>A?cPqTZ~3DL0v_A#ZJQx&2P(DThG^MAY|=p7_OPO80?=1M;>Gt3nTPzjC^rU zL^b#B6Jv0c0Y3d0!QVmT%K*(^J<5lfA@&`HldbnopG$lrN?RldvEI}I7@Zg%gGBD{ z3FTY?60rR#EFd5nwnBv?z9$@M*+Z!Dt+9XRhMInTluaMaBi6}&X7`$AsO(wW%z-a& zP@Se~-qv6Mb9P|ZeuacfZ`D%mjM`3)6U}HPCh9RGA#J_z(E7-z@$FK4`8Jv(Iu)MIhC~m4>1XA^woeecuNO(xy=YIbs+za5}%2#pU{|_l- zDcu!qO7q|fn3k2@f2b_Od!e2Xc!_2v?iSrvmgiw%aYm%E~ z^PX0(;(hNdg%rD`EQ??OPRR2@)c~nU6%Mj#8R)Q0mR%>#kP4_ufgvEf)oWj7zB90e zil!}ld@;mZ4`q5U)p=Skq$uoJn+>EL3M)RTY#Ra8b&T8n_1Z?_A3{r`UG&a4@vabX zYU-t$*|^og8YkgpSxoMH+Ty5^iY0-kxoR^?_Ax(ibUbh&ZZ*}l0je0z6zL-LL{hH{ zoAX;GF?VcuB3MR)`u93FJhhjA^WlfO4C6@?E2b4E6Y2-VCG7C)_i9FMoo+Z!>v!O8l+F zBY;S*1webcO+N8#{XkC<*78^VDRCU7)Cd1=3g*EgKqOy;{<4Nl-fJj_HhH)WI^+oK zr;p%7pKw)K_IIR0bIJ?8ZqS=ADKxu3JpNbG5zWa4(MdnKkbH?ibRPnWhe(IWDkv^B zuIp9z%%QiG=kH!Oi^?y1)PqZO$WnU7`@F-;K!%ua7Rx=66z*(XdfStc0g{EdB@9Kf z<$(rdc;`SFyi>eDtbP%sz7P6Asc?C(Y8^*kGIf^Q(c0{9s%aAS%Z~>Oeg;Hj7f7hj z_!MtCZhsnm9Tl>rlu`c$OPtrapx=#v&9ga~AJVbU=B)ODM;zIzYbw#rp~KlQj+7dG z9+m9Sy&Oj2IB1nA!8!jOI<<+ zwb;Hcv@^Y$@=*g$S$cbcH+(q%5mDD2^j`3U8UChlfli|$HTsE3D>DC(XdU%5_YJ{+ zJqrogzDM%fWAyZMis{{!0Y47Y2XTIa2#Ta?^beq3gxa-Uj{6k>c(1GFyA_=V@;Vw3 za}~RQ(S^VE0D`OurPuWUQh!Avori^p>nTP;V9JX}t`n^WcN2)l9gS*>n!*TaE)o?0 zpIXcHO1l|K5f*$eH+=XF__?e%%nJNo8KeHz_lg~W+k~y}@_kV13lXNCUBz0a{zaOH z;q)bRa;mo3kDa%Ll&Er;2B(OMR99&1acXet?;68eoOs>x1m4^;`ySjVkemY8`5M5~ z8;AG~R+>jV3F-Wn6;8;}ZQSn)jlN+*HBeH{tdS*}%EP@|!tbOhfWY*k+}@XOdm3k>@%|t*@AuU`pfDlf#-C5+yDZjI1eGa*Ioub3l!G#& z5 zqmvi=d_eLf13==-qK78!OA3JgXO#s1M8=W|4w6#3lko~=wYsJd6it`K!G8A8YzCm- zU&brFx3r!^gyOVqe8zJ+%-lzk?%BIItX@g%^*D7PjGczXgCR5bIG9Ywg$E2i&#)>1 zI6vJ)qVfWraRBa%bm^kZ2Zhn^+36IVZ1?qkW-K!s*)GWmMjOYcBB966EY$!rTxG@J z&5pQ1<8~wuZ<2_CahuR;8u1NXgYlBuwCfU;)H$8|dCt>@o~&#hgOwOBz#Y2kq0gQo zA1i=<-9fWx=H}dUFAw7Es@JM=c7NXCR>5h~In;(GKo%qn&$|-m>e0rQQ>Ut(I4`zV z;Nj5?VmOYntfB#cjSAK`B4csV5aAwV&2ZA!v}M2fDqV!kR=ChX9q)s$>fp_})`@go z8eE%hI$!f7@ll;HgeOxK0)$7$T(@E$*lDZd?XP&;PnPNc(9YxI ze5C@)RAh~U1^pz$Z3c3q=pJPu*L!6`|1{~qFU$6_7I-yl2Mnv3$j0?3rt5 zBj-3>4okc(NA9a1HSB|eCPjlG`ZwogQOF?WGA>UinlsN!zF$Cc#pxQkvocvaHcB~; z8L1Tvd4KrEp7P9dc!e9G@>^=WGQjG76bI8KfmBwzqF~H=^BX#;^J?Q1w{rpa*Vv3o zbCoyBKx?(pwKrG?WNG&O4T`VFnxCIRPU3X04B1A9}m%5524NmTvhoiU3}@r z*93JMP}0LsDU63SrNRX(e1@z$OgEMc{vfmBRWYhS8e#lyqxJ10t6e!6{?Yvr`V3)D zBwf%0Lty_TN6cn|WuDM#9v~ii>CPblCG~ciuS=NhYg+6{bRP52CvJUj>LX87a%3k| zm^?{9#vtQ8XWRmQmZvfMu0c~{Hf>Eq9Nj7-wi84(w{^(FeZy+flEb9rnmycg==ToM zJ2gsY7B7(Gt{?!7z+_P-qg4()w*_*lYSea$GoOZ5w)WGPV%i_9kpnSRcv+@HAzX+= zAuWg}LdHoN)Bb6aVCmy;HD`kTG{!bDqOKo@>{smnIS>dQ>EPpBNZ+IHD)vHCF(I0`s_h^C)~qQkhj*enzr)V@YAE?yeyLyM#GdJpQ9ZT(o9wuC^F7G2itJGE)ur1D=nPf!c=uh+G5>WY>~4etk8J9X~OS7Q&ENVC(j! zdH^{Ve`Kgu(w9%8Ea#rUFzg5U4zXN@iveJm=6Xa*9ZEKhXMBN;3wz1RBHfum?PY!? z%)OGuy&^@1kH6R;Mw+Zu3u)8?BC3`k9gU)#DTEK5=K*&2;Zt?6yQT|{$A+&z@7z|9 zl_Qv-rwf)>G(MslUq@~a=fj4iJ=J&$v%1_R2RvZU#ehYhZFoDj--(7Sh z!2=-Kg+?im&5P)YxuUzIgVBz4&g?}j^NnV0V>N$&Vk{Tp#>y?arm7^kH8MJdK`~Vo z?zyw&yUgvNozaNcS}R|o-tfrA3t6Z;b#o%(S0M9~GwYgbfBHt|=ys-6SZN*mrY=W> zsL$ZUz%Lm0Re0OBX7tZJcs)kpW4ByKrT_EC!q&*=txd%b=T#FHfMt{vZ^%{Jp@Ot3 z*0quQ`CK}Aeh1sU*Sv0c$Hg={D@hh4VEb-N)L70M*XZxB-tZ9~Y@c$?O;=37gp6}% zg)?6#=EL3MF0%ijb3KaaiD!A`mws$nl<%;WtZPWPF83)F`EE>1?Ccz-E6{g6y52rc zNa_OpMsA9grK+aIdW|sC>*!G91mX%~B_mA&6;d}-hD-wIbuA%bfA%YHKr-ustLYR@MD7FXs; zg9aX*1YW+dQ6G@K>aBucPH9>OS*0;OK73~QxI2rlns9lP|AFm0J`t7#uF%OX-XW9# zv>}KB=yQwQwXB+~(urc%zWh!DPXJlo8>_#QQJXk97+nWx>lSMq?F=)A3^Vxs3rPXR zs#U{DjuboS_5Qs(UxQY3krv+)OCvxr_>7fOAB5mrX3z|)XPas8Kt$~8ofvb zdfn$dKf;E1{skgH`01WpH}TH#4uO~Dv#8A-Vip{+Hwx}fP@Q#ytoJ1V4PvE=kTJAi z*Y*$}Pl^8oz&SUcoVyPjEjZd)5c#sgH>Pa|aSaHeY@x4SB3>#9Cox*_(h_c+m4Q~V z`u>E`2qxo#YSK#%Uoj8-!$jv(D}l>~|GxiI0S^xh^(ZX&r-F8p%<(rn)RLYO^kKr@ z%%#x6IS(devQjQ812HEGkCAQt{daGk?7a7X_mr$W>)r??H3?k(k{$Hfy!hzhpvk${O2Y9W|q8==bX?5|w zBW=BZ*;&H}GkEqokR}Ottg_;H1AmYb!%UQ{L&TrAzGF;^c{iNi;{>uV$KZadiB2|hA+y8Y>fANh2@NV8+3wk3Az-Xg< zZT1gN-Z*g&VrF*@3tkdvo?^X8db5)xGPr{4djcyMYoBGU*#9?>^;(#M6{)Q#!u2Gx zILnpd&q51A(Tr-8odbR{Eu-;hQh-DLV%lM&m#%jGw3zULr>$^GRA|jr%-D;mw#=~O zK8Qo@q7{&E6u3dpXK`6f{{wiCHgQ6hBR6q}Dy3=Yx62Mq^63c)3Db&FeW@63 zRHNARPc<*YMKKLRqN4tpMy5czSViz%VFd-A1LZ(6%Q~^&aLX)kp2p#H`IB~q?lRLK zA5`OR?*Z0g)3zKJKgOF~Y!vj1MgBed zkpMV-Pk-EGBc~?A7v3Le8w9z)XA%jluTnpjCjfaZScP z+q?jBZl%LKVm{=|&J}6pCOtOw|+thA3= zwo(AG_0f#&d+{#VA{8xQ7{h% zGvpgfooyT9XPre4A)PS|nY0F>mYx4j|IsKolZqr3)O2b(n$a->0?;935z_aix{rH| zey3rT(n#r7c-xD>x#G+J5<5kCT*_Tjy7hzc7N7s%`IzqcWQUAlXXC#lHiW{bS4Yw} zf9~H$9V{-79=8`Fx)}!rTm{y3JMTSEX}!e)uf1vbdbUlet0{ZXvO(xQLdTxxx;5hh_xyL5^z)#sBC5j)To&*ATvhm}uokMfiPU z1{n^6i|aU~RaQ?Kg^6jGb(2z7=x@D0BV7mcw)%$IK$2}cu6sW8ad+9)XTAjRJfAR{ zyB$}m&j?4WU$F)9R=SzfeWJZ==ipz;M>O-rFj;b5Raj}5N-4Ic977T)A@b%zPV0gL z-8tY4ob;pLhO6>5Xjvx8f3@QjVB{_=&i+C_7w8~l`w3@4R zzrFg=;mf}+R_AOXqX;c6Jm!qZBMUMoN?uK)avr`$@Z<;o!EaS3tm)}IesoF)9X$JF zpSG8@b}i~5OLL!%X&XAJpAA9X+b-0&THf2fR{Gz9xNoeiDmA5zQcNU_H+d9b!DG$+ zxrW*g7DEGc1TLj+87W%wmP2JUF^XpUTM&nB#XAvGB|RAv(OTm*5_4ljY|ON{>8j{0{knC6Zq6YLV)GWLgb zk_wK1@8|zWNJBO&*zT--4uK65W(-+;3n}!h=0~JE9=)}g4X4Si(HbII$o6ELbR{@| z*|yRhJ&*BO-nD-WBm$&)ip>KB_A8bR=~3f(-0!!8n#H6EOQ>F~dmgcQBiXPrDr8XH zFiRJoUOg{uPk6_zmTTk1eEg4#N-@N;g&X?Vm& z*tVBUox`~@2M4T<8YL8U;de!uP^7@t=iPIv9?jOieuLtz-+yIW8|sFiQ#O?xzrMb^J#w?B zHn{iUM?p+M_UD-hb5ly?tj|_<`Phw~_Z(j?q%Ug3OChk`DUZ9kZ(mh-!Hvyw$sq{V z1_N?+_b4WfhOCwy?PMn!{b^Q)4?EDIn*`6K;MZX`Go>?CpPe7ii|o}B(r$2=j%Up) zVMc`(VRq2FA)h%7lD)~uCFX5Q<%5(HW_m>ti|l2I$hK>38`l*=&oveTyy2X*J@PU+ zY(>zQ9W@b7E`1}(e1Gm4Znn}{J*Dyhfrp8E)dH`>&OA%o^7L7Lkyw?*_#C>7Wn)Vt z+v&-Sn}~Oo=w=Nwj_bB+UtmU*W_ z)BO+5%yWV@vGZ;56nLZZv;tFlMukB;JmZ#IXz7P}ja!fvNs~t+&#b0^m_t`eF)W?$ zWZV6h4x_`rB?JVKl5h$N_*0vUgL@T>@<-23Yx{HIB4X%-=6dI;29cW!uR8zF2QFCm zix0c~wX!Eu&pPDqTw&k72<;GK?AuNTcyiZQAMHvh20Ll zeD%Dw2YWQjApf7ypMFJCa?+932t^+9Ge#CwZhTU~+j?(GCsHx=1rY=LH(d<%k)c=9 zOvq2*6ffGJ_4LW*XkoEb8sq}OBMKc_5~-A)7Uo@wz+t}1;YONk{NOLbiTo@dD+^U< z8c=7_qpFqp*V*=+w`k$F!u{@g7aIg}?IJ7Pv3>($l!IfGa}3C58HVJbZs9@*r8Vxt4OTiH1$TXDekv%{oyMem*nFZ)In^ zZmkbWaPk^MEo1`1+(qUBL;ieDwAtP0c%a_zKw0||{+&fwQ#KB{xlt{`R7VygDH2mf zAHlzmnf_3_gWhzy_wjA1`RR$6wLZ^dHRi8Iw{*UOxtuIBf1;^xylY*1gs-elqw!X9 zfVD@;c7@@khMw#nffIOEs5&dPHTlQn+*zXh@RX+}%2i6bC$A`Wv(-hwU8e z@l4w~v8?Csacv^5tm^LpeKH!SS$Cg?T%ORpz&`yDDOv2_LxQn1M5lpaFFDGC9_)Rp z6yu$2t6wg(s@|943K9rWgj!-e@37y7ke|<77bQ=ITh3ORW-6QTCtLpr{d{Dq9NZX6 zFdwpB6)>M2uTH9QlqT)<9^k?Y1Nz*)()kX#jc?QJL8H|-R=x#im)5E~nICzV5Azuk z>_JWEgQj}EwlV(|oZI0(CGU!$`oIA1@;tMHB{d2Aqa0x@H94c)*Xd$dS)A8YS32`H z?U+4J&D+K<;Iy;D@eFI3?kq8gnPX@rS}1w;^oWeNvvFPqZAu?BEZ{!uwzBrFSbZM8 z@35hoSX#_C6pp+WNyR44xLaP;z&W@X;xT`6lV9%m)NZgG>DTW-{k z=PP)BfR8xl?RHsh_$K?|i_LIBf$f17j#*!V2Yc(W(mddDiHL^kRbsg|h`*%!-Awj_ zs|YFCHq9rM+GgIg2TLGwky*#5_=HLGj>S}>_}EH}kuG_d155SP9L~;?rOY$7U?&^S zb}NLjUd9;A&Z<4SXf8sXPvaMiRFzZyzsx@6_(pC!N*UJ}g0!|Q!(_{xulz~CW2&A+ zVMAkZMH&m6nJ?>)5F3uv$$xS#_HzGvtoW6fs?>#~!tn2vfR-ZR-{-QcneXlO&o}$> z_&;SA-T!MpjVT(^j4**iMtEroB$((Af8~dU@aMnp_=9=hc8(*X7Bsb)NBvj)=Qm(5 z%zKGX=Z7MQnbU`2LK$ViXIwOs9iOrfCGH%TfEC)bJudX4Y0m;F4=say;NBS*Z+21yu|^-)_(m!ailET@(i{ z5g`);Eap*JH4Jmc@C_;feE!Otq@CS12h;IIRATdP4U%?d<1F%8+>79W1e3KKGU=0< zVxyI^hyD})`nC28yQQ9~CFXSV>?GnMLs75tkv-LWPf6V?hab+6-yFpF#ZmTj$4c)} zgPV&Jh)s@uQS10vmjqjRWp{DZxDf!|YYav%pRV&;Z8n0X)rB@RtajEr3rS#3?MDq!pY|g2g_!R;2Tj=zJjYy6waMyJE`;p)SGp*+u>B1RJONmq{d!-g zLv5Y6oW~HhM0B`pKk?c4!)CixQWD%t+oQqq#(nPc@}ZV+y>4vy?W#%_vl(d)?`vwW zp&U*w+)HCTU2Tr};b2*~a6H$_E73LGu8^ojEU33k4Y3u(?)-7ejiB0Dz}d7G^K35VEy zBgiJ3xX(RrTTD3JHsQrzX(_BzVW4w7GSOf2!jODGWF_10+Ar(jTwF(`c2MePV!GzA zEcUO~V63>t1)=-Wa_wxK|FOXKRl-x_!dtSCc_auW9Nbox=GUB?cRY8?wdXAt75FUz z>G0fl@8a2;aI!J@zv;)<;i&3rJA3*^XKl8_=UTC^BpB*oO~zbHIvVzAZPplF6O)Z^ z_7j*5|A{{=@!02{R#Bj$ZOO&A`_#_)Q#@-MO>W~1pjcP|TGQesA6GD=#povJw!Jtz zvLW+b1M$vCEUhG~=wwo2TA$iF(Z^UAeKliJk{ELvC02iSeS&L$utilCNTvd4W`;^O22Z!i8!)m?{f0MRH zzZeYG&LwdK%X;#g+eNjjiTwBM>ix_7?F~-OkpMCQcbfJy+vS+t3&@<+nYY5KjE!+6 zI-pdX9@Facx;eY$IUy4eQf?@+)Jr7s3@wT#<@WE(N02gGQN%=0Jx@7Ff-i5yI( z(yIl;QW#LR3qIM>U#0U6l;79t?=-T5dLxc%n1BUX%pjuuXt?D~mK8_CQMR9g_ITa3 z)nDfc0hFzS?OsoRsu{{ct=1E+urC$5@s76LIrMA3-;VTe+20XJe?jr0TXnwRxX1;j zTTb9Dm;AK6o}~dUm?=qpqq!obk)a{}Re8t)1sFgDO814(tuj;E`n@w)1F{&a?4FoN& z*sn>cSkdfr8$0;Ku=L;89LwAdaoDrZ?y+`0i{FMaMo%GoXL$j*BcZ-#EU8#RKNqn@eQ+mA5k(&#-1dWG(}`DJ}Y1-blPw%?A=nxR>s zChg1tdxsaOs%obj?8kVNBeItkBGUdwzfheleiiD$HtNo~-$ zKL9m!Z~BIX_=>!6{;%hr|71I?eEi)U@XchNLbhh0U|W_?2V>vE>ANOR$$DOqwcx;7 zvJHpr`2b`oD4UqOEP@KSrH@qHt5kF|A(!O>u7m(zj%*#-r{Z*e}V~;YyJN2>Xf<=>Z8lZR72aYAH7H|7^oZ!eOio zz%CUbyUI4VwEV|gWUFf7TFV>B++w>h+$?2wEaXTxL7=k3Yl;_#J`d>K!EVJ2M$_ zXq0a^MM5mXf42LCkAchyuk+~j{u*8KbUs5ryIz*ED~qMK}|KAKlTntE8#Sy!zX?eE=QP znR)Z?f?~CDVk~aCIACAgPI~l)A-hD~$|Pnf5Y=j@l`>As zTkpUityivbF%ocr;_UDB;x@n$pF(qPE|OdO1KbVVvS+^?zQ8Q(fSF!FaxX=a*&C20!*q3I$uPw|lSW1rL5?0val#MT# zbLrCNFYp|32Y;Md;I^))ohaNcB`uo)%e=D%X0DeS@|SO+$bVPyre0=Z67=nF8h4-0 z{}~iHrdF<7Pa3te**xgl{mNa+J&~k9A}>zfvj#irIA+7SGN&@3 zXJEC>uIrr@G_XjxJ**fAwEMSm|3!ZX2qp7#40Bpx>^PNEk8-=Hi?!upUfLh%yWOs~ z$AL?wbeoLQq);0O&XmkA9NfJTT@%{}%Fs11$zj(sCoHm>kn@fAefw8}cUZJjd0pb< z^B1V5l&LXpXVVBDQ%j)*T`TaMOUv?NeueAuQlQvMcT@SXbGF}j2S`pY2dOpfqH~!? z5dBrg!}3FD-ka|z(tq$dz60J+0J-Z1}tzI84XNnJ=(08ty+- z*O^jyuVOHTABFD!o@107CRkCwDRCQKttMb{hWX{r*}Nk4r}C*pwQIHA7*gyY|q8?HnPm%uc zh7YHAaLH{B@kG}|hW{}5j4n5KUWxB{@0!KI9 zF$Ko@ct<&sjp)ky-8^+lg=DV%yOcOprG=U^04#@ZvTHEm%s;h`ZjN53CKC+#e#Y5Z zicK)}vpK^5#X|tB@#}DW4HX^1sJlP!mmvlg1DY8BFU?__*gqC1YsfhD7j{dtd>AI} z_Ae}_Hg1dpN`$iN)N3;&(&&O`L$hIGAROFzb4lyu3a7=My7--5wO9OXlUf|siKlo# zqCwsynHM_&?g5@b35g-7M_Btozw^)C2lA^w;wyxH!7HDe>j?%niiBp&%a^s)Z?llV zO}l~stdMTG7dDHh_$j_qXi9pJGIaZZXV_Zr8Rch4N@6};1lx!0LBz9FV!ju3dPm3n zxhL`zNO=Ow+Hi&#NIbg`f#Eh>BKI*%#Wv4(100N1L~uX{=}qtsoO(RE8vqNwPgjDt zcBCrJ>eAE#ci_Lhyvot|?tCf2(TBnxY=8`7Fvqe`Ab*&t_+8Ws5bhRlkttpJ#0!ws zI6}pE2Js?pI+KBJp?ySBn%F8%#XD3E2|QD^Wj4nS@H z^?ss}in|5iLindIQl;l&pyXJhjswvORVIz|DO@Nu^4l`Y!7Dz78P^$zEU_2UAxO^( zd`&{R^FUyG2|M(MFTDSXW8+|zd zS0&Qzp<|nKEeI|37fyF2dh&V*B(K^+?U4;Q_;FC7bA4k`f(uM~KDsBBjawhVn0&yG z&Ss%CIjMRwzD{C#N!O)JJUV6sh z@oIbU2l>Kl1m_MhZqGVFA}oDFg-rEi%m@C^x?Zs2Qb6)LFIae>ssn8WF&hyfyfvPY z8_-hb9dNUy18zAv3>oA?sbRe5RWIw)e1l6Cs%_&Ina@Q=qh8j7zRwpp zEidRg!MJ#mT}%unm|t@=pvCQoCahpncnf#BzXMQkke@fE=WymAl^3w{KpYlGWn*e3 zA#hSG_akDB&rwa^{EyZNr*-)%g}1EN2lF_lc=n>@yvfpkRH-6r6{F$55w2dZA!=DS zkKy!k8#(@0X?^^1_)j3aL?$t6%6iB8e=0XU@q|JQD361`epagm?=T<`sHJ^F#S`s-p}1XiO~F6@ysE17A}fX!%!puE3sAz6R2AwDi{=pXhSz5Y`0{M z#ctz*O43(vY-}jL;f2B%@+=wG2_oCZmi`i00)dze^|*HSxY%h6c?q=?4};e-CY6X8 zx}myyCh&aG`#mhus6ehKdb&cSgP_=fUtxD$1&9D9uLSJqF zQ~Y2w^B5*12Yq&htlwvm{))6k=HCe;phg1WKo|2~}2 z6BA5v1otF|9Egl*nqA9k+o0>p+g2kCiP zmd|IQVR?Gv5xIV?li}@?e~|65V0_fl2%JUQBy9}az2B+g|A?XW#Zy{2ge^Ew%DYeo zQLb2mDt0)@zwd=a3ry$Us`0^K`laJ^)P3kVr%HlBugcv6RbMYXBbs6~#CF;i=wn?_ zW!J7A_m_nh`8js|bjQ;}DrQz#*|MHjQ8vmj%>GxA*yeUJ9%RdsT-R{(u{S@ECBanu zEp`$7>+g)-<7@WB-3R@yUH^F0DCD9OJ8M^%q<#$%H&M7m6?kefN10=9wh-EOKIIfN32=#O_-5 zhhekBrhZ!XJ08}fxz5C;^80~ANJCJU?xOW?08^+8bX&dqvfej+=@sz}-@QPFZZqD8 z6ngM_Rq06xq5m(wFaM=E#S49?qqp_)!iCclbqS!9oRX|f_#iNC!%SLgs}o0ms1Mxw z#L<*}^1axeIU;aML-@bcJ<4)sL19BvFgpa+E7^^^&I94Mn1bB8{MfDZbbDo`EzMAE z$iiibz^nEYxu+}tcH;d@-mPrVX5qQW@brphu5!-%$HMu=BlfLX3Ss1+&1%7Mhd(w_+q+SSK%$AH!!^&NeLL!&7P;I9DyFX5UDT;z+-JGVm}@^mx;< zu6W-2Bb@dW^zbySp>=iAV_Ur0Gi=c2;M0}W3Kgs#zMQ7I(nPv{M-wOHtXnbI{ohmW zm!Ek}=98ivhP>*ZeF!RfB?Ugn*w0U7qrMz!xv=fjLYR@v>SI}v`bQZP5MWVV{dpt8(4x#Q3hljFuPf|a#7+ZmX zY%j)h-g7%bw7nNkBfdM)qXu^zL7{?MESG2B9S<^sGA#d;+Jegh*E|;q$vJS1t5*p$ zE>b!*bBu1jYh2L16mpV)CUma;vF*+E@eOQ{EqOPklv=;E1WC0^$|&+_O0duBGBr6;L}uy`;uK&|lUb zUEgDIlJsN&H98#YlIsp~;y$nlkFGb?tC$ICU6}Xs8t-#+S252L* zug44c7$Zcw35Rq@C=#Z1d=$5V1rvZMEGI!D@#}c_M`)|dR}p~Stt5RL^;buFmH-kB z?|=2;%|kV2#-fNukqsP^zrC{{=nSD`7s`S1R3t*_1}+o+TL__H1*S4mn4{j-TfC)_ zHDZq8G^zMNj^tUeu=K%4(t;vr9d5O^N17L}nuvq;_qM^=F>lY{3R4GdjRvzg{``<& zyWJP**f^1Bs_A!s?%fcyM=**eTM=xWuHx9wH02V466y8o%g-!lGec1IgdQ+$5A`^pLNL6Wt&qSG*<2(uM z7r%+lYMTBEe5QHZB!S#@=&Dkz7J5U9b|Jq`O(l&dRLp$JU?L3V1{jN|o`$HFSK$qs zAKT={P^XiJOg#^H7_u!(@;jPxO$P>E2-vgMWR?0i0dRpxzg9hm+-=PHC2vl=1BvgU zU-d_F2NJmS!pD|gR6B`7c8^beQ_%dn(GFmpj>F13&L8$W8%C>A>?mK>)=P9Tf^#? z#y`1#9JHx52RS#lNw%YC1Gk!Dw4A9C3qF0*)cZpIGAzG`L(u@Nh*M)D^osBTD%8M$ zC*^AXPgd%udY{0e6-eBCe;04UH%L4Xk6QOtDJcQ)I;IR|&cgj#%{4zp1=Ro`2c*f` zNDJ7z?kt1EX997AvF^McSsF)F;oH^c<|V2-MI@Tk7N*B*?1~ZRHfiV-axCfNJPih485g|4JyGMMaL`-Gg_NN%Bn@XUj(gdmp5wJ+1^3^Ol9j#-An0BL|{C*YClQYe`RTY0_a z-V02K0sGy*b;6bpHpZ^B7W4XuwZy1f=q*e@J3y`9x+U?>X}##^Yb31^3T)vpA;}G zR9=1uH&r0xhiOi^LLYwfqz!LEI}?MpK4CHVSA#;@8*sBSp5zXaa?V48CCb;_aGnxs z8_ztedr|#vCO<$ZGumr&?4J-r;*ngZBooY+JCU}sV~#(E)9oG&hsg}LH4Hwt+|Ao` z;~)_ZZxd7f3>Zm7U9)`>e*#krpEB`5nvr}7rZD^2e^m=B;c z%pAz`#$z#=&il;r9KhM7b}J+#doB7s5eVX-*`HNIk~1-Qd%l%|XnQN@BdXDKd4@_~ za&NoJF7CZkxoDS5*v^NpsuL0l2ehbsyFh%5xZ6sMGj()_vfh~|_vq*SDcZVtTCNwO zsrXZiU`C>}_--T*NbxY~N~^UUbf6DRtEH;MsuNC0p93Pg={z0TnZ;M}qv3C)*O??g zJ4e@_8%{Rt*RO7Td0Fff+GEfFjI1-PlLi)0+bkAZy%X|>qsJY53-fEGywoj?aNcwp z&)GMK`PK`d)YxZ5J;?Hp^mUxU1yE;%(_GC#rUBy7)8CP>9jW{fia-SM6qHi`!_uHTb+dD)|7Sdx&m0g#I5`fZuc2uw7RP7sFnYtVo?#f=X>+ zw{?x;olSV&w6H|m#g2VWs!YAGOY-CRrz3e5-f8hlC8$1ABU7zhe}0K;9Xdlg zY5_<*zFM45CGe)o`5A?jx=epY&74I@YS8vDEG{>bh zPQ~=7ZIw~4UR=dmS$PGuRU!0+ur`MS@-YrZKiXVTNtH#?0Mf2iiUL4IuUT^Z25 zyM4IezRu%52c8! zJ)~7i7=u5rB!&C^p&6FB_3u66QIlt@K*uxe&*_U0oWVOyc-mKklo2tdV!5#R4URbZ zP;`mb6VJoa=8y3#AGO+p1x(@931weH*re%Dq5)o2AT4Tv@#Ep1HCC6p-lqK)}SIEz?Z+BanZfCcw&5hI`5+h=Q6W4Pp>z=OW&0M z-fpRwXSN7W2yjahWb^KOO`C!TWXL%dXs@jyQq~Y>zBd4G!F>JE?_c*nXb<0`!Wvp^ zh&hB)0BSAxcHXxty4W&|892JhlHB?D$IGb=$dk8z+Ln-Ii|EFt zJ{*&qaIw)1a$F`Z_XB)35$s?SxO^{PD`gbA$f{a=|ff}3%3;UkZ?j+69{<3F+1 zD{ItpQnW+!qFMW(&3*nf411?%zW%KXLi zAN1%2gq$#9(1T6j4e@jyDrCB=eU&P}b%wq{;@wSxYm3C z18hPY41N;u`8PYp{eg3~7iZ9#9FHl0u$zzIfpQZp&kxSQ6%LQHAx4SKt><~@pJOwd zKkhZ#iwkAA{ck3v&{=HlC@ZtL>cr&(IO$hI#fR|{?I`u}Z<>{zXw3)WWf`sE#xr9t zUB)?_QGl}ZSRa#^DG&rq8CuROm+%um1U9Nzpu?$PU_YcDUzc*FhKFnZ9{#>CMVqvB zKx>J!eUMF;!Q|$*<&`E$DDdZX;H>Kc^EM9n0Nj*0=tK1K#(7xS!L=RuCMordT=x=C zBbL6c{vC5_2PPkDx@r!>M*b%AP9X`Z4TF@R9CBu@GvOsSIX=fYsW6wP=J{d|NufJ; z=uKZYQj3EJA5@VdWQgC*=Yt0HFta4#izmK5_xo3fr}w*H5oWTJ z3?S_NEZIuBSYFlMziw#G>we2!97|5LVC zwdBLWTR3eDGxqhU(;#(-9Wm+3c8&_Nof-}{Ec3rn z(`?ELsYOgh;uhaRuxe~rmZFW{SS?PM=>)3?W(jpDjWGTuu8GZI{HFz&mrMO@gQIdp zgu9g6005t3;Ye-m?3nm$CcptG$E|(^Y-H~myPPdX_i;}6c5Iz8SIlny?V(eU2S<``btoN>kiEZ&Fw`Tww)PN|$@Juicu2(|!r^c2=9BBikgl^_o z|3Yy8qv$@j>)$rB|2<3eW7!dP%6B6gtz9KGm=KP5XB-a<^BM}vI(11K8M7&YcLS`L zTstpNHYC&tpGoO&`!VTAMsVR;en?TJOsa8YblqK@ zZ~rMQ5Pq}+;waenDDdkW5PD$!PwENVEbBG<-Img*McmN$1WkG_jL%!t%iq~1YxL3G zV_Yf0A+oBKb3H!MSMWyQG*(d~!XE}D|Es5Zi21<#Upc3rX|?ba&~y;Q1-K;ShOn0I zLGB07`ZRt(V*9UwV4V=ME?jAfAyoR(`ytfE=Tk|PF1O#KZ9pWSA7<W~% zyXDXClm+(h^x{C6t=xJ*H3`;N4=(em>C|!IeJ|ZE$@FF^vK(Ovbvf#v{6Wz9k5Vnm zWl~ubKebtN7jI=!gJ-=52AT zJ|fzX#{6Fyr(g41Kx{a$@Bkka!|A7KyVcdf=LuIh8L-ZLIhChwaY~1e+e3wL4JP;; zD&z(K#R$l>d%@R?sai;@Wg$OeK2~mjRC{44+aa zH7Cm=YJO=(^C~sYrzL1oey%)>H`NyouV(b&M9R^fXiFJ3#8lkuX(Qvn7gz`^~llyDI4{e$!bGXX}VSbm!RF_5suEPB& z(z{c=uTmN(n8J8iUhvD^_q63qILqoYa&0K;{|9@i zU0`O|(s{@3p-|igIz~0!cCiWGCj-ock)qezC8{|S_=1~jP2I}{5-;2=j*K-6JIH9b z3A?ix!1=&tuCB8y`8-FN9d;8DQXF3sCnz5TgrA}R$-%B*-QC&gy1=xjRg#uza>>ceM1iH>ykL7sJkuTw^;jHYk~<`D~0t%X8TrQFQQ(`MdP3R6Xa>pb14|Y!d#l* zxX)*QQ9Hwc;IfvAF`RjCP*CK}mD<|~qz}kx(^_{Ekha|$l>n{JMk%Bkxr{6MwLXYN z{O9L2N*t6Ps)XnfR%or?*Vb=!^8|o$IL~Fg#e?ynYD~CHIjf`T?w(mLtfNVgiwmO| z;iGvh9aA6M(Nsdn1)+=Z5&9=ZBH6<<>}|RMvf(J63BNpg^Q!u>p*r6dNi%CLtyetGFQfOYN986~ zb z@VobS*1*n4t>sRx-wDv%gUow}=m~))Lo0ZYe;`g3wAc7?t9S$?F#U0nV&sUq68zll z+ODA69sm*0qfNKu^R$|AoG8d8s7(xq{`UB%CFiXS8x`(R1#ZS~hv~b|!8`dJ-vdJW znVQPCYtQ2tUY+vJEYuOdJDc(jbIFFEHRVtklkN)z%FLMSZtf58)fHC*4F>epNssCR z^JS$Ny)PN$eY*MAYiplkZF3CKsdY!7Tmgs{;m#$)UPU)bFl5}+3ihSYd zk|;G&FrsFLpKWTRP?#A|>P12Z|B2vkbZ`B9P_^M9OWEtK|dK;IH1a-avOFjn88={gfp1)K-m3Y%ifi$z&&+~ z<1lV?*;k1T;&oTTXr~Q6h8qDtSRn!b5dDl?eduryrHcs^l}gO4E#Hn#nBKnZP6DD} zVx>-w26<=Xx=~A9Z_h3jj5dew*I!Vu;&{<#iZ&0a?g4?}Kq`CUo<2wDc5Se(*ip=*Ob z`ba4H!Pn3tv1tcv7cj4h?_AcOXWyDth?h#Fd)mxq#v-$)Gc>;Q2@ft_%FkoB(a+cgVAPNQWRd&qX>%7rru&;o3ZLTA*R891 zFwY(9p_Y0R!YadREHBsJuXd1b7x>0>e=s?qng@ew;xHhe8x}c;qrvNrv!4iVJYHR9S<#`R%d(IOVY?h}1Dl!00 zUJPd9R5+m_D|?-yTFy3KOyg8I;6KxaP4&AMno-*A*__+YZTe9VE`x zej0z|{G=ZTyAf676I@b*r32=5ex1Hkk7oI=EW%UdZL#)L_?GK9FYBIKnTPY{r3Gm& z%e7$*4asMN0{Awc;WKbVpo}zqg%9nnU4gHxRl8O;2ix70`EeCZEJ>PGJBlACz-s~? z*z6idvdGnr;&L>@C59wrjL>6{O{0%CAa@DIa15@35LPJ1%~ z_h}qbF%^vNXj*^nyZH(K{4KcUnWESm8*nr>n7Uhw%VheIe*Xzx>feGPcR2x(Vxp;y zClAX~v~iKSN-UigVE5%nV2|I~h?~W7U42#HPeFx9&U|BBu1vZhr9I9%g&F)&!pTSVQHHi6*W06NUdX=?OqW2l}LXXc6NQ_sH!iW z8U$dy-=$HncOk>;hWmqWgaWD616+g%dt-uvEGJ{%6_2@+xo-z5nTmkR1 zLrvV^s%iaV`jgC~i}=&3Z6V&)+Dc(N zeQ8RiYrwq2;o)yn+0L^kHbO-Hv5n*Fz+m1_x;D`X_Go)0s12ShyMp5*9Q7%m=T~tW z=X9PeMO2bwh`gTjSNeh<#g9_q6v<1`;zxQ0LTrOqz{~5@Gg@(VnUmV&7{8|=f&^~A zE}l(4)@n-8c1Ct+C>;?P^>eVis+;6pV{h`uB~KLUMKR7#P}>&kss&De>Z;-!KxyI} z63Nz@SNpeEZn88{*(@2K3p*rdpWse43vTcBx%t@Sr5i}8Cl4?oJ%e$P^D1S4ZEf>d zf5C}Vx`korEnrAE!L05W+)jfNnu?uij>-6`AwF6xxz;Q%#i=>Qt{* zRXda^$}qG0b@a2$f$jzQ>8abm4VNTRYjj1Ag!Q!*c? z7uXE}s8sjy`)c8y$SvJWTJKmfhE|zfpdR@dPqeqSJ^N^Zx($sCRZ)c)uWgpU*9=`_ zJjC+f1Gk7q`@ab>fz#G)zSld_->;m?`a&_){9hKMrAi~pCGdf~^+M;6<^xraKt4Yq zlr!b1xz)i;iofs%X+=VuX2;!Rqv0~njJ`iLcJV4j>*V3_go~d8>l!)EJbW-B;1x=K z4>T?t@ho&EZn1(Op>V`?nrVifX3oxDzmA`#Ib279(TAq_$$@nxYNzHAlgZCT*0}Dn z8%ki_$U%N0WNw30AW=Rl^y|zbI0f!|6J85OwbabN@keGmf0?lh5K7m5`;*@qKJFf8 zGJr2BwW6_R#=$^0Gxm{diEp^D2JlTaJM-~2VB4g{HC8kTlGb)eR-(Ssl)3&hCA^d& z_GtM92(o>z>J(kg{v6RZ1DYz?RL27emY`C=79yzCbz?5wc!=BM>Xe;*Ncac9!w&>w zEU)aq{r2wJHRB{^b6h3#Pj*|%vMz?t41M`$_F7Av_&;-H!vzWsLie50RweE}gQHc4 zS&e)wS{p&wCuF)Kb|W7>1cTk{M6F=co1A1;8?ESq&2B-Wj2i!&GLBQX6% zj9(xPzX*KITp_0A9RY~(nh|!ez^=WY3kQ^D#x%lVo_@W#so{45`x(DcRV9z@976WM zuEB5Pe4^KY{;|zuc$33=PiLZcvczjHJ@x=xt{62^l}5HcRJ)rt14o~h((5ZJ6zlisb!}$p%m>XKb$^5{E3aoGjb`YU zHkch=6Z%BBB*BNfq+8D{phtg%Tg|kp#Q=Z*dS1RXgl~H3pJm4%&DuQ|1l?0SiRYuX z5Un^bDPu=JvRUQ{;Gd#+A<2LTyr_&7pU?Os*6Oz;EUMJUZh)Z{TqXM?5kWi{?i$C+ zq>+daFXF>%3?mOE;PoV-A2C1G?-hUKyad`CgNLG;M|xV~Q@VK~GoDwuE-hl9ohLgV z3p`>&eel%&K{S2VcmdatPBp^BMWuOujnkBY=-sM);yO(TIf0r>tMf~AqxKY)oCHJJ z>se>L(=iU4M$MbYQ}I5LYh|UZ0&hy&_cDnH+l;=JY{fD}Fn?ICy_H{$Uj3tVjJb5} za}@@3M?Yu6{BffaeP2moyn2_zf%SB+C>E(liIBGq6yIf78zi;V17?BCUzgS|Z}gr5 z3Z!-vwQ$-twTuK2P-0p0K$%AA+9}Nk>X0|Mi!n+Y< zgYbpHA=5A^^$eq#XOCAt$;`V(An`$_{GZvH+v@ND`IjB~ z!+#kIAuW-+QiMUTm~msC*8?#Kn>^GJ>@PA1UH{Z+6POfI)IPSjF?uo;KCXqWa^1^1JW=y}Fp#_{gQR+jf04clQ zX2-b7tk>Qq8age!aP+%L{^ts`bLH*eWW`@5Caw{K42{nAwx6esG0N7cOFFixyx=(P zMf)2@VsvF!h4C|b5;VtGqo*Jm1X4hGLQh53!+;1n;Twf33KV+F=4*o!oA2a<8Ra zwAT0jT6LzqzcILsTkDSgl09mfGA!JZG;Jp)s0x#+3@DkP-Au2b#RyL*-P3Q@e4@pq zAYy5&Xn`8VuetkX*&(9VCXq04>W=BgMCMV`DgC2+hE&*P#w`jkAaIEfeh&PftCd-l-6#tm9Lt35zdrdg{9f^b~qX1csnw zEMNO9z=8m379i%E2W9J%v&du%b?ei5 zGA5JLpzs9&$bp?^nJ+fLI(TB)j09?ueJG95#RptYAv5pqpf2O=eJIQ4`lrgaUlDgq z8gefy*AGG^ojD`kn+^s<)JyTWbtxJqA_Nrxx-Mg!vH#x+ZK{!2a?Ny|1fu*(KbavS zqPt>+0CQhqTHZAeDXpX07F9V;^KdP4KUpnnw7juG(3I?x{Y^&DWZsd!EqPtvUH1yo zWJoT|90z-MI@a*UE>of|PvV%AUlDCARO$B(PRiE#x~{C!?=eVKY5b2eqZOOLL*x6k zx8~ShA*6H}atxJZaqP-7|J?mg`>yS~!(FhQli38Oy!M>ZddnWexWH(U zG*yANS5wZO)?W#2)@)uyYFt2Mzvl-9V6Ne7T4UonEfw(p=Pv z+5OcmAOL;j6wI^#fsJ5O&K zKLb^0U*-qjvFiL2g|#=~?w7)L7By3oR;FfBTGfkqY+GdxZ8l!PVWOLZY&WT?V<7YK zx^PO+W*$`k6#yw>{0mJ?1eJH$0bkWF4n+(w=d7nBVpX*71sSkb2=(Tn28g{sOG?W+ zO8$HkAQrBjTTy1k2hml%^n4r%e4P42yQdq2OD{_RDvTA&yZ~OJRgW}pi=p4{YZiFq zHvDjJ%uO&R<8%~xj%~2}{|kkOU*DjPVG6nMvO_oE+R1$!DcFGQw=%h`NYbIEdB%fm>%aQxX^k~d+VD~B=b?Ne-jC=*Sf?itsz6hFKNKV z@XndBeSZgClCf%XdFtjvlE}G;B2jdSzp8p+1#L?^_}z9Zla##1unpnV&-5KsAsblI z@%7Tg!?k1^I~&4;HAxWU>*dnIV4*H}7R`t9jP(o2<(4HU_jvQ$aB7WT1Xf!68LMq` z5INqRzQdK@i^?@WEK$jtA*_CY2)JYs zouyvRgYD$7Cw~qFR2PU-PW$E$n~IJkzJ+uN56HNMu8Yx8 z^HJF#fIBXP13JCRkw)eYl9^ScxV2!~SDvYjVanDWvIIMp$a^~xN^JE-*j*(rvG;lkx!+$B$G1c0Cxoy!O^bqz-+C8~it408Y zD*=iC9hE@39)vid8D@uO0r4RZ8Zy@A;EF8{qAaN0Rl6$1Y5#l_9E-F;T1;x7$Al_`dN_QDE3RMw?@ecO zic5`i##S3{Ux^-^Z5hzIBp7W9FNAbz-BWnZWIB!`I%m8R8fhyW(0;0iYT-mcK+lpc zY#(7cbs$5I&!jPmV8#ajlT*_4pX0;s+@^fmBdNDjrvxO9bOCV*I&L9iQ1mZkP>b{p z?pyBmrf*1e5fR&~3r>7Mt>@Fu8|DM+sV`hzB(aa&u4+;mAUVRa_W+@yAIxnK&- z*~DmEm^o%l36HLg)|khuB)l-nk;a=qri>eH?J_!5WUS4*dac7@^2NsGF2-4~EBuVO zA2+y*sPYFcRcWZ3F;GbI4EMRbvgG2t+`^;!9a=#5_G%tKl3vXUYLpdY_uAVna@DeE z8$zD335dihA#s;dK1bH`9E(npKS6KE4*Dd2-SB!J8SFXZGyAypld$0|&VS|F-3)9Q z7y*tg9-GXOS1O&T^BNE?VVRl0p@GqiXuV&sQC)W(GvV;&g}PUZ7i{)mOZo%{wuinq z)JG9xh7JxaU0fgDc!K;=h#bayUm$ajz0kLLpfi0n^Ijh>04RBSntoPr!#!FMyUwC` zj!WjugQC)wu+{}SYqOKzBXFNI!EKNPe}_PO7zIaKP(R$qRP2`wd&>vODW2J7YuQH^ zZ^1t*hSPGW_L2;UfmGJNg1n4xs~ht{ppoB1S3KdNweVJtskNZHHYAoD8DhL33X(5$lpbF5uW@bqa}r-U}2q&tDaBMGrBa z1HMn6l8-fSGJevEB?$Fr8~(WmB*lk1555ClvQ%kPqn)mQ**Bm|s;atAcT2P0ZV7pE z2mT#R^=!ZVo1zcx@QY6F^A9KSu%?i?rd8b$dY7INQ|Za$1bYyD(}0z0HiE;^X>Bf~ zVEY5FDm5piON=8Kx!hf3D2$a5)0%K-cV&i&d%A<>R{OT&U`c?HXI0ozFR2Ka80fmD zc7C*42H)GHb{+zXY=M z{JrWDf*L8^`8we2$DEMBQkIvq=XpI<3${RN(kd42d|KT!%*HGhxEwO5cvdWdT~&_~ zeQ;KVaMW}m@gAeujbE!4F$|!k9_>CwI|D0y%q!miMDIQUCF<~9&?1mJ!MHuOoc(y< z3EQI9%jQ(Tw3MsF*>#1V`Q963SMs72Fq*>n|Mo@}NVAP0lb;%v=3e7V>i%eqPKd^D z=z|EaFTeQINwQ!I3i@X9Xch9|$Q@+tLvwgp*b*LMI2lRAL@3(QCrCatUWJf z^bmgmM@^^GlW1M+S=2}0yMe)tfc<%uf$7Wnd@cFzji;MpRb9nJ6e0o%*`+};@$`*oLO_hx+LW`u&9l?KGBSb0mm<)*=D&#I8Rf__%=l^nw1v~;BXdc((e$l z11z^$R9iv1js^zfRu=Hw*7pY|%!O?t6KeiL#g^?Ez!5%I*6(!`!OwesB<4f8_)D~!bUuyK zkE|qVEBIbL2m(I)&s7B$T(9AoYkN&1LEPb+hQ{p9CeX-L%|D3YzPK1DVx5C4T;LG9 zN}z}FWXRB(bGAOR2LU>>1#Lkm=LV6D=C0Re6)b3?dL5! zhteY%Et#11&)WBZ5aYXl3%>Y2i1$jH`fqlu)$`@!6lnr4EN4^l z`1~h_{S+0dFzvr_u59)&>NSmIv0!WfUHEKp`nCahqDZ*_*mCS8&0x;HPSSc8KsT+s zP=HQGt4a!#4rJ=-`$__%c zb-o=hdC_z$l=v<0MbWew`ECF;tum02R3)A?Ic&6S)Ek<-x7BQoU3O`w7^-5JLf8)( zVsuVWrU8Adf?I0T!CBJAfr}sqIV58j8oIwh9C8}XUX|#Ukm-m9zV)uT62S|cL~RVl z(@AwLa;Xabo4hnXqa)h{Q#EzsucwNs!V>cT%Rbxur!abdgUG5qIJXyVNz6jJZO|ZP zJxz}{kRcjwDh(u+yfo9#hdu{#aDEh#sVhV8z}PrAZUmc5xXq2+oo(D3Nzzl=5 zh*5b!+2gR#fL@XzPJBijEw>apl?CxpErh|~W3y(5%$_QwMp}7V{P~#cav{kbJFs&) z#lPsF1TKUE|M}{$6b{8~1H?ZSE8#4_b(UyZHw&igS}k6F^x${V0jR5Mf~IYHH~sde zp>Yqs-7PCG$t1%8@Q}rySb@3&c5pG{?9s!dD#MUsv?#x{4P5UJ{Nmkf zUjZW|*`Pm|=049pjc=nOjQl`U@tRu2?cUD5JErIu^mi&(@6v5j&SI^3a0l?sNVLCT z;U!CdDPylsRe)x#_5m!RMR01Rj(dYGXt~CZmw*MUs2)B{YljA4D>R6b1Q?gAVv1)u z)LkmH-QNyrZ(*2s9yoX$PDwvO>P(7hA?%8vT{>2*3@P8`;eXVRU19i&H!Ida3A(ev zmP4ONOXR%r30|dGh$NaZ0JXLVtfoD{F`v|6tbF`16j%d>+05x%^{v3s>OZ34>!>DX z-gwI9C4e~BGKPum_BQEkegW*#S7NVU?Mr<#fg6_p9%46zqnLXIB#D?!rfEY&R`ry6 z3|s#)9SKOT22e{b9_8V>Qqg3u9s{V(^E30bdGW0dH>@X~8nUKX0K4jn&S>T@Z7+4@ zhHo}02+?#$Ho+C`oxfxUV7rb&`g7_y?9K1$4_QdW3Su$lm-+t@2t^NA**12s+m~zh zN8OrV>f8N~qq7W)vfZLE-5`xhh%^!dNOy-LAt22Vf*(jqcQ?{8w4{P`3(SxLlF|$y zDc!9|cplC_{G*o)y!+j2uXV50>+zMl44!#ouO^+3GgK3oBubUz;Vx{Ji`S#S&(`0e z=jJuoe&(D(R^ZTVg0)WpbE%O4^DL}qAZ+ox*kM(z;~|P&eg5eplzGqu8;|?V#i9=y zT?(D{{5g}QxkkBx=wW2=oG24tF1CB%BUJ4R`0pe_`#V~33W<~6rp_iC2=d9rDRn?F z5}Gj{&0HPB-!zB%Eik%cHR{Jb_5NPm; zSLN{F073xrXY9iXUkW6A?epI(?9f)?tXZqXlZfY;gGk`+o0ad%0@FwTMyc~RX0!DM z)uS2$714NBAXABo&*alaM@^`3y5-Y~DzJ_9$-Zzu`bE|dPcaiO%dH!TT|_fh))A(h zDO>6?p-UX2j3%GP6*Qo-O==Kv*j{ML0?-OJ3bom>r>I6;n{qbZL@n#`n4E`m*mqpI zQn)XaY#XUAHK5xc4X&_!W#r%BvpJ^HpxAV;x8hYxI#CilPfvIMFz=h%!E^Z>=Rpq3 z-|Gh3Pz@i$IOuZm-A5l2QUjlz8jin<=H~Rt?{Z0h;cZ6*r1QrlQee&B?enOTrvNQP zjD*8+ih8WCmC~9AM-v1QM|(`ZBAIkKTp7Awd=Yxmt%?y&0Pg~Hf|GSHS~(i0e3BN;qUqPHJRgtSR|br~D$jLH1Ns5 z$Fc`IEMQy?kRL{zVWzARrQ&4{i3=F;< z1^+-%(iADXUSB$HTILk=Hw2Xv!W^lHNUd;?O?qj6;#c#zo(c)1uYw^K8; zzTpmFh_kVMrz`&mQqtQ+DDO~_uU4jqja=es=H@$wrW%_Daw{1m)bvZU$?jq=pV}SB zuW0#o4MY;X9&0T0pt8&a1y_+`Tm5563-3+7hw>Xc2`RIU{7X9Am`g9zdOU%=wc~j9nPLnn zr6bNw4K}*?VBQbq+c4^CYGZvMexx)I6o3!KrzY=aMr^4KB^GmdfWE7~Jw%CoAF4n4 zINw*SLw4!4tob9|QUoNtQ(T&Wa1b5a&FQn_0S8WN^M8WFweirn(W%O9SZhn``Dd{% zut)0fZ4z*DfpsFHQt;w+;qgCU(VdS63SZcKs}CqMto(``Uj(gV$^} zcQYP}e)BE*Q`6fiV0HSp&bF}st5nMD;opfjhKIix{857Y&^9S-)ao+WD0+8)-Xka_ zt!Tb}fGb*~zy%n5glZBnY; z->`!HS5zlpaG4xe$xVesBb>7nf|z`VjXsKddyk+@Qpznm!zEJ|o*N3bv=gTJQ+tY< zkzWvzy)0EW{ya^aU*0KGO<@iGkN zlu;K;9UnTBHJjTL6_pZMfmt5;nVkM?Y2GDYn4tT*=|BX613bgSbc8RhhM+@Ml zzq-wuYdU|k1;g*s_2ql3gEWO`*4YPF1fIWau$FBD>)hOIol419nT1b2n7F=Mkr`&i zg+6UlT~(!}u$hl)a~=j4b;V~W1i`-vY@rSGLpi7Ep^n!Qb~U@K{=)iy(Z}F{kt7r` zV}L!tTzWQHh3#D7t}#;C9ORDmE(Eg-79X|%0+ogqe4~HR2gc+&^j({9gCd2EYLABt>Y zkQ*BNT)}Gs9QZj#{GN6u;6DNF5PFT63)+nXSYL>QA_<>L{R29n(48D$1^-$w%N8a+ zPsXqtL#!|jw3>(yW4+9KGQ;}di_#;qvZdrU>d6eOFEEW7p)=$b`NC2?zutupiw{>4 za^p*jFKVbSt>~NZW9uRF0XwzRc~CZxkSWGl`RU6TuNLCx*xF;0Ieys_mm*w>o=^IS zZ$l3LkhqQ(;RN?<1yQ@k=LgMeaXqte9bpiPYtV`9;jQ3+MZ9Z>qk`BK$IvLhLSXSw zUso4;88-1YiEI5o8V3tdOBIC4$H1q}!CU?i@;1(3=_U>G+l4+Wr7WHd_u~z^bA?~Z zx4Tq_V8LGKM~G|v5$mPK-iCog6@VU2Yml-}VffCPu1w*bct->4tw`NjmU9Sll6HH~ zR)Y)|Tv54ACT}bO!bZv@`#v(rx#am}d=}IEw#W?$4V)Pf^5@Rp?oxAWi$BjuduPzF zo9guq+(v2Hw&*>ulunWfhDjjN-K{rC1_{da$%7`9_s4B0{F!4FPfHkynsq!u5O=}1 z*5ZRAQPQW*s?V;!yW(*xNIM&9&8eIuTe~iq{D6~vDc{ zduLv6H*XODUEqAkQp-=mVw=au@EydXO}^tBpEl%QSo`^cLjJs5s3L?*?ZA0~4EZXB zSoOS)vH|sv<@PemB4Ancmr!=XS}fE9`)|xr9`#}G=VOco#cFnYRp38v2{sXlq6K3* z-23WEja-86%@LmyM3_x+5yLmq+xzqU$TAq!%Q}iz^d!M8I@*G3MvpNde}f3{4U?J`TBgy9ljYx%Zq+#nUtg6K-cr?)A<- zhyZY*zm=Od-HtZPj$8W7_m3t|;v((;K=^lR@Pbeo_*{8n6Hrd9doG+22Erp}0vKBs z>vc|aBJI{ty*W-TU@ zILn@2z9xQTj28`a_+bH{5#m{wW;648UFnm(xm(qE|Et#25u)Oz#w{8qF%^rDi z2{1q9Yj(7GaLg?Cw8q(XvV%_sX@=JS6KC&MxJJoG%up#HU4BKWO?Qg1Vago~c<@u> z0R+)(#+sP3{*ZdCAhsmMc7|}mS%Ek+;pF_iMaO(A&XtfZO?@9#> z(J&w&`I2UI`YHU$wTHQSHk*$jd`~CCDm52poi}n!J#J9%n#YqFep=JF%1^bnVPmKF zongpSntfutROgvfUtT^bg#OxfxrnNP3=-KI^C>a^=S6XLgkTIiNyAR}9on^-#lS6cFZ)(2uGQ926Tj$*x9T`~$keOc_M|pz& z4&b1wfG=>guL!lLxB8Dy=Vw4TNL^qjg=Drv;izkLS{|)R;0BLw4ir~+>_BV!hLhfw z^2Y=X(gLOB>HB*1{K+pDg=kTc*dAGt;?oGq-=M5Ocgg5D3K;T3uv}LYS=~y>cTOz< z+QE9&kR}#m-EjnjkVA=b1|`BN;aU>qH>d>@IoEhNM0m4=(%o+c zb^@drZX~~Rt6{zH0j9%);;&c1lZ1*caM;CSS)~eU2i^E|u#mAuVp^@7;64W7fkyK9 z-_tHT;*Jq=R%p6;(p-KeZz4ih>L%IEVsauOmw8-!uLU8t+CQj^wj+=8*$V*pOyW>h zaZNzxP?TRd#mwd@K49;?5VJVRh}pF+tLIDV?x1^8<<$=UwB4;r@J~R{Lgw#CN1^Qr zxw!l1F%qJDA2Ap4-|MDm{lgLV!uNO$Db~Vg_EEZ!{>~9;z?+#-_MVK43M?YIK}hQ9 zLdcHYhrdzS>mbuZ^CtU`$&J}6+}ZEH*|^^SL5$2l4&ywY-AH*4n0SQiBcFg-<$*WO znOt~q3!EgZvrg|Zd0>XSb4p9jP8rF8IM%C?b8<_3`l^{6LN8kY3wRqka{oxuzDwlt zIP+{rbh=T}xUm?*T{$<|rXG6rKNi(%+Y9*CdOq-4@E7B>1dexk-BAAShNbme5+B}L zYoaFcxUR(Q%G*=Pkr)2Kz)Dwjy7e=Qbw)#tY}D!T9>43llw-vvCGa=tIaWO*A!4ci zFH_1h4aR7!AnXxC{yT6hXLiLCzRB;nn|8F>O$f~R?NU9m7E~PG1FG$c2ws9KmsE{= z3&MtMbwAe`>#{{RftoomDB##mzEo^4cG=wjjLr98e6r#_MNVKK_vQ1#E#T6TJ1LA}C)r3)_5% zV}-PYRaD`0CS>kpemA>VV~OaLr1Z@g%H|E)z!1lH$MVPc2vk>3V!~bD10NIk9=<;dNT|b)LFn+ZDSA?OtBYX`ow1^Uvrv6N6Dr6H212+Fl~;h1-diB^P;>~ zDzy#C@|x1@9e_!B#QloueKs0bhycICj`d#gejEr3X!ZkegEP38~(nU)=h z@Bb-*En63Re7l)J@RQZ0B`zq(Jgi=Ji|PNWaP*D|p-rWnv61h;!e89;Ia01jX|&F?MIj z6hI^rJ6*KT<-uQbl)3o@cze#9?Pzc0 z*nv%V3>;F=bIB6!+hz}ZP^&P@s2mM8$w+S`lUvQ&E!ERIe6VO0h4cbfhXLUFOYEy? zpLjgV6wY1USdt4oOyHn|EO9^S9qPQI`mxn@qJJX(H>_P_$|VFz;eAy@I;R0{afKf$ z)_W~lJ3+j?;Z066E=r<2xI-o94}+n(Q}0mb!!@oOcCcSl9ol32hy?C~k79$OrwY7n zXm_o3m@jrkT|iRwqMHu?^?mZX3by?MbjFOdFQpB_^nXOao2)i3wj^+kbIR|>_4{rP zwf<}o=e94e;l(!Ds-orEuJqcOhrQi{X+lado*Z%13HI)UFpXa4Q=uNx5b4C9>tx03|)r{UA2CV>n2jL8eKN+%}Y+h== z{221(%zayCocj3y!6xx{kM(z@Dnx9-V$D z<*F6D!nDW7v3v}bTQNux`8qN{zUM+D`KIF*4_0Ug=Vw=)DQU*5GJ2Vp?5^ew<0|?P zh2^v%U&`jwTcdUCB4JEXQI`e2$e8*5U>m5ItbK#{P54VoA^H)y0EOB;#7TBavd#X7 z-!*@h!rig64z2006;>+0DjxTN^=Sv%-k+6`aP>XuCi>l!wETUce9xAWy4-8JfFwZu z9>AWz3b}B6fX5*B`L9*hSeH-pXEZLq2N#YB#CCoO7reFFF9y*Yi#)9nPcZubTCqCZ zjl#VR{i)S|q9KP^J-+nb{T^@YFTc{p;My0!;i)KjFlcC8Q4OzYOLmg@>==JZSKNayvtzZ= zne;~0MMDZf7h>sb`Fc+KF+oXJvurr%QR5AvudzWdZYuxEUp`V$7^jK=#oW zeG^hO7*wg+m@P-<(cEIKDf!isgtbG#_QtTHgou{XO8<-kdRXa!8z6`ZQ$8*M9)ey} zMJ(?3dAq+2R<^zLfqP4oK6E#o@^L}FI*6J-xdfQMZ`37AyE_|Bv|j^U9E|*dj;b$l zE;;Q!{`p(;c$JxyWuNEHvwyP3;GADqodvy`10H4s+q$Yp2k+=BN75hnbQTX5ei{rq zwBC(xgUS=V?4%}V2!d%h7y62w>i&0RY;jha$vJ(`%@yYJm>K5U&l&U;JWN4#vb$7* zvA(r|YWR`u!FI^nWiqju54otzXm~&QBEesWvCG~Sh1;aNG~4ualnyU=^gItPrz%cl z&jS&wLmYly*=?R=p zUfyuCe`A|W$l-<9J>_aICQ>A2xlLo#{iSFPbtd!a%K+iJdi#eQpOlJ3n(IqQjW#8E zkP>8h4Esg_;Oz^_-2`_tMzWE07PZ?KM7;sUQLwDzbK$qd^!481Q+LGvJI%kRrZr;e z$7#tw(WrGGot&i~z8~IHf9opsPqD`Hg`)v_|8KijTAAGSXH>{|+GFvqE5iNUk)c^% z`7K~EAVOuign>2tswz{43;af->;&Eb%M;1vM2-U(-9t!0o789Y7_QJV|Db`tp=8F- zV`f>Cr_e~fqL*f$RU%pza9U@a|13f{89tzrX`{X+=VFFF$!GH6OjIZsQ@3HrYi|j= z)g(juX%rW|vI`7*>mUiBKtmxVbaKWn3NjJ*`9_73nkHk>n@D&3hvCB!z?#V+xW&ua z0=$MM;@S7ZTULzVj21~X)+B?MK^3V2(9(Gg8pbcd6!$CHH#2DMfR-(FF;fvzSX_Vgg zom->J>o-d~#DbeYLwv#;0+SpsdBrF0b->%1b36cUwv8{$eP?hYp!*9}>UG7VQHFY9 zcDPZ|=VJBA@Z_BjCI`$>@hPS?X-5BAYwRsk3;bx=w%Q4OPm8(mor(RZE~)5k4Lc+VkV+d0@x@kg6}cwm5ooRim6Ad_>! z$lYOiG%|qB)I#Az*=!1Yvwmdc2h?9~2$5|2<612z393b=cF`M9TRY9Yf>ztq9Zt4>0W^5JJ6v=zr zt=i{cB2bK{g)ajdK}N?Ju<;9EnHGtm&8!M#s$X}4qL@#QrPwG2T8SD$s;q-^AMEMH zKW%F2U`I(tMCIx~qy-7Q5)tFOPiu;*Cq~adP3OJ*OL9iC$WmDM8W;vQA|IKg_1=O& zv!&J^zVjFD&ARRvvS+8%BCA+)f{;D?M=kQIB2pGyz{PKTR;QvG&YMJV?NTcItY2mZ zQGwamgJB1Y_*8_Spowz%b_t3Tm6$(|ira0c&L>ilD`mlhsg6Vj+7(73Mh4pV7gVND zG&V4j2kf8&g>J(=8+w{7fAo^wK#O|*l^{faIfo&$s+fFm(48O@1=4hG%gn54T+9t{541F#Si(<8~PMK znC9ek;djH{g9PiA9qSsV^#{RCG??w}WW->hn4P%#ND~iG9H*vR1ec*ep%pr~Kza$T zic99y6F$%e>YzF759m<*=jvfS=TXGxtTrN<)BMlBv6ctD&JlelVRk_6nK`=B)39%3 z1a0(yk+0w~f$xmx@D*?Q2s1L0vg)roCK+hIe1OZdl!r5qr~WfX0r&*rmfWu`WQx5x z<P!)PuEN*Rhpg+QF1Q1(n`(5-BMcJY?gxg?t(7i5Eu+Fuc@ko ztz9wjUKgz#N~Ofz2Et(3 z+sfkNZDRR>^=s-bX34+=)t*!ss1(M)llaCURNZTUqZn$eBdBs)DYY1yR>e!?P&}li zlaPP;?1@E_w_Z-V@;9^QKmM^1 zrMBKGrFmU7bqkk4buN?3uds~op3x-padP+t74zmEE;M>e?bJVi6Srod@z+nn^Xj0a z{`KnavJogrPP@qdcuihqT^x<;pg~5wu*8#dRCohqTy)=5vyu^W4m%okol4ldVCt?Sz$ zN2imk`@)q_#DcM|FipODi=MAEnud`+gAC(X{I1bTE({JSS*Ms>M!|gtp07a{1*f3M zR6;35emG;z`K)8!j_>GmrcoPkOQkK|Jvv4&^L= z?(YLRP!HfR@aPz-y!TG#Z@>%M^O8ETEC~JB&|5g7n??0hyR~_t{F7h|%aN8O&%erZ0gh?*C?tMn=JS`V+l{=ps|D5fa8Fq^-75Yhrn z24CQ}gO9o7rX|+lqE|DZFH!WHT6z7hx)+<;-3G1=C!nzZS?6&eAv%FT%L_?Gw2<_r z4!yD$9_C98Tqlr`d={q2SjNNZUH5bC0bKs~G$`uH&c92anSnf5!H8U`#cmpnnPV_N z%D@TWrwJ4B16Mt`>Hu{0gaX)>4_sd1Xv>=uvNNA#VTs6^$J#QQH{zN)*m|p73_fJU zvPVD(IOh?|mPMv9EC~WD3K+m$)9gJF*bqcw>s{#=hYSK`if>g6Wg~xgyOtEOPGznl zb3WJ_$VRRw3dhi%f4ooO9eLbZz68e#Sda;c5vaU5LUg5`T9{HRzwhW>=!c#O)359& z4tCrA3RZL);Et_$^;oH}`S=YpMc6rLpIQ}aziHAl{Hc02Bd7N|JSK6SKDNoW7=!94 zgSFd1_$I@0iH;;8y?c!+-gu2v%*?>Zgm%ShYW!$ zT~;N*b`PQ{);2xKFO=_IAXHf|>HYsP<27OC#PG+ zshaR%ReZ~>UO^5aA_5-m3&s|9KkBB~YGpc?Lf}t!Gp_~%!W}~3F>5|DX4*G>z)~y` zm(X@UJWSam`1-jm%y%+_6mpxDh$?=?HiuGYXT$4AS>A{cUuUFcZ`xGwN zvASZ=pQVH=d4hjh;)6^m$&YY{5wA@kRT%@8kPD-i!=m7%otdUGc>)QCR$m-r?Yng;5mwaS|hLsQ=RMiyt`arEVh___!> zNqZ$6fEwk5#oMdOWd?yM-t&Ac(`RDG_>?UjG5!p3ZG1|CPS8CWlr%EgxkXTY;2?W; zIYs`Ip3#o|8hSQA^5_Bu|7b5b(kAxt4mL7W^h{eaATefhBVRM2Uw0f)F*r!(_Hrh% z@ghbDQvSo|^gd3ZdGIQdeS}MZ=N}-w-o6^M$Ih{fc}nYsxvjd=*P^FarKu}_`nCG4^A5hi3LyHx4@23By@ zbRnae!(uK`f?-)h_XPyYej2iO`Z_j=@Y(|Og#jcF=QPKtRcsL>9o;}6?^s5tT2h^H#lP`#{&fWE zP5!}bB(E)x<;a42`73I|Da1MKa3bWSbWtp8mSZ1R2;w_losuGe4!9~vgv#=@mpA^t zqDhYv5JA50#Hz>RewU;=Rv(ndPKLwF)GqT!3{MY9_TMb!VgGsO)-l57eI@$-_Otyz zgVPB|gVFrSp~kt@){u0vFAmSOPDwJmk23-WnsF^z!tp>-PwNl18jL)D?ZqR^Gt!N; zXR!5Tzqa_FjXX(^=>3L_K#&k-lCakRVEhQU-I>TBrG(kQ-rUn);U+NiBO6$EOpYv< z{iE8q?UhCrb}4z>@PmQhOUZD_(52ZFkB?s?4mTI=e{aCVUq(ts8d-oS@D76{OZ`1( zlyizN#z^uZD(_W|xaYO0yXUSMM&E7K(tBbo%13>D`>rdCQxMF!?&-6Bm`Z z-uUUi6kfGVWz{oSR?5`p6iZ+9_FDwvUE$mfSo6f} zlI{L3PH^xpwFOVnsZh9bvI!JbiaFGds2PeHoS$B}=%R>XVdQFSjROSYtQ+ns^i@SL z>N_c-+#7^7KX%9Y!i7t(&Oc_KIUa{&#lKNYyoVwZ*S}+6ddcrW^|!>iWp9?29H5)N z%utd!AIjSppxu_Xe%?_yTiXOlQE-lSs3oS{IGUu~YyOu0^pyeMB&`11QY|sd@TUF| z*F95cIA22(l@8?Fo&1NJd%i(Hg>13cKd=rprR3 zC^#6XzlM;ko&9z+;qhyYYeDwgKlh$Ae^ChAIEb|*SkoV5y-TYoqN7%8~92Pq;kz{~)&baCond;z%_<`=Knn6!{?wc2}*@M!NcHH8p=!nt?V7h|wSbR1!S_0`%4G);3uuZ#t5(|sqwFeuw$D7t7y}%B0V>xzBCvkzvd+!0e zBrfZ%$L})b4q!9rnOSMPBtz1@TR9O-K3`~iCo*zIt`OMu>3~x9oFsgQt=wl|0qF0H zp@NeG1lf_ptm^ z$Z(PoC{vRs_M2}wezSb&Iif@K6T={~l~m}cSu`4Eb{RKm1Ls8*@_Q*#&iIe$ux)LT zi|KlQq_E{qDw({v5w?q_W2POpr1s;4E0_GGplIRDn01)nw#FfN{&oAm`eq2v`5&x= z{}QcCNS*`idM^+h2S@a+9(obN`ehL>SbimQDd}1U1gjoXUwS_-=b_~Aa(JLo`XVxE zrP6P}e2ZuqYENiyUT_d6@X6rNMKB@?3l?(p9p|x8(r2Qef3TM80H?}%6h@1kSh}aj zDkRbRCHd;^=9n~2yzY~BkOWs2Zdpi)YpHX}U+5nS6_=5}W};fN)?c%f<`{-%+l+5B z3@sjZ>R$SDcuGkG4-YgiNy9t{=b20C&%K+#JJjicG^`E4hWrc(MlEm%S2AiWMnh`Q zX88T(`}X#kJzL5FHmUD)G+1SH=v`*a&k~WN01e!)-!`8zh&&u$#lB2$^CzFCus=J| z{*e9vc%htHpu-0#C>kVE5e;E)1M_MD%_FG_vh!t61$J`MjmKSWVa3A(+;`uyPppu^Zyo zTx%`C$3%2QxhBRUI(redQFoP=V9nXtQbM#q_XAEYnj17F zjOXRb8|_0O^0^C&Lnp(T&|ddqGt$*g^C48}t#GaSah<{FJR&>N z=T~j#?cJtt^vk5e(>FZ4#p5xW%-eXnF2~K!hJ;oOd7+uRY3gKnONYx;FvSlQ2Rm4_ zDEr4dtgz89OfNn{5=S~Du!L5Y0?K~(hgPu)Ch%jBCB!m$4WxF>c>wSLmjKW@9N4x6|28K&c&@yKJ&nSg*0<+6nE?j_TweT$C=dd5K*GtEr&aysl7!`aPx=PF+JqzjnbW34w=- z`n~Wqm|y!IzJq-sZ+t3Dc=2s=WvDfn&aLaC-`@AuS?>o4rG;K*GsuAE zIlx|_43>_Z=57>M6;J3z!rKJ7nYC3hfb8=m*a;*C1f*5Z^mw2DSENiTdphs9)hec( zkcM0AntkhUPuE5mz`ONTwy79#`_e*K<&qyVyJ`QP_j-BG53$%}Yf%8X^4PNemZJ7_ zxr(tiu6=!P?iHJ)7~wYMME*gv!KsUhe6NmH5~7&7yy-Xd0Q8c_`V9IHHZZi@k`W9> zcaOF(dk>U^?p3;w1r`fr>no3Ahmy#8AWaL9l_T6oKI_46^~AJcF>gq3znlbu;4_H z*Ysq<-`MS`Bgy6vPL4Fn*6y*|(h0GlmNbRh(u?eGtZ2D)qlxPdf8#n?>4T5@?YI-B zsN#hnTRH9%WG!eSGLXRfSi`3BE_$9cuUeVHgxLh?8?;Z|cpzh@4KcXyNlR1L47tXpq zjL2RqPDfFrI-|Y+d$34uJbyQ|_MG0rxDSV9P;IsN$4Fm+%J=mY4<{K2;imZFA|`m9 z_2F=N^`8yWL%;n z*I>ovKUtCgbPdrWn<*T5Wg3An7{g8H=1#ySfiZtr;H*bWQtIuSRa<(3H-)Hhd^z!! zbONE9@~KSKfeDx}u*(l}>}|2zSs^OyUrWgt(-Cys&cSK?7|EWc$@`Q73IORbyF=P2 zn_g?b;J4E%JKD%`KPfIt{*$R}wso~<_%-onX7g#&*JkjuN_+mHtvnH;(6|UlHzA{W zU94_{vx!tjA<50Niv|^~kSmw+UVC}7OY3)8IuSfUZ<6cmsi?7&oBzY`7}OwQIZ9-u zNm-2yXd80xDF4kvi`hezif$XTUV`_peB3W&;f^xUjR$$o`h8W%ft76Jep$ z)l&bDg~-M{^8>9|Ce+s}B=CEV&WrKyVq~?DIpt{&%@4f`scP9)b_62fF7*X$gt z&>BLPDz38zM&y1&OAj6|zHY`(tB`<)nxMIAKH3aj298rgK__HvHuK+Pc`FT+P=eKB z;z{9MjpNZ5fzbSIdM-4MIQel2Jpor>Hobl)^xR^4h~U)7k)VuQ7ec5Xcs`I&1UJ@G zp($MoKsdLJNPB!5EIViuYQp`}j7!E|UL&lHbgSa4XC`M}{1Y;w+p+v98&-4mVQUf| zXe)lDOBK-hWtN}vxBe?6i-fk=t~0%{I{O%B>nf=@t9^|ZoBy9?s9Lyk@UHsbY*16R zZnhI0)+vs*)&Jq4*BKSd_zFi0 zLZ@lofnXoqF40@G%zQDys!|;_WQrEKjRP_LMrvS0)j(tO3%%wN4PrbYT|*`xSg9*~ z@Yi7a!qW!!6r3R{SLZuM*{oF)cO4oDyhIntzBcIJvPdI!g9)9fR#Kcin%R>e)_!6; z9&ccyM$0e=SHrpSB}wyd_vRl71#`d59r&~911fTSZi&jtCY|Q8MOT)S9;4*MC*OSI zwR-jEck}*;WYS^|$!4rBUIvYi?pNT~Z?Bww_;3j35v*)2(OU=LtwLpC))1A~Hi!gk z2v-~8suH4eep8RGDL2r`om9LJEPzz|N{0@2Vf894XZ_p7LaE-=-JT%DK26f8U-zuG(`;8T2p6nCQHcAT$g-%ld-Q~^P zQY~k7a~A%}frudlDT#>NZg*q>R*iAaZ500vP=#=$a)5k}lm-?@IJ8VOM z+xwAGYHtjy(*qjO-D88WN&`s&K+*cS%DgSx4j=2Q|IO?jJzlpcI00>!s+5zmdGFVs zP7Ygra=O9%LAhP^v@Us)k}4TtiZN=M=EN^Ju(07G-6cE#mBxki$k3pSPuo!|-=Zyp zD?`tTX7bLj(h-75RUVV~P^%Z{j}Z$uOZ|hK^>hsuPXIu1{lcv73eDh7fIT)*f1cF9 zH$$HLy(_O&dP#~amp9P-QV{1p%!ZLFAiLu7i{+_4pkU$|!`wi&Yu;kBLLRz(>|-GL z*if$j4~{Vf!$WXQdSCn%tn2hXA%2lGWmb!K-|hHgfiv)fMPoJ&(+q3Z%H*c5*Q4O0 z(O5jMkj|$H#m|*$pCuz^>JTTwT$M~C3oq124cbW!g0jouW(0o?5{#;vDUv#cIP{e3 zW+z^)j~;${Nl@xbk7Q`ULpV0wxIk!%n}oQyK=@JJ&vzwfnQj&CzvJcO-_WE3;$1Br zzsq43H_NT?XQzUit&4Q1{;%ObDBCHmWdIH#q4bfaQogUgu=c}@#iUmj(Nc@qf~S40 z@DgoF{uEmBVlx-QAK({b-!1Wd45{euk^xw<1r#k7-Wg$U!@h8B06xx9PbYWA2zrfF z`3gE&)en|Z<8kEvDSRA*5WsBaM0kE$6M}$I>g!2;xeh{m`o%^=QF^}18RR+3FLCCa z^Q-q4r)47!mscAwpJh@6qZZzvYGWTp z%2l-@(o^)D1gx<0$tcqEvDD{b2xd9grTxP$`ILpBarEs?o?(DQLfc zb-`=s5n(%_;~-qRd!eNuBH%a*Yx~yZ4Ef{_iLwvo!6X!ikeuAdeb++NauFJGE4{>13#4anoy^{@h}&!PD407e?bC3Cijj>G zYx*dmH)D^HjJKSZn}Jc`f+(kwF2#2H{`wC85fHiwtM_WWu_{CV3F3fol>73cE$?NG zA_-)uSmccTbOT4~ze9{!d3)RFt2*0{aLPZAzo(649t&XP{>}X`sobfI>*m<1accoW z_=9ynZjGo-ZVOCWC;pUAbK1vYK{oim=06^1MjC&A6u=*#`w4xbEiLa!GmR!NM%eIK z?Wzw7%D-!NVQVEsMEm2z4Jy9(&j5G&p92-nSDB<8CA@IbFIA2tBhatwUDXpOVL@@u zzLvy;HVE*(YW_2PN{@rO^)|qu;HOjp^ub4wf}XN}u4nB*GX<}&CY~t#S3nCi8p1_0 zh9wXdbffs#MVxo~qyWmJ9Ea%{<~ZfWfNzTP)*31=4>$F;=;$@xzI2ZA?xT^LH7kHJ zGk=3D^Ac|+kMJ0fzoZ}w=Oi%wo z^ECHFaJTvS)5LCK1#pS6VAol!hAdC$70hqBax9;<-c||YVn)YtFmFB`yQA_^Pj~oM z1bB@ajCPoLiohja2R}*&Pb!A2589@(b_w4%ZkT;REVaSB0^duKss#F%!%_Hea!+-G z1u4AE+`a3U(B-SveLfys9=&5fV)V~=p&Wy3 zxq^dmH;|`A5Ey-2GVdu_o(fKTd{R1=Kr^MG2 zy%Kp@Q&0Va5umF*2k(k|Kujv?}#+tKQWJ~7Y`s<>CnUEqNdbP>PU9P zDEqKdvb!PQN55Z`lZ?|bQn-0M=hY2dD|i61d+Diz%EpLmIYsIoWBH!rxOKnyT+G?M&Y;xn+Mp_0(o6# zm#k~;n@M#a0%qpTfO)LO_IME=*JS#~udrUNLAF%UgSyJ+ql+6hfEGrCNFerTd zx94SZ&nqjvUfF9EAvNPy`B=d*oBr%c6y9G!AoZ`we|N@mLm9W_E0EhdUV5d9@0iU& z;*%Gj-Rr*@$>C~-mRnG~SkKg4U^!)>=r!GIw`-%Zl(2c9T(yH`1Njz6e0k&4Ejukv zmsv5vpj)Zf0{5Bv`k+kDPLy|H=Bl#;V^-ozP@gOBW*deGW`cPjR+A2$Q(5+<54U=? z4exj^Nf3=^a!$GTtX4uCC-${S7!5Pzw4oxE)B2EPLg;~lQ@!J8bbmu_M|wSAQ@yIJ zc#o(_s72BSUe>*pn?vQlv#!i3uRCI%9$b5|@Ucm^yeX4u zda%c3!jgX7aUvB*yOIv&Y)&UK?UkXF1aI`FoPP0pTsyk5CgrnUu?nb?pu?MT%sA4~ zL+$WnG;g3S*we}Pw}Rdk>JJV=AG_|`7gheE7*Fdg%%RsxWQaz`%S&q*`Q_8}kpk}z z3tW3KTx57|Jc~@xnzRpsn!;I0$JQPJB_qB$d)c)z5pyTz`89!|_;sV-8T;5Kr#YEH zO>}$C(6a&Fw_|Wudcp_C{LxOCv_TrsIvGn)hJip3?$RrTmGYsUeW|kk_<`e_HjJNc(bESA>or4GH&K)?oD?-~%o6|=itd|?q z&+~|r{UgW1Mymbh3L;~{lX_`?;f>PoIM+xvw^uScnH584RES_Uq@VKF?#)+TI431w zK7TJ6QQzEyS!A!o`Tfl_jRu_tUUp`s?EdZ8kk5^zpXcv+v2KwlH@ijL&5oDvxA|Mu zxuh=Dk#yDIN1hz9{!nAiVg9n#p6S)ceLBpr;GWQBEy6q`!CoCZPGGToD+~S4oMTsP zo=|&r%S_&U_X-I_%{bg`4wHppyE;D<-W9Rv#5&=>z#Ut{BqmZn<(&QTDkHuAr+AwL z6+_R2wYRTk>%Zu@2dX@x-Vx!Q!LE>e0mA#ck8g*9Ub@f(V#aw~@9M25wxb5@)EhPl z%MLcUxSX(TdFG3)hfEJIALmADArX#>#h2hNw>R}5Mu=l?vw2rtVaiR)#+Bf^yRB>3 z9c&s(-2_|UNZhrynz>x#nckCh)LC5)Nb|=U`Bh%k8wJ|Jjn!2uH8?x!>O$X44|Nyh zH0*xzBcy_et95d-DhcZo(IxZdHHzwae$QG#`_jDieUV<%()_QoH%X+dM8Gc-$DW~X zNi&?oP}|L+zf?^v|KsSq#7W$*00 z-HSxzBB|_^xX2z|$>{g?`%e#|?#KOn-mlj==XnCA;asomU^bV+GF8C-wdWDlFSQ@u z^5AXk0k`#ozn?;5SzF3svHy+=za3vnqei#*blU@IUB4MFf2X0NMoE3&mQYRgKSH6J z*;iujIx3U8R-ms==yDUf>)Qi1G#@YqgkFks2haw^0m_>EcB>Lq54At$#1@GbX=?yo>arlGwKQP#fe4<6IP98-OeH!_%Q4v$QDBBsxW&@6&vD>E1d zP=6-pa8C82%o)E@puzU@q|SYteMntQC=8Bx>G4`_=x&3bWMeXmmSzQ-eoN|xULy+& zHu7D5<4N(?1V6f{qqeg8X#^<#_$de08erY6YvdYfhWSX_p<(Ig4`+gfdMGGUoWYCe7y>)Iq;WWY3aceP!4!*P$_gi^vywH z{S8v{7306it|J`Tm$dn_akNk%EUe1aUH>Q*V%aAT5E|I=8DDB0!~+*o`L!_|wVI{H zx|c=znnWN;Oty>T992tuV0)h#Bc`q=b=_EKa)6nmFpqqa9 zxhRTIybgTgiN-zl<;l{WcO-VIwK}TIdH9AQ8wV4JUV|t-vsy|=OMxhVONsw%&Lh<) ze5z`SS0Z}OY60{>E18&u*ac$g)Zh7-()+&Paa|pFo2R0?WL+AsfW59rgGUS`!Z^bx`c+ZRSdOT?dMBV4Ao4;Li@ z=!DXG^E3`XrKyke>}8XZESt9e%~t@v$~w~9-S|3hGDa=C)pdpd zkIE&U+IsnucfKbCmL#&HcQC=fC|Y?CBwYLalLXmcV&rMSw9a8=J1c>3m`crZl4v$H z``Iv3{Qp{9d$Ep87>;e~lX>F-@pwm0S$pV*6#r$+%EIC zzktGzi_aW=)Ve(?9jIPG*ZFMV8xSkqbpB#r3E~sK9`U`p3=@5oi<3KqTV+TJRv%I; z_q`4lw32PAmu6>6e|}8ntzYHRFLba7cpc_$gEAJB!`K_I?)?{vV)f5p+Ed3}HD0LE zTq?0rYj=5a@M#Zn%kR^{EWTv4_$RV|X8TCKuJDA>{$JmD-1El`N@jB2JM`Oj>pj@I{tD%hau z`7O#f*VV_DLwe(KN4qqGP6bFW69Tbi)Mlx5TiZ}d??oPzzW8$r$ zmSVS4*+8EflNrvH zVpVw8brN_8MD!jXfP)dE5L75v3yczumcw1(?sco$F)`ow+YC|devV^9=QUnt5AoxO_bMybWkS9VB_*8vSL^hf z#LBv*F<#3-f4|{)aqaRm^s(&61cl?juUTe3#-c4@g4I3Lz?JNF zUb6hDRutx&!5h3;?ce@^{y}iQe`8CyP(RL=oQk1h1s3w~#s}JKb@4IXJg{Q^e#6!& zfOjN35MLmp3u!}B=wS3;gKN=`6Cr*$2$~J{se-I``|Dq#r0gwU4O+K>E3s+DDDo&C z%Zm7%cdhpaxFm+sVrT0LZokdjC+{cUrbL}2EySG(L*Wl$4>g&y$s= zu%1~9!vdDnxNCbR81E2+kM^K|qVKo+7Z4?yMr}ku9EjXv(Z`55id9fRQ6&`@ke|GB zTHd@Q_HWfv8LG_Ld%^r)wjq~Z$KW*?zx=e?#A|g;p)-D{Pbx1cF`}q(<4#Kjy);F1 z*{!zwon6m*+U=_zb}?;ORRmAeEHvIkfg{wP$CaMaWM--966jnIp1+RjLkqu@u;9DSN@B>W>CsU|8N_ z1G~b1qxjX;4|RuR4`Lvv<8o1GCMV!p+&u+3SB(*sZ$&+KO{UOLR`zC&Knl?pl`|6z za=VOF@oV8Li!~bCM0F?Je^d@jV_=a>lSUx&1vphJ%?Hz4B#4XcM8Amr6yRfJig<~Y z{B`&pQ!p9Fe7mg&%moXp*G-R!XKy23T8PT;lL4>t%n$VdaT!9_z)B;mT4Zr{m`99U z$-Len#LjxBBu6f@?(!|ten*G-7ZEWOPH8$lu}iXP9BD?)OX>=Pb)3cs5{UrNOutUu zrEfr3>A7GoC72%u#;5y}fk&J^Htoj^8pmy0Cd>{Yzja+$fb$#(??lw!D!hSXu4`*g z;wMKRUEy(IG>Hu-EW%)$8r9tW{Dp_62>-Y+-%UQqYle;S3&!yACtxpb`?-PH;+5GF zfiVHl=_W*JhhVq{GlxnmlnYJNHL4AxZJ zxkdKo@%0q5O)l_kz<#PbY|?>iUq~TO=XKX=TJ;EHjcZaX!pHy{%S3-07Givk zx&1>?Wap`uZ4rcsdHdAvwHyr`5k;XE*X<-FhupJ{(bQO ztFmq}z*hPArp#f1s2l|Uqa-mtfo34swd;+4>wu=9~GfJ zaRHyY*~>!5+3GIfAsjcfWtr+eEwqAMTIaun`-IeiYfpdtxilwxzNx&`HUet8ZpTO@ zk~MiJp?>pS*0u2HOV%#Qg616OCkxl4^0f_eKeOT=h}KI77;Dd;nb=vWb4r@FKC=p> z`w_Ny8yFY8N4+$+Bq+Hq13GXq7 zw<%ddM{gAOQD4X!or(v#&i=HG#EyvlzAB^VjC@FX82*^!O{-m00zf{QI>4r9^LMtZ zouTC4u-anss-@t>8o)Bga zjNG`wGJybR0i9!@JilqS0%$I#J5$8-UB{j=0{wuR#V91)9O(Z zjP{q-8@$`TJ6B2nK$7 zLZao37r(QX(B4t8n7bA~!A!ShuLB)nYgpy^`G(qqDl|oEjpNw#nNPU>q+Q^2yX1eL zZJr_fKYrm5Z0w;ZH-;dO*}ncU#9DH;n#14qgrW17OYO;ct?Q{M)`9o>yrlHJU#`V$3lFxMWe_s4g<=bb> zIV|EK!`;x{@sus2JQXyTLqEoLJAn~j})Oq7Q%{8m4 z;;qC{`YeSK)FpToK$$OT#Bb8ZKFZvXfD+;Onapv{HU!k~B)jb_{Y6B*QlMC)Zg$fN zwc|h0uXYj|TLOCun={6HHsA`)_OVFUMbbZn%PXn+u=eAsl~pAHP&3MXsJ}k4^&c8xAgA0d+EbW*R7-u|GqZxyFG8Xz^e4- zQoFD~puNKY2#sH&mkH<<&Y>T!&bnqhrkskcI41yr|E)VL1y3&*wtli6gx_UQ26x`Q*)ktXM6G7V=8G9PIPhofik>8vT zk1BRn<(d-5;>~73O0P1f-|lpzL%w6gG{(o`9-Hb9;mz^iU$SF-$#{B)wvJvol2xf; zld_!SAfZB=%4uhyW_vw}&ESMgYu>PC0`J2r9ZuFprdX%oAzjr%uJ97VP>!2Xj_8>5 zG?LmK`lPT(M8CEB`_ak*YiYOxu9fA4$t$s{ZR;(rdkNGVj38EgbBiQJ|6wqB*bfiaAe% zn}op_kRGu2_7eHSN@?I`#u{*BnS0+YJCi7i0qd3~~>|}(3y&;^> zsZAueV@~ePXYOp9`+u38DNnYieXynOAuCl@uWq{4^<>flmEHRD!i5OB(> zy0XRO?QdioKBdP#CNR=Y#|CKyhu?0r$v8lXAxPpT{Vxs6TRJmt>E`HAcUjKsn}n&a zb<@)WEs4Po1o*stz~BC`BPlph5+n2dr3Dei%i634MMlO=ST2PrtWm1x{&67Nh;%74 zcy?%~+armkc+kB)&rL{^&gCWtpp@%nnr{k&k z7*>0(<>3_B`U1>J*%?FXy=xp>v;!TykHSva(wsXiB~4jq3@Aof?&&<{Xj2)fOX;GW zE6Cgl?P%3jlb0FC+8#n0@ z*7^3`@Sr-qOizFnvCy+Cq zNMmhdrOheN8r;zge0~I6M+QWec}IE-JMmK!;GeXwOTuKq!0{3x>AwsTVGU>{*OtEx z+Q(2TCkm7{A-jF*E44ZK`)s49uG4{wHOk#fX$+gG(&A2Df2k&N9(6J?ZY&I;=}I5N zmj$PxN*^bbi{fvXVAH=B(fuy_T%9XZE|k^KV3&`VQ=95hj7ZAI^HM)|i91WKF(c zB&%=c-iyVT@M0(vnnH~-&1R?T@bHveqkQ1lhm?I_Hu!>3VPh<@A#?JduT-f>jS^5hTnZ8ao(1jUT} zQok}vgTG>uJYu?@mi1mJEXdOD=Jy#Bpsup?=iF+!muzLZMnx(}e!y$o@)0&PLo@il zsBL0py!7F35RRG<&MQt3S^V{J3WfmBxCWAw-JH)^Ze8Dc3=FmVhXKxa)6gJ=7}b1u zrpGP-s_y8&(0O!Mw$`FaTyM*3WTJf@dkK-lo3DLwp<~bW>EdY)8c?jeB}=i2Oxao` zo^cZt?jJHfp5bfZIy1l})uP|k9sRx_z0+cpeb)E3>cu(&@F`^#1KJ`6P5Gl!Zjy5e zZoUb-_wm=YXJ4`NhS^*AD*t$#LdwMVimi899cF2K=En_zgFxV#$F(lUy)9mcMJlV_ z1dSn4B)Rke&3{W6Gk2#0U5loHz2Kk6Epp0J;Ng_M`Kf=Vh!eXO9xDtSK3HFHr4KFI zxgVwjzsP}*JTi(mJru|Vm4aAV-sV~FT6k5o&QlQdq8OM0etixKLR=hoEm_OPLN2$G z+sv<3*o*ZY#+!n$ZjZ`G)aw?hQ!A`JkGT`O z>yrqdm`&_J&iP2k#H^6x#%EMDd)RX#UV9|`k9wq$EWH4aX4LBxv#9;-e|6FUc`L!} zq=~Zh(|k?lk;W03dy=VDS^9<0IHey&NM54DkT?ZkqIuDvS$f;?8!!jXyT0bL0nT?4_*K-e&Xw;`4D<}#(a#{MtC-NM-V&zQ2(0)%AsjH;mLIexIuL)B!wM zLvH^HI1{_EyS)tW@EgP+Nx|=JL$8s>G5uTCJ?}sLJ?d~(KX4_Wb6}&%+c7>NZ(oc= z#)miHuFd24@F#zMu6RAuJwBNIc=PiKs2W_zy@I$HXKm?MJW_T#9Bu0bzskJG@tta< z)aR(Tyr$+V6N8Mh-!4zB$hUGo748sZW&2kx?{%m&Bn98%rNgsyNPsRD@C;_6phhX| zHbe!`EB5sm9-D-)NJ*56z7Qx4X^6*!HCiT^O`35Bk4sjBTYJMKlB)8+&EKA%hS|lzrM!3#s zgo*V&pgI6Wcb&-l-!nu~vFTW>sVbk9?HWf^@h~ZXGd^c(d{nU{Oi1*|A67$Wdx_8~ zsBkB0dDt=hqYK&MnKr#kT4%FjnI|Q2x(secN&z*j6k_q1+qET+B7|?wYs&AyZ+6n# zpDqTR+j8yF@A-*mw#F%)6;Pl0T0<`5HlBl_EhpL|INgcy-v6u#yq@Q|-fi`W?uUyJ zU0YeFXmQKv+mKVuwB88)!-nMHp;GWik`cUQ;9FGM)pwx=s~@^lPw+oG(;lR-j^H9$ zo!*&Fl?Eu;BCeXaqomT@a~=c&f-HvTLG~6EVgGkS%Fj>79j9vC)sLB`383Dq9SPI5 z5hllnc(4xbpn+FWdFEwGthgHyWW+E|L; zt!r)cCynnw4iP4!f5+m~er?aeN-u6N+ z%y%Mo>K*H!(HY$FuC(Y^qRNGfIdP{~3{Q5~Zx{`&P*k8PK1J4@yodZgkbq?Q-v4bL zpyL2fC;5&mUb#1y&7Kq-rB9ERAHeTE!K%s#zFVd!FN68+I%PLi1|~ht5k%gSPc01O zNg|!d%7JnPMm+%}A zAfMbN7a{Gqoa8zSn5zIp$bu)eU%RjjHZFOCuX#ogS^mAH>=;0Xq>vQ1a@)F})T$1i z>8RsNL|pR*TsaiU72hxe&=BH5&RcteY+YjWIDKeqk-|T1v-vkolX_&7x)9s|UQhKs ztPs7L&vUgz~Em!6qTEQ6Ltf9&RZfl=T((f7f8)(Pi{6vcOT-q zFz04TcOKhX)3Zf`rvm|AcEdLxzik|~eG0eE?CE;Nd~1G-`vkiG4V{VRFL}~=QUWw# z1rus-N*>Qr+&VdJ_D#jtfV42&Bd($c=f0bXUTv?d2zqt)9h1x2!R!@+8o^dMSDM0& z>h2$oH^;K?63nJ%j&8avEYa7s;#cFb%XCB3v$r9i7nT&Z&&-t`FAe|+k3jX#io;Th|-vVB{g|8_n|_u=a|jL4l%cCt~UQC z!>lgVV4)?cfO6fG9V!yH+MKyx(m^QW1JCT(l#5cZXkMr(3+vScvcfmQOtxOCUvykF zVFd}{Hj@@{)%|buGR^6G0Bdw^{F?MO>J?>;_#rzbEb+ChoNLII{jzzaJVSDGKbGm{ zHrF3nNY3=EZQmAj-S^x0!M*X0OSa`~4e*6ndZ zX+fweN?2~&-8p8-x|15(BfIJ;hs$PE`4LhVfGnVbb>yE$!{dF92|7hT=RtP=R+_Kt zHUPY@!eWdN)tX|Tt2cgep? z*P)kIS03NJ)Z}sN(3Xd?S6MKRf9;!i&ZrZSL0;~{o6^+p@WHyaTebMkNxO?@IL4=5 zN322sVHANzQY_(*kQP5Cxz!*azI27P>fMOGvJ9G;XEnS;M`w?zXH_vPX(>J{K(si| zT=ShLA}lN_(kp&U^W|rNRDXLdKMQPU;wIAaw60)P@mS+=&4-=?y&qC91%|nm$mQP~ ze)-@N!gmFg0K!S7u9walOUc_)7Arxa))UPuyEpk-K}}Iqo$yOyUNXcze`A*ShO?Q` zCFU9+2(zr7>;1=f-}9T(dl$g|H-NV)Us+UO4~eKuJfls z{2tf9+gP)qC?AzH(L*+a1!oJXwF*Y!*O;w?+l7&v)JOwZS0y5GhIvakU^>P%>Wl+~YM44yJo_67HZ@=z<-$i5lpCFqS$1VJQQn-Q!t7 z?F2qxq3e>BiCuvklx|;uV#)3HmK3{BIOlf0X62Ig5s|Uekc0wOh7oiSMM9#}vQWVE zz~RT>G2*UN|8 zI&IYCi73nyQ6wb~u0E#Kf^jMcbDcL#^`8dFp-K?x8c$wEQ|P}j`%O!%iw175L|aQn($>Fy`He<(-9Dla_+YAY5P<=#O;P{LY- zJ_}LG2=Lo8J0q77-?RLsJIeMUrr4@GG`aWne`ge#>ggfshfJa>TJKy}`L(yb4(G2| zar%BgW=JsCfd4!02fst(2>NBG;8CnQ@Dre4e)WBvAGo2u$Hk)RCH&8KNz)8*u_`pl zf}f0iKipSc2BV%o@)=(@bd7UeN}f^r^y%s>4;Hjr1WVU9H{+x;yvKK#r+b`L01?v^ zyJbV4c1mpn6p5djb>w9=s}Cyw>{4D@Om?|c zmySFLcI$fwY6)RiqTY2&7Xv`H*OqFmgO>*XrlR;mJZ|TnzpHixN#+7LZaSNdHn`x8 zn}l0Rxb5ZS(M~YCEMMN6M}cs1yX_eWE&dgk#9p=4N#U}xBo7LFsv+I!lx(c#oO8zV zt^>-IYG8`Oxm2ZvtRa5k5me#%N5cZ`iUyKrhf}8NuXPfFQNG)n)N=O4g;u9lihPeE zbf@2$*ZFiy&XART(Ebbm!uR9{i}%R(&+R}s-AAz#8HP=`sHdGF}4<3ovb`2SfUUfma&B(pTJG_L%dZo-OzN0k1a%f!|UAg{KGp=Ou zOfR4+w8vEc4a)s%%gfpU0z85vdzzxcB)fnlyLQUou%rE57u#*WKx&kj;h1DxRLZQpxP+ znIT&9ytC++0o5HR9zTf#m}L0Nu(yV84s@VbzGqK6Q;pashxdQgw6*a?DW8>t33@oR zloynMXcmj`=6WM$w)b!>JTDjp@i7b}X*F@IpRGRiSPBWAgtKjyHL2ycr=pZT%KshN z(4%#Ic?BNywiM|^9TD^j>`Z%Of*4OXh>`Djep1GGeskaUEK-yFOaWF)$}LZ#MW$3% zIZk6Ev`#PK`d(bazExqYYT3Bhf z{-i-U9qQz-rpEKVE#_jwm)LYtbw>|>CJ(COk^LYlR3*DeRJ%^9^c`REnb2#~(9TB? z|9*A--=?EFuH^^AH(HdCY6I;vWsFR~Tr;01eYgK3z?~&>ys-EQl5bM{xBI`sLEC{^ zvG(3Wiz*Oy-e8PxFh#AeZgEXgih-l-`h8VZQ{kq?LIsaV*0lz$!fstigxWkqV0{G3 z-__GSZ_<(Q$YH8keJ1RjbAMh%^g;+(>|~-~AZLep1NA@8sO{3Xu#5ADxqd`Ehg%L& z?6Z1D1p8s47sE;!H(>?*7x295S%uN9E!KF5&@jsvT)ASH`7DhqGq&lQI^Q3%mKfMh zV=aJ@#=+Qrf$&`Gdh@*L4^lvWFG)%8xQzA2kg#Serfb;j-1aA$SFfYBC0TIGJeGAY zy)w>tfVcdM%)u6aUVBGOvt({1=x~+*7I;jY)VZO+dA9hUVl(@g?3y|4D(O>bgYvJs zC30G~s##_MxN1~LqqNFg2JmvUQM*uPxn147ImUNox8l}O`u-LF6yok`*?@oCi08X5 z*{%d`??<`w#mPi0SXG*;@}bvJg{^vugO257EtX+#XVWiw0Ny19t7)-hen{XTs|DDG zLoR8a<zf0%Eeoy&Tm9?l8 z@ck@>$?Cwe|GPeh@hVIg_8!M@ts$Hj!lD3_gO<+!UIG4zBfx82n7Vad$wb?`YR~g< zz3)=z#F*U4M60HhyK=3=DWv_gd-3_0;W3oEmmuT0FRy~n_fLbjbq^1ii*HBK)YJt~ zdeen;l|XHAdo0q!pFX0eGJNA{S$kh+*+jU>)1O@tAN?T$bhzw3+tCAxx}-G)$5)wKgYntvxhE&X z4ekP+eFt2lUJ{1L+_lvFomn8 zY`MLq9qcjU<^o#J^Ivo@sGRY!vaeXAF^i%0{H*rZ50-K)q5RObolnCs3$Jb;h?<&n zxOW(43XR=g=otACyn*(*ibN1n(7`m1;*NrBi_ay3MvuNLM?dz4EILC~OTli5;VRf= z9H$CB!i-vI>di~&Ob{z?ER-3rRUtV$TuRYm<`I$o-pL(cDH%OTNy|fmTstbDvEj8# z4xVn>!qH}revCRtxK{OO^4Jodt8iwOf}YgWlG)n(V85;ERhjHXv-KuevI(NtW6H>a z=~?JNyI(MzZtdtf6(jqdFT)BUBI1yC1FWX;?6wQZ2p_fXV#9knQd+#^k7d5rR*e9SnR%c!_eXTfwm8s$ry zP&QN;2}*tB+PWUS4KY4W+-QqGs5U;%*$pf5?F* zhR=M`uotdEo`_rh)B-Q|uR0&rdBZG!fsYPi@wo z(H^p{QzK82P8TC$`59BCNF}ct)oV6Y+&bDWlQ}kS-TH{2x7q)pgoI zPw>5&q;=u?YkamgON{+j8WIFoa8r=#i~>2-gJfyo#5 zacWzZc?yBKP)K%9~Sxjx0AqK2=|L_aNt=ot9`Ix*+rE`#^M&`0&H1cYh*ZJ^zPB zB6$@PtnwFlEAF|5Y#Mf9m1h8}=>X1Tu?1e0gY8u@wy*lBh$MN&Q9n|iPm}M$5#B$w zTO?a-IMIafo!FsQ(N0j?T~hj>J*LrEGQvcst1$B0n)0tvZxB)OSSfyfkn4(SwwJ6| zt-kE18;yilQVxdp;Matw#j$&gQ@M;@aUxdOX!QB6pb|H!Jl1fu&v6_ds_rn-q*avD zC=(RgZGoQlQq=!uYv4DCQK%*)-Wopn8_|84AGrfT(ZQ1!;q zf4UY5pboxpy@AcXQ%OswyGk?IgdmcSM0UiKN%7_*PlY}_et}5Y`Cdl02_pnY7MZ?l zTZk43@9mkZX!!^3a0U3{4@I9f9iE=j36tM=FPWstsQ6K#IOvKi?Qn0^(yAb5TV(^r zX&TL`_|syd#jY4R{rrxL8ASUl5bbgZA$%#UEhhmnCK!K)rrr#d>j`zYZdHL^`0;|N zIB(E+y1iB+!U@A*uxlJo{j)3fdCLQiv$PXms(}W zuk7l4q0N~#^A+$Ae~_i0aKinUBj$kPJSG!Iv$S`88~Bbxn_JiCfNzl|Yx%dE8j%rV zJoaW(a*))Pu)Kh199j8f?@irryHD+K);|z(%K`(`(0}6dDbt4i;@2aKH~%D#0^biD zKQvu0ZB=@&cd<9UXu4w190g2rUd59Y^&b$^$}4{oxUBzWRBK1v-Y=sS%;9`=zpX=w zpASbrjnY+4W-v*qmRuFQFpkierg~lP!%7TyRCD$jQZZ%O>2FAXD#ayYJ3Yip?>`ds zOae)s(|fGZ;yLI%E>C?OI;|0Md4zX`=ieAib`{QVJM7g^!DeR-n7|r>;V$_)k?OXES#1o6 z!OsHOvs3;JiB0GAqWyR#NPW@*{7&tB)21N>kER&4d=T~15OcIvA~XZ`O7y-U^eMXZyn-ggsxX z$Lp&dd6RDB z!Pt*B#)sp-nyOW2s9IKe?Sp^D+Cj?#0IkYi$+>m3o{Qqi)^+$~6LZR7 zHzMCDMU($GjHMCZBC2eYw)xE zRsY5y{G!CUclrOqpZm^HEF8_EPCvfo!CF{y!`}lMld$}Ore&FAT|jL0Z@ujdu@=*+ z=F4%RMnrTxQL-*+{dc?^nARqx@AqE2O91TrgS|GKoBZE5ZY~uf9JG3{VL4}i<2w3uO#2#Y^R>l%C34nj z){}qCnUFWAfg-E&?+qMZfHlJ?)$GR|(8RU-j4|C;w&o3x`b}Vur2Dfi@>lvapvB!$bw<&NOevp4C)G*S zpz^4mrp$RpxB-U#kjZN%;#l-MY`MeN$4M#Ew>;^Lr+DT-2N#3e1a|~^$}&7%${x*l z0Jz7umkHgCVz3T-7blblf_0~4q|TXJ@i7L=_d?y-#{|PgW7lu^pWcF;&H4y-3q3(V zl=*jhS^PB4_wT%@qUbT$m&Wfz1)W@|+L-Xo3hVffnR|vaLFp%(%Ci2|D_l9Me&=2ac0IS8@czsf6pvVL)m_m0efYJFUt44 z_a)$DJ^e84?nXDHsu7EJiMyS?ocJ_%v49LoTGMKnDU$jqJ_5`b3r8*+IYC~HKA*MM z#8?pE+&ZE=SKT%VsWrmYVicLh6?I{XZC`sEZ8V(#+J^-4UMSU#ZNIRY zRjze4GX8xK@p7E>%46)=E4Lc+)>j!!T)-+rI;Y~g_lEd8lCqhZrIs7)F7&5LMj*i! zVT+Ctpwagn<56#^UV$d>=Wp__gzfwaqq$Ro?%?YC`&t%|I9BuLlm=~L07En*lXBh4 zZr9I|XU-T91_;l0Z-xd$V4onCI5{5t1-v!SZA_iJ5wE;zV?R*8~sVE1`XH&0WZK*NIlDC18s zs_g+^dS|=iqMq4hz6KUDzlxdOA{b(V%R4HDmlg~C^t%|h@snNOHcwGA60`e=FS9h+ z)9tre@5&#n{`SpTxO_}3e4{9}TS13(cAL&J6s&I>CmhwUukr@%ms|f`HGR~NGb*s| z`U<;uJtE}O_sStwK>jgoY`_Y9nT0Iv2LdM0OJaIX{)i+Fl6Om>jwC6YUvxx~^@8dWK^BCmYg>6ty*< zA=QUvsV!!&hpw#ZOR4BRwt1F@!Hzem;xtyW5yL;^yH{pwx0~nr|63?1gyhmwpQOS* zWx9u^0&_Rj5%|7>6K@y|VO>!Q{^~*3A%3mP{o>PT{cq3j-@ft*2mfNCw(gws^s%qb zwSdk+djGe<*AWz>B!c$iET3>)PoW^EWdKVQ${0N+YdPx6+1^TjP(J5 znh8>KI!?hntGt%@<4%1TGMK5gg>mYtg0W=eYyC?uI4_g-J>VxM3oh%Iba!K_Gk|f8 zIsObW%UUTpmwA@-do|GaQ60s^nai>xB&Q}u!*%5p0HY@i#fQ^_4 zltp8L_S?;!O!gb>Yq>DP>apng59M1V1HD&emwg14&zafHnH!iHm7pl0sv~#By7K=XYjy*1v*sAuYV5o0-Xw#3QH*1~W z92k9V+B!WXez*s^FjXb)RRd4=l)wLbhw7UJArcEypIOw!R4G{ycW805UeVd&h8*Fu zk69ot4-$|C%Wyvz554M)FLx}H@{7`1IaIk>4&cAv?yvl7fV9&Ejr#vG?8n7;di67J zeCXOTt)Y$~?w_U6afAXuzFLe{uf*d9h)Tn%04ec+KkSE(-+|{&rT<3LKaW5FcomjY zW*LTbWK7+xn2@n%sIA*3%d%bNe9$#H4;54Cd*}Viu!{F=e({w4NxL`#b8dS_sCAcd8+i_dwy0kk@EhXU}RP4nV~%P%nHI zcx7rL4jaUk9rsE}#__!>kwAdc9uJH?a$jY)C^e6uO+Q@%7!4S}2;0P(NYbq6cFr4ljh2!% zByKRrx3pj4^cZr!`m$g14Xv@b*{Ys{ z;v2*wz5x$pl&sb%Fim~KrQ``OYl0#eVu$ZOUQ)QA5J^lSSIxgVbPT zoR@iFnu3@0dqV?rbtYm7SHo!yCMWgbC}38KFBdFS>Xm1Q94pPF?P9G!XKH}KDNWUO z`x&?Vt}W6l5;+GYMCLPr-IqsI>NG`r z`OZ@ll2hkHs=9X0sg|Am%59c=VFD8)``0JnlQTO!f3xIjb2gPR8lr*ibCsVSp4<}+ z3|P(#oY;AtHRg0H{!!m(PVz@G znotbFHR3@8=;6oQ>0YN(F%THS)QfvF+^)4R_SfIn44FRG3y2c-rgj-)5wN>%Av8NH^K)j0<6@V~t@W~iZm)x5o6fK~YwqgDm2dI7AGhzEjx zk0+@u)HX>Iq81$suP5M%s!P+6 zaMOFbrceM;+B--3_)CL(>h^-59SaFm^6e_yeh_={rn&BDzktkMmxaB@ttb(jCD8!g zm5wwsPaxh-iyvo@we-u?B`K0e^yII=^$N?MoS2ISoZPd`xvQ&xFadK!t;3m-$bjil zQ>eTCzVGk1@>#+0_r7$xnJB`QiTb%Im?d1uMPW6c{G`5~?|M5_6lJh->BOSlTyC4b zk8Q=7o)yF{!#}?pIDgWHZhHR3m$S_OrSk(?EGtAMS}wIGwsqItzdd9S-S?!zpZdQ8 z-m8bp5#pa(pL0WHaC-X<&!xBhe%}Cbltes^I(tNL_?-;|vep$l*+_D8)Ye2|i+4hU zT4uPyHUj&BYYNlo7XXgd=y$=?B9~z10QKTDbrqG0BRhpluim%}(?lq$-CC8*BP$xU znw0JG@=M=+X0?wctH0TGuW^xrGKBFdr&4fAg~5nt;yXd9lVLnBKEa8MxALKJ$Lf7Y z&RlH&i3yynI((GPmW~EgZFTCM_T2;0JY?4$q^R?~(gwLAJ*2Ej#K@WVwNi?4`-M07 zkD3ytl<(Q!VXYO*I$VN>^UZLj%h9nS{NDV{pP~?3n5n$3lhBjA%q!%a_Hj!8;OU3* zs+>P7o6I0%>3(a`z@8&*4=oas?w%Jz2|p}2?9d#&rd3;C>WDi>0q zU8r(aZ()ZV&sr-hz=&1-2cPIf;C#_}-6D`!&0xhNnl-Tpp ztzNO~yj)TuQ+T|vpRNpn5*&*l9QzL7FglO9PIh0>>6i`cy}>mc^af_TJL&SQa{01Q z-18a2O&oB^OduywwQ3bRBw6bvZ2c-?v{f&?zt1d4?!L5V#;#N+^uCP-WaBPFmCVrR zwSs{L{?QavAm*KI)+bq;&%S9A!}xH{mWmfvYk}VL2lE4zH3@1u7UwffA$~LK0w@f7 z5{8`QiJaV?GfkkFbZaf$lattG@tSkbSJPB?!Ga$QTo_2O`H^you4rJ?0c?gg3}`%M z~MI5(g78xmg;kMx8d^vs~6?mdqih18kNBBIX6+T566m5AV8$l?MzZ6+FXMeCL{-Sxu#%+Ams2wjoRM`L$Vr>4 zFTVXy7Bd6!w=X!qy&0o;U5KGu((}|}>v3`QEv}e#G$!9*)+7bIJZYtg$?GMWVl?t+ z(F=Tqb&G}Ej}C9Vzk3j3#DvYRFtvPGRoC8`{j{lE>HUHj_mqn`h%U_PAXcap2Sg<6 zKvXbB*k0TeaHXBX&*HZpY~ipgg7m_!V0KnKP-%Lj(0v4lb?78X^Ea6zi#3nH0jUrz z-J4dO1?nIqBH&gZE#jklJDLomkESIY?X6}aR!5scFKavw0VDfEWBWA>3y1PTtq1R$ z`(UkvCg>x9%%-2y-e$g(>LV5rmbT_c=~~!&W*BFm*}x+&Wmt9EVm?x8VJ)8@VQ2Ux zFji-mBhTjbCkkCicZ0%{TT)lC=|xr5m9Z(w`05X2flqEQWnjYTSw?Hf+6-X0i_a?x z-G54~j5b_!3Yp`FA30XHJPR>g5I79`Z(8GkUT$g}zphH)?f0C|evsr5McOA=vP%(j zeb?@$*b1&gPP~xhzXgH$4-YHT@>+A70@EPc%(-FK2ir=)BMz026H`;}nMmsE5D}y( zSBbzUoCuTOm>us2v70a{{sTDL&$`OwBfG7btlI>XHJH4QaQa#Ntlm`UA7u#Nd(n zipFMxlO3{zuT%fHYNzgDlop4&e{dD~@nn0Jc&g#`7dKRGTR(^$PJU*{%@|`F1q{+3 z?We#TlazCK3sRtM2TNgfBy+36HQ3SzKh@gi=x|j4%ZnA#%nyL!9dv%pBb_?8HPvS$ zV+b?x(o_0gM>pWh_TN?T6pAM+(BBOUz7|4bixmpL8Ae0AUc-Lzriz+JphGGb z_~w`JTm>}G4Bu$u?tTmYFjyK$;paAoXe?joBVlI4K6#8dM%yw6pR^iIM)0-1{zvg#; zZLKF9(xxhSgE_f@(Nl+Qsx(lkrIY$DNZ|irtd2c@d0D;@yeFL9bXo@M9Tk}sCX7D5 zD+Jwk$g|#|n@7JTprneA)wuh-i6zgao@Os1BtxZ&(T{5(Sza5fRvlDH^1N3d-woID zIKojN0!rw!)~c7xw_lEI!O-VxckoCsxYDezulsDQKnFJExW#kZs5gE2_b-_m`9D|5 zXit0Q5TB&sEz=h7I|R$W6D#T{Otme6&L*DsDQwIaA3AQ+6+cZr_5=EmAdF10 zb?WIv=nY;J*r-oES1|i)83y5oh6Jw_JNGO(tntw=2di%QHu~K87ClsY<;)ZD&xRX3 zmp`EwUv%VGa|0=XEI|n|N*wS7F?lQ?(RU6#J`hTDas74SCr|7Uyu0?7U|n1YjAkXC zq`Y|z@Pxbn~J_c8+)ERuIqDsIp5ER{QJS=wn`P$9kGEk#SMMGl%EYeJ>^ z)I3siNjC?plWRL8JA$B@KwD(Gv&$@|o<|+(WK0wvv%yv|x!wIZr#-*)>atMpQ;y4L zaW+0#OcI!#M8aJGckZfMphQ%LG~fuM+CRHd>G2CgezU&XzBmcXVzI0P-l`A($(|n& zi1IeZB>`FPT2u6xAMlVidY|!Bn}_I-!_W9eu#=c~jBlZ4t58Pa4@2F1=~sk)fD|mt zk8H3T+nyRSh#Jd+GzUuze`@BoJIrkO51^<~!xasufRXUR06$d2wGEhp#JNa1e8KA? zK1IBg#++9$s#hQHc3$ivzQ9)K?r1(0T4d#nvT@u0>a*mC6Qg&LQ*LN&#u&)v;5jS~ z9RZx>2IZ_1s?mAb5r6YP!#QmJRiY(J&71#dk6%DHLM!zD)dw*AU}1pC5{NNz-njNp zOALiCRTs8M^Q3YOg_AEZCjDu?AaE+KqpAyVU@6o^;VSVO;&(3Nd49n-Hj{NTZ`^m& zZx5{si0w=O8idnH#Kv-V%H5QM!c9HSFepl%I`Uu4>HNO{-7&Z1O?Yko{|nVJ*NU@~ zAGRwmjvEa$lf-!~Ul018+I>GX`Mo^Ryd06Vr=+2I#lf+jPu&+>*;vk`4f8HOV%+SK zgaLh;Io2~av@djM;7|6rHsLU*86QA4A#Lb?%kPA3^dJAS@b9M0ox6~av!$q&T_MGP zKPN4Keo;CX04P_p)#NQq@3+aWYD1fVRFW-L?6p6pOA#90I0nmRpc91j2$km=_&w7i zfh>eF+VyS;-VZK8_f7tD7DqpA>bV!B-TmKsp!Dui+M|*8JLuC#`u)dgTtW+^Ep8)+ z=VyfQ3V1=)<0Zi7z*bB z8W*1~=T_7Q@U5rRgu%%+g7M3%=hnszj(3mXTRcmw(ew9qM6lqTu8M_<0GeIf$)94( zmW%|jT?Z_B7` znRP*?WSCL^$>b`moMH6SJ#j*WeqDl@YhIdYd}GBdb%Wz`yxxV8oKgPW+uNmy5YnFj zLkbWxUR36vwDS!5Y4J36)FpEP8=X|T<4iyn7K99D4}cycPfHMQzeOK2NOm#W&S!Xr zi+s7+jK^k7qS7e?XSW{V1MO40(`76mKrcxQc!X}ALm*R((IMj>*w(hO5BCl;Rf7?NOI>~k#0N`%jHhb7w%6y4tmvT~7IP|xK(at+{1j;k~w6E$rMxVk1nX3@N`ItbNsyI_ZK zroWHHa-RDS_2;A2}s61YPyDG4{xclu* z$JY&!yb#r|Qh<#lD}DBY;)##XTw3wX=85H2c_3HeE8X=!K*FM_4SgIV2?1P>hlN2n z0MM1T*y`YyZ~}U5rtJPIm8PfzIyr-{l8wdCByCpZ8M>-EW=VYFxqTNd8rg3<#9huN z@o%$NZeQOd5W_w)jU;qb05kwOSKp;yWJcc_MnksLG5$6q{P0uhmij)x%H^5}f${#t*;SS_A1p7Rt#aKtp$)kn@$*Nn{OGj^*v^et?uR&slK-RpVk+H)Uy4>j|O;bcH&Cg`~`uGSHN{Z8%mTH>*&h8BLw90%Bo8O zKyqYUcHwlOn~<3H(azSA$Z`1RZBu3weUCr|(Gd+iYeS`K&RTxOM~%7UbDEn`iiPNA z$iq<+>DFrolYB~=qt}B~J3ZGl(dfaXR$XtE;r!JuE~ZU~ZQe^Q?3FUJ61|FEvU~!> zFkPyaW~29s8&?iF?b8Ue5?@75@h;S03ioG%WtYeVup&Ic@0se@Z|>Elf*E4~@>mhX zRR9&57+&h<5AsDROcwzHn1EAXXO)c@5jfAg3?x7F0m%X@8aRq>v82#!q|)rdT;o;p z@WZpK2FrN`AaCH|NF~w7nQwdlZ;APfl8YPgE7)YpmikXGj~szgG+4clQ~!3FYM;pu zo*PJjN18~@AsdLmgTRgb>d}$c?aQKCDhxb2HuXT?R*v}U!`6Fi^Yb%HEI9(XtyG@5 zU+X+f2O)koERZBCiy+yl40k_M$VPcQ@lpd;LZ(P9ZHp6hv%JWQKfuWU?@(K2I1mbzpLQb4|11{@ z#AuM(7?{F%ni|ZUF13G9LgN`mz+F`Ng-*hVr)u4|J7qpbtJJ@+TC!cWC{_&8w4n7* zlnU2?Y*<|p>veV{J~yL>oKBK|<>5QL2PQjNPgKGZfJ?k`KK;81Mx9j9XH82$*Eu+8 zW;QdVeA(yMc}K|{}+_}HKQONIgL;EK`Dp(XR=UJcBX-$hUJ z&MP3mjdiNmp*6hj@q*9&snt(eLQ2#SFHD36!T9-V&J=m2Ppb1s76*X|=7dXi&r@QV zd#)PsFxMp-EoWi$R;M@nR=(r!-mkeqzhktS`p`g}>WB+C8gW`Ed&}p@iv`@yonzO@ z5B0If_PSK*G0uHx-Z!MKc7F_Dku6KMw$-7vkSXs_+z(Lr1NctvZ=D2|Lw`qd=$F3D zHX;Ev89f*tNuopq-k%dMTUI$e*gE#d6q9=E+6hJ*Js!Da$uzRX)e!*6*!K?64_-Ka7!G{H)8!WBSNTt6um z@4}s@&c$m`PYk!m%dl2L?E$mzCbWG26vhJ%3a%glpyGg&?6w!87J3tDem#O7DSe)I z4Bag1ih8}NVDpy*ry3(>)w<8eO}3sIspFprKVloVL_DS&x{hsK379TS682IWUrXOZ0SK5@}b4^Va!IDGmmoY!) zGm>D#l$W9zH}Um(xyXHjIMt^BKEOKpW@~I)4dvi)d27K^|qH&-1{_q&?&s z_|8&Z429D#1C`ZEG?CW3s75w-s2TQiVzOsG$BA66Z#V0FiFMJ2J6gSbEG*ORe4_g> z6Z54^Uxabmqr%zb(QF&jEe^0fTwI@PdQKrWLE`=qbm4<*cFP@Kyl0j|QZn7sU8#@d zXCi@@-Jjt4<4L77g{!|LD_)caEfP zNh8{)z~M^cUu!^+s$Vjs*j8HhiD!i$W^b*>VN-eSd!U88s>fmA=zfFS9ph3%Vm9x( zK_GNmZz5%NgLrRHkBJc39*_q3$S8X66Ai zR+IM_T)zWW5(h?mazg1YC`j!=DDAnKYe=TX9m+pY1CSc(R);BVhn9+W)dW3NN@RJK zP%CwPSU!o1JE=(?HBg>lMzOsQom`KLol|RZy?YpJ5q$W>~Z?U z<;Spe+Go3m2m~bedV6y7>+wvQ-3EBp$Y%8%dS2sXjC+DixKg%BjL%DT4j9u}{bCdB zm1nMizuX3dy3v^~juSbQK#1Wgkll}gbeOM_^)thLUcr;*2=-hbXkL?jOI{wm4(`u7 z`n$sJM}3gZ>ot}hGyUN4cd$Ee8nb=etU$r`{?-Y;Vik*Ua=^ildV=OLztflz`p_~^2AW{c1zQI5P6Rv*I@ z6|Beces`k#g5ZT+y9bLOAILFLQjEmIf6pZq!8*ft5uw(cY%mwi_A!&K-;;Y!J+HY& zb<8gyQuD(jFVxg)rmwT^o$*Azd5RgKD8$wHl_EFt8GuH5sWFW#wNd=E!c>vd_>s|R zaMg1cNxm!HCR(*rU8@`r2aqHQ@=5a-(5f0Fo~55y;0CD}OkFy&r!9XnDxP-TpPCAk zZQe8u_Ac9!(h~&}Sl-on;=Ktp{L^zctWO+UwSd)My+# zC2ak|(rO~QL&C)I32YesJzbxCAyYcmX5ji=X*vmYU>|_kR_m2|4u50+1;<20JRprb zour%MOu9+itx>#qX13Bs-G*W&zfHe6a7yys5R0Jm&CGoc?v9pr6PF7TO7xSAU}gkN zsukYw=IDmVFzmHSb0mk+>Zc1+-<152&@PZ^&n$62{uGSf2IH=HBx0x{8W+G#UAl5r zs6R_)MJrDm8vb&UB)4yDh9~BAx zzcI=rGEpN?{whV-J18pii;b{p;QzyP1e8yhgH7Z;;B@pknDW zgH2tLLW1h3oY{vRf=Nb`h6=^vE(IY=i^1sPAV~#DPsO!9Z*63#sa{=@!rXJ>uo$$F z&Jn*Tpr8${)gIyw3`nP~n-3na@d{B{<{#FxE{xCW4GPDmjQCEEKS<|OeGdY78X-gg zbz!IS@7KPyMAf-euT%`@&=o(MNH1WbA-;X)c)JfQknhg1aWd;bnD7GJ%eP`Ep5d%W zv8I-@wgIGkb=amf^^$~SOCun9jTa52yB+=Z?8+H{JZ8UdX>1JY7h=Wsfvy*w47!G% zOycDXu;xvlOD~PkI|@;6#n7%Xn4ZZZC8A`8iTvub&izQD&IT%+SmG1Voa@!?GyHLD zKni2MpbmgnhF?r!R=uw54Hoab_gZOW`h$hOWoygYynaiCd89LN-{+3*zVoO{0Q0|d zZCMq(o9yjeYk0$dqD}xCz8sC*5I#TS`{vQ#p?-V+2YuE#??GA7O~o@G=Wi)d6~6*& zBBXcffV2o$MMb>27PL78t+$0Qf3}%ToMCLFQo1#Xay2141SJ#i%a)gR^#As_UMv5z z3ZA-NC`UYh!qbYKyjk*3V?J%Wdi zVM&31pojGV+EB%S?~P@N5SPG{|1d+QR!{zWjp(Ims0R5p-g)iip4TR8Z1K^HPgg$S znXCK00*^#h3PD&o5?)#tXj$Ewz&J&muJ1NF`z~c0Mf=W#Gvkz2!Ivob7k1?ARZ4zj z^YMsV#fNV~?z%AlM=WMHiqkJX$FFTOgzN8g+<3&P)(;|o~Z&6F3&9?q)XF- z(tu%q4J7b{iJtQBPFoT#P*MDMPm9WeKRMAa<;F4##qyp48Q={6E(PMkb9M1bkEvft z@vbq}Y`n$*wkkZjI3phWi``WaL2Yp$&i*grI369cvZ0$+r=>Pbl+j^Rl&ck|r9+40 z?c`G(PSVwVQQ4n`rZWnn?-xbl4a7i**5fNqllKuWH6oEZ`1@t+;Jc;9@mdRTmMLeJ zsqgb2Bl7uBvmK!eHE3yESr0w@m>I2idc zE-@QyY7F|rx1!8n`XFVQB{p0X!zq(67-L z^Cqp|_<9bTgHU8IfBXu;Fi3KF#~>@rMdd;7&l7@uth0R@a7TCIjbJ5MPO+aXy>{2( z5ZF~*cjO&d6#JG6s{-S$z?o9cpzGqS2i{hV;EtV=>7Ie9Ew}ZAsCD+&t06Y$%Z_!Q zH5CLE{c$(CgKLx*w|(Y$mlPvHVntiWZus# zCi;KTqcU52)pWE}G@mr4Noe2W#qgC8nS3dPMcb#@*l_Odusolr+F^!2ik!@o^0Q1V zM{{Ws^KjQi_5u5kl}yhsf$ZZ1ceo+hB1=`}eI|sWy-YpCD-|xA(a9fXK9;M*6A65u zJ;^TtMC%DPDhjD*2Mtuv{E1*(C=` zYkxD`1k!q)lc^AEg^Bau#2iUUIGvzz_q_p>p`LR^v5fyipM&=mAyC0~8|32ab?>Or zrb9K+QZy%a8hp%SWWE$=noy|;&gAG~`l}i0DPg5?&yjqf+Y2+o@DZ3JF}tw*9^YVj z6C!YBMI^?^4hMHf1RM$IqXwxNQt1X=!#;SQ5y}G51LaPd;&P^|p8%$`(Q6h_PfXyy z+xu*Fb!!;0>9#CByHG?O#51<>VT4t z!6}c&P2oU`6dT0tS`RjXo$>pLr7U219K0ZS(0!WRlk! z&PV7)>dDe4?^WDg&mWuaNUqHw&AcL8t|x$MHOd&n)#nTJXy<34hTmLjBTh#s22%7e zGt!bnW?71`=`O@=?th_ z|5Daj&nx%XQNZ~o)qeO6~5=2!(}WioSU=5>db9R~T))MIR6^-(MH}F^Th- zd`sAa(Q2)Z;i*s;)lI&PJ+2W<4=#;xX$I+bGM9Q2J7>UH7ai<7foJ?MLZlrYQUsgg zm}0F^S8aGqAGkkENPppZh)6@8_FzYft;9{Muq6uTnnSR0yF=${e>8FD)~yUjaXv@W z@=k+1CJfxyl^~?@N})E?CFTZV#W(5~cL~h44UVltjr`z?8pUnsqVUxH%!x6`3>Du5 zLw7UxhQ>G6AN0WR<2h42LDAwom&gT+zm~Hb^p!BAi4zIkZg?j+Gc4OIsE{Ym+zP|C($hAxU9!n3RPB2cy_0NDXcFfnM0C*nxTdHz zcoOn4vS=ap5v_kAaestLosym2>phc`*>+YkZBVQuY0oFD)5J}OuBZRFg1$9(yLuV) z{z?4Ru~i^RZisZA{ZK@Qp?!Z}X+Who)(jeH}5TcCUL;9;eng zkgbzPCZ&&1@_SYt0t_lFC-HTEwes2klMOL9x&VB2tV)Y@^?X*dVZ!_G0f`I}KQ{h> zl@=xkr@&=6y;Yz|QuH9e6FN?Stb)#ge8OY-3eD>>d3qh;hZ+5NIW2OmDOR>zb~w&S zDF@3qph!0Bm06F<`hJ(y%l5Olt+J&0sB9K|w^PZk3zV?nFa4qTzq#Gtl5P3r2ZQ`H z1>KSAFk$Z`}=asAgQm69W@xe zf7{%%E`7Y{d+WkR=?L4SN#VxP9D5bcR#Sx*H-{(XPI`k`vp*^AG|OUKURGY{UGVG- zn>2Hf>e@wnsDR$$r-`YnYs(M79$hzoIM&CG-sfz zG^Z=(;b^ucuqB$XHgM+4WA*canvoGWHLopa`pkMAC-mAHEJa(#wb{*xf2AN}`O)XL z4`evlzm;Hgr!`*c1GIc$2)HdQx}*CIXb#Q|IGk_%;c{vnm6mDJb`VM7SpEdE!6}c#Q9MDjrIprR4I6_vv z;AvXvZkLlihlzg7G_>F(Bu80u;eJ4urF#De=$9&^hIQ8t;4hF$#Jr9bK+Y#``S!#m zJ&oh}zS8mqP^G_d!@SOJI9+Y|Ng9BsmiKT7rhLYuFWlDBzPS&x&?v;r1JP(Gx^j>T z@`(R>)j@)t_b^|}f^fxR%%L2E!}9jW}ncPccuFz<~F1tGx4H_5*!) z`Q)Dn6*R~ccDTD>g&|rym_I3@>7P3~G23SR5iqSW2+Yu5jcCz+4$z(^@0!l^>Ct5x z_p*nYJ?q$2D<>~OP&#b_zQ6b4X4YMaN=g6uar))Oc3kam4n6lnvA&(}^Y5H*ci6X` zn^xdO0)agIz~h+PHoeZdYw;v^#Sadi%J5)I+4yCn9C99@OmZ|qmX}L#Rm3Gjl2-tJ zy6;pp)`4ROOn=mg$aeTL9ljEHkGj4xsS78v;kbw^f_g>N$w$?3ti4>VN8C#SnYpC>Dz9GC2&{0IsA>doh1QVIth<{@0%gvbu8lJae*>7 zU@3Z7E99l{0cVOUa|s!T(L5IzU9_!i;e}0GUiu29!mSD6{vfzOYN{u>y~HBAPM#xT zLmf6^^T?QWS337c3I^0ZA)6v!hvLctyKSjBtM&x4}}^yrXVPI; z*EV&);k15kFBQJwfjMIts8}IW>1Sg(|E}NoBya{7JU|B(4dLcNoU+enJLN-HrV&WAZhqU!BL)>Q4irjf1$m!L0E1mO<+Ri+9q4?I^NjYTCP) zz(PoFNy{AbJv+dhbg0^EI0n*P#Xf&q$eLE7A$st{){{vX;1`vq_Gn8O_#H`^Z+`1T z18?Py0r|gTU_v^>-zg1ED~o}Iahwb>$?8u{*qbGBVJIhOY20N8e>9v@?aq;(M-LDs zpNp;+OwXr56&H6Hgs>C81)1i^LN?3`)C6uO2Ie%Mm!JXHTm{%a$3`zYfYAFYdI}46 zq_g6t>NmNhi^gI0eJ5_} z9$u!u2(Z$LP~EZex!$y&liN_MsBtoYo85E1Hh4 z1uKls%@u)D#wv)nRr=RY{O*^c{y+GdiUVhdDd!HFdQWF|rAQ1)an>gD!~(u(p}p=F zr;N>lTk17ND{+ZM04Gsk5DbOhoA|U)3ei@Mma-tiVrI_jQq`V8$dbHl!FhP*$+78V8GLh?M5)Nj7iEeZQ+Vx9!X; z%O5v5!mn#n4_DhyPKcbTcj?}`yh05Ma*Vy5Nm;g1n05@@vB?_g6LNZ35bn5_=KpW& z$nPfBFs8O&$cdt0js;dPAIkr$Yw>TramkLO#97z0M@Uj4$n$;$YyZM@xrOCD7tW%a z;}YYK@=U3qmx!rTqGnq~{6Yx_pZkU1|2T)scU_V-iMD6Q!7V*9J%@l>%Gt;t7_-Ee z$jY|dH?a502|39YY6H2=%}AjP;{|5+KGaGrq%(D8WglW(cs_@BOG&-qfb-k_P>n(% zIX$Z$k=GR++{kNF-uY*95OPugr(xV`0$*vmAZH-JdV0kgMOYb#imS`9Sd&d``_&ci zs^QIol;4Ozm6Hbf6+fWXGK9&PE-sA?Y!nvoW+x-Z?G513Djr~5lkRyzHc}H65FScf z0qsR+R73g>ruRf}@f6)en0dzqy(HV1XnN_Nh(xK{)`qO;c$=6kanZNHVfWX_v#-N1ewiNL`(@?EZz2&ZwdDr- z6+lQ&6^Bg4>|6Gqm6Yp6rfi5&>_IEH8+vjZv3?43A{z8_c)3H8)8FLMk`NRNt;tC< zQCa08C8-$^Yd8^kYcst`u}xSGse5WV^py1n-hn{aAU z0y7o27-ceZdoZ-9Ub#w;ps+eZ*^}(k3Npi`V#xh>%ygT$I7wl>;Zc?B@B_h-GLa%l zE4?N^EaU;S=8gteHP@K>*|Gx%dC?TFPtr%zOFV*YjHwY=2r1neX zghtO!aGAM`1YngwD}e+vA`R!-uS4Ip=^DxOkyV__te{2zYuxPoGt-MsvPADmfP7*^ zct7_WFZYBdl!7-2+c7exI#e#)W7D$ByJQpnpr~?bc8`F*$veeQ5Uzl-^m4r<&TvBj zU2C+npg+f>h(HsVFJ=tj=;Lc<=AD<(=_T>vH2&?XJeYMd7J2=lPf@=~{o+2)c0q_G zk|vgeV$xGhX`yErxz#48`agh)friP6*g)URBzYS9YVuS)V#DXJF0j|(+P6I0>~bi} z_6zzQk&c&|y@9%HAyrM&NlOk}RZNl0Cp#WF`OUa$zrRuRG{7IlbG%+63CFzcYmhsu zp4!X|3F<@TXrvtK!!v#8b8mh((<4<#Qdx@vOFYi7r6UOU(fYKI$%+W%#fLLv5pf5C z!qOz$%N9KhV3ac;`?nTJ5iYVw<<`I*aAX#Tbe%cV7y(n`)U(fa9^t?D?TqNgN}*yW zK0Sknr`0oR-2wLkdEx?!4z51h!RvaObYO0NtBRSn;F1Oix-4#?Ufh2nu}(3h|EB^d z`HbZ4y8$z!kodvzLNnuz6TDZKB{Gv+!s^#kW-6eI=A(Qy^1vX|!8f29XNb~uMCL28 z>-Tczo&!^5W!?2SR1w&m>%EE=IvlLWi6+7GpvMnik0r>#9fT7_3W1T;I;bP_ zqc$V_SmRD^0Dsu^qOJ(lt1y}|w$<4%x*aL5)5 z(#_*Q!fGtjAof6~(<%_5y@9MDhZWI*yx!-rmh)LSom_Krrw-?I8|92Tw-ZbFgCZVh zfJm8z8#<3tdwRY4;8Ol?3;t9B5P6V<{}-G_O~7*^>d$BO@$0u>AoWN6(3J}qWH(~l zU8p2-?cykq%@``vH{E|DqKj33?(M~9n))1{kNkU%dn)R!IiD8oaQ6Uwwu0zTOEtTw zgV^Tisx|sCnb_v9#w`a^!NQd0_(V*U_uNQW2;~Nh=$LDt9Lu$*s z)8VN8_-?_tWz*Jc{+``S(62kLb=RrG(S~vOQxkc*i6Mn|CmnbroMVPx4kk$sY&!9D zuYViHY!GANO{Ht}`P`CmT4H{h`PK*fF3WbES5iX~sXpJ}^S;qh5!V5~+eF#TY2D4k zcYX!Pk*b@K_qQw8c91R5Z$pEtz&;h)PzZl0LA4~srD(4jiWPLW1iFg+y-R{E!p$0mZ3b7 zTf#eulq}{riipkLJAG6FQv1xifv?}o#}gbQwEiZad>YJx=k^@GUxOEmJv{pronqJ! z_OQwNp*vl@p2NX*Y5rlln)M{l2~bR(Vq4-7I`?8gl#3;%kw>01quzj@k=%#vuxVSO zwcB&86k$I3+j>8utg{g;88A?t&I&klbclqUnC(5OwVj6^tM!cGaOX{L2b^L%nCCgx zKf4I;MA!H452d)K_z*b8pRxEED1`VJbe1V|iuXhcy-&Cy_ySD&M zXh*H4Cx{jK2BUz17HUBr#UF2y9qyAY@q7h}S{ftr}ikGei|rVhJ2^kRws3x&D`FHSD5Xr^<;S z;3N5hz6k$U#M)glDeVda>FaKzGI39@ln|F7Cd_3=lC;Qx1b{KA#Xvjk-q3<{L^43v z0QibD23)sd*N$yp)wk(G_&JVBuW_EL`sGngbtq*cH!LxWGY(k#*}bbITz~DBAcQ1E zMZ?~HM@BV@nSf~1WkyTLQbw?d$TB;Gh0d^y83e*fz` zH%O&>rG%bLZKc`wjBoPh#0)ps2?!(Pc9;BO*wRYvX+dI(hrQBPOi{3(88IbATet59 zeSA05kh3<$J*QmMRMevx!5iJWP_> zfPy;RZhYRod{)+Za{hh!EZ#Jbe^BAvvc}A9Z^&s%a$1oF$vVW06RoFrFvO|8115ap z0VD<{k03?2mH$S;J#vY3-{->&zFM|A{V3cA6fcTo3au`jEN}y3L@Dp_uSCu+nm_wE zIj!B!uuzV%XC<(f+AsD$6QTTTfmEy`mx07bt6+3O$9sU)Aa#JMuO}sKAS==QD!Y4@ahpJ5ie7w1KV)dClyQ+c?qW3*?&T? zmKAMRR405`4Ys5No{6^;Hq_jPFgrDVbgdCSk~Y9JmX=vIH4G)M#C&t#WB-H`Wd@|A z_eFC^hj$A4S^66iG{CCl#gAO56RC5WK2Tw{8dse&fODfozkktLfg-%&5|Jle6^2p|(yFm8pXT$#3qPUgHD=gkGR`9-Dk_7KMbxkWwIgaO&x!1r@jXLnvM`V}39f-910UdR2{#%XM? zu(tk$v-BKO#OG#iX*8!yy!*6i^Dq}6!}l*Np(A#2bb2=6RDu{y&9YzJPRXVUCmS;X z^kewDM^96ozijiM{?PwS06_%;- z&mC?_)Pt&-LH(e!7*9V#VC#G;{X}$_>X!92*>PqSjIGK-7BI-006M2VyOq=rlfFOO zMp|`|UOFS}+IwU`p46(UEoc?(4md-cX`^a;!sikm!PX$VZazj;P3VyMP3n{mtw^o% z=gSToj|bMBS61c75_U_vU(T4wt^UqF2#+LgIvKytAiij8oh5WY76?HdcaojS?ZW#I zK~>nh1V^@U_@ZOa+~cs59T4OaGsJh;u}8gG?BUGwcH{g3f1;Q_9psi3DH%&Xp6FK} zO~~227cJ%geZN+Yg~cuH7a>CcVV;KgX+^e;>-@V9Ay?&&yaoJ3j6Bk^wX#LwAA@JT zOfsXD#zDKLY8JQ2v;je3Ksf0rn>bzCxU$v{~WXF3u2$C1XAd? zUE4tFjv6yjou!-{D1H2T#0MGuQ=DpdPOn~_P5Yimhm^>V=Mhfaw@45#2BOq6i+s)sL-cqx}B4L7gI89)ANt6b4H`z<43g zu@K<*{E3CZGDD}Y9+cyWRNqgx9l>A3akA6F90aUM{QNE{&tx}AQgUyl(#GlCr$Pxd z!?-xNQMb;jNED2eNZq52mUwh*w5jh688Hn6tDr!}zB|GSKjR@?@1p?z#-8GovA;^k^p za&bB0@A1%;&f@0U{6t+%9>2J~$5Lt>16DgCX3_xxueI+-@^lyO*pPmS*gOxc+NJ(C zqc3vstok*Y8p8!xcGCP>ep1hjfla2Ce9Jf$z`D(RarN+ficB25^u!)?GZbPN#HBc@x5MZo732bl4~(K7cHb&2#mTIiJDAqQ@Ksm&daUFg=ZewRn0+<5 z7KaQ&96?3T5HsH?cA`aB{5#Gxv-sEVq#Pa%dJf-tv$=#`S=$A-1%>c@yNOsi z6LXY@QK9vF~e25%(3J z4e12+t2|`o!g1H^ayY7MEdi<59%O4Vc5{=8`Z(SFQ{@apTr#vtBew@wKI^F{{Znku zN{M8jE*3xBksW60>_tyBaXSx-xwZrA=2zITK#+%gGb+V0`wkj@bv_LoMXi5dv; zg#_*)o7~ss&}3yVE=d`cOVZ$IXdTqH9>{1Af1T_%#hHrYh8UYBbX(kL!84dhR~mC3 z!{0u#`#YeO)NY0F|3xsa+*)sP z*!yXWseer;Y?`B%fz2%1B@7W4;WGn*XV(&bb+;7@8m!s z&;hjZPC-qsn-wTbgIz7_B@qD)M$gFo^N#1MaK*R^lJNS_W%Dq+iQAV^M;KPc6G-N-VgsM{>CU{b zHIDpJDSRZ>eAFX~Bf+dr4{EQK35;ht%@9U2E?lhq-kzoAR?{Y|CrwIJOiTAiCF08` zU+xz{uvZOs#)%5a;&G3WN)o%>Y5SbLAl(;f@*B`H+AEa{zgJibbv*f%kL!$t zAzO*?k?K^D>6@St?n7RRC=R5v87pQtGJZN2rBfu#ZdKP`B+jolk^(3w%Pm%e1aMx2 zfPlIVH<1_2phPq8<@riDR(rfztd$6G8+h{A%6|5^r{{f`{F17|7zs!tg!$QZ6)YxQ zkc*bK?!mnbV;hLLOIaZnH)j#O!U_mFKv#D0B6q!FKSoz+gn1pttMgFaM6q|*tiz3V zVG=ZVcxKK!V=pSZa{j^{+R}5e^AhO7yfbU9F>|sf5;E z97u-$yH}E^&y30GM~mvGzZ~$SqwM@O^{G}sE($TFq)08cIC%_BgwRhKi9k_rt}rCj zmIj=OB5bIyw~A=J-fyj5Z}HD-rPdkMmMW5*GOX5LPy@q$4 z0;yu<8-Fy0wk84j3&VTfJt|J5lbny?S_vr5z1ZmtdL5fPPy=_`|4Qi^Y_M#M9;5_j zAN^5tgA}7q_i`uQxkZs&M32ue4SuHYeZ^YHr6bB^U~xkgM`P%0UOu)q1NmiRZJWYR z-lz0^BnanvAyo`XW1-nLMPKDf&QEnW|87iZ-9Hjc#|ca2+AD(b+yVJEiW{X4NtVtG zm}VF^F7UB;e%gokawP2q7Wp$Hdstbc!fZxCCjkhCu0GhRBE^t$ZYsjup!-oZvz}?Z zH_RG22CLthY)JMLJ7E^GF z4ps|K`M#V^)<(;|4&e}aEz9!DIX#<0zncX0Jl~egD(9OQ2wpQD2qNNzQm| z@b1jk(^g4$q2BCfj#3ge=*S?6!x&P-23PC2Kc2JYo~^XVcO5aZraT7XO4nDsI2O7c z4!=zeM}9HFOYQph-gv6IC7Kf^XOnS=BZbjT^4WO3J)GtSPw2aqs7yO!d*@n0S{g^> zJ;n;qBP(^3GA2%GbXSALX6cTXUXImr|KLRLa2M>y->R2@KGHGEb__)a@n&snsdSV| zEW4&0sr5+_ERE@A9~*E!%6KuT3`kTV91y_vUWMxhMjauX6RAt}9UGum+KX)3Rl(Qf zpF*X(8BXiLmM`T;#g$ek{#`T`I@%QXOZDz;N{&2L@Cq>BGWac^)2>TWoXGg3SB5lI zIF*izJ}{>n5p9JRCO=p}uy$Y?7yx3nNg>UlI4>c~KRc6DO7Z7JZI`g~+U#P4bg=?amys-Et3Dvxkn<1cEr*oRf_==W;9@5YN#45YkyOId z&txK&SzBu16E6IDZRmUx%vORN6J{)$@=7iA>*%(TX+j*3JTFORCxeeY%G5={^_jY2 z5w?nN_D(hQ!U8aq-^xOG5^YhD%bUeYKR^LE7*!-ruMmg$dd3tR@O*8BII_dbrG5*V zXq6emD*%<(B9~iqGN$+M(Y@#R=qHPO+Y#CoJ&mRg+Yv_en|w(U3Fv1ozJLCl;o%82 z*`;YE^W%}Nu(zG>P_k(De4kO_uI*uW*@MOe>dRE~-XTpd-kK}$!YhM-+VlP^cvD9zWB{r875(D|(SEuO@F7t4N6cfh&CG3yHZo2ZkPZ3bkM8*Iv zNg-#$p*sxI&`0s+u0eqo8^+nyhLu4BI)PpGYDgkmFelr$ng|!79?_DT&DMMC6G&{L zZfvzN!9!;EqUE^BUB0SIE85J~@NiaQCwi8aVT4OC|!+o+!N1nipZ8C2%(%`EcOwu=Z0sal~#iS^jAJ9Q11b*3srZv*GSW8mF_`0 zrpm*t#)`}>r~_8S*HoU@$=#=N4}zFkI&LF6*tzDmLW)E%^se@Mq@+hJr8_-n%Di#@ z4;Cd;#ib=3!ER-yanY56YXyU+dV7uns!@e+fr9rl1U{=%smTg5NFA43-JY8uxTo||u$f@E`(m~MG$E(kmM_Dt6kU`6(GK{bh)rOUu(cU; zdu}j?aCQCKPXi5`_3&Z`hHJrj$F|Qk76m)w>{zZ{8L>dJPzVv^`MKI05U%Smw}SVV zTDbU;?>Lf$F7SLYI%ad!0v@#tO(p@gQm9Be7q+*KN*YIBO$Ulr@Xo zR2cNVUS{D*JLoUv^q9e;eY;n;cg59Gm@7;U?z$&wS~p7>|L%&XIXZI z*+uT+g8`8~vV%oxn?6+(D2&^V!6an+yQyHuA zqOM+>Sd2c-g$B4lpQuT$Sb-zP_ow0EBL~*%M@~w1V@*CrS4dX0(=XhXq(s4gjhNq> zTJI#T2iZr{2!Y8#OmM3l?~4=aO?G4ILS>U8xA$+IRla;Bww;Z$e*wANrL)gvP-7@o|68HjdOde0>k{FknVX=HrWP~>+(MbWH2t-5rrI%JJySSYn5%xoZ_a18h4}y zafc*z2QO|IK#KVe?&)z@``keORzSE13`7*T&fm|$GXcjJ)VjHWJl5w%c@tjI+s55> zN_xioiL_AiPKAn8gz>CTKzj%?WPOj}L}wzo8D1+w6d}Xeq&g){SBX0b;~wvK0{+!E zhLGXJfoirN~cMum|wFP zth#A_2o-be7Iq}=fVvWqKD`pQ97}A?UoQgY!8IzxD5HvzI~NHKN(Y5WRF2;|41NHK z^gvKxP!XS?-7+vedd8>$uEUjH?1da`Qzjt!PZh_VZ>~cQ%YRb?GCn(*`05eZjQ0jn zYHsk1_e9X07;y5IEBg z?C(0=E*=`rAg%*O%;)sJzQ7yh9XxCs0d|NAvWMDU%f?t3b*BN@+WcY(1#rv2!{w&# zaQ@BJ21;^WS)TyH)Kho&Vphvb&Sy4*%2RE$t~i3-T2%+H_hvijbwnrY5TK<2*W|69 zz}!@yyFtP7{YSWbpPQRX`fR%=_a)I6m1;@IDe4w}_Rml5+?R28+f5jq&z;7T1@Ld2 zzI9I0W1UoHVI$ckGR;9+ddy5)sZ%d_TO3RpzUQciciDw^Abg>wbzIR9p1RDcOCj`v zFj8$hg937qv@zFlNgT@g4VSmRi;sD@?F)>pL3OHV`mT*ij@@!*!wXBIy+DBKcy0N= zj5rW4?*nCx-g&FvBGZ*|X}dW?TU^kAt2&Xq+eENjB(qKh%H&%*lP`-1!+M(vQ>^gh>n z!SeC_KowGrkg?h(mS^`6eLGMxVS}D!k>7)B?|{&~?87T@nB357nT6q|Rv0sxeKfxk z!E;AdvWtv_oxLfYVJ6m?*ts-$k97V_c%L#Vm#_LKu*6{3^cr`$y$Xx!R2;+ZrIE8o z53R&;)(nn&kN#bq^ITl6pOj>5?{zB*l@_zHiR!;`P7)&natQ_hO9>+){aPuNp^7$P zYM&n8?29eUxa|<*urjYjVp7LAw<>+(e-xz_dW+K?XN^z$fh$ z^zK;PyE6qsA$k5v&UruOKC>n_BZ82ZK-RX$v#>PSOEyunOsBJuen2O>hZ#W z@w}bpbf}koX!Gv4SGhp`s}Wp|!UNg`phoiN3`H(F7=HeVFoV-ybAB9n-ZMk(c@Gul z$)v0ovbLGjJZ)TK?!Hrr1PNT9{$Iy{H6k3P(NbbQD;Bn44WNThgotLifU45T6OXU0ieY0xp1> z+BixGX~8~YhID{ddoY)tTc2lEQ@ z)gt#V@GnjTRe!z;s6|bu<|7>Otuo;t`A%%Vd4Bbcrc%K&X#H&XL`9 z2F~RK zlpB#cQ=2q;mt?ed@1vW=JRF=G9Y1~X?&al1pP<4a59g7%JAzpjtqbI|T`?e> z2c{nWE&{2T!HD*xrplvI3CY-}j&h%GxfrMDxx<@GtF(Yrqa!#$M5lG;XO&CheB_KH zqB;@rRDAJ)tGk$+j(Owvjebx4d@3a!iEy!B4vp9VA7e!hb|$<*ig5jJt}suR{lvtY zLBXnC&YHngHfL%kRP)OBg*`bl@lRJ!W9+(xz|W?1ef$c){z6fQpZE?)pJ`r%X_sm% zMrG!nmHR!Z){E5wJI0)J#v+jQN5%7X!9Bn|<@2Bd_75r|hJO=(`ZTnx#r@Oz9Up@5 zJ;z%hML158CINHN`e&`mvKQ0;#8y&ciy&e_0X- zpZ7T|S3tIZuWIoarvov~bGo6C78R9iZLOEqy)`Z_R2*DK*_H?De=NJ=eah%3a!n$P zS1Xo;MhCz1n9Px!&T1wif>)C5r)ify>eE*EH)b0ymxqsqtI9O{kUA5m2|W*33B4yt zb7!)=p&nztR|`P;G_}Y=S+e^X?my)7j6XlaC?#3W$hY{$OPU~Ul(@w^ydf7MYu3Z} z^ld%9q2F)xa$(@TfEZ2tt(b9L1N0+1V1=COtDU;_HmJi3Y3!Yn>GLG_?eXMi#Z^Q| z9TD@X(xLGGeIWiFgwFV?&hu%Ikrp`*CWcxUE=z6DGpj_Dc9JN8v{U0Jbgvx-!|HhE zo}WLwk}gkh)I(lZunr}vvMd-SFXZAUwLgDs}mfb}N@G(x;vOV{e7tTNpSA zJ?=mx%fImSe*@+_-p_J8EW^ySW#hd|RRHDimSrOti3-g+uYPSxQZQ$z^B;Sg)O!{@ zrSL^_M?kJtL(Qm2tlCQeiPRC3Z#GgU96+t6 zBdZ`E6~7$r{h?To^f_-$h{;zYyi-4DH1H4pz-&~5SJ+*LTXo3aZiVl9>YBpES$p&fZS z4l=Qopl5|cgXtQrI0mLU5pLU?nRe@zf(j=*JbGgetIvR>^hY!=7jpQmPtaNAW$iGC5e2(_w}&^(7Aca>Cb(C zRhbG|VmJYz_CLJ86i{q12-l>ozO7SguXW5@84AJwY9-jbw&!sf>6Bsn*3-s46-SU# z8UQCEgNfyEoZ)K(^z!t9x;x#M9IZ@nzlnT)tkV$vmHWf+h*;SmmxM+mT&5wsCeje- zC&TUUzQY`*8=;@%W(LS^!{S|crlxFJJ|jZ-OW#!`l^*o|OzAo9q7~GvYTlt2-~d^+ zA`+I+64dsG0Q3U0s!%^ffPSJd#aO;H8n6aqT?m0Nw8L}HV|H5( z;??EDk zH=ghTlwG5=MU=@8wl25t-o32dhTMJ{@R@iWQE)ITlu&D>j`1zS@0!O8ja9{TAm$-< z({_-_EsWhJ$|7g8``{v=!x;}xJXmFCWVv6QkA~Q45#f~o;aLER8mFRZPvspQ{LU?XpmuIM6xw}&UeA1+%G>WDWr3o?F zZ4(t=W^|D+VrETOr1oC?;bci_G&$KmH#|Zwd^JmDK0xgJME?}Ly`pE7+bs>q4KYK@ z8A7S2ooCvu4VVv)JgH)HB3t5W!Ci4C$Isw*ihRZ zm>Gd%U3`ARmH^$4?LvV23;9&ljlc!#@5WF?*P@X6?fCYc zg8|`u-~cg9qvftDwZS%Pkij)pYl3K%3qWZe*d(Skh@G(R+}xgOOMle~)f_V|9!%PZ zdC@wSiQj)CWx!oP78)SPz!C#sg?27B_@=yaZ@B{r>#9K!T*%Vze!YRTRQldb6%jW^ zZZrb-XEIj|i+(3G`$W7qa)6=$3}Eb1Fk-uzyTnd;H^fYtf8#Dwk{g{%i@x9JdJgIMAZJ;71_m4&A`*JSEta} zpxaVdgl}j`yET9lOJG$^vsL@6DPK?lzjOTt6gRdo3Wx&i#b_79CKAZ?m2NEcAwn@W zu_usQ6b^m}x@{fK2M|k3T|ZEl(Zg_IOrkEe@;82Ue>$DIl5+aq6xZ!P(QTd8h^@bz zib{7B0rWtoZQ0FZjLT^!QR7jY{C*s3-yfwYlH$k{!tQNurnM>s>~v6?9UYrULw>Ng zfX7Fvg#qdwQBI&Wp+bN~{;lE%kis%tySNSPsv6Tm_(H*o9~`JMDXc!)#fT+C-X0vu z^=|XHgh{O0{HhPXG$6rBePoBmG})U46(Hq6$&h+H)hAA>nZ?2l%;*A@luWC$yhmetoMS`V}(GOSIITLRby=_a*&$Md>L3rpornNG; zleO}8+!tUmys+#Q%EjaJLGKjJvW+h=`3rLd6|HA8@Je0WD|<}1;m=#`8o0X~^pSmW zRe!X(J@O7rDsWF<;^;-6ymo!)#t1_nx(Bb$!f5pZu+h*Y6ILNP`@gs$*8Go zZh6hIS^S|f=mwu?z^uj*fbHmK4$KFAe@j;wj4L!ycFp5#bPtfR*z8ds=IM{+ zOO}Cr%>SG zx&dtQjnL(}Vc4sIbYKt4>p7la+S}!A@&1eGr1AFA=nqx<4s4-U(l|b5`=QWeU!MQu zQ*QA9Owy_zy^~JF(H@;aEl|61^CCZ8wF5Y~-JgUc{=bI!z3}=VFn<=SDZeECU2y2S z@w|{rZl0b^yfxgLBO)Vf{w%zvU&vKZfnA7;s&zW(uyyS^tA9x;Hv-W}7$3%~0{j3H ziM(D8R-~JM`h{McFhxW*T7BSAca^nnIQvluQ0^8=82z2V85%@&QeDcosn$LZ$dm!YT!+Z5izK4w!3f*qraiJ`PCre5vH*cMo}lK6Mlo#i zUg)W&p&;H(pQoSf>*@Ok zE2b$vzp@<(M&2l`)7g_p=JI&?(ne3g;hhi%cwnT<+Zj&(3RDXcbl_04m!I$(m&6&@ zewdb2y-4x2-J}*wuw-)*hPTA4c?zP)R8ol)tDQrS ztc>H69ErBwP)+XYBZfGRW+$)nNKqa)p>KQTVtwf3=V|D?QY#woD(GGaGsZORVF~M; z7kMo^!6$lJ7B*~dvAwbA>Zja^cD!54Vp!)(F2+duqmELmDGr|Z;!nF+WyVRz7b5;e$Nq{-4J+m` zXbPink``En7P8neHt8_f=f0seVUu;x#_1HBYyWapLQjoMfpz@<^|yiNG1D`FKoE4o zROl29l+Lw?LXX@1V!Dm=E1`!7+rp&Ebfc(dmoI7FL4JqliH0y2l_cO?84v~EdjDe9 zG|O7=hwCAhJ^&j;4xBdi#HR&|6E!W+LC%~y!s0am7?MSEoh!>F-KDU>E-6K4)L(a` z3n*of`byCS6Nv)*@J|5`L;7~RyzXD>YRsL6aQ^lxj}<1l2>1>UHW7%|m|r|AzuG9W z>Kg*;Gpxd>PX&_kzC5KkUwhoCyndQk{rL-u=rToHF%1)=;KgRzo$W96(%RzZT)5o) zs-cv{3Y_6^M{-w)wm(YVrEx{bkFhWC;0sa&^fop?_md6?^h&$EW2Q}N@Mfm^UiB&Y zjj5klnZ@BulLx#9tvnMn(>LLL4Gr1hznI1rpL9vrUz6?|wg^~lknEE*pXB3G{@A^% z+fQd`%kTU*qWN}$cZ@AzXUWSY{UL+mUS#eb(LvzQ7w6)-QQS4`P8n0_?=-<| z(k^YV$-I}8y_~FSxJdO-g90=`eTbq5Y%ZsloaBBX>*OOSLLQ=~!mK67D?MVAP z*$mFa1MZ2wh(4tefe}icEc!>(a|VCS4x+z0Kt>BWw}7qSVsOi8Pu3Fd(t$Pe%;j9V zH$mU>2W2p{<45T@v;Q|Yyd1P-@Pe9bmS@ll}KVitUxoc>E4(64< z`lpCTu1;&`5)LeUWclny9@tO5K<$NSbXBZXAu0`HF!TI1B}t3=nG+W=p@f!VNH%q; zFj#oaV$Og@AXrQjEL(b^&RmE+6AVIk0|>vstQyBuC~ak`Q5{eq-eO3R7ObgUS%%kn z{6stZ{X#0}Z#K|UcV;rY0oOe4-g!ZAVXR^yASZQsf4Njq74Pf`dWkN~HyxyKY4p2G zO?t-@WN#rX1633yd#Y-F&F0Aj?3j*ux(w4MS>f`b^fPj;Sj}@KIfJF z{?EU&173A9n{(*7l_lpkvFA20O*RXL64W*kMUZ~yYF1M8#l{Ab&^xl|1Z5D(O(<@h z^Fb4@=R?fW6FRzZjw;_&hndnt#YQtuqYSSx%X~?;SL=|#6rcU!RxxvezokUkkl}?^ zE62XkO+2`{1&c}yuM1$44I~i|*3O7a_Zpl(l#igAtFYZSHJ_7Dkaltpf_W>kqGAD@ z;RAWB#21Ygo0$uZXU+b*3ch)~I#yqmRja~erdH7}xn5noI{!8LTD>&t&Y{DUx2nlCw@jszG)1)vrUp8qLkBrvMui9 z^O2J9U~(9~9r}Yim5sqqv)wbOh1Kt=j&}OaBE7%VNLv_5dB=p%V1n!!*@WC) zB=UxpI-Q@OgNKIMSPkEJ4L@~uV$;al-5tsLgN|xIeFXc)<17<76s)c-3A69qbp=cg z@{qH~?4$_o74`gIKor~@xbXZE_lcv#xk8jm%`cko8DH^`dtG1-IVyg{6b zMzxK*(H``^cUx(pIIlZAYbG;dlnKOyTxW7<8+0z1tiPN82Gp zc|&@V`IgW=XyyaQmNH=shrgC1onR48hum0XMAEdvKSxaM^w>>P1H^(o@53v6Vjm~< zcqj2u`Eu9sT8y)4=6fE`F_O?&2^NC%-go8(3~_SSsib@Jz)Knj-K>;(0M(Hx3|Dka$L)jm-^)Ud(`p??YWU2n|?Ni$BHVc<^ zy0%y4kk;9r$0|t}YnyNp{SQ5axkx_MVC_Rj$!%fHmra!;dHEFVKA-q_>P8CUS>}JX z7&n&SLLrUuorJ#OE?3XnkAVASF;^TjrfzMc0z0g7rzaK`QoVa}?JI&*2Yk=MZD7!^ zeICH`bX$A_dZ3B@M@P@IHN$7^9Fc|6VJOZqpLd!j9%B;lyu}ZHfM*C>ajwfvgfcR^ zt^SF71BRl}M>qRha10|ukWrDiH+!2}@>FIjor$;aIz#QnvyW@{sJh?mm06VdJKr~R ze~_)vlPW1VToKI7wpeoOLI+dqNy1F)1~*zOB(5$AZLQNE#u|x~1Wdg!vQ-a(=x=gk z;tH;>uZRow?&mpVbpSr*+j-Ib<7JGcr(GDCAp->7KkY6nV#{S!OfSF?A8q<}7QU@!8v^Wyit`&84js za~H5^KTOFlSdR02VS&qMVKV^|MeD_Ga0joj#(KOor#l*WQeMO2E(#NUP3;`3Ip{^9#}uQF}_Y!H2=c zsJy*5uOHBXC7op=%Dd=0b`}E5R7DEi5=-tS~bJo9jw29&W zX2>r2G@W-~u13>=LcTI?LO*5J+t!4C*O}2n|~Li)PxF zzlHZ669G7(xKrU}njHA|%X(*%*w95n`$OTG1#qmoXHXVr;Nsg{8&p1o6Ct~Li1LuT z%IT=9-|I6==b?GSVuk2X(KmYXd%;lC8T}K$FrM|fi5ko1q$}JPu1|pFwLG(xbn@23 z;fdIp1A;q=AA$g2+nmip3G@~k=$mZ=pKOSgBC0JYpD?b4xma-jeF-0V7?|=HkW1WX z{W^d%qjx?I&))6Zg%HtBrKEx&qA8W z8mYM`v*J%*IxD8OO$9-FF8I?bI4~jT_7xz(`iEW^XJbdSG>uvxe+g2}^lWZ$`pu9>l=qYE z)HJI6kv_C~y8QC3ICjk284?m7@PMg{UDs5DuI58z_C}_jYXOmu+e-?%UPkomX_!IE zNaeue2>9_{P;I9t1b|@39<@EzfuGCUS62pvd1#)Pz5f$spO&=_noq=h=OO_}!B>8` z?dJf}S;Iz_d>cBbog)7a`^?6nN965xBw%IuFrj@iO=578=qOE?7x#4MzhvnpS~}k~ zm08UDMj2r(V7EApcXFPr%dGV=h^L2^@H3n0HH^1Kp~RQbQ*H#nL#y*x`)RkRK1fUA zE4kEL7F=F%#1hmd0TMSAG=#1d8>j1sX@}SLIB>`z&?R>C22zFcNXE-dR2@L5Bw91t z@t^ChJ1D_r2NMvb!Kjv7MR=)(drJ0D%S=F3ja2Nenkup}0C{IL-ln~2z*U|kTG1^< zJtUu8mAUyyunT0Zn*89Xxq?_a~r|oGgi{<^QvJ|50>-}1?NXt;((d8Y(=>L8$>V* z-whb#&^)ie$YGeE_DKL{2xDbOB06X}rc1Fp5gOs3n@`IP=3AlA2l35*X>H**YW=oRpC=}*17u%q z<3b#i|Dt`sd~jgaqy@%qpx+1E>A+KJ{UCe=fCV_=hgntwZ{@@`?i=Y}pG@%n=@myr z4xaNgv0k3I!wp%P5HUS!maP4Ft)fb5AdbL)?97@jetRryyuu;%cGb4g`aMnj6a&zanucuRESFmc!6EK*mU?zhR#mmhW%Y z1)G2&KMQ4?W)qU;DI+Tq)>={_zK;u^ z2TGK+Fa(x>fariY68?h;;zc^1Gr;G?yge!v^Bq@?U__2Yp+a%FFfRLzu3YX{yMRtt zS+Mqpqqb9(cg9}19CYjaO+v@EP6^0(Ce;Rzo#L$Iv(-qNGdEZI$59L(#LNobGi{ra z(R-*E6AZwl_0?wh|BwyHNJRFDwt=tiZ;^{P3D8G2p9j|6QckTlqw^;U4{P6(4YYvf zt`2qWY03<{E|p>8T%_GWP~fc0i^b9iP;eLM)y?Fu>A$#r`0;?VgP+B+^a*wXIv6Wu z^j~CyJG_v(zNh@vAq=JI-#^Tr4;ZTN9z~WlE`C{=KbT^G4z|8^8dUd+oE2Yd9{0#1 zcE0PiT#0=X7YL|(Qo$jySQrGbdT8xA^ z1B{&4Bx=1K0u~sA24U_XPlt;Eht1Dz8aMl(;|*GzYodV`CF3ZzZdNSQ5}Ug>4N&$4 z_+2OfpYJzf+>AzP9QEqjRV(#tkaE+d(UiYI;r9>tt+_HTmZu}1IJ^~oiR#_tZ1m8| zHOS{a=EshTIS%Cr#yq)9vISpPjz3l78gXvnWso$#Jqhvl>eV6LvV8Fy)!!}OBAp*x zj0fqFw20Ryf~}M{QemfS3xe! zj@hTE#&%n;Xd2>|4un*ne??w4)|#rA>kW5b&MLkvmJQ;9XGZ|ajAsQ0>dS=+J%#Op zb|Ct&4PEeFI&BQ<&&pzXR}r*mc9u7*xd3Br^~?#dT!j59@&HOrWJ=A|e7t1Md{3ls z(${UeyxlggK2m+*-%e1P`PKJ>0Qf>uU7j)z?7MfDg_sipjxw=waai;zvEowBc9RomGwFkW{s&S8SO!bq1rDneZw1ndM>Ee$N(j_8{x zrmf~`w9BRwJM{b&PFt@nARSVE^~bXk|Jf2!C@NEu3rQf#6+8&n@_^Cp){))d7_P&8 zGucDL>?6)^_C9x{0a;e(>P2R9c>F?lJL9gA%+cJcZxczgbeuj0%hMRPjBai|cM!AR7y74$ z#gSQI9P+52qsTt{M^!Yf@M!Fn)^{Js9U57)SN?%MVk?pzzBiL^$XMMg*j3H~Mg>1# zE@(O@IP11>4U?(uuHNt#nnS|5Ch!dQS<+i)CuqKN*q4?^cB<}=BBdk!0j#TsUzUwC zam|1sKde;FPM{I7Cip2i_oc(KEWiM`vFCVp?22%Ovk{-fG-FYrIui?fYtk|VnAzX9 z`RFZ;D=>J3)_jzTJKr-9wI(*Isofz4_}Ug;w|~c!UEwsYR$Khb{lh%eL;;vAsAmK< zl1m*4!(C!`PuX)tNG^UL&OHW%$0z9s?H~HFM2y%*yAGo<&5O3|;9-EZ~p$_!mn7RJ^lz08=63{^pCqO(_0PZrA_n>a5!5^`=OC&%H2p#~OXJ20Ny0O&Wp)15YP^ zn(Q{lEr~Ijjc~>EXU*p)KLs&GoUUGDi*AE2>5(qKiOpyYiDa71uL|43e@0JQpI>;! zJd_m2+OV&Q)^H|@bUPe>o`NNjy$B-$Vt-#V#CCbFElsf|pp3fVcnu*1Se4<)Sl%Wm zf9V7CIZ#=i9RRKFH?fX_cbf@tcvGF722i#SZwc9gE9lNj(Ow8!OfB3jxMf=IWP9_7 zL>>%1#t!0Attj6Xpx$v`g3TJ^>z_5FIs;z&PwSy=pq9d{FI9SD3f^TnHns{*rbkp7 zVg5X!=6fmob%ROw8jmUdW9PdZ`X6V&SW{rU^C(FeWs_|%SBKyc0$O^gHFB**0E?wqpq*s@Yl_I228~my|-;wp$0@o8G%L9f8r*d^tFk$+Z zq+xpP4e3F5TENEiH>;7yO)WZ?H1@o+-GkTSLbpo75(&yl94+*#gI^d`(ANJsdHGUrg{H14&}B}h*CQv`Ay zQC`8>5OTiChzQaDuvr{TYRgwpbaD9-GghcMwvCP`nHnJr$u2~n8Om2KESBCDBYFeu z>Fob5-T$nd&&_s{;$&O8OAc8lBct*FqYXg zdO9~uuAOgbORKy~DPMioeV92+bS#xFxkr0x-9Pf;0%^2OU!}GH;FX$NuUH{z>0-&a z_&44U`Y$fhW=rG#nt}REC^h9~w!rrLqdYh%d;J!@3i{Y$x%S`0=4`m6O$4_xNc?D- zOIMj6I`h#xo^yO~HYl|mFpo%4&*7{ij9yYNI<=CCE!gg4Or1pG~|pS&DM zfGEK3@UqXM%-Se$M%yikf9vv3z;2)+KJEqq+RR;O9;zdWIW>_(RnN--)b^d9M5hPd zTH(1%F{Bi*Oo(+Bw}0Ug#z?6W2zZfwBy{5ogq{35WO+gpe+AicR^ z^E(l9Y8}$^td`%s8GFy3-b_9Ku}^i_o|fvE%0qFkgx0)d_~(s*MUP17Z>L2}x5{Uu zxsA7=oDnZWl&)7c(04nYKCbb?=vA^Gjg)RoGpPeFg2f*#?fSm|S!EC935ux8}J9;QdJ_L zku4uk%`cr#GI>)ayaX$>l3=z<3$pi=yGWi6*6b@z9)N%U))hn!k;#iUt z;1#*Yo-9kW-0MV_t^F$`NiL;tZh!hKD6kQePw>L9j0AA13IS!4EDOwmW^I05E5!EX zSx!8+rEkhXm!fvL*%&axhqsx0Q)9q!x@)Y@Y0od_J5DJW2qT8bn>p>VDrzb8aS)ucA#sT^bImO0!X9OK_+8!NlM86}qX|hxk zO`yGlC~m^oR%Q=#^ciJ}Pc9Sj0;V!L`)O^?cr!>LTnde95gqbfV3}g9L%4QM18Y{c zW>rS#P)ggaXGH^4BkCYhzEZDE8bSoyPLC4;KysFGfu zbi^+)U`1-!{qH8?Ixo^Cqw~oKDn8N`k2XV>wvBzC)6fDB;dw;cWIWU8Hec3D&F1sJ z&uA^64t-zP5?)UyqJfqZdZ5l-5Mq8|(Ky*N+lw$D+rQZqbfviG;TWqEJjzKPZMn=v z)rvS$D-y`^2h3k6h^buOhRtt|@b5sZ1jptWu)cWP<*EXrJmv`f$jWS4K*L$fE4N9^ zVU=^s@)+UXWR!;IwNM_Ym>b(!brbYJP8ASiXVUY7GIjyhKNjVjM8_8^!4NcjanQ5Zeeig6t`5#*aC`#3gU7%dhw*WZIVcE!#n9DhtzX{doi5eS z-T+5bqqX9WplQ?h>u=+X>eil~U*Rtd!2dsLK2NR=G5;$!qoWY)%-iy{7Cr9l58iuZ z0riWgWV*R5dXy{5Hor1CKDPfj0yEVn^fLewm4w~O?}PAZGLtZNQlVtq20Oa|oANp8`}*^DROu(tfzmw(r(Y!-U`eZitf|d)^Vay|5uu z3)~Eb8K`|4XIICTN0bxu@eR;JO|wdW8K3PC zfvnq0YSjX>-wfq~Pe2%*9HsNj_>UGcKDiV3?h$8TKJpz@7uY7sLC?8fJv&;*v4k*x zqXI9!`ZeZ2pd7RJbhYI$r3r=80s}CtN<`hovuJ5dNbF&+xdKf9*y>24kaClE{{}rr z;q!OvW*A*@Lj*z5m^EM1TBXr_=s7`u;F^ zam*W)v%)6A>+;$vLfAs>6#ZHi=kCq^c+KDk(zVnBO1C0+-&v93)yd~2vT8}@@M%LNGw?S9381FhAB`ac&CUN7CbXvk@L0 z1gt*-ME9__jz#iSWftUpw#=0Un%fy^^)u|cjjS_?qEy5^Ah&src2Vq)KGwazam|ZP zXR2ABUhkR4b$UAqc@L@KB& zo__Bx6HtwNPFX2;+<71%Hv(WMr)L`t_l8PD?VO-_C1YZ@Gl)?M5(DESj?Bn z{gostUCs1*?uVV>OfcY=(M9Wu6?oPro@Cq%PjZamQhi)0@^1YbPpVOq~)C@=d z66O`C1Zy|m?4qRMElSpymE!KctXhJh|fu@fBbV29w~IE5@RAAtq}_P87to_d+_Jij8521=k#~JO#I_& zFK)DQu0iy7(i=BR6*iR9Ltb_!Bpz(juD=R=U*~g%U8(gmNZ052)of$4Z{{xc)wZCv zr_wlX2MVz-a4RyHy}Z~A0KFDQA0_Cj^x-)V5UD8g<2zE54JgvwpS53ws)uxPkCF3g z%62^91MGF&PwB5pBVCOAj2DQB+17Z^tUu@g_zz>Jk>(#$IQL)s2wHBNc7pG6)55UgcZRZFL#vL>;QNHREL0xpj2!E_rDa3RqXoK4P9AtqJ{NOQkcIr` z#d8Cc3%@w($KIH?rDQtMEIN=z%*)Dqsk+IA%zfR}V21rG(FFdYXQY$Jf}ra7JwxKQ z<_7_JTU8ZDKQ%U1{WV?=y;~H$QN4!YEq+}~F@3H6l_bpE*zfd8mqvVgLaHcF*niIg zL07+i%%;X0TlPCagwY>Qwv+C(g$MsO`t3Qdau&{i4kjKkccp@{kfy7w@_y)3Nl)65 zOV2z&AASR_&DJ>xAVj#{>sPF_>N>NL@FKqUUqkAq^h${zB!+a0DL?w{wM_-N1`#2+ zbDr#a^_Tk1H@#2sih>kcV*(}igPLR8zEZ1A+I_9N24j;iR*U!VjMuAO!GUCA^Ukt75Y;*%5U>r{sE;)!{eeq}r9>C}X?Yd67269@*S$bfp0{!4fU-bF{Lcv0#6SWCS) zea3YSmh%j*0*Vv2d;>$OK%Tb{xWtB!>~Gc8maO@i5e7~{miJD$=-Ga;ZL%1h=$U17 z&e0|NLY;nZ)n*w=qZf`GEJ9!folpF=vumlgdv2EX-{kXy@bzN;A3$em8N>u0r@i5T z+ytXeCXF9v_P3Bdn-BZ0(#K%S-G5Q-AE79;8J`HcpEnZvFC7gm_QPKK4Nnd!(4%3O z_n~>hB&AfPTM~a z-Wzh3EiqP7QdbjF)`ttk@4iS>pHWuph`>6ChjZ+*I`DBq#( zZP|)tJ>9NrY&loNyOXE-Nw85T__A)qd6Xq^wItNJ#jqi z{;g-Qe)5Oq{#_yj`)`)}cHW%dIFE?Wq0AG~ed$@ESrIn;9oUQ1A8LugD8#)F>EUxT zlb>p0(Klj#xhA!NE*fwJJI3MfJXuWQJ6y4`aXMx`e1&^`O5@)0%b;HX)~9}gs;cfB zoG)r+&MI?@@5+j(Xy+$K3d$JFi@&ghpfR9Kvud6Nix=k1w^bOR%<|=ggMUbCd5iI% zm2mnwj24?*TC&$;7n5r*^?!{N5sY~%D&HCJ!dUT0;W*tU54xLm4RN!5r7ZllKjsej zj8numh+f7$CnYrpzxF60F9spFnQz3FiammruJ*6q-@9AByGzOF$=T72R}}Su`=?al zQBMYfti0szF@ev_Hex?EX@|O8w|J>2FwEOwxzsHfl$lKW?OPqFVv4_Hj|I`*JgPz8 zXhe$wsYMR8OP(qI1-U|D5o6Gk$HEB&Il1U^JpGY}onR$Sy9N5aho4HtqzTmcX^MUb zj+$-P>vDQY_yThD2SV}fA9dW)X;)I(g!leyzrFSEHT@9*7_|3wvGw|YW1)Jn-6LTU z@*H!(`uLs;CuJfey;ojT@^f9ZJRNMLw;j zQrTe#YJIduPFXD0$6M*LXU!6RQ*`Yk)65&fpfdh1A0>}JSWZmWXE`cr9MAtJ%)j)| zinW!fA3yA?iH@@AIi#hPPU__HO3OlfRDd*Lbpi1wF~*dD9QqfcHCg(iG)meeYo_=V%XUqLNlPZ2fx zjmB)k#&>GO--8w`K3U20b_XvCHimEAl_3{uPTR#6DZ`M>AU-7Y*gp;)e}`fq7m8G& zdmoWEcm4eb{R$#6d9;gGvceJA_;n{RFUfkQ`lWY z5LDC9sB3zaLV*3}kRE!jSLmZyi2=T+itum|ul`fYsfcTCy*UbAHSn5WaB1ATtVSCl zGK9HiXiR}We3$5H3b3Q&803_)qI2+~5yLH) zTYMbpM&I&%eV>`UK)H23<9OjRyT@u)3ZUyyZ2hzPsM2H97z}5UY(YQ?;N6quwzgn| z!%AHTb)t9>Jhxc(?%4^xK=b@UCe1lPy>SAW zK`sIJ-(bouLu^%5=A%KrJECIxUqhU(n>jApJdHGhYkb&8&yVv^0I|b-m{OyU=i*Qz zfbY+6GcBcg=o}}LbsE!unh`L9x&M)9IkI5@8gO7~K$)4sbly4D?1oW2u+CL#1Oaop zej^v5Y3AO_+YmR1r}%eYxgLn$TV*`vHZ-CsKMPyqZa4Ema0mOj0)i4RnjK?dB70}P zIci8FhbXWhGH+}Gfw9}xyGzKBOIRzFSrEBXQ@Xzv@H!;dBj+MF?9k$iwQj) znhP?m7gFRKXmnJ8}QvE`Q0dm$j-zCd}n?wa0=C)E}TQ?jq9uUG)J!H;zPI7uT zn1o+#qDfFKJ`kuo<&AX}%@N)Ef-GdE;%N*sek?_?*v*7m|7JzRg-}dEYr1D5I0H_Z z68|yFJ{%R0ZewXjbkc5V%^#e?V?Y?6Y<7{$2UiWnv3R=YF;ClkfPk z?MAXUsvy_MyLkY3xx2O?>v9=fwsoCfO%meJun z#>pk{l89zKv?fWvApC>C^=6ZbL6}_ z=eI@J`CX1BIZ_9VstFn8Pv5snr%{;TB5p71ZhPcBw(gSeFdD#h@^i`)Gqd6V$!}#;OPC+Ctx&N?ME<4X*~as`uxyn zM9xq-6|*pbj?u=l{9>xnu;?1jHqOE@qFh!Xe4`$eWrnNaQM@{I)E22P;&mRse)?7; zOw*0b6H>w{>6yTdAjUoTest=0VU_FIdFy%ZZihX0Nt^@2eP|>v$u4e^R`{i^q!vXA zm4w)ZO8B9{5YuKo-u5lKQhsJ0jGS0a=VMLX`QR6%AmF>w%Ty$pPdXM{uN#2cc;ncJ zC&vrw71AV0JCL$sNcW7nn-R_P;ldC|ciUraNc2eE$~uI}-0Ui^y)K z#!e2kJ}!rzQsF5arFze*cfdCC{-i6mt}6CJ?#y(xz6Z-pn*buP!K;l{vTG)`56y|~ z8y4!ysusJ|RF+ehW5(Dk_+vbNntJ=OKbwU5BZy+|pg7|wg|l{m(N2{7h9@!X(R~L= ze*?kn=9YPwnB_#En{M%mezg=?dn zP&5a;8ZCzU-o#o)Lx#R_p`!POBeT73<0{xS-izE*6jK*AJC$RsAK;=#h5zmwveb=_ zg7Y7cCbH1b+AHyu(BA(fG?%e202Ne;mWc!akqXl~-7G8NBV$;ma3)O4u*>qzFdisBrNepy9=M2cKFC_6+ zldlEF-cly4wSz*(Le|+wd+(F0jF_sg*a%GVYMh}3i^~z{4jk>KgV<9+B{|G+4|kI3 zaQ-qZWH}TJ$#Uxkpt%vL#L1?n+Hh~hxIfuu`k+Gg@s`)g4$lC&3Q3#Ap{89bcVBV) zixXroPYGg$TR>S-LSLXF(7V_}h!6i$GBpH?sSsNk3^7mjFte!yeLVff4dgXb%~@8* zyBFnr!V`#iOiSL*`{=4Od_>nL@?*qMq^4r|FBJ&FE|_pZH}pIz{_sie5|)oMV038W z0w7O1Cy94H?$j4#X~_`SsZFkDfe4=5ZaX9v+dWx2RZy})YTTPH`z*GbG1a@tqE+b6 zyU&Rtw)qFHNub`TZms6KPxHb{IO?L_He0g?g`+7QO;-;!N{>pgt1ALuxrm1|csX9C z#xA&%56OAP9EL&<$<-EOyQUbQRTt1OFIElA<~Izrlz3E*%y~J?$sY}YZO6~|sg01MCsu2<#(O?b5KuhzZ+T>*ngy&9#C7>9Ef+Pacpe z7#i9ei*v?^NTl-NwrskQ7y^#Wof5yB#0uUzP9+BJxEtTQe@rtcz7wCi$89%po>Nr@ z>)F9bd7^AR2CWOUJt0$A?YZJFH38vzqFVcCro?0qxoRB2cUb%LQysY1lN`M~6DOs& zI`I;|DBlbWIz7Wn9MB-#VKJ*7#}KEiJL*qM8tJ^Qy2(FSgu_gp#q78BI){r)E+$7O zXON6|MYE^!L&T-!x<1#_GPBdHses-LeF<@stS&_o=Z2PAz+4q3H9*a4v!!qc_7fB+ zaKT$$Bpr%Jyy)QX(kzPg{7=37X$eP&4G`TDA|^9xwBQaDGx{~1%ZtRm* zD<)?7=AfJD83DYcdI1NxdQV7-cKU-1aOOstgOl^#!(V9M7c%zddB{21Cy@u)n6S>s zTh+mRWXne8#gG0AOx{yIIZOG`T za8zK%815exp5B|X_(-j}M?9s|j=_dPMx&AOC+6pC)k3X4ee04$E0(y9^zV8_N_()= z4tD?l=*tF|wvF|6;U8qY9=AID0MRVYg4gxD-bg>L#K;x63+Chz z)Tezmz@y@s#IUerIWPUnjw-PHSAlRjU6Jg+iSswqHa-E}fyH)QiF$#(?nVz$n$E@r z7NZa;g*krMX9J%v#!I{VsP!67f6GiAgAqMuOAvo{Gr}1Wz$Vsg=KmWOFrHzc`=ug< z(2`So`Hm_nj1JiU?Ine0p5YL)%Z>ar%fMm$i$g5(3~Qb?CV~;m5}{n&w<fU7TOn&AvGVJ3M{9SqiwxZ&#9JVD7XA)TNCS3>k!1BgBi2)n zq}^Brl8Gi_^?4tVCYdzI^`*i{E{8qHf?i*Z5_K!iI&2nsf!{_6} zkGP?DgJ*S2>O5r9Haax|SZ=@0QY5Udz}lzy4iPh+nHysT{>G_~V`xivRHClO{L`$k z1LO{?_kZoCO$kZa^+@S-gD?N`H;tFQ*U)_XuX>L=3m5F5rPB0NY5wb+zAxL0+PxU zj{8o}H+OUKJ$hv?mr8ClIYOwnxWm3A@hsZR#OHs-$9c>ZfH~4JsH8x~?B|T$Z30$z z=&C`Pn^F9G-yP0NyZby8W5w?Dfv<>9vhcD#MW1icB;xh?pAd_Z1&gSoAuzwN<*2)W zd>v&j_cVET#I?{LL|x66l)CjQxBV1v=c9*6Mn|HsJz|R5^>xQXQEdzY7^wFf2NDj_ zKFkC_B~%w;OveH=dg6kE&8R4mJitmwp1KyQk;s_l6?c^eMxwY|R~$s1Ov?fE(jbfY zMjhfs*@Nu;pTKJH6KQ@`lTHt5rXS1iOkp2haqWKG{2PI8Rhl*lygp=Drse=Cb~wl9 zs|7JSJN_;54a+g_S~1=}rPP*KqdZZN_)GEOsY5h>OchZ-DgTl=TAh!^+l*QTGwv)p z6!ekV;4HHeAMt7?hzb(F=8DIus$^)zxU6@Tz-Y-HcQ)qh)m4v5+xr`DT?o|CB|eZJ z=*D1TnPvlP{JuOt2J6qE{n@;3U)I<|eW6!FaJ_|s`b?*OPQUDUTTg}8h##k85YF9Y z1xU#p3Dw>1Jgp8~<3?ZC8Nx2Pnd>;g8%f&o*HpYn0-9;j`*|RAGf&gPN__Q}eRwnW z9ISn{8^!cfOl_rgH|h>fum_oCe~}Sy)%unlJpCaH2l2T@5M~;qVcqm2G#1tzmrMOW zFo+E<+mz8l9D3%w&f+lFN!Vc7{yOM+Ne+E4|CEO^L8D8$6Z(jv4;~1?zSx;}-yOoU z!#Dy&oP{Uwm22$q<&G_8pYL0NocW8xN=XU;lM`%OVy?@~bNii5@H9>?b(RXJ{FKNv zBQS^-6XvLbI-gMU^P8{Wrz50eW}C`Qf)K5^zC+r&&tvVGITCaHfJoSbyvB_?R%2?i z{wUJ`)TjV^CkM`j_P@#XY| z;JRFjo}PaGJ`s{@!hyCcr#{l(-7tG|a-%Px-!5rCvVIS2g@W$G2}$nJ>E4Bc%Ko_B zn;Yw6cX@|59nb>+9qNI;oEs-&auEdm8c+_hdgB=G6I&rT4Qg1?Te6?3G_K7l4t^th{ULu>PWFfz3L^R(I|m5QP8S~>_H`70f{eCxt@1vHf=ag5r#Rk0 z5O8-4Q0#d^K{Q7ZQC5g+2prZZ`naq*^;YK`Du`c59bR)t2oP|olNt)PWiJ%I>GZWY z7*8br-rxR*2Rs*Fuc#8Y%TXpW5mz)3F?;TtoZwEdyFTz<*{n0E=3u?oJX1zDV-xeH7WKOcFjuZRBE?Cm3Tyb^RV7 zvBxQ%6!3YkQ#(6~1+M%TvQZu4OWm_8F5c{aGSNR5H*0*eI+{$H z&CXn)kJX7Y06&&TrOET;3EKBEn{n;zZUG1;fi0oJ$ zE2(SMuD&RnMk>@nIQR){`hoKIBp3h`b|urU`Dk<-eA5_UaS+!uoiWU%yZX8pI<{{m zo8a&r@T#0)_rluyy3IX4(YV}9esm}FkB)E+H2>G3f6*%u6E@zvIEjX9&J+~Wn;yER zf^Q4O1n$$S!D8OOVR~IjL2z~_;C0XV`8k)S5e3+guIA8%o|$KuWF)Fu7)QAuvhnek z5^c!3|NX+$vLK!t*U9iZ{U3Vk!E09 zyvkOwuW34}rrB9hV?++)n1|{rfL^fu0!i%jhJMA`Oh~l)K4n_h-J+u?VOf1-(d`P7 zt@?3f!QUP$Mu(JZC)YB!Ne@AO8_v(hu)XGc2d0uJeQ*$NANqts3<*~T0!&tI`k z1v697htViVTy(D}td{UgUY_4b6xh01<hBHiB4-!38?QqxL|dY{(m%^;Z_{AszYSI<3i>&1W= z>ndb@Y7AKB(PE>yI4jeX&VWzFcOaS;#dn2<14HHf?Pvo0NusxDA)fQrC69e%=T4NS|R8E-^+huy=->%|Y@tvqky$?`E zW3ERy`{7)(jnOr`lj`U!U4^!(gFe9wYjz*sw9CF7bEg>Lfln#{UZojPyk0+zl~N&TNEmo|2B~*>@P&O`$n0c>Z0)C-fT{ z41xy~y(kFS;$UkOW$BH@ME+0Qd9%HwQ8?qjsXWiV$n_V?7Z_m=TsKLsU#guCMp|ve zcNn1e+6MbyJjn;~2VUNk5L*NMUoV3z8nt@IlGLm?{md5fnSy zq$j@q!(mk1R1hOMw3q!Ug3EUV2|`}}^@dWnj&{_UeE0+Dh6FN@7q(F~Jwn%JL6}?W zOZih6(?8q=P4eCx<=^9;w0(eQLZXSz5%m-EwFXq5pnq8*Ebkk99RMg?ssCL&C$zU+d?y=Fo(fU=qo%6ig91ac7>9MFx=Tt(%M1rE+|3=@=y z3VaFV%3z(`Xw){PpmU^1qw(7Y_n?UKsWTwYC%LIvU_AWdh|7F^jN*9RE$<+ZUpqek z4&pCM&vg!;q$zIvW=3W@o*QnY($=>qRAlbhR%{`@fY$jb?hWaA@yAd}4TsILBOu*= zi<{kmNB=7IO8bXablDNuF{H$>H3ds3L+y|X*hg1n4{lqQ8T{wQ_V7{ z@{?6U60Q*!L{9y!B3cm_j3SI7Od`)}k<@ND!SLr*zB^&?NtUQBl@Nze(oqG& zzQy)YX>_1<`wmJ_qc|<5FuyRa=u5$yS956P7R7vE$r{DP$&wqBC@iGpKR1i4fKLidG|+i z2v)hT#(K(`724uxs{du1tR#h!0h7!no%0o&SB2Sh1l0= z^ZNfk85Wt+!Y{ki!#|78qyF2i1pDmhy_0v|!<~H`hO@Z!XM)W+MI6Hnm${PNHfCTY z@lo_#4d;pD(c#CE?hJ5pO_-^LV=H0EY?91ZiSVQ{=5JkEESgfbgC2}2$9uBbURdyW ztcEwGlr%8lWXj2!I5`EgEuQ_e8m!b@CaBkdTPG7Luf|vGl(?O8Tc+)+cdrzjEqBau2WxkKIHP#BP*26ZH8~5$|dJ~ zNEn3|lf&ZUO6~)U(fGf+ya*c>YonVvZ=h0Ckbg!j15fye?&3^E@({ zdHA~8{aC|uB^EofAwju0+8|#mLOznhvcteTSEGi zg=00%#%8+`3Xc8>@n;@(v z>EkeZX>O}_!qUQgU}c^WtxcqeNEFW~GT}^${^Pr5w-owbS&wqv7UYWbnYJMaado$a z=zgqmPjfZ=BS|rLIq3x)-RwFnjy}>%nlG0*%P`Cl&Y4wDS#zw<=xtdDO7mPwOFJJo z9NmrxPzFyFCSTU<;ow3$^y*dak+f@TjRS63{QBa_pq^=cypH28g^Yeh`v&kv!;gq7 zBB%};LX6a)m9v}w7UNvjk{|T(c@%P9VQ=d%E7k2{6xZz=6k>dOXs9X{)wpC%#5`U* zdVLkO28kCQ!tw{k)#9m8gM4D}y*Xnu=LGFIB+j314m@A` zLW9!q9-c&i>}`l{MFf|2D*k3OXU8d5=vMLK9a}V)tr`BNGr$fDLOseBd!yNPg1F=~%1*C-{D`Oua zfswE7w&dY~c{ycOr~w9`Ap3OkzXE5%B2IX?%}wyuEWJUyD1ufj)$Q;k^>OAg>?;Fy zkF00g=F@B((FEI7z8YQGH)B%tM<=|iBSFVMSM3wl{`PHq4P(h1e3t=O49%HVE9) zq2r&sQ1jk-r#%R}PyJGfVbFjZ{=<86>lPC1A`|q`Akn+0#S!d*WSynY4|o4i87YQ< zfIbDXIr8g-tDS(3L*RdNi?{ZP_VU9Ge?UFWq%@~IGkou)cX-Mme9u)sB;Syer99Mq zj+U18@~2*UWYv=cCCQu;E9eU7OG$z*4T|AzMxm&0^NIxlG@=e4)d)!H6N*i#7NtL) zcA@>{qDphy<6RB64XeBP%mu%0u+&Qr$$e=6SQwih^WeFKn#Aik8Ri$`Tw~30UHDe3~BR>;@8YX=EK4(g?2P`MVx# zlmewS)1RiG%jMK7(mWoQi1fEvYfp$nu^uJK8PLEzh;p3zBJsgy($@A=&|dadZv(W@ zn~Q)Zi7iui)(rnjJ^0HtfD3e~%T2I_@3;e3?{$sY^!64rTz7Kfp}pNPpn>ae#%4LY z;TU@wUH`RuLXueb*eD`Vy`qLH4CB@6R_?`K6s$Ex%8z)Aim*`=R3Q#i}USiY{*Aa0IqNWwJ2p_+6Ru zcIZc~joY%bzCw;?C~@XKKXGRoJZk+9;VjHFt`m^ZnRvju2pq#ypREP2TepXV;hip? zEKFIv#111Z)FiLL^~pc?<*BI8P>7n1+uST^HfMRVOn5`LWg+^)d~Tz8zFbWq`Nagb z6y(Dnl%O`DUOqQ<(iwzyy1@AVI&_mUcM}`&%3JCPGw94_tMYwK(nbg>WWoV}`}7Yf z2p*lm;^V3kL;v_M$=mUdhV4p&zaB9b%)kkg{?$EyvifxeqVQc=v#J3{syi1~L*_u`$$W5;nHxN-79S#s5>ALm z3=rV3O=<;G=1|pD@$Mu+JH{|GjT#k#Vz_uPn+I62umS5J8`G`NfI!v3W0aqUfyZlL$h49;Y;_OVK%TcPW4Zni5^DEhvAU)=WEm?F>V zjxiYRHoj>+Pd9V%TryOe*k3#L=}znGC3h08X7k?j>(MOfeTQqqw@y+DT~f`YWWxCHzQ;=l0C2_CpICRZ!qWh zIW{kZZAxB$DJvpCIhFvM@@pGO>yY=(>oASPFN~J%I1INA+=@^Sj=WwMB;HXfz*?Y- zF#0Tf!3n@PalXetI?qfGzH{6RbBQE;JI?{Xu6o3e^$KS<$Wcy()TXT>0tq7+&shXc zi=ld5#{y@&3H~T~`b$U$UfdlZ>hXPZl`z$6`=43*0Gs%(qNOgdDo2U`3t!N&z-`l& zAif9(hh~2VX1_hJHVgdP+Pf~W0;soL*P!~SV3i1#vd$pLc1aak-=tq~_&ZQpc`KQ6 z3slhh9R*if=*w$DwOj%4cdw<~zN9L9N0~KdvvM82-ThauQxP|IA+O*K=?k%M>JImQ zGb7E-wxs>2i!r$6lTaqp_P~zXt8(sa|5q6s{+6v`fv<#QN^^7=E341%x$7jGFxuy? zM(ww~50q~q3BpHww2nQ18I$Ao3DQ#pIkVJ%=1Z|NjD8#h(9C@7whbw4C=KP`TQAQi za-4ZrF7uL){#G`alXF>S`+RLTI3H(Yxq_suZtoCjeEVEXsHzK1Z%8YS_edIl0r)Ib zUH)uk;}ip+@GU!bnP8Qp-V;CtYkBnap9#~?^-%zE=JZ%1{avf>znS1U(wObBqBOB* zsq&;AbvGeo{#i8coYJCL;P}8EL094;#IQv+i`3p%0|bc!TncZ?z*Kul?U>CMdLM!&l-BB`oP{xK9 z3Y|A$Vv?WoIQFe`URA${5I@NRK39>ZG8|)Sj%XRO9M!j75H9-}a1Y~;G@*?X(DXmA zlJ47Bb(+pMdS6)m@1m7G$4j6DSztu?q**%fab?BK{r<;Mk4v}x&Hm4Z|GZn~?8k&N zZV`vseK7=I4MFlF-H2}Q<#87gq%qbUSKm)>4RyMZzV<`T%{%(K|2kYJPOzEmyPq4e zB46@WdcH=#R+Ba0%F(CN!rgo%YhOJ35RT3o1RGqNsGf{cT~gS=@Xn69-bzrywWQ8| zw*kF52uF)XIT7HurZ@DA_PE-Z%#(u~&Zhv!q=la;?J2cGk||xLp1;D;2a>IpECjvw zgD6N&n%KWp{Tk?u8V|w@vZ@62GEJPBs)@oaR(`GLid;N#PfQFSE4qR`kjfOO%_52x z>sn@PHKnjpofuIJ^-?|X&|Ch4Y~=zuh4wFw%+5O5o9o7wdaW)pE~k&hF5S22 zS~t9=cj9ci>$s+{!BdWfyWa6FNb>|BsnYldi3%0?%xzPHGBGY%mxqdz7ZWp@xf=;0 z2MfiuU7y3(?YssJF9>+Qx}N6aqt6y%UF?qQlH>!L_mUkpOeX2AW~9{R1T!^*^Zo?+ zWY<7x@#h3@dsTFncjjIQpU#RrL~auH4H-n@pgiY{3v^wIX&V~o+*kOQHLLu<`M!CK~ra;aV3XpavZtqQN{ zT_rf-KgjZ47rWjG=QI!Y418Rx^wQp^!wRvq%u{3#B^3L&3hpl1ZV>Spp6d1n?VT88 zQhPlOy>iN~;CVg0>hw#5O|^FkjZXE>I7wA>odYsKxKtT$f(jFI77m)`}@d_~$v}XbGkYf$5G#B%Odp$|!Z3bRx(;lD={tZa|^j06mrq-nA&0~lx8Ukz^? zLp&G5Be>E50&I;I1rk$mp~T0R15or^x1-S2@u8XWj@(B9!2X3_sk@uRmBi>f5-(pr zVVELYCrhjkw+D_n9x{fcH(AY!O!+O4WuNi5_m_R59>ESh9*Q&8IxDIazAKI^wfbsh zS)~!7MJg(d6?!aN?p%tV6zA}naogS``cE|=(Y&P8N{t_%sbe&-oQ?gva&j7$A@5{; zZ)R{?Jg=+EO5@ArN?;jOcq<~D;zAlv>nlecelAD)YMvaDqIcpnYxMu~!OjlUq}F-tpEhI6~)K$U{5$c1AeS6D@P^S~LfB6oXUrT_nv21_yZLo<0VlS=%VT9ee zl%0kbCDl!gC8M@F^j*496^(y_!*@_pmXSc{sVth1rh_(kwX!}OO_w5NXRAouYLELn zNE&*G+RlGQ;>|w{$p~wO-t!{cA!$|LkgOJ@}EG6u~x^f|T)& zlxbO)4;e2+!HN~}3?dw&lAv9>SkE?()`zLLS5za$VnHr*HL-)>aT?D2VKapR18@LI z<)w^Xi|u_vKAFAH_qQ#WZq!enMD{vHFEA+TwlK2gb_Ob2I&=*yRQD;T`UBKeZ4O&W z5_g?KkI>|AmZ;4Q>{2F)3=tYoZzo07Xz`+gfCio~C3dLP_2Ir;e)~ud*Kp^3Q~6W2 z42alFQ|)f176{cRN;-8YxqnFO5tiXnwK?4HAF4_>Gm$2-@WV0|Ia!Q=tWnHwYiUM_OxW?6r33@a>v<+**vIecWK2QXcCY7tMM+vJaikaKsWhE*mYfT`snQU&<@OO z_``UIDO9IyAftkgIm|~7J$LM17PE&{Cr$}(FY6ul7vn0t8Z2;_O3EZ}Olb`B6vI?M zb9`XYm4TwYozXLUV-G)xs`+nx@; zc~P-_R+3C^a7qQOmJ9t_)g6eb#1IF>jK5o05`~Ak>rLwKK9VR{Xb=l7j77Wq#P&vd zo28)e*0REG2}&amOZ0!Eo>8qFxt*j(*0I#QXGfKfpWV{sbb z3U8wPxn7{8qg|9EpyCA&wHhr_`WLr4lIlAv_Wc1N#KrIp((E+~*fYT!Cs@084`AYL zY^Az(8Plp|7zw@1EkL&>JRfh?rH0!@z%aKz=3h_i&2nxB7+9czal0-Q2!pFSAN!mV zL2l?Ras#LjlSko61v*C4y?Ned8Fr0X2F^WvSMyHGRuPhjvuFXEYn#5me<%$hWjnG_ zZ5TH6aRYX9P?{eh+P^jv7I_$MkymyZujS$t{{JtNY*7MaBRSXiuWOyU$%40lM}0|&u#oq7BI1lg!y}#li3y)CoE+10g0!64ei(H#rHE+BL!r{qD z4y>G*R5}x7Kf(yBv*a~(nnAV}Jyp&&M%2XRix+<%nvLOEZbp*G9VXp~Mi{I2Z*GzC z{6TdNNFlP1IngOOmF&u2;=Wjtrl(WzuSQN&lhjCbu>W+kz?jpdJ`*LIck!T zZWv0n+r6{kzj@hfsm)iMnKzY%d3pSD+^J1O4zY>*Ta0=@v)GkLd`RA2pkB|G0m?!0 zbFHd2&9KH#CwsE0_S-`cbZmP(w6-4o;^2k<8-1-3oQ{@-w(2iK+|_CT%w=4tx9;++ufIeqq#!(3R zfcW#?W2VZzIk{QJUXfD3Fk9xtncW6%jHTrj%H_|^LG0_`v73Hu&dY)IH;!@0a04~c=%C>*S)>+_1LNhzP?QI6z)heE9AU^;E4cs@ z%}8mami35B*;&Gs?{TL?%X5YkvSEjn95P&gjxI~>C4~|%CrI2+VJ)TG9=E|AM3YpA zBfJ%P#XIx|JhlwT`nK9(W4-H|Y0rvWsFmu!$Z0lVj#j(w<_Uyp-Y4F2WrTRbKo2ry zG@<(MzbE^yk??-SY~mvrmPp=bd-v6tHppb4MSJt4ZMZFz);mLcGslIJM$bW3#gF&j zu;)~`uEJtsqZha9_q4fFILfJWo1J!kC(+zx)lQ0wGt?$<(D;Vswb!cFnddHfGd7@V z3SDOdzZJ!;4~>@ZhR3akUsFWOe4079AZbkjf(XjW%}v3V=8Cm8qq2#eG>3*(p!NMr zlpab|bWVPCAB4=z&i z<@Y>@^}*!#*r&icz(CdhBND2|z0bVskU(l_wZE<$9;FyPHd)S+hbsrlC;sKa7gazZ z>pea0Sl`4xhUCkbSmc(PfiF0h==tkN*TqP&<6&w}#3%2wD+sfnpB#`WBTjrOL7f(D&xkZ9y4K8Hj@u?#4w_mjQPasrldXJ zSuv8W-`(5o3mW*fbNUz1#hR?y()DjGPmki@OM8@y-}AV988PKsMcXd%OajI2$m^+h z?!9JFG0RG|Y+tq=p@KfHxsueE<+0@+jei2k>R6>$R(o=ZFN|-EU$cLbNEosFAtLsG z^z_{XTQ7XAQ}zd%A3C(zy(w^oA=zP0NqXSl&Xb?!;`ey9xe%eg2wVxfg&5-;S(sC3f)BtM}Nd(Pr?;o z*lKkytM@+-{O3Zzw;cKtD5*APRr|*irt8@UDK9oEtmJj&R$1(3Dw+422G-+N^+7Z% zrMtOEKT?LL6g-i}IvB+i6ywny6uL}Jk~cZv$F+?F@O{eE7sEU4pR#oj_`wn#o`?T6 zeWnlft`xLCH-z1Bd|qnIj5Hwg3AD2^11-f}70%}7)wCxj_TO@z+;3(lN0G)21(RWm zL$->$yuq{=$$??w(iY8yzxL`;CQA5y&VKtmKnvpMqU4NlGx3rxc1XZ|N}{~iHk+bT z)TJVMaSjVVIp@Ccwyh+JJoi)oO^0dZw!H!_y_r!z^Fe)+FWKrv-5MDQP+ z8;+o3Lol*s;MJ^dgm=h$jKAZ-OI9LrmKull^>Vt<2@Fq$8<1{dW@AFemy$B4#s~z+ ze%d5USgC}S#%CX`a>qOS=c@~U$26e`xW3Yx=uWqX z(E99DUc$%6S*1F23dhtM37EQPdN$H|IADbsI9t?Tji zib{uqe}M=(nuCw=WJ#~Oo$on;NVlTYEpt$2i&Z7r)VR$GP8|IPgVpvxdnSbyZmWb< zWh{5u=>3YqQt`Kruyg~{@+z#_rrtx#7*-E1io64+v{LqwrQ~_?V#r}yyt@X{W}IN! zs1G=GiGj|f)aMV8Izso3Np7&tmBbIXO&n|)2RWKXtZlBv#7lUgkXf0paKhP2ZEL$RM18!80WA{qyadLM> zDnEaHPe7K<1fHU%GxpT^`Z-gWvI-b z%RG;nzKvDnWw^un%P6XkV>KE>{sEOZ3|*y2838LY8+i`p4vHShv_W2$io&_Ba(v4s zk8bi{EuXhwb5@DC!bMBE4f%O`vaRp~##KMJ*AQpvt5AaN_FyxX`RQR!Gl3AcuriKeoo%OB#5IOl$n9@qo5D0^dFp}1@vripBwC>Q!` zzh?&{D?vxpCf%cEM-z5N8yp z`@JvEl$9aFm;14O84k;4_N5D90IJUzMd-R?t@Jazqo9n3avsd}*E=@VYOkU&Dt z*xnbC1Dv2(NUO2t$&Bdl0_oG^p*`kyy-WG*R7tO z!4qz+r5N_Tl_Ygu<&jl#F~mCdKT|T#n#a&DmyicA?17 z+6iC#>PuWCK-hMrC=dIDW%HNECE-EjLu-oCchH=eXzSO1x=^9`y{M$u=$(&IEoJVA zd5>N{D;J8Cgf`#jWbAzW;@a6$?W-YAAAx4IAR?xJU#fB!x~*?WXWJ_pDLD?1KL5cv z`#hGwmKP2fo=d|595p=7whf@|r#Z0LVCD|+Yp8<2cZOG;psqENm^!&(cM1-68(?6g ze?Oa580bFm?o(I#piS^>%@=IxGwB=hnF^WJuM0mfsXj>Nj{PE@&$I+GQz-P!&6M~x zB2=93%Ep-XS%RMd=f5zaMA=TH3@g*|{UO0Npfa`Ds62A&4mmvG(tGzO6)?>2Tur7e zls>ziVK zM|wkGYyB6=`~Q)2)=^P?Zx^SfyGy!Z0BJ;!Mv#`Cp}Rw7C<&!Q8j-FqpmYihUBUp; z3^mf-B_QZ~{k?zT+_h9@&D?v=+0WjeO)$PRF#eGRMr3hE<0~a!5X){jS1B#La%X;G zQ-XLUmO%*69;d9?B$VwstQZpi0`^Oy#W=;j4`!Zrj#e<5c`f{gzoPK?A~{efsJ{b7 zl~3o9JSP+*o!MaD9B=%`_~~=Ydbv@^O>`oZ0^^^X>O}pS7Z49#O0GT%V>m4iI4a^t zJKZSf%dM+iwVu0{oGz#7SZZc25jkuF_jfTZSm{@_N+PK@BcJ_U@_s#BBZ7iGJ7L%y zG*hfQ0ff(J8h*3eYp**%s+BHI>691q;f7S1FkY;Kus0%moEvC>^LEkk)@Si5G=|e8 zFTWR(+9hDE%-XnLe;ih?_mhe9T+dT;afxI)%^UT+!BKB16g}S^<{;5ZJ_rBH!5=Y~ zNn_fBk5s8+tw_UtZQg&4o_}f{TE5qYjROmHl;yi*N^djS@r&P zjM+G<+!lZF1E{FyXd{S~3ex`&Rqd;-L8FMX{aLBm@q>yX(oP3{KP1#FguqWbfp+!L{thTwCv3=kt_1gGYU>YarU|x1l zxyx0KkIBrz$@-gCCY*hi?*}h?z!Srpke3(w&45g>MGz#P$Qjpj7a_?1u1N#(Y0Aw` zb(zDn_b1HBl*Lj^Tkfx+q`Wy|t3q{V%728wT6;QFYk23E*5a`EIllQHRbF4u8LAd+ z*c3XEcM#og9N2pJHG4CH$e-ve)$33PVBSbY4J$+xunB{B+twLxg+Xosws`7WERJdZO{4Uvx*&3GwwvLjQyX|u3MB_Hdv9mg9W{@gZ|pl*P7}+4$Rm* znl>5(PT&h#OyM~u-rpxK|8K@a^{^d41z6mMEvxGc2z6Q}hdn!fp^z*HDf2D+^O=z?XmzPOqVON6Z(tbYE&fnixs5WY@7p%!dQSeWXb z@{bB}ixjLVSGY7p^^(>Y7urA9_wNNLBdcE)P3+aIOlTrIGma5JJkMAivr5e_0^~&KvC$)p>_l_A2osxzRw5hJOB^8!{;c*WB&e7^BPWbPRAaJx1W=g`=;HPqX zC*4dqi-}J;!9gHq@Y>AVC&Lk`VoaBc?=PSM5 zmRq4Mk^r3=Q>vq!p7;(*R*!$5%DKWut=si02%}_j$>6_Rgz$5qq61r9nOMSe^iX1f zXOm2y_nrwk)MD#2HDCoR5eXMiT8PF<_U9!|_=b$fYglOY_)OdW3Ucxgu7KOeCY`PfTuOlL{HCDf3j!FY`C z1NHmTMb|h22E@9wlum1IRLaEK_Di}pS)1ewkbMkv#THS+G6D{IcEArM3$*`_GcTOV zA$4W23QJp9-G|1IpO=>v6Jc@B@)XdOQO*OtYYeVoKh;52%4-79XKiX4AL@ZL%wTQ8 zGeGl$7IA0s-?^-a+7oxYVng7!jI7pkr&3bU{Z@so<5hpPYX+bZ(E0?1%Ivd$>q4O> zt&b3C`0JD6I_}X|SedLZl!T&p9uo+HMlrQ^0b{;UunR7S5evrd1Vtr4SgbpVQ5a1F z(yD`Nb!mbfjY6uhv<$~I>s7MUF1oi}#z7L?0rdc3%b}svW6aaZ@k#KtQ?V9t&dMYA z+RADwmup;)47qo8Wy9}Bn^iUWe1_riJZ?B(E&wt@=Xswjc}KwsnDjKXr)gV4eznfw z_#P#s+d_~~^WlI_9_Z9S=BOKXhlH8zV`o81{Z&92o+g{{M>WEEBw+FYM(_6?Nn`ia zS3(xCO*o~0Xcs-^Ro4@ph!dA%X-*Racte_5>2@NkNtvw}70ZdUKE6oJOP=bG;%h}m z1k!9ytr)Q$f(;k!<$K?ZL>kK`tv#lSH0gBcm84QoULhC7OuZ@wM zCB5Sx$vBQ2?Z+A}>KXqawL67nUEg)#xQ)q1RMQkJy*lsnth($4qj$lVxy6vCqs~3^ zN97FM0(l8^z)9g#XA9$Jzr8DMm>|&?U}9=xQ482pw^Q26s6XT9UDueODEaNBcO6DF zK;G?xTm62_gaus51^Iw?vDxFGs3w=gARWgp8hXmo|M-@ zTlB4VCJq6>V0+Z*JEJc!Lp_YMZY@$ey095{bjW)ZLGzJZFzuN5!9lDivNP!0HsMMD zbimxSg+{DajbANPssrGeT-sI-d}VzKcu{8>d4K%c0kZtHDqGX!dP))(*aU65+qL#c z8qA=V5+@T~UO(HYVUtC^36l1UkJ#fmU)(q~E|+rjveKirM?Pa=-(at$R(wG(4;JlC z7n}~$q(0qm^1D&7Z(5<`>G|bD6vD%-t>K8xC{m-K<{Y#DFPT}=CsG-1p#?EIgH1T2 zquhCkzU4*Hd)9fr!VLCp0`eEUL|zNs)E{Q+{YRhsYpxmgy)zn0k7_3UjFT%57Bhv>j$UjMAGtnV=H@!i~NG8GPW*LC&@#JoCw$uyZ zmiU}A?55+GUt)W?$XjFXo)zyL|8~$!w9nN^g=0^+ysZ?dRRY#$5{V>VR=sl@j;T_g z_wKBy6r@?3959>kg&~EB&&^L&rAUmQ(wf}~LfL1ZSBxVI-pm?g$DD}iYn{Z)s!i( zOY>E;!f>E0_BaXm^oyMRntmZG0#$b|^e|d1^*GdV%Ye8m?}ECrH*c>D*q1PeK zxb)>22uEa-UNtNHxL$bj6>l{4$rynSY;Ru|XMQRKrRJFw4mwS8jk+XTo!y)c+6E+y zL8q+C|M>{o(_R^2n{icKUbu-?5#*!+zJC0xH^6y)bO7LA);Pr$SEfT5(s4D90I-1EH2u{y~c1(0{! z8adA(go`J0UPg_wxpUebQswjc?dy)F@Ko34M0WdIiKtU%yOeYsh8G&JS51Xz6zdxpaRexlZNjq ziT*=BE=|jN&Wr}kRzQ{Je4JrEA0q4>Gi1|W6?xpig9f4r&l z#Hdv|0zL⁣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 Z9c5+J{|VDG{P~9lxPyW6FV{bh{{fw9GoSzf literal 0 HcmV?d00001 diff --git a/tests/test_cache.py b/tests/test_cache.py new file mode 100644 index 0000000..25196bf --- /dev/null +++ b/tests/test_cache.py @@ -0,0 +1,128 @@ +import re +from pathlib import Path + +import pytest + +from pystatis.cache import ( + _build_file_path, + cache_data, + clear_cache, + hit_in_cash, + normalize_name, + read_from_cache, +) +from pystatis.config import ( + DEFAULT_SETTINGS_FILE, + _write_config, + init_config, + load_config, + load_settings, +) + + +@pytest.fixture() +def cache_dir(tmp_path_factory): + # remove white-space and non-latin characters (issue fo some user names) + temp_dir = str(tmp_path_factory.mktemp(".pystatis")) + temp_dir = re.sub(r"[^\x00-\x7f]", r"", temp_dir.replace(" ", "")) + + init_config("myuser", "mypw", temp_dir) + + config = load_config() + cache_dir = Path(config["DATA"]["cache_dir"]) + + return cache_dir + + +@pytest.fixture(autouse=True) +def restore_settings(): + old_settings = load_settings() + yield + _write_config(old_settings, DEFAULT_SETTINGS_FILE) + + +@pytest.fixture(scope="module") +def params(): + return {"name": "test-cache", "area": "all"} + + +def test_build_file_path(cache_dir, params): + data_dir = _build_file_path(cache_dir, "test-build-file-path", params) + + assert isinstance(data_dir, Path) + assert data_dir.parent == Path(cache_dir) / "test-build-file-path" + assert data_dir.name.isalnum() + + +def test_cache_data(cache_dir, params): + assert len(list((cache_dir / "data").glob("*"))) == 0 + + test_data = "test" + cache_data(cache_dir, "test-cache-data", params, test_data) + + data_dir = _build_file_path(cache_dir, "test-cache-data", params) + + assert data_dir.exists() and len(list(data_dir.glob("*.zip"))) == 1 + + +def test_read_from_cache(cache_dir, params): + test_data = "test read from cache" + cache_data( + cache_dir, + "test-read-cache", + params, + test_data, + ) + data = read_from_cache(cache_dir, "test-read-cache", params) + + assert data == test_data + + +def test_hit_cache(cache_dir, params): + assert not hit_in_cash(cache_dir, "test-hit-cache", params) + cache_data(cache_dir, "test-hit-cache", params, "test") + assert hit_in_cash(cache_dir, "test-hit-cache", params) + + +def test_normalize_name(): + full_name = "42153-0001_878150652" + assert normalize_name(full_name) == "42153-0001" + + +def test_change_in_params(cache_dir, params): + params_ = params.copy() + + name = "test-change-in-params" + assert not hit_in_cash(cache_dir, name, params_) + cache_data(cache_dir, name, params_, "test") + assert hit_in_cash(cache_dir, name, params_) + + params_.update({"new-param": 2}) + assert not hit_in_cash(cache_dir, name, params_) + + +def test_ignore_jobs_in_params(cache_dir, params): + params_ = params.copy() + + name = "test-ignore-jobs" + cache_data(cache_dir, name, params_, "test") + + params_.update({"job": True}) + assert hit_in_cash(cache_dir, name, params_) + + params_.update({"job": False}) + assert hit_in_cash(cache_dir, name, params_) + + +def test_clean_cache(cache_dir, params): + name = "test-clean-cache" + cache_data(cache_dir, name, params, "test") + + data_dir = _build_file_path(cache_dir, name, params) + cached_data_file = list(data_dir.glob("*.zip"))[0] + + assert cached_data_file.exists() and cached_data_file.is_file() + + clear_cache(name=name) + + assert not cached_data_file.exists() and not cached_data_file.is_file() diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 0000000..45ffc87 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,128 @@ +import logging +import re +from configparser import ConfigParser +from pathlib import Path + +import pytest + +import pystatis.config +from pystatis.config import ( + DEFAULT_SETTINGS_FILE, + _write_config, + create_settings, + get_config_path_from_settings, + init_config, + load_config, + load_settings, +) + + +@pytest.fixture() +def config_dir(tmp_path_factory): + # remove white-space and non-latin characters (issue fo some user names) + temp_dir = str(tmp_path_factory.mktemp(".pystatis")) + temp_dir = re.sub(r"[^\x00-\x7f]", r"", temp_dir.replace(" ", "")) + + return Path(temp_dir) + + +@pytest.fixture(autouse=True) +def restore_settings(): + old_settings = load_settings() + yield + _write_config(old_settings, DEFAULT_SETTINGS_FILE) + + +def test_create_settings_is_run_on_import(): + assert DEFAULT_SETTINGS_FILE.exists() and DEFAULT_SETTINGS_FILE.is_file() + + +def test_create_settings(config_dir, mocker): + mocker.patch.object(pystatis.config, "DEFAULT_CONFIG_DIR", config_dir) + mocker.patch.object( + pystatis.config, "DEFAULT_SETTINGS_FILE", config_dir / "settings.ini" + ) + create_settings() + + assert (config_dir / "settings.ini").is_file() + + +def test_load_settings(): + settings = load_settings() + + assert isinstance(settings, ConfigParser) + assert settings.has_option("SETTINGS", "config_dir") + + +def test_get_config_path_from_settings(): + config_path = get_config_path_from_settings() + + assert isinstance(config_path, Path) + + +def test_init_config_with_config_dir(config_dir, caplog): + caplog.clear() + caplog.set_level(logging.INFO) + + init_config("myuser", "mypw", config_dir) + + assert len(caplog.records) == 2 + assert caplog.records[0].levelname == "INFO" + assert caplog.records[1].levelname == "INFO" + assert "Settings file updated" in caplog.text + assert "New config was created" in caplog.text + assert (config_dir / "data").exists() + + config = load_config() + + assert isinstance(config, ConfigParser) + assert len(config.sections()) > 0 + assert config["DATA"]["cache_dir"] == str(config_dir / "data") + assert len(list((config_dir / "data").glob("*"))) == 0 + + config_file = get_config_path_from_settings() + + assert config_file.exists() and config_file.is_file() + + +def test_load_config(config_dir): + init_config("myuser", "mypw123!", config_dir) + config: ConfigParser = load_config() + + for section in ["GENESIS API", "DATA"]: + assert config.has_section(section) + + assert config.options("GENESIS API") == [ + "base_url", + "username", + "password", + "doku", + ] + assert config.options("DATA") == ["cache_dir"] + + assert config["GENESIS API"]["username"] == "myuser" + assert config["GENESIS API"]["password"] == "mypw123!" + + +def test_missing_username(config_dir, caplog): + init_config("", "", config_dir) + + caplog.clear() + + _ = load_config() + + assert caplog.records[0].levelname == "CRITICAL" + assert "Username and/or password are missing!" in caplog.text + + +def test_missing_file(config_dir, caplog): + init_config("", "", config_dir) + (config_dir / "config.ini").unlink() + + caplog.clear() + + config = load_config() + assert not config.sections() + + for record in caplog.records: + assert record.levelname == "CRITICAL" diff --git a/tests/test_cube.py b/tests/test_cube.py new file mode 100644 index 0000000..ce4aa01 --- /dev/null +++ b/tests/test_cube.py @@ -0,0 +1,166 @@ +import zipfile +from pathlib import Path + +import numpy as np +import pytest + +from pystatis.cube import assign_correct_types, parse_cube, rename_axes + + +@pytest.fixture +def easy_raw_data(): + with zipfile.ZipFile(Path(__file__).parent / "rsc" / "data.zip") as myzip: + with myzip.open("12411BJ001.txt", "r") as file: + return file.read().decode() + + +@pytest.fixture +def hard_raw_data(): + with zipfile.ZipFile(Path(__file__).parent / "rsc" / "data.zip") as myzip: + with myzip.open("22922KJ1141.txt", "r") as file: + return file.read().decode() + + +@pytest.fixture +def easy_cube(easy_raw_data): + return parse_cube(easy_raw_data) + + +@pytest.fixture +def hard_cube(hard_raw_data): + return parse_cube(hard_raw_data) + + +@pytest.fixture +def raw_data(request, easy_raw_data, hard_raw_data): + if request.param == "easy_cube": + return easy_raw_data + elif request.param == "hard_cube": + return hard_raw_data + + +@pytest.fixture +def cube(request, easy_cube, hard_cube): + if request.param == "easy_cube": + return easy_cube + elif request.param == "hard_cube": + return hard_cube + + +@pytest.mark.parametrize( + "raw_data, expected_shape, expected_DQ, expected_DQ_ERH, expected_DQA, expected_DQZ, expected_DQI,", + [ + ( + "hard_cube", + (19185, 13), + "22922KJ114", + "22922", + ["KREISE", "GES", "ERW122", "ELGAT2"], + "JAHR", + ["ELG002", "ELG003"], + ), + ( + "easy_cube", + (42403, 10), + "12411BJ001", + "12411", + ["DINSG", "NAT", "GES", "FAMST8", "ALT013"], + "STAG", + ["BEVSTD"], + ), + ], + indirect=["raw_data"], +) +def test_parse_cube( + raw_data, + expected_shape, + expected_DQ, + expected_DQ_ERH, + expected_DQA, + expected_DQZ, + expected_DQI, +): + cube = parse_cube(raw_data) + + assert isinstance(cube, dict) + assert len(cube) == raw_data.count("K;") + + assert cube["QEI"].shape == expected_shape + assert cube["DQ"]["FACH-SCHL"].values[0] == expected_DQ + assert cube["DQ-ERH"]["FACH-SCHL"].values[0] == expected_DQ_ERH + assert cube["DQA"]["NAME"].to_list() == expected_DQA + assert cube["DQZ"]["NAME"].values[0] == expected_DQZ + assert cube["DQI"]["NAME"].to_list() == expected_DQI + + +@pytest.mark.parametrize( + "cube, expected_names", + [ + ( + "easy_cube", + [ + "DINSG", + "NAT", + "GES", + "FAMST8", + "ALT013", + "STAG", + "BEVSTD_WERT", + "BEVSTD_QUALITAET", + "BEVSTD_GESPERRT", + "BEVSTD_WERT-VERFAELSCHT", + ], + ), + ( + "hard_cube", + [ + "KREISE", + "GES", + "ERW122", + "ELGAT2", + "JAHR", + "ELG002_WERT", + "ELG002_QUALITAET", + "ELG002_GESPERRT", + "ELG002_WERT-VERFAELSCHT", + "ELG003_WERT", + "ELG003_QUALITAET", + "ELG003_GESPERRT", + "ELG003_WERT-VERFAELSCHT", + ], + ), + ], + indirect=["cube"], +) +def test_rename_axes(cube, expected_names): + cube = rename_axes(cube) + + assert list(cube["QEI"].columns) == expected_names + + +@pytest.mark.parametrize( + "cube, test_cols, test_types", + [ + ( + "easy_cube", + [ + "BEVSTD_WERT", + ], + [np.integer], + ), + ( + "hard_cube", + [ + "ELG002_WERT", + "ELG003_WERT", + ], + [np.integer, np.integer], + ), + ], + indirect=["cube"], +) +def test_rename_axes(cube, test_cols, test_types): + cube = assign_correct_types(rename_axes(cube)) + + for col, expected_type in zip(test_cols, test_types): + assert issubclass(cube["QEI"][col].dtype.type, expected_type) diff --git a/tests/test_helloworld.py b/tests/test_helloworld.py new file mode 100644 index 0000000..0106394 --- /dev/null +++ b/tests/test_helloworld.py @@ -0,0 +1,45 @@ +from pystatis import logincheck, whoami +from tests.test_http_helper import _generic_request_status + + +def test_whoami(mocker): + mocker.patch( + "pystatis.helloworld.load_config", + return_value={ + "GENESIS API": { + "base_url": "mocked_url", + "username": "JaneDoe", + "password": "password", + } + }, + ) + + mocker.patch( + "pystatis.helloworld.requests.get", + return_value=_generic_request_status(), + ) + + response = whoami() + + assert response == str(_generic_request_status().text) + + +def test_logincheck(mocker): + mocker.patch( + "pystatis.helloworld.load_config", + return_value={ + "GENESIS API": { + "base_url": "mocked_url", + "username": "JaneDoe", + "password": "password", + } + }, + ) + mocker.patch( + "pystatis.helloworld.requests.get", + return_value=_generic_request_status(), + ) + + response = logincheck() + + assert response == str(_generic_request_status().text) diff --git a/tests/test_http_helper.py b/tests/test_http_helper.py new file mode 100644 index 0000000..1c8823f --- /dev/null +++ b/tests/test_http_helper.py @@ -0,0 +1,194 @@ +import json +import logging + +import pytest +import requests + +from pystatis.custom_exceptions import DestatisStatusError +from pystatis.http_helper import ( + _check_invalid_destatis_status_code, + _check_invalid_status_code, + get_data_from_endpoint, + get_job_id_from_response, +) + + +def _generic_request_status( + status_response: bool = True, + status_code: int = 200, + code: int = 0, + status_type: str = "Information", + status_content: str = "Erfolg/ Success/ Some Issue", +) -> requests.Response: + """ + Helper method which allows to create a generic request.Response that covers all Destatis answers + + Returns: + requests.Response: the response from Destatis + """ + # define possible status dict and texts + status_dict = { + "Ident": { + "Service": "A DESTATIS service", + "Method": "A DESTATIS method", + }, + "Status": { + "Code": code, + "Content": status_content, + "Type": status_type, + }, + } + + response_text = "Some text for a successful response without status..." + + # set up generic requests.Response + request_status = requests.Response() + request_status.status_code = status_code # success + + # Define UTF-8 encoding as requests guesses otherwise + if status_response: + request_status._content = json.dumps(status_dict).encode("UTF-8") + else: + request_status._content = response_text.encode("UTF-8") + + return request_status + + +def test_get_response_from_endpoint(mocker): + """ + Test once with generic API response, more detailed tests + of subfunctions and specific cases below. + """ + mocker.patch( + "pystatis.http_helper.requests", return_value=_generic_request_status() + ) + mocker.patch( + "pystatis.http_helper.load_config", + return_value={ + "GENESIS API": { + "base_url": "mocked_url", + "username": "JaneDoe", + "password": "password", + } + }, + ) + + get_data_from_endpoint(endpoint="endpoint", method="method", params={}) + + +def test_check_invalid_status_code_with_error(): + """ + Basic tests to check an error status code (4xx, 5xx) + for _handle_status_code method. + """ + for status_code in [400, 500]: + with pytest.raises(requests.exceptions.HTTPError) as e: + _check_invalid_status_code( + _generic_request_status(status_code=status_code) + ) + assert ( + str(e.value) == f"The server returned a {status_code} status code." + ) + + +def test_check_invalid_status_code_without_error(): + """ + Basic test to check a valid status code (2xx) + for the _handle_status_code method. + """ + try: + _check_invalid_status_code(_generic_request_status()) + except Exception: + assert False + + +def test_check_invalid_destatis_status_code_with_error(): + """ + Basic tests to check an error status code as defined in the + documentation via code (e.g. -1, 104) or type ('Error', 'Fehler'). + """ + for status in [ + _generic_request_status(code=104), + _generic_request_status(status_type="Error"), + _generic_request_status(status_type="Fehler"), + ]: + # extract status content which is raised + status_content = status.json().get("Status").get("Content") + + with pytest.raises(DestatisStatusError) as e: + _check_invalid_destatis_status_code(status) + assert str(e.value) == status_content + + # also test generic -1 error code + generic_error_status = _generic_request_status( + code=-1, + status_content="Error: There is a system error. Please check your query parameters.", + ) + + with pytest.raises(DestatisStatusError) as e: + _check_invalid_destatis_status_code(generic_error_status) + assert ( + str(e.value) + == "Error: There is a system error. Please check your query parameters." + ) + + +def test_check_invalid_destatis_status_code_with_warning(caplog): + """ + Basic tests to check a warning status code as defined in the + documentation via code (e.g. 22) or type ('Warning', 'Warnung'). + """ + caplog.set_level(logging.WARNING) + + for status in [ + _generic_request_status(code=22), + _generic_request_status(status_type="Warnung"), + _generic_request_status(status_type="Warning"), + ]: + # extract status content which is contained in warning + status_content = status.json().get("Status").get("Content") + + _check_invalid_destatis_status_code(status) + + assert status_content in caplog.text + + +def test_check_invalid_destatis_status_code_without_error(caplog): + """ + Basic tests to check the successful status code 0 or only text response as defined in the documentation. + """ + # JSON response with status code + caplog.set_level(logging.INFO) + status = _generic_request_status() + status_content = status.json().get("Status").get("Content") + _check_invalid_destatis_status_code(status) + + assert status_content in caplog.text + + # text only response + status_text = _generic_request_status(status_response=False) + try: + _check_invalid_destatis_status_code(status_text) + except Exception: + assert False + + +def test_get_job_id_from_response(): + response = requests.Response() + response._content = """{"Status": {"Content": "Der Bearbeitungsauftrag wurde erstellt. Die Tabelle kann in Kürze als Ergebnis mit folgendem Namen abgerufen werden: 42153-0001_001597503 (Mindestens ein Parameter enthält ungültige Werte. Er wurde angepasst, um den Service starten zu können.: stand"}}""".encode() + job_id = get_job_id_from_response(response) + assert job_id == "42153-0001_001597503" + + +def test_get_job_id_from_response_with_no_id(): + response = requests.Response() + response._content = """{"Status": {"Content": "Der Bearbeitungsauftrag wurde erstellt."}}""".encode() + job_id = get_job_id_from_response(response) + assert job_id == "" + + +def test_get_job_id_from_response_with_no_json(): + response = requests.Response() + response._content = "Der Bearbeitungsauftrag wurde erstellt. Die Tabelle kann in Kürze als Ergebnis mit folgendem Namen abgerufen werden: 42153-0001_001597503 (Mindestens ein Parameter enthält ungültige Werte. Er wurde angepasst, um den Service starten zu können.: stand".encode() + job_id = get_job_id_from_response(response) + assert job_id == "" diff --git a/tests/test_profile.py b/tests/test_profile.py new file mode 100644 index 0000000..a3f6571 --- /dev/null +++ b/tests/test_profile.py @@ -0,0 +1,74 @@ +import re +from configparser import ConfigParser +from pathlib import Path + +import pytest + +from pystatis.profile import change_password, remove_result +from tests.test_http_helper import _generic_request_status + + +@pytest.fixture() +def cache_dir(tmp_path_factory): + # remove white-space and non-latin characters (issue fo some user names) + temp_dir = str(tmp_path_factory.mktemp(".pystatis")) + temp_dir = re.sub(r"[^\x00-\x7f]", r"", temp_dir.replace(" ", "")) + + return Path(temp_dir) + + +def test_change_password(mocker, cache_dir): + # mock configparser to be able to test writing of new password + config = ConfigParser() + config["GENESIS API"] = { + "base_url": "mocked_url", + "username": "JaneDoe", + "password": "password", + } + mocker.patch("pystatis.profile.load_config", return_value=config) + mocker.patch( + "pystatis.profile.load_data", + return_value=str(_generic_request_status().text), + ) + mocker.patch( + "pystatis.profile.get_config_path_from_settings", + return_value=cache_dir / "config.ini", + ) + + response = change_password("new_password") + + assert response == str(_generic_request_status().text) + + +def test_change_password_keyerror(mocker, cache_dir): + # define empty config (no password) + mocker.patch( + "pystatis.profile.load_config", return_value={"GENESIS API": {}} + ) + mocker.patch( + "pystatis.profile.load_data", + return_value=str(_generic_request_status().text), + ) + mocker.patch( + "pystatis.profile.get_config_path_from_settings", + return_value=cache_dir / "config.ini", + ) + + with pytest.raises(KeyError) as e: + change_password("new_password") + assert ( + "Password not found in config! Please make sure \ + init_config() was run properly & your user data is set correctly!" + in str(e.value) + ) + + +def test_remove_result(mocker): + mocker.patch( + "pystatis.profile.load_data", + return_value=str(_generic_request_status().text), + ) + + response = remove_result("11111-0001") + + assert response == str(_generic_request_status().text) diff --git a/tests/test_pygenesis.py b/tests/test_version.py similarity index 62% rename from tests/test_pygenesis.py rename to tests/test_version.py index fe699e2..8f057ce 100644 --- a/tests/test_pygenesis.py +++ b/tests/test_version.py @@ -1,4 +1,4 @@ -from pygenesis import __version__ +from pystatis import __version__ def test_version():