diff --git a/.gitattributes b/.gitattributes
index c14a61b0d97d7..ddc0535b13c51 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5,6 +5,7 @@
*.vcxproj text eol=crlf
*.props text eol=crlf
*.bat text eol=crlf
+*.cmd text eol=crlf
# These are binary so should never be modified by git.
*.a binary
diff --git a/.github/workflows/ports_psoc6.yml b/.github/workflows/ports_psoc6.yml
new file mode 100644
index 0000000000000..02247a5698f9f
--- /dev/null
+++ b/.github/workflows/ports_psoc6.yml
@@ -0,0 +1,111 @@
+name: psoc6 port
+on:
+ push:
+ pull_request:
+ paths:
+ - '.github/workflows/*.yml'
+ - 'tools/**'
+ - 'py/**'
+ - 'extmod/**'
+ - 'shared/**'
+ - 'lib/**'
+ - 'drivers/**'
+ - 'ports/psoc6/**'
+
+jobs:
+ server-build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ board:
+ - CY8CPROTO-062-4343W
+ - CY8CPROTO-063-BLE
+ - CY8CKIT-062S2-AI
+ outputs:
+ commit_sha: ${{ steps.commit_sha.outputs.sha_short }}
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install packages
+ run: source tools/ci.sh && ci_psoc6_setup
+ - name: Build
+ run: source tools/ci.sh && ci_psoc6_build ${{ matrix.board }}
+
+ # Steps only relevant for Infineon fork
+ # with self-hosted runner available
+ - name: Gets commit SHA
+ if: success() && github.repository_owner == 'infineon'
+ id: commit_sha
+ run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
+ - name: Save firmware bin
+ if: success() && github.repository_owner == 'infineon'
+ uses: actions/upload-artifact@v4
+ with:
+ name: mpy-psoc6_${{ matrix.board }}_${{ steps.commit_sha.outputs.sha_short }}
+ path: ports/psoc6/build-${{ matrix.board }}/firmware.hex
+
+ # Jobs only relevant for Infineon fork
+ on-target-test:
+ if: github.repository_owner == 'infineon'
+ runs-on: self-hosted
+ needs: server-build
+ strategy:
+ fail-fast: false
+ matrix:
+ board:
+ - CY8CPROTO-062-4343W
+ - CY8CPROTO-063-BLE
+ - CY8CKIT-062S2-AI
+ steps:
+ - uses: actions/checkout@v4
+ - name: Download binaries
+ uses: actions/download-artifact@v4
+ - name: Container setup
+ run: |
+ echo ${{ secrets.SELF_HOSTED_PASSWORD }} | sudo -S chmod 666 /var/run/docker.sock
+ source tools/ci.sh && ci_psoc6_setup
+ - name: Setup devices
+ run: |
+ cp mpy-psoc6_${{ matrix.board }}_${{ needs.server-build.outputs.commit_sha }}/firmware.hex .
+ source tools/ci.sh && ci_psoc6_flash_multiple_devices ${{ matrix.board }} firmware.hex tests/ports/psoc6/${{ runner.name }}-devs.yml
+ - name: Run psoc6 tests
+ timeout-minutes: 20
+ env:
+ psoc6_test_dir: ../../tests/ports/psoc6
+ run: |
+ cd lib/mpy-test-ext
+ python -u run_test_plan.py --board ${{ matrix.board }} --max-retries 2 --test-plan $psoc6_test_dir/test-plan.yml --hil-devs $psoc6_test_dir/${{ runner.name }}-devs.yml
+
+ - name: Container teardown
+ if: failure() || success()
+ run: |
+ source tools/ci.sh && ci_psoc6_teardown
+
+ release:
+ runs-on: ubuntu-latest
+ needs: [server-build, on-target-test]
+ strategy:
+ matrix:
+ board:
+ - CY8CPROTO-062-4343W
+ - CY8CPROTO-063-BLE
+ - CY8CKIT-062S2-AI
+ if: startsWith(github.ref, 'refs/tags/v') && github.repository_owner == 'infineon'
+ steps:
+ - name: Download binaries
+ uses: actions/download-artifact@v4
+ - name: Prepare release assets
+ run: |
+ cd mpy-psoc6_${{ matrix.board }}_${{ needs.server-build.outputs.commit_sha }}
+ mv firmware.hex ../mpy-psoc6_${{ matrix.board }}.hex
+ - name: Build release changelog
+ id: build_changelog
+ uses: mikepenz/release-changelog-builder-action@v3
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Release
+ uses: softprops/action-gh-release@v1
+ with:
+ name: Micropython PSoC6 ${{ github.ref_name }}
+ files: mpy-psoc6_${{ matrix.board }}.hex
+ body: ${{steps.build_changelog.outputs.changelog}}
\ No newline at end of file
diff --git a/.github/workflows/stale_issues.yml b/.github/workflows/stale_issues.yml
new file mode 100644
index 0000000000000..82f817a494969
--- /dev/null
+++ b/.github/workflows/stale_issues.yml
@@ -0,0 +1,8 @@
+name: 'Close stale issues/PRs'
+on:
+ schedule:
+ - cron: "50 14 */2 * *"
+
+jobs:
+ call-workflow:
+ uses: Infineon/workflows/.github/workflows/epe_stale_issues.yml@master
\ No newline at end of file
diff --git a/.github/workflows/synch_upstream.yml b/.github/workflows/synch_upstream.yml
new file mode 100644
index 0000000000000..93634b9cf3d43
--- /dev/null
+++ b/.github/workflows/synch_upstream.yml
@@ -0,0 +1,72 @@
+name: Sync Upstream
+
+on:
+ schedule:
+ - cron: '0 0 */1 * *' # daily 00:00
+ workflow_dispatch: # on button click
+
+jobs:
+ synch_master:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout target repo
+ uses: actions/checkout@v4
+ with:
+ ref: master
+ token: ${{ secrets.GH_ACT_SYNCH_UPSTREAM }}
+
+ - name: Sync upstream changes
+ id: sync
+ uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1
+ with:
+ target_sync_branch: master
+ target_repo_token: ${{ secrets.GH_ACT_SYNCH_UPSTREAM }}
+ upstream_sync_branch: master
+ upstream_sync_repo: micropython/micropython
+ git_config_pull_rebase: true
+
+
+ - name: New commits found
+ if: steps.sync.outputs.has_new_commits == 'true'
+ run: echo "New commits were found to sync."
+
+ - name: No new commits
+ if: steps.sync.outputs.has_new_commits == 'false'
+ run: echo "There were no new commits."
+
+ - name: Show value of 'has_new_commits'
+ run: echo ${{ steps.sync.outputs.has_new_commits }}
+
+ synch_port_psoc6:
+ runs-on: ubuntu-latest
+ needs: synch_master
+
+ steps:
+ - name: Checkout target repo
+ uses: actions/checkout@v4
+ with:
+ ref: ports-psoc6-main
+ token: ${{ secrets.GH_ACT_SYNCH_UPSTREAM }}
+
+ - name: Sync upstream changes
+ id: sync
+ uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1
+ with:
+ target_sync_branch: ports-psoc6-main
+ target_repo_token: ${{ secrets.GH_ACT_SYNCH_UPSTREAM }}
+ upstream_sync_branch: master
+ upstream_sync_repo: micropython/micropython
+ git_config_pull_rebase: true
+ target_branch_push_args: '--force'
+
+ - name: New commits found
+ if: steps.sync.outputs.has_new_commits == 'true'
+ run: echo "New commits were found to sync."
+
+ - name: No new commits
+ if: steps.sync.outputs.has_new_commits == 'false'
+ run: echo "There were no new commits."
+
+ - name: Show value of 'has_new_commits'
+ run: echo ${{ steps.sync.outputs.has_new_commits }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 56616426fb27a..620e97617237f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,6 @@ user.props
# Created by ci.sh esp8266 targets
/xtensa-lx106-elf-standalone.tar.gz
/xtensa-lx106-elf/
+
+# mtb downloadable libs
+lib/mtb_shared
diff --git a/.gitmodules b/.gitmodules
index d2c229dd6d751..d92d4f6737b63 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -74,3 +74,9 @@
[submodule "lib/alif-security-toolkit"]
path = lib/alif-security-toolkit
url = https://github.com/micropython/alif-security-toolkit.git
+[submodule "lib/mtb-psoc6-libs"]
+ path = lib/mtb-psoc6-libs
+ url = https://github.com/Infineon/mtb-micropython-psoc6-port-integration.git
+[submodule "lib/mpy-test-ext"]
+ path = lib/mpy-test-ext
+ url = https://github.com/Infineon/mpy-test-ext.git
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 0000000000000..c1049bfaa97a6
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,22 @@
+# .readthedocs.yaml
+# Read the Docs configuration file
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+# Set the version of Python and other tools you might need
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.11"
+
+# Build documentation in the docs/ directory with Sphinx
+sphinx:
+ configuration: docs/conf.py
+
+# We recommend specifying your dependencies to enable reproducible builds:
+# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
+python:
+ install:
+ - requirements: docs/requirements.txt
\ No newline at end of file
diff --git a/README.md b/README.md
index 375ff17d92481..b008f5fd8f7ae 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[](https://github.com/micropython/micropython/actions?query=branch%3Amaster+event%3Apush) [](https://github.com/micropython/micropython/actions?query=branch%3Amaster+event%3Apush) [](https://docs.micropython.org/) [](https://codecov.io/gh/micropython/micropython)
+[](https://github.com/Infineon/micropython/actions?query=branch%3Aports-psoc6-main+event%3Apush) [](https://ifx-micropython.readthedocs.io/en/latest/psoc6/quickref.html) [](https://codecov.io/gh/micropython/micropython)
The MicroPython project
=======================
@@ -35,23 +35,19 @@ DAC, PWM, SPI, I2C, CAN, Bluetooth, and USB.
Getting started
---------------
-See the [online documentation](https://docs.micropython.org/) for the API
-reference and information about using MicroPython and information about how
+See the [online documentation (Infineon PSoC6 port ReadTheDocs fork)](https://ifx-micropython.readthedocs.io/en/latest/psoc6/quickref.html) for API
+references and information about using MicroPython and information about how
it is implemented.
-We use [GitHub Discussions](https://github.com/micropython/micropython/discussions)
-as our forum, and [Discord](https://discord.gg/RB8HZSAExQ) for chat. These
-are great places to ask questions and advice from the community or to discuss your
+We use [GitHub Discussions (Infineon PSoC6 fork)](https://github.com/Infineon/micropython/discussions)
+as our forum. This
+is a great place to ask questions and advice from the community or to discuss your
MicroPython-based projects.
-For bugs and feature requests, please [raise an issue](https://github.com/micropython/micropython/issues/new/choose)
+For bugs and feature requests, please [raise an issue (Infineon PSoC6 fork)](https://github.com/Infineon/micropython/issues/new/choose)
and follow the templates there.
-For information about the [MicroPython pyboard](https://store.micropython.org/pyb-features),
-the officially supported board from the
-[original Kickstarter campaign](https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers),
-see the [schematics and pinouts](http://github.com/micropython/pyboard) and
-[documentation](https://docs.micropython.org/en/latest/pyboard/quickref.html).
+For information about the MicroPython PSoC supported boards see the [documentation (Infineon PSoC6 port ReadTheDocs fork)](https://ifx-micropython.readthedocs.io/en/latest/psoc6/general.html#supported-boards).
Contributing
------------
@@ -112,6 +108,7 @@ are mature and have the most active development, support and testing:
|--------------------------|----------------------------------------------------------------------------------------|----------------------------------------------------------------------|
| [esp32](ports/esp32)* | Espressif ESP32 SoCs (ESP32, ESP32S2, ESP32S3, ESP32C3, ESP32C6) | [here](https://docs.micropython.org/en/latest/esp32/quickref.html) |
| [mimxrt](ports/mimxrt) | NXP m.iMX RT | [here](https://docs.micropython.org/en/latest/mimxrt/quickref.html) |
+| [psoc6](ports/psoc6) | Infineon PSOC6 | [here](https://ifx-micropython.readthedocs.io/en/latest/psoc6/quickref.html) |
| [rp2](ports/rp2) | Raspberry Pi RP2040 and RP2350 | [here](https://docs.micropython.org/en/latest/rp2/quickref.html) |
| [samd](ports/samd) | Microchip (formerly Atmel) SAMD21 and SAMD51 | [here](https://docs.micropython.org/en/latest/samd/quickref.html) |
| [stm32](ports/stm32) | STMicroelectronics STM32 MCUs (F0, F4, F7, G0, G4, H5, H7, L0, L1, L4, N6, WB, WL) | [here](https://docs.micropython.org/en/latest/pyboard/quickref.html) |
diff --git a/docs/README.md b/docs/README.md
index 9b3b036e063a6..fdecc924aba32 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -17,6 +17,7 @@ Install Sphinx and sphinx_rtd_theme, preferably in a virtualenv:
pip install sphinx
pip install sphinx_rtd_theme
+ pip install sphinx-tabs
In `micropython/docs`, build the docs:
diff --git a/docs/conf.py b/docs/conf.py
index 603543aa18c7e..d7927f97bd848 100755
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -56,6 +56,7 @@
"sphinx.ext.coverage",
"sphinxcontrib.jquery",
"sphinx_rtd_theme",
+ "sphinx_tabs.tabs",
]
# Add any paths that contain templates here, relative to this directory.
@@ -129,9 +130,15 @@
# -- Options for HTML output ----------------------------------------------
-import sphinx_rtd_theme
+# on_rtd is whether we are on readthedocs.org
+try:
+ import sphinx_rtd_theme
-html_theme = "sphinx_rtd_theme"
+ html_theme = "sphinx_rtd_theme"
+ html_theme_path = ["."]
+except:
+ html_theme = "default"
+ html_theme_path = ["."]
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
diff --git a/docs/index.rst b/docs/index.rst
index 64b83618da149..d0b2e86da03f0 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -13,6 +13,7 @@ MicroPython documentation and references
esp32/quickref.rst
rp2/quickref.rst
mimxrt/quickref.rst
+ psoc6/quickref.rst
wipy/quickref.rst
unix/quickref.rst
zephyr/quickref.rst
diff --git a/docs/psoc6/general.rst b/docs/psoc6/general.rst
new file mode 100644
index 0000000000000..d0e0d0decbdd4
--- /dev/null
+++ b/docs/psoc6/general.rst
@@ -0,0 +1,89 @@
+.. _psoc6_general:
+
+General information about the PSoC6™ port
+=========================================
+
+The PSoC™ 6 family is built on an ultra-low-power architecture, and the MCUs feature low-power design catering to tailored application domains.
+The PSoC6™ port supports boards powered by the `Infineon PSoC6 family of microcontrollers `_ and currently supports the following MCUs:
+
+* PSoC™ 62 - Performance
+* PSoC™ 63 - Bluetooth™ Low Energy
+
+.. _Supported boards:
+
+Supported boards
+^^^^^^^^^^^^^^^^^
+
+The following boards are supported on this port:
+
+.. list-table::
+ :widths: 20 20 50
+ :header-rows: 1
+
+ * - Board name
+ - Connectivity
+ - Special feature
+ * - CY8CPROTO-062-4343W
+ - Wi-Fi, BT
+ - microSD card slot, external flash memory, thermistor, user button
+ * - CY8CPROTO-063-BLE
+ - BLE
+ - user button, compact form factor
+ * - CY8CKIT-062S2-AI
+ - Wi-Fi, BT
+ - user button, compact form factor, USB-C, MEMS microphone, radar sensor, pressure sensor, 6-axis IMU, 3-axis magnetometer
+
+For more hardware-related details, refer to the following sections.
+
+CY8CPROTO-062-4343W
+--------------------
+
+Pinout
+******
+
+ .. image:: img/CY8CPROTO-062-4343W-pinout.png
+ :width: 500
+
+
+Technical specifications
+************************
+Links for product details:
+
+* `CY8CPROTO-062-4343W product page with relevant documents `_
+* `CY8CPROTO-062-4343W MCU Datasheet `_
+
+CY8CPROTO-063-BLE
+-----------------
+
+Pinout
+******
+
+ .. image:: img/CY8CPROTO-063-BLE-pinout.png
+ :width: 350
+
+
+Technical specifications
+************************
+Links for product details:
+
+* `CY8CPROTO-063-BLE product page with relevant documents `_
+* `CY8CPROTO-063-BLE MCU Datasheet `_
+
+CY8CKIT-062S2-AI
+----------------
+
+Pinout
+******
+
+ .. image:: img/CY8CKIT-062S2-AI-pinout.png
+ :width: 500
+
+
+Technical specifications
+************************
+Links for product details:
+
+* `CY8CKIT-062S2-AI product page with relevant documents `_
+* `CY8CKIT-062S2-AI MCU Datasheet `_
+
+
diff --git a/docs/psoc6/img/CY8CKIT-062S2-AI-pinout.png b/docs/psoc6/img/CY8CKIT-062S2-AI-pinout.png
new file mode 100644
index 0000000000000..eebf4c2b239b8
Binary files /dev/null and b/docs/psoc6/img/CY8CKIT-062S2-AI-pinout.png differ
diff --git a/docs/psoc6/img/CY8CPROTO-062-4343W-pinout.png b/docs/psoc6/img/CY8CPROTO-062-4343W-pinout.png
new file mode 100644
index 0000000000000..340f1cba0eb72
Binary files /dev/null and b/docs/psoc6/img/CY8CPROTO-062-4343W-pinout.png differ
diff --git a/docs/psoc6/img/CY8CPROTO-063-BLE-pinout.png b/docs/psoc6/img/CY8CPROTO-063-BLE-pinout.png
new file mode 100644
index 0000000000000..f7f71987d7154
Binary files /dev/null and b/docs/psoc6/img/CY8CPROTO-063-BLE-pinout.png differ
diff --git a/docs/psoc6/img/cy-programmer.jpg b/docs/psoc6/img/cy-programmer.jpg
new file mode 100644
index 0000000000000..fd03abcde586e
Binary files /dev/null and b/docs/psoc6/img/cy-programmer.jpg differ
diff --git a/docs/psoc6/img/cy8cproto-062-4343w.jpg b/docs/psoc6/img/cy8cproto-062-4343w.jpg
new file mode 100644
index 0000000000000..b7b6ed96e5f3a
Binary files /dev/null and b/docs/psoc6/img/cy8cproto-062-4343w.jpg differ
diff --git a/docs/psoc6/img/cy8cproto-063-ble.jpg b/docs/psoc6/img/cy8cproto-063-ble.jpg
new file mode 100644
index 0000000000000..d6ababeae4911
Binary files /dev/null and b/docs/psoc6/img/cy8cproto-063-ble.jpg differ
diff --git a/docs/psoc6/img/gh-releases.png b/docs/psoc6/img/gh-releases.png
new file mode 100644
index 0000000000000..c60c52404bfac
Binary files /dev/null and b/docs/psoc6/img/gh-releases.png differ
diff --git a/docs/psoc6/img/mpy-ide-connect.jpg b/docs/psoc6/img/mpy-ide-connect.jpg
new file mode 100644
index 0000000000000..9292663e96f6f
Binary files /dev/null and b/docs/psoc6/img/mpy-ide-connect.jpg differ
diff --git a/docs/psoc6/img/mpy-ide-prompt.jpg b/docs/psoc6/img/mpy-ide-prompt.jpg
new file mode 100644
index 0000000000000..8a9ccdc9c7741
Binary files /dev/null and b/docs/psoc6/img/mpy-ide-prompt.jpg differ
diff --git a/docs/psoc6/img/mpy-ide-script.jpg b/docs/psoc6/img/mpy-ide-script.jpg
new file mode 100644
index 0000000000000..f1dadf29aec0b
Binary files /dev/null and b/docs/psoc6/img/mpy-ide-script.jpg differ
diff --git a/docs/psoc6/img/mpy-ide-vfs.png b/docs/psoc6/img/mpy-ide-vfs.png
new file mode 100644
index 0000000000000..efb3d4d740c2a
Binary files /dev/null and b/docs/psoc6/img/mpy-ide-vfs.png differ
diff --git a/docs/psoc6/img/mpy-psoc6-repl.jpg b/docs/psoc6/img/mpy-psoc6-repl.jpg
new file mode 100644
index 0000000000000..c216d006c2221
Binary files /dev/null and b/docs/psoc6/img/mpy-psoc6-repl.jpg differ
diff --git a/docs/psoc6/img/mpy-thonny-filesystem.jpg b/docs/psoc6/img/mpy-thonny-filesystem.jpg
new file mode 100755
index 0000000000000..ac60f9c8bc9da
Binary files /dev/null and b/docs/psoc6/img/mpy-thonny-filesystem.jpg differ
diff --git a/docs/psoc6/installation.rst b/docs/psoc6/installation.rst
new file mode 100644
index 0000000000000..5373110a79704
--- /dev/null
+++ b/docs/psoc6/installation.rst
@@ -0,0 +1,140 @@
+.. _psoc6_mpy_install:
+
+Installing MicroPython
+======================
+
+To facilitate the installation of the MicroPython PSoC6™ port, the ``mpy-psoc6.py`` Python script is provided. It is compatible with Windows,
+Linux and MacOS.
+
+You can easily download the script from the terminal with the following command:
+
+.. code-block:: bash
+
+ $ curl -s -L https://raw.githubusercontent.com/infineon/micropython/ports-psoc6-main/tools/psoc6/mpy-psoc6.py > mpy-psoc6.py
+
+Ensure you have a recent version of `Python3.x `_ installed and the `pip `_ package installer.
+Then install the following packages:
+
+.. code-block:: bash
+
+ $ pip install requests
+
+Find all available commands and options by running the script with the following command:
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py --help
+
+.. _psoc6_device_setup:
+
+Device setup
+-------------
+
+In order to setup MicroPython in a PSoC6™ board, the ``device-setup`` command of the ``mpy-psoc6.py``
+utility can be executed. Follow the instructions to select the target PSoC6™ board, and deploy the latest
+MicropPython firmware version:
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py device-setup
+
+You can run this command whenever you want to upgrade to the latest MicroPython firmware version.
+This command will take care of the following steps:
+
+* Download and install openocd, which is the software required to deploy a firmware file on PSoC6™ controllers
+* Download the latest ``.hex`` file for your selected board
+* Deploy the latest version of MicroPython firmware on your board
+
+Install a previous version
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you want to setup the device with a previous firmware version, you can check the list of available releases in the `GitHub release section `_.
+
+The ``device-setup`` command can also assist you with this process. In this case, the board and the desired
+version needs to be passed as arguments.
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py device-setup -b CY8CPROTO-062-4343W -v v0.1.1
+
+.. warning::
+
+ Be sure to provide the board name as shown in the ``device-setup`` command when running in interactive mode.
+ Also, provide a valid tag that exists in the release section, in the format *vx.y.z*.
+ No fail-safe mechanisms or error verifications are (yet) implemented on the ``mpy-psoc6.py`` utility, and the script will fail to retrieve the necessary firmware file.
+
+Updating the flasher firmware
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The evaluation PSoC6™ boards include an integrated hardware programmer tool using `KitProg `_ firmware.
+Some older boards may come pre-flashed with KitProg version 2. For the MicroPython PSoC6™ port, KitProg version 3 is required, and the setup process will fail if version 2 is used.
+
+In case of failure during ``device-setup``, the option ``--kitprog-fw-update`` can be added to the command.
+This will update the KitProg firmware to version 3 before flashing the MicroPython firmware.
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py device-setup --kitprog-fw-update
+
+Direct binary flashing
+----------------------
+
+Another way to program the board is by directly providing the binary file. This can be done using the ``firmware-deploy`` command.
+Specify the board and the path and name of the ``.hex`` file as follows:
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py firmware-deploy -b CY8CPROTO-062-4343W -f pathtodir/mpy-psoc6_CY8CPROTO-062-4343W.hex
+
+Erasing the device (external) file system
+-----------------------------------------
+
+Some PSoC6™ boards include an external flash memory which is used by the MicroPython file system. This memory will not be erased when
+reprogramming or erasing MicroPython firmware via ``device-setup`` or ``firmware-deploy``.
+Use the ``device-erase`` command to erase the external memory of your PSoC6™ device:
+
+ .. code-block:: bash
+
+ $ python mpy-psoc6.py device-erase
+
+.. warning::
+
+ This command flashes the PSoC6™ controller with a custom program to delete the external memory. Thus, MicroPython will be removed from the
+ microcontroller. Use any of the script commands described above to reinstall MicroPython.
+
+Getting the firmware
+^^^^^^^^^^^^^^^^^^^^
+
+The binary *.hex* files are available in the `GitHub release section `_.
+All PSoC6™ firmware versions for each of the supported boards can be found there.
+
+
+ .. image:: img/gh-releases.png
+ :alt: GitHub MicroPython Releases
+ :width: 520px
+
+
+Other installation methods
+--------------------------
+
+Cypress Programmer
+^^^^^^^^^^^^^^^^^^
+
+Alternatively, you can directly flash the firmware binary file with the `Cypress Programmer
+`_
+It allows you to program the PSoC6™ microcontroller family with just a few clicks from your Windows, Linux, or MacOS machine.
+Follow the instructions at the provided link to download and install the tool.
+
+After that, select the downloaded MicroPython firmware *.hex* file to be deployed on the PSoC6™. Then, in
+the upper menu, select the connected *Probe/Kit*, click on *Connect*, and finally click on *Program*.
+The log section will show the progress and notify you when the firmware deployment on the controller is completed.
+
+.. image:: img/cy-programmer.jpg
+ :alt: Cypress Programmer GUI
+ :width: 520px
+
+For a detailed description on how to use the Cypress Programmer tool, please consult the `Cypress
+Programmer User Guide
+`_.
+
+
diff --git a/docs/psoc6/integrations/deepcraft_integration.rst b/docs/psoc6/integrations/deepcraft_integration.rst
new file mode 100644
index 0000000000000..a68a82349072e
--- /dev/null
+++ b/docs/psoc6/integrations/deepcraft_integration.rst
@@ -0,0 +1,72 @@
+.. _psoc6_mpy_deepcraft_integration:
+
+MicroPython - DEEPCRAFT™ Integration
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+`DEEPCRAFT™ `_ is Infineon's comprehensive new Edge AI software & tools offering designed to fastrack edge machine learning
+application development.
+
+`DEEPCRAFT™ Studio`_ is a development platform for AI on edge devices. It provides unique modeling capabilities
+to make custom edge AI models for PSOC-based hardware. Its integration with MicroPython allows an easy end-to-end
+application development and deployment journey.
+
+Follow along to build your first edge Machine Learning (ML) application with MicroPython and DEEPCRAFT™ Studio. 🚀
+
+Overview
+=========
+This solution follows a standard edge ML application workflow, consisting of two primary phases: training and inferencing.
+The training phase is efficiently managed within DEEPCRAFT™ Studio.
+
+The diagrams below provide a detailed overview of the workflows for both phases, highlighting the tools and steps involved,
+from data acquisition to model deployment.
+
+.. image:: img/training_phase.png
+ :width: 1000
+
+During the training phase, the edge device executes a MicroPython script that streams raw sensor data to a host machine. A capture server running on the host
+receives this data and stores it as timestamped files. These files are then imported into DEEPCRAFT™ Studio, where they undergo labeling, preprocessing,
+and are used to train a machine learning model tailored to the specific application. With MicroPython integration, the trained model can be effortlessly converted
+into a runtime-loadable format and deployed to the device's filesystem. This streamlined workflow, which supports iterative tuning for optimal accuracy,
+greatly simplifies the model conversion and deployment process.
+
+
+.. image:: img/inferencing_phase.png
+ :width: 1000
+
+After achieving satisfactory accuracy, the model is ready for deployment in the final application. During this phase, a MicroPython script stored on the edge device's filesystem
+manages sensor data acquisition and feeds it to the dynamically loaded model. The pre-trained model processes the input data and generates class probabilities based on the learned patterns.
+These outputs can then be utilized to trigger actions through peripherals (e.g., LEDs, buzzers) or transmitted to external interfaces, such as a web dashboard, for visualization.
+
+With this streamlined development workflow, let's proceed to build a complete edge ML application step by step.
+
+Pre-requisites
+================
+
+Ensure the following tools are installed on your system:
+
+1. `DEEPCRAFT™ Studio`_
+2. `Capture Server cloned in your local `_
+
+Supported Boards
+==================
+- `CY8CKIT-062S2-AI `_
+
+1. Data Acquisition
+======================
+
+This part is covered in the `data acquisition repository `_, which provides
+instructions and examples for data acquisition using MicroPython.
+
+2. Model Deployment
+=====================
+
+This part is covered in the `model converter repository `_, which provides instructions
+on how to convert a DEEPCRAFT™ model into a MicroPython-compatible format and deploy it on the PSOC board.
+
+.. note:: This is WIP and soon to be made available!
+
+Example Projects
+==================
+- `Edge AI-based baby cry detector with Home Assistant integration `_
+
+.. _DEEPCRAFT™ Studio: https://softwaretools.infineon.com/tools/com.ifx.tb.tool.deepcraftstudio
\ No newline at end of file
diff --git a/docs/psoc6/integrations/img/deployment_script_addition.png b/docs/psoc6/integrations/img/deployment_script_addition.png
new file mode 100644
index 0000000000000..dc8540b1d30dd
Binary files /dev/null and b/docs/psoc6/integrations/img/deployment_script_addition.png differ
diff --git a/docs/psoc6/integrations/img/inferencing_phase.png b/docs/psoc6/integrations/img/inferencing_phase.png
new file mode 100644
index 0000000000000..69c72e11426ee
Binary files /dev/null and b/docs/psoc6/integrations/img/inferencing_phase.png differ
diff --git a/docs/psoc6/integrations/img/training_add_data.png b/docs/psoc6/integrations/img/training_add_data.png
new file mode 100644
index 0000000000000..d9ca22881bf55
Binary files /dev/null and b/docs/psoc6/integrations/img/training_add_data.png differ
diff --git a/docs/psoc6/integrations/img/training_data_session.png b/docs/psoc6/integrations/img/training_data_session.png
new file mode 100644
index 0000000000000..4b539b28a0d31
Binary files /dev/null and b/docs/psoc6/integrations/img/training_data_session.png differ
diff --git a/docs/psoc6/integrations/img/training_data_view.png b/docs/psoc6/integrations/img/training_data_view.png
new file mode 100644
index 0000000000000..442f763915858
Binary files /dev/null and b/docs/psoc6/integrations/img/training_data_view.png differ
diff --git a/docs/psoc6/integrations/img/training_phase.png b/docs/psoc6/integrations/img/training_phase.png
new file mode 100644
index 0000000000000..ae7ca57bde723
Binary files /dev/null and b/docs/psoc6/integrations/img/training_phase.png differ
diff --git a/docs/psoc6/intro.rst b/docs/psoc6/intro.rst
new file mode 100644
index 0000000000000..0478468cd532a
--- /dev/null
+++ b/docs/psoc6/intro.rst
@@ -0,0 +1,119 @@
+.. _psoc6_intro:
+
+Getting started with MicroPython on the PSoC6™
+==============================================
+
+This tutorial will guide you on how to get started with running MicroPython on PSoC6™ microcontrollers.
+There are only a few steps keeping you away from enjoying the Python programming experience together
+with the possibilities of PSoC6™ microcontrollers.
+
+Let's get started!
+
+Requirements
+------------
+
+The only required hardware is:
+
+* A PSoC6™ board from the :ref:`Supported boards` list.
+* A micro USB cable.
+
+Power the board
+------------------
+
+Connect the USB cable to your computer and the micro USB end to the board debugger. All PSoC6™ boards come with an onboard debugger required for flashing and debugging operations during development. Please refer to your board's manual.
+
+Install MicroPython on the board
+--------------------------------
+
+In your computer terminal, type the following commands and follow the instructions provided.
+
+First, download the ``mpy-psoc6.py`` utility script:
+
+.. code-block:: bash
+
+ $ curl -s -L https://raw.githubusercontent.com/infineon/micropython/ports-psoc6-main/tools/psoc6/mpy-psoc6.py > mpy-psoc6.py
+
+Ensure you have a recent version of `Python3.x `_ installed and the `pip `_ package installer.
+Then install the following packages:
+
+.. code-block:: bash
+
+ $ pip install requests
+
+Finally, run the script:
+
+.. code-block:: bash
+
+ $ python mpy-psoc6.py device-setup
+
+These commands will download and run the :ref:`device-setup ` command of the mpy-psoc6 utility and take
+care of all the necessary installation steps.
+
+If everything went fine, your PSoC6™ board is now running MicroPython. If you run into any trouble, please let us know `here `_ :)
+
+Use a MicroPython IDE
+-------------------------
+
+There are multiple ways to interact with and program your MicroPython device. You can find more information about it in this :ref:`section `.
+
+For this getting started guide, we recommend using the minimalist `Arduino Lab For MicropPython `_.
+
+Once installed, open the application and select the serial port of your PSoC6™ board by clicking on the connect icon on the menu bar:
+
+.. image:: img/mpy-ide-connect.jpg
+ :alt: Arduino IDE connect
+ :width: 520px
+
+
+Interact with the MicroPython prompt
+------------------------------------
+
+As in Python, you can use the prompt mode. Simply start typing some Python commands:
+
+.. image:: img/mpy-ide-prompt.jpg
+ :alt: Arduino IDE prompt
+ :width: 520px
+
+Run your first script
+---------------------
+
+Let's try now to run a MicroPython script. As a first example, you will turn on the board LED.
+
+Copy the following code in the editor and click on run.
+
+.. code-block:: python
+
+ from machine import Signal, Pin
+ pin = Pin("P13_7", Pin.OUT) # LED pin for CY8CPROTO-062-4343W
+ led = Signal(pin, invert=True) # Onboard LED is active low, hence invert=True
+ led.on()
+
+.. image:: img/mpy-ide-script.jpg
+ :alt: Arduino IDE script
+ :width: 520px
+
+The red LED on the board should now be on.
+
+Upload a script to your device
+------------------------------
+
+Click on the ``Files`` tab to transfer files between your computer and the MicroPython device.
+Like with any other storage, you can upload any type of file and format as required by your application, not just *.py* program files.
+
+If you name a file ``main.py`` and save it in your device, it will be automatically executed during the boot of the MicroPython device.
+
+.. image:: img/mpy-ide-vfs.png
+ :alt: Arduino IDE script
+ :width: 520px
+
+You are all set now to start programming with MicroPython!
+
+.. warning::
+
+ Adding *indefinitely* blocking loops to the ``main.py`` program might block access to the storage device. It is recommended to use the ``main.py`` script only once it is stable, tested, and intended for standalone operation.
+
+Learn more about MicroPython in the following sections:
+
+* :ref:`MicroPython libraries ` .
+* :ref:`Quick reference for PSoC6™ `.
+* :ref:`Working with MicroPython `.
diff --git a/docs/psoc6/mpy-usage.rst b/docs/psoc6/mpy-usage.rst
new file mode 100644
index 0000000000000..2494d1c00c751
--- /dev/null
+++ b/docs/psoc6/mpy-usage.rst
@@ -0,0 +1,197 @@
+.. _psoc6_mpy_usage:
+
+Working with MicroPython
+=========================
+
+With MicroPython already installed on your board, there are several flavors and tools to work with MicroPython. (:ref:`Installing MicroPython `).
+In this section, we introduce some of the ways you can work with MicroPython.
+
+Serial prompt (REPL Mode)
+-------------------------
+
+With MicroPython deployed on your PSoC6™ board, you can access the REPL mode using
+the USB-UART interface from the on-board debugger.
+
+REPL stands for Read Evaluate Print Loop and is the name given to the interactive MicroPython
+prompt that you can access on the PSoC6™ board. Using the REPL is by far the easiest way to test out your
+code and run commands. This is equivalent to running the *python* command (without passing a script) in the command line terminal of your machine.
+
+Use your preferred serial terminal software to connect to the board. Examples of serial
+terminal tools are `Putty `_, which works for Windows and
+Unix machines; or other platform-specific such as `Tera Term `_, or `minicom `_.
+
+Configure the serial connection with **115200 bauds** and **8-N-1** (8 bits frame, no parity and 1 stop
+bit), and connect to the board's serial port, the MicroPython REPL prompt will appear, and you can start
+typing some Python code :)
+
+.. image:: img/mpy-psoc6-repl.jpg
+ :alt: MicroPython REPL prompt
+ :width: 520px
+
+Running a script
+----------------
+
+To implement more elaborate programs, and use the embedded device stand-alone you can write
+Python scripts.
+
+There are several IDEs that you can install that integrate a text editor with the tools to run your
+Python script on your MicroPython device, as well as handling the file system of your MicroPython
+device. The most popular are:
+
+* `Thonny `_
+* `Mu Editor `_
+* `Arduino Lab for MicroPython `_
+
+Alternatively, MicroPython offers :ref:`mpremote` as a command line tool that can be as well used for executing
+scripts. Find more information in the provided link.
+
+In MicroPython there are primarily two ways to execute a script:
+
+Host REPL mode
+~~~~~~~~~~~~~~
+
+In this mode, the MicroPython PSoC6™ board is connected through the serial interface to the
+host development machine.
+Each of the lines will be executed in the controller. Any output like print messages in your application or
+exceptions will be sent through the serial connection to the host machine, which will display them
+in the serial terminal console.
+
+The REPL mode is used, but the IDE or command line tool will take care of sending
+each line of the script and process its output to show it in the terminal.
+
+On-target file system mode
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When the board provides a file system and data storage, you will have the possibility to store your
+scripts in the device.
+
+You can split your program into different files, and use ``import`` to make use of the provided features
+in other scripts.
+To run a script in the device at boot, two scripts need to be present in the file
+system: ``boot.py`` and ``main.py``. The scripts are executed in the sequence, first ``boot.py`` followed by ``main.py``.
+
+User-defined Python modules or code can also be converted into bytecode (:ref:`mpy files `) by using the ``mpy-cross`` tool and then copied onto the
+filesystem for getting speed benefits in execution.
+
+A more advanced and efficient mode of script execution is also available, where the scripts to be executed are :ref:`frozen ` as part of the application. However, this is only possible if the user has access to the build flow of the specific port.
+
+The filesystem is described in the section below with some examples.
+
+The MicroPython filesystem
+---------------------------
+
+The PSoC6™ port offers both ``FAT`` and ``LFS2`` filesystems, implemented in :ref:`MicroPython `. However, given its stability and reliability, the ``LFS2`` filesystem is selected as the default. The filesystem is located by default on the external flash, which has a capacity of 512 Mb (64 MB).
+
+The filesystem is mounted with the help of frozen scripts, located in the ``ports/psoc6/freeze`` directory. The default mount point of the filesystem is the ``/flash`` directory, which serves as its root.
+
+Given below are a few examples of various operations on the filesystem:
+
+Creating and reading files
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+MicroPython on the PSoC6™ supports the standard way of accessing files in
+CPython, using the built-in ``open()`` function. The ``open()`` function returns a file pointer. The file is created if not already present and otherwise its contents are overwritten.
+
+To create a file::
+
+ >>> f = open('data.txt', 'w')
+ >>> f.write('some data')
+ 9
+ >>> f.close()
+
+The number "9" returned from the function, is the number of bytes that were written with the ``write()`` method.
+Then the user can read back the contents of this new file using::
+
+ >>> f = open('data.txt')
+ >>> f.read()
+ 'some data'
+ >>> f.close()
+
+Note that the default mode when opening a file is to open it in read-only mode
+and as a text file. Specify ``'wb'`` as the second argument to ``open()`` to
+open for writing in binary mode, and ``'rb'`` to open for reading in binary
+mode.
+
+Listing files and more
+~~~~~~~~~~~~~~~~~~~~~~
+
+The ``os`` module can be used for further control over the filesystem. First,
+the ``os`` module needs to be imported::
+
+ >>> import os
+
+Then the contents of the filesystem can be listed::
+
+ >>> os.listdir()
+ ['boot.py', 'port_config.py', 'data.txt']
+
+New directories can be created::
+
+ >>> os.mkdir('dir')
+
+And entries can be removed::
+
+ >>> os.remove('data.txt')
+
+Also, entries can be renamed::
+
+ >>> os.rename('data.txt','data_new.txt') # os.rename('old_filepath','new_filepath')
+
+Start-up scripts
+~~~~~~~~~~~~~~~~
+
+As mentioned above, two files are treated specially by the port when it starts up:
+``boot.py`` and ``main.py``. The user can create these files and populate them with the code that can run at startup.
+
+Using MicroPython remote control (mpremote) for filesystem operations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The :ref:`mpremote ` tool can be used to transfer files located on the user's host filesystem into the MicroPython filesystem.
+
+
+Resetting the board
+-------------------
+
+If something goes wrong, you can reset the board in two ways.
+The first way is to press CTRL-D at the MicroPython prompt, which performs a soft reset.
+
+If that does not work, you can perform a hard reset by pressing the RESET button.
+This will end your session, disconnecting whatever program (PuTTY, Thonny, etc.) you used to connect to the board.
+
+Boot modes
+----------
+
+There are 2 boot modes:
+
+ * Normal boot mode
+ * Safe boot mode
+
+``boot.py`` and ``main.py`` are executed in "Normal boot mode".
+
+``boot.py`` and ``main.py`` are **not** executed in "Safe boot mode".
+
+Changing boot mode:
+
+ * For normal boot mode, just press and release the RESET button on the board.
+
+ * For safe boot mode, press and release the RESET button while pressing the USER button on the board. Release the USER button after the LED on the board flashes twice.
+
+
+If you change the boot mode to safe boot mode, the MicroPython starts without
+the execution of ``main.py``. Then you can remove the ``main.py`` by following command: ::
+
+ import os
+ os.remove('main.py')
+
+Using third-party IDEs for filesystem operations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Thonny
+^^^^^^
+
+The MicroPython port for PSoC6™ can be detected by the `Thonny IDE `_ when the ``MicroPython (generic)`` option is selected at the bottom right corner, as shown. Additionally, the filesystem is detected by the IDE, as shown in the lower left column.
+Using the GUI, you can perform file operations such as creating a new file, adding contents to it, and then saving it to the filesystem on the MicroPython device.
+
+.. image:: img/mpy-thonny-filesystem.jpg
+ :alt: Filesystem operation using Thonny IDE
+ :width: 800px
diff --git a/docs/psoc6/quickref.rst b/docs/psoc6/quickref.rst
new file mode 100644
index 0000000000000..f94bff93c7f6a
--- /dev/null
+++ b/docs/psoc6/quickref.rst
@@ -0,0 +1,1026 @@
+.. _psoc6_quickref:
+
+Quick reference for the PSoC6™
+==============================
+
+.. image:: img/cy8cproto-062-4343w.jpg
+ :alt: CY8CPROTO-062-4343W board
+ :width: 640px
+
+The `CY8CPROTO-062-4343W PSoC6™ Board `_.
+
+Below is a quick reference for PSoC6™ boards. If it is your first time
+working with this port it may be useful to get an overview of the microcontroller:
+
+.. toctree::
+ :maxdepth: 1
+ :includehidden:
+
+ general.rst
+ intro.rst
+ installation.rst
+ mpy-usage.rst
+
+And if you are already familiar with MicroPython enablement for PSoC6 and want to try it's integrations
+in other application domains, check below:
+
+.. toctree::
+ :maxdepth: 1
+ :includehidden:
+
+ integrations/deepcraft_integration.rst
+
+
+.. note::
+
+ The PSoC6™ port is now a mature port and is expected any MicroPython built-in
+ library to be supported, but not all libraries, modules and features may have been implemented yet.
+ For modules relying on platform and hardware dependencies, only those listed and documented in this quick reference are supported.
+
+ Please consider opening an `issue `_ or
+ `discussion `_ on GitHub for clarification on available features or to request missing features.
+
+General board control
+---------------------
+
+The MicroPython REPL is accessed via the USB serial port. Paste mode (Ctrl+E) is useful for pasting large sections of Python code into the REPL.
+
+This port implements most of the methods described in the :mod:`machine` module. Tab completion is useful to
+find out what methods an instantiated object has.
+
+The :mod:`machine` module::
+
+ import machine
+
+ machine.freq() # get the current frequency of the Core M4
+ machine.freq(machine.CM4, freq) # set the frequency of the Core M4 sourced by PLL to freq. Value of freq can be upto 150 MHz
+ machine.freq(machine.CM4_FLL, freq) # set the frequency of the Core M4 sourced by FLL to freq. Value of freq can be upto 48 MHz
+ machine.freq(machine.AUDIO_I2S_98_MHZ) # set the frequency of the I2S clock to 98 MHz
+ machine.freq(machine.AUDIO_I2S_90_MHZ) # set the frequency of the I2S clock to 90 MHz
+ machine.freq(machine.AUDIO_PDM_24_576_000_HZ) # set the frequency of the I2S clock to 24576000 HZ
+ machine.freq(machine.AUDIO_PDM_22_579_200_HZ) # set the frequency of the I2S clock to 22579200 HZ
+
+Delay and timing
+----------------
+
+Use the :mod:`time ` module::
+
+ import time
+
+ time.sleep(1) # sleep for 1 second
+ time.sleep_ms(500) # sleep for 500 milliseconds
+ time.sleep_us(10) # sleep for 10 microseconds
+ start = time.ticks_ms() # get millisecond counter
+ delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
+ start = time.ticks_us() # get microsecond counter
+ delta = time.ticks_diff(time.ticks_us(), start) # compute time difference
+
+Pins and GPIO
+-------------
+
+Most of the methods (functions) and constants given in the :ref:`machine.Pin ` class have been implemented in this port. Any functions in addition to those or function calls with an ambiguous list of parameters have been documented here with suitable examples.
+
+The constructor
+^^^^^^^^^^^^^^^
+The constructor can be called in different flavours and configurations based on the number of arguments (parameters) passed.
+
+An instance of the :mod:`machine.Pin` class can be created by invoking the constructor with all the necessary parameters to fully configure the ``Pin``.
+
+::
+
+ from machine import Pin
+
+ p0 = Pin('P13_7', Pin.OUT, value=0) # create output pin on pin P13_7,
+ # with initial value 0 (low)
+
+
+Additionally, with any combination of parameters (except the Pin number or ``id`` which should be passed mandatorily), a :mod:`machine.Pin` object with various configuration levels can be instantiated. In these cases, the :meth:`Pin.init` function has to be called proactively to set the other necessary configurations, as needed.
+
+Moreover, a pre-configured pin object can be repurposed by calling the :meth:`Pin.init` function.
+
+
+::
+
+ from machine import Pin
+
+ p0 = Pin('P13_7') # create pin object for pin P13_7.
+ p0.init(Pin.OUT) # set pin as output.
+ p0.low() # set value low.
+
+
+
+
+Similar to CPython, the parameters can be passed in any order if keywords are used. On the other hand, in case of a non-keyword assignment if a parameter is not to be set, a ``None`` is to be passed in its place.
+
+
+::
+
+ from machine import Pin
+
+ p0 = Pin('P13_7', value=0, mode=Pin.OUT) # create output pin on pin P13_7,
+ # with initial value 0 (low)
+
+
+ p1 = Pin('P0_2', Pin.OUT, None, value=1) # create output pin on pin P0_0,
+ # with pull as NONE,
+ # with initial value 1 (high)
+
+Note that the parameters such as ``value`` can only be passed as keyword arguments.
+
+
+.. note::
+
+ The following constructor arguments are NOT supported in this port:
+ * ``drive``. This configuration is automatically handled by the constructor and abstracted to the user.
+ * ``alt``. Alternative functionality is directly handled by the respective machine peripherals classes.
+
+Methods
+^^^^^^^
+.. method:: Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING)
+
+Two arguments must be passed here.
+Trigger can be ``Pin.IRQ_FALLING`` or ``Pin.IRQ_RISING`` or ``PIN.IRQ_FALLING | PIN.IRQ_RISING``.
+
+::
+
+ from machine import Pin
+
+ p0 = Pin('P0_4', mode=Pin.IN, pull=Pin.PULL_UP)
+ p1 = Pin('P13_7', mode=Pin.OUT, value=0)
+
+ p0.irq(handler=lambda t:p1.high(),trigger=Pin.IRQ_RISING) #configure an IRQ callback function P1.high() when there is a rising edge on pin object p0.
+
+
+.. method:: Pin.toggle()
+
+Set pin value to its complement.
+
+.. method:: Pin.deinit()
+
+Deinitializes the pin object. This will release any resources associated with it. The pin object created from MicroPython side would still be available, but it will not be functional anymore.
+The pin can be re-initialised by calling the :meth:`Pin.init` function.
+
+
+Signal
+^^^^^^
+
+There's a higher-level abstraction :ref:`machine.Signal `
+which can be used to invert a pin. Useful for illuminating active-low LEDs
+using ``Signal.on()`` or ``Signal.value(1)``.
+
+.. warning::
+
+ The :ref:`machine.Signal value()` getter functionality is not supported in this port, and the returned value is undefined. This is the same behavior as the :ref:`machine.Pin value()` for Pin.OUT mode, which is the object supporting the Signal object.
+
+Timers
+------
+
+This port supports hardware timers, which can be used for timing-related applications.
+
+Use the :mod:`machine.Timer` class::
+
+ from machine import Timer
+ import time
+ tim0 = Timer(0, period=1000, mode=Timer.ONE_SHOT, callback=lambda t:print("One shot timer triggered")) #Default assignment: period=9999, frequency=10000
+ tim1 = Timer(1, period=3000, mode=Timer.PERIODIC, callback=lambda t:print("Periodic timer triggered"))
+
+ tim0.deinit() # Deinitialise the timer
+ tim1.deinit() # Deinitialise the timer
+
+Here, id can take values between 0 and 31 as a maximum of 32 hardware timers is supported.
+
+.. note::
+ Virtual timers are not supported in this port.
+
+
+Real time clock (RTC)
+---------------------
+
+See :ref:`machine.RTC `: ::
+
+ from machine import RTC
+ import time
+
+ irq_counter = 0
+
+ def cback(event):
+ global irq_counter
+ irq_counter += 1
+
+ rtc = RTC()
+ rtc.init((2023, 1, 1, 0, 0, 0, 0, 0)) # initialise rtc with specific date and time,
+ # eg. 2023/1/1 00:00:00
+ rtc.datetime((2017, 8, 23, 2, 12, 48, 0, 0)) # set a specific date and
+ # time, eg. 2017/8/23 1:12:48
+ rtc.datetime() # get date and time
+ rtc.now() # get current date and time
+
+ rtc.irq(trigger=RTC.ALARM0, handler=cback)
+ rtc.alarm(1000, repeat=False) # set one-shot short alarm in ms
+ rtc.alarm_left() # Read the time left for the alarm to expire
+ time.sleep_ms(1008) # wait sufficient time
+ print(irq_counter) # Check irq counter
+
+ rtc.irq(trigger=RTC.ALARM0, handler=cback)
+ rtc.alarm(3000, repeat=True) # set periodic short alarm in ms
+ rtc.cancel() # cancel the alarm
+
+ rtc.irq(trigger=RTC.ALARM0, handler=cback)
+ rtc.alarm((2023, 1, 1, 0, 0, 1, 0, 0), repeat=False) # set one-shot longer duration alarm
+
+ rtc.memory((2023, 1, 1, 0, 0, 1, 0, 0)) # Retains date time value post reset
+
+
+.. note::
+ Setting a random week day in 'wday' field is not valid. The underlying library implements the logic to always
+ calculate the right weekday based on the year, date and month passed. However, datetime() will not raise an error
+ for this but rather re-write the field with the last calculated actual value.
+
+.. warning::
+ For setting a short-time periodic alarm, the minimum precision possible is 3 secs. Anything less than this may
+ or may not work accurately. Also, the PSoC6 RTC has a precision of seconds. Hence for any alarm, the minimum period can be 1 second.
+
+Watch dog timer (WDT)
+---------------------
+
+See :ref:`machine.WDT `: ::
+
+ from machine import WDT
+
+ wdt = WDT(timeout=2000) # initialise wdt with id = 0 (default),
+ # timeout in milliseconds
+ wdt.feed() # Feed the WDT. Do this periodically before the timeout.
+
+.. note::
+ The minimum timeout is 1 millisecond and the maximum timeout is 6000 milliseconds.
+
+PWM (pulse width modulation)
+----------------------------
+
+PWM can be enabled on all output-capable pins. The frequency can range from 1Hz to 100MHz. As the frequency
+increases the PWM resolution decreases. Refer to datasheets `here `_
+for additional details regarding board-specific PWM.
+
+Use the :ref:`machine.PWM ` class:
+
+The constructor can be called by passing the required arguments. All initialisation and configurations are handled by the constructor. Create a PWM object using
+
+::
+
+ pwm = PWM('P9_0', freq=50, duty_u16=8192) # PWM is initialised for the given pin with respective frequency & duty cycle given as raw value.
+ pwm1 = PWM('P9_1', freq=50, duty_ns=1000) # PWM is initialised for the given pin with respective frequency & duty cycle given in nanoseconds.
+
+ All four arguments have to be passed mandatorily to create a PWM object. duty_u16 or duty_ns should be specified at a time.
+
+::
+
+ from machine import PWM
+
+ pwm = PWM('P9_0', freq=50, duty_u16=8192)
+ print(pwm) # view PWM settings
+
+ pwm.freq() # get current frequency
+ pwm.freq(100) # Set PWM frequency to 100 Hz
+
+ pwm.duty_u16() # get current duty cycle, range 0-65535
+ pwm.duty_u16(8192) # Set duty cycle from 0 to 65535 as a ratio of duty_u16/65535, now 25%
+
+ pwm.duty_ns() # get current pulse width in ns
+ pwm.duty_ns(1000) # Set the current pulse width in ns from 0 to 1000000000/freq
+
+ pwm.init(freq=90,duty_ns=100) # Modify the settings of PWM object
+ pwm.deinit() # Deinitialisation of PWM pin
+
+
+.. note::
+ invert functionality is not enabled in this port.
+
+Software I2C bus
+----------------
+Software I2C (using bit-banging) works on all output-capable pins, and is
+accessed via :ref:`machine.SoftI2C `. ::
+
+ from machine import Pin, SoftI2C
+
+ i2c = SoftI2C(scl='P5_0', sda='P5_1', freq=100000)
+
+ i2c.scan() # scan for devices
+
+ i2c.readfrom(0x3a, 4) # read 4 bytes from device with address 0x3a
+ i2c.writeto(0x3a, '12') # write '12' to device with address 0x3a
+
+ buf = bytearray(10) # create a buffer with 10 bytes
+ i2c.writeto(0x3a, buf) # write the given buffer to the peripheral
+
+
+Hardware I2C bus
+----------------
+The driver is accessed via :ref:`machine.I2C `.
+
+The constructor
+^^^^^^^^^^^^^^^
+An instance of the :mod:`machine.I2C` class can be created by invoking the constructor with all the
+necessary parameters to fully configure the ``I2C``. By invoking the constructor, I2C peripheral is
+initialised and configured to work in master mode. The maximum supported frequency is 1 MHz.
+
+::
+
+ from machine import I2C
+ i2c = I2C(scl='P6_0', sda='P6_1', freq=400000)
+
+The ``scl`` and ``sda`` pins are the only mandatory arguments. Refer board-specific datasheets `here `_
+for details regarding all the I2C-capable pins. The frequency argument is optional, and if not passed will be set to 400KHz by default.
+
+.. note::
+ The ``timeout`` option is currently not implemented in this port.
+
+::
+
+ from machine import I2C
+ i2c = I2C(scl='P6_0', sda='P6_1') #I2C is initialised & configured with default frequency
+
+::
+
+ from machine import I2C
+ i2c = I2C(scl='P9_0', sda='P9_1', freq=400000) #I2C is initialised & configured with given scl, sda pins & frequency
+
+Methods
+^^^^^^^
+All the methods(functions) given in :ref:`machine.I2C ` class have been implemented in this port except:
+
+.. method:: I2C.init()
+
+All the initialisation & configurations are handled by the constructor. Hence ``init()`` is not required.
+
+Hardware I2C bus slave
+----------------------
+
+The PSoC6™ port offers an additional class to implement an I2C slave device. An I2C master node connected to the slave can exchange data over I2C for the configured slave address and frequency.
+
+.. warning::
+ This is not part of the core MicroPython libraries. Therefore, not mapping any existing machine class API and is not supported by other ports.
+
+.. note::
+ | Part of the functionality of the I2C slave is based on hardware interrupts and callbacks.
+ | As explained in this :ref:`section `, writing interrupts handlers in MicroPython is subject to multiple considerations depending on the actual hardware capabilities and limitations, the specific port implementation, and the overall application design and implementation.
+ | These must kept in mind when implementing accurate timing and event synchronization between master and slave.
+
+The constructor
+^^^^^^^^^^^^^^^
+
+.. class:: I2CSlave(scl, sda, addr, freq)
+
+ Constructs and returns a new I2C slave object using the following parameters.
+
+ Required arguments:
+ - *scl* should be a pin name supporting the SCL functionality.
+ - *sda* should be a pin name supporting the SDA functionality.
+ - *addr* should be an 8-bit unsigned integer.
+
+ Optional arguments:
+ - *freq* should be an integer that sets the maximum frequency
+ for SCL. If not passed, by default it is set to 400KHz.
+
+ Example:
+ ::
+
+ from machine import I2CSlave
+
+ i2c_slave = I2CSlave(scl="P6_0", sda="P6_1", addr=0x45)
+
+Methods
+^^^^^^^
+
+.. method:: I2CSlave.deinit()
+
+ Deinitialises the I2C slave.
+
+.. method:: I2CSlave.conf_receive_buffer(buf)
+
+ Configures the reception *buf* on an I2C slave. This is the buffer to which the master writes data to.
+ The user needs to setup a new buffer every time the buffer has been used up.
+
+.. method:: I2CSlave.conf_transmit_buffer(buf)
+
+ Configures the transmission *buf* on an I2C slave. This is the buffer from which the master reads data from.
+ The user needs to setup a new buffer every time the buffer has been used up.
+
+.. method:: I2CSlave.irq(callback, events, priority)
+
+ Enables interrupts and the function handlers to be called upon different I2C bus events.
+
+ Required arguments:
+ - *callback* should be a function handler that will be executed upon an interrupt event. The callback takes one argument which is the event causing the interrupt.
+ - *events* are the I2C bus events that will be triggering the interrupt. Multiple ones can be configured by ORing the following constants:
+
+ .. data:: I2CSlave.RD_EVENT
+ I2CSlave.WR_EVENT
+ I2CSlave.RD_BUF_IN_FIFO_EVENT
+ I2CSlave.RD_BUF_EMPTY_EVENT
+ I2CSlave.RD_CMPLT_EVENT
+ I2CSlave.WR_CMPLT_EVENT
+ I2CSlave.ERR_EVENT
+
+ Optional arguments:
+ - *priority* should be an unsigned integer with the priority of the interrupt.
+
+ Example:
+ ::
+
+ def cback(event):
+ if event == (event & I2CSlave.WR_EVENT):
+ print("i2c wr event")
+
+ i2c_slave.irq(callback=cback, events=(I2CSlave.WR_EVENT | I2CSlave.WR_CMPLT_EVENT), priority=1)
+
+.. method:: I2CSlave.irq_disable()
+
+ Disables the I2C slave interrupts.
+
+Software SPI bus
+----------------
+
+The :ref:`machine.SoftSPI ` class is **disabled** in this port.
+
+Hardware SPI bus
+----------------
+Refer to board-specific datasheets `here `_
+for details regarding all the SPI-capable pins. The pins ``sck``, ``mosi`` and ``miso`` *must* be specified when
+initialising SPI.
+
+The driver is accessed via :ref:`machine.SPI `.
+
+.. note::
+ Slave selection should be done at the application end. An example of how to do so is explained :ref:`here `.
+
+The constructor
+^^^^^^^^^^^^^^^
+An instance of the :mod:`machine.SPI` class can be created by invoking the constructor with all the
+necessary parameters to fully configure and initialise the ``SPI``. By invoking the constructor with no additional parameters
+SPI object is created with default settings or settings of previous initialisation if any.
+
+::
+
+ from machine import SPI
+ spi = SPI(baudrate=1000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck='P9_2', mosi='P9_0', miso='P9_1')
+
+Methods
+^^^^^^^
+All the methods(functions) given in :ref:`machine.SPI ` class have been implemented in this port.
+
+Hardware SPI bus slave
+----------------------
+
+The PSoC6™ port offers an additional class to implement an SPI slave device. The SPI master node connected to the slave can exchange data over SPI.
+
+.. warning::
+ This is not part of the core MicroPython libraries. Therefore, not mapping any existing machine class API and neither supported by other ports.
+
+The constructor
+^^^^^^^^^^^^^^^
+
+.. class:: SPISlave(baudrate, polarity, phase, bits, firstbit, ssel, sck, mosi, miso)
+
+ Constructs and returns a new SPI slave object using the following parameters.
+
+ Required arguments:
+ - *ssel* should be a pin name supporting SSEL functionality.
+ - *sck* should be a pin name supporting the SCK functionality.
+ - *mosi* should be a pin name supporting the MOSI functionality.
+ - *miso* should be a pin name supporting the MISO functionality.
+
+ Optional arguments:
+ - *baudrate* should be an integer that sets the clock rate. If not passed, by default is set to 1000000 Hz.
+ - *polarity* can be 0 or 1. The Default is set to 0.
+ - *phase* can be 0 or 1. The Default is set to 0.
+ - *bits* is the width in bits for each transfer. Only 8 is supported.
+ - *firstbit* can be SPISlave.MSB or SPISlave.LSB. The Default is SPISlave.MSB.
+
+ Example:
+ ::
+
+ from machine import SPISlave
+
+ spi_slave = SPISlave(baudrate=1000000, polarity=0, phase=0, bits=8, firstbit=SPISlave.MSB, ssel="P6_3", sck='P6_2', mosi='P6_0', miso='P6_1')
+
+Methods
+^^^^^^^
+
+.. method:: SPISlave.deinit()
+
+ Deinitialises the SPI slave.
+
+
+.. method:: SPISlave.write(buf)
+
+ Write the bytes contained in ``buf``.
+
+ Required arguments:
+ - *buf* should be a buffer with bytes of data to be written.
+
+ Returns ``None``.
+
+
+.. method:: SPISlave.read(buf)
+
+ Reads the data in SPI bus to ``buf``.
+
+ Required arguments:
+ - *buf* should be a buffer where data from the bus needs to be stored.
+
+ Returns ``None``.
+
+ADC (analog to digital conversion)
+----------------------------------
+
+On the PSoC6, a single ADC block with id - '0' is available. The ADC functionality is available on the
+following pins : "P10_0" - "P10_5".
+
+Use the :ref:`machine.ADC ` class::
+
+ from machine import ADC
+
+ adc = ADC("P10_0") # create an ADC object on ADC pin
+ val = adc.read_u16() # read a raw analog value in the range 0-65535
+ val = adc.read_uv() # read an analog value in microvolts
+
+The PSoC6 port also supports :ref:`machine.ADCBlock ` API to have control over the ADC configuration. Currently
+PSoC6 supports only 1 SAR ADC with the channel-to-pin mapping available in respective pinout diagrams.
+
+.. note::
+ Arbitrary connection of ADC channels to GPIO is not supported. Specifying a pin that is not connected to this block,
+ or specifying a mismatched channel and pin will raise an exception.
+
+To use the APIs:
+::
+
+ from machine import ADCBlock
+
+ adcBlock = ADCBlock(0) # create an ADCBlock 0 object
+ adc = adcBlock.connect(0, "P10_0") # connect channel 0 to pin P10_0
+ val = adc.read_uv() # read an analog value in microvolts
+
+.. note::
+ If bits are not passed in ADCBlock, by default 12 bits are considered. But the observed range is from 0-2^11. This is an observed behaviour and needs to be fixed in low-level drivers.
+
+I2S bus
+-------
+
+See :ref:`machine.I2S `.
+
+The following specialization applies to this port:
+
+Before using the I2S bus, the I2S clock frequency needs to be set. The I2S clock frequency can be set to 98 MHz or 90 MHz depending upon the sample rate. The I2S clock frequency can be set using the following function:
+
+::
+
+ machine.freq(machine.AUDIO_I2S_98_MHZ) # set the frequency of the I2S clock to 98 MHz. For sample rates: 8KHz / 16 KHz / 32 KHz / 48 KHz
+ machine.freq(machine.AUDIO_I2S_90_MHZ) # set the frequency of the I2S clock to 90 MHz. For sample rates: 22.05 KHz / 44.1 KHz
+
+Constructor
+^^^^^^^^^^^^
+
+.. class:: I2S(id, *, sck, ws, sd, mck=None, mode, bits, format, rate, ibuf)
+
+ Construct an I2S object of the given id:
+
+ - ``id`` takes any integer (This value is ignored for PSoC6 port)
+
+ Keyword-only parameters:
+
+ - ``rate`` specifies audio sampling rate (Hz);
+ this is the frequency of the ``ws`` signal. Supported sample rates are 8KHz, 16KHz, 32KHz, 48KHz, 22.05KHz, 44.1KHz.
+
+ - ``mck`` is not implemented.
+
+ The rest of the parameters match the reference API.
+
+::
+
+ from machine import I2S, Pin, AUDIO_I2S_90_MHZ
+ import array
+
+ buf=bytearray(10) #Initialise buffer with required values for transmission & as empty buffer for reception
+ machine.freq(AUDIO_I2S_90_MHZ) #set the frequency of the I2S clock to 90 MHz.
+
+ audio_out = I2S(0, sck="P13_1", ws="P13_2", sd="P13_3", mode=I2S.TX, bits=16, format=I2S.STEREO, rate=22050, ibuf=20000) #create I2S object
+ num_written = audio_out.write(buf) # write buffer of audio samples to I2S device
+
+ audio_in = I2S(0, sck="P5_4", ws="P5_5", sd="P5_6", mode=I2S.RX, bits=16, format=I2S.STEREO, rate=22050, ibuf=20000) # create I2S object
+ num_read = audio_in.readinto(buf)# fill buffer with audio samples from I2S device
+
+PDM - PCM bus
+--------------
+
+PDM/PCM is a asynchronous operation used to connect digital audio devices.
+At the physical level, a bus consists of 2 lines: CLK, DATA.
+
+.. warning::
+ This is not part of the core MicroPython libraries. Therefore, not mapping any existing machine class API and neither supported by other ports.
+
+
+The following specialization applies for configuring PDM-PCM bus in this port:
+
+Before using the PDM-PCM bus, the clock frequency needs to be set. The PDM-PCM clock frequency can be set to 24.576 MHz or 22.579 MHz depending upon the sample rate. In order to set the frequency, use the following function:
+
+::
+
+ machine.freq(machine.AUDIO_PDM_24_576_000_HZ) # set the frequency of the clock to 24.576 MHz. For sample rates: 8 / 16 / 48 kHz
+ machine.freq(machine.AUDIO_PDM_22_579_000_HZ) # set the frequency of the clock to 22.579 MHz. For sample rates: 22.05 / 44.1 KHz
+
+
+PDM-PCM objects can be created and initialized using::
+
+ from machine import PDM_PCM, Pin, AUDIO_PDM_24_576_000_HZ
+
+ clk_pin = "P10_4"
+ data_pin = "P10_5"
+
+ machine.freq(AUDIO_PDM_24_576_000_HZ)
+
+ pdm_pcm = PDM_PCM(
+ 0,
+ sck=clk_pin,
+ data=data_pin,
+ sample_rate=8000,
+ decimation_rate=64,
+ bits=PDM_PCM.BITS_16,
+ format=PDM_PCM.MONO_LEFT,
+ left_gain=0,
+ right_gain=0
+ )
+
+2 modes of operation are supported:
+ - blocking
+ - non-blocking
+
+
+Constructor
+^^^^^^^^^^^^
+
+.. class:: PDM_PCM(id, *, clk, data, sample_rate, decimation_rate, bits, format, left_gain, right_gain)
+
+ Construct PDM_PCM object of the given id:
+
+ - ``id`` identifies a particular PDM_PCM bus; it is board and port specific and is ignored in our port
+
+ Keyword-only parameters that are supported on this port:
+
+ - ``clk`` is a pin object for the clock line
+ - ``data`` is a pin object for the data line
+ - ``sample_rate`` specifies audio sampling rate. It can be set to 8 / 16 / 48 KHz for which the clock frequency should be set to 24.576 MHz or to 22.05 / 44.1 KHz while clock should be set to 22.579 MHz.
+ - ``decimation_rate`` specifies PDM decimation rate
+ - ``bits`` specifies word length - 16, 18, 20, 24 being accepted values
+ - ``format`` specifies channel format - STEREO, MONO_LEFT or MONO_RIGHT
+ - ``left_gain`` is PGA in 0.5 dB increment
+ - ``right_gain`` is PGA in 0.5 dB increment
+
+Methods
+^^^^^^^^
+
+.. method:: PDM_PCM.init()
+
+ Starts the PDM_PCM hardware block and conversion operation.
+
+.. note::
+ Once the block is started, about 35-45 samples are internally discarded to set the protocol. The actual data should be recorded after a sec to avoid any losses.
+
+.. method:: PDM_PCM.deinit()
+
+ Stops the PDM_PCM hardware block deinitializes PDM_PCM object
+
+.. method:: PDM_PCM.readinto(buf)
+
+ Read audio samples into the buffer specified by ``buf``. ``buf`` must support the buffer protocol, such as bytearray or array.
+ For Stereo format, left channel sample precedes right channel sample. For Mono-left format,
+ the left channel sample data is used and for Mono-right format, right channel data is used. Ensure that ``buf`` size should be multiple of sample size.
+ Sample size can be calculated as (PCM_bits/8) * (format_size); where format_size is 2(stereo mode) and 1(mono mode).
+ Returns number of bytes read
+
+.. method:: PDM_PCM.irq(handler)
+
+ Set the callback.``handler`` is called when ``buf`` becomes full (``readinto`` method).
+ Setting a callback changes the ``readinto`` method to non-blocking operation.
+ ``handler`` is called in the context of the MicroPython scheduler.
+
+.. method:: PDM_PCM.gain(left_gain, right_gain)
+
+ Set the gain for single or both microphones. When either of the gain value is not passed,
+ previously set value or default value of 0dB is set.
+
+Constants
+^^^^^^^^^^
+
+.. data:: PDM_PCM.STEREO
+
+ for initialising the PDM_PCM ``format`` to stereo
+
+.. data:: PDM_PCM.MONO_LEFT
+
+ for initialising the PDM_PCM ``format`` to mono-left
+
+.. data:: PDM_PCM.MONO_RIGHT
+
+ for initialising the PDM_PCM ``format`` to mono-right
+
+.. data:: PDM_PCM.BITS_16
+
+ for initialising the PDM_PCM ``bits`` to 16
+
+
+UART
+----
+
+See :ref:`machine.UART `.
+
+The following specialization applies to this port:
+
+Constructor
+^^^^^^^^^^^^
+
+.. class:: UART(id)
+
+ Construct a UART object of the given id:
+
+ - ``id`` takes any integer (This value is ignored for PSoC6 port)
+
+Methods
+^^^^^^^
+
+.. method:: UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, ...)
+
+ Initialise the UART with the given parameters.
+
+ Mandatory parameters:
+ - ``baudrate`` is the baud rate.
+ - ``bits`` supported is 8 or 9.
+ - ``stop`` supported is 1.
+ - ``tx`` is the pin for transmit. Check the reference manual for supported pins.
+ - ``rx`` is the pin for receive. Check the reference manual for supported pins.
+
+ optional parameters:
+ - ``parity`` supported is None, 0(even) or 1(odd).By default, it is set to None.
+ - ``rts`` By default this is defined as Not connected(NC).
+ - ``cts`` By default this is defined as Not connected(NC).
+ - ``timeout`` This is used only for uart.readchar() function. By default, it is set to NULL ie, not using any timeout.
+ - ``flow``
+ - ``rxbuf`` This is the size of the software buffer used by the UART in case it's defined. By default, it is set to NULL ie, not using any software buffer.
+
+.. warning::
+ For reinitialising the UART object, the ``init()`` function can be called with the new parameters. Pins can't be reconfigured once the UART object is created.
+
+.. Note::
+
+ - ``txbuf`` is not implemented.
+ - ``timeout_char`` is not implemented.
+ - ``invert`` is not implemented.
+
+.. method:: UART.irq(trigger, handler)
+
+ Enable the UART interrupt and set the interrupt handler.
+
+ - ``trigger`` can be UART.RX_DONE, UART.RX_FULL, UART.TX_EMPTY, UART.TX_DONE.
+ - ``handler`` is the optional callback function.
+
+.. Note::
+ - The Handler will be called when the trigger condition is met.
+ - RX_DONE: All RX data has been received.
+ - RX_FULL: The SW RX buffer (if used) is full. This has to be provided in the init with the rxbuf parameter.
+ - TX_EMPTY: The HW TX FIFO buffer is empty.
+ - TX_DONE: All TX data has been transmitted.
+
+.. method:: UART.sendbreak()
+
+ Send a break condition of 4 bits duration. Before sending the break all UART TX interrupt sources are disabled. The state of UART TX interrupt sources is restored before the function returns.
+ This Blocks until the break is completed. Only call this function when UART TX FIFO and shifter are empty.
+
+SD Card
+-------
+
+See :ref:`machine.SDCard `.
+
+The following specialization applies to this port:
+
+.. class:: SDCard(slot, width, cd, wp, cmd, dat0, dat1, dat2, dat3, clk)
+
+ Construct an SD Card object:
+
+ Keyword-only parameters:
+
+ - ``slot`` takes any integer (This value is ignored for PSoC6 port)
+
+ - ``width`` selects the bus width for the SD interface.
+
+ - ``cd`` can be used to specify a card detection pin.
+
+ - ``wp`` can be used to specify a write-protect pin.
+
+ - ``cmd`` can be used to specify the command signal pin.
+
+ - ``dat0`` can be used to specify the data0 signal pin.
+
+ - ``dat1`` can be used to specify the data1 signal pin.
+
+ - ``dat2`` can be used to specify the data2 signal pin.
+
+ - ``dat3`` can be used to specify the data3 signal pin.
+
+ - ``clk`` can be used to specify the clock pin.
+
+ The SD Card pin mapping can be found in the respective :ref:`Supported boards ` section.
+
+ Note that the SD Card for up-to-speed class c10 has been tested.
+
+Methods
+^^^^^^^
+
+.. method:: SDCard.deinit()
+
+ Deinitialises the SD Card.
+
+::
+
+ import machine
+ import os
+
+ bdev = machine.SDCard(slot=0, width=4, cd="P13_5", cmd="P12_4", clk="P12_5", dat0="P13_0", dat1="P13_1", dat2="P13_2", dat3="P13_3")
+
+ # Define constants
+ TEST_STRING = "This is a test string."
+
+ # Mount or format the SD card with LFS2 filesystem
+ if "VfsLfs2" in dir(os):
+
+ try:
+ vfs = os.VfsLfs2(bdev, progsize=512, readsize=512)
+ os.mount(vfs, "/SDCardLfs2")
+ except OSError:
+ os.VfsLfs2.mkfs(bdev, progsize=512, readsize=512)
+ vfs = os.VfsLfs2(bdev, progsize=512, readsize=512)
+ os.mount(vfs, "/SDCardLfs2")
+
+ with open("/SDCardLfs2/test_sd_lfs2.txt", "w") as f:
+ f.write(TEST_STRING)
+
+ with open("/SDCardLfs2/test_sd_lfs2.txt", "r") as f:
+ read_data = f.read()
+
+ print(read_data)
+
+ # Mount or format the SD card with FAT filesystem
+ if "VfsFat" in dir(os):
+
+ try:
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/SDCardFat")
+ except OSError:
+ os.VfsFat.mkfs(bdev)
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/SDCardFat")
+
+ with open("/SDCardFat/test_sd_fat.txt", "w") as f:
+ f.write(TEST_STRING)
+
+ with open("/SDCardFat/test_sd_fat.txt", "r") as f:
+ read_data = f.read()
+
+ print(read_data)
+
+ bdev.deinit()
+
+Bitstream
+---------
+
+::
+
+ from machine import bitstream
+
+ timing = [1000, 7000, 5000, 2500] # timing (high_time_0, low_time_0, high_time_1, low_time_1)in ns
+ buf = bytearray([0xAB]) # buffer data
+ bitstream('P13_6', 0, timing, buf) # bitstrem buffer data with timing through pin P13_6
+
+.. note::
+ Bitstream is set for the CPU frequency of 100MHz. At other clock frequencies, the timing will not fit.
+ All timings greater than 1500 ns work and the accuracy of the timing is +/- 400 ns.
+ Supported timing_ns ranges below 1500 ns are [500, 1125, 800, 750], [400, 850, 800, 450], [300, 900, 600, 600] and [800, 1700, 1600, 900].
+
+Network Module
+--------------
+
+The :mod:`network` module.
+
+See :ref:`network.WLAN `:
+
+For some methods and constants, the PSoC6 network port implements certain specializations and slightly different behaviour. This is explained in this section.
+
+Methods
+^^^^^^^
+
+.. method:: WLAN.scan(ssid=None, bssid=None)
+
+ The scan option accepts the following filters as keyword arguments, removing from scan results any network not matching these parameters values:
+
+ * ``ssid``
+ * ``bssid``
+
+.. method:: WLAN.status('param')
+
+ .. warning::
+ The function does not provide the status of the connection. Use the ``active()`` for that purpose. Any errors or failures are communicated when using the corresponding enable/disable or connect/disconnect functions.
+
+ The following query parameters are allowed:
+ * ``rssi``. Only for STA.
+ * ``stations``. List of connected stations (only for AP).
+
+.. method:: WLAN.config('param')
+ WLAN.config(param=value, ...)
+
+ Among the suggested parameters of the general network WLAN API, for this port, only these are available:
+
+ * AP & STA query parameters
+
+ - ``channel``
+ - ``ssid``
+ - ``security```
+ - ``key/password``. Only for default AP key.
+ - ``mac``
+ * AP set parameters
+
+ - ``channel``
+ - ``ssid``
+ - ``security```
+ - ``key/password``. Only for default AP key.
+
+ * STA has no configurable parameter.
+
+Constants
+^^^^^^^^^
+
+Security modes constants:
+
+.. data:: WLAN.OPEN
+ WLAN.WEP
+ WLAN.WPA
+ WLAN.WPA2
+ WLAN.WPA3
+ WLAN.WPA2_WPA_PSK
+ WLAN.SEC_UNKNOWN
+
+.. note::
+ Power modes configuration not implemented.
+
+Here is a function you can run (or put in your boot.py file) to automatically connect to your Wi-Fi network:
+
+::
+
+ def network_connect() :
+ import network
+ from utime import sleep,sleep_ms
+ wlan = network.WLAN(network.STA_IF)
+ if wlan.isconnected():
+ print('[Network] already connected')
+ return
+
+ # enable and connect wlan
+ wlan.active(True)
+ wlan.connect('','')
+
+ # wait for the connection to establish
+ sleep(5)
+ for i in range(0,100):
+ if not wlan.isconnected() and wlan.status() >= 0:
+ print("[Network] Waiting to connect..")
+ sleep(2)
+
+ # check connection
+ if not wlan.isconnected():
+ print("[Network] Connection failed!")
+ else:
+ print(wlan.ifconfig())
+
+NeoPixel driver
+---------------
+
+The [NeoPixel library](https://docs.micropython.org/en/latest/library/neopixel.html) for controlling various addressable LEDs (like WS2812B, SK6812, ...) is supported in this port. The library can be installed using [mip](https://docs.micropython.org/en/latest/reference/packages.html).
+
+::
+
+ import mip
+ mip.install('neopixel')
+
+The NeoPixel driver can be used as follows (see the :mod:`neopixel` for more details):
+
+::
+
+ import neopixel
+ from machine import Pin
+ data = Pin('P9_1', Pin.OUT, value=0) # set P9_1 to output to control NeoPixels
+ np = neopixel.NeoPixel(data, 8, bpp=3) # create NeoPixel object on pin P9_1 with 8 pixels and 3 bytes per pixel with default timing=1
+ np[0] = (255, 255, 255) # set the first pixel to white
+ np.write() # write data to all pixels
+
+.. note::
+ - The timing parameter can be used in the `NeoPixel()` constructor with timing tuples supported by the `machine.bitstream()` module. The timing parameter is optional and by default set to 1 which is the default timing [400, 850, 800, 450] for WS2812B LEDs at 800kHz.
+ - Use timing = 0 for WS2812B LEDs at 400kHz ie, [800, 1700, 1600, 900].
+ - Use timing = [300, 900, 600, 600] for SK6812 LEDs.
+
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 4d9b9558575df..cd10fdce25b91 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,3 +1,6 @@
sphinx~=7.2.6
sphinxcontrib.jquery==4.1
sphinx-rtd-theme==3.0.2
+sphinx-tabs
+sphinxemoji==0.1.8
+sphinx-rtd-theme
\ No newline at end of file
diff --git a/docs/templates/topindex.html b/docs/templates/topindex.html
index e3bcd7cce14cc..5a44542aad543 100644
--- a/docs/templates/topindex.html
+++ b/docs/templates/topindex.html
@@ -57,6 +57,10 @@ MicroPython documentation
Quick reference for the ESP32
pinout for ESP32-based boards, snippets of useful code, and a tutorial
+
+ Quick reference for the PSoC6
+ general information for PSoC6 based boards, snippets of useful code, and a tutorial
+
Quick reference for the Raspberry Pi RP2xxx
pinout for rp2xxx-based boards, snippets of useful code, and a tutorial
diff --git a/examples/natmod/deepcraft/Makefile b/examples/natmod/deepcraft/Makefile
new file mode 100644
index 0000000000000..c50e60668f6d8
--- /dev/null
+++ b/examples/natmod/deepcraft/Makefile
@@ -0,0 +1,35 @@
+# Location of top-level MicroPython directory
+MPY_DIR = ../../..
+
+# Name of module
+MOD = deepcraft_model
+
+# Source files (.c or .py)
+SRC = dc_mp_iface.c model.c
+
+# Architecture to build for (x86, x64, armv7m, xtensa, xtensawin, rv32imc)
+ARCH = armv7emsp
+
+# Link with libm.a and libgcc.a from the toolchain
+LINK_RUNTIME = 1
+
+# OS-specific settings
+ifeq ($(OS), Windows_NT)
+ RM = del /Q /F
+ CP = copy
+ override MKDIR = cmd /C "if not exist $(1) mkdir $(1)"
+ override PYTHON = python
+ override ARCH_UPPER = $(shell powershell -Command "Write-Output '$(ARCH)'.ToUpper()")
+ override MICROPY_FLOAT_IMPL_UPPER = $(shell powershell -Command "Write-Output '$(MICROPY_FLOAT_IMPL)'.ToUpper()")
+ CLEAN_CMD = del /Q /F .mpy_ld_cache\* build\* $(MOD).mpy 2>nul
+endif
+
+CFLAGS += -Wno-error=implicit-function-declaration
+
+override LIBGCC_PATH := gcc/lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/libgcc.a
+override LIBM_PATH := gcc/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a
+
+include $(MPY_DIR)/py/dynruntime.mk
+
+$(BUILD_DIRS):
+ $(Q)$(call MKDIR, $@)
diff --git a/examples/natmod/deepcraft/dc_mp_iface.c b/examples/natmod/deepcraft/dc_mp_iface.c
new file mode 100644
index 0000000000000..59766d7ee2212
--- /dev/null
+++ b/examples/natmod/deepcraft/dc_mp_iface.c
@@ -0,0 +1,60 @@
+#include "py/dynruntime.h"
+
+#if !defined(__linux__)
+void *memcpy(void *dst, const void *src, size_t n) {
+ return mp_fun_table.memmove_(dst, src, n);
+}
+void *memset(void *s, int c, size_t n) {
+ return mp_fun_table.memset_(s, c, n);
+}
+#endif
+
+int native_errno=0;
+#if defined(__linux__)
+int *__errno_location (void)
+#else
+int *__errno (void)
+#endif
+{
+ return &native_errno;
+}
+
+#include "examples/natmod/deepcraft/mp_src.c"
+
+// Forward declaration of type
+mp_obj_full_type_t dc_type;
+
+mp_map_elem_t dc_locals_dict_table[5];
+static MP_DEFINE_CONST_DICT(dc_locals_dict, dc_locals_dict_table);
+
+// Constructor
+static mp_obj_t dc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args_in) {
+ dc_obj_t *self = mp_obj_malloc(dc_obj_t, type);
+ return MP_OBJ_FROM_PTR(self);
+}
+
+// Create type and methods at runtime
+mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *args) {
+ // This must be first, it sets up the globals dict and other things
+ MP_DYNRUNTIME_INIT_ENTRY
+
+ // Populate type
+ dc_type.base.type = (void*)&mp_type_type;
+ dc_type.flags = MP_TYPE_FLAG_NONE;
+ dc_type.name = MP_QSTR_DEEPCRAFT;
+ MP_OBJ_TYPE_SET_SLOT(&dc_type, make_new, dc_make_new, 0);
+
+ dc_locals_dict_table[0] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_init), MP_OBJ_FROM_PTR(&init_obj) };
+ dc_locals_dict_table[1] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_enqueue), MP_OBJ_FROM_PTR(&enqueue_obj) };
+ dc_locals_dict_table[2] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_dequeue), MP_OBJ_FROM_PTR(&dequeue_obj) };
+ dc_locals_dict_table[3] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_get_model_input_dim), MP_OBJ_FROM_PTR(&get_model_input_dim_obj) };
+ dc_locals_dict_table[4] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_get_model_output_dim), MP_OBJ_FROM_PTR(&get_model_output_dim_obj) };
+
+ MP_OBJ_TYPE_SET_SLOT(&dc_type, locals_dict, (void*)&dc_locals_dict, 5);
+
+ // Expose constructor as DEEPCRAFT
+ mp_store_global(MP_QSTR_DEEPCRAFT, MP_OBJ_FROM_PTR(&dc_type));
+ // This must be last, it restores the globals dict
+ MP_DYNRUNTIME_INIT_EXIT
+
+}
diff --git a/examples/natmod/deepcraft/mp_src.c b/examples/natmod/deepcraft/mp_src.c
new file mode 100644
index 0000000000000..0554f44114b40
--- /dev/null
+++ b/examples/natmod/deepcraft/mp_src.c
@@ -0,0 +1,103 @@
+#include "py/dynruntime.h"
+#include "model.h"
+#include
+
+typedef struct _dc_obj_t {
+ mp_obj_base_t base;
+ bool model_state;
+ uint8_t model_in_dim;
+ uint8_t model_out_dim;
+} dc_obj_t;
+
+mp_obj_t get_model_input_dim(mp_obj_t self_in){
+ dc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return MP_OBJ_NEW_SMALL_INT(self->model_in_dim);
+}
+
+mp_obj_t get_model_output_dim(mp_obj_t self_in){
+ dc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return MP_OBJ_NEW_SMALL_INT(self->model_out_dim);
+}
+
+mp_obj_t init(mp_obj_t self_in){
+ dc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ self->model_state = true;
+ self->model_in_dim = IMAI_DATA_IN_COUNT;
+ self->model_out_dim = IMAI_DATA_OUT_COUNT;
+ IMAI_init();
+ return mp_const_none;
+}
+
+mp_obj_t enqueue(mp_obj_t self_in, const mp_obj_t data_in_obj){
+ dc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ // Check if model is initialized
+ if(!self->model_state){
+ mp_raise_ValueError("Model should be initialized first.");
+ }
+
+ float data_in[self->model_in_dim];
+ mp_obj_t *data_in_items;
+ size_t len;
+ mp_obj_get_array(data_in_obj, &len, &data_in_items);
+
+ if (len != self->model_in_dim) {
+ mp_raise_ValueError("data_in must be a list of floats with size matching to input dimensions to model. Check using get_model_input_dim().");
+ }
+
+ for (int i = 0; i < self->model_in_dim; i++) {
+ data_in[i] = mp_obj_get_float(data_in_items[i]);
+ }
+ int result = IMAI_enqueue(data_in);
+ return MP_OBJ_NEW_SMALL_INT(result);
+}
+
+mp_obj_t dequeue(mp_obj_t self_in, mp_obj_t data_out_obj) {
+ dc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ mp_buffer_info_t buf_info;
+ mp_get_buffer(data_out_obj, &buf_info, MP_BUFFER_WRITE);
+ float *data_out = (float *)buf_info.buf;
+ size_t len = buf_info.len / sizeof(float);
+
+ if (len != self->model_out_dim) {
+ mp_raise_ValueError("data_out must be a list of floats with size matching to output dimensions of model. Check using get_model_output_dim().");
+ }
+
+ int result = IMAI_dequeue(data_out);
+ if (result == 0) {
+ return MP_OBJ_NEW_SMALL_INT(result);
+ } else if (result == -1) {
+ return MP_OBJ_NEW_SMALL_INT(result);
+ } else if (result == -2) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Internal memory allocation error"));
+ }
+ return MP_OBJ_NEW_SMALL_INT(result);
+}
+
+
+static const mp_obj_fun_builtin_fixed_t init_obj = {
+ .base = { &mp_type_fun_builtin_1 },
+ .fun._1 = (mp_fun_1_t)init,
+};
+
+
+static const mp_obj_fun_builtin_fixed_t enqueue_obj = {
+ .base = { &mp_type_fun_builtin_2 },
+ .fun._2 = (mp_fun_2_t)enqueue,
+};
+
+static const mp_obj_fun_builtin_fixed_t dequeue_obj = {
+ .base = { &mp_type_fun_builtin_2 },
+ .fun._2 = (mp_fun_2_t)dequeue,
+};
+
+static const mp_obj_fun_builtin_fixed_t get_model_input_dim_obj = {
+ .base = { &mp_type_fun_builtin_1 },
+ .fun._1 = (mp_fun_1_t)get_model_input_dim,
+};
+
+static const mp_obj_fun_builtin_fixed_t get_model_output_dim_obj = {
+ .base = { &mp_type_fun_builtin_1 },
+ .fun._1 = (mp_fun_1_t)get_model_output_dim,
+};
diff --git a/examples/usercimaimodule/imagimob/README.md b/examples/usercimaimodule/imagimob/README.md
new file mode 100644
index 0000000000000..9807dd3dd5203
--- /dev/null
+++ b/examples/usercimaimodule/imagimob/README.md
@@ -0,0 +1,79 @@
+# MicroPython ImagiMob Integration for Infineon's PSoC6 port
+
+This directory contains the imagimob generated model files and the interface for it's enablement in micropython. To access your edge ai models developed for PSoC6 based kit from a micropython application, please follow the description below.
+
+## Folder structure
+Currently the existing sample model files are generated for [Human Activity Recognition](https://developer.imagimob.com/getting-started/modus-toolbox-solution-and-Imagimob-Studio#human-activity-recognition) code from imagimob.
+
+**model.c** : Imagimob generated source code in C for your developed model in the studio.
+
+**model.h** : Imagimob generated source code in C for your developed model in the studio.
+
+**imai_mp_iface.c** : MicroPython interface for ImagiMob models.
+
+**micropython.mk** : Makefile configurations for firmware generation.
+
+## Installation
+
+### Dependencies
+
+- WSL (Windows Subsystem Layer)
+- USBIPD
+- ModusToolbox (version 3.0)
+- MicroPython project with psoc6 port enabled
+
+The development environment for the project is [WSL](https://learn.microsoft.com/en-us/windows/wsl/install). Please follow the steps in link to get WSL ready. Additionally [usbip](https://learn.microsoft.com/en-us/windows/wsl/connect-usb) installation should be done to allow accessing psoc device within WSL.
+
+Please ensure to follow the pre-requisites mentioned [here](https://github.com/Infineon/micropython/tree/ports-psoc6-main/ports/psoc6#pre-requisites) and get the required installation.
+
+By now, all the required installations should be working.
+
+## Usage
+
+Follow the steps below to generate micropython bindings for your imagimob generated model.
+
+1. Clone the repository and switch to ports-psoc6-main branch.
+
+ git clone https://github.com/Infineon/micropython.git
+
+ git checkout --track origin/ports-psoc6-main
+
+2. Then initialize the ModusToolbox™ environment:
+
+ cd ports/psoc6
+
+ make mtb_init BOARD=
+
+ where board-name is your target device. Currently following boards are supported:
+
+ - CY8CKIT-062S2-AI
+ - CY8CPROTO-062-4343W
+ - CY8CPROTO-063-BLE
+
+3. Retrieve submodules:
+
+ make submodules
+
+4. In the examples/usercimaimodule/imagimob/ folder, replace the **model.c** and **model.h** files by your imagimob generated model files.
+
+5. Compile it alongwith psoc6 port source code and generate the final .hex to be flashed into your device. From your root:
+
+ cd ports/psoc6
+
+ make USER_C_MODULES=../../examples/usercimaimodule/
+
+ make program
+
+# Run micropython
+
+Use any micropython supported IDE (like Thonny) and establish a session with your device. Now you should be able to import your model as shown below:
+
+ import imai as model
+
+ model.init() # Initialize the model
+
+ model.enqueue(data_in) # Send the data inputs for the model
+
+ model.dequeue(data_out) # Get the classifications
+
+**Note**: Above is only an abstract code to show the usage in micropython. Please take care of populating the data-in and data_out with right dimensions and values. The provided api's abide by its operation in imagimob. Please refer to API documentation [here](https://developer.imagimob.com/edge-optimization/edge-api).
\ No newline at end of file
diff --git a/examples/usercimaimodule/imagimob/imai_mp_iface.c b/examples/usercimaimodule/imagimob/imai_mp_iface.c
new file mode 100644
index 0000000000000..cdd558b6be36f
--- /dev/null
+++ b/examples/usercimaimodule/imagimob/imai_mp_iface.c
@@ -0,0 +1,66 @@
+// Include MicroPython API.
+#include "py/runtime.h"
+
+#include "py/mphal.h"
+#include "model.h"
+
+static mp_obj_t init(void){
+ IMAI_init();
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_0(init_obj, init);
+
+static mp_obj_t enqueue(const mp_obj_t data_in_obj){
+ float data_in[IMAI_DATA_IN_COUNT];
+ mp_obj_t *data_in_items;
+ size_t len;
+ mp_obj_get_array(data_in_obj, &len, &data_in_items);
+ if (len != IMAI_DATA_IN_COUNT) {
+ mp_raise_ValueError("data_in must be a list of IMAI_DATA_IN_COUNT floats");
+ }
+ for (int i = 0; i < IMAI_DATA_IN_COUNT; i++) {
+ data_in[i] = mp_obj_float_get(data_in_items[i]);
+ }
+ int result = IMAI_enqueue(data_in);
+ return MP_OBJ_NEW_SMALL_INT(result);
+}
+MP_DEFINE_CONST_FUN_OBJ_1(enqueue_obj, enqueue);
+
+static mp_obj_t dequeue(mp_obj_t data_out_obj) {
+ mp_buffer_info_t buf_info;
+ mp_get_buffer(data_out_obj, &buf_info, MP_BUFFER_WRITE);
+ float *data_out = (float *)buf_info.buf;
+ int result = IMAI_dequeue(data_out);
+ if (result == 0) {
+ return MP_OBJ_NEW_SMALL_INT(result);
+ } else if (result == -1) {
+ return MP_OBJ_NEW_SMALL_INT(result);
+ } else if (result == -2) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Internal memory allocation error"), result);
+ }
+ return MP_OBJ_NEW_SMALL_INT(result);
+}
+MP_DEFINE_CONST_FUN_OBJ_1(dequeue_obj, dequeue);
+
+static const mp_rom_map_elem_t example_module_globals_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_imai) },
+
+ // imagimob fns
+ { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_enqueue), MP_ROM_PTR(&enqueue_obj) },
+ { MP_ROM_QSTR(MP_QSTR_dequeue), MP_ROM_PTR(&dequeue_obj) },
+
+ // constants
+ { MP_ROM_QSTR(MP_QSTR_DATA_IN), MP_ROM_INT(IMAI_DATA_IN_COUNT) },
+ { MP_ROM_QSTR(MP_QSTR_DATA_OUT), MP_ROM_INT(IMAI_DATA_OUT_COUNT) },
+};
+static MP_DEFINE_CONST_DICT(example_module_globals, example_module_globals_table);
+
+// Define module object.
+const mp_obj_module_t imai_module = {
+ .base = { &mp_type_module },
+ .globals = (mp_obj_dict_t *)&example_module_globals,
+};
+
+// Register the module to make it available in Python.
+MP_REGISTER_MODULE(MP_QSTR_imai, imai_module);
diff --git a/examples/usercimaimodule/imagimob/micropython.mk b/examples/usercimaimodule/imagimob/micropython.mk
new file mode 100644
index 0000000000000..c66c288f1d6f3
--- /dev/null
+++ b/examples/usercimaimodule/imagimob/micropython.mk
@@ -0,0 +1,8 @@
+IMAI_MOD_DIR := $(USERMOD_DIR)
+
+# Add all C files to SRC_USERMOD.
+SRC_USERMOD += $(IMAI_MOD_DIR)/imai_mp_iface.c $(IMAI_MOD_DIR)/model.c
+
+# We can add our module folder to include paths if needed
+# This is not actually needed in this example.
+CFLAGS_USERMOD += -I$(IMAI_MOD_DIR)
\ No newline at end of file
diff --git a/examples/usercimaimodule/imagimob/model.c b/examples/usercimaimodule/imagimob/model.c
new file mode 100644
index 0000000000000..51dc47efcd7cc
--- /dev/null
+++ b/examples/usercimaimodule/imagimob/model.c
@@ -0,0 +1,3623 @@
+/*
+* Imagimob Studio 5.0.1820+4321c8be86ece6ffb339e47f960600a022788a61
+* Copyright © 2023- Imagimob AB, All Rights Reserved.
+*
+* Generated at 08/20/2024 05:44:33 UTC. Any changes will be lost.
+*
+* Model ID ad879df4-9fed-4ba0-90d8-f6c78a5462e3
+*
+* Memory Size Efficiency
+* Buffers 8000 bytes (RAM) 80 %
+* State 808 bytes (RAM) 100 %
+* Readonly 94744 bytes (Flash) 100 %
+*
+* Backend tensorflow
+* Keras Version 2.15.0
+* Backend Model Type Sequential
+* Backend Model Name conv1d-medium-balanced-3
+*
+* Class Index | Symbol Label
+* 0 | unlabelled
+* 1 | standing
+* 2 | running
+* 3 | walking
+* 4 | sitting
+* 5 | jumping
+*
+* Layer Shape Type Function
+* Sliding Window (data points) [50,3] float dequeue
+* window_shape = [50,3]
+* stride = 30
+* buffer_multiplier = 2
+* Input Layer [50,3] float dequeue
+* shape = [50,3]
+* Convolution 1D [25,16] float dequeue
+* filters = 16
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 2
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,3,16]
+* Batch Normalization [25,16] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[16]
+* beta = float[16]
+* mean = float[16]
+* variance = float[16]
+* Activation [25,16] float dequeue
+* activation = relu
+* trainable = True
+* Convolution 1D [25,32] float dequeue
+* filters = 32
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,16,32]
+* Convolution 1D [25,32] float dequeue
+* filters = 32
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,32,32]
+* Batch Normalization [25,32] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[32]
+* beta = float[32]
+* mean = float[32]
+* variance = float[32]
+* Activation [25,32] float dequeue
+* activation = relu
+* trainable = True
+* Max pooling 1D [12,32] float dequeue
+* pool_size = 2
+* strides = 2
+* padding = valid
+* trainable = True
+* Convolution 1D [12,64] float dequeue
+* filters = 64
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,32,64]
+* Convolution 1D [12,64] float dequeue
+* filters = 64
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,64,64]
+* Batch Normalization [12,64] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[64]
+* beta = float[64]
+* mean = float[64]
+* variance = float[64]
+* Activation [12,64] float dequeue
+* activation = relu
+* trainable = True
+* Max pooling 1D [6,64] float dequeue
+* pool_size = 2
+* strides = 2
+* padding = valid
+* trainable = True
+* Global average pooling 1D [64] float dequeue
+* trainable = True
+* Dense [6] float dequeue
+* units = 6
+* use_bias = True
+* activation = linear
+* trainable = True
+* weight = float[64,6]
+* bias = float[6]
+* Activation [6] float dequeue
+* activation = softmax
+* trainable = True
+*
+* Exported functions:
+*
+* int IMAI_dequeue(float *restrict data_out)
+* Description: Dequeue features. RET_SUCCESS (0) on success, RET_NODATA (-1) if no data is available, RET_NOMEM (-2) on internal memory error
+* Parameter data_out is Output of size float[6].
+*
+* int IMAI_enqueue(const float *restrict data_in)
+* Description: Enqueue features. Returns SUCCESS (0) on success, else RET_NOMEM (-2) when low on memory.
+* Parameter data_in is Input of size float[3].
+*
+* void IMAI_init(void)
+* Description: Initializes buffers to initial state. This function also works as a reset function.
+*
+*
+* Disclaimer:
+* The generated code relies on the optimizations done by the C compiler.
+* For example many for-loops of length 1 must be removed by the optimizer.
+* This can only be done if the functions are inlined and simplified.
+* Check disassembly if unsure.
+* tl;dr Compile using gcc with -O3 or -Ofast
+*/
+
+/*
+* Tensorflow Test Set
+*
+* (ACC) Accuracy 87.442 %
+* (F1S) F1 Score 87.305 %
+*
+* Name of class (unlabelled) jumping running sitting standing walking
+* (TP) True Positive or Correct Positive Prediction 117 351 813 970 1757 1305
+* (FN) False Negative or Incorrect Negative Prediction 135 0 102 271 49 206
+* (FP) False Positive or Incorrect Positive Prediction 24 66 2 0 539 132
+* (TN) True Negative or Correct Negative Prediction 5800 5659 5159 4835 3731 4433
+* (TPR) True Positive Rate or Sensitivity, Recall 46.43 % 100.00 % 88.85 % 78.16 % 97.29 % 86.37 %
+* (TNR) True Negative Rate or Specificity, Selectivity 99.59 % 98.85 % 99.96 % 100.00 % 87.38 % 97.11 %
+* (PPV) Positive Predictive Value or Precision 82.98 % 84.17 % 99.75 % 100.00 % 76.52 % 90.81 %
+* (NPV) Negative Predictive Value 97.73 % 100.00 % 98.06 % 94.69 % 98.70 % 95.56 %
+* (FNR) False Negative Rate or Miss Rate 53.57 % 0.00 % 11.15 % 21.84 % 2.71 % 13.63 %
+* (FPR) False Positive Rate or Fall-Out 0.41 % 1.15 % 0.04 % 0.00 % 12.62 % 2.89 %
+* (FDR) False Discovery Rate 17.02 % 15.83 % 0.25 % 0.00 % 23.48 % 9.19 %
+* (FOR) False Omission Rate 2.27 % 0.00 % 1.94 % 5.31 % 1.30 % 4.44 %
+* (F1S) F1 Score 59.54 % 91.41 % 93.99 % 87.74 % 85.67 % 88.53 %
+*/
+
+#include
+#include
+#include
+#include
+
+#include "model.h"
+
+// Working memory
+static int8_t _buffer[8000];
+static int8_t _state[808];
+
+// Parameters
+static const uint32_t _K5[] = {
+ 0x3e048565, 0x3ef7c599, 0xbd3f9609, 0xbed19242, 0x3f3571e4, 0xbeeda35e, 0x3e9975c3, 0x3d0d8d5d,
+ 0xbe854530, 0xbe2d109d, 0x3ee70590, 0x3e3846dc, 0xbd12b955, 0x3de502d7, 0x3f0304aa, 0xbd9f5608,
+ 0x3f1e4b1d, 0x3e6158ad, 0xbe8bea60, 0xbf151355, 0xbeae21f7, 0xbeb424c5, 0xbd77fadd, 0xbefecdcc,
+ 0xbeab1adc, 0x3e6e7c96, 0xbdca418c, 0x3f0af747, 0xbe972788, 0xbed505ac, 0x3f0adc36, 0xbf65a53e,
+ 0xbe3ab48e, 0x3e0fd23e, 0xbf0cf2d8, 0x3ead94b8, 0xbee84988, 0x3ed92668, 0x3df22a44, 0xbe046776,
+ 0x3f5e5554, 0xbd59bc4e, 0x3ddce2c2, 0x3e923d4d, 0xbd7b6dc4, 0xbed00d59, 0xbf34b1d2, 0x3eef55e9,
+ 0x3bd40a98, 0xbe3d09f4, 0x3ebb6ef9, 0xbd06b9a8, 0xbeb2561b, 0x3eb2ef44, 0x3f5b3431, 0xbecba09a,
+ 0xbe79cb59, 0x3f19129e, 0xbf48d847, 0xbf5865f6, 0xbe4d57c1, 0x3e8229b0, 0xbf0a79df, 0xbf2f3f41,
+ 0x3f14ae73, 0x3ebe7308, 0xbeb55325, 0xbb8a4911, 0xbf80e6ce, 0x3efce794, 0xbf8153dc, 0xbf2baa0a,
+ 0xbef9f13f, 0xbf18c885, 0xbd82a249, 0xbe5f3e1a, 0xbee7774b, 0x3ec91199, 0x3ce6ea01, 0xbe3177c5,
+ 0xbe796a84, 0xbcae243e, 0xbe29b0d4, 0xbee884c7, 0xbee7ecac, 0x3ea4c61f, 0x3da3f75c, 0xbeade14b,
+ 0x3e822eb9, 0xbf0110cf, 0xbe973682, 0x3f1fab2e, 0xbe36b7fc, 0xbee04f8e, 0x3eb5011f, 0x3e1c9e5e,
+ 0xbf23c5a5, 0x3d6c948a, 0xbf4dd451, 0x3db54e0e, 0xbe9e37f9, 0x3f5ae86e, 0x3e9d51cd, 0x3ee38f52,
+ 0x3f157d2c, 0x3e990aba, 0xbf313cca, 0xbef7b767, 0x3f8ada93, 0xbf68b84d, 0x3fe168da, 0x3f260acf,
+ 0x3f8e5e50, 0x3f394df1, 0xbfc34dcf, 0xbf532903, 0xc01a853a, 0xbe16f2f9, 0x3e947afe, 0x3eb4201a,
+ 0xbee0b423, 0x3d3df444, 0xbd87fddd, 0xbf477085, 0xbedbb669, 0x3eabb4d7, 0x3e1fe297, 0x3ef3493a,
+ 0x3e039bb3, 0x3e50c294, 0x3eafd030, 0xbac17c12, 0x3e86f615, 0x3ef28c32, 0xbdb05e01, 0x3f1a8081,
+ 0x3e998452, 0x3d2fb134, 0x3ee41d2d, 0x3ee69d41, 0xbe8ee9d6, 0x3e7882dd, 0x3e2d51a4, 0x3df32ad1
+};
+
+static const uint32_t _K8[] = {
+ 0x3eaac794, 0x3e5bdd1e, 0xbece719b, 0xbebcefd1, 0x3eeb2f33, 0xbf245763, 0xbef4844d, 0xbed8797f,
+ 0xbf25bb3c, 0xbe748f1f, 0xbdc70b04, 0xbd7def08, 0xbe6d460c, 0xbd62ec80, 0x3f69fcb5, 0x3f62d4b3
+};
+
+static const uint32_t _K12[] = {
+ 0x3ed1c52c, 0x3f026e9e, 0xbe2981ff, 0xbded495b, 0x3f282cc9, 0xbdb36932, 0x3e5566b3, 0xbe2262af,
+ 0xbe859df4, 0xbe6404d3, 0xbcfbcaac, 0x3d0f35fa, 0x3dc76bd8, 0xbdbaa73f, 0x3df62120, 0x3e0a1fec,
+ 0x3ddefd80, 0x3ed41042, 0x3ccea8a1, 0xbe3eed57, 0x3f0abe58, 0x3dba762e, 0x3ca1172a, 0x3e4d4079,
+ 0xbe243a5d, 0xbed625f0, 0xbe8bddff, 0xbe234011, 0xbe225fba, 0x3e06ef58, 0x3f1822b9, 0x3c83b525,
+ 0x3e3fd6a9, 0xbd885096, 0xbe663d08, 0x3dc37212, 0xbb463998, 0x3e861421, 0x3ddfd789, 0x3e00bc60,
+ 0xbda00957, 0xbe3e071b, 0x3d81f94c, 0xbda717ec, 0xbea4bb04, 0xbde240f7, 0x3e49484b, 0x3e64cc83,
+ 0x3d21856a, 0xbda91c71, 0xbd7e40a9, 0xbda0ba8e, 0xbe3005bd, 0x3b826c9a, 0x3edad4af, 0x3e5289fb,
+ 0xbe62965d, 0xbd811071, 0x3d739424, 0xbd11bd4d, 0x3d51fcf2, 0xbc00cf67, 0x3e885f9a, 0x3d9c498b,
+ 0x3de45cc1, 0xbe9e9ae8, 0x3d4525ba, 0xbdeaebb1, 0xbde8f75b, 0xbd9f9b38, 0x3e7bb32d, 0x3ed67891,
+ 0x3da5f6eb, 0x3eb197e4, 0x3dcefc13, 0x3eb4276b, 0x3db3e55a, 0xbea1ea5c, 0xbe083f50, 0xbd00e329,
+ 0xbd2e47fc, 0x3de4ae08, 0x3e548c6e, 0x3eac4a15, 0x3d8d5538, 0xbe3880a9, 0x3f20d1bb, 0x3e524d1f,
+ 0xbe0e7126, 0x3ec68c00, 0x3f0cd614, 0x3d446781, 0xbef83149, 0xbe9e8991, 0x3c78c880, 0xbe307166,
+ 0xbe69b8bd, 0xbe44fa87, 0xbe495103, 0x3e8213bd, 0x3e7486fa, 0xbe23a28e, 0xbdc4208d, 0xbdb37af4,
+ 0x3e705508, 0x3e26ba42, 0x3e55ae0a, 0x3eec0c8d, 0x3e0af088, 0xbed48ba6, 0x3db5f1ce, 0x3df63626,
+ 0xbee22f50, 0xbdd4ac1b, 0xbec1fa61, 0x3ebf608c, 0x3df61e67, 0xbf2e8b28, 0x3d12997d, 0xbd07aa8d,
+ 0xbeec6430, 0xbe59ccb1, 0xbd130373, 0xbde8f66c, 0x3e354e74, 0x3e3d9271, 0x3dfb3f89, 0x3d24a91b,
+ 0xbeb93594, 0x3d6bddee, 0x3d9cf91a, 0x3e98fd69, 0x3e158d8c, 0xbee45e99, 0x3e4ece24, 0x3d02b332,
+ 0xbe950a6c, 0xbe86e135, 0x3e8418d4, 0xbd12e166, 0xbe236b0c, 0x3f3f8bc2, 0xbeacb880, 0x3d1f35a3,
+ 0xbe2c7d26, 0x3e47f1e6, 0xbc917e75, 0x3dc3ba02, 0x3d36a5ed, 0x3ed4cdf0, 0xbecf9b66, 0x3dc4642c,
+ 0x3db51504, 0x3e50dffc, 0x3f2a19b4, 0x3f314635, 0x3e977b2e, 0x3e072260, 0x3e997245, 0x3e6b160a,
+ 0xbe623c43, 0xbe904cb3, 0x3e979c6a, 0x3ec97de6, 0xbc2a8952, 0xbe90fb9d, 0x3d8f94e8, 0x3e18b992,
+ 0xbea1d046, 0x3d4127c0, 0xbdb2d61b, 0xbe9d870f, 0xbeee1501, 0x3def4f7a, 0xbdf003bb, 0x3e373f6c,
+ 0xbe34fbc6, 0x3dbf576c, 0xbecc1882, 0xbe202c6c, 0xbd2cf640, 0x3e2e9293, 0xbd6f1c00, 0x3f03f8cf,
+ 0xbded5ff2, 0xbe38f621, 0x3e9161bf, 0xbe13462f, 0x3dfe61a4, 0xbd93e7ba, 0xbe83eab5, 0xbe16a50c,
+ 0x3ea6b6af, 0xbe83a47c, 0x3cf35a65, 0x3e83ecdb, 0x3f021704, 0x3ed3a83c, 0x3e8c4151, 0xbd410ff8,
+ 0xbda1e264, 0x3d3cfde4, 0xbcac0c56, 0x3e8b6661, 0x3d6ce864, 0xbc8475ec, 0x3e20213c, 0x3d4e81a3,
+ 0x3eaa5483, 0xbeaadd2a, 0xbe66a2b9, 0x3e97b618, 0x3efca7b2, 0xbd6686c9, 0x3e40fd1f, 0xbd46fef4,
+ 0xbdf5ec20, 0x3d0fdfdf, 0xbe77d283, 0xbdf6289f, 0x3eac27c9, 0x3d2c1e09, 0x3e65db19, 0x3dbaa912,
+ 0xbd62b7c0, 0xbe4fb422, 0xbd4434ee, 0x3cd7f020, 0x3e787513, 0xbe0de608, 0xbe54cbea, 0xbdf180fd,
+ 0x3cbbe1a4, 0xbe55558f, 0xbea0cba9, 0xbcaa2e22, 0xbebaa5cf, 0x3e094122, 0x3e529172, 0xbebb5350,
+ 0xbda251f1, 0x3e8a6685, 0xbd9bf5eb, 0x3e99d7c2, 0xbdfc7c18, 0xbe42243b, 0x3dfd97b6, 0xbf0050e2,
+ 0xbdac8b6f, 0x3dc99e25, 0x3e88c0e2, 0x3f02a31e, 0xbeac11a5, 0x3e4ca7a9, 0xbb3b4408, 0xbc26b03c,
+ 0xbf0aae19, 0x3c824ca1, 0xbeb6d3b9, 0x3eb03c1f, 0xbdf35db1, 0xbf24e7ff, 0x3f0b89c9, 0xbf1ebd09,
+ 0xbe8e2b69, 0xbdcef4fd, 0x3eb24fbe, 0xbd1cb391, 0x3d4961aa, 0xbdd91c4d, 0xbd7655e8, 0x3e9acd39,
+ 0xbdb590d0, 0xbef56f4a, 0x3e3bcafa, 0x3db812ff, 0xbe6c8f50, 0x3d406d09, 0x3ee5f4c1, 0xbe9268bb,
+ 0x3d2d26ca, 0x3d90b626, 0x3ea9542b, 0x3e96d47b, 0xbeaa129e, 0x3f05e2ea, 0xbe74982a, 0xbdcedb1d,
+ 0x3ef1055a, 0x3dd2a9be, 0xbde377b9, 0x3eeb9576, 0x3e8dbec5, 0x3ebbe038, 0xbe399c24, 0x3d5e7073,
+ 0x3f0945a1, 0xbd7dca8d, 0x3ebeec4f, 0xbe81fb58, 0xbda92add, 0x3edd9087, 0x3e9c19e7, 0xbe286eba,
+ 0x3eac4cf4, 0x3c62f913, 0xbe3aeaa9, 0x3eb421e0, 0x3f0349c8, 0x3eb9b61f, 0xbdd8894c, 0x3e01b79c,
+ 0x3f104061, 0x3d67c145, 0x3d6bab6b, 0x3eaa4f6c, 0x3e8a3bc3, 0xbd133c99, 0xbd96de0e, 0xbeaeba9d,
+ 0xbe5b0b12, 0xbf008df9, 0xbe7b899a, 0x3e41753a, 0x39e0abf0, 0xbe4b2211, 0x3e734855, 0x3ea1d2ac,
+ 0x3d61bec6, 0xbc4647d7, 0xbd02bf6e, 0xbe11ec74, 0x3eb6ac0d, 0xbecba0f1, 0xbe7adf52, 0xbde396a0,
+ 0x3db3b21d, 0x3cfd4671, 0x3db439a6, 0x3e094b8e, 0xbc6fb958, 0xbde1cbb9, 0xbea0c446, 0xbeaa23c9,
+ 0x3e808b84, 0xbe72a003, 0x3d912093, 0xbddc5afb, 0x3dd8c81a, 0xbe2cdef1, 0x3e395c29, 0xbd94c9c0,
+ 0x3e38467e, 0xbe9889ca, 0xbed3e4e0, 0xbe9f1da0, 0xbdf1c7e9, 0xbed4249f, 0x3daaf419, 0xbcd4e648,
+ 0xbe214729, 0xbddf913c, 0xbd4ceb38, 0xbedccf44, 0xbd794fcb, 0xbf14ef39, 0xbd680de4, 0x3c2c43b0,
+ 0xbd9cff68, 0xbeaeb1b5, 0x3c146182, 0xbe7d3547, 0xbe610562, 0xbeda056f, 0xbee09368, 0xbda166a1,
+ 0xbe28b141, 0x3d9319ac, 0x3e29e721, 0x3e759b89, 0x3eadab97, 0x3e4a0bc3, 0xbe020ded, 0xbe880891,
+ 0x3c77d9cb, 0xbd277ed6, 0xbd4a4746, 0x3f2e0563, 0x3e96f5af, 0xbe41ebb6, 0xbf719a1d, 0x3e69af5c,
+ 0xbe2b865b, 0x3e1adbae, 0x3f0b10ba, 0x3e2fffac, 0xbe25118c, 0x3e8a8a2e, 0x3d2be4cb, 0x3d94db15,
+ 0xbe936936, 0xbf22d270, 0xbdbcb163, 0x3cad8748, 0xbe6ec95b, 0xbe4de0f0, 0xbf13e5eb, 0xbd792e31,
+ 0x3ec31734, 0xbe04cd4d, 0xbe37af52, 0xbd7900cd, 0x3eff0dd2, 0x3d6d6f61, 0x3e136e75, 0xbcf2768f,
+ 0xbe8ebdce, 0xbde9d489, 0xbe662710, 0xbf08e8d7, 0xbea831a5, 0xbf1ad626, 0xbd60ea1d, 0x3d3144a7,
+ 0xbd8b96e0, 0x3dc7c93d, 0xbf14a497, 0xbecfe2ab, 0x3e9c8830, 0xbeee589a, 0x3e5c76c3, 0x3e08add9,
+ 0x3dcba8d9, 0xbe815e99, 0x3e1e0e5d, 0x3f016572, 0x3de76bac, 0x3e267ac9, 0x3eb8ad49, 0xbe9d6f0b,
+ 0x3ecd6c2b, 0xbe75ef7c, 0xbeaabe17, 0x3e8e4316, 0x3de56502, 0xbe9a0dbb, 0xbe4f36af, 0x3db346e1,
+ 0xbde4379f, 0x3e7e37a8, 0xbde5b88e, 0x3da21158, 0x3f2351a5, 0xbc318684, 0x3dbec674, 0xbd984f0f,
+ 0x3c9ad79f, 0xbcfa75c9, 0xbea3ec83, 0xbd929f80, 0xbc72d3f3, 0xbe3148d9, 0x3e7dcab4, 0x3e8c5271,
+ 0xbcf1345d, 0x3d8ab159, 0x3f14f968, 0x3d7fb1ee, 0x3e7dd6e6, 0xbd7b466d, 0xbeca3103, 0x3eb05297,
+ 0x3eafb038, 0xbe80960b, 0x3df0ddb0, 0xbe100f79, 0xbdb6256d, 0x3f12701b, 0x3e8de1fb, 0x3e0f48a3,
+ 0xbe95400a, 0x3e8b269a, 0x3e84ba37, 0xbcded326, 0xbe6bd323, 0x3ea1a9e4, 0xbeb08b3e, 0xbe56f100,
+ 0xbe4c2cd2, 0xbd8129e2, 0x3e3d1460, 0x3e08c660, 0xbe18a1c2, 0x3e2733ee, 0xbe552a23, 0x3c2c7cb1,
+ 0xbec8751d, 0x3ed58078, 0x3e9f3bdb, 0x3e759d4d, 0xbe38a70f, 0xbd2f1a07, 0x3e508ff4, 0xbe4b406a,
+ 0x3c7c16d2, 0x3e6d353c, 0x3eecd4ca, 0x3da930fa, 0x3e0c2ca3, 0xbd7ce1cf, 0x3e256724, 0xbc94c85f,
+ 0x3c424e9a, 0x3e195598, 0x3eb244a4, 0x3ee987fa, 0x3e2f6f20, 0x3e82c888, 0x3e6c4538, 0x3eb0de96,
+ 0xbe814977, 0x3ee1595e, 0x3f086272, 0x3e338956, 0xbe8a0464, 0x3eb61167, 0x3e803cc2, 0xbcc9e7eb,
+ 0xbdbdf22f, 0x3f02fd43, 0x3e45270b, 0x3e0823fa, 0xbe82062d, 0x3bc5aeaa, 0x3ef961e2, 0xbe406509,
+ 0x3e8c9f62, 0xbccd6928, 0x3e8dc142, 0xbe7d6ef0, 0x3e8eceb6, 0x3eea2ed3, 0x3d8f3419, 0xbe334d2a,
+ 0x3b821de0, 0x3ad64303, 0xbe73e39b, 0xbecc3c47, 0xbde15592, 0x3e91f445, 0x3ee00730, 0xbece2afa,
+ 0x3e544c2e, 0x3c3c2f90, 0x3dc20a78, 0xbbd9cc16, 0xbe4779aa, 0xbdfd5e09, 0xbe4c3276, 0xbd4796d2,
+ 0x3bc49325, 0xbeb84d0d, 0xbe49523a, 0xbead8d3a, 0xbe76db03, 0x3b48e764, 0xbdca4de6, 0x3e9def26,
+ 0xbe80d12a, 0x3da8a4b4, 0xbe915607, 0x3ea21caa, 0xbd00dbf4, 0xbef7d1a2, 0x3d4c7673, 0x3e242a7c,
+ 0x3d802fa4, 0xbd5e0b06, 0x3e0d07d4, 0xbe57d1ed, 0xbe8f1612, 0xbe028bbb, 0x3e601864, 0x3ec290be,
+ 0x3c754368, 0x3e8bf58d, 0xbe6f92b1, 0x3e039036, 0x3eea54b7, 0xbebad155, 0xbde80cc8, 0x3da3352c,
+ 0xbe8d283c, 0xbe02f255, 0x3e5dcf03, 0xbed1e73f, 0xbee1277c, 0xbec423b8, 0xbdc08f74, 0xbea5f570,
+ 0xbf047595, 0x3db2406e, 0xbe7983e7, 0xbed3afe5, 0xbebdbcf1, 0xbe35fb88, 0xbdd76534, 0x3d056bbc,
+ 0x3d5b6682, 0x3d5903d1, 0xbe8f5d52, 0xbf1e4c1d, 0xbd51798f, 0xbd7af8ce, 0xbf091fad, 0xbf117eea,
+ 0xbeabd600, 0xbe17dda1, 0x3e1778fd, 0x3c81f28f, 0xbdfd56a2, 0xbe9a3774, 0xbc9a0aa4, 0x3df8f591,
+ 0xbd16ba72, 0x3bf16791, 0xbda5a3cb, 0x3ee5eb40, 0xbe95f459, 0xbe2da7a3, 0x3d3aba76, 0xbdf62a4d,
+ 0x3debf6c5, 0xbe6573f5, 0xbe5c90cd, 0xbeba164d, 0xbd3ede74, 0xbd76c7bf, 0xbea01d83, 0xbb94db5b,
+ 0xbeac86a1, 0xbe9ef59e, 0xbe1c22d1, 0xbbfa07d9, 0xbe0d46db, 0xbee258cd, 0xbe8dceb9, 0xbde42b99,
+ 0x3eaa6635, 0xbe622bf9, 0xbef54716, 0xbe9f1ae1, 0xbd29afcb, 0xbe82b3a2, 0xbec13fb6, 0xbeba8efd,
+ 0xbe12ee7f, 0x3dc18448, 0xbd4a342f, 0xbe92e689, 0xbef91c8a, 0xbec618af, 0xbec7856c, 0xbe2ff2c3,
+ 0xbde635ea, 0xbed0b774, 0xbf45f8c7, 0xbe41d2b6, 0xbd9e5e6f, 0xbe68e64c, 0xbe5814fb, 0xbe48365b,
+ 0xbe8cc8b8, 0x3e5d95e4, 0x3eaba7d8, 0x3e9782a4, 0xbe04f3dc, 0xbe7875ac, 0xbe96c4a7, 0xbdef2d8a,
+ 0x3d526a1d, 0x3d00e7b0, 0x3e3b997f, 0xbb4e1a1e, 0xbeabad16, 0x3ea2e045, 0xbefa60f1, 0xbf002094,
+ 0xbd42dad2, 0x3e94e5be, 0xbed81f2c, 0xbd3cb415, 0xbda73fa8, 0xbed7da75, 0xbe6cdd5d, 0xbef4aef0,
+ 0xbe0bb40c, 0xbe4f5192, 0x3e766f0c, 0x3c70b547, 0x3e05d39c, 0x3dd96e75, 0xbed8f0aa, 0xbf2849ab,
+ 0x3e4fab5f, 0x3dcdf9a6, 0xbe9c1749, 0xbcac586b, 0xbd68cf5b, 0xbd93a87e, 0xbee710d2, 0xbca0f33f,
+ 0xbe970280, 0x3e55da1b, 0xbd6b2816, 0xbc7d2178, 0x3d9eb2a7, 0x3e7a234d, 0xbea29d51, 0xbe963c61,
+ 0xbf1e6c5f, 0x3e091a14, 0xbe388d9f, 0xbc8fb5a0, 0xbed0d6ea, 0x3e0ad738, 0x3e4aeb45, 0x3e0ba80f,
+ 0xbe912982, 0x3d35b074, 0xbe8ee254, 0xbdad8434, 0xbee3456f, 0x3e2beadd, 0xbe70b9d4, 0x3d99b4cc,
+ 0xbe1ceb31, 0xbe1a1853, 0xbd05b296, 0xbdc119bc, 0x3ea48b66, 0x3f1dad8a, 0xbe9af5aa, 0x3e5c82de,
+ 0x3ec5752c, 0xbe6a09ba, 0xbeac87c0, 0x3f0821c6, 0x3c688431, 0xbe1a9b21, 0x3dc60537, 0xbd49bf22,
+ 0x3e4c7ef3, 0x3d8d2c2c, 0x3f1d4ead, 0x3e85a334, 0x3e898686, 0xbe95ec3c, 0x3d9da73c, 0xbe5c6d8f,
+ 0xbe6283d0, 0x3e850b26, 0x3d7d4c91, 0xbeb74414, 0xbe4ea082, 0xbeb33a5d, 0x3e25f785, 0x3dc23988,
+ 0xbd843a27, 0x3e596dce, 0x3e12e9fb, 0x3edd1932, 0x3e719075, 0x3e8f4368, 0xbe717c0c, 0xbecca642,
+ 0xbc301c35, 0x3e75426b, 0x3ea71efd, 0xbe78f30d, 0x3d2a9e8e, 0x3ed730d7, 0xbee0c4e1, 0xbedb57d8,
+ 0xbe91c7f6, 0x3f0903c1, 0xbc2e1b64, 0x3e18c4ee, 0x3ef02f3a, 0x3e72a236, 0xbe045d41, 0xbd0db0e2,
+ 0x3d136567, 0xbd4e5fcb, 0x3dedd2a2, 0x3e5d1886, 0x3e297bee, 0x3d3d23e3, 0xbde05dd7, 0xbea28366,
+ 0x3c38cf41, 0x3d11c059, 0xbe7a7bc3, 0x3ea7a4b9, 0x3f0d22a6, 0xbebc8ed9, 0x3eb044b6, 0xbcc22024,
+ 0xbf333abb, 0xbe192ced, 0xbe53d2a5, 0xbe43eb3d, 0xbe14a245, 0x3dacfa35, 0x3eea862c, 0x3ee709a9,
+ 0x3e1137c8, 0xbda21aa4, 0xbecd161e, 0x3f24942d, 0x3d1ed55c, 0x3e6235c2, 0xbe8e1446, 0xbeee1c7f,
+ 0xbdc1351f, 0xbec046a3, 0xbb9cb19e, 0xbec924b1, 0x3eea9bfb, 0xbe326709, 0x3e61adb1, 0x3daa4354,
+ 0x3e00a7f7, 0xbd40102e, 0x3e38bf0b, 0x3c59cb62, 0x3d7c9813, 0x3eb6dec1, 0xbd08cc86, 0x3c4fcd50,
+ 0x3edd602a, 0x3e13ca93, 0x3eab1ad3, 0xbe92c33f, 0x3ee74629, 0x3d3730ca, 0x3e904ab9, 0x3eb1896e,
+ 0x3e3f2ef9, 0x3e423841, 0x3ea9f224, 0xbe45673d, 0x3e7c51ff, 0xbe643549, 0x3de1c7f5, 0xbe56e85a,
+ 0xbd719d82, 0xbc573b78, 0x3e52c847, 0xbe3e5a63, 0xbe5bb153, 0xbe405862, 0x3e256e64, 0x3d215227,
+ 0x3ee07968, 0xbd2d92ab, 0x3e8bff6f, 0xbf5133d9, 0xbd3faa66, 0x3edfd930, 0xba354e8c, 0x3eded11c,
+ 0x3e64fa3d, 0x3d8f42ed, 0x3e448af2, 0x3dc95943, 0x3ed4bf24, 0xbe13eb5b, 0x3dd23d01, 0xbe707f24,
+ 0x3f0bdd96, 0xbd4f3d86, 0xbdc013c8, 0xbed01033, 0xbe8f68e3, 0x3e64e8a7, 0x3ecc8809, 0xbd55c95b,
+ 0xbced25dc, 0xbdab7927, 0x3e98e7f6, 0xbedc083b, 0xbef9b4fa, 0xbe9f7fa6, 0xbeae4a58, 0xbe24bea0,
+ 0x3e78c455, 0x3e803f09, 0xbefef0df, 0xbef21941, 0xbeba2886, 0x3e362769, 0xbe29252e, 0x3d31c67f,
+ 0xbd1a7313, 0x3e2b0bc3, 0x3f280b2a, 0x3ee50016, 0x3f08a61b, 0xbde50daf, 0xbef0551e, 0xbed15b64,
+ 0xbe676bb5, 0x3e641838, 0x3c9fe2c1, 0xbcdc6cc4, 0x3e467ab0, 0xbe9fd912, 0x3e22f2fe, 0xbe03baa0,
+ 0x3ddfe877, 0xbd9f3ef4, 0xbec48f2c, 0x3d857e78, 0x3dd57b2c, 0x3e31468d, 0xbeae3789, 0xbee59ee3,
+ 0x3e1168f9, 0x3ea73ab2, 0x3deee546, 0x3c3b80f4, 0x3e7a120a, 0xbd991222, 0x3caf2ea8, 0xbefd4d13,
+ 0xbe10780a, 0xbd0cfcd2, 0xbeae873f, 0xbee17ec9, 0xbc8627ef, 0xbe3d680c, 0xbe086451, 0xbeb99b3d,
+ 0x3db279a0, 0xbc4040fc, 0xbee7c7ac, 0xbd05a0f2, 0x3e2d3f87, 0xbd617485, 0xbe90db81, 0xbeda4782,
+ 0xbea069d2, 0xbeb40375, 0xbed2a520, 0xbd9bd06d, 0xbdf435fd, 0xbdca7f13, 0x3dcc5545, 0xbeb36112,
+ 0x3d66f134, 0x3ec3b090, 0x3e25ba99, 0xbebfa147, 0x3ef0beb3, 0xbec62c64, 0x3e0116f9, 0xbcbc65ec,
+ 0xbec96342, 0x3e36ed99, 0x3ecd7bdf, 0xbe6a6c0f, 0xbeb635e1, 0x3e9e00f8, 0x3dab9617, 0xbe60f7a9,
+ 0xbdd0eaf4, 0x3d0843dd, 0xbe4e6963, 0x3e397774, 0x3eb0b845, 0xbe9ec0c3, 0x3e0400f9, 0x3e969c69,
+ 0xbf072df7, 0xbe9a0cf8, 0x3d91a177, 0x3ef806cc, 0x3ea1eb71, 0xbdef654f, 0xba87b413, 0xbed86505,
+ 0xbeda4e40, 0xbe89af92, 0xbe5f7c54, 0x3f777224, 0xbea60967, 0x3dee8cee, 0x3ec61b07, 0xbde20b30,
+ 0xbd489556, 0xbe9175e5, 0xbf01d974, 0xbd71f400, 0xbeef8050, 0xbe7c3b2c, 0xbe9be8d2, 0xbeb7fb0e,
+ 0xbefb7547, 0xbe5d9be4, 0xbe233122, 0xbf19345b, 0xbec40345, 0xbf0453af, 0x3e44e6ae, 0x3de1fa5c,
+ 0xbeb14725, 0xbe289535, 0xbe485c40, 0xbdafd3fb, 0x3d43904d, 0xbe2f1bac, 0xbe72270b, 0xbe88928a,
+ 0xbe910984, 0xbde95d9e, 0xbee6d677, 0xbea21583, 0xbecaf101, 0xbf1089c0, 0xbe096bfc, 0xbd4d5bf1,
+ 0xbeff118b, 0xbd902872, 0xbcf3a728, 0xbe5533b9, 0x3d1d6f37, 0xbe38d153, 0xbdc918a3, 0xbe973d22,
+ 0x3e21d83e, 0x3d6d3438, 0xbe03b4e6, 0xbcc2481b, 0xbc7e70f1, 0xbdae298a, 0xbe7401ab, 0xbe6ddfd5,
+ 0x3d4853da, 0x3dab53de, 0x3e9e6104, 0x3dde0e36, 0xbe63a56f, 0x3d1a6554, 0xbe32d009, 0xbe579ea6,
+ 0xbe44f13d, 0x3dc15d2b, 0x3eeec47c, 0xbc2830ac, 0xbbc358fa, 0x3edde6b6, 0xbe08d6e2, 0x3e2dc04c,
+ 0x3f028ef1, 0x3e53101d, 0x3e92bba2, 0xbe1d86a6, 0xbef8156d, 0x3d1b0fab, 0xbe4d0f0b, 0x3d266c07,
+ 0xbcf850cd, 0x3d8ebd1b, 0x3d4e5a00, 0xbec862fe, 0xbe38ccf4, 0x3e8a260f, 0xbe181a94, 0x3ebf7b54,
+ 0x3e69f9f3, 0x3e5d91c5, 0x3c13c16d, 0x3dbdebda, 0xbe7794ae, 0xbe0e5e70, 0x3e354fa7, 0x3d3b6174,
+ 0xbe26cea0, 0x3dbb16a3, 0x3e7aea1f, 0x3cb193ac, 0xbebd6245, 0x3eb92dd5, 0x3d9ab245, 0x3e04b31f,
+ 0x3dadab04, 0x3bffca59, 0xbe6f50ca, 0x3efaccbf, 0x3dcc7310, 0xbe05e333, 0x3e21b978, 0x3e5354d9,
+ 0x3dddb43f, 0xbdf9ccd9, 0x3a05bee0, 0xbe837d71, 0x3e9036d7, 0x3e22c6eb, 0x3eb786e8, 0xbdd319c9,
+ 0xbd38f39f, 0x3e3d3421, 0x3ef45130, 0x3ebd0732, 0x3e8692d6, 0x3c7e4a22, 0xbdb54ef5, 0xbe9f092c,
+ 0x3dd0eba4, 0xbedfd361, 0xbeba891f, 0x3dfc0a64, 0xbdddde88, 0x3daefb78, 0x3dee47bc, 0xbe23f87f,
+ 0x3e5edb7d, 0x3e061c5b, 0xbd4cf0c0, 0xbe12225b, 0xbe075220, 0xbd73e398, 0xbe89e4f9, 0xbe88866e,
+ 0x3e69efbd, 0xbd091efb, 0xbed882ca, 0xbe8abdf4, 0x3e015666, 0x3da83b0f, 0xbc7ec3ef, 0xbe23413c,
+ 0xbe0a8fb1, 0x3dbf51dd, 0xbe1cb371, 0xbe667825, 0x3e2ff539, 0x3bc81268, 0xbeb4e619, 0xbea6069f,
+ 0x3ebad61c, 0xbe8cc633, 0x3e340cf3, 0xbde53a05, 0xbcbd683c, 0x3e15e7a3, 0x3dd48517, 0x3e1af5f6,
+ 0xbe13d2d4, 0xbe46f0d3, 0xbe417613, 0xbf1195ad, 0xbe3bedc1, 0xbeb7a83e, 0xbdec43a1, 0x3e2e0dfd,
+ 0x3f00e83a, 0x3daf9699, 0xbe2d3ef8, 0xbe1d20a3, 0x3e88b96f, 0x3e755981, 0xbdce6fa3, 0xbdbc2048,
+ 0x3da9accb, 0xbc221897, 0x3de8511e, 0xbe9dd49b, 0xbea9c7dd, 0xbe9c6662, 0x3e0dae17, 0xbda8e02f,
+ 0x3e9fe516, 0x3db870ec, 0x3cece2f6, 0xbe4f6b5e, 0xbe90ed13, 0x3e4f0eb0, 0xbed3e276, 0xbe63830c,
+ 0x3e8b87da, 0xbbe97b58, 0x3c068eff, 0xbe2177a1, 0xbe9b51bc, 0x3c9c0d27, 0xbda00270, 0xbecbee4c,
+ 0xbb4b2a31, 0xbe2e2aba, 0x3e9079d7, 0xbee0abe8, 0xbd313bb5, 0xbcd33b6c, 0x3e631360, 0xbd4e09b4,
+ 0xbe45788f, 0x3e7f00e0, 0xbd907b21, 0xbb547e7e, 0x3eb73a3c, 0xbe3440e5, 0xbd26c5bf, 0xbac222f2,
+ 0x3e4f54ec, 0xbe89e3b8, 0xbe94d83f, 0xbdcc3574, 0xbe56a5c2, 0xbde2f79d, 0x3d582e57, 0x3e55324a,
+ 0xbf0c20fb, 0x3deaf9ec, 0xbd2fc917, 0xbeb88311, 0xbeaf97e9, 0xbee0f28f, 0xbdc15827, 0x3e03312b,
+ 0xbcb4ac76, 0x3c68d0e7, 0xbd4e4a4f, 0xbe8b45b4, 0xbe9d1e28, 0x3c5ddafb, 0xbea44be0, 0x3cdd75d4,
+ 0xbd69cba2, 0x3e12fa9a, 0xbd5135ee, 0x3ecf9c12, 0xbc32e156, 0xbdf08f7a, 0xbe2724c7, 0xbe9418d5,
+ 0x3f06f293, 0xbe736060, 0xbe8006cc, 0x3c2177ad, 0x3ea9f369, 0x3f044e58, 0x3dd71ead, 0x3e482a98,
+ 0x3e2cf397, 0x3e2eec11, 0x3e0968ec, 0x3e6d2cd0, 0x3c01e1bd, 0xbd6e585a, 0x3f0a6279, 0x3edd8f2d,
+ 0x3e389566, 0x3da35b38, 0xbe226b6f, 0x3d9d32d5, 0x3e962cf4, 0x3db3da24, 0x3ea7deba, 0x3e0a722c,
+ 0x3cc7e554, 0xbe39bd90, 0xbe6476fc, 0xbddc4fd8, 0x3e98eb71, 0xbe30bc86, 0x3f04628a, 0x3eb697d1,
+ 0xbce408c6, 0xbe70c17a, 0x3e8e0626, 0xbd50030e, 0xbd9a8fa7, 0x3db486db, 0x3f32c04f, 0x3e9ac625,
+ 0xbd6c3bd2, 0xbe5b9ba5, 0xbe25c956, 0xbe8c7550, 0x3e583129, 0xbd828f53, 0x3ed9729b, 0x3dbc35c8,
+ 0xbe99e896, 0x3db184f4, 0xbde3e5c4, 0x3ee0673a, 0x3e3bff53, 0xbe2c8c10, 0xbe031ca2, 0x3e43d1d1,
+ 0xbf030cc4, 0x3e09ebb9, 0xbe6375b2, 0x3e2b7515, 0xbd9826f9, 0x3e5c63ce, 0x3e87e054, 0x3e31ead4,
+ 0xbec33951, 0xbea01ae5, 0x3bb72ff6, 0x3e56b693, 0x3dea7f0d, 0xbe75325b, 0xbe0a2020, 0x3e1fc66c,
+ 0x3e74ceb5, 0xbe056b20, 0xbe1ba263, 0x3e82278f, 0x3d80fca2, 0x3ed1abf0, 0x3d987d10, 0x3eb8305b,
+ 0x3cf77359, 0xbee73f28, 0x3d07f602, 0xbe734288, 0x3c5f2614, 0xbe17ca58, 0xbd800a41, 0x3e7bcc11,
+ 0xbd829c30, 0xbe91f3f5, 0xbee0aa0e, 0xbd3b999c, 0x3d50291c, 0xbdc291ff, 0x3e3e19ae, 0x3dc87353,
+ 0xbd98ae61, 0x3e124186, 0xbf4dfd93, 0x3ed83a7d, 0x3d623444, 0x3b148147, 0xbdedb250, 0xbee37739,
+ 0xbc9d3245, 0xbe93db24, 0xbd556421, 0xbd836d2f, 0x3e2ace63, 0xbf2777b5, 0x3e687cb6, 0x3eac29ba,
+ 0xbdd486d3, 0x3e64e608, 0xbebafe34, 0xbdcbbe0b, 0x3d03dc80, 0xbf388001, 0xbeb9a7db, 0x3e714d62,
+ 0xbdfb0195, 0xbdfd79bf, 0x3e416e85, 0xbed8824c, 0x3e481f25, 0x3e620fba, 0x3e776479, 0x3d545a1a,
+ 0xbe9b5155, 0xbe54ddc3, 0x3eee2b6f, 0xbe62513b, 0xbf0d7901, 0xbe8cdb7f, 0xbe578c35, 0x3ed2745a,
+ 0x3eb7de6f, 0x3c67e813, 0x3e9ad964, 0xbda70554, 0x3e15ab6b, 0x3e32620d, 0xbe9ad8df, 0xbec868e5,
+ 0x3eca9345, 0x3ea5648b, 0xbecf256b, 0xbe36d553, 0x3eeba639, 0x3e2250e8, 0x3d96f483, 0x3ca5efda,
+ 0x3e365ce1, 0x3e1bcfd9, 0xbd4024d5, 0xbd1d0cd7, 0xbeec8934, 0xbea9d4d9, 0x3e0c5359, 0xbe7808a8,
+ 0x3d24d291, 0xbdb5cd3c, 0x3c3e01d4, 0x3eaf0810, 0xbd8862be, 0x3e5e1254, 0xbe1b54b3, 0xbe4ae6bb,
+ 0x3e199b12, 0x3e78be67, 0x3e8a25f8, 0xbd96ac54, 0xbe6cece3, 0xbe8a1898, 0x3db6e470, 0xbe3b2ce4,
+ 0xbcbafd2f, 0xbe916052, 0xbbf4a773, 0xbe7ee4e6, 0xbe258cc7, 0x3e3f4bc7, 0xbb907d65, 0xbe9da64d,
+ 0x3e992f31, 0x3e26e479, 0x3e20e7a7, 0xbe4aa1d0, 0x3d7d6b38, 0xbe419e74, 0xbe84876c, 0xbe81028a,
+ 0x3e4812d7, 0xbe9baeaf, 0x3e149821, 0xbcb82b16, 0x3ea30a99, 0x3d986e54, 0x3dd04c4f, 0x3f46b8da,
+ 0x3d8adc77, 0xbd8a742b, 0xbe5560b8, 0xbe92d4ae, 0xbe035b75, 0x3d26a6f4, 0xbdcc1169, 0xbe8453a6,
+ 0x3eb68c76, 0x3de938c6, 0xbe24a802, 0xbdd2fa3b, 0x3e93b03a, 0x3ebefa05, 0xbcbef862, 0x3ef30f8d,
+ 0x3bb5804a, 0xbe6823ba, 0xbebd7dc8, 0xbc2c800e, 0x3ce8840f, 0xbe3d12bc, 0x3d936c3f, 0xbe20ad9e,
+ 0x3d3b6685, 0x3ecda9b4, 0x3e0efed6, 0xbe2705da, 0x3e7c0cbb, 0x3ec213f6, 0xbf08166f, 0x3e8b36be,
+ 0x3e0119e6, 0x3e18690a, 0x3e48b9c1, 0xbc951f25, 0xbdef6f94, 0xbea69874, 0x3e8b5516, 0x3decaaca,
+ 0xbe43267b, 0x3e0cdff1, 0x3f10e183, 0xbe83c10d, 0xbe87ee9d, 0x3d804bd6, 0x3f01a568, 0x3ee992f7,
+ 0x3d2450c2, 0x3ebc24ab, 0xbe0a6d1d, 0x3e80dfac, 0x3f4c2613, 0x3dfc8819, 0xbec04e9e, 0xbe82b9ed,
+ 0xbe247cb3, 0x3e5ff9cb, 0x3dbfaf11, 0xbe853b6c, 0xbe86e714, 0xbe15c24b, 0x3e96ed47, 0x3e9b60ae,
+ 0xbd2052ee, 0x3e74de00, 0xbec064f6, 0x3d96e52c, 0x3f089d93, 0xbdcbe270, 0xbd22bb73, 0x3e069984,
+ 0xbebc7698, 0x3e9f3358, 0x3dfe32a6, 0x3d9551a1, 0xbde3a6d8, 0xbed690b7, 0xbdd70d5a, 0x3a83031b,
+ 0xbe00692a, 0xbe7e9f93, 0xbec862a3, 0xbe0505f6, 0x3e2eb692, 0x3deb84ca, 0x3ec42ad9, 0x3f0b073a
+};
+
+static const uint32_t _K14[] = {
+ 0xbad558d5, 0xbd2b991f, 0x3d709f57, 0x3ae472ff, 0x3b04d880, 0x3d550e9b, 0x3d30e9b0, 0x3c3ae32c,
+ 0x3e07c465, 0xbd584f6f, 0xbbff7bc9, 0xbcf4924d, 0xbbc172cb, 0xb9d3a284, 0x3c9242a5, 0xbcf0bbca,
+ 0x3ca3a054, 0xbc5756ef, 0xbd88c530, 0xbd3a8e21, 0x3ddf89b0, 0xbd0502bd, 0x3d153e83, 0xbd622242,
+ 0xbae3075b, 0xbc6e49eb, 0x3ca64f41, 0x3d54c26e, 0x3d78e742, 0x3d4384fe, 0xbd11a05e, 0xbe033e78,
+ 0xbc3a9d26, 0x3d2edf5c, 0x3d10176d, 0x3c683d8d, 0xbbebf4ea, 0x3d8029c4, 0x3b35fafe, 0x3d6d9f83,
+ 0x3deaf024, 0xbcfdbd5d, 0x3c3119e8, 0xbc06b718, 0x3a95b908, 0x3c060083, 0x3c977384, 0x3cd92c90,
+ 0xbccd9307, 0x3d4d65e1, 0xbccf7b98, 0x3b593104, 0xbcc56e73, 0x3b99dba2, 0xbdb0d7af, 0x3d02d04a,
+ 0xbd626de1, 0x3cebbb62, 0x3cb71e3a, 0x3d82d70f, 0x3c7aaa58, 0x3c06b711, 0xbd1ae90c, 0xbd5df0e6,
+ 0xbcd339e9, 0x3d39530c, 0x3d2841b5, 0x3729f701, 0x3c90a063, 0x3ccd74c9, 0xba8cbc16, 0x3db3f1cf,
+ 0xbd92d0fc, 0xbd18db07, 0xbdb68e08, 0xbc8541b2, 0x3cdd8945, 0x3bdc58e5, 0xbc8446fe, 0xbd3de378,
+ 0xbddfaa65, 0xbc981eb0, 0x3d837e4e, 0xbc484f3e, 0x3d6a1a77, 0x3d91cf0e, 0xbd067985, 0x3d20a108,
+ 0x3d112605, 0x3dae4cdb, 0x3a0fce25, 0xbd748edc, 0x3dcf07d3, 0x3d31acbd, 0xbda63ab6, 0xbd24cfc0,
+ 0xbc1ae413, 0x3d7f75b0, 0x3b3e94b5, 0x3c32efbc, 0x3cb1af97, 0x3bd05de2, 0x3c706f57, 0xbc03f9a7,
+ 0xbc11633f, 0xbbe46541, 0xbd137461, 0x3d5be74a, 0x3cbdffea, 0xbb873b57, 0xbc11579a, 0x3d390af8,
+ 0x3a06b7ba, 0xbd05bb4b, 0x3d1519d0, 0xbb318b40, 0x3cedd0ae, 0x3c5bbd7c, 0x3c8887d3, 0x3d072635,
+ 0x3c22c35d, 0x3cd51dc5, 0x3c9f09fa, 0xbc65371a, 0xbd8cd364, 0xbc163aee, 0xbaa798f4, 0x3d400517,
+ 0x3c204469, 0x3da2e1b2, 0x3d20725c, 0x3b62bb0c, 0xbc936b44, 0x3d177043, 0x3acf0f3a, 0xbb2ce15e,
+ 0xbd14c581, 0x3b690159, 0xbcab6fa7, 0xbaf9ba15, 0x3c41d487, 0x3b15ebbe, 0xbc260458, 0x3c0b3349,
+ 0xbc6275e1, 0xbc0458ae, 0x3b8237fc, 0xbb81352c, 0x3c25e432, 0x3b6ee302, 0xbbe41216, 0x3cd445ac,
+ 0x3b83ab48, 0x3cce1a3d, 0x3c36f2ff, 0xbd12861a, 0x3b958155, 0x3c922668, 0x3c006378, 0xbb438c5e,
+ 0xbcd47233, 0x3d9f7627, 0x3cab87ef, 0xbc539865, 0xbb9e5c63, 0x3d2818de, 0xbbeff34f, 0xbbb08e39,
+ 0xbd651697, 0xbc06420f, 0x3d369f63, 0xbc6f28c4, 0xbd1a3a05, 0xbc33c1b4, 0xbc991164, 0xbcd1be8f,
+ 0xbd064477, 0xbc2db9b1, 0x3c76963f, 0xbd284831, 0x3ccb9ade, 0x3ace4070, 0xbcbe4cbf, 0x392ad1e8,
+ 0x3be50ef5, 0x3bbbf0c8, 0x3cb45993, 0xbccaf611, 0x3d263cf0, 0x3d171f4d, 0xbc210ee6, 0xbcf10e8c,
+ 0x3c0b6d24, 0xbb8454ba, 0xbcf19234, 0xbd69b7e9, 0x3cabbce4, 0x3c96b9e9, 0x3c6cc1c7, 0xbcfb7225,
+ 0xbd49e90e, 0x3b70097c, 0xb98989b6, 0x3c223270, 0xbca3de12, 0xbd225459, 0xbb2af92c, 0x3d26c12b,
+ 0x3bea57f2, 0xbada5574, 0xbc1b3087, 0x3c5a7f5e, 0x3cc28dfa, 0xbc5db83c, 0xbcb7e407, 0x3bafc0e6,
+ 0xb8e39f43, 0xbc59c92a, 0x38d0d0ee, 0x3c9a5849, 0xbd4b7691, 0x3d01c63c, 0xbc27074c, 0xbd4a5eee,
+ 0x3cdf6485, 0xbba3dafc, 0x3bcfbf7f, 0x3c93f29b, 0x3cf51926, 0x3af7fc85, 0x3bc7f79c, 0xbd06ba3b,
+ 0xbd43978d, 0x3d00d665, 0xbb790395, 0xbc2040ec, 0xbd110e63, 0xbd5bc135, 0xbce1e697, 0xbc921add,
+ 0x3d1119de, 0x3c8f5710, 0xbb9b9ba3, 0xbc041a68, 0xbc7abbdc, 0xbd33c561, 0xbc3c5e74, 0x3ca83bb0,
+ 0x3b1cb4ca, 0xbd001572, 0x3cbb40a1, 0xbc1b84f4, 0xbcdc047f, 0x3b00788d, 0x3cbe78be, 0xbcd99269,
+ 0x3d1d66e9, 0xbc3220cf, 0xbb92aa27, 0xbbf83a53, 0x3d08704b, 0xbc181941, 0x3c51b1cf, 0xbccc3f6e,
+ 0xbd10b5d8, 0x3d3daf1a, 0xbb076701, 0x3c460c9e, 0xbd016662, 0xbd1f5682, 0xbc177069, 0x3c57f256,
+ 0x3d381eed, 0xbc2e1846, 0x3b3902bb, 0x3b808067, 0xbcf07c59, 0xbd658ba6, 0x3c402089, 0xbb8dda44,
+ 0xbbec7e42, 0xbc1eb024, 0x3d861d2e, 0x3c436078, 0xbb5e1887, 0xbc42449f, 0x3ccbd064, 0xba7d83dc,
+ 0x3bc179f1, 0x3c6c5a3d, 0x3d2b7c00, 0xbc8fac35, 0xbc1fa1cf, 0x3d86d6c2, 0xbd64a2ad, 0x3d0c0d92,
+ 0xbcb903e6, 0x3cd697a5, 0xbbff8fb3, 0x3cc3a49e, 0x3d2f77d1, 0x3ae851b3, 0xbb65ddca, 0x3cf850ef,
+ 0x3a7fc9d4, 0x3cc3d7bf, 0xbc890c22, 0xb92ec337, 0x3c78ccb2, 0x3cff24b2, 0xbc384716, 0xbc00b82b,
+ 0xbb8e1bd8, 0x3c6cae66, 0x3ce27ba2, 0xbcd09c64, 0x3c8c41bc, 0xbc3c6158, 0x3b450378, 0x3d25253c,
+ 0x3c1daff2, 0xba0a5a25, 0x3d782e18, 0x3bf4ff09, 0x3c7b0292, 0x3d62e2aa, 0xbd9d509a, 0x3c2b7ae0,
+ 0x3ac7b785, 0xbd0dc340, 0x3bb3f4de, 0xbce46a6a, 0x3d869a92, 0x3c93393e, 0xbc26a1a8, 0xbce21508,
+ 0xbd831832, 0xbc9d5e25, 0xb901b1b3, 0xbb421fdc, 0x3c84b941, 0x3d9b3413, 0xbd4403e6, 0xbb7dcef3,
+ 0x3ca0a8a1, 0x3cbc98a8, 0xbc02e275, 0x3ca3018f, 0x3d94bc50, 0x3ca03806, 0xbd283954, 0xbc062f16,
+ 0x3c06c6fe, 0x3d32cb2f, 0x3bf2b15a, 0x3b317a09, 0xbd3c113c, 0x3d853145, 0xbd51a97f, 0xbc302237,
+ 0xbc94b1a1, 0xbd5671c4, 0x3c97212f, 0x3adb5b64, 0x3c90144d, 0x3c0b331d, 0x3d22304b, 0xba9c8eb8,
+ 0xbcd12dab, 0xbd0ea741, 0x3c2a0418, 0x3c5e332b, 0x3c69c00c, 0x3d365001, 0xbc740b6f, 0x3b6cbdf4,
+ 0x3c89346e, 0x3cd4d558, 0xbd609701, 0xbd0710d2, 0x3b84c194, 0x3a83ac1c, 0xbd512d29, 0x3bb3549e,
+ 0xbd3ce8e0, 0x3bbb08a8, 0x3cc4e05f, 0x3c84351f, 0x3cbd2ca2, 0x3cdfd3e3, 0x3cc34031, 0xbc124c94,
+ 0xbbfb2270, 0xbccf6322, 0xbbfe1a58, 0x3d464042, 0x3aacc6f5, 0xbc955526, 0x3cdce00c, 0xbc432654,
+ 0x3c80a235, 0xbc5e1d0a, 0x3caa70da, 0x3cb6f85e, 0x3d788b08, 0xb9a0cf9e, 0xbceb47fa, 0x3d877a2d,
+ 0xbcbc3751, 0xbc958fbc, 0xbbfb4ccd, 0x3c44c459, 0xbd75ea85, 0xbc6c74b4, 0xbd0b910d, 0x3d1ecf94,
+ 0xbd93d41b, 0x3cbaa6db, 0x3c5fce0e, 0x3cc780c7, 0x3ccbda49, 0x3d16cb4a, 0x3d506178, 0xbba04fcf,
+ 0x3d1aa595, 0xbc6e19b1, 0xbd1549b6, 0x3d3996c6, 0xbcefae4c, 0x3db84827, 0x3be28864, 0x3c0ad84a,
+ 0xbcd914b6, 0xbca5a31c, 0xbcd806d2, 0x3d2f4dff, 0x3d308a96, 0x3cc3cbb0, 0xbd11bb1f, 0x3d92f80d,
+ 0xbcd43358, 0x3c164911, 0xbc9e9153, 0x3cd0d4b8, 0x3c281e44, 0xbb6ebcd3, 0xbc658f7c, 0x3b938522,
+ 0xbd9e757b, 0x3bd4f091, 0x3d095185, 0xbc23c00e, 0xbd2162df, 0x3ce986a8, 0x3cd1b1fd, 0x3c9c09dc,
+ 0x3b6d7d73, 0x3c32262f, 0x3b8b262a, 0xbca5bfe4, 0xbd204930, 0x3da56a93, 0x3d501e5f, 0xbccef4c5,
+ 0xbd0ef057, 0xbd4b04f5, 0x3be6d775, 0xbbc9ad86, 0x3d547a6a, 0x3c8678f0, 0x3cccc387, 0x3d3757cf,
+ 0xbc27fdbb, 0x3cfd278f, 0xbd28f474, 0xbd0fa5e4, 0x3ca4047a, 0x3cb18f27, 0xbcc90715, 0x3c84080d,
+ 0x3bbe7e4b, 0xbcac49f5, 0xba6f86ad, 0x3a13f3ee, 0xbc206ff7, 0x3cb90695, 0xbc544fc2, 0x3b5dad1a,
+ 0xbd0456dd, 0xbc64964f, 0x3b3de945, 0x3bd40040, 0x3cf29bab, 0x3ca15a61, 0x3cfc7363, 0x3be69ea7,
+ 0x3c443385, 0xbced7269, 0xbca2e175, 0x3d552d69, 0x3cbe5ff8, 0x3c48950d, 0xbbdb7a27, 0x3ad0b200,
+ 0xbc448be1, 0x3ca44e90, 0xbd4ab3d9, 0x3c1d0303, 0xbc21d68b, 0x3c0604d2, 0xbc7963ae, 0xbbeb4f1e,
+ 0x3bbe5619, 0xbd12f3be, 0xbc0e7557, 0x390f6d30, 0x3b0b7fd9, 0x3c919e58, 0xbd2a946d, 0x3c843609,
+ 0x3c80da9c, 0xbbcda87a, 0xbb229463, 0x3c519880, 0x3d330a23, 0x3d233251, 0x3d21ef07, 0x3c7a711e,
+ 0x3c381ed7, 0xbd2715f0, 0xbb004c0d, 0x3d827428, 0x3ce6b373, 0x3c9d2b8a, 0x3c0c0c05, 0x3b60b5ef,
+ 0xbcbadaa8, 0x3c761c4c, 0xbd5924ca, 0x3c1bba9d, 0xbb98e0f2, 0xbb84d750, 0xbc7d743d, 0x39eb6d49,
+ 0x3c22bdce, 0xbd08349a, 0x3c007cdc, 0xbcc006cf, 0xbbb6bc21, 0x3d05cdb5, 0xbcd1291f, 0xbb6089b0,
+ 0x394e0648, 0xbbba3580, 0x3c4bf5e0, 0xbb408158, 0x3cc66968, 0x3cf0865c, 0x3d0ebbb1, 0x3c5a5d8a,
+ 0x3c29b9b4, 0xbc870296, 0xbca92f49, 0x3d87072c, 0x3c5c9aa8, 0x3d22ab43, 0xbcea7848, 0xbb9b7783,
+ 0x3bfaa7c5, 0x3c65c48e, 0xbd5153d7, 0x3c321c21, 0xbc87713d, 0xbba10dd2, 0xbcca3732, 0xbc9916f1,
+ 0x3a2a1323, 0xba941c69, 0xbd789238, 0xbcd500e5, 0xbd6cdc0c, 0xbcc583e6, 0xbcebd243, 0xbca8ba92,
+ 0xbcbda7bb, 0xbd557ed0, 0x3c6dd049, 0x3ca5b5cb, 0x3ba33898, 0x3baa613b, 0x3d26a16f, 0x3d4da314,
+ 0xbbbd9a85, 0xbdcf3eb7, 0x3d68e180, 0xbbf14626, 0x3beb1500, 0x3d684930, 0x3d3f3017, 0x3c9d314a,
+ 0x3d17af6b, 0x3d11bd8b, 0xbd134257, 0xbc5343c4, 0xbd50f173, 0xbc3d6601, 0x3d361d70, 0xbbc2e27b,
+ 0xbd486da9, 0x3c9fb05f, 0xbd22b38e, 0x3cbe77ae, 0xbceb36dd, 0xbd3308c9, 0x3c8f1263, 0x3cf6115f,
+ 0xbce33ee9, 0xbd444bff, 0xbc82e9e2, 0xba20cd36, 0xbb2ac6c9, 0xbc6f08b3, 0xb9d5ecb3, 0xbc56ceae,
+ 0xbd2cdf62, 0xbc8d2a4c, 0x3db31e14, 0x3ca0cf7f, 0x3cd1fced, 0x3d3891ff, 0x3b7779b5, 0x3d12d1c5,
+ 0x3d319274, 0x3cae7a2a, 0xbcd4d271, 0xbd478944, 0x3c8d03b2, 0x3d83b550, 0xbbec1332, 0xbd23c694,
+ 0xbd668941, 0x3cecac91, 0x3bc2b9a0, 0x3b021304, 0x3d067dc7, 0x3d057227, 0x3cebc63c, 0x3cacee5c,
+ 0xbc465b27, 0xbc71fd52, 0x3c1eb48b, 0xbc036c79, 0x3c356f1c, 0x3c77f36e, 0x3d99bdb0, 0xbab48593,
+ 0xbcc1ba77, 0x3a7e9c8d, 0x3d908d08, 0xbb23ded2, 0xbabe5444, 0x3d349ebc, 0xbd15c541, 0x3dec2c09,
+ 0x3d1dff73, 0x3b63244c, 0xbd3b4e16, 0xbdcfb53c, 0xbcc03f09, 0x3db1b9d0, 0x3cb2bbf6, 0xbcb139d2,
+ 0x3d83183e, 0xbc04173a, 0xbc10d3a5, 0x3ac55bfd, 0xbd2aa087, 0x3c278519, 0xbd039236, 0x3c84f65e,
+ 0x3c37918b, 0xbb25d51a, 0xbb97f89e, 0x3a21be4f, 0x3cc44e3a, 0xbc11dcba, 0x3d8121eb, 0xbd362e92,
+ 0x3c50fcf5, 0xbc373dd6, 0x3d054d0a, 0x3c8e1a3c, 0x3cc84480, 0x3c7ac6a7, 0x3d1e2562, 0xbd1c5f72,
+ 0x3ce8e73b, 0x3ce6696c, 0xbcc03cf6, 0x3c2a2585, 0x3d2ccbca, 0xbc63c9ad, 0xba3f4118, 0x3a79afdd,
+ 0xbc7cfc9f, 0xbc09e1a1, 0xbd93b093, 0x3bdcd91d, 0xbd86df57, 0xbd41fe8e, 0xbb0582e8, 0x3c6226a4,
+ 0xbc4c96f5, 0xbd6cddc4, 0xbc5c7765, 0x3cb4cd92, 0x3bc808bf, 0x3b7b4dbd, 0x3c161858, 0xbd44ae1a,
+ 0xbd467f7f, 0xbd8a90e3, 0x3d926d4c, 0xbc57deaf, 0x3bbe7150, 0x3c2340a4, 0x3c298d27, 0x3bb4061b,
+ 0x3d2bee5c, 0x3d05407f, 0xbd9adb34, 0xbc86c66e, 0x3bbc47f4, 0x3c46deb4, 0x3cdd188c, 0xbce9f246,
+ 0xbd47b985, 0x3a3d6515, 0xbd17b377, 0xbc78f145, 0xbc832565, 0xbdb1e81b, 0xbc81f99b, 0xbc204e20,
+ 0x3b8056bd, 0xbd31e6eb, 0x3b1ac8a6, 0xbc6e9c44, 0x3c290c4c, 0xbc4b1421, 0x3d351357, 0x3d57878c,
+ 0x3cbd2062, 0xbcd11147, 0x3d411e33, 0x3c32f0ff, 0xbce5f34a, 0x3d0ee8a8, 0x3d6c83cb, 0x3c1a25dc,
+ 0xbb298524, 0x3c475b35, 0xbd93b448, 0xbcef470c, 0xbd33fb2a, 0xbbc9f98b, 0x3d75dcd8, 0x3c825d2e,
+ 0xbd3f4acd, 0xbc0c34e6, 0xbd17bbf1, 0xbca1d1a7, 0xbd0ff811, 0xbd45d3be, 0x3c003c77, 0xbc519f7c,
+ 0xbd027a9c, 0xbcbec7b6, 0x3c9b1232, 0x3a68c6e1, 0x3cac0c9e, 0x3c61f2e3, 0x3d29a1b4, 0x3c3f0332,
+ 0x3c468aa9, 0x3a3d07a6, 0x3c5daeb2, 0x3d4259d4, 0xbd3a063a, 0xbcb88695, 0x3cf74318, 0x3adb8945,
+ 0xbabfd300, 0xbb9102b7, 0xbd565006, 0xbd3632a1, 0xbd2a95b3, 0x3b91c9e4, 0x3c0e38c6, 0x3c163421,
+ 0xbbd0f54d, 0xbbc3d259, 0xbd939559, 0xbc374cad, 0xbb493701, 0x3ba8d1b4, 0x3c906b3d, 0x3c4ed42a,
+ 0x3b0ac687, 0xbce141e7, 0xbc8bd528, 0x3d005c09, 0x3b2491f3, 0xbc12ae0c, 0x3c970c06, 0xba8c4f2e,
+ 0x3c37bc94, 0xbd3b88cc, 0x3ceef783, 0x3d0bda3b, 0x3d26f0cf, 0xbc108f6d, 0x3d4a9f44, 0xbc07679e,
+ 0x3c388331, 0x3cce2d35, 0xbd086bd5, 0xbc804bc9, 0xbd9ff236, 0x3b148e3c, 0xbb3ead3e, 0x3caab07e,
+ 0xbcd8967a, 0xbb9b270a, 0xbbdc7ea0, 0xbc9efad6, 0x3c3aefd7, 0xbbdc5fc8, 0x3c987769, 0x3c912729,
+ 0xba7876b3, 0x3bcf8eb5, 0xbb9c53e6, 0xbcb3ec48, 0xbadc44a5, 0xbbdeb91e, 0x3b380b8d, 0x3c7636c9,
+ 0x3a52980a, 0xbb96dbec, 0x3c3e469d, 0xbc17c009, 0xbcde2e46, 0x3b0338e9, 0xbb438bb3, 0xbc519bd8,
+ 0xbd077fe0, 0xbaa3920c, 0x3c5f0614, 0xb9e1ebd6, 0xbd566750, 0xbbc91e7a, 0xbc4fa399, 0x3d04259d,
+ 0x3b0ed861, 0x3cc80b2a, 0xbb252028, 0xbcb7d517, 0x3ba5a613, 0xbd2a769c, 0x3b130016, 0x3cceeeda,
+ 0x3d00a17f, 0xbc3ab3a2, 0xbd73620b, 0xbca2d84b, 0x3d1abb5e, 0x3b70fecf, 0xbccd1030, 0x3ad7f18b,
+ 0xbc8e1dc9, 0x3ca6061e, 0x3c166fc0, 0xb9d40c2e, 0xbbde6dbf, 0x3cf8b256, 0xbcaf3bf0, 0x3cccd9ba,
+ 0x3d0d3323, 0x3d12f786, 0x3c448124, 0xbcc9df70, 0x3c116c06, 0x3b0c3fb4, 0x3cf08f99, 0xbc8f2b8d,
+ 0x3b3e3ae6, 0x3cee830f, 0x3c8d6b98, 0xbc030767, 0x3afaee67, 0x3b94fce8, 0xba4cb784, 0x3d361415,
+ 0xbc438d19, 0xbb80f3a3, 0xbca34733, 0x3b1e3d3a, 0x3bc9d528, 0x3b857c9c, 0x3b68eec6, 0xbb9e22d6,
+ 0xbd0259b7, 0xbaf21827, 0x3d1839bb, 0x3c42c92d, 0xbc1a0170, 0x3d352507, 0xbc79be1a, 0x3ac9e0c6,
+ 0x3d2f2d1d, 0x3d64c91e, 0x3cb4ba42, 0xbcf630f3, 0x3c9d7216, 0x3bef932b, 0xbb98ae27, 0xbce4c8a3,
+ 0xbbc64a6f, 0x3d50a398, 0x3c318daf, 0xbc3dc720, 0xbccd64e1, 0x3c958582, 0xbc90ceb8, 0x3c9d68fc,
+ 0xbd212f17, 0x3c1c6d2e, 0x3b95d3de, 0xbc7f8fcb, 0xbbc09bac, 0xbc088355, 0xbc0e071f, 0x3c659e64,
+ 0xbcca8695, 0x394fa706, 0x3ba0689a, 0xbcb42ffe, 0x3c995894, 0x3d1c8c51, 0xbca417b2, 0x3c2f1648,
+ 0x3bff622a, 0x3a7584c8, 0x3c0c3012, 0xbce2feb3, 0x3d8397fe, 0x3c684635, 0x3bb96856, 0xbc673c8e,
+ 0xbaa696dc, 0x3ccc5c6e, 0xbd380118, 0x3ba676f7, 0xbcaa1e72, 0xbc3c597a, 0x3d52b2e5, 0x3c5e8d4c,
+ 0x3ddcddaf, 0xbc13345f, 0x3c901b39, 0x3bca67e0, 0x3a4e81eb, 0x3cf0e387, 0x3cc8b827, 0x3b262ea0,
+ 0x3d20cb44, 0x3d383669, 0xbd08c37d, 0xb9737425, 0x3a0f2807, 0xbca1f01c, 0x3c9fc2d6, 0xbb275c92,
+ 0xbc4a8e9e, 0xbd123ac7, 0x3c38b3ce, 0xbc07868a, 0x3d15972d, 0x3d15f591, 0x3cd4a5a2, 0xbc5c33a2,
+ 0x3c336869, 0x3b10c14c, 0x3a7cef56, 0xbc655fa5, 0xbb85b7ca, 0xbced7d8a, 0xbc27ee84, 0x3dad3aff,
+ 0x3c8db1fa, 0x3ca26cdd, 0x3a693451, 0x3d2c284a, 0x3d646cc6, 0x3d0d558a, 0x3c245bee, 0x3c393c69,
+ 0x3c526446, 0xb9612628, 0x3d201d78, 0x3d24339e, 0xbc814034, 0x3c9ca875, 0xbb9a34b2, 0x3b176af8,
+ 0x3baf966b, 0x3ca81339, 0xbcec94fa, 0xbc931013, 0xbbac5c5f, 0x3cd4027d, 0x3ccd06cc, 0x3d1e756d,
+ 0xbc5d8c01, 0xbc62407a, 0x3ccb719a, 0x3c0d242f, 0xbcd42a43, 0xbd04b57e, 0xbd2cf270, 0xb9f95d22,
+ 0xbd1dd27c, 0xbd065d50, 0xbceaad6b, 0xbd3df175, 0x3c833c12, 0x3ca62b63, 0x3b93bf07, 0xbd02d820,
+ 0xbd3ffd90, 0xbd2e378c, 0x3d217007, 0xbba84a27, 0x3d2c0094, 0x3d8fb20a, 0x3c09a25c, 0x3c36de78,
+ 0x3d426219, 0x3d839778, 0xbd043fc7, 0xbd2be7ec, 0x3cdd14d1, 0x3c4c2ee4, 0x3b5b0020, 0x3b32427f,
+ 0xbc95a641, 0xbb3096e6, 0xbc877f0a, 0xbc92498c, 0x3ba11eb8, 0xbcf9a5ae, 0xbc4d1185, 0x3c5c4d92,
+ 0xbbea0e4c, 0x3b22186c, 0xbcd6459e, 0xbd0cfeab, 0x3cd299f6, 0x3d360c4b, 0xbcd7890b, 0x3d092d82,
+ 0xbd176044, 0x3cb3985d, 0xb92ecfc6, 0x3b86e09c, 0xbc9e38e1, 0x3c1c4674, 0xbb65b36c, 0x3b9f85d3,
+ 0x3d274f20, 0x3c5466f7, 0xbbedf962, 0xbb122299, 0xbd14065d, 0x3b932ce6, 0x3ca326cb, 0xbc84647f,
+ 0xbc9e10bf, 0xbbd3e6d7, 0xbb950b8b, 0x3c24dd90, 0x3bb284fc, 0xbd226d60, 0xbc186b02, 0x3d7de536,
+ 0x3c82c574, 0x3cb24a73, 0xbd7fa59d, 0x3c8fc50f, 0x3d511141, 0x3d1399b7, 0x3c9c8d3f, 0xbcd76b5e,
+ 0xbd3a24af, 0xbcafdc87, 0x3d169563, 0x3d1e219d, 0xbce4318f, 0x3d658efe, 0xbcaa695d, 0x3cfb63bc,
+ 0x3d426e7d, 0x3d6293aa, 0xbbce9119, 0xbc20e26b, 0x3cd1ed93, 0x3c9e5506, 0x3cf10311, 0xbcb3ba4e,
+ 0x3c66a6fb, 0xbd0155dc, 0xbb0b9922, 0xbcb6a3b7, 0xbbeeadfb, 0x3c6436bb, 0xbbfc5db7, 0x3d12a54c,
+ 0x3ca9af29, 0xbcee5fda, 0xbc9ad657, 0x3bb3058c, 0xbb34262b, 0x3cf839c8, 0x3cd6313c, 0xbc75192e,
+ 0xbc8e81dc, 0xbc836869, 0x3c38e1be, 0x3d08872a, 0x3cc04a56, 0x3d2a13e9, 0xbc727c7a, 0x3a0b6aaf,
+ 0x3cd02444, 0x3c45a383, 0xbcd9daba, 0x3c55eeb9, 0x3d601133, 0x3c5ff0e6, 0xbcd9a827, 0xbc8e5730,
+ 0x3d050c13, 0x3d86623a, 0xbcb278cb, 0xbca48662, 0x3d54bce7, 0xbd136429, 0x3c090a2d, 0xbbade10b,
+ 0xbd386ee4, 0xbcf2317a, 0xbd7c44fd, 0xbbb4cd99, 0xbc9c3879, 0x3c02530f, 0xbd441c08, 0xba8720ae,
+ 0xbc89fb08, 0xbc846ed8, 0x3d0b0785, 0xbd124e04, 0x3db0eaae, 0xbc253959, 0xbcd95323, 0xbbdfd079,
+ 0x3d361a65, 0x3d85a1f4, 0x3ccfd6ed, 0xbc2b7078, 0xbd194d84, 0x3aa04f98, 0x3d61255b, 0x3bc8724d,
+ 0xbad38f8f, 0xbb8880b1, 0x386d2037, 0x3cd51d3c, 0x3ccd9bd7, 0xbc81a025, 0xbb790cc4, 0xbc8d85cf,
+ 0x3bcd955b, 0xbcbcfcbe, 0xbd582152, 0xbc96b373, 0x3d9e865c, 0x3bb05d42, 0xbc9a15a0, 0xbc833e61,
+ 0xbc3f8fe0, 0xbd142bfe, 0x3cb11a46, 0x3cb30353, 0x3d2baaec, 0x3bd2907d, 0xbc95973f, 0x3d28973d,
+ 0x3cc41be5, 0x3cc0815a, 0x3cbf46a6, 0x3c4cdf10, 0xbd743fd0, 0x3d2c111b, 0x3cffa33c, 0xbac8ffff,
+ 0x3c3661c7, 0xbce22524, 0x3d2363c5, 0xbd4fe243, 0x3beca74a, 0x3d78407f, 0xbd500ab9, 0x3c8c4b95,
+ 0x3d0c399a, 0xbc9e0992, 0xbd7b372b, 0x3cf60a30, 0x3d885db9, 0x3d781e93, 0x3cf40dac, 0xbc01f801,
+ 0x3c85bc4e, 0xbd00670c, 0xbba211f3, 0x3d0e07e2, 0x3cf66039, 0x3cc704bf, 0x3c6bdceb, 0x3c89f469,
+ 0x3d3365e1, 0x3d0a3b6e, 0xbb8c3118, 0xbb142641, 0xbbca973e, 0x3c8b6de4, 0xbd33cf4a, 0xbc50ceb3,
+ 0x3c477416, 0xbad6d33a, 0x3ccf9564, 0xbcea5533, 0x3c989354, 0x3d7d37f9, 0xbc0a6e4d, 0x3cdd4ed1,
+ 0xbd6737ea, 0x3c8be376, 0xbcc61bb7, 0xbc4db960, 0x3cac4bdf, 0x3c776252, 0xbb95df7e, 0x3b616420,
+ 0xbca3bd46, 0x3d09209b, 0x3d0aa7f3, 0x3c9f8e78, 0xbd4de289, 0xbc17ee98, 0xbcc062e8, 0xbc9b64ed,
+ 0xbbee6c79, 0x3d08ff50, 0x3cad8afd, 0x3a44cc02, 0x3cb624e2, 0x3c975a98, 0xbd1d04d8, 0xbd86ce74,
+ 0xbbfa2439, 0xbd0fb151, 0x3cc99cd7, 0xbd8cb396, 0xbb6cd1e8, 0x3d50f509, 0x3d701dfb, 0x3c2f0b8f,
+ 0x3d0ef1d0, 0x3bcb5004, 0x3c48f736, 0xbd05c4b3, 0xbd37eb7e, 0x3c903904, 0x3d4627aa, 0xbb353684,
+ 0x3d266867, 0x3cd42b07, 0xbdb60f56, 0xbbf86d30, 0x3d48c2a3, 0xbd03dfd3, 0xbd1ed102, 0xbca709b1,
+ 0xbcb80a3a, 0xbd8a5f51, 0xbcfb4665, 0x3cff7a74, 0x3cc03723, 0x3cbe9c54, 0xbdd1142f, 0xbd2a541a,
+ 0xbbfcffe4, 0xbd48799e, 0x3d0f1a2c, 0x3db2ccc6, 0x3d3228d5, 0x3d69940f, 0x3c95b880, 0x3c29f798,
+ 0x3dc6b9f0, 0x3d828e7a, 0xbb56502f, 0xbcbeb67f, 0xbbe9358e, 0x3b998d1c, 0x3ce2c02c, 0xbd9ca1d1,
+ 0xbbfed6e1, 0x3ca9f3d5, 0xbcfaff57, 0x3a04a618, 0xbcb5fc95, 0xbc8d1760, 0xbd0f762d, 0x3da09757,
+ 0xbd1b2c8f, 0xbb3899f4, 0xbb5a41ef, 0x3c97200d, 0x3d54c66f, 0x3c7eaced, 0xbd7f1060, 0x3b4bcc23,
+ 0xbd145412, 0x3ce10341, 0x3704edd6, 0xbc94596a, 0xbd4837bb, 0x3d41e096, 0xbc9afcd5, 0x3ca2a1ba,
+ 0x3d2ea737, 0xbb8df9de, 0x3d114e54, 0x3ce48c25, 0x3d22578a, 0x3c2a75e5, 0x3d58b52c, 0x3d71e777,
+ 0xbba465d8, 0xbb802640, 0x3b819799, 0x3c178fde, 0xbd3202a2, 0x3c7359b5, 0x3c8fccf6, 0x3b8fc89d,
+ 0xbc987264, 0x3c1087bd, 0xbd64baed, 0xbbd714b3, 0xbce6a776, 0x3c1457fc, 0xbca36bf4, 0x3d313318,
+ 0xbd140924, 0x3d26c43d, 0x3c6312b8, 0x3c86835e, 0xbd0934a2, 0xbc0528c8, 0xbdb0e9ab, 0x3c52bc31,
+ 0xbcae52bb, 0xbc11bb11, 0xbc9ed400, 0x3c3a0190, 0x3e0f827b, 0x3cbd01b7, 0xbbd67015, 0xbbdfab40,
+ 0xbc725db6, 0xbba3388f, 0x3c397b1d, 0xbcd70e4b, 0xbd0c7c77, 0x3d462d06, 0xbca4f562, 0xbb9dae9c,
+ 0x3c231e62, 0x3d4747bd, 0xbd49cd0a, 0xbcdfbbf0, 0xba9bc7bf, 0xbcf3fd51, 0xbc5141ed, 0x3d4f9c2c,
+ 0x3cbe71ee, 0xbbbea079, 0xbc99a60d, 0xbc545f7a, 0xbc126aed, 0xbd866cdf, 0xbdd9a756, 0xbce083bf,
+ 0xbd22cc2d, 0x3c5a3285, 0x3c898e9d, 0xbd506050, 0x3dc7dc07, 0xbc89444e, 0xbc77824b, 0x3d0c590f,
+ 0x3d016b4c, 0x3ad69ac4, 0x3c284c08, 0x3c7ab937, 0xbcbc345c, 0x3d2e7ad3, 0xbd1b42f1, 0xbd5da22d,
+ 0x3d1f162a, 0x3cc0015e, 0xbb9b772f, 0xbc113ec9, 0xbcd1cf95, 0xbd15ff94, 0x3d120296, 0x3c9ba5f8,
+ 0xbd278d45, 0xbd4e5e78, 0xbc3d4a93, 0xbd39ea3d, 0xbcd485f7, 0x3c2e1ee9, 0xbc639b78, 0x3b993ab5,
+ 0xbd229bdf, 0x3d09cdd4, 0x3bf33bc2, 0x3d5fad28, 0x3bdb0e9a, 0x3d4d2bc5, 0x3d42b05d, 0xbcc89736,
+ 0x3d098bb4, 0x3d5908f8, 0x3cc907a0, 0x3da48f67, 0xbce65504, 0x3cacd884, 0xbb57d1dc, 0x3ceb43c4,
+ 0x3ce0547f, 0xbc1526d8, 0xbd52d48c, 0xbdb02d78, 0x3c1caa80, 0x3a7ea5c3, 0xbcfa2fa3, 0x3ca877de,
+ 0xbabb028d, 0xbd010c48, 0xbd16b708, 0xbb24a3ad, 0xbc547e42, 0xbcebe31e, 0x3ab96f91, 0xbcbabefe,
+ 0xbd20eac6, 0xbc92d82f, 0x3c817091, 0xbc3f5708, 0xbccb9d76, 0x3cc213f1, 0x3bdcc4d6, 0xb9a124a4,
+ 0xbc21e45f, 0xbcbb90f7, 0xbc8676a8, 0x3d0adf86, 0x3b2ca285, 0xbc829617, 0x3ce47c18, 0x3c16c490,
+ 0xbcb0fe57, 0xbd175666, 0xbd70e1bd, 0xbcd96b9c, 0xbc71472f, 0xbbd47fc8, 0xbd1cfa19, 0x3c2029d2,
+ 0x3c23624b, 0xbd794c69, 0xbcf829d4, 0xbc991bb6, 0xbc73afa2, 0xba078407, 0x3d36fb08, 0xbd4d6043,
+ 0xbca62037, 0x3d3c5d50, 0xbbd14e7e, 0xbcacb484, 0xbdb93f1b, 0x3cd012c8, 0x3cd246f6, 0x3c7e3bfa,
+ 0x3c8d9502, 0xbd01b563, 0xbd1f237c, 0x3cc3ce2f, 0x3c891eb6, 0xbd43a181, 0x3cd34f6b, 0x3c2608fc,
+ 0xbcc8ebbb, 0xbd9f29b1, 0x3cf1fdce, 0x3d0a7a0d, 0xbce4804d, 0x3bfe7317, 0x3b679ec5, 0xbc05226a,
+ 0x3aa42c32, 0xbd4b9523, 0x3d35c2db, 0x3cc8969c, 0x38ec17c1, 0x3c56f0d9, 0xbcee297b, 0x3c25bb11,
+ 0x3d19d28f, 0x3d3f3abf, 0xbceb3523, 0xbd392230, 0xbbc372f2, 0x3cb28bee, 0x3ca6a424, 0x3d10a04a,
+ 0xbcccdcc6, 0xbd1c5ce0, 0xbcfc644b, 0xbd25261e, 0xbccbd938, 0xbb3c534d, 0x3cbd8243, 0xbc68cf2b,
+ 0xbc283af4, 0x3c295600, 0xbd09c133, 0x3d341f4c, 0x3d46fad3, 0xbc56c1c1, 0xbd72aeab, 0xbd1152b6,
+ 0xbc89558e, 0xbd136c2e, 0x3dccf466, 0x3c39f939, 0xba2e54ff, 0x3d0fbffa, 0xbcb4b33a, 0x3d250f9d,
+ 0x3de8fbb9, 0x3c57f6a9, 0xbce3f247, 0xbd7b21c8, 0x3c66a19a, 0x3d7911cd, 0x3ce6ea1b, 0xbcd54d12,
+ 0xbcc2c1e4, 0xbd20b82c, 0xbd6dba2e, 0x3bfd836c, 0x3c7eb3fb, 0x3d190e78, 0xbcc43b7a, 0xbc603ce1,
+ 0x3c27d11d, 0xbc91c825, 0xbb86902a, 0x3ccde09e, 0x3d87787f, 0x3ce922ec, 0xbb78a567, 0xbcb4b104,
+ 0xbc08b1d5, 0xbd3632bd, 0x3bb3bf6b, 0xbcacf375, 0xbd8d56e6, 0xbc706c8b, 0xbd752698, 0xb9a20a6b,
+ 0xbc34b44c, 0x3ca6cd36, 0x3bd3d5e6, 0xbc61f67c, 0x3cb5e098, 0x3cb7086d, 0x3d8e4f5a, 0xbcb094af,
+ 0x3cf039c6, 0x3b8323bc, 0xbc31bfbd, 0x3d4ac2be, 0xbdde1fdf, 0x3d181bab, 0xbd0caee0, 0xbc49a835,
+ 0xbcbfd322, 0xbd568ddf, 0xbdae22d6, 0x3c7b880c, 0x3cf49b3a, 0xbc1955ea, 0xba13f63b, 0xbcf11a29,
+ 0xbb94ca3e, 0x3d09cccf, 0x3c2d502f, 0x3c0da410, 0x3c490f98, 0xba33d96c, 0x3d04caf6, 0xbcd0943a,
+ 0xbd831042, 0x3d3db4d1, 0x3cc4dc80, 0xbc84adce, 0xbd60120f, 0xbb9dc1cb, 0x39cb7eed, 0xbac205a6,
+ 0x3ad33537, 0xbc839220, 0xbd307a71, 0x3b80bf94, 0x3d031d14, 0xbceac2b4, 0xbc833f78, 0xbc900408,
+ 0x3be6222a, 0xbac606d7, 0xbcee7336, 0xbc9e0413, 0x3d075337, 0x3d010352, 0x3aa3bc63, 0x3bcaf79f,
+ 0xbc44465f, 0x3c7159e2, 0xbb374953, 0x3d7d20f5, 0xbc8cff8f, 0xbc3d9bca, 0x3db06142, 0xbd56efea,
+ 0x3d442aac, 0xbd46e6b3, 0x3c01b2fa, 0xbc01cce7, 0xbd5b008c, 0xbb85789b, 0xbb6f137e, 0x3d49e27e,
+ 0x3c62540a, 0xbcd22585, 0xbc5616b7, 0xbcfd70ca, 0x3d4427b2, 0xbd3407c4, 0x3c8c2506, 0x3cbade1f,
+ 0x3c25fce9, 0xbcbfd2a8, 0x3c146f69, 0x3cc7ddb4, 0xbcb5267c, 0x3d531c29, 0x3c26e38a, 0xbcede8d8,
+ 0xbd455360, 0x39cc769d, 0xbbe46227, 0x3cb96536, 0x3be1269a, 0x3c952326, 0x3da44ad4, 0x3d93c870,
+ 0x3dec838e, 0xbd34d3df, 0xbc9aa775, 0x3d6bf03a, 0x3a675010, 0x3d878a00, 0x3cbfa631, 0x3bbe59f2,
+ 0xbce53799, 0xbcb01031, 0x3cd5f7b3, 0xbc1dabdf, 0xbc3e5a61, 0xbb56a243, 0x3d1a65e4, 0x3ccc25b3,
+ 0xbaf11e50, 0x3d3acaff, 0xbc32665e, 0x3c9b588d, 0x3bc79029, 0x3ccfede3, 0x3a00b075, 0xbd16a38e,
+ 0xbcf6163d, 0x3cb236d8, 0x3b885c1c, 0xbc547604, 0x3c88a864, 0x3cab2835, 0x3c6f2d44, 0x3b2153c8,
+ 0xbd793b8d, 0x3d397843, 0xbcf46de8, 0x3d08b582, 0x3c9033ab, 0x3d0daed8, 0xbd13df2b, 0x3d40dce8,
+ 0xbd0b083a, 0x3d17fd8c, 0xbcba1edd, 0xbb719e7b, 0xbd8faa41, 0xbcd31b74, 0xbcaefe77, 0x3c145018,
+ 0x3cf6f647, 0x3c4fe9e4, 0x3cdb5a37, 0x3c43a406, 0x3b118a5c, 0x3c0e98a6, 0xbca3ffd2, 0xbbd3e75c,
+ 0xbcaf0a55, 0xbc490f0a, 0xbc41a10c, 0xbcbfdd1c, 0x3d01191e, 0x3ca1926c, 0xbce76626, 0x3d5862e1,
+ 0x3d3c5984, 0x3c946609, 0xbd8b0943, 0x3b36f34d, 0x3d3e7afe, 0x3d690918, 0xbca6dc88, 0xbb54ca0c,
+ 0xbcdf1cd2, 0xbc83e0ec, 0xb92b93c3, 0x3c6b3631, 0xbc6d6d5c, 0x3c05499a, 0x3be3cb6e, 0xbba287ca,
+ 0x3d010dc0, 0xbb30599e, 0x3c9fcbac, 0x3c4e9a5c, 0x3d2f06b2, 0x3ccf2a4e, 0xbcbd2318, 0x3b6f0905,
+ 0x3cbc1208, 0xbcb344d6, 0xbbac3d16, 0xbcf14f88, 0xbd05dd55, 0x3c085604, 0xbc554f3e, 0x3d53ba06,
+ 0x3cdc53b8, 0xbd37a224, 0xbd050416, 0x3c9f0db9, 0x3d4cda43, 0x3d4801ed, 0x3b9e1aa3, 0xbd380e77,
+ 0xbce3583b, 0xbd0f1d26, 0x3d209745, 0x3cb4b665, 0x3c3b87dd, 0x3d0c302f, 0x3c66b4c1, 0xbc4df1fe,
+ 0xbbc9e52a, 0x3d073b29, 0x3c1614d6, 0xbb03c0c6, 0x3d345be4, 0xbbf2861e, 0xbd4c99f5, 0x3c7fe24e,
+ 0xba0fc6a7, 0xbcc35210, 0x3c98c5fa, 0x3ce17c66, 0x3d0b2d8d, 0xbc013ddb, 0xba1ed8b9, 0x3b52f156,
+ 0x3c5b3a7f, 0x3c8dad4b, 0xbc3ea69a, 0x39924207, 0x3c31200b, 0x3ccfd938, 0x3c65eaa3, 0xbcf2bfa4,
+ 0x3cc3328a, 0x3ba1d2c9, 0xbc94e7b3, 0x3cda718f, 0xbb41f097, 0xbcdbd9ac, 0x3cc0a344, 0x3af9e591,
+ 0x3bff4119, 0x3af2b104, 0x3c77d3f9, 0xbbc2df14, 0xbc5db177, 0xbbc9a62b, 0x3c8d113c, 0xbcd6b727,
+ 0x3c4fe0d6, 0xbcad161f, 0x3d0a50f6, 0x3cf444ab, 0xba4e6e8c, 0xbccfc3f2, 0xbc8f6b57, 0x3d236987,
+ 0x3ce78ff5, 0xbc5c70bc, 0xbd2bafb8, 0xbc6e1732, 0x3d3e54d2, 0x3d048be1, 0x3cd8fefb, 0xbc3413c3,
+ 0x3cae4651, 0xbd1ebfe0, 0xbbb09833, 0x3d349a01, 0x3ce8fb6d, 0x3d37207b, 0xbc167456, 0x3bef7761,
+ 0x3b6b2daa, 0x3abb5bff, 0xbcbdf4f3, 0x3bc23e64, 0x3cd4a333, 0xb9e040de, 0xbbffacd0, 0xbc01042b,
+ 0xbbb6ba8e, 0x3b17f5bd, 0x3d36c7f6, 0xbd51cefa, 0xbcab520d, 0x3cda51d6, 0xbcb00294, 0xbbb7ed85,
+ 0x3cbdf755, 0xbd007d68, 0x3baa3286, 0xbcbac7fe, 0xbbf3c6a6, 0x3c4fa51c, 0x3d0242fd, 0x3c4430ce,
+ 0x3d10dc9b, 0xbbb7022e, 0xbd212379, 0x3d206177, 0x3d8d53cb, 0x3d77d582, 0xbc90ef7a, 0xbc9b7533,
+ 0xbc175882, 0xbbff4fba, 0xbd175119, 0x3aa8d992, 0x3b6a9fa7, 0xbc56a270, 0xbcd0aa6c, 0xbd1b3e80,
+ 0xbdb48fc4, 0xbd31d618, 0xbc374d51, 0x3d2dc111, 0x3cd7532c, 0x3b962adb, 0x3cf5f190, 0x3c8efbfd,
+ 0x3d7830b5, 0x3d264eef, 0xbcef4d17, 0x3d7da3db, 0x3cc3a6ca, 0x3d610b1c, 0x3c710ce7, 0x3c4e0e3b,
+ 0xbc77d877, 0x3d711a2a, 0x3b01ad98, 0xbd35385e, 0xbdf23e6b, 0xbb19d769, 0x3d927bbe, 0xbc120778,
+ 0xbcdbfe66, 0x3c096fb0, 0xbd84db60, 0x3d20a12b, 0x3d9dfb8b, 0xbbf01bed, 0xbc3c7f56, 0xbd776fae,
+ 0xbd32f1d3, 0xbd10194b, 0xbc9eeeeb, 0x3d464603, 0xbda1df5b, 0xbc2ffc7f, 0x3d39d9c9, 0x3d315724,
+ 0x3da79c0b, 0xbde76060, 0xbd82bd21, 0x3d957dbd, 0x3d4c86e4, 0x3d46888e, 0x3cb41dc0, 0x3c0308fc,
+ 0x3c82132c, 0xbdd3bc09, 0x3d838073, 0xbcbc3067, 0x3c1e45a6, 0x3cf91fe0, 0xbbbae23d, 0x3d830355,
+ 0xbdb0f03b, 0x3d5749b7, 0x3c631d7b, 0x3d5a121a, 0xbcebe029, 0x3b378cd5, 0xbde3f53e, 0x3d2e0396,
+ 0xbd4fa83d, 0x3d80f244, 0x3d86dbf6, 0xbd21df77, 0x3cc8eb98, 0x3db9c06b, 0xbc621454, 0x3bf403ed,
+ 0xbb425796, 0xbc8bb28e, 0x3d8e866b, 0xbd2e3929, 0xbd44eb37, 0xbc1f6d02, 0x3d2780e7, 0x3d470408,
+ 0x3c0940d5, 0xbd216fd1, 0xbd80c404, 0x3cd605a0, 0x3db77746, 0x3d73d0b5, 0xbc8989e8, 0xbca5f051,
+ 0xbd79f5b8, 0x3ad1f393, 0x3c8ef0e2, 0xbca7701e, 0xbcbbd75a, 0xbd99a70a, 0xbd6f1367, 0x3d6f4ce3,
+ 0xbd1aa19f, 0x3c89703e, 0xbc86101c, 0xbcb1a965, 0xbc4f7201, 0xbd03361a, 0x3c97ea2d, 0x3cb12b07,
+ 0x3d1528ff, 0x3d1b99b3, 0x3aa6fea7, 0x3c8622a1, 0xbca977be, 0x3cc53b65, 0xbd768e4c, 0x3d3f5fe6,
+ 0xbca76f9e, 0x3c58cc11, 0xbcfb5525, 0xbd51bca9, 0xbd559fa7, 0xbd1954f2, 0x3d4b55ff, 0xbcc78332,
+ 0xbce78138, 0x3b45286b, 0x3d325eb0, 0x3caa304c, 0x3c173d1b, 0xbcdf6f53, 0x3c4e2456, 0x3d35ee8f,
+ 0xbbf26ee1, 0x3a9362b7, 0x3d8178d1, 0x3c9989d0, 0x3c70789b, 0xbc04cfe0, 0xbcf72914, 0xbb346f08,
+ 0x3cedcda2, 0x3d580854, 0x3c33e1ab, 0xbd43fb58, 0xbad10bc3, 0xbd015046, 0xbd89933b, 0x3cf88b58,
+ 0xbca6ab76, 0x3cc272a5, 0xbd3c6833, 0xbd485795, 0x3b46fb79, 0xbd1b1c7d, 0x3cea7b6d, 0xbd5c6b4f,
+ 0xbc8fc10c, 0xbbbcd558, 0x3d8a39e0, 0xba7b4582, 0x3c620ee0, 0xbcd89520, 0xbc347f79, 0x3d89481a,
+ 0x3b0704b7, 0xbc83caa2, 0x3bcf3d5b, 0x3d04b7ed, 0x3c524aca, 0x3d08eea7, 0xbc9b187f, 0xbd1a692e,
+ 0xbd2f89f2, 0xbb4b6544, 0xbbf04c00, 0xbb60f6f1, 0x3d2fc048, 0xbc54b332, 0xbcfcfcd3, 0xbd97d4a1,
+ 0xbd159446, 0xbcf3f435, 0x3c9396af, 0x3ba95984, 0xbd346974, 0xbcce5f8c, 0xbba9d349, 0xbcf3f00e,
+ 0x3b5d08ea, 0x3af13859, 0xb9da0fc8, 0x3cd16635, 0xbcfcdd2d, 0xbc0c2b01, 0xbb018ef7, 0x3b476920,
+ 0x3b90eff3, 0xbc5eedcc, 0xbc464bea, 0x3c8f03d8, 0x3cc1f22d, 0xbc497332, 0x3ced2d49, 0x3d84108b,
+ 0x3d0f6e92, 0xbcab7e62, 0xbd8b2d22, 0x3c14e6e3, 0x3c8348dc, 0x3ca41ebb, 0x3cea32fb, 0x3c8df809,
+ 0x3c40df46, 0x3d5bc203, 0x3d2560bc, 0x3d4e514b, 0xbca8845e, 0xba0ca10f, 0xbd9c5599, 0x3d826e14,
+ 0x3dae4d44, 0x3cd69010, 0x3c076daa, 0xbd562d0d, 0xbbd66329, 0x3cd7833e, 0xbc780c4c, 0xbe04412a,
+ 0x3bc446ca, 0xbd67ffcc, 0xbc4b3ca5, 0xbd69c885, 0x3b983ad5, 0xbd4b1a53, 0xbc7fbb50, 0x3d3dc10a,
+ 0x3c1c9303, 0x3c7fe4c2, 0xbc8fae24, 0xbce699cb, 0xbc60a13b, 0xbbd87b02, 0x3cf21c62, 0xbd6d1dc4,
+ 0xbc3d07bc, 0x3c23b327, 0x3d4752ea, 0x3cc4b70f, 0xbda5efa3, 0x3cd0338e, 0xbd51998f, 0xbbad4dce,
+ 0x3da2ef63, 0xbc883a75, 0xbc14c1bd, 0xbd253096, 0x3d1ae4bc, 0x3d142d14, 0x3da0f338, 0xbd9f02a8,
+ 0x3d09750d, 0xbc65bd62, 0xb99dbcbf, 0xbd73b9d4, 0x3c14fc02, 0xbd268ede, 0x3cde7816, 0x3d29378e,
+ 0xbd1b3c14, 0x3c7b24b3, 0xb9761ed8, 0x3a07442b, 0x3c8899e9, 0xbc35a562, 0xbb9969d7, 0xba6fe694,
+ 0x3d03a7c4, 0x3d6ce4ba, 0x3c44a2c7, 0xbba5b69e, 0xbd30ba11, 0xbc230b85, 0xbc8fdf9d, 0xbc892e01,
+ 0x3d94826a, 0x3b84a163, 0xbc214495, 0xbcde7be7, 0x3d675be5, 0x3c9353f4, 0x3ad76fdf, 0xbd0db2c1,
+ 0xbd145256, 0x3d445b21, 0xbd281afd, 0x3c857a1c, 0x3cd2f01e, 0xbd5ca2de, 0x3dc3d6a0, 0x3cf9308c,
+ 0x3d9b2db1, 0xbc15acd0, 0xb959205f, 0x3d0761dd, 0xbc5148c0, 0xb9e53813, 0xbb9b2777, 0x3cece261,
+ 0x3d175f11, 0x3c56ce42, 0x3c356051, 0x3b414463, 0xba90cbfc, 0xbd4f8aca, 0x3d4d86f3, 0x3c90fe4c,
+ 0x3c120b1d, 0xbc67b449, 0x3cb9b659, 0xbcb2e1fd, 0xbd8c8371, 0x3cf34a63, 0x3cdaf5fa, 0x3b890520,
+ 0xbc26a471, 0x3cb5e231, 0x3cb31d8e, 0x3d1be5cd, 0x3d196176, 0xbd2bb079, 0xbbd92623, 0x3cceb2a6,
+ 0x3ce07694, 0x3c1acca7, 0xbd12d1c3, 0xbb0cd2c9, 0x3d673db2, 0xbb5baee2, 0xbc4d476c, 0xbd4589f2,
+ 0xbcea01f4, 0xbc5565fa, 0x3d631937, 0xbcaa6142, 0xbd7f8365, 0xbb41f065, 0xbb6e2329, 0x3d2ae872,
+ 0x3d37c36b, 0x3d50f4e7, 0x3c15a239, 0xbb13eb6f, 0xbc905b37, 0x3c4e7337, 0x3d17dbd9, 0x3d401595,
+ 0xbb887e39, 0x3cb64ec0, 0x3bcd6673, 0xbcfc7a32, 0xbb438d89, 0xbc852a4e, 0xbcf159e1, 0x3d494475,
+ 0x3c39a943, 0x3cb80cb7, 0xbd57eb27, 0xbd566856, 0x3c0a565c, 0xbbf8212c, 0xbcf86828, 0x3c4fe279,
+ 0xbda2efd1, 0x3a1149f0, 0xbc93ba64, 0xbb2b717e, 0xbb2f6a07, 0x3ce16963, 0xbb2312bd, 0xbcc7452f,
+ 0x3d849e25, 0x3d205d20, 0x3bb1df76, 0x3c395525, 0x3d895404, 0xbb45aa38, 0x3cc32c9c, 0x3bc5966b,
+ 0x3c203948, 0xbccac61b, 0x3d6f1af3, 0xbd02e5d7, 0xbce522ce, 0xbc074f6d, 0xbdbce6c6, 0x3ccf867f,
+ 0xbd351fd8, 0xbcea2bf9, 0xbcd5c67e, 0x39d8888a, 0x3db87360, 0x3c3c8022, 0xbcc1e139, 0xbd3b5989,
+ 0x3be5e3e2, 0xbcb80599, 0x3b2dc2e7, 0x3d19ee2d, 0x3c7b817f, 0x3d9b215d, 0xbbd5558e, 0xbc8c2c3a,
+ 0xb88e7c15, 0x3d5981de, 0xbb8a4616, 0xbc12318b, 0x3d231cff, 0xbcfbde06, 0xbd0385e4, 0x3ad6a789,
+ 0x3d4ff0a1, 0xbd03103d, 0xbcefcc59, 0xbb8c0f30, 0xbbcf5b33, 0x3b611c2b, 0xbcf7eeed, 0xbc09cbfb,
+ 0xbd080824, 0xbbdec9e9, 0xbca60bd6, 0x3c1c782b, 0x3a69fd19, 0xbc7474ed, 0xbd0ba12c, 0xbd08b177,
+ 0xbc9e7767, 0xbb219ac4, 0x3cc4054b, 0xbc7eb469, 0x3d10215a, 0x3cebafbf, 0xb9fd5c3b, 0xbca7bc9e,
+ 0x3c08b818, 0x3d08bec4, 0xbb4c1a6b, 0x3ce9151d, 0x3d67a47d, 0x3d036678, 0x3bc42f2f, 0xbd44e4e5,
+ 0x3ce021b6, 0x3c940ae7, 0xbd0feabd, 0xbd184d04, 0x3cdb0475, 0x3c7e59b8, 0x3da6b980, 0xbc4534d9,
+ 0x3d49a3b5, 0xbd2f9c64, 0xbd880e1b, 0x3a46a918, 0xbd1a06ed, 0x3d53b71a, 0xbc198bb0, 0x3d34f40b,
+ 0xbd1087c4, 0xbc9b3b01, 0xbd0f0197, 0x3d60167e, 0x3e14180e, 0xbcbd1811, 0xbc8e0bfa, 0x3c780247,
+ 0x3ceb331a, 0xbd064444, 0x3ca17450, 0xbb9b6693, 0xbbb8a62e, 0x3d70f52f, 0xbc893c7d, 0xbc93d057,
+ 0xbd5c937b, 0x3c4bdd8d, 0x3cec4c1b, 0xbd896a88, 0xbc12d588, 0x3cc45a51, 0xbd86a0a8, 0x3c8efa0f,
+ 0xbcc1ebfb, 0x3cb7d4fa, 0xbcec4b10, 0xbc9c7367, 0x3d57df47, 0x3d3e35fd, 0xbce6ff40, 0x3d0054d0,
+ 0xbd32576e, 0x3d237392, 0xbd2b8a95, 0x3bab98d3, 0xbc8a5a42, 0x3db65c85, 0xbdc4b558, 0x3ca5303c,
+ 0x3ca2d7f4, 0x3d2b4d51, 0xbd866f9b, 0x3c8eecbc, 0x3b85ede5, 0xbba62ef1, 0x3be23779, 0x3cc8794f,
+ 0x3abab512, 0x3c835cdc, 0x3ce3365e, 0x3b2a9a1f, 0x3c13ff8c, 0xbc8f34b3, 0xbb0b73f4, 0xbb6e85b0,
+ 0xbcc6a99e, 0x3d0638f3, 0x3ba9a57f, 0xbb5915b7, 0xbc999c38, 0x3c1c7352, 0xbc44f8f0, 0x3c90cb4f,
+ 0xbccd088d, 0x3c90c723, 0xbd21adff, 0xbc6276d9, 0xbcc9103f, 0x3ac1a3fb, 0xbbc252dd, 0xbca3a9cf,
+ 0x3cf64a5c, 0x3bd0e3ac, 0xbd53a7e0, 0x3cb789cc, 0x3c376d62, 0xbcd51664, 0x3b2e4b54, 0xbd4c0754,
+ 0xbd0a418f, 0x3b9143b2, 0x3bd5d39a, 0x3d2e05be, 0xbc981c3b, 0x3cbbca89, 0x3cc24fb3, 0xbcd62d01,
+ 0xbdb783a0, 0x3d42d907, 0x3d9f2c6f, 0xbd515c1e, 0xbd8c76cf, 0xbce20d6b, 0x3cf9a718, 0xbce0fdff,
+ 0xbd026e4b, 0xbd15a4fd, 0xbb8e9cd0, 0xbd55a2c9, 0x3d3c17d2, 0xbb70db32, 0x3da04a6b, 0xbcd10ca9,
+ 0x3ce8b4af, 0xbc7678d4, 0xbd173638, 0xbd478908, 0x3caae107, 0xbcf96201, 0x3c8b5e83, 0xbd96d543,
+ 0xbbd67aa1, 0x3c894f16, 0x3cb06400, 0xbd44a2da, 0xbcb77cb9, 0x3d79acb1, 0x3c130b26, 0x3c364308,
+ 0xbb9992b7, 0xbd4155eb, 0x3cc7beae, 0x3b4011fe, 0xbd064d40, 0x3d38874c, 0x3c9ab101, 0xbc8db664,
+ 0x3d9036b3, 0xbbceb7b5, 0xbd8c64cb, 0x3cc9c5a7, 0x3d5ba8eb, 0x3d222848, 0xbd175022, 0xbcb11433,
+ 0xbbb10861, 0xbd8cde3f, 0xbb8e6cdd, 0x3beee0d4, 0xbc14ec1d, 0xbc6a6a6f, 0xbdc19ba4, 0xbd71531e,
+ 0xbcf9ab89, 0xbd91f30b, 0x3d2dca30, 0x3dd9104d, 0x3cd6e7da, 0x3db77797, 0xbda56a15, 0x3df6bd36,
+ 0xbcc7a204, 0x3ae5d4f3, 0xbd53997e, 0x3ca33206, 0x3da53de5, 0x3d523e9c, 0xbd0005b4, 0xbdc4727a,
+ 0xbe2704a9, 0xbdb03d1a, 0x3daa1900, 0x3c3fb3ea, 0xbcf552df, 0x3d83886a, 0xbaa9560f, 0x3d2753f9,
+ 0x3b77dcf2, 0x3dddb027, 0xbb4262e8, 0x3a5ee03e, 0x3d829232, 0x3cde9d71, 0xbd009d26, 0xbd2e57eb,
+ 0xbc5d407b, 0x3cbe979c, 0xbdcda24b, 0xbe2cb395, 0xb8e4703e, 0xbdeaed16, 0x3c641574, 0xbd55e168,
+ 0x3e180e81, 0xbcc7ad76, 0xbe1b622d, 0x3d1c6ee8, 0xbcb1bb40, 0x3dd59c37, 0xbb1a3146, 0x3dc785fd,
+ 0xbc9b607f, 0x3d5da698, 0xbe136df4, 0xbcb58017, 0x3cf2f8c3, 0x3a304919, 0xba31b806, 0xbc4f95fb,
+ 0x3d370125, 0xbcc44751, 0x3c74a0cc, 0x3d822fa2, 0xba09df2e, 0xbc5e22a2, 0x3d870360, 0x3d581450,
+ 0xbc85cd1c, 0xbc58e2c2, 0xbd634994, 0xbc9ee655, 0xbce57857, 0x3c83cadf, 0x3cdb8bda, 0x3d50a480,
+ 0xbce9a52a, 0x3b844ab3, 0xbcbda988, 0x3dfb1273, 0x3ce6400e, 0x3dc13e08, 0x3dc4e9aa, 0xbb416492,
+ 0x3dd243b4, 0xbdac31e1, 0x3b6cda11, 0x3de44703, 0x3d305c06, 0x3d24a806, 0x3d6b90ab, 0x3cac47c1,
+ 0x3d071778, 0x3d899d9e, 0xbd926257, 0xbd693e0a, 0xbde8f9b0, 0xbd23ba12, 0x3cde85a0, 0x3d6eb66b,
+ 0x3d94174f, 0xbddb42ff, 0x3c816d7d, 0xbdb2ceb8, 0x3d68e07d, 0x3c988053, 0x3a244bf9, 0xbb9e68e8,
+ 0xbd783b18, 0x3d3f3a9e, 0xbd56c238, 0xbd033e74, 0xbcaf0c83, 0xbc93fd1b, 0xb9c87a4a, 0x3cce9b17,
+ 0xbab3b5f3, 0xbda07769, 0xbda0193e, 0xbc5b8091, 0x3dae98a9, 0x3cc6ade8, 0x3d11596b, 0xba83696b,
+ 0xbbe4a24a, 0xbc9614ed, 0x3c4d3876, 0x3d8bea68, 0x3ca84886, 0x3d704aad, 0x3cec3dc5, 0xbd4849e4,
+ 0x3c045eb3, 0xbcd43f7e, 0xbe05d97b, 0x3cc7057c, 0x3c311608, 0xbda97f12, 0x3c040bdd, 0xbd028dc5,
+ 0x3e196bc4, 0xbccdb071, 0xbde10f84, 0x3b9d2683, 0x3c4a4fea, 0x3d85751a, 0xbdf413bd, 0x3d3fcdcc,
+ 0xbdefb630, 0x3dac1a77, 0x3aa314d4, 0x3d33d8f2, 0xbdf32078, 0xbd880bb7, 0x3c47bc67, 0xbbc80539,
+ 0xbc0fb074, 0xbceb031e, 0x3d8c86ad, 0x3da766fa, 0xbcd0f62f, 0x3cf0cd99, 0xbc9254ba, 0xbd1bd123,
+ 0xbd376780, 0x3b93665b, 0xbc0072b7, 0xbc200147, 0xbb46c639, 0xbb71df4f, 0x3d0721ae, 0x3c963e8c,
+ 0x3c138a1b, 0x3ca2f810, 0xbc74b7e5, 0xbc56be36, 0x3bc40f89, 0x3d951e05, 0x3bb0f64c, 0x3c78bfb3,
+ 0xbc181b99, 0xbbbdf538, 0xbc522223, 0x3cbb342a, 0xbb2ba214, 0x3c8d0b95, 0x3c13e08e, 0xbc8c6da7,
+ 0xba86b5e6, 0xbca7d48b, 0xbc8c01da, 0xbafa249f, 0x3a692b37, 0x3ca78fc9, 0x3c858240, 0xbc5bfd4b,
+ 0xbd5fbb90, 0x3c4968d4, 0x3cb4f44f, 0xbcbcf89c, 0xbc17443a, 0xbc0c142f, 0x3cfae7f8, 0x3c88ede0,
+ 0x3cc8360d, 0x3bc2baaa, 0xbccc2b21, 0xbb910cca, 0xbc8e7847, 0x3db72875, 0x3ca2bded, 0x3c142d27,
+ 0xbc831a38, 0xbcaa3fe5, 0xbca60b87, 0x3bdc4f85, 0x3c47a839, 0xbb1b5bc3, 0x3baadfb1, 0xbc4766da,
+ 0x3b88151a, 0xbc30c09c, 0xbd2229e4, 0xbb1e5894, 0x3c3c5cb0, 0x3cd8f0d2, 0x3c3c0995, 0xbd3412f1,
+ 0xbd7990bd, 0xbc073eed, 0x3c62e3e9, 0xbc24426b, 0xbaeef717, 0x3cbd1029, 0x3c73bbec, 0x3c7c1f95,
+ 0x3c88155b, 0xbca431c0, 0xbce3ca60, 0x3bf46aa4, 0xbc4891d8, 0x3dad43c8, 0x3d2010d3, 0xbb96b3d6,
+ 0x3bd889b7, 0xbc0ed9da, 0xbca8f258, 0x3d113a97, 0x3c97780a, 0x3b30948f, 0x3a9dc8e7, 0x3ca212f4,
+ 0x3bc3cdbf, 0xbc372e69, 0xbd6c972e, 0xbbbb30fe, 0x3b6c9bed, 0x3c81df10, 0xbd06bd75, 0xbcac7815,
+ 0xba4a6642, 0x3cf4fed4, 0xbcafe089, 0xbcb79c01, 0xbbd27ed8, 0x3c020937, 0xbd177349, 0x3d0fa5a0,
+ 0xbd82b121, 0xbce9ff01, 0xbc14b1c9, 0x3bf96de3, 0x3d81b434, 0xbce28a3c, 0x3b5ef400, 0xbcb1aff0,
+ 0xbd8a8e16, 0xbd88a450, 0x3d0f786f, 0xbcca5833, 0xbc89d13f, 0x3d744b8b, 0x3d0eed39, 0x3c5063ed,
+ 0x3d13e2fb, 0x3d248d0b, 0xbcd1b7fa, 0xbc949e64, 0xbbac3380, 0x3ca3ed52, 0x3caac3b5, 0xbc066d97,
+ 0xbd048d9d, 0x3c99babf, 0xbd82f614, 0xbc8ae5db, 0xbd127d1c, 0xbbdffe0a, 0xbb0079ea, 0xbd130f3e,
+ 0xbc265885, 0xbd0d06a8, 0x3d1b59bb, 0xbcdf3c41, 0xbce5fdb7, 0xbd2f079f, 0xbd18280d, 0x3d1de6d7,
+ 0xbcf5b40c, 0x3cc6cc6a, 0x3c832d5f, 0xbd83e9ec, 0xbc0a4055, 0xbc9c072f, 0x3d380392, 0xbc60cf31,
+ 0x3caccbad, 0xbaf4d0a4, 0xbbe19eb9, 0xbceaf3df, 0xbd034504, 0x3d3a39c3, 0xbb37f3d7, 0xbd93eb9d,
+ 0xbd29bc93, 0x3d1dbbad, 0x3bac9104, 0x3d35e786, 0xbbff2c54, 0x3d307f38, 0x3d031f60, 0xbd0fdf88,
+ 0xbce5d083, 0x3c763171, 0x3d829e00, 0x3c820110, 0xbd1c260e, 0xbcac4dd4, 0xbcb6d8e8, 0xbc90376e,
+ 0x3cb67421, 0x3cb64ec0, 0x3c45b9c7, 0xbcc50702, 0x3bb99c22, 0xbd26e071, 0x3bf8f177, 0x3ccbf73a,
+ 0x3b478aa2, 0xbcb3d323, 0x3c688d36, 0xbd2d3ee4, 0xbd756a21, 0x3ca65e1b, 0xbb3ecf2e, 0xbca6296b,
+ 0xbdb1b36d, 0x3b3603e8, 0xb9fb8d37, 0x3c8f428b, 0x3c304fec, 0x3d045137, 0x3d8ec8d8, 0xbb8956e8,
+ 0xbc65bacd, 0x3c752631, 0x3c74642b, 0xbca57d0c, 0xbb8c0bc5, 0xbcbe5900, 0x3dac4f02, 0x3d36ef91,
+ 0xbcac2cef, 0xbc7bb6dd, 0x3cce3a35, 0xb821c615, 0xbcaf8629, 0xbbb66723, 0x3cc07ac1, 0x3cce67dd,
+ 0x3d2f5349, 0xbd0e4108, 0xbc79d166, 0xbd161e9d, 0xbcb39a0b, 0x3da47e04, 0x3d0b2979, 0xbce1fd8e,
+ 0xbce0af3e, 0xbcdc4605, 0x3c476ee9, 0xbb0a12bc, 0x3ca2aad0, 0xbcace632, 0xbaca277b, 0xbcb88445,
+ 0x3c22ced5, 0xbca6a803, 0xbc2143aa, 0xbd7f799b, 0xbbd026e7, 0xbb2f58ee, 0x3cf4225d, 0xbd70267f,
+ 0xbbdbb666, 0x3d597b4a, 0x3d256e4c, 0x3c8971c4, 0xbd825019, 0xbc1bc0f7, 0xbc62b48c, 0x3d823b38,
+ 0x3cf405d0, 0xbb642d27, 0xbc4269ee, 0xbd0750f5, 0x3c6a6932, 0x3cf8577f, 0x3cd13367, 0xbd654cb2,
+ 0xbcdbf7cc, 0xbd9a3740, 0xbd150aee, 0x3b35dae6, 0x3cbcadcd, 0xbd081639, 0x3cce17ac, 0x3c13bb15,
+ 0x3d6a83f0, 0xbd1d292a, 0xbc9d4614, 0x3ce97584, 0x3cff1b8a, 0x3c618bfa, 0x3dccf62c, 0xbd78df3c,
+ 0x3d13757f, 0x3c84d8be, 0x3dc0b2c7, 0x3d00041c, 0x3bfd1cc4, 0xbd01604c, 0xbb93bc6a, 0x3db8dad2,
+ 0x3d4146cc, 0x3ce1abaf, 0xbd676769, 0xbcd9cec9, 0xbced5c9d, 0xbcb4a6d5, 0xbb1278a0, 0xbc8b8305,
+ 0x3d73c1e6, 0xbc972cb2, 0x3c2327f4, 0xbba3557c, 0x3d04feec, 0x3c9b2d7d, 0x3bab949f, 0x3ba9d5c1,
+ 0x3cfdc224, 0x3b67b527, 0x3c0a8e56, 0x3cb1f149, 0xbbc2c3a2, 0xbcf9ce92, 0x3b69a29e, 0x3d2b0853,
+ 0x3d470b0b, 0x3c1cea08, 0xbca7648f, 0x3ce638a9, 0x3caabd69, 0x3bab0e46, 0xbd4dbedb, 0xbcdbbb33,
+ 0x3c515043, 0xbc17d45b, 0x3cb55080, 0x3d04832c, 0x3cbc0140, 0xbc2af21f, 0xbc019a1e, 0xbc9b3ffb,
+ 0x3d4318d1, 0x3c54774b, 0x3d118f9c, 0x3cd20d5f, 0x3c94c4cb, 0x3d1a792f, 0xbcd40734, 0x3cf0a85b,
+ 0xbd2889d5, 0xbbef70e5, 0xbc861807, 0xbc82c702, 0xbc567f86, 0xbcbf5fb3, 0xbc183614, 0x3aee1e33,
+ 0xbcefec8a, 0x3c842a10, 0x3c842490, 0xbcaaf3aa, 0x3d23d203, 0xb7d7c38e, 0xbc47bb63, 0x3b04bef7,
+ 0x3c8c9b3e, 0x3ceceae1, 0x3cdd2a18, 0xbc668895, 0x3cdc1105, 0x3caff52f, 0xbc5c2027, 0xbd7fc5ec,
+ 0x3bc04e52, 0x3d0f2f63, 0xbc5829da, 0x3c3a89dc, 0xbc2649fb, 0x3d2b98d1, 0x3cdb28aa, 0x3b7c8502,
+ 0xbd0977fb, 0xbd303302, 0x3be6b940, 0x3c5e7c3b, 0xbcc4de7c, 0xbc9896a3, 0xbbdf6a91, 0xbcf7ab18,
+ 0xbd562797, 0xbcafeea9, 0x3cd66214, 0xbb1fdbc7, 0x3d7746e9, 0xbb0933bb, 0x3cd9240f, 0x3c8db3bb,
+ 0xbc1dbc26, 0x3c1da6c0, 0x3ab0da6c, 0x3b243a1e, 0x3a2eee59, 0x3cf10b1e, 0xbd038831, 0xbd6b41a2
+};
+
+static const uint32_t _K17[] = {
+ 0x3faa257e, 0xbf29ec48, 0xc006d898, 0x3fe17f62, 0x3f8e1e0e, 0x3fe472e1, 0x3fd41797, 0x3f813485,
+ 0x3d87b3c2, 0x3f435ec7, 0x3fac4170, 0x4005b2b9, 0x3f938424, 0xbe4b40c8, 0x3f9ab384, 0xbef0641a,
+ 0x3fbdee6b, 0xbf0f3f07, 0x3fbf296f, 0x3fb64a9a, 0x3f848088, 0xbfcefe7f, 0x3f79fd80, 0xbe87a4b4,
+ 0x3faa15e9, 0x3f35e0c6, 0x3fe5f977, 0x3f8a59de, 0x3f8848d2, 0xbf778515, 0x3ecc1ed6, 0xbe9d5ff1
+};
+
+static const uint32_t _K23[] = {
+ 0xbe3d2516, 0xbe01593e, 0x3d63e0a5, 0x3eaca79c, 0x3eb857f7, 0x3d5def6f, 0x3ecd6df7, 0x3e52ff76,
+ 0x3d84202b, 0xbe9284b9, 0xbea2c5f8, 0xbd92f325, 0xbe5f4e72, 0x3dfcaa94, 0xbbc12b53, 0x3c963118,
+ 0x3ecd810c, 0xbe78ba0e, 0x3e4be2a5, 0xbd02157f, 0x3e1cb8a7, 0x3e11622d, 0x3e35a0a1, 0xbea50d5b,
+ 0x3e860dff, 0x3e9918b3, 0x3eb0ef61, 0x3d577366, 0x3d9b701e, 0x3a6ef307, 0x3cad9be3, 0xbe2a14ff,
+ 0xbd438195, 0xbda0e921, 0xbd051aac, 0xbdcecd1d, 0x3edcbe85, 0xb949ceae, 0x3f0f0117, 0x3ed621a4,
+ 0x3e99b11d, 0xbea6e913, 0xbd817b70, 0xbea8876f, 0xbece8d89, 0xbbd91fb9, 0x3dd9b4ca, 0xbd7f0195,
+ 0x3d9b4431, 0xbd842eb6, 0x3df7622b, 0xbe899859, 0xbd8e9961, 0x3e9c0371, 0x3de788ed, 0xbe139463,
+ 0xbe8e8ecc, 0xbd7da735, 0x3b9d772b, 0xbdfcd7aa, 0x3eb6a5fc, 0xbeb35d10, 0xbd9815a3, 0xbdf69c10,
+ 0xbe9de1e2, 0xbe4ec82b, 0xbe57a6cb, 0xbed560af, 0xbcf31332, 0xbed56c32, 0x3e4ca2ed, 0x3ea16b1f,
+ 0x3e55a873, 0xbe5389de, 0xbdf4d1a4, 0xbf119680, 0xbeba392f, 0xbdca4c74, 0x3e186b06, 0x3e0e570b,
+ 0xbed1038e, 0xbde793b9, 0xbd74b420, 0xbf149f1d, 0xbe3574e5, 0x3c1c5da3, 0x3debee1f, 0x3d31b1cc,
+ 0x3de79ac9, 0xbc8be578, 0xbe999821, 0xbd103840, 0x3cbcc54b, 0xbd82fad2, 0x3d4472f8, 0x3bacbcd1,
+ 0xbcff1d7f, 0xbe818dbc, 0xbe8521e1, 0xbd26842c, 0xbebddf4c, 0xbe84e5ed, 0xbf00b384, 0xbe9c6185,
+ 0x3d9297aa, 0x3e6dde10, 0xbda83d02, 0x3e4619c0, 0x3ea80309, 0xbea6a611, 0xbea12a11, 0x3dafbe22,
+ 0x3ed76035, 0x3de55d59, 0x39e4c951, 0x3e5e373c, 0x3e694b17, 0x3e102ce8, 0x3e94da25, 0xbcf60553,
+ 0xbe34bb7c, 0x3ccd32f3, 0x3e5014b2, 0x3d757d9d, 0xbe597e4b, 0xbe8bc017, 0xbd7b7369, 0xbbef0dcc,
+ 0x3da22714, 0xbe1ce714, 0xbe2b77f1, 0xbdbfd409, 0xbe0f03b1, 0xbd47cf3e, 0xbe7db2f6, 0xbee38257,
+ 0x3e16a56a, 0x3ea7c2a9, 0x3da34ca3, 0xbd81033d, 0x3e01d0b8, 0xbb3f1404, 0xbc840f0f, 0x3e962c8b,
+ 0x3e01dd43, 0x3edd5508, 0xbc98e669, 0xbdb1941b, 0xbe96a45f, 0xbc2b3db2, 0x3e3d32e9, 0x3e83c264,
+ 0xbdf3124d, 0x3d88b9ca, 0xbe3dd7eb, 0xbe0196ec, 0xbe6afa51, 0xbe5a024e, 0xb98de4e4, 0xbd9a219e,
+ 0x3ee06716, 0xbd9d5780, 0xbe725ad5, 0x3cb56a31, 0x3e8383bf, 0xbeb2883c, 0xbe8eb328, 0x3e7a3d7c,
+ 0x3e81b1a4, 0xbcef63a3, 0x3e3e6dc7, 0xbdef2821, 0x3ea0fd9b, 0x3ee40a1f, 0xbe871b6e, 0xbe2a1a36,
+ 0xbe8f7ed4, 0x3f16c0f4, 0x3c978f88, 0xbdcf5c8b, 0xbdd10973, 0xbed36ade, 0x3e6e6759, 0x3d1aed16,
+ 0xbec22218, 0xbe54977d, 0xbd47114d, 0xbd973138, 0xbe60cb87, 0xbe54fb45, 0x3e41ce65, 0xbe04c647,
+ 0x3e0e8ddc, 0xbdd6013d, 0xbd20108a, 0xbdf2c357, 0xbe821148, 0xbd3f2df3, 0xbe494a7b, 0x3dfaa21c,
+ 0xbcc2fd1b, 0x3ec8f456, 0x3e4c1156, 0x3f27abc3, 0x3e743679, 0xbea217af, 0x3d69bfc6, 0x3c1bbfa4,
+ 0x3e4130d2, 0xbe493c0f, 0x3d2ebc1f, 0x3e0eadbe, 0x3d7847f6, 0xbe1d66d1, 0x3ea5b588, 0x3e81317a,
+ 0xbd2a1f7a, 0x3d5e1727, 0xbe3dfa57, 0xbdff47d4, 0x3ebc01bf, 0xbdf3b5e6, 0xbe904ed4, 0xbd160424,
+ 0x3ea77a85, 0x3dabd219, 0x3e38c6d5, 0xbe8ae9ea, 0xbdd50ef1, 0xbe31e49e, 0xbe233138, 0xbdbb4fae,
+ 0x3dd6f5d2, 0x3ee1656b, 0x3e45b72b, 0x3eba3757, 0x3e66151d, 0x3ca11f0d, 0xbec66da4, 0x3eac88dd,
+ 0xbe08600a, 0x3cf74712, 0xbd9300cd, 0x3dcdd7f7, 0x3e57b957, 0xbe5d212d, 0x3c90e9de, 0x3e59ed39,
+ 0xbdd8013e, 0xbdc1ff53, 0xbf0c6222, 0x3e80d381, 0x3e2d138a, 0x3eb45633, 0x3e4bb0dc, 0xbe645faf,
+ 0xbe87406e, 0x3f0496b4, 0xbb688756, 0x3ec38bd8, 0x3dc35d4a, 0xbdc16d66, 0xbea0484d, 0xbe4d8a8c,
+ 0xbc8e99c3, 0x3e8d3222, 0xbe5f0950, 0x3e14995a, 0xbd45cb87, 0x3d14e1ce, 0xbedd4f4e, 0xbd0f8670,
+ 0x3dc0a255, 0xbe7bca5c, 0xbea64a25, 0x3e584c41, 0x3e96ac14, 0x3b2b305e, 0x3d0fe013, 0x3e9c4f02,
+ 0xbec37a14, 0x3d62edad, 0xbd57d0e7, 0xbeba6e75, 0x3df09714, 0x3ce073a2, 0x3edf1e17, 0x3e2149a6,
+ 0x3e0f6e56, 0x3dbd1476, 0xbd09d768, 0x3dd0098a, 0xbda99f7a, 0xbd8d5eb3, 0xbe886a41, 0xbe812d10,
+ 0x3dcb1957, 0x3e9b719b, 0xbe852b3f, 0x3e90004b, 0xbd919ed1, 0xbdb8434f, 0xbed1db8a, 0x3dfa340d,
+ 0x3e960a4e, 0xbe135b83, 0x3aabd5ea, 0xbd80c013, 0xbdc34ae9, 0xbda9dee8, 0x3e60a384, 0x3e310633,
+ 0xbde4e264, 0x3ee4068a, 0xbe253aec, 0xbda548f7, 0xbcfbcf17, 0x3d2ee59d, 0xbea3976f, 0x3e4698f7,
+ 0x3e0a8818, 0x3cc76593, 0xbe489220, 0xbd311dc7, 0xbee17e74, 0xbd2fb3bd, 0xbecc921f, 0xbea54321,
+ 0xbe41499e, 0x3d194a37, 0x3d211ac4, 0x3e97e255, 0x3ea233f9, 0xbde1b48e, 0xbe99be3b, 0x3e9d7aa6,
+ 0xbcbc8878, 0x3cb9151a, 0x3e1994b8, 0x3de14069, 0xbe0fd175, 0xbc3add5d, 0xbdc100b8, 0x3e3e0f1d,
+ 0xbe56f9b9, 0xbd1ceb31, 0xbda7acb4, 0xbdbe0075, 0xbeb6a279, 0x3e0541cc, 0x3c97b4b6, 0x3dc8d012,
+ 0x3eb3ca44, 0xbe9eb533, 0xbe902481, 0x3e3b444d, 0xbe8a194f, 0xbda15a97, 0xbe672f7b, 0xbde0117b,
+ 0x3e65bbee, 0x3d90f0fc, 0x3e12e531, 0x3e7eebc1, 0x3e52b0e7, 0x3da06595, 0xbd9c3f9e, 0xbce30000,
+ 0xbe385316, 0x3ef9faeb, 0xbda7f28e, 0x3b2a0cb0, 0xbe72e51b, 0xbd4da4aa, 0x3dfc9550, 0x3d379292,
+ 0xbe7d5a99, 0xbeb82082, 0xbe23c6bf, 0x3e2b03ec, 0xbeb453d0, 0xbe5cf736, 0x3eb641cf, 0xbe725bdc,
+ 0x3d77c4c0, 0x3d26e963, 0x3eabf456, 0x3c80c850, 0x3eb69906, 0x3e1678ce, 0x3e9996db, 0x3e4673e9,
+ 0x3e32a32a, 0xbe7da8ac, 0x3e6c5076, 0xbe0ca55f, 0xbec48cb2, 0x3e65b326, 0x3d8b2f98, 0x3e4862c0,
+ 0xbe823aa8, 0xbe9b544a, 0x3bac716e, 0xbd9dc953, 0x3f2af32c, 0x3dcac7ee, 0x3db8342d, 0x3dcd6a72,
+ 0xbe3a05b2, 0xbe753a0f, 0xbe262275, 0x3ea74209, 0xbdc9810d, 0xbdd7e7e0, 0x3f2812f4, 0xbdb10ac6,
+ 0xbef7d6cf, 0xbdef5ba1, 0x3df5946c, 0x3e823b2d, 0x3e60736b, 0x3e3a90e1, 0xbdf07198, 0x3d8f3225,
+ 0xbe9c5ead, 0xbc7f22ee, 0xbf22decb, 0xbe859d1d, 0x3bf9b583, 0xbe55dcf2, 0xbebd62d2, 0x3e3999f7,
+ 0x3e8202a3, 0xbef29875, 0xbe6b95fc, 0x3e8ae5f5, 0x3ec47ade, 0x3d41efb7, 0x3d884687, 0xbe13de89,
+ 0x3e8fa54a, 0x3eac584b, 0x3ecba633, 0xbe801b16, 0xbda311cc, 0xbd11b31a, 0xbead773b, 0x3de7d5e5,
+ 0xbdfc6efd, 0xbe15ec29, 0xbd966e1e, 0xbe1f71b5, 0xbdfac47a, 0x3dcef276, 0x3ced1a9c, 0xbe0bb5e5,
+ 0x3e0a9298, 0x3dcdd17a, 0xbec5f222, 0xbe1c9cd0, 0x3eaba4d0, 0xbd6e0900, 0x3e719b59, 0x3e9fefd0,
+ 0xbe6e9302, 0xbdfc42c9, 0x3d9ad48a, 0xbebc9c4f, 0xbe30a747, 0xbe1a3cf8, 0x3e040a1e, 0x3e4b9c36,
+ 0x3d19ecac, 0x3ea63e64, 0xbe1886a0, 0x3ea57262, 0x3e63bff8, 0xbecf354c, 0xbed70c6c, 0xbe190a60,
+ 0x3dd98348, 0xbea1de09, 0x3bb0b29f, 0x3e46e829, 0xbc613f5b, 0x3df12615, 0x3cb5ae5b, 0xbcdf3ac0,
+ 0xbd3c6e6d, 0x3d03a762, 0x3dc3294f, 0x3edac2c2, 0x3e1c7424, 0x3c3cca18, 0x3ef06620, 0x3e7a3b1d,
+ 0x3eb72242, 0x3e4150a9, 0x3f2ea1a3, 0x3e598e6c, 0xbdffbf96, 0xbf2cd3b8, 0x3ec0d049, 0xbe8c82da,
+ 0xbea0b28b, 0xbeff4974, 0xbced0cb9, 0xbe7a9b92, 0x3e523269, 0x3d8ad9e1, 0xbd7bc4e2, 0xbef6ec18,
+ 0xbca869e0, 0x3d853783, 0x3eca99ef, 0x3e31ca05, 0x3d0e0e13, 0x3c9c9706, 0xbe1392b4, 0x3de2e2eb,
+ 0xbe2a33cd, 0xbd901c58, 0x3e4c6b45, 0x3db36c6c, 0xbe550d68, 0xbe521bae, 0xbe07b5f5, 0x3d8787fa,
+ 0x3e3960d7, 0xbd278f6b, 0x3f1524cc, 0x3e985009, 0x3d8cd195, 0x3e2dc8f9, 0x3e37fad6, 0xbd56542c,
+ 0xba849cc6, 0xbdd098e0, 0xbe0e5fe3, 0xbe79589e, 0xbe01c05b, 0x3dc74f89, 0x3e662004, 0x3e01c172,
+ 0xbf08ab6b, 0x3d969544, 0x3f021fcb, 0xbe296b5a, 0xbd9c731e, 0x3ea97675, 0x3e73d519, 0x3b849a0b,
+ 0xbc9f0ad7, 0xbd6398bf, 0xbf0ac563, 0xbe6b4e14, 0xbede7e3d, 0x3e479ae6, 0xbeea9e2e, 0x3e90f594,
+ 0xbdcae1ca, 0xbe4edae3, 0xbec0a42a, 0x3e7b5bba, 0x3dd44025, 0x3effc3b2, 0xbe74cd8f, 0x3e8ca83a,
+ 0x3e802c92, 0xbda99c02, 0xbe0d9d2b, 0xbe91b774, 0xbe9905bf, 0x3dc57294, 0xbdd8ef6b, 0x3e6b97a9,
+ 0x3e8ec140, 0x3db2e6e0, 0xbeb50f51, 0xbe2b4779, 0x3e09f2d7, 0xbeca1435, 0xbe11fa45, 0xbebd8eca,
+ 0xbe5c3270, 0x3eb8e4b6, 0xbe89e97d, 0x3d9eb386, 0x3e818cc7, 0xbe516442, 0xbe7c769d, 0xbe92eb2f,
+ 0xbd17b45c, 0xbe0912d1, 0xbd5221d3, 0xbeac8974, 0xbd8c052f, 0xbd99968a, 0xbd641d75, 0x3d2d4929,
+ 0xbd51b3b0, 0x3e00087b, 0x3e413cab, 0xbe5d3a7d, 0x3e98695d, 0xbec15dc1, 0xbef6bae4, 0x3e6df59f,
+ 0xbdcd894a, 0xbe2ba3cc, 0xbf070343, 0xbd4e897f, 0xbe920253, 0x3c501776, 0xbe8b3636, 0xbe8063c1,
+ 0xbe6ddd06, 0x3e79b753, 0xbda95d17, 0x3e8bd0ab, 0x3eca655f, 0xbe6d5f20, 0x3c457ff6, 0x3de899b1,
+ 0x3e25fc17, 0x3f0be132, 0x3ea29c3b, 0xbe2f9a9a, 0xbf074723, 0xbe57ef6c, 0xbd077b63, 0x3d2fc7cf,
+ 0x3d5910a9, 0x3ba68be1, 0xbe030cb9, 0x3ea76afd, 0x3eb2205b, 0xbd8c0ad7, 0xbed3dbb5, 0xbe4c31a6,
+ 0x3ddd7ca2, 0x3e3c879d, 0x3da159a3, 0xbd1c0448, 0xbe900089, 0xbea8b6c5, 0xbe039720, 0x3e0e092c,
+ 0x3dcfa0d4, 0x3dd40c26, 0xbcc3916a, 0x3de676f2, 0x3e85c3e6, 0xbc7a774c, 0x3ed47d28, 0x3ea05354,
+ 0xbe9c947f, 0x3f0db0dd, 0x3ebf4239, 0xbecb441b, 0xbd6dfb24, 0xbe1e4e3f, 0xbe04b8b8, 0xbe2856e1,
+ 0xbe660f18, 0x3e7c06a2, 0xbd7c0244, 0x3e5862ca, 0x3b3e3b55, 0x3e4cfe1f, 0x3ec1d000, 0xbe48daa0,
+ 0xbe3e0ee6, 0xbe32d798, 0x3ed8ca15, 0x3ef5a4f9, 0x3e8a646b, 0xbd7a965d, 0x3eb39bfd, 0xbea0258d,
+ 0x3e0e9ac9, 0xbbaad816, 0xbed65960, 0xbd9657ee, 0xbd139509, 0xbd0d0691, 0xbe142f4f, 0x3e316abe,
+ 0x3f5902cf, 0xbe0ea942, 0xbde3e7d3, 0x3ebc2eda, 0x3e9362a9, 0x3ef92aaf, 0xbf04c2c6, 0x3e887b8b,
+ 0x3e07b263, 0x3ea99845, 0x3f185d11, 0xbe96e4bf, 0xbe49a324, 0x3dbf942d, 0x3e3819b2, 0xbe299b66,
+ 0xbdbd1dea, 0x3d7808ea, 0xbd54f20c, 0xbe46fde3, 0xbe572924, 0x3cc0eb45, 0x3dfa32a0, 0xbed0dba5,
+ 0xbe9b403b, 0x3e6bef91, 0xbef70861, 0xbc8353c3, 0xbc94a3e3, 0x3b9b17fc, 0xbdff12b5, 0xbdec20f4,
+ 0x3ee49f92, 0x3f09bca4, 0xbe53769a, 0xbdce4e8c, 0xbf08f903, 0x3c4558c7, 0x3f06f8f6, 0x3edf8610,
+ 0x3cb44179, 0x3e5a0c16, 0xbe8e2fbc, 0xbe111e89, 0x3eb10792, 0xbf0254e1, 0xbd55988c, 0x3c296197,
+ 0x3db7692a, 0xbdb5872c, 0xbf245359, 0xbf2ae609, 0xbe1c91c5, 0xbe94d108, 0xbe1eb86d, 0x3e5f41a8,
+ 0xbe0a2ad5, 0xbd00f61a, 0x3dee5813, 0xbe822cb9, 0xbe95f3d7, 0x3ca73e5a, 0x3e8de688, 0xbef535b4,
+ 0xbf043bd0, 0x3ec91478, 0x3e8f19bb, 0xbedcd7c8, 0x3e14be58, 0xbf29c357, 0x3f5f3cdb, 0x3ece7d85,
+ 0xbd3f5082, 0xbe987f6b, 0xbd264cb7, 0x3cea436a, 0x3ec2a979, 0xbed27805, 0xbe3ccfff, 0x3ec12eac,
+ 0xbe60c57d, 0xbe162c14, 0x3d95ffcf, 0xbe3631c2, 0x3e9df9d8, 0xbe315c72, 0x3e424b53, 0x3eb4991a,
+ 0x3e9179f6, 0xbdc4c4fd, 0xbd838ce9, 0xbdc72529, 0x3e0c07a8, 0xbe16b225, 0xbec0e8f1, 0xbe533e1b,
+ 0xbe8037f3, 0x3e11ef31, 0xbe1ab498, 0x3b0b3875, 0x3e2cd61c, 0x3e62cb82, 0xbddac771, 0xbe82934b,
+ 0x3f3faa59, 0xbdcf879b, 0xbc49958f, 0x3f039897, 0xbda5d646, 0x3dc0f835, 0x3e52c9c5, 0x3eb143a0,
+ 0x3d4a2587, 0x3c6d9a0d, 0x3dba94b5, 0xbeb827ff, 0x3eca6141, 0xbd2ca833, 0x3c1a6968, 0xbdda259e,
+ 0x3a155b22, 0xbe48ae93, 0x3e3b013a, 0xbdafefd9, 0xbd0ea757, 0x3d36ff95, 0xbe1971aa, 0xbe72b781,
+ 0x3c6bd737, 0xbea79a85, 0xbd940ffb, 0xbc6c80eb, 0xbce3769a, 0x3e51db5d, 0x3e2f88a7, 0xbe20847a,
+ 0xbdc65657, 0x3c1d4a44, 0x3ec762c6, 0xbe8933e6, 0xbdd8c5bc, 0x3de58508, 0x3ddd1572, 0x3e12f64e,
+ 0xbf0c1a52, 0xbed002b4, 0xbd958350, 0x3d9ae13d, 0x3e4fa918, 0xbdad622d, 0xbd24c140, 0x3c163f4d,
+ 0x3d91664d, 0xbeab23c3, 0xbe95604e, 0xbdbe3fe9, 0xbec7c44b, 0xbe6f913d, 0xbe16823d, 0x3e92652b,
+ 0x3e0173ea, 0x3e0e7858, 0xbe00aa7a, 0xbe05ea8c, 0xbed4e5d1, 0x3e3326f0, 0x3e736a4b, 0xbe7571f5,
+ 0x3f004097, 0x3e844e04, 0xbcf69e8e, 0x3e4a7ae7, 0x3d867db5, 0xbe15942d, 0xbb846a0d, 0xbe4c01c8,
+ 0x3f33a3e4, 0xbe5b3885, 0xbe76c149, 0xbd8a8b79, 0x3e1c55e6, 0x3d4658f6, 0xbe90b92d, 0xbf01fe98,
+ 0xbef26795, 0x3ea6f79f, 0xbe93e54e, 0x3df1e5e6, 0x3e29f363, 0x3e9c5dc9, 0xbebff85f, 0x3cc0e428,
+ 0x3bcdcb11, 0x3e2750e5, 0xbef953e6, 0xbd7bfcce, 0xbe892e3f, 0x3d8b8279, 0x3dfa89a1, 0xbec13daa,
+ 0xbe0c458a, 0x3e18fade, 0x3e9b65f9, 0xbe3356a4, 0x3e3ca0f2, 0xbe5305ed, 0xbf183d18, 0x3d4769af,
+ 0x3d0a7589, 0xbe1a3a1b, 0xbeae63c0, 0xbe2c6b5a, 0xbeee26a7, 0xbcac4450, 0xbe81b8df, 0xbeabef85,
+ 0xbd5bbf2e, 0xbe548481, 0x3dc8b434, 0x3e7976d6, 0x3eb0c908, 0xbe102a7e, 0x3eb9926d, 0x3dcc66e8,
+ 0x3e022320, 0x3f1de02b, 0x3e960706, 0xbe95d182, 0xbe0d3b1e, 0xbe8124d0, 0xbde0ecce, 0xbd335c32,
+ 0xbe97ea83, 0x3c5ca9ce, 0x3c8b8164, 0x3f09bab2, 0x3cfe43bd, 0xbdb826e4, 0xbe6d0b82, 0xbe1e6459,
+ 0xbdb34387, 0x3e25a578, 0x3dd56457, 0x3e89014a, 0xbecc9c2d, 0xbea33169, 0x3e34ba50, 0xbe97d94e,
+ 0x3e9a616e, 0x3e3f6d31, 0xbd7a2df3, 0x3c822028, 0x3daa8180, 0xbb1faed2, 0x3ef87afc, 0x3e32e309,
+ 0xbe8cf96a, 0xbd2e78e7, 0x3dbd937e, 0x3bb9f037, 0x3e8424ac, 0xbe7b4aba, 0x3def48c7, 0x3d4072d7,
+ 0xbda9011d, 0x3dde8340, 0x3cccb0fe, 0xbdfa4aaf, 0xbedb46fb, 0x3ec1402e, 0x3df49598, 0x3d865633,
+ 0xbf2638bb, 0x3e902940, 0xbde43444, 0xbe852f2f, 0x3d4e1c14, 0xbebc7721, 0x3d3c7d3b, 0xbdfd1a1d,
+ 0xbeaa67d3, 0xbe7b9c63, 0xbeb34f50, 0xbf66c1aa, 0xbe6ebdd0, 0x3ce2354f, 0xbda31fdb, 0xbe9b1840,
+ 0xbec5aaf8, 0x3ce7b50e, 0xbea4d9f3, 0xbe7523b5, 0xbebdeab5, 0x3dd1c56e, 0xbe0fb807, 0x3de03b4c,
+ 0x3f13c347, 0x3e29e870, 0x3d2583c1, 0xbede8adc, 0x3e0d0caa, 0x3e4e28fc, 0xbe60165b, 0x3cf358fb,
+ 0x3c9ab5bd, 0x3e916dc6, 0x3d6acf08, 0xbd3c2fbf, 0x3eb98497, 0x3de610d1, 0x3f2b68f1, 0x3ef7cb10,
+ 0xbe4c0259, 0xbcccd616, 0xbcd41394, 0x3dc120cb, 0xbd353e23, 0x3e29cced, 0x3d1edfb3, 0xbe4728d5,
+ 0x3c0bb32e, 0x3da9a2b4, 0xbc0c7593, 0x3b2a2618, 0xbe3c9ce1, 0x3c07f936, 0x3e2517c3, 0xbe314b9a,
+ 0x3d79cd54, 0xbe8ecc41, 0xbec390fc, 0xbec0c5a1, 0x3ee3cb48, 0x3d673e61, 0x3e92d751, 0x3d2d5353,
+ 0x3e7980a8, 0x3e35c4df, 0x3e5ca70d, 0x3e0b4c56, 0x3e79eaf8, 0x3e9abad2, 0x3edcc12f, 0x3e08cc72,
+ 0xbe862e45, 0xbc1cf63c, 0x3e9d286f, 0x3e83991a, 0xbe6222d6, 0x3e136fb4, 0xbc815bde, 0xbe993019,
+ 0x3edfba07, 0xbc9812a5, 0x3bcb2050, 0x3eb0d900, 0x3e18117c, 0x3d5f5cfb, 0x3e429a4f, 0xbebf9325,
+ 0xbd819214, 0xbca67c7d, 0x3e211122, 0x3c43180e, 0x3eb15308, 0x3db272d7, 0xbe038e5f, 0x3e4e4594,
+ 0x3d735b77, 0x3d02ce45, 0xbe9e1951, 0xbea89f1e, 0xbc8f565d, 0xbe1f07ec, 0xbe900a36, 0x3e472988,
+ 0xbe9192b8, 0xbec263f3, 0xbd9a0b0f, 0xbe9f69de, 0xbdf5c089, 0x3cc0e01e, 0xbeccf58e, 0x3e9cd2d5,
+ 0xbe3c6306, 0xbeb67784, 0xbcc1295d, 0xbec76649, 0xbe990745, 0xbe96ec9c, 0xbe72fa7c, 0xbea7b569,
+ 0xbdc7276c, 0xbeb937e7, 0xbde8962d, 0x3e42909c, 0xbc7fa858, 0x3e1a54b7, 0x3d1978c7, 0xbe466dd9,
+ 0xbec47e0c, 0xbd85334b, 0x3e969870, 0xbd2d0c58, 0x3ea2b104, 0x3e9304f9, 0x3e77fbae, 0xbdc12ad0,
+ 0x3e6dcfad, 0xbeaa405c, 0xbdd7b416, 0x3e0c35ba, 0x3eade3cc, 0xbea177ca, 0xbea42e5f, 0x3e02d1c1,
+ 0x3ea1517a, 0xbf10cc06, 0x3d84a795, 0x3eeae544, 0x3e8c171c, 0x3eecc85f, 0xbe9fd642, 0xbe62a1b1,
+ 0x3cce0462, 0xbe3bf95f, 0x3ed3a862, 0xbe6a4032, 0xbd58759e, 0x3e2ff874, 0x3e0303df, 0xbe9b26eb,
+ 0x3e11c77d, 0x3f024afc, 0x3f1b9614, 0xbd5523cc, 0x3db94705, 0x3eee251a, 0x3db7fca1, 0xbe20ed15,
+ 0x3e90e3d6, 0x3e203821, 0xbeeccabd, 0x3d83197b, 0x3c9567c3, 0xbdc4d35b, 0xbf53226e, 0x3e43b31e,
+ 0x3e558eb7, 0xbea71e78, 0x3e30865b, 0x3eb07721, 0x3d82589c, 0x3f0e0624, 0x3d935c23, 0xbe9865b0,
+ 0xbc5f5790, 0x3de79dc5, 0xbea0ebb3, 0x3e9cdb40, 0x3e757b7d, 0x3ed9bad7, 0x3eeb52b8, 0xbd83ed0a,
+ 0x3e338b75, 0x3e5ab57c, 0x3c632d8f, 0x3e0372df, 0xbd6b389f, 0x3f1cf9b4, 0x3cde304c, 0xbd6dacc6,
+ 0xbe1ddcb6, 0x3e52b9f6, 0xbe4da63c, 0x3e837b05, 0x3e546aaa, 0xbdc9fc18, 0xbe11d8ca, 0xbe3fef7c,
+ 0x3ec5ad07, 0xbebe4b18, 0xbc868990, 0x3df7075e, 0x3e100bea, 0xbdf0436a, 0x3e30f8dc, 0x3e25d9a2,
+ 0xbe174ae9, 0xbc96b8f8, 0xbe80bef2, 0x3d50f8b0, 0xbda8c8f1, 0x3e9aec7e, 0xbcefc685, 0x3c11b393,
+ 0xbde4558a, 0x3e0ee63f, 0x3e297508, 0xbe51df1a, 0xbee06798, 0x3f1a27a7, 0xbe7fe5b6, 0xbebc42c1,
+ 0xbe343825, 0x3e6b9363, 0xbde7aec8, 0x3e9c8dfb, 0x3de458d5, 0xbea849df, 0xbe38e73a, 0xbd3acd53,
+ 0x3e7b1a50, 0xbe787bd0, 0xbb8c1e32, 0x3ed60c22, 0xbd5535cc, 0xbe8d08d0, 0x3e379d9d, 0x3d7d820f,
+ 0xbea08d7b, 0xbe427fc7, 0xbd8d54e1, 0xbe630ccd, 0xbe2d1822, 0x3e043912, 0xbe838011, 0xbdf872f6,
+ 0xbdddc728, 0x3d94f481, 0xbd156240, 0xbd7b2c51, 0xbef7dec7, 0x3ea58c4d, 0xbeb7f371, 0xbee439c8,
+ 0xbe96531e, 0x3db3d586, 0xbde67efd, 0xbe5d8001, 0xbd600f20, 0xbe87c1f9, 0xbedba0a7, 0x3dfa3478,
+ 0xbe77f8fe, 0xbe898617, 0xbe2f5aeb, 0x3e0f1618, 0xbb79e25d, 0xbe9f6284, 0xbd872895, 0x3eb54c89,
+ 0x3e3e532c, 0x3e72bc53, 0xbdf5869e, 0x3f00c1ff, 0xbdcb01c3, 0x3c7a6db2, 0xbe803990, 0xbe0323ef,
+ 0xbee2d0d8, 0x3e878e28, 0x3e9affa7, 0x3eafdbba, 0x3e791f2f, 0x3d801860, 0xbd85d2f4, 0xbee0513f,
+ 0xbdf2cc34, 0x3e2d93c0, 0xbe215c70, 0x3e8be3b9, 0x3e54bc42, 0xbe4011d2, 0x3e00dde2, 0xbed3f01f,
+ 0x3e9445af, 0x3e15280e, 0x3f13043c, 0x3e4587b2, 0x3e316dba, 0x3e77c075, 0x3ecd365a, 0xbe6099f7,
+ 0xbecc5607, 0x3db29664, 0xbeb90f1e, 0xbea8bb5e, 0xbcd2b9d4, 0xbe7ee99a, 0xbe27aa31, 0x3e67fd58,
+ 0xb9d4a501, 0xbe339a06, 0xbdd2ac44, 0x3f19dcd1, 0x3e464257, 0xbdd6aab9, 0x3e534f61, 0x3eccc19e,
+ 0xbeb86d3b, 0x3e04f584, 0xbe294ee7, 0xbe2fe215, 0xbed06044, 0x3da19302, 0x3da893dc, 0xbeb50c1d,
+ 0x3e7fc757, 0x3e6df913, 0x3e8a43f8, 0x3d3ebc42, 0xbd9b5a3a, 0x3dfb7e80, 0x3cfcd338, 0xbe8cc112,
+ 0xbcb03a24, 0x3ed36504, 0xbe55e521, 0xbc0b4748, 0x3dc639db, 0xbee157bc, 0xbe810e05, 0x3e28a0c5,
+ 0x3e06e71b, 0xbf3203bc, 0xbeca22a4, 0xbe6bd090, 0xbe92a76b, 0xbe7cc4df, 0x3ec688f4, 0x3efff5d0,
+ 0x3e365baf, 0xbeb81c41, 0x3ed0b770, 0xbee82013, 0xbe5ef6de, 0x3dc6c67f, 0x3f267db4, 0xbe0b83ec,
+ 0xbefc088f, 0x3eab3f80, 0x3df8a754, 0xbf0f0083, 0xb8bc5d80, 0x3e87e9c0, 0xbebd37e6, 0x3c11387b,
+ 0x3dd22523, 0xbea135b1, 0xbf024f4e, 0x3e8d0190, 0xbebda931, 0xbe85a9a7, 0x3e328e4e, 0x3c0f841e,
+ 0x3e042c92, 0x3d76cd06, 0xbe42cf02, 0xbe835a0a, 0xbe156d69, 0xbe089ab1, 0xbe1c8bde, 0x3dcf08b0,
+ 0x3d8f1451, 0xbeabba5a, 0xbd4741d9, 0xbe2afc3f, 0x3bc6cb9f, 0xbcdffc8b, 0xbe280c77, 0x3eb71fdd,
+ 0xbea7ba12, 0x3e93488d, 0xbe6ab6f4, 0xbe5c088d, 0xbd6c3e67, 0x3d37b790, 0xbf0da899, 0x3e4601b2,
+ 0x3e591e8a, 0xbe216550, 0x3e93038b, 0xbe6cac19, 0x3d9c53ab, 0x3e827993, 0xbe395c47, 0xbebaac7b,
+ 0xbda8b935, 0xbd868d39, 0x3e2a5059, 0x3c1fe09e, 0x3dc7e77e, 0xbe89ea88, 0x3e64684e, 0xbd8a5b32,
+ 0xbb3f0636, 0xbe53a40f, 0x3e4b6e2c, 0x3da58b02, 0x3e08ff67, 0xbeb83a23, 0x3e91e6a8, 0xbe4b699b,
+ 0x3eafdbdc, 0x3c21b679, 0x3e2a5bba, 0xbe147202, 0xbd9c0721, 0x3e1e8427, 0xbedfd08e, 0x3dbf4910,
+ 0xbcc50ea0, 0xbe45cfde, 0x3ec1c9c1, 0x3d43f79e, 0x3e27c85e, 0x3e32653e, 0xbd8fa5a4, 0xbed5f8e7,
+ 0xbed0bd58, 0x3ea7aac0, 0x3ed0a8d7, 0x3dfbc3f8, 0xbd373f34, 0xbe09dde7, 0x3e291d9c, 0xbe6f5375,
+ 0x3e5fe8e3, 0xbd6f00fd, 0xbe74584b, 0x3e5e2ed6, 0xbe977ed7, 0xbf0ba9cc, 0xbda6c303, 0x3e01d10d,
+ 0x3ec8181e, 0xbcffd673, 0x3dd4e6cb, 0xbe2119a6, 0x3e2b040c, 0x3dfc91ef, 0xbe09aef9, 0xbe62930e,
+ 0xbd817b64, 0x3eb8ae44, 0x3dcdba88, 0xbddece8d, 0x3ef8bc9c, 0x3e9489c6, 0x3e0b48db, 0x3c786bb5,
+ 0x3ed19440, 0xbe4d4d42, 0x3eac8971, 0xbdf797da, 0x3e8b82c3, 0x3e927f66, 0x3e3f0515, 0x3efd6c04,
+ 0x3e8b1e31, 0xbe2fb662, 0x3e36da4f, 0x3d99b497, 0xbf349cd8, 0x3c639ae7, 0xbcc359fb, 0xbdbf12ba,
+ 0xbe8f9f93, 0xbe2a859b, 0xbd784dc6, 0xbcff3d76, 0x3eff5e4e, 0xbef52cee, 0x3f0e87e2, 0xbea5ff68,
+ 0xbf1457a4, 0xbdf1f226, 0xbed3b06d, 0x3e8b538e, 0xbe0e02f6, 0x3c1ea2c4, 0x3f00d002, 0x3deafa04,
+ 0x3e8ec9d6, 0xbe041ff8, 0x3e808aab, 0x3e322027, 0x3dc2e7ca, 0x3e6fcd09, 0xbdcf0bd5, 0x3ecae917,
+ 0x3ea17918, 0xbdc5dce5, 0x3e80a2d2, 0xbe68b1b8, 0xbdb551bf, 0xbe7e55e6, 0x3f13e8d1, 0x3e5c1cd9,
+ 0xbe0ad9d8, 0xbe26c9f1, 0x3deb42fd, 0x3dc5db10, 0x3f19df14, 0x3e784af3, 0xbddf0b55, 0x3c2d79de,
+ 0x3d4963ee, 0xbdd1f211, 0x3f020657, 0xbdea0eb7, 0xbf3a42c3, 0x3e61476b, 0xbe560db3, 0x3efc7ed0,
+ 0xbdfaf245, 0xbe405656, 0xbe9e1ae0, 0x3f08596a, 0xbdb99ebc, 0x3d823ca4, 0x3cf9e7f2, 0xbe4962ea,
+ 0xbda827a7, 0x3e7e6f5d, 0x3c500a08, 0xbed385a7, 0x3e07b90a, 0x3e51d863, 0x3e933ce8, 0xbe1567b3,
+ 0xbe27da31, 0x3cecf04d, 0xbeb23921, 0x3d487d4f, 0xbd05ea74, 0xbdb67b93, 0xbe8d505b, 0x3ea025de,
+ 0x3ea2505b, 0x3ddf1542, 0xbdb2f340, 0xbe0c836f, 0xbf5cc09f, 0xbead283b, 0xbf5759aa, 0xbc8b2a37,
+ 0xbeb93c45, 0x3e99c3b1, 0xbdbac59e, 0xbe073968, 0xbe85adb4, 0x3e95dad3, 0x3e00c0b8, 0x3e074d5e,
+ 0xbdbb1da4, 0xbe2f63e0, 0xbd378e20, 0x3d688365, 0x3d648b0b, 0xbd95dd8a, 0x3ed46e3b, 0xbe08eab5,
+ 0xbd408fdb, 0xbe0a60fc, 0x3e95746c, 0x3d98a5a5, 0xbe915434, 0xbd88bdee, 0xbe84a198, 0x3e304b52,
+ 0x3e5aee92, 0xbd4a5260, 0x3f16e837, 0xbedc9360, 0xbe2f8d76, 0x3ed507b5, 0xbecd1bbb, 0xbe3495eb,
+ 0xbe67152e, 0x3e00d5bf, 0x3e0f6e34, 0x3dfd0282, 0xbca3ce6d, 0x3f0fc5e5, 0x3eca46c2, 0x3e509c73,
+ 0xbdb91813, 0xbe86124d, 0x3d4707f5, 0x3e95d12b, 0xbce76e8a, 0x3e7d90b9, 0xbe321378, 0xbe8d245b,
+ 0xbc0f8de9, 0x3de4b818, 0x3d11397f, 0x3e41ba15, 0x3e074a07, 0x3e4dddab, 0xbe97ea82, 0x3eb2802a,
+ 0x3e307b6a, 0x3e1d7a5a, 0x3ecdb5eb, 0xbdbd3ce1, 0x3da74a9c, 0x3f0e09e7, 0xbd029572, 0x3d23a356,
+ 0xbdc2f3dc, 0x3c496342, 0x3e535f03, 0x3dbfcba4, 0xbdef48e2, 0x3eb8dfa9, 0x3e773e32, 0x3e9a2192,
+ 0xbe846e1e, 0x3d08ef0c, 0xbddba0f3, 0x3d5afff9, 0xbefa22c6, 0x3e3842fc, 0xbe9d1b49, 0xbe193b71,
+ 0x3dcffbd6, 0xbeaccc8f, 0xbdf2c6fd, 0x3e279554, 0xbe302075, 0x3e357e42, 0xbe15ed85, 0xbb2eb9f6,
+ 0xbe9913df, 0x3d07bb19, 0x3e3c8098, 0xbe738ad5, 0xbdab60e2, 0x3ed78959, 0xbde3d06d, 0xbdaf2a73,
+ 0x3e0eb589, 0x3d5ba4a8, 0x3ec11eb0, 0x3ea399fd, 0xbd9f89bd, 0x3eae53ca, 0xbe7aa768, 0xbdb93dff,
+ 0x3ec65853, 0xbd4904b0, 0xbde16faa, 0x3eb5a8f5, 0xbe5dfb49, 0xbf03c9e7, 0x3dfa8d02, 0x3e4c34a5,
+ 0x3dddf9cc, 0x3e3907fc, 0x3e99a774, 0x3c5c8544, 0x3d077d46, 0xbdf529bc, 0xbdd910b1, 0xbb09c4c8,
+ 0xbca23caa, 0x3e2163b3, 0x3e504e8f, 0x3e9466db, 0xbec328cb, 0x3c75ec40, 0xbccdca86, 0xbe042211,
+ 0xbe970064, 0x3e0aa973, 0x3e6f7f1c, 0xbe0d1138, 0xbeb348f4, 0x3de05cb8, 0xbc614fca, 0xbe0e3c58,
+ 0x3de0a434, 0xbd008c9f, 0xbd0a25dd, 0xbe6e7e67, 0xbf0f6536, 0xbece1a89, 0xbe1f98a8, 0xbe477308,
+ 0xbd8f355b, 0xbec40d7e, 0xbd6a9a55, 0x3c9cd3ab, 0x3d7df2ac, 0x3e92bae6, 0xbd67a7b7, 0xbded8568,
+ 0x3d871479, 0xbe039954, 0x3f05f4be, 0xbecc7c30, 0xbee352bd, 0x3e13f980, 0x3d1b06d5, 0x3ed4277c,
+ 0x3cc550dd, 0x3ceec2cf, 0xbddf3d8f, 0xbe584812, 0x3d95e897, 0x3f058b13, 0x3e72b908, 0xbcd7b606,
+ 0xbd6b6727, 0xbecb7e3f, 0xbdd2fc85, 0xbcc4031f, 0xbe32bb84, 0x3d99912f, 0x3d281a1b, 0xbef35ebf,
+ 0xbe35cb37, 0xbe959265, 0xbe27c403, 0x3e15ba94, 0x3ec3d575, 0xbdee0be6, 0xbdf6886a, 0x3e9614cd,
+ 0x3ebc125e, 0xbedb24c8, 0x3e9a4a13, 0xbe5b66e9, 0xbe8ff640, 0x3e167e9c, 0xbd9a1811, 0x3d460c19,
+ 0xbded0b1b, 0xbd6d4fe9, 0x3e946510, 0x3d8a11ea, 0x3ebba1e0, 0x3e5ae374, 0x3eadf980, 0xbcc51fe6,
+ 0x3df6704a, 0x3d7a16fc, 0x3de6327e, 0x3ecf13dd, 0xbd9b129a, 0xbe316e7f, 0x3e94a9f5, 0xbc6c788c,
+ 0x3f0dbba7, 0xbe89093b, 0x3e3e4ad2, 0x3e5eaf35, 0x3f1dfdb1, 0x3e96dea1, 0xbeac8a49, 0x3eabc67f,
+ 0xbe28c06a, 0x3df3be8c, 0x3d722fe6, 0x3ed8cfe2, 0x3ec2f76a, 0xbe1707a8, 0xbb796d1a, 0x3be56eb9,
+ 0xbe903c25, 0x3d2eeab6, 0xbecb4a8a, 0xbecfcafb, 0xbe742909, 0xbe820227, 0xbe1246b5, 0xbeb8924a,
+ 0xbe2b0d1e, 0x3e89dd11, 0x3dc73333, 0x3e003c4f, 0xbcd208b4, 0xbe857eb6, 0x3e388ec9, 0x3cd73317,
+ 0xbf04fcf5, 0x3ddda3ec, 0xbe120cc8, 0xbea8f40b, 0xbdc729e5, 0xbd5c8f9e, 0x3de1941c, 0x3eb23d17,
+ 0xbe47e932, 0x3e9341bb, 0xbeac1845, 0xbead3701, 0x3e906327, 0xbedeeb70, 0xbefa5354, 0x3cecb0f6,
+ 0x3e050d95, 0x3d4fe924, 0xbe54aec8, 0xbf0d04da, 0xbd3f2ca8, 0xbf075321, 0xbdc2c3e8, 0x3d214e91,
+ 0x3e914dee, 0x3cea8e9f, 0xbe173d13, 0xbe11add8, 0xbe8306dd, 0xbe0fb07d, 0x3e2720b5, 0x3ecc94ba,
+ 0xbf6095a3, 0x3e8df4c9, 0xbe6e83c1, 0xbf2e6d5e, 0x3ea4d8a1, 0xbeb40267, 0xbe468f35, 0x3e10a9a3,
+ 0x3ebef274, 0x3eada593, 0x3d41c816, 0x3f671edb, 0x3e235309, 0xbd6ccd34, 0xbea11fec, 0x3c46c8c2,
+ 0xbe7d6f59, 0xbe2ecf86, 0xbc8c0f5f, 0x3d84cf10, 0xbdef4387, 0x3caa419d, 0xbec60a3d, 0xbeb8a137,
+ 0x3d670625, 0xbdf51d36, 0xbebad124, 0xbdcfa44a, 0x3e7200a2, 0xbe948008, 0xbe520835, 0x3f041521,
+ 0x3efc8a13, 0xbeae31cb, 0xbd220768, 0x3ea735a3, 0x3ec1320c, 0xbe440f77, 0x3eca53ba, 0xbe7633f6,
+ 0xbd4c7d88, 0x3e09ade7, 0xbea8272a, 0x3e7d6e83, 0xbe8ffe60, 0xbd98b1c9, 0xbe3c24ba, 0x3ce2a4db,
+ 0xbe707d6a, 0x3cda296b, 0x3e61832a, 0x3e0044cc, 0x3dec10b1, 0x3e4d476d, 0xbe605b96, 0xbe039a82,
+ 0x3d3f8bda, 0xbe2836f2, 0xbeffb901, 0xbf25ba38, 0xbd522199, 0x3dfd115d, 0xbe98d02c, 0xbc9687df,
+ 0xbe39c008, 0xbdde98fd, 0xbe84c06c, 0x3e0fc82b, 0x3e47f53f, 0xbc7e396b, 0x3ea64436, 0xbe809a11,
+ 0xbc74d104, 0x3e0e10be, 0xbee46c2e, 0x3dbbd14e, 0xbea6eb07, 0xbe6af6e6, 0xbd994674, 0xbd8c29c1,
+ 0x3dae7ac5, 0xbeb4d77c, 0x3d970866, 0xbe71f821, 0x3eac3337, 0xbdd382a6, 0x3e909654, 0x3e04bc2e,
+ 0xbd3e8ce9, 0xbecb3895, 0xbc795a00, 0xbe971ead, 0xbe38ddbe, 0x3df96ee0, 0xbe0ea678, 0xbe917f8f,
+ 0xbde83e92, 0xbe183303, 0xbe6d5dd4, 0x3e180187, 0x3e441b8d, 0x3de083af, 0x3e76f6a3, 0xbed393ec,
+ 0x3e178712, 0xba3c589e, 0xbd480157, 0x3dc9fffe, 0xbd9302ce, 0xbe4dedf2, 0xbd9d3b65, 0xbc2de49d,
+ 0xbf1a3f95, 0xbe3a7b11, 0x3e7cab99, 0x3d6fa2f5, 0x3da09806, 0xbdf27bc9, 0x3e807e20, 0x3e7fa2eb,
+ 0x3d9b2f85, 0xbe426509, 0x3e023434, 0x3b595636, 0x3d935f79, 0x3d2b6184, 0xbd060116, 0x3d44f802,
+ 0x3cf49fd8, 0xbe4606fc, 0x3d73e0a8, 0xbe187a40, 0x3e9c8816, 0x3d99375e, 0x3eaacdf0, 0xbdd04663,
+ 0xbcb4c427, 0xb9a16bec, 0xbea7bd52, 0xbdf9caf9, 0x3e81a62e, 0xbe3c1da8, 0x3e85f5c0, 0xbe00e983,
+ 0xbdb18def, 0xbe442edc, 0xbd6070cd, 0x3e4157ee, 0x3e1c02cd, 0xbdda6eb4, 0x3c181805, 0x3db53554,
+ 0x3dbf79bd, 0x3db05f54, 0x3dd9881a, 0xbe2414b8, 0x3e308188, 0x3e9e44ac, 0xbe1c87b4, 0x3de0d30b,
+ 0xbe130a48, 0x3db7de5a, 0xbd7b9a2e, 0xbca57e22, 0x3dce0424, 0xbbbf5f0e, 0x3ea15dd7, 0xbe3a662a,
+ 0xbcc9c192, 0x3ea71197, 0xbe8fcff2, 0x3e0732bd, 0x3ea86eb4, 0xbe579994, 0xbd4070cd, 0x3e641071,
+ 0xbe25639f, 0xbce72b66, 0xbe4be02f, 0x3d0e1650, 0x3ebf3b04, 0xbd6745fb, 0xbe34cc37, 0x3cc8663b,
+ 0x3d8d18b5, 0xbe74d98d, 0x3e3e6496, 0x3da3f7db, 0x3e3176a7, 0x3d830588, 0x3e8cedcf, 0x3e8dc6f0,
+ 0x3e6a2858, 0x3ea04ec4, 0xbd801754, 0x3d9ec80c, 0xbe364c79, 0xbc08a801, 0x3df30ba4, 0xbe6aaf37,
+ 0xbdcb59e9, 0xbcc29145, 0xbe86a12e, 0x3da47452, 0x3f055245, 0xbe9a3968, 0x3e5a688a, 0x3df2b1bb,
+ 0xbf26cf90, 0xbd5c1857, 0x3e9d8d08, 0x3dd802a5, 0xbd95b0ee, 0xbe385377, 0x3eca78eb, 0xbd4bd44c,
+ 0xbd6c62ed, 0xbcb6c1ff, 0x3cc08511, 0x3f05f18d, 0x3e1e71c4, 0xbecc62e6, 0xbf12ecaf, 0x3e2d07de,
+ 0x3ee41c32, 0x3c0815e4, 0x3f266d7a, 0x3ddfcc90, 0x3db6254b, 0x3d482525, 0xbc189198, 0xbe05e85f,
+ 0xbd00b9e7, 0xbde17b0a, 0xbdf99608, 0xbe46560b, 0x3e189e33, 0xbe81931c, 0x3d49c2ab, 0x3a97ed46,
+ 0xbec3936f, 0x3ec67154, 0xbd6d3cb6, 0xbd6008e1, 0xbd608232, 0xbe6ed739, 0x3eba440a, 0x3e69208e,
+ 0x3dca6cdc, 0x3dbaf14f, 0xbc83e69e, 0xbd140503, 0xbeaedd88, 0xbe972a6f, 0xbea5f61b, 0xbd56aed2,
+ 0x3d9eec08, 0xbf1d52c6, 0x3c04af0b, 0x3e702e6b, 0x3e963511, 0x3eedbdf0, 0xbd1e4ff0, 0xbd9baff7,
+ 0xbc3c08fd, 0x3ee546b6, 0xbe0ecb4f, 0xbe923bc3, 0x3e014359, 0xbe6d9234, 0x3e0b3d74, 0x3e6ffcb5,
+ 0x3f14ff1d, 0x3e3c2ceb, 0xbe9390be, 0xbeb4aac2, 0x3ced85c7, 0xbeef3e94, 0x3ea316c3, 0x3f3cfbaf,
+ 0x3ea79452, 0xbc5e233d, 0xbdd08a0b, 0xbeac3f33, 0xbe487b38, 0x3eefc218, 0x3eb4a7c3, 0x3eccf89c,
+ 0xbf0f2845, 0x3dbfa96c, 0xbe9091bb, 0xbf0d3e8b, 0xbd1e8306, 0x3e2de417, 0xbe760820, 0x3dc74824,
+ 0xbcd222b3, 0xbe4b484c, 0xbad34777, 0x3f2e7bf0, 0xbe507616, 0xbc9b74d3, 0xbd53234d, 0xbd4f626d,
+ 0x3d538eb8, 0xbd5503be, 0xbe5f68bc, 0xbea4f77c, 0xbf06e2ab, 0x3d8c3953, 0xbec4d5d5, 0xbe2cebb1,
+ 0xbddc2b00, 0xbd4c2f84, 0x3eb8d349, 0x3e64e1fe, 0x3dee698f, 0xbdd8a758, 0x3e85a657, 0xbcd4b806,
+ 0xbe3265f8, 0x3e537a1f, 0x3e61a757, 0xbd714810, 0xbf177c18, 0xbc9aa805, 0x3dd8cef0, 0x3dd6a8dd,
+ 0xbe6d9e7b, 0xbe5ac570, 0x3e75f33c, 0xbe2fd692, 0xbdf20058, 0x3e4f0803, 0xbe2c7b44, 0xbe55a5b9,
+ 0x3dcceba4, 0xbd26b768, 0xbdbeafd3, 0x3ed891b6, 0xbeba2a13, 0xbe56c391, 0xbe788da5, 0xbcafef22,
+ 0xbd51af37, 0x3c892372, 0x3e4deabc, 0x3ed322ac, 0xbd4a5e07, 0x3bd45aa0, 0x3db0173f, 0x3e8febd9,
+ 0x3d39c55f, 0x3ea52134, 0x3ed78522, 0x3e1283f9, 0xbe1d4e57, 0x3e171ab8, 0xbdc5ddb4, 0x3e56fb96,
+ 0x3e0a1dec, 0x3e764dd0, 0x3e833797, 0x3e17660e, 0xbe9d98cf, 0x3e3fbd61, 0x3e9b7ab6, 0xbb721cab,
+ 0x3eaa5deb, 0xbe192227, 0x3e6c5b65, 0x3ec0f06f, 0xbd3db36d, 0x3eb51221, 0x3dde5e1b, 0x3e1b957f,
+ 0x3da86214, 0x3d4721df, 0x3e8d9e75, 0x3e9ae2b0, 0x3ed4d9f1, 0x3dfb324c, 0xbdf0507a, 0x3e38f82f,
+ 0x3eae70f8, 0xbdb57c4f, 0x3e08548a, 0x3e8c8173, 0xbded809e, 0x3eaa65a3, 0xbe9f7d0c, 0x3ea46274,
+ 0xbe30ccd1, 0x3d98f3be, 0x3ee54bdf, 0xbe60008e, 0xbdfe43f9, 0x3bedde7c, 0x3eb86ac4, 0x3b187690,
+ 0xbee99173, 0x3ec09e13, 0xbe343078, 0x3ed3316e, 0xbe22bc4c, 0x3ef44a24, 0x3ef2863e, 0x3e8cbf3b,
+ 0xbd1abfe4, 0x3e405906, 0x3ddfdbcd, 0x3dda7585, 0x3e999449, 0xbca1dcf8, 0xbda57f0c, 0x3ca79ef6,
+ 0x3d907743, 0x3db5b40f, 0x3e01dc09, 0x3d1c7828, 0xbf05d47c, 0x3eab824d, 0xbe9d3161, 0x3ee65462,
+ 0x3ec233e3, 0x3e748cce, 0x3e0585d2, 0xbe116618, 0xbd6ff151, 0xbd2ff38c, 0xbe0ad4b5, 0x3e957020,
+ 0x3e542939, 0x3d317621, 0xbf2048ce, 0xbe099a13, 0xbeae97ef, 0x3e921989, 0x3eb20b71, 0x3e4d48fe,
+ 0xbd3eb3b1, 0x3deeb8b8, 0x3e11c027, 0xbda1c266, 0x3d111ed9, 0x3ea70256, 0xbb464deb, 0x3e96d24b,
+ 0xbeac11f2, 0x3e74cc33, 0xbedaaeb4, 0xbe065222, 0xbeba1cfa, 0xbd83911a, 0xbea12a9d, 0x3ded7392,
+ 0xbd41d270, 0xbe1537db, 0x3e86be24, 0xbd8985f5, 0x3d15b949, 0xbe51db6a, 0xbb9a9439, 0xbe889d0e,
+ 0x3f2e386a, 0x3d195016, 0xbdfe1f31, 0xbdf59824, 0xbe6a25a9, 0xbe6c3b3d, 0xbe30cb46, 0x3cffb54e,
+ 0xbe5f4d83, 0x3e03bb4c, 0x3deb7925, 0xbdee6363, 0xbcff47d2, 0x3e60409e, 0xbe4a7b30, 0x3e89a4b1,
+ 0xbe995d83, 0x3eb17188, 0x3e376133, 0xbed8fbcb, 0xbe9386e7, 0xbebaf15e, 0xbdc812f8, 0x3dab7e16,
+ 0xbe994f4e, 0xbeabd629, 0x3eaeecd5, 0x3ea6e64b, 0x3e0cb509, 0xbd44e919, 0x3ae20616, 0xbe8360a0,
+ 0x3f021e01, 0x3e24221e, 0xbe878428, 0xbedc4f92, 0x3d8d9910, 0xbead8321, 0xbea20f29, 0x3dc6a6ef,
+ 0xbdf7afaf, 0x3d849b1c, 0xbe8d9dcd, 0xbefa8862, 0xbe3dd97c, 0x3db806d5, 0xbe93abe9, 0xbe90e688,
+ 0xbe41d2ed, 0x3e354f2c, 0xbefc3442, 0xbe0adff5, 0xbe418eca, 0xbe5c0e55, 0x3df2f985, 0xbe1393c7,
+ 0xbe166c1a, 0xbea7ad88, 0x3dc154a8, 0x3d6b8fdd, 0xbee51204, 0xbdfd5c25, 0xbe846700, 0x3d944770,
+ 0xbdc1d2ca, 0x3e4f2008, 0x3d028e6a, 0xbe430b0b, 0x3ea8bdab, 0x3db942ae, 0x3dddff60, 0xb9a6bf25,
+ 0x3db807c3, 0xbe4f1f58, 0x3d18b80f, 0x3e0b9872, 0xbd95a3a0, 0xbcb16049, 0xbea28d25, 0xbedcac75,
+ 0x3ec78289, 0xbedb8500, 0x3d1f8897, 0x398a168f, 0x3e9bb2aa, 0xbe71bb01, 0xbe31549a, 0xbe848f07,
+ 0xbe87f07d, 0xbf025def, 0x3e2c4490, 0xbdbea9d8, 0xbe41a806, 0x3ddeaca0, 0xbae1fb5c, 0xbdf26dea,
+ 0xbdf0943a, 0x3ea66e1f, 0x3ec6498d, 0x3e99e8cc, 0x3da1ccc7, 0xbc20f600, 0x3ec16a30, 0xbd0955ec,
+ 0x3e1d7b39, 0xbc587cdc, 0x3e06d30a, 0x3d311df1, 0xbe174877, 0xbeb4bf45, 0xbe8fffbc, 0xbebf84c3,
+ 0x3f1979ca, 0xbee9f1bb, 0x3d35ebda, 0x3df43bae, 0x3e6599bf, 0x3e34ad5d, 0x3bcce167, 0x3d2a0c48,
+ 0xbe862219, 0x3e874044, 0xbe358e52, 0xbf22f44e, 0xbeea3795, 0x3e980790, 0x3d037932, 0x3ca66d26,
+ 0xbdc08248, 0x3e293583, 0xbea0d8f6, 0xbef09972, 0x3e28a141, 0xbe5a63f2, 0x3e84f349, 0x3dfd799f,
+ 0x3eda705f, 0x3d8719fb, 0xbe2f1aa5, 0xbf19a8f8, 0xbe9a2d2c, 0xbe7aadf6, 0xbd9f2899, 0xbc733912,
+ 0xbd8c02df, 0xbe101e48, 0xbee57bee, 0xbe922aac, 0xbe678257, 0x3db96468, 0x3ec7b084, 0x3ddd3600,
+ 0xbdd17477, 0xbdd0603c, 0xbe318a93, 0x3e43eed9, 0x3e955980, 0xbe89d071, 0x3d852f27, 0xbe0bd171,
+ 0x3eabac0b, 0x3e65ea96, 0x3d34b1fa, 0xbe6a568d, 0xbd597652, 0xbea638c9, 0xbd29549c, 0x3dcd9750,
+ 0x3e66c804, 0x3e589289, 0xbd64592c, 0xbe49b8d7, 0xbec798b0, 0x3dc2756d, 0x3df5e9a8, 0x3e10b41f,
+ 0xbeb4cc4f, 0xbe60cd73, 0xbe4516cd, 0x3d64c861, 0xbd311c87, 0xbe8c2e76, 0x3e36e60e, 0xbe03b0cc,
+ 0xbea1fd48, 0xbee4e802, 0xbe39e106, 0x3e3efbfc, 0xbd893a93, 0xbdb2140f, 0x3ead79d6, 0x3dbe205f,
+ 0xbde1c3b5, 0x3e832e37, 0x3dae0de9, 0x3e60aba1, 0x3c9407ee, 0x3e3ef8e7, 0x3e77037b, 0x3e83cea1,
+ 0x3e26cf80, 0x3edbf583, 0x3e84aac3, 0xbd120e97, 0xbe10a64a, 0xbd64006f, 0x3e2d94c2, 0xbd9787d4,
+ 0x3eccdf7f, 0xbdfc2ca3, 0x3df44980, 0x3eb35944, 0x3ed5ccfb, 0x3e154364, 0x3e7bdc57, 0xbded3b2c,
+ 0x3f17d411, 0xbe14c90c, 0x3e89e148, 0xbce76c3b, 0x3cacd205, 0x3d7f732d, 0xbda1078d, 0x3e088578,
+ 0xbeb48791, 0xbd08a62e, 0x3ef552f7, 0xbd4c3bc9, 0xbbe0276a, 0x3d1c4bd5, 0x3e7e9c10, 0xbd7ea58d,
+ 0xbe4fe7be, 0xbd5ad277, 0xbcb9fc86, 0x3ec50fe0, 0x3c7e1f91, 0xbe79362c, 0xbf011780, 0xbe5f57fb,
+ 0x3ef85dc5, 0xbe89a2ab, 0x3ed15c5a, 0x3f069918, 0x3f26a2f1, 0x3e52b21d, 0x3e3b1930, 0xbe6b5444,
+ 0xbe00bd3a, 0xbe142fc9, 0x3eaa9cd5, 0xbf07b0eb, 0xbecc833d, 0x3e9a80c4, 0x3ef2d296, 0x3e108aac,
+ 0xbe74448e, 0x3db4d842, 0x3dd42d05, 0xbd2478fa, 0x3ec60fb2, 0x3f082f86, 0x3f10618b, 0x3d61513e,
+ 0x3e8f0820, 0xbd9de40e, 0xbf2dabf9, 0xbda76e60, 0x3deb69e5, 0x3d7d5cb5, 0xbefd452b, 0xbec693a6,
+ 0x3dbf216d, 0xbe15b041, 0xbec0820c, 0x3e8ff5db, 0x3d82a23d, 0x3eda0944, 0x3ebf31e1, 0xbdb6f252,
+ 0x3e8c2d1a, 0x3eaa4272, 0x3d218358, 0xbeae08da, 0x3d960d21, 0xbe519eb2, 0xbd058662, 0x3cae3c0c,
+ 0x3edbb577, 0xbe36e05e, 0xbe97d196, 0xbec7659b, 0x3e7d2744, 0xbe8372e6, 0x3e4ea918, 0xbd39d110,
+ 0x3c88dd20, 0xbe0cc83b, 0xbd9f09b2, 0xbee58c36, 0xbe72ddb8, 0x3e9a4350, 0xbd2c9afe, 0xbea65108,
+ 0xbeaf74a6, 0x3d7a95ab, 0xbe976171, 0xbeaedc5d, 0xbea59cb8, 0xbd731383, 0x3e93233b, 0x3e541b03,
+ 0xbdad4b95, 0xbc6221d0, 0x3e32453d, 0x3ec2a887, 0x3e4efbdf, 0xbf036717, 0xbeb09c3a, 0x3c1124c6,
+ 0x3eb01e91, 0xbe681a19, 0x3c4cf27d, 0x3e11a4f2, 0xbdc2be8d, 0xbc62d5cf, 0xbd9c0dc5, 0xbec738cd,
+ 0xbd2b8529, 0x3e011ee0, 0x3e0109bb, 0x3edbcbb3, 0xbd27dde4, 0x3e502026, 0xbe21b070, 0x3e2297a5,
+ 0x3f2f7ddc, 0xbcd452ef, 0x3e2bcc0e, 0x3e90f6cd, 0x3ec88ca5, 0x3d1af9fa, 0x3e13829e, 0x3e0906c0,
+ 0xbedb8828, 0xbdac645e, 0x3dfb0804, 0x3e10a129, 0x3d27489d, 0xbd7704bd, 0x3e800fac, 0xbe69ecb0,
+ 0xbdd3babd, 0x3cb6da2e, 0xbe955ea5, 0x3cdf1cf6, 0xbeaecaa9, 0xbe88b75e, 0xbe5c1f4b, 0xbec751cc,
+ 0xbe69190f, 0x3e7af787, 0xbe48bb8d, 0x3db16e5d, 0xbe736f00, 0xbe73af37, 0x3e8ac995, 0xbd8d5b6c,
+ 0x3e2106fc, 0x3d060367, 0x3c036ec1, 0xbdbe9e7f, 0xbe23197c, 0xbe30b822, 0x3ed3ad38, 0x3ed46f33,
+ 0xbe89b137, 0x3ebc5e0d, 0xbdece3ad, 0xbe71b0d8, 0x3e1084ba, 0xbed65a9a, 0xbe926dcd, 0xbe50cc8a,
+ 0x3e582d66, 0x3c67c193, 0xbe15f84d, 0xbf00a08a, 0xbed6ae6f, 0xbe70d434, 0x3d13201f, 0x3ed6d12d,
+ 0xbe298e64, 0x3d973f26, 0x3d1639b3, 0xbdebb15a, 0x3e2eebef, 0xbe2fe07b, 0x3ddba370, 0xbd655c19,
+ 0xbf361075, 0x3ea77b44, 0xbce24d88, 0xbee2c185, 0x3db4793b, 0x3d2d88cd, 0x3ed090dc, 0x3ec882ca,
+ 0x3d53eb9e, 0xbd882ae0, 0xbebcaed1, 0x3ec4d0d1, 0x3db4ca02, 0xbe5110f2, 0x3e744657, 0x3eaa73e2,
+ 0x3f0045dd, 0xbd80d554, 0x3e2ed8e1, 0x3e30b075, 0x3e880a4c, 0x3e2525da, 0xbdd58769, 0x3e7c2185,
+ 0x3e129fac, 0x3e44905f, 0x3f102d40, 0x3edf5bc0, 0x3ea0a3fa, 0x3db0ece9, 0x3eec88b9, 0x3db5ba00,
+ 0xbe097791, 0x3e5d3e94, 0xbe873b09, 0xbd983515, 0x3e88012c, 0x3c482aa7, 0xbe575353, 0x3e8b09a9,
+ 0xbe8c2487, 0xbe452e93, 0xbea9c7b0, 0xbe9359a7, 0x3e3e9da1, 0xbe8f497f, 0xbe2362a5, 0xbea3dc07,
+ 0x3e28138c, 0xbe3770c7, 0x3dc3980f, 0xbd9160a3, 0xbd787105, 0xbe539d0c, 0xbf108e25, 0xbe2bf624,
+ 0xbe35a11d, 0x3e669976, 0x3e96832a, 0x3ec10882, 0x3d75d3af, 0xbe97d3fb, 0xbd234a8b, 0x3e833f5d,
+ 0xbdf71413, 0x3e9f5dbc, 0x3e45b70f, 0xbe502d55, 0xbe764329, 0xbde49e69, 0xbd2b0cdb, 0xbd8a5048,
+ 0xbea92554, 0x3e1a0b73, 0xbe6f5221, 0x3ed31d3c, 0x3ea15679, 0x3ce97e8f, 0xbe712562, 0xbe2e1fba,
+ 0xbea41287, 0x3e0b96c1, 0x3e015362, 0xbe365bc0, 0xbef3cbe2, 0xbd9a9ff1, 0xbea1e448, 0xbe797dbd,
+ 0x3c7d6ee5, 0xbce34e18, 0x3db1d770, 0x3e4ece55, 0x3dde24e6, 0xbee0f3a1, 0x3e22a381, 0x3df26104,
+ 0x3cc4d093, 0xbddb32a1, 0x3e1b2612, 0xbd05b019, 0x3eab9cfa, 0x3dc98bef, 0xbe9a32cf, 0xbe0ebd4a,
+ 0xbe8a69fa, 0xbe46778f, 0xbda1ca03, 0xbe4fffcb, 0xbd6db267, 0x3e2a4058, 0x3ec006ff, 0xbd24fb2d,
+ 0x3d20b62b, 0xbdf6f55d, 0x3e8b8f57, 0xbc863328, 0xbe36345a, 0xbda437e1, 0xbe6f51fd, 0xbdb91aab,
+ 0x3c8da03b, 0x3addb88f, 0x3e869e31, 0x3e191e9c, 0xbe8e218f, 0x3e15e9dd, 0xbb987332, 0x3dab5b54,
+ 0x3dd9bfab, 0x3e969306, 0x3e969fa5, 0x3d5b18b3, 0xbbed4c46, 0x3e445ab0, 0x3e724067, 0xbe8f790d,
+ 0xbebfe0f8, 0x3bcb9c2e, 0x3eb95005, 0xbe91435a, 0xbeada60f, 0x3e45c3fc, 0x3da068d8, 0x3e84d816,
+ 0xbd035c84, 0xbd01940d, 0x3cfc7c07, 0x3e4abdc6, 0xbdd3a800, 0xbd8b955c, 0xbc072ea9, 0x3ea35d3e,
+ 0x3cb17692, 0xbe73fe67, 0x3dd56a09, 0xbe409ef2, 0xbeb17112, 0x3e42992c, 0x3eda1f88, 0x3d817020,
+ 0x3e1ed478, 0x3dedc4ee, 0xbd445556, 0x3c4474ee, 0x3d2f2ea3, 0x3eb8c881, 0xbd57102a, 0x3d1db3dd,
+ 0x3e6d7ab0, 0x3e5c324f, 0x3e41099e, 0xbd2f2f45, 0xbf2a86d2, 0x3e22eba5, 0xbd6e23be, 0x3ecf3f30,
+ 0x3e567f5d, 0xbede4209, 0xbed1d0ad, 0x3d0ed6c0, 0xbd5eacbc, 0x3e29b8ea, 0x3d92f00b, 0x3d358e7d,
+ 0x3d668e63, 0xbe26fcd9, 0x3e1285e9, 0xbd00b996, 0x3e98e395, 0x3ef3b059, 0x3f0ef96f, 0xbdebc353,
+ 0xbe567c67, 0x3e855641, 0xbbddd8b0, 0x3c8189fd, 0xbe5bad8e, 0xbdb9c3c7, 0xbbd5ae6f, 0x3e80f1fa,
+ 0x3e68ede8, 0xbe423a4e, 0x3eb2171e, 0xbe401cac, 0xbf249c34, 0xbb3ac83f, 0xbe8e1b5e, 0xbca1dd48,
+ 0xbe3da2f7, 0x3e7bcd4f, 0x3e3f3482, 0x3e5f258a, 0x3b3193e9, 0x3ecc0ad0, 0xbd442e43, 0xbe1c44c2,
+ 0x3eae835e, 0x3c23a690, 0x3e23979a, 0x3e985aa6, 0x3e610033, 0x3e0246ca, 0x3e6eb0e5, 0x3e837f01,
+ 0x3dc79aaf, 0xbe8eda36, 0xbe762063, 0x3f05c686, 0x3f01c9ab, 0x3e8c227f, 0xbeafaf8b, 0x3ee1eb61,
+ 0x3d0faf32, 0x3d12fa25, 0x3dd2ed68, 0xbe654c34, 0xbe6494fb, 0x3ed6daf1, 0x3e5ebda3, 0xbe90bff1,
+ 0xbde29de5, 0xbd55da2b, 0x3d7d4ad5, 0xbc71910c, 0xbd88455b, 0x3e832ed0, 0xbe15e92d, 0xbec16dbc,
+ 0xbdc11918, 0x3e15333b, 0xbeff1fe7, 0x3e178822, 0x3eaaedf0, 0xbe549716, 0xbee5fa2e, 0xbe29038e,
+ 0x3e961cd5, 0x3d7274a3, 0xbeb75f92, 0xbdcb3ffc, 0xbf0530f6, 0x3e4be52c, 0x3d8e86ce, 0x3dbfbc71,
+ 0x3e95a007, 0x3ea3e927, 0x3d65601a, 0x3e090f92, 0x3ecc9075, 0xbe47424b, 0xbe887af5, 0xbe1a18bf,
+ 0xbc1b1693, 0xbe2a09fc, 0xbe4628c1, 0xbeb13a35, 0x3c0ac074, 0xbd7d025e, 0xbed19e62, 0xbe9c9d93,
+ 0x3d808ca5, 0xbe42bc0d, 0x3ac983a4, 0x3e54504d, 0x3de86c63, 0x3d791598, 0xbe673be6, 0xbabc7f68,
+ 0xbe9b09e4, 0x3e4cec6a, 0xbdd1f607, 0xbe3e42a3, 0x3d0083c8, 0xbec0d973, 0x3e3f4cfe, 0x3dc8f3b0,
+ 0x3d201729, 0xbdc9f1bf, 0x3e19afd7, 0x3ed4b583, 0x3ec5ae56, 0xbee222f5, 0x3d42edc7, 0x3e99b2d8,
+ 0xbca4879b, 0x3e541996, 0x3e72e17a, 0x3d7ec0a4, 0x3e7cd9a7, 0xbec5bd1d, 0x3dfc5019, 0x3e03fbc1,
+ 0x3ebee835, 0x3d566891, 0xbd9cb28f, 0xbe9b8176, 0x3ed6ec08, 0x3d8620b9, 0x3eac8513, 0x3e82f375,
+ 0xbe0cfa08, 0x3cb7bd99, 0x3beda45c, 0xbe5ade33, 0xbe551421, 0x3ed68731, 0xbe02e33e, 0x3eeee0ba,
+ 0x3e873def, 0x3d7a6efa, 0xbe841167, 0x3ce9ddd4, 0x3da55ede, 0xbddaf39e, 0xbe514cb2, 0xbcdadc0d,
+ 0xbce73225, 0x3e294ec2, 0xbda16e84, 0x3ea3b318, 0x3e9ca86f, 0xbe9c6eb9, 0x3d3b97ee, 0xbc91987f,
+ 0xbd469a3c, 0x3e60b162, 0xbe7b56a4, 0xbe8b4794, 0x3d9ca6bc, 0x3e46b523, 0xbe1eb70e, 0x3dfcb8f2,
+ 0xbd61c302, 0xbe12c37c, 0xbe50c590, 0xba2f3448, 0x3dc13815, 0xbe18602c, 0xbe0d3026, 0xbeb8193f,
+ 0x3d41b115, 0xbd204984, 0xbf370511, 0x3e4a7e3c, 0x3eaba997, 0xbe3a25b9, 0xbd9d2390, 0xbe54047b,
+ 0xbd96b090, 0x3e56e80d, 0xbe670ec2, 0xbabe8352, 0x3e598b8a, 0xbe3622c3, 0x3e322a88, 0x3e74d27e,
+ 0xbe1f87b0, 0xbd9c0823, 0xbddfa6e9, 0x3d46c1f4, 0xbde437a8, 0xbe6f6e86, 0xbeaed1c0, 0x3e70eaff,
+ 0x3e950372, 0xbe1662ac, 0x3d0235e0, 0xbc130cbf, 0xbca0bfaa, 0xbe0546ac, 0xbd91cea2, 0xbf1f0b8c,
+ 0xbda436b9, 0xbd7b8d99, 0xbe775057, 0x3e0310db, 0x3f220ca7, 0xbe4cf5b6, 0x3ead3d6c, 0xbe4a33e0,
+ 0xbd55bd5c, 0x3de6136f, 0x3e70aa1e, 0xbd34e70d, 0xbe42e04a, 0xbe0e8d2a, 0x3ef2530a, 0xbd03a172,
+ 0x3ed8fa53, 0x3e946273, 0xbe6b9007, 0x3c5c8be2, 0xbd6c0ca8, 0xbe0f92e9, 0xbf1df447, 0x3e9b912e,
+ 0x3da6f130, 0xbea13cc1, 0xbdccabdf, 0x3ea371af, 0xbd5acaa1, 0x3e5c8d36, 0x3d71a5ec, 0xbe280822,
+ 0xbebd29f3, 0xbea59f3c, 0xbe991f1e, 0x3ccf093c, 0xbe8e9822, 0x3c0fa1ec, 0x3f1be6c3, 0xbcd317c1,
+ 0x3ea51341, 0x3d441ebc, 0xbe365542, 0xbe58124e, 0x3c9f21d9, 0x3e134884, 0x3e19c6dc, 0x3d87eaaf,
+ 0x3e280b96, 0x3c806551, 0xbef3ffa5, 0xbe9af619, 0xbed42019, 0xbe4598ea, 0xbeffa103, 0x3d53772b,
+ 0xbe0fd883, 0x3dca0f08, 0xbe92dae2, 0x3e9b832e, 0x3df39ff8, 0x3e5dc893, 0x3e3f15b5, 0x3c0f3bd1,
+ 0x3e99394b, 0x3e220079, 0x3d2a75f2, 0xbd63616a, 0xbd946b70, 0xbe8f26a4, 0x3f2a3745, 0x3da537e2,
+ 0x3eddd29f, 0xbe32497b, 0xbed6a59a, 0xbe351d98, 0xbe80577f, 0xbe86dfce, 0x3d83e5d0, 0x3d3c6164,
+ 0x3d0a39c6, 0x3c4c5137, 0x3db8d814, 0xbee58e8d, 0x3df8e833, 0x3dc7d94d, 0x3ea86293, 0xba2e27bc,
+ 0xbe421f24, 0x3e2d4cf6, 0x3e50d898, 0xbea833f8, 0xbeb9bdca, 0xbef49c64, 0x3e99821f, 0x3e6339bf,
+ 0x3edc3590, 0xbec9169e, 0x3f16ed43, 0x3f2e877a, 0xbe92f5ff, 0xbe31b3a9, 0xbd89e981, 0xbbbb426c,
+ 0x3e5c6cd3, 0xbec71acc, 0xbea74496, 0xbe3e7d30, 0xbe86f41c, 0xbead5e19, 0xbbf25b82, 0xbd2580ec,
+ 0xbe44ad8e, 0xbe5a5254, 0xbda9b012, 0x3c3c6af8, 0xbe399a19, 0xbd98aa20, 0xbe3c0137, 0xbe828f31,
+ 0x3ea7dc82, 0xbe7aa973, 0xbe0f037a, 0x3b8505ad, 0x3ee4627d, 0xbde97ba3, 0xbde05b97, 0xbe1a6be5,
+ 0x3f16ca7c, 0x3e8f7d1f, 0x3f578aca, 0xbe19ef1a, 0xbea9a21d, 0xbd86f7dd, 0xbd16e7b3, 0x3e27833c,
+ 0xbe83f9ec, 0x3e346cc0, 0x3e2a14be, 0xbebe2de5, 0x3e73a0e7, 0x3dc2c0b1, 0x3e1a5852, 0xbf117ce1,
+ 0x3e599b84, 0xbe842dc0, 0x3e42f4b9, 0x3e83a209, 0x3edf6cd2, 0x3e869118, 0x3b50ab04, 0x3dc65c52,
+ 0x3e045a00, 0xbe208002, 0x3e8152c4, 0x3c9e133b, 0x3dc38d18, 0xbde19329, 0x3e6906f3, 0x3e2921d9,
+ 0xbea94335, 0x3d36cfc5, 0x3e711b18, 0xbf074e4c, 0xbe7dcba1, 0x3e3f5065, 0xbe94465d, 0xbcdffd0b,
+ 0xbe3d1526, 0x3ce53bb0, 0x3e1454e6, 0x3e1c0344, 0x3e9eafd6, 0xbe835c88, 0xbe0d9a71, 0xbdd2aef5,
+ 0xbe0eebaf, 0x3ea1c7c6, 0xbe5527d5, 0x3e546419, 0xbe77b2d0, 0x3ea88c9e, 0xbf3cc9cd, 0x3c572575,
+ 0x3e6d2454, 0x3ea86e56, 0xbdded1f3, 0x3d3a8458, 0xbee32f77, 0xbc9d6aa4, 0x3edf1bf3, 0x3cb09a05,
+ 0xbefd9f6f, 0x3f48d908, 0xbf117195, 0xbe5e9953, 0x3cbd9fd5, 0xbd71e46b, 0xbe13aab0, 0x3e4b5496,
+ 0xbf18e95b, 0xbe3fc264, 0xbdbf1604, 0x3dce1086, 0x3dab774d, 0xbe9eb37c, 0x3e8db260, 0x3e866ead,
+ 0x3d5a09ce, 0x3cd907c2, 0xbe0d913b, 0xbdab2879, 0x3e0af383, 0xbe4ac9bc, 0x3d99a1f3, 0xbdcf828d,
+ 0xbe3f2777, 0x3eb46677, 0x3ea990d5, 0xbe55a8d7, 0xbeb1857f, 0xbdf06e42, 0x3a90aaad, 0xbdd990bf,
+ 0x3ea8f08f, 0x3eb2c0df, 0xbeb5128b, 0xbdc4fd4a, 0x3ea4be90, 0xbdadcb94, 0xbe07f2b9, 0xbdc6054e,
+ 0x3ebee7ae, 0x3d4e9cbd, 0xbd69d2c5, 0x3e35331d, 0x3df99775, 0xbf14a1ff, 0x3e6573f0, 0x3f09016d,
+ 0x3e686f79, 0x3d8badfd, 0x3ea57375, 0xbe69d7a9, 0xbed99001, 0x3e0af0c2, 0x3c68ea72, 0x3e75d365,
+ 0xbef8f8c1, 0x3e9a1d3f, 0x3e6aa3ab, 0xbeca5304, 0xbe8180be, 0x3e6df433, 0x3e23aad7, 0xbd91daa9,
+ 0xbd0aeb18, 0x3b7cb8dc, 0xbeb09c9b, 0x3e585cc5, 0x3e66a25d, 0xbe1a15e0, 0x3f096e29, 0x3e84bf81,
+ 0x3e103581, 0xbe06a333, 0xbc0f0790, 0x3e03107e, 0xbd34d542, 0xbe22bb81, 0x3dd8d872, 0x3eba9efb,
+ 0xbd9224ac, 0xbe757d95, 0x3e9ed0cc, 0x3cd4b25e, 0xbd8d88b2, 0x3d826800, 0xbd81b275, 0x3e731789,
+ 0x38b47d78, 0xbe1dfd61, 0x3e3f07ca, 0x3df56c1b, 0x3e9aa281, 0x3e24f4df, 0xbea4732c, 0xbed936b7,
+ 0x3e6b8072, 0xbf0a2dd6, 0x3e03819a, 0xbec6bdfd, 0xbd7c2667, 0x3da49d6d, 0x3e90cc08, 0x3e32fce1,
+ 0xbdfcb60b, 0x3e1b872a, 0x3ed68f70, 0x3e3cb687, 0x3e9600a6, 0x3c0d5f91, 0x3ecf1b9f, 0x3e470cb9,
+ 0xbe65b33c, 0xbe4d7ce4, 0x3e75d172, 0xbca1dc60, 0x3e8a9dbe, 0x3eadcb1c, 0x3f191641, 0xbddc1d57,
+ 0x3e8ac3f1, 0x3dd46a1e, 0x3e63f2e8, 0xbcdac3ae, 0x3d689f1d, 0x3c3f8f02, 0xbda79610, 0x3e0a434c,
+ 0xbd957760, 0xbb68a7e9, 0xbe984937, 0xbef76d6c, 0x3e28a30e, 0x3d88aa6b, 0x3e991109, 0xbd20f8e0,
+ 0x3db41e78, 0x3d924452, 0x3e43fc74, 0x3ea90e0a, 0x3dff8b15, 0x3e8fc480, 0x3dd3a6a3, 0xbdb5431e,
+ 0xbe223d3e, 0x3e23892f, 0xbd43e800, 0x3e500cac, 0x3e5fec50, 0xbe3be506, 0xbdcbc06b, 0x3e1458bc,
+ 0x3d394185, 0x3daab7c3, 0x3cc81ed1, 0x3e900cc6, 0x3e36955b, 0xbd053560, 0xbe2324a6, 0xbcece7c7,
+ 0x3d32e17e, 0x3e4e6f65, 0xbeccb0f3, 0xbdf0e960, 0x3ee4b1bd, 0x3d946e65, 0xbe9c87d1, 0xbeb2a15a,
+ 0xbea9c737, 0x3eab0586, 0x3e0b447e, 0xbea5b8a6, 0xbed5cf5b, 0xbcad05d4, 0xbec2eda8, 0xbef7b878,
+ 0xbee4b532, 0xbde26936, 0xbecd4fb0, 0xbe351396, 0xbe6fadea, 0xbe3bdc15, 0xbe72dfab, 0x3f112ea3,
+ 0xbda9e4cd, 0xbe6bc70c, 0xbe89e4d9, 0xbebdbe9d, 0xbdbaa45a, 0xbd71c6dc, 0xbebcebe8, 0xbeb680b1,
+ 0x3d14d44c, 0x3ea97ef2, 0xbce2e0c7, 0x3f12d597, 0x3ede7030, 0xbeac4a37, 0xbe241a61, 0xbe2509e1,
+ 0xbe31e079, 0x3e340853, 0xbdc99066, 0x3e3abe2c, 0xbd3a82e5, 0x3d9da071, 0xbd77dd80, 0xbcdb59c2,
+ 0xbef8bb77, 0x3a9d6925, 0xbf17b538, 0xbead46c7, 0xbe8ab412, 0xb9e35558, 0xbd0752af, 0xbdd3646a,
+ 0x3eb6939c, 0x3cad5e9c, 0xbcbc6395, 0xbd4dba58, 0xbea758c1, 0x3e4c4535, 0xbee1fd0a, 0xbdeb2619,
+ 0x3f1a155f, 0x3edef192, 0x3d08df8a, 0x3e76065b, 0x3e60e2ef, 0x3e8a59ad, 0xbe1abbc4, 0xbd6747f3,
+ 0xbeb7ea09, 0x3e9fea9c, 0xbe86b6a3, 0xbf1f706c, 0xbe02bb02, 0x3e983cd4, 0x3e77dd07, 0xbe195a44,
+ 0x3c7c32d6, 0xbea79d1d, 0xbc508513, 0x3b959ea9, 0xbe4fb093, 0xbd384d34, 0xbe3688c1, 0xbe70abb4,
+ 0x3e0aaa3a, 0xb8635980, 0x3e30bde5, 0xbd702d43, 0xbe331bca, 0xbd441592, 0xbd3ea62a, 0x3d895613,
+ 0x3e1ab47b, 0xbe9e5059, 0x3e560c55, 0x3cc64c91, 0x3ec023e1, 0x3e1ed4f8, 0x3ef02d25, 0x3e1f36ff,
+ 0xbe39328e, 0x3e89f644, 0x3d788553, 0xbe5ff355, 0xbe5f0c7d, 0x3e9378c7, 0x3d9e67d0, 0x3e045e37,
+ 0xbe84894e, 0xba84b303, 0x3e290822, 0x3dbb1a93, 0xbdf147a5, 0x3d06b61c, 0x3de80a83, 0xbee735d5,
+ 0x3e85dc46, 0xbea3d225, 0x3de61e1e, 0x3e16d78d, 0xbc87de45, 0x3e385150, 0x3eeca5b6, 0x3e5999e8,
+ 0xbd3f3144, 0xbeaa63e2, 0x3d80ed82, 0xbe1e0315, 0xbd0d2650, 0x3ed31493, 0xbcf20aa6, 0x3e0c9c08,
+ 0xbe6fea41, 0x3d83f3c0, 0xbe9be200, 0xbe1b7e4f, 0x3e73fd08, 0xbf0f55a9, 0xbe668a28, 0xbe06bbe2,
+ 0xbd9d01c2, 0xba3c476c, 0xbe752caa, 0xbeb3ea97, 0x3e672eed, 0x3e9f86f2, 0xbebec8db, 0x3e01ac6b,
+ 0x3d6b186c, 0xbdc59661, 0xbe8cbb26, 0xbe73c205, 0xbe1eebb4, 0xbc1ec6a4, 0x3eed305b, 0xbedeffc6,
+ 0x3e5452bc, 0x3e866318, 0x3d3e7aa0, 0xbdb74bcc, 0x3e1832cf, 0xbea31a17, 0xbea83b22, 0x3e8f8ec4,
+ 0x3eaec1f0, 0xbe10739a, 0xbe0b873e, 0x3d2c139d, 0x3ef702be, 0xbe1cf20e, 0x3e2116fa, 0x3c25ea4e,
+ 0x3dc82a08, 0xbca32192, 0xbce13d9e, 0xbe2c84d5, 0x3ec46efb, 0x3ec93643, 0xbea64053, 0x3e3497de,
+ 0x3d894af1, 0x3ea15415, 0xbdd47c66, 0xbda0a30c, 0xbce365fd, 0xbd8d4ad7, 0x3d425ea3, 0xbeceac19,
+ 0xbe802349, 0xbc811ea1, 0xbf00d2be, 0x3e342792, 0x3e9c6e80, 0xbeb67211, 0x3ea28fa9, 0x3ce56cee,
+ 0x3e03ec22, 0xbe5fae12, 0x3ded68da, 0x3eb30173, 0x3eddf315, 0xbecd5c4e, 0x3e589c5e, 0x3d6f530f,
+ 0x3e85256c, 0xbe5c41c6, 0x3dc29b28, 0x3d982049, 0x3da13d94, 0x3e7ee739, 0xbdae0b30, 0x3e024bf9,
+ 0x3ede09c8, 0x3d3686ea, 0x3d77bcb6, 0xbd7473bd, 0x3db692fe, 0x3e689fc0, 0xbc87a156, 0xbf112a45,
+ 0xbf0a6817, 0xbe0f40e3, 0xbe62d027, 0xbe436686, 0xbc4efeaa, 0xbe209a53, 0x3eecab6a, 0xbdcfe94e,
+ 0xbeaac713, 0xbd871904, 0xbec4bb5c, 0x3d0d7861, 0x3e2535a0, 0xbd546441, 0xbe69cae6, 0xbd5f9f09,
+ 0xbe46fdb8, 0x3cdb7339, 0xbe5de13d, 0x3e8ec554, 0xbea21ab8, 0xbe8a4052, 0xbeac38f1, 0xbec25e1f,
+ 0x3e7e7a2e, 0xbe967141, 0xbe14aba7, 0x3e0732bb, 0x3dd7273e, 0x399dce43, 0x3dbf6038, 0xbe495566,
+ 0x3ef78e14, 0x3f4e25a9, 0x3dc2e0f0, 0x3e350724, 0x3d550803, 0xbe892617, 0xbe9ebe77, 0x3eb10288,
+ 0x3d4618f7, 0x3e8e1e49, 0xbe76a97d, 0xbeeb8ccc, 0x3d04d7a7, 0xbd4c2a5d, 0xbd09348a, 0xbc661248,
+ 0xbb81f331, 0xbea09c75, 0x3e5ef0f3, 0x3e032807, 0x3d6c92e9, 0x3de21677, 0xbe9260c7, 0xbdce57c9,
+ 0x3c852607, 0x3d0d924a, 0xbde383d1, 0xbe45d1ec, 0xbe41db9e, 0xbdb84fa0, 0xbe84eb23, 0x3c37fd78,
+ 0xbef0eceb, 0xbebbf1ca, 0x3e304c79, 0x3cca30c6, 0xbdf0bb1d, 0xbe8415ad, 0xbe785166, 0x3e296516,
+ 0x3e89af1d, 0x3ecd8fa8, 0x3e65c9dc, 0x3e6e1975, 0x3e4a0f69, 0xbee23fff, 0xbd9ad081, 0x3dd5f9d9,
+ 0x3d956681, 0xbcb977cf, 0x3ea6c999, 0x3e6112e7, 0x3d20a627, 0x3edfb221, 0x3e8e9cb7, 0xbdd1cbdd,
+ 0x3e130bea, 0x3da36edc, 0xbdf16ff0, 0x3d235a11, 0x3e9d3e3d, 0x3ddac24e, 0xbd332fd7, 0xbd09c719,
+ 0xbf24e777, 0x3e46dce8, 0xbcb3fc8f, 0xbe9b212f, 0xbe80f085, 0x3eb1983c, 0xbe3b0ee5, 0x3e894680,
+ 0x3c4aa0a6, 0xbdbf6f2d, 0xbe01128f, 0xbed302ec, 0x3e86e073, 0xbd81dc49, 0x3eb257e6, 0x3df95f20,
+ 0x3dc7940a, 0xbde18142, 0x3e20eb7e, 0xbe711c3a, 0xbe19254c, 0x3dc089fb, 0x3e19c171, 0xbeed8313,
+ 0xbe75ed94, 0x3e65bc5d, 0xbf0870bf, 0x3e56ae5f, 0x3e86d23c, 0x3e716674, 0xbc9b68c4, 0x3e0295a3,
+ 0x3e49faff, 0x3e3247e8, 0x3ec145b5, 0x3ea42407, 0x3d031a08, 0x3dd0cfa7, 0x3e58c783, 0x3e4f1136,
+ 0xbd6ef65f, 0x3d8f2f59, 0x3cc64428, 0xbe3ebc7a, 0x3ecdebc1, 0xbee17df4, 0x3ddc7f55, 0xbd58d980,
+ 0x3e1a8997, 0x3dce3686, 0x3e0e31d3, 0xbea34b27, 0x3d41684f, 0x3ed32073, 0x3e954dec, 0xbe4ad3e5,
+ 0xbe555b6d, 0x3c8416b3, 0xbeec61e3, 0xbe9cd3d7, 0x3e0eb9f5, 0x3da55566, 0xbe27be5f, 0x3bb28d4e,
+ 0xbd9aaa73, 0x3e002079, 0x3ebbb352, 0xbe78dd1e, 0xbd0bf75e, 0xbe013e9c, 0xbe14bfc1, 0x3d8a2b38,
+ 0x3e64eee1, 0x3dc652c9, 0x3d368edd, 0xbe0d6ac7, 0x3f2611bc, 0xbe9cce83, 0x3e3dd56c, 0x3d84c525,
+ 0xbdc6d719, 0x3dbf4a04, 0xbb8da974, 0xbd33c4c7, 0xbd50fd14, 0x3e91e258, 0x3e80107d, 0xbe3f245d,
+ 0x3e1e31e4, 0x3cc8a5ed, 0x3d9e9295, 0xbeb939c0, 0xbe7503df, 0xbdea73ac, 0x3c98dcbd, 0xbe8b9b80,
+ 0xbe348eb8, 0x3ed33a0f, 0x3d60fcd9, 0x3e1e92e4, 0x3e91e22d, 0xbd8072b3, 0xbd9f04a6, 0xbc088f80,
+ 0x3f653557, 0xbeb39947, 0x3e94f2a8, 0xbeacf728, 0x3e8e4da6, 0x3e34780f, 0x3e733c50, 0x3e735a90,
+ 0x3f016c97, 0xbe303bcf, 0x3ed9b2a9, 0xbd4f70da, 0xbe713322, 0x3e85ea01, 0x3d1b3c99, 0x3e555adc,
+ 0xbf16b5f4, 0x3d177dc2, 0xbf343bcf, 0x3d14968a, 0x3efd4eab, 0x3ec19e19, 0xbe24426e, 0x3e184acb,
+ 0xbe93601e, 0xbe78d8f6, 0xbdfffcec, 0x3edacecc, 0xbd12668a, 0xbcdca4c8, 0x3f125d5c, 0xbdfc4899,
+ 0x3e7a20f1, 0xbe96710b, 0x3bba18a8, 0x3dc7d1bb, 0xbec7c447, 0xbebb0ea2, 0xbeec2b1a, 0xbe3348cd,
+ 0x3e876445, 0x3acaa8b0, 0x3e3c7c85, 0xbe45d39f, 0x3e8b18ca, 0xbde18bb7, 0x3f3c2a0b, 0x3e32baa6,
+ 0x3d9591e1, 0xbe30db0a, 0xbe1b1faf, 0xbc172827, 0x3e140d22, 0xbe98feac, 0xbe4cc9e8, 0x3ec12e3b,
+ 0xbe67f7d3, 0x3e955d3b, 0x3f0808f5, 0x3ed37f70, 0xbeb034ad, 0x3eb2a89e, 0xbe10803b, 0x3d0f2387,
+ 0xbee38677, 0xbe08fb4e, 0xbe9576e4, 0x3eb1b86d, 0xbda781df, 0xbdafc73b, 0xbf0faa30, 0xbef66315,
+ 0xbd77000c, 0x3ed5fecb, 0x3892a1bc, 0x3deb3f0d, 0x3ed897bb, 0xbee31f8e, 0x3d859367, 0xbb41788d,
+ 0x3eab5afb, 0xbe12025c, 0xbe50b55d, 0xbcb55dd3, 0xbf119971, 0xbea5194b, 0x3e1f186f, 0x3eeaae04,
+ 0x3eca45e3, 0x3f08820c, 0x3d0ac1a4, 0xbe35c8d1, 0xbe67e87b, 0xbea828bf, 0xbeaa6487, 0xbe06a68d,
+ 0x3e1ed363, 0xbd8d6a6d, 0x3defc622, 0x3e49bceb, 0x3ebed449, 0x3db91507, 0x3db1feaa, 0x3e44326d,
+ 0x3e7039aa, 0x3de32aa6, 0x3dcb7d65, 0xbe73a9d1, 0xbdbe3b83, 0x3d85f7c0, 0x3e35694b, 0x3d8a0a4d,
+ 0xbe10ce8a, 0xbbc21570, 0xbc8020fd, 0xbe67c1e0, 0xbc1b913d, 0x3dd3f821, 0x3e4ea342, 0x3dd13cf7,
+ 0xbea295cd, 0x3e2da71a, 0xbe416e6b, 0x3ec7ecb0, 0x3d5424c9, 0xbeabc320, 0x3dbdeff3, 0x3d18c0e1,
+ 0x3ecebda0, 0xbe3d123f, 0x3dc86a2b, 0x3e1b14e9, 0x3e1215ac, 0xbe21c567, 0x3dd56d16, 0x3eb657b9,
+ 0x3e05b36d, 0xbc8f6aef, 0xbdf53ba7, 0xbea07a0d, 0x3cace986, 0xba80aedc, 0x3e27e399, 0xbde4e725,
+ 0x3e473157, 0x3d9bab3a, 0x3e059d76, 0xbca4abcc, 0xbdf846ca, 0xbe14ad48, 0x3e89d6de, 0xbe8837a1,
+ 0xbe4db221, 0xbe27aa82, 0x3e08075e, 0x3da0d669, 0x3e93adc2, 0xbe845041, 0xbdf14acc, 0x3e6dacac,
+ 0xbe4107e6, 0xbe85fd55, 0xbe9744a3, 0xbe11f499, 0x3d985d1a, 0xbe337dcd, 0x3e7eb3fa, 0xbc2d7a8b,
+ 0xbdb84088, 0xbdf2fc9e, 0x3db3bdcc, 0xbf1a5ac6, 0x3d3890f2, 0x3daa4513, 0x3d23ae1e, 0xbe98fade,
+ 0x3d9ec678, 0xbeb07b52, 0xbda3e401, 0x3d8bda81, 0x3e68aedf, 0x3de63400, 0x3e862414, 0xbddc5941,
+ 0xbd00897f, 0xbd1a2b60, 0xbe2552b7, 0xbe91e705, 0xbc4937e4, 0xbe9b54aa, 0xbce37d85, 0x3b6fe984,
+ 0x3db0a9ca, 0xbe0e1c4c, 0xbddad427, 0xbe69a735, 0x3e72553d, 0x3e3486ee, 0x3e0de81c, 0x3ddae6c0,
+ 0x3e08dddc, 0xbdac2e04, 0x3edadcd7, 0x3e8799d3, 0x3c8a73fe, 0x3e9d399b, 0x3d9c4c6f, 0xbdff338a,
+ 0x3d1dd4a4, 0x3e5ab45a, 0x3bc40652, 0x3e604dc9, 0x3db85db2, 0x3dac4e33, 0x3d6bf8dc, 0xbdaea27e,
+ 0xbe467077, 0xbe80a31a, 0x3f15480a, 0x3e82b7da, 0x3d4296e3, 0x3dd2425c, 0x3e60b1b5, 0x3cc2c411,
+ 0xbe413876, 0xbe743698, 0x3e47c5d5, 0x3a759d37, 0x3cf68045, 0xbe8be0e7, 0xbd9f2763, 0x3d0a7189,
+ 0xbcf0d41b, 0xbbf1e11e, 0xbdab9ea5, 0x3dd5a035, 0xbe6a9bcc, 0x3bc50dda, 0x3e43f851, 0x3e09998e,
+ 0x3b8d3948, 0x3e9ef404, 0xbd1a4807, 0xbbe32329, 0xbdaa9c07, 0x3e904e1c, 0x3da94103, 0x3d883011,
+ 0xbe1d6b23, 0x3c5460eb, 0x3efcdf18, 0xbd9ef4f3, 0xbd6f18eb, 0xbd06dfc7, 0x3dc2af13, 0xbda54d5f,
+ 0xbebc7365, 0xbe8061c6, 0x3e42b5c9, 0xbe165267, 0x3e166b58, 0xba8e5990, 0xbd887213, 0xbd13a90d,
+ 0x3e5aeabd, 0xbe5d692a, 0x3c216ff3, 0xbe0d6a0a, 0xbe4de5d7, 0xbd215d69, 0x3eb40f41, 0x3df6a30c,
+ 0x3d8c2bac, 0x3e90edb9, 0xbea6a65f, 0x3d7123c0, 0x3c595189, 0x3e843539, 0x3df0f642, 0x3e759949,
+ 0x3e9d95a8, 0x3e957ddf, 0x3edbf9c2, 0x3e87994b, 0x3e5b774b, 0xbd85761f, 0xbdf64d36, 0x3d8ccb5d,
+ 0xbd4a5308, 0x3e58d2fe, 0x3e4bf89c, 0xbe54946c, 0x3e3c71c4, 0x3d0048dc, 0xbe6ceb6e, 0xbdef30d2,
+ 0xbe0a8f66, 0x3ebf16b0, 0x3e94fd3f, 0x3dd49867, 0xbd2b1096, 0xbdda7dea, 0x3d93c933, 0x3e3e268c,
+ 0xbe6b61ec, 0xbc67ce39, 0x3d092fc4, 0xbdacb9e9, 0x3ab0bd6b, 0xbdffa2b9, 0x3dbaca4a, 0x3d94e25a,
+ 0xbee4c174, 0xbcb13826, 0x3dd2d359, 0xbd13415d, 0x3e3c5580, 0x3e73459f, 0xbef37c90, 0xbe493b84,
+ 0xbdf459b8, 0x3d94ea50, 0xbd8e131b, 0x3e2ab8b6, 0x3cfd304f, 0xbdb2d99f, 0xbe89201e, 0x3dac1268,
+ 0xbe6b7b79, 0x3e161e37, 0x3d572091, 0xbe206b89, 0xbe407185, 0xbe170c46, 0x3e9ed0c4, 0x3c31f4f6,
+ 0x3df47b55, 0x3e8c8747, 0xbeac8548, 0xbdab473d, 0xbe4e9b6d, 0xbe19362a, 0x3d511023, 0x3dabcc2e,
+ 0xbd07d2b8, 0x3e9f32bd, 0xbde83ad2, 0x3e9607c3, 0xbe32bb2e, 0x3bc0d805, 0xbe7cd0ba, 0xbdb68eed,
+ 0xbde1234e, 0xbe054a43, 0xbdf8cf33, 0xbb50421b, 0xbe1fa286, 0x3da9d641, 0x3cfcb0a4, 0xbc820d99,
+ 0xbe2109a2, 0xbded966d, 0x3d9b495a, 0xbde34817, 0xbc99ba0c, 0x3e683f6e, 0x3f068a00, 0x3e17d23e,
+ 0xbe0c54ff, 0x3d7f9a24, 0xbe61c744, 0x3da3c14b, 0x3ed2e373, 0xbdccb82d, 0xbf0bd10b, 0x3e238832,
+ 0x3cd3af68, 0xbe797bfc, 0x3f16ddcb, 0x3e2c9817, 0xbe4c9a1e, 0xbe08da6d, 0x3df57788, 0x3d696b6f,
+ 0x3e69773c, 0xbe2591ee, 0x3d2e2150, 0xbc250221, 0xbe830cd8, 0xbe5c6f76, 0xbd750e88, 0xbddb047f,
+ 0xbe802bac, 0x3cda41c5, 0x3e998046, 0x3e1998aa, 0x3e1b1644, 0x3ea66f8a, 0xbd460d02, 0x3e96744a,
+ 0x3d8930f6, 0x3edc1845, 0x3e08882b, 0xbdaccb3b, 0xbe5b9de0, 0xbe6ebd1a, 0x3e96206d, 0x3c612b4e,
+ 0x3df3a9f8, 0xbdb73b33, 0x3e741488, 0x3e8cfcf8, 0x3b686fbc, 0x3e0c45ea, 0x3e4536a7, 0x3e229333,
+ 0xbe0cec18, 0x3d1ecac7, 0x3ca5a06b, 0xbc373e4c, 0xbe0b8779, 0xbdcda5ea, 0xbdd8a281, 0xbe6a2dc2,
+ 0x3d78fac2, 0x3d91d455, 0x3ebb07f1, 0x3c8cff1a, 0x3e615b43, 0x3e3c010b, 0x3e5238e0, 0x3ecc5dcc,
+ 0xbda72e0c, 0x3e60c6f6, 0x3d8a43a6, 0x3cc67672, 0x3cd86c85, 0x3e24b2d0, 0x3e4bf478, 0x3cd06442,
+ 0x3e06c7c7, 0x3e1bc50e, 0x3d6e8bb4, 0xbd999314, 0x3d279053, 0x3df846e7, 0x3b5b63f6, 0x3e327860,
+ 0x3ebd5ff7, 0xbc8bd247, 0x3d300c87, 0x3e23d3e5, 0xbd173641, 0x3dcfc75d, 0xbcca4e51, 0x3c9d8c5f,
+ 0xbd7903b4, 0xbca7fe9c, 0x3e8209bf, 0x3d3dac66, 0x3eae23a5, 0x3ef5270b, 0x3e8fe710, 0x3ed4db90,
+ 0xbdca88e0, 0x3e940359, 0xbe0d6b86, 0x3e300ad5, 0x3d8cfdcf, 0x3dd86f98, 0xbe07fba2, 0x3ba9f4cc,
+ 0x3e8d20b7, 0x3e720c0b, 0x3e93ebea, 0x3ebf830e, 0xbd08b6ca, 0xbbe50cbd, 0x3dfd6b77, 0x3eb99130,
+ 0xbe3949e9, 0x3d9074a0, 0xbee7e20d, 0xbe8235ff, 0xbdd1f097, 0x3d60ac84, 0xbd0b82c5, 0x3e9c053a,
+ 0xbecb6412, 0xbe1d1ef1, 0x3e1fb0a3, 0x3e181497, 0xbdb37afa, 0xbe1ceebe, 0x3ecab96e, 0xbedadb87,
+ 0x3c1e4ba9, 0x3d4568bd, 0x3e5dcbab, 0xbdc28e98, 0xbe9cfd29, 0xbed688ce, 0xbe10ebdb, 0x3d211245,
+ 0x3e66a69e, 0xbd4d3b4a, 0x3e3621b0, 0x3e4e9537, 0x3e59ac11, 0xbd4a9380, 0xbef46bae, 0x3e460254,
+ 0xbe80fabe, 0x3e13dc92, 0x3e34207f, 0xbeddc27b, 0xbe5d7043, 0xbd82ad76, 0xbe4bedd2, 0x3e14be9d,
+ 0x3e0a8787, 0xbea8ce96, 0x3f06ecaa, 0x3e9779c8, 0x3df67f03, 0x3df9e733, 0x3cf814d3, 0x3c6a9fe4,
+ 0xbe58ca04, 0xbd1ae6ea, 0x3dd695f9, 0x3e10ab2f, 0x3e40b087, 0xbdc5f30d, 0xbe78c994, 0xbd91675b,
+ 0xbe8db5fb, 0xbecbae76, 0x3e8ed8f9, 0xbe9d1d94, 0xbe444f2e, 0x3ee4f788, 0x3d73bd84, 0xbdb0b0fc,
+ 0x3cc0641e, 0x3e8c8a2a, 0x3f20a82c, 0x3ea73355, 0x3e873e5b, 0x3e18bd0a, 0xbe591559, 0xbda01a54,
+ 0x3d02739c, 0xbd61150b, 0xbe51683d, 0x3efad7df, 0xbc373b07, 0x3eb4d27e, 0xbf16a721, 0x3ea0419f,
+ 0x3ee8cfd0, 0xbeadc88f, 0xbd201ef6, 0x3f058606, 0x3e58021b, 0x3e928bba, 0xbe27c30f, 0x3e0ab97d,
+ 0xbe5bc1c1, 0x3e944bde, 0xbcace8f3, 0xbecfe59a, 0xbebf4146, 0x3f07a86f, 0x3e53b20f, 0xbcc91695,
+ 0xbe1297bb, 0x3e49aeda, 0x3ef6f02a, 0x3e1dbe33, 0x3dfb09eb, 0x3d7a8beb, 0x3d5b5d59, 0xbe267226,
+ 0x3e416573, 0xbe3b577f, 0xbe3c5fb9, 0x3e77ccf4, 0x3bf2c517, 0xbc84b2b8, 0xbe4daf49, 0xbe62e455,
+ 0x3e9d28fc, 0xbe69d7c6, 0x3eae7b76, 0x3e46c577, 0x3e12d10c, 0x3e638fdd, 0x3c7ba396, 0x3e9c71fb,
+ 0xbe760f0f, 0xbbe8540c, 0x3ef52f22, 0xbdab16d9, 0xbe23a5ad, 0x3e57d1ba, 0x3e3483f4, 0x3e254d7e,
+ 0xbf054662, 0x3eb8d814, 0x3c49a2b8, 0xbe95895f, 0x3db217f4, 0x3deb3adf, 0x3e82caf7, 0xbdaa19b7,
+ 0x3d0e1ac6, 0xbe53344f, 0xbee89627, 0xbe83e273, 0xbdecd8aa, 0xbe780604, 0xbe129f80, 0xbf1b694a,
+ 0x3e104c6e, 0xbea6fa4a, 0xbdc57994, 0x3e2631b4, 0xbd3c5ced, 0x3c6bb823, 0x3e4cf7f0, 0x3d2eba71,
+ 0x3d98bcf8, 0x3da175bf, 0x3e2d553c, 0xbf0b18aa, 0xbe27d63d, 0xbe4abea3, 0xbd4aace0, 0x3d5311f0,
+ 0x3e5a4419, 0x3d5ae97c, 0xbeb7206d, 0xbf23220b, 0x3d53ce50, 0xbe549217, 0x3e801727, 0x3e623534,
+ 0xbcd7115e, 0xbd98d2f5, 0xbe95957e, 0xbef9ccd3, 0xbf2df424, 0x3e49dc90, 0xbe25722f, 0xbec6da4c,
+ 0xbf2f466d, 0x3d08d196, 0xbe905f59, 0xbefc8615, 0xbe897779, 0xbe4d8197, 0x3eafd925, 0x3e4ea432,
+ 0xbca73632, 0xbe1eeb10, 0xbe98ff88, 0x3eb0ee38, 0x3c706fdc, 0xbe01543a, 0xbe8eb0f5, 0xbd9f0214,
+ 0x3dae8a62, 0x3ec65bab, 0x3dd5bf1f, 0x3eaccb07, 0x3d7dd5bb, 0x3eae4a47, 0x3efc9994, 0x3ea50373,
+ 0x3e83b50c, 0xbe837ebd, 0x3c8200e1, 0xbe022916, 0xbe89ee6f, 0xbde1ca0b, 0x3e800e0f, 0xbe9d851d,
+ 0x3d934533, 0xbeb86825, 0x3dc15ca5, 0x3e4c1510, 0x3ed99192, 0x3d68c486, 0xbeebf0d6, 0x3d73e3f8,
+ 0x3e1bbb7a, 0x3e33d080, 0x3ef9276b, 0x3e054ced, 0x39f565d2, 0x3e0c6d5d, 0x3e5aa786, 0x3dea954c,
+ 0xbdc166b0, 0x3e4ea83f, 0xbe5408d6, 0xbedd6f5a, 0xbd89aeda, 0x3eb19c54, 0x3ed74465, 0xbc7b50b2,
+ 0xbdf4132c, 0xbe601061, 0xbeaeb0a1, 0xbebbb88b, 0xbe583ea2, 0x3e07a058, 0xbc41a55a, 0xbe9e9d97,
+ 0xbdff2c19, 0xbe3b911c, 0xbe8caf30, 0xbc14e21f, 0xbe1edf3f, 0x3dbd78c7, 0xbd64d0dd, 0x3e95069b,
+ 0x3d2941ee, 0x3be597d8, 0x3ee88987, 0xbe89aec5, 0xbe12f7c7, 0xbdb791d5, 0xbe86b23b, 0x3d70ac6b,
+ 0x3e6ab1d1, 0x3d47ddbf, 0xbe593cca, 0xbee27841, 0xbe486321, 0x3e44e35d, 0xbdd6422f, 0xbc31f0dd,
+ 0xbeacbbe3, 0x3d8ad69e, 0xbce5b766, 0xbd8556f8, 0x3b7ac75a, 0x3e43a288, 0xbcddb3ea, 0xbcae2e1b,
+ 0xbe1d23c5, 0x3e302562, 0x3defdfee, 0xbc97bdb0, 0xbf095c82, 0xbe80b6bd, 0x3f0c9eb8, 0x3e9bf307,
+ 0x3e065113, 0x3c9580ad, 0xbd0e36b2, 0xbbf5f080, 0xbd5bd9f4, 0xbda5db19, 0xbec5ba99, 0x3dcfa26b,
+ 0xbf0704fa, 0xbd32132a, 0xbd3bfe03, 0x3ecc82b6, 0x3c28dc4a, 0xbd732060, 0x3e54db48, 0x3d4b4c4f,
+ 0x3ddaac5e, 0xbe8f7805, 0xbe011c5f, 0x3e6aa068, 0x3e1cd38a, 0x3be8a552, 0x3e5e87cb, 0x3e08a9ea,
+ 0x3e02eb42, 0xbd3dcd7a, 0x3ecbcfd0, 0xbc4fb891, 0x3e1aabd6, 0x3df9c028, 0xbeb291a4, 0x3d66c93e,
+ 0x3e1b5a3f, 0x3d90ba36, 0x3e73bbe7, 0xbd6ab03a, 0x3e0dc11f, 0xbe032fd1, 0xbe36820e, 0xbeacb266,
+ 0xbdba4fbf, 0x3c86b07a, 0xbe83ae50, 0x3f00253b, 0x3e597594, 0x3d6790a6, 0x3ebe6a33, 0x3eba2162,
+ 0xbd9bb46d, 0xbe20ac1d, 0xbe44b33e, 0x3da89e92, 0x3cdec05c, 0x3dc6fa31, 0x3c3bd875, 0xbe994b6c,
+ 0x3ed4e248, 0x3e01f279, 0x3e8dfa8e, 0xbea6533b, 0x3d8e92fc, 0x3d4bf6d7, 0xbd883931, 0xbe34fa9b,
+ 0x3e5d5d27, 0x3ec27f14, 0xbe9bb232, 0xbd9b3ec6, 0x3eeda8d1, 0xbe18b1e9, 0xbe6521eb, 0xbdad53f3,
+ 0xbdfc56e2, 0xbe0345cf, 0xbe92debf, 0xbdf85295, 0x3d32b6ff, 0xbeb4d277, 0x3e8685b7, 0x3de422ca,
+ 0x3e2eff2b, 0xbeb1fe87, 0xbdc6125d, 0xbb830239, 0xbe3f9406, 0xbd758af7, 0x3db87fc6, 0xbd5d1f46,
+ 0xbd190216, 0x3d8dcb5b, 0x3e9e7723, 0xbea884ee, 0xbe8361a5, 0xbd9bc1db, 0x3e14d62a, 0xbd89a455,
+ 0xbe528de8, 0x3e1f67c6, 0xbe30cffe, 0x3d3b600b, 0x3ed14222, 0xbe948e1c, 0xbdcdbe67, 0xbe43ad2c,
+ 0xbcdab868, 0x3ca174eb, 0xbee82988, 0xbe30b36c, 0xbe838d81, 0x3e8ecbc8, 0x3d57e92b, 0x3ea0e2cc,
+ 0xbecc3b29, 0xbd0ceece, 0xbecf052f, 0xbef6a57f, 0xbeca11f0, 0xbd919daf, 0xbe9b4d68, 0x3d92b1d9,
+ 0xbe669e72, 0x3d880939, 0xbeea01fe, 0xba8031ba, 0xbefad740, 0xbe934530, 0x3e94623f, 0xbeae2ff3,
+ 0x3ea159f6, 0x3d2b7689, 0xbec3f1a3, 0xbc2fbce7, 0x3e537642, 0x3dd541f1, 0xbc85c5eb, 0xbd72ffde,
+ 0x3ec37e31, 0xbbeb004a, 0xbe62d51b, 0xbe58084b, 0xbea2dbf5, 0x3d5ed81e, 0x3db35339, 0x3e45cde5,
+ 0xbe82ab7b, 0xbdc7c52b, 0x3e81674e, 0xbe611c90, 0xbdf63519, 0x3e157cc5, 0x3ca99638, 0x3e50a4aa,
+ 0xbe7cf0f0, 0x3e93a010, 0xbd8106e1, 0xbd603f2c, 0xbe16a179, 0xbd83dce4, 0x3c9cea11, 0x3db986fe,
+ 0x3c937710, 0xbf05c922, 0x3e3c2fd4, 0x3d816699, 0xbdb2161f, 0x3d6689a6, 0x3e8bd858, 0x3cf5faa8,
+ 0x3e7ff416, 0xbe38005c, 0x3ea05b55, 0x3efe1ea6, 0xbea326f4, 0x3edb3efe, 0x3e233924, 0x3cbf8db5,
+ 0xbedea9c8, 0x3e3e94cd, 0x3e6b3d34, 0x3e199235, 0x3dae4795, 0xbc0ac3f1, 0x3ebd7d29, 0x3ea505fa,
+ 0x3ea26413, 0x3e4d984f, 0x3e860b43, 0x3ed16542, 0x3ea28136, 0x3e48d63e, 0x3e249ca9, 0x3d4e98f1,
+ 0x3e9ac684, 0xbe0484e1, 0x3f27557b, 0xbdc845f8, 0xbee3e819, 0x3ed694a8, 0xbe3af6de, 0x3b347d46,
+ 0x3e106861, 0x3ee240d9, 0xbd870a95, 0xbe844c2b, 0xbe71c496, 0xbd98e0db, 0xbe752bb7, 0xbeef27b5,
+ 0xbea88adb, 0x3ec1effb, 0xbdaa0549, 0x3e8c6404, 0x3dd0cd46, 0xbee47b73, 0xbec155f8, 0xbe224d55,
+ 0x3e64987d, 0xbe78f6eb, 0xbdb388ae, 0x3e465015, 0xbe04e81d, 0x3e02b53d, 0x3e25d421, 0x3dc63531,
+ 0xbee0de1e, 0xbe552a79, 0x3d0e7526, 0xbea17013, 0xbe8e39d7, 0x3e57f0b9, 0xbefe1f88, 0x3e997726,
+ 0xbe669513, 0x3ecdde40, 0x3dad088b, 0xbe85c0e3, 0xbe1a118d, 0xbb95c000, 0xbdc7c68e, 0xbebbabad,
+ 0xbdb332eb, 0x3eb100c2, 0xbe019fe6, 0xbe130a4c, 0x3c2d1d9c, 0xbeb5d95f, 0xbe91613f, 0xbe775e83,
+ 0xbe0a889b, 0xbe0aee10, 0xbe832a26, 0x3cc0ddce, 0xbe1cb99d, 0xbe8d0cf5, 0xbe352420, 0x3e870483,
+ 0xbe2232f2, 0x3daee0c4, 0xbe2f7db8, 0xbe684628, 0xbea93235, 0x3e802719, 0xbe7b23fe, 0x3e1352e1,
+ 0xbd6d980e, 0x3efd5a6c, 0x3e3f8927, 0xbec07b9a, 0xbc487879, 0xbe66ef03, 0xbe6982f8, 0xbea646b6,
+ 0xbdaf5318, 0x3ec97262, 0xbec6e247, 0xbebb1c5c, 0xbe53fd10, 0x3cd4b053, 0xbed8899d, 0x3d0631e4,
+ 0xbef8fe57, 0x3eaa55b5, 0xbed669a9, 0xbe9b6bf0, 0x3dd5b91e, 0xbd8880f9, 0xbeb2898c, 0x3e4b546d,
+ 0xbe42308c, 0x3d895645, 0xbd85927a, 0x3eab63c1, 0xbe9fee17, 0x3ec77e30, 0xbe10a2ed, 0x3e18ebd3,
+ 0x3ec14597, 0x3d33bed9, 0xbe70b51d, 0xbe9c61dd, 0xbe1932c3, 0xbdfc28ff, 0xbe4c5ae5, 0xbd8d2132,
+ 0x3d9673dc, 0x3e2a4b0d, 0x3e900305, 0x3ba6e7d8, 0xbe159ca7, 0xbde18fd3, 0x3e361abf, 0xbe006306,
+ 0xbf09200e, 0xbd97fb75, 0xbe6aa739, 0xbe89cf71, 0xbe17d98c, 0x3e8bf5f2, 0xbe9c47fb, 0xbd3d7651,
+ 0xbec062cf, 0x3d930ddf, 0xbe89956e, 0xbe3ab2af, 0xbdd0a36a, 0xbdb6097c, 0xba66bf52, 0x3ed3552b,
+ 0xbcab4eb1, 0xbda5da9b, 0xbe0db3c8, 0xbda1f08e, 0xbebd1b3c, 0x3e207703, 0xbd4cd7f5, 0xbd7436b0,
+ 0x3db66aeb, 0x3e3e6900, 0xbdf92290, 0x3e1d63b6, 0x3db35c8b, 0xbc3db008, 0x3f0c3ae7, 0x3e882426,
+ 0xbe421c60, 0x3e0eab3a, 0xbe6bff3a, 0xbe22856d, 0xbd5c14c9, 0xbe43fd05, 0xbe6565c3, 0xbde5b137,
+ 0xbcd45ebc, 0xbddf874d, 0xbe7abf25, 0x3e485ea6, 0xbbbe0bb7, 0x3dde2d0e, 0x3cde03b2, 0xbdd78f8d,
+ 0x3e6429c3, 0x3e6a58ca, 0x3dcba9ea, 0x3e985223, 0xbdaca02c, 0x3f14c376, 0xbe1ca4f8, 0xbed57c9f,
+ 0xbdb4d5db, 0xbc18a825, 0x3e91519a, 0x3efacdc5, 0x3f25d1fc, 0x3c287ad3, 0xbd905593, 0x3e4c590e,
+ 0x3dbde2e1, 0xb902ddb0, 0x3f0b0566, 0x3ea90155, 0x3e632693, 0xbe3ded7d, 0xbd281e9f, 0xbe2fa9c6,
+ 0x3e2815d6, 0xbea4f7f4, 0xbe3adbbe, 0x3e34649a, 0xbdaff7ee, 0x3e1fc896, 0x3c1bc385, 0xbe76dbdf,
+ 0x3d18514f, 0xbe146ae9, 0xbdb8758d, 0xbd56a9d7, 0x3e67ece1, 0x3d4ab85f, 0xbc5a1c63, 0xbd872e71,
+ 0xbe979c7f, 0x3c77c720, 0xbe35a923, 0x3eb51778, 0x3d3f6788, 0x3e2d7348, 0xbe0c8fa6, 0x3ad17c89,
+ 0x3e11e44d, 0x3db97709, 0xbe6aec06, 0x3c3bb5fe, 0xbe3c7889, 0xbe4625b3, 0x3e8fedc2, 0xbeb9a235,
+ 0x3de71687, 0x3f03f5ae, 0x3db63b1a, 0x3d811296, 0x3f1ca7e7, 0xbdf49cea, 0xbe557edf, 0xbe8346fb,
+ 0x3e8cc76d, 0xbebb899c, 0x3d516e59, 0x3e42abc1, 0xbecea6f7, 0xbe2a2431, 0xbed7e51a, 0x3c5f3e2f,
+ 0xbda86ec9, 0x3ded94f9, 0x3e97f392, 0x3e6c15a6, 0x3e4cfc6a, 0xbe166ca5, 0x3eb36963, 0x3eb73c5b,
+ 0xbe4b9b73, 0x3f02b28d, 0x3d6303c2, 0xbe116fc3, 0xbe467b2e, 0x3e5094de, 0x3d8e53e8, 0xbdf6d495,
+ 0xbe4473ff, 0x3c588004, 0x3dac16dc, 0x3e3f18ad, 0x3e3e95ca, 0x3c0937e2, 0x3e9f0f75, 0x3e03aab9,
+ 0x3e70f51d, 0xbe8c25fb, 0xbd8bb2c8, 0x3ec5d12b, 0xbed5b846, 0xbe67a21f, 0xbe94008b, 0xbe5d1912,
+ 0x3ea5d948, 0x3e4857e1, 0x3e2ad532, 0x3d888d37, 0x3f07242a, 0xbe116099, 0x3f3c967a, 0x3e93d1b4,
+ 0xbea0f799, 0x3ec3095e, 0x3e8b2e9f, 0xbd8a2903, 0x3e2dc449, 0x3dd24145, 0xbe5aa5c3, 0x3de5e044,
+ 0x3d32e5c4, 0xbd8f5a44, 0x3ea05193, 0x3ecce86a, 0xbcf27d6e, 0xbddc0050, 0x3ea4414c, 0x3d1735c5,
+ 0x3f633746, 0xbe903404, 0x3f02fb77, 0x3ea6c2a4, 0x3f0b9bac, 0x3da2d0ce, 0xbebd69e1, 0x3dad674d,
+ 0xbd6b24fc, 0x3e45b15f, 0x3d5f5c8f, 0x3e0c6b09, 0x3e6aebda, 0x3dee61da, 0x3d28298c, 0x3ec10fcc,
+ 0xbe3e53ad, 0x3deb499b, 0xbe56f258, 0xbd04d047, 0x3e5363a8, 0xbd03bad1, 0xbcefed0c, 0xbe6e1e48,
+ 0xbec33849, 0x3d1eb58c, 0xbeade21e, 0x3e4ebe82, 0xbdc9c4f5, 0x3ea43717, 0x3db27033, 0xbe8690fd,
+ 0x3de89112, 0xbe2758f7, 0x3ec5ef5c, 0x3e8fc78f, 0x3c80f8ff, 0x3ea17560, 0x3cb7d02d, 0xbe5fde09,
+ 0x3dc1e65e, 0xbe18d694, 0xbd705a1b, 0x3e370549, 0x3e146679, 0xbe7584ce, 0x3df941db, 0x3e053c7a,
+ 0x3ee79dbd, 0xbd751ada, 0x3e9377d3, 0x3dcc201b, 0x3e81173b, 0x3eb331c2, 0xbea01ca8, 0xbe6b2d99,
+ 0x3e6bc261, 0x3e33d745, 0xbeb7b522, 0x3e00e8c8, 0xbda33f2b, 0x3ddaf18a, 0x3eadcc6b, 0xbe593074,
+ 0xbf537672, 0xbea1875c, 0xbe351238, 0x3e514cd5, 0xbee1d1c1, 0x3e3616df, 0xbeaec7d2, 0xbea91325,
+ 0xbeb27568, 0xbd729770, 0xbdea4276, 0xbe0a373a, 0x3ee1eb00, 0xbf0a4580, 0x3dfc0cc9, 0xbf0351be,
+ 0x3e04c17b, 0xbed22004, 0xbac39263, 0x3e524630, 0x3df33bdf, 0x3e77d4f9, 0xbe949630, 0x3ea9ff51,
+ 0xbe2b6afb, 0x3dce9830, 0xbe39a255, 0xbe889ea1, 0xbceff2f8, 0xbeac48b6, 0xbc1531b8, 0xbd50e0e5,
+ 0x3f1ca88e, 0xbdb5064e, 0x3d6690f2, 0xbde46670, 0xbe76ecc9, 0x3da74c49, 0x3eb3b48b, 0x3e443e53,
+ 0x3ef0f676, 0x3e314a9c, 0x3e8df805, 0xbe810d37, 0x3c9cbdc1, 0xbd8a29d6, 0x3e101889, 0x3cfffb05,
+ 0xbe3304f3, 0xbd93ff18, 0xbef49bcd, 0x3c950348, 0xb95080de, 0x3d3e4a15, 0xbe5fdbd1, 0x3e6e50be,
+ 0x3df22683, 0xbecf7a29, 0xbcc09cb9, 0x3e9a2779, 0xbe4ae6e0, 0x3d45ba63, 0x3e530082, 0x3e9a835e,
+ 0x3e471ac5, 0x3c96a752, 0xbe7fd1ce, 0xbd06b621, 0xbdef3499, 0xbd6c88c3, 0xbe931953, 0xbe8a7704,
+ 0xbd53d106, 0x3e4eaf3b, 0xbd8df214, 0xbeae11c3, 0xbc529f25, 0x3dab5134, 0xbdeabba8, 0x3ecd5343,
+ 0xbd6c7662, 0xbe0b5c92, 0xbe8e1c9d, 0xbe347f57, 0xbe925d01, 0xbe95f8bf, 0x3d78ba6d, 0x3e451b80,
+ 0x3e41ff10, 0x3e51a654, 0x3f40ea2f, 0x3dc1e7bf, 0xbef661db, 0x3e0192e8, 0xbe9d3752, 0xbe50074b,
+ 0x3e5e4f50, 0xbd5ef460, 0xbcc43238, 0xbcaf1f8e, 0x3d3f623b, 0x3e229245, 0xbe36576e, 0xbd08c404,
+ 0xbdac255c, 0x3dabf128, 0x3e1aed3c, 0x3e5b3302, 0xbd2ba001, 0xbe0ead98, 0xbe822605, 0x3dd2cddd,
+ 0xbde1d99b, 0x3e69f372, 0xbbf0432e, 0xbe1c915c, 0xbe0330f0, 0xbe468d35, 0x3dd451f0, 0xbd8038f2,
+ 0xbdb25313, 0x3e47c233, 0x3f173a1e, 0xbe36249f, 0xbe810827, 0xbd9cbd16, 0xbcb091ca, 0xbe97e5a3,
+ 0xbdfe68a7, 0x3e81e2dd, 0xbe670342, 0xbe9f29d6, 0xbe520d3c, 0xbd8a33f2, 0x3e7b195e, 0x3ebc9120,
+ 0x3db77715, 0x3e2a77b4, 0x3e7aa466, 0x3e850c75, 0xbe70ee5e, 0x3db11e0f, 0x3df4fdaa, 0xbe09534a,
+ 0xbeb76d98, 0xbe77a5b6, 0xbb27f245, 0xbd96194c, 0x3d752229, 0x39bcec66, 0xbda5b35e, 0x3ea93a45,
+ 0x3df82fc6, 0x3ddc1153, 0x3ea6ebf9, 0x3c5cd736, 0xbb950ab2, 0x3e198800, 0xbe83d194, 0x3e08450b,
+ 0xbc551721, 0x3e75e758, 0xbc24dac1, 0xbec2c919, 0x3e0c210d, 0xbe0c14ef, 0x3e26d461, 0x3ebe0bd9,
+ 0x3e909f94, 0x3e7384e9, 0x3c485e5b, 0xbd90337b, 0xbd90a873, 0x3ebcb151, 0x3da1e263, 0xbd67ac3c,
+ 0xbe80c848, 0x3daf9073, 0xbeb19355, 0xbe1b0adc, 0x3de2b863, 0x3dd024cf, 0xbe83f0ee, 0x3efc2c53,
+ 0x3c89a84e, 0xbd929aa6, 0x3f06cb69, 0xbd0d2562, 0xbded0d0a, 0x3ed8556f, 0x3e5ba15d, 0x3e8e913a,
+ 0x3ee7d72b, 0x3ea65bd4, 0xbce4760d, 0x3dc38c02, 0x3eb95f1f, 0x3c53bee8, 0x3cb45c6d, 0xbcd6355c,
+ 0x3e4c6fe2, 0x3e917be8, 0x3e525ee3, 0x3cad615d, 0xbbff10b8, 0x3eec38a3, 0xbbda2dda, 0xbdc6a048,
+ 0x3e0ffd66, 0x3dc62546, 0xbe5eb576, 0x3da23863, 0xbe94a268, 0xbe299bda, 0xbd8fa58a, 0x3e88f1b4,
+ 0xbe82db62, 0xbe19be8b, 0x3f120600, 0xbe117ac2, 0x3d7eac56, 0x3e16c127, 0xbe2c3c38, 0x3c56249f,
+ 0x3ebc6342, 0xbe0fcd57, 0x3ea9f1a4, 0x3dd2c19b, 0xbe45cbd1, 0x3eab4e28, 0xbf080206, 0x3d0d9f09,
+ 0xbf038319, 0x3e7d6d88, 0x3e879df1, 0x3f4a8599, 0xbdfdf574, 0xbe65d6bb, 0xbbd5aca4, 0x3e3b0512,
+ 0x3e17b5bc, 0x3c2c03bc, 0x3f099655, 0x3eb0a058, 0x3f111b1a, 0xbf00d271, 0x3e8c8c5d, 0xbe7d4529,
+ 0xbbbbc68d, 0xbe0e7d50, 0xbe0039e0, 0x3e9867e1, 0x3c79339f, 0x3e826f75, 0xbde32e17, 0xbcbf110b,
+ 0xbea0a8ee, 0xbcb53c00, 0x3f0bc4d0, 0x3d40f8fc, 0xbe1ff749, 0x3e0ed558, 0xbe84a86c, 0xbe711249,
+ 0xbe4933b2, 0x3e421c03, 0x3e1f03d4, 0x3e08214a, 0x3e6c4dca, 0xbe1d7b2c, 0x3e14bf26, 0x3e010adc,
+ 0xbe4f1475, 0xbc448225, 0xbd542579, 0x3e2fe586, 0x3ec09dd1, 0x3e441be3, 0x3d9ebde1, 0x3e9133f8,
+ 0xbe05b42b, 0xbdd38e04, 0x3e4ef3b0, 0xbee665e8, 0xbe200e36, 0x3ea7d6c3, 0x3e308f88, 0xbe4c3e62,
+ 0xbe41fded, 0x3d9b0c27, 0xbe0f6e1c, 0x3d84cacf, 0x3e362659, 0x3e9ba3a2, 0xbd17d508, 0xbf07496b,
+ 0xbd21f614, 0xbe4cdafd, 0xbe9eeab5, 0x3e8b97e0, 0x3f435dbd, 0x3d8277f6, 0x3c8d0cb4, 0xbeb87031,
+ 0xbe39fa54, 0xbc416bf2, 0xbeb8dedb, 0x3d718488, 0x3dc38637, 0x3d957c37, 0xbea8a256, 0x3e882e6b,
+ 0xbd75e6ec, 0x3cf7069a, 0xbe8afeea, 0xbdf008a7, 0xbd336900, 0xbdf23a7c, 0x3e2be8cf, 0xbd9ad33b,
+ 0x3e2d6487, 0xbecf5cef, 0x3ea64b51, 0x3ea8ca18, 0x3e3800d5, 0xbea88b9b, 0x3e706671, 0x3e5824c9,
+ 0x3f18113b, 0xbd3840e6, 0x3eb0f331, 0xbe5b0948, 0x3c100449, 0x3e14d0e4, 0x3e4a9d4e, 0x3f143231,
+ 0x3ba476d5, 0x3eab859c, 0xbe1698b8, 0xbe693670, 0xbcd8a826, 0x3e935f92, 0x3df403ab, 0xbd9c84a3,
+ 0xbd871534, 0x3da64e2e, 0xbee3969a, 0x3e79574e, 0x3e8458e6, 0xbe4a522d, 0x3edb07ce, 0xbea12fbf,
+ 0x3d8ff950, 0xbe9e3e30, 0xba7b37f5, 0x3ec3b68f, 0xbbb77c85, 0xbf10482e, 0xbddfc5c6, 0x3e54b8ae,
+ 0x3e89d910, 0x3ded54b6, 0x3e07397e, 0xbe2f51ef, 0xbe8496b8, 0xbd252128, 0x3e182160, 0x3f1061d0,
+ 0xbd2c98d9, 0x3de70968, 0x3e1a8ee4, 0xbdfca44f, 0x3e0227b9, 0xbd145b87, 0x3df90111, 0xbe09a241,
+ 0xbcf1c551, 0x3e6dd010, 0xbe1b2281, 0x3e69f096, 0xbde1936a, 0xbed3f8cd, 0x3ebf77c2, 0xbd221a4c,
+ 0x3eaebdae, 0xbed4237e, 0xbea31ce8, 0xbe13e80c, 0xbe453aaa, 0xbf19b808, 0xbd3864b6, 0x3f00c7a6,
+ 0x3dd606e8, 0xbe617534, 0x3e868203, 0xbee76228, 0x3d5aaeea, 0xbe5d4095, 0x3f000b5d, 0x3e6dc2c7,
+ 0xbdd4f6ba, 0x3d6f3e5e, 0x3ceea9eb, 0xbe89ea18, 0x3c341312, 0x3d892050, 0xbd627a5c, 0xbe87c2e9,
+ 0x3e434a70, 0xbed4fba2, 0x3d53be61, 0x3dcb59b0, 0xbe5313f2, 0xbed0304a, 0x3e599368, 0x3e06b447,
+ 0x3ea58d6b, 0x3e39a306, 0xbd1472a0, 0xbd8ac954, 0x3cef393d, 0x3e2d7e3f, 0xbe74bacf, 0xbe5de5ae,
+ 0x3e2fcb82, 0x3d7af1e6, 0x3b930e72, 0xbef8525a, 0xbde8f2df, 0xbbd6b3ad, 0xbdb90186, 0x3ea69495,
+ 0xbdcc15f8, 0xbeab108c, 0xbecdc2c6, 0x3d35c29a, 0x3eb32fcd, 0x3c981f1e, 0xbd2bd2ff, 0x3d262399,
+ 0xbe2a9013, 0x3e90bb6b, 0xbe4c48e9, 0x3edf878f, 0xbdcb11c0, 0x3dac4627, 0xbdcc2f42, 0xbe1d6d11,
+ 0xbee0b48f, 0x3d482096, 0xbe4bd2b4, 0xbe98f4ef, 0x3ae758b5, 0x3ea60fbb, 0x3c9271dd, 0xbe3fcbfe,
+ 0x3e094bfa, 0x3b4f15da, 0x3ca1a01b, 0xbe81c77f, 0x3dd9226f, 0xbe710e49, 0x3e6794f9, 0x3da3cb68,
+ 0xbe02fffe, 0xbe81e946, 0xbe9bb83d, 0x3d8d51d1, 0x3d07c0ff, 0xbeb34474, 0x3d920730, 0x3e5cf37a,
+ 0x3e27b615, 0xbd8bf420, 0xbea71f96, 0xbcbb95e0, 0xb94f24a8, 0xbd9c47e6, 0xbe99950c, 0xbe81e3cd,
+ 0xbe5d58f9, 0x3e81345b, 0xbd080105, 0xbe422af9, 0xbc9c3c27, 0xbc3a796b, 0xbe201ce3, 0xbe907ce2,
+ 0xbe868dc4, 0x3e660f16, 0xbe408517, 0xbe6fb815, 0xbd6ef716, 0xbdf39b70, 0xbd8f195b, 0x3e1d96c3,
+ 0xbdf0389e, 0xbe61f5be, 0xbe161ce8, 0xbcc8840e, 0x3e87a8e6, 0xbed42ece, 0x3e9948f2, 0x3cd6d3c7,
+ 0x3e260003, 0x3f0b968a, 0xbe3a2ec8, 0x3edf00bb, 0x3db7e365, 0xbb368882, 0xbed45ea0, 0xbd7626ec,
+ 0x3e106c52, 0xbdace2b9, 0x3e036819, 0x3e0cf8a1, 0x3ebfbbe0, 0xbdd80d58, 0x3f083bfb, 0x3ebe756a,
+ 0x3ed19034, 0xbdd9d890, 0x3e55a18f, 0x3e508f98, 0xbe011379, 0x3c9940f3, 0x3dbc2c02, 0xbde73e3e,
+ 0x3de94b23, 0xbc281300, 0x3eba8b81, 0x3e256266, 0x3cdb86d0, 0xbb9e91f1, 0xbe82c0db, 0xbe2d5c54,
+ 0xbd04a768, 0xbe14a2dc, 0x3eb12850, 0x3de0aaed, 0x3d68efa4, 0xbe980ab2, 0x3e6791dc, 0xbdf545e9,
+ 0x3f0d1cc6, 0xbe409a27, 0xbe0201f9, 0xbd69e1e9, 0x3e29144a, 0xbdb22c50, 0x3dd474d0, 0x3ec10b2c,
+ 0x3ef5fab6, 0xbe8534e4, 0x3daa7cee, 0xbd9c0a43, 0xbea6d449, 0x3bf6671b, 0x3e0a0028, 0xbc0486b7,
+ 0xbe866964, 0xbeac8661, 0x3e0fc825, 0xbe1a656d, 0x3e149122, 0x3ed321c9, 0xbd73fd7e, 0xbe4c1e76,
+ 0xbe0639c1, 0xbc994f46, 0x3f0817a7, 0x3ea7b88b, 0xbcecfb6e, 0x3dcd3e23, 0x3c9d9391, 0x3e7810e1,
+ 0xbd1b2148, 0xbde52753, 0xbd99c501, 0xbe822b80, 0xbe6d2eba, 0xbf1257a4, 0x3d55a4fc, 0x3e0465d9,
+ 0x3e1a5de5, 0xbd39bc8a, 0xbe986f08, 0xbf16d72f, 0xbe6f7d89, 0xbd4794ed, 0x3eba78a1, 0x3e1f366b,
+ 0xbec6a1f6, 0xbe22371c, 0xbe998548, 0xbeedbb09, 0xbeb20fca, 0x3dca729d, 0x3daa6a55, 0x3e597655,
+ 0x3d9ca2f0, 0xbe976f3d, 0x3ea5745e, 0xbdef497d, 0xbe9bcb48, 0x3daae41d, 0xbe15610c, 0x3dca1b83,
+ 0x3df18ed9, 0xbde3944c, 0x3cc1d352, 0x3e173968, 0xbecca395, 0x3ee68ed7, 0x3da3a44c, 0x3d9c7833,
+ 0x3c91020c, 0xbcd730d5, 0x3e0ae9e9, 0x3f018b19, 0x3e109503, 0xbec2b65b, 0x3c9c5d7f, 0x3e0ae3ef,
+ 0x3eb36c8f, 0x3e024a0b, 0x3e237b7f, 0x3ed75efa, 0xbd872e72, 0xbe5144ae, 0x3e3125aa, 0x3e822d83,
+ 0x3d81d432, 0xbd005db9, 0xbd70c5f4, 0xbe0aa276, 0xbe174404, 0x3e2f7b6e, 0x3e291882, 0xbcb69951,
+ 0xbd3024ee, 0x3dbee28a, 0x3e045d88, 0xbc1556e9, 0xbf045f81, 0x3e8597eb, 0xbed58eaf, 0xbdf2d009,
+ 0x3d5ccefa, 0x3d80a82c, 0x3d0f1aaf, 0xbd297bb6, 0xbd5cf5f9, 0xbd7aa4ef, 0x3b9221a6, 0x3e120914,
+ 0xbe1a9279, 0xbdf55ab5, 0x3e07121b, 0x3c3a7389, 0x3db67c00, 0x3e148681, 0xbe783eba, 0x3e7c71bc,
+ 0x3e831141, 0x3e189c55, 0x3d5b2bb7, 0x3e3beaf8, 0xbecaa342, 0x3e78b330, 0xbe8cfee3, 0x3ddb442e,
+ 0x3d4e29a9, 0x3e190bb8, 0x3df0492a, 0xbd9c5ee4, 0xbe9ac6b4, 0x3e19149d, 0xbed38134, 0xbd82ac76,
+ 0xbe57305f, 0x3d89beb4, 0xbe1faa9f, 0xbdd3e36e, 0xbd16d240, 0xbdd4a97b, 0x3d0f039e, 0x3e7ea50a,
+ 0xbe041c1a, 0x3db1a044, 0xbe02b4f4, 0xbd43319d, 0xbe1306c6, 0x3e101a09, 0xbdb3dd3d, 0x3ea8e90e,
+ 0x3eabb8fe, 0x3ecddfdb, 0x3ed8b9ff, 0x3ea0f13c, 0xbefc309b, 0x3e4ba5b2, 0xbeaa7708, 0x3e4e6ab9,
+ 0x3dd7c573, 0x3db21cf2, 0x3e07c2be, 0xbe88c92c, 0x3f095d8b, 0xbeadfdb0, 0x3dc04353, 0xbdaa8552,
+ 0x3ebe6f05, 0xbe89da5f, 0xbdb593c6, 0xbe41807c, 0xbccb641a, 0x3ebc2c70, 0xbea8528e, 0xbcb8c33b,
+ 0xbe496b5f, 0xbd1eee81, 0xbe818739, 0xbe8461f1, 0x3e87da23, 0x3e783387, 0xbd2ff84b, 0xbe49d38f,
+ 0xbecf88de, 0xbe6ae6f3, 0x3e8392b9, 0x3cb97a79, 0x3d977635, 0xbe04b9f1, 0x3e9bbe4e, 0xbe490b5c,
+ 0x3d585e46, 0xbe6e8233, 0x3dae8e51, 0xbe073bd9, 0x3e985f51, 0xbec6bfbf, 0x3e3ba7b0, 0x3e1a42ca,
+ 0xbc8ebcee, 0xbdfc70a3, 0xbe05580f, 0xbd825742, 0xbea72399, 0xbc1f0f1b, 0xbeb5f2e6, 0xbe8a0c09,
+ 0x3ddf9b3e, 0xbe825f6e, 0xbe93ab71, 0xbe810bbd, 0x3e51d1db, 0xbcc7a546, 0x3e4c7c28, 0xbe50359e,
+ 0xbd7324a2, 0xbc3d18e5, 0x3dc14b61, 0x3e55c6cc, 0x3e50f933, 0xbed6b4d5, 0x3e678bfd, 0xbdc2e2e1,
+ 0x3d08cf79, 0x3d9c0fb7, 0xbc28df17, 0xbe4bd8b8, 0x3ee1c82f, 0xbeb2c0c8, 0x3ea18260, 0x3e2d96ab,
+ 0x3e99a6c5, 0xbdc52eef, 0x3e2d7e04, 0xbca5a5cc, 0x3bf656fd, 0xbe298841, 0x3e058c48, 0xbdbedb12,
+ 0x3da313c7, 0xbe12514b, 0x3e84363e, 0xbe97371c, 0x3e5eca27, 0x3d312260, 0x3d593db9, 0xbea07af2,
+ 0xbd3f343a, 0xbe943616, 0x3c878056, 0x3e3ebea1, 0x3e656426, 0xbe783956, 0x3eb972a0, 0x3c43856e,
+ 0x3e439c5f, 0xbd3d8250, 0x3ea79b5c, 0xbf0257b0, 0x3dcd1c65, 0xbd9eb4d6, 0xbddf1712, 0xbe238028,
+ 0x3d67380d, 0x3c70ba3c, 0x3eb9e5cc, 0x3e414df3, 0xbd3723c5, 0x3e835e14, 0x3e074ddb, 0xbd42a0e5,
+ 0xbe1b92ec, 0x3e404c6c, 0x3e1d35be, 0x3e3b1c32, 0x3deb863a, 0xbe1de755, 0x3ed76abe, 0xbe1859c1,
+ 0xbeb1271c, 0xbeced9f0, 0x3e3cf0e5, 0xbe77b47e, 0x3dc99115, 0x3e7777a1, 0x3eb14dec, 0x3e2ab392,
+ 0x3e3258d2, 0x3dafa4ef, 0x3f1996c7, 0xbd07f68b, 0x3e591136, 0x3d4ab6ef, 0xbda3765e, 0xbcadb9ce,
+ 0x3c46ed48, 0x3d8982ef, 0x3e5ac72d, 0x3db426a8, 0xbe44c26b, 0x3e961c61, 0x3d4b981b, 0xbd66fdfb,
+ 0xbdf45781, 0xbe1fa9b8, 0xbe1c9edf, 0x3e7fab3d, 0x3e1942d3, 0x3e937b5e, 0x3ebbdcc5, 0xbdf237d9,
+ 0x3dfa2411, 0x3ccb2056, 0xbd5eac28, 0x3e0a9bf9, 0xbdb587e3, 0x3eb9da20, 0x3e23e301, 0x3ebd0753,
+ 0xbec81407, 0x3d8be170, 0x3e9c9d4c, 0x3d4f1e4d, 0x3d5d9f0c, 0x3e1c0d9e, 0xbdc04aa7, 0x3d89d162,
+ 0x3e039de7, 0x3dc75cac, 0xbe9d8f25, 0xbe420524, 0xbdb7f219, 0x3e4aa84e, 0x3cd8964f, 0x3d1d3887,
+ 0x3e306f6b, 0xbdc61fbb, 0xbedee153, 0x3e918220, 0x3e4bf7dc, 0x3e5e3a72, 0x3d962957, 0xbd843ed1,
+ 0x3ea2d99f, 0x3e5f3c5e, 0xbdb77892, 0xbe2af4b9, 0xbd9550cf, 0x3e0a470b, 0xbda1e8e1, 0x3eebc61c,
+ 0x3e1c96a5, 0x3d03d187, 0xbe724efd, 0x3ddb30ff, 0x3e2fc994, 0xbca8a076, 0xbf378161, 0xbe3396d3,
+ 0xbe4d31c8, 0x3de62bdd, 0x3e8538fe, 0x3e597ba5, 0x3e0ca8bd, 0xbe30007d, 0x3ef9e236, 0x3eac6f92,
+ 0xbe7168da, 0x3ea65d5e, 0x3eec0479, 0xbec0812f, 0xbef7e24b, 0xbe167c25, 0x3e9f2200, 0xbde4c0e6,
+ 0xbe8a65ef, 0x3d079e25, 0xbe8bfab4, 0x3e459bf3, 0x3e80baf5, 0xbe49dc90, 0xbf1fe7f6, 0xbe264526,
+ 0x3e3df345, 0xbde4c7fa, 0x3e2b3069, 0x3e48139c, 0xbe341c64, 0x3c5f4ea3, 0xbe93a06c, 0xbe10a4d5,
+ 0x3c387869, 0xbb3a9678, 0x3db9d6e2, 0x3e44fb16, 0xbe5cc24c, 0xbe830cc7, 0xbe8dbfdd, 0x3eba47f7,
+ 0xbe45bfa6, 0x3b838b12, 0x3eec73d7, 0xbdba0f43, 0xbd3bdd5e, 0xbd86a881, 0xbdc4ef32, 0xbeed7eba,
+ 0x3e50fdc3, 0xbebbc450, 0xbee262f6, 0x3df81ea7, 0xbe03ae0b, 0x3d84f060, 0x3cb26b81, 0x3e233b05,
+ 0xbede3814, 0x3cd2b8db, 0x3e0706b5, 0x3d7881fc, 0x3e069ef1, 0x3ee488b8, 0x3e99f57e, 0x3e04c22b,
+ 0x3e4d94e0, 0xbd58ee69, 0xbdc6b88e, 0x3e52974a, 0x3f19ad99, 0x3e3010aa, 0x3dd17021, 0xbe44a020,
+ 0x3e98878d, 0xbee13e10, 0x3e35af14, 0x3f3a9b0d, 0x3f0c00dc, 0x3e9befb9, 0xbe7eed15, 0x3da6a00b,
+ 0xbe497f88, 0xbed52452, 0xbe15773a, 0xbf24f93f, 0xbe8f1624, 0x3ef50841, 0x3f355b6b, 0x3ded49dc
+};
+
+static const uint32_t _K25[] = {
+ 0x3c932e13, 0xbcc3781e, 0x39ebf786, 0xbd0b54c6, 0xbc05bc2f, 0xbd86b03c, 0x3cd48fa8, 0x3d9bc78c,
+ 0xbd122c67, 0xbc69c48f, 0x3dad25d2, 0x3c61e8fe, 0xbd278d32, 0xbd34e10f, 0x3cfde5f1, 0xbd8acb0e,
+ 0x3cf6e5a6, 0xbd917e5b, 0x3ac1d99c, 0xbc06dcc2, 0x3c454784, 0xbd58f085, 0xbd3482f1, 0x3c6e4c63,
+ 0xbbb2fb40, 0xbbeb5249, 0x3b87fdf1, 0x3c012f8a, 0xbc5b51ad, 0xbd59a1ae, 0x3cfdd813, 0x3d2d84a0,
+ 0xbc0920da, 0x3cf169d0, 0xbc1a5e7d, 0x3b26a35f, 0x3cd088e4, 0x3d19f1b9, 0x3c96c7dd, 0x3d6adbd1,
+ 0xbd233cc1, 0x3ba6fae3, 0xbcbb34da, 0x3cddb8fd, 0xbab46e3a, 0xbd6b98bf, 0xbc334ab8, 0x3be0b914,
+ 0x3da2ac24, 0xbc1e9c16, 0xbd301378, 0xbd1c56e2, 0xbc97e767, 0xba73749a, 0x3c14fc1d, 0x3c825cc9,
+ 0xbd2c4178, 0xbc27e96e, 0x3d20eb64, 0xbd809e3b, 0xbd807ea2, 0x3d2855a2, 0xbd4510c4, 0xbd694559,
+ 0x3d3e5db4, 0x3bc5eae2, 0x3d6fd73c, 0x3beaa010, 0xbd1d7ba6, 0xbc5f0d05, 0x3d771173, 0x3c9ea8fa,
+ 0xbc8693bb, 0x3d26f0b2, 0x3c33a9d8, 0xbd19069f, 0x3b1cdadc, 0xbb585266, 0x3af2aff5, 0xbc967e28,
+ 0xbb0e394d, 0xbd11366a, 0x3c3e06ee, 0xbd3ed8c8, 0xbb390508, 0x3befbf28, 0xbd0a70bd, 0x3cfaa4ce,
+ 0x3ad8cf27, 0xbb73da9d, 0xbcb3cb23, 0x3bb33df4, 0x3c91d7d0, 0xbd336d0c, 0xbbb60da9, 0x3d08e734,
+ 0xbd74ae37, 0x3bf53574, 0x3d16b780, 0xbcabb054, 0x3d2a35e0, 0x3d90ddd9, 0x3dd0d228, 0x3d203b94,
+ 0xbcedfee1, 0x3d67e1be, 0x3c2252e3, 0x3c089dac, 0xbc6fc58f, 0x3d1babbd, 0xbc25ed4c, 0x3c616415,
+ 0x3d1647ac, 0x3c09df79, 0xbcd3464a, 0xbd381477, 0x3d187b0a, 0xbd03fb3a, 0xbce08e76, 0x3d4fcef0,
+ 0x3b6c00ad, 0xbcc45bfd, 0xbcb3f120, 0x3d092cf8, 0xbdb6c43e, 0x3c832c25, 0xbc2540c0, 0x3b905354,
+ 0x3cc459f4, 0x3c92f38e, 0x3bdc2b86, 0xbc650dc6, 0x3a5d0915, 0xbc95e813, 0x3d029ab4, 0xbd3882a0,
+ 0xbd17c73a, 0x3d1b9d9b, 0xbb58976e, 0xbc80dd6c, 0x3b8ab5f8, 0x3c6e2210, 0x3d29304e, 0xbc875ca0,
+ 0xbc5d09c7, 0xbd8ba9a0, 0x3ca9a408, 0xbd2133dd, 0xbd146c23, 0x3c14a6b0, 0x3c86f302, 0xbc2e8c59,
+ 0x3d15ef9b, 0xbcc9f43c, 0xbc3d57b7, 0x3b92fc5c, 0xbc9e9424, 0x3c8eaf87, 0xbd893404, 0x3c79b98e,
+ 0xbb32d845, 0x3cf5ce36, 0xbc4c2501, 0x3d398d9e, 0xbd2746c5, 0x3cd52aba, 0xbc94ddab, 0x3d89c485,
+ 0x3c2262cb, 0xbcc9188d, 0xbcaf02a1, 0x3c9f30f9, 0xbcca3557, 0x3ccdbbac, 0x3aac27ef, 0xbc0eb64b,
+ 0xbad622de, 0xbca953e5, 0x3d1dffc5, 0x3a55c955, 0xbcb79b58, 0xbc9e6eca, 0xbcc813c3, 0x3ce19ed1,
+ 0x3cc0bc77, 0xbcc32431, 0x3d514dbc, 0xbc001de7, 0xbd4693d5, 0x3c7d9150, 0xbc0e7aa8, 0xbd02f659,
+ 0xbbbef499, 0x3cc62c36, 0x3ce3e88a, 0x3cdffa85, 0xbc2e33e7, 0x3c26a285, 0xbc9df50b, 0x3d464f6f,
+ 0xbbe69ded, 0xbd138f11, 0x3b82cf55, 0xbcbf2fce, 0x3cfee654, 0x3d2e8f01, 0xbcf90843, 0xbc5d077c,
+ 0x3c36e862, 0x3d09fbee, 0x3cb8ff78, 0x3b7148d1, 0x3c97453e, 0x3d40dc79, 0xbc82f51a, 0xbc4831f2,
+ 0xbc26088a, 0xbc9f706a, 0x3dc8bbb9, 0x3cb65802, 0xbc4b0f1f, 0x3c7c0b68, 0x3cd46160, 0xbc666af9,
+ 0x3c01c0e2, 0x3d1d9231, 0xbc317b86, 0xbc781df2, 0x3c99c6bf, 0xba0a1df4, 0x3d10e6b8, 0x3ae1bc1f,
+ 0xbd4cfc9b, 0xbb8ca70b, 0xbbd3900c, 0xbc87dfdb, 0x3b04ba24, 0x3b3d0fdb, 0x3d4229e6, 0x3c9ce503,
+ 0x3b318733, 0xbd4e7e43, 0x3d38a64c, 0xbbea5a14, 0xbcc33333, 0xbcb570b2, 0xbd431d81, 0x3cec2b64,
+ 0x3d552b6e, 0xbd25dc5c, 0xbcea7710, 0xbc6cc0c0, 0xb82f70de, 0xbd08723f, 0x3bd7eb06, 0xbc145c86,
+ 0x3c810f97, 0xbc5d8504, 0x3c785142, 0x3c50a292, 0xbc3b5c27, 0xbd23d45f, 0xbc0d033f, 0x3d121ba0,
+ 0x3cb6f738, 0xbcd90bba, 0x3d2771b7, 0xbccac7c5, 0x3d4d949b, 0x3d0fe31a, 0xbacdf612, 0x3b0522a3,
+ 0x3c3c4c2c, 0xbcd61cdb, 0x3ce64444, 0xbc4d1a5c, 0x3cc31605, 0x3d09b046, 0xbc9bad26, 0x3cd6aac7,
+ 0xbbbf7b40, 0xbb0ef1a9, 0x3d9e6bf7, 0xbcd21d69, 0xbd262d6a, 0x3c263dfa, 0x3cd5cab5, 0x3cb38d81,
+ 0x3cf8bea9, 0x3c6784d0, 0xbcf808a7, 0x3d1bb510, 0x3c36f2f5, 0xbb440380, 0x3ac336c7, 0x3bcf8df5,
+ 0x3b7e007a, 0xbafd8353, 0xbb46f770, 0x3c00059d, 0xbac83c32, 0xbc86d19e, 0x3d24d632, 0x3a73f5ca,
+ 0x3bc6f5f5, 0xbccac417, 0x3d06cdbb, 0xbce41da9, 0x3b0d5f5a, 0x3a3b5303, 0xbd2199fb, 0x3be23cfe,
+ 0xbb39154a, 0xbcb79b81, 0xbafe06ea, 0xbc99d787, 0x3b45150f, 0xbcd7e90b, 0x3b961901, 0xbd9a09e2,
+ 0xbb2ddd5a, 0x3cdf5c16, 0x3c0340b8, 0x3b59e1be, 0x3cd6b844, 0xbc405b6b, 0x3cfc123d, 0x3cf6a010,
+ 0xbb93f6fd, 0x3cdb72b2, 0xbd861818, 0xbd2ca715, 0x3c7ee59d, 0x3d1cdaa5, 0xbc341c7e, 0x3b4da2fb,
+ 0xbcfeaa92, 0xbc9d74e6, 0x3d8021d3, 0xbb9ee2c9, 0x3c192287, 0x3d0cfaed, 0x3b843c68, 0x3cc86d57,
+ 0xbccfcf77, 0xbc3027c3, 0x3d01691b, 0x3d052762, 0x3bfb2446, 0xbc49b369, 0x3d7674d8, 0xbc2021a4,
+ 0x3d43f0cf, 0xbd2b7c58, 0x39cff6ef, 0x3d2442e8, 0xbd04931c, 0xbcd374db, 0xbcb6b6bd, 0x3b2dc54c,
+ 0x3d2c55a1, 0xbbdc9959, 0x3c56e785, 0x3cdde1e0, 0xbcca27db, 0xbd482edb, 0x3b916e2b, 0x3b886f5f,
+ 0x3cd5f0c6, 0xbcd1546c, 0x3cda2279, 0xbbf205eb, 0x3c23c889, 0xbcc5e847, 0x3d2b10bf, 0xbc84ba34,
+ 0xbd6e2e45, 0x3c12af80, 0x3c70c23b, 0x3b6540a6, 0x3d19a837, 0x3b037828, 0xbc255ffc, 0xbd9d1175,
+ 0x3c8494d1, 0x39ca2dfa, 0xbcaa7565, 0x3c40ce2f, 0xbb63d2b0, 0x3c13610d, 0x3c35ac4b, 0x3c9adae8,
+ 0xbcd68bab, 0x3ba0729c, 0x3d0f25ea, 0x3c79a7ef, 0x3bdb3976, 0xbc35b853, 0x3d23d2cf, 0xbc002113,
+ 0x3d14e27e, 0xbc396595, 0xbd1952a1, 0x3b209c41, 0xbb8c3225, 0xbbfadead, 0xbc6ab7d5, 0xbbf03548,
+ 0x3d37b3c4, 0x3cd618f2, 0xbabe2a14, 0xbd2a15ea, 0xbc42652a, 0xbc13685e, 0xbc24fd86, 0x3c0ae054,
+ 0x3cc9b0f3, 0xbbe8e033, 0xbc728c8d, 0xbc77041c, 0xb9450562, 0x3cac2a21, 0xbcd58c85, 0xbc6e53fe,
+ 0xbba20230, 0xbc3c64c3, 0xbd06f504, 0x3c8957f0, 0xbd78d196, 0xbc65ea80, 0x3c6ce87f, 0x3cb94e35,
+ 0x3cee248c, 0x3cf5c2c5, 0x3c19058b, 0xbcce6a55, 0xbd14b97b, 0xbd11df93, 0x3c9f658d, 0xb9033dc2,
+ 0xbce54e4f, 0xbc6338b6, 0x3c5c8299, 0x3c69ccc1, 0xbd0aca61, 0x3c134ee7, 0xbcb2268c, 0xbc5bd1f7,
+ 0x3c946722, 0x3ba594e2, 0xbb22ede5, 0xbb8f1195, 0xbbe164ef, 0x3c8289f0, 0xba18edc5, 0x3d24183d,
+ 0xba550428, 0x3b91e6b4, 0x3c9aab7e, 0x3c9e2a2e, 0xb903d4ad, 0xbc9aeece, 0x3ba3bcc4, 0xbcb87727,
+ 0xbc7ced7e, 0x3ba80039, 0xbd19a2c3, 0x3cc952f2, 0xbca4f5e0, 0xbcb4de71, 0xbc80230c, 0x3b84c07a,
+ 0x3d670ba0, 0x3cdd8666, 0x3c91931d, 0x3be74efb, 0xbca47665, 0xbc904b08, 0xbc8d9ef9, 0xbb8dc17d,
+ 0x3cda93fc, 0x3a1652a9, 0xbb421516, 0xbca77806, 0x3d27e520, 0x3c4d60e1, 0x3c89eb45, 0xbc6e4bc3,
+ 0xbd303e64, 0x3bfb7a6b, 0xbd1a6cae, 0x3b335411, 0xbd1e6703, 0xbc692184, 0x3d498623, 0x3cf0d6d4,
+ 0xbc1d0a02, 0x3d18bbf0, 0xbb41603d, 0xbcaa9e5a, 0xbd58211b, 0xbc42c429, 0xbc8fe1b8, 0xbb9823c0,
+ 0xbd100a99, 0xbce81e4f, 0x3ca1db86, 0xbb43f138, 0xbcdfe939, 0x3c3e4d99, 0xbc0a7920, 0xbb36d750,
+ 0x3c91c929, 0x3cfe3657, 0x3b6e8104, 0x3d026872, 0xbc98dcb2, 0xbcaa75df, 0xbc3157cd, 0x3d69d949,
+ 0x3be909b3, 0xbbbf35dc, 0x3c8479a2, 0xbcf0c103, 0x3cd7b146, 0xbc232fdd, 0xbd06dd8b, 0xbc875cf5,
+ 0xbb333a64, 0x3bc9176d, 0xbceb3cfa, 0xbb14c815, 0xbd1d5a16, 0xbc164e6f, 0xbd4f842d, 0x3bc34117,
+ 0x3cd6349f, 0x3d02f6fd, 0xbc0a2712, 0x3ccb699e, 0xbd0d421b, 0xbab29a60, 0xbcd5088d, 0x3caf187d,
+ 0x3c4bff38, 0x3c4beebb, 0x3beca135, 0xbd126865, 0x3d120fd5, 0xbb817617, 0xbc1eeb1e, 0xbc0f0eff,
+ 0xbcb736e1, 0x3c0f357f, 0xbd35da81, 0x39b2b675, 0xbc18be90, 0xbcbc100f, 0x3d8f6dd6, 0x3c6a4b86,
+ 0xbbb5891a, 0x3ca5ccf6, 0x3c7f13dd, 0xbcb3a19b, 0xbd54a3c5, 0xbbaeaa49, 0x3ceb2ded, 0x3b936afb,
+ 0xbc838078, 0xbca0c6d8, 0xbb236966, 0x3b8dd20e, 0xbc79986c, 0xbb24322b, 0xbc9082ae, 0xbbf70531,
+ 0xbb1d2d20, 0xbcb1c409, 0x3c68de29, 0x3bd2476b, 0xbca5c482, 0x3d25fdc4, 0x3d27f73d, 0x3c4a6555,
+ 0xbb044993, 0x3d384b38, 0x3c0fc597, 0x3cc251f3, 0x3d1bc686, 0x3cc2b5b9, 0x3c3b07f2, 0xbd379fb8,
+ 0x3c389d21, 0xbbca7a02, 0x3ca40a02, 0xbd0dcbe4, 0xbcba8f7f, 0xbb347fba, 0x3c11c4de, 0xbd1294c7,
+ 0x3a762125, 0xbc4445cc, 0x3c509773, 0x3d266479, 0x3cfc1a25, 0x3b6891f8, 0x3c9b4926, 0xbbbef8d1,
+ 0xbd184d38, 0x3d2ef321, 0xbc93a356, 0x3cb4c16b, 0xbc224af7, 0x3ba3073a, 0x3b6d0d78, 0xbb65eaa4,
+ 0xbd4e6715, 0xbc6ff4a9, 0x3cc1f20a, 0x3c5abb7e, 0x3d0af5f3, 0x3cbbf3f3, 0x3cc6accd, 0x3bac281e,
+ 0xbce6f3a2, 0xbbda11e2, 0x3d860cfe, 0xbc94bf9c, 0x3d08beb1, 0xbc0f6196, 0xbd32c357, 0xbc2364d1,
+ 0x3d38f390, 0xbcd56c41, 0xbd205b21, 0xbbf9dcb2, 0x3b9ec793, 0xba1c32e5, 0x3cf88761, 0x3bf5408f,
+ 0xbd2d9f57, 0x3d0991d1, 0x3d49c8c2, 0x3d186d17, 0xbd2d0a87, 0x3c0a0d74, 0x3d25d456, 0x3b17bfbd,
+ 0xbd8f5e30, 0x3d4cabc5, 0xbc6866b5, 0x3ad4aab7, 0xbcfc42c3, 0x3cffb0ff, 0xbcb80e83, 0xbca4e555,
+ 0x393d3353, 0xbbf581e2, 0xbc7cd4ed, 0xbd2211be, 0xbc5e8f9c, 0x3ca15d8b, 0x3d791efd, 0x3bee7302,
+ 0xbc2b8d64, 0x3c2bfa3e, 0xbc94a0de, 0x3cd31954, 0x3d3c41bf, 0x3cfb58f7, 0xbcf607d3, 0xbc973950,
+ 0x3b4d65db, 0xbd4b9c63, 0x3d0fdcde, 0xbc8cab88, 0x3b207128, 0xbc52efaf, 0xbb94cae9, 0xbd000cdb,
+ 0xbc86453c, 0xbcc4d81d, 0xbc7b6a4a, 0x3bcea3da, 0x3cccd34e, 0xbbb488b9, 0x3b46ad77, 0xbce9823f,
+ 0xbd196071, 0xbc7e2e9d, 0x3cf7b051, 0x3cf5b72f, 0x3d03740e, 0x3cf80ed2, 0xbd2a32f1, 0x3d00ce09,
+ 0x3cb3483d, 0xb95961df, 0xbd58a074, 0x3c42eacf, 0x3c3214b4, 0xbc63cb90, 0x3d003216, 0x3da61036,
+ 0xbd545aa2, 0x3d0fad5c, 0x3ca5399c, 0x3d1282ec, 0xbd3a442b, 0xbcddb3d3, 0xbccebd77, 0x3c231440,
+ 0xbbc0bfdd, 0xbd2c2438, 0x3ce37923, 0xbd5785dd, 0xbcdbcc8c, 0xbbed3192, 0xbc62eeca, 0xbc605e36,
+ 0x3bb479c1, 0xbbecfc32, 0xbc3530d9, 0xbd1b178c, 0xbc3f8ba0, 0x3b2ea3c7, 0x3c2360af, 0x3d136e23,
+ 0xbce85934, 0xbb3b83f5, 0xbc0cd387, 0xbc87397e, 0xbcdb6923, 0x3c0bcd7b, 0xbbed378b, 0x3cb8b44e,
+ 0x3cd7725b, 0xbd31bd94, 0x3d028298, 0xbbe0b031, 0x3cb73be7, 0xbc2001f6, 0xbceb5d8e, 0x3abbcdb2,
+ 0x3cea9c4b, 0xbb96a8a5, 0xbd1a8123, 0xbcb5255e, 0x3c501e4a, 0xbceb225a, 0x3c90ab53, 0x3c0dc2b3,
+ 0xbbd533bd, 0xbb5c57d3, 0xbac57d65, 0x3d48fa48, 0xbcf8f0c9, 0x3ca95bd2, 0x3c84644d, 0x3d2b7a4e,
+ 0x3cac7ba4, 0x3c7dd43a, 0xbcfb0272, 0x3b0529dd, 0xbc6cabc3, 0xbcd32a89, 0xbc24c80c, 0xbc6c475b,
+ 0x3cb22237, 0xbc1f3295, 0xbb9eb74e, 0xbc6123fa, 0x3be05795, 0x3babcf41, 0xbc3597cf, 0xbc3450ee,
+ 0xbc48dae9, 0xbbb37da3, 0xbb6c4592, 0x3c238241, 0xbcf74c59, 0xbccd1889, 0x3c6259f9, 0xbcf0a880,
+ 0x3cd2d215, 0x3cdac7e4, 0x3c1ac2f7, 0x3b80582c, 0x3bac04e1, 0x3bfc0755, 0x3a8fe196, 0x3cd1ac81,
+ 0x3b9a0e7f, 0xbc77da22, 0x3c503080, 0xbd52b17f, 0xbcb1f671, 0xbcb06bc2, 0x3c7f2969, 0xbb8eb761,
+ 0x3b81a33c, 0xbcf1b562, 0x3c40c53c, 0xbc3ea2e3, 0x3d340ff9, 0x3c2bfc24, 0x3ceb52f9, 0x3b1a0677,
+ 0xbcc6dee4, 0x3c58676b, 0x3c95c2f0, 0x3cb8b55d, 0xbcc0d727, 0x3c9c1952, 0x3bb7992f, 0x3b84ba31,
+ 0x3cd1f3f2, 0x3b48e2c1, 0xbcb6a842, 0xbccd2a68, 0xbc6ecd67, 0xbb993710, 0x39aa5040, 0x3d2d0004,
+ 0x3b06cca5, 0xbc1166cc, 0xbb9f0043, 0x3d0d0617, 0xbc8415fb, 0x3d0ad28f, 0xbcbfef20, 0x3cf065db,
+ 0x3c934bae, 0xbc319f6f, 0xbbb3e9cd, 0xbd0146ad, 0xbc613bc4, 0xbcfa9830, 0xbc42a21e, 0x3c06c991,
+ 0x3d058fce, 0xbca61a04, 0x3a63670d, 0x3d0c97d5, 0xbc812e54, 0xbd887c09, 0x3d3d961d, 0xbccb8795,
+ 0xbb9ca54b, 0x3c6e0fe6, 0x3a7c7df4, 0xbcaade15, 0xbaf45bbc, 0xbc3f1d7b, 0xbc5e1d19, 0x3ccce64c,
+ 0x3c6976e8, 0x3c9d624f, 0xbb9d0ad6, 0xbb905c21, 0xbc9c47c8, 0xbd0359ba, 0x3b87365e, 0x3c298574,
+ 0xbcb8ea4e, 0x3d1bc6c9, 0xbc664dc5, 0xbd032345, 0x3d1fd407, 0x3b98d75b, 0x3d11143b, 0x3d5f81bf,
+ 0x3cbb3d69, 0xbc245a08, 0x3b0e1d50, 0xbd0fb28c, 0xbbb0d3bc, 0x3d186297, 0x3c2697c3, 0x3cd77199,
+ 0xba8bfcf9, 0xbbf1dcfe, 0xbc100607, 0x3c9569be, 0xbc9fffa8, 0xbd618ace, 0x3c9f9771, 0x3d422850,
+ 0xbbde238a, 0xbd16d6d5, 0xbb44839a, 0xbbeaf20c, 0xbcdaaafd, 0x3d4ccb56, 0xbcaad043, 0xbd2beb44,
+ 0x3d384d15, 0xbbce10ba, 0x3d080b71, 0xbd20783d, 0x3ce08c9b, 0x3c9e7e7e, 0xba75554e, 0x3d410a4f,
+ 0x3c2eba8d, 0x3ace4cb5, 0x3c3cdb74, 0x3cfbcace, 0x3c037592, 0xbd79931f, 0x3c8da3a7, 0xbb82cf38,
+ 0x3cb5ea50, 0x3b23437d, 0x3d032ddf, 0xbcb02303, 0xbc3f8643, 0xbc280be6, 0xbd2d27c0, 0xbcaef397,
+ 0x3cc38c2a, 0x3c4522b7, 0x3b6d10d6, 0xbc3b917d, 0xbc0674f5, 0xbd325e07, 0x3cea5f1d, 0x3cc0736a,
+ 0xbcb69603, 0x3d511610, 0xbcd9d97e, 0x3cb05528, 0x3c06aafd, 0x3c633c1d, 0x3c8ad52e, 0x3c8edd05,
+ 0x3be92757, 0x3c405b64, 0x3b3f5993, 0xbc8cd791, 0xbccf9e34, 0x3c24dbed, 0x3d5ea464, 0x3cde3799,
+ 0x3d0c4a06, 0xbd78a577, 0xbb9b0b34, 0xbca918fe, 0xbd5a4395, 0xbc3f65e4, 0x3b20a6de, 0x3bc5626b,
+ 0xbc0c5d03, 0xbcfe2307, 0x3cc694bc, 0x3abfa79e, 0xbccaacda, 0x3cee7f1b, 0x3c5de88f, 0x39a5dec4,
+ 0xbd0f7fa7, 0x3992aa66, 0x3cbc5d01, 0x3ae58824, 0xbd81ce0c, 0xbd0c0408, 0x3d3fc640, 0xbb9f235a,
+ 0xbc3b63cf, 0x3cb8feef, 0x3d65a1bb, 0xbcdd6bcd, 0xbd012801, 0x3c71b265, 0xbb75f067, 0xbd31a3cc,
+ 0xbc489051, 0xbc2687a0, 0xbb8bd277, 0xbae34a9f, 0xbb99ac8d, 0xbc8b5ed4, 0x3c177917, 0x3c75b170,
+ 0x3b85b4bf, 0x3c58e687, 0xbcb2e3bf, 0xbcd7dcdb, 0x3ad0b566, 0xbc63c30c, 0xbccc1b89, 0x3c88a804,
+ 0xbcc73726, 0xbc3e6405, 0x3d771c97, 0xbd5424ec, 0x3c251c39, 0x3ce1dfb3, 0x3cd28c5c, 0x3caec22a,
+ 0xbd8d869a, 0xbba6eafd, 0xbcf254ec, 0x3c94b66d, 0xbc346d0a, 0x3c83abb5, 0xbcd8fa27, 0xbc5798d6,
+ 0xbc4e29fa, 0x3d7136f9, 0xbc058423, 0x3cadf2d7, 0x3cccd255, 0xbd62ff21, 0xbb3e2746, 0x3cda34c9,
+ 0x3af20f97, 0xbd02b745, 0xbd346849, 0xbd3c7132, 0xbcf4b87a, 0xbae12187, 0x3b00a953, 0x3d214c8c,
+ 0xbca3051b, 0x3aa1b0b9, 0xbaad8ac3, 0xbc13478a, 0xbd1b76a1, 0xbd0b31dc, 0x3a032567, 0xbc896979,
+ 0x3c9e42c0, 0x3bdf7c2c, 0x3d123c71, 0xbbf3a233, 0xbce2f68c, 0xbcbd384b, 0x3ce849cc, 0xbbab8d09,
+ 0xbcb20890, 0xbbf6d4a8, 0xbcb2c2ec, 0xbcc1f351, 0xbc7b4537, 0xbd72bd56, 0x3b2712ab, 0x3c23aed0,
+ 0x3cdf4f9e, 0x3c98cdf9, 0xbcd6bb9b, 0xbcf043c5, 0x3a8af094, 0xbc03fdce, 0xbd210a8a, 0x3cdd6457,
+ 0x3c281983, 0xbd087f41, 0x3cd2c022, 0xbc4194a1, 0x3bccd3e4, 0xbb0b4b21, 0xbc816714, 0x3c3facaa,
+ 0x3c8abc67, 0x3a3b8fcf, 0x3b2d6e22, 0xbc21c1a5, 0x3b97c37a, 0xbc97078f, 0xbca585ff, 0xbcfe06ad,
+ 0xbbfa6ee1, 0x3ce2ceed, 0xbb8ba3d7, 0x3d01eaca, 0xbc0a54e7, 0x3c932a58, 0xbbb90e91, 0x3c4bcc38,
+ 0x3c19fac1, 0xbbaace5c, 0xbcbec40e, 0xbc964cbb, 0xbd04dbc5, 0x3d05b765, 0xbb8ec75e, 0x3cc2f72e,
+ 0xbce6bac2, 0xbcd8eba0, 0xbcc8f0a4, 0xbd13acd3, 0x3d14e11a, 0xbd01c69c, 0x3cd6b50c, 0xbcbfc037,
+ 0x3b1fa5fc, 0x3c73349c, 0xbc286b69, 0x3cc55f62, 0x3c4d445a, 0xbc7cd6f2, 0x3d6769cf, 0xbc3bddf7,
+ 0x39147c04, 0xbcad7fc3, 0xbc8aa685, 0xbd7cfbef, 0xbca10726, 0xbce02c19, 0xbabe5992, 0xbc5215f8,
+ 0x3d506bda, 0xbbefe7ee, 0x3bcd5a4e, 0x3c36ea50, 0x3d45e479, 0xbc56e41a, 0x3bddb9c2, 0xbc1b924e,
+ 0x3b92bbf8, 0xbc67865e, 0xbd340ab8, 0x3d18b1ff, 0xbc354c84, 0xbca71f2c, 0xbc8c8c7d, 0x3c529ca3,
+ 0x3d28b65c, 0x3c2b538b, 0x3c09369c, 0x3c3f5ff1, 0xbb5d47d3, 0xbd101177, 0xbce21639, 0xbc8b3925,
+ 0xbbf48c05, 0x3bf71a72, 0xbc62db8b, 0x3d3dad38, 0xbbdfd37e, 0x3d28cfec, 0x3c815ad8, 0xbce262cc,
+ 0x3b880e87, 0xbc65b1f7, 0x3c84cbe8, 0xbca2c529, 0xbc576260, 0x3d3640f0, 0x3b72b4cc, 0x3bc3669e,
+ 0xbd9ae906, 0xbb93f8e5, 0x3c8b3163, 0xbb55fa4e, 0xbbb44709, 0xbc84ab3d, 0x3cc82b22, 0xbd90ecd6,
+ 0xbb97b3f7, 0x3bd95378, 0x3d4f6f25, 0x3de2a54b, 0x3c9949e9, 0xbe02939d, 0xbc31108d, 0xbb9aee0c,
+ 0x3cd3e47d, 0xbd14c103, 0xbd3857bc, 0xbc3ad669, 0xbc696e75, 0xbd1cb31c, 0xbc8b2dc1, 0x3d0799e4,
+ 0x3d3684cb, 0xbba9f23a, 0x3c287f4e, 0xbd3662ba, 0xbcb59b8c, 0xbd2a0ac3, 0x3c344e70, 0xbd109390,
+ 0xbccdce44, 0x3de98aee, 0xbd7010ab, 0x3cdfcf1c, 0x3c6d063c, 0x3cd76a5d, 0x3d79325b, 0x3d32416e,
+ 0xbc922d40, 0xbd35b2ab, 0xbc8bdd56, 0xbd1bc92b, 0x3b53902f, 0x3dbb888c, 0xbc9737d2, 0x3d12d0b5,
+ 0xbc9caf49, 0x3d100f91, 0xbc954756, 0xbc3ceeef, 0xbb8e9a23, 0xbd7d1762, 0x3d071e4f, 0x3d495b84,
+ 0x3be644de, 0xbd8cd976, 0x3bafb3af, 0x3c0ba514, 0x3bc353f6, 0x3c9b9e70, 0x3bcd9a46, 0xbd57625d,
+ 0xbc8e2a5c, 0x3cdad7cf, 0x3c60987f, 0x3ca69e62, 0xbcc7712d, 0xbcdfd43d, 0x3d37314d, 0x3d0ef946,
+ 0x3b2c2bae, 0x3d3e4d64, 0xbc8986ba, 0xbcfb8f20, 0xbc33db29, 0xbcec99d8, 0x3ca1f578, 0xbd91f32d,
+ 0x3c946837, 0xbd019cc6, 0xbcc572ee, 0xba60e3e9, 0x3c522436, 0xbd1e6921, 0x3cf0c1ab, 0x3c8f7f18,
+ 0xbc168021, 0xbcbccb7c, 0x3c6e1dbf, 0x3c0b5331, 0x3d687e98, 0xbae4b36c, 0x3d6ca170, 0x3b168366,
+ 0xbb96153c, 0x3c4ca904, 0xbc8a9e63, 0xbce59985, 0xbaa53ac0, 0x3d682de0, 0x3d1c4a2b, 0x3d2921f9,
+ 0x3b589edb, 0x3c525781, 0x3d572cf4, 0x3d1178f4, 0xbc21baf9, 0xbc813e19, 0xbc39e9ea, 0xbc7c7b8c,
+ 0x3c2bad45, 0xb99a6205, 0x3c2a0b8c, 0xbca8c3e7, 0x3ca188b9, 0x3c88c034, 0x3c3962ba, 0x3c9ba343,
+ 0x3b38f6b1, 0xbcc67a00, 0xbd4c3fef, 0xbc260c38, 0xbce0fec3, 0x3d04e681, 0xbb94d5b5, 0x3c4dcb4e,
+ 0x3d6c5a91, 0x3b65a53b, 0xbcffb44d, 0xbb509b36, 0xbd3f0e10, 0x3c8cf030, 0xbc45154c, 0x3d28dee5,
+ 0x3b6b5e15, 0x3d085146, 0x3bf297da, 0x3c8d39aa, 0x3c25d145, 0x3d88df42, 0x3bb63979, 0xbda8c40a,
+ 0xbcb556cb, 0x3c3a564f, 0x3c21af99, 0xbc657165, 0xbcd20a5c, 0xbc30fd9f, 0xb987683e, 0x3c6ff0a8,
+ 0x3c02b3d3, 0xbc855015, 0xbc8d9b1b, 0x3d887803, 0xbb28622f, 0xbc0d90b6, 0x3c690331, 0x3d1fdba4,
+ 0x3c12ab80, 0xbdbb6265, 0x3c1539da, 0xbc8eced6, 0x3d455543, 0x3cdb9f6f, 0xbcc759a8, 0xbcac65a6,
+ 0xbd3ed2db, 0x3cab0073, 0x3d6143cc, 0x3d0c9a53, 0x3ce29e82, 0xbd3302d3, 0x3cbb15f3, 0xbcf2c88c,
+ 0xbb7ad6ac, 0xbd717b12, 0xbbbf3328, 0xbcdd7af8, 0x3d0351a5, 0x3d321615, 0xbd622187, 0xbcc15615,
+ 0x3cac1c0c, 0x3cc7c0ed, 0xbcd99df7, 0xbc802cf9, 0xbd6dfc56, 0x3d5171cf, 0xbb5a5384, 0x3c886c5f,
+ 0xbd4107b0, 0xbca4bd0a, 0x3d2d1cb5, 0xbcbfe718, 0x3cdc8d76, 0xbca0eb47, 0x3c96324b, 0x3cded0c0,
+ 0x3d2547a1, 0xbbf22f8d, 0xbdbcb6b2, 0xbd0eba74, 0xbcefec4c, 0xbd2f9962, 0x3d0f8968, 0x3c2b11b0,
+ 0xba3c1558, 0xbcf48d88, 0x3c693a2a, 0xbd383020, 0x3d0063df, 0xbd3f9b6d, 0xbc219725, 0xbc479964,
+ 0xbc52830c, 0xbdda4d41, 0x3c9ab4bc, 0x3bc4d7a5, 0x3d98ef71, 0x3cf38c35, 0x3da31a7e, 0x3d0beea6,
+ 0xbd2e2436, 0x3d4c4fcc, 0xbc932f68, 0x3c8b55e1, 0xbd375b2b, 0xbc09c52a, 0xbc944593, 0x3d33ce0d,
+ 0x3d8c85e9, 0x3c977566, 0x3d484a5c, 0x3bff1e08, 0x3c9c148b, 0xbbfb4bf1, 0xbd1e2012, 0x3d2699a2,
+ 0x3cd3b213, 0xbdb27af0, 0xbd8498a8, 0x3c17ebed, 0xbcae51f4, 0x3d91df08, 0x3d69f95e, 0x3c447b18,
+ 0x3c6d4397, 0xba33fd96, 0xbd478e3b, 0x3d2c63a9, 0x3bdccab2, 0x3d1d64cc, 0x3d41fa02, 0xbd4302bd,
+ 0xbd204c01, 0x3d4cd93c, 0x3d4d3354, 0x3bc5eb27, 0x3c2befd1, 0xbd370e2e, 0x3ceaefc7, 0x3db50ed8,
+ 0x3adf035f, 0x3d4d3525, 0x3d00397a, 0xbc46313a, 0x3addc69b, 0xbdaaf2ce, 0x3c47c418, 0xbdd0c2c7,
+ 0x3c49f2da, 0xbc1e2c08, 0x3c88c235, 0xbd3e1fad, 0x3c49e9e3, 0xbd002689, 0x3d5d40a1, 0x3b76e23a,
+ 0xbce4474f, 0xbd53a639, 0xbc8ef950, 0x3b42a24f, 0x3c77d951, 0xbc559f85, 0x3d2d438c, 0x3cb1eb12,
+ 0xbd6cbd0e, 0x3d5db62c, 0xbd024c04, 0xbcf6b06b, 0x3ddda375, 0x3c605fd1, 0x3d834201, 0x3c51f713,
+ 0x3c86a261, 0xbd0088b2, 0xbb0101cc, 0x3c371a1a, 0x3d5fe3c4, 0x3bc59019, 0xbd23b395, 0xbcda2343,
+ 0x3d284006, 0xbd10a092, 0xbd548640, 0xbbf6f937, 0x3c55152a, 0x3d570d94, 0x3be8467c, 0x3d01598b,
+ 0x3d69a5f7, 0xbd123671, 0x3ca743bc, 0xbde434d8, 0xbce7f92e, 0xbce7cbde, 0xbd302ded, 0x3d608f22,
+ 0xbcc4a045, 0xbc109724, 0x3d4b0fe9, 0xbd05b0d9, 0x3c65fffa, 0xbc9376b1, 0x3d9ec108, 0xbbe52522,
+ 0xbd2fc82c, 0x3d3c4fa0, 0x3d7734f6, 0x3d6817a7, 0x3d25441d, 0xbd59f1b4, 0x3d1c3569, 0xbdcd99eb,
+ 0x3b808fe4, 0xbd8528a9, 0x3d51f566, 0xbb917c09, 0x3d423a0e, 0x3c8bc960, 0xbcb3a902, 0xbce49a52,
+ 0x3d17f71d, 0x3d2e289e, 0xbc56fb7f, 0x3b357528, 0x3cc17d16, 0xbd79419c, 0xbc90ed59, 0x3cbb8e85,
+ 0xbdd4cbe9, 0x3d461c6f, 0xbd58f23a, 0x3d616505, 0xbcafb42e, 0x3cbf8250, 0x3d8f0230, 0xbce3892a,
+ 0xbd49a7fb, 0xbcdcb613, 0x3b955184, 0x3ceb26e2, 0xbc7f2696, 0x3d81af71, 0xbcd41e03, 0xbd2191e5,
+ 0x3d0a9cf0, 0xbc5151b5, 0x3c408769, 0x3d44142d, 0xbbb4b374, 0xbdc35657, 0xbd67f793, 0xbc0b634b,
+ 0x3b7ddc62, 0xbda32df0, 0x3d0ac32d, 0xbdac3070, 0xbd046157, 0x3cf7cc96, 0x3c0a4ce4, 0xbbbd375e,
+ 0xbc09bd9d, 0xbcaf8a0c, 0x3b98b139, 0xbc4c6ba8, 0x3bb08455, 0xbd04b203, 0x3b28a321, 0x3c76558b,
+ 0x3c0f0e2b, 0xbc1aaf53, 0x3bde3ddf, 0xbc9b9cee, 0x3d543d37, 0xbbf1de4d, 0x3925edc7, 0xbca8017d,
+ 0x3c2f4dbf, 0x3cfd95cf, 0x3ccdf568, 0x3b394d04, 0xbcc6950d, 0xbce29a20, 0xbc32d905, 0x3c49eb88,
+ 0x3cb202c0, 0x3baa375d, 0x3cb7a7bd, 0x3c23909c, 0x3b650785, 0xbcc47c39, 0x3cebca96, 0xba2c8388,
+ 0xbc63f3c7, 0x391e93ac, 0xbd1c9fba, 0xbc73b9ac, 0x3d3a7516, 0xbc9b20ae, 0x3d2fd5e5, 0x3caa38cd,
+ 0xbc9e0e19, 0x3c888b8b, 0xbba1011c, 0x3a90cd10, 0xbd2046f1, 0x3cd30c53, 0x3b5712fd, 0x3d6615c6,
+ 0x3c08793e, 0xb9f34982, 0xbbbfad3a, 0x3c6b1772, 0x3bdc3115, 0x3b46ce59, 0xbc449816, 0xbb55b14d,
+ 0x3d2eed65, 0xbd4273c5, 0x3c7d2c66, 0xbcb72068, 0xbc9adb15, 0x3c8db2b5, 0xbcde5d7a, 0x3ce13354,
+ 0xbc2a22fc, 0xbc535aec, 0x3c0c8e26, 0xbaef5f9c, 0xbc21936a, 0xbb9c318f, 0x3cafce28, 0xbb433989,
+ 0xbcfcedac, 0x3c1672f3, 0x3c6990a1, 0x3d159bb3, 0x3d53d46a, 0xba954cec, 0xbc7a70fd, 0x3b4cc72a,
+ 0x3d059d5d, 0xbbfef5a2, 0xbcab685e, 0xbc49a16c, 0xbc35e5d8, 0xbc2f3c04, 0xbbea3b19, 0xbc21b03e,
+ 0x3d23d3a1, 0xbcb4755e, 0x3d03bf81, 0x3b7b6790, 0xbc056d9e, 0xbd049876, 0xbbfea47c, 0xbc7784a2,
+ 0xbb5bee1c, 0x3cf2c6dd, 0xbd1ce002, 0x3b237fd1, 0x3c874587, 0xbcab5b7a, 0x3c8fa56b, 0xbce353f0,
+ 0xbcc5c3c6, 0x3b279d48, 0xbd38cc15, 0xbc4feb3b, 0xbcdc4289, 0x3bf399c9, 0x3bcc6029, 0x3b5f1b53,
+ 0x3c76d364, 0xbc962233, 0x3cad56a9, 0x3ba613e5, 0xbcb5c669, 0x3be9a85c, 0xbca68f93, 0x3b907c31,
+ 0x3b8a9092, 0xbd6ee7ba, 0x3b931f2c, 0xbb4a6ecc, 0xbcb26da8, 0xbb85b837, 0xbcbe71a5, 0xbab2efaf,
+ 0xbca951e7, 0xbd0701e3, 0xbb5eb3de, 0xbca21e18, 0xbc4737ca, 0x3c60c6ed, 0xbc05ca91, 0xbd0d8357,
+ 0xbc23be84, 0xbc903ab7, 0x3bb828f6, 0x3c766eb8, 0x3c688314, 0xbc15f99a, 0x3b32a2d4, 0xbc1bacbd,
+ 0x3c6b9001, 0x3bfb89c4, 0x3c497419, 0x3c3097d4, 0xbc803ee7, 0xbb939796, 0xbc64d8d9, 0xbc2432f8,
+ 0x3d054627, 0x3b0942b4, 0x3bc55592, 0xbc572e64, 0x3b4963cf, 0xbd21e5cf, 0xbc6987d4, 0xba411a30,
+ 0xbc8fc117, 0xba3fafc2, 0xbc731c68, 0xb991f0b0, 0x3c1bd676, 0x3c171083, 0x3d0929ae, 0x3cb00113,
+ 0xbd3521ac, 0xbb9369c7, 0xbc6d5855, 0xbc181c70, 0xbc82e1fd, 0x3c95b90f, 0xbbde23be, 0x3bc03e70,
+ 0xb984ec2c, 0x3c58d385, 0x3bdd0d46, 0xbb1eeabb, 0xbc8a840c, 0xbc2c4510, 0x3ba41508, 0x3aa5ce4d,
+ 0x3cb817c5, 0xbd54a904, 0xb98c2804, 0xbc8f15e0, 0x3b597d30, 0x3c4a16b8, 0xbc4839d1, 0x3c8420a2,
+ 0x3aa84017, 0xbd1e1fe1, 0xbcb8a6e1, 0xbcb644da, 0x3c7475fd, 0xbc05b741, 0x3c0f80bc, 0x3d119a49,
+ 0xbcbc3a66, 0xbc514f49, 0xbac9ad08, 0xbda27dff, 0x3d33e3b0, 0x3b91fc91, 0xbc17a866, 0x3d505487,
+ 0xbc1fa9c1, 0xbab17b16, 0x3c555457, 0xbd2bacdd, 0xbbda25a0, 0xbd4e951f, 0xbce400ee, 0x3c3d4602,
+ 0x3b5e2451, 0xbae813c9, 0xbca7fac1, 0x3c674189, 0x3d2fc976, 0xbb8c92e7, 0x3c786749, 0xbc2dd931,
+ 0xbb9b691f, 0xbc961721, 0xbbf08856, 0x3d729c33, 0x3b80c954, 0xbdbc6455, 0xbc20c730, 0xbb1342fc,
+ 0x3d8453bf, 0x3d2b2b8b, 0xbd07f377, 0xbbe68b0c, 0xbd038118, 0xbcaf42bf, 0x3c32142a, 0x3d79edb6,
+ 0x3bc70ec9, 0xbc960764, 0xbb4e9027, 0x3c279182, 0xbcaec68c, 0xbc01e695, 0x3b4dafa8, 0xbb6d6823,
+ 0xbd2461fd, 0xbb17cdba, 0x3ccf2167, 0x3ce26d04, 0x3c6ba347, 0xbcb8a6ef, 0xbbcdae00, 0xbcb7bf70,
+ 0xbcb82f7d, 0xba1d52c2, 0x3c8a0abf, 0x3c30c8dc, 0xbbfa7ddd, 0x3c416003, 0x3d4a30cc, 0xbc6632e6,
+ 0xbc7b0845, 0x3cec03e8, 0xbcc912f7, 0xbd324023, 0x3d7bcba8, 0xbc4201eb, 0xbca87673, 0xbbd303d1,
+ 0x3b2ca9bc, 0x3c825cf1, 0x3d36af87, 0xbb9a124a, 0xbb9b38c8, 0xbca8d473, 0xbbad4339, 0x3caa7e3f,
+ 0xbc22d256, 0xbc896e9a, 0xbd7819ef, 0x3d0cd4fb, 0x3ca8c04c, 0xbc67240a, 0x3baaa505, 0xbccb504d,
+ 0xbd0c257d, 0xbc806fd7, 0xbc5af80e, 0x3d2c53d7, 0xbc291116, 0xbd89e3a6, 0x3c42ff2b, 0xbd0e59fe,
+ 0x3c2585a7, 0xb995b72e, 0x3bcf1c21, 0x3cb49404, 0xbb1b022f, 0x3d0adf64, 0xbae26b41, 0x3cbb7252,
+ 0xbc471689, 0x3c96859c, 0x3c92675b, 0x3c99a133, 0x3c11ee41, 0xbd0acb66, 0x3cae9707, 0x3b9c8b1e,
+ 0x3c59b4c6, 0xbd085299, 0x3cedfc3e, 0xbcc2b992, 0x3cee597a, 0xbd4cb222, 0xbc599050, 0xba614f1d,
+ 0xbd3611b1, 0x3b087ab6, 0x3cd1bba5, 0x3cffaa30, 0x3b4b94a4, 0x3c2ea703, 0x3c9d4888, 0xbca38633,
+ 0xbb9a2b55, 0x3d091d35, 0xbc927314, 0x3ccfaf8b, 0x3d22e28f, 0xbd4805da, 0x3c3ca2db, 0xbd06439d,
+ 0x3d36622c, 0x3beefdab, 0x3a80b319, 0x3b4d4741, 0xbabcd95f, 0x3c9fe001, 0xbbffbffc, 0x3c72555e,
+ 0xbcf4f057, 0xbd2428b3, 0xbc85fb29, 0xbc9e1c22, 0x3c07515a, 0xbcaf0c70, 0x3ccf4073, 0x3c4b9adc,
+ 0xbcd12ca9, 0x3d0d970c, 0xbcc04dd9, 0x3d674057, 0x3b0d349f, 0xbc758194, 0xbba5ed09, 0xbcc57239,
+ 0xbd4723aa, 0xbd641aa8, 0xbc820366, 0x3c73676a, 0x3cbf1a90, 0x3d387193, 0xbc884fe0, 0xbcb34dc0,
+ 0xbc338871, 0x3c327bd5, 0x3d078bc0, 0x3c712451, 0x3c84b011, 0xbb793aeb, 0x3c552632, 0x3c15b7a2,
+ 0x3ccd71ad, 0xbd13db53, 0x3d03814b, 0xbcbb0df2, 0x3d3676a7, 0xbdbb88ee, 0xbc1863e5, 0xbc117bcb,
+ 0xbd5cbc96, 0x3c985ac4, 0x3d1b4cb3, 0xbbc83e59, 0xbba30efe, 0xbc0a1943, 0x3c846d79, 0x3c6d4463,
+ 0xbd4eb808, 0xbccc3eff, 0x3d60f729, 0x3cb3d328, 0xbd185a0f, 0x3d39d304, 0xbc1df068, 0xbd30bccd,
+ 0x3cd79e3a, 0xbcc8e471, 0xbcf80f2e, 0xbc8bee1f, 0x3d3e3b81, 0xbc0ffb5c, 0xbbd5383e, 0xbd1020ee,
+ 0x3d1b4bfb, 0xbd295af2, 0x3d186921, 0xbc405435, 0x3bb8fd80, 0xbcd9f3e3, 0x3c604dcd, 0x3ca224b7,
+ 0xbd0fd15b, 0x3be70892, 0xbc7df3e4, 0x3b6848a6, 0xbd48e277, 0x3d83ba7f, 0xba65736b, 0x3c8004ed,
+ 0xbd84acb0, 0xb9954421, 0xbc5d2bd3, 0x3bb0de2c, 0xbc3673bd, 0x3c474284, 0x3a82466c, 0xbcd5a467,
+ 0x3d2a64ab, 0xbcf84b62, 0xbca4903e, 0x3cbdfc6f, 0xbcfcf416, 0xbcd93a2c, 0xbca382b5, 0x3bf779c3,
+ 0x3cb1e55d, 0xbd3cfd0c, 0xbd86a4f4, 0xbda8b567, 0xbd88b9ec, 0x3d78c00f, 0x3bd56ba3, 0x3ce7ac72,
+ 0x3d1877bc, 0xbcbf04a4, 0x3d7397df, 0xbd17710c, 0xbcc7f3ba, 0x3d8cd7db, 0x3c87e353, 0x3c1d4f62,
+ 0x3bfec77f, 0x3c473f93, 0x3c4bdf75, 0xbd06b8c2, 0x3cd47397, 0x3ce98d45, 0xbc5f4af0, 0x3b801266,
+ 0x3a6167e7, 0xbd1e2309, 0x3d2d6363, 0xbd3e93a5, 0x3bdd6036, 0xba93fdd1, 0xbd562257, 0xbbbc0c55,
+ 0x3c5c4783, 0xbcc2e542, 0x3cdded02, 0x3cab1d58, 0x3d6c60fe, 0xbd5c9f07, 0xbd126f4d, 0xbcae42ca,
+ 0xbd907b59, 0x3ca55102, 0x3bd06671, 0x3d73935b, 0x3c29335c, 0x3d2a4fce, 0x3d172ad8, 0xbbb31e93,
+ 0xbc9912e5, 0x3d0ca85e, 0x3c910961, 0xbc7f4029, 0xbd199a3a, 0x3d3cb832, 0xbc5c8a81, 0xbce3a177,
+ 0x3d06ab98, 0xbd1eb089, 0x3b87cad9, 0xbd660754, 0x3c876413, 0x3cea078b, 0xbd7bf257, 0xbd0381db,
+ 0x3c865032, 0xbd0596be, 0xbbf55332, 0x3cf1c24f, 0xbd4114fb, 0x3c2c2064, 0x3c5a5169, 0xbccdf62c,
+ 0xbbf558a2, 0x3c84abc4, 0x3cf20dab, 0x3d09fa3c, 0xbbdd48e7, 0xbcc68326, 0xbc4f7f1f, 0x3c15a588,
+ 0xbd5b2788, 0xbd1e98cc, 0x3c0b922c, 0xbcc61977, 0x3a2a15db, 0x3cbe9609, 0xbcc5aea6, 0x3c3a4f5a,
+ 0xbcf867e0, 0x3cc13339, 0x3cf6dfda, 0x3cb4aa56, 0x3cba8f34, 0x3d4621b1, 0xbc8427e8, 0xbc87bf02,
+ 0x3cad4449, 0x3c869877, 0x3d26903d, 0x3c37a469, 0x3ca817b7, 0xbc17ac0c, 0xbca3a70d, 0xbafb70ec,
+ 0x3cb511cb, 0xbce57f62, 0x3a67826d, 0xbca3e28d, 0xbccc7f0c, 0x3c23ae12, 0x3b1205a9, 0xbbdaaa4f,
+ 0xbd7d082b, 0xbd28da79, 0xb981b7c3, 0x3c22d9ad, 0x3a8ac2bd, 0x3b8719cd, 0x3ce0db35, 0x38aa5c8e,
+ 0xbb6ccec7, 0xbca7f852, 0xbb235d80, 0x3d57d4b1, 0xbb590b2f, 0xbc127157, 0xbd4ebc5f, 0x3caaabea,
+ 0x3d0ff6c9, 0xb7d2fd78, 0xbaa2ba32, 0xbd41f519, 0xbcec8344, 0x3d3f7384, 0xbc70ec91, 0xb919258f,
+ 0x3c634c25, 0x3bd10552, 0x3c1e944f, 0xbbf2215a, 0xbc72c160, 0xbc487850, 0x3c72b25a, 0x3c0dd52c,
+ 0x3c4ea95b, 0x3d05e6f0, 0x3cd8329c, 0xbb30a2a5, 0xbbbcdfd0, 0xbd6d1acc, 0x3a4fc28d, 0xbc29e917,
+ 0xbcb950b4, 0xbd2916f9, 0x3abd7ff5, 0x3d22b3a7, 0x3ca8a038, 0xbd32a24a, 0xbd0ce584, 0x3b3db929,
+ 0x3ae7dddc, 0x3ce05230, 0xbc3e26a0, 0xbc539c79, 0xb96df250, 0xbc7e4b7b, 0x3c2d2cbe, 0x3a8cbe60,
+ 0xbb1a0619, 0x3c2ea2a8, 0x3ceda15a, 0x3a9b749b, 0x3b53c01f, 0x3d99c581, 0x3d094cab, 0xbcd74d6a,
+ 0xbc98d49b, 0x3d0e7a21, 0x3b9a101e, 0x3bbf519c, 0x3c116154, 0xbc81f1f8, 0xbd430e5f, 0xbca945d4,
+ 0xbba69112, 0x3cf40f75, 0xbc1a8919, 0xbcccc363, 0x3cc0fba8, 0xbcd9b962, 0xbcd49f2a, 0xbb596045,
+ 0xbbaad86f, 0xba95f7b3, 0x3c9884fe, 0x3c63bf5c, 0xbccd8ee0, 0x3ce5c681, 0x3bad1e5d, 0x3c40ef48,
+ 0xbba09887, 0xbc8a4597, 0xbcf4935f, 0xbcf26408, 0x3d8dac6a, 0xbc88d55a, 0xbbf6e901, 0xbc40295d,
+ 0x3d6d2884, 0x3c7a1312, 0xbd1b8199, 0x3cebac22, 0xbc3aa1ca, 0xbd0d3cfc, 0x3a52b7fd, 0xbc2a1f34,
+ 0xbd49e493, 0xbba449f1, 0x3d32ac49, 0x3c2a3df7, 0x3cc307ad, 0xbc61e34c, 0xbcf890d3, 0xbc736684,
+ 0x3b89d8b1, 0xbc2998e6, 0xbb700f27, 0xbc90dfd0, 0xbcbf2dcf, 0xbd1064a8, 0x3bf9edf9, 0x3ce3d35d,
+ 0x3d167864, 0xbb918daf, 0xbc21224b, 0x3c45c759, 0xbcf56027, 0x3d077efb, 0xbcb3e508, 0x3d14ea87,
+ 0x3cecb6ba, 0x3d214df4, 0x3bf64126, 0x3bead9e7, 0x3c361759, 0xbd162f23, 0x3cbf80c0, 0xbc5f9b96,
+ 0xbc1c245c, 0xbccf756b, 0x39f43e25, 0xbca7a651, 0xbc5be394, 0xbd0f27cd, 0x3d551e71, 0x3c47f5b5,
+ 0xbc4c5988, 0x3c4ec6ef, 0x3d24d73f, 0x3cb32ed2, 0xbc9067f4, 0x3d6ce574, 0x3c0bae08, 0xbd416b3a,
+ 0x3cead120, 0x3cb1bc17, 0xbca568a4, 0xbd684a8d, 0x3c89f885, 0x3a3c5814, 0x3cbb78b1, 0x3d0796a9,
+ 0xbc42a3c0, 0x3d2ca71f, 0x3b3c3401, 0x3cdcbe1a, 0xbc8bbdbd, 0xbd110e61, 0xbbc3f5a0, 0xbcc15b55,
+ 0xbd1d75bf, 0xbc94c52a, 0x3d8dc403, 0x3c98c397, 0xbc5b43ce, 0x3ce5e37d, 0xbd180ebf, 0x3d065d26,
+ 0xbb86a3e7, 0x3bcd68f2, 0x3d756967, 0x3b2bda3d, 0xbd7c9557, 0xbc33242a, 0x3cec1f1b, 0xbca27530,
+ 0x3d4c2be5, 0x3d4dda9e, 0xbc254552, 0x3d02b516, 0xbcb1a9c7, 0x3cf61eae, 0x3d011352, 0x3d9b45e5,
+ 0xbd2d765a, 0x3bbd14f4, 0x3c7f6500, 0xbb8fe7d5, 0x3cd52725, 0x3bcefe4f, 0x3c0c940b, 0x3c2c0451,
+ 0xbbfed541, 0x3c2927f0, 0x3cd45ea7, 0xbcf4fc71, 0xbb4a7e5d, 0xbd6666ec, 0xbb9b1e3d, 0xba8dd31c,
+ 0xbd10e1e2, 0x3c7cd9ac, 0x3d221358, 0x3cc219cf, 0x39918a9d, 0x3d76a19b, 0xbb9a82b2, 0xbd744971,
+ 0x3c9180f0, 0xbad9fbac, 0x3bb633d6, 0x3d137192, 0x3d06ecf5, 0xbdb27954, 0x3bfc7638, 0xbc5914dc,
+ 0x3c484f38, 0x3c49ef63, 0xbb7721c2, 0xbc86d250, 0x3c64b1e1, 0xbd066dfc, 0xbcb68377, 0x3cb6f881,
+ 0xbd97aee1, 0xbd9970d1, 0x3d200f8b, 0x3afe4da8, 0x3ca89193, 0xbc8341ed, 0xbd749386, 0x3c79da64,
+ 0xbcc4ab0a, 0x3d3523e2, 0xbb221b13, 0xbc2e0010, 0xba714250, 0xbcb769b4, 0xba2e2032, 0x3cd5ec5d,
+ 0x3ceab3d9, 0xbb393789, 0x3bea9bd9, 0x3ca1f7d0, 0xbd2cd8e3, 0x3d268030, 0x3c4da74e, 0x3ca576e9,
+ 0x3d5341f2, 0xbc0bcaff, 0xbcb04472, 0x3bae642b, 0xbc5984e7, 0xbd841a89, 0xbcbd6b42, 0x3b44d720,
+ 0xbcb29eaa, 0x3c20a98b, 0x3c56f595, 0x3cff69ca, 0x3d28482d, 0xbbbb901b, 0xbb39a64a, 0x3ccbeb9f,
+ 0xbaf43c24, 0x3c0cf51b, 0x3d242222, 0x3ab6d1b2, 0xbc943f30, 0x3d41617e, 0x3a18977c, 0xbd7a62ad,
+ 0xbcba86ad, 0x3c8f3591, 0x3cecc5a6, 0x3cdfb1eb, 0xbc539adf, 0xbb94fde3, 0x3d0b2860, 0xbc28aab8,
+ 0xbc14aaad, 0x3cea089b, 0xbca9059a, 0xbc76510d, 0xbb4c6c28, 0xbcfa9f86, 0xbc1e3fb2, 0xbb235034,
+ 0xbd8eb8d0, 0xbbb5f58f, 0x3cb2105e, 0xbb75914b, 0xbb83020a, 0xbd24f620, 0xbcfaa43e, 0x3cb5a3a7,
+ 0x3b9c7b57, 0x3bd2f48e, 0xbd9b3f9c, 0x3b4863f4, 0x3d459e0d, 0xbd3b3b6f, 0xbc64f323, 0x3d8a14b4,
+ 0x39c1bc09, 0xbd4a805d, 0x3c956685, 0x3c95c638, 0xbc2603b3, 0x3c4da1e4, 0xbce65ed1, 0xbbac37e4,
+ 0x3d4c625c, 0x3c470dd5, 0xbd06db27, 0x3d0a3ab6, 0xbbab7879, 0xbd090a47, 0xbbfbaecd, 0xbc0283c0,
+ 0xbcdc873c, 0x3c9b6f19, 0x3c9ee3a4, 0x3c336f22, 0xbb03c152, 0x3cad3243, 0x3d2f2314, 0x3bba2a1b,
+ 0x3c62aaa2, 0x3d1c305b, 0x3d6519ca, 0x398453d9, 0xbc99b163, 0xbc15850b, 0xbd1223c3, 0x3d4816d0,
+ 0x3b98f827, 0x3cdcfd3c, 0x3c04adfa, 0x3c86af08, 0xbcdfe5fe, 0xbd7f9dea, 0x3d61552b, 0x3cc30056,
+ 0xbb9e3415, 0x3d2caf90, 0x3d00f090, 0x3d220cc9, 0xbcd5264b, 0xbca916e3, 0x3c41e97e, 0xbdcaf820,
+ 0xbcd27fc4, 0xbca4bc40, 0xbc8afd33, 0xbbfa0a54, 0xbcc832d7, 0x3ba87f8f, 0xbcd4878a, 0x3d02b8a7,
+ 0x3d22b9aa, 0x3d347eef, 0xbd7f502d, 0xbc0fb4e7, 0xbc34d070, 0xbd1af9b0, 0xbce8e569, 0x3d9162aa,
+ 0x3d0c8f31, 0xbc7d8c15, 0x3c2d9130, 0xbd206c48, 0x3d09eed6, 0x3d08b28a, 0xbb54f6f3, 0x3c885e50,
+ 0xbcec34fa, 0xbc753c68, 0xbd49879d, 0xbc344e33, 0xbc8c38f3, 0xbb9d066c, 0x3d036888, 0xb97d525a,
+ 0xbcaadf21, 0x3b31e0dc, 0x3d104545, 0x3d49629d, 0xbd147e03, 0xbd80c3aa, 0x3cdef9c3, 0x3cbf8206,
+ 0xbd4435e4, 0x3b80103d, 0x3cf26c6f, 0xbcd091d4, 0xbd6e53bb, 0x3d3b9a7d, 0xbd25aadf, 0x3d07fd38,
+ 0xbc92c3e7, 0x3d015a2f, 0xbc6b5dc8, 0x3d6c35be, 0xbd37952b, 0xbd62263e, 0x3d7ac55d, 0x3d493b5d,
+ 0xbd2cbf08, 0x3d2c1b0e, 0x3dadc23a, 0xbd117a7d, 0xbd205760, 0x3cb899db, 0xbd152488, 0xbc88f5b0,
+ 0x3ce26b38, 0xbd83c568, 0x3c2422de, 0xbc802917, 0xbb48f39b, 0xbbedda79, 0xbbf6e73a, 0x3d62bb07,
+ 0xbc20cda9, 0x3d028871, 0xbcfce566, 0x3c22a8b9, 0xbd27d2a6, 0x3b4fd7c7, 0xbd2dd0d6, 0x3acf5986,
+ 0x3bb0d00b, 0x3d037edd, 0x3d387171, 0xbd022676, 0x3d0a4726, 0x3d709c12, 0x3d724440, 0x3d443cb2,
+ 0xbd927145, 0xba03449c, 0xbd1cea7d, 0x3ca37894, 0xbc61e059, 0xbccabd92, 0x3c01a728, 0x3bd101ea,
+ 0xbd022db6, 0x3d8cfe97, 0x3d4ac04c, 0x3d3da03d, 0xbb7fe222, 0xbdb53af6, 0x3c497941, 0x3d9337f9,
+ 0xbd5a00f2, 0xbc881c14, 0x3b6dc140, 0xbd4a0661, 0xbd242b2e, 0x398c95b5, 0xbd2ec5be, 0xbd08d0c5,
+ 0xbcee8b73, 0xbc95a84b, 0x3d012d85, 0x3c3f21e7, 0xbd93c7aa, 0xbccbc7d4, 0xbc92f308, 0xbd2b0f79,
+ 0xbc6edd03, 0x3c0c3360, 0x3d8c0377, 0x3c12843c, 0xbc18eb04, 0xbd82383d, 0x3d0c6e6b, 0xbd2fa9af,
+ 0x3c6728ab, 0xbb12af4e, 0xbcd506b4, 0xbcf2fa38, 0xbb0b51f6, 0xbd2a0f10, 0x3c081f22, 0x3d857ada,
+ 0x3d6049bb, 0x3d039d56, 0xbd8d458c, 0xbd58cc03, 0x3cb1334b, 0xbc4a522a, 0xbd14c600, 0x3d1f3d08,
+ 0xbd26f667, 0x3b7ca7a4, 0x3d37c9da, 0x3cd12c8a, 0x3bdc4926, 0x3d38c5c4, 0xbaaebfd8, 0x3af5031f,
+ 0xbcf244fc, 0x3bb0cd0b, 0xbbe9990f, 0x3b8e4544, 0x3c00592a, 0x3da4621f, 0xbcb67f53, 0xbc1e484a,
+ 0xbb5d3ec5, 0x3cf05df7, 0x3bdb0c13, 0x3d2f8225, 0xbcc41516, 0xbca5ffb3, 0xbc849a14, 0x3cc6999e,
+ 0xbc251148, 0xbd0642e8, 0x399aa418, 0xbd34d626, 0xbd2db5af, 0x39d2b52e, 0xbc8e63e2, 0x3cea1cb3,
+ 0xbd04a696, 0xbd70b531, 0x3b327b64, 0xbc79008b, 0x3d2dca0a, 0x3c314fc1, 0x3c280f17, 0xbda5e955,
+ 0xbd85dbed, 0x3ca24edd, 0xbcd4e73b, 0x3d87d2a3, 0x3d214d2e, 0xbd3be3a2, 0x3d083f19, 0x3c671764,
+ 0x3d33ffc1, 0xbc0b4f88, 0xbd7cdabc, 0xbdb27c1b, 0xbcef440d, 0xbc0cc057, 0x3ccd3ca9, 0x3cb83d49,
+ 0x3db077c0, 0xbc96bcb2, 0xbc439880, 0xbd0136a0, 0x3d9602a6, 0xbce1794e, 0x3b88b423, 0x3cab3f42,
+ 0x3d2d983c, 0xbd494775, 0xbcd992f6, 0x3d8d7633, 0x3caa97a7, 0xbc7050e1, 0xbd6d5ffb, 0xbd125f8b,
+ 0x3ce397fa, 0xbcc99aa4, 0xbcaf1e2c, 0xbb772470, 0xbd2707ce, 0x3afa8ab4, 0xbd1540ad, 0x3c948135,
+ 0xbcb422c5, 0xbb345ec5, 0x3c974fca, 0x3d857158, 0xbcb12dd6, 0x3d791d2b, 0x3ca7dbdf, 0xbb76f519,
+ 0xbd14574c, 0x3b3d5a46, 0xbb3a2c07, 0x3b8cdf68, 0xbc25031b, 0x3c86537b, 0xbc317b3f, 0x3c8833d7,
+ 0xbc83ef60, 0xbd13eee4, 0xbbac0ccc, 0xbc669e52, 0x3b8a5186, 0xbc237821, 0x3c69e215, 0x3c422611,
+ 0xbc8cb768, 0x3c34cbfb, 0x3c1011c1, 0x3d079251, 0x3d3e9ac3, 0xba6f33fc, 0x3ab0bf86, 0xbd3a2f02,
+ 0x3d129de8, 0x3baf691e, 0x3acc0b41, 0xbad0aec8, 0xbcc43706, 0xbc2b5876, 0xbca372c2, 0x3b892b85,
+ 0x3cb4e2f1, 0x3c014d57, 0x3cc63611, 0xbba0780f, 0xb8970b63, 0xbd2c44c9, 0x3d106a7d, 0x3cecf1b5,
+ 0xbc6a4b29, 0xbbd6f17f, 0xbd0b3869, 0x3c806e1d, 0x3ca26d83, 0xbbc284fc, 0xbc546130, 0xbcd3f2cd,
+ 0xbb11936e, 0x3c7ce66b, 0xbc5875b9, 0x3cc1119d, 0xbd90e5c0, 0xbbe1cb13, 0x3d0b7132, 0x3d802639,
+ 0x3cb8b8c5, 0xbce4aa34, 0x3b85363c, 0x3d246310, 0xbd439356, 0xbc557630, 0x3b15ee67, 0x3993fadb,
+ 0xbc8fbf40, 0xbda8b701, 0x3cf41b70, 0x3bf06f7f, 0xbcf73c25, 0x3cdde159, 0xbc5b3a18, 0x3c782040,
+ 0xbc07a701, 0xbd1c7949, 0x3c10b1e7, 0x3ce9df42, 0x3c6a5e66, 0x3c907847, 0x3c94254b, 0xbc547d2b,
+ 0xbbc35aeb, 0xbc56e58b, 0x3bb1be77, 0x3cfd55dd, 0x3daa2ff4, 0xba829d5b, 0x3bd67244, 0xbb7f36b7,
+ 0xbabf4c64, 0x3cb4f7f5, 0xbb1be665, 0xbb8157f4, 0xbc42a764, 0xbcc22ec3, 0xbc070a66, 0x39d7c350,
+ 0x3d0f9c4b, 0x3c001ffb, 0x3c5c1b36, 0xbbafcbc9, 0xbc43a4b9, 0xbd2d4bac, 0x3c2f6a5b, 0xbad22e67,
+ 0xbc8c135a, 0x3c61010b, 0xbd1b02fe, 0x3ca1c53e, 0x3ce9c3b4, 0xbcae538f, 0x3c4d62a1, 0xbc779f9a,
+ 0xbcb6fc0e, 0x3c4eb142, 0xbd169769, 0xbccd2694, 0xbca3bebb, 0x3c4ec117, 0x3cb408a2, 0x3cab310a,
+ 0xbbeca557, 0x3c086736, 0xbc041860, 0xbbf974c8, 0xb800353d, 0x3becb4df, 0xbc3d3cd1, 0xbcb0ec62,
+ 0x3bb65080, 0xbce4e8a7, 0x3c972ec9, 0xbc927f16, 0xbc98fabb, 0x3b05292a, 0xbcc0d262, 0x3c0cbcb8,
+ 0xbc9b64da, 0xbd268b33, 0xbc334cf2, 0xbd50d5c3, 0xbb155cae, 0x3d2d5013, 0x3c4858a2, 0xbd1da6c3,
+ 0xbc7847a6, 0xb9d82e7e, 0x3d36d6cb, 0x3d9e67b5, 0x3b85c36f, 0xbd03f862, 0x3ca814e2, 0xbcf2a132,
+ 0x3b54c8ac, 0x3c9f135d, 0x3b4fe0ea, 0x3aa28e71, 0xbc807046, 0x3d0ea8ca, 0xbbf9f13a, 0xbc14e018,
+ 0x3d04545a, 0x3d18a4e6, 0x3c3c0458, 0xbb8d38ac, 0xba281039, 0xbd338f7e, 0xbbdd7338, 0x3be581c1,
+ 0xbba1d353, 0xbbcc53fb, 0x3be3c6b4, 0x3ca36425, 0xbbaa4158, 0x3add4cda, 0x3c55d517, 0xbcb2b71a,
+ 0xbdb5a908, 0xbbc29610, 0x3c2b1bb7, 0x397652e8, 0xbb383410, 0x3d19b4d7, 0x3bc01cdc, 0xbca4b9b5,
+ 0xbc77a1ea, 0x3cd57dca, 0x3cc05c05, 0x3c1236de, 0xbcca94d2, 0xbd2d32db, 0x3bde484f, 0xbc9e39c2,
+ 0xbbf91a41, 0xbceaed7b, 0xbc993075, 0x3c1afb58, 0x3bd317ed, 0x3c9fcb71, 0x3c100e12, 0x3c243154,
+ 0xbd89dfce, 0xbaf5e36a, 0xbb08e36a, 0x3c6f43cb, 0x3cb45daf, 0xbd5d8f73, 0x3d56adad, 0x3cd8c5d4,
+ 0x3bd83cd5, 0x3ac33093, 0xbd402dda, 0xbd6eded2, 0x3d4f71a7, 0x3c1cd6e7, 0xbccf5559, 0xbd11edc3,
+ 0xbd8ce637, 0x38c20952, 0x3d43212f, 0xbd7ab2fb, 0xbcbd0fd2, 0xbd466411, 0xbbff4602, 0x3cf4485f,
+ 0x3c4813a4, 0x3c981017, 0xbd4b2caf, 0x3ce4aab9, 0x3d78f023, 0xbbc2d716, 0xb9ad6bac, 0x3d28a217,
+ 0x3d315ecb, 0xbd5a4e3d, 0xbd6aca0a, 0xbbb2f92d, 0xbb06a8fc, 0xbd4af027, 0xbd368908, 0x3a94e479,
+ 0x3da38b8c, 0x3c953bce, 0xbb9d2ac9, 0x3cc4c982, 0xbc50692f, 0xbd497169, 0x3ca62692, 0x3c3d5d81,
+ 0xbca060fe, 0xbd3820d1, 0x3cec0609, 0x3d7f0c94, 0xbccbb882, 0xbb86c8a7, 0x3da13211, 0xbb29a73f,
+ 0xbd751420, 0x3c0fd4de, 0x3ae8c8cf, 0x3d35ace6, 0x3bf4ea57, 0x3cd31c07, 0xbd0d1401, 0x3cae6fc1,
+ 0xbce85f4e, 0x3d20fca2, 0x3c192544, 0x3d3d7820, 0xbcbb1e93, 0xbba79003, 0x3d062fa9, 0x3ce5a597,
+ 0x3b7eef8f, 0x3d599215, 0xbc72c92c, 0x3cf96827, 0x3d647043, 0xbc900c17, 0x3c37fcc3, 0xbd520bd4,
+ 0xbd6558b1, 0xbb8a6e96, 0x3cf90c39, 0x3cfd456e, 0xbd05d5f4, 0xbd4e8a35, 0x3c3e36c7, 0xbca97e58,
+ 0x3cf2b4cc, 0xbc8fbba1, 0xbd775051, 0x3d326da7, 0xbcc1bda9, 0xbc8bc432, 0x3c67e86c, 0xbc640c64,
+ 0xbd611f9e, 0x3d18ac38, 0xbd330d16, 0xbd53fafa, 0x3d43f8e0, 0xbbac37f9, 0x3d194925, 0xbd2c9213,
+ 0xbc8f2dd1, 0xbbf75249, 0xbca209c0, 0x3c07cba0, 0xba306962, 0x3ccef18c, 0x3c66a84c, 0xbc255e94,
+ 0xbc564c9d, 0x3d04271c, 0x3d1ffbe3, 0x3cb4c1ee, 0x3befa968, 0xbc7c782e, 0xbc89af3b, 0xbcf378dd,
+ 0x3d110e70, 0xbd3e7dea, 0x3d8604a9, 0xbdc4c852, 0xbc2d6d99, 0xbd1d5ee0, 0xbd0b2c79, 0x3c8a6f39,
+ 0x3c836f84, 0xba02b9c8, 0x3cb573bd, 0xbd55eec5, 0xbcf76efe, 0x3d07a363, 0xbac762e1, 0xbd1de150,
+ 0x3cf3428e, 0xbc16d1a0, 0x3bd681fc, 0x3c5b1551, 0xbc8fc71f, 0x3c21667c, 0x3c55ee6f, 0xbdb5035f,
+ 0x3d93adda, 0xbd3eed3e, 0x3bb27d4e, 0x3d24f045, 0xbbfd0572, 0x3cff9d07, 0x3c4bd3b3, 0xbbacee94,
+ 0x3c8deab9, 0x3aab2a78, 0x3cceeb5d, 0x3c468dc3, 0xbbb91971, 0xbd5bc162, 0xbcb1f8a1, 0x3d25c0df,
+ 0xbbd428be, 0x3cfb338a, 0x3d0cae6d, 0x3d751e76, 0x3be34e17, 0x3d395f90, 0xbba13c73, 0x3d0dc1a5,
+ 0xbd13e51d, 0xbd134638, 0x3bc094e3, 0xbd07f8fb, 0xbc7a6720, 0x3c03f3cc, 0x3b9ca4a0, 0xbd0a6be9,
+ 0x3d1382b2, 0xbd67edd8, 0x3d53ef37, 0xbd76e3f9, 0xbd18d865, 0xbcd504a4, 0xbcec0e6e, 0xbc8128bd,
+ 0xbd7c2bab, 0xbc9fc737, 0x3bebc0f7, 0x3c2aad26, 0xba18e87c, 0x39dcdc0f, 0x3d26d594, 0xba39d919,
+ 0xbd438138, 0xbc5ccfc8, 0x3d36e6d6, 0x3c8298db, 0x3c83ff8f, 0x3d119b1c, 0x3d36294d, 0xbcd5d094,
+ 0xbd09f674, 0x3d26cdaa, 0xbcc9dd46, 0xbc9573cd, 0x3d48bea0, 0x3d01695c, 0xbcc985a6, 0x3c449d9c,
+ 0xbd280ebd, 0xbd0aa027, 0x3c18aa80, 0x3c4346a4, 0xbc05357b, 0xbcb3611d, 0xbcc861e8, 0xbd1c5cb6,
+ 0x3cac0fff, 0xbabd8390, 0xbcf45dc4, 0x3b568c28, 0xb8cec542, 0xbcd9bf32, 0xbccd5a25, 0x3c767891,
+ 0xbd98ad66, 0x3ca305fa, 0xbc385204, 0x3cb84fb7, 0xbc635d14, 0x3cdfed21, 0x3d83d439, 0xbc46e920,
+ 0xbbd0b430, 0x3c438928, 0xbd230d05, 0x3aa22068, 0xbc8b97d9, 0x3cb95f4f, 0xbc6f96a4, 0xbc6e59fa,
+ 0xbc13725d, 0xbcc69a9d, 0x3d36b937, 0x3ca042fc, 0xbc1c7d69, 0xbc9159ea, 0xbd732cac, 0xbcaa3e51,
+ 0x3d036251, 0xbd038eaa, 0x3a48a4a3, 0xbcbb9fd2, 0xb4f90179, 0xbcaee4b5, 0x3ce8ef2e, 0x3d2e806b,
+ 0xbd28aa51, 0x3d30c06a, 0x3d37a327, 0x3d95c3e2, 0xbc671ff0, 0x3c5cf565, 0x3d91c784, 0xbc657350,
+ 0x3b136250, 0x3d9ca453, 0xbd6b56a5, 0x3c5c7cbf, 0x3c0230d1, 0xbc3a9135, 0x3bd11b63, 0xbd151aaf,
+ 0xbd1e515a, 0xbd88fc8c, 0x3d3ddd8c, 0xbd166dc8, 0xbc17fdb4, 0xbcec588a, 0x3ca8a0e7, 0x3c752cb7,
+ 0x3ab84023, 0xbd2e70a3, 0xbdbcc15c, 0x3c4448d1, 0x3d82a3b5, 0xbc197b01, 0xbc6d42d5, 0x3c6d5e5d,
+ 0xbd28214e, 0x3d5ad974, 0xbc8b37cf, 0x3d2bb972, 0xbce1ec2d, 0x3c8f034f, 0x3c961054, 0xbca69409,
+ 0x3c9e1632, 0xbdb02178, 0x3b16aed1, 0xbc942efe, 0x3d1a318b, 0x3ceb8091, 0xbd372725, 0xbd20e8a0,
+ 0xbcc04d88, 0x3bc37200, 0x3da1fc02, 0x3cb268fe, 0x3d1fad25, 0x3c92ea9f, 0x3d0bb193, 0x3beb89ca,
+ 0x3d34a285, 0xbd047735, 0xbc90dc2c, 0xbd21f419, 0x3d41a6a4, 0xbd92d2cf, 0x3b0c4f56, 0x3d1ec482,
+ 0xbda82954, 0x3ceac5b3, 0x3bb6af5a, 0x3d806172, 0xbd6d2a07, 0xbc5c29bb, 0x3cd47e66, 0x3d49144f,
+ 0xbcc0c9c9, 0x3d20d591, 0x3ae19b9e, 0x3ba937b6, 0x3b647619, 0xbd280062, 0x3d548e81, 0xbcda977d,
+ 0xbca2eba5, 0xbc33f165, 0x3d1a1c29, 0xbc9ec0cb, 0xbc73bb61, 0xbc52ab46, 0x3cf4f5d7, 0x3b08f1c2,
+ 0xbd32648f, 0x3ade134a, 0xbd8c07d2, 0x3cbd7c78, 0x3d9da040, 0x3c6674b7, 0x3d0fd896, 0x3c89bf83,
+ 0x3d56cdb9, 0xbd2f44e5, 0x3bb91168, 0x3cc0ff70, 0xbc1a553b, 0xbc4c2494, 0xbd57d891, 0xbd2ad3a0,
+ 0x3c8b1a5b, 0xbdb9d6ea, 0x3c400779, 0x3da1ef52, 0x3d035be9, 0xbc747fa8, 0xbd03ec6f, 0xbd93fe87,
+ 0xbd24e71e, 0x3cee873b, 0x3d79a386, 0x3d701a5b, 0x3ca97bad, 0x3c4c9411, 0x3c953a1a, 0x3c3cf247,
+ 0x3cfc90b0, 0x3ceaee66, 0x3c254fc9, 0xbd8a544f, 0x3d2dc50a, 0xbd52ad1b, 0xbac682f9, 0x3c0b379c,
+ 0x3b69aab9, 0xbcebe42c, 0xbc66336e, 0xbc1ebea9, 0x3d6e1131, 0x3d858dc0, 0x3bf9e54d, 0xbd27c5a8,
+ 0x3c430822, 0xbc88b4d5, 0xbd5657b8, 0x3d87bfa6, 0x3d252e05, 0x3abf2f3b, 0x3ca70295, 0x3b179351,
+ 0x3cbcfade, 0xbc3b3e78, 0x3d114c28, 0xbccab1dc, 0xbcf097e5, 0x3d3eff9a, 0x3c37f06e, 0xbd1ed915,
+ 0x3c8255f6, 0xbd8e9939, 0x3d50aee7, 0x3d44f5af, 0x3c14c6ed, 0xbcd6c1af, 0x3cadbbd0, 0xbc003331,
+ 0xbd3e464e, 0x3d97b777, 0xbdc35566, 0x3da32df7, 0xbd0f7e48, 0xbca0af76, 0xbc992932, 0x3c0ca9ca,
+ 0x3ce0068c, 0xbc09b0ca, 0x3cbf0f49, 0xbce223f3, 0x3c85c314, 0x3cbc7876, 0x3d4faecd, 0x3c6b4cd2,
+ 0x3d167593, 0xbdc02211, 0x3a6b0b44, 0xbd8fb9d2, 0xbd1940f7, 0x3c2d33fe, 0x3c67290d, 0xbcace4dc,
+ 0x3d8049fd, 0xbcf8e3dc, 0xbb5ae380, 0x3d10c7da, 0x3b98556e, 0xbbfc8c37, 0x3cb66349, 0xbd10a326,
+ 0x3d1ac38c, 0x3d3c7293, 0x3c450c9d, 0x3d0d1f98, 0xbc0a292e, 0xbb43d505, 0x3d3aeaf3, 0x3dbfe37c,
+ 0xbd2d1453, 0x3d02b015, 0xbcc8e054, 0xbd2f2e7d, 0xbc2ea397, 0x3d9a9c0f, 0xbc8b141e, 0xbd839be0,
+ 0xbc8884b7, 0xbcac227a, 0x3da20466, 0x3cc491e6, 0x3c205504, 0x3d8a2edc, 0xb94ebdd8, 0x3d4e47e1,
+ 0xbd6fc0a5, 0xbd62a553, 0x3d865a66, 0x3dca23d1, 0x39e60549, 0x3c7b09fc, 0x3d7f148d, 0xbcd1f286,
+ 0x3c92026b, 0x3b4230ef, 0x3c78cf3a, 0x3ca3ca3e, 0xbc484c44, 0x3c05e432, 0x3c509401, 0xbba23a1e,
+ 0xbdc3fe57, 0xbcbdd21e, 0x3c6c4742, 0x3cb79528, 0x3c9e0906, 0xbd054ecf, 0x3d2e9419, 0x3cbc97f4,
+ 0x3c7db401, 0xbd42cd64, 0x3d364a4b, 0xbcb9cb12, 0x3cc5aa7e, 0xbd21e2ff, 0xbb1525d2, 0xbbf82d1b,
+ 0x3bc8b312, 0x3c356f5a, 0xbc23b41d, 0x3cd48c81, 0x3ca0044e, 0x3c202e49, 0x3c1c9890, 0xbce3798b,
+ 0x3c91611a, 0x3cb01a3e, 0x3d7b44a0, 0x3cf11295, 0xbd9c01e0, 0xbc448b63, 0x3a0480de, 0x3ccaa670,
+ 0x3c282fa4, 0x3c28e502, 0x3c5fa7d4, 0xbd225648, 0xbd199eb9, 0xbd56e4d9, 0x3c633870, 0xbc31a7dd,
+ 0xbc82ff2a, 0xb7845a97, 0xbca1db15, 0x3beb425b, 0x3b83b828, 0xbd41acd1, 0xbd1965d1, 0x3cf53f7b,
+ 0x3c0734c3, 0x3cea5554, 0xbcdef604, 0xbd5933e7, 0x3bd56ad4, 0xbca829c9, 0xbc5ce493, 0x3cea03c9,
+ 0x3c9ddf3d, 0x3ca1d6a6, 0x3d3bbea2, 0xbd0199cd, 0x3c739b97, 0x3d4fbab4, 0x3cdc9a34, 0x3cf9d241,
+ 0xbc1b23cc, 0x3cad3334, 0xbcee0577, 0xbba1134e, 0x3c49e839, 0x3c39b923, 0xbc9ebd8c, 0xbcfba87d,
+ 0xbd08fdd2, 0x3cabf958, 0x3ba12daf, 0xbc472230, 0x3c4b3343, 0xbccdc932, 0xbc002462, 0x3d20dae5,
+ 0xbb691eb3, 0xbbcfa838, 0xbcba6f00, 0x3c34a16a, 0xbc817ff9, 0x3b01b985, 0x3c3fa749, 0xb9f56ef4,
+ 0xbc9a40e2, 0x3d085270, 0xbd1c8efd, 0x3c653eb6, 0x3d6eb9a0, 0xbc3bbeb9, 0x3d21e8e9, 0x3b07a02b,
+ 0x3d14e226, 0xbd1b1a51, 0xbcaa316f, 0x3d6ecffa, 0x3c93033e, 0x3d1b7b81, 0xbd09927b, 0xbc12eb93,
+ 0xbaedf002, 0x3c5f555b, 0x3d80562c, 0x3bd57722, 0x3bfeb331, 0x3d9a2159, 0xbc88e776, 0xbca5f68d,
+ 0xbcc7b7cc, 0xbc9dd50e, 0x3d03e591, 0x3d6cbd12, 0xbd08e7de, 0xbc4ed97a, 0x3c4f56fd, 0xbbc43273,
+ 0x3cab67a1, 0x3c8aeba4, 0xbd5fbaa9, 0xbc0d1d42, 0xbd03dfeb, 0xbc4de336, 0xba5c6379, 0x3c28a28d,
+ 0xbce5c63a, 0xbb37b85d, 0xba470dd2, 0x3c7880d1, 0x3c4a6167, 0x3b9da7dc, 0x3d5f905d, 0x3cd92d8d,
+ 0x3c0f5598, 0xbd677509, 0x3cdccef6, 0x3c0abceb, 0xbc46dffe, 0xbd832848, 0x3d1fe578, 0x3add9f1d,
+ 0xbbbf78a1, 0xbbf22a13, 0x3c92aaf0, 0x3b09fcaa, 0xbc82c3a2, 0xba549af5, 0xbc490ffa, 0xbcd9ba8a,
+ 0x3ccb1201, 0x3cbfdd8d, 0x3bf5eba9, 0x3be32142, 0xbd20d4e1, 0xbcfb6db0, 0x3cdfe3cc, 0x3c77fd26,
+ 0xbd334647, 0x3d03f9dc, 0x3ccb4058, 0xbd343f00, 0xbbbbff09, 0x3d044d1a, 0xbd1748f7, 0xbd3b041f,
+ 0x3c8a1aa1, 0xbc5d7673, 0x3c73d626, 0x3d06f200, 0x3b6b63ee, 0xba65938d, 0x3b32ceca, 0x3c58a134,
+ 0xbcc1a64a, 0x3b192e88, 0x3cb90215, 0xba577d58, 0x3ca7e1fd, 0x3c233cab, 0x3c1b7711, 0xbc671a0d,
+ 0xbbc9dad2, 0xbbe435e2, 0x3ce0431c, 0xbc872da1, 0x3d34b399, 0x3d52f53c, 0x3d7e9bef, 0xbc7d5e10,
+ 0xbdb341dd, 0xbc8a5189, 0xbc2cbe64, 0x3bec93d3, 0xbc8bcba7, 0x3a61e2dd, 0xbb84cff0, 0xba41b9f9,
+ 0xbc08deb6, 0x3c99302d, 0x3c68281a, 0x3d088dd7, 0x3d094496, 0xbcd9e256, 0xbd257f52, 0x3c8b7478,
+ 0xbb9b06c1, 0xbcf28495, 0xbc6c2a75, 0xbc9beadd, 0xbc3d5dfd, 0xbc01456c, 0xbb2a21a4, 0x3d0ff64b,
+ 0xbc93ff6c, 0xbd2b11fc, 0x3cdf5de7, 0xbc827cd4, 0xbd1bd953, 0xbd173dfc, 0xbc4e47c5, 0xbda705bd,
+ 0x3d11e2b3, 0x3cdddf6b, 0x3d8bcd9d, 0x3c24bf43, 0x3c0882a3, 0xbdbf863a, 0x3d2d8a18, 0x3c8ef9e8,
+ 0x3ce84423, 0xbbc736d8, 0xbe01c5a5, 0xbc521fc6, 0x3c47afb5, 0xbdbdf253, 0x3c8fa780, 0xbd0f2169,
+ 0x3d9d13db, 0x3d30604e, 0xbd67a231, 0xbdca5f3c, 0xbc6b425a, 0xbd019634, 0xbcf7103f, 0x3cbb5787,
+ 0xbd691446, 0xbc2984a0, 0x3be241ed, 0xbd1aaa85, 0x3d1caeb5, 0x3ccd36c7, 0xbc16bbda, 0xbc5ae144,
+ 0x3d58b8e7, 0x3cf6609b, 0xbba85bc3, 0xbcd64940, 0xbd098cbf, 0x3d17c45a, 0xbd895fd5, 0xbcbabff0,
+ 0xbc3c64fa, 0x3d7f5de5, 0xbca16c45, 0x3d0a9c8c, 0xbb9a08ce, 0x3d72d70d, 0xbbfe5225, 0xbc07dc16,
+ 0x3c807400, 0xbcd261e7, 0x3c884171, 0xbce0e709, 0xbd1b9c21, 0xbc8d1b44, 0x3c121a92, 0x3d4d211c,
+ 0x3d12a997, 0xbc9bafe9, 0xbc78683d, 0xbd2a5788, 0x3d290bbd, 0x3a863122, 0xbd172f4a, 0x3d485054,
+ 0x3c851ca0, 0xbc67d0a1, 0xbd2762cd, 0xbd1ceeb3, 0xbd9ccff3, 0xbbebaad9, 0x3cb3de65, 0x3d332591,
+ 0xbda8a2b5, 0x3bd4b5b5, 0x3d4378cd, 0xbc2a5139, 0x3d20b05b, 0x3ccc9836, 0xbd5225ee, 0xbd3197fb,
+ 0x3aa5898f, 0x3cab0c39, 0xbccf06e2, 0x3cc659e0, 0x3d6a4e07, 0x3c632315, 0xbc84a1ae, 0x3d089c6c,
+ 0x3cbed1b7, 0xbcd71426, 0x3d682f56, 0xbcbb3823, 0xbd1bffb7, 0x3a115ecc, 0xbc85a8ac, 0x3d475dc8,
+ 0x3d608756, 0x3d267645, 0x3c75c2a3, 0xbc25eea9, 0x3c404eb7, 0xbd4afa3d, 0xbb6a0205, 0xbc98f07c,
+ 0x3c4689c0, 0xbd027603, 0xbcfc0761, 0xbc794e54, 0xbc245b64, 0x3cae5f19, 0x3bdbfe0b, 0xbc410eb1,
+ 0xba96ac9d, 0x3dcde937, 0xbc9e58d6, 0x3d960497, 0x3aa7b3db, 0x3d87def4, 0x3d2cedfb, 0x3cbccad5,
+ 0x3d43207c, 0x3ad5e2e3, 0xbc21cd2a, 0xbcf96d9b, 0x3c8dc089, 0x3bbbd9ca, 0x3d1ba0c7, 0xbcda148e,
+ 0x3d277265, 0x3c2b39ea, 0xbb96c59c, 0xbd338af8, 0xbd3a8e2f, 0x3d344c5b, 0xbb1ac8e0, 0x3d0a7ca3,
+ 0xbd4a7ad1, 0xbcf4b9a6, 0x3d3b576f, 0xbbe41ad8, 0x3c2f684d, 0x3d666b46, 0xbd9b90a2, 0xbd47e687,
+ 0x3cc24753, 0x3d2ed1a6, 0xbc14f8f9, 0xbb632bf0, 0x3c71d010, 0xbc1924ce, 0xbd87c86c, 0x3c6f5a87,
+ 0x3a3dfb0d, 0x3d3ff228, 0x3c70c510, 0x3d276075, 0xbce7d534, 0x3c91c503, 0x3d033a07, 0x3d2a8ae2,
+ 0x3cad13f6, 0x3bc836e7, 0x3ca879f0, 0x3c9927ad, 0xbbf0f016, 0xbc818599, 0x3d5873c2, 0xbcc03a1e,
+ 0x3c872586, 0xbd012197, 0x3d7674cc, 0xbc65e8f4, 0xbd3cf788, 0xbc9d861d, 0xbcc21c61, 0xbc05dc42,
+ 0xbd2708e2, 0x3a3bbe5a, 0x3ceda459, 0x3cf1c38a, 0xbc6727b9, 0x3ca37d48, 0x3ce806b9, 0xbd19fb82,
+ 0x3d197fe0, 0x3ce2743d, 0xbc59a1c7, 0x3c896404, 0xbd43cbcf, 0x3c339ddb, 0x3d59ec6c, 0xbd2725ad,
+ 0xbbf9208f, 0x3c3858f1, 0x3ba64a26, 0xbd92f67d, 0xbdb0f26e, 0x3dd33237, 0x3bfaf43e, 0x3cc74bac,
+ 0x3b73dd17, 0xbc712d2a, 0xb81d6702, 0x3cb53e57, 0x3c6bec20, 0x3d19c647, 0x3bc212e2, 0xbcaf5dfb,
+ 0x3d00f19f, 0x3d0b6c48, 0xbd473d10, 0xbc35cac4, 0x3b865802, 0x3d5e4933, 0xbdaa0f6b, 0x3c162a63,
+ 0xbc964780, 0xbcb8d00a, 0x3d2959ad, 0xbc686560, 0xbc852def, 0x3d04664e, 0x3b8f5294, 0x3c13423f,
+ 0xbd8db40a, 0xbcc15212, 0x3c4847c8, 0x3da4e120, 0xbbca2ef2, 0x3ca26207, 0xbc9aff5a, 0xbcb28f77,
+ 0xbc470066, 0x3b9bf954, 0x3c5ce6b4, 0x3c5d0f0a, 0xbbaa184b, 0xbc82c541, 0xbbd1bd8e, 0x3a98410a,
+ 0xbcfc9b14, 0x3d240eef, 0xbcc6494c, 0x3cd784c5, 0xbc8164b7, 0x3cae05e8, 0x3ca530e0, 0x3d1cc3c5,
+ 0xbc1c5d75, 0xbd8db672, 0x3c55657f, 0xbd18ed10, 0xbd50200c, 0xbcdc59a1, 0xbcbc6a47, 0xbd58e01f,
+ 0x3c8bf205, 0xbd5cea76, 0x3d935743, 0x3cca214f, 0xbad2e22d, 0xbb019396, 0x3c90c331, 0xbd19e2eb,
+ 0x3d528095, 0x3c1f52f0, 0x3cef75fd, 0xbcde11bf, 0xbc5bb6d8, 0x3cffb48f, 0xbcce77dd, 0x3ce2855d,
+ 0xbb79622d, 0x3c4b0907, 0xbbb5af27, 0xbd3a5896, 0xbce488c3, 0xbc6769de, 0xbd80ff7f, 0x3bf3e5b9,
+ 0xbc8d24a4, 0xbb843c01, 0x3d1c2316, 0xbabdf3e8, 0x3d511c89, 0xbbae8456, 0x3c98af8c, 0x3c86785e,
+ 0xbd526ee2, 0xbccaaafc, 0xbd33f9f0, 0xbcd32361, 0xbbbfc53e, 0x3d4222ab, 0x3ab3ae96, 0x3cd726e6,
+ 0xbb6e2a5e, 0x3bb8c444, 0x3cfb8803, 0x3d089248, 0xbca1e784, 0xbc9c346e, 0xbd48aad4, 0x3d5cefed,
+ 0x3cbbf981, 0xbd33c058, 0x3c0cd833, 0xbb50d41a, 0xbc85b960, 0x3a4e4e96, 0xbbe5be30, 0xbbc35df4,
+ 0xbd2b32e1, 0xbd8c3739, 0x3ba6ee0b, 0xbcc4cf4b, 0x3d01a225, 0xbd35d1e5, 0x3a5a3347, 0xbd144367,
+ 0xbc70b7c5, 0xbd49a67e, 0x3d17e768, 0xbb265eca, 0x3bac0b45, 0xbc8c5cc6, 0x3ca6eebb, 0xbc8cb2fc,
+ 0x3c832125, 0xbc961c50, 0x3b7ba7b7, 0xbd6ae145, 0xbc28fa49, 0xbcf424a5, 0xbca61856, 0x3ca1732e,
+ 0x3c854c6c, 0x3b260507, 0x3b49acc1, 0xbc935820, 0x3c817d75, 0xbd1cbdc0, 0x3bef2837, 0x3d392720,
+ 0xbd068725, 0xbc20af99, 0xbd34943c, 0x3d2c10aa, 0x3aaf1614, 0xbcc85d1e, 0x3c8294c7, 0x3d68f804,
+ 0x3d313489, 0xbce2840d, 0x394d3515, 0xbd004301, 0xbd484ffa, 0xbc491d14, 0x3cca9f18, 0x3d0c9a36,
+ 0xbc3dd850, 0xbce840a1, 0x3b8b256b, 0x3cc3325d, 0xbd8bbd98, 0xbc5499a9, 0x3d13ca25, 0x3ce24d97,
+ 0xbc3ea5da, 0xbd1782f6, 0x3c12f912, 0xbbc87634, 0xbb89d31f, 0x3b837592, 0x3c967afe, 0xbca3d628,
+ 0xbc1c85e0, 0xbdbae9ea, 0xbaea733d, 0xbd0c9d83, 0xbba233ff, 0xbc97bd42, 0x3cedf6ec, 0xbc9338a3,
+ 0x3ca8860e, 0x3cd3a510, 0x3d248def, 0x3ced3baa, 0x3d2c63f5, 0xbc1cfc16, 0x3d96a180, 0xbd13108b,
+ 0x3d1b5f7e, 0xbc4dd2d4, 0x3d5363b6, 0xbd2e897c, 0xbc9a1974, 0x3b40657b, 0xbc05bc2a, 0xbb0e5c50,
+ 0x3ca18cf1, 0x3c37d72c, 0xbb0fc7da, 0x3b06d6d4, 0x3cfd9ddc, 0xbd3687bf, 0x3d2954c5, 0xbb8ca88a,
+ 0x3b3eaf3e, 0xbcd9ec2d, 0xbcb14ac4, 0x3d04bf6f, 0x3c55a7e6, 0xbd2c6b2a, 0xbb39aa21, 0x3d264bce,
+ 0xbcd0c802, 0xbce58609, 0x3c88b9d7, 0x3d21c867, 0x3ca4b9b5, 0x3b11009e, 0xbc804bee, 0x3c0e1fac,
+ 0x3c6922ba, 0x3c97dac5, 0x3d044fc3, 0xbc024b6b, 0x3c6f4cce, 0x3a83baa0, 0xbba77d40, 0x3b8b4a4f,
+ 0xbcddb39f, 0xbd006934, 0x3c0ad76a, 0xbc8d79ba, 0x3c489bee, 0x3cc4fa37, 0x3caff904, 0xbd44889e,
+ 0xbc8b2c86, 0xbd7d5c46, 0x3e021b12, 0x3bf133d8, 0xbd0f1dea, 0x3c93462b, 0xbdb75540, 0x3da896cb,
+ 0xbdbd5d53, 0xbe19eab9, 0x3d92e965, 0xbd81f155, 0x3dab92ee, 0x3caf7948, 0xbd080b6a, 0xbca498cd,
+ 0x3db9258e, 0x3d96b883, 0xbd13c4b0, 0xbc933a76, 0x3c8f63e9, 0x3d0dfd8a, 0x3cb9dd98, 0x3d091675,
+ 0xbc2c79a2, 0xbc5c6c06, 0x3e062501, 0x3c273c63, 0xbb5e35e9, 0xbd834df7, 0x3d449db3, 0x3b247324,
+ 0x3b8fb854, 0xbd2ec155, 0x3cfc136e, 0x3d0f5b5c, 0x3d25beee, 0xbd94fbc5, 0xbc287273, 0xbd47651f,
+ 0xbdfb468f, 0x3c148543, 0xbd53f3a2, 0xbcc23453, 0xbd024848, 0x3cc45b56, 0x3ce49917, 0x3d514e85,
+ 0x3d2e6fc2, 0xbcfdb0d7, 0xbd0bf22a, 0xbcb8f0f6, 0x3c2d2b7d, 0x3d035860, 0xbd86db0c, 0x3ca5f123,
+ 0x3e10bb0b, 0xbc9c8356, 0xbd1f92d2, 0xbdb07b8a, 0xbc0c9bad, 0xbd447f88, 0x3c2082df, 0x3d1857c1,
+ 0xbcbe4b07, 0xbc45c989, 0x3def88a4, 0xbb9157a1, 0xbc4d2d7e, 0x3ce5ec3f, 0x3be5f699, 0xbc2db6e3,
+ 0xbd817e70, 0xbaab3d52, 0x3a1f125a, 0xbcf9eee8, 0xba88d290, 0x3cea7c48, 0xbd0d55a5, 0x3cb5118a,
+ 0x3d7aa9b8, 0xbd0b43c6, 0xbd08daf5, 0xbdb6d499, 0x3d99ab29, 0x3d582a8e, 0x3df2a6ec, 0xbc8afa22,
+ 0xbd428fda, 0xbbd83cff, 0x3ce49288, 0x3d01a3dc, 0x3d1f35e6, 0x3ca92c00, 0xbca7becd, 0xbd42a81b,
+ 0x3cf3e65e, 0xbcc86e67, 0x3d68468d, 0xb8bf6ce6, 0xbd0103fc, 0xbca74aa0, 0xbc7dbc15, 0xbc271d40,
+ 0x3baccb13, 0xbc2502c2, 0x3cdd0b3a, 0x3cd3b45c, 0x3d18afd4, 0x3cf72000, 0xbda105e6, 0xbd5c8812,
+ 0xbb8f7d55, 0x3bfaec21, 0xbb0354de, 0xbcda82d4, 0x3dbffd1c, 0x3cbfdf3a, 0xbd19ec9c, 0x3d815fd0,
+ 0x3d301205, 0xbbeb5b1e, 0xbdad701c, 0xbc8bd8b0, 0x3d4e3fb2, 0x3c1d2925, 0x3ccc5aa0, 0x393f307b,
+ 0xbdcadbfb, 0x3c404651, 0x3d582489, 0x3cde0801, 0xbcafe618, 0xbdb53e15, 0xbc046976, 0xbc9d03e7,
+ 0xbcfa7456, 0xbd10297f, 0x3da8b305, 0xbd1247f5, 0xbcdc1f60, 0xbd9bd45b, 0x3afac7f0, 0x3c2090d6,
+ 0x3d141a1f, 0xbd008c1d, 0xbd803fb6, 0xbd807ddd, 0x3d7dfdf3, 0x3be2825f, 0x3e0569be, 0x3ccfd157,
+ 0xbd137fd2, 0x3bcbf522, 0x3cc98d60, 0xbbf74f20, 0xbd4a5d6e, 0x3d807587, 0xbb0a89c9, 0xbd1b9d36,
+ 0x3cff650d, 0x3c456fb9, 0x3d22f5ca, 0xbdab4f7e, 0x3d9ef14e, 0x3c26a1d7, 0x3caa6744, 0x3d31ba9a,
+ 0x3d37ed51, 0xbb5d46c7, 0x3d165f28, 0xbbd9467b, 0x3dce0687, 0x3cae4778, 0xbce6514d, 0xbc9eec05,
+ 0x3bb3b0b8, 0x3d344fff, 0xbd8f69b7, 0x3c306379, 0x3d1b6ce0, 0xbd3864c3, 0x3aebea29, 0x3e11c4e9,
+ 0x3d7fd358, 0xbc5019d0, 0xbd582dd9, 0xbd42e55e, 0xbc958af9, 0xbb9c1ba9, 0x3a9fba67, 0xbd0946a6,
+ 0x3d413239, 0xbca2690f, 0x3dc79975, 0x3c992a4a, 0x3cbb7b44, 0xbc55dbf6, 0x3bdebce6, 0xbcaf4c0f,
+ 0xbbbae1f8, 0xbd787b2b, 0x3bde414b, 0x3d42c98f, 0xbbcf7e14, 0xbd862d0f, 0x3cf999a4, 0xbc20fe71,
+ 0xbd3d9c89, 0xbdb68adc, 0x3dcff59d, 0xbd3262bd, 0x3d9dc8fa, 0x3d4a663a, 0x3b0c9a3b, 0x3d3cfe80,
+ 0xbd0c037e, 0x3dbffb8a, 0xbd09ffba, 0x3c76cbee, 0x3d9fd0d5, 0xbd9d8fd1, 0xbce4a204, 0x3d333696,
+ 0x3d008888, 0xbcb94c2a, 0x3d3739e8, 0x3d0027f2, 0xbd4a32fb, 0x3d26409c, 0xbcaf5023, 0x3be8e4e6,
+ 0x3d28552e, 0x3bc75b17, 0x3cc2c34a, 0xbbabea02, 0xbc903e36, 0x3cb7fff8, 0xbd2b403d, 0xbd0a11a0,
+ 0xbc567bd6, 0xbc6c7eda, 0xbc273879, 0x3b71664b, 0x3d687b7b, 0xbc33d640, 0x3bad5b90, 0x3d2cc628,
+ 0xbd443ce7, 0x3dcee885, 0x3c44c9f7, 0x3d16a862, 0xbc161152, 0x3d772fe4, 0xbca2a3d1, 0xbd28bf50,
+ 0xbae101fe, 0x3a61ed1d, 0x3da8cc49, 0xbd47b814, 0xbbf91349, 0x3c2f23dc, 0x3bac8887, 0xbcea1f45,
+ 0xbd19bbdb, 0xbda9f9fd, 0xbd1a9297, 0x3d025020, 0xbd2ddb5d, 0xbd4254cb, 0x3d780ede, 0x3c0f3a65,
+ 0xbd92f8d4, 0xbb6ba659, 0x3c87b431, 0xbc5e57dd, 0x3d22756a, 0x3d22e283, 0xbca99e99, 0x3bde1165,
+ 0xbbef7143, 0x3d553e71, 0xbd06bfe9, 0x3bc1f99e, 0x3d98fd6f, 0xbd2e3825, 0xbbccd2d8, 0x3d40cc12,
+ 0x3d1d7d25, 0xbda5f6c6, 0x3da0e7ee, 0x3ca54229, 0xbc8517eb, 0x3b310154, 0xbb3a028d, 0x3c2236df,
+ 0x3c61a0b6, 0x3ce390e4, 0x3c8e57ca, 0x3b3f9f8c, 0xbc9f3703, 0xbc7eb6b2, 0xbd65383b, 0xbd5aa290,
+ 0xbc3dad2b, 0xbb658d5b, 0xbd221933, 0x3b159f0c, 0x3a019716, 0x3c9a4fb5, 0xbc72449f, 0x3b9c34d1,
+ 0x3d714fc3, 0x3d4faa76, 0x3c2a8cbf, 0x3c2a432e, 0xbcdb5c2d, 0x3d6e8432, 0x3bc88312, 0x3cf9c9ef,
+ 0xbd012709, 0xbc9ee9e6, 0x3d659d7c, 0xbc985c35, 0xbbbffb21, 0x3c14af4b, 0xbc4ce7d0, 0xbd1aee5e,
+ 0xbd9b32fd, 0xbd19bc1f, 0x3d7a9a3d, 0x3d8e4428, 0xbcf89acd, 0xbd457160, 0x3cf69b3c, 0x3c38d5af,
+ 0x3cdd55b2, 0x3cf37a31, 0xbd887846, 0x3c320186, 0x3cdfa899, 0xbc650203, 0xbc1df050, 0xbd1499ab,
+ 0x3d6598fe, 0x3da094bb, 0x393f292b, 0xbd1daeb8, 0x3bfb519d, 0xbd098904, 0x3c83543d, 0x3d5056f5,
+ 0xbca9a265, 0xbccb4219, 0xbc2bca86, 0xbccdc557, 0x3d54bc1a, 0x3ccc4c66, 0x3a2744ee, 0xbc905398,
+ 0xbd2f94c7, 0x3ce0c8c6, 0xbd107d2f, 0x3c7a8303, 0xbc61f02e, 0xbba5f211, 0xbcc80894, 0x3ca4aa25,
+ 0x3bd42f97, 0x3c720736, 0xbb3244c1, 0x3d147664, 0xbd6cbda7, 0x3cc7f805, 0xbd50289d, 0x3d21ff98,
+ 0x3c766f71, 0xbc8672c2, 0x3cb16a56, 0xbcec3f9e, 0xbd484290, 0x3cc215bf, 0x3c5a8990, 0x3db47362,
+ 0xbcdeb8af, 0x3d8ff335, 0x3cd6ce6e, 0x3c8d8109, 0xbc990621, 0xbd92baa1, 0x3dca9576, 0x3d4b1a40,
+ 0xbcc02e9a, 0x3d88f2ab, 0xbaa45b03, 0x3d45dfa6, 0xbd0b9c89, 0xbd9cf902, 0x3db51822, 0xbdb14f2f,
+ 0xbd993d70, 0xbb829a5e, 0x3db6c8bc, 0xbc820c62, 0x3d0ce4ee, 0xbcfbdc34, 0xbd3eeacf, 0xbd5bf094,
+ 0xbd02b129, 0xbc0ccd37, 0x3d1eff50, 0x3b93ceb9, 0x3d803540, 0xbda73480, 0x3da0e2da, 0x3c0561d0,
+ 0xbd0098ea, 0x3d2a404b, 0xbcc17a36, 0xbcba7623, 0xbb348a82, 0x3cd27098, 0x3d5c47f8, 0x3ccfd54f,
+ 0x3c3b8f62, 0xbd6bdf11, 0x3c4b196e, 0x3d7e043b, 0x3a576614, 0xbd37cc9a, 0xbd820781, 0xbcb3c995,
+ 0x3d49a941, 0xbd0535b6, 0xbc0b9735, 0x3cc475e1, 0x3d930328, 0x3c991eab, 0xbd1a505c, 0x3c9a6526,
+ 0x3d9af77f, 0xbd3561ad, 0x3d5bfa1c, 0xbd982675, 0xbda15800, 0x3db69155, 0xbd3dfd3a, 0x3b9675e4,
+ 0xbd1b0ff3, 0x3ca2dd0d, 0x3d5c8d2b, 0xbc12603c, 0xbd27703f, 0xbcad0fb9, 0x3d33ec9d, 0xbc9445dc,
+ 0x3c33ca1c, 0x3c1d4dd4, 0xbce829ca, 0xbc891b0e, 0xbc8e94a1, 0xbd391b7a, 0x3c37edee, 0xbd7f0c6c,
+ 0xbd53f71d, 0xbb1710c8, 0x3d174f4a, 0xbd3c89fb, 0x3bdd3790, 0xbc9dc152, 0xbb872b17, 0x3ce4fc29,
+ 0x3c50c020, 0xbbcabf49, 0xbc279526, 0x3c9b9fe5, 0x3da2ee1d, 0xbde69ffc, 0x3d22cada, 0x3c459178,
+ 0xbc8dfb6d, 0xbcd30324, 0xbb935ef1, 0x3b59cbde, 0x3cb29360, 0x3b91f24f, 0x3d5398c8, 0x3cfca7ca,
+ 0xbb3eab62, 0x3c76a7b6, 0x3c73a954, 0xbba63efa, 0xbd4bd784, 0x3d760259, 0xbbd01f5b, 0xbbcb774a,
+ 0x3c3cd645, 0xbcbbbd89, 0x3c1384a6, 0x3c720ab0, 0x3d2fc816, 0xbc869c60, 0xbc799020, 0xbc860a34,
+ 0x3c264578, 0x3961c463, 0xbcfaf115, 0x3c9a17b0, 0xbd24889a, 0x3d2c5ad2, 0xbd7a4e81, 0x3d415afb,
+ 0xbdbb05c4, 0x3de292de, 0xbba2dce2, 0x3c80cf19, 0xbcb71993, 0xbdf5b173, 0x3d7698be, 0x3ca3adbe,
+ 0xbb997518, 0x3d111809, 0xbc3497ea, 0x38cbb65f, 0xbc361125, 0xbd6d1a97, 0x3d1d4187, 0xbd3e9d93,
+ 0xbdd19dd9, 0xbc153f90, 0x3d4858eb, 0xbcde176b, 0xbab53c9d, 0xbc7fe01a, 0x3c9a625b, 0x3cab4ccd,
+ 0xbb3559e5, 0xbca85ddf, 0x3ca712cd, 0x3c4e7f6b, 0x3b1c0dd8, 0xbd4475b5, 0x3da6433a, 0xbb998978,
+ 0x3ce4a997, 0x3d18ccd3, 0xbd4479ec, 0xbd5dc66a, 0xbd1f479d, 0x3d04c536, 0x3d3dbb03, 0x3d89f8fd,
+ 0x3bc6f1c8, 0xbd1cd891, 0xbc282038, 0x3c3f9121, 0xbc06e601, 0xbc39b351, 0xbc671d13, 0xbb2a7a96,
+ 0xbc0b83a4, 0xbd6500dc, 0x3d01ea65, 0x3da4d7d1, 0x3d7049c3, 0xbd5c06d5, 0x3ce1cbb5, 0x3d1e63cb,
+ 0x3d8c70e8, 0xbd30ecc0, 0x3a4ad732, 0xbd935c22, 0xbd50400b, 0x3df2e278, 0xbd91b1ef, 0xbd1b6020,
+ 0xbd6ccff1, 0xbd473493, 0x3cf5629d, 0xbd255ece, 0xbda11b83, 0x3d004c6b, 0xbd7798a4, 0xbd49a629,
+ 0x3c67d0c8, 0xbc79c302, 0x3d83c184, 0x3d12974c, 0xbd6c0776, 0xbdcd5758, 0x3be6c666, 0xbd1156ee,
+ 0xbcec41f1, 0xbd03a213, 0xbd7cfc13, 0xbcb8503a, 0x3bfae525, 0xbd5f74e2, 0x3bf88121, 0xbd7667c2,
+ 0x3d54aaef, 0x3df4511b, 0xbde9d93e, 0xbca0d8a3, 0x3d45d601, 0xbd2f3ee5, 0xbd7bc643, 0x3c65b723,
+ 0xbd829d63, 0xbc4759db, 0x3dd14d48, 0xbd39c993, 0x3d31d4e6, 0x3c2092ef, 0x3ca8908a, 0x3d2d38cd,
+ 0x3cc531d0, 0x3ac3e805, 0x3a7c8e16, 0xba2f59a4, 0x3cdef7b4, 0x3daf9dd4, 0xbd935a71, 0xbcdb643c,
+ 0xbdaa23fe, 0x3d57572d, 0xbc5f0355, 0x3cceaf89, 0x39e48086, 0xbb71c92d, 0xbd0edcfd, 0x3cfe6f36,
+ 0xbd237a98, 0x3d0a357b, 0xbc3d704f, 0xbd26592b, 0xbbda08c9, 0x3d1960c5, 0x3d17b1d9, 0x3dc209bd,
+ 0xbdc6c941, 0xbc85a733, 0x3c4f3138, 0x3c654d59, 0x3c834018, 0x3c6d476c, 0xbda5df48, 0xbd0b6967,
+ 0x3c9df174, 0xbdbfe849, 0x3d8f37c1, 0x3c934fbd, 0x3c158ae0, 0xbd116689, 0xbd1884cd, 0x3d4f0ec6,
+ 0xba22a2df, 0x3d752ca9, 0xbd326a7b, 0xbc874e7e, 0x3cfae4a1, 0x3cbc0b96, 0x3c16e1bd, 0xbd886097,
+ 0x3cc62a93, 0x3c8342d1, 0xbbde652e, 0xbd82dae5, 0xbd0ef5e9, 0x3d0ed33e, 0xbca431c9, 0x3c4749ff,
+ 0x390e712b, 0xbd3dce72, 0x3c9fa053, 0x3d14a3bb, 0x3bb9a46c, 0x3adfb3b4, 0xbc5fb184, 0x3c544580,
+ 0xbbb549c6, 0xbbcde34d, 0xbd2ecf61, 0x3cc55543, 0x3bde9292, 0x3d0b2a3c, 0x3c58d1e6, 0xbc256cd9,
+ 0xbd91f732, 0xbbbb94fd, 0x3c51aad5, 0x3cbae425, 0xbd1334a2, 0xbc990c94, 0xbcff9fb0, 0x3ca04c16,
+ 0x3d418b6e, 0xbd021d1b, 0xbd387ed4, 0xbd35510b, 0xbce38526, 0x3c554df9, 0x3d988186, 0x3d70ac1d,
+ 0xbd0c5dcb, 0xbd3da3fe, 0x3d07b7a2, 0xbc0cac2a, 0xbcbd2fc9, 0xbb2b5ed8, 0x3b2dfb14, 0x3d229601,
+ 0xbd5c30ed, 0x39bd0cb3, 0x3d78598e, 0x396abb96, 0x3d1acec9, 0x3cf507ab, 0xbd1bafa7, 0xbd4ecf3a,
+ 0x3c67fd95, 0x3b95a5e7, 0xbe05ecb1, 0x3b98c3f8, 0xbd20d7b5, 0xbd84a3c6, 0xbcafacf0, 0xbb140a6e,
+ 0x3d4c38ab, 0xbc7fb7ab, 0x3d7aad1b, 0xbc7e35e3, 0xbd4bba41, 0x3cede888, 0x3ba7c32d, 0x3c227985,
+ 0xbc90000c, 0xbc7c493a, 0xbda16f26, 0xbce900fe, 0x3daaa65c, 0x3cda0008, 0x3d546db1, 0xbca2495e,
+ 0xbd293ea9, 0x3b83e0db, 0xbd726e39, 0xbcba09c4, 0xbce00127, 0x3c750b65, 0x3c9f69bc, 0x3d2fcbc6,
+ 0x3bf984b6, 0x3c698805, 0x3b310ae2, 0x3d754dc4, 0xbce244da, 0x3d755347, 0xbcced492, 0x3abf33fc,
+ 0x3cc9cd1a, 0xbdcd63e9, 0xbc10fb9d, 0xbd4001c8, 0xbcab6807, 0x3adadb89, 0x3ce0c2d2, 0x3da7290a,
+ 0xbc82f7ab, 0x3c36fd08, 0xbbf67d01, 0x3bcc941e, 0xbd4a8632, 0xbd2955c7, 0x3c83b192, 0xbca3ee5e,
+ 0x3c35150c, 0x3c4c8a84, 0x3d8d350d, 0xbcd44758, 0xbd1ec631, 0xbcba326f, 0xbbce7729, 0xbc96a727,
+ 0xbbdda79f, 0xbc054017, 0xbb566ec2, 0x3bd5e173, 0x3ad31655, 0xbc11d517, 0x3c065124, 0x3d04bc7b,
+ 0x3d090f7a, 0x3d9feeda, 0xbd4db111, 0xbd4f9a58, 0xbcee6451, 0xbaa197cf, 0xbd4d16f9, 0x3ca60fe6,
+ 0x3c41eaa0, 0xbc94bb7f, 0x3d51a679, 0xbd366f38, 0x3d254c52, 0x3cf21d5a, 0x3d4ef1e0, 0x3d28afc7,
+ 0xbbae2690, 0xbc731375, 0xbd0ac9bf, 0x3a8c6808, 0xbc722726, 0x3d188f1e, 0xbce83696, 0x3ccdb92d,
+ 0xbcc13165, 0x3d94f658, 0x3c58e97e, 0x3ce57d72, 0x3aed70b6, 0xbd9fbbc6, 0x3d00736e, 0x3d00a6b7,
+ 0xbdae7e2f, 0x3bf2050e, 0x3c880a90, 0xbd11b1dc, 0xbc87c7d4, 0xbc842d88, 0xbb259d57, 0xbbe1bef5,
+ 0xbd44d1da, 0xbd40e48e, 0x3cd0654d, 0xbc4c6018, 0xbc0c0a54, 0x3c952410, 0xbab121eb, 0xbd44bda2,
+ 0x3cc72008, 0xbc860809, 0x3d6fe542, 0x3d2a07db, 0xbc87fcb6, 0xbda81e26, 0x3d09679a, 0xbccfcc24,
+ 0x3caa2797, 0xbc5acd96, 0xbd033543, 0xbc59b72a, 0x3c5b7669, 0xbd6a92ce, 0x3cd4389c, 0xbd5c7609,
+ 0x3d5d6698, 0x3d71fcda, 0xbd8e3326, 0xbd06af24, 0x3b63a469, 0xbd0b4ff0, 0xbd1d3747, 0xbb848572,
+ 0xbd5d720e, 0x3d881cc2, 0x3b3a58eb, 0xbca580f6, 0x3b2ae49e, 0x3c39444d, 0xbbd99790, 0x3cceb353,
+ 0x3c7b1530, 0xbc138d9b, 0xbc740ed1, 0xbc2b75ea, 0x3cb5292f, 0x3da2423e, 0xbd261837, 0xbcbc6464,
+ 0xbd09c308, 0x3d11d6c0, 0xbaea8fde, 0x3b147063, 0xbc46a9be, 0xbc19a516, 0x3c3bd284, 0x3c071e2f,
+ 0xbc7764d9, 0xbd07e902, 0x3b9cdb17, 0xbcff9450, 0x398c41c5, 0xbc352b98, 0x3d2b6ea1, 0x3ca1841b,
+ 0xbcd615e3, 0xbd90c776, 0x3bb213d7, 0x3b91667c, 0x3cab388d, 0x3d2f1a39, 0xbc92a0ba, 0xbd1b9ff1,
+ 0xbd48d01b, 0x3c8a6a1c, 0x3d3e2aa9, 0x3dc45d47, 0xbc03a65c, 0xbceae3b1, 0x3cb1cbbd, 0xbbe7a6d4,
+ 0x3d227234, 0xbc5f8f58, 0xbdda14c8, 0xbd22690f, 0xbc9800f3, 0xbb87c1ba, 0x3c78ebd2, 0xbdae1840,
+ 0x3d772fe1, 0xbb685c65, 0xbca2ab35, 0x3cdeca61, 0x3cf11b99, 0xbc98e453, 0xbcb2167b, 0xbd19bc38,
+ 0xbcfabe10, 0x3cbccacf, 0xbd160fca, 0xbcd7c3f9, 0x3d2abd63, 0x3c29b560, 0xbcb94430, 0xbd1fbb41,
+ 0xbca466e7, 0xbc7a21dd, 0xbc5d87b3, 0x3b7e2bcb, 0x3cc3f8db, 0x3c92dd2d, 0xbd0e9932, 0xbd1b6824,
+ 0xbcfa4582, 0x3b86f56d, 0xb9c6cfec, 0x3c9c3d3e, 0xbba8a44e, 0x3d8f1d83, 0xbd11d074, 0xb7bee9b1,
+ 0x3d2f269e, 0xbd16284c, 0xbbfb8edd, 0xbd5b0d26, 0xbba7856d, 0x3805757f, 0x3d47158f, 0x3d92fe37,
+ 0x3c2b1eaf, 0xbd15679f, 0x3c88ab09, 0x3c255bb7, 0xbd472c7c, 0xbc52a226, 0x3c91c7d8, 0x3a8bdb88,
+ 0xbd120c8f, 0x3d413dff, 0x3c9833cf, 0x3cdc0b01, 0xbca0e9e7, 0x3c9ac1cd, 0x3d301661, 0xbb5f5c86,
+ 0x3db33868, 0x3d8e4f02, 0x3ce80e28, 0xbd819374, 0xbd33637e, 0x3d5f689a, 0x3d08c28a, 0x3c97fa68,
+ 0xbc1adce2, 0x3b4c2228, 0xbc481ccb, 0xbd2a61e4, 0x3c82df89, 0x3c8e67b7, 0x3c73270f, 0xbd19825f,
+ 0xbbf69dc7, 0xbd880a48, 0x3cd5e0e1, 0xbd3d58a1, 0x3dafe861, 0xbd2bbce8, 0x3d2b6606, 0xbc9fc5bd,
+ 0xbd5942b5, 0xbbc110f4, 0xb7bdd482, 0x3d6d044e, 0xbbad38a7, 0x3ce42010, 0x3bc6f48e, 0xbc12ef84,
+ 0xbc5bfda2, 0xba4f57b8, 0x3cff246e, 0x3c3a6dbe, 0x3c46c698, 0x3c0c20ed, 0xbd2aad5e, 0x3d730189,
+ 0x3c2f0959, 0xbcf0d0d7, 0xbcbb47f5, 0x3d021586, 0xbc42b413, 0x3be022e3, 0x3c8b7e84, 0x3d99913c,
+ 0xba19b4d8, 0xbb8405f0, 0x3c919c13, 0xbc8a3218, 0xbce40625, 0xbd5f2117, 0xbb3b27d0, 0xbd2adf45,
+ 0x3b01842b, 0xbd057d32, 0x3b8fd6b7, 0x3ca03596, 0xbd51b70b, 0xbd77f96a, 0x3ce783a6, 0xbd23e1da,
+ 0x3d467f64, 0xbbe0d940, 0x3cab27e5, 0xbd278858, 0xbbe1b13e, 0x3c8cb649, 0x3b1d2e53, 0x3d03af59,
+ 0x3be59c6c, 0x3c5d6e16, 0xbce07fe8, 0xbd149700, 0xbc83b8ac, 0xbc98eff5, 0xbd329408, 0x3d0549a5,
+ 0xbcc6650a, 0x3cba03ae, 0x3ca137f6, 0xbbf6d91b, 0x3c7e8329, 0xbc6e3260, 0xb9ad7164, 0x3da2cadc,
+ 0x3b2a10f0, 0xbd5cc7e7, 0x3c15fba9, 0xbc856bed, 0xbc9b479a, 0x3d4a939f, 0x3c76a08c, 0x3cd36be6,
+ 0x3a0f93a7, 0xbd09f533, 0x3d456e91, 0x3d027a1c, 0xbd4237e9, 0xbd1980f3, 0xbba78ee6, 0x3daae823,
+ 0xbcb09ed8, 0xbd2b1b2c, 0x3c305c95, 0xbb95f911, 0xbbe46a21, 0x3ca16e37, 0xbc2599b1, 0xbc45266f,
+ 0xbccd7b1d, 0xbd235a0a, 0x3cb9eb5c, 0xbcbf29a6, 0x3ca8248f, 0xbc10b50e, 0xbb84263d, 0x3b7e630a,
+ 0x3ca2b9c8, 0xbd973b71, 0x3d98e45d, 0x3cb19246, 0xbc7f3ad8, 0xbdb2f85a, 0x3d4174d1, 0xbd86ebed,
+ 0x3d3f0025, 0xbd650fca, 0x3c9bf604, 0xbcf243ed, 0xbbc1e3d5, 0xbd05de15, 0xbd8edc70, 0x3a64a2e4,
+ 0x3d089f8d, 0x3ad5a75a, 0x3b1e71b1, 0xbd49331c, 0x3cc86bb9, 0xbd6d5a03, 0x3d471de9, 0x3db6ccc3,
+ 0xbc989634, 0x3c4da287, 0xbc6678be, 0x3d76be05, 0xbb5bc117, 0xba0adece, 0xbad88060, 0x3d37b847,
+ 0xbcc09524, 0xbcc3cd6a, 0xbc7ec0d9, 0xbcb8a5cd, 0xbccfd389, 0x3c7935fc, 0x3cb96223, 0x3b3d3b0d,
+ 0x3c93d107, 0xbd95d45c, 0x3ccedf30, 0x3b4d2d02, 0xbdc3308f, 0xbd167dd7, 0x3c99512a, 0x3dabdf68,
+ 0xbc7f466c, 0xbd50d33f, 0x3d1c9326, 0xbd163ecc, 0xbce7b821, 0x3d1bf7a8, 0x3cad9878, 0xbd5343e9,
+ 0xbca8d92e, 0x3cda7496, 0x3d87707e, 0x3b1823ac, 0x3b0ed59c, 0x3c75b91c, 0x3cef07cb, 0x3a23cfc1,
+ 0xbd17db50, 0x3aa36959, 0x3ca710f8, 0x3cf60daf, 0x3d31c802, 0xbc9d35da, 0xbc6cfbc5, 0xbc553f2c,
+ 0xbb1f9901, 0xbd4ef125, 0xbc58a47c, 0xbb4f759b, 0xbbdba628, 0xb7693378, 0xbc56784e, 0xbcb67b75,
+ 0x3c84110a, 0xbc6658f6, 0x3c89c634, 0xbc030c95, 0xbcc7257c, 0xbd38aa62, 0xbcb72b1d, 0xbb213360,
+ 0xbd23f8b5, 0x3d1012e9, 0xbc81deda, 0x3ced2466, 0x3c8355ef, 0x3cedd0f8, 0x3cb63215, 0xbc0e4865,
+ 0xbd50b5f9, 0xbcbb75f1, 0xbcdd935f, 0x3c66f549, 0xbcc8721d, 0x3d782b08, 0x3c06c595, 0xbccf3a14,
+ 0xbc0ea578, 0xbc784df5, 0x3d414508, 0x3c8d0805, 0x3ca6b9e4, 0x3b866360, 0xbd8c52cf, 0x3c06863b,
+ 0x3cc11dd4, 0xbd928419, 0x3caa9546, 0xbd2d8c48, 0x3bf01076, 0xbd111d58, 0xbaf353ec, 0x3cff8ede,
+ 0xbbb67bd1, 0x3d3a2bab, 0x3dd12ca4, 0x3d3d1455, 0xbce92a1f, 0x3cb6ff21, 0x3d474a44, 0xbd069c84,
+ 0xbd408d99, 0x3c906ed0, 0xbccf22c4, 0xbc13883e, 0xbc505724, 0x3cee231e, 0x3cd86f01, 0xbc7b76c9,
+ 0xbb59a94d, 0xbd24b174, 0x3b7caf16, 0xbc98d363, 0x3c84e2e5, 0x3d0b7d58, 0x3d10a317, 0x3c4c347d,
+ 0xbb057e19, 0xbbf3690e, 0xbd428894, 0xbb9cf065, 0x3d44018f, 0x3c77cb56, 0xbc1f2f0f, 0xbc6d0e0a,
+ 0xbd2aa321, 0x3c4e3fee, 0x3c236884, 0x3b903287, 0xbc3cfa74, 0x3cc6bbbd, 0x3cfada7e, 0x3a857fdb,
+ 0xbc9977f2, 0xbd55d3e9, 0xbb64a536, 0x3d2d67fb, 0x3c9f76e3, 0x3c6d0173, 0xbd5e4d2d, 0xbd2fadee,
+ 0xbd00aa54, 0x3c726be1, 0x3d8bc6fc, 0xbcb16fb4, 0x3d12c865, 0xbcaa8cd8, 0x3c5ae7f0, 0x3c040d25,
+ 0x3d387079, 0x3b679955, 0xbd389897, 0xbce0aaaf, 0x3ccddc6d, 0xbd2cc9ca, 0x3c781176, 0x3d384213,
+ 0xbc967d40, 0x3c9acce9, 0xbc938c6f, 0x3d06e5f7, 0xbd30b6f5, 0xbc97e766, 0xbc0b4855, 0x3d09fd23,
+ 0xbcf8155f, 0xbbb1a389, 0x3c239f7e, 0xbc9bfc15, 0xbd3666ce, 0x3b59bc6d, 0x3cd7a59c, 0x3bb7acde,
+ 0xbaac2574, 0xbc645d3e, 0xbc1236fb, 0xbcc6fae0, 0xbc8da80f, 0x3d379471, 0x3c7c308f, 0x3b64396e,
+ 0xbc474f25, 0x3c314a40, 0xbd0e6ff8, 0xbbeb3b77, 0xbbf89868, 0x3d2c0b65, 0xbcc85156, 0x3b41a890,
+ 0x3d142863, 0xbcdaae1c, 0x3d80d667, 0xbd4a6e33, 0x3cc4ae5e, 0xbbc61bbd, 0xbcba2809, 0x3be7ec63,
+ 0xbcd2da1f, 0xbcad2714, 0xbba02c31, 0x3d82e64f, 0x3ccdb94b, 0xbcf05c57, 0x3c4ea2fe, 0xbd5c02df,
+ 0xbcd0a9ee, 0xbb14dd4a, 0x3cbef8f8, 0x3b1d76d9, 0x3ceeaf2c, 0x3cda173c, 0xbd3fdbf7, 0x3db02b60,
+ 0xbaf31170, 0x3d1ed9fd, 0xbd06ac2f, 0xbc981d77, 0xba7b2e56, 0xbbee374b, 0x3c8fd207, 0xbce33aee,
+ 0x3ca1ca84, 0x3bb5dbb8, 0x3c474d73, 0x3c7459f9, 0xbca728f4, 0x3bc1120b, 0xbbadf1f0, 0x3d8a71c6,
+ 0xbd220f38, 0xba5d7f1d, 0x3ae8a846, 0xbd9add54, 0xbcab95bc, 0xbba6b3d8, 0x3d3d4ee6, 0x3d0e54e6,
+ 0x3c261841, 0xbcd0922d, 0x3d2fa2f4, 0xbd1eb9ca, 0x3bd0df25, 0xbc274861, 0xbcc17d5c, 0x3c8b9aeb,
+ 0x3b9432db, 0xbc4b24a7, 0xbc9db572, 0x3bc7d64a, 0x3c78f777, 0x3cd23418, 0x3a99fcbc, 0xbba219df,
+ 0xbd43a46c, 0x3d82c223, 0x3bd08181, 0x3d14de03, 0x3b154397, 0xbbc8831a, 0x3cfb297d, 0x3d578ce4,
+ 0x3d2f2363, 0xbc29062e, 0x3b7194ef, 0x3b209167, 0xbc4c821e, 0x3bc30ea8, 0x3b068e94, 0x3c09b377,
+ 0x3ac189a2, 0xbcf1d974, 0x3c74fac6, 0xbc931b50, 0xbacb2076, 0xbbb70638, 0xbcfce28c, 0x3beb7fea,
+ 0x3b5b8b22, 0x3c349fd7, 0x3c279a27, 0xbc448d61, 0x3be18f02, 0xbc9e2a5b, 0x3c9a5166, 0xbd1a675c,
+ 0xbd411921, 0xbc9e5850, 0x3cfabfc6, 0xbcc4de7f, 0xbce427a7, 0xbd620c91, 0x3cf9f558, 0x3c7b8863,
+ 0xbd8c67ca, 0xbd53e44b, 0x3dd27733, 0xbbde9e21, 0xbd4f2917, 0x3bb0f2d7, 0x3ceaa671, 0xbd748c5b,
+ 0x3ce8ff24, 0xbd5f09ab, 0xbce64bd2, 0xbcd8c30d, 0x3cd64704, 0xbc10d83b, 0x3cb21011, 0xbcc70a52,
+ 0x3cc65bb3, 0xbc2829d4, 0x3cf33d24, 0xbb19fdf1, 0x3c96f8fa, 0xbcc5bc8f, 0x3c868d6a, 0x3d4f67e9,
+ 0xbd56beec, 0x3b87cb83, 0x3c36a68b, 0x3b82c753, 0xbca527cc, 0x3cfeb8fe, 0x3d253227, 0x3d538d3d,
+ 0xbdb1104d, 0x3b3b5c4d, 0xbc9f72e3, 0xbc5eaaec, 0xbc530d49, 0x3b61b739, 0xbc1e2921, 0xbc893c79,
+ 0x3da25923, 0xbc6abd01, 0xbc382805, 0x3c0c7295, 0xbd1f60ec, 0xbd2a3ecd, 0x39b64689, 0x3cfd3e20,
+ 0xbc541a16, 0xbc614a2a, 0xbce1979d, 0xbd9ec703, 0xbdbd6e1b, 0x3d444d1a, 0xbcbb3c3c, 0x3c02b654,
+ 0x3cec8738, 0xbcf4a600, 0x3d808b9a, 0xbc83dc7c, 0xbd61cbff, 0x3be467d8, 0x3cc22774, 0x3c1b7aae,
+ 0x3cb272c1, 0x3ce5e8d8, 0x3d18faa5, 0xbcef4fbc, 0x3c1346fb, 0x3cba6469, 0xbb1647d9, 0xbcbcecba,
+ 0xbc6460a4, 0xbd3aa8b8, 0x3d0970f8, 0xbd800e31, 0x3c285a45, 0xbbc17c8e, 0xbd134be3, 0x3cb5b73f,
+ 0x3d1a3326, 0xbd2333eb, 0xbc00310c, 0x3cecf5b0, 0x3d918e90, 0xbda17c75, 0xbcdffd3f, 0xba7fb0b8,
+ 0xbdc11b93, 0x3d561d07, 0x3cc8a21b, 0x3d27083b, 0x3cc08025, 0x3d1a0bc3, 0x3db0f7c1, 0x3d2f7f51,
+ 0xbd4ac603, 0x3d1563be, 0xbc7f7e33, 0x3c117b95, 0xbc558e1b, 0x3d8d779b, 0xba8be13a, 0x3c4408f0,
+ 0x3cff96e6, 0xbce0bc91, 0x38627148, 0xbd2ef562, 0x3b6e3cae, 0x3c2e58c2, 0xbd021dbe, 0x3c14fa53,
+ 0x3cf2a966, 0xbc933ece, 0xbd2c0bcc, 0x3c89e400, 0xbd64fab0, 0x3c544d16, 0xbd2ab605, 0x3b8d6d7c,
+ 0x3ced47e5, 0xbd203011, 0xbcda0245, 0xbbbc1289, 0xbd2c33ce, 0x3a893700, 0x3d17eece, 0xbaea0091,
+ 0xbc73d6de, 0x3cd9f003, 0x3d331e23, 0xbbbea470, 0xbccbe6c3, 0x3d7fbfad, 0x3da8eb92, 0xbcc4564b,
+ 0x3d603380, 0x3d03f76b, 0x3c5e22cf, 0xbde05912, 0xbd164bf6, 0x3db06cf2, 0x3d7cb1df, 0x3a9f628d,
+ 0x3d0a0155, 0x3b56131b, 0x3cfad836, 0x3c7a51cd, 0x3cbba40f, 0x3c281b59, 0xbcf974cb, 0x3b11de81,
+ 0x3c1d2cf5, 0xbd8f3324, 0x3d45f9a2, 0xbcca04b5, 0x3d00391d, 0xbd745ec8, 0xbc851b02, 0xbd13bd6f,
+ 0xbcbbf733, 0xbc78c48c, 0xbc8de36b, 0xbb553183, 0x3c016ae0, 0xbc5637dc, 0x3d451a32, 0xbcd3ae3b,
+ 0x3d0a6d2f, 0xbd2b3673, 0x3d0ce96c, 0x3cd12ad9, 0xbab5153f, 0x3c974f0f, 0xbdc303f0, 0x3d1aa0f4,
+ 0xbc206a6e, 0xbc46fe5f, 0xbd69c03a, 0x3c25d6c9, 0xbca774c8, 0x3d0d3a1d, 0xbb8ed695, 0x3d5a4e9f,
+ 0xbce25ad4, 0xbb90cc3a, 0x3d26e81e, 0xbd35cbfd, 0xbd3e9d8e, 0xbc50b171, 0x3b18d47d, 0xbd1b231f,
+ 0xbcbfab38, 0xbca29bf7, 0x3d34316e, 0x3b1b6835, 0xbc16ebf1, 0xbc713465, 0x3ce9e89f, 0xbce63c8f,
+ 0x3bf4c7e8, 0xbb9ad4d7, 0x3d635dec, 0xbdb93f34, 0xbca64358, 0x3d83c271, 0x3cc2faf3, 0x3d88cd22,
+ 0xbc68376c, 0x3cf6bc7f, 0xbc947b7c, 0x39418578, 0xbcfa7991, 0x3ab7c5b5, 0xbcc88847, 0x3d1846ff,
+ 0xbc7bd6ec, 0xbc5f84f7, 0x3d28be88, 0xbc859e64, 0x3a998c49, 0xbd7926e6, 0x3ca01049, 0x3d49a7c7,
+ 0xbb8113cb, 0xbd128b1e, 0xbc959628, 0xbcf7d62f, 0xbc19228b, 0x3d9fc92d, 0x3ca9afae, 0x3cdde494,
+ 0xbbe823ef, 0xbc5b94d1, 0x3cd50df3, 0x3d8fcb52, 0xbbf87e26, 0xbda25183, 0xbc7063a1, 0x3dbd4a0b,
+ 0x39fc5ca5, 0xbce19de4, 0xbc324805, 0x3c632265, 0x3a2f1edc, 0xbbcccc30, 0x3c545796, 0x3c597f9e,
+ 0xbd881b50, 0x3cdb5bc1, 0x3d9df13c, 0xbc12e98c, 0xbd8373e3, 0xbd00fef0, 0x3d358e6c, 0x3c105c33,
+ 0xbd1bc1c2, 0xbd873602, 0x3d934e7d, 0xbcee5b17, 0xbcb9ac77, 0xbd882faa, 0xbbbeb539, 0xbd58faca,
+ 0x3d707430, 0xbd910412, 0xbc6095a8, 0xbdaf7519, 0x3ca6a939, 0xbbda0f89, 0x3c7e5080, 0x3d3bccbc,
+ 0x3c3ed657, 0xba8b1a91, 0xbab524ba, 0xbd306733, 0x3c55d8f9, 0xbd589dbf, 0xbb3d7d85, 0x3d5b24f2,
+ 0xbcf47f1d, 0x3d54798d, 0x3cbdebfc, 0x3cbd92a9, 0xbcce53ac, 0x3bc0594e, 0xbbbdbb0a, 0x3d307abf,
+ 0xbc4e7164, 0xbd6d3fa2, 0xbd260d18, 0xbbf85286, 0x3bb977cc, 0x3cf2eb8e, 0xbc883d3f, 0x3c064165,
+ 0x3c30d029, 0xbcc76b99, 0x3d10adcd, 0x3c857b5d, 0xbd71263f, 0xbd1f7655, 0x3cf5ec41, 0x3dc475bd,
+ 0x3c954005, 0xbd57de7f, 0xbd0629c3, 0xbd5666bf, 0xbcce0138, 0xbd21688a, 0xbb2c9c8b, 0xbbfe6c6c,
+ 0xbc5fd773, 0x3b9fad10, 0x3c926626, 0x3bbf6dc4, 0xbc063a38, 0x3b34e5de, 0x3c28594c, 0x3c0e9a7d,
+ 0x3c829374, 0x3bee47c4, 0x3c98eb69, 0x3d47c09f, 0x3c81cdfe, 0xbbf2877a, 0x3b8a38d3, 0xbc6c6b56,
+ 0x3bec2e3b, 0xbc8a4fee, 0xbc9fc2d9, 0xbbcd7641, 0xbc5564ed, 0x3c87ffa2, 0xbb9e769a, 0xbc09ebb1,
+ 0x3cff5d1e, 0x3beb651e, 0x3d5846f8, 0x3bd08550, 0x3b959d5e, 0xbc8be960, 0xbc526498, 0xbc52bdc4,
+ 0xbcb2aa7a, 0x3d485cf7, 0xbc9e4c3e, 0x3af2cdbc, 0x3c16cf28, 0x3cd261b9, 0x3d259895, 0x3bd5c6bd,
+ 0xbcd1b01d, 0xbce7e69d, 0xbc847fa2, 0xbc922d05, 0xbc43d806, 0x3cb518ad, 0xbc24505b, 0xbc5e5a1d,
+ 0xbcb94d9d, 0x3cc8f1e7, 0x3cb5a9db, 0xb939db42, 0x3c1680e6, 0xb80ee1c3, 0xbbc19dae, 0xbc8839f4,
+ 0x3c96d14a, 0xbd7c319f, 0xbcc0123d, 0xbcdcc7e0, 0x3c1c9431, 0x3b8142ab, 0x3c871b22, 0xbbb7adbe,
+ 0xbbe0de02, 0x3d3092c7, 0x3cd51965, 0x3d6a03aa, 0xbd04f7e6, 0x3ca5a9c9, 0x3d0a13a7, 0xbc9b4a3c,
+ 0xbc87197b, 0x3d5a24f1, 0xbc36d624, 0xbc05d455, 0xbcfc944c, 0x3d0b2f9c, 0x3bcb6ccc, 0xbd061664,
+ 0x3c88b6a9, 0xbc9d2f1d, 0xbcf6b3fe, 0xbb5d9cc2, 0xbc8d1796, 0x3d32daf0, 0x3d8e897c, 0x3c9b68e9,
+ 0x3c619303, 0xbcc7fd19, 0x3b2a1562, 0x3ca28671, 0x3c19a65e, 0x3d420620, 0xbd062580, 0xbcace2df,
+ 0x3c45369a, 0x3c564f3b, 0xbb36b595, 0xbd0ade16, 0xbbc3a180, 0x3ccfbc74, 0x3c54a955, 0xbbb5cf89,
+ 0xbc6d9f1c, 0xbca10db9, 0xb8766640, 0x3c73e683, 0x3cba0370, 0xbbd02b46, 0xbbf839b9, 0xbd2db4e5,
+ 0xbc0ca375, 0x3c0bf098, 0x3d05589a, 0xbcebc1fe, 0x3cb72ead, 0x3b45b7d3, 0xbc2694eb, 0x3c92347c,
+ 0x3bb34b48, 0x3968d738, 0xbda52c58, 0x3b643944, 0x3d02fab7, 0xbc6211d1, 0x3ac06f8c, 0x3cf047ed,
+ 0xbac043d2, 0x3d3a8f0c, 0xbd0cbf98, 0x3ce1d80f, 0xbd083c2e, 0xbcc2a69a, 0xbca67e56, 0x3d3a913f,
+ 0xbcbdb1ed, 0xbcdaacb4, 0x3d00ec09, 0xbcc7ecd4, 0xbd56d6e2, 0x3c679b22, 0x3c69d4ed, 0x3c226314,
+ 0x3c1f9b03, 0x3bb63c39, 0xbd28dbf0, 0xbccbc34b, 0xbcef6129, 0x3cbff332, 0x3cf5d4fe, 0x3d29a2b9,
+ 0xbb37ff3b, 0x3c4e9c12, 0xba5cbc9c, 0xbcca4ff1, 0xbcba439a, 0x3d5697b5, 0xbcccb401, 0x3cccddcb,
+ 0x3d69cff4, 0xbd7f5cce, 0x3d80947f, 0xbd008c10, 0x3b3e9c04, 0xb9e64e3c, 0xbd08aa12, 0x3c27b484,
+ 0x3c26e463, 0x3c8841a6, 0xbb8f1980, 0x3c23a679, 0x3b5e0452, 0xbd642637, 0x3c9051f0, 0x3b85c7fc,
+ 0xba86d29f, 0x3d148aa3, 0x3bd62978, 0x3ca173d8, 0x3c5b3527, 0x3bf0f3d4, 0xbc0b0f19, 0x3d4f5ca1,
+ 0xbcbd2afd, 0x3d1d7013, 0xbd439d83, 0x3c948e61, 0xbcd05c14, 0xbbcd241e, 0xbc6e389d, 0x3a7917e6,
+ 0x3cc3fb99, 0x3b8245ef, 0xbccd2bf6, 0x3c3f8ff0, 0xbcd1eb93, 0x3d077614, 0x3c5a58a0, 0xbd04a960,
+ 0xbc837563, 0x3c876ffb, 0xbca18b58, 0xbceb24a4, 0xbca78a0d, 0x3ce3b478, 0x3d5efd7e, 0xbd3f7b52,
+ 0x3ce20881, 0x3c21d73b, 0x3d453535, 0xbd916704, 0xbd29aa00, 0x3cc2b95f, 0x3b4c12cd, 0x3d81b047,
+ 0xbc47bfcd, 0xbcd96d2e, 0xbd8a3531, 0x3c068e43, 0x3d169cb2, 0x3c4d2501, 0xbc41e53d, 0x3d918725,
+ 0xbd97b290, 0xbccb841a, 0xbc22c374, 0x3d2cafb8, 0x3c6b0d02, 0xbd1f63c7, 0xbd18f914, 0xbc0fcee9,
+ 0x3d23783d, 0xbd6abf7c, 0xbd14232c, 0x3d09f5de, 0xbd103012, 0x38d77d27, 0x3d0c5e9b, 0x3c0de394,
+ 0x3d19f64c, 0xbd0cae9e, 0x3c687b6e, 0x3c4b3eae, 0xbc8f160e, 0x3bfda41e, 0xbb053632, 0x39b7773b,
+ 0xbc985b1a, 0xbb0d1261, 0x3c452066, 0x3d025304, 0xbbe034f6, 0xbd5f52ec, 0xbd0c023d, 0x3d200622,
+ 0xbb9b1153, 0xbd1f2b30, 0xbb19d4cf, 0xbcb6606f, 0x3cb49b4b, 0xbcdf4fa1, 0xbb9b58de, 0x3c1871b5,
+ 0xbc99725e, 0xbddebf49, 0x3d98a2df, 0x3d5d1bda, 0xbbf29342, 0x3c3ac5f4, 0x3bde4134, 0xbde4bb34,
+ 0x3cdcab38, 0xbc8b0da6, 0xbca0cc75, 0xbbd999d4, 0x3cd3c387, 0xb9a09a4e, 0x3bf454f5, 0x3d1e00d1,
+ 0xbbafe8b2, 0xbcb7a00e, 0x3d4f92b3, 0xbc6e8258, 0xbcb83062, 0xbd34ed8d, 0x3d585b35, 0x3db4e64a,
+ 0xbc783b30, 0xbc7190af, 0xbc39873b, 0x3d703915, 0x3c5732c6, 0x3c068afb, 0xbd14ce86, 0xb99f774d,
+ 0xbdb50785, 0xbc64c47a, 0xbd489669, 0xbbb8dbad, 0xbccdaee9, 0xbcaf3245, 0x3c84477a, 0x3d0b5a9c,
+ 0x3dd1ae92, 0xbd4fd2ae, 0xbc8ad772, 0x3ce8e46f, 0xbd6543a5, 0xbc0b086c, 0xbc8b9d64, 0x3c3cfa70,
+ 0xbcf60ca8, 0xbcb3aa80, 0x3c5becd0, 0xbd4d881f, 0xbdaad366, 0x3cc45a1f, 0xbd8f0340, 0xbb441899,
+ 0x3d7c5563, 0xbc826218, 0xb906f979, 0x3c11ad50, 0xbc37bff1, 0xbd1e4b0d, 0x3d2e57cd, 0x3d870be8,
+ 0x3c944338, 0x3ae3d525, 0x3c42a6d5, 0xbc213af6, 0x3ce93c80, 0x3c4602e1, 0xbcc9ff07, 0xbd9d1c2e,
+ 0xbc8c12c0, 0xbcea8282, 0x3d626ec1, 0xbd184e00, 0x3c828de8, 0x3d2e6509, 0xbd43d42c, 0x3da9481d,
+ 0xbcc820e5, 0xbc0b950f, 0xbc72ffa6, 0x3c77926a, 0x3d3d08ee, 0xbdc0a509, 0x3c9a284f, 0x3cd45da3,
+ 0x3c86c40b, 0xbd0df518, 0x3d2090a9, 0x3cbd076c, 0x3dbdae13, 0x3ca99154, 0x3d220854, 0xbcd21baf,
+ 0xbd98d16f, 0xbd0b2e03, 0xbd2fb51d, 0xbcf86b16, 0xbb4de018, 0xbd0bad4b, 0x3c73b2b9, 0x3d185f74,
+ 0x3c4d6a6e, 0x3c712152, 0xbcf1ea70, 0x3c03d111, 0x3caf11d9, 0xbd09349e, 0xbd1068df, 0xbbf0a045,
+ 0xbd1daa9c, 0x3b938f5d, 0xbb5cf981, 0x3c3e11c5, 0xbc3bd6b9, 0x3a9f1347, 0xbd7aab20, 0xbc4efc59,
+ 0xbd113851, 0xbcb261d3, 0xbb0e9938, 0xbcaee79c, 0x3c2ab5e0, 0xbcf5c2b8, 0x3c91068b, 0x3cb806c2,
+ 0xbb9e6b81, 0x3d05e29d, 0xbb6434b6, 0xbd1bb112, 0x3d29b369, 0xbac44ae7, 0xbc098faf, 0x3cbea020,
+ 0x3b102bea, 0x3b4495cd, 0x3cb32425, 0xbd1eb04a, 0xbc364118, 0xbcde413f, 0xbcfebde5, 0x3cd8d64c,
+ 0x3c1f11f4, 0x3bf0459f, 0x3c67587d, 0xbbe22f86, 0x3c14afa4, 0xbc3706f0, 0x3b60612c, 0x3bad920e,
+ 0x3c8acb15, 0xbce58fa5, 0xbd6255c4, 0x3cc0f791, 0xbb2ff676, 0xbd7a91ab, 0xbc156951, 0xbac21e9f,
+ 0x3cd443e6, 0x3c918d87, 0xbd08466d, 0x3bbc13d1, 0xbd186b37, 0xbcd9f041, 0x3cd6e28a, 0x3d82059a,
+ 0x3c056944, 0xbc8316fd, 0x3c824dde, 0x3ccbaae8, 0xbd1c68f5, 0x38e7c9b7, 0x3ce2fa60, 0xba84d9da,
+ 0x3c00d311, 0xbd66f063, 0x3c90b0a2, 0x3d2cfb5e, 0xba0131a4, 0x3be2aa5f, 0x3b861158, 0xbcc976dd,
+ 0xbcae25da, 0xbbd3813a, 0xba793a71, 0x3c6eedaa, 0xb9409635, 0xbcc302ad, 0x3cda0fe5, 0x3c942681,
+ 0xbd2bb538, 0x3cc79789, 0xbc019b87, 0xbbff9458, 0x3d818a55, 0x3b075b8e, 0xbc63eb26, 0x3bc33181,
+ 0x3ba42af6, 0x3cacf671, 0x3b26945c, 0x3a057351, 0xbd34bcb7, 0xbd200cb1, 0xbcbc5276, 0x3c9bcbe5,
+ 0x3c390d45, 0xbb6dcca4, 0xbc250ba1, 0x3c04cc50, 0x3b4c5371, 0xbcff2058, 0x3ca27fcc, 0xbc5270e8,
+ 0xbd29538a, 0xbc2af1d7, 0xbc9efe08, 0xbcecc56c, 0x3c68e022, 0xbcad810d, 0x3c56f8a9, 0x3c074ebd,
+ 0x3afbb764, 0x3c91b5c9, 0xbc5ef22a, 0x3cdc5705, 0xbcc45690, 0x3bc38822, 0x3cf11978, 0x3cf505f2,
+ 0x3b873d23, 0xba763f89, 0x3cdc141f, 0x3cabd8d8, 0xbc094394, 0x3b9e1784, 0x3b881445, 0x3af00b19,
+ 0x3d5790eb, 0xbdafd5f3, 0x3cbf3cc0, 0xbd3424c2, 0xb9bbe314, 0xbc911e1f, 0xbd03be89, 0x3be67dff,
+ 0xbc5c8dbd, 0xbcd61ba4, 0x3c4d55ef, 0xbd6503aa, 0xbc118151, 0x3c7fd738, 0x3c6b9ce2, 0xbc511353,
+ 0xbca086e9, 0x3b41a4c1, 0x3ce70fff, 0x3d158ace, 0x3c8f176a, 0xbcb137d1, 0x3c9a6a5e, 0x3af914c8,
+ 0x3d6cec4b, 0xbc822480, 0x3b4bdec3, 0x3c430058, 0xbd00e76d, 0x3c501a23, 0xbb8b3805, 0xbc010697,
+ 0x3d30acff, 0x3a14efb8, 0x3d37035e, 0xbcce4146, 0xbd34400a, 0xbd223832, 0xb9397f73, 0x39bb6c2c,
+ 0xbcc056a7, 0x3cfbe066, 0xbca9f460, 0x3cd46c2c, 0x3c9ef5e6, 0xbbcc68c6, 0x3bc288b0, 0x3c972f7f,
+ 0xbd8e3783, 0xbcae7f31, 0xbc1e71d0, 0xbc902a36, 0xbbcf0c04, 0x3c961765, 0x3c7f23a7, 0x3cd1d54a,
+ 0xbaaba100, 0xbbcf78e6, 0x3d089ae6, 0xbd088e76, 0xbd077b2c, 0xbccf9955, 0xbcef5f6a, 0xbc399333,
+ 0x3b752a6f, 0xbdd00b69, 0x3cc403ad, 0x3c2dec04, 0xbba6cdf6, 0x3c145b74, 0x3bfef896, 0xbcef5418,
+ 0x3ca3e8eb, 0x3c48d809, 0x3c029fd6, 0x3c52e5fb, 0xbc7ea596, 0x3cfce79f, 0x3cf4844d, 0x3cd0c737,
+ 0xbd777083, 0x3d778e34, 0xbce2526e, 0x3b662807, 0x3ccf4890, 0x3c210a32, 0xbc113d80, 0xbca9890a,
+ 0x3c9ad26e, 0x3d171e09, 0x3d4e34dd, 0x3c9a3516, 0xbd848a3d, 0x3d3f7af8, 0x3bbe7825, 0x3cf79fda,
+ 0x3c5736da, 0xbd02e224, 0xbb826dd7, 0x3c989a33, 0x3d91b415, 0xbcb09e92, 0x3c036936, 0x398a1d92,
+ 0xbd48c31a, 0x3c2e62ea, 0xbc6eec0f, 0x3d1cf6e1, 0x3d1a6ddd, 0x3bb05b0b, 0x3d705f30, 0xbca54cb0,
+ 0xbce8d0c0, 0x3baa8443, 0xbcb1d733, 0x3cc3a18f, 0xbcdd4950, 0x3c6a653d, 0x3cca927b, 0x3c94744f,
+ 0x3cc8db86, 0xbd18e361, 0x3d25af1e, 0xbc956447, 0xbabdd3f0, 0x3c38b71d, 0x3c43d3a9, 0xb9e3f7d1,
+ 0xba9f7549, 0x3b0ccb72, 0x3d447865, 0x3d23408d, 0x3ca555ba, 0x3b35cc84, 0xbd538dd4, 0x3cb91951,
+ 0x3c990de6, 0x3c08643c, 0xbacaae42, 0x3be64d05, 0x3cbaf63c, 0xbd17a289, 0xbcdca322, 0xbcfcba15,
+ 0xbd345353, 0xbc266f2a, 0xbcab52c7, 0x3d8cef2c, 0x3c14c198, 0xbd2c6f66, 0x3cfb4ce3, 0xbd24ff7c,
+ 0xbc80bce9, 0x3cb02c74, 0x3c1f6969, 0x3ccca511, 0xbd02188b, 0x3d0c392b, 0xbd06627a, 0x3c7d65c1,
+ 0x3d7bfad5, 0x3ceedf2d, 0xbceec57b, 0x3cdf087a, 0x3c081176, 0xbc1c6cee, 0xbbbebd03, 0x3c7eb7d4,
+ 0x3bafe823, 0xbcdde4a9, 0xbd254cac, 0xbc4f90ed, 0x3cb2b6e8, 0x3bd7c999, 0x3d3df12b, 0xbbb8df59,
+ 0xbcf030b1, 0xbc708f51, 0xbd0fec10, 0xbbc04502, 0xbcaf8a06, 0xbbcd4a93, 0x3c1652a1, 0x3c5c2e84,
+ 0x3c0b026e, 0xbb24c130, 0x3c543fd0, 0x3add4412, 0xbd0c92a9, 0x3b93a7dd, 0x3bc6acff, 0x3cab5260,
+ 0xbc414056, 0xbcb7e8c6, 0x3d0d2fe0, 0x37858365, 0xbca86304, 0x3d4e67a3, 0xbd5a2322, 0x3ccd8da6,
+ 0x3cee0964, 0x3cac86e8, 0x3d15c947, 0x3c75c556, 0x3c11a143, 0xbcf6a68d, 0xbc46d07c, 0x3d825fb9,
+ 0x3b773960, 0x3ce58ef2, 0xbc108672, 0x3d4ccd8e, 0x3cac2670, 0xbd68e2e5, 0x3d3064c8, 0x3c271145,
+ 0x3bea55ce, 0xb9961173, 0x3938af78, 0xbc71dc04, 0x3937d448, 0xbd4739df, 0xbd4fddbb, 0xbc648e71,
+ 0x3d89e547, 0x3c785456, 0x3bf4a07a, 0x3c6f7825, 0x3a38f161, 0xbd21d153, 0x3d1be5c7, 0x3c84ce99,
+ 0xbba0689e, 0x3df6cd15, 0xbd8a8919, 0xbc9cc58f, 0x3d3bcc75, 0xbb4503bb, 0x3d0a4f3a, 0xbbd8699f,
+ 0x3d866858, 0x3a6b9a84, 0xbcfe085d, 0xbd7edabe, 0xbd932850, 0x3b2c04ef, 0x3cf53f67, 0x3daed76e,
+ 0xbc1d9a46, 0xbd66e925, 0x3bb21d38, 0xbc454579, 0xbd801d8b, 0x3cb0f725, 0xbc9b75f9, 0xbbb10184,
+ 0xbb6fb0d7, 0xbd639cac, 0x3d57a6b5, 0x3c19a3a2, 0xbd0c3062, 0x3c3d90a6, 0xbc3bc714, 0xbd14e66a,
+ 0x3c9d3d35, 0xbd499beb, 0xbd706af5, 0xbc781ccb, 0xbc8fe358, 0xbc883413, 0x3c486ce4, 0x3cd9cde6,
+ 0xbd783e3e, 0xbcc3e423, 0x3d43fff0, 0x3ca3f421, 0xbc2e2bbd, 0x3c9407cb, 0x3d37b071, 0xbd89a4bd,
+ 0x3da96eb2, 0x3c53b84c, 0xbdb3b799, 0x3b815895, 0xbc18c226, 0xba8ce02a, 0x3cd46773, 0x3ba15f0e,
+ 0xbaeceb4f, 0x3c35cd2e, 0xb9d8fe3f, 0xbdaf28f8, 0xbd3191c1, 0x39bfd538, 0x3cdd92ed, 0x3d17adaf,
+ 0x3c2d6bb6, 0xbd5af132, 0x3d1a60c0, 0x3aca9926, 0x3cae0f76, 0x3bb43900, 0xbd272697, 0xbd291f9d,
+ 0xbd8fb86b, 0x3c52d760, 0xbd3d4dda, 0x3caddac9, 0xbd9f1ab4, 0xbd48379b, 0x3af4c44a, 0x3d3812af,
+ 0x3dc2379f, 0x3b611938, 0xbc602e46, 0x3cb544c0, 0xbd0d8132, 0xbb1f4672, 0xbc75b17c, 0xbc9fe9a6,
+ 0xbdb226f0, 0xbd4ac5d5, 0xbc8c76f4, 0xbb58776b, 0xbc0c8952, 0x3b19cc06, 0xbdce17b0, 0x3cc44df4,
+ 0x3d6aeaed, 0xbc118c36, 0xbbd35677, 0x3d2beb6c, 0xbd22904e, 0xbd03510f, 0xbaf6be4e, 0x3bed5970,
+ 0x3bf3abaa, 0xbcc3c175, 0x3c10e9d6, 0x3c554256, 0x3cb30c59, 0x3cb61829, 0xbc09194d, 0xbc9075ef,
+ 0x3cdabd7d, 0x3d06f72e, 0xbab25978, 0x3ad08e0d, 0xbce1442a, 0x3bb500c2, 0xbd16c6a2, 0x3dae27b8,
+ 0x3d1a64fa, 0x3c6e6ac8, 0xbbea6286, 0xbb3c26a1, 0xbd895a16, 0xbd2014ee, 0xbd6ea5d9, 0x3c1a193e,
+ 0x3c829d58, 0x3d1db52b, 0x3c38026b, 0xbcf42284, 0x3dc3fa0a, 0xbb8e1157, 0x3d8e13f1, 0xbcf86c35,
+ 0xbda9e3ae, 0xbb89108c, 0xbd586c34, 0xbd87fc83, 0xbd81679f, 0x3d1eb569, 0x3ca7b40b, 0x3d98f2fb,
+ 0x3b7110f4, 0x3d77d583, 0xbb829549, 0xbc3084bb, 0xbd0ddd50, 0xbcd71200, 0xbb31fb2b, 0xbcf00b7d,
+ 0xbd3508e2, 0xbc41d40a, 0xbc62f1ad, 0x3c9c6f36, 0xbca74866, 0xbd1350b2, 0xbe068f9a, 0x3a026978,
+ 0x3be3e995, 0x3cb644c9, 0xbce3de26, 0x3beaf041, 0xbd82b8ca, 0xb918526d, 0x3c978ca3, 0x3c7e8947,
+ 0xbcf6af87, 0x3d6c786d, 0x3d0ba64f, 0xbc8afafb, 0x3b8aef1e, 0x3d0de1cd, 0xbb3db11a, 0x3cdd4129,
+ 0x3cef5a9a, 0x3caaf916, 0xbd604f8a, 0xbc9cba1f, 0xbd9b23f2, 0x3c355529, 0x3a9ed42d, 0x3cbe09ff,
+ 0x3d737c93, 0x3b90bed7, 0xbcebf320, 0x3cf436d0, 0xbcd5898e, 0x3d5ac124, 0xbd9d93ad, 0xbd2844fc,
+ 0x3d786430, 0xbca9deff, 0x3ca227d8, 0xbd4121b9, 0x3cd0337d, 0xbce8727f, 0xbc4ad1e8, 0xbd10f77c,
+ 0xbcf92268, 0xbcf75f0c, 0xbd6da9bb, 0xbcb0099a, 0xbd3585df, 0xbbf6fd51, 0x3d2a3e60, 0x3c6f8f26,
+ 0xbc43ff4c, 0x3d8b195d, 0x3c58e4d7, 0x3d7bf012, 0xbcbc3dd9, 0xbd654f3e, 0x3c4bc7fb, 0xbcdfd38c,
+ 0xbceb92fe, 0x3adb2382, 0x3b5d0edd, 0x3c0d7620, 0xbccc504c, 0x3a69134d, 0xbcbd6c42, 0xbb5387a3,
+ 0xbb199c83, 0x3be4ecc2, 0xbcab6311, 0x3c59a0b5, 0xbceb2fc9, 0xbdb507c7, 0x3c0ed86d, 0x3dd6adb6,
+ 0xbd34fa80, 0x3d84df99, 0x3d86eb83, 0xbd698337, 0xbcf7648f, 0xbcb9686a, 0x3d68e8e5, 0xbd8e5107,
+ 0x3d092ee4, 0xbd4322f9, 0x3d16ea01, 0xbd3a45ca, 0xbca22c71, 0xbc77a278, 0x3c3f588b, 0x3da61c74,
+ 0xbb9f3855, 0xbc1ff8c3, 0xbd0b58e2, 0x3d1e1e3d, 0xbc781ee0, 0x3ca293ec, 0x3c9230fd, 0x3d6710af,
+ 0x3c950e43, 0x3c90c578, 0xbc7c0a81, 0x3cabed21, 0x3d2904e9, 0x3c1ff12d, 0xbc2be28f, 0x3d20ec9b,
+ 0x3d18bc91, 0xbd2323ae, 0xbac128d9, 0xbc0a14fe, 0x3cdbd1fa, 0xbd2715ac, 0x3b966007, 0x3c690158,
+ 0x3b66cbf3, 0x3c521dca, 0xbb8c9c66, 0x3c2603ad, 0x3b54d472, 0xbbbcccbd, 0x3bf2dd6d, 0x3ce87eae,
+ 0xbdaeff89, 0x3bdaa6b1, 0x3d1aee2d, 0xbd2a553a, 0xbb3566e6, 0x3bf8b59b, 0xbce07983, 0xbd976c13,
+ 0x3c39fd64, 0xbb8c9f7f, 0x3bbe054b, 0x3ba11f12, 0x3b90806a, 0x3ab983d9, 0x3d3fed72, 0xbd453273,
+ 0xbc50071b, 0x3ce20c1b, 0x3d1e2894, 0xbc810898, 0xba87c249, 0x3cd49bfb, 0x3d8a9e97, 0xbd23eb76,
+ 0x3ce97835, 0xbcc234c2, 0x3cceb015, 0xbd2190d4, 0xbcf820ca, 0x3d0a0e3a, 0xbc8c3c9a, 0x3d1baed0,
+ 0x3c65a4ba, 0x3ccee5f7, 0xbd9cb133, 0xbc5dac63, 0x3baccf13, 0xbd15508c, 0xbd8131a9, 0x3c853ef6,
+ 0xbcb37ac3, 0x3aeccd52, 0x3c903e60, 0x3c1f5d54, 0xbd00e3e0, 0xbbc9188d, 0x3c835f64, 0x3d0e79d1,
+ 0xbd1133f9, 0xbc9e0574, 0xbc352ee7, 0x3c14b2a7, 0xbc5b598b, 0x3d2709d1, 0xbbed0883, 0xbcd3e064,
+ 0x3cddf235, 0x3cb8269b, 0x3c85f4c6, 0x3b2502df, 0x3c870b04, 0xbd526554, 0xbbfbf432, 0x3d019707,
+ 0xbd8bdfdd, 0xbb894125, 0x3cb32efd, 0x3bcc68b7, 0x3bf183a3, 0xbb74d190, 0xbd0f5192, 0xbcd0b93b,
+ 0x3cad534f, 0xbd67438a, 0x3cffc7fd, 0xbc953972, 0xbcfa2ddc, 0x3cd67706, 0x3c98a8c2, 0xbdfa5874,
+ 0xbda8c500, 0x3d015fec, 0xbcd3d216, 0x3d53db23, 0xbca01da6, 0xbcb404fd, 0x3d36b0c2, 0x3d1ef982,
+ 0x3d870dc3, 0x3bd1a61d, 0xbd3e43a6, 0xbcb4d54e, 0xbcf2bbe4, 0x3cb3907b, 0x3d251228, 0xbcc05243,
+ 0x3d1b6e72, 0xbc7a8eba, 0xbd804d9f, 0xbd18c9fa, 0x3d3ded4f, 0x3c74d9bf, 0xbdda3d89, 0xbc806b15,
+ 0xbd47a93e, 0xbd1ad069, 0x3cdb8008, 0x3991c192, 0xbce5a3a4, 0xbc829e51, 0xbc51d466, 0xbca134f8,
+ 0x3cab62bd, 0xbbd69c5d, 0xbd1c649c, 0x3d0e3f72, 0xbcd0964b, 0x3d670dec, 0xbd3dd3a2, 0xbd336b12,
+ 0x3bacf19a, 0xbb5286cc, 0x3c841e63, 0x3d31b334, 0x3c68ba7f, 0x3d12ea96, 0x3bd148a5, 0x3d0abb68,
+ 0x3d7a3072, 0x3c410aa6, 0xbc8368b6, 0x3d490490, 0xbcb0ed40, 0xbaeef44d, 0x3bb0dbd0, 0x3d7ab323,
+ 0xba85c144, 0x3d2b159b, 0xbcefdb6e, 0x3cf2ffe0, 0x3c4b1b94, 0xbb0a05c3, 0x3d49cf25, 0xbd0af9c9,
+ 0x3d0ad366, 0xbd52471c, 0x3d2c20d7, 0x3c04cd0d, 0xbc96fa34, 0x3d13dc80, 0xbd5fd332, 0xba48c041,
+ 0xbc97bff5, 0x3c31ee82, 0xbc8bb9f3, 0x3d70ff96, 0x3d2fb8e5, 0x3d6f10d4, 0xbc988012, 0xbd6e3623,
+ 0x3ce5b246, 0x3d3da1a5, 0x3cd13847, 0xbbaa3220, 0xbda36994, 0x3cb60099, 0xbd145bb8, 0x3cf56e2a,
+ 0x3ccf25d6, 0x3cce4b8f, 0x3b598a0e, 0xbc7bbc6d, 0x3a95f574, 0x3d25e062, 0x3cba0b04, 0x3ab93a09,
+ 0xbdd71f2a, 0xbd1acfc1, 0xbcba80eb, 0x3c0c1192, 0xb93a2bd4, 0xbb4ecc37, 0x3cd8efd5, 0xb9d1847d,
+ 0x3b411038, 0x3cb06f25, 0x3d1bf1e1, 0xbb731005, 0xbce48731, 0xbdd31941, 0xbc01965b, 0xbbfb86fb,
+ 0xbd530c64, 0xbd0f40ae, 0x3ca8c190, 0xbcc11711, 0xbbe191af, 0x3c97db2e, 0x3af99480, 0x3c29e0fe,
+ 0xbd0befba, 0x3cb228c0, 0xbcc6e432, 0x3cf0640b, 0x3c80f334, 0xbd1d2db2, 0x3d1a83e7, 0xbd6c7788,
+ 0xbc95aa8f, 0xbbda165c, 0x3d801554, 0x3c2dfecc, 0x3cb98bf0, 0x3d0f049f, 0xbd362f86, 0xbc7e93b4,
+ 0xbcaadc22, 0xbd36f73c, 0xbc520e5e, 0x3c40f003, 0x3b1e37ae, 0xbd997cc7, 0xbc421bda, 0x3d5f4811,
+ 0x3c92d1e5, 0x3c2c0f1e, 0xbbf6f0c2, 0xbd8531fa, 0xbc8e36c0, 0xbcf02c46, 0x3c1605a8, 0x3ca87040,
+ 0xbcfb3fb3, 0xbce27f60, 0x3af8128c, 0x3b9416c7, 0xbbaf14d9, 0x3dee541b, 0x3d54d653, 0xbca73e38,
+ 0xbdac86bc, 0x3c434e6e, 0xbcf83fcf, 0x39feb817, 0xbca31dc9, 0x3d0f58b5, 0xbd3e342c, 0x3c5d8894,
+ 0xba361ca1, 0x3cee8302, 0x3c59bfdf, 0x3d40e312, 0xbb283660, 0xbca4c45c, 0xbaab7e2d, 0x3cc29741,
+ 0x3c73f0ad, 0xbd8a1ccf, 0xbb28a91e, 0xbdb79aeb, 0xbd951ac1, 0xbc5caca5, 0xbd17ff6b, 0x3d4ff4be,
+ 0xbd40b7d7, 0x3cf14319, 0xbbe0c8b8, 0x3cc2d3fe, 0x3ac0e842, 0xbc7a21fd, 0xbb56cdc4, 0xbd1b7f23,
+ 0xbbd4e407, 0x3ce1f2bc, 0xbc1c56f3, 0x3d8f69bf, 0x3cd3b80e, 0xbd2b083a, 0x3cdc423e, 0xbcab126c,
+ 0xbc25dc8a, 0xbcf69fa2, 0xbd4b8d6d, 0xbc90e80b, 0x3ccd1cc2, 0xbd8d026a, 0x3c81b9e8, 0x3d92ecbf,
+ 0xbb52d7b5, 0xbd8b9818, 0xbb04eb3b, 0xbdd723a3, 0x3d4b418e, 0xbcec6899, 0x3d5f5a38, 0x3cb838ba,
+ 0xbbe152ef, 0xbd2874a2, 0xbd12a82f, 0x3dadc3ba, 0xbd1c15e1, 0x3d90c040, 0xbc0d6fa5, 0xbb6410ec,
+ 0xbd1b6987, 0xbcd57b1c, 0x3ba7ba47, 0x3b054654, 0xbce9de43, 0x3cbb6676, 0xbd686b82, 0xbd6114ab,
+ 0x3bf07f6d, 0x3c1c39be, 0xbc479520, 0x3d06ada6, 0x3c8fe6d0, 0x3d2810e3, 0xbbbcadbe, 0x3b1700c3,
+ 0x3cfdb449, 0xbd02b13b, 0xbc3aba7f, 0xbcfaa578, 0xbd7b73f8, 0x3d05db66, 0xbd24694c, 0x3cdd4f15,
+ 0x3ca2edd8, 0xbca982cc, 0x3d016610, 0x3ba1a7db, 0xbc9b2ffb, 0xbd0ec127, 0xbcfdee49, 0x3d5c5181,
+ 0x3d0b99d4, 0xbd31f963, 0x3c4bb9a4, 0xbcf39ce2, 0x3c44f5ff, 0xbd803b71, 0xbb22f106, 0xbb899139,
+ 0x3c82807d, 0xbc91af21, 0x3cc9fa4d, 0x3cb064ed, 0x3d3d924a, 0xbcc76697, 0xbd804ebe, 0x3c9b7d65,
+ 0xbd1603d2, 0x39fae775, 0x3c63755d, 0xbd42876c, 0x3c5d738d, 0xbd492c3a, 0x3c7c114b, 0xbc6f5d44,
+ 0xbcbc356a, 0x3d599ca6, 0x3d45d9f2, 0x3cf3acdb, 0x3d6c9029, 0xbc66cc9f, 0x3c0b6163, 0x3cdd5ae7,
+ 0x3cfbe3c8, 0xbcedd834, 0xbca39622, 0xbd104dac, 0xbb103453, 0x3d0c70d4, 0xbc3e5eac, 0x3d40b521,
+ 0xbbdaaa48, 0x3d048e49, 0xbd01f01e, 0x3b485dab, 0x3b20d2e3, 0x3c430f74, 0x3ceb8e1d, 0x3c26cfb9,
+ 0x3d0499b1, 0xbc8606f3, 0x3c856a8c, 0xbcbe9a28, 0x3c3f2157, 0xbd27bbcf, 0xbbdcadc6, 0xbd756987,
+ 0xbc97aaa5, 0xbd8f6bdc, 0xbc410179, 0xbb8d177f, 0x3cb0dc93, 0xbca0ed8a, 0xbc8df727, 0xbd5c800e,
+ 0xbc1602aa, 0xbce26226, 0x3d9511f7, 0x3caa6501, 0xbd07ddd6, 0x3cebf21d, 0x3c9be5f6, 0xbc3e9c21,
+ 0x39a2ff12, 0xbc18504e, 0xbd14424b, 0xbbe14f07, 0x3d6f2977, 0xbbfe0607, 0x3c67ac3f, 0xbd3bb9f7,
+ 0x3cf36460, 0x3d5a60a9, 0xbcf14e44, 0xbd378e49, 0x3cf8578c, 0xbc9213fe, 0x391d1ff7, 0x3d614f8a,
+ 0xbcdcff5e, 0xbd8234e7, 0x3cb4da40, 0xbd1883a3, 0xbc8cf15e, 0x3cfa34dd, 0xbce9f576, 0xbb74b25b,
+ 0xbaf79473, 0x3c92384b, 0xbc83aa0a, 0x39978191, 0xbc9f427d, 0xbcecd08a, 0xbbf0e53b, 0xbd76c7fc,
+ 0x3c769772, 0xbcaec3ff, 0xbd344e2a, 0x3cfb40b6, 0xbc0349c8, 0x3c3f17f4, 0xbd0719df, 0xbd15e516,
+ 0xb996b410, 0xbc66ea2d, 0xba54555b, 0xbd88ab91, 0xbda91852, 0x3d4e74e1, 0x3cd2b98d, 0x3d8abddb,
+ 0x3d4c8347, 0xbd5d00f2, 0x3ceb0235, 0xbc9f9273, 0xbc41f72a, 0x3ceed1a8, 0x3c9fe45e, 0x3c12c392,
+ 0x3c9c40f5, 0xbb8d3c04, 0x3cc69b42, 0x3cf2a302, 0x3c7b9b57, 0x3d0d4539, 0x3c618154, 0x3c99e468,
+ 0x3b0b1541, 0xbbc167b5, 0x3d45977c, 0xbc9f522e, 0x3d67890d, 0x3d23d21f, 0xbd9042c2, 0xbcd38984,
+ 0xbcebbe00, 0xbca55d7a, 0x3c6f938c, 0x3cc5bab0, 0x3c003468, 0xbd09abaf, 0xbaba65bb, 0x3c2730b2,
+ 0xbc0611c6, 0xbc9a6e04, 0x3c9dd66c, 0x3d800abd, 0x3c1cdeb2, 0xb8250ab2, 0xbc816872, 0xbbefe520,
+ 0xbd46958c, 0x3d112f10, 0x3caeb886, 0xbcc33013, 0xbd029da6, 0xbcbd13fa, 0x3cfcfe40, 0xbcfdef99,
+ 0x3d6d20fb, 0xbd86a7f8, 0xbcdc6683, 0x3ca6245f, 0x3c7c102c, 0x3d29718c, 0xbe22872a, 0xbd29ffdc,
+ 0x3ce7e7eb, 0xbaf9007e, 0x3cbe03e7, 0xbc4b4b20, 0xbcdfb30f, 0x3ad92cf1, 0x3c7d224d, 0x3d2839ad,
+ 0x3744bc7a, 0xbd51c071, 0xbd888503, 0x3be34862, 0x3bbddc00, 0xbd50d9ad, 0x3bcf32f2, 0xbbb0a59e,
+ 0x3d44dc38, 0x3c957500, 0xbc81637a, 0x3c98a37d, 0xbcf7df9a, 0x3b142b2f, 0x3ca1de28, 0x3bc90c86,
+ 0xbb9ed61c, 0x3ba3724c, 0x3c4b5ea6, 0xbd08a1b6, 0xbc2c6d7c, 0x3cc1e361, 0xbc7ad840, 0x3d1459af,
+ 0x3c8f7797, 0xbcf20db7, 0x3ce5a747, 0x39293228, 0xbd0377c4, 0x3c54e00a, 0x3c54383e, 0xbd13f3ec,
+ 0x3d12a80d, 0xbca6deed, 0xbcf75421, 0xbd44977c, 0x3d66588e, 0x3cd45ba7, 0x3d947333, 0x3d5bb88e,
+ 0xbbcb9035, 0xbbd103b0, 0x3d457a30, 0x3c1217fb, 0x3cfcb484, 0x3ce51fd5, 0x3c2758bb, 0x3d8279ec,
+ 0x3bd99b24, 0x3d6bf2f1, 0xbd574f51, 0xbd55f780, 0x3d36299e, 0xbc832735, 0x3c87b008, 0x3d166cd0,
+ 0x3a6085c8, 0xbc263857, 0xbd12a546, 0x3d67de29, 0xbcb0561c, 0x3d312337, 0xbce2b6d0, 0xbd6d4348,
+ 0xbc742be6, 0x3d1c1986, 0xbc34d190, 0xbcbb38f4, 0xbbf653d0, 0xbd0f7008, 0x3c3cd0b7, 0x3c9770d7,
+ 0x3bf9d72f, 0x3d76dfbb, 0x3c946f43, 0xbc72c064, 0x3a014e30, 0xbd9e6095, 0x3d1cfcd8, 0x3c9dadaa,
+ 0x3bb2739f, 0xbd5024cd, 0x3b4fbcba, 0xbdaa50d2, 0xbce69303, 0xbd98d7e0, 0x3cf15cf4, 0x3ccc2720,
+ 0x3c5f546c, 0x3b222c9c, 0xbcd81026, 0x3b26093d, 0xbcb44ea6, 0x3b8dec5d, 0xbcbec3bb, 0xbd15d272,
+ 0xbc299727, 0x3d844212, 0xbd948993, 0xbd0ee548, 0xbb808737, 0xbbd26e73, 0x3bc9af17, 0x3d603cf1,
+ 0x3d9ae913, 0xbccd939c, 0x3d0f5be2, 0xbc8f337f, 0x3c9403a8, 0x3cb633dc, 0xbd0e5c1c, 0x3d4b0fa1,
+ 0xbc49c55c, 0x3d28b31b, 0xbc0e897f, 0x3d28ad49, 0x3d24b103, 0xbb60eccc, 0x3cb4fe8e, 0x3ce05361,
+ 0xbcc24f36, 0xbc54913a, 0x3cd7ddc1, 0xbc549168, 0xbcea4240, 0xbb848ff9, 0xbc49324e, 0xbd95af42,
+ 0xbaac6317, 0x3cb82b33, 0x3cdac804, 0xbcf35804, 0x3c83785d, 0xbbc59f18, 0x3c53314a, 0x3de4c885,
+ 0xbd2f0e3c, 0xbcc8f460, 0xbcbf10ac, 0xbd63ac2a, 0xba57ad47, 0xbad7d595, 0x3cd5c75a, 0xbd580bf4,
+ 0xbd1f0088, 0xbbe487c0, 0x3d54037e, 0x3cd52182, 0x3c2c5e02, 0xbd316b3c, 0x3c7b534f, 0x3c6de79f,
+ 0xbc22abca, 0xbb323b3d, 0x3ce671f7, 0x3d9a44be, 0x3d02ebb9, 0xbd029647, 0x3d7b3c5b, 0x3d348e7b,
+ 0xbc762812, 0xbcfb6bb1, 0xbccdb502, 0x3d28d466, 0xbc053d9c, 0xbcf53125, 0xbd874656, 0x3c1e8aea,
+ 0x3c052c2f, 0x3cac08a9, 0x3cd34422, 0x3ceca517, 0x3c94dd8c, 0xbdcd573d, 0xbbd0cf65, 0xbc05dbad,
+ 0x3d11597f, 0xbd8e164d, 0xbcf65db3, 0xbc7d5e78, 0xbccdd12c, 0x3b38ae6f, 0x3cd493cc, 0xbcdb4951,
+ 0x3d0368eb, 0x3cc63136, 0x3c3c14f9, 0xbcfe1c23, 0xbc0e272a, 0x3cff42ad, 0xbcdfc52c, 0x3c4115be,
+ 0x3c0fcc0f, 0xbc629678, 0xbd34f4eb, 0x3c2aa2e5, 0xbc0ff605, 0xbd2e9d44, 0x3c776883, 0xbc6e31cd,
+ 0xbaac1712, 0x3ce8fdf3, 0xbc9f1505, 0xbc06b602, 0xbd02b566, 0xbd4a0e8b, 0xbabca81a, 0x3d211f36,
+ 0x39804a7b, 0xbb7392b2, 0xbc08f664, 0xbcb9ac67, 0x3bf747f7, 0xbc463857, 0xbad47667, 0x3cd65fa2,
+ 0xbb61866a, 0x39e5f89a, 0xbb48a282, 0xbd58ebdd, 0xbd4b99fd, 0x3d631862, 0xbd85aa42, 0xbdabc899,
+ 0x3d96abb9, 0xbcc859c7, 0xbc385198, 0xbd2267e0, 0x3d9d5b10, 0xbcc1660d, 0x3c2b28bf, 0x3d1ed043,
+ 0x3ccf2f93, 0xbd25472b, 0x3d0fe4b8, 0xb96397be, 0x3d4fcfd7, 0x3bbecd9a, 0xbc66bd47, 0x3d2ca94e,
+ 0xbc8c292a, 0x3dcbe1fc, 0xbc284112, 0xbcc0ea1c, 0x3db1fd30, 0xbc5db183, 0xbc275e91, 0x3cfc5953,
+ 0xb9c5c4b4, 0xbd4b675c, 0x3c224b87, 0x3cf65862, 0x3c206033, 0xbbbb59f7, 0xbc454e35, 0xbb2da936,
+ 0xbbf4e62c, 0x3d93e313, 0xbcd3120d, 0x3bf3c289, 0xbd2cec89, 0xbd716937, 0x3d5a7409, 0x3ce46021,
+ 0x3ca09af3, 0x3dc30a86, 0x3cc944dc, 0x3c03b5e5, 0xbd12e374, 0xbc3c3f3e, 0x3e0808f1, 0xbd0e0195,
+ 0x3ca0f672, 0xbdea35c7, 0xbc8fe618, 0xbda3ef85, 0xbb63eb4e, 0xbd93f4a5, 0x3b6c553d, 0x3d24d211,
+ 0xbc813872, 0xbd0d0afd, 0xbc76c76c, 0x3d2448b9, 0x3d2995f0, 0x3bcac2ad, 0x3bb7b4f4, 0xbd20efd8,
+ 0xbda279a3, 0x3db5eefe, 0xbcdc14d7, 0xbceb3cca, 0xbc49b27e, 0xbc58194e, 0xbcd26f2d, 0x3d97396a,
+ 0x3dd248b7, 0xbc6f5de0, 0x3d7fa334, 0xbd2d0668, 0x3c06e622, 0xbc825868, 0xbcaf3b22, 0xbb99290d,
+ 0xbcaa361d, 0xbb07574c, 0x3ca0c99d, 0x3d733cd0, 0x3c806c28, 0xbcacb3b0, 0x3d3ae6d9, 0x3d0fc01c,
+ 0xbc00c652, 0xbc7b5ae5, 0x3ca141a0, 0xbcc87274, 0xbd2ff6ff, 0xbd152877, 0x3ca04900, 0xbde4c0c1,
+ 0x39585c2b, 0x3cfa11dc, 0x3d879ad5, 0xbc88c491, 0xbd83c07d, 0x3d4bd6d3, 0xbb932dc0, 0x3e06500f,
+ 0xbd0d5cd1, 0xbcdc94a7, 0x3d364fb3, 0xbdad277b, 0xbb0124a4, 0xbc42aa33, 0x3c34aa8c, 0xbe0417c5,
+ 0xbb5c1ec5, 0x3c9ed609, 0x3d940aac, 0x3cde9e96, 0x3a931083, 0xbca6eaed, 0xbc871f39, 0xbc419ae2,
+ 0xbd83b028, 0x3d76b3cb, 0xbc75f4e2, 0x3d92a7fc, 0x3d8492ad, 0xbd49af50, 0x3d48efda, 0x3d9cb33f,
+ 0x3c80c20f, 0xbd7f8aa4, 0x3d8aeb3b, 0x3d7dc810, 0x3993a2f1, 0xbd255727, 0xbdd2ccaa, 0xbc8ba708,
+ 0xbd542146, 0x3a91a2a5, 0x3d3edd19, 0xbb5400d3, 0x3d0ab00c, 0xbda6c686, 0x3d45daed, 0xbd3b3c3e,
+ 0x3c736980, 0xbd6785cf, 0x3c654c95, 0xbc80bf12, 0x3c88efb8, 0x3c72c31a, 0xbd8a4300, 0xbc863e0a,
+ 0xbc43d1f7, 0x3d581f7e, 0x3ce5600a, 0xbd40967a, 0xbc8bc936, 0xba8939b0, 0x3d28c788, 0x3d235270,
+ 0x3b9f7875, 0x3b4fcce9, 0xbd33091b, 0x3c7def37, 0x3d9819b8, 0x3cb8952f, 0xbbfe706b, 0xbd123ca8,
+ 0x3d7b5861, 0xbdc8f6c7, 0xbd32a705, 0x3dc5eb9e, 0x3c0e1dbe, 0x3d09fd52, 0xbc37f164, 0x3ce6a058,
+ 0xbc7f1fbe, 0xbba4d2d4, 0x3d2dee93, 0xbc21f1da, 0x3c8a8cee, 0x3dace6d4, 0x3b941ddf, 0x3c35d5d0,
+ 0xbd442fc3, 0xbd3eac9f, 0x3d34b3b9, 0x3cffd093, 0xbcf9d939, 0x3c802c28, 0x3c3f6fbf, 0xbbb2071f,
+ 0x3d493aee, 0x3c8b13cd, 0xbc304984, 0x3d49613c, 0xbd65fed3, 0xbc917074, 0xbd125163, 0x3c733b2d,
+ 0x3af3bb0c, 0xbb6cf7d1, 0xbb56b047, 0xbcd4e84a, 0x3c5953f1, 0xbbbabf29, 0x3d8b3b40, 0x3d25c19b,
+ 0x3c1f2060, 0xbd6989be, 0x3c626a6f, 0xbcd31696, 0xbd1d109a, 0xbcbf0a27, 0x3b806d8b, 0xba0ec521,
+ 0xbb00026c, 0x3c730506, 0xbd03369b, 0x3ce0ae8a, 0xba30ffa0, 0x3ce92990, 0x3c3f5ffb, 0xbd8156df,
+ 0x3b639dea, 0x3d7f91d7, 0x3c9b630c, 0x3cced15c, 0xbd414108, 0xbd6450f8, 0x3b948256, 0x3de09872,
+ 0xbd48bf15, 0x3cad8bdd, 0x3c9c60df, 0xbd7522f7, 0xbcadcae1, 0x3c840a45, 0xbd617eb0, 0xbd4cf819,
+ 0x3c527e47, 0xbccc6d5e, 0xbc6e95b5, 0x3bad30d7, 0x3c95301a, 0xbc8b97ca, 0x3cd13c3e, 0x3d815ed6,
+ 0xbd3f59db, 0x3a165857, 0x3d4cf32e, 0xbaf2f943, 0x3d195857, 0x3ca6cde6, 0x3d6c6d02, 0xbb0bd5e5,
+ 0x3d7d70d6, 0xbd15e1e4, 0x3d0f98bc, 0xbd1ce7c1, 0x3cd00733, 0x3cc6fa47, 0x3d01cc6b, 0xbced4901,
+ 0xbd14383c, 0x3ac727a8, 0xbba106e9, 0xbba672a3, 0xbc161f01, 0xbd160441, 0xbd1ec920, 0x3ca3bb35,
+ 0x3ba74615, 0x3c4c1758, 0xbd1cb6ee, 0x3d2aa5f0, 0x3cfeb0cb, 0x3b82600f, 0xbc2bdb51, 0x3c9b3443,
+ 0xbd1585d6, 0x3c06c264, 0xbd47ff54, 0xb7c316e2, 0x3ba6c04a, 0x3c81bc02, 0xbcca7a67, 0xbbc7c1fc,
+ 0xbd8e2c85, 0xbd3b4113, 0x3d2f8d66, 0xbd08e343, 0xbd519f38, 0xbccbb706, 0xbc65ed37, 0xbd8d554c,
+ 0x3cbf253a, 0x3d19ff24, 0x3d97bdd2, 0x3c463b39, 0x3bcd0a6e, 0xbdc9cbf6, 0x3d1c5802, 0x3c668d12,
+ 0x3bd29c2f, 0xbbe1f22b, 0xbe1a2685, 0xbcf6e718, 0x3b3e31fd, 0xbdde971d, 0x3cf5073d, 0xbda22b39,
+ 0x3dcdc95f, 0x3daa8d34, 0xbdb483ad, 0xbde6458b, 0xbd163b0c, 0xbd2f74fd, 0xbd571fe0, 0x3b675089,
+ 0xbd2d846d, 0x3d2deaa2, 0x3b1f4e88, 0xbd9d6d9d, 0x3d663230, 0x3cf77abd, 0x3d48a767, 0xbc977b80,
+ 0x3ce974f3, 0x3cd97db3, 0xbcb626e9, 0xbd3ae193, 0xb9528814, 0x3d9ea670, 0xbd9b2d17, 0xbd595748,
+ 0xbcc693d8, 0x3dd97595, 0xbd5217a4, 0xbb1ac86d, 0xbb9ba37c, 0x3a99fcd4, 0x3c8ffeba, 0x3ceebcdd,
+ 0xbd0bfe27, 0xbd4685e0, 0xbbf1a0f3, 0xbd8ea546, 0xbc53474c, 0xbcd32ee9, 0x3c50455a, 0x3d3b68d1,
+ 0xbc567af8, 0x3b8f136c, 0x3cb3ae2e, 0x3baf3f28, 0xbd02b871, 0x3c303d08, 0xbd83b2ec, 0x3d4a9b17,
+ 0x3d8e24fb, 0xbd81bd0b, 0x3c23bb8d, 0x3cdb14c8, 0x3cb2a689, 0xbd1a15bd, 0x3d1b9ce7, 0xbd7557f6,
+ 0x3a5ac9db, 0x3d2c406e, 0x3c85f67d, 0x3d674fde, 0x3bdaea9a, 0x3cf2137a, 0xbd51f120, 0xbc8f9395,
+ 0xbd17e6a0, 0x3ca1cab9, 0x3c396ac3, 0xbc8119b4, 0xbb0d74ce, 0x3c10c905, 0x3d8bbba4, 0x3d343773,
+ 0x3cb7baa1, 0xbcc9689a, 0x3ca14723, 0x3d027d73, 0x3cebf385, 0x3c010690, 0xbcdb055a, 0x3c0f73cc,
+ 0xbc84b108, 0xbd11e9f6, 0x3b868fd4, 0x3c85f237, 0x3ca7ed34, 0xbd3ffa87, 0x3d0173d6, 0xbcfe96b2,
+ 0xbdc02a92, 0xbba16f31, 0x3da860a4, 0xbcd5ad96, 0xbd33520a, 0x3cf7a94a, 0xbc4f4a04, 0xbb3c4853,
+ 0xbc9178fa, 0x3a1191be, 0x3cb09d12, 0xbb9980ea, 0x3d774a9e, 0xbcb882ab, 0x3da718b0, 0xbca5e6a3,
+ 0xbbb87aaf, 0xbd8df4f6, 0xbc5e623c, 0x3b4cf51f, 0x3d5a4421, 0x3c9665e6, 0xbd4e23c6, 0xbd5fa381,
+ 0x3da831c4, 0xbcc903fa, 0xba504805, 0x3dd401a8, 0x3c44b6b7, 0xbd4c1f3a, 0x3c25c5bc, 0xbc968d1d,
+ 0xbc565ea4, 0x3c8a8385, 0xbd0ba4f2, 0x3d5d7ff6, 0xbc7a8b6b, 0xbcb2885b, 0xbcccdd5e, 0xbd825a75,
+ 0x3a406436, 0x3b1d9bda, 0xbaf7e938, 0xbd32c18b, 0xbc4a4f3e, 0xbcb7031d, 0x3cab5908, 0x3cdf9c17,
+ 0x3c6a023b, 0x3b0e8ed4, 0xbd0a4aab, 0x3d80006e, 0x3d336d63, 0xbc417c23, 0xbd65159a, 0x3baae991,
+ 0x3d158469, 0xba7cd835, 0x3d2070b5, 0xbc9ad966, 0x3b620568, 0x3cc4f42f, 0x3cc7c90c, 0xbc3d3e0d,
+ 0xbdc12333, 0xbc5ba87a, 0x3cfc9381, 0xbb960f53, 0xbcad0f5b, 0x3c9640e7, 0x3cd832eb, 0xbc8ae7f6,
+ 0xbc2ff85a, 0x3bf296dc, 0x3ca80303, 0x3bdb25a9, 0x3caf2293, 0xbb39b0ab, 0x3dad82f9, 0xbd00ec87,
+ 0x3c6d9918, 0x3bfee933, 0xbba3ada6, 0xbcfef3e9, 0x3c964fde, 0x3d789a84, 0xbcf23c36, 0xbb905710,
+ 0x3cedb9c2, 0xbc7b6a0b, 0xbc2e2a25, 0x3dc41cdf, 0x3d6c980b, 0xbcce1c21, 0x3cc84e41, 0xbd1c9959,
+ 0xbc966062, 0xbb863d9f, 0xbc354298, 0x3d9539a3, 0x3c896ab1, 0xbcb7a268, 0xbd0db9eb, 0xbccc7466,
+ 0xbd0e6bcd, 0xbc6f8a72, 0x3cb29c67, 0xbc94d338, 0x3bb788f5, 0xb9b4611b, 0x3d86a87f, 0xbc81f128,
+ 0x3d886c81, 0xbce5b981, 0xbcde5ef8, 0x3d3b4e15, 0x3d09a00c, 0xbb93e9e3, 0xbd06c550, 0xbd2ae9e0,
+ 0xbc18601e, 0xbd412bea, 0x398edad2, 0x3d3d050e, 0x3bc121a5, 0x3ccc37e1, 0x3c6e3045, 0xbc83cc67,
+ 0xbda58f88, 0x3caf370d, 0x3d9d733e, 0xbc81e214, 0x3b4f15c2, 0x3c4de65e, 0xbc61f74c, 0xbcde8152,
+ 0xbca031df, 0xbbd1df8e, 0x3d4a67d1, 0xbcdadc40, 0x3ccb9d07, 0x3cc88bea, 0x3d815516, 0xbbb7c0b4,
+ 0x3d2ec4b8, 0x3c32f480, 0xbc500936, 0x3d56f758, 0x3caf0224, 0xbc12bd04, 0x3ca46ef4, 0x3c326bb7,
+ 0x3b698943, 0x3c95196d, 0xbcd898de, 0xbb7e65cb, 0x3d09148b, 0xbc0798a6, 0xbd170e79, 0xbc4132fd,
+ 0xbc86494d, 0x3d32b135, 0xbc8704e0, 0x3cf90284, 0xbc115799, 0x3cded3f9, 0xbce8beac, 0x3d3d88d1,
+ 0x3cc47a66, 0x3d28eec9, 0xbcb35307, 0xbba08a4e, 0xbc08120c, 0x3b3ba2bf, 0xbc14d920, 0xbba72d99,
+ 0x3d1b4cd6, 0xbc6fda0d, 0x3d04a429, 0xbd55155d, 0x3c95e7c0, 0x3c99fd67, 0x3d44a1cc, 0xbd21d2b5,
+ 0xbd0d5e1d, 0x3bb3106c, 0xbc7cc02c, 0x3b0b354c, 0xbd19887b, 0x3c6e458c, 0x3c917328, 0xbbe7baf7,
+ 0x3c3b58eb, 0x3cbac39f, 0xbb85b956, 0xbcc3dcdc, 0x3c215edf, 0xbdbd27d6, 0x3ce069f5, 0x3bfa262b,
+ 0xbda60517, 0x3c928a9b, 0x3bd1c4fa, 0x3d0c3825, 0xbbdd5b55, 0x3bbacf0b, 0xbd34278a, 0x3d036447,
+ 0x3d0457a5, 0x3d21004d, 0x3c804d8b, 0x3cc5e620, 0xbc2dc01a, 0xbac2bd4e, 0xbc8131bd, 0xbc9ff892,
+ 0x3a9db92b, 0x3cc69a4d, 0xbc3b08d7, 0x3d17fead, 0x3c43092d, 0xbc9389bb, 0xbcaffc3e, 0x3cd8e91e,
+ 0xbc9bb9a0, 0x3cf42e7b, 0xbd108157, 0x3d8e4376, 0xbcf3492c, 0x3c4781d6, 0xbcee0db4, 0xbc48b3e3,
+ 0x3dba158a, 0x3d42ffef, 0x3d05ea38, 0x3c3d97a0, 0xbd8f5336, 0xbbab9c9c, 0xbc8f7b04, 0xbc6ca40b,
+ 0x3d1cb41e, 0x3c891578, 0xbd3175cd, 0xbd6d5d44, 0xbd0dff96, 0x3cb6fb68, 0x3d34c6b7, 0xbbd25b66,
+ 0xbd1d1b16, 0x3cca640d, 0xbc1c4bd9, 0x3bd1e1d0, 0xbd42342b, 0x3c6bc5f9, 0x3d086fa9, 0xbb2aff44,
+ 0x38fecd3b, 0xbcc92178, 0x3c175244, 0xbca03ffd, 0xbd6b6038, 0xbd2e9a7b, 0x3afb68a9, 0x3c795622,
+ 0xbcaf7031, 0xbc8d007f, 0x3cdd0860, 0x3d070ad0, 0xbce4697f, 0x3d139bb2, 0xbc6871c1, 0x3d48f85a,
+ 0x3d340bc8, 0x3d2a6b57, 0x3d18f573, 0x3c75fc9e, 0x3a1b9131, 0xbcfb993c, 0xbd5a1d3f, 0x3d501859,
+ 0x3d328901, 0xbd00df3b, 0x3bf7004b, 0xbbace41f, 0x3d002eab, 0xbdbcda87, 0xbd137d89, 0x3caa662c,
+ 0x3bf8a267, 0x3d01661b, 0xbc43080d, 0x3cd2d527, 0xbc0f144d, 0xbd8822db, 0xbdac80db, 0xbca1a09e,
+ 0x3d9fe1b1, 0x3d2839e1, 0x3d0580de, 0xbc291788, 0xbd6f78d4, 0xbce0fc11, 0xbcfcddcf, 0x3cdeb90e,
+ 0x3c88cc14, 0x3d9afb0f, 0xbce6d897, 0xbcf3fd37, 0x3cc61672, 0x3c67decd, 0x3ccfdd25, 0x3d1607da,
+ 0x3d14efe9, 0x3d271429, 0xbccd4aff, 0xbcaf9829, 0xbcba2b88, 0x3cd5e8a0, 0x3d4c3cd8, 0x3d68a8a9,
+ 0xbcb4ec9a, 0xbc0b5a82, 0x3b296e5c, 0xbcc13d48, 0xbd89e54e, 0xbcab1c5a, 0x3d567cb1, 0x3d4b4ad9,
+ 0x3c067b93, 0xbcd44823, 0x3d6ccd31, 0x3be1a4c6, 0xbd267a11, 0x3c928860, 0xbcb5941c, 0xbd80d543,
+ 0x3cb409e7, 0xbcbcafab, 0x3d0c2a87, 0xbb83de72, 0x3c7039c4, 0x3c141bc3, 0x3c29ba48, 0x3d3ee6f0,
+ 0xbd8af9c4, 0x3cf25ffa, 0xbc80fc01, 0x3cefc3b1, 0x3da55afd, 0xbcb61799, 0x3b7f1498, 0xbbbb3f2f,
+ 0x3d02a56f, 0x3c5d0b69, 0xbc581dea, 0xbccdccac, 0xbd21dd6f, 0x3c76d88b, 0xbce2bbdc, 0x3ccfae7c,
+ 0x3d29a5b0, 0xbd2ec5fb, 0x3cb7b35c, 0x3c72e6f6, 0x3bda1fa2, 0xbd03c209, 0xbc5979d0, 0xbc21bd6a,
+ 0xbd44ac45, 0x3d2b86df, 0xbd9a1de6, 0x3d19609b, 0x3d90198e, 0xbd1c2e14, 0x3d8168e4, 0xbcbda3a7,
+ 0xbb5eff53, 0x3c9a7c15, 0xbd2ed02e, 0xbd041887, 0xbd5726c4, 0xbb8245b6, 0x3d1d677e, 0x3d1c2c30,
+ 0x3cec209a, 0xbd26d9b1, 0x3cd572b9, 0xbc7b0064, 0xbd33beb9, 0x3d01dc5a, 0xbcf865f8, 0x3c0022aa,
+ 0x3d0ffd06, 0xbd765666, 0x3ccad816, 0x3c56563e, 0xba824789, 0xbb34fb9d, 0xbc2024ad, 0xbcba38d6,
+ 0x3c8a6003, 0x3d0b0c41, 0x3bb61436, 0x3c1e9e92, 0xbbba29dc, 0xbbe18993, 0x3d4e445f, 0x3db33c7d,
+ 0xbd14658c, 0xbbcf51a9, 0xbcaf79fc, 0xbd8b9a95, 0x3d06b13b, 0x3ce71e13, 0xbcfe4f37, 0x3bb7e24e,
+ 0x3c1593d5, 0x3ce52e51, 0x3db28a73, 0x3c2fea3f, 0xbae3cbd8, 0x3d75e02f, 0xbd3cd47b, 0x3c827c98,
+ 0xbc0bbf6a, 0x3cdf54bb, 0x3d2e3944, 0x3d931732, 0xbc6581e9, 0xbd0115a1, 0x3cbb0b07, 0xbbf89e44,
+ 0xb9993ddb, 0xb896948a, 0xbcb11fb5, 0xbc7ba9e8, 0x3c6159e9, 0xbcc828ee, 0x3c519ca3, 0x3c2a87b5,
+ 0xbc974938, 0xbc0246db, 0xbcbc8573, 0x3d518f17, 0xbcb467ba, 0xbca10c7c, 0x3d8981d1, 0x3ce78adf,
+ 0x3cddf3d8, 0xbca07510, 0x3d40a4cc, 0xbd486437, 0x3c472c27, 0xbd4bd3d3, 0x3ae6372e, 0x3cf897e0,
+ 0x3c89ed8b, 0xbc56fbb8, 0x3c199fc1, 0xbabdbde8, 0x3c15a7b1, 0x3b18e060, 0xbc853a3a, 0xbd53f710,
+ 0x3cd607c4, 0x3c43561c, 0x3aa1b01f, 0x3c041a64, 0xbca37557, 0xbd5023a6, 0x3aa72400, 0x3d185bd6,
+ 0xbd6d24ca, 0x3cd81272, 0x3cdb7292, 0xbdbe8b62, 0xbca0748f, 0x3d266a21, 0xbd350195, 0x3cc789dc,
+ 0xbcf143e6, 0x3b41cd36, 0x3d197697, 0xbd018bba, 0x3c85358e, 0xbccfeef4, 0xbd2a3c7d, 0x3d8d4718,
+ 0xbc504931, 0x3c698e24, 0xba8fba7c, 0x3b983142, 0xbc9f3834, 0x3af9fd16, 0xbac26004, 0xbc425928,
+ 0x3be5bf56, 0xbd0f6608, 0x3ba749a7, 0xbd3781c7, 0x3d2eb0e9, 0xbbf60bea, 0x3d1edb5a, 0x3d49d8b7,
+ 0x3bab3b78, 0x3ce9ddf3, 0xbcbe84b3, 0x3caec205, 0xbc904d6e, 0xbcb1022d, 0x3d65e127, 0x3d3e93c8,
+ 0x3c1ef584, 0xbca2d346, 0x3d2fb96a, 0xba2f55f8, 0x3c29ce33, 0xbd738b65, 0x3b809e78, 0x3d8f1bcb,
+ 0xbb839436, 0xbc408099, 0x3ca20fde, 0x3ca21bde, 0xbc274d58, 0xbbaf7977, 0xbc4e1e6d, 0xbd48f358,
+ 0xbc05e3db, 0xbcdf9c52, 0x3cfb23a8, 0xbc8ac50d, 0x3ba6a43e, 0xbc53381d, 0x3ca28263, 0xbb8cb02c,
+ 0xbc30efd0, 0x3c784aaa, 0xbc9ece86, 0xbca7dbe3, 0xbd184038, 0x3c21eb47, 0x3c40a4f7, 0x3b7283d9,
+ 0x3d02b9d4, 0x3b552d2e, 0xbbe15ee9, 0x3c265320, 0xbc8923bf, 0x3b2889f4, 0xbcb5bcd3, 0x3b2ca8e8,
+ 0xbc6f06a2, 0xbd2f4486, 0x3d308ab1, 0xbc4727d9, 0xbc183911, 0x3bc2bc00, 0x3bbbc5d0, 0xbbe5fa01,
+ 0xba96111a, 0xbcafa4a3, 0xbc34c845, 0xbb622a19, 0x3d120e94, 0x3ca16822, 0x3da1be4b, 0x3cec6657,
+ 0xbd24772a, 0xbb8b4b24, 0x3cd53725, 0x3d55f150, 0xbcb0b556, 0x3cd23f3f, 0xbb60adb0, 0x3c6823b7,
+ 0x3ce7ae55, 0x3c1b56ea, 0xbc0fd7fa, 0xbd427434, 0x3ce5b5d6, 0xbb9b46e5, 0xbd2241d8, 0x3d3d532b,
+ 0x3d4e8d85, 0xbd181666, 0xb87f410b, 0x3d2d13d2, 0x3b3ac665, 0x3c82ec32, 0xbc3f69bc, 0xbb6386fe,
+ 0xbb388234, 0xbd05dbc3, 0xbcf84a72, 0xbd334fce, 0x3bbfdf19, 0xbd1f577e, 0xbb697e22, 0xbbebde60,
+ 0x3d09c8de, 0x3abe567d, 0x3cc8824b, 0x3d110541, 0xbca4ed48, 0xbd772be1, 0x3dad1732, 0xbbec4bf8,
+ 0x3cb2e641, 0xbbe8ff95, 0xbcbabba1, 0xbd173f43, 0xbc98d9e2, 0xbd89a4bc, 0xbcc549e3, 0xbc33874e,
+ 0x3d458469, 0xbb848911, 0xbc025b88, 0x3c52ded0, 0x3b5a766c, 0xbd0b8214, 0x3cc55fc3, 0xbcb4baad,
+ 0xbd671d18, 0x3d90a2f0, 0xbd1e0279, 0xbca2529e, 0x37fc3d3b, 0xbc0e24fd, 0x3c86ceef, 0x3dc39354,
+ 0x3d48ecf7, 0xbc3261ea, 0x3d077984, 0xbcd15357, 0xbcb94445, 0x3d07c9fa, 0xbca756c1, 0x3d2a2e8c,
+ 0x3beb9e79, 0xbc1f665c, 0xbd51f1fe, 0xbb12c1be, 0x3b57a577, 0x3be5643e, 0x3ca0a664, 0x3d21f9e3,
+ 0x3c8603ff, 0xbd0cbbf9, 0xbc512102, 0xbb4732e7, 0xbd13e624, 0x3cb66b2b, 0xbc14db89, 0xbdb224e2,
+ 0x3c6c8317, 0xbb1fd54c, 0x3d3ab1ba, 0xbd6d38c7, 0x3aa69cf6, 0x3c00d6a9, 0xbbedc5d6, 0x3dce2980,
+ 0xbd368b28, 0x3cacb2e5, 0x3b1ef2f6, 0xbcb9b205, 0x3d0abb8c, 0xbd0eff2f, 0xbbe74b5d, 0x3aea8777,
+ 0x3b4cd895, 0x3b5b98e8, 0x3d80285b, 0xbd0bcbf2, 0xbbc7e92c, 0xbd6f56b2, 0xbc1cbd30, 0xbd81c06f,
+ 0x3c848724, 0xbc1624b3, 0x3c2a710b, 0x3a528bf4, 0x3cf355d4, 0xbc367b12, 0x3d1e875d, 0x3b9ed52d,
+ 0xbd739996, 0x3d687907, 0xbcf2ae4f, 0x3d0244ac, 0x3c6c30e7, 0x39947526, 0xbb05aecd, 0x3c343984,
+ 0x3c7c08af, 0x3d0e4f2a, 0xb9e17680, 0x3c028b34, 0xbd043296, 0x3c91d160, 0x3d11dd4b, 0xb49a6667,
+ 0x3cc6cf8b, 0xbdace95a, 0xbcb9d7c1, 0xbcffb797, 0xbc35cbc6, 0x3d25f0e9, 0xbd38b9e5, 0xbc9ba722,
+ 0xbc231465, 0xbd6c3db6, 0x3ce2cff5, 0x3c0a37e6, 0xbcea9188, 0x3d1a489c, 0x3cb02ae9, 0x3d0f065a,
+ 0xbc92fada, 0x3cba8c90, 0x3c858a21, 0xbd0285da, 0xbd3d96e7, 0xbc35070c, 0x3d66b7db, 0xbb82fccd,
+ 0xbbf62929, 0x3da8ad25, 0x3cfbc451, 0xbcc3e979, 0xbd2bba14, 0xbc305677, 0x3cc05a02, 0xbd355555,
+ 0x3b51ad2e, 0xbd7ca17c, 0xbce57c2f, 0xbc557908, 0xbcd3316c, 0xbd36b2ea, 0x3ab51543, 0xbc0bea26,
+ 0x3d83162c, 0x3d2a5ae9, 0xbd498bde, 0x3b8da07d, 0x3c1df0fa, 0xbc4ccf07, 0xbd62c330, 0xba129a6d,
+ 0xbca2bb4c, 0x3c8d3b77, 0x3ce3d3f4, 0xbcf7ce7e, 0x3c7bcf45, 0x3d2dde54, 0x3cad3f90, 0x3d15f040,
+ 0xbc896a29, 0x3b58638f, 0xbcb74423, 0x3a2902ae, 0xbb0ca78b, 0x3cd614ec, 0xbd21ddaa, 0xbcf46c66,
+ 0xbb092656, 0x3d0025ca, 0x3baf1957, 0x3cd1a217, 0xbc0727ec, 0xbd3a4493, 0x3ba71c8b, 0xbb76493e,
+ 0xbd880ba6, 0xbca1514f, 0x3acfc571, 0xbcd40ee0, 0xbd0f4873, 0x3ce050a6, 0x3c95774e, 0x3ce73942,
+ 0xbc05a0a8, 0xbcfdd849, 0x3d232d62, 0xbc823910, 0xbc9d781b, 0x3d62f463, 0xbca5edeb, 0xbda7ab12,
+ 0xbcb6033e, 0xbc5a4d8c, 0x3ca8d8d5, 0x3d65b9fa, 0x3b5db586, 0xbc79f9f9, 0x3bce0cd7, 0xbb99143f,
+ 0x3c6f3b8c, 0x3b75f54b, 0xbc465f27, 0x3bc47974, 0xbccba468, 0x3cd7b25a, 0xbbfd2308, 0xbd29e684,
+ 0x3ce8c83a, 0x3ced2270, 0xbd114bdb, 0x3cfe2b8b, 0x3c75b73c, 0xbcac8be6, 0xbd894d64, 0xbc096034,
+ 0xbd169301, 0x3d5f3245, 0x3d12463b, 0xbcded497, 0x3c3f417c, 0xbbea4343, 0xbc0bccd3, 0xba57725f,
+ 0xbd25bbf1, 0xbc3775c7, 0x3c8dcdd5, 0xbc9fffa1, 0x3c07b428, 0x3da023f1, 0x3b3a133a, 0xbca6fe67,
+ 0xbccadc0b, 0xbbf32187, 0x3cc4f278, 0xbcc5dbb1, 0xbcbc78dd, 0xbcfa1ba6, 0xbd18d63e, 0x3b01f687,
+ 0x3ccc66b6, 0xbcdc7d56, 0xbc54a1ee, 0x3c70aaa7, 0xbc92d9ca, 0x3b1e6259, 0x3d001206, 0x3d4a87f1,
+ 0x3ace923d, 0xbc1bdcda, 0x3ccbd16f, 0x3ccf3e90, 0x3c651f9a, 0x3cae3288, 0xbd389707, 0xbcb9ef9e,
+ 0x3bb47983, 0xbd2c0534, 0x3cbc20ff, 0x3bdfb158, 0xbb9d8815, 0xbd05e985, 0x3a1ff888, 0x3d71b264,
+ 0x3cb5536d, 0x3cc06f62, 0xbd8e64ef, 0x3a05643b, 0xbc6f7df5, 0xbc909485, 0x3c4a4a65, 0xbd1115d6,
+ 0xbba93f9e, 0xbb8a7259, 0x3cc02195, 0xbcb4e587, 0xbc4a0f4b, 0x3bcc141a, 0x3c8b7def, 0xbb65a44b,
+ 0xbc75a142, 0x3c662d65, 0xbcd95c0c, 0x3b3cbfe8, 0x3c6713c3, 0x3bf38fea, 0xbd100c10, 0xbb827fec,
+ 0x3d3a28b8, 0xbc536597, 0xbbb9fe64, 0xbb306a38, 0xbc178307, 0xbbc5295c, 0x3a8d2c60, 0x3cb821f7,
+ 0xbc1abcd7, 0xbce34806, 0xbc952ba3, 0x3c01acd5, 0xbcc6378d, 0x3d8ec792, 0xbd1dd943, 0x3c47785d,
+ 0x3da6b3ce, 0xbd0e8bcd, 0xbc869ad2, 0xbc4ba021, 0xbc7a94fe, 0xbce35e77, 0x3d1e7629, 0x3d07d5db,
+ 0xbc34a99b, 0x3bbe3582, 0x3d4225c2, 0xbc40e311, 0xbcf9736d, 0x3d5bff27, 0x3d0e8e8d, 0xbc98327f,
+ 0xbd5c68ca, 0x3da2f0ee, 0xbcdd7a63, 0xbc521d5a, 0x3d301c61, 0x3c2e06ac, 0xbd10aa72, 0xbcd25ce4,
+ 0x3c901b91, 0xbd06cd13, 0xbbf5ae38, 0xbc80bde9, 0xbc2afc60, 0xbd38f41c, 0x3b67642b, 0xbc1eab51,
+ 0x3d0d09f4, 0xbc89fb35, 0xbcfcbdf8, 0x3bec5260, 0x3c4bea8e, 0xbd1a67ef, 0xbbec7980, 0xbca1051e,
+ 0xbd338523, 0x3d7b1b3b, 0xbd1c1c15, 0x3be35357, 0xbb952e49, 0x3d0c2358, 0x3cc37c08, 0xbd0c1112,
+ 0xbc8bda52, 0xbaada565, 0x3becfff3, 0xbc8fc41c, 0xbba36912, 0x3d3d8ace, 0xbce860cb, 0x3c7f1e26,
+ 0xbc14595d, 0xbcf2a437, 0xbb7ff43c, 0xbbf020a6, 0x3ac10d5b, 0xbbcb5a12, 0x3b8ee57d, 0x3c14461e,
+ 0x3d04bf17, 0xbd13c7fa, 0xbb27902f, 0xbc04ef2c, 0xbc27da1e, 0x3b09da1f, 0x3c2c4be0, 0x3d6135cb,
+ 0x3cb24e42, 0xbc89fbb2, 0x3c8fdd14, 0x3c06a6b4, 0x3c9cd7a3, 0x3d837c81, 0xbbc1b3ce, 0xbc8ebc49,
+ 0x3cba51cc, 0x3b3877dc, 0xbd240679, 0x3ccf4a0e, 0x3cca86b5, 0x3be8a9fa, 0x3bce48b9, 0x3d1b0dc8,
+ 0x3c775306, 0x3d15ff8b, 0x3d2eabb6, 0x3ca98be9, 0x3b7f9995, 0x3d3e2a08, 0xbc3249e8, 0xbc7aca35,
+ 0x3c2427b0, 0xbc88829a, 0xbb78e1f6, 0x3c5e81b9, 0xbca2b27b, 0xbb6d97c7, 0xbcfb5d14, 0x3bbdddbc,
+ 0xbd0e2aaf, 0x3cf7d63e, 0x3b016fea, 0x3b84cd62, 0xbbb1ae41, 0xbc8edfba, 0xbbc004fd, 0xbc6c73ff,
+ 0xbd0e875b, 0xbc8a332f, 0x3c12703a, 0x397ec884, 0xbb1366b4, 0x3b877eb9, 0x3d0bc224, 0x3bcc40cc,
+ 0xbb427d7b, 0xbcca138f, 0x3cc554dd, 0xbd2fa132, 0x398ce78d, 0xbc0982c0, 0xbb9721bd, 0x3a229ed2,
+ 0x3d88b477, 0xbc7cab0e, 0xbbf4d895, 0x3bc321f8, 0xbc28101e, 0xbcc4d181, 0x3c336915, 0x3c8decd3,
+ 0x3d85e36a, 0x3d52e3b9, 0x3b441a58, 0x3bdd7b47, 0x3cba624a, 0xbc9e36da, 0x3cec51c0, 0x3d900c98,
+ 0xbb94ab2c, 0xbd258e4d, 0xbca94f07, 0xbd303f3a, 0xbabcc1e4, 0x3db4df4e, 0xbd200dc3, 0xbb0cc40c,
+ 0xbb306412, 0xbae7aa11, 0x3d98d578, 0x3c55cb17, 0x3ccc3578, 0x3da3bff5, 0xbd54073e, 0x3d823668,
+ 0xbd77bf71, 0xbcfae19d, 0x3dbda81a, 0x3cd6cc8c, 0xbd003cae, 0x3c4f37b4, 0x3d53ca97, 0x3c825af5,
+ 0x3d5b530d, 0xbd164e01, 0xbb153971, 0x3c46a7dd, 0xbcc276ed, 0x3c500931, 0xbc27326e, 0x3cc00632,
+ 0xbd70767f, 0xbbdde9d8, 0x3c873101, 0x382d1dc1, 0x3b871e4a, 0xbd8ff4fa, 0x3d9faaeb, 0x3cb26049,
+ 0x3d1b67f5, 0xbd34f42d, 0x3d0604db, 0xbc970f4d, 0xbba02f44, 0xbc27adde, 0xbd2ae997, 0x3c7bc0d1,
+ 0x3cf92e96, 0x3bb7c770, 0x3ca6616a, 0xbafa4837, 0x3c585b27, 0x3b0b50a6, 0xbabf35c9, 0xbd8c801f,
+ 0xbd2786b4, 0x3d47fa36, 0x3b9e5445, 0x3d936a5a, 0xbb8ad3bd, 0xbc8282ee, 0x3d764e4c, 0x3ce57c7e,
+ 0xbc6f648b, 0x3d97a481, 0xbc8d590a, 0xbc2fe860, 0x3d1745be, 0x3b8e9b30, 0x3c45c9b0, 0xbc983232,
+ 0xbbb771c8, 0xbc8ba4fa, 0xbc9d9c24, 0x3b84df84, 0xbd20c98b, 0xbd0125de, 0xbc65a03d, 0x3c4f4481,
+ 0x3b52fbd8, 0xbc17a9d7, 0xbd56af5c, 0x3ca6820a, 0x3cb83309, 0x3c76e658, 0xbbe77790, 0x3c662e12,
+ 0x3a82f02d, 0x3c79ad6e, 0xbd091dd5, 0xbb3c514c, 0x3c711fff, 0xbc3f74f9, 0xbc202bea, 0xbce60995,
+ 0x3c824871, 0xbd2fa781, 0xbcc9f5dd, 0x3d30c36b, 0xbaee6594, 0xbb63c4c2, 0x3cad4d6f, 0xbc89eaf7,
+ 0xbc7823a2, 0xbc5c6f0e, 0x3d9c4d40, 0x3c581c51, 0xbc956d1e, 0x3bc2be03, 0x3c3aa691, 0xbc16009b,
+ 0xba5d754e, 0xbd1b99ff, 0x3d06f94a, 0xbd1c2216, 0x3af8e50e, 0xbd534d33, 0xbc940f81, 0xbb842fa2,
+ 0xbbbda589, 0x3d3d16db, 0x3a47aa69, 0x3d12cf40, 0xbc16a969, 0x3b6ea9a0, 0x3be9f21f, 0xbb2fbaba,
+ 0xbc828ca4, 0x3c4c533d, 0xbb827fc8, 0xbc2268e5, 0x3caccc6b, 0xbd05152e, 0x3cbfe3e1, 0xbd12e21c,
+ 0xbcd8918b, 0x3c4c1b45, 0x3d24f573, 0x3b445775, 0xbd284b93, 0xbc4e4f7d, 0xba3eb4d4, 0x3bcc906f,
+ 0x3bbc14f9, 0xbafca887, 0xbd921abc, 0x3cd8cbd3, 0x3c2eb323, 0xbaa9bc0b, 0xbc976ecf, 0x3c849867,
+ 0xbc323dd0, 0xba22c22b, 0x3c82b35e, 0x3ba3ea99, 0x3c8139a4, 0xbc9213f6, 0x3c144855, 0xbc512a28,
+ 0xbc326cb4, 0xbd514d61, 0xbc664473, 0x3c93621c, 0xbb84ca06, 0x3c806629, 0x3c64957f, 0xbacfaeef,
+ 0xbceacbd7, 0x3cdb1395, 0x3d97c05a, 0x3c982ccc, 0xbc626bc2, 0xbc38d020, 0x3b8fc37b, 0xbc530da2,
+ 0x3c166244, 0xbb468857, 0x3d38cc79, 0xbd4e87d9, 0x3c8595e3, 0xbd30e82e, 0xbcdb31fc, 0x3d206db8,
+ 0xbc2f0f48, 0x3c20daa4, 0x3c839924, 0x3c96fff5, 0xbc596453, 0x3d13b9b4, 0x3d060139, 0xbc0053a8,
+ 0x3ac80509, 0x3c424a3f, 0xbbd129f6, 0x3c9f21e8, 0xb91474d0, 0xbb93b0ba, 0x3d425370, 0xba0d9dfe,
+ 0x3cea0edf, 0xbc621d7c, 0x3ba67ee5, 0x3a871a8c, 0xbd2e14d8, 0x3c40b6cc, 0xbc6da29d, 0xbb411e71,
+ 0x3ccfa9e8, 0xbc1cca52, 0xbcd249e7, 0xbb9e410f, 0x3d012fc2, 0xbc357c01, 0xbca9a75f, 0xbc66c727,
+ 0xbb0bae47, 0x3c43bacc, 0x3c2bddec, 0x3c6d8e17, 0xbb9cf3e1, 0xbc5b566c, 0xbc0f6f28, 0xbce3a343,
+ 0xbc9808c9, 0xbd56331b, 0xbca35e46, 0x3b3ec677, 0xbc71fd0d, 0x3c82048c, 0x3c927216, 0xbc86653b,
+ 0xbcb5ce7f, 0xb9fca58e, 0x3dd1c9a7, 0xbcc7b369, 0xbc38a6e5, 0x3bfebf95, 0x3afaedd7, 0x3c7d5af5,
+ 0xbb62b330, 0xbbd7d605, 0xb998f8ca, 0x3ccf3e31, 0x3cf1be5c, 0xbd09e654, 0x3c8263ca, 0xbc544599,
+ 0x3ca3e54f, 0xbc9c33d3, 0x3c1d96c1, 0x3cc95c3d, 0x3caa3fd9, 0xbd1c587a, 0x38290c29, 0x3cbd6221,
+ 0x3c4cbeed, 0xbc935607, 0x3c46d4ca, 0xbcaff1a4, 0x3cb6383d, 0xbc96ef9c, 0xb9ea736f, 0x3c88244f,
+ 0x3c86b854, 0xbc0eb1c6, 0x3bf9316b, 0xbd0d72d2, 0xbc05e415, 0x3d021a40, 0xbd3a929c, 0x3d1483d3,
+ 0x3ba55ae5, 0xbc53eb62, 0x3d20bd1f, 0xbb938667, 0xbbbe3d97, 0xbd04d080, 0x3cb8287f, 0x3bd2122e,
+ 0x3d2166ac, 0x3cbd032d, 0xbb96f612, 0x3c0a98e1, 0x3bdc366a, 0xbc356546, 0x3c10fd4f, 0x3cd24557,
+ 0xbad23da3, 0xbd1b1b11, 0xbc395ac8, 0x3baa256c, 0xbcda810c, 0xbcb43ca1, 0x3bfb82d5, 0x3d8ca9a4,
+ 0x3c946acf, 0x3c32cfd5, 0x3c8210fb, 0x3c053353, 0x3cc33da2, 0xb92d9ec9, 0x3b1f7bc0, 0x3d36841b,
+ 0x3d3c8d44, 0xbd0b25a1, 0xbc04120a, 0x38261ded, 0xbcbd5a7b, 0x3c0cdb83, 0xbd0cf1e2, 0xbd8fc49b,
+ 0xbc254058, 0xb9357671, 0x3c901e02, 0x3cf57973, 0xbc014179, 0xbd9b5e47, 0x3d47ecc9, 0x3d2d2400,
+ 0xbd7bfac2, 0x3c367f8c, 0x3d2af5a2, 0xbc7c9a19, 0x3ce55d4f, 0x3a032541, 0xbc6045d7, 0x3cf71ced,
+ 0xbc4ef6d5, 0xbd128bf6, 0x3d684106, 0xbd336d97, 0x3a974fb4, 0xbb29debe, 0xbcd294f3, 0x3d7d3aa3,
+ 0xbc958b5a, 0xbb55efeb, 0x3d6f9eec, 0x3b98c8cf, 0xbc999e04, 0xbc4533ad, 0x3cd03a28, 0xbb960866,
+ 0x3d23f621, 0xbc78e2c6, 0xbcedec04, 0x3cee19b7, 0x3c71fb8f, 0xbbe0bad9, 0xbb9fbc68, 0x3cba839e,
+ 0x3bb48286, 0xbbf539a9, 0xbcf74d34, 0x3ca57efc, 0xbc398f01, 0xbd5c6e01, 0x3d241cab, 0x3b4ff21d,
+ 0x3cc03af2, 0xbc84ad0a, 0x3c6a1f36, 0x3d02e6c5, 0x3cf13410, 0x3bfa2948, 0xbc4413d1, 0x3d1e1ba5,
+ 0x3b4471c3, 0x3c0b2870, 0x3c614901, 0xbd286275, 0xbd2a6463, 0x3c198cf7, 0xbd7bd1b9, 0xbd6087d8,
+ 0xbd0a273a, 0x3c6ed81e, 0x3c87e9b8, 0xbc949711, 0xbd2e9d8c, 0xbd365d8b, 0x3c83384b, 0xbc2c701a,
+ 0xbd8321ab, 0x3d4e1878, 0xbc8ed9f1, 0xbda17047, 0xbb612b4a, 0xbbc548c0, 0x3b6dc1a6, 0xbbcfbd0b,
+ 0xbb8d557d, 0xbc4d56c2, 0x3c7fa4d8, 0xbd27c5ae, 0xbcd71a1b, 0xbcb00193, 0x3a1ef28a, 0x3d6e68b7,
+ 0x3c672d42, 0x3d01d221, 0xbd3d5b3f, 0xbb88c8ef, 0x3d0165bd, 0xbc73b5bd, 0x3c060569, 0x3d0dacf6,
+ 0xbcbcca78, 0xbcbbae15, 0x3d0d7d5b, 0xbb4061da, 0xbc1be13b, 0x3c319bb2, 0x3c3ea147, 0x3c818f3f,
+ 0x3d0125b2, 0x3c235070, 0xbd672878, 0x3b8c414a, 0xbc8f6105, 0x39cf9eb3, 0xbc1138dc, 0xbb9e44c5,
+ 0x3b21384f, 0xbc4428b4, 0x3c168e6e, 0x3c94f450, 0xbca2b31b, 0xbd181b57, 0x3d0ac2ab, 0x3cf27f8d,
+ 0xbc87bcf0, 0x3c0f427e, 0x3c01a100, 0xbad79177, 0xbcc2ba7b, 0xbc7bb15f, 0xbd0e2280, 0x3cb6a89e,
+ 0x3c923e8e, 0xbc5ea09b, 0x3d348bf8, 0x3cf7e0d6, 0xbcdd60c6, 0x3d925fae, 0x39718c69, 0x3c9e9600,
+ 0xbd43fa3e, 0x3d552d10, 0xbd547adf, 0xbba94e9f, 0x3cb056c3, 0xbbba5262, 0xbbc3ebc8, 0xbd243d70,
+ 0x3ca48f8f, 0x3cae42fe, 0xbc2460c8, 0xbba3ea8d, 0xbbf771a4, 0x3b64b4a4, 0xba02b810, 0xbcca2f4e,
+ 0x3c673b98, 0xbdb0b80f, 0x3d810c44, 0x3d1474c5, 0x3c1d488a, 0x3c812d56, 0x3a0b368c, 0xbd235848,
+ 0xbd7d3f02, 0x3dbd784d, 0xbcee6a25, 0x3cb922ed, 0x3c707904, 0xbb8e1be9, 0x3d39f345, 0xbceab151,
+ 0xbcf53dce, 0xbc93ff9f, 0xbc56be00, 0xbc1df30f, 0x3bf8109c, 0x3d4582b2, 0x3d09bb6f, 0x3b8ac901,
+ 0x3b317404, 0xbd60a910, 0x3c17d2e0, 0xbd823de9, 0xbb2a809f, 0x3d32a138, 0xbcfac0e2, 0xba487e50,
+ 0x3d796745, 0xbd6c7d8f, 0xbd494af5, 0x3c40f22b, 0x3ba48614, 0x39cddba4, 0x3d1ea75f, 0x3d4a40fa,
+ 0x3cec32a6, 0x3ccad7fb, 0xbb41b1f7, 0x3c455826, 0x3d5aa2d4, 0xbbbe726a, 0x3cc80d49, 0x3cdd401f,
+ 0x3d34e210, 0xbb706cf3, 0xbcd7cd34, 0xbb80df88, 0x3bf9cf38, 0x3c2f7664, 0x3bf3387b, 0xbbfd2f52,
+ 0xbbf23e9a, 0xbbefd2df, 0x3d8c67f9, 0xba7f5328, 0x39dbc9f3, 0x3dd66403, 0xbd03709e, 0xbb720c59,
+ 0xbc949de8, 0xbd052e80, 0x3d5be679, 0x3d86b108, 0xbc41e088, 0x3c599b90, 0x3cb1315d, 0xbb97a0d8,
+ 0x3cd83dd7, 0x3d0cfbe1, 0xbbccee72, 0x3caa0ff8, 0xbccf6265, 0xbca0820f, 0xbccbe81b, 0x3cc3ac07,
+ 0xbc75514e, 0xbd1c9cb8, 0x3cc1a097, 0xbc4df050, 0x3ce9c843, 0xbc300e95, 0x3d92678f, 0x3c2af06d,
+ 0x3c216b91, 0xbd60cade, 0x3cce500e, 0xbd472c2f, 0x3b981417, 0xbc663abb, 0xbae9fc87, 0xba8c2781,
+ 0x3bee43b5, 0x3c6abb65, 0x3cc26712, 0x3c6fb6c0, 0x3c88b119, 0x3c4e9997, 0x3cdcc0a4, 0xbd968c68,
+ 0x3cfe14e0, 0x3d4201d4, 0x3d14f400, 0x3cc1fd1d, 0xbac511c5, 0xbb3e7172, 0x3c2db7c2, 0x3dbb273c,
+ 0xbcd9fa80, 0xbcd1d727, 0xbc6610f2, 0xbd832b08, 0x3baaedd1, 0x3c8768aa, 0xbd3c49d9, 0x3b858f9e,
+ 0xbd0da82d, 0xbc8c255f, 0x3d93c6a5, 0x3c7ccaa5, 0x3d164b89, 0x3d7d6738, 0xbd3aad2b, 0x3d7131f2,
+ 0xbda400f7, 0x3c1b80eb, 0x3da80f5c, 0x3d3102e6, 0x3cedc2be, 0x3c726eb3, 0x3d0dbd25, 0x3ce10c3a,
+ 0x3d9da15d, 0xbbbb3a4a, 0x3d6e4c10, 0x3cd33018, 0xbd636b16, 0xba794863, 0x3a18e310, 0x3aca643b,
+ 0xbca4d237, 0xbc0692b8, 0xbc213991, 0xbb4dc973, 0x3a10e5e5, 0xbd6c2432, 0x3d8597b0, 0x3c59e018,
+ 0xbb222f9a, 0xbd63dd30, 0x3d0c76b1, 0x3d0c2c7c, 0xbc49926d, 0xbd854b99, 0xbbee9b04, 0x3c99c207,
+ 0xbcf9c9cb, 0x3d43b116, 0x3c68dc23, 0x3d646159, 0x39d7aefb, 0x3bbcf971, 0xbc11ad17, 0xbd705503,
+ 0xbb8de766, 0xbd24df37, 0xbc8ad0e2, 0xbd3a2459, 0xbc86a57c, 0xbd900a52, 0x3c8cc0fb, 0x3d874408,
+ 0xbd03e30a, 0x3c597252, 0x3d04361a, 0x3c248b54, 0xbd0263b1, 0xbc3afe28, 0xbc85219d, 0xbdd9f191,
+ 0x3c063506, 0xbd89eb4b, 0x3d9685cf, 0xbd63d272, 0x3d4fe55a, 0x3d03d22c, 0xbc70d461, 0x3d7e45a0,
+ 0xbcc5ed7c, 0x3cea17d3, 0x3c7ba741, 0x3d472914, 0x3cfec3b1, 0xbd6fc8d3, 0x3d09da16, 0x3cf5de4e,
+ 0x3ccb6b9d, 0xbd7355cb, 0x3b3000e8, 0xbcbe77ad, 0x3d751237, 0x3c84b627, 0x3b20ee87, 0x3d00f0b0,
+ 0xbd00fa27, 0xbba867fa, 0x3d25a322, 0x3b178c8d, 0x3ce1272a, 0xbce034f1, 0xbcdd285f, 0x3bb8cd82,
+ 0x3cfb1c88, 0x3c3f20b3, 0xbd79c4be, 0x3c3da6f9, 0xbb5a537c, 0xbd288eab, 0xbcc59bf7, 0x3b9ae0a1,
+ 0xbd580a2a, 0xba9ef499, 0x3b0de7a9, 0x3b74b4c6, 0xbd307228, 0x3d8fb930, 0xbc541257, 0xbd2dde4f,
+ 0x3d820a0e, 0xbcd04d54, 0x3d08a60f, 0xbc402057, 0xbb81c509, 0x3cba99a4, 0x3c5bf032, 0xbc859b6a,
+ 0x3d502491, 0x3a5ceeee, 0x3ad0e5ff, 0x3b0bf271, 0x3b5d8a42, 0x3b771117, 0x3c368826, 0xbc78a74e,
+ 0xbc5ed622, 0xbd6f6041, 0x3d98b7fa, 0xbc4a0939, 0x3d6bfc66, 0x3d3d9ffd, 0xbca1756c, 0xbc9faa0d,
+ 0xbd01e62f, 0x3d3db2e7, 0xbd15555e, 0x3d09d85d, 0x3c49ff0b, 0xbd607ed4, 0xbc1507e3, 0x3bc65599,
+ 0xbc6ab1f5, 0xbcf9a240, 0x3cfd9691, 0xbb8ca5a3, 0xbc062aed, 0x3d29acff, 0x38f2fa69, 0x3c80fc2d,
+ 0xbc5ae946, 0x3ca55792, 0x3c64eca9, 0xbbb9584b, 0x3bdb8067, 0x3c3ae7ac, 0xbcbd4eb8, 0xbd233ef8,
+ 0x3cd3f458, 0xbabcff5c, 0xbd29ad2d, 0xbd27f8b0, 0x3d736322, 0xbd0c17fd, 0xbd6f852e, 0x3cc60482,
+ 0xbb1e658d, 0x3c04c264, 0xbb40d1f9, 0x3d05b33b, 0xbd0ded90, 0x3d01059b, 0x3c564d17, 0x3cae0516,
+ 0x3d21fb30, 0xbd62ee97, 0x3d966c63, 0xbd775ac5, 0x3c98a3cf, 0x3c8104b6, 0xbb830790, 0xbde49ee3,
+ 0xbc31d1bb, 0xbc43ecae, 0xbceaa818, 0x3d961a47, 0xbc0aeb26, 0xbd407218, 0x3d64fef9, 0x3d16fd05,
+ 0x3bea313a, 0xbd5d4de9, 0x3d5408c3, 0xbc46242c, 0xbab52d51, 0x3cc578bc, 0xbbe93c4a, 0xba4a0e8f,
+ 0xbbaf4bb4, 0x3c3ac9a3, 0x3ca6d487, 0xbcaf89d2, 0x3d052f20, 0xbd2ac34b, 0xbc15a5a3, 0x3c0b4e63,
+ 0xbc2dcdde, 0xbd3de24c, 0x3a54b8b8, 0x3cd6ee63, 0xbcce4d98, 0x3bbffb39, 0xbc8637f4, 0x3cd2ce2b,
+ 0x3bb15e45, 0x3c616749, 0x3d52c2d3, 0x3bbdbd3c, 0x3ce33fd5, 0x3d3fbe6c, 0xbd054cad, 0xbd102b9e,
+ 0x3b08cdc3, 0xbd1cb494, 0xbb58fcf2, 0x3c29004d, 0x3ce4e903, 0x3ca227a7, 0xbc472a4e, 0x3d6fa1d2,
+ 0x3d2204c0, 0x3c3e998d, 0x3c064bde, 0x3d63fea8, 0x3c8bc8e7, 0x3c1731b3, 0x3b442e53, 0xbb170635,
+ 0xbbcf3740, 0xbae7521f, 0x3c99dcf5, 0x3c3a8d88, 0x3ba20c04, 0xbd809ef6, 0x3d8e1da9, 0x3d82d04d,
+ 0x3afbba18, 0x3cd50749, 0x3cb0e139, 0xbceb1f31, 0x3ba7405b, 0xbd097790, 0x3c894c73, 0xbd26aa41,
+ 0xbc8dad70, 0xbd22a631, 0x3d2ec2bc, 0xbcab9768, 0x39f43a88, 0xbce19f71, 0xbcb63347, 0x3cab9491,
+ 0xbcf4ae81, 0xbb80ee32, 0x3ce5e92b, 0x3c1ed1ca, 0x3c9841d3, 0xbd06ca33, 0x3d109274, 0x3d1af45f,
+ 0xbb8fd585, 0x3c9d5731, 0xbcc79575, 0x3b5deeab, 0x3c0d289a, 0x3d0980bc, 0x3bf16d1d, 0x3d2d3196,
+ 0x3c0a7101, 0xbc043c8e, 0xbc406d8e, 0x3c8ba76a, 0xbb4116e7, 0xbd2064c0, 0xbb484b4e, 0x3d070949,
+ 0x3c9dbc6b, 0xbc0af272, 0x3c4f8f7c, 0x3c759f61, 0x3d08fcb8, 0x3b1f52ca, 0x3be729ae, 0x3a454017,
+ 0x3d247979, 0xbd0004db, 0x3c37e3e0, 0xbd31ceb1, 0xbc894feb, 0x3adf32be, 0xbd4257cd, 0xbcc863a8,
+ 0xbcd8dc7c, 0x3be4ed66, 0x3c92fa43, 0xbc992208, 0xbcf035af, 0xbcbd137f, 0x3d96e41d, 0xbb06d3d6,
+ 0xbc8e5492, 0x3d099648, 0x3d34ae53, 0xbc775043, 0x3b224513, 0xbc66bbc0, 0xbc24c386, 0xbd63dd1c,
+ 0x3c3c0d54, 0xbd8b05ba, 0x3c6cd8a5, 0xbcd63e7f, 0xba12b751, 0xbc1ac936, 0xbd00f8dd, 0x3d0dbc00,
+ 0xb9ee25ee, 0xbcbc761c, 0x3bfee953, 0xbcc20c88, 0xbbdb2e77, 0xbd1feff9, 0x3c919e3f, 0x3cbd6cac,
+ 0xbce4b702, 0x3c21b78f, 0xbc3b896f, 0x3d4024bf, 0x3c5f62ed, 0x3c746277, 0x3c58012e, 0x3b9f002a,
+ 0xbd07e034, 0x3c3db589, 0xbd29879c, 0xbc05d2fd, 0xbb8d9fd8, 0xbc57ce3c, 0x3b4ab120, 0x3c9d16b1,
+ 0x3cb5eb4c, 0xbae6ebc7, 0x3bc5c18f, 0x3cda256f, 0xbca975b6, 0xbcd6577b, 0xbc41b6cc, 0xbb53c7b7,
+ 0xbca9327e, 0xbd0160a4, 0x3cfa041a, 0xbceaf952, 0xbcd6f81e, 0xbc5258dd, 0xbd36cd11, 0x3ab2fbf5,
+ 0xbcbce863, 0x3cf4ddd9, 0x3caaa7f6, 0x3bf60c10, 0xbc6cf856, 0xbd1d5747, 0x3d5ef1e6, 0xbc984a47,
+ 0x3c532973, 0x3d3458e3, 0x3bf440ff, 0xbc9035fb, 0x3c05aa8a, 0xbb8a6a99, 0xbc747c23, 0xbd87b5ba,
+ 0xbc559e0b, 0xbd1bac73, 0x3cd10fdd, 0xbafcc324, 0xbc59ab49, 0x3c679cb6, 0xba8e7724, 0x3d9601d2,
+ 0x39b343d0, 0x3be22ce9, 0xbd123216, 0x3bfb50f6, 0x3b903590, 0xbd2ba835, 0x3b046d97, 0x3d0a5b28,
+ 0x3c22c17b, 0x3c02d05e, 0x3c7dfc7e, 0xbc907110, 0xbbef5355, 0x3c91fe1b, 0x3cc87882, 0x3d042c72,
+ 0xbcc114e4, 0xbc1eb334, 0xbcbfb5a1, 0xbb5571c1, 0x3c5b5275, 0x3c9f4003, 0xbc8687f5, 0x3b054c6e,
+ 0x3a83e9f8, 0xbbe3b739, 0x3bc120b2, 0xbbbcabb7, 0xbc969783, 0xbd5b685d, 0x3c530efb, 0x3c6eb07f,
+ 0xbca6c87d, 0xbc5b10ea, 0xba9e21fd, 0xbcbaf0af, 0xbb9c0409, 0x3c014901, 0xbd1f80e1, 0xbc326c07,
+ 0xbcc58f36, 0x3c1d7ab7, 0x3c552f5a, 0x3c9dc7cf, 0xbce9224d, 0x3ca55929, 0x3b8f3477, 0x3cd47d34,
+ 0x3b7039c4, 0xb7b1f8d2, 0x3d5b0f61, 0x3cdc7fca, 0x3be5747b, 0xb94dacde, 0x3cfedfff, 0xbd97ad34,
+ 0x3cefc577, 0xbbf44dd0, 0xbd5891cd, 0x3c09b45d, 0xbc8c0545, 0xbae67e7d, 0xbaecdb99, 0xbd098c0e,
+ 0x3d77f0bf, 0xbc97a2c1, 0x3d0bbf2b, 0xbcd18242, 0xbd0f7b8c, 0xbc1128a5, 0x3c5d555d, 0xb99aa352,
+ 0x3c2da99b, 0x3b8c1ee6, 0x3cce888b, 0xbccbc075, 0x3d134c52, 0x3c51708f, 0xbcbe6b9f, 0xbd351299,
+ 0xbd54f4fb, 0xbca2819e, 0xbd3e48e2, 0xbc754eeb, 0xbd5ff801, 0xbd11dfcb, 0x3ce1fe81, 0xbd16ab38,
+ 0x3cc7adfc, 0xbc6f711c, 0x3c91ac54, 0xbca8df40, 0xbd41016d, 0x3ca4a613, 0xbd2a7d83, 0xbbfda9f9,
+ 0xbbea2cbe, 0xbd65f0f2, 0xbbb45839, 0xbd16b2b0, 0xbc8231ec, 0x3c07dce7, 0xbc0fb92d, 0x3bb22271,
+ 0x3c846cdd, 0x3c875134, 0x3b39cb79, 0x3d2b5afa, 0xbce72a90, 0xbc667d7b, 0x3c71e824, 0x3d014a02,
+ 0x3c91ec58, 0xbbc9b349, 0x3c84e1a4, 0x3d0c69fb, 0x3d265df3, 0xbc7d84cf, 0x3b8897ef, 0xbd80dc49,
+ 0xbca9a6f3, 0x3d21192a, 0x3cd2054d, 0xbbed7578, 0xbcfe5b91, 0x3cc6a34e, 0xbd7278af, 0x3c8e11a4,
+ 0x3ceb5ad2, 0x3c6411d7, 0xbc11c4b2, 0x3cb394d1, 0x3ca53567, 0xbd4d8e56, 0x3c03f2d1, 0x3bdc34ae,
+ 0xb982b231, 0xbc662dd2, 0xbb813837, 0xbc86914f, 0x3dd81033, 0xbd029493, 0x3d603b31, 0xbc94836e,
+ 0xbd928252, 0xbd099ab1, 0xbc803c89, 0xbd12e0a8, 0xbd3df022, 0x3d1ca362, 0x3d1287cc, 0x3c59863b,
+ 0xbcba2510, 0x3d1394a6, 0x3d365a97, 0x3c2e7c31, 0xbcd91e12, 0xbcd518b7, 0xbd13666e, 0xbcd806fe,
+ 0x3c68475a, 0xbd05c181, 0x3c151248, 0xbd1535e0, 0x3c8d546d, 0xbcc8d1c4, 0xbd026ba1, 0x3c0cd2be,
+ 0xbb96f989, 0x3afa7d40, 0x3b432b98, 0x3d1da00b, 0xbc75cb86, 0xbc46dcbb, 0x3c1a8aa4, 0x3d2e5cfa,
+ 0x3c8a1fad, 0x3b52c588, 0xbc2d61d6, 0x3c7302d7, 0x3d687214, 0xbc277539, 0x3d18c7f1, 0xbd24a0cd,
+ 0x3ce57e56, 0xbba6e91b, 0xbc99dc0f, 0xbc236283, 0xbd50aaaa, 0xbcb8179d, 0xbc7120e2, 0x3be9c979,
+ 0x3d1f1b11, 0xb90cb696, 0x3c895c0e, 0x3c7192e9, 0x3d027322, 0xbca630c7, 0x3bfa9e84, 0xbce3a935,
+ 0x3ca96f40, 0xbd0dc5b8, 0xbd0f63b9, 0xbc41ee4b, 0x3d64b43a, 0xbd4e5cad, 0xbd102235, 0xbd98680c,
+ 0x3c4d7364, 0xbcafb515, 0xbd40223f, 0xbc17543b, 0xbd8cc4e7, 0xbd0cb3a3, 0x3d925c3b, 0xbbf144a0,
+ 0xbc6396de, 0xbc22bb35, 0x3d55a7b3, 0x3b2d013c, 0xbd0ca1ea, 0x3d03b54d, 0xbcaa0247, 0xbd012543,
+ 0x3c057b93, 0xbd567880, 0xbaa437db, 0xbb10c017, 0x3bf36419, 0x3a65ccb7, 0xbbe2fa16, 0x3c834c0d,
+ 0x3bf7f08b, 0xbd203048, 0xbd2c252d, 0xbcbbce9d, 0xbb0ffa5f, 0x3affeed6, 0x3d30663e, 0x3c6c373b,
+ 0xba6ec1e1, 0x3bce91c8, 0x3d6d0db2, 0x3ccc9b24, 0x3b870f82, 0x3b65ff8d, 0x3cedd04e, 0xbd54ae1c,
+ 0x3c7bda30, 0x3c44d429, 0xbd49334f, 0x3b9c1fdb, 0xbc25dc5d, 0xbb7db9dd, 0x3c13ebba, 0xbd236394,
+ 0x3ce30541, 0x3c72560b, 0x3caeb603, 0xbd117377, 0xbcd3677c, 0xbce4db27, 0x3af9e34d, 0x3ce3cb2d,
+ 0x3cf78808, 0xbd4929ac, 0x3c4b3d52, 0xbb0f5c36, 0x3cffb474, 0x3c8f42ef, 0xbcca120a, 0xbce1f76d,
+ 0xbcd76b03, 0xbbedbfb2, 0xbd4e0976, 0x3c155088, 0xbd92bc18, 0xbcaf5cbb, 0x3cf6b4e4, 0x3cd6921e,
+ 0x3d57b4f3, 0x3c36aafa, 0xbaaedbc0, 0x3c82893f, 0xbd2c8424, 0xbc9648d6, 0xbca66a11, 0xbc87d53f,
+ 0xbd763391, 0xbd415b11, 0xbc97d9ff, 0xbba143d2, 0xbd229927, 0x3d13b3fd, 0xbd0c574e, 0x3b857086,
+ 0x3ccc3732, 0xbb2c62a0, 0xbceccbfd, 0x3d31c183, 0xbcd43def, 0xbbea6787, 0x3cb6b8a4, 0x394a6b12,
+ 0x3d15a528, 0xbcd7ba21, 0x3cd492b9, 0x3c93a950, 0x3d4cf5d9, 0x3bfac331, 0xbc8c34fc, 0xbd2da1da,
+ 0xbc8d2c50, 0x3cfaed11, 0x3abb9b73, 0xbb90d246, 0xbc737f54, 0x3ca4f52f, 0xbd2db0f0, 0x3d344078,
+ 0x3cc0e01b, 0x3cfdf203, 0xbc58daae, 0x3b2a1b9c, 0xbd09fef0, 0xbd2f8d05, 0xbd0e9274, 0x3c66bd43,
+ 0x3cc5545a, 0x3ca19b5d, 0x3c0825a3, 0x3c01afc0, 0x3dbc9a6e, 0xbbf7ade8, 0x3d29a42e, 0xbceb043f,
+ 0xbd7e92d0, 0xbb54fc0f, 0xbd221beb, 0xbd35c9bc, 0xbd7a8a31, 0x3c80e77a, 0x3d276684, 0x3d333e57,
+ 0x3c6510bf, 0x3cfad9a7, 0x3b1e6dca, 0xbc3737a4, 0xbc78c689, 0xbc90cf34, 0x3c15f982, 0xbd216df3,
+ 0xbcbc3069, 0xbce7e051, 0xb94ac8f0, 0xbae5325c, 0x3b8a4407, 0xbcbc4eba, 0xbd9c187f, 0x3c8e1997,
+ 0x3c886978, 0xbbff8a04, 0xbc9c6192, 0x382927a8, 0xbcf3370d, 0x3c87f222, 0x3d0cca23, 0x3d3b2288,
+ 0x3c0ea6ab, 0x3cffe4aa, 0x3cf1632e, 0x3c5c2d14, 0x3b301844, 0x3c6510dd, 0x3cc285dc, 0xbd3dfe48,
+ 0xbbd8d5f9, 0x3c8db129, 0xbd0beb8a, 0x3b6b5192, 0xbd14eefa, 0xbc6bc6ff, 0xbd10e0da, 0x3842fe5c,
+ 0x3d1a630b, 0x3d030e64, 0x3c7d5488, 0x3bf6c8dd, 0xbcd282d1, 0xbc148f33, 0xbd29f776, 0xbbd03313,
+ 0x3d16b769, 0xbccf161d, 0x37e06d79, 0xbc9b23c2, 0x3d2e4bb5, 0xbcc2efc2, 0xbd564258, 0xbd57934a,
+ 0xbd4380ef, 0xbc46af4f, 0xbc573260, 0xbd084d7a, 0xbd8ec52b, 0xbd424602, 0x3d838458, 0xbc35e187,
+ 0xbb4754fb, 0x3cd5aed7, 0x3c8198fe, 0x3c124b92, 0xbd5bd032, 0xbd060031, 0x3cbe90c5, 0xbd29666e,
+ 0xbd0a7bdf, 0xba72449a, 0xbc321911, 0x3bcd7531, 0xbc981407, 0x3cb044b6, 0xbca678fc, 0xbbbb9433,
+ 0x3c910e1a, 0xb9c3de20, 0x3d29ebc3, 0x3b041f3f, 0xbc2eaa10, 0x3d66258a, 0xbd827c46, 0x3d8be3ee,
+ 0xbd37a445, 0xbd8792a0, 0xbd1e403c, 0xbc1a8746, 0x3d941f65, 0xbccce959, 0xbd0292f9, 0x3c952081,
+ 0x3d813421, 0x3d28f50d, 0xbc41d55d, 0x3c271e18, 0x3ad7bb3d, 0xb962ac7c, 0x3b90f9f8, 0x3ca636a4,
+ 0xbd2d107e, 0xbd18cc2f, 0x3d3c91eb, 0x3d15a054, 0x3cc7252b, 0xbb8153f5, 0x3d3ebab7, 0xbc47d233,
+ 0x3c342c4e, 0xbc9003df, 0xbc99b253, 0x3d41806c, 0x3beb9567, 0xbd06b92a, 0xbc89b086, 0xbd1068ef,
+ 0xbbcefc68, 0x3c9f4c94, 0xbbed61a0, 0x3c6e09c6, 0xbc68f659, 0xbc22df3d, 0x3ce4c467, 0x3d2b905d,
+ 0xbc578909, 0xbcdbbbc1, 0x3ba81135, 0x3bab8296, 0xbc8ab6e2, 0x3d1831ac, 0xbca629d0, 0x3c05a26f,
+ 0x3dab5dbe, 0xbc537267, 0x3c9bcd0e, 0xbca2c096, 0x3c82c677, 0xbd0657f7, 0xbab40b80, 0x3d0593e1,
+ 0xbc39923f, 0xbcfa5445, 0x3cab851e, 0xbca4d4fb, 0x3ce37558, 0xbc56360e, 0xbceb85a0, 0x3cbc70eb,
+ 0xbc4e83c1, 0xbd2dbc39, 0x3c968aad, 0xbc45b54e, 0x3d79527e, 0xbd03e199, 0x3c41e4af, 0x3c321708,
+ 0x3c3428f9, 0x3bfa2eae, 0x3cfaf4f7, 0x3cb4506c, 0x3c3e4649, 0x3cc423c0, 0xbd6c22c0, 0x3c200b04,
+ 0x3c4d6559, 0x3d0ed237, 0x3c99e94c, 0xbc185e1c, 0xbca39649, 0xbcec4c93, 0x3a9f5d02, 0x3c3df3ef,
+ 0x3b7dc3c5, 0x3bdcc91c, 0xbd43c057, 0x3c9fc1d4, 0xbbdb5393, 0xbd783eba, 0x3c6dc062, 0x3c7bb2f5,
+ 0x3cc3fbef, 0x3cd18752, 0xba9037c8, 0x3b90cc40, 0xbc3997b1, 0xbc3e5c72, 0x3d8ed4b7, 0x3d4efff5,
+ 0x3c3491d3, 0x3c0a432c, 0x3d20ff4d, 0xbcd55b19, 0xbd82a1e4, 0xbb2e9680, 0x3c550c20, 0x3b87b3de,
+ 0xbc808676, 0xbd0bec60, 0x3d8f25a2, 0xbd054925, 0xbc0eb873, 0xbcc43387, 0xbc065368, 0xbd22717d,
+ 0x3d1762dd, 0x3cc557bc, 0xbcb1a246, 0xbcb3a5e2, 0x3cccc50a, 0xbd4666f4, 0x3c5422d7, 0x3d713ab9,
+ 0xbc2c9be4, 0x3b2b9098, 0x3aa4f2bb, 0xbd843bd8, 0x3ce2945d, 0x3d6e2093, 0xbd640788, 0xb99b9532,
+ 0x3ba54af9, 0xbcde05ef, 0x3d2e5718, 0x3bdeee89, 0x3d11a9d6, 0x3d4a1412, 0xbd3a79cc, 0x3d6445cd,
+ 0x3c275c58, 0xbc91936c, 0x3d8fce82, 0x3d816157, 0xbca7baba, 0x3c271cd5, 0x3c8e1f1d, 0xba84cb00,
+ 0x3d2c954a, 0x3c9510e8, 0xbcf1c642, 0xbc177c84, 0xbc9b8a82, 0xbc39dd2e, 0x3bdaac8b, 0x3c844421,
+ 0xbb03f653, 0x3bf04e55, 0xbb9e3db6, 0x3c5d4003, 0xbd40df77, 0xbd70f17f, 0x3da74608, 0x3d96b84a,
+ 0x3c790011, 0xbc13eec7, 0x3d66390c, 0xbd173ebf, 0xbd29cf38, 0xbdb1d8a1, 0x3cb24710, 0x3d3478a0,
+ 0xbd085a57, 0xbc6a707b, 0x3d1ddfb3, 0x3c3b8af4, 0xbca50e9d, 0xbb2a17ab, 0xbcc78855, 0xbdc832cf,
+ 0x3c8fa6cc, 0xbcda31d6, 0x3d2eda17, 0xbd50cf86, 0x3d916083, 0x3c853e70, 0xbd5cf3bb, 0x3d8292eb,
+ 0xbcd39690, 0xbdc52a9b, 0x3cae34b0, 0xbcbd2f22, 0xbc2d3780, 0x3c17631a, 0xbd357e2c, 0xbd97d3d5,
+ 0x3cd0e180, 0xbc1d9b58, 0x3d040fba, 0xbc91dfda, 0x3db3e4dc, 0xbd007d57, 0xbce617c0, 0x3c70cf78,
+ 0xbda20394, 0xbab3c352, 0x3cc702ea, 0x3cb2ef44, 0x3d103619, 0xbd779f6d, 0x3dda7b1f, 0xbc5a82fd,
+ 0xbd8be5ee, 0x3ca51769, 0xbc53a1dc, 0x3cfe5bf9, 0x3cda2498, 0xbd01fe54, 0x3c85f89a, 0x3d0ddea0,
+ 0xbc9fde39, 0x3d46bb12, 0x3d154d21, 0x3be0653a, 0xbcd7a1e5, 0x3d756cad, 0x3be5bdc7, 0x3dce0f58,
+ 0x3d8ab0ed, 0xbd621dcc, 0xbd6e6803, 0xbc423122, 0xbd011150, 0xbd1030b3, 0xbd0df039, 0x3d6a48f1,
+ 0x3d7db7ab, 0xbd23ef78, 0xbce91610, 0xbc0ac0dd, 0xbd15029f, 0x3ba8e379, 0xbcc2ef09, 0x3cd38b1f,
+ 0x3c26b88f, 0xbb6984c0, 0x3d261a50, 0xbc56a86e, 0xbc9c56b5, 0x3d6b29d3, 0x3cdcf111, 0x3d51c05a,
+ 0x3c9ca8d8, 0xbc147fad, 0x3d1e9452, 0xbc3080f5, 0x3a3dc394, 0xbc9116ae, 0xbc4c5705, 0xbd7ef1bc,
+ 0xbbb789c1, 0xbd6f38ae, 0x3cb60979, 0xbd8af068, 0x3d3e383c, 0xbd0e56a1, 0x3a42afa1, 0xbcdd5244,
+ 0xbca7c12e, 0x3cbda38f, 0xbb9e034b, 0x3d0adba5, 0x3cf3820e, 0xbd448127, 0x3c83e987, 0xbc336608,
+ 0x3bdf5792, 0x3cc8c09a, 0x39fa8ac6, 0x3c99bda6, 0x3caf567d, 0x3b1bc060, 0xbcad3e5f, 0x3be4553f,
+ 0xbd1ecc97, 0x3c6a20eb, 0x3d9cae35, 0xbca3c67a, 0x3ce45acd, 0xbbe03a0b, 0xbd589471, 0xbc38e28c,
+ 0xbc4e1eca, 0x3cd0ff7f, 0xbc787bd4, 0xbd82b50b, 0x3d9136c3, 0x3c68e786, 0xbd00be25, 0xbc92b33b,
+ 0x3d040980, 0xbbe2dc4c, 0xbbcea4e0, 0xbc20d189, 0xbcd06d23, 0x3cdcdbf7, 0x3d38cd09, 0xbcc3a86a,
+ 0xbd8357be, 0xbb81a522, 0x3d785317, 0xbcf8df46, 0x3bf1e85a, 0x3d4286a0, 0xbcb70c41, 0x3bb4d10b,
+ 0xbd174f31, 0x3d2c13ef, 0x3d80dadf, 0x3cfd5cf8, 0x3c2cec72, 0xbdd25e0d, 0xbc767f59, 0x3cf7edfb,
+ 0xbd1cc1f8, 0xbcfe5d72, 0x3cda7edf, 0x3a21ab1b, 0x3d42077b, 0x3cfa29f1, 0x3b00a515, 0xbd37260b,
+ 0xbd3702e4, 0x3d839fed, 0x3d40f87f, 0x3d51c689, 0xbcc14c5a, 0xbcb14644, 0x3c1789e8, 0xbd719863,
+ 0x3d223bfd, 0x3c588d59, 0xbc8668e0, 0x3d356343, 0x3b7b0c3a, 0xbc46ed36, 0x3bcafc7b, 0x3d0fcfff,
+ 0xbc97c32f, 0xbd28197f, 0x3db6f834, 0x3cfecdae, 0x3d9911b8, 0x3c7aee14, 0xbd0771e5, 0xbd72a4b7,
+ 0xbd4d982d, 0x3d8a2799, 0x3ced7626, 0xbca69973, 0x3d904808, 0xbd8193b6, 0xbcb04796, 0x3d191c16,
+ 0x3c9cb69b, 0xbca1cde9, 0x3c4765ce, 0xbd14bcdb, 0x3d1ef2f1, 0x3bc2c94a, 0x3d996d8f, 0xbd3d04f1,
+ 0xbab32afc, 0xbda2d1c0, 0x3b7f6aee, 0xbdd8ef8c, 0xba4ba59a, 0x3c03b5cf, 0xbb46cd84, 0xbda23ae1,
+ 0xbc6d86e8, 0x3cc345f9, 0x3d96a095, 0xbcb9aaeb, 0xbd5616f1, 0x3d5abaa0, 0x3d3ebbfa, 0xbcf8c6eb,
+ 0x3ce095c4, 0xbd9db539, 0xbac9b8fa, 0xbd81333b, 0x3d4005d0, 0xbbdb6456, 0x3c3eb8a6, 0xbcbf1f4d,
+ 0x3c67ae0f, 0xbcb307e3, 0xbb3a62e5, 0xba7021b6, 0x3d58f07c, 0xbcf6e041, 0xbd2afc8c, 0x3d0d5647,
+ 0xbde8461c, 0xbd341043, 0x3b4cd147, 0x3d82fdce, 0xbd274c72, 0x3ab972f2, 0xbd3ae417, 0x3d745623,
+ 0xbb2d8fd8, 0x3bd5eb2b, 0x3cb519e9, 0x3d1dda38, 0x3a98f1c6, 0x3a8caf28, 0xbc460b73, 0xbd84ccab,
+ 0x3d5bcfd6, 0xbcf00225, 0xbd0023f5, 0xbbbc3638, 0xba8a3a53, 0x3a733c7d, 0xbd221929, 0xbd21fbc4,
+ 0x3d15723c, 0xbc20bc5e, 0xbceda84a, 0xbd6712b4, 0xbd60a0e0, 0x3d4ba8fd, 0x3d1e9fa8, 0x3d744e1c,
+ 0x3d6cb8ce, 0xbd5fda3a, 0x3d6e0088, 0xbced18fd, 0xbd0e65de, 0xbb9d1d8c, 0xbb3d7d29, 0xbcb36939,
+ 0xbd4cf556, 0xbd0e03fa, 0x3c6fde92, 0xbbcf4229, 0xbc341160, 0x3c505bb5, 0xbb44630b, 0xbd0496c3,
+ 0x3d1e6a9a, 0xbcbf4045, 0x3caea979, 0xbca54997, 0x3d3b4d07, 0x3a9d63f9, 0xbd2f4dcc, 0x3d01a672,
+ 0xbcb95216, 0x38bfbae2, 0xbc33fa8d, 0xba2cfc24, 0x3d52bccd, 0xbd6f845a, 0x3a883375, 0x3d52c190,
+ 0xbd93d563, 0x3c34e271, 0x3ce576d4, 0x3d728cf3, 0x3c5b2cae, 0x3a4d25c8, 0xbc20b324, 0x3d27e3e7,
+ 0xbd17a9d4, 0x3cb37579, 0x3a8d7a38, 0x3cc185a2, 0xbcc9b9c3, 0x3d2edec3, 0xbafcc49e, 0x3cf25ff9,
+ 0x3d7d56c2, 0xbd68edef, 0xbd070828, 0xbb7c4e12, 0x3c9070b7, 0xbb854d70, 0xbd2247dd, 0x3ce53f02,
+ 0x3cb3533e, 0xbbd0a529, 0xbb821e52, 0xbb06d619, 0xbc958d35, 0x3ae314cc, 0xbc9b7f3c, 0x3cae7537,
+ 0x3dab6b31, 0xbd328880, 0x3c763648, 0xbce42661, 0x3ba94d88, 0x3d07cff5, 0x3d6eb06b, 0xbbe86156,
+ 0x3d201779, 0x3cd8fd55, 0xbafe4ac9, 0x3c95389c, 0x3d32c695, 0xbc86e029, 0x3d0bc1fa, 0xbc67a0bc,
+ 0x3c4b64a5, 0xbdadfe5e, 0x3d9caed1, 0xbd313538, 0x3ca3ab2e, 0x3cdad26a, 0xbd076ba5, 0xbc6d6190,
+ 0xbd0376c9, 0xbd201f01, 0x3be0e9ed, 0x3d2c93c4, 0x3d43dab7, 0xbd2b5f10, 0x3bd41feb, 0x3bd110f6,
+ 0x3c417a2a, 0x3d5c6fc9, 0xbb55f406, 0x3dd52e03, 0xbc402325, 0xbc27ca54, 0xbcf7a404, 0x3aa67bfb,
+ 0x3cb9649e, 0xbca02e59, 0x3d0a1edd, 0xbba0c865, 0x3a7d27c8, 0xbb863c46, 0x3c70c806, 0x3d17c377,
+ 0x3cc5c063, 0xbd175835, 0x3d2055e6, 0x3c9b7bf2, 0x3bdcf900, 0x3b0d0096, 0xbcefd34c, 0xbc8da250,
+ 0xbabf67c4, 0xbc18f79e, 0x3d5acc56, 0x3ca9a241, 0xbc33ab3b, 0xbc6efbc7, 0x3c5cc668, 0xbdbcc20f,
+ 0xbc573103, 0xbc50e6f9, 0xbd364f09, 0x3c888eb8, 0xbae23adb, 0xbb8c3012, 0x3cfaa7bc, 0x3d313727,
+ 0xbc44193d, 0x3d645bba, 0xbc3cc222, 0xbcccf317, 0xbd17802b, 0xbc689b7c, 0x3d617641, 0xbcb869b5,
+ 0x3ab7e112, 0x3c973eb4, 0x3d0b4f4a, 0xbd2642a0, 0xbd329b57, 0xbd062d9e, 0xba894802, 0x3b04b858,
+ 0xbce0ed72, 0xbd0de327, 0xbd53e437, 0x3c94a889, 0x3d0d7aee, 0x3c816f82, 0x3cc6e321, 0x3d13289c,
+ 0xbcdd1785, 0xbc3f1c43, 0xbcfa73db, 0x3d175a3a, 0x3c3dfb34, 0xbd318b49, 0xbcc16ef4, 0x3c751f65,
+ 0x3d55f3c3, 0xbd114874, 0xbc6bc500, 0x3d84f49f, 0xbc9a3bc2, 0xbd215a4c, 0x3caeffea, 0x3bbaa228,
+ 0x3cf9520e, 0xbd13014e, 0x3d1a526b, 0xbc504374, 0xbc483ff8, 0x3d87d22f, 0x3ca896a6, 0xbc7b0bbf,
+ 0xbc805f22, 0x3be0fbf3, 0x3ccb2aa8, 0x3cf69ddd, 0x3b997703, 0xbc763356, 0xbd5389bd, 0x3a6b9671,
+ 0xbd2a279d, 0xbccb16dc, 0xbccb9934, 0xbd3abdd1, 0x3b70be8a, 0xbdaed88f, 0x3d1f3038, 0x3d20914a,
+ 0xbcbd508b, 0xbd6f9603, 0x3dbc5d87, 0x3d1c7efa, 0xbd083fd8, 0x3bc57a0f, 0x3d673829, 0xbe073d8e,
+ 0x3c4d3202, 0xbbc302e8, 0xbd208ced, 0x3ac7cd21, 0xbb8b6d26, 0xbd39bcff, 0xbb64a85a, 0x3c48c0c3,
+ 0x3c793eea, 0xbd1a901a, 0x3cdab1f1, 0xbd2f2630, 0xbbcd8d6c, 0xbd2cfdd8, 0x3d374b1b, 0x3d8aa1a8,
+ 0xbd6ffa2d, 0x3bca3b9a, 0xbc987e6f, 0x3caeb65c, 0x3cef937c, 0x3d05c294, 0x3cf0d3a4, 0x3caf3192,
+ 0xbd1cbc67, 0x3c99bc90, 0xbcf31d2f, 0x3be13e28, 0xbd43080f, 0xbd061a7d, 0x3b0c27af, 0x3cb0de48,
+ 0x3dbdbe64, 0xbd10c8f9, 0xbcab4d23, 0x3d3b4436, 0xbcce4862, 0x3c0a20f6, 0xba55c7d4, 0x3c97c068,
+ 0xbc91cf7d, 0xbd3d13c5, 0x3b49f040, 0xbda4b254, 0xbdb17d02, 0x3d22bcaf, 0xbd90e4ab, 0x3c9eff36,
+ 0xbab09425, 0x3c08e3b9, 0xbd15ed3e, 0x3bd39440, 0xbd0372a1, 0xbd3dbba7, 0x3d9915e1, 0x3dbb3dfb,
+ 0x3d731dc5, 0x3cdc6931, 0x3ccdb805, 0xbd1259ec, 0x3c9b3bf8, 0x3d0724ee, 0xbd13b4b7, 0xbd9605f3,
+ 0xbcebc95a, 0x3c77ffc2, 0x3d00abd4, 0xbd3edbca, 0xbb21853e, 0xbb4039c7, 0xbd3fa7cf, 0x3d5ad8aa,
+ 0xbc5323fd, 0xbd33daf1, 0xbc1eeb09, 0x3b9bf09a, 0xba8380d6, 0xbd820f5a, 0x3c4f52a4, 0xbb6486f0,
+ 0xbcf191ab, 0xbb2c368f, 0x3c635997, 0x3a5b523a, 0x3dca2044, 0x3cb81cc5, 0x3dbc8925, 0x3c015e7f,
+ 0xbd5e7713, 0x3ca1a872, 0xbd21561f, 0xbbe858d0, 0x3bb21e2e, 0xbc1a4e3b, 0xba95d0c1, 0x3b013fbb,
+ 0x3d81e587, 0x3b09bc5c, 0xbcc5ce67, 0xbc8895df, 0x3d08a5fe, 0xbbc139b7, 0xbaa441ab, 0xbd2d6fa6,
+ 0x3c075055, 0xbcb58f00, 0xbda0f6d5, 0x3b7ec8c0, 0xbd1f5722, 0x3c8637b3, 0xbdb8feb4, 0x3c213145,
+ 0x3c1973af, 0xbce60915, 0x3cf0fffd, 0x3d258aab, 0x3ca0ade6, 0xbd322d95, 0x3dc6f42a, 0x3cf4bee7,
+ 0x3b9e5249, 0x3d12df32, 0xbc0e4ee7, 0xbc957172, 0xbd4603cf, 0x3c2dc8f6, 0xbcc03916, 0x3c61a7be,
+ 0xbcb5fe5d, 0xbc2fa7f2, 0x3cb9c20d, 0xbdbb68dc, 0xbcf44e09, 0x3a746bc9, 0xbca8bad1, 0xbbd4a8fe,
+ 0x3cdb3e70, 0x3d082841, 0xbd20f985, 0x3c799b16, 0x3d242bbc, 0xbc40da68, 0xbc834733, 0xbb5c924d,
+ 0xbd028cda, 0x3d06abfd, 0x3cb56ac7, 0xbc6cb635, 0x3b86c4c4, 0xbcb00111, 0x3d21fa01, 0x3d112ee7,
+ 0x3d2ec2a3, 0x3d030b1a, 0xbc8b48d7, 0xbc46a1fe, 0xbcfbac4c, 0xbbb5356a, 0xbaee279e, 0x3c920fe2,
+ 0xbcc6fbc2, 0xbd339eb4, 0x3d32dd21, 0x3d22729c, 0x3d0dfd4e, 0x3c428e12, 0x3c2f6b55, 0x3d5691cc,
+ 0xbd0b71a7, 0xbc9ab3d9, 0xbbdf1953, 0x3d9eae09, 0xbc5e61b8, 0xbc45f856, 0xbc211f4f, 0x3d75dc95,
+ 0xbc3c7db2, 0x3bea8a9c, 0x3c319d10, 0x3d15d724, 0xbd7b354e, 0xbc89c008, 0x3d48a93b, 0xbc642229,
+ 0xbc799f6f, 0x3cfb1404, 0x3d21fccf, 0xbb2a134b, 0xbbe691c5, 0xbd13fd87, 0x3c5e97ba, 0xbd877877,
+ 0x3d1c5b83, 0xbc5113d7, 0x3d1704de, 0xbd8af12d, 0xbcc4a92b, 0x3d4a9749, 0x3c13b718, 0x3d461114,
+ 0xbcbd4ef3, 0x3b181845, 0xbd09419e, 0xbb6d53e3, 0xbd252e1a, 0xbc921eb4, 0xbd41cee8, 0x3be8a0a6,
+ 0xbcc0ffd6, 0x3d384c18, 0x3d0a0ea7, 0xbcad39b1, 0x3d0377c8, 0xba820766, 0x3d2f57f8, 0x3d643f42,
+ 0xbba1a1ee, 0xbcbe0acb, 0xbcb13583, 0x3b5e2695, 0x3d117931, 0x3d276cd5, 0x3cad8181, 0x3ba39faf,
+ 0xbcad535c, 0x3c2c7a79, 0x3dbe0ea6, 0x3c685b0a, 0x3c466601, 0xbca95609, 0xbc36b045, 0x3d8eefbb,
+ 0xbbe67c0f, 0xbd57868c, 0x39092a40, 0xbd178603, 0x3bcc7b0b, 0xbdb7b51d, 0xbcd406e7, 0x3b94ef5c,
+ 0xbc28661c, 0x3c96979f, 0x3d57d45e, 0x3c902554, 0xbd0a0792, 0x3d28eae6, 0x3d208b19, 0xbd4216e1,
+ 0x3c97b67f, 0xbc0fadf1, 0x3c002e9a, 0xbb9cb331, 0xbd933e7b, 0x3d814359, 0x3c779692, 0xbd597b15,
+ 0x3d764146, 0xbd6eacb0, 0x3c496c90, 0xbcaa5263, 0xbcd4e0b2, 0x3da1c233, 0xbb34e45f, 0x3cf3ff3d,
+ 0x39a98bf6, 0xbce82189, 0x3c584eb3, 0xbbf0f67c, 0x3c531c94, 0xbc18fbcf, 0xbcdc055f, 0x3d5b6530,
+ 0xbcc8c621, 0x3d467c22, 0x3d460c35, 0x3b8ca32d, 0xbd277b0f, 0x3cfb2cf1, 0x3d06a964, 0x3cfb1e10,
+ 0xbd9bd525, 0xbd3ec686, 0xbc3d2dfa, 0x3d09c307, 0x3b92d399, 0x3c509750, 0x3ce97f17, 0xbc95f9ac,
+ 0x3bf8ee9f, 0xbd81321b, 0x3df2d7a6, 0xbd2f0081, 0xbd1fc065, 0xbd8a9e16, 0x3cd3766a, 0x3d644dcb,
+ 0xbd4e2ff3, 0xbbff9f3c, 0xbd7aa1ba, 0x3d77d531, 0x3c2b1ba5, 0xbd0d9fc4, 0x3d089110, 0xbd5a44c7,
+ 0xbd5acd50, 0x3d5cf319, 0x3d352879, 0x3d5b756c, 0x3c189be5, 0xbc76afbc, 0x3d995ca5, 0x3cadb02c,
+ 0x3c79179f, 0x3d462789, 0xbd3d2f33, 0x3caa6981, 0x3d56547a, 0xbd134f36, 0xbc44e505, 0xbd50e626,
+ 0xbcb9e153, 0xbc9715f9, 0x3c5c2888, 0x3c0ebca0, 0xbb3b02a5, 0xbb8576b9, 0x3c7e75d0, 0xbc94b28c,
+ 0x3c76adc8, 0xbc2e3eb1, 0x3ca9031d, 0x3d0c714e, 0x3cc5950c, 0xbc95b626, 0x3d2702be, 0xbb51a6c3,
+ 0xbc98142f, 0x3d2cb0a8, 0xbd63cab0, 0xb951d022, 0xbc14b0f9, 0x3cc5a58c, 0x3c473396, 0xbcb7845d,
+ 0x3c68136a, 0x3cc5c151, 0x3ca9d0fb, 0xbc1114f6, 0x3b910ce8, 0xbb0418fc, 0x3cbbbeb8, 0xbc9357a9,
+ 0xbbebb2b7, 0xbd2c70fe, 0x3cc3879f, 0x3a692fab, 0x3b98504d, 0x3cc7df81, 0x3c33694d, 0xbd45cd03,
+ 0x3d11913a, 0xbd26640c, 0x3d23e59e, 0xbda6a393, 0xbca30a04, 0x3c11da1d, 0xbc5caf42, 0x3d7b6cb3,
+ 0xbbdf107e, 0x3d171209, 0x3d62b6bc, 0x3c1719c2, 0xbd1a2dc9, 0x3a86699e, 0x3d912df0, 0xbd5a4e06,
+ 0xbb561da6, 0x3c39e20b, 0xbac250b6, 0x3d61fb0d, 0x3c90dcfa, 0xbc399fd9, 0x3ca4b8ac, 0xbde8ffdb,
+ 0x3d0beb9c, 0xbd4f7b13, 0xbc000bbf, 0x3b9338f8, 0x3d0ec35c, 0x3d06501b, 0x3d1a79e4, 0x3cd90190,
+ 0x3ccd697b, 0xbc85c535, 0x3ca9637d, 0x3c8da8ac, 0x3b41a5d4, 0xbd6c77fa, 0xbc13ed47, 0x3c9289e2,
+ 0xbc94d432, 0x3d2b0b9e, 0xbcb93866, 0x3c58e4d0, 0xbccd7dd3, 0x3d7e2566, 0x3cbd58d5, 0xbbef6ffc,
+ 0xbd371d7e, 0xbbbff778, 0xbbb5bfa0, 0xbcd3e25f, 0x39d358f2, 0x3d3548c7, 0xbca737e4, 0xbd4da672,
+ 0x3cf86838, 0xbd136f33, 0x39b7aa7c, 0x3c22494f, 0xbd0eaa07, 0xbd63b9df, 0xbc863071, 0xbca2df03,
+ 0xbc9f995d, 0xbd28a910, 0xba590554, 0xbd3aac37, 0x3c4a40ca, 0xbc2978aa, 0xbc27bc84, 0x3c6c83b0,
+ 0x3d163bb3, 0x3bc26371, 0x3d425773, 0xbc8388a0, 0xbcb0d0f0, 0x3d370c70, 0x3afc0da6, 0xbd028c4d,
+ 0x3ce816e7, 0xbcd1d255, 0x3b098a4e, 0x3d628742, 0xbc9f81ee, 0xbc9c5a12, 0x3d5a4f10, 0xbdc41c0f,
+ 0x3b7695cc, 0xbd5d9f4c, 0x3c89b015, 0x3b918ff2, 0x3d14ece5, 0x3cb7b600, 0x3c662584, 0xbc4ddab0,
+ 0xbb0432bb, 0xbbf6f460, 0xbcb366d9, 0xbb390563, 0x3d58e2fd, 0xbd792fa7, 0x3bb3c2df, 0xbb2a86b1,
+ 0xbd249b3c, 0x3d5a8896, 0x3ce486f1, 0x3caf7099, 0xbc977ecc, 0x3d4f2fae, 0x3bab897f, 0xbb5a7533,
+ 0xbd9b3413, 0xbc32d2f8, 0x3ccdbf47, 0xbc987bf6, 0xbb72feb5, 0x3d89d55d, 0xbcd36612, 0xbd547e4c,
+ 0x3bfcdd2e, 0xbd395bbb, 0x3cc01804, 0xbd6bb461, 0x3c67ed46, 0xbd67cb42, 0xbd05f823, 0x3a5a7118,
+ 0xbc4b44b8, 0xbc8f3d5d, 0xbcf4b2cb, 0x3cb5de3a, 0xbcdd4204, 0x3d307721, 0x3c8990f3, 0x3b11304e,
+ 0xbc4486f7, 0xbd184e30, 0x3c4b6364, 0x3c84b4c9, 0xbbf22857, 0xbdaa043d, 0x3c1eabd5, 0xbc8ac4aa,
+ 0x3cbc4145, 0x3d19c446, 0xbd31d3af, 0xbd857e98, 0xbcb2e1a2, 0x3b6fe1d1, 0x3ca137c8, 0x3c146ee7,
+ 0xbd2f39f1, 0xbd1e449d, 0x3be50d80, 0xbd545ee8, 0x3ccfa022, 0xbc964822, 0x3bddc1aa, 0x3cafc5c1,
+ 0xbcfb4cc2, 0x3c7d1438, 0xbd9c889c, 0xbd206a6c, 0x3d66281a, 0x3b977712, 0x3c71dce4, 0x3d102b07,
+ 0x3c4eed7a, 0xbd447d83, 0x3d2a4127, 0x3cff68ee, 0xbd7f0cee, 0x3cecdd47, 0xbcb265fd, 0xbb97e8f4,
+ 0x3dba8f8f, 0x3c749f5e, 0x3ccd6962, 0x3cc2faeb, 0x3c455378, 0xbd5bff16, 0xbd2f5242, 0xbd0d2fb4,
+ 0x398a28f0, 0xbc532269, 0xbd66bb98, 0x3d0020b8, 0x3d1f0373, 0x3cf38154, 0x3d2c5495, 0xbb153866,
+ 0xbd7adbd8, 0x3d812c2d, 0xb971f7ce, 0x3d42ab24, 0xbc51bbae, 0x3cf9deb7, 0xbc202e5a, 0xbd3803c5,
+ 0xbcd8ec93, 0x3d5d8560, 0xbc9ec90c, 0x3cc05ccd, 0xbc434472, 0xbd06453c, 0x3bb48b3c, 0x3b906f7b,
+ 0xbd2b9719, 0x3d1de6a2, 0xbd91a6c8, 0xbd080d76, 0xbd2472de, 0xbc94a7b8, 0x3c3b94bb, 0x3c56d96e,
+ 0xbd4a5960, 0x3ccefd74, 0x3be3f00a, 0x3c723b2e, 0x3b84657a, 0xbd615e0f, 0x3c9c52ae, 0xbc8f44db,
+ 0xbd131709, 0xbb217fbc, 0xbdfa5c3f, 0x3cab5e81, 0x3cc85456, 0xba8c1e9b, 0xbb028adb, 0xbc645f22,
+ 0xb8ee0459, 0xbcf150c6, 0x3c1df24a, 0xbd287bc9, 0xbca9a8d7, 0xbc6fc9f1, 0xba789521, 0xbcaf998f,
+ 0x3ce67ea9, 0x3bc3ce69, 0x39862458, 0xbc13c254, 0x3c840b56, 0xbced1e4e, 0xbd79225d, 0xbc897113,
+ 0x3c4565fc, 0x3c270027, 0xbd52a524, 0x3cdee7f9, 0x3cbaf88a, 0x3cd08e12, 0x3cb5a937, 0xbcde5323,
+ 0x3d501d2a, 0x3d5c783b, 0x3d038b41, 0xbbd4ce05, 0xbcd04d97, 0x39848ea5, 0xbcf3cb84, 0x3db010ce,
+ 0xbc69b0b9, 0x3d1c9309, 0x3c7bef05, 0xbbcf7afd, 0xbd0dc152, 0xbd21c522, 0x3d133c52, 0x3d0e8338,
+ 0xbd7b95a7, 0x3cf953c9, 0x3d891d35, 0x3cdfe31a, 0x3c0ef7dd, 0xbd044d7b, 0xbca33009, 0xbcf399c0,
+ 0x3d014c2f, 0xbb839d49, 0xbc83963e, 0x3d143a13, 0x3c7d1bbe, 0xbd71e902, 0xbd130cb8, 0xbb76b4a3,
+ 0x3d083688, 0xbd2102b4, 0x3cdec631, 0xbc7a9330, 0xbd286c60, 0xbd18edb1, 0xbc0338ca, 0x3b600a7f,
+ 0xbd1f2604, 0x3d98c88e, 0xbce02599, 0xbd1caa64, 0x3d53f68b, 0x3d224cd6, 0x3d3417c0, 0xbb3b4157,
+ 0xbd485efe, 0xbc5654b8, 0xbd81d38d, 0xbd3719fd, 0xbcdac198, 0x3d17bd19, 0x3c5e48ec, 0x3c8fba49,
+ 0x3ce2fb23, 0xbc4cda6d, 0xbb93049b, 0x3d28c533, 0xbc5c1ecf, 0xbcdd9514, 0xbd27b9f5, 0xbc553f75,
+ 0x3c0c1b73, 0xbd61b025, 0x3d56f5ed, 0xbd98ff81, 0xbd44a82d, 0xbcbf1541, 0xbd464fcb, 0x3c9a8fd7,
+ 0x3bc895b1, 0xbd227582, 0xbd62d4f8, 0xbd176e12, 0x3bea8b89, 0xba8be25a, 0x3bf5d4b5, 0x3cb93a5d,
+ 0x3c6e37ea, 0x3be9af06, 0x3cd9717c, 0x3d0b4cf8, 0xbc6ba0e6, 0xbd7fd004, 0x3da699ff, 0x3c8a5bb5,
+ 0x3c29a827, 0xbcb2879a, 0xbcb021cb, 0xbd3952f3, 0xbd0ab041, 0xbc61848e, 0x3d09cffb, 0xbc31aa95,
+ 0x3ce83cd6, 0x3ce1130b, 0xbc99da08, 0x3cb69b10, 0xbd3a625b, 0x3c53ab3f, 0xbc8bcdb6, 0xbd8093c7,
+ 0x3c2e3916, 0x3d5dc151, 0xbcc8aab1, 0x3c08b19c, 0x3d2ed0ae, 0xbca3f256, 0xbb966dc9, 0x3afa5aa5,
+ 0x3d9e63c7, 0xbcc42dc0, 0x3d81e67b, 0xbd173bd3, 0x3d295d4f, 0x3cf6ffe3, 0xbcc997cc, 0x3d55cdf4,
+ 0x3c04e9ea, 0x3d8c2cc5, 0xbcce1164, 0xbb9c472c, 0x3ca41ae5, 0x3b7d6fe8, 0x3c50fac6, 0x3cd8acbf,
+ 0xbcf88fe5, 0xbacf6aca, 0x3c467dda, 0x3d3a0ba6, 0x3cc4d8c0, 0xba53b12a, 0x3bd3afe0, 0xbdc6ec1d,
+ 0x3b234052, 0x3d0cf9cd, 0xbb510125, 0x3c70ce83, 0x3c033274, 0x3d34ce3a, 0xbc65af5c, 0x3db372e3,
+ 0xbc401a3c, 0xbcec0a27, 0xbcbb9761, 0x3cb04559, 0x3a378349, 0x3cbca52f, 0xbc8c03dc, 0xbd3e0f84,
+ 0x3c7f49e0, 0x3c9643be, 0x3bf1015f, 0x3aa2aba6, 0x3c914874, 0x3ba6ed95, 0x3d06c84d, 0xbcb1faea,
+ 0xbd094cb1, 0x3cbf548c, 0x3aa6ce77, 0x3d894001, 0x3bb42db8, 0x3acd46e3, 0x3d7d68b8, 0x3be14a79,
+ 0x3b3f5cef, 0x3cb57dbe, 0xbd0438d0, 0x3d052a20, 0xbc850965, 0xbab71148, 0xbcfb0b3d, 0x3bc50a6b,
+ 0x3b2d1ae3, 0x3cd645ad, 0x3d31291f, 0xbc15841d, 0x3d222933, 0xbcac9962, 0x3cbc9d75, 0xbc017ddf,
+ 0xbc895e33, 0xbd2700be, 0xbbcfda29, 0xbd2a68d2, 0x3ba61d60, 0xbd2598d1, 0xbba1ff83, 0x3b8a9375,
+ 0xbc8f4edb, 0x3ccd971a, 0xbd1b0f77, 0xbca6e7a5, 0x3c6533be, 0x3cb94f2d, 0x3d09378e, 0x3ac150e0,
+ 0xbcbb548d, 0x3d1501c1, 0x3c91adc6, 0xb9a2b0dd, 0xbc69a09d, 0x3c5f4c3d, 0xbd155b5c, 0x3db311d5,
+ 0x3c667cc6, 0xbd039071, 0x3ca40749, 0xbd8d3832, 0xbc9c478a, 0x3d2179ea, 0xbd6ee349, 0xbd6078f0,
+ 0xb8dcd698, 0x3cfe4925, 0xbcbca2b9, 0x3c68b738, 0x3c0549b8, 0x3c917a0a, 0x3c8dea1a, 0x3bbb9c70,
+ 0xbcbf1722, 0x3c2894f1, 0x3d895cfe, 0x3c2000d5, 0xbc748df4, 0x3d1d2a06, 0x3c3650eb, 0x3d175c7f,
+ 0x3d24fdc1, 0xbd26cf7e, 0x3bc53633, 0xbd1f93bf, 0x3ccb25a4, 0x3d1802ea, 0xbb57a4e5, 0xbc236461,
+ 0xbd929533, 0x3c99c1f6, 0xbad5c211, 0x3abcc7bd, 0x3d295686, 0xbccc7f93, 0x3cf27b8b, 0xbcbd8f0e,
+ 0xbc626450, 0xbb0e0fef, 0xbbcd99d9, 0xbd597fc0, 0x3ca42e6e, 0xbbfddef8, 0xbc588d6f, 0x3b27ef38,
+ 0x3c1da1af, 0x3cf584e6, 0xbd45c1d4, 0xbbc74435, 0xbbef5483, 0x3c2e7d56, 0x3cff223b, 0x3cd97643,
+ 0xbd012d7c, 0xbc36078f, 0x3c13bdb2, 0xbb64d460, 0x3b85f3d9, 0x3a707871, 0xbc0d6b8c, 0xbddb8fe6,
+ 0xbd19bf62, 0xbd26144d, 0xbd44c2f5, 0xbd8ac3cc, 0x3ba25614, 0x3cc068b8, 0xbd0fd2b4, 0x3db8e1f0,
+ 0x3d27330a, 0x3c6548a4, 0x3cbe2370, 0xbd9ed13d, 0x3c1642dc, 0x3d19c792, 0x3d4fe4df, 0x3d8882b2,
+ 0xbd4cc09b, 0xbd2a9810, 0xbcefed33, 0xbce2d096, 0x3d0f59fe, 0x3ca4ea48, 0xbca25ddb, 0xbc80f5ed,
+ 0x3b491912, 0xbc9dfa9c, 0x3c90ecfc, 0xbbf8921b, 0xbd790929, 0xbd714d47, 0xbd3f4b23, 0xbd133010,
+ 0x3d418532, 0xbb3862a9, 0x3989a9e9, 0x3c89f1dc, 0x3d0e4aa1, 0x3cd10092, 0xbd363ddc, 0xbc15ff46,
+ 0x3d2ed636, 0x3cab1cfc, 0xbd663c72, 0x3d36c607, 0x3a27e9ed, 0xbd30704a, 0x3d13a57b, 0x3d23decb,
+ 0x3cd2be81, 0x3ce90f12, 0xbb8f7411, 0x3c4f2c98, 0x3d048ce6, 0xbd4e3cf7, 0xbc206cc3, 0x3bd23d9a,
+ 0x3b2e4402, 0x3a899591, 0x3b7272b6, 0xbb55cfa9, 0xbc1a9edc, 0xbc552e65, 0x3c9121d2, 0xbd86e7c7,
+ 0x3c919f94, 0xbd59d497, 0xbcd2d4d5, 0xbd244434, 0xbc03b29d, 0x3ae9d4b8, 0x3aba2af5, 0x3d1edc7a,
+ 0x3dbcf340, 0xbc32a007, 0xbd12781c, 0xbd44b90d, 0x3c3e294c, 0xbc17e0fe, 0x3cfbc5fc, 0x3ddbcf7e,
+ 0xbd234b2d, 0xbd8b50b4, 0xbbef0a13, 0xbd479f3a, 0x3aa627c0, 0xbbe3719d, 0xbc70eefc, 0x3b13e18c,
+ 0xbd34d183, 0x3d060f4f, 0xb8d39df0, 0x3cb6a1d2, 0xbd15bdc9, 0xbadc58d8, 0xb9093252, 0xbc1639eb,
+ 0xbc8f7c4a, 0xbc1270e1, 0xbc2f3661, 0xbc2d3e07, 0x3c93bf5a, 0x3cd28e1f, 0xbd598425, 0x3d45be50,
+ 0x3d5fb349, 0xbcd5c289, 0xbd768187, 0xbc3daf4f, 0xbc93e173, 0x3c3e8c20, 0x3d1152dc, 0x3d164f1b,
+ 0x3c5c5bc0, 0x3c3b2f0f, 0xbc3d8bb3, 0xbc235c27, 0x3bd9712e, 0xbd754657, 0xbccbf16b, 0xbcc38afe,
+ 0x3d140032, 0xbc69f662, 0xbcd151a7, 0x3c3d2328, 0x3ca31030, 0x3c3d7c2a, 0x3d3ad9c8, 0xbccad27e,
+ 0xbd1e0ffc, 0x3bf196c4, 0x3b16302e, 0x3a4ff083, 0x3c16c44d, 0xbb5db0d4, 0x3c3cf2b5, 0xbd190a12,
+ 0x3c568452, 0xbc5342b3, 0x3d0cca74, 0xbc9cb87e, 0x3d0893d4, 0xba983e64, 0xba5ddad3, 0x3dc8c3b3,
+ 0xbd3baf80, 0xbbf20691, 0xbd28e4ba, 0xbd1497ed, 0x3b825856, 0xbd10ba24, 0x3d077df2, 0x3c83713e,
+ 0x3bdbce10, 0xbcefddf7, 0x3d3827d2, 0x3d218639, 0xbcc53e83, 0x3be3b779, 0x3ba31260, 0xbd184e65,
+ 0xbd39de12, 0xbd3bba95, 0xbb198208, 0x3cc116f3, 0xbc4b5920, 0x3d0be60b, 0xbd9e67af, 0x3c2cd3f2,
+ 0x3d87f7c1, 0x3d0b2a25, 0xbd4680ca, 0x3d61e93c, 0x3d22d2c2, 0xbc4a6723, 0xbbb3e3b8, 0xbcb27099,
+ 0xbcd119c2, 0xbcb41d90, 0x3cb05a41, 0xbd1fb14e, 0xbc8f2bbb, 0xbcfaf141, 0xbd9fb829, 0x3c261669,
+ 0x3d0a9b90, 0xbcb87d60, 0x3d58b66d, 0x3c59b07f, 0x3c3dfd24, 0xbbb4ba18, 0xbc636b51, 0x3d888d2a,
+ 0x3c6ceeeb, 0xbd1550c0, 0xbd1373f7, 0x39c958d7, 0x3a356782, 0xbc8539b2, 0x391a5635, 0x3c6d8ef1,
+ 0xbbc94b9e, 0x3d44e5b6, 0x3d04d5a5, 0x3c59cde7, 0xbc96d4ae, 0x3d2ab3fe, 0xbd356c27, 0xbb302bd3,
+ 0xbc3c5b1b, 0xbc0985c9, 0x3cdc5c53, 0x3c4384e1, 0x3cb0f396, 0xbcb25a93, 0x3cec822d, 0x3b90c0fd,
+ 0x3d04b08b, 0xbc33de6e, 0x3cf0b7db, 0xbc7be9d3, 0x3ceb297f, 0xbd331454, 0x3a3a4520, 0xbb94e424,
+ 0x3bc8b99e, 0x3bce1b44, 0xbb36444a, 0xbce33503, 0xbc50a5a9, 0xbd053b97, 0x3cb196b7, 0x3bca7857,
+ 0xbb1f0fc0, 0xbc1ba5a4, 0x3cd8ec45, 0xbd3658a3, 0x3c0f5342, 0x3d124dde, 0x3ce3289d, 0x3c9009ff,
+ 0x3d70464e, 0x3c9d243b, 0xbc8ef69d, 0x3d1341c3, 0x3cb2528f, 0xbbb20fda, 0xbb62d699, 0x3b9c3051,
+ 0x3c17ee6a, 0xbc1ffbdb, 0x3cfd92d7, 0x3c979e15, 0xbb3bdf1b, 0xbbebef3c, 0xbc42fa01, 0x3cb13b1d,
+ 0x3c7ff117, 0xbc85d51e, 0x3c973b4c, 0x3b85a6a9, 0xbbf10647, 0xbc6f752a, 0x3c06ee36, 0xbce43caa,
+ 0xbc51e1e3, 0x3cb9f465, 0x3c62f890, 0xbbb57635, 0xbc826955, 0x3d36a8f3, 0xbd2098d7, 0xbcb18ad5,
+ 0x3d05a9af, 0x3d411bfb, 0x3aadbad2, 0x3c860c1b, 0x3b676be1, 0xbcabed18, 0xbcb2b5d7, 0x3b9d7923,
+ 0x3cbe1c2b, 0x3ca3e9f8, 0xbc21555b, 0xbd5d2c2c, 0x3c88431c, 0xbcd8661a, 0x3b5eb071, 0x3bc4434f,
+ 0x3b81bf3d, 0xbca0a164, 0xbc8129dc, 0xbd138212, 0xbcb4fb6c, 0xbcb7c99f, 0x3da65688, 0x3c2af957,
+ 0xbd11c78f, 0xbcbcaaae, 0x3d952234, 0xbc5165e7, 0xbd68fecf, 0xbc8262ac, 0x3cb14e7c, 0x3cf52121,
+ 0xbd03ec0c, 0xbc3eff7f, 0x3bdd0118, 0x3bd0bb49, 0x3b40dc20, 0x3cf79f10, 0x3c789ada, 0xbbb635fe,
+ 0xb9b054af, 0x3cb20886, 0x3d2e2bd0, 0x3c3212cf, 0xbb8bacde, 0x3b461930, 0x3ca10553, 0x3c724493,
+ 0x3b91183f, 0xbca219b8, 0x3d3d1b27, 0xbc2a65f3, 0xbc0ead9a, 0xbc0dc855, 0xbc790a08, 0xbce26017,
+ 0xbcc03dea, 0xbc3fd622, 0x3c9d4427, 0xbcafbf22, 0xbc04f8d3, 0x3c5f3ac7, 0x3ade8f47, 0xbd077ec9,
+ 0x3c8938b5, 0x3d007fa8, 0x3c61114b, 0x3d3bd303, 0xbc8baa38, 0xbbffc860, 0xbc9ab67e, 0x3c4eb55b,
+ 0x3cdb63d2, 0x3ca3bf7d, 0x3d137947, 0xbd2802bb, 0xba4146af, 0xbccd5c37, 0xbcd013a1, 0x3c500b98,
+ 0xbc2a2e59, 0xbcf2deeb, 0xbc8f7f63, 0x3c78741e, 0xbbfcbfb0, 0xbc52b9ec, 0x3d6856b0, 0xbac27ab6,
+ 0xbcbd1be6, 0xbcc62c4d, 0x3d9abae4, 0x3ba1c4b2, 0xbd4432fd, 0xbcba4014, 0xbc1734dd, 0x3c11ba14,
+ 0x3c89cbb0, 0xbbeaae5d, 0xbb4f6664, 0xbd0c3997, 0xbca43dbb, 0x3b913098, 0x3c71fac9, 0x3c98f7a2
+};
+
+static const uint32_t _K28[] = {
+ 0x3e432132, 0xbd504b9e, 0x3ff4527d, 0xbedb1443, 0x3eb7e51a, 0x3d6facf4, 0xbe8fc8dd, 0xbf950fb3,
+ 0x3f4e1556, 0x3eb022d6, 0x3e33544d, 0x3db1cc34, 0x3fe91454, 0x3f1e210e, 0x3f892af1, 0x3f9b1554,
+ 0x3e0af21a, 0xbe3f104e, 0x3e78d74c, 0x3f5529ea, 0xbe046293, 0xc05e184d, 0xbf00e81d, 0x3f4683b1,
+ 0xbd45e638, 0x3d882f06, 0x3df4f91a, 0xbe307b8a, 0xbd8ed1a2, 0xbe978020, 0xbec3e540, 0x3f01ab4c,
+ 0x3f684796, 0x3fd53c76, 0x400a3cca, 0x3dc2996a, 0x3f270192, 0xbde635ad, 0xbf236ac5, 0xbf3bc6a7,
+ 0xbe45d2b8, 0x3f0c5e5d, 0x400e5450, 0x3f383104, 0xbf004371, 0x3ce27d70, 0xbe3abf01, 0x3fd23dcd,
+ 0x3e444512, 0xbdf4041e, 0xbfb5522e, 0x3f3c141d, 0x400396a9, 0x401aa704, 0x3f00f9c1, 0xc010ebc2,
+ 0xbf777e68, 0x3f16e69c, 0x3f3ab941, 0x3e94b3f2, 0xbdee1bfc, 0xbf626b5b, 0xc007afe3, 0x3f921aba
+};
+
+static const uint32_t _K34[] = {
+ 0xbd31ec33, 0xbeafce61, 0x3eab6332, 0x3ec822e9, 0x3e8b8e1d, 0xbd48de84, 0xbd6ba273, 0x3f029bf3,
+ 0xbe829fcd, 0x3e2ac8c8, 0xbeb7623b, 0xbdaf37ca, 0xbef0f959, 0xbf6c2ac7, 0x3e769209, 0xbe7e16c7,
+ 0x3f5bb65e, 0x3cedf373, 0xbda9f494, 0xbea1a822, 0xbe6a15c6, 0x3f11cc78, 0xbe075b54, 0x3d84dc86,
+ 0xbed92dc5, 0xbeee35f6, 0xbda9c92e, 0x3f01e7d0, 0xbde01e1b, 0xbe9d83fd, 0x3ecf8f03, 0x3e9ac082,
+ 0xbec316f1, 0xbcb0aded, 0x3ec5f7e2, 0xbe220a54, 0xbef656c0, 0x3e69c1f5, 0xbdcabf0b, 0x3d2d0b20,
+ 0x3e6ed89e, 0xbf7d0ae4, 0x3ea1cb36, 0xbf03761d, 0x3cb21cad, 0xbd667891, 0xbd33926e, 0x3e68c536,
+ 0xbec62286, 0xbca8adfb, 0x3ee29d41, 0xbe946d62, 0x3e0a421e, 0x3eb1844d, 0xbf19e9e8, 0x3f5bf8be,
+ 0x3efbb144, 0x3e37d1c5, 0xbeb7af40, 0xbde18d91, 0xbec47316, 0x3e1566ed, 0x3f2e3273, 0xbebad6e5,
+ 0x3e421f9f, 0xbeca98c0, 0x3e4a728a, 0xbf534e26, 0x3ee326b4, 0xbf628fc1, 0x3e507ce0, 0x3eaabbe1,
+ 0x3b406ae5, 0xbf1ee71a, 0x3f0a313a, 0xbed85669, 0x3ebbc5d8, 0xbf75fb7a, 0x3e4f9b59, 0xbea09277,
+ 0xbf509504, 0xbf50c99f, 0xbf1bd155, 0x3ea71491, 0xbf7345c3, 0x3f1bcb89, 0xbf3fce2c, 0x3ef75bae,
+ 0xbf42720e, 0xbf8d8a29, 0xbf03edd2, 0xbf94a8b0, 0x3f134719, 0xbf2fb2a1, 0xbe275c70, 0x3ead98cd,
+ 0xbece4dff, 0x3e448407, 0x3ebe89f0, 0xbeb47532, 0xbe0d7055, 0x3f2667b0, 0xbec1f643, 0x3e3beb8f,
+ 0xbf7791cc, 0xbe33097e, 0x3e3043e4, 0xbf38744e, 0x3f067dfb, 0xbf3b2b12, 0xbf40b082, 0xbedb5206,
+ 0x3dd80387, 0xbf688791, 0xbe89f925, 0x3e8f30e2, 0x3e93a68e, 0x3ee0f8bb, 0xbf502ab6, 0x3c1664b1,
+ 0x3ec5f9c7, 0x3e7f5fe9, 0xbf89fd17, 0x3f1d7a50, 0xbed185c8, 0xbc1837f5, 0xbd875213, 0x3da62b8c,
+ 0xbeab9751, 0xbe3d122e, 0xbed1a7b7, 0x3eb57f8f, 0x3eb308f8, 0x3f216045, 0x3f09a96e, 0xbf78ac3e,
+ 0xbf27b082, 0x3e42cefc, 0xbe66163c, 0x3eb3bfda, 0xbf424695, 0x3f3381a5, 0xbf486be1, 0xbf0c2957,
+ 0xbcc20052, 0x3eca9cd0, 0x3f104d2b, 0x3ebb3b99, 0x3f1b13b6, 0xbd785474, 0xbeefe4b6, 0xbfc11d2b,
+ 0x3b6df240, 0x3d963650, 0x3f1af17f, 0xbd83dede, 0xbb67c883, 0x3ed68536, 0x3de3e008, 0xbefb2330,
+ 0xbf290575, 0x3ed2d121, 0xbf46573d, 0xbec306c6, 0x3f89ec80, 0xbdead142, 0x3e76754e, 0x3edd90a2,
+ 0x3e727c7c, 0x3efc6702, 0xbdf02b18, 0x3ef3972b, 0x3ee614cf, 0xbe2065d2, 0x3db1c3fc, 0xbf42285b,
+ 0xbe50cb03, 0x3e632f98, 0xbec6188e, 0xbf80c59c, 0xbf180b4e, 0xbf6d85ea, 0x3eb8c684, 0xbe9a7ae6,
+ 0xbe01cf6e, 0xbf5ec250, 0xbe2c0559, 0xbf09a08f, 0xbf3a69f4, 0x3e8694ea, 0xbf17ebac, 0x3eadd3ad,
+ 0x3f13549c, 0x3f07e22d, 0xbdf7da2f, 0xbf5f353c, 0xbefbb195, 0x3d716e50, 0xbe997e20, 0xbeef69b7,
+ 0xbefd24d2, 0xbf3c6db2, 0xbdab17cd, 0x3da92e39, 0x3df18aa9, 0x3f3fcbda, 0xbf097081, 0xbef5d0c1,
+ 0xbf864acf, 0x3ea93a1a, 0x3edb5cb2, 0x3e815637, 0xbec9d9b1, 0xbf4b9b0a, 0x3ef346e3, 0x3e841e5f,
+ 0x3ed9ab51, 0x3e9e6265, 0xbf78430f, 0xbf828b16, 0x3ee61159, 0xbf60fc05, 0xbf069632, 0x3e936d87,
+ 0xbed116f7, 0xbefe3ee2, 0xbde3355f, 0x3f7dc256, 0x3e4f078b, 0xbed13d1a, 0xbea24f9a, 0xbf19523b,
+ 0x3ebda3e0, 0x3eb7013b, 0xbe7c7a43, 0x3ee5f3f9, 0xbf12253c, 0x3f0d235f, 0x3eee2db8, 0xbe098a84,
+ 0x3f2cada4, 0x3f01fa91, 0x3f1b2a5d, 0x3e85b1fb, 0x3e4c5df3, 0xbe13b6da, 0x3f399724, 0xbdd00667,
+ 0x3dd5f214, 0x3eaeefd3, 0xbf5b723b, 0xbe6721d1, 0x3da1081d, 0xbddcaf94, 0xbf0f53ce, 0x3de8e095,
+ 0xbf0ff85e, 0xbe5acb94, 0x3e37dd78, 0x3e9d1ded, 0xbd548880, 0xbeb2fe1f, 0xbf7d54de, 0xbf1ad382,
+ 0x3effce9a, 0x3f07f85e, 0xbe86cddf, 0xbeef82e3, 0xbe42ded0, 0xbdabebba, 0x3f062439, 0xbddeda92,
+ 0x3f15cea6, 0xbfdc5aef, 0xbfd087c4, 0xbf293174, 0x3d7a5a6a, 0x3e1b742e, 0xbf4f0995, 0x3b8706c1,
+ 0xbf8c8a1b, 0xbf837a2b, 0x3f09c73f, 0x3e10b5a4, 0xbc5bd712, 0x3f454299, 0xbeef05a8, 0xbedff80a,
+ 0x3ee6f377, 0x3e565ec9, 0x3e48932b, 0xbcbc251a, 0xbe988bfd, 0xbebef061, 0xbf9d407b, 0xbf21a574,
+ 0xbfdf560a, 0x3dcbceb5, 0x3e44daf3, 0xbf0012db, 0xbec23beb, 0xbf17f961, 0xbf946929, 0x3f1a2b05,
+ 0xbd5bda9e, 0xbfb01631, 0xbf3c34cf, 0x3ce1270a, 0x3ef206a5, 0x3e460a30, 0x3e0d7fb8, 0xbeb7ed1e,
+ 0xbe876539, 0xbc956d41, 0x3f3ed8df, 0xbee4a919, 0x3d8715af, 0xbfbd8033, 0x3f3bdd7c, 0x3e86544f,
+ 0xbf4beb93, 0x3ec2a2b0, 0xbf5ec85f, 0x3e192cd0, 0xbe9aacae, 0x3da26374, 0x3e9ef58f, 0x3e985180,
+ 0x3e0abcda, 0x3efcb9ce, 0xbe74b1c7, 0xbeb72d98, 0x3f34ad21, 0xbea88d16, 0x3e8c86d8, 0x3f59eca9,
+ 0x3e4fd8a0, 0x3e208369, 0x3d5d922d, 0xbee49d08, 0x3da78dd7, 0x3ee0eb0f, 0x3f0bf9c0, 0x3ed702c4,
+ 0x3f08a8be, 0x3e27b807, 0xbe9e591e, 0x3eeced85, 0xbf03ac6c, 0xbf04eb1f, 0x3e6630c4, 0xbf48b0d8,
+ 0x3f25d7b0, 0xbf5d5fcf, 0xbfaf843f, 0xbedc585e, 0xbf0e41a0, 0xbf295b9c, 0x3edf41cc, 0x3e4ed68f,
+ 0x3d9211d4, 0xbe709184, 0xbf90d7d2, 0x3e9ddf89, 0x3def142c, 0x3c9c207c, 0x3dfe38ef, 0x3f0b6bbc,
+ 0x3e64ab03, 0x3e585201, 0xbebc2832, 0xbe2693e1, 0xbf89080e, 0xbf542d2a, 0xbe8b53d1, 0x3e05be12,
+ 0xbf48e2a2, 0xbf532633, 0x3ea9d11c, 0x3f1baefe, 0x3f499b56, 0x3e6e2832, 0x3c8310f7, 0xbf41f782
+};
+
+static const uint32_t _K36[] = {
+ 0xbe766d41, 0x3ee48fe3, 0xbdafeef0, 0xbe468d3d, 0x3e3fb08b, 0xbd5e828e
+};
+
+// Memory mapped buffers
+#define _K12 ((float *)_K12) // f32[32,3,16] (6144 bytes)
+#define _K14 ((float *)_K14) // f32[32,3,32] (12288 bytes)
+#define _K17 ((float *)_K17) // f32[32] (128 bytes)
+#define _K23 ((float *)_K23) // f32[64,3,32] (24576 bytes)
+#define _K25 ((float *)_K25) // f32[64,3,64] (49152 bytes)
+#define _K28 ((float *)_K28) // f32[64] (256 bytes)
+#define _K34 ((float *)_K34) // f32[6,64] (1536 bytes)
+#define _K36 ((float *)_K36) // f32[6] (24 bytes)
+#define _K5 ((float *)_K5) // f32[16,3,3] (576 bytes)
+#define _K8 ((float *)_K8) // f32[16] (64 bytes)
+#define _K3 ((int8_t *)(_state + 0x00000000)) // s8[808] (808 bytes)
+#define _K10 ((float *)(_buffer + 0x00000000)) // f32[25,16] (1600 bytes)
+#define _K11 ((float *)(_buffer + 0x00000640)) // f32[25,32] (3200 bytes)
+#define _K13 ((float *)(_buffer + 0x000012c0)) // f32[25,32] (3200 bytes)
+#define _K15 ((float *)(_buffer + 0x00000000)) // f32[25,32] (3200 bytes)
+#define _K19 ((float *)(_buffer + 0x00000c80)) // f32[25,32] (3200 bytes)
+#define _K2 ((float *)(_buffer + 0x00000000)) // f32[50,3] (600 bytes)
+#define _K21 ((float *)(_buffer + 0x00000000)) // f32[12,32] (1536 bytes)
+#define _K22 ((float *)(_buffer + 0x00000600)) // f32[12,64] (3072 bytes)
+#define _K24 ((float *)(_buffer + 0x00001200)) // f32[12,64] (3072 bytes)
+#define _K26 ((float *)(_buffer + 0x00000000)) // f32[12,64] (3072 bytes)
+#define _K30 ((float *)(_buffer + 0x00000c00)) // f32[12,64] (3072 bytes)
+#define _K32 ((float *)(_buffer + 0x00000000)) // f32[6,64] (1536 bytes)
+#define _K33 ((float *)(_buffer + 0x00000600)) // f32[64] (256 bytes)
+#define _K35 ((float *)(_buffer + 0x00000000)) // f32[6] (24 bytes)
+#define _K37 ((float *)(_buffer + 0x00000018)) // f32[6] (24 bytes)
+#define _K4 ((float *)(_buffer + 0x00000258)) // f32[25,16] (1600 bytes)
+#define _K6 ((float *)(_buffer + 0x00000898)) // f32[25,16] (1600 bytes)
+
+// Represents a Circular Buffer
+// https://en.wikipedia.org/wiki/Circular_buffer
+typedef struct
+{
+ char *buf;
+ int size; // total bytes allocated in *buf
+ int used; // current bytes used in buffer.
+ int read;
+ int write;
+} cbuffer_t;
+
+#define CBUFFER_SUCCESS 0
+#define CBUFFER_NOMEM -1
+
+// Initializes a cbuffer handle with given memory and size.
+static inline void cbuffer_init(cbuffer_t *dest, void *mem, int size) {
+ dest->buf = mem;
+ dest->size = size;
+ dest->used = 0;
+ dest->read = 0;
+ dest->write = 0;
+}
+
+// Returns the number of free bytes in buffer.
+static inline int cbuffer_get_free(cbuffer_t *buf) {
+ return buf->size - buf->used;
+}
+
+// Returns the number of used bytes in buffer.
+static inline int cbuffer_get_used(cbuffer_t *buf) {
+ return buf->used;
+}
+
+// Writes given data to buffer.
+// Returns CBUFFER_SUCCESS or CBUFFER_NOMEM if out of memory.
+static inline int cbuffer_enqueue(cbuffer_t *buf, const void *data, int data_size) {
+ int free = cbuffer_get_free(buf);
+
+ // Out of memory?
+ if (free < data_size)
+ return CBUFFER_NOMEM;
+
+ // Is the data split in the end?
+ if (buf->write + data_size > buf->size) {
+ int first_size = buf->size - buf->write;
+ memcpy(buf->buf + buf->write, data, first_size);
+ memcpy(buf->buf, ((char *)data) + first_size, data_size - first_size);
+ }
+ else {
+ memcpy(buf->buf + buf->write, data, data_size);
+ }
+ buf->write += data_size;
+ if (buf->write >= buf->size)
+ buf->write -= buf->size;
+
+ buf->used += data_size;
+ return CBUFFER_SUCCESS;
+}
+
+// Advances the read pointer by given count.
+// Returns CBUFFER_SUCCESS on success or CBUFFER_NOMEM if count is more than available data
+static inline int cbuffer_advance(cbuffer_t *buf, int count) {
+ int used = cbuffer_get_used(buf);
+
+ if (count > used)
+ return CBUFFER_NOMEM;
+
+ buf->read += count;
+ if (buf->read >= buf->size)
+ buf->read -= buf->size;
+
+ // Reset pointers to 0 if buffer is empty in order to avoid unwanted wraps.
+ if (buf->read == buf->write) {
+ buf->read = 0;
+ buf->write = 0;
+ }
+
+ buf->used -= count;
+ return CBUFFER_SUCCESS;
+}
+
+// Reset instance (clear buffer)
+static inline void cbuffer_reset(cbuffer_t *buf) {
+ buf->read = 0;
+ buf->write = 0;
+ buf->used = 0;
+}
+
+// Copies given "count" bytes to the "dst" buffer without advancing the buffer read offset.
+// Returns CBUFFER_SUCCESS on success or CBUFFER_NOMEM if count is more than available data.
+static inline int cbuffer_copyto(cbuffer_t *buf, void *dst, int count, int offset) {
+
+ if (count > cbuffer_get_used(buf))
+ return CBUFFER_NOMEM;
+
+ int a0 = buf->read + offset;
+ if (a0 >= buf->size)
+ a0 -= buf->size;
+
+ int c0 = count;
+ if (a0 + c0 > buf->size)
+ c0 = buf->size - a0;
+
+ memcpy(dst, buf->buf + a0, c0);
+
+ int c1 = count - c0;
+
+ if (c1 > 0)
+ memcpy(((char *)dst) + c0, buf->buf, c1);
+
+ return CBUFFER_SUCCESS;
+}
+
+// Returns a read pointer at given offset and
+// updates *can_read_bytes (if not NULL) with the number of bytes that can be read.
+//
+// Note! Byte count written to can_read_bytes can be less than what cbuffer_get_used() returns.
+// This happens when the read has to be split in two since it's a circular buffer.
+static inline void *cbuffer_readptr(cbuffer_t* buf, int offset, int *can_read_bytes)
+{
+ int a0 = buf->read + offset;
+ if (a0 >= buf->size)
+ a0 -= buf->size;
+ if (can_read_bytes != NULL)
+ {
+ int c0 = buf->used;
+ if (a0 + c0 > buf->size)
+ c0 = buf->size - a0;
+
+ *can_read_bytes = c0;
+ }
+ return buf->buf + a0;
+}
+
+typedef struct {
+ cbuffer_t data_buffer; // Circular Buffer for features
+ int input_size; // Number of bytes in each input chunk
+ int window_count; // Number of input chunks in output window.
+} fixwin_t;
+
+#ifdef _MSC_VER
+static_assert(sizeof(fixwin_t) <= 64, "Data structure 'fixwin_t' is too big");
+#endif
+
+#define IPWIN_RET_SUCCESS 0
+#define IPWIN_RET_NODATA -1
+#define IPWIN_RET_NOMEM -2
+
+/*
+* Try to dequeue a window.
+*
+* @param handle Pointer to an initialized handle.
+* @param dst Pointer where to write window.
+* @param stride_count Number of items (of size handle->input_size) to stride window.
+* @return IPWIN_RET_SUCCESS (0) or IPWIN_RET_NODATA (-1) is no data is available.
+*/
+static inline int fixwin_dequeuef32(void* restrict handle, void* restrict dst, int stride_count)
+{
+ fixwin_t* fep = (fixwin_t*)handle;
+
+ const int stride_bytes = stride_count * fep->input_size;
+ const int size = fep->window_count * fep->input_size;
+ if (cbuffer_get_used(&fep->data_buffer) >= size) {
+ if (cbuffer_copyto(&fep->data_buffer, dst, size, 0) != 0)
+ return IPWIN_RET_NOMEM;
+
+ if (cbuffer_advance(&fep->data_buffer, stride_bytes) != 0)
+ return IPWIN_RET_NOMEM;
+
+ return IPWIN_RET_SUCCESS;
+ }
+ return IPWIN_RET_NODATA;
+}
+
+static inline float mac_f32(const float* restrict a, const float* restrict b, int count)
+{
+ float sum = 0;
+ for (int i = 0; i < count; i++) {
+ sum += *a++ * *b++;
+ }
+ return sum;
+}
+
+static inline void conv1d_flat_f32(
+ const float* restrict input,
+ const float* restrict weight,
+ float* restrict output,
+ int top,
+ int bottom,
+ int n_output_rows,
+ int filters,
+ int strides,
+ int kernel_size)
+{
+ for (int i = 0; i < n_output_rows; i++) {
+ const float* wp = weight; // Weight matrix
+ const float* bp = input; // Input matrix
+ const int step = i * strides; // Row size
+ int len = kernel_size; // Normally do one kernel
+
+ int skip = top - step; // Pad top?
+ if (skip > 0) {
+ len -= skip; // Trim kernel length
+ wp += skip; // Advance kernel
+ }
+ else { // No top padding,
+ bp -= skip; // Rollback input
+ }
+
+ skip = step + len - bottom; // Pad bottom?
+ if (skip > 0)
+ len -= skip; // Just cut the kernel at end
+
+ float* op = output + i * filters;
+ for (int j = 0; j < filters; j++) {
+ *op++ = mac_f32(wp + j * kernel_size, bp, len);
+ }
+ }
+}
+
+static inline void add_f32(
+ const float* restrict a,
+ const float* restrict b,
+ int l, int g1, int m, int g2, int r,
+ float* restrict output)
+{
+ int index = 0;
+ for (int x = 0; x < l; x++) {
+ for (int i = 0; i < g1; i++) {
+ for (int y = 0; y < m; y++) {
+ for (int j = 0; j < g2; j++) {
+ for (int z = 0; z < r; z++) {
+ output[index] = a[index] + b[x * m * r + y * r + z];
+ index++;
+ }
+ }
+ }
+ }
+ }
+}
+
+static inline void relu_f32(const float* restrict x, int count, float* restrict result)
+{
+ for (int i = 0; i < count; i++) {
+ const float value = *x++;
+ *result++ = value > 0 ? value : 0;
+ }
+}
+
+static inline float maxpool1d_f32_max(const float *restrict x, int ncols, int pool_size)
+{
+ float max = -FLT_MAX;
+ for (int i = 0; i < pool_size; i++) {
+ const float value = *(x + i * ncols);
+ if (value > max)
+ max = value;
+ }
+ return max;
+}
+
+static inline void maxpool1d_f32_row(const float* restrict x, int pool_size, int ncols, float* restrict result)
+{
+ for (int i = 0; i < ncols; i++) {
+ const float* xp = x + i;
+ *result++ = maxpool1d_f32_max(xp, ncols, pool_size);
+ }
+}
+
+static inline void maxpool1d_valid_f32(
+ const float* restrict input,
+ int pool_size,
+ int strides,
+ int ncols,
+ int n_output_rows,
+ float* restrict result)
+{
+ int input_pointer_step = ncols * strides;
+
+ for (int i = 0; i < n_output_rows; i++) {
+ const float* input_current = input + (i * input_pointer_step);
+ float* rp = result + (i * ncols);
+ maxpool1d_f32_row(input_current, pool_size, ncols, rp);
+ }
+}
+
+static inline float _globav1d_f32_mean(const float *restrict x, int nchannel, int nsteps)
+{
+ float mean = 0.0;
+ for (int i = 0; i < nsteps; i++) {
+ const float value = *(x + i * nchannel);
+ mean = mean + value;
+ }
+ mean = mean/(float)nsteps;
+ return mean;
+}
+
+static inline void globav1d_f32(const float *restrict x, int nsteps, int nchannel, float *restrict result)
+{
+ // Loop over all channels
+ for (int i = 0; i < nchannel; i++) {
+ const float* xp = x + i;
+ *result++ = _globav1d_f32_mean(xp, nchannel, nsteps);
+ }
+}
+
+static inline void dott_f32(const float *restrict a, const float *restrict b, float *restrict out, int d0, int d1, int d2)
+{
+ for (int i = 0; i < d2; i++) {
+ float* op = out;
+ for (int j = 0; j < d1; j++) {
+ *op++ = mac_f32(a + j * d0, b, d0);
+ }
+ out += d1;
+ b += d0;
+ }
+}
+
+static inline void softmax_f32(const float* restrict x, int count, float* restrict result)
+{
+ float sum = 0;
+ for (int i = 0; i < count; i++) {
+ float value = expf(x[i]);
+ sum += value;
+ result[i] = value;
+ }
+ for (int i = 0; i < count; i++) {
+ result[i] /= sum;
+ }
+}
+
+/**
+ * Enqueue handle->input_size values from given *data pointer to internal window buffer.
+ *
+ * @param handle Pointer to an initialized handle.
+ * @param data Data to enqueue.
+ * @return IPWIN_RET_SUCCESS (0) or IPWIN_RET_NOMEM (-2) if internal buffer is out of memory.
+ */
+static inline int fixwin_enqueuef32(void* restrict handle, const void* restrict data)
+{
+ fixwin_t* fep = (fixwin_t*)handle;
+
+ if (cbuffer_enqueue(&fep->data_buffer, data, fep->input_size) != 0)
+ return IPWIN_RET_NOMEM;
+
+ return IPWIN_RET_SUCCESS;
+}
+
+/**
+* Initializes a fixwin sampler handle.
+*
+* @param handle Pointer to a preallocated memory area of fixwin_handle_size() bytes to initialize.
+*
+* @param input_size Number of bytes to enqueue.
+* @param window_count Number of items (of size input_size) in each window
+*/
+static inline void fixwin_initf32(void* restrict handle, int input_size, int window_count)
+{
+ fixwin_t* fep = (fixwin_t*)handle;
+ fep->input_size = input_size;
+ fep->window_count = window_count;
+
+ char* mem = ((char*)handle) + sizeof(fixwin_t);
+
+ int data_buffer = input_size * window_count;
+
+ cbuffer_init(&fep->data_buffer, mem, data_buffer);
+}
+
+#define __RETURN_ERROR(_exp) do { int __ret = (_exp); if(__ret < 0) return __ret; } while(0)
+#define __RETURN_ERROR_BREAK_EMPTY(_exp) { int __ret = (_exp); if(__ret == -1) break; if(__ret < 0) return __ret; }
+
+int IMAI_dequeue(float *restrict data_out) {
+ __RETURN_ERROR(fixwin_dequeuef32(_K3, _K2, 10));
+ conv1d_flat_f32(_K2, _K5, _K4, 0, 150, 25, 16, 6, 9);
+ add_f32(_K4, _K8, 1, 1, 1, 25, 16, _K6);
+ relu_f32(_K6, 400, _K10);
+ conv1d_flat_f32(_K10, _K12, _K11, 16, 416, 25, 32, 16, 48);
+ conv1d_flat_f32(_K11, _K14, _K13, 32, 832, 25, 32, 32, 96);
+ add_f32(_K13, _K17, 1, 1, 1, 25, 32, _K15);
+ relu_f32(_K15, 800, _K19);
+ maxpool1d_valid_f32(_K19, 2, 2, 32, 12, _K21);
+ conv1d_flat_f32(_K21, _K23, _K22, 32, 416, 12, 64, 32, 96);
+ conv1d_flat_f32(_K22, _K25, _K24, 64, 832, 12, 64, 64, 192);
+ add_f32(_K24, _K28, 1, 1, 1, 12, 64, _K26);
+ relu_f32(_K26, 768, _K30);
+ maxpool1d_valid_f32(_K30, 2, 2, 64, 6, _K32);
+ globav1d_f32(_K32, 6, 64, _K33);
+ dott_f32(_K34, _K33, _K35, 64, 6, 1);
+ add_f32(_K35, _K36, 1, 1, 1, 1, 6, _K37);
+ softmax_f32(_K37, 6, data_out);
+ return 0;
+}
+
+int IMAI_enqueue(const float *restrict data_in) {
+ __RETURN_ERROR(fixwin_enqueuef32(_K3, data_in));
+ return 0;
+}
+
+void IMAI_init(void) {
+ fixwin_initf32(_K3, 12, 50);
+}
\ No newline at end of file
diff --git a/examples/usercimaimodule/imagimob/model.h b/examples/usercimaimodule/imagimob/model.h
new file mode 100644
index 0000000000000..f6491c8f5c678
--- /dev/null
+++ b/examples/usercimaimodule/imagimob/model.h
@@ -0,0 +1,360 @@
+/*
+* Imagimob Studio 5.0.1820+4321c8be86ece6ffb339e47f960600a022788a61
+* Copyright © 2023- Imagimob AB, All Rights Reserved.
+*
+* Generated at 08/20/2024 05:44:33 UTC. Any changes will be lost.
+*
+* Model ID ad879df4-9fed-4ba0-90d8-f6c78a5462e3
+*
+* Memory Size Efficiency
+* Buffers 8000 bytes (RAM) 80 %
+* State 808 bytes (RAM) 100 %
+* Readonly 94744 bytes (Flash) 100 %
+*
+* Backend tensorflow
+* Keras Version 2.15.0
+* Backend Model Type Sequential
+* Backend Model Name conv1d-medium-balanced-3
+*
+* Class Index | Symbol Label
+* 0 | unlabelled
+* 1 | standing
+* 2 | running
+* 3 | walking
+* 4 | sitting
+* 5 | jumping
+*
+* Layer Shape Type Function
+* Sliding Window (data points) [50,3] float dequeue
+* window_shape = [50,3]
+* stride = 30
+* buffer_multiplier = 2
+* Input Layer [50,3] float dequeue
+* shape = [50,3]
+* Convolution 1D [25,16] float dequeue
+* filters = 16
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 2
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,3,16]
+* Batch Normalization [25,16] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[16]
+* beta = float[16]
+* mean = float[16]
+* variance = float[16]
+* Activation [25,16] float dequeue
+* activation = relu
+* trainable = True
+* Convolution 1D [25,32] float dequeue
+* filters = 32
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,16,32]
+* Convolution 1D [25,32] float dequeue
+* filters = 32
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,32,32]
+* Batch Normalization [25,32] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[32]
+* beta = float[32]
+* mean = float[32]
+* variance = float[32]
+* Activation [25,32] float dequeue
+* activation = relu
+* trainable = True
+* Max pooling 1D [12,32] float dequeue
+* pool_size = 2
+* strides = 2
+* padding = valid
+* trainable = True
+* Convolution 1D [12,64] float dequeue
+* filters = 64
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,32,64]
+* Convolution 1D [12,64] float dequeue
+* filters = 64
+* kernel_size = 3
+* dilation_rate = 1
+* strides = 1
+* padding = same
+* activation = linear
+* use_bias = False
+* trainable = True
+* weight = float[3,64,64]
+* Batch Normalization [12,64] float dequeue
+* epsilon = 0.001
+* trainable = True
+* scale = True
+* center = True
+* axis = 2
+* gamma = float[64]
+* beta = float[64]
+* mean = float[64]
+* variance = float[64]
+* Activation [12,64] float dequeue
+* activation = relu
+* trainable = True
+* Max pooling 1D [6,64] float dequeue
+* pool_size = 2
+* strides = 2
+* padding = valid
+* trainable = True
+* Global average pooling 1D [64] float dequeue
+* trainable = True
+* Dense [6] float dequeue
+* units = 6
+* use_bias = True
+* activation = linear
+* trainable = True
+* weight = float[64,6]
+* bias = float[6]
+* Activation [6] float dequeue
+* activation = softmax
+* trainable = True
+*
+* Exported functions:
+*
+* int IMAI_dequeue(float *restrict data_out)
+* Description: Dequeue features. RET_SUCCESS (0) on success, RET_NODATA (-1) if no data is available, RET_NOMEM (-2) on internal memory error
+* Parameter data_out is Output of size float[6].
+*
+* int IMAI_enqueue(const float *restrict data_in)
+* Description: Enqueue features. Returns SUCCESS (0) on success, else RET_NOMEM (-2) when low on memory.
+* Parameter data_in is Input of size float[3].
+*
+* void IMAI_init(void)
+* Description: Initializes buffers to initial state. This function also works as a reset function.
+*
+*
+* Disclaimer:
+* The generated code relies on the optimizations done by the C compiler.
+* For example many for-loops of length 1 must be removed by the optimizer.
+* This can only be done if the functions are inlined and simplified.
+* Check disassembly if unsure.
+* tl;dr Compile using gcc with -O3 or -Ofast
+*/
+
+#ifndef _IMAI_MODEL_H_
+#define _IMAI_MODEL_H_
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include
+
+typedef struct {
+ char *name;
+ double TP; // True Positive or Correct Positive Prediction
+ double FN; // False Negative or Incorrect Negative Prediction
+ double FP; // False Positive or Incorrect Positive Prediction
+ double TN; // True Negative or Correct Negative Prediction
+ double TPR; // True Positive Rate or Sensitivity, Recall
+ double TNR; // True Negative Rate or Specificity, Selectivity
+ double PPV; // Positive Predictive Value or Precision
+ double NPV; // Negative Predictive Value
+ double FNR; // False Negative Rate or Miss Rate
+ double FPR; // False Positive Rate or Fall-Out
+ double FDR; // False Discovery Rate
+ double FOR; // False Omission Rate
+ double F1S; // F1 Score
+} IMAI_stats;
+
+/*
+* Tensorflow Test Set
+*
+* (ACC) Accuracy 87.442 %
+* (F1S) F1 Score 87.305 %
+*
+* Name of class (unlabelled) jumping running sitting standing walking
+* (TP) True Positive or Correct Positive Prediction 117 351 813 970 1757 1305
+* (FN) False Negative or Incorrect Negative Prediction 135 0 102 271 49 206
+* (FP) False Positive or Incorrect Positive Prediction 24 66 2 0 539 132
+* (TN) True Negative or Correct Negative Prediction 5800 5659 5159 4835 3731 4433
+* (TPR) True Positive Rate or Sensitivity, Recall 46.43 % 100.00 % 88.85 % 78.16 % 97.29 % 86.37 %
+* (TNR) True Negative Rate or Specificity, Selectivity 99.59 % 98.85 % 99.96 % 100.00 % 87.38 % 97.11 %
+* (PPV) Positive Predictive Value or Precision 82.98 % 84.17 % 99.75 % 100.00 % 76.52 % 90.81 %
+* (NPV) Negative Predictive Value 97.73 % 100.00 % 98.06 % 94.69 % 98.70 % 95.56 %
+* (FNR) False Negative Rate or Miss Rate 53.57 % 0.00 % 11.15 % 21.84 % 2.71 % 13.63 %
+* (FPR) False Positive Rate or Fall-Out 0.41 % 1.15 % 0.04 % 0.00 % 12.62 % 2.89 %
+* (FDR) False Discovery Rate 17.02 % 15.83 % 0.25 % 0.00 % 23.48 % 9.19 %
+* (FOR) False Omission Rate 2.27 % 0.00 % 1.94 % 5.31 % 1.30 % 4.44 %
+* (F1S) F1 Score 59.54 % 91.41 % 93.99 % 87.74 % 85.67 % 88.53 %
+*/
+
+
+#define IMAI_TEST_AVG_ACC 0.8744239631336406 // Accuracy
+#define IMAI_TEST_AVG_F1S 0.8730489003654032 // F1 Score
+
+#define IMAI_TEST_STATS { \
+ {name: "(unlabelled)", TP: 117, FN: 135, FP: 24, TN: 5800, TPR: 0.4642857142857, TNR: 0.9958791208791, PPV: 0.8297872340425, NPV: 0.9772535804549, FNR: 0.5357142857142, FPR: 0.0041208791208, FDR: 0.1702127659574, FOR: 0.0227464195450, F1S: 0.5954198473282, }, \
+ {name: "standing", TP: 1757, FN: 49, FP: 539, TN: 3731, TPR: 0.9728682170542, TNR: 0.8737704918032, PPV: 0.7652439024390, NPV: 0.9870370370370, FNR: 0.0271317829457, FPR: 0.1262295081967, FDR: 0.2347560975609, FOR: 0.0129629629629, F1S: 0.8566552901023, }, \
+ {name: "running", TP: 813, FN: 102, FP: 2, TN: 5159, TPR: 0.8885245901639, TNR: 0.9996124782018, PPV: 0.9975460122699, NPV: 0.9806120509408, FNR: 0.1114754098360, FPR: 0.0003875217981, FDR: 0.0024539877300, FOR: 0.0193879490591, F1S: 0.9398843930635, }, \
+ {name: "walking", TP: 1305, FN: 206, FP: 132, TN: 4433, TPR: 0.8636664460622, TNR: 0.9710843373493, PPV: 0.9081419624217, NPV: 0.9555938779909, FNR: 0.1363335539377, FPR: 0.0289156626506, FDR: 0.0918580375782, FOR: 0.0444061220090, F1S: 0.8853459972862, }, \
+ {name: "sitting", TP: 970, FN: 271, FP: 0, TN: 4835, TPR: 0.7816277195809, TNR: 1, PPV: 1, NPV: 0.9469251860556, FNR: 0.2183722804190, FPR: 0, FDR: 0, FOR: 0.0530748139443, F1S: 0.8774310266847, }, \
+ {name: "jumping", TP: 351, FN: 0, FP: 66, TN: 5659, TPR: 1, TNR: 0.9884716157205, PPV: 0.8417266187050, NPV: 1, FNR: 0, FPR: 0.0115283842794, FDR: 0.1582733812949, FOR: 0, F1S: 0.9140625, }, \
+}
+
+#ifdef IMAI_STATS_ENABLED
+static const IMAI_stats IMAI_test_stats[] = IMAI_TEST_STATS;
+#endif
+
+/*
+* Tensorflow Train Set
+*
+* (ACC) Accuracy 97.441 %
+* (F1S) F1 Score 97.278 %
+*
+* Name of class (unlabelled) jumping running sitting standing walking
+* (TP) True Positive or Correct Positive Prediction 477 3470 2643 4773 4614 4092
+* (FN) False Negative or Incorrect Negative Prediction 318 33 21 19 89 47
+* (FP) False Positive or Incorrect Positive Prediction 60 70 53 15 155 174
+* (TN) True Negative or Correct Negative Prediction 19741 17023 17879 15789 15738 16283
+* (TPR) True Positive Rate or Sensitivity, Recall 60.00 % 99.06 % 99.21 % 99.60 % 98.11 % 98.86 %
+* (TNR) True Negative Rate or Specificity, Selectivity 99.70 % 99.59 % 99.70 % 99.91 % 99.02 % 98.94 %
+* (PPV) Positive Predictive Value or Precision 88.83 % 98.02 % 98.03 % 99.69 % 96.75 % 95.92 %
+* (NPV) Negative Predictive Value 98.41 % 99.81 % 99.88 % 99.88 % 99.44 % 99.71 %
+* (FNR) False Negative Rate or Miss Rate 40.00 % 0.94 % 0.79 % 0.40 % 1.89 % 1.14 %
+* (FPR) False Positive Rate or Fall-Out 0.30 % 0.41 % 0.30 % 0.09 % 0.98 % 1.06 %
+* (FDR) False Discovery Rate 11.17 % 1.98 % 1.97 % 0.31 % 3.25 % 4.08 %
+* (FOR) False Omission Rate 1.59 % 0.19 % 0.12 % 0.12 % 0.56 % 0.29 %
+* (F1S) F1 Score 71.62 % 98.54 % 98.62 % 99.65 % 97.42 % 97.37 %
+*/
+
+
+#define IMAI_TRAIN_AVG_ACC 0.9744125072829676 // Accuracy
+#define IMAI_TRAIN_AVG_F1S 0.9727809277039343 // F1 Score
+
+#define IMAI_TRAIN_STATS { \
+ {name: "(unlabelled)", TP: 477, FN: 318, FP: 60, TN: 19741, TPR: 0.6, TNR: 0.9969698500075, PPV: 0.8882681564245, NPV: 0.9841467670372, FNR: 0.4, FPR: 0.0030301499924, FDR: 0.1117318435754, FOR: 0.0158532329627, F1S: 0.7162162162162, }, \
+ {name: "standing", TP: 4614, FN: 89, FP: 155, TN: 15738, TPR: 0.9810759089942, TNR: 0.9902472786761, PPV: 0.9674984273432, NPV: 0.9943766980476, FNR: 0.0189240910057, FPR: 0.0097527213238, FDR: 0.0325015726567, FOR: 0.0056233019523, F1S: 0.9742398648648, }, \
+ {name: "running", TP: 2643, FN: 21, FP: 53, TN: 17879, TPR: 0.9921171171171, TNR: 0.9970443899174, PPV: 0.9803412462908, NPV: 0.9988268156424, FNR: 0.0078828828828, FPR: 0.0029556100825, FDR: 0.0196587537091, FOR: 0.0011731843575, F1S: 0.9861940298507, }, \
+ {name: "walking", TP: 4092, FN: 47, FP: 174, TN: 16283, TPR: 0.9886446001449, TNR: 0.9894269915537, PPV: 0.9592123769338, NPV: 0.9971218616044, FNR: 0.0113553998550, FPR: 0.0105730084462, FDR: 0.0407876230661, FOR: 0.0028781383955, F1S: 0.9737061273051, }, \
+ {name: "sitting", TP: 4773, FN: 19, FP: 15, TN: 15789, TPR: 0.9960350584307, TNR: 0.9990508731966, PPV: 0.9968671679197, NPV: 0.9987980769230, FNR: 0.0039649415692, FPR: 0.0009491268033, FDR: 0.0031328320802, FOR: 0.0012019230769, F1S: 0.9964509394572, }, \
+ {name: "jumping", TP: 3470, FN: 33, FP: 70, TN: 17023, TPR: 0.9905795032829, TNR: 0.9959047563330, PPV: 0.9802259887005, NPV: 0.9980651969981, FNR: 0.0094204967170, FPR: 0.0040952436669, FDR: 0.0197740112994, FOR: 0.0019348030018, F1S: 0.9853755501916, }, \
+}
+
+#ifdef IMAI_STATS_ENABLED
+static const IMAI_stats IMAI_train_stats[] = IMAI_TRAIN_STATS;
+#endif
+
+/*
+* Tensorflow Validation Set
+*
+* (ACC) Accuracy 98.266 %
+* (F1S) F1 Score 98.225 %
+*
+* Name of class (unlabelled) jumping running sitting standing walking
+* (TP) True Positive or Correct Positive Prediction 165 232 1210 1564 521 1296
+* (FN) False Negative or Incorrect Negative Prediction 53 1 4 0 13 17
+* (FP) False Positive or Incorrect Positive Prediction 14 35 11 11 4 13
+* (TN) True Negative or Correct Negative Prediction 4844 4808 3851 3501 4538 3750
+* (TPR) True Positive Rate or Sensitivity, Recall 75.69 % 99.57 % 99.67 % 100.00 % 97.57 % 98.71 %
+* (TNR) True Negative Rate or Specificity, Selectivity 99.71 % 99.28 % 99.72 % 99.69 % 99.91 % 99.65 %
+* (PPV) Positive Predictive Value or Precision 92.18 % 86.89 % 99.10 % 99.30 % 99.24 % 99.01 %
+* (NPV) Negative Predictive Value 98.92 % 99.98 % 99.90 % 100.00 % 99.71 % 99.55 %
+* (FNR) False Negative Rate or Miss Rate 24.31 % 0.43 % 0.33 % 0.00 % 2.43 % 1.29 %
+* (FPR) False Positive Rate or Fall-Out 0.29 % 0.72 % 0.28 % 0.31 % 0.09 % 0.35 %
+* (FDR) False Discovery Rate 7.82 % 13.11 % 0.90 % 0.70 % 0.76 % 0.99 %
+* (FOR) False Omission Rate 1.08 % 0.02 % 0.10 % 0.00 % 0.29 % 0.45 %
+* (F1S) F1 Score 83.12 % 92.80 % 99.38 % 99.65 % 98.39 % 98.86 %
+*/
+
+
+#define IMAI_VALIDATION_AVG_ACC 0.9826635145784082 // Accuracy
+#define IMAI_VALIDATION_AVG_F1S 0.9822456227311898 // F1 Score
+
+#define IMAI_VALIDATION_STATS { \
+ {name: "(unlabelled)", TP: 165, FN: 53, FP: 14, TN: 4844, TPR: 0.7568807339449, TNR: 0.9971181556195, PPV: 0.9217877094972, NPV: 0.9891770471717, FNR: 0.2431192660550, FPR: 0.0028818443804, FDR: 0.0782122905027, FOR: 0.0108229528282, F1S: 0.8312342569269, }, \
+ {name: "standing", TP: 521, FN: 13, FP: 4, TN: 4538, TPR: 0.9756554307116, TNR: 0.9991193306913, PPV: 0.9923809523809, NPV: 0.9971434849483, FNR: 0.0243445692883, FPR: 0.0008806693086, FDR: 0.0076190476190, FOR: 0.0028565150516, F1S: 0.9839471199244, }, \
+ {name: "running", TP: 1210, FN: 4, FP: 11, TN: 3851, TPR: 0.9967051070840, TNR: 0.9971517348524, PPV: 0.9909909909909, NPV: 0.9989623865110, FNR: 0.0032948929159, FPR: 0.0028482651475, FDR: 0.0090090090090, FOR: 0.0010376134889, F1S: 0.9938398357289, }, \
+ {name: "walking", TP: 1296, FN: 17, FP: 13, TN: 3750, TPR: 0.9870525514089, TNR: 0.9965453095934, PPV: 0.9900687547746, NPV: 0.9954871250331, FNR: 0.0129474485910, FPR: 0.0034546904065, FDR: 0.0099312452253, FOR: 0.0045128749668, F1S: 0.9885583524027, }, \
+ {name: "sitting", TP: 1564, FN: 0, FP: 11, TN: 3501, TPR: 1, TNR: 0.9968678815489, PPV: 0.9930158730158, NPV: 1, FNR: 0, FPR: 0.0031321184510, FDR: 0.0069841269841, FOR: 0, F1S: 0.9964956992672, }, \
+ {name: "jumping", TP: 232, FN: 1, FP: 35, TN: 4808, TPR: 0.9957081545064, TNR: 0.9927730745405, PPV: 0.8689138576779, NPV: 0.9997920565606, FNR: 0.0042918454935, FPR: 0.0072269254594, FDR: 0.1310861423220, FOR: 0.0002079434393, F1S: 0.928, }, \
+}
+
+#ifdef IMAI_STATS_ENABLED
+static const IMAI_stats IMAI_validation_stats[] = IMAI_VALIDATION_STATS;
+#endif
+
+#define IMAI_API_QUEUE
+
+// All symbols in order
+#define IMAI_SYMBOL_MAP {"unlabelled", "standing", "running", "walking", "sitting", "jumping"}
+
+// Model GUID (16 bytes)
+#define IMAI_MODEL_ID {0xf4, 0x9d, 0x87, 0xad, 0xed, 0x9f, 0xa0, 0x4b, 0x90, 0xd8, 0xf6, 0xc7, 0x8a, 0x54, 0x62, 0xe3}
+
+// First nibble is bit encoding, second nibble is number of bytes
+#define IMAGINET_TYPES_NONE (0x0)
+#define IMAGINET_TYPES_FLOAT32 (0x14)
+#define IMAGINET_TYPES_FLOAT64 (0x18)
+#define IMAGINET_TYPES_INT8 (0x21)
+#define IMAGINET_TYPES_INT16 (0x22)
+#define IMAGINET_TYPES_INT32 (0x24)
+#define IMAGINET_TYPES_INT64 (0x28)
+#define IMAGINET_TYPES_QDYN8 (0x31)
+#define IMAGINET_TYPES_QDYN16 (0x32)
+#define IMAGINET_TYPES_QDYN32 (0x34)
+
+// data_in [3] (12 bytes)
+#define IMAI_DATA_IN_COUNT (3)
+#define IMAI_DATA_IN_TYPE float
+#define IMAI_DATA_IN_TYPE_ID IMAGINET_TYPES_FLOAT32
+#define IMAI_DATA_IN_SCALE (1)
+#define IMAI_DATA_IN_OFFSET (0)
+#define IMAI_DATA_IN_IS_QUANTIZED (0)
+
+// data_out [6] (24 bytes)
+#define IMAI_DATA_OUT_COUNT (6)
+#define IMAI_DATA_OUT_TYPE float
+#define IMAI_DATA_OUT_TYPE_ID IMAGINET_TYPES_FLOAT32
+#define IMAI_DATA_OUT_SCALE (1)
+#define IMAI_DATA_OUT_OFFSET (0)
+#define IMAI_DATA_OUT_IS_QUANTIZED (0)
+
+#define IMAI_KEY_MAX (39)
+
+
+
+// Return codes
+#define IMAI_RET_SUCCESS 0
+#define IMAI_RET_NODATA -1
+#define IMAI_RET_NOMEM -2
+
+// Exported methods
+int IMAI_dequeue(float *restrict data_out);
+int IMAI_enqueue(const float *restrict data_in);
+void IMAI_init(void);
+
+#endif /* _IMAI_MODEL_H_ */
\ No newline at end of file
diff --git a/extmod/machine_i2c.c b/extmod/machine_i2c.c
index bddf77529996d..713cef59d9d77 100644
--- a/extmod/machine_i2c.c
+++ b/extmod/machine_i2c.c
@@ -319,6 +319,17 @@ static mp_obj_t machine_i2c_init(size_t n_args, const mp_obj_t *args, mp_map_t *
}
MP_DEFINE_CONST_FUN_OBJ_KW(machine_i2c_init_obj, 1, machine_i2c_init);
+static mp_obj_t machine_i2c_deinit(mp_obj_t self_in) {
+ mp_obj_base_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_machine_i2c_p_t *i2c_p = (mp_machine_i2c_p_t *)MP_OBJ_TYPE_GET_SLOT(self->type, protocol);
+ if (i2c_p->deinit == NULL) {
+ mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("I2C operation not supported"));
+ }
+ i2c_p->deinit(self);
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_1(machine_i2c_deinit_obj, machine_i2c_deinit);
+
static mp_obj_t machine_i2c_scan(mp_obj_t self_in) {
mp_obj_base_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_t list = mp_obj_new_list(0, NULL);
@@ -633,6 +644,7 @@ static MP_DEFINE_CONST_FUN_OBJ_KW(machine_i2c_writeto_mem_obj, 1, machine_i2c_wr
static const mp_rom_map_elem_t machine_i2c_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_i2c_init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_i2c_deinit_obj) },
{ MP_ROM_QSTR(MP_QSTR_scan), MP_ROM_PTR(&machine_i2c_scan_obj) },
// primitive I2C operations
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 4b1c1b8f3a5ec..a8c0ad11d4f4e 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -1724,6 +1724,23 @@ static MP_DEFINE_CONST_OBJ_TYPE(
locals_dict, &lwip_socket_locals_dict
);
+/******************************************************************************/
+// Support functions for memory protection. lwIP has its own memory management
+// routines for its internal structures, and since they might be called in
+// interrupt handlers, they need some protection.
+
+// These functions are to be provided by the operating system.
+// In case of no operating system, the following default ones provided.
+#if NO_SYS
+sys_prot_t sys_arch_protect() {
+ return (sys_prot_t)MICROPY_BEGIN_ATOMIC_SECTION();
+}
+
+void sys_arch_unprotect(sys_prot_t state) {
+ MICROPY_END_ATOMIC_SECTION((mp_uint_t)state);
+}
+#endif
+
/******************************************************************************/
// Polling callbacks for the interfaces connected to lwIP. Right now it calls
// itself a "list" but isn't; we only support a single interface.
diff --git a/extmod/modmachine.h b/extmod/modmachine.h
index ef507aca7408c..89becebdb84c8 100644
--- a/extmod/modmachine.h
+++ b/extmod/modmachine.h
@@ -157,6 +157,7 @@ typedef struct _mp_machine_i2c_p_t {
bool transfer_supports_write1;
#endif
void (*init)(mp_obj_base_t *obj, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args);
+ void (*deinit)(mp_obj_base_t *obj);
int (*start)(mp_obj_base_t *obj);
int (*stop)(mp_obj_base_t *obj);
int (*read)(mp_obj_base_t *obj, uint8_t *dest, size_t len, bool nack);
diff --git a/lib/mpy-test-ext b/lib/mpy-test-ext
new file mode 160000
index 0000000000000..14d01cc3fd814
--- /dev/null
+++ b/lib/mpy-test-ext
@@ -0,0 +1 @@
+Subproject commit 14d01cc3fd8142d2432d18be85f6c9854138425c
diff --git a/lib/mtb-psoc6-libs b/lib/mtb-psoc6-libs
new file mode 160000
index 0000000000000..ae6b5d031b5ba
--- /dev/null
+++ b/lib/mtb-psoc6-libs
@@ -0,0 +1 @@
+Subproject commit ae6b5d031b5ba77052e8a1d1d76a367134bbcf4e
diff --git a/ports/nrf/modules/os/microbitfs.c b/ports/nrf/modules/os/microbitfs.c
index f549e6f32edfe..d2bc48b5ed95a 100644
--- a/ports/nrf/modules/os/microbitfs.c
+++ b/ports/nrf/modules/os/microbitfs.c
@@ -69,8 +69,8 @@
* Writing to files relies on the persistent API which is high-level wrapper on top of the Nordic SDK.
*/
-#define CHUNK_SIZE (1<>MBFS_LOG_CHUNK_SIZE;
+ first_page_index = (_fs_end - start) / FLASH_PAGESIZE;
+ chunks_in_file_system = (end - start) >> MBFS_LOG_CHUNK_SIZE;
}
static void randomise_start_index(void) {
@@ -178,7 +178,7 @@ void microbit_filesystem_init(void) {
randomise_start_index();
file_chunk *base = first_page();
if (base->marker == PERSISTENT_DATA_MARKER) {
- file_system_chunks = &base[(FLASH_PAGESIZE>>MBFS_LOG_CHUNK_SIZE)-1];
+ file_system_chunks = &base[(FLASH_PAGESIZE >> MBFS_LOG_CHUNK_SIZE) - 1];
} else if (((file_chunk *)last_page())->marker == PERSISTENT_DATA_MARKER) {
file_system_chunks = &base[-1];
} else {
@@ -192,10 +192,10 @@ static void copy_page(void *dest, void *src) {
flash_page_erase((uint32_t)dest);
file_chunk *src_chunk = src;
file_chunk *dest_chunk = dest;
- uint32_t chunks = FLASH_PAGESIZE>>MBFS_LOG_CHUNK_SIZE;
+ uint32_t chunks = FLASH_PAGESIZE >> MBFS_LOG_CHUNK_SIZE;
for (uint32_t i = 0; i < chunks; i++) {
if (src_chunk[i].marker != FREED_CHUNK) {
- flash_write_bytes((uint32_t)&dest_chunk[i], (uint8_t*)&src_chunk[i], CHUNK_SIZE);
+ flash_write_bytes((uint32_t)&dest_chunk[i], (uint8_t *)&src_chunk[i], CHUNK_SIZE);
}
}
}
@@ -229,28 +229,30 @@ static void filesystem_sweep(void) {
step = -page_size;
}
while (page != end_page) {
- uint8_t *next_page = page+step;
+ uint8_t *next_page = page + step;
flash_page_erase((uint32_t)page);
copy_page(page, next_page);
page = next_page;
}
flash_page_erase((uint32_t)end_page);
- flash_write_bytes((uint32_t)end_page, (uint8_t*)&config, sizeof(config));
+ flash_write_bytes((uint32_t)end_page, (uint8_t *)&config, sizeof(config));
microbit_filesystem_init();
}
static inline byte *seek_address(file_descriptor_obj *self) {
- return (byte*)&(file_system_chunks[self->seek_chunk].data[self->seek_offset]);
+ return (byte *)&(file_system_chunks[self->seek_chunk].data[self->seek_offset]);
}
static uint8_t microbit_find_file(const char *name, int name_len) {
for (uint8_t index = 1; index <= chunks_in_file_system; index++) {
const file_chunk *p = &file_system_chunks[index];
- if (p->marker != FILE_START)
+ if (p->marker != FILE_START) {
continue;
- if (p->header.name_len != name_len)
+ }
+ if (p->header.name_len != name_len) {
continue;
+ }
if (memcmp(name, &p->header.filename[0], name_len) == 0) {
DEBUG(("FILE DEBUG: File found. index %d\r\n", index));
return index;
@@ -279,13 +281,15 @@ static uint8_t find_chunk_and_erase(void) {
return index;
}
index++;
- if (index == chunks_in_file_system+1) index = 1;
+ if (index == chunks_in_file_system + 1) {
+ index = 1;
+ }
} while (index != start_index);
// Search for FREED page, and total up FREED chunks
uint32_t freed_chunks = 0;
index = start_index;
- uint32_t chunks_per_page = FLASH_PAGESIZE>>MBFS_LOG_CHUNK_SIZE;
+ uint32_t chunks_per_page = FLASH_PAGESIZE >> MBFS_LOG_CHUNK_SIZE;
do {
const file_chunk *p = &file_system_chunks[index];
if (p->marker == FREED_CHUNK) {
@@ -294,8 +298,9 @@ static uint8_t find_chunk_and_erase(void) {
if (FLASH_IS_PAGE_ALIGNED(p)) {
uint32_t i;
for (i = 0; i < chunks_per_page; i++) {
- if (p[i].marker != FREED_CHUNK)
+ if (p[i].marker != FREED_CHUNK) {
break;
+ }
}
if (i == chunks_per_page) {
DEBUG(("FILE DEBUG: Found freed page of chunks: %d\r\n", index));
@@ -304,7 +309,9 @@ static uint8_t find_chunk_and_erase(void) {
}
}
index++;
- if (index == chunks_in_file_system+1) index = 1;
+ if (index == chunks_in_file_system + 1) {
+ index = 1;
+ }
} while (index != start_index);
DEBUG(("FILE DEBUG: %lu free chunks\r\n", freed_chunks));
if (freed_chunks == 0) {
@@ -346,7 +353,7 @@ static file_descriptor_obj *microbit_file_open(const char *name, size_t name_len
}
flash_write_byte((uint32_t)&(file_system_chunks[index].marker), FILE_START);
flash_write_byte((uint32_t)&(file_system_chunks[index].header.name_len), name_len);
- flash_write_bytes((uint32_t)&(file_system_chunks[index].header.filename[0]), (uint8_t*)name, name_len);
+ flash_write_bytes((uint32_t)&(file_system_chunks[index].header.filename[0]), (uint8_t *)name, name_len);
} else {
if (index == FILE_NOT_FOUND) {
return NULL;
@@ -359,7 +366,7 @@ static file_descriptor_obj *microbit_file_descriptor_new(uint8_t start_chunk, bo
file_descriptor_obj *res = mp_obj_malloc(file_descriptor_obj, binary ? &os_mbfs_fileio_type : &os_mbfs_textio_type);
res->start_chunk = start_chunk;
res->seek_chunk = start_chunk;
- res->seek_offset = file_system_chunks[start_chunk].header.name_len+2;
+ res->seek_offset = file_system_chunks[start_chunk].header.name_len + 2;
res->writable = write;
res->open = true;
res->binary = binary;
@@ -421,14 +428,14 @@ static mp_uint_t microbit_file_read(mp_obj_t obj, void *buf, mp_uint_t size, int
if (end_offset == UNUSED_CHUNK) {
to_read = 0;
} else {
- to_read = MIN(to_read, (mp_uint_t)end_offset-self->seek_offset);
+ to_read = MIN(to_read, (mp_uint_t)end_offset - self->seek_offset);
}
}
- to_read = MIN(to_read, size-bytes_read);
+ to_read = MIN(to_read, size - bytes_read);
if (to_read == 0) {
break;
}
- memcpy(data+bytes_read, seek_address(self), to_read);
+ memcpy(data + bytes_read, seek_address(self), to_read);
advance(self, to_read, false);
bytes_read += to_read;
}
@@ -485,7 +492,7 @@ static mp_obj_t microbit_file_size(mp_obj_t filename) {
}
mp_uint_t len = 0;
uint8_t end_offset = file_system_chunks[chunk].header.end_offset;
- uint8_t offset = file_system_chunks[chunk].header.name_len+2;
+ uint8_t offset = file_system_chunks[chunk].header.name_len + 2;
while (file_system_chunks[chunk].next_chunk != UNUSED_CHUNK) {
len += DATA_PER_CHUNK - offset;
chunk = file_system_chunks[chunk].next_chunk;
@@ -516,8 +523,8 @@ mp_lexer_t *os_mbfs_new_reader(const char *filename) {
}
mp_reader_t reader;
reader.data = fd;
- reader.readbyte = (mp_uint_t(*)(void*))file_read_byte;
- reader.close = (void(*)(void*))microbit_file_close; // no-op
+ reader.readbyte = (mp_uint_t (*)(void *))file_read_byte;
+ reader.close = (void (*)(void *))microbit_file_close; // no-op
return mp_lexer_new(qstr_from_str(filename), reader);
}
@@ -531,13 +538,13 @@ mp_import_stat_t os_mbfs_import_stat(const char *path) {
}
static mp_obj_t os_mbfs_file_name(mp_obj_t self) {
- file_descriptor_obj *fd = (file_descriptor_obj*)self;
+ file_descriptor_obj *fd = (file_descriptor_obj *)self;
return microbit_file_name(fd);
}
static MP_DEFINE_CONST_FUN_OBJ_1(os_mbfs_file_name_obj, os_mbfs_file_name);
static mp_obj_t os_mbfs_file_close(mp_obj_t self) {
- file_descriptor_obj *fd = (file_descriptor_obj*)self;
+ file_descriptor_obj *fd = (file_descriptor_obj *)self;
microbit_file_close(fd);
return mp_const_none;
}
diff --git a/ports/psoc6/Makefile b/ports/psoc6/Makefile
new file mode 100644
index 0000000000000..4cdaafb0af51a
--- /dev/null
+++ b/ports/psoc6/Makefile
@@ -0,0 +1,287 @@
+MTB_LIBS_DIR = ../../lib/mtb-psoc6-libs
+include mpconfigport.mk
+-include $(MTB_LIBS_DIR)/mtb-bsp-setup.mk
+
+# The only target allowed to run without BOARD defined is 'submodules' or 'help'
+ifeq ($(BOARD),)
+ ifneq ($(filter $(MAKECMDGOALS),submodules help),$(MAKECMDGOALS))
+ $(error No active board is set. Run "make BOARD=" to initialize the ModusToolbox libraries and set the active board. )
+ endif
+endif
+
+BUILD ?= build-$(BOARD)
+
+# Files that are generated and needed before the QSTR build.
+QSTR_GENERATED_HEADERS =$(BUILD)/pins_qstr.h
+# qstr definitions (must come before including py.mk)
+QSTR_DEFS = qstrdefsport.h $(QSTR_GENERATED_HEADERS)
+QSTR_GLOBAL_DEPENDENCIES += $(BOARD_DIR)/mpconfigboard.h $(QSTR_GENERATED_HEADERS)
+
+MICROPY_FROZEN_MANIFEST = $(BOARD_DIR)/manifest.py
+FROZEN_MANIFEST = $(MICROPY_FROZEN_MANIFEST)
+
+ifneq ($(FROZEN_MANIFEST),)
+ CFLAGS += -DMICROPY_QSTR_EXTRA_POOL=mp_qstr_frozen_const_pool
+ CFLAGS += -DMICROPY_MODULE_FROZEN_MPY=1
+ CFLAGS += -DMICROPY_MODULE_FROZEN_STR=1
+endif
+
+
+CROSS_COMPILE ?= arm-none-eabi-
+CONFIG ?= Debug
+
+# include py core make definitions
+include ../../py/mkenv.mk
+-include $(BOARD_DIR)/mpconfigboard.mk
+include $(TOP)/py/py.mk
+include $(TOP)/extmod/extmod.mk
+
+GIT_SUBMODULES += lib/mtb-psoc6-libs lib/mpy-test-ext
+
+INC += -I.
+INC += -I$(TOP)
+INC += -I$(BUILD)
+
+ifeq ($(MICROPY_PSOC6_LWIP),1)
+ INC += -Ilwip_inc
+endif
+
+LD = arm-none-eabi-gcc
+CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -msoft-float -fsingle-precision-constant -Wdouble-promotion -Wfloat-conversion -UMICROPY_USE_INTERNAL_PRINTF -Wno-error=float-conversion
+
+# std=c11 instead of std=c99 : provides "static_assert" (not available in c99)
+# -D_XOPEN_SOURCE=700 : makes sure the setenv/unsetenv headers are included
+CFLAGS += $(INC) -Wall -Werror -std=c11 $(CFLAGS_CORTEX_M4) $(COPT) -D_XOPEN_SOURCE=700
+CFLAGS += -Wno-error=double-promotion -Wno-error=overflow -Wno-error=analyzer-null-dereference -Wno-error=unused-local-typedefs -Wno-error=unused-function -Wno-error=maybe-uninitialized
+
+ifeq ($(MICROPY_PSOC6_SSL_MBEDTLS),1)
+ INC += -I$(TOP)/extmod/mbedtls
+ CFLAGS += -DMBEDTLS_CONFIG_FILE=\"mbedtls/mbedtls_config.h\"
+ CFLAGS += -DMICROPY_SSL_MBEDTLS=1
+endif
+
+LDFLAGS += -Wl,--cref -Wl,--gc-sections
+LDFLAGS += -Wl,-Map,$(BUILD)/firmware.map -Wl,--start-group -Wl,--end-group -Wl,--print-memory-usage
+
+
+# Tune for Debugging or Optimization
+ifeq ($(CONFIG), Debug)
+ CFLAGS += -O0 -ggdb
+ MPY_MTB_CONFIG = Debug
+ MICROPY_ROM_TEXT_COMPRESSION ?= 0
+else
+ CFLAGS += -O3 -Os -DNDEBUG
+ CFLAGS += -fdata-sections -ffunction-sections
+ MPY_MTB_CONFIG = Release
+ MICROPY_ROM_TEXT_COMPRESSION ?= 1
+endif
+
+$(info Compiling in $(CONFIG) mode !)
+
+#ToDo: Post adding af functionality, refactor to minimize dependent variables in py script if possible
+GEN_PINS_SRC := $(BUILD)/pins_$(BOARD).c
+HEADER_BUILD := $(BUILD)/genhdr
+GEN_PINS_HDR := $(BUILD)/genhdr/pins.h
+GEN_PINS_QSTR := $(BUILD)/pins_qstr.h
+
+GENERATED_PINS = $(GEN_PINS_SRC) $(GEN_PINS_HDR) $(GEN_PINS_QSTR)
+
+$(GENERATED_PINS):
+ @echo "Generating $@"
+ $(MKDIR) -p $(BUILD)/genhdr
+ $(PYTHON) boards/make-pins.py --gen-pin-for $(PIN_PACKAGE_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) > $(GEN_PINS_SRC)
+
+# Flags for optional C++ source code
+CXXFLAGS += $(filter-out -std=c99,$(CFLAGS))
+CXXFLAGS += $(CXXFLAGS_MOD)
+
+LDFLAGS += $(LDFLAGS_MOD)
+
+LIBS +=
+
+SHARED_SRC_C += $(addprefix shared/,\
+ readline/readline.c \
+ \
+ runtime/gchelper_native.c \
+ runtime/interrupt_char.c \
+ runtime/pyexec.c \
+ runtime/mpirq.c\
+ runtime/stdout_helpers.c \
+ runtime/sys_stdio_mphal.c \
+ timeutils/timeutils.c \
+ )
+
+ifeq ($(MICROPY_PSOC6_LWIP),1)
+ SHARED_SRC_C += $(addprefix shared/,\
+ netutils/dhcpserver.c \
+ netutils/netutils.c \
+ netutils/trace.c \
+ )
+ MOD_SRC_C += modsocket.c
+endif
+
+DRIVERS_SRC_C += $(addprefix drivers/,\
+ bus/softspi.c \
+ )
+
+MOD_SRC_C += \
+ modgc.c \
+ \
+ machine_i2c.c \
+ machine_pin_phy.c \
+ machine_pin.c \
+ machine_rtc.c \
+ machine_spi.c \
+ machine_timer.c \
+ machine_adc.c \
+ machine_adcblock.c \
+ machine_bitstream.c\
+ machine_pdm_pcm.c\
+ \
+ modpsoc6.c \
+ psoc6_fatfs.c \
+ psoc6_flash.c
+
+ifeq ($(MICROPY_PY_EXT_FLASH),1)
+ CFLAGS += -DMICROPY_ENABLE_EXT_QSPI_FLASH=1
+ MOD_SRC_C += psoc6_qspi_flash.c
+endif
+
+ifeq ($(MICROPY_PY_SD_CARD),1)
+ CFLAGS += -DMICROPY_ENABLE_SD_CARD=1
+ MOD_SRC_C += machine_sdcard.c
+endif
+
+ifeq ($(MICROPY_PY_NETWORK_IFX_WCM),1)
+CFLAGS += -DMICROPY_PY_NETWORK=1 -DMICROPY_PY_NETWORK_IFX_WCM=1 -Wno-stringop-truncation
+ MOD_SRC_C += network_ifx_wcm.c
+endif
+
+SRC_C = help.c \
+ main.c \
+ mphalport.c \
+ frozen_content.c \
+ pins_$(BOARD).c
+
+SRC_ASM += shared/runtime/gchelper_thumb1.s
+
+SRC_QSTR += $(SHARED_SRC_C) $(MOD_SRC_C)
+
+OBJ += $(PY_O)
+OBJ += $(addprefix $(BUILD)/, $(SHARED_SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(MOD_SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(SRC_ASM:.s=.o))
+OBJ += $(addprefix $(BUILD)/, $(SRC_CXX:.cpp=.o))
+
+# switch for debug mode, also added to mpconfigport.h
+# TODO: keep the more suitable one, delete the other
+MP_LOGGER_DEBUG ?= 0
+
+ifeq ($(MP_LOGGER_DEBUG), 1)
+ CFLAGS += -DMICROPY_LOGGER_DEBUG=1
+endif
+
+-include $(TOP)/lib/mtb-psoc6-libs/mtb-makefile.mk
+
+$(BUILD)/firmware.elf: $(OBJ) $(LIBS)
+ $(info Linking $@ $^ $(LIBS) ...)
+ $(Q) $(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
+ $(info Linking $@ done.)
+ $(Q) $(SIZE) $@ -A
+ $(info )
+
+$(BUILD)/firmware.hex: $(BUILD)/firmware.elf
+ $(Q) $(OBJCOPY) -O ihex $^ $@
+
+mpy_build: $(BUILD)/firmware.hex
+
+MPY_CROSS_FLAGS += -march=armv7m
+
+all: mtb_init mtb_get_build_flags mpy_build
+
+clean: mtb_clean
+
+rebuild: clean all
+
+qdeploy: mtb_program
+deploy: all mtb_program
+
+# When multiple types of boards are connected, a devs file needs to be provided.
+# When working locally, if a "local-devs.yml" file is placed in "tools/psoc6"
+# it will be used
+ifneq ($(DEVS_FILE),)
+MULTI_BOARD_DEVS_OPTS = -f name=$(BOARD) --devs-yml $(DEVS_FILE)
+else
+DFLT_LOCAL_DEVS_FILE_NAME = local-devs.yml
+LOCAL_DEVS_FILE=$(TOP)/tools/psoc6/$(DFLT_LOCAL_DEVS_FILE_NAME)
+ifneq (,$(wildcard $(LOCAL_DEVS_FILE)))
+MULTI_BOARD_DEVS_OPTS = -f name=$(BOARD) --devs-yml $(LOCAL_DEVS_FILE)
+endif
+endif
+
+attached_devs:
+ @:
+ $(eval ATTACHED_TARGET_LIST = $(shell etdevs-query serial_number $(MULTI_BOARD_DEVS_OPTS)))
+ $(eval ATTACHED_TARGETS_NUMBER = $(words $(ATTACHED_TARGET_LIST)))
+ $(info Number of attached targets : $(ATTACHED_TARGETS_NUMBER))
+ $(info List of attached targets : $(ATTACHED_TARGET_LIST))
+
+qdeploy_multi: attached_devs
+ $(foreach ATTACHED_TARGET, $(ATTACHED_TARGET_LIST), $(MAKE) qdeploy DEV_SERIAL_NUMBER=$(ATTACHED_TARGET);)
+
+deploy_multi: all qdeploy_multi
+
+TESTS ?=-d psoc6
+DEV0 ?= /dev/ttyACM0
+DEV1 ?= /dev/ttyACM1
+
+test:
+ @:
+ $(info )
+ $(info Running PSoC6 tests)
+ $(Q) cd ../../tests ; ./run-tests.py --target psoc6 --device $(DEV0) $(TESTS)
+
+MULTI_TESTS ?= $(shell cd ../../tests; find ./psoc6/multi/ -type f -name "*.py")
+
+test_multi:
+ @:
+ $(info )
+ $(info Running PSoC6 multi tests)
+
+ $(Q) cd ../../tests ; ./run-multitests.py -i pyb:$(DEV0) -i pyb:$(DEV1) $(MULTI_TESTS)
+
+port_help:
+ @:
+ $(info )
+ $(info Available commands:)
+ $(info )
+ $(info make submodules Initialize port required submodules.)
+ $(info make BOARD= Build the project for the specified board.)
+ $(info .. The board name needs to be specified only the first time.)
+ $(info .. Then simply run "make" to build for the same board.)
+ $(info make rebuild Build the project after cleaning previous build.)
+ $(info make deploy Build and deploy the project to the specified board.)
+ $(info make qdeploy Deploy the project to the specified board without rebuilding.)
+ $(info make deploy_multi Deploy the project to multiple boards.)
+ $(info make qdeploy_multi Deploy the project to multiple boards without rebuilding.)
+ $(info make clean Clean the build files.)
+ $(info make test Run the on-target test in tests/psoc6 folder. Uses /dev/ttyACM0.)
+ $(info .. Optionally, pass TESTS variable for change the tests set. )
+ $(info make test_multi Run multi-instance tests on-target test in tests/psoc6/multi folder.)
+ $(info .. Uses /dev/ttyACM0 and /dev/ttyACM1.)
+ $(info .. Optionally, pass MULTI_TESTS variable for change the tests set. )
+ $(info make help Show this help.)
+ $(info )
+ $(info Options: )
+ $(info EXT_HEX_FILE An external .hex file can be provided to the deploy targets, instead of building from the sources.)
+ $(info )
+
+help: port_help mtb_bsp_help mtb_build_help
+.DEFAULT_GOAL := all
+
+.PHONY: all clean rebuild deploy qdeploy deploy_multi qdeploy_multi test test_multi help
+
+# include py core make definitions
+include $(TOP)/py/mkrules.mk
\ No newline at end of file
diff --git a/ports/psoc6/README.md b/ports/psoc6/README.md
new file mode 100644
index 0000000000000..9f5bfad57b5ad
--- /dev/null
+++ b/ports/psoc6/README.md
@@ -0,0 +1,59 @@
+# PSoC6 port
+
+This port is intended to run on Infineon PSoC™ 6 microcontrollers.
+
+## Pre-requisites
+
+The following port is using Infineon ModusToolbox™ to resolve the specific PSoC™ board resources and building flags. Before working with micropython:
+
+1. Install [ModusToolbox](https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolbox). **The required version is 3.0**. The version is currently fixed as some future versions are incompatible.
+
+2. Run the following script from MicroPython repository root to add the required tools to the system PATH, and install the udev rules:
+
+ source tools/psoc6/dev-setup.sh && toolchain_setup
+
+If the ModusToolbox™ has not been installed in the default path (`~/ModusToolbox`), add the path as positional argument of the `toolchain_setup` function:
+
+ source tools/psoc6/dev-setup.sh && toolchain_setup [mtb_path]
+
+### MacOS
+
+> [!NOTE]
+> If you are using MacOS, you need to install GNU make. The default make on Mac OS is BSD make, which is not compatible with the Makefile used in this port. Remember to add GNU make to the system path PATH.
+
+## Building and running Linux version
+
+As we are working on the ports-psoc6-main branch (for now), first checkout that branch after cloning this repo:
+
+ git checkout --track origin/ports-psoc6-main
+
+Retrieve submodules:
+
+ make submodules
+
+Build the firmware:
+
+ make BOARD=CY8CKIT_062S2_AI
+
+> [!NOTE]
+> The first time we call `make` the board needs to be specified with
+> `BOARD=`. This is required as the ModusToolbox libraries need to be
+> initialized for the selected board.
+> This board will then be set as the default board for subsequent builds, you
+> can just call `make` without the `BOARD=` argument.
+
+And flash it to the board:
+
+ make deploy
+
+> [!NOTE]
+> This will also build the firmware if it has not been built yet.
+> Use `deploy` target to avoid rebuilding the firmware.
+
+Find more information about the available makefile targets:
+
+ make help
+
+# Run micropython
+
+Use any serial terminal (putty, minicom..) and establish a session with your device with 115200 bauds and 8-N-1 configuration.
diff --git a/ports/psoc6/boards/CY8CKIT-062S2-AI/bsp-deps.json b/ports/psoc6/boards/CY8CKIT-062S2-AI/bsp-deps.json
new file mode 100644
index 0000000000000..5768a7c1365de
--- /dev/null
+++ b/ports/psoc6/boards/CY8CKIT-062S2-AI/bsp-deps.json
@@ -0,0 +1,34 @@
+[
+ {
+ "asset-name": "cat1cm0p",
+ "locked-commit": "release-v1.7.0"
+ },
+ {
+ "asset-name": "cmsis",
+ "locked-commit": "release-v5.8.1"
+ },
+ {
+ "asset-name": "core-lib",
+ "locked-commit": "release-v1.4.2"
+ },
+ {
+ "asset-name": "core-make",
+ "locked-commit": "release-v3.3.1"
+ },
+ {
+ "asset-name": "device-db",
+ "locked-commit": "release-v4.18.0"
+ },
+ {
+ "asset-name": "mtb-hal-cat1",
+ "locked-commit": "release-v2.6.1"
+ },
+ {
+ "asset-name": "mtb-pdl-cat1",
+ "locked-commit": "release-v3.12.0"
+ },
+ {
+ "asset-name": "recipe-make-cat1a",
+ "locked-commit": "release-v2.2.1"
+ }
+]
\ No newline at end of file
diff --git a/ports/psoc6/boards/CY8CKIT-062S2-AI/manifest.py b/ports/psoc6/boards/CY8CKIT-062S2-AI/manifest.py
new file mode 100644
index 0000000000000..3fc35a0139a34
--- /dev/null
+++ b/ports/psoc6/boards/CY8CKIT-062S2-AI/manifest.py
@@ -0,0 +1,3 @@
+freeze("$(PORT_DIR)/freeze")
+include("$(MPY_DIR)/extmod/asyncio")
+require("bundle-networking")
diff --git a/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.h b/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.h
new file mode 100644
index 0000000000000..45b7ea7db2cd2
--- /dev/null
+++ b/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.h
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// Board and hardware specific configuration
+#define MICROPY_HW_MCU_NAME "PSoC62"
+#define MICROPY_HW_BOARD_NAME "CY8CKIT-062S2-AI"
+
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "CY8C-062S2-AI"
+
+#define MICROPY_GC_HEAP_SIZE (315 * 1024) // 315 KB
+
+#define MICROPY_PY_HASHLIB (1)
+#define MICROPY_PY_HASHLIB_MD5 (1)
+#define MICROPY_PY_HASHLIB_SHA1 (1)
+#define MICROPY_PY_HASHLIB_SHA256 (1)
+
+#define MICROPY_PY_SD_CARD (1)
+#if (MICROPY_PY_SD_CARD)
+#define MAX_SDHC_SLOT (1)
+#endif
+
+// Flash type enablement for board
+#define MICROPY_PY_EXT_FLASH (1)
+#if (MICROPY_PY_EXT_FLASH)
+#define EXT_FLASH_BASE (0x00) /** 0x00 */
+#define EXT_FLASH_SIZE (0x4000000) /** 64MB */
+#define EXT_FLASH_SECTOR_SIZE (0x40000) /** 256KB*/
+#define EXT_FLASH_BLOCK_SIZE_BYTES (EXT_FLASH_SECTOR_SIZE)
+#define EXT_FLASH_PAGE_SIZE (0x200) /** 512 bytes*/
+#endif
+
+// Board specific configurations
+#define MAX_UART 6
+#define MAX_TIMER 32
+#define MAX_SPI 6
+#define MAX_I2C 5
+#define MAX_PWM_OBJS 32
+#define MICROPY_HW_MAX_I2S 1
diff --git a/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.mk b/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.mk
new file mode 100644
index 0000000000000..1442a799c8aee
--- /dev/null
+++ b/ports/psoc6/boards/CY8CKIT-062S2-AI/mpconfigboard.mk
@@ -0,0 +1,15 @@
+FROZEN_MANIFEST ?= boards/manifest.py
+MICROPY_PY_NETWORK_IFX_WCM = 1
+MICROPY_PY_NETWORK = 1
+MICROPY_PSOC6_LWIP = 1
+MICROPY_PY_SSL = 1
+MICROPY_PSOC6_SSL_MBEDTLS = 1
+MICROPY_PY_EXT_FLASH = 1
+MICROPY_PY_SD_CARD = 1
+BOARD_VERSION=release-v4.3.0
+
+# Variables to support make-pins
+PIN_PACKAGE_FILE = cyhal_psoc6_02_124_bga.h
+
+# Flasher configuration
+OPENOCD_TARGET_CFG=psoc6_2m.cfg
\ No newline at end of file
diff --git a/ports/psoc6/boards/CY8CPROTO-062-4343W/bsp-deps.json b/ports/psoc6/boards/CY8CPROTO-062-4343W/bsp-deps.json
new file mode 100644
index 0000000000000..5768a7c1365de
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-062-4343W/bsp-deps.json
@@ -0,0 +1,34 @@
+[
+ {
+ "asset-name": "cat1cm0p",
+ "locked-commit": "release-v1.7.0"
+ },
+ {
+ "asset-name": "cmsis",
+ "locked-commit": "release-v5.8.1"
+ },
+ {
+ "asset-name": "core-lib",
+ "locked-commit": "release-v1.4.2"
+ },
+ {
+ "asset-name": "core-make",
+ "locked-commit": "release-v3.3.1"
+ },
+ {
+ "asset-name": "device-db",
+ "locked-commit": "release-v4.18.0"
+ },
+ {
+ "asset-name": "mtb-hal-cat1",
+ "locked-commit": "release-v2.6.1"
+ },
+ {
+ "asset-name": "mtb-pdl-cat1",
+ "locked-commit": "release-v3.12.0"
+ },
+ {
+ "asset-name": "recipe-make-cat1a",
+ "locked-commit": "release-v2.2.1"
+ }
+]
\ No newline at end of file
diff --git a/ports/psoc6/boards/CY8CPROTO-062-4343W/manifest.py b/ports/psoc6/boards/CY8CPROTO-062-4343W/manifest.py
new file mode 100644
index 0000000000000..3fc35a0139a34
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-062-4343W/manifest.py
@@ -0,0 +1,3 @@
+freeze("$(PORT_DIR)/freeze")
+include("$(MPY_DIR)/extmod/asyncio")
+require("bundle-networking")
diff --git a/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.h b/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.h
new file mode 100644
index 0000000000000..61b3017c81b2c
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// Board and hardware specific configuration
+#define MICROPY_HW_MCU_NAME "PSoC62"
+#define MICROPY_HW_BOARD_NAME "CY8CPROTO-062-4343W"
+
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "CY8C-062-4343W"
+
+#define MICROPY_GC_HEAP_SIZE (256 * 1024) // 256 KB
+
+#define MICROPY_PY_HASHLIB (1)
+#define MICROPY_PY_HASHLIB_MD5 (1)
+#define MICROPY_PY_HASHLIB_SHA1 (1)
+#define MICROPY_PY_HASHLIB_SHA256 (1)
+
+#define MICROPY_PY_MACHINE_SPI_SLAVE (1)
+
+#define MICROPY_PY_SD_CARD (1)
+#if (MICROPY_PY_SD_CARD)
+#define MAX_SDHC_SLOT (2)
+#endif
+
+// Flash type enablement for board
+#define MICROPY_PY_EXT_FLASH (1)
+#if (MICROPY_PY_EXT_FLASH)
+#define EXT_FLASH_BASE (0x00) /** 0x00 */
+#define EXT_FLASH_SIZE (0x4000000) /** 64MB */
+#define EXT_FLASH_SECTOR_SIZE (0x40000) /** 256KB*/
+#define EXT_FLASH_BLOCK_SIZE_BYTES (EXT_FLASH_SECTOR_SIZE)
+#define EXT_FLASH_PAGE_SIZE (0x200) /** 512 bytes*/
+#endif
+
+// Board specific configurations
+#define MAX_UART 10
+#define MAX_TIMER 32
+#define MAX_SPI 7
+#define MAX_I2C 9
+#define MAX_PWM_OBJS 32
+#define MICROPY_HW_MAX_I2S 2
diff --git a/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.mk b/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.mk
new file mode 100644
index 0000000000000..a49e463ab5526
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-062-4343W/mpconfigboard.mk
@@ -0,0 +1,16 @@
+FROZEN_MANIFEST ?= boards/manifest.py
+MICROPY_PY_NETWORK_IFX_WCM = 1
+MICROPY_PY_NETWORK = 1
+MICROPY_PSOC6_LWIP = 1
+MICROPY_PY_SSL = 1
+MICROPY_PSOC6_SSL_MBEDTLS = 1
+MICROPY_PY_EXT_FLASH = 1
+MICROPY_PY_SD_CARD = 1
+MICROPY_VFS_FAT=1
+BOARD_VERSION=release-v4.0.0
+
+# Variables to support make-pins
+PIN_PACKAGE_FILE = cyhal_psoc6_02_124_bga.h
+
+# Flasher configuration
+OPENOCD_TARGET_CFG=psoc6_2m.cfg
\ No newline at end of file
diff --git a/ports/psoc6/boards/CY8CPROTO-063-BLE/bsp-deps.json b/ports/psoc6/boards/CY8CPROTO-063-BLE/bsp-deps.json
new file mode 100644
index 0000000000000..5768a7c1365de
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-063-BLE/bsp-deps.json
@@ -0,0 +1,34 @@
+[
+ {
+ "asset-name": "cat1cm0p",
+ "locked-commit": "release-v1.7.0"
+ },
+ {
+ "asset-name": "cmsis",
+ "locked-commit": "release-v5.8.1"
+ },
+ {
+ "asset-name": "core-lib",
+ "locked-commit": "release-v1.4.2"
+ },
+ {
+ "asset-name": "core-make",
+ "locked-commit": "release-v3.3.1"
+ },
+ {
+ "asset-name": "device-db",
+ "locked-commit": "release-v4.18.0"
+ },
+ {
+ "asset-name": "mtb-hal-cat1",
+ "locked-commit": "release-v2.6.1"
+ },
+ {
+ "asset-name": "mtb-pdl-cat1",
+ "locked-commit": "release-v3.12.0"
+ },
+ {
+ "asset-name": "recipe-make-cat1a",
+ "locked-commit": "release-v2.2.1"
+ }
+]
\ No newline at end of file
diff --git a/ports/psoc6/boards/CY8CPROTO-063-BLE/manifest.py b/ports/psoc6/boards/CY8CPROTO-063-BLE/manifest.py
new file mode 100644
index 0000000000000..3fc35a0139a34
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-063-BLE/manifest.py
@@ -0,0 +1,3 @@
+freeze("$(PORT_DIR)/freeze")
+include("$(MPY_DIR)/extmod/asyncio")
+require("bundle-networking")
diff --git a/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.h b/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.h
new file mode 100644
index 0000000000000..b726da681fc18
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.h
@@ -0,0 +1,43 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// Board and hardware specific configuration
+#define MICROPY_HW_MCU_NAME "PSoC63"
+#define MICROPY_HW_BOARD_NAME "CY8CPROTO-063-BLE"
+
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "CY8C-063-BLE"
+
+#define MICROPY_GC_HEAP_SIZE (64 * 1024) // 64 KB
+
+#define MICROPY_PY_MACHINE_SPI_SLAVE (1)
+
+// Board specific configurations
+#define MAX_UART 3
+#define MAX_TIMER 32
+#define MAX_SPI 2
+#define MAX_I2C 3
+#define MAX_PWM_OBJS 28
+#define MICROPY_HW_MAX_I2S 1
diff --git a/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.mk b/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.mk
new file mode 100644
index 0000000000000..b341117a575bc
--- /dev/null
+++ b/ports/psoc6/boards/CY8CPROTO-063-BLE/mpconfigboard.mk
@@ -0,0 +1,10 @@
+FROZEN_MANIFEST ?= boards/manifest.py
+MICROPY_PY_SSL = 0
+MICROPY_PSOC6_SSL_MBEDTLS = 0
+BOARD_VERSION=release-v4.2.0
+
+# Variables to support make-pins
+PIN_PACKAGE_FILE = cyhal_psoc6_01_116_bga_ble.h
+
+# Flasher configuration
+OPENOCD_TARGET_CFG=psoc6.cfg
\ No newline at end of file
diff --git a/ports/psoc6/boards/make-pins.py b/ports/psoc6/boards/make-pins.py
new file mode 100755
index 0000000000000..efee216788eb9
--- /dev/null
+++ b/ports/psoc6/boards/make-pins.py
@@ -0,0 +1,275 @@
+from __future__ import print_function
+from itertools import islice
+import argparse
+import sys
+import re
+import os
+
+prefix_content = '#include \n \
+#include "py/obj.h" \n \
+#include "py/mphal.h" \n \
+#include "machine_pin_phy.h"\n '
+
+
+class NamedPin(object):
+ def __init__(self, name, pin):
+ self._name = name
+ self._pin = pin
+
+ def pin(self):
+ return self._pin
+
+ def name(self):
+ return self._name
+
+
+class PinsTable(object):
+ def __init__(self):
+ self.pins = []
+
+ def add_pin(self, pin_name, pin_addr):
+ self.pins.append([pin_name, pin_addr])
+
+ def get_pins(self):
+ return self.pins
+
+
+class PinsDetailsTable(object):
+ def __init__(self):
+ self.pins_details = []
+
+ def add_pin_details(self, pin_name, pin_addr, pin_exp):
+ self.pins_details.append([pin_name, pin_addr, pin_exp])
+
+ def get_pins_details(self):
+ return self.pins_details
+
+
+class Pin(object):
+ def __init__(self, name, pin_addr, pin_exp):
+ self._name = name
+ self._pin_addr = pin_addr
+ self._pin_exp = pin_exp
+ self._board_pin = False
+
+ def cpu_pin_name(self):
+ return self._name
+
+ def is_board_pin(self):
+ return self._board_pin
+
+ def set_is_board_pin(self):
+ self._board_pin = True
+
+ def set_board_index(self, index):
+ self.board_index = index
+
+ def print_header(self, num_pins, hdr_file):
+ hdr_file.write("#define MAX_IO_PINS {:d} \n".format(num_pins))
+
+ def qstr_list(self):
+ return [self._name]
+
+ def print_const_table_entry(self):
+ print('{{{:s}, "{:s}"}},'.format(self._pin_exp, self._name))
+
+
+class Pins(object):
+ def __init__(self):
+ self.cpu_pins = [] # list of NamedPin objects
+ self.board_pins = [] # list of NamedPin objects
+ self.board_pin_csv_path = ""
+ self.num_cpu_pins = 0
+
+ def update_num_cpu_pins(self):
+ for named_pin in self.cpu_pins:
+ pin = named_pin.pin()
+ if pin.is_board_pin():
+ pin.set_board_index(self.num_cpu_pins)
+ self.num_cpu_pins += 1
+
+ def get_num_cpu_pins(self):
+ return self.num_cpu_pins
+
+ def find_pin(self, cpu_pin_name):
+ for named_pin in self.cpu_pins:
+ pin = named_pin.pin()
+ if pin.cpu_pin_name() == cpu_pin_name:
+ return pin
+
+ def print_const_table(self):
+ print("")
+ print(prefix_content)
+ print("const uint8_t machine_pin_num_of_cpu_pins = {:d};".format(self.get_num_cpu_pins()))
+ print("")
+ print(
+ "machine_pin_phy_obj_t machine_pin_phy_obj[{:d}] = {{".format(self.get_num_cpu_pins())
+ )
+ for named_pin in self.cpu_pins:
+ pin = named_pin.pin()
+ if pin.is_board_pin():
+ pin.print_const_table_entry()
+ print("};")
+
+ def parse_pin_details_table(self, pins_details_table):
+ for pin in pins_details_table.get_pins_details():
+ pin_name = pin[0]
+ pin_addr = pin[1]
+ pin_exp = pin[2].strip('"')
+ pin = Pin(pin_name, pin_addr, pin_exp)
+ self.cpu_pins.append(NamedPin(pin_name, pin))
+
+ def parse_board_table(self, pins_table):
+ for pin in pins_table.get_pins():
+ board_pin_name = pin[0]
+ cpu_pin_name = pin[1]
+ pin = self.find_pin(cpu_pin_name)
+ if pin:
+ pin.set_is_board_pin()
+ self.board_pins.append(NamedPin(board_pin_name, pin))
+
+ def print_named(self, label, named_pins):
+ print(
+ "static const mp_rom_map_elem_t pin_{:s}_pins_locals_dict_table[] = {{".format(label)
+ )
+ num_cpu_pins = 0
+ for named_pin in named_pins:
+ pin = named_pin.pin()
+ if pin.is_board_pin():
+ print(
+ " {{ MP_ROM_QSTR(MP_QSTR_{:s}), MP_ROM_PTR(&machine_pin_phy_obj[{:d}]) }},".format(
+ named_pin.name(), num_cpu_pins
+ )
+ )
+ num_cpu_pins += 1
+ print("};")
+ print(
+ "MP_DEFINE_CONST_DICT(pin_{:s}_pins_locals_dict, pin_{:s}_pins_locals_dict_table);".format(
+ label, label
+ )
+ )
+
+ def print(self):
+ self.print_named("cpu", self.cpu_pins)
+ print("")
+
+ def print_header(self, hdr_filename):
+ with open(hdr_filename, "wt") as hdr_file:
+ hdr_file.write("#define MAX_IO_PINS {:d} \n".format(self.get_num_cpu_pins()))
+
+ def print_qstr(self, qstr_filename):
+ with open(qstr_filename, "wt") as qstr_file:
+ qstr_set = set([])
+ for named_pin in self.cpu_pins:
+ pin = named_pin.pin()
+ if pin.is_board_pin():
+ qstr_set |= set(pin.qstr_list())
+ qstr_set |= set([named_pin.name()])
+ for named_pin in self.board_pins:
+ qstr_set |= set([named_pin.name()])
+ for qstr in sorted(qstr_set):
+ print("Q({})".format(qstr), file=qstr_file)
+
+ def get_pin_addr_helper(self, pin_def):
+ pattern = r"CYHAL_PORT_(\d+),\s*(\d+)"
+ match = re.search(pattern, pin_def)
+ port_number = match.group(1)
+ pin_number = match.group(2)
+ return (int(port_number) << 3) + int(pin_number)
+
+ def get_pin_package_path(self, filename):
+ root_dir = "../../lib/mtb_shared/mtb-hal-cat1"
+ mid_dir = "COMPONENT_CAT1A/include/pin_packages"
+ for dirpath, dirnames, filenames in os.walk(root_dir):
+ for dirname in dirnames:
+ if dirname.startswith("release-"):
+ release_version = dirname
+ file_path = os.path.join(root_dir, release_version, mid_dir, filename)
+ if os.path.isfile(file_path):
+ return file_path
+ return None
+
+ def generate_pins_table(self, pin_pacakge_file_name):
+ file_path = self.get_pin_package_path(pin_pacakge_file_name)
+
+ if file_path is None:
+ sys.exit(1)
+
+ with open(file_path, "r") as file:
+ content = file.read()
+
+ enum_start = content.find("typedef enum {")
+ enum_end = content.find("}")
+
+ if enum_start != -1 and enum_end != -1:
+ enum_content = content[enum_start:enum_end]
+ enum_values = re.findall(r"\b(\w+)\s*=", enum_content)
+ pin_name = re.findall(r"\b(?!NC\b)(\w+)\s*=", enum_content)
+ pin_defs = re.findall(r"=\s*(.*?\))", enum_content)
+
+ pins_table = PinsTable()
+ pins_details_table = PinsDetailsTable()
+
+ for value in enum_values:
+ if value.startswith("P") or value.startswith("N") or value.startswith("U"):
+ pins_table.add_pin(value, value)
+
+ pins_details_table.add_pin_details("NC", 255, "CYHAL_GET_GPIO(CYHAL_PORT_31, 7)")
+ for pname, pdef in zip(pin_name, pin_defs):
+ val = self.get_pin_addr_helper(pdef)
+ pins_details_table.add_pin_details(pname, val, pdef.strip('"'))
+ return pins_table, pins_details_table
+ else:
+ print("// Error: pins table and pins details table generation failed")
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ prog="make-pins.py",
+ usage="%(prog)s [options] [command]",
+ description="Generate board specific pin details",
+ )
+
+ parser.add_argument(
+ "-g",
+ "--gen-pin-for",
+ dest="pin_package_filename",
+ help="Specifies the pin package file from mtb assets to generate pin details",
+ )
+
+ parser.add_argument(
+ "-q",
+ "--qstr",
+ dest="qstr_filename",
+ help="Specifies name of generated qstr header file",
+ )
+
+ parser.add_argument(
+ "-r",
+ "--hdr",
+ dest="hdr_filename",
+ help="Specifies name of generated pin header file",
+ )
+
+ args = parser.parse_args(sys.argv[1:])
+
+ pins = Pins()
+
+ if args.pin_package_filename:
+ print("// Generating pins table")
+ print("// - --gen-pin-for {:s}".format(args.pin_package_filename))
+ pins_table, pins_details_table = pins.generate_pins_table(args.pin_package_filename)
+
+ pins.parse_pin_details_table(pins_details_table)
+
+ if args.hdr_filename and args.qstr_filename:
+ pins.parse_board_table(pins_table)
+ pins.update_num_cpu_pins()
+ pins.print_const_table()
+ pins.print()
+ pins.print_header(args.hdr_filename)
+ pins.print_qstr(args.qstr_filename)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ports/psoc6/freeze/vfs_fat.py b/ports/psoc6/freeze/vfs_fat.py
new file mode 100644
index 0000000000000..f00bf1f7d5525
--- /dev/null
+++ b/ports/psoc6/freeze/vfs_fat.py
@@ -0,0 +1,24 @@
+import os
+import machine, psoc6
+
+
+# Try to mount the filesystem, and format the flash if it doesn't exist.
+# Create block device instance from external or internal flash, whichever is enabled
+bdev = psoc6.QSPI_Flash() if "QSPI_Flash" in dir(psoc6) else psoc6.Flash()
+
+try:
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/")
+except:
+ os.VfsFat.mkfs(bdev)
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/")
+
+if "QSPI_Flash" in dir(psoc6):
+ location = "external QSPI"
+else:
+ location = "internal"
+
+print(f"Virtual File System: mounted at '/' with FAT format in {location} flash.\n")
+
+del machine, os, psoc6, bdev, vfs
diff --git a/ports/psoc6/freeze/vfs_fat_qspi_flash.py b/ports/psoc6/freeze/vfs_fat_qspi_flash.py
new file mode 100644
index 0000000000000..32ebbdc0f7592
--- /dev/null
+++ b/ports/psoc6/freeze/vfs_fat_qspi_flash.py
@@ -0,0 +1,18 @@
+import os
+import machine, psoc6
+
+
+# Try to mount the filesystem, and format the flash if it doesn't exist.
+bdev = psoc6.QSPI_Flash()
+
+try:
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/flash")
+except:
+ os.VfsFat.mkfs(bdev)
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/flash")
+
+print("Virtual File System: mounted at '/flash' with FAT format in external QSPI flash.\n")
+
+del machine, os, psoc6, bdev, vfs
diff --git a/ports/psoc6/freeze/vfs_lfs2.py b/ports/psoc6/freeze/vfs_lfs2.py
new file mode 100644
index 0000000000000..e7689457a18bf
--- /dev/null
+++ b/ports/psoc6/freeze/vfs_lfs2.py
@@ -0,0 +1,32 @@
+import os
+import machine, psoc6
+
+
+# Try to mount the filesystem, and format the flash if it doesn't exist.
+# TODO: Check "Note: the internal flash requires the programming size to be aligned to 256 bytes." and progSize parameter below !!
+
+# Create block device instance from external or internal flash, whichever is enabled
+bdev = psoc6.QSPI_Flash() if "QSPI_Flash" in dir(psoc6) else psoc6.Flash()
+
+# sector size 4 KB for external flash
+# sector size 512 B for internal flash
+read_size = 0x1000 if "QSPI_Flash" in dir(psoc6) else 0x200
+# page size 512 B for both flashes
+write_size = 0x200
+
+try:
+ vfs = os.VfsLfs2(bdev, progsize=write_size, readsize=read_size)
+ os.mount(vfs, "/")
+except:
+ os.VfsLfs2.mkfs(bdev, progsize=write_size, readsize=read_size)
+ vfs = os.VfsLfs2(bdev, progsize=write_size, readsize=read_size)
+ os.mount(vfs, "/")
+
+if "QSPI_Flash" in dir(psoc6):
+ location = "external QSPI"
+else:
+ location = "internal"
+
+print(f"Virtual File System: mounted at '/' with LFS2 format in {location} flash.\n")
+
+del machine, os, psoc6, bdev, vfs, read_size, write_size
diff --git a/ports/psoc6/freeze/vfs_lfs2_qspi_flash.py b/ports/psoc6/freeze/vfs_lfs2_qspi_flash.py
new file mode 100644
index 0000000000000..a239ba15d83f4
--- /dev/null
+++ b/ports/psoc6/freeze/vfs_lfs2_qspi_flash.py
@@ -0,0 +1,17 @@
+import os
+import machine, psoc6
+
+bdev = psoc6.QSPI_Flash()
+read_size = 0x1000 # sector size*
+write_size = 0x200 # page size
+try:
+ vfs = os.VfsLfs2(bdev, progsize=read_size, readsize=write_size)
+ os.mount(vfs, "/flash")
+except:
+ os.VfsLfs2.mkfs(bdev, progsize=read_size, readsize=write_size)
+ vfs = os.VfsLfs2(bdev, progsize=read_size, readsize=write_size)
+ os.mount(vfs, "/flash")
+
+print("Virtual File System: mounted at '/flash' with LFS2 format in external QSPI flash.\n")
+
+del machine, os, psoc6, bdev, vfs, read_size, write_size
diff --git a/ports/psoc6/help.c b/ports/psoc6/help.c
new file mode 100644
index 0000000000000..dc76877ee0541
--- /dev/null
+++ b/ports/psoc6/help.c
@@ -0,0 +1,42 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+const char psoc6_help_text[] =
+ "Welcome to MicroPython!\n"
+ "\n"
+ "For online help please visit https://micropython.org/help/.\n"
+ "\n"
+ "For access to the hardware use the 'machine' module.\n"
+ "PSoC6 specific commands are in the 'psoc6' module.\n"
+ "\n"
+ "Useful control commands:\n"
+ " CTRL-C -- interrupt a running program\n"
+ " CTRL-D -- on a blank line, do a soft reset of the board\n"
+ " CTRL-E -- on a blank line, enter paste mode\n"
+ "\n"
+ "For further help on a specific object, type help(obj)\n"
+ "For a list of available modules, type help('modules')\n"
+;
diff --git a/ports/psoc6/lwip_inc/arch/cc.h b/ports/psoc6/lwip_inc/arch/cc.h
new file mode 100644
index 0000000000000..463c90e36e4aa
--- /dev/null
+++ b/ports/psoc6/lwip_inc/arch/cc.h
@@ -0,0 +1,6 @@
+#ifndef MICROPY_INCLUDED_PSOC6_LWIP_ARCH_CC_H
+#define MICROPY_INCLUDED_PSOC6_LWIP_ARCH_CC_H
+
+#include
+
+#endif // MICROPY_INCLUDED_PSOC6_LWIP_ARCH_CC_H
diff --git a/ports/psoc6/lwip_inc/lwipopts.h b/ports/psoc6/lwip_inc/lwipopts.h
new file mode 100644
index 0000000000000..7b3895ca5c1ba
--- /dev/null
+++ b/ports/psoc6/lwip_inc/lwipopts.h
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Simon Goldschmidt
+ *
+ */
+#pragma once
+
+#include
+
+#define MEM_ALIGNMENT (4)
+
+#define LWIP_RAW (1)
+#define NO_SYS (0)
+
+//
+// Enable IPV4 networking
+//
+#define LWIP_IPV4 (1)
+
+/**
+ * LWIP_AUTOIP==1: Enable AUTOIP module.
+ */
+// #define LWIP_AUTOIP (1)
+
+/**
+ * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on
+ * the same interface at the same time.
+ */
+// #define LWIP_DHCP_AUTOIP_COOP (1)
+
+//
+// Enable IPV6 networking
+//
+#define LWIP_IPV6 (0)
+
+#define ETHARP_SUPPORT_STATIC_ENTRIES (1)
+
+//
+// Enable IPV4 networking
+//
+#define LWIP_ICMP (1)
+#define LWIP_TCP (1)
+#define LWIP_UDP (1)
+#define LWIP_IGMP (1)
+
+//
+// Use malloc to allocate any memory blocks instead of the
+// malloc that is part of LWIP
+//
+#define MEM_LIBC_MALLOC (1)
+
+//
+// The standard library does not provide errno, use the one
+// from LWIP.
+//
+#define LWIP_PROVIDE_ERRNO (1)
+
+#if defined(__GNUC__) && !defined(__ARMCC_VERSION)
+//
+// Use the timeval from the GCC library, not the one
+// from LWIP
+//
+#define LWIP_TIMEVAL_PRIVATE (0)
+#endif
+
+//
+// Make sure DHCP is part of the stack
+//
+#define LWIP_DHCP (1)
+
+//
+// Enable LwIP send timeout
+//
+#define LWIP_SO_SNDTIMEO (1)
+
+//
+// Enable LwIP receive timeout
+//
+#define LWIP_SO_RCVTIMEO (1)
+
+//
+// Enable SO_REUSEADDR option
+//
+#define SO_REUSE (1)
+
+//
+// Enable TCP Keep-alive
+//
+#define LWIP_TCP_KEEPALIVE (1)
+
+//
+// The amount of space to leave before the packet when allocating a pbuf. Needs to
+// be enough for the link layer data and the WHD header
+//
+#define PBUF_LINK_HLEN (WHD_PHYSICAL_HEADER)
+
+//
+// TCP Maximum segment size
+//
+#define TCP_MSS (WHD_PAYLOAD_MTU)
+
+#define LWIP_CHECKSUM_CTRL_PER_NETIF 1
+#define CHECKSUM_GEN_IP 1
+#define CHECKSUM_GEN_UDP 1
+#define CHECKSUM_GEN_TCP 1
+#define CHECKSUM_GEN_ICMP 1
+#define CHECKSUM_GEN_ICMP6 1
+#define CHECKSUM_CHECK_IP 1
+#define CHECKSUM_CHECK_UDP 1
+#define CHECKSUM_CHECK_TCP 1
+#define CHECKSUM_CHECK_ICMP 1
+#define CHECKSUM_CHECK_ICMP6 1
+#define LWIP_CHECKSUM_ON_COPY 1
+
+//
+// Enable the thread safe NETCONN interface layer
+//
+#define LWIP_NETCONN (1)
+
+/**
+ * TCP_SND_BUF: TCP sender buffer space (bytes).
+ * To achieve good performance, this should be at least 2 * TCP_MSS.
+ */
+#define TCP_SND_BUF (12 * TCP_MSS)
+#define TCP_WND (10 * TCP_MSS)
+#define LWIP_WND_SCALE 1
+#define TCP_RCV_SCALE 2
+#define MEM_SIZE (16000)
+/**
+ * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
+ * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work.
+ */
+#define TCP_SND_QUEUELEN ((6 * (TCP_SND_BUF) + (TCP_MSS - 1)) / (TCP_MSS))
+
+
+//
+// Taken from WICED to speed things up
+//
+#define DHCP_DOES_ARP_CHECK (0)
+
+//
+// Light weight protection for things that may be clobbered by interrupts
+//
+#define SYS_LIGHTWEIGHT_PROT (1)
+#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT (1)
+
+#define LWIP_SO_RCVBUF (128)
+
+#define LWIP_SOCKET (1)
+#define LWIP_NETCONN (1)
+#define DEFAULT_TCP_RECVMBOX_SIZE (12)
+#define TCPIP_MBOX_SIZE (16)
+#define TCPIP_THREAD_STACKSIZE (4 * 1024)
+#define TCPIP_THREAD_PRIO (4)
+#define DEFAULT_RAW_RECVMBOX_SIZE (12)
+#define DEFAULT_UDP_RECVMBOX_SIZE (12)
+#define DEFAULT_ACCEPTMBOX_SIZE (8)
+#define TCP_OVERSIZE TCP_MSS
+/**
+ * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
+ * per active UDP "connection".
+ * (requires the LWIP_UDP option)
+ */
+#define MEMP_NUM_UDP_PCB 8
+
+/**
+ * MEMP_NUM_TCP_PCB: the number of simultaneously active TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB 8
+
+/**
+ * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB_LISTEN 1
+
+/**
+ * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_SEG (2 * TCP_SND_QUEUELEN)
+
+/**
+ * MEMP_NUM_SYS_TIMEOUT: the number of simultaneously active timeouts.
+ */
+#define MEMP_NUM_SYS_TIMEOUT 12
+
+/**
+ * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
+ */
+#define PBUF_POOL_SIZE 400
+
+/**
+ * MEMP_NUM_NETBUF: the number of struct netbufs.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETBUF 8
+
+/**
+ * MEMP_NUM_NETCONN: the number of struct netconns.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETCONN 16
+
+
+/* Turn off LWIP_STATS in Release build */
+#ifdef DEBUG
+#define LWIP_STATS 1
+#else
+#define LWIP_STATS 0
+#endif
+
+/**
+ * LWIP_TCPIP_CORE_LOCKING
+ * Creates a global mutex that is held during TCPIP thread operations.
+ * Can be locked by client code to perform lwIP operations without changing
+ * into TCPIP thread using callbacks. See LOCK_TCPIP_CORE() and
+ * UNLOCK_TCPIP_CORE().
+ * Your system should provide mutexes supporting priority inversion to use this.
+ */
+#define LWIP_TCPIP_CORE_LOCKING 1
+
+/**
+ * LWIP_TCPIP_CORE_LOCKING_INPUT: when LWIP_TCPIP_CORE_LOCKING is enabled,
+ * this lets tcpip_input() grab the mutex for input packets as well,
+ * instead of allocating a message and passing it to tcpip_thread.
+ *
+ * ATTENTION: this does not work when tcpip_input() is called from
+ * interrupt context!
+ */
+#define LWIP_TCPIP_CORE_LOCKING_INPUT 1
+
+/**
+ * LWIP_NETIF_API==1: Support netif api (in netifapi.c)
+ */
+#define LWIP_NETIF_API 1
+
+#define LWIP_DNS (1)
+
+#define LWIP_NETIF_TX_SINGLE_PBUF (1)
+
+#define LWIP_RAND rand
+
+#define LWIP_FREERTOS_CHECK_CORE_LOCKING (1)
+
+#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking()
+
+#define LWIP_NETIF_STATUS_CALLBACK (1)
+#define LWIP_NETIF_LINK_CALLBACK (1)
+#define LWIP_NETIF_REMOVE_CALLBACK (1)
+
+#define LWIP_CHKSUM_ALGORITHM (3)
+
+extern void sys_check_core_locking();
diff --git a/ports/psoc6/machine_adc.c b/ports/psoc6/machine_adc.c
new file mode 100644
index 0000000000000..2dac56682fe45
--- /dev/null
+++ b/ports/psoc6/machine_adc.c
@@ -0,0 +1,174 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include
+#include "py/runtime.h"
+#include "py/mphal.h"
+
+// port-specific includes
+#include "modmachine.h"
+#include "machine_adc.h"
+#include "machine_adcblock.h"
+
+#include "cybsp.h"
+#include "cyhal.h"
+#include "cy_pdl.h"
+
+extern machine_adcblock_obj_t *adc_block_obj_find(mp_obj_t pin);
+extern machine_adcblock_obj_t *adc_block_obj_init(mp_obj_t pin);
+extern machine_adc_obj_t *adc_block_channel_find(machine_adcblock_obj_t *adc_block, mp_obj_t pin);
+extern machine_adc_obj_t *adc_block_channel_alloc(machine_adcblock_obj_t *adc_block, mp_obj_t pin);
+extern void adc_block_channel_free(machine_adcblock_obj_t *acd_block, machine_adc_obj_t *channel);
+
+void adc_obj_init(machine_adc_obj_t *adc, machine_adcblock_obj_t *adc_block, mp_obj_t pin_name, uint32_t sampling_time) {
+ uint32_t pin_addr = pin_addr_by_name(pin_name);
+ const cyhal_adc_channel_config_t channel_config =
+ {
+ .enable_averaging = false,
+ .min_acquisition_ns = sampling_time,
+ .enabled = true
+ };
+
+ cy_rslt_t status = cyhal_adc_channel_init_diff(&(adc->adc_chan_obj), &(adc_block->adc_obj), pin_addr, CYHAL_ADC_VNEG, &channel_config);
+ if (status != CY_RSLT_SUCCESS) {
+ assert_pin_phy_used(status);
+ mp_raise_TypeError(MP_ERROR_TEXT("ADC Channel Initialization failed!"));
+ }
+
+ adc->pin_addr = pin_addr;
+ adc->block = adc_block;
+ adc->sample_ns = sampling_time;
+}
+
+void adc_obj_deinit(machine_adc_obj_t *adc) {
+ cyhal_adc_channel_free(&(adc->adc_chan_obj));
+}
+
+machine_adc_obj_t *machine_adc_make_init(uint32_t sampling_time, mp_obj_t pin_name) {
+ machine_adc_obj_t *adc;
+
+ machine_adcblock_obj_t *adc_block = adc_block_obj_find(pin_name);
+ if (adc_block == NULL) {
+ adc_block = adc_block_obj_init(pin_name);
+ } else {
+ adc = adc_block_channel_find(adc_block, pin_name);
+ if (adc != NULL) {
+ adc->sample_ns = sampling_time;
+ return adc;
+ }
+ }
+
+ adc = adc_block_channel_alloc(adc_block, pin_name);
+ adc_obj_init(adc, adc_block, pin_name, sampling_time);
+
+ return adc;
+}
+
+// Helper function to get resolution
+uint8_t adc_get_resolution(machine_adc_obj_t *adc) {
+ printf("ADC bits: %d", adc->block->bits);
+ return adc->block->bits;
+}
+
+// machine_adc_print()
+static void machine_adc_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "", self->pin_addr, self->block->id, self->sample_ns);
+}
+
+// ADC(id)
+static mp_obj_t machine_adc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ // Check number of arguments
+ mp_arg_check_num(n_args, n_kw, 1, 6, true);
+ enum {ARG_sample_ns};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_sample_ns, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_ADC_ACQ_NS} },
+ };
+
+ // Parse the arguments.
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw, all_args + n_args);
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, all_args + 1, &kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ // Get user input sampling time
+ uint32_t sampling_time = args[ARG_sample_ns].u_int;
+
+ machine_adc_obj_t *o = machine_adc_make_init(sampling_time, all_args[0]);
+
+ return MP_OBJ_FROM_PTR(o);
+}
+
+// deinit()
+static mp_obj_t machine_adc_deinit(mp_obj_t self_in) {
+ machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ adc_obj_deinit(self);
+ adc_block_channel_free(self->block, self);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_deinit_obj, machine_adc_deinit);
+
+// block()
+static mp_obj_t machine_adc_block(mp_obj_t self_in) {
+ const machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return MP_OBJ_FROM_PTR(self->block);
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_block_obj, machine_adc_block);
+
+// read_u16()
+static mp_obj_t machine_adc_read_u16(mp_obj_t self_in) {
+ machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ int32_t adc_raw_result = cyhal_adc_read(&(self->adc_chan_obj));
+ mp_int_t bits = (mp_int_t)adc_get_resolution(self);
+ mp_uint_t u16 = adc_raw_result << (16 - bits);
+ return MP_OBJ_NEW_SMALL_INT(u16);
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_read_u16_obj, machine_adc_read_u16);
+
+// read_uv
+static mp_obj_t machine_adc_read_uv(mp_obj_t self_in) {
+ machine_adc_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ return MP_OBJ_NEW_SMALL_INT(cyhal_adc_read_uv(&(self->adc_chan_obj)));
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_adc_read_uv_obj, machine_adc_read_uv);
+
+
+static const mp_rom_map_elem_t machine_adc_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_adc_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_read_u16), MP_ROM_PTR(&machine_adc_read_u16_obj) },
+ { MP_ROM_QSTR(MP_QSTR_read_uv), MP_ROM_PTR(&machine_adc_read_uv_obj) },
+ { MP_ROM_QSTR(MP_QSTR_block), MP_ROM_PTR(&machine_adc_block_obj) },
+};
+static MP_DEFINE_CONST_DICT(machine_adc_locals_dict, machine_adc_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_adc_type,
+ MP_QSTR_ADC,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_adc_make_new,
+ print, machine_adc_print,
+ locals_dict, &machine_adc_locals_dict
+ );
diff --git a/ports/psoc6/machine_adc.h b/ports/psoc6/machine_adc.h
new file mode 100644
index 0000000000000..2ebefe5bbe2d3
--- /dev/null
+++ b/ports/psoc6/machine_adc.h
@@ -0,0 +1,41 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#ifndef MICROPY_INCLUDED_MACHINE_ADC_H
+#define MICROPY_INCLUDED_MACHINE_ADC_H
+
+#include "machine_adcblock.h"
+#include "machine_pin_phy.h"
+
+typedef struct _machine_adc_obj_t {
+ mp_obj_base_t base;
+ machine_adcblock_obj_t *block;
+ uint32_t pin_addr;
+ uint32_t sample_ns;
+ cyhal_adc_channel_t adc_chan_obj;
+} machine_adc_obj_t;
+
+#endif // MICROPY_INCLUDED_MACHINE_ADC_H
diff --git a/ports/psoc6/machine_adcblock.c b/ports/psoc6/machine_adcblock.c
new file mode 100644
index 0000000000000..5f8bd7f7760dc
--- /dev/null
+++ b/ports/psoc6/machine_adcblock.c
@@ -0,0 +1,340 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "modmachine.h"
+
+#include "machine_adcblock.h"
+#include "machine_adc.h"
+
+extern void adc_obj_init(machine_adc_obj_t *adc, machine_adcblock_obj_t *adc_block, mp_obj_t pin_name, uint32_t sampling_time);
+extern void adc_obj_deinit(machine_adc_obj_t *adc);
+
+machine_adcblock_obj_t *adc_block[MAX_BLOCKS] = {NULL};
+
+const adc_block_channel_pin_map_t adc_block_pin_map[] = {
+ {ADCBLOCK0, 0, CYHAL_GET_GPIO(CYHAL_PORT_10, 0)},
+ {ADCBLOCK0, 1, CYHAL_GET_GPIO(CYHAL_PORT_10, 1)},
+ {ADCBLOCK0, 2, CYHAL_GET_GPIO(CYHAL_PORT_10, 2)},
+ {ADCBLOCK0, 3, CYHAL_GET_GPIO(CYHAL_PORT_10, 3)},
+ {ADCBLOCK0, 4, CYHAL_GET_GPIO(CYHAL_PORT_10, 4)},
+ {ADCBLOCK0, 5, CYHAL_GET_GPIO(CYHAL_PORT_10, 5)},
+ {ADCBLOCK0, 6, CYHAL_GET_GPIO(CYHAL_PORT_10, 6)},
+ {ADCBLOCK0, 7, CYHAL_GET_GPIO(CYHAL_PORT_10, 7)}
+};
+/******************************************************************************/
+// MicroPython bindings for machine.ADC
+
+// Private helper function to get channel number for provided pin
+int16_t _get_adc_channel_number_for_pin(uint32_t pin) {
+ for (int i = 0; i < (sizeof(adc_block_pin_map) / sizeof(adc_block_pin_map[0])); i++)
+ {
+ if (pin == adc_block_pin_map[i].pin) {
+ return adc_block_pin_map[i].channel;
+ }
+ }
+ return -1;
+}
+
+// Private helper function to get pin number for provided channel no.
+int16_t _get_adc_pin_number_for_channel(uint16_t channel) {
+ for (int i = 0; i < (sizeof(adc_block_pin_map) / sizeof(adc_block_pin_map[0])); i++)
+ {
+ if (channel == adc_block_pin_map[i].channel) {
+ return adc_block_pin_map[i].pin;
+ }
+ }
+ return -1;
+}
+
+// Public helper function to get adc block id associated to input pin
+int16_t _get_block_id_for_pin(uint32_t pin) {
+ for (int i = 0; i < (sizeof(adc_block_pin_map) / sizeof(adc_block_pin_map[0])); i++)
+ {
+ if (pin == adc_block_pin_map[i].pin) {
+ return adc_block_pin_map[i].block_id;
+ }
+ }
+ return -1;
+}
+
+// Private helper function to check if ADC Block ID is valid
+static inline bool _is_valid_id(uint8_t adc_id) {
+ if (adc_id >= MAX_BLOCKS) {
+ return false;
+ }
+
+ return true;
+}
+
+static inline machine_adcblock_obj_t *_adc_block_obj_find(uint8_t adc_block_id) {
+ if (!_is_valid_id(adc_block_id)) {
+ mp_raise_TypeError(MP_ERROR_TEXT("Specified ADC id not supported"));
+ }
+
+ for (uint8_t i = 0; i < MAX_BLOCKS; i++)
+ {
+ if (adc_block[i] != NULL) {
+ if (adc_block[i]->id == adc_block_id) {
+ return adc_block[i];
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static inline machine_adcblock_obj_t *_adc_block_obj_alloc() {
+ for (uint8_t i = 0; i < MAX_BLOCKS; i++)
+ {
+ if (adc_block[i] == NULL) {
+ adc_block[i] = mp_obj_malloc(machine_adcblock_obj_t, &machine_adcblock_type);
+ return adc_block[i];
+ }
+ }
+
+ return NULL;
+}
+
+static inline void _adc_block_obj_free(machine_adcblock_obj_t *adc_block_ptr) {
+ for (uint8_t i = 0; i < MAX_BLOCKS; i++)
+ {
+ if (adc_block[i] == adc_block_ptr) {
+ adc_block[i] = NULL;
+ }
+ }
+}
+
+machine_adc_obj_t *adc_block_channel_alloc(machine_adcblock_obj_t *adc_block, mp_obj_t pin) {
+ int pin_addr = mp_hal_get_pin_obj(pin);
+ int16_t adc_channel_no = _get_adc_channel_number_for_pin(pin_addr);
+ adc_block->channel[adc_channel_no] = mp_obj_malloc(machine_adc_obj_t, &machine_adc_type);
+ return adc_block->channel[adc_channel_no];
+}
+
+void adc_block_channel_free(machine_adcblock_obj_t *adc_block, machine_adc_obj_t *adc) {
+ for (uint8_t i = 0; i < ADC_BLOCK_CHANNEL_MAX; i++) {
+ if (adc_block->channel[i] == adc) {
+ adc_block->channel[i] = NULL;
+ }
+ }
+}
+
+// Private helper function to get any associated pin to the given ADC Block id
+static inline uint32_t _adc_block_get_any_pin(uint16_t adc_block_id) {
+ for (uint8_t i = 0; i < MAX_CHANNELS; i++) {
+ if (adc_block_pin_map[i].block_id == adc_block_id) {
+ return adc_block_pin_map[i].pin;
+ }
+ }
+
+ return 0; // there should always an associated pin for block...
+}
+
+// Private helper function to create and initialize new ADC Block
+static void _adc_block_obj_init(machine_adcblock_obj_t *adc_block, uint16_t adc_block_id, uint8_t bits) {
+ cy_rslt_t status = cyhal_adc_init(&(adc_block->adc_obj), _adc_block_get_any_pin(adc_block_id), NULL);
+ if (status != CY_RSLT_SUCCESS) {
+ mp_raise_TypeError(MP_ERROR_TEXT("ADC Initialization failed!"));
+ }
+ const cyhal_adc_config_t adc_config = {
+ .continuous_scanning = false, // Continuous Scanning is disabled
+ .average_count = 1, // Average count disabled
+ .vref = CYHAL_ADC_REF_VDDA, // VREF for Single ended channel set to VDDA
+ .vneg = CYHAL_ADC_VNEG_VSSA, // VNEG for Single ended channel set to VSSA
+ .resolution = 12u, // 12-bit resolution
+ .ext_vref = NC, // No connection
+ .bypass_pin = NC
+ }; // No connection
+
+ status = cyhal_adc_configure(&(adc_block->adc_obj), &adc_config);
+ if (status != CY_RSLT_SUCCESS) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("ADC configuration update failed. Error: %ld ! \n"), status);
+ }
+
+ adc_block->id = adc_block_id;
+ adc_block->bits = bits;
+}
+
+static void _adc_block_obj_deinit(machine_adcblock_obj_t *adc_block) {
+ // Includes all channels deinitialization and deallocation
+ for (uint8_t i = 0; i < ADC_BLOCK_CHANNEL_MAX; i++) {
+ if (adc_block->channel[i] != NULL) {
+ adc_obj_deinit(adc_block->channel[i]);
+ adc_block_channel_free(adc_block, adc_block->channel[i]);
+ }
+ }
+ cyhal_adc_free(&(adc_block->adc_obj));
+}
+
+machine_adcblock_obj_t *machine_adcblock_make_init(uint8_t adc_id, uint8_t bits) {
+ machine_adcblock_obj_t *adc_block = _adc_block_obj_find(adc_id);
+
+ // No existing adc_block for given id. Create new one.
+ if (adc_block == NULL) {
+ adc_block = _adc_block_obj_alloc();
+ if (adc_block == NULL) {
+ mp_raise_TypeError(MP_ERROR_TEXT("ADC Blocks not available. Fully allocated"));
+ }
+ _adc_block_obj_init(adc_block, adc_id, bits);
+ }
+
+ return adc_block;
+}
+
+machine_adcblock_obj_t *adc_block_obj_find(mp_obj_t pin) {
+ int pin_addr = mp_hal_get_pin_obj(pin);
+ int adc_block_id = _get_block_id_for_pin(pin_addr);
+
+ if (adc_block_id == -1) {
+ mp_raise_ValueError(MP_ERROR_TEXT("No associated ADC Block for specified pin!"));
+ }
+
+ return _adc_block_obj_find(adc_block_id);
+}
+
+machine_adcblock_obj_t *adc_block_obj_init(mp_obj_t pin) {
+ int pin_addr = mp_hal_get_pin_obj(pin);
+ int adc_block_id = _get_block_id_for_pin(pin_addr);
+
+ if (adc_block_id == -1) {
+ mp_raise_ValueError(MP_ERROR_TEXT("No associated ADC Block for specified pin!"));
+ }
+
+ return machine_adcblock_make_init(adc_block_id, DEFAULT_ADC_BITS);
+}
+
+machine_adc_obj_t *adc_block_channel_find(machine_adcblock_obj_t *adc_block, mp_obj_t pin) {
+ int pin_addr = mp_hal_get_pin_obj(pin);
+ int16_t adc_channel_no = _get_adc_channel_number_for_pin(pin_addr);
+ return adc_block->channel[adc_channel_no];
+}
+
+// machine_adcblock_print()
+static void machine_adcblock_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_adcblock_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "ADCBlock(%u, bits=%u)", self->id, self->bits);
+}
+
+// ADCBlock constructor
+static mp_obj_t machine_adcblock_make_new(const mp_obj_type_t *type, size_t n_pos_args, size_t n_kw_args, const mp_obj_t *all_args) {
+ mp_arg_check_num(n_pos_args, n_kw_args, 1, MP_OBJ_FUN_ARGS_MAX, true);
+
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw_args, all_args + n_pos_args);
+
+ // Get ADC ID
+ uint8_t adc_id = mp_obj_get_int(all_args[0]);
+
+ // Get ADC bits
+ enum { ARG_bits };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_bits, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_ADC_BITS} }
+ };
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_pos_args - 1, all_args + 1, &kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ uint8_t bits = args[ARG_bits].u_int;
+ if (bits != DEFAULT_ADC_BITS) {
+ mp_raise_TypeError(MP_ERROR_TEXT("Invalid bits. Current ADC configuration supports only 11 bits resolution!"));
+ }
+
+ return MP_OBJ_FROM_PTR(machine_adcblock_make_init(adc_id, bits));
+}
+
+// ADCBlock deinit()
+static mp_obj_t machine_adcblock_deinit(mp_obj_t self_in) {
+ machine_adcblock_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ _adc_block_obj_deinit(self);
+ _adc_block_obj_free(self);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_adcblock_deinit_obj, machine_adcblock_deinit);
+
+// ADCBlock connect()
+static mp_obj_t machine_adcblock_connect(size_t n_pos_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ machine_adcblock_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
+ uint8_t channel = -1;
+ uint32_t pin = 0;
+ mp_obj_t pin_name;
+
+ if (n_pos_args == 2) {
+ // If channel only specified : If mp_obj_is_int is true, then it is channel
+ if (mp_obj_is_int(pos_args[1])) {
+ channel = mp_obj_get_int(pos_args[1]);
+ pin = _get_adc_pin_number_for_channel(channel);
+ pin_name = pin_name_by_addr(mp_obj_new_int(pin));
+ } else {
+ pin_name = pos_args[1];
+ }
+ } else if (n_pos_args == 3) {
+ channel = mp_obj_get_int(pos_args[1]);
+ uint32_t exp_pin = _get_adc_pin_number_for_channel(channel);
+
+ pin_name = pos_args[2];
+ pin = mp_hal_get_pin_obj(pin_name);
+ if (exp_pin != pin) {
+ mp_raise_TypeError(MP_ERROR_TEXT("Wrong pin specified for the mentioned channel"));
+ }
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Too many positional args"));
+ }
+
+ machine_adc_obj_t *adc = adc_block_channel_find(self, pin_name);
+ if (adc == NULL) {
+ adc = adc_block_channel_alloc(self, pin_name);
+ adc_obj_init(adc, self, pin_name, DEFAULT_ADC_ACQ_NS);
+ }
+
+ return adc;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_adcblock_connect_obj, 2, machine_adcblock_connect);
+
+void machine_adcblock_deinit_all(void) {
+ for (uint8_t i = 0; i < MAX_BLOCKS; i++) {
+ if (adc_block[i] != NULL) {
+ machine_adcblock_deinit(adc_block[i]);
+ }
+ }
+}
+
+
+static const mp_rom_map_elem_t machine_adcblock_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_adcblock_deinit_obj)},
+ { MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&machine_adcblock_connect_obj) },
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_adcblock_deinit_obj) },
+};
+static MP_DEFINE_CONST_DICT(machine_adcblock_locals_dict, machine_adcblock_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_adcblock_type,
+ MP_QSTR_ADCBlock,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_adcblock_make_new,
+ print, machine_adcblock_print,
+ locals_dict, &machine_adcblock_locals_dict
+ );
diff --git a/ports/psoc6/machine_adcblock.h b/ports/psoc6/machine_adcblock.h
new file mode 100644
index 0000000000000..76f72d87868ad
--- /dev/null
+++ b/ports/psoc6/machine_adcblock.h
@@ -0,0 +1,58 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#ifndef MICROPY_INCLUDED_MACHINE_ADCBLOCK_H
+#define MICROPY_INCLUDED_MACHINE_ADCBLOCK_H
+
+// These should go into the specific BSP
+#define DEFAULT_ADC_BITS 12
+#define ADC_BLOCK_CHANNEL_MAX 6
+#define DEFAULT_ADC_ACQ_NS 1000
+
+#define ADCBLOCK0 (0)
+#define ADCBLOCK_CHANNEL_MAX (1)
+#define MAX_BLOCKS (1)
+#define MAX_CHANNELS (6)
+
+typedef struct _machine_adc_obj_t machine_adc_obj_t; /* Forward declaration of adc_obj */
+
+typedef struct _machine_adcblock_obj_t {
+ mp_obj_base_t base;
+ cyhal_adc_t adc_obj;
+ uint8_t id;
+ uint8_t bits;
+ machine_adc_obj_t *channel[ADC_BLOCK_CHANNEL_MAX];
+} machine_adcblock_obj_t;
+
+typedef struct
+{
+ uint16_t block_id;
+ uint16_t channel;
+ uint32_t pin;
+}adc_block_channel_pin_map_t;
+
+void machine_adcblock_deinit_all(void);
+#endif // MICROPY_INCLUDED_MACHINE_ADCBLOCK_H
diff --git a/ports/psoc6/machine_bitstream.c b/ports/psoc6/machine_bitstream.c
new file mode 100644
index 0000000000000..a3dee1030cce3
--- /dev/null
+++ b/ports/psoc6/machine_bitstream.c
@@ -0,0 +1,253 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include "py/mpconfig.h"
+#include "py/mphal.h"
+#include "FreeRTOS.h"
+#include "task.h"
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "extmod/modmachine.h"
+
+#if MICROPY_PY_MACHINE_BITSTREAM
+
+const uint32_t timing_sequence_1[] = {500, 1125, 800, 750};
+const uint32_t timing_sequence_2[] = {400, 850, 800, 450}; // WS2812B 800kHz
+const uint32_t timing_sequence_3[] = {300, 900, 600, 600}; // SK6812
+const uint32_t timing_sequence_4[] = {800, 1700, 1600, 900}; // WS2812B 400kHz
+
+uint32_t range = 0;
+
+void machine_bitstream_high_low(mp_hal_pin_obj_t pin, uint32_t *timing_ns, const uint8_t *buf, size_t len) {
+
+ GPIO_PRT_Type *base = CYHAL_GET_PORTADDR(pin);
+ uint32_t pinNum = CYHAL_GET_PIN(pin);
+ uint32_t fcpu_mhz = mp_hal_get_cpu_freq() / 1000000;
+ if (fcpu_mhz != 100) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Only 100 MHz is supported"));
+ }
+
+ if (memcmp(timing_ns, timing_sequence_1, 4 * sizeof(uint32_t)) == 0) {
+ range = 0;
+ } else if (memcmp(timing_ns, timing_sequence_2, 4 * sizeof(uint32_t)) == 0) {
+ range = 1;
+ } else if (memcmp(timing_ns, timing_sequence_3, 4 * sizeof(uint32_t)) == 0) {
+ range = 2;
+ } else if (memcmp(timing_ns, timing_sequence_4, 4 * sizeof(uint32_t)) == 0) {
+ range = 3;
+ } else {
+ for (size_t i = 0; i < 4; ++i) {
+ if ((timing_ns[i]) <= 1500) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Given timing is not supported. Use the defined timings if timing is below 1500 ns"));
+ }
+ }
+ range = 4;
+ }
+
+ // Convert ns to cycles [high_time_0, low_time_0, high_time_1, low_time_1].
+ for (size_t i = 0; i < 4; ++i) {
+ timing_ns[i] = fcpu_mhz * timing_ns[i] / 1000;
+ }
+
+ taskENTER_CRITICAL(); // FreeRTOS function for critical section
+
+ switch (range)
+ {
+ case 0:
+ for (size_t i = 0; i < len; i++)
+ {
+
+ uint8_t b = buf[i];
+ // Send each bit of the byte
+ for (size_t j = 0; j < 8; j++)
+ {
+ bool bit = (b & 0x80) != 0;
+ b <<= 1;
+ switch (bit)
+ {
+ // Send a 1-bit
+ case 1:
+ // sendOneBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ // Send a 0-bit
+ case 0:
+ // sendZeroBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ }
+ }
+ }
+
+ break;
+
+ case 1:
+ for (size_t i = 0; i < len; i++)
+ {
+
+ uint8_t b = buf[i];
+ // Send each bit of the byte
+ for (size_t j = 0; j < 8; j++)
+ {
+ bool bit = (b & 0x80) != 0;
+ b <<= 1;
+ switch (bit)
+ {
+ // Send a 1-bit
+ case 1:
+ // sendOneBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ // Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ // Send a 0-bit
+ case 0:
+ // sendZeroBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ }
+ }
+ }
+
+ break;
+
+ case 2:
+ for (size_t i = 0; i < len; i++)
+ {
+
+ uint8_t b = buf[i];
+ // Send each bit of the byte
+ for (size_t j = 0; j < 8; j++)
+ {
+ bool bit = (b & 0x80) != 0;
+ b <<= 1;
+ switch (bit)
+ {
+ // Send a 1-bit
+ case 1:
+ // sendOneBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ // Send a 0-bit
+ case 0:
+ // sendZeroBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ }
+ }
+ }
+
+ case 3:
+ for (size_t i = 0; i < len; i++)
+ {
+
+ uint8_t b = buf[i];
+ // Send each bit of the byte
+ for (size_t j = 0; j < 8; j++)
+ {
+ bool bit = (b & 0x80) != 0;
+ b <<= 1;
+ switch (bit)
+ {
+ // Send a 1-bit
+ case 1:
+ // sendOneBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ // Send a 0-bit
+ case 0:
+ // sendZeroBit();
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_GPIO_Write(base, pinNum, 0);
+ break;
+ }
+ }
+ }
+
+ break;
+ default:
+ for (size_t i = 0; i < len; ++i) {
+ uint8_t b = buf[i];
+ for (size_t j = 0; j < 8; ++j) {
+ uint32_t *t = &timing_ns[b >> 6 & 2];
+ Cy_GPIO_Write(base, pinNum, 1);
+ Cy_SysLib_DelayCycles(t[0]);
+ Cy_GPIO_Write(base, pinNum, 0);
+ Cy_SysLib_DelayCycles(t[1]);
+ b <<= 1;
+ }
+ }
+ break;
+ }
+ taskEXIT_CRITICAL();
+}
+
+#endif // MICROPY_PY_MACHINE_BITSTREAM
diff --git a/ports/psoc6/machine_i2c.c b/ports/psoc6/machine_i2c.c
new file mode 100644
index 0000000000000..27fcb8f8de8bc
--- /dev/null
+++ b/ports/psoc6/machine_i2c.c
@@ -0,0 +1,358 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+
+// mpy includes
+#include "extmod/modmachine.h"
+#include "py/runtime.h"
+#include "py/mphal.h"
+
+
+// MTB includes
+#include "cybsp.h"
+
+
+// port-specific includes
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+#include "mplogger.h"
+
+#define DEFAULT_I2C_FREQ (400000)
+#define PSOC_I2C_MASTER_MODE (CYHAL_I2C_MODE_MASTER)
+
+#define i2c_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+typedef struct _machine_i2c_obj_t {
+ mp_obj_base_t base;
+ int id; // This parameter is unused and added for compliance with reference API.
+ cyhal_i2c_t i2c_obj;
+ uint32_t scl_pin;
+ uint32_t sda_pin;
+ cyhal_i2c_cfg_t cfg;
+ mp_obj_t callback;
+} machine_i2c_obj_t;
+
+machine_i2c_obj_t *i2c_obj[MAX_I2C] = { NULL };
+
+static inline machine_i2c_obj_t *i2c_obj_alloc(bool is_slave) {
+ for (uint8_t i = 0; i < MAX_I2C; i++)
+ {
+ if (i2c_obj[i] == NULL) {
+
+ const mp_obj_type_t *obj_type;
+ if (is_slave) {
+ obj_type = &machine_i2c_slave_type;
+ } else {
+ obj_type = &machine_i2c_type;
+ }
+ i2c_obj[i] = mp_obj_malloc(machine_i2c_obj_t, obj_type);
+ return i2c_obj[i];
+ }
+ }
+
+ return NULL;
+}
+
+static inline void i2c_obj_free(machine_i2c_obj_t *i2c_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_I2C; i++)
+ {
+ if (i2c_obj[i] == i2c_obj_ptr) {
+ i2c_obj[i] = NULL;
+ }
+ }
+}
+
+static void i2c_init(machine_i2c_obj_t *machine_i2c_obj, uint32_t freq_hz, int16_t slave_addr) {
+ // Define the I2C master configuration structure
+
+ // Set cgf frequency
+ machine_i2c_obj->cfg.frequencyhal_hz = freq_hz;
+
+ // Set mode master or slave
+ if (slave_addr <= 0) {
+ machine_i2c_obj->cfg.is_slave = CYHAL_I2C_MODE_MASTER;
+ machine_i2c_obj->cfg.address = 0;
+ } else {
+ machine_i2c_obj->cfg.is_slave = CYHAL_I2C_MODE_SLAVE;
+ machine_i2c_obj->cfg.address = slave_addr;
+ }
+
+ // Initialize I2C master, set the SDA and SCL pins and assign a new clock
+ cy_rslt_t result = cyhal_i2c_init(&machine_i2c_obj->i2c_obj, machine_i2c_obj->sda_pin, machine_i2c_obj->scl_pin, NULL);
+ assert_pin_phy_used(result);
+ i2c_assert_raise_val("I2C initialisation failed with return code %lx !", result);
+
+ result = cyhal_i2c_configure(&machine_i2c_obj->i2c_obj, &(machine_i2c_obj->cfg));
+ i2c_assert_raise_val("I2C initialisation failed with return code %lx !", result);
+}
+
+static void machine_i2c_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "I2C(freq=%u, scl=%u, sda=%u, mode=%u, addr=%u)", self->cfg.frequencyhal_hz, self->scl_pin, self->sda_pin, self->cfg.is_slave, self->cfg.address);
+}
+
+mp_obj_t machine_i2c_master_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ mp_arg_check_num(n_args, n_kw, 0, 4, true);
+
+ enum { ARG_id, ARG_freq, ARG_scl, ARG_sda };
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_id, MP_ARG_INT, {.u_int = -1}},
+ { MP_QSTR_freq, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_I2C_FREQ} },
+ { MP_QSTR_scl, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_sda, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} }
+ };
+
+ // Parse args.
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ machine_i2c_obj_t *self = i2c_obj_alloc(false);
+ if (self == NULL) {
+ return mp_const_none;
+ }
+
+ // set id if provided
+ if (args[ARG_id].u_int != -1) {
+ self->id = args[ARG_id].u_int;
+ mp_printf(&mp_plat_print, "machine.I2C: ID parameter is ignored in this port.\n");
+ }
+
+ // get scl & sda pins & configure them
+ self->scl_pin = pin_addr_by_name(args[ARG_scl].u_obj);
+ self->sda_pin = pin_addr_by_name(args[ARG_sda].u_obj);
+
+ // initialise I2C at cyhal level
+ i2c_init(self, args[ARG_freq].u_int, 0);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+mp_obj_t machine_i2c_slave_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ mp_arg_check_num(n_args, n_kw, 0, 4, true);
+
+ enum { ARG_id, ARG_freq, ARG_scl, ARG_sda, ARG_addr };
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_id, MP_ARG_INT, {.u_int = -1}},
+ { MP_QSTR_freq, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_I2C_FREQ} },
+ { MP_QSTR_scl, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_sda, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_addr, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1}}
+ };
+
+ // Parse args.
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ machine_i2c_obj_t *self = i2c_obj_alloc(true);
+ if (self == NULL) {
+ return mp_const_none;
+ }
+
+ // set id if provided
+ if (args[ARG_id].u_int != -1) {
+ self->id = args[ARG_id].u_int;
+ mp_printf(&mp_plat_print, "machine.I2C: ID parameter is ignored in this port.\n");
+ }
+
+ // get scl & sda pins & configure them
+ self->scl_pin = pin_addr_by_name(args[ARG_scl].u_obj);
+ self->sda_pin = pin_addr_by_name(args[ARG_sda].u_obj);
+
+ // initialise I2C at cyhal level
+ i2c_init(self, args[ARG_freq].u_int, args[ARG_addr].u_int);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static void machine_i2c_deinit(mp_obj_base_t *self_in) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cyhal_i2c_free(&(self->i2c_obj));
+ i2c_obj_free(self);
+}
+
+static int machine_i2c_transfer(mp_obj_base_t *self_in, uint16_t addr, size_t len, uint8_t *buf, unsigned int flags) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cy_rslt_t result = CY_RSLT_SUCCESS;
+ bool send_stop = (flags & MP_MACHINE_I2C_FLAG_STOP) ? true : false;
+ uint32_t timeout = 0;
+
+ if ((flags & MP_MACHINE_I2C_FLAG_READ) == MP_MACHINE_I2C_FLAG_READ) {
+ result = cyhal_i2c_master_read(&self->i2c_obj, addr, buf, len, timeout, send_stop);
+ i2c_assert_raise_val("I2C transfer failed with return code %lx !", result);
+
+ return len;
+ } else {
+ // handle scan type bus checks and send stop
+ if (buf == NULL) {
+ result = cyhal_i2c_master_write(&self->i2c_obj, addr, buf, 0, 50, send_stop);
+
+ if ((result != CY_RSLT_SUCCESS)) {
+ // these 2 errors occur if nothing is attached to sda/scl, but they are pulled-up (0xaa2004) or not pulled-up (0xaa2003).
+ // In the latter case, due to not reaction at all the timeout has to expire. Latency is therefore high.
+ if (result != 0xaa2004 && result != 0xaa2003) {
+ i2c_assert_raise_val("I2C transfer failed with return code %lx !", result);
+ }
+
+ return 1;
+ }
+
+ return len;
+ } else {
+ result = cyhal_i2c_master_write(&self->i2c_obj, addr, buf, len, timeout, send_stop);
+ i2c_assert_raise_val("I2C transfer failed with return code %lx !", result);
+ }
+
+ return len;
+ }
+}
+
+static const mp_machine_i2c_p_t machine_i2c_p = {
+ .deinit = machine_i2c_deinit,
+ .transfer_single = machine_i2c_transfer,
+ .transfer = mp_machine_i2c_transfer_adaptor
+};
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_i2c_type,
+ MP_QSTR_I2C,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_i2c_master_make_new,
+ print, machine_i2c_print,
+ protocol, &machine_i2c_p,
+ locals_dict, &mp_machine_i2c_locals_dict
+ );
+
+#if MICROPY_PY_MACHINE_I2C_SLAVE
+
+static mp_obj_t machine_i2c_slave_deinit(mp_obj_t self_in) {
+ mp_obj_base_t *self = MP_OBJ_TO_PTR(self_in);
+ machine_i2c_deinit(self);
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_1(machine_i2c_slave_deinit_obj, machine_i2c_slave_deinit);
+
+static mp_obj_t machine_i2c_slave_configure_receive_buffer(mp_obj_t self_in, mp_obj_t buf_in) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
+
+ cy_rslt_t result = cyhal_i2c_slave_config_write_buffer(&self->i2c_obj, bufinfo.buf, bufinfo.len);
+ i2c_assert_raise_val("I2C Slave configure receive buffer failed with return code %lx !", result);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_i2c_slave_conf_rx_buffer_obj, machine_i2c_slave_configure_receive_buffer);
+
+static mp_obj_t machine_i2c_slave_configure_transmit_buffer(mp_obj_t self_in, mp_obj_t buf_in) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
+
+ cy_rslt_t result = cyhal_i2c_slave_config_read_buffer(&self->i2c_obj, bufinfo.buf, bufinfo.len);
+ i2c_assert_raise_val("I2C Slave configure receive buffer failed with return code %lx !", result);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_i2c_slave_conf_tx_buffer_obj, machine_i2c_slave_configure_transmit_buffer);
+
+static void i2c_irq_handler(void *callback_arg, cyhal_i2c_event_t event) {
+ machine_i2c_obj_t *self = callback_arg;
+ mp_sched_schedule(self->callback, mp_obj_new_int(event));
+}
+
+static mp_obj_t machine_i2c_slave_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_callback, ARG_events, ARG_priority};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_callback, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_events, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = CYHAL_I2C_EVENT_NONE }},
+ { MP_QSTR_priority, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 3 }},
+ };
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ self->callback = args[ARG_callback].u_obj;
+
+ cyhal_i2c_register_callback(&self->i2c_obj, i2c_irq_handler, self);
+ cyhal_i2c_enable_event(&self->i2c_obj, args[ARG_callback].u_int, args[ARG_priority].u_int, true);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_i2c_slave_irq_obj, 1, machine_i2c_slave_irq);
+
+static mp_obj_t machine_i2c_slave_irq_disable(mp_obj_t self_in) {
+ machine_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cyhal_i2c_enable_event(&self->i2c_obj, CYHAL_I2C_EVENT_NONE, 3, false);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_i2c_slave_irq_disable_obj, machine_i2c_slave_irq_disable);
+
+void machine_i2c_deinit_all() {
+ for (uint8_t i = 0; i < MAX_I2C; i++) {
+ if (i2c_obj[i] != NULL) {
+ machine_i2c_deinit((mp_obj_base_t *)(i2c_obj[i]));
+ }
+ }
+}
+
+
+static const mp_rom_map_elem_t machine_i2c_slave_locals_dict_table[] = {
+ // Functions
+ { MP_ROM_QSTR(MP_QSTR_conf_receive_buffer), MP_ROM_PTR(&machine_i2c_slave_conf_rx_buffer_obj) },
+ { MP_ROM_QSTR(MP_QSTR_conf_transmit_buffer), MP_ROM_PTR(&machine_i2c_slave_conf_tx_buffer_obj) },
+ { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_i2c_slave_irq_obj) },
+ { MP_ROM_QSTR(MP_QSTR_irq_disable), MP_ROM_PTR(&machine_i2c_slave_irq_disable_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_i2c_slave_deinit_obj) },
+
+ // Const
+ { MP_ROM_QSTR(MP_QSTR_RD_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_READ_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_WR_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_WRITE_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_RD_BUF_IN_FIFO_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_RD_IN_FIFO_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_RD_BUF_EMPTY_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_RD_BUF_EMPTY_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_RD_CMPLT_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_RD_CMPLT_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_WR_CMPLT_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_WR_CMPLT_EVENT) },
+ { MP_ROM_QSTR(MP_QSTR_ERR_EVENT), MP_ROM_INT(CYHAL_I2C_SLAVE_ERR_EVENT) },
+};
+static MP_DEFINE_CONST_DICT(machine_i2c_slave_locals_dict, machine_i2c_slave_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_i2c_slave_type,
+ MP_QSTR_I2CSlave,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_i2c_slave_make_new,
+ print, machine_i2c_print,
+ locals_dict, &machine_i2c_slave_locals_dict
+ );
+#endif
diff --git a/ports/psoc6/machine_i2s.c b/ports/psoc6/machine_i2s.c
new file mode 100644
index 0000000000000..275fc1461e36b
--- /dev/null
+++ b/ports/psoc6/machine_i2s.c
@@ -0,0 +1,394 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include
+
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "machine_pin_phy.h"
+#include "modmachine.h"
+
+#define i2s_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+cyhal_clock_t audio_clock;
+
+// DMA ping-pong buffer size was empirically determined. It is a tradeoff between:
+// 1. memory use (smaller buffer size desirable to reduce memory footprint)
+// 2. interrupt frequency (larger buffer size desirable to reduce interrupt frequency)
+#define SIZEOF_DMA_BUFFER (256)
+#define SIZEOF_HALF_DMA_BUFFER (SIZEOF_DMA_BUFFER / 2)
+#define SIZEOF_DMA_BUFFER_IN_BYTES (256 * sizeof(uint32_t))
+#define SIZEOF_HALF_DMA_BUFFER_IN_BYTES (SIZEOF_DMA_BUFFER_IN_BYTES / 2)
+
+// TODO: For non-blocking mode, to avoid underflow/overflow, sample data is written/read to/from the ring buffer at a rate faster
+// than the DMA transfer rate
+#define NON_BLOCKING_RATE_MULTIPLIER (4)
+#define SIZEOF_NON_BLOCKING_COPY_IN_BYTES (SIZEOF_HALF_DMA_BUFFER * NON_BLOCKING_RATE_MULTIPLIER)
+
+typedef enum {
+ RX,
+ TX
+} i2s_mode_t;
+
+typedef struct _machine_i2s_obj_t {
+ mp_obj_base_t base;
+ uint8_t i2s_id; // Private variable in this port case. ID not associated to any port pin i2s group.
+ cyhal_i2s_t i2s_obj;
+ uint32_t sck;
+ uint32_t ws;
+ uint32_t sd;
+ uint16_t mode;
+ int8_t bits;
+ uint8_t channel_resolution_bits;
+ format_t format;
+ int32_t rate;
+ int32_t ibuf;
+ mp_obj_t callback_for_non_blocking;
+ io_mode_t io_mode;
+ uint32_t dma_buffer[SIZEOF_DMA_BUFFER];
+ uint32_t *dma_active_buf_p;
+ uint32_t *dma_idle_buf_p;
+ ring_buf_t ring_buffer;
+ uint8_t *ring_buffer_storage;
+ non_blocking_descriptor_t non_blocking_descriptor;
+} machine_i2s_obj_t;
+
+static const int8_t i2s_frame_map[NUM_I2S_USER_FORMATS][I2S_RX_FRAME_SIZE_IN_BYTES] = {
+ { 0, 1, -1, -1, -1, -1, -1, -1 }, // Mono, 16-bits
+ { 0, 1, 2, 3, -1, -1, -1, -1 }, // Mono, 32-bits
+ { 0, 1, -1, -1, 2, 3, -1, -1 }, // Stereo, 16-bits
+ { 0, 1, 2, 3, 4, 5, 6, 7 }, // Stereo, 32-bits
+};
+
+static int8_t get_frame_mapping_index(int8_t bits, format_t format) {
+ if (format == MONO) {
+ if (bits == 16) {
+ return 0;
+ } else { // 32 bits
+ return 1;
+ }
+ } else { // STEREO
+ if (bits == 16) {
+ return 2;
+ } else { // 32 bits
+ return 3;
+ }
+ }
+}
+
+
+static inline bool i2s_dma_is_tx_complete(cyhal_i2s_event_t event) {
+ return 0u != (event & CYHAL_I2S_ASYNC_TX_COMPLETE);
+}
+
+static inline bool i2s_dma_is_rx_complete(cyhal_i2s_event_t event) {
+ return 0u != (event & CYHAL_I2S_ASYNC_RX_COMPLETE);
+}
+
+uint8_t get_word_byte_size(machine_i2s_obj_t *self) {
+ uint8_t res_bits = self->channel_resolution_bits;
+ if (res_bits <= 8) {
+ return 1;
+ } else if (res_bits > 8 && res_bits <= 16) {
+ return 2;
+ } else {
+ return 4;
+ }
+}
+
+static inline void i2s_dma_rx(machine_i2s_obj_t *self) {
+ uint16_t dma_half_buff_word_size = SIZEOF_HALF_DMA_BUFFER_IN_BYTES / get_word_byte_size(self);
+ cy_rslt_t result = cyhal_i2s_read_async(&self->i2s_obj, self->dma_active_buf_p, dma_half_buff_word_size);
+ i2s_assert_raise_val("I2S DMA read failed with return code %lx !", result);
+}
+
+static inline void i2s_dma_tx(machine_i2s_obj_t *self) {
+ uint16_t dma_half_buff_word_size = SIZEOF_HALF_DMA_BUFFER_IN_BYTES / get_word_byte_size(self);
+ cy_rslt_t result = cyhal_i2s_write_async(&self->i2s_obj, self->dma_active_buf_p, dma_half_buff_word_size);
+ i2s_assert_raise_val("I2S DMA write configure failed with return code %lx !", result);
+}
+
+static void i2s_dma_from_dmabuf_to_ringbuf(machine_i2s_obj_t *self) {
+ uint8_t dma_sample_size_in_bytes = (self->bits == 16? 2 : 4) * (self->format == STEREO ? 2: 1);
+ uint8_t *dma_buff_p = (uint8_t *)self->dma_idle_buf_p;
+ uint32_t num_bytes_needed_from_ringbuf = SIZEOF_HALF_DMA_BUFFER_IN_BYTES * (I2S_RX_FRAME_SIZE_IN_BYTES / dma_sample_size_in_bytes);
+
+ // when space exists, copy samples into ring buffer
+ if (ringbuf_available_space(&self->ring_buffer) >= num_bytes_needed_from_ringbuf) {
+ uint8_t f_index = get_frame_mapping_index(self->bits, self->format);
+ uint32_t i = 0;
+ while (i < SIZEOF_HALF_DMA_BUFFER_IN_BYTES) {
+ for (uint8_t j = 0; j < I2S_RX_FRAME_SIZE_IN_BYTES; j++) {
+ int8_t r_to_a_mapping = i2s_frame_map[f_index][j];
+ if (r_to_a_mapping != -1) {
+ ringbuf_push(&self->ring_buffer, dma_buff_p[i]);
+ i++;
+ } else { // r_a_mapping == -1
+ ringbuf_push(&self->ring_buffer, -1);
+ }
+ }
+ }
+ }
+}
+
+static void i2s_dma_from_ringbuf_to_dmabuf(machine_i2s_obj_t *self) {
+ uint8_t *dma_buffer_p = (uint8_t *)self->dma_idle_buf_p;
+ memset(dma_buffer_p, 0, SIZEOF_HALF_DMA_BUFFER_IN_BYTES);
+ if (ringbuf_available_data(&self->ring_buffer) >= SIZEOF_HALF_DMA_BUFFER_IN_BYTES) {
+ for (uint32_t i = 0; i < SIZEOF_HALF_DMA_BUFFER_IN_BYTES; i++) {
+ ringbuf_pop(&self->ring_buffer, &dma_buffer_p[i]);
+ }
+ }
+}
+
+static inline void i2s_dma_swap_active_dmabuf(machine_i2s_obj_t *self) {
+ uint32_t *temp = self->dma_active_buf_p;
+ self->dma_active_buf_p = self->dma_idle_buf_p;
+ self->dma_idle_buf_p = temp;
+}
+
+static void i2s_dma_tx_event_process(machine_i2s_obj_t *self, cyhal_i2s_event_t event) {
+ if (i2s_dma_is_tx_complete(event)) {
+
+ if ((self->io_mode == NON_BLOCKING) && (self->non_blocking_descriptor.copy_in_progress)) {
+ copy_appbuf_to_ringbuf_non_blocking(self);
+ }
+
+ i2s_dma_swap_active_dmabuf(self);
+ i2s_dma_tx(self);
+ i2s_dma_from_ringbuf_to_dmabuf(self);
+ }
+}
+
+static void i2s_dma_rx_event_process(machine_i2s_obj_t *self, cyhal_i2s_event_t event) {
+ if (i2s_dma_is_rx_complete(event)) {
+
+ i2s_dma_swap_active_dmabuf(self);
+ i2s_dma_rx(self);
+ i2s_dma_from_dmabuf_to_ringbuf(self);
+
+ if ((self->io_mode == NON_BLOCKING) && (self->non_blocking_descriptor.copy_in_progress)) {
+ fill_appbuf_from_ringbuf_non_blocking(self);
+ }
+ }
+}
+
+static void i2s_dma_irq_handler(void *arg, cyhal_i2s_event_t event) {
+ machine_i2s_obj_t *self = (machine_i2s_obj_t *)arg;
+
+ void (*i2s_dma_event_process_func)(machine_i2s_obj_t *, cyhal_i2s_event_t);
+ if (self->mode == TX) {
+ i2s_dma_event_process_func = i2s_dma_tx_event_process;
+ } else if (self->mode == RX) {
+ i2s_dma_event_process_func = i2s_dma_rx_event_process;
+ }
+
+ i2s_dma_event_process_func(self, event);
+}
+
+static void i2s_init(machine_i2s_obj_t *self, cyhal_clock_t *clock) {
+ cyhal_i2s_pins_t pins = { .sck = self->sck, .ws = self->ws, .data = self->sd, .mclk = NC };
+ cyhal_i2s_config_t config =
+ {
+ .is_tx_slave = true,
+ .is_rx_slave = false,
+ .mclk_hz = 0,
+ .channel_length = self->bits,
+ .word_length = self->channel_resolution_bits,
+ .sample_rate_hz = self->rate
+ };
+
+ cyhal_i2s_pins_t *tx_pins, *rx_pins;
+
+ if (self->mode == TX) {
+ tx_pins = &pins;
+ rx_pins = NULL;
+ } else { // Rx
+ tx_pins = NULL;
+ rx_pins = &pins;
+ }
+
+ cy_rslt_t result = cyhal_i2s_init(&self->i2s_obj, tx_pins, rx_pins, &config, clock);
+ assert_pin_phy_used(result);
+ i2s_assert_raise_val("I2S initialisation failed with return code %lx !", result);
+}
+
+static inline void i2s_dma_irq_configure(machine_i2s_obj_t *self) {
+ cyhal_i2s_register_callback(&self->i2s_obj, &i2s_dma_irq_handler, self);
+
+ cyhal_i2s_event_t event;
+ if (self->mode == TX) {
+ event = CYHAL_I2S_ASYNC_TX_COMPLETE;
+ } else {
+ event = CYHAL_I2S_ASYNC_RX_COMPLETE;
+ }
+
+ cyhal_i2s_enable_event(&self->i2s_obj, event, CYHAL_ISR_PRIORITY_DEFAULT, true);
+
+ cy_rslt_t result = cyhal_i2s_set_async_mode(&self->i2s_obj, CYHAL_ASYNC_DMA, CYHAL_DMA_PRIORITY_DEFAULT);
+ i2s_assert_raise_val("I2S set DMA mode failed with return code %lx !", result);
+}
+
+static inline void i2s_dma_init_buff(machine_i2s_obj_t *self) {
+ for (uint32_t i = 0; i < SIZEOF_DMA_BUFFER; i++) {
+ self->dma_buffer[i] = 0;
+ }
+
+ self->dma_active_buf_p = self->dma_buffer;
+ self->dma_idle_buf_p = &self->dma_buffer[SIZEOF_HALF_DMA_BUFFER];
+}
+
+static void i2s_dma_tx_init(machine_i2s_obj_t *self) {
+ i2s_dma_tx(self);
+
+ cy_rslt_t result = cyhal_i2s_start_tx(&self->i2s_obj);
+ i2s_assert_raise_val("I2S tx start failed with return code %lx !", result);
+}
+
+static void i2s_dma_rx_init(machine_i2s_obj_t *self) {
+ i2s_dma_rx(self);
+
+ cy_rslt_t result = cyhal_i2s_start_rx(&self->i2s_obj);
+ i2s_assert_raise_val("I2S rx start failed with return code %lx !", result);
+}
+
+static void i2s_dma_init(machine_i2s_obj_t *self) {
+ i2s_dma_irq_configure(self);
+ i2s_dma_init_buff(self);
+
+ void (*i2s_dma_mode_init_func)(machine_i2s_obj_t *self);
+
+ if (self->mode == TX) {
+ i2s_dma_mode_init_func = i2s_dma_tx_init;
+ } else { // Rx
+ i2s_dma_mode_init_func = i2s_dma_rx_init;
+ }
+
+ i2s_dma_mode_init_func(self);
+}
+
+static void mp_machine_i2s_init_helper(machine_i2s_obj_t *self, mp_arg_val_t *args) {
+
+ // is Mode valid?
+ i2s_mode_t i2s_mode = args[ARG_mode].u_int;
+ if ((i2s_mode != RX) &&
+ (i2s_mode != TX)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid mode"));
+ }
+
+ // is Bits valid?
+ int8_t i2s_bits_resolution = args[ARG_bits].u_int;
+ if (i2s_bits_resolution < 1 || i2s_bits_resolution > 32) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid bits"));
+ }
+ int8_t i2s_bits;
+ if (i2s_bits_resolution <= 16) {
+ i2s_bits = 16;
+ } else {
+ i2s_bits = 32;
+ }
+
+ // is Format valid?
+ format_t i2s_format = args[ARG_format].u_int;
+ if ((i2s_format != MONO) &&
+ (i2s_format != STEREO)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid format"));
+ }
+
+ // uint32_t audio_clock_freq_hz;
+ uint32_t rate = args[ARG_rate].u_int;
+
+ if (rate == 8000 ||
+ rate == 16000 ||
+ rate == 32000 ||
+ rate == 48000) {
+ if (PLL0_freq != AUDIO_I2S_98_MHZ) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid clock frequency set for the sample rate/ I2S Clock not set . Set the right clock before initialising I2S"));
+ }
+ } else if (rate == 22050 ||
+ rate == 44100) {
+ if (PLL0_freq != AUDIO_I2S_90_MHZ) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid clock frequency set for the sample rate/ I2S Clock not set. Set the right clock before initialising I2S"));
+ }
+ } else {
+ mp_raise_ValueError(MP_ERROR_TEXT("rate not supported"));
+ }
+
+ // is valid buf size ?
+ int32_t ring_buffer_len = args[ARG_ibuf].u_int;
+ if (ring_buffer_len < 0) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid ibuf"));
+ }
+
+ self->sck = pin_addr_by_name(args[ARG_sck].u_obj);
+ self->ws = pin_addr_by_name(args[ARG_ws].u_obj);
+ self->sd = pin_addr_by_name(args[ARG_sd].u_obj);
+ self->mode = i2s_mode;
+ self->bits = i2s_bits;
+ self->channel_resolution_bits = i2s_bits_resolution;
+ self->format = i2s_format;
+ self->rate = args[ARG_rate].u_int;
+ self->ibuf = ring_buffer_len;
+ self->callback_for_non_blocking = MP_OBJ_NULL;
+ self->io_mode = BLOCKING;
+ self->ring_buffer_storage = m_new(uint8_t, ring_buffer_len);
+
+ ringbuf_init(&self->ring_buffer, self->ring_buffer_storage, ring_buffer_len);
+ i2s_init(self, &audio_clock);
+ i2s_dma_init(self);
+}
+
+static void mp_machine_i2s_deinit(machine_i2s_obj_t *self) {
+ cyhal_i2s_free(&self->i2s_obj);
+ MP_STATE_PORT(machine_i2s_obj[self->i2s_id]) = NULL;
+}
+
+static void mp_machine_i2s_irq_update(machine_i2s_obj_t *self) {
+ (void)self;
+}
+
+static machine_i2s_obj_t *mp_machine_i2s_make_new_instance(mp_int_t i2s_id) {
+ (void)i2s_id;
+ machine_i2s_obj_t *self = NULL;
+ for (uint8_t i = 0; i < MICROPY_HW_MAX_I2S; i++) {
+ if (MP_STATE_PORT(machine_i2s_obj[i]) == NULL) {
+ self = mp_obj_malloc(machine_i2s_obj_t, &machine_i2s_type);
+ MP_STATE_PORT(machine_i2s_obj[i]) = self;
+ self->i2s_id = i;
+ break;
+ }
+ }
+
+ if (self == NULL) {
+ mp_raise_ValueError(MP_ERROR_TEXT("all available i2s instances are allocated"));
+ }
+
+ return self;
+}
+
+MP_REGISTER_ROOT_POINTER(struct _machine_i2s_obj_t *machine_i2s_obj[MICROPY_HW_MAX_I2S]);
diff --git a/ports/psoc6/machine_pdm_pcm.c b/ports/psoc6/machine_pdm_pcm.c
new file mode 100644
index 0000000000000..88f59d87c2182
--- /dev/null
+++ b/ports/psoc6/machine_pdm_pcm.c
@@ -0,0 +1,607 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include
+
+#include "py/runtime.h"
+#include "py/stream.h"
+#include "py/mphal.h"
+#include "machine_pin_phy.h"
+#include "modmachine.h"
+#include "mplogger.h"
+#if MICROPY_PY_MACHINE_PDM_PCM
+#include "machine_pdm_pcm.h"
+
+cyhal_clock_t pdm_pcm_audio_clock;
+
+
+#if MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+
+
+void ringbuf_init(ring_buf_t *rbuf, size_t size) {
+ rbuf->buffer = m_new(uint8_t, size);
+ memset(rbuf->buffer, 0, size);
+ rbuf->size = size;
+ rbuf->head = 0;
+ rbuf->tail = 0;
+}
+
+bool ringbuf_push(ring_buf_t *rbuf, uint8_t data) {
+ size_t next_tail = (rbuf->tail + 1) % rbuf->size;
+ if (next_tail != rbuf->head) {
+ rbuf->buffer[rbuf->tail] = data;
+ rbuf->tail = next_tail;
+ return true;
+ }
+ // full
+ return false;
+}
+
+bool ringbuf_pop(ring_buf_t *rbuf, uint8_t *data) {
+ if (rbuf->head == rbuf->tail) {
+ // empty
+ return false;
+ }
+
+ *data = rbuf->buffer[rbuf->head];
+ rbuf->head = (rbuf->head + 1) % rbuf->size;
+ return true;
+}
+
+size_t ringbuf_available_data(ring_buf_t *rbuf) {
+ return (rbuf->tail - rbuf->head + rbuf->size) % rbuf->size;
+}
+
+size_t ringbuf_available_space(ring_buf_t *rbuf) {
+ return rbuf->size - ringbuf_available_data(rbuf) - 1;
+}
+
+static uint32_t fill_appbuf_from_ringbuf(machine_pdm_pcm_obj_t *self, mp_buffer_info_t *appbuf) {
+ uint32_t num_bytes_copied_to_appbuf = 0;
+ uint8_t *app_p = (uint8_t *)appbuf->buf;
+ uint8_t appbuf_sample_size_in_bytes = (self->bits == 16? 2 : 3) * (self->format == STEREO ? 2: 1);
+ uint32_t num_bytes_needed_from_ringbuf = appbuf->len * (PDM_PCM_RX_FRAME_SIZE_IN_BYTES / appbuf_sample_size_in_bytes);
+ uint8_t discard_byte;
+ while (num_bytes_needed_from_ringbuf) {
+
+ uint8_t f_index = get_frame_mapping_index(self->bits, self->format);
+
+ for (uint8_t i = 0; i < PDM_PCM_RX_FRAME_SIZE_IN_BYTES; i++) {
+ int8_t r_to_a_mapping = pdm_pcm_frame_map[f_index][i];
+ if (r_to_a_mapping != -1) {
+ if (self->io_mode == BLOCKING) {
+ while (ringbuf_pop(&self->ring_buffer, app_p + r_to_a_mapping) == false) {
+ ;
+ }
+ num_bytes_copied_to_appbuf++;
+ } else {
+ return 0; // should never get here (non-blocking mode does not use this function)
+ }
+ } else { // r_a_mapping == -1
+ // discard unused byte from ring buffer
+ if (self->io_mode == BLOCKING) {
+ // poll the ringbuf until a sample becomes available
+ while (ringbuf_pop(&self->ring_buffer, &discard_byte) == false) {
+ ;
+ }
+ } else {
+ return 0; // should never get here (non-blocking mode does not use this function)
+ }
+ }
+ num_bytes_needed_from_ringbuf--;
+ }
+ app_p += appbuf_sample_size_in_bytes;
+ }
+ return num_bytes_copied_to_appbuf;
+}
+
+// Copy from ringbuf to appbuf as soon as ASYNC_TRANSFER_COMPLETE is triggered
+static void fill_appbuf_from_ringbuf_non_blocking(machine_pdm_pcm_obj_t *self) {
+ uint32_t num_bytes_copied_to_appbuf = 0;
+ uint8_t *app_p = &(((uint8_t *)self->non_blocking_descriptor.appbuf.buf)[self->non_blocking_descriptor.index]);
+
+ uint8_t appbuf_sample_size_in_bytes = (self->bits == 16? 2 : 3) * (self->format == STEREO ? 2: 1);
+ uint32_t num_bytes_remaining_to_copy_to_appbuf = self->non_blocking_descriptor.appbuf.len - self->non_blocking_descriptor.index;
+ uint32_t num_bytes_remaining_to_copy_from_ring_buffer = num_bytes_remaining_to_copy_to_appbuf *
+ (PDM_PCM_RX_FRAME_SIZE_IN_BYTES / appbuf_sample_size_in_bytes);
+ uint32_t num_bytes_needed_from_ringbuf = MIN(SIZEOF_NON_BLOCKING_COPY_IN_BYTES, num_bytes_remaining_to_copy_from_ring_buffer);
+ uint8_t discard_byte;
+ if (ringbuf_available_data(&self->ring_buffer) >= num_bytes_needed_from_ringbuf) {
+ while (num_bytes_needed_from_ringbuf) {
+
+ uint8_t f_index = get_frame_mapping_index(self->bits, self->format);
+
+ for (uint8_t i = 0; i < PDM_PCM_RX_FRAME_SIZE_IN_BYTES; i++) {
+ int8_t r_to_a_mapping = pdm_pcm_frame_map[f_index][i];
+ if (r_to_a_mapping != -1) {
+ ringbuf_pop(&self->ring_buffer, app_p + r_to_a_mapping);
+ num_bytes_copied_to_appbuf++;
+ } else { // r_a_mapping == -1
+ // discard unused byte from ring buffer
+ ringbuf_pop(&self->ring_buffer, &discard_byte);
+ }
+ num_bytes_needed_from_ringbuf--;
+ }
+ app_p += appbuf_sample_size_in_bytes;
+ }
+ self->non_blocking_descriptor.index += num_bytes_copied_to_appbuf;
+
+ if (self->non_blocking_descriptor.index >= self->non_blocking_descriptor.appbuf.len) {
+ self->non_blocking_descriptor.copy_in_progress = false;
+ mp_sched_schedule(self->callback_for_non_blocking, MP_OBJ_FROM_PTR(self));
+ }
+ }
+}
+#endif // MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+/*========================================================================================================================*/
+// PDM_PCM higher level MPY functions (extmod/machine_pdm_pcm.c)
+
+MP_NOINLINE static void machine_pdm_pcm_init_helper(machine_pdm_pcm_obj_t *self, size_t n_pos_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ mplogger_print("machine_pdm_pcm_init_helper \r\n");
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_sck, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
+ { MP_QSTR_data, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
+ { MP_QSTR_sample_rate, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_decimation_rate, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_bits, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_format, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_left_gain, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_LEFT_GAIN} },
+ { MP_QSTR_right_gain, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_RIGHT_GAIN} },
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_pos_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ mp_machine_pdm_pcm_init_helper(self, args);
+}
+
+static void machine_pdm_pcm_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "PDM_PCM(id=%u,\n"
+ "clk="MP_HAL_PIN_FMT ",\n"
+ "data="MP_HAL_PIN_FMT ",\n"
+ "sample_rate=%ld,\n"
+ "decimation_rate=%d,\n"
+ "bits=%u,\n"
+ "format=%u,\n"
+ "left_gain=%d,\n"
+ "right_gain=%d)",
+ self->pdm_pcm_id,
+ mp_hal_pin_name(self->clk),
+ mp_hal_pin_name(self->data),
+ self->sample_rate,
+ self->decimation_rate,
+ self->bits,
+ self->format,
+ self->left_gain, self->right_gain
+ );
+}
+
+// PDM_PCM(...) Constructor
+static mp_obj_t machine_pdm_pcm_make_new(const mp_obj_type_t *type, size_t n_pos_args, size_t n_kw_args, const mp_obj_t *args) {
+ mplogger_print("machine_pdm_pcm_make_new \r\n");
+ mp_arg_check_num(n_pos_args, n_kw_args, 1, MP_OBJ_FUN_ARGS_MAX, true);
+ mp_int_t pdm_pcm_id = mp_obj_get_int(args[0]);
+
+ machine_pdm_pcm_obj_t *self = mp_machine_pdm_pcm_make_new_instance(pdm_pcm_id);
+
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw_args, args + n_pos_args);
+ machine_pdm_pcm_init_helper(self, n_pos_args - 1, args + 1, &kw_args);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+// PDM_PCM.init(...)
+static mp_obj_t machine_pdm_pcm_init(mp_obj_t self_in) {
+ mplogger_print("machine_pdm_pcm_init \r\n");
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_machine_pdm_pcm_init(self);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pdm_pcm_init_obj, machine_pdm_pcm_init);
+
+// PDM_PCM.deinit()
+static mp_obj_t machine_pdm_pcm_deinit(mp_obj_t self_in) {
+ mplogger_print("machine_pdm_pcm_deinit \r\n");
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_machine_pdm_pcm_deinit(self);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pdm_pcm_deinit_obj, machine_pdm_pcm_deinit);
+
+// PDM_PCM.set_gain()
+static mp_obj_t machine_pdm_pcm_set_gain(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ mplogger_print("machine_pdm_pcm_set_gain \r\n");
+
+ enum { ARG_left_gain, ARG_right_gain};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_left_gain, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_LEFT_GAIN} },
+ { MP_QSTR_right_gain, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_RIGHT_GAIN} }
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
+
+ int16_t left_gain = args[ARG_left_gain].u_int;
+ int16_t right_gain = args[ARG_right_gain].u_int;
+
+ int16_t prev_left_gain = self->left_gain;
+ int16_t prev_right_gain = self->right_gain;
+
+ self->left_gain = (left_gain == prev_left_gain) ? prev_left_gain : left_gain;
+ self->right_gain = (right_gain == prev_right_gain) ? prev_right_gain : right_gain;
+
+ mp_machine_pdm_pcm_set_gain(self, left_gain, right_gain);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_pdm_pcm_set_gain_obj, 1, machine_pdm_pcm_set_gain);
+
+// PDM_PCM.irq(handler)
+static mp_obj_t machine_pdm_pcm_irq(mp_obj_t self_in, mp_obj_t handler) {
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ if (handler != mp_const_none && !mp_obj_is_callable(handler)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid callback"));
+ }
+
+ if (handler != mp_const_none) {
+ self->io_mode = NON_BLOCKING;
+ } else {
+ self->io_mode = BLOCKING;
+ }
+
+ self->callback_for_non_blocking = handler;
+
+ mp_machine_pdm_pcm_irq_update(self);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_pdm_pcm_irq_obj, machine_pdm_pcm_irq);
+
+// =======================================================================================
+// Port Private functions for DMA support (ports/psoc6)
+
+static inline void _dma_buff_init(machine_pdm_pcm_obj_t *self) {
+ memset(self->dma_active_buffer, 1, SIZEOF_DMA_BUFFER * sizeof(self->dma_active_buffer[0]));
+ memset(self->dma_processing_buffer, 1, SIZEOF_DMA_BUFFER * sizeof(self->dma_processing_buffer[0]));
+
+ self->dma_active_buf_p = self->dma_active_buffer;
+ self->dma_processing_buf_p = self->dma_processing_buffer;
+}
+
+static inline void _dma_swap_active_dmabuf(machine_pdm_pcm_obj_t *self) {
+ uint32_t *temp = self->dma_active_buf_p;
+ self->dma_active_buf_p = self->dma_processing_buf_p;
+ self->dma_processing_buf_p = temp;
+}
+
+static void _dma_copy_from_dmabuf_to_ringbuf(machine_pdm_pcm_obj_t *self) {
+ uint8_t dma_sample_size_in_bytes = (self->bits == 16? 2 : 4) * (self->format == STEREO ? 2: 1);
+ uint8_t *dma_buff_p = (uint8_t *)self->dma_processing_buf_p;
+ uint32_t num_bytes_needed_from_ringbuf = SIZEOF_HALF_DMA_BUFFER_IN_BYTES * (PDM_PCM_RX_FRAME_SIZE_IN_BYTES / dma_sample_size_in_bytes);
+
+ // when space exists, copy samples into ring buffer
+ if (ringbuf_available_space(&self->ring_buffer) >= num_bytes_needed_from_ringbuf) {
+ uint8_t f_index = get_frame_mapping_index(self->bits, self->format);
+ uint32_t i = 0;
+ while (i < SIZEOF_HALF_DMA_BUFFER_IN_BYTES) {
+ for (uint8_t j = 0; j < PDM_PCM_RX_FRAME_SIZE_IN_BYTES; j++) {
+ int8_t r_to_a_mapping = pdm_pcm_frame_map[f_index][j];
+ if (r_to_a_mapping != -1) {
+ ringbuf_push(&self->ring_buffer, dma_buff_p[i]);
+ i++;
+ } else { // r_a_mapping == -1
+ ringbuf_push(&self->ring_buffer, -1);
+ }
+ }
+ }
+ }
+}
+
+
+// =======================================================================================
+// PDM_PCM low-level abstracted functions and helper function (ports/psoc6)
+
+uint8_t pdm_pcm_get_word_byte_size(machine_pdm_pcm_obj_t *self) {
+ uint8_t res_bits = self->bits;
+ if (res_bits == 16) {
+ return 2;
+ } else {
+ return 3;
+ }
+}
+
+// Init hardware block
+static void pdm_pcm_init(machine_pdm_pcm_obj_t *self, cyhal_clock_t *clock) {
+ mplogger_print("pdm_pcm_init \r\n");
+ cyhal_pdm_pcm_cfg_t config =
+ {
+ .sample_rate = self->sample_rate,
+ .decimation_rate = self->decimation_rate,
+ .mode = self->format,
+ .word_length = self->bits, /* bits */
+ .left_gain = self->left_gain, /* dB */
+ .right_gain = self->right_gain, /* dB */
+ };
+
+ cy_rslt_t result = cyhal_pdm_pcm_init(&self->pdm_pcm_obj, self->data, self->clk, &pdm_pcm_audio_clock, &config);
+ assert_pin_phy_used(result);
+ pdm_pcm_assert_raise_val("PDM_PCM initialisation failed with return code %lx !", result);
+}
+
+// Set PDM_PCM async mode to DMA
+static void pdm_pcm_set_async_mode_dma(machine_pdm_pcm_obj_t *self) {
+ mplogger_print("pdm_pcm_set_async_mode_dma \r\n");
+ cy_rslt_t result = cyhal_pdm_pcm_set_async_mode(&self->pdm_pcm_obj, CYHAL_ASYNC_DMA, CYHAL_DMA_PRIORITY_DEFAULT);
+ pdm_pcm_assert_raise_val("PDM_PCM set DMA mode failed with return code %lx !", result);
+}
+
+// Move data from PDM_PCM hardware buf to provisioned DMA buffer
+static void pdm_pcm_read_rxbuf(machine_pdm_pcm_obj_t *self) {
+ uint16_t dma_half_buff_word_size = SIZEOF_HALF_DMA_BUFFER_IN_BYTES / pdm_pcm_get_word_byte_size(self);
+ while (cyhal_pdm_pcm_is_pending(&self->pdm_pcm_obj)) {
+ ;
+ }
+ cy_rslt_t result = cyhal_pdm_pcm_read_async(&self->pdm_pcm_obj, self->dma_active_buf_p, dma_half_buff_word_size);
+ pdm_pcm_assert_raise_val("PDM_PCM DMA read failed with return code %lx !", result);
+}
+
+// First read and start the hw block
+static void pdm_pcm_rx_init(machine_pdm_pcm_obj_t *self) {
+ pdm_pcm_read_rxbuf(self);
+ cy_rslt_t result = cyhal_pdm_pcm_start(&self->pdm_pcm_obj);
+ pdm_pcm_assert_raise_val("PDM_PCM rx start failed with return code %lx !", result);
+}
+
+// IRQ Handler
+static void pdm_pcm_irq_handler(void *arg, cyhal_pdm_pcm_event_t event) {
+ machine_pdm_pcm_obj_t *self = (machine_pdm_pcm_obj_t *)arg;
+ if (0u != (event & CYHAL_PDM_PCM_ASYNC_COMPLETE)) {
+ _dma_swap_active_dmabuf(self);
+ pdm_pcm_read_rxbuf(self);
+ _dma_copy_from_dmabuf_to_ringbuf(self);
+ if ((self->io_mode == NON_BLOCKING) && (self->non_blocking_descriptor.copy_in_progress)) {
+ fill_appbuf_from_ringbuf_non_blocking(self);
+ }
+ }
+}
+
+// Configure PDM_PCM IRQ
+static void pdm_pcm_irq_configure(machine_pdm_pcm_obj_t *self) {
+ mplogger_print("pdm_pcm_irq_configure \r\n");
+ cyhal_pdm_pcm_register_callback(&self->pdm_pcm_obj, &pdm_pcm_irq_handler, self);
+ cyhal_pdm_pcm_enable_event(&self->pdm_pcm_obj, CYHAL_PDM_PCM_ASYNC_COMPLETE, CYHAL_ISR_PRIORITY_DEFAULT, true);
+}
+
+int8_t get_frame_mapping_index(int8_t bits, format_t format) {
+ if ((format == MONO_LEFT) | (format == MONO_RIGHT)) {
+ if (bits == 16) {
+ return 0;
+ }
+ } else { // STEREO
+ if (bits == 16) {
+ return 2;
+ }
+ }
+ return -1;
+}
+
+// =======================================================================================
+// MPY bindings for PDM_PCM (ports/psoc6)
+
+// constructor()
+static machine_pdm_pcm_obj_t *mp_machine_pdm_pcm_make_new_instance(mp_int_t pdm_pcm_id) {
+ mplogger_print("mp_machine_pdm_pcm_make_new_instance \r\n");
+ (void)pdm_pcm_id;
+ machine_pdm_pcm_obj_t *self = NULL;
+ for (uint8_t i = 0; i < MICROPY_HW_MAX_PDM_PCM; i++) {
+ if (MP_STATE_PORT(machine_pdm_pcm_obj[i]) == NULL) {
+ self = mp_obj_malloc(machine_pdm_pcm_obj_t, &machine_pdm_pcm_type);
+ MP_STATE_PORT(machine_pdm_pcm_obj[i]) = self;
+ self->pdm_pcm_id = i;
+ break;
+ }
+ }
+ if (self == NULL) {
+ mp_raise_ValueError(MP_ERROR_TEXT("all available pdm pcm instances are allocated"));
+ }
+ return self;
+}
+
+// init.helper()
+static void mp_machine_pdm_pcm_init_helper(machine_pdm_pcm_obj_t *self, mp_arg_val_t *args) {
+ mplogger_print("mp_machine_pdm_pcm_init_helper \r\n");
+ // Assign pins
+ self->clk = pin_addr_by_name(args[ARG_clk].u_obj);
+ self->data = pin_addr_by_name(args[ARG_data].u_obj);
+
+ // Assign configurable parameters
+ // PDM_PCM Mode
+ format_t pdm_pcm_format = args[ARG_format].u_int;
+ if ((pdm_pcm_format != MONO_LEFT) &&
+ (pdm_pcm_format != MONO_RIGHT) &&
+ (pdm_pcm_format != STEREO)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid format"));
+ }
+ self->format = pdm_pcm_format;
+
+ // Check word length
+ uint8_t pdm_pcm_word_length = args[ARG_bits].u_int;
+ if (pdm_pcm_word_length < BITS_16 || pdm_pcm_word_length > BITS_24) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid word length"));
+ }
+ self->bits = args[ARG_bits].u_int;
+
+ // Set gains
+ self->left_gain = args[ARG_left_gain].u_int;
+ self->left_gain = args[ARG_right_gain].u_int;
+
+ // Set sampling and decimation rates (as given by user)
+ self->sample_rate = args[ARG_sample_rate].u_int;
+
+ if (self->sample_rate == 8000 ||
+ self->sample_rate == 16000 ||
+ self->sample_rate == 32000 ||
+ self->sample_rate == 48000) {
+ if (PLL0_freq != AUDIO_PDM_24_576_000_HZ) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid clock frequency set for the sample rate/ PDM_PCM Clock not set . Set the right clock before initialising PDM_PCM"));
+ }
+ } else if (self->sample_rate == 22050 ||
+ self->sample_rate == 44100) {
+ if (PLL0_freq != AUDIO_PDM_22_579_000_HZ) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid clock frequency set for the sample rate/ PDM_PCM Clock not set. Set the right clock before initialising PDM_PCM"));
+ }
+ } else {
+ mp_raise_ValueError(MP_ERROR_TEXT("rate not supported"));
+ }
+
+ self->decimation_rate = args[ARG_decimation_rate].u_int;
+ if (self->decimation_rate < 0) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid decimation rate"));
+ }
+
+ int32_t ring_buffer_len = 20000;
+ if (ring_buffer_len < 0) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid ibuf"));
+ }
+ self->ibuf = ring_buffer_len;
+ self->callback_for_non_blocking = MP_OBJ_NULL;
+ self->io_mode = BLOCKING;
+
+ ringbuf_init(&self->ring_buffer, ring_buffer_len);
+ pdm_pcm_init(self, &pdm_pcm_audio_clock);
+ pdm_pcm_irq_configure(self);
+ pdm_pcm_set_async_mode_dma(self);
+ _dma_buff_init(self);
+}
+
+// init()
+static void mp_machine_pdm_pcm_init(machine_pdm_pcm_obj_t *self) {
+ mplogger_print("mp_machine_pdm_pcm_init \r\n");
+ pdm_pcm_rx_init(self);
+}
+
+// deinit()
+static void mp_machine_pdm_pcm_deinit(machine_pdm_pcm_obj_t *self) {
+ mplogger_print("mp_machine_pdm_pcm_deinit \r\n");
+ cyhal_pdm_pcm_stop(&self->pdm_pcm_obj);
+ cyhal_pdm_pcm_free(&self->pdm_pcm_obj);
+ MP_STATE_PORT(machine_pdm_pcm_obj[self->pdm_pcm_id]) = NULL;
+}
+
+// set_gain()
+static void mp_machine_pdm_pcm_set_gain(machine_pdm_pcm_obj_t *self, int16_t left_gain, int16_t right_gain) {
+ mplogger_print("mp_machine_pdm_pcm_set_gain \r\n");
+ mp_printf(&mp_plat_print, "machine.PDM_PCM: Setting left mic gain to %d and right mic gain to %d\n", self->left_gain, self->right_gain);
+ cy_rslt_t result = cyhal_pdm_pcm_set_gain(&self->pdm_pcm_obj, self->left_gain, self->right_gain);
+ pdm_pcm_assert_raise_val("PDM_PCM set gain failed with return code %lx !", result);
+}
+
+// irq update
+static void mp_machine_pdm_pcm_irq_update(machine_pdm_pcm_obj_t *self) {
+ (void)self;
+}
+
+// =======================================================================================
+// Implementation for stream protocol (ports/psoc6)
+static mp_uint_t machine_pdm_pcm_stream_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) {
+ machine_pdm_pcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ uint8_t appbuf_sample_size_in_bytes = (self->bits / 8) * (self->format == STEREO ? 2: 1);
+ if (size % appbuf_sample_size_in_bytes != 0) { // size should be multiple of sample size
+ *errcode = MP_EINVAL;
+ return MP_STREAM_ERROR;
+ }
+ if (size == 0) {
+ return 0;
+ }
+
+ if (self->io_mode == BLOCKING) {
+ mp_buffer_info_t appbuf;
+ appbuf.buf = (void *)buf_in;
+ appbuf.len = size;
+ #if MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+ uint32_t num_bytes_read = fill_appbuf_from_ringbuf(self, &appbuf);
+ #else
+ uint32_t num_bytes_read = fill_appbuf_from_dma(self, &appbuf);
+ #endif
+ return num_bytes_read;
+ } else {
+ #if MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+ self->non_blocking_descriptor.appbuf.buf = (void *)buf_in;
+ self->non_blocking_descriptor.appbuf.len = size;
+ self->non_blocking_descriptor.index = 0;
+ self->non_blocking_descriptor.copy_in_progress = true;
+ #else
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("Implementation only through ringbuffer is supported."));
+ #endif
+
+ return size;
+ return 0;
+ }
+}
+
+static const mp_stream_p_t pdm_pcm_stream_p = {
+ .read = machine_pdm_pcm_stream_read,
+ .is_text = false,
+};
+
+static const mp_rom_map_elem_t machine_pdm_pcm_locals_dict_table[] = {
+ // Methods
+ { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_pdm_pcm_init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_pdm_pcm_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&mp_stream_readinto_obj) },
+ { MP_ROM_QSTR(MP_QSTR_set_gain), MP_ROM_PTR(&machine_pdm_pcm_set_gain_obj) },
+ { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_pdm_pcm_irq_obj) },
+
+ #if MICROPY_PY_MACHINE_PDM_PCM_FINALISER
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_pdm_pcm_deinit_obj) },
+ #endif
+
+ // Constants
+ // Word lengths
+ { MP_ROM_QSTR(MP_QSTR_BITS_16), MP_ROM_INT(BITS_16) },
+
+ // Modes
+ { MP_ROM_QSTR(MP_QSTR_STEREO), MP_ROM_INT(STEREO) },
+ { MP_ROM_QSTR(MP_QSTR_MONO_LEFT), MP_ROM_INT(MONO_LEFT) },
+ { MP_ROM_QSTR(MP_QSTR_MONO_RIGHT), MP_ROM_INT(MONO_RIGHT) },
+};
+MP_DEFINE_CONST_DICT(machine_pdm_pcm_locals_dict, machine_pdm_pcm_locals_dict_table);
+
+MP_REGISTER_ROOT_POINTER(struct _machine_pdm_pcm_obj_t *machine_pdm_pcm_obj[MICROPY_HW_MAX_PDM_PCM]);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_pdm_pcm_type,
+ MP_QSTR_PDM_PCM,
+ MP_TYPE_FLAG_ITER_IS_STREAM,
+ make_new, machine_pdm_pcm_make_new,
+ print, machine_pdm_pcm_print,
+ protocol, &pdm_pcm_stream_p,
+ locals_dict, &machine_pdm_pcm_locals_dict
+ );
+
+#endif // MICROPY_PY_MACHINE_PDM_PCM
diff --git a/ports/psoc6/machine_pdm_pcm.h b/ports/psoc6/machine_pdm_pcm.h
new file mode 100644
index 0000000000000..eef6724b8fe57
--- /dev/null
+++ b/ports/psoc6/machine_pdm_pcm.h
@@ -0,0 +1,118 @@
+#if MICROPY_PY_MACHINE_PDM_PCM
+
+#define MICROPY_HW_MAX_PDM_PCM 1
+#define DEFAULT_LEFT_GAIN 0
+#define DEFAULT_RIGHT_GAIN 0
+
+#define AUDIO_SYS_CLOCK_24_576_000_HZ 24576000u /* (Ideally 24.576 MHz) For sample rates: 8 KHz / 16 KHz / 48 KHz */
+#define AUDIO_SYS_CLOCK_22_579_000_HZ 22579000u /* (Ideally 22.579 MHz) For sample rates: 22.05 KHz / 44.1 KHz */
+
+#define SIZEOF_DMA_BUFFER (128)
+#define SIZEOF_HALF_DMA_BUFFER (SIZEOF_DMA_BUFFER / 2)
+#define SIZEOF_DMA_BUFFER_IN_BYTES (SIZEOF_DMA_BUFFER * sizeof(uint32_t))
+#define SIZEOF_HALF_DMA_BUFFER_IN_BYTES (SIZEOF_DMA_BUFFER_IN_BYTES / 2)
+#define PDM_PCM_RX_FRAME_SIZE_IN_BYTES (8)
+
+#define NON_BLOCKING_RATE_MULTIPLIER (4)
+#define SIZEOF_NON_BLOCKING_COPY_IN_BYTES (SIZEOF_HALF_DMA_BUFFER * NON_BLOCKING_RATE_MULTIPLIER)
+
+
+#define pdm_pcm_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+
+// Constructor args
+enum {
+ ARG_clk,
+ ARG_data,
+ ARG_sample_rate,
+ ARG_decimation_rate,
+ ARG_bits,
+ ARG_format,
+ ARG_left_gain,
+ ARG_right_gain,
+};
+
+typedef enum {
+ BITS_16 = 16,
+ BITS_18 = 18,
+ BITS_20 = 20,
+ BITS_24 = 24
+} pdm_pcm_word_length_t;
+
+typedef enum {
+ MONO_LEFT = CYHAL_PDM_PCM_MODE_LEFT,
+ MONO_RIGHT = CYHAL_PDM_PCM_MODE_RIGHT,
+ STEREO = CYHAL_PDM_PCM_MODE_STEREO
+} format_t;
+
+typedef enum {
+ BLOCKING,
+ NON_BLOCKING,
+} io_mode_t;
+
+#if MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+
+typedef struct _ring_buf_t {
+ uint8_t *buffer;
+ size_t head;
+ size_t tail;
+ size_t size;
+} ring_buf_t;
+
+typedef struct _non_blocking_descriptor_t {
+ mp_buffer_info_t appbuf;
+ uint32_t index;
+ bool copy_in_progress;
+} non_blocking_descriptor_t;
+
+void ringbuf_init(ring_buf_t *rbuf, size_t size);
+bool ringbuf_push(ring_buf_t *rbuf, uint8_t data);
+bool ringbuf_pop(ring_buf_t *rbuf, uint8_t *data);
+size_t ringbuf_available_data(ring_buf_t *rbuf);
+size_t ringbuf_available_space(ring_buf_t *rbuf);
+#endif // MICROPY_PY_MACHINE_PDM_PCM_RING_BUF
+
+typedef struct _machine_pdm_pcm_obj_t {
+ mp_obj_base_t base;
+ uint8_t pdm_pcm_id; // Private variable in this port. ID not associated to any port pin pdm-pcm group.
+ cyhal_pdm_pcm_t pdm_pcm_obj;
+ uint32_t clk;
+ uint32_t data;
+ io_mode_t io_mode;
+ format_t format;
+ uint8_t bits;
+ uint32_t sample_rate;
+ uint8_t decimation_rate;
+ int16_t left_gain;
+ int16_t right_gain;
+ int32_t ibuf; // Private variable
+ mp_obj_t callback_for_non_blocking;
+ uint32_t dma_active_buffer[SIZEOF_DMA_BUFFER];
+ uint32_t dma_processing_buffer[SIZEOF_DMA_BUFFER];
+ uint32_t *dma_active_buf_p;
+ uint32_t *dma_processing_buf_p;
+ ring_buf_t ring_buffer;
+ non_blocking_descriptor_t non_blocking_descriptor; // For non-blocking mode
+} machine_pdm_pcm_obj_t;
+
+static void mp_machine_pdm_pcm_init_helper(machine_pdm_pcm_obj_t *self, mp_arg_val_t *args);
+static machine_pdm_pcm_obj_t *mp_machine_pdm_pcm_make_new_instance(mp_int_t pdm_pcm_id);
+static void mp_machine_pdm_pcm_init(machine_pdm_pcm_obj_t *self);
+static void mp_machine_pdm_pcm_deinit(machine_pdm_pcm_obj_t *self);
+static void mp_machine_pdm_pcm_set_gain(machine_pdm_pcm_obj_t *self, int16_t left_gain, int16_t right_gain);
+static void mp_machine_pdm_pcm_irq_update(machine_pdm_pcm_obj_t *self);
+
+int8_t get_frame_mapping_index(int8_t bits, format_t format);
+
+// Only 16 bit mono and stereo modes tested
+static const int8_t pdm_pcm_frame_map[4][PDM_PCM_RX_FRAME_SIZE_IN_BYTES] = {
+ { 0, 1, -1, -1, -1, -1, -1, -1 }, // Mono, 16-bits
+ { 0, 1, 2, -1, -1, -1, -1, -1 }, // Mono, >16-bits
+ { 0, 1, -1, -1, 2, 3, -1, -1 }, // Stereo, 16-bits
+ { 0, 1, 2, -1, 3, 4, 5, -1 }, // Stereo, >16-bits
+};
+
+
+#endif // MICROPY_PY_MACHINE_PDM_PCM
diff --git a/ports/psoc6/machine_pin.c b/ports/psoc6/machine_pin.c
new file mode 100644
index 0000000000000..932de9a538a65
--- /dev/null
+++ b/ports/psoc6/machine_pin.c
@@ -0,0 +1,537 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// micropython includes
+#include "py/mphal.h"
+#include "py/runtime.h"
+#include "shared/runtime/mpirq.h"
+
+// port-specific includes
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+#include "extmod/virtpin.h"
+#include "mplogger.h"
+#include "cyhal.h"
+
+enum {GPIO_MODE_NONE = 0, GPIO_MODE_IN, GPIO_MODE_OUT, GPIO_MODE_OPEN_DRAIN};
+
+enum {GPIO_PULL_NONE = 0, GPIO_PULL_UP, GPIO_PULL_DOWN};
+
+enum {GPIO_IRQ_LEVEL_NONE=0, GPIO_IRQ_FALLING, GPIO_IRQ_RISING, GPIO_IRQ_BOTH};
+
+typedef struct _machine_pin_io_obj_t {
+ mp_obj_base_t base;
+ uint32_t pin_addr;
+ uint8_t mode;
+ uint8_t drive;
+ uint8_t pull;
+ mp_obj_t callback;
+ cyhal_gpio_callback_data_t callback_data;
+} machine_pin_io_obj_t;
+
+
+machine_pin_io_obj_t *pin_io[MAX_IO_PINS] = {NULL};
+
+// helper function used by mphalport
+int pin_fetch_address(mp_obj_t pin) {
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(pin);
+ return self->pin_addr;
+}
+
+static inline machine_pin_io_obj_t *pin_io_allocate(mp_obj_t pin_name) {
+ uint32_t pin_addr = pin_addr_by_name(pin_name);
+ uint16_t i;
+ for (i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (pin_io[i] == NULL) {
+ break;
+ }
+ }
+ pin_io[i] = mp_obj_malloc(machine_pin_io_obj_t, &machine_pin_type);
+ pin_io[i]->pin_addr = pin_addr;
+
+ return pin_io[i];
+}
+
+static inline void pin_io_free(machine_pin_io_obj_t *pin) {
+ for (uint16_t i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (pin_io[i] == pin) {
+ pin_io[i] = NULL;
+ }
+ }
+}
+
+// Pin.print()
+static void machine_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ mplogger_print("machine pin print\n");
+
+ machine_pin_io_obj_t *self = self_in;
+
+ qstr mode_qstr;
+ switch (self->mode) {
+ case GPIO_MODE_IN:
+ mode_qstr = MP_QSTR_IN;
+ break;
+
+ case GPIO_MODE_OUT:
+ mode_qstr = MP_QSTR_OUT;
+ break;
+
+ case GPIO_MODE_OPEN_DRAIN:
+ mode_qstr = MP_QSTR_OPEN_DRAIN;
+ break;
+
+ case GPIO_MODE_NONE:
+ mode_qstr = MP_QSTR_None;
+ break;
+ }
+
+ qstr pull_qstr;
+ switch (self->pull) {
+ case GPIO_PULL_UP:
+ pull_qstr = MP_QSTR_PULL_UP;
+ break;
+
+ case GPIO_PULL_DOWN:
+ pull_qstr = MP_QSTR_PULL_DOWN;
+ break;
+
+ case GPIO_PULL_NONE:
+ pull_qstr = MP_QSTR_None;
+ break;
+ }
+
+ mp_printf(print, "Pin:%u or %s, Mode=%q, Pull=%q", self->pin_addr, mp_obj_str_get_str(pin_name_by_addr(mp_obj_new_int_from_uint(self->pin_addr))), mode_qstr, pull_qstr);
+}
+
+static cyhal_gpio_direction_t mp_to_cy_get_gpio_direction(uint8_t mode) {
+ cyhal_gpio_direction_t direction;
+
+ switch (mode) {
+ case GPIO_MODE_IN:
+ direction = CYHAL_GPIO_DIR_INPUT;
+ break;
+
+ case GPIO_MODE_OUT:
+ case GPIO_MODE_OPEN_DRAIN:
+ direction = CYHAL_GPIO_DIR_OUTPUT;
+ break;
+
+ case GPIO_MODE_NONE:
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("Pin mode is a required argument\n"));
+ break;
+ }
+ return direction;
+}
+
+static cyhal_gpio_drive_mode_t mp_to_cy_get_gpio_drive(uint8_t mode, uint8_t pull) {
+ cyhal_gpio_drive_mode_t cy_drive;
+
+ // drive modes explained here: https://community.infineon.com/t5/Knowledge-Base-Articles/Drive-Modes-in-PSoC-GPIO/ta-p/248470
+ // see app note: https://www.infineon.com/dgdl/Infineon-AN2094_PSoC_1_Getting_Started_With_GPIO-ApplicationNotes-v12_00-EN.pdf?fileId=8ac78c8c7cdc391c017d072966174e13&utm_source=cypress&utm_medium=referral&utm_campaign=202110_globe_en_all_integration-application_note
+
+ switch (mode) {
+ case GPIO_MODE_IN: {
+ // mpy_drive value is ignored. Only relevant for outputs.
+ switch (pull) {
+ case GPIO_PULL_UP:
+ cy_drive = CYHAL_GPIO_DRIVE_PULLUP;
+ break;
+
+ case GPIO_PULL_DOWN:
+ cy_drive = CYHAL_GPIO_DRIVE_PULLDOWN;
+ break;
+
+ case GPIO_PULL_NONE:
+ default:
+ cy_drive = CYHAL_GPIO_DRIVE_PULL_NONE;
+ break;
+ }
+ }
+ break;
+
+ case GPIO_MODE_OUT: {
+ switch (pull) {
+ case GPIO_PULL_UP:
+ cy_drive = CYHAL_GPIO_DRIVE_PULLUP;
+ break;
+
+ case GPIO_PULL_DOWN:
+ cy_drive = CYHAL_GPIO_DRIVE_PULLDOWN;
+ break;
+
+ case GPIO_PULL_NONE:
+ default:
+ // cyhal will set drive strong for output if PULL NONE.
+ cy_drive = CYHAL_GPIO_DRIVE_PULL_NONE;
+ break;
+ }
+ }
+ break;
+
+ case GPIO_MODE_OPEN_DRAIN:
+ // mpy_drive is ignored. Not relevant for open drain output.
+ // mpy_pull is ignored. Not configurable for open drain output.
+ cy_drive = CYHAL_GPIO_DRIVE_OPENDRAINDRIVESLOW;
+ break;
+ }
+
+ return cy_drive;
+}
+
+static cyhal_gpio_event_t mp_to_cy_get_interrupt_mode(uint8_t mode) {
+ cyhal_gpio_event_t event;
+ switch (mode) {
+ case GPIO_IRQ_FALLING:
+ event = CYHAL_GPIO_IRQ_FALL;
+ break;
+ case GPIO_IRQ_RISING:
+ event = CYHAL_GPIO_IRQ_RISE;
+ break;
+
+ case GPIO_IRQ_RISING | GPIO_IRQ_FALLING:
+ event = CYHAL_GPIO_IRQ_BOTH;
+ break;
+ }
+ return event;
+}
+
+static bool mp_get_gpio_dlf_value(uint8_t mode, uint8_t pull, int8_t value_arg) {
+ bool value;
+ switch (mode) {
+ case GPIO_MODE_IN: {
+ switch (pull) {
+ case GPIO_PULL_UP: {
+ if (value_arg == -1 || value_arg == 1) {
+ value = true;
+ } else {
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("machine pin error: Incompatible configuration. Input pull-up can not be initialized as low. \n"));
+ }
+ }
+ break;
+
+ case GPIO_PULL_DOWN: {
+ if (value_arg == -1 || value_arg == 0) {
+ value = false;
+ } else {
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("machine pin error: Incompatible configuration. Input pull-down can not be initialized as high. \n"));
+ }
+ }
+ break;
+
+ case GPIO_PULL_NONE:
+ default: {
+ // Value is undefined.
+ value = false;
+ if (value_arg != -1) {
+ mp_printf(&mp_plat_print, "machine.Pin: Initial value is undefined for input pull-none configuration.\n");
+ }
+ }
+ break;
+ }
+ }
+ break;
+
+ case GPIO_MODE_OUT:
+ case GPIO_MODE_OPEN_DRAIN: {
+ // No conflicts with pull-up/down for output mode.
+ if (value_arg == 0) {
+ value = false;
+ } else if (value_arg == 1) {
+ value = true;
+ } else {
+ switch (pull) {
+ case GPIO_PULL_UP:
+ value = true;
+ break;
+
+ case GPIO_PULL_DOWN:
+ case GPIO_PULL_NONE:
+ value = false;
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ return value;
+}
+
+static void gpio_interrupt_handler(void *handler_arg, cyhal_gpio_event_t event) {
+ machine_pin_io_obj_t *self = handler_arg;
+ mp_sched_schedule(self->callback, MP_OBJ_FROM_PTR(self));
+}
+
+static bool machine_pin_is_inited(machine_pin_io_obj_t *self) {
+ // The mode is a mandatory argument for initialization
+ // Thus, if other than NONE, the cyhal_gpio object is already initialized.
+ if (self->mode != GPIO_MODE_NONE) {
+ return true;
+ }
+ return false;
+}
+
+// helper function to parse given initial params and invoke HAL-level GPIO functions
+static mp_obj_t machine_pin_obj_init_helper(machine_pin_io_obj_t *self, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ mplogger_print("init helper function called\n");
+
+ enum {ARG_mode, ARG_pull, ARG_value};
+ static const mp_arg_t allowed_args[] = {
+ {MP_QSTR_mode, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE}},
+ {MP_QSTR_pull, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE}},
+ {MP_QSTR_value, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE}}
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ bool pin_already_inited = machine_pin_is_inited(self);
+
+ int8_t value_arg = -1;
+ if (args[ARG_value].u_obj != mp_const_none) {
+ value_arg = mp_obj_is_true(args[ARG_value].u_obj);
+ }
+
+ self->mode = GPIO_MODE_NONE;
+ if (args[ARG_mode].u_obj != mp_const_none) {
+ self->mode = mp_obj_get_int(args[ARG_mode].u_obj);
+ }
+
+ self->pull = GPIO_PULL_NONE;
+ if (args[ARG_pull].u_obj != mp_const_none) {
+ self->pull = mp_obj_get_int(args[ARG_pull].u_obj);
+ }
+
+ cyhal_gpio_direction_t direction = mp_to_cy_get_gpio_direction(self->mode);
+ cyhal_gpio_drive_mode_t drive = mp_to_cy_get_gpio_drive(self->mode, self->pull);
+ bool value = mp_get_gpio_dlf_value(self->mode, self->pull, value_arg);
+
+ cy_rslt_t result = CY_RSLT_SUCCESS;
+ if (pin_already_inited) {
+ result = cyhal_gpio_configure(self->pin_addr, direction, drive);
+ } else {
+ result = cyhal_gpio_init(self->pin_addr, direction, drive, value);
+ }
+ mplogger_print("Direction: %d, Drive:%d, Value:%d\n", direction, drive, value);
+
+ if (result != CY_RSLT_SUCCESS) {
+ assert_pin_phy_used(result);
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("machine pin error: Init unsuccessful\n"));
+ }
+ return mp_const_none;
+}
+
+// Machine Pin methods - port-specific definitions
+// Pin constructor(id,mode,pull,value=value)
+mp_obj_t mp_pin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mplogger_print("%q constructor invoked\n", MP_QSTR_Pin);
+
+ mp_arg_check_num(n_args, n_kw, 1, 6, true);
+
+ machine_pin_io_obj_t *self = pin_io_allocate(args[0]);
+ if (self == NULL) {
+ return mp_const_none;
+ }
+
+ // go into param arg parsing if args apart from "id" are provided (for ex. pin.Mode, pin.PULL etc)
+ if (n_args > 1 || n_kw > 0) {
+ // pin mode given, so configure this GPIO
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw, args + n_args);
+ machine_pin_obj_init_helper(self, n_args - 1, args + 1, &kw_args); // skipping "id" as an arg as it is a part of self*.
+ }
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static mp_obj_t machine_pin_call(mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
+
+ mp_arg_check_num(n_args, n_kw, 0, 1, false);
+ machine_pin_io_obj_t *self = self_in;
+
+ if (n_args == 0) {
+ if (self->mode == GPIO_MODE_IN) {
+ return MP_OBJ_NEW_SMALL_INT(cyhal_gpio_read(self->pin_addr));
+ } else {
+ return mp_const_none;
+ }
+ } else {
+ if (self->mode != GPIO_MODE_IN) {
+ bool value = mp_obj_is_true(args[0]);
+ cyhal_gpio_write(self->pin_addr, value);
+ }
+ }
+
+ return mp_const_none;
+}
+
+// pin.value([value])
+static mp_obj_t machine_pin_value(size_t n_args, const mp_obj_t *args) {
+ return machine_pin_call(args[0], n_args - 1, 0, args + 1);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_pin_value_obj, 1, 2, machine_pin_value);
+
+// instantiates obj of Pin class
+// Pin.init(mode,pull,value=value)
+static mp_obj_t machine_pin_obj_init(size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
+ return machine_pin_obj_init_helper(args[0], n_args - 1, args + 1, kw_args);
+}
+MP_DEFINE_CONST_FUN_OBJ_KW(machine_pin_obj_init_obj, 1, machine_pin_obj_init);
+
+// Pin.deinit()
+static mp_obj_t machine_pin_obj_deinit(mp_obj_t self_in) {
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cyhal_gpio_free(self->pin_addr);
+ pin_io_free(self);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_deinit_obj, machine_pin_obj_deinit);
+
+// Pin.toggle()
+static mp_obj_t machine_pin_toggle(mp_obj_t self_in) {
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ if (self->mode != GPIO_MODE_IN) {
+ cyhal_gpio_toggle(self->pin_addr);
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_toggle_obj, machine_pin_toggle);
+
+// Pin.high()
+static mp_obj_t machine_pin_high(mp_obj_t self_in) {
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ if (self->mode != GPIO_MODE_IN) {
+ cyhal_gpio_write(self->pin_addr, true);
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_high_obj, machine_pin_high);
+
+// Pin.low()
+static mp_obj_t machine_pin_low(mp_obj_t self_in) {
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ if (self->mode != GPIO_MODE_IN) {
+ cyhal_gpio_write(self->pin_addr, false);
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_pin_low_obj, machine_pin_low);
+
+// pin.irq(handler=None, trigger=IRQ_FALLING|IRQ_RISING)
+static mp_obj_t machine_pin_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_handler, ARG_trigger};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_handler, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_trigger, MP_ARG_INT, {.u_int = GPIO_IRQ_RISING | GPIO_IRQ_FALLING }},
+ };
+
+ machine_pin_io_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ if (n_args > 1 || kw_args->used != 0) {
+ // Update IRQ data.
+ self->callback = args[ARG_handler].u_obj;
+ mp_uint_t trigger = args[ARG_trigger].u_int;
+
+ cyhal_gpio_event_t event = mp_to_cy_get_interrupt_mode(trigger);
+ self->callback_data.callback = gpio_interrupt_handler;
+ self->callback_data.callback_arg = self;
+ cyhal_gpio_register_callback(self->pin_addr, &(self->callback_data));
+ cyhal_gpio_enable_event(self->pin_addr, event, 3, true);
+ }
+ return MP_OBJ_FROM_PTR(&(self->callback_data));
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_pin_irq_obj, 1, machine_pin_irq);
+
+void machine_pin_deinit_all() {
+ for (uint8_t i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (pin_io[i] != NULL) {
+ machine_pin_obj_deinit(pin_io[i]);
+ }
+ }
+}
+
+static const mp_rom_map_elem_t machine_pin_locals_dict_table[] = {
+ // Instance methods
+ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_machine) },
+ { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_pin_obj_init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_pin_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_toggle), MP_ROM_PTR(&machine_pin_toggle_obj) },
+ { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&machine_pin_value_obj) },
+ { MP_ROM_QSTR(MP_QSTR_low), MP_ROM_PTR(&machine_pin_low_obj) },
+ { MP_ROM_QSTR(MP_QSTR_high), MP_ROM_PTR(&machine_pin_high_obj) },
+ { MP_ROM_QSTR(MP_QSTR_off), MP_ROM_PTR(&machine_pin_low_obj) },
+ { MP_ROM_QSTR(MP_QSTR_on), MP_ROM_PTR(&machine_pin_high_obj) },
+ { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_pin_irq_obj) },
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_pin_deinit_obj) },
+
+ // Const
+ { MP_ROM_QSTR(MP_QSTR_IN), MP_ROM_INT(GPIO_MODE_IN) },
+ { MP_ROM_QSTR(MP_QSTR_OUT), MP_ROM_INT(GPIO_MODE_OUT) },
+ { MP_ROM_QSTR(MP_QSTR_OPEN_DRAIN), MP_ROM_INT(GPIO_MODE_OPEN_DRAIN) },
+
+ { MP_ROM_QSTR(MP_QSTR_PULL_UP), MP_ROM_INT(GPIO_PULL_UP) },
+ { MP_ROM_QSTR(MP_QSTR_PULL_DOWN), MP_ROM_INT(GPIO_PULL_DOWN) },
+
+ { MP_ROM_QSTR(MP_QSTR_IRQ_FALLING), MP_ROM_INT(GPIO_IRQ_FALLING)},
+ { MP_ROM_QSTR(MP_QSTR_IRQ_RISING), MP_ROM_INT(GPIO_IRQ_RISING)},
+};
+static MP_DEFINE_CONST_DICT(machine_pin_locals_dict, machine_pin_locals_dict_table);
+
+static mp_uint_t pin_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
+ (void)errcode;
+ machine_pin_io_obj_t *self = self_in;
+ switch (request) {
+ case MP_PIN_READ: {
+ return cyhal_gpio_read(self->pin_addr);
+ }
+ case MP_PIN_WRITE: {
+ cyhal_gpio_write(self->pin_addr, arg);
+ return 0;
+ }
+ }
+ return -1;
+}
+
+static const mp_pin_p_t pin_pin_p = {
+ .ioctl = pin_ioctl,
+};
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_pin_type,
+ MP_QSTR_Pin,
+ MP_TYPE_FLAG_NONE,
+ make_new, mp_pin_make_new,
+ print, machine_pin_print,
+ call, machine_pin_call,
+ protocol, &pin_pin_p,
+ locals_dict, &machine_pin_locals_dict
+ );
+
+MP_REGISTER_ROOT_POINTER(void *machine_pin_irq_obj[MAX_IO_PINS]);
diff --git a/ports/psoc6/machine_pin_phy.c b/ports/psoc6/machine_pin_phy.c
new file mode 100644
index 0000000000000..2cc2689514c14
--- /dev/null
+++ b/ports/psoc6/machine_pin_phy.c
@@ -0,0 +1,92 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include "py/mphal.h"
+#include "machine_pin_phy.h"
+
+
+// Function definitions
+// helper function to translate pin_name(string) into machine_pin_io_obj_t index.
+int pin_find(mp_obj_t pin) {
+ int wanted_pin = -1;
+ if (mp_obj_is_small_int(pin)) {
+ int pin_addr = mp_obj_get_int(pin);
+ for (int i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (machine_pin_phy_obj[i].addr == pin_addr) {
+ wanted_pin = i;
+ break;
+ }
+ }
+ } else if (mp_obj_is_str(pin)) {
+ // Search by name
+ size_t slen;
+ const char *s = mp_obj_str_get_data(pin, &slen);
+ for (int i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (slen == strlen(machine_pin_phy_obj[i].name) && strncmp(s, machine_pin_phy_obj[i].name, slen) == 0) {
+ wanted_pin = i;
+ break;
+ }
+ }
+ }
+
+ if (!(0 <= wanted_pin && wanted_pin < machine_pin_num_of_cpu_pins)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid pin: Pin not defined!"));
+ }
+
+ return wanted_pin;
+}
+
+mp_obj_t pin_name_by_addr(mp_obj_t pin) {
+ if (mp_obj_is_int(pin)) {
+ const char *name = machine_pin_phy_obj[pin_find(pin)].name;
+ return mp_obj_new_str(name, strlen(name));
+ } else {
+ return NULL; // expecting a int as input
+ }
+}
+
+// helper function to translate pin_name(string) into machine_pin_io_obj_t->pin_addr or pin_obj to machine_pin_io_obj_t->pin_addr
+int pin_addr_by_name(mp_obj_t pin) {
+ if (mp_obj_is_str(pin)) {
+ return machine_pin_phy_obj[pin_find(pin)].addr;
+ } else {
+ return pin_fetch_address(pin);
+ }
+}
+
+#define pin_phy_assert_null(x) { if (x == NULL) { return NULL; } }
+
+machine_pin_phy_obj_t *pin_phy_find_by_name(mp_obj_t pin_name) {
+ size_t slen;
+ const char *s = mp_obj_str_get_data(pin_name, &slen);
+ for (int i = 0; i < machine_pin_num_of_cpu_pins; i++) {
+ if (slen == strlen(machine_pin_phy_obj[i].name) && strncmp(s, machine_pin_phy_obj[i].name, slen) == 0) {
+ return &machine_pin_phy_obj[i];
+ }
+ }
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid pin: Pin not defined!"));
+ return NULL;
+}
diff --git a/ports/psoc6/machine_pin_phy.h b/ports/psoc6/machine_pin_phy.h
new file mode 100644
index 0000000000000..e528255806df1
--- /dev/null
+++ b/ports/psoc6/machine_pin_phy.h
@@ -0,0 +1,65 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#ifndef MICROPY_INCLUDED_MACHINE_PIN_PHY_H
+#define MICROPY_INCLUDED_MACHINE_PIN_PHY_H
+
+#include
+#include "genhdr/pins.h"
+
+#define PIN_PHY_GPIO_IN_USE_GENERAL_ERROR 0x4020d01
+#define PIN_PHY_I2C_IN_USE_ERROR 0x4020900
+#define PIN_PHY_SPI_IN_USE_ERROR 0x4021907
+#define PIN_PHY_UART_IN_USE_ERROR 0x4021f00
+
+#define assert_pin_phy_used(ret) { \
+ switch (ret) { \
+ case PIN_PHY_GPIO_IN_USE_GENERAL_ERROR: \
+ case PIN_PHY_I2C_IN_USE_ERROR: \
+ case PIN_PHY_SPI_IN_USE_ERROR: \
+ case PIN_PHY_UART_IN_USE_ERROR: \
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("The chosen pin(s) might be already in use by another machine instance.")); \
+ break; \
+ } \
+}
+
+typedef struct _machine_pin_phy_obj_t {
+ uint32_t addr;
+ char *name;
+} machine_pin_phy_obj_t;
+
+extern machine_pin_phy_obj_t machine_pin_phy_obj[];
+
+extern const uint8_t machine_pin_num_of_cpu_pins;
+
+int pin_fetch_address(mp_obj_t pin); // function to support the bitstream class (obj to pin address)
+
+// Function Prototypes to support interaction between c<->py
+int pin_find(mp_obj_t obj);
+mp_obj_t pin_name_by_addr(mp_obj_t pin);
+int pin_addr_by_name(mp_obj_t obj);
+
+#endif // MICROPY_INCLUDED_MACHINE_PIN_PHY_H
diff --git a/ports/psoc6/machine_pwm.c b/ports/psoc6/machine_pwm.c
new file mode 100644
index 0000000000000..43979e519f5eb
--- /dev/null
+++ b/ports/psoc6/machine_pwm.c
@@ -0,0 +1,234 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+ #include "py/runtime.h"
+ #include "py/mphal.h"
+ #include "modmachine.h"
+
+// port-specific includes
+ #include "machine_pin_phy.h"
+ #include "mplogger.h"
+
+ #define pwm_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+typedef struct _machine_pwm_obj_t {
+ mp_obj_base_t base;
+ cyhal_pwm_t pwm_obj;
+ uint32_t pin;
+ uint32_t fz;
+ uint8_t duty_type;
+ mp_int_t duty;
+} machine_pwm_obj_t;
+
+static machine_pwm_obj_t *pwm_obj[MAX_PWM_OBJS] = { NULL };
+
+static inline machine_pwm_obj_t *pwm_obj_alloc() {
+ for (uint8_t i = 0; i < MAX_PWM_OBJS; i++) {
+ if (pwm_obj[i] == NULL) {
+ pwm_obj[i] = mp_obj_malloc(machine_pwm_obj_t, &machine_pwm_type);
+ return pwm_obj[i];
+ }
+ }
+
+ return NULL;
+}
+
+static inline void pwm_obj_free(machine_pwm_obj_t *pwm_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_PWM_OBJS; i++) {
+ if (pwm_obj[i] == pwm_obj_ptr) {
+ pwm_obj[i] = NULL;
+ }
+ }
+}
+
+enum {
+ VALUE_NOT_SET = -1,
+ DUTY_NOT_SET = 0,
+ DUTY_U16,
+ DUTY_NS
+};
+
+/* Unit conversion macros */
+ #define pwm_duty_cycle_ns_to_u16(duty_ns, fz) ((int)(((float)(duty_ns * fz) / (float)1000000000) * (float)65536) - 1)
+ #define pwm_duty_cycle_u16_to_ns(duty_u16, fz) ((int)(((float)(duty_u16 + 1) / (float)65536) * ((float)1000000000 / (float)fz)))
+ #define pwm_duty_cycle_u16_to_percent(duty_u16) ((float)((duty_u16) * 100) / (float)65535)
+ #define pwm_freq_to_period_us(fz) ((uint32_t)(1000000 / fz))
+ #define pwm_period_ns_to_us(period_ns) ((uint32_t)(period_ns / 1000))
+
+static void pwm_duty_ns_assert(mp_int_t duty_ns, uint32_t fz) {
+ if (duty_ns > (int)(1000000000 / fz)) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("PWM duty in ns is larger than the period %d ns"), (int)(1000000000 / fz));
+ }
+}
+
+static inline void pwm_freq_duty_set(cyhal_pwm_t *pwm_obj, uint32_t fz, mp_int_t duty_cycle) {
+ cy_rslt_t ret = cyhal_pwm_set_duty_cycle(pwm_obj, pwm_duty_cycle_u16_to_percent(duty_cycle), fz);
+ pwm_assert_raise_val("PWM frequency and duty cycle set failed with return code %lx !", ret);
+}
+
+static void pwm_duty_set_ns(cyhal_pwm_t *pwm_obj, uint32_t fz, uint32_t pulse_width) {
+ cy_rslt_t ret = cyhal_pwm_set_period(pwm_obj, pwm_freq_to_period_us(fz), pwm_period_ns_to_us(pulse_width));
+ pwm_assert_raise_val("PWM period set failed with return code %lx !", ret);
+}
+
+static void pwm_config(machine_pwm_obj_t *self) {
+ if (self->duty_type == DUTY_U16) {
+ pwm_freq_duty_set(&self->pwm_obj, self->fz, self->duty);
+ } else {
+ pwm_duty_set_ns(&self->pwm_obj, self->fz, self->duty);
+ }
+}
+
+static void mp_machine_pwm_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_pwm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_obj_t pin = mp_obj_new_int(self->pin);
+ const char *pin_name = mp_obj_str_get_str(pin_name_by_addr(pin));
+ mp_printf(print, "PWM(\"%s\",freq=%u, duty_u16=%f)", pin_name, self->fz, (double)self->duty);
+}
+
+static void mp_machine_pwm_init_helper(machine_pwm_obj_t *self,
+ size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_freq, ARG_duty_u16, ARG_duty_ns};
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_freq, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = VALUE_NOT_SET} },
+ { MP_QSTR_duty_u16, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = VALUE_NOT_SET} },
+ { MP_QSTR_duty_ns, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = VALUE_NOT_SET} },
+ };
+
+ // Parse the arguments.
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args,
+ MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ if ((args[ARG_freq].u_int != VALUE_NOT_SET)) {
+ self->fz = args[ARG_freq].u_int;
+ }
+
+ if ((args[ARG_duty_u16].u_int != VALUE_NOT_SET) &&
+ (args[ARG_duty_ns].u_int != VALUE_NOT_SET)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("PWM duty should be specified only in one format"));
+ }
+
+ if ((args[ARG_duty_u16].u_int != VALUE_NOT_SET)) {
+ self->duty = args[ARG_duty_u16].u_int > 65535 ? 65535 : args[ARG_duty_u16].u_int;
+ self->duty_type = DUTY_U16;
+ } else if (args[ARG_duty_ns].u_int != VALUE_NOT_SET) {
+ pwm_duty_ns_assert(args[ARG_duty_ns].u_int, self->fz);
+ self->duty = args[ARG_duty_ns].u_int;
+ self->duty_type = DUTY_NS;
+ } else {
+ mp_raise_ValueError(MP_ERROR_TEXT("PWM duty should be specified in either ns or u16"));
+ }
+
+ pwm_config(self);
+
+ cy_rslt_t result = cyhal_pwm_start(&self->pwm_obj);
+ pwm_assert_raise_val("PWM start failed with return code %lx !", result);
+}
+
+static mp_obj_t mp_machine_pwm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ // Check number of arguments
+ mp_arg_check_num(n_args, n_kw, 1, MP_OBJ_FUN_ARGS_MAX, true);
+
+ // Get static peripheral object.
+ machine_pwm_obj_t *self = pwm_obj_alloc();
+ self->pin = pin_addr_by_name(all_args[0]);
+ self->duty_type = DUTY_NOT_SET;
+ self->fz = -1;
+
+ cy_rslt_t result = cyhal_pwm_init(&self->pwm_obj, self->pin, NULL);
+ assert_pin_phy_used(result);
+ pwm_assert_raise_val("PWM initialisation failed with return code %lx !", result);
+
+ // Process the remaining parameters.
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw, all_args + n_args);
+ mp_machine_pwm_init_helper(self, n_args - 1, all_args + 1, &kw_args);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static void mp_machine_pwm_deinit(machine_pwm_obj_t *self) {
+ cy_rslt_t result = cyhal_pwm_stop(&self->pwm_obj);
+ pwm_assert_raise_val("PWM stop failed with return code %lx !", result);
+ cyhal_pwm_free(&self->pwm_obj);
+ pwm_obj_free(self);
+}
+
+static mp_obj_t mp_machine_pwm_duty_get_u16(machine_pwm_obj_t *self) {
+ if (self->duty_type == DUTY_NS) {
+ return mp_obj_new_int(pwm_duty_cycle_ns_to_u16(self->duty, self->fz));
+ } else {
+ return mp_obj_new_int(self->duty);
+ }
+}
+
+// sets the duty cycle as a ratio duty_u16 / 65535.
+static void mp_machine_pwm_duty_set_u16(machine_pwm_obj_t *self, mp_int_t duty_u16) {
+ // Check the value is more than the max value
+ self->duty = duty_u16 > 65535 ? 65535 : duty_u16;
+ self->duty_type = DUTY_U16;
+ pwm_config(self);
+}
+
+static mp_obj_t mp_machine_pwm_duty_get_ns(machine_pwm_obj_t *self) {
+ if (self->duty_type == DUTY_U16) {
+ return mp_obj_new_int(pwm_duty_cycle_u16_to_ns(self->duty, self->fz));
+ } else {
+ return mp_obj_new_int(self->duty);
+ }
+}
+
+// sets the pulse width in nanoseconds
+static void mp_machine_pwm_duty_set_ns(machine_pwm_obj_t *self, mp_int_t duty_ns) {
+ pwm_duty_ns_assert(duty_ns, self->fz);
+ self->duty = duty_ns;
+ self->duty_type = DUTY_NS;
+ pwm_config(self);
+}
+
+static mp_obj_t mp_machine_pwm_freq_get(machine_pwm_obj_t *self) {
+ return MP_OBJ_NEW_SMALL_INT(self->fz);
+}
+
+static void mp_machine_pwm_freq_set(machine_pwm_obj_t *self, mp_int_t freq) {
+ if (self->duty_type == DUTY_NS) {
+ pwm_duty_ns_assert(self->duty, freq);
+ }
+ self->fz = freq;
+ pwm_config(self);
+}
+
+void machine_pwm_deinit_all() {
+ for (uint8_t i = 0; i < MAX_PWM_OBJS; i++) {
+ if (pwm_obj[i] != NULL) {
+ mp_machine_pwm_deinit(pwm_obj[i]);
+ }
+ }
+}
diff --git a/ports/psoc6/machine_rtc.c b/ports/psoc6/machine_rtc.c
new file mode 100644
index 0000000000000..ae0053c6e298d
--- /dev/null
+++ b/ports/psoc6/machine_rtc.c
@@ -0,0 +1,397 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2021 "Krzysztof Adamski"
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+// micropython includes
+#include "py/nlr.h"
+#include "py/obj.h"
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "py/mperrno.h"
+#include "shared/timeutils/timeutils.h"
+#include "py/misc.h"
+
+
+// MTB includes
+#include "cyhal.h"
+
+
+// port-specific includes
+#include "modmachine.h"
+
+/* The values are reflected to match MPY reset values*/
+#define RTC_INIT_YEAR 2015
+#define RTC_INIT_MONTH 1 /* January */
+#define RTC_INIT_MDAY 1
+#define RTC_INIT_WDAY 4 /* Thursday */
+#define RTC_INIT_HOUR 0
+#define RTC_INIT_MINUTE 0
+#define RTC_INIT_SECOND 0
+#define RTC_INIT_DST 0
+#define TM_YEAR_BASE (1900u)
+
+#define rtc_assert_raise(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_ValueError(MP_ERROR_TEXT(msg)); \
+}
+
+
+cyhal_rtc_t psoc6_rtc;
+static bool rtc_memory = false;
+
+typedef struct _machine_rtc_obj_t {
+ mp_obj_base_t base;
+ mp_obj_t callback;
+ mp_obj_t alarm_period_s;
+ mp_obj_t alarm_elapse_time_s;
+ bool alarmset;
+ bool repeat;
+} machine_rtc_obj_t;
+
+// singleton RTC object
+static machine_rtc_obj_t machine_rtc_obj = {.base = {&machine_rtc_type}};
+
+bool rtc_memory_write_enabled() {
+ return rtc_memory;
+}
+
+/* This function is run from main.c to init the RTC at boot time. This will set the RTC to PSoC default time: 1st Jan 2000*/
+void machine_rtc_init_all(void) {
+ cy_rslt_t result = cyhal_rtc_init(&psoc6_rtc);
+ rtc_assert_raise("cyhal_rtc_init failed !", result);
+}
+
+void machine_rtc_deinit_all() {
+ if (rtc_memory_write_enabled() == false) {
+ cyhal_rtc_free(&psoc6_rtc);
+ }
+}
+
+// Helper function to set/get datetime
+static mp_obj_t machine_rtc_datetime_helper(mp_uint_t n_args, const mp_obj_t *args) {
+ struct tm current_date_time;
+ if (n_args == 1) {
+ cy_rslt_t result = cyhal_rtc_read(&psoc6_rtc, ¤t_date_time);
+ rtc_assert_raise("cyhal_rtc_read failed !", result);
+
+ mp_obj_t tuple[8] = {
+ mp_obj_new_int(current_date_time.tm_year + TM_YEAR_BASE),
+ mp_obj_new_int(current_date_time.tm_mon + 1),
+ mp_obj_new_int(current_date_time.tm_mday),
+ mp_obj_new_int(current_date_time.tm_wday),
+ mp_obj_new_int(current_date_time.tm_hour),
+ mp_obj_new_int(current_date_time.tm_min),
+ mp_obj_new_int(current_date_time.tm_sec),
+ mp_obj_new_int(0)
+ };
+ return mp_obj_new_tuple(8, tuple);
+ } else {
+ mp_obj_t *items;
+ mp_obj_get_array_fixed_n(args[1], 8, &items);
+
+ current_date_time.tm_year = mp_obj_get_int(items[0]) - TM_YEAR_BASE;
+ current_date_time.tm_mon = mp_obj_get_int(items[1]) - 1;
+ current_date_time.tm_mday = mp_obj_get_int(items[2]);
+ current_date_time.tm_wday = mp_obj_get_int(items[3]);
+ current_date_time.tm_hour = mp_obj_get_int(items[4]);
+ current_date_time.tm_min = mp_obj_get_int(items[5]);
+ current_date_time.tm_sec = mp_obj_get_int(items[6]);
+
+ cy_rslt_t result = cyhal_rtc_write(&psoc6_rtc, ¤t_date_time);
+ rtc_assert_raise("cyhal_rtc_write failed ! Check if field values entered are within the specified range.", result);
+ }
+ return mp_const_none;
+}
+
+static inline uint64_t rtc_get_datetime_in_sec(mp_obj_t datetime) {
+ size_t len;
+ mp_obj_t *elem;
+ mp_obj_get_array(datetime, &len, &elem);
+
+ // localtime generates a tuple of len 8. CPython uses 9, so we accept both.
+ if (len < 8 || len > 9) {
+ mp_raise_TypeError(MP_ERROR_TEXT("mktime needs a tuple of length 8 or 9"));
+ }
+
+ return timeutils_mktime(mp_obj_get_int(elem[0]),
+ mp_obj_get_int(elem[1]), mp_obj_get_int(elem[2]), mp_obj_get_int(elem[3]),
+ mp_obj_get_int(elem[4]), mp_obj_get_int(elem[5]));
+
+}
+
+static inline uint64_t rtc_get_current_time_in_sec() {
+ mp_obj_t datetime = machine_rtc_datetime_helper(1, NULL);
+
+ size_t len;
+ mp_obj_t *elem;
+ mp_obj_get_array(datetime, &len, &elem);
+
+ // localtime generates a tuple of len 8. CPython uses 9, so we accept both.
+ if (len < 8 || len > 9) {
+ mp_raise_TypeError(MP_ERROR_TEXT("mktime needs a tuple of length 8 or 9"));
+ }
+
+ return timeutils_mktime(mp_obj_get_int(elem[0]),
+ mp_obj_get_int(elem[1]), mp_obj_get_int(elem[2]), mp_obj_get_int(elem[4]),
+ mp_obj_get_int(elem[5]), mp_obj_get_int(elem[6]));
+
+}
+
+static void rtc_irq_handler(void *self, cyhal_rtc_event_t event);
+
+static void rtc_alarm_setup(machine_rtc_obj_t *self) {
+ cyhal_rtc_set_alarm_by_seconds(&psoc6_rtc, mp_obj_get_int(self->alarm_period_s));
+ cyhal_rtc_register_callback(&psoc6_rtc, (cyhal_rtc_event_callback_t)rtc_irq_handler, self);
+ cyhal_rtc_enable_event(&psoc6_rtc, CYHAL_RTC_ALARM, 3, true);
+}
+
+void rtc_irq_handler(void *self_in, cyhal_rtc_event_t event) {
+ machine_rtc_obj_t *self = (machine_rtc_obj_t *)self_in;
+ if (self->callback != NULL) {
+ if (self->repeat) {
+ rtc_alarm_setup(self);
+ }
+ mp_call_function_1((mp_obj_t)self->callback, mp_obj_new_int(event));
+ }
+}
+
+static inline void rtc_get_dtime_struct(const mp_obj_t datetime, struct tm *dtime) {
+ // set date and time
+ mp_obj_t *items;
+ size_t len;
+ mp_obj_get_array(datetime, &len, &items);
+
+ dtime->tm_sec = mp_obj_get_int(items[5]);
+ dtime->tm_min = mp_obj_get_int(items[4]);
+ dtime->tm_hour = mp_obj_get_int(items[3]);
+ dtime->tm_mday = mp_obj_get_int(items[2]);
+ dtime->tm_mon = mp_obj_get_int(items[1]) - 1;
+ dtime->tm_year = mp_obj_get_int(items[0]) - TM_YEAR_BASE;
+ dtime->tm_wday = 0;
+ dtime->tm_yday = 0;
+ dtime->tm_isdst = 0;
+
+}
+
+/******************************************************************************/
+// MicroPython bindings
+
+// RTC constructor
+static mp_obj_t machine_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mp_arg_check_num(n_args, n_kw, 0, 0, false);
+ return (mp_obj_t)&machine_rtc_obj;
+}
+
+// RTC.init(datetime)
+static mp_obj_t machine_rtc_init(mp_obj_t self_in, mp_obj_t datetime) {
+ machine_rtc_obj_t *self = (machine_rtc_obj_t *)self_in;
+ self->alarm_elapse_time_s = NULL;
+ self->alarm_period_s = NULL;
+ self->alarmset = false;
+ self->callback = NULL;
+ self->repeat = false;
+
+ mp_obj_t args[2] = {self_in, datetime};
+ machine_rtc_datetime_helper(2, args);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_rtc_init_obj, machine_rtc_init);
+
+// RTC.datetime([datetime])
+static mp_obj_t machine_rtc_datetime(mp_uint_t n_args, const mp_obj_t *datetime) {
+ return machine_rtc_datetime_helper(n_args, datetime);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_datetime_obj, 1, 2, machine_rtc_datetime);
+
+// RTC.deinit()
+static mp_obj_t machine_rtc_deinit(mp_obj_t self_in) {
+ /* Resets RTC to 1st Jan' 2015 as mentioned in MPY guide*/
+ struct tm reset_date_time = {
+ .tm_year = RTC_INIT_YEAR - TM_YEAR_BASE,
+ .tm_mon = RTC_INIT_MONTH - 1,
+ .tm_mday = RTC_INIT_MDAY,
+ .tm_wday = RTC_INIT_WDAY,
+ .tm_hour = RTC_INIT_HOUR,
+ .tm_min = RTC_INIT_MINUTE,
+ .tm_sec = RTC_INIT_SECOND,
+ .tm_isdst = RTC_INIT_DST
+ };
+ cy_rslt_t result = cyhal_rtc_write(&psoc6_rtc, &reset_date_time);
+ rtc_assert_raise("cyhal_rtc_write failed during RTC deinitialization!", result);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_rtc_deinit_obj, machine_rtc_deinit);
+
+// RTC.now()
+static mp_obj_t machine_rtc_now(mp_obj_t self_in) {
+ return machine_rtc_datetime_helper(1, NULL);
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_rtc_now_obj, machine_rtc_now);
+
+// RTC.alarm()
+static mp_obj_t machine_rtc_alarm(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_time, MP_ARG_OBJ, {.u_obj = mp_const_none} },
+ { MP_QSTR_repeat, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
+ };
+
+ // parse args
+ uint64_t dtime_sec;
+ machine_rtc_obj_t *self = pos_args[0];
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(args), allowed_args, args);
+
+ uint64_t alarm_set_time_s = rtc_get_current_time_in_sec();
+
+ self->repeat = args[1].u_bool;
+ if (mp_obj_is_type(args[0].u_obj, &mp_type_tuple)) { // datetime tuple given
+ // repeat cannot be used with a datetime tuple
+ if (self->repeat) {
+ mp_raise_ValueError(MP_ERROR_TEXT("invalid argument(s) value"));
+ }
+ struct tm dtime;
+ cyhal_alarm_active_t alarm_active =
+ {
+ .en_sec = 1,
+ .en_min = 1,
+ .en_hour = 1,
+ .en_day = 0,
+ .en_date = 1,
+ .en_month = 1,
+ };
+ dtime_sec = rtc_get_datetime_in_sec(args[0].u_obj);
+ self->alarm_period_s = mp_obj_new_int_from_uint(dtime_sec - alarm_set_time_s);
+ rtc_get_dtime_struct(args[0].u_obj, &dtime);
+ cyhal_rtc_set_alarm(&psoc6_rtc, &dtime, alarm_active);
+ } else { // then it must be an integer
+ self->alarm_period_s = mp_obj_new_int_from_uint(mp_obj_get_int(args[0].u_obj) / 1000);
+ rtc_alarm_setup(self);
+ }
+ self->alarm_elapse_time_s = mp_obj_new_int_from_uint(alarm_set_time_s + mp_obj_get_int(self->alarm_period_s));
+ self->alarmset = true;
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_rtc_alarm_obj, 1, machine_rtc_alarm);
+
+// RTC.alarm_left()
+static mp_obj_t machine_rtc_alarm_left(size_t n_args, const mp_obj_t *args) {
+ machine_rtc_obj_t *self = args[0];
+ // only alarm id 0 is available
+ if (n_args > 1 && mp_obj_get_int(args[1]) != CYHAL_RTC_ALARM) {
+ mp_raise_OSError(MP_ENODEV);
+ }
+ if (self->alarmset) {
+ uint64_t curr_time = rtc_get_current_time_in_sec();
+ return mp_obj_new_int_from_uint((mp_obj_get_int(self->alarm_elapse_time_s) >= curr_time) ? ((mp_obj_get_int(self->alarm_elapse_time_s) - curr_time) * 1000) : 0);
+ }
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Alarm not set! \n"));
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_alarm_left_obj, 1, 2, machine_rtc_alarm_left);
+
+// RTC.cancel()
+static mp_obj_t machine_rtc_cancel(size_t n_args, const mp_obj_t *args) {
+ // only alarm id 0 is available
+ if (n_args > 1 && mp_obj_get_int(args[1]) != CYHAL_RTC_ALARM) {
+ mp_raise_OSError(MP_ENODEV);
+ }
+ // disable the alarm
+ machine_rtc_obj_t *self = args[0];
+ self->alarmset = false;
+ cyhal_rtc_enable_event(&psoc6_rtc, CYHAL_RTC_ALARM, 3, false);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_alarm_cancel_obj, 1, 2, machine_rtc_cancel);
+
+// RTC.memory()
+static mp_obj_t machine_rtc_memory(size_t n_args, const mp_obj_t *args) {
+ rtc_memory = true;
+ return machine_rtc_datetime_helper(n_args, args);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_rtc_memory_obj, 1, 2, machine_rtc_memory);
+
+// RTC.irq()
+static mp_obj_t machine_rtc_irq(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_trigger, ARG_handler, ARG_wake};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_trigger, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = CYHAL_RTC_ALARM} },
+ { MP_QSTR_handler, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_wake, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} }
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ machine_rtc_obj_t *self = pos_args[0];
+
+ self->callback = args[ARG_handler].u_obj;
+ if (args[ARG_handler].u_obj == mp_const_none) {
+ self->callback = NULL;
+ }
+
+ if (args[ARG_trigger].u_int != CYHAL_RTC_ALARM) {
+ mp_raise_OSError(MP_ENODEV);
+ }
+
+ if (args[ARG_wake].u_int != -1) {
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("wake not implemented!\n"));
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_rtc_irq_obj, 1, machine_rtc_irq);
+
+static const mp_rom_map_elem_t machine_rtc_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_rtc_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_rtc_init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_rtc_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_datetime), MP_ROM_PTR(&machine_rtc_datetime_obj) },
+ { MP_ROM_QSTR(MP_QSTR_now), MP_ROM_PTR(&machine_rtc_now_obj) },
+ { MP_ROM_QSTR(MP_QSTR_alarm), MP_ROM_PTR(&machine_rtc_alarm_obj) },
+ { MP_ROM_QSTR(MP_QSTR_alarm_left), MP_ROM_PTR(&machine_rtc_alarm_left_obj) },
+ { MP_ROM_QSTR(MP_QSTR_cancel), MP_ROM_PTR(&machine_rtc_alarm_cancel_obj) },
+ { MP_ROM_QSTR(MP_QSTR_irq), MP_ROM_PTR(&machine_rtc_irq_obj) },
+ { MP_ROM_QSTR(MP_QSTR_memory), MP_ROM_PTR(&machine_rtc_memory_obj)},
+ // class constants
+ { MP_ROM_QSTR(MP_QSTR_ALARM0), MP_ROM_INT(CYHAL_RTC_ALARM) },
+
+};
+static MP_DEFINE_CONST_DICT(machine_rtc_locals_dict, machine_rtc_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_rtc_type,
+ MP_QSTR_RTC,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_rtc_make_new,
+ locals_dict, &machine_rtc_locals_dict
+ );
diff --git a/ports/psoc6/machine_sdcard.c b/ports/psoc6/machine_sdcard.c
new file mode 100644
index 0000000000000..17ac53bf5dbdf
--- /dev/null
+++ b/ports/psoc6/machine_sdcard.c
@@ -0,0 +1,342 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020-2021 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+
+// micropython includes
+#include "py/runtime.h"
+#include "extmod/vfs.h"
+#include "modpsoc6.h"
+#include "mplogger.h"
+#include "mphalport.h"
+
+// port-specific includes
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+#include "mplogger.h"
+
+// MTB includes
+#include "cyhal.h"
+#include "cybsp.h"
+
+#define SDHC_DEFAULT_BUS_WIDTH (4U)
+#define SDHC_BLOCK_SIZE (512UL)
+#define SDHC_CLOCK_RESOURCE_BLOCK_NUMBER (18U)
+#define SDHC_CLOCK_RESOURCE_CHANNEL_NUMBER (2U)
+typedef struct _machine_sdcard_obj_t {
+ mp_obj_base_t base;
+ cyhal_sdhc_t sdhc_obj;
+ uint16_t slot_num;
+ uint32_t wp;
+ uint32_t cmd;
+ uint32_t dat0;
+ uint32_t dat1;
+ uint32_t dat2;
+ uint32_t dat3;
+ uint32_t clk;
+ uint32_t cd;
+ uint32_t block_count;
+} machine_sdcard_obj_t;
+
+machine_sdcard_obj_t *sdhc_obj[MAX_SDHC_SLOT] = { NULL };
+
+enum {
+ ARG_slot,
+ ARG_width,
+ ARG_cd,
+ ARG_wp,
+ ARG_cmd,
+ ARG_dat0,
+ ARG_dat1,
+ ARG_dat2,
+ ARG_dat3,
+ ARG_clk
+};
+
+static inline machine_sdcard_obj_t *sd_card_obj_alloc() {
+ for (uint8_t i = 0; i < MAX_SDHC_SLOT; i++)
+ {
+ if (sdhc_obj[i] == NULL) {
+ sdhc_obj[i] = mp_obj_malloc(machine_sdcard_obj_t, &machine_sdcard_type);
+ return sdhc_obj[i];
+ }
+ }
+ return NULL;
+}
+
+static inline void sd_card_obj_free(machine_sdcard_obj_t *sdhc_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_SDHC_SLOT; i++)
+ {
+ if (sdhc_obj[i] == sdhc_obj_ptr) {
+ sdhc_obj[i] = NULL;
+ }
+ }
+}
+
+static void sd_card_allocate_pin(machine_sdcard_obj_t *self, mp_arg_val_t *args) {
+ if (args[ARG_cmd].u_obj != mp_const_none) {
+ self->cmd = pin_addr_by_name(args[ARG_cmd].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Cmd pin must be provided"));
+ }
+
+ if (args[ARG_dat0].u_obj != mp_const_none) {
+ self->dat0 = pin_addr_by_name(args[ARG_dat0].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Data 0 pin must be provided"));
+ }
+
+ if (args[ARG_dat1].u_obj != mp_const_none) {
+ self->dat1 = pin_addr_by_name(args[ARG_dat1].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Data 1 pin must be provided"));
+ }
+
+ if (args[ARG_dat2].u_obj != mp_const_none) {
+ self->dat2 = pin_addr_by_name(args[ARG_dat2].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Data 2 pin must be provided"));
+ }
+
+ if (args[ARG_dat3].u_obj != mp_const_none) {
+ self->dat3 = pin_addr_by_name(args[ARG_dat3].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Data 3 pin must be provided"));
+ }
+
+ if (args[ARG_clk].u_obj != mp_const_none) {
+ self->clk = pin_addr_by_name(args[ARG_clk].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("Clk pin must be provided"));
+ }
+
+ if (args[ARG_cd].u_obj != mp_const_none) {
+ self->cd = pin_addr_by_name(args[ARG_cd].u_obj);
+ }
+
+ if (args[ARG_wp].u_obj != mp_const_none) {
+ self->wp = pin_addr_by_name(args[ARG_wp].u_obj);
+ }
+}
+
+static cy_rslt_t sd_card_init_helper(machine_sdcard_obj_t *self, mp_arg_val_t *args) {
+
+ cyhal_sdhc_config_t sdhc_config;
+
+ sdhc_config.enableLedControl = false;
+ sdhc_config.lowVoltageSignaling = false;
+ sdhc_config.isEmmc = false;
+ sdhc_config.busWidth = SDHC_DEFAULT_BUS_WIDTH;
+
+ cy_rslt_t result = CY_RSLT_SUCCESS;
+ cyhal_clock_t *clock_source = NULL;
+
+// If external flash is running, then HF2 clock resource is already initialized by QSPI and it has to be reused by SDHC peripheral.
+ #if MICROPY_ENABLE_EXT_QSPI_FLASH
+ cyhal_clock_t clock;
+ cyhal_resource_inst_t rsc = {CYHAL_RSC_CLOCK, SDHC_CLOCK_RESOURCE_BLOCK_NUMBER, SDHC_CLOCK_RESOURCE_CHANNEL_NUMBER};
+ cyhal_clock_get(&clock, &rsc);
+ clock_source = &clock;
+ #endif
+
+
+ sd_card_allocate_pin(self, args);
+ result = cyhal_sdhc_init(&self->sdhc_obj, &sdhc_config, self->cmd, self->clk, self->dat0, self->dat1,
+ self->dat2, self->dat3, NC, NC, NC, NC, self->cd, NC, NC, NC, NC, NC, clock_source);
+ return result;
+}
+
+static void sd_card_deallocate_pins(machine_sdcard_obj_t *self) {
+ cyhal_gpio_free(self->cd);
+ cyhal_gpio_free(self->cmd);
+ cyhal_gpio_free(self->clk);
+ cyhal_gpio_free(self->wp);
+ cyhal_gpio_free(self->dat0);
+ cyhal_gpio_free(self->dat1);
+ cyhal_gpio_free(self->dat2);
+ cyhal_gpio_free(self->dat3);
+}
+
+static mp_obj_t machine_sdcard_deinit(mp_obj_t self_in) {
+ machine_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cyhal_sdhc_free(&self->sdhc_obj);
+ sd_card_deallocate_pins(self);
+ sd_card_obj_free(self);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_sdcard_deinit_obj, machine_sdcard_deinit);
+
+static mp_obj_t machine_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+
+ mp_arg_check_num(n_args, n_kw, 0, 9, true);
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_slot, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_width, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_cd, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_wp, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_cmd, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_dat0, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_dat1, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_dat2, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_dat3, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} },
+ { MP_QSTR_clk, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} }
+ };
+
+ // Parse the arguments.
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw, all_args + n_args);
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ machine_sdcard_obj_t *self = sd_card_obj_alloc();
+ if (self == NULL) {
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("No available slots!"));
+ return mp_const_none;
+ }
+
+ if (args[ARG_slot].u_int != -1) {
+ mp_printf(&mp_plat_print, "machine.SDCard: slot parameter is ignored in this port.\n");
+ }
+
+ cy_rslt_t result = sd_card_init_helper(self, args);
+
+ if (CY_RSLT_SUCCESS == result) {
+ cyhal_sdhc_get_block_count(&self->sdhc_obj, (uint32_t *)&self->block_count);
+ } else {
+ assert_pin_phy_used(result);
+ if (cyhal_sdhc_is_card_inserted(&self->sdhc_obj) == false) {
+ machine_sdcard_deinit(self);
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("SD Card not inserted!\n"));
+ } else {
+ machine_sdcard_deinit(self);
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("SD card init failed!\n"));
+ }
+ }
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static mp_obj_t machine_sdcard_readblocks(size_t n_args, const mp_obj_t *args) {
+
+ machine_sdcard_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t block_address = mp_obj_get_int(args[1]);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_WRITE);
+
+ if (n_args == 4) {
+ block_address += mp_obj_get_int(args[3]);
+ }
+
+ size_t length = bufinfo.len / SDHC_BLOCK_SIZE;
+ cy_rslt_t result = cyhal_sdhc_read(&self->sdhc_obj, block_address, bufinfo.buf, &length);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("machine_sdcard_readblocks() - SD Card Read failed !"));
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_sdcard_readblocks_obj, 3, 4, machine_sdcard_readblocks);
+
+static mp_obj_t machine_sdcard_writeblocks(size_t n_args, const mp_obj_t *args) {
+
+ machine_sdcard_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t block_address = mp_obj_get_int(args[1]);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_READ);
+
+ size_t length = bufinfo.len / SDHC_BLOCK_SIZE;
+
+ cy_rslt_t result = cyhal_sdhc_write(&self->sdhc_obj, block_address, bufinfo.buf, &length);
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("machine_sdcard_writeblocks() - SD Card Write failed!"));
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_sdcard_writeblocks_obj, 3, 4, machine_sdcard_writeblocks);
+
+static mp_obj_t machine_sdcard_ioctl(mp_obj_t self_in, mp_obj_t cmd_in, mp_obj_t arg_in) {
+ machine_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_int_t cmd = mp_obj_get_int(cmd_in);
+
+ switch (cmd) {
+ case MP_BLOCKDEV_IOCTL_INIT:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_DEINIT:
+ machine_sdcard_deinit(self_in);
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_SYNC:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_BLOCK_COUNT:
+ return MP_OBJ_NEW_SMALL_INT(self->block_count);
+ case MP_BLOCKDEV_IOCTL_BLOCK_SIZE:
+ return MP_OBJ_NEW_SMALL_INT(SDHC_BLOCK_SIZE);
+ case MP_BLOCKDEV_IOCTL_BLOCK_ERASE: {
+ uint32_t offset = mp_obj_get_int(arg_in);
+ cy_rslt_t result = cyhal_sdhc_erase(&self->sdhc_obj, offset, 1, 0);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("machine_sdcard_ioctl() - SD Card erase failed !"));
+ }
+ return MP_OBJ_NEW_SMALL_INT(0);
+ }
+ default:
+ return mp_const_none;
+ }
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(machine_sdcard_ioctl_obj, machine_sdcard_ioctl);
+
+
+void machine_sdcard_deinit_all() {
+ for (uint8_t i = 0; i < MAX_SDHC_SLOT; i++) {
+ if (sdhc_obj[i] != NULL) {
+ machine_sdcard_deinit(MP_OBJ_FROM_PTR(sdhc_obj[i]));
+ }
+ }
+}
+
+static const mp_rom_map_elem_t machine_sdcard_locals_dict_table[] = {
+ // block device protocol
+ { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&machine_sdcard_readblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&machine_sdcard_writeblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ioctl), MP_ROM_PTR(&machine_sdcard_ioctl_obj) },
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_sdcard_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_sdcard_deinit_obj) },
+};
+static MP_DEFINE_CONST_DICT(machine_sdcard_locals_dict, machine_sdcard_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_sdcard_type,
+ MP_QSTR_SDCard,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_sdcard_make_new,
+ locals_dict, &machine_sdcard_locals_dict
+ );
diff --git a/ports/psoc6/machine_spi.c b/ports/psoc6/machine_spi.c
new file mode 100644
index 0000000000000..23fc913539326
--- /dev/null
+++ b/ports/psoc6/machine_spi.c
@@ -0,0 +1,428 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+// mpy includes
+#include "py/runtime.h"
+#include "extmod/modmachine.h"
+#include "py/mperrno.h"
+
+// MTB includes
+#include "cybsp.h"
+#include "cyhal.h"
+
+
+// port-specific includes
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+#include "mplogger.h"
+
+#define DEFAULT_SPI_BAUDRATE (1000000)
+#define DEFAULT_SPI_POLARITY (0)
+#define DEFAULT_SPI_PHASE (0)
+#define DEFAULT_SPI_BITS (8)
+#define DEFAULT_SPI_FIRSTBIT (0) // msb
+#define DEFAULT_SPI_SSEL_PIN (MP_ROM_QSTR(MP_QSTR_NC))
+#define MASTER_MODE (0)
+#define SLAVE_MODE (1)
+
+
+#define spi_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+#define spi_alloc_msg(pin_name, pin_obj, msg) if (pin_obj == NULL) { \
+ size_t slen; \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), mp_obj_str_get_data(pin_name, &slen)); \
+}
+
+typedef struct _machine_spi_obj_t {
+ mp_obj_base_t base;
+ cyhal_spi_t spi_obj;
+ int id; // This parameter is unused and added for compliance with reference API
+ uint8_t polarity;
+ uint8_t phase;
+ uint8_t bits;
+ uint8_t firstbit;
+ uint32_t ssel;
+ uint32_t sck;
+ uint32_t mosi;
+ uint32_t miso;
+ uint32_t baudrate;
+} machine_spi_obj_t;
+
+machine_spi_obj_t *spi_obj[MAX_SPI] = { NULL };
+
+// Function to select the mode
+static cyhal_spi_mode_t spi_mode_select(uint8_t firstbit, uint8_t polarity, uint8_t phase) {
+
+ cyhal_spi_mode_t mode;
+ if (firstbit == 1) {
+ if (polarity == 0) {
+ if (phase == 0) {
+ mode = CYHAL_SPI_MODE_00_LSB;
+ } else {
+ mode = CYHAL_SPI_MODE_01_LSB;
+ }
+ } else {
+ if (phase == 0) {
+ mode = CYHAL_SPI_MODE_10_LSB;
+ } else {
+ mode = CYHAL_SPI_MODE_11_LSB;
+ }
+ }
+ } else {
+ if (polarity == 0) {
+ if (phase == 0) {
+ mode = CYHAL_SPI_MODE_00_MSB;
+ } else {
+ mode = CYHAL_SPI_MODE_01_MSB;
+ }
+ } else {
+ if (phase == 0) {
+ mode = CYHAL_SPI_MODE_10_MSB;
+ } else {
+ mode = CYHAL_SPI_MODE_11_MSB;
+ }
+ }
+ }
+ return mode;
+}
+
+static inline machine_spi_obj_t *spi_obj_alloc(bool is_slave) {
+ for (uint8_t i = 0; i < MAX_SPI; i++)
+ {
+ if (spi_obj[i] == NULL) {
+
+ const mp_obj_type_t *obj_type = &machine_spi_type;
+ #if MICROPY_PY_MACHINE_SPI_SLAVE
+ if (is_slave) {
+ obj_type = &machine_spi_slave_type;
+ }
+ #endif
+ spi_obj[i] = mp_obj_malloc(machine_spi_obj_t, obj_type);
+ return spi_obj[i];
+ }
+ }
+
+ return NULL;
+}
+
+static inline void spi_obj_free(machine_spi_obj_t *spi_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_SPI; i++)
+ {
+ if (spi_obj[i] == spi_obj_ptr) {
+ spi_obj[i] = NULL;
+ }
+ }
+}
+
+static inline void spi_init(machine_spi_obj_t *machine_spi_obj, int spi_mode) {
+ cyhal_spi_mode_t mode = spi_mode_select(machine_spi_obj->firstbit, machine_spi_obj->polarity, machine_spi_obj->phase);
+ // set the baudrate
+ cyhal_spi_set_frequency(&machine_spi_obj->spi_obj, machine_spi_obj->baudrate);
+ // Initialise the SPI peripheral if any arguments given, or it was not initialised previously.
+ cy_rslt_t result = cyhal_spi_init(&machine_spi_obj->spi_obj, machine_spi_obj->mosi, machine_spi_obj->miso, machine_spi_obj->sck, machine_spi_obj->ssel, NULL, machine_spi_obj->bits, mode, spi_mode);
+ assert_pin_phy_used(result);
+ spi_assert_raise_val("SPI initialisation failed with return code %x !", result);
+}
+
+static void machine_spi_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_spi_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "SPI(baudrate=%u, polarity=%u, phase=%u, bits=%u, firstbit=%u, ssel=%d, sck=%d, mosi=%d, miso=%d)",
+ self->baudrate, self->polarity,
+ self->phase, self->bits, self->firstbit,
+ self->ssel, self->sck, self->mosi, self->miso);
+}
+
+mp_obj_t machine_spi_init_helper(machine_spi_obj_t *self, int spi_mode, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ enum { ARG_id, ARG_baudrate, ARG_polarity, ARG_phase, ARG_bits, ARG_firstbit, ARG_ssel, ARG_sck, ARG_mosi, ARG_miso };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_id, MP_ARG_INT, {.u_int = -1}},
+ { MP_QSTR_baudrate, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_SPI_BAUDRATE} },
+ { MP_QSTR_polarity, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_SPI_POLARITY} },
+ { MP_QSTR_phase, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_SPI_PHASE} },
+ { MP_QSTR_bits, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_SPI_BITS} },
+ { MP_QSTR_firstbit, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = DEFAULT_SPI_FIRSTBIT} },
+ { MP_QSTR_ssel, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = DEFAULT_SPI_SSEL_PIN}},
+ { MP_QSTR_sck, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_mosi, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_miso, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ };
+ // Parse the arguments.
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ // set id if provided
+ if (args[ARG_id].u_int != -1) {
+ self->id = args[ARG_id].u_int;
+ mp_printf(&mp_plat_print, "machine.SPI: ID parameter is ignored in this port.\n");
+ }
+ // set baudrate if provided
+ if (args[ARG_baudrate].u_int != -1) {
+ self->baudrate = args[ARG_baudrate].u_int;
+ }
+
+ // set polarity(CPOL) if provided
+ if (args[ARG_polarity].u_int != -1) {
+ self->polarity = args[ARG_polarity].u_int;
+ }
+
+ // set phase(CPHA) if provided
+ if (args[ARG_phase].u_int != -1) {
+ self->phase = args[ARG_phase].u_int;
+ }
+
+ // set bits if provided
+ if (args[ARG_bits].u_int != -1) {
+ self->bits = args[ARG_bits].u_int;
+ }
+
+ // set firstbit if provided(LSB or MSB first)
+ if (args[ARG_firstbit].u_int != -1) {
+ self->firstbit = args[ARG_firstbit].u_int;
+ }
+
+ // Set SSEL/SCK/MOSI/MISO pins if configured.
+ if (spi_mode == MASTER_MODE) {
+ if (args[ARG_ssel].u_obj != DEFAULT_SPI_SSEL_PIN) {
+ mp_raise_TypeError(MP_ERROR_TEXT("SSEL pin cannot be provided in master constructor!"));
+ } else {
+ self->ssel = pin_addr_by_name(DEFAULT_SPI_SSEL_PIN);
+ }
+ } else if (spi_mode == SLAVE_MODE) {
+ if ((args[ARG_ssel].u_obj != DEFAULT_SPI_SSEL_PIN)) {
+ self->ssel = pin_addr_by_name(args[ARG_ssel].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("SSEL pin must be provided in slave mode"));
+ }
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("SPI should either be in master or slave mode!"));
+ }
+
+ if (args[ARG_sck].u_obj != mp_const_none) {
+ self->sck = pin_addr_by_name(args[ARG_sck].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("SCK pin must be provided"));
+ }
+
+ if (args[ARG_mosi].u_obj != mp_const_none) {
+ self->mosi = pin_addr_by_name(args[ARG_mosi].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("MOSI pin must be provided"));
+ }
+
+ if (args[ARG_miso].u_obj != mp_const_none) {
+ self->miso = pin_addr_by_name(args[ARG_miso].u_obj);
+ } else {
+ mp_raise_TypeError(MP_ERROR_TEXT("MISO pin must be provided"));
+ }
+
+ if (n_args > 1 || n_kw > 0) {
+ spi_init(self, spi_mode);
+ }
+ return MP_OBJ_FROM_PTR(self);
+}
+
+mp_obj_t machine_spi_master_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ machine_spi_obj_t *self = spi_obj_alloc(false);
+ if (n_kw > 1) {
+ machine_spi_init_helper(self, MASTER_MODE, n_args, n_kw, all_args);
+ } else {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Master init failed as all required arguments not passed!"));
+ }
+ return MP_OBJ_FROM_PTR(self);
+}
+
+mp_obj_t machine_spi_slave_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ machine_spi_obj_t *self = spi_obj_alloc(true);
+ if (n_kw > 1) {
+ machine_spi_init_helper(self, SLAVE_MODE, n_args, n_kw, all_args);
+ } else {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Slave init failed as all required arguments not passed!"));
+ }
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static void machine_spi_init(mp_obj_base_t *self_in, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("Init not supported. Use the constructor to initialize.\n"));
+}
+
+static void machine_spi_transfer(mp_obj_base_t *self_in, size_t len, const uint8_t *tx, uint8_t *rx) {
+ machine_spi_obj_t *self = (machine_spi_obj_t *)self_in;
+ cy_rslt_t result;
+ const uint8_t *tx_buf;
+ uint8_t *rx_buf;
+ uint8_t tx_temp_buf[len];
+ uint8_t rx_temp_buf[len];
+ uint8_t write_fill = 0xFF;
+
+ cyhal_spi_clear(&self->spi_obj);
+
+ // write
+ if (rx == NULL) {
+ tx_buf = tx;
+ memset(rx_temp_buf, 0x01, len * sizeof(uint8_t));
+ rx_buf = rx_temp_buf;
+ } else {
+ // read(), readinto() and write_readinto() with tx and rx same buffers
+ if (tx == rx || tx == NULL) {
+ memcpy(tx_temp_buf, tx, len * sizeof(uint8_t));
+ tx_buf = tx_temp_buf;
+ rx_buf = rx;
+ write_fill = tx_temp_buf[0];
+ }
+ // write_readinto() with tx and rx different buffers
+ else {
+ tx_buf = tx;
+ rx_buf = rx;
+ }
+ }
+ result = cyhal_spi_transfer(&self->spi_obj, tx_buf, len, rx_buf, len, write_fill);
+ spi_assert_raise_val("SPI read failed with return code %lx !", result);
+}
+
+
+static void machine_spi_deinit(mp_obj_base_t *self_in) {
+ machine_spi_obj_t *self = (machine_spi_obj_t *)self_in;
+ cyhal_spi_clear(&self->spi_obj);
+ cyhal_spi_free(&self->spi_obj);
+ spi_obj_free(self);
+}
+
+static const mp_machine_spi_p_t machine_spi_p = {
+ .init = machine_spi_init,
+ .deinit = machine_spi_deinit,
+ .transfer = machine_spi_transfer,
+};
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_spi_type,
+ MP_QSTR_SPI,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_spi_master_make_new,
+ print, machine_spi_print,
+ protocol, &machine_spi_p,
+ locals_dict, &mp_machine_spi_locals_dict
+ );
+
+#if MICROPY_PY_MACHINE_SPI_SLAVE
+
+static void machine_spi_slave_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_spi_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "SPISlave(baudrate=%u, polarity=%u, phase=%u, bits=%u, firstbit=%u, ssel=%d, sck=%d, mosi=%d, miso=%d)",
+ self->baudrate, self->polarity,
+ self->phase, self->bits, self->firstbit,
+ self->ssel, self->sck, self->mosi, self->miso);
+}
+
+static mp_obj_t machine_spi_slave_deinit(mp_obj_t self_in) {
+ mp_obj_base_t *self = MP_OBJ_TO_PTR(self_in);
+ machine_spi_deinit(self);
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_1(machine_spi_slave_deinit_obj, machine_spi_slave_deinit);
+
+static mp_obj_t machine_spi_slave_read(mp_obj_t self_in, mp_obj_t buf_in) {
+ cy_rslt_t result;
+ machine_spi_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_WRITE);
+ uint16_t len = bufinfo.len;
+ uint8_t tx_dummy[len];
+ memset(tx_dummy, 0x02, len * sizeof(uint8_t));
+ result = cyhal_spi_transfer(&self->spi_obj, tx_dummy, len, bufinfo.buf, len, 0xFF);
+ spi_assert_raise_val("SPI slave read failed with return code %lx !", result);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_spi_slave_read_obj, machine_spi_slave_read);
+
+static mp_obj_t machine_spi_slave_write(mp_obj_t self_in, mp_obj_t buf_in) {
+ cy_rslt_t result;
+ machine_spi_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
+ uint16_t len = bufinfo.len;
+ uint8_t rx_dummy[len];
+ memset(rx_dummy, 0x01, len * sizeof(uint8_t));
+ result = cyhal_spi_transfer(&self->spi_obj, bufinfo.buf, len, rx_dummy, len, 0xFF);
+ spi_assert_raise_val("SPI slave write failed with return code %lx !", result);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(machine_spi_slave_write_obj, machine_spi_slave_write);
+
+static mp_obj_t machine_spi_slave_write_readinto(mp_obj_t self_in, mp_obj_t tx_buf_in, mp_obj_t rx_buf_in) {
+ machine_spi_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_buffer_info_t tx_bufinfo;
+ mp_buffer_info_t rx_bufinfo;
+ mp_get_buffer_raise(tx_buf_in, &tx_bufinfo, MP_BUFFER_READ);
+ mp_get_buffer_raise(rx_buf_in, &rx_bufinfo, MP_BUFFER_WRITE);
+ uint16_t len = tx_bufinfo.len;
+ if (tx_bufinfo.len != rx_bufinfo.len) {
+ mp_raise_ValueError(MP_ERROR_TEXT("buffers must be the same length"));
+ }
+ cy_rslt_t result = cyhal_spi_transfer(&self->spi_obj, tx_bufinfo.buf, len, rx_bufinfo.buf, len, 0xFF);
+ spi_assert_raise_val("SPI slave write failed with return code %lx !", result);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(machine_spi_slave_write_readinto_obj, machine_spi_slave_write_readinto);
+
+
+static const mp_rom_map_elem_t machine_spi_slave_locals_dict_table[] = {
+ // Functions
+ { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&machine_spi_slave_read_obj) },
+ { MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&machine_spi_slave_write_obj) },
+ { MP_ROM_QSTR(MP_QSTR_write_readinto), MP_ROM_PTR(&machine_spi_slave_write_readinto_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_spi_slave_deinit_obj) },
+ // constants
+ { MP_ROM_QSTR(MP_QSTR_MSB), MP_ROM_INT(MICROPY_PY_MACHINE_SPISLAVE_MSB) },
+ { MP_ROM_QSTR(MP_QSTR_LSB), MP_ROM_INT(MICROPY_PY_MACHINE_SPISLAVE_LSB) },
+};
+static MP_DEFINE_CONST_DICT(machine_spi_slave_locals_dict, machine_spi_slave_locals_dict_table);
+
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_spi_slave_type,
+ MP_QSTR_SPISlave,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_spi_slave_make_new,
+ print, machine_spi_slave_print,
+ locals_dict, &machine_spi_slave_locals_dict
+ );
+
+#endif
+
+void machine_spi_deinit_all() {
+ for (uint8_t i = 0; i < MAX_SPI; i++) {
+ if (spi_obj[i] != NULL) {
+ machine_spi_deinit((mp_obj_base_t *)(spi_obj[i]));
+ }
+ }
+}
diff --git a/ports/psoc6/machine_timer.c b/ports/psoc6/machine_timer.c
new file mode 100644
index 0000000000000..5a8f7b396a306
--- /dev/null
+++ b/ports/psoc6/machine_timer.c
@@ -0,0 +1,255 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// mpy includes
+#include "py/runtime.h"
+#include "py/mphal.h"
+
+
+// MTB includes
+#include "cybsp.h"
+#include "cyhal.h"
+
+
+#define TIMER_MODE_ONE_SHOT (0)
+#define TIMER_MODE_PERIODIC (1)
+
+typedef struct _machine_timer_obj_t {
+ mp_obj_base_t base;
+ cyhal_timer_t timer_obj;
+ int timer_id;
+ uint32_t mode;
+ uint32_t period;
+ uint32_t freq;
+ mp_obj_t callback;
+} machine_timer_obj_t;
+
+const mp_obj_type_t machine_timer_type;
+
+machine_timer_obj_t *timer_obj[MAX_TIMER] = { NULL };
+
+static void isr_timer(void *callback_arg, cyhal_timer_event_t event) {
+ machine_timer_obj_t *self = callback_arg;
+ mp_sched_schedule(self->callback, MP_OBJ_FROM_PTR(self));
+}
+
+// Allocate timer
+static inline machine_timer_obj_t *timer_obj_alloc() {
+ for (uint8_t i = 0; i < MAX_TIMER; i++)
+ {
+ if (timer_obj[i] == NULL) {
+ timer_obj[i] = mp_obj_malloc(machine_timer_obj_t, &machine_timer_type);
+ return timer_obj[i];
+ }
+ }
+ return NULL;
+}
+
+// Free timer
+static inline void timer_obj_free(machine_timer_obj_t *timer_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_TIMER; i++)
+ {
+ if (timer_obj[i] == timer_obj_ptr) {
+ timer_obj[i] = NULL;
+ }
+ }
+}
+
+// Write a function to check if a timer is already in use using id as input and compare to the timer_id of the timer_obj
+static inline bool timer_in_use(int id) {
+ for (uint8_t i = 0; i < MAX_TIMER; i++)
+ {
+ if (timer_obj[i] != NULL && timer_obj[i]->timer_id == id) {
+ return true;
+ }
+ }
+ return false;
+}
+
+static void machine_timer_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_timer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ qstr mode = self->mode == TIMER_MODE_ONE_SHOT ? MP_QSTR_ONE_SHOT : MP_QSTR_PERIODIC;
+ mp_printf(print, "Timer(id=%d, mode=%q, period=%u, tick_hz=%u)", self->timer_id, mode, self->period, self->freq);
+}
+
+static mp_obj_t machine_timer_init_helper(machine_timer_obj_t *self, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum {ARG_mode, ARG_callback, ARG_period, ARG_freq};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_mode, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = TIMER_MODE_ONE_SHOT} },
+ { MP_QSTR_callback, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_period, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 9999u} },
+ { MP_QSTR_freq, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_rom_obj = MP_ROM_NONE} },
+ };
+ // Parse args
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ float period;
+ self->mode = args[ARG_mode].u_int;
+
+ if (args[ARG_freq].u_obj != mp_const_none) {
+ self->freq = args[ARG_freq].u_int;
+ period = 1.0f / (float)(args[ARG_freq].u_int); // Frequency to period conversion
+ } else {
+ self->period = args[ARG_period].u_int;
+ period = (float)args[ARG_period].u_int / 1000.0f; // ms to s conversion
+ }
+
+ if (args[ARG_callback].u_obj != mp_const_none) {
+ self->callback = args[ARG_callback].u_obj;
+ }
+
+
+ uint32_t period_hal; // Period/count input for the PSoC6 HAL timer configuration
+ uint32_t fz_hal = 1000000; // Frequency for the PSoC timer clock is fixed as 1 MHz
+ period_hal = (uint32_t)(period * fz_hal) - 1; // Overflow Period = (Period + 1)/ frequency ;period = (overflow period * frequency)-1
+
+ // Adjust the frequency & recalculate the period if period/count is greater than the maximum overflow value for a 32 bit timer ie; 2^32
+ while (period_hal > 4294967296) {
+ fz_hal = fz_hal / 10; // Reduce the fz_hal value by 10%
+ period_hal = (uint32_t)(period * fz_hal) - 1; // Recalculate Period input for the PSoC6 HAL timer configuration
+ }
+
+ // Timer initialisation of port
+ cy_rslt_t rslt;
+
+ const cyhal_timer_cfg_t timer_cfg =
+ {
+ .compare_value = 0, /* Timer compare value, not used */
+ .period = period_hal, /* Defines the timer period */
+ .direction = CYHAL_TIMER_DIR_UP, /* Timer counts up */
+ .is_compare = false, /* Don't use compare mode */
+ .is_continuous = self->mode, /* Run the timer */
+ .value = 0 /* Initial value of counter */
+ };
+
+ /* Initialize the timer object. Does not use pin output ('pin' is NC) and
+ * does not use a pre-configured clock source ('clk' is NULL). */
+
+ rslt = cyhal_timer_init(&self->timer_obj, NC, NULL);
+ CY_ASSERT(CY_RSLT_SUCCESS == rslt);
+
+ /* Apply timer configuration such as period, count direction, run mode, etc. */
+ rslt = cyhal_timer_configure(&self->timer_obj, &timer_cfg);
+
+ /* Set the frequency of timer to Defined frequency */
+ rslt = cyhal_timer_set_frequency(&self->timer_obj, fz_hal);
+
+ /* Assign the ISR to execute on timer interrupt */
+ cyhal_timer_register_callback(&self->timer_obj, isr_timer, self);
+
+ /* Set the event on which timer interrupt occurs and enable it */
+ cyhal_timer_enable_event(&self->timer_obj, CYHAL_TIMER_IRQ_TERMINAL_COUNT, 3, true);
+
+ /* Start the timer with the configured settings */
+ rslt = cyhal_timer_start(&self->timer_obj);
+
+ CY_ASSERT(CY_RSLT_SUCCESS == rslt);
+
+ return mp_const_none;
+}
+
+static mp_obj_t machine_timer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mp_arg_check_num(n_args, n_kw, 1, MP_OBJ_FUN_ARGS_MAX, true);
+
+ mp_int_t id = 0;
+ if (n_args > 0) {
+ id = mp_obj_get_int(args[0]);
+ --n_args;
+ ++args;
+ }
+ // Get timer id
+ if (id == -1) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Virtual timers are not supported yet!"));
+ }
+
+ if (id >= MAX_TIMER) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid timer id!"));
+ }
+
+ if (timer_in_use(id)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Timer already in use!"));
+ }
+
+ machine_timer_obj_t *self = timer_obj_alloc();
+ if (self == NULL) {
+ mp_raise_ValueError(MP_ERROR_TEXT("All timers are already initialized. Deinit some timers to create new ones!"));
+ }
+
+ self->timer_id = id;
+
+ if (n_args > 0 || n_kw > 0) {
+ // Start the timer
+ mp_map_t kw_args;
+ mp_map_init_fixed_table(&kw_args, n_kw, args + n_args);
+ machine_timer_init_helper(self, n_args, args, &kw_args);
+ }
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static mp_obj_t machine_timer_init(size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
+ mp_raise_NotImplementedError("Init is not supported in this port. Please use constructor to initialize the parameters!\n");
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(machine_timer_init_obj, 1, machine_timer_init);
+
+static mp_obj_t machine_timer_deinit(mp_obj_t self_in) {
+ machine_timer_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ cyhal_timer_free(&self->timer_obj);
+ timer_obj_free(self);
+ return mp_const_none;
+}
+
+static MP_DEFINE_CONST_FUN_OBJ_1(machine_timer_deinit_obj, machine_timer_deinit);
+
+static const mp_rom_map_elem_t machine_timer_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&machine_timer_deinit_obj) },
+ { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_timer_init_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&machine_timer_deinit_obj) },
+
+ { MP_ROM_QSTR(MP_QSTR_ONE_SHOT), MP_ROM_INT(TIMER_MODE_ONE_SHOT) },
+ { MP_ROM_QSTR(MP_QSTR_PERIODIC), MP_ROM_INT(TIMER_MODE_PERIODIC) },
+};
+
+static MP_DEFINE_CONST_DICT(machine_timer_locals_dict, machine_timer_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ machine_timer_type,
+ MP_QSTR_Timer,
+ MP_TYPE_FLAG_NONE,
+ make_new, machine_timer_make_new,
+ print, machine_timer_print,
+ locals_dict, &machine_timer_locals_dict
+ );
+
+
+void machine_timer_deinit_all() {
+ for (uint8_t i = 0; i < MAX_TIMER; i++) {
+ if (timer_obj[i] != NULL) {
+ machine_timer_deinit((mp_obj_base_t *)(timer_obj[i]));
+ }
+ }
+}
diff --git a/ports/psoc6/machine_uart.c b/ports/psoc6/machine_uart.c
new file mode 100644
index 0000000000000..a90d25b4cad21
--- /dev/null
+++ b/ports/psoc6/machine_uart.c
@@ -0,0 +1,492 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// mpy includes
+#include "py/mphal.h"
+#include "py/mperrno.h"
+#include "py/ringbuf.h"
+#include "py/runtime.h"
+#include "shared/runtime/interrupt_char.h"
+#include "shared/runtime/mpirq.h"
+
+// MTB includes
+#include "cybsp.h"
+#include "cyhal.h"
+
+// port specific includes
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+#include "mplogger.h"
+
+// std includes
+#include
+
+#define UART_HWCONTROL_RTS (1)
+#define UART_HWCONTROL_CTS (2)
+#define DEFAULT_CTS_PIN (MP_ROM_QSTR(MP_QSTR_NC))
+#define DEFAULT_RTS_PIN (MP_ROM_QSTR(MP_QSTR_NC))
+
+// OR-ed IRQ flags which are allowed to be used by the user
+#define MP_UART_ALLOWED_FLAGS (CYHAL_UART_IRQ_TX_EMPTY | CYHAL_UART_IRQ_TX_DONE | CYHAL_UART_IRQ_RX_FULL | CYHAL_UART_IRQ_RX_DONE)
+
+
+#define uart_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+typedef struct _machine_uart_obj_t {
+ mp_obj_base_t base;
+ cyhal_uart_t uart_obj;
+ uint8_t id;
+ uint32_t init_flag; // Flag to support reinitialisation of uart parameters
+ uint32_t bits;
+ uint32_t stop;
+ uint32_t baudrate;
+ cyhal_uart_parity_t parity;
+ uint32_t tx;
+ uint32_t rx;
+ uint32_t cts;
+ uint32_t rts;
+ cyhal_uart_cfg_t cfg;
+ uint16_t timeout; // only used by cyhal_uart_getc() ie, readchar()
+ uint8_t flow;
+ uint32_t rxbuf;
+ uint8_t *rxbuf_data;
+ bool interrupt;
+ uint16_t mp_irq_trigger; // user IRQ trigger mask
+ uint16_t mp_irq_flags; // user IRQ active IRQ flags
+ mp_irq_obj_t *mp_irq_obj; // user IRQ object
+} machine_uart_obj_t;
+
+#define MICROPY_PY_MACHINE_UART_CLASS_CONSTANTS \
+ { MP_ROM_QSTR(MP_QSTR_RTS), MP_ROM_INT(UART_HWCONTROL_RTS) }, \
+ { MP_ROM_QSTR(MP_QSTR_CTS), MP_ROM_INT(UART_HWCONTROL_CTS) }, \
+ { MP_ROM_QSTR(MP_QSTR_TX_EMPTY), MP_ROM_INT(CYHAL_UART_IRQ_TX_EMPTY) }, \
+ { MP_ROM_QSTR(MP_QSTR_TX_DONE), MP_ROM_INT(CYHAL_UART_IRQ_TX_DONE) }, \
+ { MP_ROM_QSTR(MP_QSTR_RX_FULL), MP_ROM_INT(CYHAL_UART_IRQ_RX_FULL) }, \
+ { MP_ROM_QSTR(MP_QSTR_RX_DONE), MP_ROM_INT(CYHAL_UART_IRQ_RX_DONE) }, \
+
+machine_uart_obj_t *uart_obj[MAX_UART] = { NULL };
+
+static const char *_parity_name[] = {"None", "0", "1"};
+
+
+static void uart_event_handler(void *handler_arg, cyhal_uart_event_t event) {
+ machine_uart_obj_t *self = handler_arg;
+ mp_irq_handler(self->mp_irq_obj);
+}
+
+static void uart_irq_config(machine_uart_obj_t *self, bool enable) {
+ if (self->mp_irq_trigger) {
+ cyhal_uart_register_callback(&self->uart_obj, uart_event_handler, self);
+ cyhal_uart_enable_event(&self->uart_obj, self->mp_irq_trigger, 7, enable);
+ }
+}
+
+static mp_uint_t uart_irq_trigger(mp_obj_t self_in, mp_uint_t new_trigger) {
+ machine_uart_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ uart_irq_config(self, false);
+ self->mp_irq_trigger = new_trigger;
+ uart_irq_config(self, true);
+ return 0;
+}
+
+static mp_uint_t uart_irq_info(mp_obj_t self_in, mp_uint_t info_type) {
+ machine_uart_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ if (info_type == MP_IRQ_INFO_FLAGS) {
+ return self->mp_irq_flags;
+ } else if (info_type == MP_IRQ_INFO_TRIGGERS) {
+ return self->mp_irq_trigger;
+ }
+ return 0;
+}
+
+const mp_irq_methods_t uart_irq_methods = {
+ .trigger = uart_irq_trigger,
+ .info = uart_irq_info,
+};
+
+static void uart_init(machine_uart_obj_t *machine_uart_obj) {
+ uint32_t actualbaud;
+
+ // // Initialize the UART configuration structure
+ machine_uart_obj->cfg.data_bits = machine_uart_obj->bits;
+ machine_uart_obj->cfg.stop_bits = machine_uart_obj->stop;
+ machine_uart_obj->cfg.parity = machine_uart_obj->parity;
+ machine_uart_obj->cfg.rx_buffer = NULL;
+ machine_uart_obj->cfg.rx_buffer_size = 0;
+
+ if (machine_uart_obj->init_flag == 0) {
+ // Initialize the UART Block
+ cy_rslt_t result = cyhal_uart_init(&machine_uart_obj->uart_obj, machine_uart_obj->tx, machine_uart_obj->rx, machine_uart_obj->cts,
+ machine_uart_obj->rts, NULL, &(machine_uart_obj->cfg));
+ assert_pin_phy_used(result);
+ uart_assert_raise_val("UART initialisation failed with return code %lx !", result);
+ }
+
+ // Set the baud rate
+ cy_rslt_t result = cyhal_uart_set_baud(&machine_uart_obj->uart_obj, machine_uart_obj->baudrate, &actualbaud);
+ uart_assert_raise_val("UART baudrate failed with return code %lx !", result);
+ machine_uart_obj->baudrate = actualbaud;
+
+ // reconfigure the uart config structure . If it's a reinitialise
+ if (machine_uart_obj->init_flag != 0) {
+ result = cyhal_uart_configure(&machine_uart_obj->uart_obj, &(machine_uart_obj->cfg));
+ uart_assert_raise_val("UART configuration failed with return code %lx !", result);
+ }
+
+ machine_uart_obj->init_flag = machine_uart_obj->init_flag + 1;
+}
+
+static inline machine_uart_obj_t *uart_obj_alloc() {
+ for (uint8_t i = 0; i < MAX_UART; i++)
+ {
+ if (uart_obj[i] == NULL) {
+ uart_obj[i] = mp_obj_malloc(machine_uart_obj_t, &machine_uart_type);
+ return uart_obj[i];
+ }
+ }
+ return NULL;
+}
+
+static inline void uart_obj_free(machine_uart_obj_t *uart_obj_ptr) {
+ for (uint8_t i = 0; i < MAX_UART; i++)
+ {
+ if (uart_obj[i] == uart_obj_ptr) {
+ uart_obj[i] = NULL;
+ }
+ }
+}
+
+static void mp_machine_uart_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ machine_uart_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_printf(print, "UART(baudrate=%u, bits=%u, parity=%s, stop=%u, tx=%d, rx=%d, rts=%d, cts=%d, rxbuf=%u, timeout=%u",
+ self->baudrate, self->bits, _parity_name[self->parity],
+ self->stop, self->tx, self->rx, self->rts, self->cts, self->rxbuf, self->timeout);
+ if (self->flow) {
+ mp_printf(print, ", flow=");
+ uint32_t flow_mask = self->flow;
+ if (flow_mask & UART_HWCONTROL_RTS) {
+ mp_printf(print, "RTS");
+ flow_mask &= ~UART_HWCONTROL_RTS;
+ if (flow_mask) {
+ mp_printf(print, "|");
+ }
+ }
+ if (flow_mask & UART_HWCONTROL_CTS) {
+ mp_printf(print, "CTS");
+ }
+ }
+ mp_printf(print, ")");
+}
+
+static void mp_machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ enum { ARG_baudrate, ARG_bits, ARG_parity, ARG_stop, ARG_tx, ARG_rx, ARG_timeout, ARG_rxbuf, ARG_flow, ARG_rts, ARG_cts };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_baudrate, MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_bits, MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_parity, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_INT(-1)} },
+ { MP_QSTR_stop, MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_tx, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_rx, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_rxbuf, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_flow, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_rts, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = DEFAULT_RTS_PIN} },
+ { MP_QSTR_cts, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = DEFAULT_CTS_PIN} },
+ };
+
+ // Parse args.
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+ bool enable_rts = 0;
+ bool enable_cts = 0;
+
+
+ // Set baudrate if configured.
+ if (args[ARG_baudrate].u_int > 0) {
+ self->baudrate = args[ARG_baudrate].u_int;
+ } else {
+ if (self->init_flag == 0) {
+ mp_raise_TypeError(MP_ERROR_TEXT("baudrate must be provided"));
+ }
+ }
+
+ // Set bits if configured.
+ if (args[ARG_bits].u_int > 0) {
+ self->bits = args[ARG_bits].u_int;
+ } else {
+ if (self->init_flag == 0) {
+ mp_raise_TypeError(MP_ERROR_TEXT("bits must be provided"));
+ }
+ }
+
+ // Set parity if configured.
+ if (args[ARG_parity].u_obj != MP_OBJ_NEW_SMALL_INT(-1)) {
+ if (args[ARG_parity].u_obj == mp_const_none) {
+ self->parity = 0;
+ } else if (mp_obj_get_int(args[ARG_parity].u_obj) & 1) {
+ self->parity = 1; // odd
+ } else {
+ self->parity = 2; // even
+ }
+ }
+
+ // Set stop bits if configured.
+ if (args[ARG_stop].u_int > 0) {
+ self->stop = (args[ARG_stop].u_int);
+ } else {
+ if (self->init_flag == 0) {
+ mp_raise_TypeError(MP_ERROR_TEXT("stop bits must be provided"));
+ }
+ }
+
+ // Set TX/RX pins if configured.
+ if (args[ARG_tx].u_obj != mp_const_none) {
+ self->tx = pin_addr_by_name(args[ARG_tx].u_obj);
+ } else {
+ if (self->init_flag == 0) {
+ mp_raise_TypeError(MP_ERROR_TEXT("tx pin must be provided"));
+ }
+ }
+
+ if (args[ARG_rx].u_obj != mp_const_none) {
+ self->rx = pin_addr_by_name(args[ARG_rx].u_obj);
+ } else {
+ if (self->init_flag == 0) {
+ mp_raise_TypeError(MP_ERROR_TEXT("rx pin must be provided"));
+ }
+ }
+
+ // Set CTS/RTS pins if configured.
+ if (args[ARG_rts].u_obj != mp_const_none) {
+ self->rts = pin_addr_by_name(args[ARG_rts].u_obj);
+ }
+
+ if (args[ARG_cts].u_obj != mp_const_none) {
+ self->cts = pin_addr_by_name(args[ARG_cts].u_obj);
+ }
+
+ // Set hardware flow control if configured.
+ if (args[ARG_flow].u_int >= 1) {
+ if (args[ARG_flow].u_int & ~(UART_HWCONTROL_CTS | UART_HWCONTROL_RTS)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("bad hardware flow control mask"));
+ }
+ self->flow = args[ARG_flow].u_int;
+ }
+
+ self->interrupt = 0;
+ self->mp_irq_trigger = 0;
+ self->mp_irq_obj = NULL;
+
+ // initialise UART at cyhal level
+ if (n_args > 0 || kw_args->used > 0) {
+ uart_init(self);
+
+ // Configure UART RX software buffer, which will extend the hardware RX FIFO buffer only for SW async mode.
+ if (args[ARG_rxbuf].u_int > 0) {
+ self->rxbuf = args[ARG_rxbuf].u_int;
+ self->rxbuf_data = malloc(self->rxbuf);
+ if (self->rxbuf_data == NULL) {
+ uart_assert_raise_val("Memory allocation for UART RX buffer failed!", 0);
+ }
+ cy_rslt_t result = cyhal_uart_config_software_buffer(&self->uart_obj, self->rxbuf_data, self->rxbuf);
+ uart_assert_raise_val("Configuring the UART RX software buffer failed with return code %lx !", result);
+ }
+ if (self->flow & UART_HWCONTROL_CTS) {
+ enable_rts = 1;
+ }
+ if (self->flow & UART_HWCONTROL_RTS) {
+ enable_cts = 1;
+ }
+ cy_rslt_t result = cyhal_uart_enable_flow_control(&self->uart_obj, enable_cts, enable_rts);
+ uart_assert_raise_val("Configuring the UART for flow control failed with return code %lx !", result);
+ }
+}
+
+static mp_obj_t mp_machine_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mp_arg_check_num(n_args, n_kw, 0, 1, false);
+
+ // Get Peripheralobject
+ machine_uart_obj_t *self = uart_obj_alloc();
+ if (self == NULL) {
+ mp_raise_msg(&mp_type_MemoryError, MP_ERROR_TEXT("UART object allocation failed because max allowed UART objects are created!"));
+ }
+ if (n_args > 0) {
+ // set id if provided
+ if (mp_obj_get_int(args[0]) != -1) {
+ self->id = mp_obj_get_int(args[0]);
+ mp_printf(&mp_plat_print, "machine.UART: ID parameter is ignored in this port.\n");
+ }
+ }
+ self->init_flag = 0;
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static void mp_machine_uart_deinit(machine_uart_obj_t *self) {
+ cyhal_uart_free(&(self->uart_obj));
+ uart_obj_free(self);
+}
+
+static mp_int_t mp_machine_uart_any(machine_uart_obj_t *self) {
+ return cyhal_uart_readable(&self->uart_obj);
+
+}
+
+static bool mp_machine_uart_txdone(machine_uart_obj_t *self) {
+ return !(cyhal_uart_is_tx_active(&self->uart_obj));
+
+}
+
+// send a character
+static void mp_machine_uart_writechar(machine_uart_obj_t *self, uint16_t data) {
+ cy_rslt_t result = cyhal_uart_putc(&self->uart_obj, data);
+ uart_assert_raise_val("Put character failed with return code %lx !", result);
+}
+
+// Get a character
+static mp_int_t mp_machine_uart_readchar(machine_uart_obj_t *self) {
+ uint8_t value;
+ cy_rslt_t result = cyhal_uart_getc(&self->uart_obj, &value, self->timeout);
+ if (result == CY_RSLT_SUCCESS) {
+ return value;
+ }
+ return -1; // in case of timeout
+}
+
+// Before sending break all UART TX interrupt sources are disabled
+// The state of UART TX interrupt sources is restored before function returns.
+// Blocks until break is completed. Only call this function when UART TX FIFO and shifter are empty.
+static void mp_machine_uart_sendbreak(machine_uart_obj_t *self) {
+ uint32_t breakwidth = 4; // Width of break condition. Valid range is the TX data width (4 to 16 bits). How to get that?
+ Cy_SCB_UART_SendBreakBlocking(self->uart_obj.base, breakwidth);
+}
+
+static mp_irq_obj_t *mp_machine_uart_irq(machine_uart_obj_t *self, bool any_args, mp_arg_val_t *args) {
+ if (self->mp_irq_obj == NULL) {
+ self->mp_irq_trigger = 0;
+ self->mp_irq_obj = mp_irq_new(&uart_irq_methods, MP_OBJ_FROM_PTR(self));
+ }
+ if (any_args) {
+ // Check the handler
+ mp_obj_t handler = args[MP_IRQ_ARG_INIT_handler].u_obj;
+ if (handler != mp_const_none && !mp_obj_is_callable(handler)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("handler must be None or callable"));
+ }
+
+ // Get the trigger
+ mp_uint_t trigger = args[MP_IRQ_ARG_INIT_trigger].u_int;
+ mp_uint_t not_supported = trigger & ~MP_UART_ALLOWED_FLAGS;
+ if (trigger != 0 && not_supported) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("trigger 0x%08x unsupported"), not_supported);
+ }
+ // Reconfigure user IRQs
+ uart_irq_config(self, false);
+ self->mp_irq_obj->handler = handler;
+ self->mp_irq_obj->ishard = args[MP_IRQ_ARG_INIT_hard].u_bool;
+ self->mp_irq_trigger = trigger;
+ uart_irq_config(self, true);
+ }
+ self->interrupt = 1;
+ return self->mp_irq_obj;
+}
+
+static mp_uint_t mp_machine_uart_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) {
+ machine_uart_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ void *dest = buf_in;
+ size_t rx_length = size;
+ if (self->interrupt == 1) {
+ if (cyhal_uart_readable(&self->uart_obj) > 0) {
+ cy_rslt_t result = cyhal_uart_read_async(&self->uart_obj, dest, rx_length);
+ uart_assert_raise_val("UART read failed with return code %lx !", result);
+ } else {
+ *errcode = MP_EAGAIN;
+ return MP_STREAM_ERROR;
+ }
+ } else {
+ cy_rslt_t result = cyhal_uart_read(&self->uart_obj, dest, &rx_length);
+ uart_assert_raise_val("UART read failed with return code %lx !", result);
+ }
+ if (rx_length <= 0) {
+ *errcode = MP_EAGAIN;
+ return MP_STREAM_ERROR;
+ }
+ return rx_length;
+}
+
+
+
+static mp_uint_t mp_machine_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) {
+ machine_uart_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ size_t tx_length = size;
+ if (self->interrupt == 1) {
+ if (cyhal_uart_writable(&self->uart_obj) > 0) {
+ cy_rslt_t result = cyhal_uart_write_async(&self->uart_obj, (void *)buf_in, tx_length);
+ uart_assert_raise_val("UART write failed with return code %lx !", result);
+ } else {
+ *errcode = MP_EAGAIN;
+ return MP_STREAM_ERROR;
+ }
+ } else {
+ cy_rslt_t result = cyhal_uart_write(&self->uart_obj, (void *)buf_in, &tx_length);
+ uart_assert_raise_val("UART write failed with return code %lx !", result);
+ }
+ if (tx_length < 0) {
+ *errcode = MP_EAGAIN;
+ return MP_STREAM_ERROR;
+ }
+ return tx_length;
+}
+
+static mp_uint_t mp_machine_uart_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
+ machine_uart_obj_t *self = self_in;
+ mp_uint_t ret;
+ if (request == MP_STREAM_POLL) { // Need to understand the select
+ mp_uint_t flags = arg;
+ ret = 0;
+ if ((flags & MP_STREAM_POLL_RD) && cyhal_uart_readable(&self->uart_obj)) {
+ ret |= MP_STREAM_POLL_RD;
+ }
+ if ((flags & MP_STREAM_POLL_WR) && cyhal_uart_writable(&self->uart_obj)) {
+ ret |= MP_STREAM_POLL_WR;
+ }
+ } else if (request == MP_STREAM_FLUSH) {
+ // Since uart.write() waits up to the last byte, uart.flush() always succeeds.
+ ret = 0;
+ } else {
+ *errcode = MP_EINVAL;
+ ret = MP_STREAM_ERROR;
+ }
+ return ret;
+}
+
+void machine_uart_deinit_all() {
+ for (uint8_t i = 0; i < MAX_UART; i++) {
+ if (uart_obj[i] != NULL) {
+ mp_machine_uart_deinit(uart_obj[i]);
+ }
+ }
+}
diff --git a/ports/psoc6/machine_wdt.c b/ports/psoc6/machine_wdt.c
new file mode 100644
index 0000000000000..afa9aa4a0698d
--- /dev/null
+++ b/ports/psoc6/machine_wdt.c
@@ -0,0 +1,87 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2021 "Krzysztof Adamski"
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+#include
+#include
+
+
+// micropython includes
+#include "py/nlr.h"
+#include "py/obj.h"
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "py/mperrno.h"
+#include "shared/timeutils/timeutils.h"
+#include "py/misc.h"
+
+
+// MTB includes
+#include "cyhal.h"
+
+
+// port-specific includes
+#include "modmachine.h"
+
+cyhal_wdt_t psoc6_wdt;
+
+typedef struct _machine_wdt_obj_t {
+ mp_obj_base_t base;
+} machine_wdt_obj_t;
+
+// singleton WDT object
+static const machine_wdt_obj_t machine_wdt_obj = {{&machine_wdt_type}};
+
+static machine_wdt_obj_t *mp_machine_wdt_make_new_instance(mp_int_t id, mp_int_t timeout_ms) {
+ if (id != 0) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("WDT(%d) doesn't exist"), id);
+ }
+
+ if (timeout_ms <= 0) {
+ mp_raise_ValueError(MP_ERROR_TEXT("WDT timeout too low"));
+ } else if (timeout_ms > cyhal_wdt_get_max_timeout_ms()) {
+ mp_raise_ValueError(MP_ERROR_TEXT("WDT timeout too high"));
+ }
+
+ cy_rslt_t result = cyhal_wdt_init(&psoc6_wdt, timeout_ms);
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cyhal_wdt_init failed !"));
+ }
+
+ return (machine_wdt_obj_t *)&machine_wdt_obj;
+}
+
+static void mp_machine_wdt_feed(machine_wdt_obj_t *self) {
+ cyhal_wdt_kick(&psoc6_wdt);
+}
+
+void machine_wdt_deinit() {
+ cyhal_wdt_stop(&psoc6_wdt);
+ cyhal_wdt_free(&psoc6_wdt);
+}
diff --git a/ports/psoc6/main.c b/ports/psoc6/main.c
new file mode 100644
index 0000000000000..49d4ac4c0c4ad
--- /dev/null
+++ b/ports/psoc6/main.c
@@ -0,0 +1,240 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+#include
+
+
+// MTB includes
+#include "cybsp.h"
+#include "cy_retarget_io.h"
+#include "cyhal.h"
+
+// FreeRTOS header file
+#include
+#include
+#include
+
+
+// micropython includes
+#include "genhdr/mpversion.h"
+#include "py/gc.h"
+#include "py/mphal.h"
+#include "py/runtime.h"
+#include "py/stackctrl.h"
+#include "shared/readline/readline.h"
+#include "shared/runtime/pyexec.h"
+#include "extmod/modnetwork.h"
+
+#include "modmachine.h"
+#include "machine_pin_phy.h"
+
+#if MICROPY_PY_NETWORK
+#include "cybsp_wifi.h"
+#include "cy_wcm.h"
+#endif
+
+#if MICROPY_PY_LWIP
+#include "lwip/init.h"
+#include "lwip/apps/mdns.h"
+#endif
+
+// port-specific includes
+#include "mplogger.h"
+
+#define MPY_TASK_STACK_SIZE (4096u)
+#define MPY_TASK_PRIORITY (3u)
+
+typedef enum {
+ BOOT_MODE_NORMAL,
+ BOOT_MODE_SAFE
+} boot_mode_t;
+
+#if MICROPY_ENABLE_GC
+extern uint8_t __StackTop, __StackLimit;
+__attribute__((section(".bss"))) static char gc_heap[MICROPY_GC_HEAP_SIZE];
+#endif
+
+extern void machine_rtc_init_all(void);
+extern void time_init(void);
+extern void os_init(void);
+extern void network_init(void);
+extern void network_deinit(void);
+
+void mpy_task(void *arg);
+
+TaskHandle_t mpy_task_handle;
+
+boot_mode_t check_boot_mode(void) {
+ boot_mode_t boot_mode;
+
+ // initialize user LED
+ cyhal_gpio_init(CYBSP_USER_LED, CYHAL_GPIO_DIR_OUTPUT,
+ CYHAL_GPIO_DRIVE_STRONG, CYBSP_LED_STATE_OFF);
+
+ // initialize user button
+ cyhal_gpio_init(CYBSP_USER_BTN, CYHAL_GPIO_DIR_INPUT,
+ CYHAL_GPIO_DRIVE_PULLUP, CYBSP_BTN_OFF);
+
+ // Added 5ms delay to allow bypass capacitor connected to the user button without external pull-up to charge.
+ cyhal_system_delay_ms(5);
+
+ if (cyhal_gpio_read(CYBSP_USER_BTN) == CYBSP_BTN_PRESSED) {
+ // Blink LED twice to indicate safe boot mode was entered
+ for (int i = 0; i < 4; i++)
+ {
+ cyhal_gpio_toggle(CYBSP_USER_LED);
+ cyhal_system_delay_ms(500); // delay in millisecond
+ }
+ boot_mode = BOOT_MODE_SAFE;
+ mp_printf(&mp_plat_print, "- DEVICE IS IN SAFE BOOT MODE -\n");
+ } else { // normal boot mode
+ boot_mode = BOOT_MODE_NORMAL;
+ }
+ // free the user LED and user button
+ cyhal_gpio_free(CYBSP_USER_BTN);
+ cyhal_gpio_free(CYBSP_USER_LED);
+
+ return boot_mode;
+}
+
+int main(int argc, char **argv) {
+ // Initialize the device and board peripherals
+ cy_rslt_t result = cybsp_init();
+ if (result != CY_RSLT_SUCCESS) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cybsp_init failed !\n"));
+ }
+
+ // Initialize retarget-io to use the debug UART port
+ result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
+ if (result != CY_RSLT_SUCCESS) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cy_retarget_io_init failed !\n"));
+ }
+
+ xTaskCreate(mpy_task, "MicroPython task", MPY_TASK_STACK_SIZE, NULL, MPY_TASK_PRIORITY, &mpy_task_handle);
+ vTaskStartScheduler();
+
+ // Should never get here
+ CY_ASSERT(0);
+ return 0;
+}
+
+void mpy_task(void *arg) {
+ #if MICROPY_ENABLE_GC
+ mp_stack_set_top(&__StackTop);
+ // mp_stack_set_limit((mp_uint_t)&__StackTop - (mp_uint_t)&__StackLimit);
+ mp_stack_set_limit((mp_uint_t)&__StackLimit);
+ gc_init(&gc_heap[0], &gc_heap[MP_ARRAY_SIZE(gc_heap)]);
+ #endif
+
+ // Initialize modules. Or to be redone after a reset and therefore to be placed next to machine_init below ?
+ os_init();
+ time_init();
+
+soft_reset:
+ machine_rtc_init_all();
+ mp_init();
+
+ // ANSI ESC sequence for clear screen. Refer to https://stackoverflow.com/questions/517970/how-to-clear-the-interpreter-console
+ mp_printf(&mp_plat_print, "\033[H\033[2J");
+
+ // indicate in REPL console when debug mode is selected
+ mplogger_print("\n...LOGGER DEBUG MODE...\n\n");
+
+ readline_init0();
+ machine_init();
+ #if MICROPY_PY_NETWORK
+ network_init();
+ mod_network_init();
+ #endif
+
+ #if MICROPY_VFS
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_));
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__slash_lib));
+
+ #if MICROPY_VFS_LFS2
+ pyexec_frozen_module("vfs_lfs2.py", false);
+ #elif MICROPY_VFS_FAT
+ pyexec_frozen_module("vfs_fat.py", false);
+ #endif
+
+ #endif
+
+ if (check_boot_mode() == BOOT_MODE_NORMAL) {
+ // Execute user scripts.
+ int ret = pyexec_file_if_exists("/boot.py");
+
+ if (ret & PYEXEC_FORCED_EXIT) {
+ goto soft_reset;
+ }
+
+ if (pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) {
+ ret = pyexec_file_if_exists("/main.py");
+
+ if (ret & PYEXEC_FORCED_EXIT) {
+ goto soft_reset;
+ }
+ }
+ }
+
+ __enable_irq();
+
+ for (;;) {
+ if (pyexec_mode_kind == PYEXEC_MODE_RAW_REPL) {
+ if (pyexec_raw_repl() != 0) {
+ break;
+ }
+ } else {
+ if (pyexec_friendly_repl() != 0) {
+ break;
+ }
+ }
+ }
+
+ mp_printf(&mp_plat_print, "MPY: soft reboot\n");
+ #if MICROPY_PY_NETWORK
+ mod_network_deinit();
+ network_deinit();
+ #endif
+ gc_sweep_all();
+ mp_deinit();
+
+ goto soft_reset;
+}
+
+// TODO: to be implemented
+void nlr_jump_fail(void *val) {
+ mplogger_print("nlr_jump_fail\n");
+
+ mp_printf(&mp_plat_print, "FATAL: uncaught exception %p\n", val);
+ mp_obj_print_exception(&mp_plat_print, MP_OBJ_FROM_PTR(val));
+
+ for (;;) {
+ __BKPT(0);
+ }
+}
diff --git a/ports/psoc6/mbedtls/mbedtls_config.h b/ports/psoc6/mbedtls/mbedtls_config.h
new file mode 100644
index 0000000000000..453ccce128efe
--- /dev/null
+++ b/ports/psoc6/mbedtls/mbedtls_config.h
@@ -0,0 +1,58 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#ifndef PSOC6_MPY_MBEDTLS_USER_CONFIG_HEADER
+#define PSOC6_MPY_MBEDTLS_USER_CONFIG_HEADER
+
+#include "mbedtls_mtb_config.h"
+
+// Set mbedtls configuration
+#define MBEDTLS_ECP_NIST_OPTIM
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
+
+// // // Enable mbedtls modules
+#define MBEDTLS_GCM_C
+#define MBEDTLS_HAVE_TIME
+#define MBEDTLS_HAVE_TIME_DATE
+
+// // #define MBEDTLS_NO_PLATFORM_ENTROPY
+#define MBEDTLS_CIPHER_MODE_CTR
+#define MBEDTLS_CIPHER_MODE_CBC
+
+// Time hook
+// #include
+// time_t psoc6_rtctime_seconds(time_t *timer);
+// #define MBEDTLS_PLATFORM_TIME_MACRO psoc6_rtctime_seconds
+
+// Set MicroPython-specific options.
+#define MICROPY_MBEDTLS_CONFIG_BARE_METAL (1)
+
+// Include common mbedtls configuration.
+// #ifdef MICROPY_CONFIG_ROM_LEVEL
+#include "mbedtls_config_common.h"
+// #endif
+
+#endif /* PSOC6_MPY_MBEDTLS_USER_CONFIG_HEADER */
diff --git a/ports/psoc6/mbedtls/mbedtls_mtb_config.h b/ports/psoc6/mbedtls/mbedtls_mtb_config.h
new file mode 100644
index 0000000000000..5631dd185af56
--- /dev/null
+++ b/ports/psoc6/mbedtls/mbedtls_mtb_config.h
@@ -0,0 +1,875 @@
+/**
+ * \file config.h
+ *
+ * \brief Configuration options (set of defines)
+ *
+ * This set of compile-time options may be used to enable
+ * or disable features selectively, and reduce the global
+ * memory footprint.
+ */
+/*
+ * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * This file is part of mbed TLS (https://tls.mbed.org)
+ */
+/*
+ * File copied from: https://github.com/Infineon/wifi-core-freertos-lwip-mbedtls/blob/release-v1.0.0/configs/mbedtls_user_config.h
+ */
+
+#ifndef MBEDTLS_USER_CONFIG_HEADER
+#define MBEDTLS_USER_CONFIG_HEADER
+
+
+/**
+ * Compiling Mbed TLS for Cortex-M0/0+/1/M23 cores with optimization enabled and on ARMC6 compiler results in errors.
+ * These cores lack the required full Thumb-2 support, causing the inline assembly to require more registers than available.
+ * The workaround is to use 'MULADDC_CANNOT_USE_R7' compilation flag, or without optimization flag,
+ * but note that this will compile without the assembly optimization.
+ *
+ * To read more about this issue, refer to https://github.com/ARMmbed/mbed-os/pull/14529/commits/86e7bc559b0d1a055bf84ea9249763d2349fb6e8
+ */
+
+#if defined(COMPONENT_CM0P) && defined(COMPONENT_ARM)
+#define MULADDC_CANNOT_USE_R7
+#endif
+
+
+/**
+ * \def MBEDTLS_HAVE_TIME_DATE
+ *
+ * System has time.h, time(), and an implementation for
+ * mbedtls_platform_gmtime_r() (see below).
+ * The time needs to be correct (not necessarily very accurate, but at least
+ * the date should be correct). This is used to verify the validity period of
+ * X.509 certificates.
+ *
+ * Comment if your system does not have a correct clock.
+ *
+ * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that
+ * behaves similarly to the gmtime_r() function from the C standard. Refer to
+ * the documentation for mbedtls_platform_gmtime_r() for more information.
+ *
+ * \note It is possible to configure an implementation for
+ * mbedtls_platform_gmtime_r() at compile-time by using the macro
+ * MBEDTLS_PLATFORM_GMTIME_R_ALT.
+ */
+#undef MBEDTLS_HAVE_TIME_DATE
+
+
+/**
+ * \def MBEDTLS_PLATFORM_EXIT_ALT
+ *
+ * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the
+ * function in the platform abstraction layer.
+ *
+ * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will
+ * provide a function "mbedtls_platform_set_printf()" that allows you to set an
+ * alternative printf function pointer.
+ *
+ * All these define require MBEDTLS_PLATFORM_C to be defined!
+ *
+ * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows;
+ * it will be enabled automatically by check_config.h
+ *
+ * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as
+ * MBEDTLS_PLATFORM_XXX_MACRO!
+ *
+ * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME
+ *
+ * Uncomment a macro to enable alternate implementation of specific base
+ * platform function
+ */
+// #define MBEDTLS_PLATFORM_EXIT_ALT
+#define MBEDTLS_PLATFORM_TIME_ALT
+// #define MBEDTLS_PLATFORM_FPRINTF_ALT
+// #define MBEDTLS_PLATFORM_PRINTF_ALT
+// #define MBEDTLS_PLATFORM_SNPRINTF_ALT
+// #define MBEDTLS_PLATFORM_NV_SEED_ALT
+// #define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
+
+/**
+ * \def MBEDTLS_ENTROPY_HARDWARE_ALT
+ *
+ * Uncomment this macro to let mbed TLS use your own implementation of a
+ * hardware entropy collector.
+ *
+ * Your function must be called \c mbedtls_hardware_poll(), have the same
+ * prototype as declared in entropy_poll.h, and accept NULL as first argument.
+ *
+ * Uncomment to use your own hardware entropy collector.
+ */
+#define MBEDTLS_ENTROPY_HARDWARE_ALT
+/**
+ * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
+ *
+ * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve
+ * module. By default all supported curves are enabled.
+ *
+ * Comment macros to disable the curve and functions for it
+ */
+#undef MBEDTLS_ECP_DP_SECP192R1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP224R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP384R1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP521R1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP192K1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP224K1_ENABLED
+#undef MBEDTLS_ECP_DP_SECP256K1_ENABLED
+#undef MBEDTLS_ECP_DP_BP256R1_ENABLED
+#undef MBEDTLS_ECP_DP_BP384R1_ENABLED
+#undef MBEDTLS_ECP_DP_BP512R1_ENABLED
+// #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED
+#undef MBEDTLS_ECP_DP_CURVE448_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+ *
+ * Enable the PSK based ciphersuite modes in SSL / TLS.
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
+ * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
+ * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ * MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA
+ * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA
+ */
+#undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+
+
+/**
+ * \def MBEDTLS_PK_PARSE_EC_EXTENDED
+ *
+ * Enhance support for reading EC keys using variants of SEC1 not allowed by
+ * RFC 5915 and RFC 5480.
+ *
+ * Currently this means parsing the SpecifiedECDomain choice of EC
+ * parameters (only known groups are supported, not arbitrary domains, to
+ * avoid validation issues).
+ *
+ * Disable if you only need to support RFC 5915 + 5480 key formats.
+ */
+#undef MBEDTLS_PK_PARSE_EC_EXTENDED
+
+
+#undef MBEDTLS_FS_IO
+
+
+/**
+ * \def MBEDTLS_NO_PLATFORM_ENTROPY
+ *
+ * Do not use built-in platform entropy functions.
+ * This is useful if your platform does not support
+ * standards like the /dev/urandom or Windows CryptoAPI.
+ *
+ * Uncomment this macro to disable the built-in platform entropy functions.
+ */
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+
+/**
+ * \def MBEDTLS_ENTROPY_FORCE_SHA256
+ *
+ * Force the entropy accumulator to use a SHA-256 accumulator instead of the
+ * default SHA-512 based one (if both are available).
+ *
+ * Requires: MBEDTLS_SHA256_C
+ *
+ * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option
+ * if you have performance concerns.
+ *
+ * This option is only useful if both MBEDTLS_SHA256_C and
+ * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.
+ */
+#define MBEDTLS_ENTROPY_FORCE_SHA256
+
+/**
+ * \def MBEDTLS_SELF_TEST
+ *
+ * Enable the checkup functions (*_self_test).
+ */
+#undef MBEDTLS_SELF_TEST
+
+/**
+ * \def MBEDTLS_SSL_FALLBACK_SCSV
+ *
+ * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00).
+ *
+ * For servers, it is recommended to always enable this, unless you support
+ * only one version of TLS, or know for sure that none of your clients
+ * implements a fallback strategy.
+ *
+ * For clients, you only need this if you're using a fallback strategy, which
+ * is not recommended in the first place, unless you absolutely need it to
+ * interoperate with buggy (version-intolerant) servers.
+ *
+ * Comment this macro to disable support for FALLBACK_SCSV
+ */
+#undef MBEDTLS_SSL_FALLBACK_SCSV
+
+/**
+ * \def MBEDTLS_SSL_CBC_RECORD_SPLITTING
+ *
+ * Enable 1/n-1 record splitting for CBC mode in SSLv3 and TLS 1.0.
+ *
+ * This is a countermeasure to the BEAST attack, which also minimizes the risk
+ * of interoperability issues compared to sending 0-length records.
+ *
+ * Comment this macro to disable 1/n-1 record splitting.
+ */
+#undef MBEDTLS_SSL_CBC_RECORD_SPLITTING
+
+/**
+ * \def MBEDTLS_SSL_RENEGOTIATION
+ *
+ * Enable support for TLS renegotiation.
+ *
+ * The two main uses of renegotiation are (1) refresh keys on long-lived
+ * connections and (2) client authentication after the initial handshake.
+ * If you don't need renegotiation, it's probably better to disable it, since
+ * it has been associated with security issues in the past and is easy to
+ * misuse/misunderstand.
+ *
+ * Comment this to disable support for renegotiation.
+ *
+ * \note Even if this option is disabled, both client and server are aware
+ * of the Renegotiation Indication Extension (RFC 5746) used to
+ * prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).
+ * (See \c mbedtls_ssl_conf_legacy_renegotiation for the
+ * configuration of this extension).
+ *
+ */
+#undef MBEDTLS_SSL_RENEGOTIATION
+
+/**
+ * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
+ *
+ * Enable support for receiving and parsing SSLv2 Client Hello messages for the
+ * SSL Server module (MBEDTLS_SSL_SRV_C).
+ *
+ * Uncomment this macro to enable support for SSLv2 Client Hello messages.
+ */
+// #define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
+
+/**
+ * \def MBEDTLS_SSL_PROTO_TLS1
+ *
+ * Enable support for TLS 1.0.
+ *
+ * Requires: MBEDTLS_MD5_C
+ * MBEDTLS_SHA1_C
+ *
+ * Comment this macro to disable support for TLS 1.0
+ */
+#undef MBEDTLS_SSL_PROTO_TLS1
+
+/**
+ * \def MBEDTLS_SSL_PROTO_TLS1_1
+ *
+ * Enable support for TLS 1.1 (and DTLS 1.0 if DTLS is enabled).
+ *
+ * Requires: MBEDTLS_MD5_C
+ * MBEDTLS_SHA1_C
+ *
+ * Comment this macro to disable support for TLS 1.1 / DTLS 1.0
+ */
+#undef MBEDTLS_SSL_PROTO_TLS1_1
+
+/**
+ * \def MBEDTLS_SSL_PROTO_DTLS
+ *
+ * Enable support for DTLS (all available versions).
+ *
+ * Enable this and MBEDTLS_SSL_PROTO_TLS1_1 to enable DTLS 1.0,
+ * and/or this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.
+ *
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_1
+ * or MBEDTLS_SSL_PROTO_TLS1_2
+ *
+ * Comment this macro to disable support for DTLS
+ */
+#undef MBEDTLS_SSL_PROTO_DTLS
+
+/**
+ * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY
+ *
+ * Enable support for the anti-replay mechanism in DTLS.
+ *
+ * Requires: MBEDTLS_SSL_TLS_C
+ * MBEDTLS_SSL_PROTO_DTLS
+ *
+ * \warning Disabling this is often a security risk!
+ * See mbedtls_ssl_conf_dtls_anti_replay() for details.
+ *
+ * Comment this to disable anti-replay in DTLS.
+ */
+#undef MBEDTLS_SSL_DTLS_ANTI_REPLAY
+
+/**
+ * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY
+ *
+ * Enable support for HelloVerifyRequest on DTLS servers.
+ *
+ * This feature is highly recommended to prevent DTLS servers being used as
+ * amplifiers in DoS attacks against other hosts. It should always be enabled
+ * unless you know for sure amplification cannot be a problem in the
+ * environment in which your server operates.
+ *
+ * \warning Disabling this can ba a security risk! (see above)
+ *
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
+ *
+ * Comment this to disable support for HelloVerifyRequest.
+ */
+#undef MBEDTLS_SSL_DTLS_HELLO_VERIFY
+
+/**
+ * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+ *
+ * Enable server-side support for clients that reconnect from the same port.
+ *
+ * Some clients unexpectedly close the connection and try to reconnect using the
+ * same source port. This needs special support from the server to handle the
+ * new connection securely, as described in section 4.2.8 of RFC 6347. This
+ * flag enables that support.
+ *
+ * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY
+ *
+ * Comment this to disable support for clients reusing the source port.
+ */
+#undef MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+
+/**
+ * \def MBEDTLS_SSL_DTLS_BADMAC_LIMIT
+ *
+ * Enable support for a limit of records with bad MAC.
+ *
+ * See mbedtls_ssl_conf_dtls_badmac_limit().
+ *
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
+ */
+#undef MBEDTLS_SSL_DTLS_BADMAC_LIMIT
+
+/**
+ * \def MBEDTLS_SSL_SESSION_TICKETS
+ *
+ * Enable support for RFC 5077 session tickets in SSL.
+ * Client-side, provides full support for session tickets (maintenance of a
+ * session store remains the responsibility of the application, though).
+ * Server-side, you also need to provide callbacks for writing and parsing
+ * tickets, including authenticated encryption and key management. Example
+ * callbacks are provided by MBEDTLS_SSL_TICKET_C.
+ *
+ * Comment this macro to disable support for SSL session tickets
+ */
+#undef MBEDTLS_SSL_SESSION_TICKETS
+
+/**
+ * \def MBEDTLS_SSL_EXPORT_KEYS
+ *
+ * Enable support for exporting key block and master secret.
+ * This is required for certain users of TLS, e.g. EAP-TLS.
+ *
+ * Comment this macro to disable support for key export
+ */
+#undef MBEDTLS_SSL_EXPORT_KEYS
+
+
+/**
+ * \def MBEDTLS_SSL_TRUNCATED_HMAC
+ *
+ * Enable support for RFC 6066 truncated HMAC in SSL.
+ *
+ * Comment this macro to disable support for truncated HMAC in SSL
+ */
+#undef MBEDTLS_SSL_TRUNCATED_HMAC
+
+/**
+ * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT
+ *
+ * Enable parsing and verification of X.509 certificates, CRLs and CSRS
+ * signed with RSASSA-PSS (aka PKCS#1 v2.1).
+ *
+ * Comment this macro to disallow using RSASSA-PSS in certificates.
+ */
+#undef MBEDTLS_X509_RSASSA_PSS_SUPPORT
+
+/**
+ * \def MBEDTLS_AESNI_C
+ *
+ * Enable AES-NI support on x86-64.
+ *
+ * Module: library/aesni.c
+ * Caller: library/aes.c
+ *
+ * Requires: MBEDTLS_HAVE_ASM
+ *
+ * This modules adds support for the AES-NI instructions on x86-64
+ */
+#undef MBEDTLS_AESNI_C
+
+/**
+ * \def MBEDTLS_NET_C
+ *
+ * Enable the TCP and UDP over IPv6/IPv4 networking routines.
+ *
+ * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)
+ * and Windows. For other platforms, you'll want to disable it, and write your
+ * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().
+ *
+ * \note See also our Knowledge Base article about porting to a new
+ * environment:
+ * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
+ *
+ * Module: library/net_sockets.c
+ *
+ * This module provides networking routines.
+ */
+#undef MBEDTLS_NET_C
+
+/**
+ * \def MBEDTLS_SSL_COOKIE_C
+ *
+ * Enable basic implementation of DTLS cookies for hello verification.
+ *
+ * Module: library/ssl_cookie.c
+ * Caller:
+ */
+#undef MBEDTLS_SSL_COOKIE_C
+
+/**
+ * \def MBEDTLS_TIMING_C
+ *
+ * Enable the semi-portable timing interface.
+ *
+ * \note The provided implementation only works on POSIX/Unix (including Linux,
+ * BSD and OS X) and Windows. On other platforms, you can either disable that
+ * module and provide your own implementations of the callbacks needed by
+ * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide
+ * your own implementation of the whole module by setting
+ * \c MBEDTLS_TIMING_ALT in the current file.
+ *
+ * \note See also our Knowledge Base article about porting to a new
+ * environment:
+ * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
+ *
+ * Module: library/timing.c
+ * Caller: library/havege.c
+ *
+ * This module is used by the HAVEGE random number generator.
+ */
+#undef MBEDTLS_TIMING_C
+
+/**
+ * \def MBEDTLS_X509_CRL_PARSE_C
+ *
+ * Enable X.509 CRL parsing.
+ *
+ * Module: library/x509_crl.c
+ * Caller: library/x509_crt.c
+ *
+ * Requires: MBEDTLS_X509_USE_C
+ *
+ * This module is required for X.509 CRL parsing.
+ */
+#undef MBEDTLS_X509_CRL_PARSE_C
+
+/**
+ * \def MBEDTLS_X509_CSR_PARSE_C
+ *
+ * Enable X.509 Certificate Signing Request (CSR) parsing.
+ *
+ * Module: library/x509_csr.c
+ * Caller: library/x509_crt_write.c
+ *
+ * Requires: MBEDTLS_X509_USE_C
+ *
+ * This module is used for reading X.509 certificate request.
+ */
+#undef MBEDTLS_X509_CSR_PARSE_C
+
+/**
+ * \def MBEDTLS_X509_CREATE_C
+ *
+ * Enable X.509 core for creating certificates.
+ *
+ * Module: library/x509_create.c
+ *
+ * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_WRITE_C
+ *
+ * This module is the basis for creating X.509 certificates and CSRs.
+ */
+#undef MBEDTLS_X509_CREATE_C
+
+/**
+ * \def MBEDTLS_X509_CSR_WRITE_C
+ *
+ * Enable creating X.509 Certificate Signing Requests (CSR).
+ *
+ * Module: library/x509_csr_write.c
+ *
+ * Requires: MBEDTLS_X509_CREATE_C
+ *
+ * This module is required for X.509 certificate request writing.
+ */
+#undef MBEDTLS_X509_CSR_WRITE_C
+
+/**
+ * \def MBEDTLS_X509_CRT_WRITE_C
+ *
+ * Enable creating X.509 certificates.
+ *
+ * Module: library/x509_crt_write.c
+ *
+ * Requires: MBEDTLS_X509_CREATE_C
+ *
+ * This module is required for X.509 certificate creation.
+ */
+#undef MBEDTLS_X509_CRT_WRITE_C
+
+/**
+ * \def MBEDTLS_CERTS_C
+ *
+ * Enable the test certificates.
+ *
+ * Module: library/certs.c
+ * Caller:
+ *
+ * This module is used for testing (ssl_client/server).
+ */
+#undef MBEDTLS_CERTS_C
+
+/**
+ * \def MBEDTLS_ERROR_C
+ *
+ * Enable error code to error string conversion.
+ *
+ * Module: library/error.c
+ * Caller:
+ *
+ * This module enables mbedtls_strerror().
+ */
+#undef MBEDTLS_ERROR_C
+
+/**
+ * \def MBEDTLS_PADLOCK_C
+ *
+ * Enable VIA Padlock support on x86.
+ *
+ * Module: library/padlock.c
+ * Caller: library/aes.c
+ *
+ * Requires: MBEDTLS_HAVE_ASM
+ *
+ * This modules adds support for the VIA PadLock on x86.
+ */
+#undef MBEDTLS_PADLOCK_C
+
+/**
+ * \def MBEDTLS_RIPEMD160_C
+ *
+ * Enable the RIPEMD-160 hash algorithm.
+ *
+ * Module: library/ripemd160.c
+ * Caller: library/md.c
+ *
+ */
+#undef MBEDTLS_RIPEMD160_C
+
+/**
+ * \def MBEDTLS_PK_RSA_ALT_SUPPORT
+ *
+ * Support external private RSA keys (eg from a HSM) in the PK layer.
+ *
+ * Comment this macro to disable support for external private RSA keys.
+ */
+#undef MBEDTLS_PK_RSA_ALT_SUPPORT
+
+/**
+ * \def MBEDTLS_ARC4_C
+ *
+ * Enable the ARCFOUR stream cipher.
+ *
+ * Module: library/arc4.c
+ * Caller: library/cipher.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ * MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_RSA_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_RSA_WITH_RC4_128_MD5
+ * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA
+ * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA
+ *
+ * \warning ARC4 is considered a weak cipher and its use constitutes a
+ * security risk. If possible, we recommend avoidng dependencies on
+ * it, and considering stronger ciphers instead.
+ *
+ */
+#undef MBEDTLS_ARC4_C
+
+/**
+ * \def MBEDTLS_XTEA_C
+ *
+ * Enable the XTEA block cipher.
+ *
+ * Module: library/xtea.c
+ * Caller:
+ */
+#undef MBEDTLS_XTEA_C
+
+/**
+ * \def MBEDTLS_BLOWFISH_C
+ *
+ * Enable the Blowfish block cipher.
+ *
+ * Module: library/blowfish.c
+ */
+#undef MBEDTLS_BLOWFISH_C
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
+ *
+ * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_DHM_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
+ * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ * MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
+ * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA
+ *
+ * \warning Using DHE constitutes a security risk as it
+ * is not possible to validate custom DH parameters.
+ * If possible, it is recommended users should consider
+ * preferring other methods of key exchange.
+ * See dhm.h for more details.
+ *
+ */
+#undef MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+ *
+ * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
+ * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA
+ */
+#undef MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
+ *
+ * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
+ * MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
+ * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
+ * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA
+ */
+#undef MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_PSA_CRYPTO_C
+ *
+ * Enable the Platform Security Architecture cryptography API.
+ *
+ * \warning The PSA Crypto API is still beta status. While you're welcome to
+ * experiment using it, incompatible API changes are still possible, and some
+ * parts may not have reached the same quality as the rest of Mbed TLS yet.
+ *
+ * Module: library/psa_crypto.c
+ *
+ * Requires: MBEDTLS_CTR_DRBG_C, MBEDTLS_ENTROPY_C
+ *
+ */
+#undef MBEDTLS_PSA_CRYPTO_C
+
+/**
+ * \def MBEDTLS_PSA_CRYPTO_STORAGE_C
+ *
+ * Enable the Platform Security Architecture persistent key storage.
+ *
+ * Module: library/psa_crypto_storage.c
+ *
+ * Requires: MBEDTLS_PSA_CRYPTO_C,
+ * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of
+ * the PSA ITS interface
+ */
+#undef MBEDTLS_PSA_CRYPTO_STORAGE_C
+
+/**
+ * \def MBEDTLS_PSA_ITS_FILE_C
+ *
+ * Enable the emulation of the Platform Security Architecture
+ * Internal Trusted Storage (PSA ITS) over files.
+ *
+ * Module: library/psa_its_file.c
+ *
+ * Requires: MBEDTLS_FS_IO
+ */
+#undef MBEDTLS_PSA_ITS_FILE_C
+
+/**
+ * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+ *
+ * This option controls the availability of the API mbedtls_ssl_get_peer_cert()
+ * giving access to the peer's certificate after completion of the handshake.
+ *
+ * Unless you need mbedtls_ssl_peer_cert() in your application, it is
+ * recommended to disable this option for reduced RAM usage.
+ *
+ * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still
+ * defined, but always returns \c NULL.
+ *
+ * \note This option has no influence on the protection against the
+ * triple handshake attack. Even if it is disabled, Mbed TLS will
+ * still ensure that certificates do not change during renegotiation,
+ * for example by keeping a hash of the peer's certificate.
+ *
+ * Comment this macro to disable storing the peer's certificate
+ * after the handshake.
+ */
+#undef MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+
+/**
+ * \def MBEDTLS_DEPRECATED_REMOVED
+ *
+ * Remove deprecated functions and features so that they generate an error if
+ * used. Functionality deprecated in one version will usually be removed in the
+ * next version. You can enable this to help you prepare the transition to a
+ * new major version by making sure your code is not using this functionality.
+ *
+ * Uncomment to get errors on using deprecated functions and features.
+ */
+#define MBEDTLS_DEPRECATED_REMOVED
+
+/**
+ * \def Enable MBEDTLS debug logs
+ *
+ * MBEDTLS_VERBOSE values:
+ * 0 No debug - No logs are printed on console
+ * 1 Error - Error messages are printed on console
+ * 2 State change - State level change logs are printed on console
+ * 3 Informational - Informational logs printed on console
+ * 4 Verbose - All the logs are printed on console
+ */
+#define MBEDTLS_VERBOSE 0
+
+/**
+ * \def Enable alternate crypto implementations to use the hardware
+ * acceleration. Include The hardware acceleration module's (cy-mbedtls-acceleration)
+ * header file to enable the supported ALT configurations.
+ */
+#ifndef DISABLE_MBEDTLS_ACCELERATION
+#include "mbedtls_alt_config.h"
+
+/**
+ * The cy-mbedtls-acceleration module supports only DP_SECP192R1,
+ * SECP224R1, SECP256R1, SECP384R1 and SECP521R1 curves. If any
+ * other curve is enabled, need to disable the MBEDTLS_ECP_ALT.
+ */
+#ifdef MBEDTLS_ECP_DP_SECP192K1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_SECP224K1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_SECP256K1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_BP256R1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_BP384R1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_BP512R1_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+#ifdef MBEDTLS_ECP_DP_CURVE25519_ENABLED
+#undef MBEDTLS_ECP_ALT
+#undef MBEDTLS_ECDH_GEN_PUBLIC_ALT
+#undef MBEDTLS_ECDSA_SIGN_ALT
+#undef MBEDTLS_ECDSA_VERIFY_ALT
+#endif
+
+#endif /* DISABLE_MBEDTLS_ACCELERATION */
+
+#endif /* MBEDTLS_USER_CONFIG_HEADER */
diff --git a/ports/psoc6/modgc.c b/ports/psoc6/modgc.c
new file mode 100644
index 0000000000000..1ddf05343256e
--- /dev/null
+++ b/ports/psoc6/modgc.c
@@ -0,0 +1,50 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// micropython includes
+#include "py/gc.h"
+#include "shared/runtime/gchelper.h"
+
+
+#if MICROPY_ENABLE_GC
+
+void gc_collect(void) {
+ gc_collect_start();
+ gc_helper_collect_regs_and_stack();
+ #if MICROPY_PY_THREAD
+ mp_thread_gc_others();
+ #endif
+ gc_collect_end();
+
+
+ #if MICROPY_LOGGER_DEBUG
+
+ gc_dump_info();
+
+ #endif
+}
+
+#endif
diff --git a/ports/psoc6/modmachine.c b/ports/psoc6/modmachine.c
new file mode 100644
index 0000000000000..c4e22a4da0d48
--- /dev/null
+++ b/ports/psoc6/modmachine.c
@@ -0,0 +1,718 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+// mpy includes
+#include "py/obj.h"
+#include "py/gc.h"
+#include "py/runtime.h"
+#include "py/mphal.h"
+#include "shared/runtime/pyexec.h"
+#include "extmod/modnetwork.h"
+
+// MTB includes
+#include "cybsp.h"
+#include "cyhal.h"
+#include "cy_pdl.h"
+#include "cy_retarget_io.h"
+
+// port-specific includes
+#include "modmachine.h"
+#include "mplogger.h"
+#include "modpsoc6.h"
+#if MICROPY_PY_MACHINE
+
+#define clock_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+// enums to hold the MPY constants as given in guidelines
+enum {
+ MACHINE_PWRON_RESET,
+ MACHINE_HARD_RESET,
+ MACHINE_WDT_RESET,
+ MACHINE_DEEPSLEEP_RESET,
+ MACHINE_SOFT_RESET
+};
+
+uint32_t reset_cause;
+enum clock_freq_type freq_peri;
+enum clock_freq_type PLL0_freq;
+
+// function to return 64-bit silicon ID of given PSoC microcontroller
+// A combined 64-bit unique ID. [63:57] - DIE_YEAR [56:56] - DIE_MINOR [55:48] - DIE_SORT [47:40] - DIE_Y [39:32] - DIE_X [31:24] - DIE_WAFER [23:16] - DIE_LOT[2] [15: 8] - DIE_LOT[1] [ 7: 0] - DIE_LOT[0]
+static uint64_t system_get_unique_id(void) {
+ return Cy_SysLib_GetUniqueId();
+}
+
+// helper function to generate random alphanumeric hash
+static uint8_t system_rand_hash(uint8_t length) {
+ uint8_t hash_sum = 0;
+ char charset[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; // hash can be made stronger but
+ // uint8_t can only hold <=255
+
+ while (length-- > 0) {
+ uint8_t idx = rand() % sizeof(charset);
+ hash_sum = hash_sum + (int)charset[idx];
+ }
+ return hash_sum;
+}
+
+// global var to store current irq state/hash
+static uint8_t system_irq_key;
+
+// defines how strong the hash for enable/disable interrupt is, how many chars long
+#define HASH_CHARS_NUM 10
+
+// function to disable global IRQs
+// returns alphanumeric hash to enable IRQs later
+static uint8_t system_disable_global_irq(void) {
+ uint8_t state = system_rand_hash(HASH_CHARS_NUM); // 10 chars long key gen;
+ __disable_irq();
+ system_irq_key = state;
+ return state;
+}
+
+// function to enable global IRQs
+// uses passed alphanumeric key to verify and enable IRQs
+static bool system_enable_global_irq(uint8_t state) {
+ if (state == system_irq_key) {
+ __enable_irq();
+ return true;
+ } else {
+ return false;
+ }
+}
+
+// API to return clock freq; Fast CLK (CM4) is the main sys clk
+static uint32_t system_get_cpu_freq(void) {
+ return Cy_SysClk_ClkFastGetFrequency();
+}
+
+void machine_init(void) {
+ mplogger_print("machine init\n");
+ // TODO: put all module init functions here ?
+ // machine_pin_init(); ?
+}
+
+void machine_deinit(void) {
+ // we are doing a soft-reset so change the reset_cause
+ reset_cause = MACHINE_SOFT_RESET;
+ mplogger_print("machine deinit\n");
+ machine_wdt_deinit();
+ machine_pin_deinit_all();
+ machine_adcblock_deinit_all();
+ machine_i2c_deinit_all();
+ machine_pwm_deinit_all();
+ machine_spi_deinit_all();
+ machine_rtc_deinit_all();
+ machine_timer_deinit_all();
+ #if MICROPY_ENABLE_SD_CARD
+ machine_sdcard_deinit_all();
+ #endif
+}
+
+// machine.info([dump_alloc_table])
+// Print out lots of information about the board.
+static mp_obj_t machine_info(size_t n_args, const mp_obj_t *args) {
+ mp_printf(&mp_plat_print, "\nmachine info :\n");
+
+ // qstr info
+ {
+ size_t n_pool, n_qstr, n_str_data_bytes, n_total_bytes;
+ qstr_pool_info(&n_pool, &n_qstr, &n_str_data_bytes, &n_total_bytes);
+ mp_printf(&mp_plat_print, "\n qstr :\n n_pool = %u\n n_qstr = %u\n n_str_data_bytes = %u\n n_total_bytes = %u\n", n_pool, n_qstr, n_str_data_bytes, n_total_bytes);
+ }
+
+ // GC info
+ {
+ gc_info_t info;
+ gc_info(&info);
+ mp_printf(&mp_plat_print, "\n GC heap :\n");
+ mp_printf(&mp_plat_print, " total : 0x%x (%u)\n", info.total, info.total);
+ mp_printf(&mp_plat_print, " used : 0x%x (%u)\n", info.used, info.used);
+ mp_printf(&mp_plat_print, " free : 0x%x (%u)\n", info.free, info.free);
+ mp_printf(&mp_plat_print, " #1-blocks = 0x%x #2-blocks = 0x%x max-block = 0x%x\n", info.num_1block, info.num_2block, info.max_block);
+
+
+ extern uint8_t __StackTop, __StackLimit;
+ mp_printf(&mp_plat_print, "\n GC stack :\n");
+ printf(" __StackTop : 0x%x (%u)\n", (mp_uint_t)&__StackTop, (mp_uint_t)&__StackTop);
+ printf(" __StackLimit : 0x%x (%u)\n", (mp_uint_t)&__StackLimit, (mp_uint_t)&__StackLimit);
+ printf(" GC stack limit : 0x%x (%u)\n\n", (mp_uint_t)&__StackTop - (mp_uint_t)&__StackLimit, (mp_uint_t)&__StackTop - (mp_uint_t)&__StackLimit);
+
+ printf(" GC heap size : 0x%x (%u)\n", MICROPY_GC_HEAP_SIZE, MICROPY_GC_HEAP_SIZE);
+ }
+
+ // flash info
+ {
+ mp_printf(&mp_plat_print, "\n flash memory map :\n");
+
+ cyhal_flash_t cyhal_flash_obj;
+ cyhal_flash_info_t flash_info;
+
+ // Initialize flash object
+ cyhal_flash_init(&cyhal_flash_obj);
+
+ // Get flash characteristics
+ cyhal_flash_get_info(&cyhal_flash_obj, &flash_info);
+
+ // Wait for 100ms for the flash write to complete
+ uint32_t timeout = 100;
+
+ // Wait for the command to finish execution
+ while ((true != cyhal_flash_is_operation_complete(&cyhal_flash_obj)) && (0 < timeout)) {
+ timeout--;
+ cyhal_system_delay_ms(1); // delay one millisecond each iteration
+ }
+
+ const cyhal_flash_block_info_t *block_info = 0;
+
+ if (0 != timeout) {
+ for (int index = 0; index < flash_info.block_count; index++)
+ {
+ block_info = flash_info.blocks;
+ block_info += index;
+
+ mp_printf(&mp_plat_print, " block_info->start_address : 0x%lx\n", block_info->start_address);
+ mp_printf(&mp_plat_print, " block_info->size : 0x%lx\n", block_info->size);
+ mp_printf(&mp_plat_print, " block_info->sector_size : 0x%lx\n", block_info->sector_size);
+ mp_printf(&mp_plat_print, " block_info->page_size : 0x%lx\n", block_info->page_size);
+ mp_printf(&mp_plat_print, " block_info->erase_value : 0x%x\n\n", block_info->erase_value);
+ }
+ }
+ }
+
+
+ mp_printf(&mp_plat_print, "\n");
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_info_obj, 0, 1, machine_info);
+
+
+static mp_obj_t mp_machine_get_freq(void) {
+ return MP_OBJ_NEW_SMALL_INT(system_get_cpu_freq());
+}
+
+void cm4_set_frequency(uint32_t freq) {
+ cyhal_clock_t clock_fast;
+ cyhal_clock_t clock_slow;
+ cyhal_clock_t clock_pll;
+ cyhal_clock_t clock_hf0;
+ cyhal_clock_t clock_peri;
+
+ // deinitialize retarget-io before changing the clock frequency
+ cy_retarget_io_deinit();
+
+ /* Initialize, take ownership of PLL0/PLL */
+ cyhal_clock_reserve(&clock_pll, &CYHAL_CLOCK_PLL[0]);
+
+
+ /* Set the PLL0/PLL frequency to PLL_CLOCK_HZ =150 MHZ*/
+ cy_rslt_t result = cyhal_clock_set_frequency(&clock_pll, freq, NULL);
+ clock_assert_raise_val("PLL clock reserve failed with error code: %lx", result);
+
+ /* If the PLL0/PLL clock is not already enabled, enable it */
+ if (!cyhal_clock_is_enabled(&clock_pll)) {
+ result = cyhal_clock_set_enabled(&clock_pll, true, true);
+ clock_assert_raise_val("PLL clock enable failed with error code: %lx", result);
+ }
+
+ // HF0
+ /* Initialize, take ownership of CLK_HF0 */
+ result = cyhal_clock_reserve(&clock_hf0, &CYHAL_CLOCK_HF[0]);
+ clock_assert_raise_val("HF0 clock reserve failed with error code: %lx", result);
+
+ /* Source the (CLK_HF0) from PLL0/PLL */
+ result = cyhal_clock_set_source(&clock_hf0, &clock_pll);
+ clock_assert_raise_val("HF0 clock source failed with error code: %lx", result);
+
+ /* Set the divider for (CLK_HF0) */
+ result = cyhal_clock_set_divider(&clock_hf0, 1);
+ clock_assert_raise_val("HF0 clock set divider failed with error code: %lx", result);
+
+ /* (CLK_HF0) is not already enabled, enable it */
+ if (!cyhal_clock_is_enabled(&clock_hf0)) {
+ result = cyhal_clock_set_enabled(&clock_hf0, true, true);
+ clock_assert_raise_val("HF0 clock enable failed with error code: %lx", result);
+ }
+ // HF0
+
+ // Fast clock
+ result = cyhal_clock_reserve(&clock_fast, &CYHAL_CLOCK_FAST);
+ clock_assert_raise_val("Fast clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_fast, 1);
+ clock_assert_raise_val("Fast clock set divider failed with error code: %lx", result);
+
+
+
+ if (!cyhal_clock_is_enabled(&clock_fast)) {
+ result = cyhal_clock_set_enabled(&clock_fast, true, true);
+ clock_assert_raise_val("Fast clock enable failed with error code: %lx", result);
+ }
+ // Fast clock
+
+ // Peri clock
+ result = cyhal_clock_reserve(&clock_peri, &CYHAL_CLOCK_PERI);
+ clock_assert_raise_val("Peri clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_peri, 2);
+
+ if (!cyhal_clock_is_enabled(&clock_peri)) {
+ result = cyhal_clock_set_enabled(&clock_peri, true, true);
+ clock_assert_raise_val("Peri clock enable failed with error code: %lx", result);
+ }
+ // peri clock
+
+
+ // slow clock
+ result = cyhal_clock_reserve(&clock_slow, &CYHAL_CLOCK_SLOW);
+ clock_assert_raise_val("Slow clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_slow, 1);
+ clock_assert_raise_val("Slow clock set divider failed with error code: %lx", result);
+
+ if (!cyhal_clock_is_enabled(&clock_slow)) {
+ result = cyhal_clock_set_enabled(&clock_slow, true, true);
+ clock_assert_raise_val("Slow clock enable failed with error code: %lx", result);
+ }
+ // slow clock
+
+ cyhal_clock_free(&clock_fast);
+ cyhal_clock_free(&clock_slow);
+ cyhal_clock_free(&clock_pll);
+ cyhal_clock_free(&clock_hf0);
+ cyhal_clock_free(&clock_peri);
+
+ // Initialize retarget-io to use the debug UART port
+ result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
+ if (result != CY_RSLT_SUCCESS) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cy_retarget_io_init failed !\n"));
+ }
+
+}
+
+void cm4_fll_set_frequency(uint32_t freq) {
+ cyhal_clock_t clock_fast;
+ cyhal_clock_t clock_slow;
+ cyhal_clock_t clock_fll;
+ cyhal_clock_t clock_hf0;
+ cyhal_clock_t clock_peri;
+
+ // deinitialize retarget-io before changing the clock frequency
+ cy_retarget_io_deinit();
+
+ /* Initialize, take ownership of FLL */
+ cyhal_clock_reserve(&clock_fll, &CYHAL_CLOCK_FLL);
+
+ /* Set the FLL frequency */
+ cy_rslt_t result = cyhal_clock_set_frequency(&clock_fll, freq, NULL);
+ clock_assert_raise_val("FLL clock reserve failed with error code: %lx", result);
+
+ /* If the FLL clock is not already enabled, enable it */
+ if (!cyhal_clock_is_enabled(&clock_fll)) {
+ result = cyhal_clock_set_enabled(&clock_fll, true, true);
+ clock_assert_raise_val("FLL clock enable failed with error code: %lx", result);
+ }
+
+ // HF0
+ /* Initialize, take ownership of CLK_HF0 */
+ result = cyhal_clock_reserve(&clock_hf0, &CYHAL_CLOCK_HF[0]);
+ clock_assert_raise_val("HF0 clock reserve failed with error code: %lx", result);
+
+ /* Source the (CLK_HF0) from FLL */
+ result = cyhal_clock_set_source(&clock_hf0, &clock_fll);
+ clock_assert_raise_val("HF0 clock source failed with error code: %lx", result);
+
+ /* Set the divider for (CLK_HF0) */
+ result = cyhal_clock_set_divider(&clock_hf0, 1);
+ clock_assert_raise_val("HF0 clock set divider failed with error code: %lx", result);
+
+ /* (CLK_HF0) is not already enabled, enable it */
+ if (!cyhal_clock_is_enabled(&clock_hf0)) {
+ result = cyhal_clock_set_enabled(&clock_hf0, true, true);
+ clock_assert_raise_val("HF0 clock enable failed with error code: %lx", result);
+ }
+ // HF0
+
+ // Fast clock
+ result = cyhal_clock_reserve(&clock_fast, &CYHAL_CLOCK_FAST);
+ clock_assert_raise_val("Fast clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_fast, 1);
+ clock_assert_raise_val("Fast clock set divider failed with error code: %lx", result);
+
+
+
+ if (!cyhal_clock_is_enabled(&clock_fast)) {
+ result = cyhal_clock_set_enabled(&clock_fast, true, true);
+ clock_assert_raise_val("Fast clock enable failed with error code: %lx", result);
+ }
+ // Fast clock
+
+ // Peri clock
+ result = cyhal_clock_reserve(&clock_peri, &CYHAL_CLOCK_PERI);
+ clock_assert_raise_val("Peri clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_peri, 2);
+
+ if (!cyhal_clock_is_enabled(&clock_peri)) {
+ result = cyhal_clock_set_enabled(&clock_peri, true, true);
+ clock_assert_raise_val("Peri clock enable failed with error code: %lx", result);
+ }
+ // peri clock
+
+
+ // slow clock
+ result = cyhal_clock_reserve(&clock_slow, &CYHAL_CLOCK_SLOW);
+ clock_assert_raise_val("Slow clock reserve failed with error code: %lx", result);
+
+ result = cyhal_clock_set_divider(&clock_slow, 1);
+ clock_assert_raise_val("Slow clock set divider failed with error code: %lx", result);
+
+ if (!cyhal_clock_is_enabled(&clock_slow)) {
+ result = cyhal_clock_set_enabled(&clock_slow, true, true);
+ clock_assert_raise_val("Slow clock enable failed with error code: %lx", result);
+ }
+ // slow clock
+
+ cyhal_clock_free(&clock_fast);
+ cyhal_clock_free(&clock_slow);
+ cyhal_clock_free(&clock_fll);
+ cyhal_clock_free(&clock_hf0);
+ cyhal_clock_free(&clock_peri);
+
+ // Initialize retarget-io to use the debug UART port
+ result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
+ if (result != CY_RSLT_SUCCESS) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cy_retarget_io_init failed !\n"));
+ }
+}
+
+void audio_i2s_set_frequency(uint32_t freq) {
+
+ if (freq != 98000000 && freq != 90000000) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Invalid PLL0 frequency %lu"), freq);
+ }
+ cyhal_clock_t clock_pll;
+ cy_rslt_t result;
+
+ static bool clock_set_i2s = false;
+
+ result = cyhal_clock_reserve(&clock_pll, &CYHAL_CLOCK_PLL[0]);
+ clock_assert_raise_val("PLL clock reserve failed with error code: %lx", result);
+
+ uint32_t pll_source_clock_freq_hz = cyhal_clock_get_frequency(&clock_pll);
+ if (freq != pll_source_clock_freq_hz) {
+ clock_set_i2s = false;
+ pll_source_clock_freq_hz = freq;
+ }
+
+ if (!clock_set_i2s) {
+ result = cyhal_clock_set_frequency(&clock_pll, pll_source_clock_freq_hz, NULL);
+ clock_assert_raise_val("Set PLL clock frequency failed with error code: %lx", result);
+ if (!cyhal_clock_is_enabled(&clock_pll)) {
+ result = cyhal_clock_set_enabled(&clock_pll, true, true);
+ clock_assert_raise_val("PLL clock enable failed with error code: %lx", result);
+ }
+
+ result = cyhal_clock_reserve(&audio_clock, &CYHAL_CLOCK_HF[1]);
+ clock_assert_raise_val("HF1 clock reserve failed with error code: %lx", result);
+ result = cyhal_clock_set_source(&audio_clock, &clock_pll);
+ clock_assert_raise_val("HF1 clock sourcing failed with error code: %lx", result);
+ result = cyhal_clock_set_divider(&audio_clock, 2);
+ clock_assert_raise_val("HF1 clock set divider failed with error code: %lx", result);
+ if (!cyhal_clock_is_enabled(&audio_clock)) {
+ result = cyhal_clock_set_enabled(&audio_clock, true, true);
+ clock_assert_raise_val("HF1 clock enable failed with error code: %lx", result);
+ }
+ cyhal_clock_free(&audio_clock);
+
+ clock_set_i2s = true;
+ }
+
+ cyhal_clock_free(&clock_pll);
+
+ cyhal_system_delay_ms(1);
+
+}
+
+void audio_pdm_set_frequency(uint32_t freq) {
+
+ if (freq != 24576000 && freq != 22579000) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Invalid PLL0 frequency %lu"), freq);
+ }
+ cyhal_clock_t pll_clock;
+ cy_rslt_t result;
+
+ static bool clock_set_pdm = false;
+
+ result = cyhal_clock_reserve(&pll_clock, &CYHAL_CLOCK_PLL[0]);
+ clock_assert_raise_val("PLL clock reserve failed with error code: %lx", result);
+
+ uint32_t pll_source_clock_freq_hz = cyhal_clock_get_frequency(&pll_clock);
+
+ if (freq != pll_source_clock_freq_hz) {
+ clock_set_pdm = false;
+ pll_source_clock_freq_hz = freq;
+ }
+
+ if (!clock_set_pdm) {
+ result = cyhal_clock_set_frequency(&pll_clock, pll_source_clock_freq_hz, NULL);
+ clock_assert_raise_val("Set PLL clock frequency failed with error code: %lx", result);
+ if (!cyhal_clock_is_enabled(&pll_clock)) {
+ result = cyhal_clock_set_enabled(&pll_clock, true, true);
+ clock_assert_raise_val("PLL clock enable failed with error code: %lx", result);
+ }
+
+ result = cyhal_clock_reserve(&pdm_pcm_audio_clock, &CYHAL_CLOCK_HF[1]);
+ clock_assert_raise_val("HF1 clock reserve failed with error code: %lx", result);
+ result = cyhal_clock_set_source(&pdm_pcm_audio_clock, &pll_clock);
+ clock_assert_raise_val("HF1 clock sourcing failed with error code: %lx", result);
+
+ result = cyhal_clock_set_enabled(&pdm_pcm_audio_clock, true, true);
+ clock_assert_raise_val("HF1 clock enable failed with error code: %lx", result);
+
+ cyhal_clock_free(&pdm_pcm_audio_clock); // free the clock object
+
+ clock_set_pdm = true;
+ }
+
+ cyhal_clock_free(&pll_clock);
+ cyhal_system_delay_ms(1);
+
+}
+
+
+static void mp_machine_set_freq(size_t n_args, const mp_obj_t *args) {
+ freq_peri = mp_obj_get_int(args[0]); // Assuming the enum values are used as integers
+ switch (freq_peri) {
+ case AUDIO_I2S_90_MHZ:
+ PLL0_freq = AUDIO_I2S_90_MHZ;
+ audio_i2s_set_frequency(freq_peri); // i2s audio fz
+ break;
+ case AUDIO_I2S_98_MHZ:
+ PLL0_freq = AUDIO_I2S_98_MHZ;
+ audio_i2s_set_frequency(freq_peri); // i2s audio fz
+ break;
+ case AUDIO_PDM_22_579_000_HZ:
+ PLL0_freq = AUDIO_PDM_22_579_000_HZ;
+ audio_pdm_set_frequency(freq_peri); // pdm audio fz
+ break;
+ case AUDIO_PDM_24_576_000_HZ:
+ PLL0_freq = AUDIO_PDM_24_576_000_HZ;
+ audio_pdm_set_frequency(freq_peri); // pdm audio fz
+ break;
+ case CM4_FLL:
+ cm4_fll_set_frequency(mp_obj_get_int(args[1])); // core m4 fz sourced by FLL
+ break;
+ case CM4:
+ PLL0_freq = CM4;
+ cm4_set_frequency(mp_obj_get_int(args[1])); // core m4 fz sourced by PLL(default condition)
+ break;
+ default:
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Invalid frequency type %lu"), freq_peri);
+ break;
+ }
+}
+
+
+// Sleep Modes Not working. Might be because of the REPL always running in background. Need to evaluate
+static void mp_machine_lightsleep(size_t n_args, const mp_obj_t *args) {
+ // cy_rslt_t result;
+ // if (n_args != 0) {
+ // uint32_t expiry = mp_obj_get_int(args[0]);
+ // cyhal_lptimer_t obj;
+ // uint32_t actual_ms;
+ // result = cyhal_syspm_tickless_sleep(&obj, expiry, &actual_ms);
+ // if (result != CY_RSLT_SUCCESS) {
+ // mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Light sleeep failed %lx !"), result);
+ // }
+ // } else {
+ // result = cyhal_syspm_sleep();
+ // if (result != CY_RSLT_SUCCESS) {
+ // mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Light sleeep failed %lx !"), result);
+ // }
+ // }
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("Not implemented!!!\n"));
+}
+
+NORETURN static void mp_machine_deepsleep(size_t n_args, const mp_obj_t *args) {
+ // cy_rslt_t result;
+ // if (n_args != 0) {
+ // uint32_t expiry = mp_obj_get_int(args[0]);
+ // cyhal_lptimer_t obj;
+ // uint32_t actual_ms;
+ // result = cyhal_syspm_tickless_deepsleep(&obj, expiry, &actual_ms);
+ // if (result != CY_RSLT_SUCCESS) {
+ // mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Deep sleeep failed %lx !"), result);
+ // }
+ // } else {
+ // result = cyhal_syspm_deepsleep();
+ // if (result != CY_RSLT_SUCCESS) {
+ // mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Deep sleeep failed %lx !"), result);
+ // }
+ // }
+ // for (;;)
+ // {
+
+ // }
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("Not implemented!!!\n"));
+}
+
+// machine.idle()
+// This executies a wfi machine instruction which reduces power consumption
+// of the MCU until an interrupt occurs, at which point execution continues.
+// see: https://www.infineon.com/dgdl/Infineon-AN219528_PSoC_6_MCU_low-power_modes_and_power_reduction_techniques-ApplicationNotes-v06_00-EN.pdf?fileId=8ac78c8c7cdc391c017d0d31efdc659f pg.7
+static void mp_machine_idle(void) {
+ __WFI(); // standard ARM instruction
+}
+
+// machine.unique_id()
+static mp_obj_t mp_machine_unique_id(void) {
+ uint64_t id = system_get_unique_id();
+ byte *id_addr = (byte *)&id;
+ // printf("ID_formatted:%02x%02x%02x%02x:%02x%02x%02x%02x\n", id_addr[0], id_addr[1], id_addr[2], id_addr[3], id_addr[4], id_addr[5], id_addr[6], id_addr[7]);
+ return mp_obj_new_bytes(id_addr, 8);
+}
+
+// machine.reset()
+// using watchdog timer to count to minimum value (1ms) to trigger reset
+// thread-safe way as other methods might interfere with pending interrupts, threads etc.
+NORETURN static void mp_machine_reset(void) {
+ cyhal_wdt_t wdt_obj;
+ cyhal_wdt_init(&wdt_obj, 1); // min 1ms count time
+ cyhal_wdt_start(&wdt_obj);
+ while (true) {
+ }
+ ;
+}
+
+// This function is called from MPY side and is for addressing soft reset from micropython side. This does not indicate a system level soft reset.
+static mp_int_t mp_machine_reset_cause(void) {
+ if (reset_cause == MACHINE_SOFT_RESET) {
+ return MACHINE_SOFT_RESET;
+ } else {
+ mp_obj_t sys_reset = system_reset_cause();
+ uint32_t sys_reset_cause = mp_obj_get_int(sys_reset);
+ if (sys_reset_cause == SYSTEM_RESET_NONE) {
+ reset_cause = MACHINE_PWRON_RESET;
+ } else if (sys_reset_cause == SYSTEM_RESET_WDT) {
+ reset_cause = MACHINE_WDT_RESET;
+ } else if (sys_reset_cause == SYSTEM_RESET_DEEPSLEEP_FAULT) {
+ reset_cause = MACHINE_DEEPSLEEP_RESET;
+ } else {
+ reset_cause = MACHINE_HARD_RESET;
+ }
+ }
+ return reset_cause;
+}
+
+// machine.disable_irq()
+static mp_obj_t machine_disable_irq(void) {
+ uint32_t state = system_disable_global_irq();
+ return mp_obj_new_int(state);
+}
+MP_DEFINE_CONST_FUN_OBJ_0(machine_disable_irq_obj, machine_disable_irq);
+
+// machine.enable_irq()
+static mp_obj_t machine_enable_irq(mp_obj_t state_in) {
+ uint32_t state = mp_obj_get_int(state_in);
+ bool result = system_enable_global_irq(state);
+ if (!result) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Interrupt enabling failed!"));
+ }
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_1(machine_enable_irq_obj, machine_enable_irq);
+
+static mp_obj_t machine_rng(void) {
+ uint32_t rnd_num;
+ cyhal_trng_t trng_obj;
+ /* Initialize the true random number generator block */
+ cy_rslt_t rslt = cyhal_trng_init(&trng_obj);
+ if (rslt != CY_RSLT_SUCCESS) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("Random Number generator failed %lx !"), rslt);
+ }
+ /* Generate a true random number */
+ rnd_num = cyhal_trng_generate(&trng_obj);
+ rnd_num &= 0xFFFFFF;
+ /* Release the true random number generator block */
+ cyhal_trng_free(&trng_obj);
+ return mp_obj_new_int(rnd_num);
+}
+MP_DEFINE_CONST_FUN_OBJ_0(machine_rng_obj, machine_rng);
+
+#ifdef MICROPY_PY_SD_CARD
+#define MICROPY_PY_MACHINE_SD_CARD_ENTRY { MP_ROM_QSTR(MP_QSTR_SDCard), MP_ROM_PTR(&machine_sdcard_type) },
+#else
+#define MICROPY_PY_MACHINE_SD_CARD_ENTRY
+#endif
+
+#if MICROPY_PY_MACHINE_SPI_SLAVE
+#define MICROPY_PY_MACHINE_SPI_SLAVE_ENTRY { MP_ROM_QSTR(MP_QSTR_SPISlave), MP_ROM_PTR(&machine_spi_slave_type) },
+#else
+#define MICROPY_PY_MACHINE_SPI_SLAVE_ENTRY
+#endif
+
+#define MICROPY_PY_MACHINE_EXTRA_GLOBALS \
+ { MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&machine_info_obj) }, \
+ { MP_ROM_QSTR(MP_QSTR_reset_cause), MP_ROM_PTR(&machine_reset_cause_obj) }, \
+ { MP_ROM_QSTR(MP_QSTR_rng), MP_ROM_PTR(&machine_rng_obj) }, \
+ \
+ { MP_ROM_QSTR(MP_QSTR_disable_irq), MP_ROM_PTR(&machine_disable_irq_obj) }, \
+ { MP_ROM_QSTR(MP_QSTR_enable_irq), MP_ROM_PTR(&machine_enable_irq_obj) }, \
+ \
+ /* class constants */ \
+ { MP_ROM_QSTR(MP_QSTR_HARD_RESET), MP_ROM_INT(MACHINE_HARD_RESET) }, \
+ { MP_ROM_QSTR(MP_QSTR_WDT_RESET), MP_ROM_INT(MACHINE_WDT_RESET) }, \
+ { MP_ROM_QSTR(MP_QSTR_DEEPSLEEP_RESET), MP_ROM_INT(MACHINE_DEEPSLEEP_RESET) }, \
+ { MP_ROM_QSTR(MP_QSTR_SOFT_RESET), MP_ROM_INT(MACHINE_SOFT_RESET) }, \
+ { MP_ROM_QSTR(MP_QSTR_PWRON_RESET), MP_ROM_INT(MACHINE_PWRON_RESET) }, \
+ { MP_ROM_QSTR(MP_QSTR_AUDIO_I2S_98_MHZ), MP_ROM_INT(AUDIO_I2S_98_MHZ) }, \
+ { MP_ROM_QSTR(MP_QSTR_AUDIO_I2S_90_MHZ), MP_ROM_INT(AUDIO_I2S_90_MHZ) }, \
+ { MP_ROM_QSTR(MP_QSTR_AUDIO_PDM_24_576_000_HZ), MP_ROM_INT(AUDIO_PDM_24_576_000_HZ) }, \
+ { MP_ROM_QSTR(MP_QSTR_AUDIO_PDM_22_579_000_HZ), MP_ROM_INT(AUDIO_PDM_22_579_000_HZ) }, \
+ { MP_ROM_QSTR(MP_QSTR_CM4), MP_ROM_INT(CM4) }, \
+ { MP_ROM_QSTR(MP_QSTR_CM4_FLL), MP_ROM_INT(CM4_FLL) }, \
+ \
+ /* Modules */ \
+ { MP_ROM_QSTR(MP_QSTR_I2CSlave), MP_ROM_PTR(&machine_i2c_slave_type) }, \
+ { MP_ROM_QSTR(MP_QSTR_PDM_PCM), MP_ROM_PTR(&machine_pdm_pcm_type) }, \
+ { MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&machine_pin_type) }, \
+ { MP_ROM_QSTR(MP_QSTR_RTC), MP_ROM_PTR(&machine_rtc_type) }, \
+ \
+ { MP_ROM_QSTR(MP_QSTR_Timer), MP_ROM_PTR(&machine_timer_type) }, \
+ { MP_ROM_QSTR(MP_QSTR_ADC), MP_ROM_PTR(&machine_adc_type) }, \
+ { MP_ROM_QSTR(MP_QSTR_ADCBlock), MP_ROM_PTR(&machine_adcblock_type) }, \
+ MICROPY_PY_MACHINE_SPI_SLAVE_ENTRY \
+ MICROPY_PY_MACHINE_SD_CARD_ENTRY \
+
+#endif // MICROPY_PY_MACHINE
diff --git a/ports/psoc6/modmachine.h b/ports/psoc6/modmachine.h
new file mode 100644
index 0000000000000..9f9a2c38b44f1
--- /dev/null
+++ b/ports/psoc6/modmachine.h
@@ -0,0 +1,92 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#ifndef MICROPY_INCLUDED_PSOC6_MODMACHINE_H
+#define MICROPY_INCLUDED_PSOC6_MODMACHINE_H
+
+
+// micropython includes
+#include "py/obj.h"
+
+
+extern const mp_obj_type_t machine_i2c_type;
+extern const mp_obj_type_t machine_i2c_slave_type;
+extern const mp_obj_type_t machine_pin_type;
+extern const mp_obj_type_t machine_rtc_type;
+extern const mp_obj_type_t machine_pwm_type;
+extern const mp_obj_type_t machine_spi_type;
+extern const mp_obj_type_t machine_spi_slave_type;
+extern const mp_obj_type_t machine_timer_type;
+extern const mp_obj_type_t machine_adc_type;
+extern const mp_obj_type_t machine_wdt_type;
+extern const mp_obj_type_t machine_adcblock_type;
+extern const mp_obj_type_t machine_pdm_pcm_type;
+extern const mp_obj_type_t machine_i2s_type;
+// extern const mp_obj_type_t machine_uart_type;
+#ifdef MICROPY_PY_SD_CARD
+extern const mp_obj_type_t machine_sdcard_type;
+#endif
+
+// Add all mod machine deinits
+void machine_pin_deinit_all(void);
+void machine_adcblock_deinit_all(void);
+void machine_i2c_deinit_all(void);
+void machine_pwm_deinit_all(void);
+void machine_rtc_deinit_all(void);
+void machine_spi_deinit_all(void);
+void machine_timer_deinit_all(void);
+void machine_wdt_deinit(void);
+void machine_uart_deinit_all(void);
+void machine_sdcard_deinit_all(void);
+/* Note: the static functions' prototypes in the .c file cannot be declared here
+since they are static. The static type in those functions come from MPY hence
+should stay that way. */
+
+
+// functions to be called from other .c files. Hence they are not static.
+void machine_init(void);
+void machine_deinit(void);
+mp_obj_t system_reset_cause(void);
+
+extern void audio_i2s_set_frequency(uint32_t audio_clock_freq_hz);
+extern cyhal_clock_t audio_clock;
+extern cyhal_clock_t pdm_pcm_audio_clock;
+extern bool clock_set_i2s;
+extern bool clock_set_pdm;
+
+// enums to hold the frequency constants
+enum clock_freq_type {
+ AUDIO_I2S_98_MHZ = 98000000,
+ AUDIO_I2S_90_MHZ = 90000000,
+ AUDIO_PDM_24_576_000_HZ = 24576000,
+ AUDIO_PDM_22_579_000_HZ = 22579000,
+ CM4,
+ CM4_FLL
+};
+
+extern enum clock_freq_type PLL0_freq;
+
+#endif // MICROPY_INCLUDED_PSOC6_MODMACHINE_H
diff --git a/ports/psoc6/modos.c b/ports/psoc6/modos.c
new file mode 100644
index 0000000000000..a41240b2cd486
--- /dev/null
+++ b/ports/psoc6/modos.c
@@ -0,0 +1,104 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2014-2018 Paul Sokolovsky
+ * Copyright (c) 2017-2022 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+#include
+
+
+// micropython includes
+#include "py/runtime.h"
+#include "py/mphal.h"
+
+
+#define RAISE_ERRNO(err_flag, error_val) \
+ { if (err_flag == -1) \
+ { mp_raise_OSError(error_val); } }
+
+
+void os_init(void) {
+}
+
+
+void os_deinit(void) {
+
+}
+
+
+#if MICROPY_PY_OS_GETENV_PUTENV_UNSETENV
+
+static mp_obj_t mp_os_getenv(mp_obj_t var_in) {
+ const char *s = getenv(mp_obj_str_get_str(var_in));
+ if (s == NULL) {
+ return mp_const_none;
+ }
+ return mp_obj_new_str(s, strlen(s));
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(mp_os_getenv_obj, mp_os_getenv);
+
+
+static mp_obj_t mp_os_putenv(mp_obj_t var, mp_obj_t value) {
+ setenv(mp_obj_str_get_str(var), mp_obj_str_get_str(value), 1);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(mp_os_putenv_obj, mp_os_putenv);
+
+
+static mp_obj_t mp_os_unsetenv(mp_obj_t var) {
+ unsetenv(mp_obj_str_get_str(var));
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(mp_os_unsetenv_obj, mp_os_unsetenv);
+
+#endif
+
+
+static mp_obj_t mp_os_system(mp_obj_t cmd_in) {
+ const char *cmd = mp_obj_str_get_str(cmd_in);
+
+ MP_THREAD_GIL_EXIT();
+ int r = system(cmd);
+ MP_THREAD_GIL_ENTER();
+
+ RAISE_ERRNO(r, errno);
+
+ return MP_OBJ_NEW_SMALL_INT(r);
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(mp_os_system_obj, mp_os_system);
+
+
+static mp_obj_t mp_os_errno(size_t n_args, const mp_obj_t *args) {
+ if (n_args == 0) {
+ return MP_OBJ_NEW_SMALL_INT(errno);
+ }
+
+ errno = mp_obj_get_int(args[0]);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_os_errno_obj, 0, 1, mp_os_errno);
diff --git a/ports/psoc6/modpsoc6.c b/ports/psoc6/modpsoc6.c
new file mode 100644
index 0000000000000..c06679391d61a
--- /dev/null
+++ b/ports/psoc6/modpsoc6.c
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020-2021 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// micropython includes
+#include "py/runtime.h"
+
+
+// port-specific includes
+#include "modpsoc6.h"
+#include "cyhal.h"
+
+mp_obj_t system_reset_cause(void) {
+ uint32_t set_reset_cause = SYSTEM_RESET_NONE;
+
+ uint32_t reset_reason = cyhal_system_get_reset_reason();
+
+ if (reset_reason & CYHAL_SYSTEM_RESET_NONE) {
+ set_reset_cause = SYSTEM_RESET_NONE;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_WDT) {
+ set_reset_cause = SYSTEM_RESET_WDT;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_ACTIVE_FAULT) {
+ set_reset_cause = SYSTEM_RESET_ACTIVE_FAULT;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_DEEPSLEEP_FAULT) {
+ set_reset_cause = SYSTEM_RESET_DEEPSLEEP_FAULT;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_SOFT) {
+ set_reset_cause = SYSTEM_RESET_SOFT;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_HIB_WAKEUP) {
+ set_reset_cause = SYSTEM_RESET_HIB_WAKEUP;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_WCO_ERR) {
+ set_reset_cause = SYSTEM_RESET_WCO_ERR;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_SYS_CLK_ERR) {
+ set_reset_cause = SYSTEM_RESET_SYS_CLK_ERR;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_PROTECTION) {
+ set_reset_cause = SYSTEM_RESET_PROTECTION;
+ } else if (reset_reason & CYHAL_SYSTEM_RESET_WARMBOOT) {
+ set_reset_cause = SYSTEM_RESET_WARMBOOT;
+ }
+ cyhal_system_clear_reset_reason();
+ return MP_OBJ_NEW_SMALL_INT(set_reset_cause);
+}
+MP_DEFINE_CONST_FUN_OBJ_0(system_reset_cause_obj, system_reset_cause);
+
+static const mp_rom_map_elem_t psoc6_module_globals_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_psoc6) },
+ #if MICROPY_ENABLE_EXT_QSPI_FLASH
+ { MP_ROM_QSTR(MP_QSTR_QSPI_Flash), MP_ROM_PTR(&psoc6_qspi_flash_type) },
+ #else
+ { MP_ROM_QSTR(MP_QSTR_Flash), MP_ROM_PTR(&psoc6_flash_type) },
+ #endif
+ #if MICROPY_ENABLE_SD_CARD
+ { MP_ROM_QSTR(MP_QSTR_SD_CARD), MP_ROM_PTR(&machine_sdcard_type) },
+ #endif
+ { MP_ROM_QSTR(MP_QSTR_system_reset_cause), MP_ROM_PTR(&system_reset_cause_obj)},
+};
+static MP_DEFINE_CONST_DICT(psoc6_module_globals, psoc6_module_globals_table);
+
+
+const mp_obj_module_t mp_module_psoc6 = {
+ .base = { &mp_type_module },
+ .globals = (mp_obj_dict_t *)&psoc6_module_globals,
+};
+
+
+MP_REGISTER_MODULE(MP_QSTR_psoc6, mp_module_psoc6);
diff --git a/ports/psoc6/modpsoc6.h b/ports/psoc6/modpsoc6.h
new file mode 100644
index 0000000000000..920478f4e7fc4
--- /dev/null
+++ b/ports/psoc6/modpsoc6.h
@@ -0,0 +1,53 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020-2021 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+#ifndef MICROPY_INCLUDED_PSOC6_MODPSOC6_H
+#define MICROPY_INCLUDED_PSOC6_MODPSOC6_H
+
+
+// micropython includes
+#include "py/obj.h"
+
+typedef enum
+{
+ SYSTEM_RESET_NONE, /**< No cause */
+ SYSTEM_RESET_WDT, /**< A watchdog timer (WDT) reset has occurred */
+ SYSTEM_RESET_ACTIVE_FAULT, /**< The fault logging system requested a reset from its Active logic. */
+ SYSTEM_RESET_DEEPSLEEP_FAULT, /**< The fault logging system requested a reset from its Deep-Sleep logic. */
+ SYSTEM_RESET_SOFT, /**< The CPU requested a system reset through it's SYSRESETREQ. */
+ SYSTEM_RESET_HIB_WAKEUP, /**< A reset has occurred due to a a wakeup from hibernate power mode. */
+ SYSTEM_RESET_WCO_ERR, /**< A reset has occurred due to a watch-crystal clock error */
+ SYSTEM_RESET_SYS_CLK_ERR, /**< A reset has occurred due to a system clock error */
+ SYSTEM_RESET_PROTECTION, /**< A reset has occurred due to a protection violation */
+ SYSTEM_RESET_WARMBOOT, /**< A reset has occurred due wake up from DSRAM, which is a Warm Boot */
+ SYSTEM_RESET_MP_SOFT /**< A reset has occurred due to a soft reset from micropython side*/
+} system_reset_reason_t;
+
+extern const mp_obj_type_t psoc6_flash_type;
+extern const mp_obj_type_t psoc6_qspi_flash_type;
+extern const mp_obj_type_t machine_sdcard_type;
+
+#endif // MICROPY_INCLUDED_PSOC6_MODPSOC6_H
diff --git a/ports/psoc6/modsocket.c b/ports/psoc6/modsocket.c
new file mode 100644
index 0000000000000..becc573bd1afb
--- /dev/null
+++ b/ports/psoc6/modsocket.c
@@ -0,0 +1,956 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * Based on ports/esp32/modsocket.c
+ * Copyright (c) 2016, 2017 Nick Moore @mnemote
+ *
+ * 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.
+ */
+
+#include
+#include
+#include
+#include
+
+#include "py/gc.h"
+#include "py/runtime0.h"
+#include "py/nlr.h"
+#include "py/objlist.h"
+#include "py/objstr.h"
+#include "py/runtime.h"
+#include "py/mperrno.h"
+#include "py/mphal.h"
+#include "py/stream.h"
+#include "py/mperrno.h"
+#include "shared/netutils/netutils.h"
+
+#include "lwip/sockets.h"
+#include "lwip/netdb.h"
+#include "lwip/ip4.h"
+#include "lwip/igmp.h"
+#include "lwip/sys.h"
+#include "cy_network_mw_core.h"
+
+#define SOCKET_POLL_US (100000)
+#define MDNS_QUERY_TIMEOUT_MS (5000)
+#define MDNS_LOCAL_SUFFIX ".local"
+
+#ifndef NO_QSTR
+#include "mdns.h"
+#endif
+
+enum {
+ SOCKET_STATE_NEW,
+ SOCKET_STATE_CONNECTED,
+ SOCKET_STATE_PEER_CLOSED,
+};
+
+typedef struct _socket_obj_t {
+ mp_obj_base_t base;
+ int fd;
+ uint8_t domain;
+ uint8_t type;
+ uint8_t proto;
+ uint8_t state;
+ unsigned int retries;
+ #if MICROPY_PY_SOCKET_EVENTS
+ mp_obj_t events_callback;
+ struct _socket_obj_t *events_next;
+ #endif
+} socket_obj_t;
+
+
+void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms);
+
+#if MICROPY_PY_SOCKET_EVENTS
+// Support for callbacks on asynchronous socket events (when socket becomes readable)
+
+// This divisor is used to reduce the load on the system, so it doesn't poll sockets too often
+#define USOCKET_EVENTS_DIVISOR (8)
+
+static uint8_t socket_events_divisor;
+static socket_obj_t *socket_events_head;
+
+void socket_events_deinit(void) {
+ socket_events_head = NULL;
+}
+
+// Assumes the socket is not already in the linked list, and adds it
+static void socket_events_add(socket_obj_t *sock) {
+ sock->events_next = socket_events_head;
+ socket_events_head = sock;
+}
+
+// Assumes the socket is already in the linked list, and removes it
+static void socket_events_remove(socket_obj_t *sock) {
+ for (socket_obj_t **s = &socket_events_head;; s = &(*s)->events_next) {
+ if (*s == sock) {
+ *s = (*s)->events_next;
+ return;
+ }
+ }
+}
+
+// Polls all registered sockets for readability and calls their callback if they are readable
+void socket_events_handler(void) {
+ if (socket_events_head == NULL) {
+ return;
+ }
+ if (--socket_events_divisor) {
+ return;
+ }
+ socket_events_divisor = USOCKET_EVENTS_DIVISOR;
+
+ fd_set rfds;
+ FD_ZERO(&rfds);
+ int max_fd = 0;
+
+ for (socket_obj_t *s = socket_events_head; s != NULL; s = s->events_next) {
+ FD_SET(s->fd, &rfds);
+ max_fd = MAX(max_fd, s->fd);
+ }
+
+ // Poll the sockets
+ struct timeval timeout = { .tv_sec = 0, .tv_usec = 0 };
+ int r = select(max_fd + 1, &rfds, NULL, NULL, &timeout);
+ if (r <= 0) {
+ return;
+ }
+
+ // Call the callbacks
+ for (socket_obj_t *s = socket_events_head; s != NULL; s = s->events_next) {
+ if (FD_ISSET(s->fd, &rfds)) {
+ mp_call_function_1_protected(s->events_callback, s);
+ }
+ }
+}
+
+#endif // MICROPY_PY_SOCKET_EVENTS
+
+static inline void check_for_exceptions(void) {
+ mp_handle_pending(true);
+}
+
+static void _getaddrinfo_inner(const mp_obj_t host, const mp_obj_t portx,
+ const struct addrinfo *hints, struct addrinfo **res) {
+ int retval = 0;
+
+ *res = NULL;
+
+ mp_obj_t port = portx;
+ if (mp_obj_is_integer(port)) {
+ // This is perverse, because lwip_getaddrinfo promptly converts it back to an int, but
+ // that's the API we have to work with ...
+ port = mp_obj_str_binary_op(MP_BINARY_OP_MODULO, mp_obj_new_str_via_qstr("%s", 2), port);
+ }
+
+ const char *host_str = mp_obj_str_get_str(host);
+ const char *port_str = mp_obj_str_get_str(port);
+
+ if (host_str[0] == '\0') {
+ // a host of "" is equivalent to the default/all-local IP address
+ host_str = "0.0.0.0";
+ }
+
+ MP_THREAD_GIL_EXIT();
+
+ if (retval == 0 && *res == NULL) {
+ // Normal query
+ retval = lwip_getaddrinfo(host_str, port_str, hints, res);
+ }
+
+ MP_THREAD_GIL_ENTER();
+
+ // Per docs: instead of raising gaierror getaddrinfo raises negative error number
+ if (retval != 0) {
+ mp_raise_OSError(retval > 0 ? -retval : retval);
+ }
+ // Somehow LwIP returns a resolution of 0.0.0.0 for failed lookups, traced it as far back
+ // as netconn_gethostbyname_addrtype returning OK instead of error.
+ if (*res == NULL ||
+ (strcmp(res[0]->ai_canonname, "0.0.0.0") == 0 && strcmp(host_str, "0.0.0.0") != 0)) {
+ lwip_freeaddrinfo(*res);
+ mp_raise_OSError(-2); // name or service not known
+ }
+
+ assert(retval == 0 && *res != NULL);
+}
+
+static void _socket_getaddrinfo(const mp_obj_t addrtuple, struct addrinfo **resp) {
+ mp_obj_t *elem;
+ mp_obj_get_array_fixed_n(addrtuple, 2, &elem);
+ _getaddrinfo_inner(elem[0], elem[1], NULL, resp);
+}
+
+static mp_obj_t socket_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mp_arg_check_num(n_args, n_kw, 0, 3, false);
+
+ socket_obj_t *sock = mp_obj_malloc_with_finaliser(socket_obj_t, type_in);
+ sock->domain = AF_INET;
+ sock->type = SOCK_STREAM;
+ sock->proto = 0;
+ if (n_args > 0) {
+ sock->domain = mp_obj_get_int(args[0]);
+ if (n_args > 1) {
+ sock->type = mp_obj_get_int(args[1]);
+ if (n_args > 2) {
+ sock->proto = mp_obj_get_int(args[2]);
+ }
+ }
+ }
+
+ sock->state = sock->type == SOCK_STREAM ? SOCKET_STATE_NEW : SOCKET_STATE_CONNECTED;
+
+ sock->fd = lwip_socket(sock->domain, sock->type, sock->proto);
+ if (sock->fd < 0 && errno == ENFILE) {
+ // LWIP has a hard socket limit, ENFILE is returned when this is
+ // reached. Similar to the logic elsewhere for MemoryError, try running
+ // GC before failing outright.
+ gc_collect();
+ sock->fd = lwip_socket(sock->domain, sock->type, sock->proto);
+ }
+ if (sock->fd < 0) {
+ mp_raise_OSError(errno);
+ }
+ _socket_settimeout(sock, UINT64_MAX);
+
+ return MP_OBJ_FROM_PTR(sock);
+}
+
+static mp_obj_t socket_bind(const mp_obj_t arg0, const mp_obj_t arg1) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+ struct addrinfo *res;
+ _socket_getaddrinfo(arg1, &res);
+ self->state = SOCKET_STATE_CONNECTED;
+ int r = lwip_bind(self->fd, res->ai_addr, res->ai_addrlen);
+ lwip_freeaddrinfo(res);
+ if (r < 0) {
+ mp_raise_OSError(errno);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_bind_obj, socket_bind);
+
+// method socket.listen([backlog])
+static mp_obj_t socket_listen(size_t n_args, const mp_obj_t *args) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ int backlog = MICROPY_PY_SOCKET_LISTEN_BACKLOG_DEFAULT;
+ if (n_args > 1) {
+ backlog = mp_obj_get_int(args[1]);
+ backlog = (backlog < 0) ? 0 : backlog;
+ }
+
+ self->state = SOCKET_STATE_CONNECTED;
+ int r = lwip_listen(self->fd, backlog);
+ if (r < 0) {
+ mp_raise_OSError(errno);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_listen_obj, 1, 2, socket_listen);
+
+static mp_obj_t socket_accept(const mp_obj_t arg0) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+
+ struct sockaddr addr;
+ socklen_t addr_len = sizeof(addr);
+
+ int new_fd = -1;
+ for (int i = 0; i <= self->retries; i++) {
+ MP_THREAD_GIL_EXIT();
+ new_fd = lwip_accept(self->fd, &addr, &addr_len);
+ MP_THREAD_GIL_ENTER();
+ if (new_fd >= 0) {
+ break;
+ }
+ if (errno != EAGAIN) {
+ mp_raise_OSError(errno);
+ }
+ check_for_exceptions();
+ }
+ if (new_fd < 0) {
+ if (self->retries == 0) {
+ mp_raise_OSError(MP_EAGAIN);
+ } else {
+ mp_raise_OSError(MP_ETIMEDOUT);
+ }
+ }
+
+ // create new socket object
+ socket_obj_t *sock = mp_obj_malloc_with_finaliser(socket_obj_t, self->base.type);
+ sock->fd = new_fd;
+ sock->domain = self->domain;
+ sock->type = self->type;
+ sock->proto = self->proto;
+ sock->state = SOCKET_STATE_CONNECTED;
+ _socket_settimeout(sock, UINT64_MAX);
+
+ // make the return value
+ uint8_t *ip = (uint8_t *)&((struct sockaddr_in *)&addr)->sin_addr;
+ mp_uint_t port = lwip_ntohs(((struct sockaddr_in *)&addr)->sin_port);
+ mp_obj_tuple_t *client = mp_obj_new_tuple(2, NULL);
+ client->items[0] = sock;
+ client->items[1] = netutils_format_inet_addr(ip, port, NETUTILS_BIG);
+
+ return client;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(socket_accept_obj, socket_accept);
+
+static mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+ struct addrinfo *res;
+ bool blocking = false;
+ int flags = O_NONBLOCK;
+ int raise_err = 0;
+
+ _socket_getaddrinfo(arg1, &res);
+ MP_THREAD_GIL_EXIT();
+ self->state = SOCKET_STATE_CONNECTED;
+
+ flags = fcntl(self->fd, F_GETFL, flags);
+
+ blocking = (flags & O_NONBLOCK) == 0;
+
+ if (blocking) {
+ // For blocking sockets, make the socket temporarily non-blocking and emulate
+ // blocking using select.
+ //
+ // This has two benefits:
+ //
+ // - Allows handling external exceptions while waiting for connect.
+ //
+ // - Allows emulating a connect timeout, which is not supported by LWIP or
+ // required by POSIX but is normal behaviour for CPython.
+ if (fcntl(self->fd, F_SETFL, flags | O_NONBLOCK) < 0) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("fcntl set failed %d"), errno);
+ raise_err = errno;
+ }
+ }
+
+ if (raise_err == 0) {
+ // Try performing the actual connect. Expected to always return immediately.
+ int r = lwip_connect(self->fd, res->ai_addr, res->ai_addrlen);
+ if (r != 0) {
+ raise_err = errno;
+ }
+ }
+
+ if (blocking) {
+ // Set the socket back to blocking. We can still pass it to select() in this state.
+ int r = fcntl(self->fd, F_SETFL, flags);
+ if (r != 0 && (raise_err == 0 || raise_err == EINPROGRESS)) {
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("fcntl restore failed %d"), errno);
+ raise_err = errno;
+ }
+ }
+
+ lwip_freeaddrinfo(res);
+
+ if (blocking && raise_err == EINPROGRESS) {
+ // Keep calling select() until the socket is marked writable (i.e. connected),
+ // or an error or a timeout occurs
+
+ // Note: _socket_settimeout() always sets self->retries != 0 on blocking sockets.
+
+ for (unsigned int i = 0; i <= self->retries; i++) {
+ struct timeval timeout = {
+ .tv_sec = 0,
+ .tv_usec = SOCKET_POLL_US,
+ };
+ fd_set wfds;
+ FD_ZERO(&wfds);
+ FD_SET(self->fd, &wfds);
+
+ int r = select(self->fd + 1, NULL, &wfds, NULL, &timeout);
+ if (r < 0) {
+ // Error condition
+ raise_err = errno;
+ break;
+ } else if (r > 0) {
+ // Select indicated the socket is writable. Check for any error.
+ socklen_t socklen = sizeof(raise_err);
+ r = getsockopt(self->fd, SOL_SOCKET, SO_ERROR, &raise_err, &socklen);
+ if (r < 0) {
+ raise_err = errno;
+ }
+ break;
+ } else {
+ // Select timed out
+ raise_err = ETIMEDOUT;
+
+ MP_THREAD_GIL_ENTER();
+ check_for_exceptions();
+ MP_THREAD_GIL_EXIT();
+ }
+ }
+ }
+
+ MP_THREAD_GIL_ENTER();
+ if (raise_err) {
+ mp_raise_OSError(raise_err);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_connect_obj, socket_connect);
+
+static mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) {
+ (void)n_args; // always 4
+ socket_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ int opt = mp_obj_get_int(args[2]);
+
+ switch (opt) {
+ // level: SOL_SOCKET
+ case SO_REUSEADDR:
+ case SO_BROADCAST: {
+ int val = mp_obj_get_int(args[3]);
+ int ret = lwip_setsockopt(self->fd, SOL_SOCKET, opt, &val, sizeof(int));
+ if (ret != 0) {
+ mp_raise_OSError(errno);
+ }
+ break;
+ }
+
+ case SO_BINDTODEVICE: {
+ size_t len;
+ const char *val = mp_obj_str_get_data(args[3], &len);
+ char ifname[NETIF_NAMESIZE] = {0};
+ memcpy(&ifname, val, len);
+ int ret = lwip_setsockopt(self->fd, SOL_SOCKET, opt, &ifname, NETIF_NAMESIZE);
+ if (ret != 0) {
+ mp_raise_OSError(errno);
+ }
+ break;
+ }
+
+ #if MICROPY_PY_SOCKET_EVENTS
+ // level: SOL_SOCKET
+ // special "register callback" option
+ case 20: {
+ if (args[3] == mp_const_none) {
+ if (self->events_callback != MP_OBJ_NULL) {
+ socket_events_remove(self);
+ self->events_callback = MP_OBJ_NULL;
+ }
+ } else {
+ if (self->events_callback == MP_OBJ_NULL) {
+ socket_events_add(self);
+ }
+ self->events_callback = args[3];
+ }
+ break;
+ }
+ #endif
+
+ // level: IPPROTO_TCP
+ case TCP_NODELAY: {
+ int val = mp_obj_get_int(args[3]);
+ int ret = lwip_setsockopt(self->fd, IPPROTO_TCP, opt, &val, sizeof(int));
+ if (ret != 0) {
+ mp_raise_OSError(errno);
+ }
+ break;
+ }
+
+ // level: IPPROTO_IP
+ case IP_ADD_MEMBERSHIP: {
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[3], &bufinfo, MP_BUFFER_READ);
+ if (bufinfo.len != sizeof(ip4_addr_t) * 2) {
+ mp_raise_ValueError(NULL);
+ }
+
+ // POSIX setsockopt has order: group addr, if addr, lwIP has it vice-versa
+ err_t err = igmp_joingroup((const ip4_addr_t *)bufinfo.buf + 1, bufinfo.buf);
+ if (err != ERR_OK) {
+ mp_raise_OSError(-err);
+ }
+ break;
+ }
+
+ default:
+ mp_printf(&mp_plat_print, "Warning: lwip.setsockopt() option not implemented\n");
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_setsockopt_obj, 4, 4, socket_setsockopt);
+
+void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms) {
+ // Rather than waiting for the entire timeout specified, we wait sock->retries times
+ // for SOCKET_POLL_US each, checking for a MicroPython interrupt between timeouts.
+ // with SOCKET_POLL_MS == 100ms, sock->retries allows for timeouts up to 13 years.
+ // if timeout_ms == UINT64_MAX, wait forever.
+ sock->retries = (timeout_ms == UINT64_MAX) ? UINT_MAX : timeout_ms * 1000 / SOCKET_POLL_US;
+
+ struct timeval timeout = {
+ .tv_sec = 0,
+ .tv_usec = timeout_ms ? SOCKET_POLL_US : 0
+ };
+ lwip_setsockopt(sock->fd, SOL_SOCKET, SO_SNDTIMEO, (const void *)&timeout, sizeof(timeout));
+ lwip_setsockopt(sock->fd, SOL_SOCKET, SO_RCVTIMEO, (const void *)&timeout, sizeof(timeout));
+ lwip_fcntl(sock->fd, F_SETFL, timeout_ms ? 0 : O_NONBLOCK);
+}
+
+static mp_obj_t socket_settimeout(const mp_obj_t arg0, const mp_obj_t arg1) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+ if (arg1 == mp_const_none) {
+ _socket_settimeout(self, UINT64_MAX);
+ } else {
+ #if MICROPY_PY_BUILTINS_FLOAT
+ _socket_settimeout(self, (uint64_t)(mp_obj_get_float(arg1) * MICROPY_FLOAT_CONST(1000.0)));
+ #else
+ _socket_settimeout(self, mp_obj_get_int(arg1) * 1000);
+ #endif
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_settimeout_obj, socket_settimeout);
+
+static mp_obj_t socket_setblocking(const mp_obj_t arg0, const mp_obj_t arg1) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+ if (mp_obj_is_true(arg1)) {
+ _socket_settimeout(self, UINT64_MAX);
+ } else {
+ _socket_settimeout(self, 0);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_setblocking_obj, socket_setblocking);
+
+// XXX this can end up waiting a very long time if the content is dribbled in one character
+// at a time, as the timeout resets each time a recvfrom succeeds ... this is probably not
+// good behaviour.
+static mp_uint_t _socket_read_data(mp_obj_t self_in, void *buf, size_t size,
+ struct sockaddr *from, socklen_t *from_len, int *errcode) {
+ socket_obj_t *sock = MP_OBJ_TO_PTR(self_in);
+
+ // A new socket cannot be read from.
+ if (sock->state == SOCKET_STATE_NEW) {
+ *errcode = MP_ENOTCONN;
+ return MP_STREAM_ERROR;
+ }
+
+ // If the peer closed the connection then the lwIP socket API will only return "0" once
+ // from lwip_recvfrom and then block on subsequent calls. To emulate POSIX behaviour,
+ // which continues to return "0" for each call on a closed socket, we set a flag when
+ // the peer closed the socket.
+ if (sock->state == SOCKET_STATE_PEER_CLOSED) {
+ return 0;
+ }
+
+ // XXX Would be nicer to use RTC to handle timeouts
+ for (int i = 0; i <= sock->retries; ++i) {
+ // Poll the socket to see if it has waiting data and only release the GIL if it doesn't.
+ // This ensures higher performance in the case of many small reads, eg for readline.
+ bool release_gil;
+ {
+ fd_set rfds;
+ FD_ZERO(&rfds);
+ FD_SET(sock->fd, &rfds);
+ struct timeval timeout = { .tv_sec = 0, .tv_usec = 0 };
+ int r = select(sock->fd + 1, &rfds, NULL, NULL, &timeout);
+ release_gil = r != 1;
+ }
+ if (release_gil) {
+ MP_THREAD_GIL_EXIT();
+ }
+ int r = lwip_recvfrom(sock->fd, buf, size, 0, from, from_len);
+ if (release_gil) {
+ MP_THREAD_GIL_ENTER();
+ }
+ if (r == 0) {
+ sock->state = SOCKET_STATE_PEER_CLOSED;
+ }
+ if (r >= 0) {
+ return r;
+ }
+ if (errno != EWOULDBLOCK) {
+ *errcode = errno;
+ return MP_STREAM_ERROR;
+ }
+ check_for_exceptions();
+ }
+
+ *errcode = sock->retries == 0 ? MP_EWOULDBLOCK : MP_ETIMEDOUT;
+ return MP_STREAM_ERROR;
+}
+
+mp_obj_t _socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in,
+ struct sockaddr *from, socklen_t *from_len) {
+ size_t len = mp_obj_get_int(len_in);
+ vstr_t vstr;
+ vstr_init_len(&vstr, len);
+
+ int errcode;
+ mp_uint_t ret = _socket_read_data(self_in, vstr.buf, len, from, from_len, &errcode);
+ if (ret == MP_STREAM_ERROR) {
+ mp_raise_OSError(errcode);
+ }
+
+ vstr.len = ret;
+ return mp_obj_new_bytes_from_vstr(&vstr);
+}
+
+static mp_obj_t socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
+ return _socket_recvfrom(self_in, len_in, NULL, NULL);
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_recv_obj, socket_recv);
+
+static mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
+ struct sockaddr from;
+ socklen_t fromlen = sizeof(from);
+
+ mp_obj_t tuple[2];
+ tuple[0] = _socket_recvfrom(self_in, len_in, &from, &fromlen);
+
+ uint8_t *ip = (uint8_t *)&((struct sockaddr_in *)&from)->sin_addr;
+ mp_uint_t port = lwip_ntohs(((struct sockaddr_in *)&from)->sin_port);
+ tuple[1] = netutils_format_inet_addr(ip, port, NETUTILS_BIG);
+
+ return mp_obj_new_tuple(2, tuple);
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_recvfrom_obj, socket_recvfrom);
+
+int _socket_send(socket_obj_t *sock, const char *data, size_t datalen) {
+ int sentlen = 0;
+ for (int i = 0; i <= sock->retries && sentlen < datalen; i++) {
+ MP_THREAD_GIL_EXIT();
+ int r = lwip_write(sock->fd, data + sentlen, datalen - sentlen);
+ MP_THREAD_GIL_ENTER();
+ // lwip returns EINPROGRESS when trying to send right after a non-blocking connect
+ if (r < 0 && errno != EWOULDBLOCK && errno != EINPROGRESS) {
+ mp_raise_OSError(errno);
+ }
+ if (r > 0) {
+ sentlen += r;
+ }
+ check_for_exceptions();
+ }
+ if (sentlen == 0) {
+ mp_raise_OSError(sock->retries == 0 ? MP_EWOULDBLOCK : MP_ETIMEDOUT);
+ }
+ return sentlen;
+}
+
+static mp_obj_t socket_send(const mp_obj_t arg0, const mp_obj_t arg1) {
+ socket_obj_t *sock = MP_OBJ_TO_PTR(arg0);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(arg1, &bufinfo, MP_BUFFER_READ);
+ int r = _socket_send(sock, bufinfo.buf, bufinfo.len);
+ return mp_obj_new_int(r);
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_send_obj, socket_send);
+
+static mp_obj_t socket_sendall(const mp_obj_t arg0, const mp_obj_t arg1) {
+ // XXX behaviour when nonblocking (see extmod/modlwip.c)
+ // XXX also timeout behaviour.
+ socket_obj_t *sock = MP_OBJ_TO_PTR(arg0);
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(arg1, &bufinfo, MP_BUFFER_READ);
+ int r = _socket_send(sock, bufinfo.buf, bufinfo.len);
+ if (r < bufinfo.len) {
+ mp_raise_OSError(MP_ETIMEDOUT);
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(socket_sendall_obj, socket_sendall);
+
+static mp_obj_t socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_in) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ // get the buffer to send
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(data_in, &bufinfo, MP_BUFFER_READ);
+
+ // create the destination address
+ struct sockaddr_in to;
+ to.sin_len = sizeof(to);
+ to.sin_family = AF_INET;
+ to.sin_port = lwip_htons(netutils_parse_inet_addr(addr_in, (uint8_t *)&to.sin_addr, NETUTILS_BIG));
+
+ // send the data
+ for (int i = 0; i <= self->retries; i++) {
+ MP_THREAD_GIL_EXIT();
+ int ret = lwip_sendto(self->fd, bufinfo.buf, bufinfo.len, 0, (struct sockaddr *)&to, sizeof(to));
+ MP_THREAD_GIL_ENTER();
+ if (ret > 0) {
+ return mp_obj_new_int_from_uint(ret);
+ }
+ if (ret == -1 && errno != EWOULDBLOCK) {
+ mp_raise_OSError(errno);
+ }
+ check_for_exceptions();
+ }
+ mp_raise_OSError(MP_ETIMEDOUT);
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(socket_sendto_obj, socket_sendto);
+
+static mp_obj_t socket_fileno(const mp_obj_t arg0) {
+ socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
+ return mp_obj_new_int(self->fd);
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(socket_fileno_obj, socket_fileno);
+
+static mp_obj_t socket_makefile(size_t n_args, const mp_obj_t *args) {
+ (void)n_args;
+ return args[0];
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_makefile_obj, 1, 3, socket_makefile);
+
+static mp_uint_t socket_stream_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
+ return _socket_read_data(self_in, buf, size, NULL, NULL, errcode);
+}
+
+static mp_uint_t socket_stream_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
+ socket_obj_t *sock = self_in;
+ for (int i = 0; i <= sock->retries; i++) {
+ MP_THREAD_GIL_EXIT();
+ int r = lwip_write(sock->fd, buf, size);
+ MP_THREAD_GIL_ENTER();
+ if (r > 0) {
+ return r;
+ }
+ // lwip returns MP_EINPROGRESS when trying to write right after a non-blocking connect
+ if (r < 0 && errno != EWOULDBLOCK && errno != EINPROGRESS) {
+ *errcode = errno;
+ return MP_STREAM_ERROR;
+ }
+ check_for_exceptions();
+ }
+ *errcode = sock->retries == 0 ? MP_EWOULDBLOCK : MP_ETIMEDOUT;
+ return MP_STREAM_ERROR;
+}
+
+static mp_uint_t socket_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
+ socket_obj_t *socket = self_in;
+ if (request == MP_STREAM_POLL) {
+ if (socket->fd == -1) {
+ return MP_STREAM_POLL_NVAL;
+ }
+
+ fd_set rfds;
+ FD_ZERO(&rfds);
+ fd_set wfds;
+ FD_ZERO(&wfds);
+ fd_set efds;
+ FD_ZERO(&efds);
+ struct timeval timeout = { .tv_sec = 0, .tv_usec = 0 };
+ if (arg & MP_STREAM_POLL_RD) {
+ FD_SET(socket->fd, &rfds);
+ }
+ if (arg & MP_STREAM_POLL_WR) {
+ FD_SET(socket->fd, &wfds);
+ }
+ if (arg & MP_STREAM_POLL_HUP) {
+ FD_SET(socket->fd, &efds);
+ }
+
+ int r = select((socket->fd) + 1, &rfds, &wfds, &efds, &timeout);
+ if (r < 0) {
+ *errcode = MP_EIO;
+ return MP_STREAM_ERROR;
+ }
+
+ mp_uint_t ret = 0;
+ if (FD_ISSET(socket->fd, &rfds)) {
+ ret |= MP_STREAM_POLL_RD;
+ }
+ if (FD_ISSET(socket->fd, &wfds)) {
+ ret |= MP_STREAM_POLL_WR;
+ }
+ if (FD_ISSET(socket->fd, &efds)) {
+ ret |= MP_STREAM_POLL_HUP;
+ }
+
+ // New (unconnected) sockets are writable and have HUP set.
+ if (socket->state == SOCKET_STATE_NEW) {
+ ret |= (arg & MP_STREAM_POLL_WR) | MP_STREAM_POLL_HUP;
+ }
+
+ return ret;
+ } else if (request == MP_STREAM_CLOSE) {
+ if (socket->fd >= 0) {
+ #if MICROPY_PY_SOCKET_EVENTS
+ if (socket->events_callback != MP_OBJ_NULL) {
+ socket_events_remove(socket);
+ socket->events_callback = MP_OBJ_NULL;
+ }
+ #endif
+ int ret = lwip_close(socket->fd);
+ if (ret != 0) {
+ *errcode = errno;
+ return MP_STREAM_ERROR;
+ }
+ socket->fd = -1;
+ }
+ return 0;
+ }
+
+ *errcode = MP_EINVAL;
+ return MP_STREAM_ERROR;
+}
+
+static const mp_rom_map_elem_t socket_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mp_stream_close_obj) },
+ { MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&mp_stream_close_obj) },
+ { MP_ROM_QSTR(MP_QSTR_bind), MP_ROM_PTR(&socket_bind_obj) },
+ { MP_ROM_QSTR(MP_QSTR_listen), MP_ROM_PTR(&socket_listen_obj) },
+ { MP_ROM_QSTR(MP_QSTR_accept), MP_ROM_PTR(&socket_accept_obj) },
+ { MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&socket_connect_obj) },
+ { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&socket_send_obj) },
+ { MP_ROM_QSTR(MP_QSTR_sendall), MP_ROM_PTR(&socket_sendall_obj) },
+ { MP_ROM_QSTR(MP_QSTR_sendto), MP_ROM_PTR(&socket_sendto_obj) },
+ { MP_ROM_QSTR(MP_QSTR_recv), MP_ROM_PTR(&socket_recv_obj) },
+ { MP_ROM_QSTR(MP_QSTR_recvfrom), MP_ROM_PTR(&socket_recvfrom_obj) },
+ { MP_ROM_QSTR(MP_QSTR_setsockopt), MP_ROM_PTR(&socket_setsockopt_obj) },
+ { MP_ROM_QSTR(MP_QSTR_settimeout), MP_ROM_PTR(&socket_settimeout_obj) },
+ { MP_ROM_QSTR(MP_QSTR_setblocking), MP_ROM_PTR(&socket_setblocking_obj) },
+ { MP_ROM_QSTR(MP_QSTR_makefile), MP_ROM_PTR(&socket_makefile_obj) },
+ { MP_ROM_QSTR(MP_QSTR_fileno), MP_ROM_PTR(&socket_fileno_obj) },
+
+ { MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&mp_stream_read_obj) },
+ { MP_ROM_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&mp_stream_readinto_obj) },
+ { MP_ROM_QSTR(MP_QSTR_readline), MP_ROM_PTR(&mp_stream_unbuffered_readline_obj) },
+ { MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&mp_stream_write_obj) },
+};
+static MP_DEFINE_CONST_DICT(socket_locals_dict, socket_locals_dict_table);
+
+static const mp_stream_p_t socket_stream_p = {
+ .read = socket_stream_read,
+ .write = socket_stream_write,
+ .ioctl = socket_stream_ioctl
+};
+
+static MP_DEFINE_CONST_OBJ_TYPE(
+ socket_type,
+ MP_QSTR_socket,
+ MP_TYPE_FLAG_NONE,
+ make_new, socket_make_new,
+ protocol, &socket_stream_p,
+ locals_dict, &socket_locals_dict
+ );
+
+static mp_obj_t psoc6_socket_getaddrinfo(size_t n_args, const mp_obj_t *args) {
+ struct addrinfo hints = { };
+ struct addrinfo *res = NULL;
+
+ // Optional args: family=0, type=0, proto=0, flags=0, where 0 is "least narrow"
+ if (n_args > 2) {
+ hints.ai_family = mp_obj_get_int(args[2]);
+ }
+ if (n_args > 3) {
+ hints.ai_socktype = mp_obj_get_int(args[3]);
+ }
+ if (hints.ai_socktype == 0) {
+ // This is slightly different to CPython with POSIX getaddrinfo. In
+ // CPython, calling socket.getaddrinfo() with socktype=0 returns any/all
+ // supported SocketKind values. Here, lwip_getaddrinfo() will echo
+ // whatever socktype was supplied to the caller. Rather than returning 0
+ // (invalid in a result), make it SOCK_STREAM.
+ hints.ai_socktype = SOCK_STREAM;
+ }
+ if (n_args > 4) {
+ hints.ai_protocol = mp_obj_get_int(args[4]);
+ }
+ if (n_args > 5) {
+ hints.ai_flags = mp_obj_get_int(args[5]);
+ }
+
+ _getaddrinfo_inner(args[0], args[1], &hints, &res);
+ mp_obj_t ret_list = mp_obj_new_list(0, NULL);
+
+ for (struct addrinfo *resi = res; resi; resi = resi->ai_next) {
+ mp_obj_t addrinfo_objs[5] = {
+ mp_obj_new_int(resi->ai_family),
+ mp_obj_new_int(resi->ai_socktype),
+ mp_obj_new_int(resi->ai_protocol),
+ mp_obj_new_str_from_cstr(resi->ai_canonname),
+ mp_const_none
+ };
+
+ if (resi->ai_family == AF_INET) {
+ struct sockaddr_in *addr = (struct sockaddr_in *)resi->ai_addr;
+ // This looks odd, but it's really just a u32_t
+ ip4_addr_t ip4_addr = { .addr = addr->sin_addr.s_addr };
+ char buf[16];
+ ip4addr_ntoa_r(&ip4_addr, buf, sizeof(buf));
+ mp_obj_t inaddr_objs[2] = {
+ mp_obj_new_str_from_cstr(buf),
+ mp_obj_new_int(ntohs(addr->sin_port))
+ };
+ addrinfo_objs[4] = mp_obj_new_tuple(2, inaddr_objs);
+ }
+ mp_obj_list_append(ret_list, mp_obj_new_tuple(5, addrinfo_objs));
+ }
+
+ lwip_freeaddrinfo(res);
+ return ret_list;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_socket_getaddrinfo_obj, 2, 6, psoc6_socket_getaddrinfo);
+
+static mp_obj_t psoc6_socket_initialize() {
+ static int initialized = 0;
+ if (!initialized) {
+ cy_network_init();
+
+ initialized = 1;
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_0(psoc6_socket_initialize_obj, psoc6_socket_initialize);
+
+static const mp_rom_map_elem_t mp_module_socket_globals_table[] = {
+ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_socket) },
+ { MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&psoc6_socket_initialize_obj) },
+ { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&socket_type) },
+ { MP_ROM_QSTR(MP_QSTR_getaddrinfo), MP_ROM_PTR(&psoc6_socket_getaddrinfo_obj) },
+
+ { MP_ROM_QSTR(MP_QSTR_AF_INET), MP_ROM_INT(AF_INET) },
+ { MP_ROM_QSTR(MP_QSTR_AF_INET6), MP_ROM_INT(AF_INET6) },
+ { MP_ROM_QSTR(MP_QSTR_SOCK_STREAM), MP_ROM_INT(SOCK_STREAM) },
+ { MP_ROM_QSTR(MP_QSTR_SOCK_DGRAM), MP_ROM_INT(SOCK_DGRAM) },
+ { MP_ROM_QSTR(MP_QSTR_SOCK_RAW), MP_ROM_INT(SOCK_RAW) },
+ { MP_ROM_QSTR(MP_QSTR_IPPROTO_TCP), MP_ROM_INT(IPPROTO_TCP) },
+ { MP_ROM_QSTR(MP_QSTR_IPPROTO_UDP), MP_ROM_INT(IPPROTO_UDP) },
+ { MP_ROM_QSTR(MP_QSTR_IPPROTO_IP), MP_ROM_INT(IPPROTO_IP) },
+ { MP_ROM_QSTR(MP_QSTR_SOL_SOCKET), MP_ROM_INT(SOL_SOCKET) },
+ { MP_ROM_QSTR(MP_QSTR_SO_REUSEADDR), MP_ROM_INT(SO_REUSEADDR) },
+ { MP_ROM_QSTR(MP_QSTR_SO_BROADCAST), MP_ROM_INT(SO_BROADCAST) },
+ { MP_ROM_QSTR(MP_QSTR_SO_BINDTODEVICE), MP_ROM_INT(SO_BINDTODEVICE) },
+ { MP_ROM_QSTR(MP_QSTR_IP_ADD_MEMBERSHIP), MP_ROM_INT(IP_ADD_MEMBERSHIP) },
+ { MP_ROM_QSTR(MP_QSTR_TCP_NODELAY), MP_ROM_INT(TCP_NODELAY) },
+};
+
+static MP_DEFINE_CONST_DICT(mp_module_socket_globals, mp_module_socket_globals_table);
+
+const mp_obj_module_t mp_module_socket = {
+ .base = { &mp_type_module },
+ .globals = (mp_obj_dict_t *)&mp_module_socket_globals,
+};
+
+// Note: This port doesn't define MICROPY_PY_SOCKET or MICROPY_PY_LWIP so
+// this will not conflict with the common implementation provided by
+// extmod/mod{lwip,socket}.c.
+MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_socket, mp_module_socket);
diff --git a/ports/psoc6/modtime.c b/ports/psoc6/modtime.c
new file mode 100644
index 0000000000000..ea8f20e33069a
--- /dev/null
+++ b/ports/psoc6/modtime.c
@@ -0,0 +1,102 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013-2021 Damien P. George
+ * Copyright (c) 2023-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include "stdio.h"
+
+// micropython includes
+#include "extmod/modtime.h"
+#include "py/runtime.h"
+#include "shared/timeutils/timeutils.h"
+
+// MTB includes
+#include "cyhal.h"
+
+// object defined in rtc.c
+extern cyhal_rtc_t psoc6_rtc;
+
+cyhal_timer_t psoc6_timer;
+
+void time_init(void) {
+ const cyhal_timer_cfg_t timer_cfg =
+ {
+ .compare_value = 0, /* Timer compare value, not used */
+ .period = 15000000, /* Timer period set to a large enough value */
+ /* compared to event being measured */
+ .direction = CYHAL_TIMER_DIR_UP, /* Timer counts up */
+ .is_compare = false, /* Don't use compare mode */
+ .is_continuous = true, /* Run timer indefinitely */
+ .value = 0 /* Initial value of counter */
+ };
+ /* Initialize the timer object. Does not use pin output ('pin' is NC) and
+ * does not use a pre-configured clock source ('clk' is NULL). */
+ cyhal_timer_init(&psoc6_timer, NC, NULL);
+ /* Apply timer configuration such as period, count direction, run mode, etc. */
+ cyhal_timer_configure(&psoc6_timer, &timer_cfg);
+ /* Set the frequency of timer to 1 MHz */
+ cyhal_timer_set_frequency(&psoc6_timer, 1000000);
+ /* Start the timer with the configured settings */
+ cyhal_timer_start(&psoc6_timer);
+}
+
+void time_deinit(void) {
+ cyhal_timer_stop(&psoc6_timer);
+}
+
+// Convert a time expressed in seconds since the Epoch into an 8-tuple which
+// contains: (year, month, mday, hour, minute, second, weekday, yearday)
+static void mp_time_localtime_get(timeutils_struct_time_t *time) {
+ struct tm current_date_time = {0};
+ cy_rslt_t result = cyhal_rtc_read(&psoc6_rtc, ¤t_date_time);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cyhal_rtc_read failed !"));
+ }
+
+ time->tm_year = current_date_time.tm_year;
+ time->tm_mon = current_date_time.tm_mon;
+ time->tm_mday = current_date_time.tm_mday;
+ time->tm_hour = current_date_time.tm_hour;
+ time->tm_min = current_date_time.tm_min;
+ time->tm_sec = current_date_time.tm_sec;
+ time->tm_wday = current_date_time.tm_wday;
+ time->tm_yday = timeutils_year_day(current_date_time.tm_year, current_date_time.tm_mon, current_date_time.tm_mday);
+}
+
+// time()
+// Return the number of seconds since the Epoch.
+static mp_obj_t mp_time_time_get(void) {
+ struct tm current_date_time = {0};
+ cy_rslt_t result = cyhal_rtc_read(&psoc6_rtc, ¤t_date_time);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cyhal_rtc_read failed !"));
+ }
+
+ return timeutils_obj_from_timestamp(timeutils_seconds_since_epoch(current_date_time.tm_year, current_date_time.tm_mon, current_date_time.tm_mday,
+ current_date_time.tm_hour, current_date_time.tm_min, current_date_time.tm_sec));
+}
diff --git a/ports/psoc6/mpconfigport.h b/ports/psoc6/mpconfigport.h
new file mode 100644
index 0000000000000..a1314c63f3c7a
--- /dev/null
+++ b/ports/psoc6/mpconfigport.h
@@ -0,0 +1,235 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// Options controlling how MicroPython is built, overriding defaults in py/mpconfig.h
+#include
+#include
+
+#include "shared/runtime/interrupt_char.h"
+#include "mpconfigboard.h"
+
+// Control over Python builtins
+#define MICROPY_PY_IO_BUFFEREDWRITER (1)
+#define MICROPY_PY_SELECT (1)
+#define MICROPY_PY_IO (1)
+#define MICROPY_PY_IO_IOBASE (1)
+#define MICROPY_PY_BINASCII (1)
+#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
+#define MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE (1)
+#define MICROPY_STACK_CHECK (1)
+#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
+#define MICROPY_PY_ARRAY (1)
+
+// Board and hardware specific configuration
+#define MICROPY_HELPER_REPL (1)
+#define MICROPY_HW_ENABLE_UART_REPL (0) // useful if there is no USB
+#define MICROPY_HW_ENABLE_USBDEV (0)
+
+#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_FULL_FEATURES)
+
+// Memory allocation policies
+// #define MICROPY_GC_STACK_ENTRY_TYPE uint16_t
+#define MICROPY_GC_STACK_ENTRY_TYPE uint32_t
+#define MICROPY_ENABLE_GC (1)
+#define MICROPY_ENABLE_FINALISER (1)
+
+
+
+#define MICROPY_MEM_STATS (1)
+#define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1)
+#define MICROPY_TRACKED_ALLOC (MICROPY_SSL_MBEDTLS)
+#define MICROPY_QSTR_BYTES_IN_HASH (1)
+
+// MicroPython emitters
+#define MICROPY_PERSISTENT_CODE_LOAD (1)
+#define MICROPY_EMIT_THUMB (1)
+#define MICROPY_EMIT_THUMB_ARMV7M (1)
+#define MICROPY_EMIT_INLINE_THUMB (1)
+#define MICROPY_EMIT_INLINE_THUMB_FLOAT (1)
+#define MICROPY_EMIT_ARM (0)
+
+// Optimisations
+#define MICROPY_OPT_COMPUTED_GOTO (0)
+
+// Python internal features
+#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1)
+
+#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
+#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT)
+// #define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
+
+#define MICROPY_SCHEDULER_DEPTH (8)
+#define MICROPY_SCHEDULER_STATIC_NODES (1)
+// #define MICROPY_ENABLE_SCHEDULER (1)
+
+// Fine control over Python builtins, classes, modules, etc
+#define MICROPY_PY_SYS_PLATFORM "psoc6"
+#define MICROPY_PY_SYS_EXC_INFO (1)
+
+#define MICROPY_PY_THREAD (0)
+// #define MICROPY_PY_THREAD_GIL (0)
+
+// Extended modules
+#define MICROPY_EPOCH_IS_1970 (1)
+
+#define MICROPY_PY_OS_INCLUDEFILE "ports/psoc6/modos.c"
+#define MICROPY_PY_OS_UNAME (1)
+#define MICROPY_PY_OS_URANDOM (0)
+#define MICROPY_PY_OS_GETENV_PUTENV_UNSETENV (1)
+#define MICROPY_PY_OS_SYSTEM (1)
+#define MICROPY_PY_OS_ERRNO (1)
+
+#define MICROPY_PY_RE_MATCH_GROUPS (1)
+#define MICROPY_PY_RE_MATCH_SPAN_START_END (1)
+#define MICROPY_PY_RE_DEBUG (1)
+
+#define MICROPY_PY_TIME_GMTIME_LOCALTIME_MKTIME (1)
+#define MICROPY_PY_TIME_TIME_TIME_NS (1)
+#define MICROPY_PY_TIME_INCLUDEFILE "ports/psoc6/modtime.c"
+#define MICROPY_PY_MACHINE_FREQ_NUM_ARGS_MAX (2)
+
+#define MICROPY_PY_MACHINE (1)
+#define MICROPY_PY_MACHINE_RESET (1)
+#define MICROPY_PY_MACHINE_INCLUDEFILE "ports/psoc6/modmachine.c"
+#define MICROPY_PY_MACHINE_BARE_METAL_FUNCS (1)
+#define MICROPY_PY_MACHINE_BOOTLOADER (0)
+#define MICROPY_PY_MACHINE_DISABLE_IRQ_ENABLE_IRQ (0)
+#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
+#define MICROPY_PY_MACHINE_PWM (1)
+#define MICROPY_PY_MACHINE_PWM_INCLUDEFILE "ports/psoc6/machine_pwm.c"
+#define MICROPY_PY_MACHINE_I2C (1)
+#define MICROPY_PY_MACHINE_I2C_SLAVE (1)
+#define MICROPY_PY_MACHINE_SOFTI2C (1)
+#define MICROPY_PY_MACHINE_BITSTREAM (1)
+#define MICROPY_PY_MACHINE_WDT (1)
+#define MICROPY_PY_MACHINE_WDT_INCLUDEFILE "ports/psoc6/machine_wdt.c"
+
+#define MICROPY_PY_MACHINE_SPI (1)
+#define MICROPY_PY_MACHINE_SPI_MSB (0)
+#define MICROPY_PY_MACHINE_SPI_LSB (1)
+#define MICROPY_PY_MACHINE_SOFTSPI (0)
+#if MICROPY_PY_MACHINE_SPI_SLAVE
+#define MICROPY_PY_MACHINE_SPISLAVE_MSB (0)
+#define MICROPY_PY_MACHINE_SPISLAVE_LSB (1)
+#endif
+
+#define MICROPY_PY_MACHINE_I2S (1)
+#define MICROPY_PY_MACHINE_I2S_MCK (0)
+#define MICROPY_PY_MACHINE_I2S_CONSTANT_RX (RX)
+#define MICROPY_PY_MACHINE_I2S_CONSTANT_TX (TX)
+#define MICROPY_PY_MACHINE_I2S_RING_BUF (1)
+#define MICROPY_PY_MACHINE_I2S_FINALISER (1)
+#define MICROPY_PY_MACHINE_UART (1)
+#define MICROPY_PY_MACHINE_UART_INCLUDEFILE "ports/psoc6/machine_uart.c"
+#define MICROPY_PY_MACHINE_UART_READCHAR_WRITECHAR (1)
+#define MICROPY_PY_MACHINE_UART_SENDBREAK (1)
+#define MICROPY_PY_MACHINE_UART_IRQ (1)
+
+#define MICROPY_PY_MACHINE_PSOC6_I2S (1)
+#define MICROPY_PY_MACHINE_I2S_INCLUDEFILE "ports/psoc6/machine_i2s.c"
+
+#define MICROPY_PY_MACHINE_PDM_PCM (1)
+#define MICROPY_PY_MACHINE_PDM_PCM_RING_BUF (1)
+
+#define MICROPY_TIME_SUPPORT_Y1969_AND_BEFORE (1)
+
+#define MICROPY_PY_MACHINE_PULSE (1)
+// VFS
+#define MICROPY_VFS (1)
+#define MICROPY_READER_VFS (1)
+
+// fatfs configuration
+#define MICROPY_FATFS_ENABLE_LFN (1)
+#define MICROPY_FATFS_LFN_CODE_PAGE 437 /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */
+#define MICROPY_FATFS_RPATH (2)
+
+#define MICROPY_PY_CRYPTOLIB (MICROPY_PY_SSL)
+#define MICROPY_PY_CRYPTOLIB_CTR (MICROPY_PY_SSL)
+#define MICROPY_PY_CRYPTOLIB_CONSTS (MICROPY_PY_SSL)
+
+#define MICROPY_PY_SSL_DTLS (0)
+#define MP_STATE_PORT MP_STATE_VM
+
+// By default networking should include sockets, ssl, websockets, webrepl
+
+#if MICROPY_PY_NETWORK
+
+#define MICROPY_PY_SOCKET (0)
+#define MICROPY_PY_WEBSOCKET (1)
+#define MICROPY_PY_WEBREPL (1)
+#define MICROPY_PY_OS_DUPTERM (1)
+
+extern const struct _mp_obj_type_t mp_network_ifx_wcm_type;
+#define MICROPY_HW_NIC_IFX_WCM \
+ { MP_ROM_QSTR(MP_QSTR_WLAN), MP_ROM_PTR(&mp_network_ifx_wcm_type) },
+
+#define MICROPY_PORT_NETWORK_INTERFACES \
+ MICROPY_HW_NIC_IFX_WCM
+
+#endif
+
+// Miscellaneous settings
+#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void *)((mp_uint_t)(p) | 1))
+
+#define MP_SSIZE_MAX (0x7fffffff)
+typedef intptr_t mp_int_t; // must be pointer size
+typedef uintptr_t mp_uint_t; // must be pointer size
+typedef intptr_t mp_off_t;
+
+
+#define MICROPY_PY_BUILTINS_HELP_TEXT psoc6_help_text
+#define MICROPY_USE_INTERNAL_PRINTF (0)
+#define MICROPY_REPL_INFO (1)
+
+// TODO: helpful to abstract main.c ?
+// #define MICROPY_PORT_INIT_FUNC ??
+
+extern void machine_deinit();
+#define MICROPY_PORT_DEINIT_FUNC machine_deinit()
+
+#define MICROPY_EVENT_POLL_HOOK_FAST \
+ do { \
+ extern void mp_handle_pending(bool); \
+ mp_handle_pending(true); \
+ } while (0);
+
+
+#define MICROPY_EVENT_POLL_HOOK \
+ do { \
+ MICROPY_EVENT_POLL_HOOK_FAST; \
+ } while (0);
+
+// best_effort_wfe_or_timeout(make_timeout_time_ms(1));
+
+
+#define MICROPY_LOGGER_DEBUG (0)
+
+// extern void lwip_lock_acquire(void);
+// extern void lwip_lock_release(void);
+
+// #define MICROPY_PY_LWIP_ENTER lwip_lock_acquire();
+// #define MICROPY_PY_LWIP_REENTER lwip_lock_acquire();
+// #define MICROPY_PY_LWIP_EXIT lwip_lock_release();
diff --git a/ports/psoc6/mpconfigport.mk b/ports/psoc6/mpconfigport.mk
new file mode 100644
index 0000000000000..45484e4c67a76
--- /dev/null
+++ b/ports/psoc6/mpconfigport.mk
@@ -0,0 +1 @@
+MICROPY_VFS_LFS2=1
diff --git a/ports/psoc6/mphalport.c b/ports/psoc6/mphalport.c
new file mode 100644
index 0000000000000..0a9e21432a0f2
--- /dev/null
+++ b/ports/psoc6/mphalport.c
@@ -0,0 +1,176 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include "stdbool.h" // because of missing include in shared/timeutils/timeutils.h
+#include "stdio.h"
+
+
+// micropython includes
+#include "mpconfigport.h"
+#include "mphalport.h"
+
+#include "py/runtime.h"
+#include "shared/timeutils/timeutils.h"
+
+// MTB includes
+#include "cyhal.h"
+#include "cy_retarget_io.h"
+
+
+// port-specific includes
+#include "machine_pin_phy.h"
+
+extern cyhal_rtc_t psoc6_rtc;
+extern cyhal_timer_t psoc6_timer;
+
+void mp_hal_delay_ms(mp_uint_t ms) {
+ #if defined(CY_RTOS_AWARE) || defined(COMPONENT_RTOS_AWARE)
+ // Check
+ // file: mtb-hal-cat1/src/cyhal_system.c
+ // function: cyhal_system_delay_ms()
+ // lines 65-68
+ // for an explanation.
+
+ // An increment of 1 ms is added to the delay. In principle
+ // that should be corrected by some internal behaviour or RTOS
+ // but it does not seem to work like this, as we are always
+ // getting one more second in our Test 1 of tests/psoc/time.py.
+
+ // TODO: Find if there is a more elegant way to avoid the RTOS
+ // configuration to propagate to this level.
+ ms -= 1;
+ #endif
+ cyhal_system_delay_ms(ms);
+}
+
+
+void mp_hal_delay_us(mp_uint_t us) {
+ cyhal_system_delay_us(us);
+}
+
+
+// Issues may arise if time is incremented only each second.
+// Would require proper ns count from epoch of clock the source (see also "extmod/vfs_lfs.c", function "lfs_get_mtime" and "mphalport.c", function "mp_hal_time_ns")
+uint64_t mp_hal_time_ns(void) {
+ struct tm current_date_time = {0};
+ cy_rslt_t result = cyhal_rtc_read(&psoc6_rtc, ¤t_date_time);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cyhal_rtc_read failed !"));
+ }
+
+ uint64_t s = timeutils_seconds_since_epoch(current_date_time.tm_year, current_date_time.tm_mon, current_date_time.tm_mday,
+ current_date_time.tm_hour, current_date_time.tm_min, current_date_time.tm_sec);
+
+ // add ticks to make sure time is strictly monotonic
+ return s * 1000000000ULL + cyhal_timer_read(&psoc6_timer) * 1000ULL;
+}
+
+
+mp_uint_t mp_hal_ticks_ms(void) {
+ return cyhal_timer_read(&psoc6_timer) / 1000;
+}
+
+
+mp_uint_t mp_hal_ticks_us(void) {
+ return cyhal_timer_read(&psoc6_timer);
+}
+
+
+mp_uint_t mp_hal_ticks_cpu(void) {
+ return cyhal_timer_read(&psoc6_timer);
+}
+
+
+uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
+ printf("mp_hal_stdio_poll\n");
+ mp_raise_NotImplementedError(MP_ERROR_TEXT("mp_hal_stdio_poll not implemented !"));
+ uintptr_t ret = 0;
+ return ret;
+}
+
+// Send string of given length
+void mp_hal_stdout_tx_strn(const char *str, mp_uint_t len) {
+ int r = write(STDOUT_FILENO, str, len);
+ (void)r;
+}
+
+int mp_hal_stdin_rx_chr(void) {
+ for (;;) {
+ uint8_t c = 0;
+ cy_rslt_t result;
+ result = cyhal_uart_getc(&cy_retarget_io_uart_obj, &c, 1);
+ if (result == CY_RSLT_SUCCESS) {
+ return c;
+ }
+ MICROPY_EVENT_POLL_HOOK
+ }
+}
+
+void mp_hal_pin_od_low(mp_hal_pin_obj_t pin) {
+ cyhal_gpio_write(pin, false);
+}
+
+
+void mp_hal_pin_od_high(mp_hal_pin_obj_t pin) {
+ cyhal_gpio_write(pin, true);
+}
+
+int mp_hal_pin_read(mp_hal_pin_obj_t pin) {
+ return cyhal_gpio_read(pin);
+}
+
+
+void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin) {
+ cyhal_gpio_configure(pin, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_OPENDRAINDRIVESLOW);
+}
+
+
+uint8_t mp_hal_pin_name(mp_hal_pin_obj_t pin) {
+ return pin;
+}
+
+void mp_hal_pin_write(mp_hal_pin_obj_t pin, uint8_t polarity) {
+ if (polarity == 1) {
+ cyhal_gpio_write(pin, true);
+ } else {
+ cyhal_gpio_write(pin, false);
+ }
+}
+
+void mp_hal_pin_output(mp_hal_pin_obj_t pin) {
+ cyhal_gpio_configure(pin, CYHAL_GPIO_DIR_OUTPUT, CYHAL_GPIO_DRIVE_NONE);
+}
+
+void mp_hal_pin_input(mp_hal_pin_obj_t pin) {
+ cyhal_gpio_configure(pin, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_NONE);
+}
+
+
+mp_hal_pin_obj_t mp_hal_get_pin_obj(mp_obj_t obj) {
+ return pin_addr_by_name(obj);
+}
diff --git a/ports/psoc6/mphalport.h b/ports/psoc6/mphalport.h
new file mode 100644
index 0000000000000..aaf7d992d7027
--- /dev/null
+++ b/ports/psoc6/mphalport.h
@@ -0,0 +1,97 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+
+// micropython includes
+#include "py/mpconfig.h"
+#include "py/runtime.h"
+
+
+// MTB includes
+#include "cyhal.h"
+
+
+// port-specific includes
+
+#define MICROPY_BEGIN_ATOMIC_SECTION() cyhal_system_critical_section_enter()
+#define MICROPY_END_ATOMIC_SECTION(state) cyhal_system_critical_section_exit(state)
+
+// #define MICROPY_BEGIN_ATOMIC_SECTION() (0)
+// #define MICROPY_END_ATOMIC_SECTION(state) {(void)state;}
+
+#define MP_HAL_PIN_FMT "%u"
+#define mp_hal_pin_obj_t uint
+
+#define mp_hal_delay_us_fast mp_hal_delay_us
+
+
+extern __attribute__((weak)) int _write(int fd, const char *ptr, int len);
+
+
+void mp_hal_delay_us(mp_uint_t us);
+void mp_hal_delay_us_fast(mp_uint_t us);
+void mp_hal_delay_ms(mp_uint_t ms);
+
+uint64_t mp_hal_time_ns(void);
+
+mp_uint_t mp_hal_ticks_us(void);
+mp_uint_t mp_hal_ticks_ms(void);
+mp_uint_t mp_hal_ticks_cpu(void);
+
+
+void mp_hal_pin_od_low(mp_hal_pin_obj_t pin);
+void mp_hal_pin_od_high(mp_hal_pin_obj_t pin);
+void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin);
+
+
+int mp_hal_pin_read(mp_hal_pin_obj_t pin);
+uint8_t mp_hal_pin_name(mp_hal_pin_obj_t pin);
+mp_hal_pin_obj_t mp_hal_get_pin_obj(mp_obj_t obj);
+
+void mp_hal_pin_write(mp_hal_pin_obj_t pin, uint8_t polarity);
+void mp_hal_pin_output(mp_hal_pin_obj_t pin);
+void mp_hal_pin_input(mp_hal_pin_obj_t pin);
+
+uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags);
+
+int mp_hal_stdin_rx_chr(void);
+
+static inline mp_uint_t mp_hal_get_cpu_freq(void) {
+ return Cy_SysClk_ClkFastGetFrequency();
+}
+
+static inline void mp_hal_pin_config(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, uint32_t alt) {
+ printf("mp_hal_pin_config %d mode : %ld pull : %ld alt : %ld\n", pin, mode, pull, alt);
+ cyhal_gpio_configure(pin, mode, pull);
+
+ // assert((mode == MP_HAL_PIN_MODE_INPUT || mode == MP_HAL_PIN_MODE_OUTPUT) && alt == 0);
+ // gpio_set_dir(pin, mode);
+ // gpio_set_pulls(pin, pull == MP_HAL_PIN_PULL_UP, pull == MP_HAL_PIN_PULL_DOWN);
+}
diff --git a/ports/psoc6/mplogger.h b/ports/psoc6/mplogger.h
new file mode 100644
index 0000000000000..bf43dcc987e1a
--- /dev/null
+++ b/ports/psoc6/mplogger.h
@@ -0,0 +1,36 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013, 2014 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+
+// Logger module to pass messages to console.
+
+
+// macro to pipe debug messages to console in LOGGER DEBUG MODE
+// TODO: Since this is an expensive function call when LOGGER DEBUG mode is not activated,
+// a rework of this function needed similar to MPY's built-in debug message handler DEBUG_print()
+#define mplogger_print(...) \
+ do { if (MICROPY_LOGGER_DEBUG) mp_printf(&mp_plat_print, __VA_ARGS__); } while (0)
diff --git a/ports/psoc6/network_ifx_wcm.c b/ports/psoc6/network_ifx_wcm.c
new file mode 100644
index 0000000000000..7a1117dc5d395
--- /dev/null
+++ b/ports/psoc6/network_ifx_wcm.c
@@ -0,0 +1,846 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2018-2019 Damien P. George
+ * Copyright (c) 2023 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+#include
+#include
+#include "py/runtime.h"
+#include "py/objstr.h"
+#include "py/mphal.h"
+
+#if MICROPY_PY_NETWORK_IFX_WCM
+
+#include "lwip/netif.h"
+#include "lwip/dns.h"
+#include "whd.h"
+#include "whd_network_types.h"
+#include "whd_wlioctl.h"
+#include "network_ifx_wcm.h"
+#include "whd_wifi_api.h"
+#include "extmod/modnetwork.h"
+#include "cy_wcm.h"
+#include "cy_nw_helper.h"
+#include "mplogger.h"
+
+#include "FreeRTOS.h"
+#include "shared/netutils/netutils.h"
+
+extern uint8_t cy_wcm_is_ap_up();
+
+#define NETWORK_WLAN_DEFAULT_SSID "mpy-psoc6-wlan"
+#define NETWORK_WLAN_DEFAULT_PASSWORD "mpy_PSOC6_w3lc0me!"
+#define NETWORK_WLAN_DEFAULT_SECURITY CY_WCM_SECURITY_WPA2_AES_PSK
+#define NETWORK_WLAN_DEFAULT_CHANNEL 9
+
+#define NETWORK_WLAN_AP_IP "192.168.0.1"
+#define NETWORK_WLAN_AP_GATEWAY_IP "192.168.0.1"
+#define NETWORK_WLAN_AP_NETMASK_IP "255.255.255.0"
+
+#define NETWORK_WLAN_MAX_AP_STATIONS 8
+
+#define NET_IFX_WCM_SEC_OPEN 0
+#define NET_IFX_WCM_SEC_WEP 1
+#define NET_IFX_WCM_SEC_WPA 2
+#define NET_IFX_WCM_SEC_WPA2 3
+#define NET_IFX_WCM_SEC_WPA_WPA2 4
+#define NET_IFX_WCM_SEC_WPA3 5
+#define NET_IFX_WCM_SEC_UNKNOWN 6
+
+typedef struct
+{
+ cy_wcm_ap_config_t ap_config;
+} network_ifx_wcm_ap_obj_t;
+
+typedef struct
+{
+ cy_wcm_associated_ap_info_t ap_info;
+ uint8_t connect_retries;
+} network_ifx_wcm_sta_obj_t;
+
+typedef union {
+ network_ifx_wcm_ap_obj_t ap_obj;
+ network_ifx_wcm_sta_obj_t sta_obj;
+} itf_obj_t;
+
+typedef struct _network_ifx_wcm_obj_t {
+ mp_obj_base_t base;
+ cy_wcm_interface_t itf;
+ itf_obj_t itf_obj;
+ cy_wcm_ip_setting_t ip_config;
+} network_ifx_wcm_obj_t;
+
+#define MAX_WHD_INTERFACE (2)
+
+extern whd_interface_t whd_ifs[MAX_WHD_INTERFACE];
+
+static network_ifx_wcm_obj_t network_ifx_wcm_wl_sta = { { &mp_network_ifx_wcm_type }, CY_WCM_INTERFACE_TYPE_STA };
+static network_ifx_wcm_obj_t network_ifx_wcm_wl_ap = { { &mp_network_ifx_wcm_type }, CY_WCM_INTERFACE_TYPE_AP };
+
+#define wcm_get_ap_conf_ptr(net_obj) & (net_obj.itf_obj.ap_obj.ap_config)
+#define wcm_get_sta_conf_ptr(net_obj) & (net_obj.itf_obj.sta_obj)
+#define wcm_get_sta_ap_info_ptr(net_obj) & (net_obj.itf_obj.sta_obj.ap_info)
+
+#define wcm_assert_raise(msg, ret) if (ret != CY_RSLT_SUCCESS) { \
+ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \
+}
+
+void network_deinit(void) {
+ cy_rslt_t ret = cy_wcm_deinit();
+ wcm_assert_raise("network deinit error (code: %d)", ret);
+}
+
+// Network Access Point initialization with default network parameters
+void network_ap_init() {
+ cy_rslt_t ret = CY_RSLT_SUCCESS;
+ cy_wcm_ap_config_t *ap_conf = wcm_get_ap_conf_ptr(network_ifx_wcm_wl_ap);
+ cy_wcm_ip_setting_t *ap_ip_settings = &(ap_conf->ip_settings);
+
+ ap_conf->channel = NETWORK_WLAN_DEFAULT_CHANNEL;
+ memcpy(ap_conf->ap_credentials.SSID, NETWORK_WLAN_DEFAULT_SSID, strlen(NETWORK_WLAN_DEFAULT_SSID) + 1);
+ memcpy(ap_conf->ap_credentials.password, NETWORK_WLAN_DEFAULT_PASSWORD, strlen(NETWORK_WLAN_DEFAULT_PASSWORD) + 1);
+ ap_conf->ap_credentials.security = NETWORK_WLAN_DEFAULT_SECURITY;
+
+ cy_wcm_set_ap_ip_setting(ap_ip_settings, NETWORK_WLAN_AP_IP, NETWORK_WLAN_AP_NETMASK_IP, NETWORK_WLAN_AP_GATEWAY_IP, CY_WCM_IP_VER_V4);
+ wcm_assert_raise("network ap ip setting error (code: %d)", ret);
+}
+
+static void restart_ap(cy_wcm_ap_config_t *ap_conf) {
+ if (cy_wcm_is_ap_up()) {
+ uint32_t ret = cy_wcm_stop_ap();
+ wcm_assert_raise("network ap deactivate error (with code: %d)", ret);
+ ret = cy_wcm_start_ap(ap_conf);
+ wcm_assert_raise("network ap active error (with code: %d)", ret);
+ }
+}
+
+void network_sta_init() {
+ network_ifx_wcm_sta_obj_t *sta_conf = wcm_get_sta_conf_ptr(network_ifx_wcm_wl_sta);
+ sta_conf->connect_retries = 3; // Default connect retries
+}
+
+// Network Initialization function (called from main.c)
+void network_init(void) {
+ cy_rslt_t ret = CY_RSLT_SUCCESS;
+ cy_wcm_config_t wcm_config = { .interface = CY_WCM_INTERFACE_TYPE_AP_STA };
+
+ ret = cy_wcm_init(&wcm_config);
+ wcm_assert_raise("network init error (code: %d)", ret);
+
+ network_ap_init();
+ network_sta_init();
+}
+
+// Print after constructor invoked
+static void network_ifx_wcm_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ const char *status_str;
+ if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ if (cy_wcm_is_connected_to_ap()) {
+ status_str = "joined";
+ } else {
+ status_str = "down";
+ }
+ } else {
+ if (cy_wcm_is_ap_up()) {
+ status_str = "up";
+ } else {
+ status_str = "down";
+ }
+ }
+
+ cy_wcm_ip_address_t ip_address;
+ cy_rslt_t ret = cy_wcm_get_ip_addr(self->itf, &ip_address);
+ if (ret != CY_RSLT_SUCCESS) {
+ ip_address.ip.v4 = 0;
+ }
+
+ mp_printf(print, "",
+ self->itf == CY_WCM_INTERFACE_TYPE_STA ? "STA" : "AP",
+ status_str,
+ ip_address.ip.v4 & 0xff,
+ ip_address.ip.v4 >> 8 & 0xff,
+ ip_address.ip.v4 >> 16 & 0xff,
+ ip_address.ip.v4 >> 24
+ );
+}
+
+static mp_obj_t network_ifx_wcm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
+ mp_arg_check_num(n_args, n_kw, 0, 1, false);
+
+ if (n_args == 0 || mp_obj_get_int(args[0]) == MOD_NETWORK_STA_IF) {
+ return MP_OBJ_FROM_PTR(&network_ifx_wcm_wl_sta);
+ } else {
+ return MP_OBJ_FROM_PTR(&network_ifx_wcm_wl_ap);
+ }
+ return mp_const_none;
+}
+
+/*******************************************************************************/
+// network API
+
+static mp_obj_t network_ifx_wcm_deinit(mp_obj_t self_in) {
+ network_deinit();
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(network_ifx_wcm_deinit_obj, network_ifx_wcm_deinit);
+
+static mp_obj_t network_ifx_wcm_active(size_t n_args, const mp_obj_t *args) {
+ cy_rslt_t ret = CY_RSLT_SUCCESS;
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ if (n_args == 1) {
+ return mp_obj_new_bool(cy_wcm_is_connected_to_ap());
+ }
+ } else if (self->itf == CY_WCM_INTERFACE_TYPE_AP) {
+ if (n_args == 1) {
+ return mp_obj_new_bool(cy_wcm_is_ap_up());
+ } else {
+ if (mp_obj_is_true(args[1])) {
+ cy_wcm_ap_config_t *ap_conf = wcm_get_ap_conf_ptr(network_ifx_wcm_wl_ap);
+ ret = cy_wcm_start_ap(ap_conf);
+ wcm_assert_raise("network ap active error (with code: %d)", ret);
+ } else {
+ ret = cy_wcm_stop_ap();
+ wcm_assert_raise("network ap deactivate error (with code: %d)", ret);
+ }
+ }
+ }
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(network_ifx_wcm_active_obj, 1, 2, network_ifx_wcm_active);
+
+typedef struct
+{
+ mp_obj_t *scan_list;
+ cy_wcm_scan_status_t status;
+}scan_user_data_t;
+
+// Based on the scan result, get micropython defined equivalent security type (possible value 0-4, extended till 7 to include all cases) and security string (mapped to IFX stack)
+uint8_t get_mpy_security_type(cy_wcm_security_t wcm_sec) {
+ uint8_t mpy_sec_type = NET_IFX_WCM_SEC_UNKNOWN;
+
+ switch (wcm_sec)
+ {
+ case CY_WCM_SECURITY_OPEN:
+ mpy_sec_type = NET_IFX_WCM_SEC_OPEN;
+ break;
+ case CY_WCM_SECURITY_WEP_PSK:
+ case CY_WCM_SECURITY_WEP_SHARED:
+ case CY_WCM_SECURITY_IBSS_OPEN:
+ mpy_sec_type = NET_IFX_WCM_SEC_WEP;
+ break;
+ case CY_WCM_SECURITY_WPA_AES_PSK:
+ case CY_WCM_SECURITY_WPA_MIXED_PSK:
+ case CY_WCM_SECURITY_WPA_TKIP_PSK:
+ case CY_WCM_SECURITY_WPA_TKIP_ENT:
+ case CY_WCM_SECURITY_WPA_AES_ENT:
+ case CY_WCM_SECURITY_WPA_MIXED_ENT:
+ mpy_sec_type = NET_IFX_WCM_SEC_WPA;
+ break;
+ case CY_WCM_SECURITY_WPA2_AES_PSK:
+ case CY_WCM_SECURITY_WPA2_TKIP_PSK:
+ case CY_WCM_SECURITY_WPA2_MIXED_PSK:
+ case CY_WCM_SECURITY_WPA2_FBT_PSK:
+ case CY_WCM_SECURITY_WPA2_TKIP_ENT:
+ case CY_WCM_SECURITY_WPA2_AES_ENT:
+ case CY_WCM_SECURITY_WPA2_MIXED_ENT:
+ case CY_WCM_SECURITY_WPA2_FBT_ENT:
+ mpy_sec_type = NET_IFX_WCM_SEC_WPA2;
+ break;
+ case CY_WCM_SECURITY_WPA2_WPA_AES_PSK:
+ case CY_WCM_SECURITY_WPA2_WPA_MIXED_PSK:
+ mpy_sec_type = NET_IFX_WCM_SEC_WPA_WPA2;
+ break;
+ case CY_WCM_SECURITY_WPA3_SAE:
+ case CY_WCM_SECURITY_WPA3_WPA2_PSK:
+ mpy_sec_type = NET_IFX_WCM_SEC_WPA3;
+ break;
+ case CY_WCM_SECURITY_WPS_SECURE:
+ case CY_WCM_SECURITY_UNKNOWN:
+ default:
+ mpy_sec_type = NET_IFX_WCM_SEC_UNKNOWN;
+ break;
+ }
+ return mpy_sec_type;
+}
+
+// Callback function for scan method. After each scan result, the scan callback is executed.
+static void network_ifx_wcm_scan_cb(cy_wcm_scan_result_t *result_ptr, void *user_data, cy_wcm_scan_status_t status) {
+ scan_user_data_t *scan_user_data = (scan_user_data_t *)user_data;
+ mp_obj_t scan_list = MP_OBJ_FROM_PTR(scan_user_data->scan_list);
+ uint8_t hidden_status = 1; // HIDDEN
+ uint8_t security_type = NET_IFX_WCM_SEC_OPEN;
+
+ if (status == CY_WCM_SCAN_INCOMPLETE) {
+ // Get the network status : hidden(1) or open(0)
+ if (strlen((const char *)result_ptr->SSID) != 0) {
+ hidden_status = 0;
+ }
+
+ // Get security type as mapped in micropython function description
+ security_type = get_mpy_security_type(result_ptr->security);
+
+ mp_obj_t tuple[6] = {
+ mp_obj_new_bytes(result_ptr->SSID, strlen((const char *)result_ptr->SSID)),
+ mp_obj_new_bytes(result_ptr->BSSID, CY_WCM_MAC_ADDR_LEN),
+ MP_OBJ_NEW_SMALL_INT(result_ptr->channel),
+ MP_OBJ_NEW_SMALL_INT(result_ptr->signal_strength),
+ MP_OBJ_NEW_SMALL_INT(security_type),
+ MP_OBJ_NEW_SMALL_INT(hidden_status)
+ };
+ mp_obj_list_append(scan_list, mp_obj_new_tuple(6, tuple));
+ }
+
+ scan_user_data->status = status;
+}
+
+static mp_obj_t network_ifx_wcm_scan(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ cy_rslt_t ret = CY_RSLT_SUCCESS;
+ cy_wcm_scan_filter_t scan_filter;
+ bool is_filter_used = false;
+
+ if (self->itf != CY_WCM_INTERFACE_TYPE_STA) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network STA required"));
+ }
+
+ if (n_args != 1) {
+ mp_raise_TypeError(MP_ERROR_TEXT("network scan accepts no query parameters"));
+ }
+
+ if (kwargs->used != 0) {
+ if (kwargs->alloc != 1) {
+ mp_raise_TypeError(MP_ERROR_TEXT("network scan only accepts one filter mode"));
+ }
+
+ is_filter_used = true;
+ mp_map_elem_t *e = &kwargs->table[0];
+ switch (mp_obj_str_get_qstr(e->key))
+ {
+ case MP_QSTR_ssid: {
+ scan_filter.mode = CY_WCM_SCAN_FILTER_TYPE_SSID;
+ size_t len;
+ const char *ssid = mp_obj_str_get_data(e->value, &len);
+ len = MIN(len, CY_WCM_MAX_SSID_LEN + 1);
+ memcpy(scan_filter.param.SSID, ssid, len);
+ memset(&scan_filter.param.SSID[len], 0, 1); // null terminated str.
+ break;
+ }
+
+ case MP_QSTR_bssid: {
+ scan_filter.mode = CY_WCM_SCAN_FILTER_TYPE_MAC;
+ mp_buffer_info_t bssid;
+ mp_get_buffer(e->value, &bssid, MP_BUFFER_READ);
+ if (bssid.len != CY_WCM_MAC_ADDR_LEN) {
+ mp_raise_ValueError(MP_ERROR_TEXT("bssid address invalid length"));
+ }
+ memcpy(scan_filter.param.BSSID, bssid.buf, bssid.len);
+ break;
+ }
+
+ default:
+ mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
+ }
+ }
+
+ mp_obj_t network_list = mp_obj_new_list(0, NULL);
+ scan_user_data_t scan_user_params;
+ scan_user_params.scan_list = MP_OBJ_TO_PTR(network_list);
+ scan_user_params.status = CY_WCM_SCAN_INCOMPLETE;
+
+ cy_wcm_scan_filter_t *scan_filter_ptr = NULL;
+ if (is_filter_used) {
+ scan_filter_ptr = &scan_filter;
+ }
+
+ ret = cy_wcm_start_scan(network_ifx_wcm_scan_cb, (void *)&scan_user_params, scan_filter_ptr);
+ wcm_assert_raise("network scan error (with code: %d)", ret);
+
+ while (scan_user_params.status == CY_WCM_SCAN_INCOMPLETE /*|| TODO: timeout_expired */) {
+ }
+
+ return scan_user_params.scan_list;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(network_ifx_wcm_scan_obj, 1, network_ifx_wcm_scan);
+
+static mp_obj_t network_ifx_wcm_connect(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
+
+ enum { ARG_ssid, ARG_key, ARG_bssid };
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_ssid, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_key, MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} },
+ { MP_QSTR_bssid, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = MP_ROM_NONE} }
+ };
+
+ if (self->itf != CY_WCM_INTERFACE_TYPE_STA) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network STA required"));
+ }
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ cy_wcm_connect_params_t connect_param;
+ cy_wcm_ip_address_t ipaddress;
+ memset(&connect_param, 0, sizeof(cy_wcm_connect_params_t));
+
+ // Extract the SSID.
+ mp_buffer_info_t ssid;
+ mp_get_buffer_raise(args[ARG_ssid].u_obj, &ssid, MP_BUFFER_READ);
+ if (ssid.len > CY_WCM_MAX_SSID_LEN) {
+ mp_raise_TypeError(MP_ERROR_TEXT("network connect SSID too long"));
+ }
+ memcpy(connect_param.ap_credentials.SSID, ssid.buf, ssid.len);
+
+ // Extract the key, if given.
+ if (args[ARG_key].u_obj != mp_const_none) {
+ mp_buffer_info_t key;
+ mp_get_buffer_raise(args[ARG_key].u_obj, &key, MP_BUFFER_READ);
+ memcpy(connect_param.ap_credentials.password, key.buf, key.len);
+ }
+
+ // Extract the BSSID, if given.
+ if (args[ARG_bssid].u_obj != mp_const_none) {
+ mp_buffer_info_t bssid;
+ mp_get_buffer_raise(args[ARG_bssid].u_obj, &bssid, MP_BUFFER_READ);
+ if (bssid.len != CY_WCM_MAC_ADDR_LEN) {
+ mp_raise_ValueError(MP_ERROR_TEXT("bssid address invalid length"));
+ }
+ memcpy(connect_param.BSSID, bssid.buf, bssid.len);
+ }
+
+ // Let the wcm driver discover the network security
+ connect_param.ap_credentials.security = CY_WCM_SECURITY_UNKNOWN;
+
+ network_ifx_wcm_sta_obj_t *sta_conf = wcm_get_sta_conf_ptr(network_ifx_wcm_wl_sta);
+ uint8_t retries = sta_conf->connect_retries;
+ cy_rslt_t ret = CY_WCM_EVENT_CONNECT_FAILED;
+ do
+ {
+ ret = cy_wcm_connect_ap(&connect_param, &ipaddress);
+ } while (--retries < 0 && ret != CY_RSLT_SUCCESS);
+ wcm_assert_raise("network sta connect error (with code: %d)", ret);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(network_ifx_wcm_connect_obj, 1, network_ifx_wcm_connect);
+
+static mp_obj_t network_ifx_wcm_disconnect(mp_obj_t self_in) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ if (self->itf != CY_WCM_INTERFACE_TYPE_STA) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network STA required"));
+ }
+ uint32_t ret = cy_wcm_disconnect_ap();
+ wcm_assert_raise("network sta disconnect error (with code: %d)", ret);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(network_ifx_wcm_disconnect_obj, network_ifx_wcm_disconnect);
+
+static mp_obj_t network_ifx_wcm_isconnected(mp_obj_t self_in) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(self_in);
+
+ if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ return mp_obj_new_bool(cy_wcm_is_connected_to_ap());
+ } else if (self->itf == CY_WCM_INTERFACE_TYPE_AP) {
+ /* True if at least one client is connected */
+ bool is_a_sta_connected = false;
+ cy_wcm_mac_t sta[1] = {0};
+ cy_wcm_mac_t not_conn_sta = {0, 0, 0, 0, 0, 0};
+ uint32_t ret = cy_wcm_get_associated_client_list(sta, 1);
+ wcm_assert_raise("network ap isconnected error (with code: %d)", ret);
+ if (memcmp(&sta[0], ¬_conn_sta, CY_WCM_MAC_ADDR_LEN) != 0) {
+ is_a_sta_connected = true;
+ }
+
+ return mp_obj_new_bool(is_a_sta_connected);
+ }
+
+ return mp_const_none;
+}
+
+static MP_DEFINE_CONST_FUN_OBJ_1(network_ifx_wcm_isconnected_obj, network_ifx_wcm_isconnected);
+
+static mp_obj_t network_ifx_wcm_ifconfig(size_t n_args, const mp_obj_t *args) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ if (n_args == 1) {
+ const ip_addr_t *dns = dns_getserver(0);
+ cy_wcm_ip_address_t ip_address;
+ cy_wcm_ip_address_t net_mask_addr;
+ cy_wcm_ip_address_t gateway_addr;
+ cy_rslt_t ret = cy_wcm_get_ip_addr(self->itf, &ip_address);
+ wcm_assert_raise("network ifconfig error (with code: %d)", ret);
+ ret = cy_wcm_get_gateway_ip_address(self->itf, &gateway_addr);
+ wcm_assert_raise("network ifconfig error (with code: %d)", ret);
+ ret = cy_wcm_get_ip_netmask(self->itf, &net_mask_addr);
+ wcm_assert_raise("network ifconfig error (with code: %d)", ret);
+ mp_obj_t tuple[4] = {
+ mp_obj_new_str(ip4addr_ntoa((const ip4_addr_t *)&ip_address.ip.v4), strlen(ip4addr_ntoa((const ip4_addr_t *)&ip_address.ip.v4))),
+ mp_obj_new_str(ip4addr_ntoa((const ip4_addr_t *)&net_mask_addr.ip.v4), strlen(ip4addr_ntoa((const ip4_addr_t *)&net_mask_addr.ip.v4))),
+ mp_obj_new_str(ip4addr_ntoa((const ip4_addr_t *)&gateway_addr.ip.v4), strlen(ip4addr_ntoa((const ip4_addr_t *)&gateway_addr.ip.v4))),
+ netutils_format_ipv4_addr((uint8_t *)dns, NETUTILS_BIG),
+ };
+ return mp_obj_new_tuple(4, tuple);
+ } else {
+ if (self->itf == CY_WCM_INTERFACE_TYPE_AP) {
+ const mp_obj_t *argss = args + 1;
+ mp_obj_t *items;
+ mp_obj_get_array_fixed_n(argss[0], 4, &items);
+ const char *ip_address = mp_obj_str_get_str(items[0]);
+ const char *net_mask_addr = mp_obj_str_get_str(items[1]);
+ const char *gateway_addr = mp_obj_str_get_str(items[2]);
+ cy_wcm_ap_config_t *ap_conf = wcm_get_ap_conf_ptr(network_ifx_wcm_wl_ap);
+ cy_rslt_t ret = cy_wcm_set_ap_ip_setting(&(ap_conf->ip_settings), ip_address, net_mask_addr, gateway_addr, CY_WCM_IP_VER_V4);
+ wcm_assert_raise("network ifconfig error (with code: %d)", ret);
+
+ ip_addr_t dns;
+ netutils_parse_ipv4_addr(items[3], (uint8_t *)&dns, NETUTILS_BIG);
+ dns_setserver(0, &dns);
+
+ restart_ap(ap_conf);
+ } else if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network access point required"));
+ }
+ }
+
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(network_ifx_wcm_ifconfig_obj, 1, 2, network_ifx_wcm_ifconfig);
+
+static mp_obj_t network_ifx_wcm_status(size_t n_args, const mp_obj_t *args) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ // one argument: return status based on query parameter
+ switch (mp_obj_str_get_qstr(args[1])) {
+
+ case MP_QSTR_rssi: {
+ if (self->itf != CY_WCM_INTERFACE_TYPE_STA) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network station required"));
+ }
+ int32_t rssi;
+ uint32_t ret = whd_wifi_get_rssi(whd_ifs[self->itf], &rssi);
+ wcm_assert_raise("network status error (with code: %d)", ret);
+ return mp_obj_new_int(rssi);
+ }
+
+ case MP_QSTR_stations: {
+ if (self->itf != CY_WCM_INTERFACE_TYPE_AP) {
+ mp_raise_ValueError(MP_ERROR_TEXT("network access point required"));
+ }
+
+ cy_wcm_mac_t sta_list[NETWORK_WLAN_MAX_AP_STATIONS];
+ cy_wcm_mac_t not_conn_sta = {0, 0, 0, 0, 0, 0};
+
+ uint32_t ret = cy_wcm_get_associated_client_list(&sta_list[0], NETWORK_WLAN_MAX_AP_STATIONS);
+ wcm_assert_raise("network status error (with code: %d)", ret);
+
+ mp_obj_t list = mp_obj_new_list(0, NULL);
+ for (int i = 0; i < NETWORK_WLAN_MAX_AP_STATIONS; ++i) {
+ if (memcmp(&sta_list[i], ¬_conn_sta, CY_WCM_MAC_ADDR_LEN) != 0) {
+ mp_obj_list_append(list, mp_obj_new_bytes(sta_list[i], CY_WCM_MAC_ADDR_LEN));
+ }
+ }
+ return list;
+ }
+ }
+
+ mp_raise_ValueError(MP_ERROR_TEXT("network status unknown param"));
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(network_ifx_wcm_status_obj, 1, 2, network_ifx_wcm_status);
+
+
+static mp_obj_t network_ap_get_config_param(cy_wcm_ap_config_t *ap_conf, qstr query_opt) {
+ switch (query_opt) {
+ case MP_QSTR_channel: {
+ return MP_OBJ_NEW_SMALL_INT(ap_conf->channel);
+ }
+
+ case MP_QSTR_ssid:
+ case MP_QSTR_essid: {
+ return mp_obj_new_str((const char *)ap_conf->ap_credentials.SSID, strlen((const char *)ap_conf->ap_credentials.SSID));
+ }
+
+ case MP_QSTR_security: {
+ return MP_OBJ_NEW_SMALL_INT(get_mpy_security_type(ap_conf->ap_credentials.security));
+ }
+
+ /* Only default password is exposed */
+ case MP_QSTR_key:
+ case MP_QSTR_password: {
+ if (strcmp((const char *)ap_conf->ap_credentials.password, NETWORK_WLAN_DEFAULT_PASSWORD) == 0) {
+ return mp_obj_new_str((const char *)NETWORK_WLAN_DEFAULT_PASSWORD, strlen((const char *)NETWORK_WLAN_DEFAULT_PASSWORD));
+ } else {
+ mp_raise_ValueError(MP_ERROR_TEXT("network conf password only queryable for default password"));
+ }
+ break;
+ }
+
+ case MP_QSTR_mac: {
+ cy_wcm_mac_t mac;
+ uint32_t ret = cy_wcm_get_mac_addr(CY_WCM_INTERFACE_TYPE_AP, &mac);
+ wcm_assert_raise("network config mac (code: %d)", ret);
+
+ return mp_obj_new_bytes(mac, 6);
+ }
+
+ case MP_QSTR_hostname: {
+ mp_raise_ValueError(MP_ERROR_TEXT("deprecated. use network.hostname() instead"));
+ break;
+ }
+
+ default:
+ mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
+ }
+}
+
+static mp_obj_t network_sta_get_config_param(network_ifx_wcm_sta_obj_t *sta_conf, qstr query_opt) {
+ switch (query_opt) {
+ case MP_QSTR_channel: {
+ cy_wcm_associated_ap_info_t ap_info;
+ uint32_t ret = cy_wcm_get_associated_ap_info(&ap_info);
+ wcm_assert_raise("network config error (with code: %d)", ret);
+ return MP_OBJ_NEW_SMALL_INT(ap_info.channel);
+ }
+
+ case MP_QSTR_mac: {
+ cy_wcm_mac_t mac;
+ uint32_t ret = cy_wcm_get_mac_addr(CY_WCM_INTERFACE_TYPE_STA, &mac);
+ wcm_assert_raise("network config mac (code: %d)", ret);
+ return mp_obj_new_bytes(mac, 6);
+ }
+
+ case MP_QSTR_ssid:
+ case MP_QSTR_essid: {
+ cy_wcm_associated_ap_info_t ap_info;
+ uint32_t ret = cy_wcm_get_associated_ap_info(&ap_info);
+ wcm_assert_raise("network config error (with code: %d)", ret);
+ return mp_obj_new_str((const char *)ap_info.SSID, strlen((const char *)ap_info.SSID));
+ }
+
+ case MP_QSTR_security: {
+ cy_wcm_associated_ap_info_t ap_info;
+ uint32_t ret = cy_wcm_get_associated_ap_info(&ap_info);
+ wcm_assert_raise("network config error (with code: %d)", ret);
+ return MP_OBJ_NEW_SMALL_INT(get_mpy_security_type(ap_info.security));
+ }
+
+ case MP_QSTR_password:
+ case MP_QSTR_key: {
+ mp_raise_ValueError(MP_ERROR_TEXT("network access point required"));
+ break;
+ }
+
+ case MP_QSTR_hostname: {
+ mp_raise_ValueError(MP_ERROR_TEXT("deprecated. use network.hostname() instead"));
+ break;
+ }
+
+ default:
+ mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
+ }
+}
+
+cy_wcm_security_t get_wm_security_type(mp_obj_t mpy_sec) {
+ switch (mp_obj_get_int(mpy_sec))
+ {
+ case NET_IFX_WCM_SEC_OPEN:
+ return CY_WCM_SECURITY_OPEN;
+
+ case NET_IFX_WCM_SEC_WPA:
+ return CY_WCM_SECURITY_WPA_MIXED_PSK;
+
+ case NET_IFX_WCM_SEC_WPA2:
+ return CY_WCM_SECURITY_WPA2_MIXED_PSK;
+
+ case NET_IFX_WCM_SEC_WPA3:
+ return CY_WCM_SECURITY_WPA3_SAE;
+
+ case NET_IFX_WCM_SEC_WPA_WPA2:
+ return CY_WCM_SECURITY_WPA2_WPA_MIXED_PSK;
+
+ default:
+ return CY_WCM_SECURITY_UNKNOWN;
+ }
+}
+
+static void network_ap_set_config_param(cy_wcm_ap_config_t *ap_conf, qstr opt, mp_obj_t opt_value, bool hold) {
+
+ static bool required_ap_restart = false;
+
+ switch (opt) {
+ case MP_QSTR_channel: {
+ ap_conf->channel = mp_obj_get_int(opt_value);
+ required_ap_restart = true;
+ break;
+ }
+
+ case MP_QSTR_ssid:
+ case MP_QSTR_essid: {
+ size_t len;
+ const char *ssid_str = mp_obj_str_get_data(opt_value, &len);
+ memset(ap_conf->ap_credentials.SSID, 0, CY_WCM_MAX_SSID_LEN + 1);
+ memcpy(ap_conf->ap_credentials.SSID, ssid_str, len);
+ required_ap_restart = true;
+ break;
+ }
+
+ case MP_QSTR_security: {
+ cy_wcm_security_t wcm_sec = get_wm_security_type(opt_value);
+ ap_conf->ap_credentials.security = wcm_sec;
+ required_ap_restart = true;
+ break;
+ }
+
+ case MP_QSTR_key:
+ case MP_QSTR_password: {
+ size_t len;
+ const char *pass_str = mp_obj_str_get_data(opt_value, &len);
+ memset(ap_conf->ap_credentials.password, 0, CY_WCM_MAX_PASSPHRASE_LEN + 1);
+ memcpy(ap_conf->ap_credentials.password, pass_str, len);
+ break;
+ }
+
+ case MP_QSTR_hostname: {
+ mp_raise_ValueError(MP_ERROR_TEXT("deprecated. use network.hostname() instead"));
+ break;
+ }
+
+ default:
+ mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
+ }
+
+ if (required_ap_restart && !hold) {
+ restart_ap(ap_conf);
+ required_ap_restart = false;
+ }
+}
+
+static void network_sta_set_config_param(network_ifx_wcm_sta_obj_t *sta_conf, qstr opt, mp_obj_t opt_value) {
+ switch (opt) {
+ case MP_QSTR_channel:
+ case MP_QSTR_key:
+ case MP_QSTR_password:
+ case MP_QSTR_ssid:
+ case MP_QSTR_essid: {
+ mp_raise_ValueError(MP_ERROR_TEXT("network access point required"));
+ break;
+ }
+
+ case MP_QSTR_hostname: {
+ mp_raise_ValueError(MP_ERROR_TEXT("deprecated. use network.hostname() instead"));
+ break;
+ }
+
+ default:
+ mp_raise_ValueError(MP_ERROR_TEXT("unknown config param"));
+ }
+}
+
+static mp_obj_t network_ifx_wcm_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs) {
+ network_ifx_wcm_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+
+ if (kwargs->used == 0) {
+ // Get config value
+ if (n_args != 2) {
+ mp_raise_TypeError(MP_ERROR_TEXT("must query one param"));
+ }
+
+ if (self->itf == CY_WCM_INTERFACE_TYPE_AP) {
+ cy_wcm_ap_config_t *ap_conf = wcm_get_ap_conf_ptr(network_ifx_wcm_wl_ap);
+ return network_ap_get_config_param(ap_conf, mp_obj_str_get_qstr(args[1]));
+ } else if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ network_ifx_wcm_sta_obj_t *sta_conf = wcm_get_sta_conf_ptr(network_ifx_wcm_wl_sta);
+ return network_sta_get_config_param(sta_conf, mp_obj_str_get_qstr(args[1]));
+ }
+ } else {
+ // Set config value(s)
+ if (n_args != 1) {
+ mp_raise_TypeError(MP_ERROR_TEXT("can't specify pos and kw args"));
+ }
+ size_t kwargs_num = kwargs->alloc;
+ for (size_t i = 0; i < kwargs->alloc; ++i) {
+ if (MP_MAP_SLOT_IS_FILLED(kwargs, i)) {
+ mp_map_elem_t *e = &kwargs->table[i];
+
+ if (self->itf == CY_WCM_INTERFACE_TYPE_AP) {
+ bool hold_config = true;
+ if (i == kwargs_num - 1) {
+ hold_config = false;
+ }
+ cy_wcm_ap_config_t *ap_conf = wcm_get_ap_conf_ptr(network_ifx_wcm_wl_ap);
+ network_ap_set_config_param(ap_conf, mp_obj_str_get_qstr(e->key), e->value, hold_config);
+ } else if (self->itf == CY_WCM_INTERFACE_TYPE_STA) {
+ network_ifx_wcm_sta_obj_t *sta_conf = wcm_get_sta_conf_ptr(network_ifx_wcm_wl_sta);
+ network_sta_set_config_param(sta_conf, mp_obj_str_get_qstr(e->key), e->value);
+ }
+ }
+ }
+ }
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_KW(network_ifx_wcm_config_obj, 1, network_ifx_wcm_config);
+
+/*******************************************************************************/
+// class bindings
+
+static const mp_rom_map_elem_t network_ifx_wcm_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&network_ifx_wcm_deinit_obj) }, // shall this be part of the module ??
+ { MP_ROM_QSTR(MP_QSTR_active), MP_ROM_PTR(&network_ifx_wcm_active_obj) },
+ { MP_ROM_QSTR(MP_QSTR_scan), MP_ROM_PTR(&network_ifx_wcm_scan_obj) },
+ { MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&network_ifx_wcm_connect_obj) },
+ { MP_ROM_QSTR(MP_QSTR_disconnect), MP_ROM_PTR(&network_ifx_wcm_disconnect_obj) },
+ { MP_ROM_QSTR(MP_QSTR_isconnected), MP_ROM_PTR(&network_ifx_wcm_isconnected_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ifconfig), MP_ROM_PTR(&network_ifx_wcm_ifconfig_obj) },
+ { MP_ROM_QSTR(MP_QSTR_status), MP_ROM_PTR(&network_ifx_wcm_status_obj) },
+ { MP_ROM_QSTR(MP_QSTR_config), MP_ROM_PTR(&network_ifx_wcm_config_obj) },
+
+ // Network WCM constants
+ // Security modes
+ { MP_ROM_QSTR(MP_QSTR_OPEN), MP_ROM_INT(NET_IFX_WCM_SEC_OPEN) },
+ { MP_ROM_QSTR(MP_QSTR_WEP), MP_ROM_INT(NET_IFX_WCM_SEC_WEP) },
+ { MP_ROM_QSTR(MP_QSTR_WPA), MP_ROM_INT(NET_IFX_WCM_SEC_WPA) },
+ { MP_ROM_QSTR(MP_QSTR_WPA2), MP_ROM_INT(NET_IFX_WCM_SEC_WPA2) },
+ { MP_ROM_QSTR(MP_QSTR_WPA3), MP_ROM_INT(NET_IFX_WCM_SEC_WPA3) },
+ { MP_ROM_QSTR(MP_QSTR_WPA2_WPA_PSK), MP_ROM_INT(NET_IFX_WCM_SEC_WPA_WPA2) },
+ { MP_ROM_QSTR(MP_QSTR_SEC_UNKNOWN), MP_ROM_INT(NET_IFX_WCM_SEC_UNKNOWN) },
+};
+static MP_DEFINE_CONST_DICT(network_ifx_wcm_locals_dict, network_ifx_wcm_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ mp_network_ifx_wcm_type,
+ MP_QSTR_IFX_WCM,
+ MP_TYPE_FLAG_NONE,
+ make_new, network_ifx_wcm_make_new,
+ print, network_ifx_wcm_print,
+ locals_dict, &network_ifx_wcm_locals_dict
+ );
+
+#endif // MICROPY_PY_NETWORK_IFX_WCM
diff --git a/ports/psoc6/network_ifx_wcm.h b/ports/psoc6/network_ifx_wcm.h
new file mode 100644
index 0000000000000..b7fbbe5511f45
--- /dev/null
+++ b/ports/psoc6/network_ifx_wcm.h
@@ -0,0 +1,33 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2019-2023 Damien P. George
+ * Copyright (c) 2023 Infineon Technologies AG
+ *
+ * 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.
+ */
+#ifndef MICROPY_INCLUDED_EXTMOD_NETWORK_IFX_WCM_H
+#define MICROPY_INCLUDED_EXTMOD_NETWORK_IFX_WCM_H
+
+void network_init(void);
+void network_deinit(void);
+
+#endif // MICROPY_INCLUDED_EXTMOD_NETWORK_IFX_WCM_H
diff --git a/ports/psoc6/psoc6_fatfs.c b/ports/psoc6/psoc6_fatfs.c
new file mode 100644
index 0000000000000..3a1030b83b8d2
--- /dev/null
+++ b/ports/psoc6/psoc6_fatfs.c
@@ -0,0 +1,54 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013, 2014 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+
+
+// micropython includes
+#include "lib/oofatfs/ff.h"
+#include "py/runtime.h"
+
+
+// MTB includes
+#include "cyhal.h"
+
+
+// object defined in main
+extern cyhal_rtc_t psoc6_rtc;
+
+
+MP_WEAK DWORD get_fattime(void) {
+ struct tm current_date_time = {0};
+ cy_rslt_t result = cyhal_rtc_read(&psoc6_rtc, ¤t_date_time);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mp_raise_ValueError(MP_ERROR_TEXT("cyhal_rtc_read failed !"));
+ }
+
+ return ((current_date_time.tm_year - 1980) << 25) | ((current_date_time.tm_mon) << 21) | ((current_date_time.tm_mday) << 16) | ((current_date_time.tm_hour) << 11) | ((current_date_time.tm_min) << 5) | (current_date_time.tm_sec / 2);
+}
diff --git a/ports/psoc6/psoc6_flash.c b/ports/psoc6/psoc6_flash.c
new file mode 100644
index 0000000000000..552e44628e035
--- /dev/null
+++ b/ports/psoc6/psoc6_flash.c
@@ -0,0 +1,282 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020-2021 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+
+// micropython includes
+#include "py/runtime.h"
+#include "extmod/vfs.h"
+#include "modpsoc6.h"
+#include "mplogger.h"
+#include "mphalport.h"
+
+
+// MTB includes
+#include "cyhal.h"
+
+#if defined(CY8C624ABZI_S2D44)
+#define DEVICE_FLASH_SIZE (0x00200000) // 2MB
+#define DEVICE_FLASH_BASE_ADDRESS (0x101A0000) // Where is this value coming from??
+
+#elif defined(CYBLE_416045_02_device)
+#define DEVICE_FLASH_SIZE (0x00100000) // 1MB
+#define DEVICE_FLASH_BASE_ADDRESS (0x100E0000) // Where is this value coming from??
+
+#else
+#error "MCU not supported."
+#endif
+
+
+#define FLASH_BASE_TRUE (0x10000000)
+
+#define FLASH_BASE DEVICE_FLASH_BASE_ADDRESS
+#define FLASH_SIZE (DEVICE_FLASH_SIZE - (FLASH_BASE - FLASH_BASE_TRUE))
+
+#define FLASH_SECTOR_SIZE (0x200)
+#define BLOCK_SIZE_BYTES (FLASH_SECTOR_SIZE)
+
+#ifndef MICROPY_HW_FLASH_STORAGE_BYTES
+#define MICROPY_HW_FLASH_STORAGE_BYTES (FLASH_SIZE)
+#endif
+static_assert(MICROPY_HW_FLASH_STORAGE_BYTES % 4096 == 0, "Flash storage size must be a multiple of 4K");
+
+#ifndef MICROPY_HW_FLASH_STORAGE_BASE
+#define MICROPY_HW_FLASH_STORAGE_BASE (FLASH_BASE)
+#endif
+
+
+typedef struct _psoc6_flash_obj_t {
+ mp_obj_base_t base;
+ uint32_t flash_base;
+ uint32_t flash_size;
+} psoc6_flash_obj_t;
+
+static psoc6_flash_obj_t psoc6_flash_obj = {
+ .base = { &psoc6_flash_type },
+ .flash_base = FLASH_BASE,
+ .flash_size = FLASH_SIZE,
+};
+
+cyhal_flash_t cyhal_flash_obj;
+cyhal_flash_info_t flash_info;
+
+// Helper function to get internal flash configurations
+void get_flash_info(void) {
+ mplogger_print("\nRetrieving internal flash info...\n");
+ cyhal_flash_get_info(&cyhal_flash_obj, &flash_info);
+ /* Wait for 100ms for the flash write to complete */
+ uint32_t timeout = 100;
+ /* Wait for the command to finish execution */
+ while ((true != cyhal_flash_is_operation_complete(&cyhal_flash_obj)) && (0 < timeout)) {
+ timeout--;
+ cyhal_system_delay_ms(1); /* delay one millisecond each iteration */
+ }
+ uint32_t total_flash_size = 0;
+ uint32_t page_size = 0;
+ if (0 != timeout) {
+ for (int index = 0; index < flash_info.block_count; index++)
+ {
+ const cyhal_flash_block_info_t *block_info = flash_info.blocks;
+ total_flash_size += block_info->size;
+ page_size = block_info->page_size;
+ }
+ }
+
+ mplogger_print("\nTotal flash size (MB): %ld\n", total_flash_size / (1024 * 1024));
+ mplogger_print("\nTotal no. of blocks: %d\n", flash_info.block_count);
+ mplogger_print("\nPage size (bytes): %ld\n", page_size);
+}
+
+static mp_obj_t psoc6_flash_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ mplogger_print("\nFlash constructor invoked\n");
+ #if MICROPY_LOGGER_DEBUG
+ get_flash_info();
+ #endif
+
+ cy_rslt_t result = CY_RSLT_SUCCESS;
+
+ result = cyhal_flash_init(&cyhal_flash_obj);
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_flash_make_new() failed while initializing flash with error code : %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("psoc6_flash_make_new() - QSPI flash init failed !\n"));
+ }
+
+ // Parse arguments
+ enum { ARG_start, ARG_len };
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_len, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ if (args[ARG_start].u_int == -1 && args[ARG_len].u_int == -1) {
+ // Default singleton object that accesses entire flash
+ return MP_OBJ_FROM_PTR(&psoc6_flash_obj);
+ }
+
+ psoc6_flash_obj_t *self = mp_obj_malloc(psoc6_flash_obj_t, &psoc6_flash_type);
+
+ mp_int_t start = args[ARG_start].u_int;
+
+ if (start == -1) {
+ start = 0;
+ } else if (!(0 <= start && start < MICROPY_HW_FLASH_STORAGE_BYTES && start % BLOCK_SIZE_BYTES == 0)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid 'start' value specified for psoc6_flash_make_new !\n"));
+ }
+
+ mp_int_t len = args[ARG_len].u_int;
+
+ if (len == -1) {
+ len = MICROPY_HW_FLASH_STORAGE_BYTES - start;
+ } else if (!(0 < len && start + len <= MICROPY_HW_FLASH_STORAGE_BYTES && len % BLOCK_SIZE_BYTES == 0)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid 'len' value specified for psoc6_flash_make_new !\n"));
+ }
+
+ self->flash_base = MICROPY_HW_FLASH_STORAGE_BASE + start;
+ self->flash_size = len;
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static mp_obj_t psoc6_flash_readblocks(size_t n_args, const mp_obj_t *args) {
+ mplogger_print("\nFlash readblocks called\n");
+
+ psoc6_flash_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t offset = mp_obj_get_int(args[1]) * BLOCK_SIZE_BYTES;
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_WRITE);
+
+ if (n_args == 4) {
+ offset += mp_obj_get_int(args[3]);
+ }
+
+ cy_rslt_t result = cyhal_flash_read(&cyhal_flash_obj, self->flash_base + offset, bufinfo.buf, bufinfo.len);
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_flash_readblocks() failed while reading the flash with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_flash_readblocks() - Flash Read failed !"));
+ }
+
+ // TODO: or simply do it like this ?
+ // memcpy(bufinfo.buf, (void *)(self->flash_base + offset), bufinfo.len);
+
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_flash_readblocks_obj, 3, 4, psoc6_flash_readblocks);
+
+static mp_obj_t psoc6_flash_writeblocks(size_t n_args, const mp_obj_t *args) {
+ mplogger_print("\nFlash writeblocks called\n");
+ psoc6_flash_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t offset = mp_obj_get_int(args[1]) * BLOCK_SIZE_BYTES;
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_READ);
+
+ if (n_args == 3) {
+ uint32_t numSectors = bufinfo.len / FLASH_SECTOR_SIZE;
+
+ for (uint32_t i = 0; i <= numSectors; ++i) {
+ cy_rslt_t result = cyhal_flash_erase(&cyhal_flash_obj, self->flash_base + offset + i * FLASH_SECTOR_SIZE);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("\npsoc6_flash_writeblocks() failed while erasing the flash with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_flash_writeblocks() - Flash Erase failed !"));
+ }
+ }
+ } else {
+ offset += mp_obj_get_int(args[3]);
+ }
+
+
+ // Flash erase/program must run in an atomic section.
+ mp_uint_t atomic_state = MICROPY_BEGIN_ATOMIC_SECTION();
+
+ cy_rslt_t result = cyhal_flash_write(&cyhal_flash_obj, self->flash_base + offset, bufinfo.buf);
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_flash_writeblocks() failed while writing with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_flash_writeblocks() - Flash Write failed!"));
+ }
+
+ MICROPY_END_ATOMIC_SECTION(atomic_state);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_flash_writeblocks_obj, 3, 4, psoc6_flash_writeblocks);
+
+static mp_obj_t psoc6_flash_ioctl(mp_obj_t self_in, mp_obj_t cmd_in, mp_obj_t arg_in) {
+ mplogger_print("Flash ioctrl called\n");
+ psoc6_flash_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_int_t cmd = mp_obj_get_int(cmd_in);
+
+ switch (cmd) {
+ case MP_BLOCKDEV_IOCTL_INIT:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_DEINIT:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_SYNC:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_BLOCK_COUNT:
+ return MP_OBJ_NEW_SMALL_INT(self->flash_size / BLOCK_SIZE_BYTES);
+ case MP_BLOCKDEV_IOCTL_BLOCK_SIZE:
+ return MP_OBJ_NEW_SMALL_INT(BLOCK_SIZE_BYTES);
+ case MP_BLOCKDEV_IOCTL_BLOCK_ERASE: {
+ uint32_t offset = mp_obj_get_int(arg_in) * BLOCK_SIZE_BYTES;
+ // Flash erase/program must run in an atomic section.
+ mp_uint_t atomic_state = MICROPY_BEGIN_ATOMIC_SECTION();
+ cy_rslt_t result = cyhal_flash_erase(&cyhal_flash_obj, self->flash_base + offset);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_flash_ioctl() failed while erasing block with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_flash_ioctl() - Flash erase failed !"));
+ }
+
+ MICROPY_END_ATOMIC_SECTION(atomic_state);
+ return MP_OBJ_NEW_SMALL_INT(0);
+ }
+ default:
+ return mp_const_none;
+ }
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(psoc6_flash_ioctl_obj, psoc6_flash_ioctl);
+
+static const mp_rom_map_elem_t psoc6_flash_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&psoc6_flash_readblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&psoc6_flash_writeblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ioctl), MP_ROM_PTR(&psoc6_flash_ioctl_obj) },
+};
+static MP_DEFINE_CONST_DICT(psoc6_flash_locals_dict, psoc6_flash_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ psoc6_flash_type,
+ MP_QSTR_Flash,
+ MP_TYPE_FLAG_NONE,
+ make_new, psoc6_flash_make_new,
+ locals_dict, &psoc6_flash_locals_dict
+ );
diff --git a/ports/psoc6/psoc6_qspi_flash.c b/ports/psoc6/psoc6_qspi_flash.c
new file mode 100644
index 0000000000000..337879deec651
--- /dev/null
+++ b/ports/psoc6/psoc6_qspi_flash.c
@@ -0,0 +1,266 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020-2021 Damien P. George
+ * Copyright (c) 2022-2024 Infineon Technologies AG
+ *
+ * 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.
+ */
+
+// std includes
+#include
+#include
+
+// micropython includes
+#include "py/runtime.h"
+#include "extmod/vfs.h"
+#include "modpsoc6.h"
+#include "mplogger.h"
+
+// MTB includes
+#include "cyhal.h"
+#include "cy_pdl.h"
+#include "cybsp.h"
+#include "cy_serial_flash_qspi.h"
+#include "cycfg_qspi_memslot.h"
+#include "mphalport.h"
+
+
+#ifndef MICROPY_HW_FLASH_STORAGE_BYTES
+#define MICROPY_HW_FLASH_STORAGE_BYTES (EXT_FLASH_SIZE)
+#endif
+static_assert(MICROPY_HW_FLASH_STORAGE_BYTES % 4096 == 0, "Flash storage size must be a multiple of 4K");
+
+#ifndef MICROPY_HW_FLASH_STORAGE_BASE
+#define MICROPY_HW_FLASH_STORAGE_BASE (EXT_FLASH_BASE)
+#endif
+
+// CY Macros
+#define MEM_SLOT_NUM (0u) /* Slot number of the memory to use - For CYPROTO 062 4343W there is one slave slot for QSPI NOR FLASH CHIP*/
+#define QSPI_BUS_FREQUENCY_HZ (50000000lu) /* Running freq of qspi bus = 50 MHz */
+
+// flag to set of spi flash is init'd
+uint8_t qspi_flash_init = 0;
+
+typedef struct _psoc6_qspi_flash_obj_t {
+ mp_obj_base_t base;
+ uint32_t flash_base;
+ uint32_t flash_size;
+} psoc6_qspi_flash_obj_t;
+
+static psoc6_qspi_flash_obj_t psoc6_qspi_flash_obj = {
+ .base = { &psoc6_qspi_flash_type },
+ .flash_base = EXT_FLASH_BASE,
+ .flash_size = EXT_FLASH_SIZE,
+};
+
+
+// function to erase the entire flash
+void cy_erase_entire_flash(void) {
+ mp_printf(&mp_plat_print, "\nErasing entire flash... might take a while\n");
+ cy_serial_flash_qspi_erase(0, cy_serial_flash_qspi_get_size());
+ mp_printf(&mp_plat_print, "\nDone\n");
+}
+
+// Helper function to get external flash configurations
+void get_ext_flash_info(void) {
+ mplogger_print("\nRetrieving external flash info...\n");
+ mplogger_print("\nTotal flash size (MB): %d\n", cy_serial_flash_qspi_get_size() / (1024 * 1024));
+ mplogger_print("\nSize of erase sector (bytes): %d\n", cy_serial_flash_qspi_get_erase_size(0x00) / (1024));
+ mplogger_print("\nPage size (bytes): %d\n", cy_serial_flash_qspi_get_prog_size(0x00));
+}
+
+static mp_obj_t psoc6_qspi_flash_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ mplogger_print("\nQSPI flash constructor invoked\n");
+ #if MICROPY_LOGGER_DEBUG
+ get_ext_flash_info();
+ #endif
+
+ cy_rslt_t result = CY_RSLT_SUCCESS;
+
+ if (!qspi_flash_init) {
+ result = cy_serial_flash_qspi_init(smifMemConfigs[MEM_SLOT_NUM], CYBSP_QSPI_D0, CYBSP_QSPI_D1,
+ CYBSP_QSPI_D2, CYBSP_QSPI_D3, NC, NC, NC, NC, CYBSP_QSPI_SCK,
+ CYBSP_QSPI_SS, QSPI_BUS_FREQUENCY_HZ);
+ qspi_flash_init = 1;
+ }
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_qspi_flash_make_new() failed while initializing flash with error code : %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_msg(&mp_type_Exception, MP_ERROR_TEXT("psoc6_qspi_flash_make_new() - QSPI flash init failed !\n"));
+ }
+
+ // Parse arguments
+ enum { ARG_start, ARG_len };
+
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ { MP_QSTR_len, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = -1} },
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ if (args[ARG_start].u_int == -1 && args[ARG_len].u_int == -1) {
+ // Default singleton object that accesses entire flash
+ return MP_OBJ_FROM_PTR(&psoc6_qspi_flash_obj);
+ }
+
+ psoc6_qspi_flash_obj_t *self = mp_obj_malloc(psoc6_qspi_flash_obj_t, &psoc6_qspi_flash_type);
+
+ mp_int_t start = args[ARG_start].u_int;
+
+ if (start == -1) {
+ start = 0;
+ } else if (!(0 <= start && start < MICROPY_HW_FLASH_STORAGE_BYTES && start % EXT_FLASH_BLOCK_SIZE_BYTES == 0)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid 'start' value specified for psoc6_flash_make_new !\n"));
+ }
+
+ mp_int_t len = args[ARG_len].u_int;
+
+ if (len == -1) {
+ len = MICROPY_HW_FLASH_STORAGE_BYTES - start;
+ } else if (!(0 < len && start + len <= MICROPY_HW_FLASH_STORAGE_BYTES && len % EXT_FLASH_BLOCK_SIZE_BYTES == 0)) {
+ mp_raise_ValueError(MP_ERROR_TEXT("Invalid 'len' value specified for psoc6_flash_make_new !\n"));
+ }
+
+ self->flash_base = MICROPY_HW_FLASH_STORAGE_BASE + start;
+ self->flash_size = len;
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+static mp_obj_t psoc6_qspi_flash_readblocks(size_t n_args, const mp_obj_t *args) {
+ mplogger_print("\nQSPI flash readblocks called\n");
+
+ psoc6_qspi_flash_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t offset = mp_obj_get_int(args[1]) * EXT_FLASH_BLOCK_SIZE_BYTES;
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_WRITE);
+
+ if (n_args == 4) {
+ offset += mp_obj_get_int(args[3]);
+ }
+
+ mp_uint_t atomic_state = MICROPY_BEGIN_ATOMIC_SECTION();
+ cy_rslt_t result = cy_serial_flash_qspi_read(self->flash_base + offset, bufinfo.len, bufinfo.buf);
+
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_qspi_flash_readblocks() failed while reading the flash with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_qspi_flash_readblocks() - QSPI Flash Read failed !"));
+ }
+ MICROPY_END_ATOMIC_SECTION(atomic_state);
+ ;
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_qspi_flash_readblocks_obj, 3, 4, psoc6_qspi_flash_readblocks);
+
+static mp_obj_t psoc6_qspi_flash_writeblocks(size_t n_args, const mp_obj_t *args) {
+ mplogger_print("\nQSPI flash writeblocks called\n");
+ psoc6_qspi_flash_obj_t *self = MP_OBJ_TO_PTR(args[0]);
+ uint32_t offset = mp_obj_get_int(args[1]) * EXT_FLASH_BLOCK_SIZE_BYTES;
+ mp_buffer_info_t bufinfo;
+ mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_READ);
+
+ if (n_args == 3) {
+ uint32_t numSectors = bufinfo.len / EXT_FLASH_SECTOR_SIZE;
+
+ for (uint32_t i = 0; i <= numSectors; ++i) {
+ cy_rslt_t result = cy_serial_flash_qspi_erase(self->flash_base + offset + i * EXT_FLASH_SECTOR_SIZE, cy_serial_flash_qspi_get_erase_size(self->flash_base + offset + i * EXT_FLASH_SECTOR_SIZE));
+ // the cy_serial_flash_qspi_get_erase_size() function call is necessary to keep the erase at sector boundary, else it throws errors.
+
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("\npsoc6_qspi_flash_writeblocks() failed while erasing the flash with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_qspi_flash_writeblocks() - QSPI flash Erase failed !"));
+ }
+ }
+ } else {
+ offset += mp_obj_get_int(args[3]);
+ }
+
+ mp_uint_t atomic_state = MICROPY_BEGIN_ATOMIC_SECTION();
+
+ cy_rslt_t result = cy_serial_flash_qspi_write(self->flash_base + offset, bufinfo.len, bufinfo.buf);
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_qspi_flash_writeblocks() failed while writing with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_qspi_flash_writeblocks() - QSPI Flash Write failed!"));
+ }
+
+ MICROPY_END_ATOMIC_SECTION(atomic_state);
+ return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(psoc6_qspi_flash_writeblocks_obj, 3, 4, psoc6_qspi_flash_writeblocks);
+
+static mp_obj_t psoc6_qspi_flash_ioctl(mp_obj_t self_in, mp_obj_t cmd_in, mp_obj_t arg_in) {
+ mplogger_print("QSPI flash ioctrl called\n");
+ psoc6_qspi_flash_obj_t *self = MP_OBJ_TO_PTR(self_in);
+ mp_int_t cmd = mp_obj_get_int(cmd_in);
+
+ switch (cmd) {
+ case MP_BLOCKDEV_IOCTL_INIT:
+ if (!qspi_flash_init) {
+ /* Initialize the QSPI block */
+ cy_serial_flash_qspi_init(smifMemConfigs[MEM_SLOT_NUM], CYBSP_QSPI_D0, CYBSP_QSPI_D1,
+ CYBSP_QSPI_D2, CYBSP_QSPI_D3, NC, NC, NC, NC, CYBSP_QSPI_SCK,
+ CYBSP_QSPI_SS, QSPI_BUS_FREQUENCY_HZ);
+ qspi_flash_init = 1;
+ }
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_DEINIT:
+ if (qspi_flash_init) {
+ cy_serial_flash_qspi_deinit();
+ }
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_SYNC:
+ return MP_OBJ_NEW_SMALL_INT(0);
+ case MP_BLOCKDEV_IOCTL_BLOCK_COUNT:
+ return MP_OBJ_NEW_SMALL_INT(self->flash_size / EXT_FLASH_BLOCK_SIZE_BYTES);
+ case MP_BLOCKDEV_IOCTL_BLOCK_SIZE:
+ return MP_OBJ_NEW_SMALL_INT(EXT_FLASH_BLOCK_SIZE_BYTES);
+ case MP_BLOCKDEV_IOCTL_BLOCK_ERASE: {
+ uint32_t offset = mp_obj_get_int(arg_in) * EXT_FLASH_BLOCK_SIZE_BYTES;
+ cy_rslt_t result = cy_serial_flash_qspi_erase(self->flash_base + offset, cy_serial_flash_qspi_get_erase_size(self->flash_base + offset));
+
+ if (CY_RSLT_SUCCESS != result) {
+ mplogger_print("psoc6_qspi_flash_ioctl() failed while erasing block with error code: %u\n", CY_RSLT_GET_CODE(result));
+ mp_raise_ValueError(MP_ERROR_TEXT("psoc6_qspi_flash_ioctl() - QSPI Flash erase failed !"));
+ }
+ return MP_OBJ_NEW_SMALL_INT(0);
+ }
+ default:
+ return mp_const_none;
+ }
+}
+static MP_DEFINE_CONST_FUN_OBJ_3(psoc6_qspi_flash_ioctl_obj, psoc6_qspi_flash_ioctl);
+
+static const mp_rom_map_elem_t psoc6_qspi_flash_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&psoc6_qspi_flash_readblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&psoc6_qspi_flash_writeblocks_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ioctl), MP_ROM_PTR(&psoc6_qspi_flash_ioctl_obj) },
+};
+static MP_DEFINE_CONST_DICT(psoc6_qspi_flash_locals_dict, psoc6_qspi_flash_locals_dict_table);
+
+MP_DEFINE_CONST_OBJ_TYPE(
+ psoc6_qspi_flash_type,
+ MP_QSTR_QSPI_Flash,
+ MP_TYPE_FLAG_NONE,
+ make_new, psoc6_qspi_flash_make_new,
+ locals_dict, &psoc6_qspi_flash_locals_dict
+ );
diff --git a/ports/psoc6/qstrdefsport.h b/ports/psoc6/qstrdefsport.h
new file mode 100644
index 0000000000000..17a09fbb64603
--- /dev/null
+++ b/ports/psoc6/qstrdefsport.h
@@ -0,0 +1,5 @@
+// qstrs specific to this port
+// *FORMAT-OFF*
+Q(/)
+Q(/flash)
+Q(/lib)
diff --git a/pyproject.toml b/pyproject.toml
index 1cf57166e1437..f72163fd66d11 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -15,6 +15,8 @@ skip = """
./ports/cc3200/telnet,\
./ports/esp32/managed_components,\
./ports/nrf/drivers/bluetooth/s1*,\
+./ports/psoc6/boards,\
+./ports/renesas-ra,\
./ports/stm32/usbhost,\
./tests,\
ACKNOWLEDGEMENTS,\
diff --git a/tests/ports/psoc6/README.md b/tests/ports/psoc6/README.md
new file mode 100644
index 0000000000000..86daa446ccc90
--- /dev/null
+++ b/tests/ports/psoc6/README.md
@@ -0,0 +1,74 @@
+# PSoC6 Port Tests
+
+The PSoc6 tests are organized in the following way:
+
+```
+psoc6/
+├─ board_ext_hw/ --> Tests require board with extended hardware config
+│ ├─ diagrams/ --> Boards hardware extension diagrams
+│ ├─ multi/ --> Tests require multiple boards instances
+│ ├─ single/ --> Tests require a single board
+├─ board_only_hw/ --> Tests only require the boards (no additional hardware)
+│ ├─ multi/ --> Tests require multiple boards instances
+│ ├─ single/ --> Tests require a single board
+├─ mp_custom/ --> Tests based on mpremote (and not based on the run-test.py utility)
+├─ inputs/ --> Non-test files utilities required as inputs for the tests
+├─ README
+```
+## Running the tests
+
+In order to run a particular test or group of tests make use of the `tools/psoc6/run_test_plan.py` script.
+
+For example, to run a test in your local machine, use the following command:
+
+```
+python tools/psoc6/run_test_plan.py
+```
+
+And this will execute the test and use by default the "/dev/ttyACM0" serial port, and the "/dev/ttyACM1" as the stub device port.
+
+Alternatively, you can use a HIL devices file and board type to run the tests. For example, to run the `wifi` test with a given board and HIL devices file:
+
+```
+python tools/psoc6/run_test_plan.py wifi --max-retries 1 --hil-devs local-devs.yml --board CY8CKIT-062S2-AI
+```
+
+Check the `tools/psoc6/run_test_plan.py --help` for more details and options.
+
+## Extended Hardware Setup Tests
+
+The tests located in the `board_ext_hw/` implement the validation of hardware peripherals features (GPIO, I2C, SPI, etc.) which require additional or extended hardware configuration to the evaluation boards.
+
+The extended setup is meant to provide the necessary circuitry, electronic system or interface for the tests to be performed. For example, interconnecting some pins (with simple cables) and/or attach some external circuit, device, or discrete electronic components.
+
+### Boards Setup Diagram
+
+Find below the hardware diagrams for each of the supported boards:
+
+#### CY8CPROTO-062-4343W
+
+
+
+#### CY8CPROTO-063-BLE
+
+
+
+#### CY8CKIT-062S2-AI
+
+
+
+### Developing Extended Hardware Setup Tests
+
+The driving principle for designing these tests is to keep a **simple** (as simple as possible), **reproducible** and **scalable** hardware-in-the-loop setup, by aiming for **self-contained** board setups using minimal or no hardware other than the board itself.
+
+Most of the MCU (and boards) provide a given feature and its complementary feature. What do we mean by a feature and its *complementary* feature? Conceptually, many protocols and system topologies are based on a complementary or opposite role interaction: input-output, master-slave, server-client or controller-peripheral, sender-receiver. Its operation is effective when they are interacting together. Thus, the evaluation of one of them is hardly achievable without each other.
+
+In our case, both roles are likely to be available and implementable in a single (or worst case, with a couple of) evaluation board.
+For example, testing a GPIO input API functionality can be done by using a GPIO output API, and physically connecting the 2 ports together with a cable.
+Another example would be to validate an ADC by connecting it to a DAC in the same board. Or connecting an instance of a I2C master to a I2C slave, in the same board, with a few cables and pull-up resistors.
+
+If this is the case, it will often simplify the whole testing hardware infrastructure by removing the need of external hardware devices and complex interfaces. For example, measuring equipment that is not always available, potentially expensive, and harder to reproduce and scale.
+
+Sometimes the *complementary* feature might not be available. In that case, it is worth to evaluate which is the most convenient approach. Let´s imagine we have a master SPI API which could be easily tested with a SPI slave in the same micocontroller. If it is not available it will require to be developed for MicroPython. Sure, it is an effort, but keep in mind that such SPI slave mode is not just a testing utility, but an usable enablement for MicroPython end (primary) users. Besides, how simple, reproducible, scalalable and automatable are the other options?
+
+Yes, also automatable. As the rests of the PSoC6 folder tests, these tests need to be able to **run automatically** under the MicroPython testing suite tools, without the requiring visual inspections and manual checks. That way they can be added to the Continuous Integration testing pipelines, and reassuring quality after every affected or relevant code change.
\ No newline at end of file
diff --git a/tests/ports/psoc6/board_ext_hw/diagrams/cy8ckit-062s2-ai-hil-test-diag.png b/tests/ports/psoc6/board_ext_hw/diagrams/cy8ckit-062s2-ai-hil-test-diag.png
new file mode 100644
index 0000000000000..99b269ab91f5b
Binary files /dev/null and b/tests/ports/psoc6/board_ext_hw/diagrams/cy8ckit-062s2-ai-hil-test-diag.png differ
diff --git a/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-062-4343w-hil-test-diag.png b/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-062-4343w-hil-test-diag.png
new file mode 100644
index 0000000000000..c9f18d8443028
Binary files /dev/null and b/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-062-4343w-hil-test-diag.png differ
diff --git a/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-063-ble-hil-test-diag.png b/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-063-ble-hil-test-diag.png
new file mode 100644
index 0000000000000..8964d776c4bd8
Binary files /dev/null and b/tests/ports/psoc6/board_ext_hw/diagrams/cy8cproto-063-ble-hil-test-diag.png differ
diff --git a/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py b/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py
new file mode 100644
index 0000000000000..3efb7690c3837
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py
@@ -0,0 +1,101 @@
+import os
+import time
+from machine import Pin
+from machine import bitstream
+
+""""
+This script is running together with the bitstream_tx.py test.
+One pin generates a synchronisation signal to inform the transmitter that receiver is ready, and
+another is configured as an input, which is used for receiving the bitstream signals.
+"""
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ bitstream_in_pin_name = "P12_1"
+ rx_ready_signal_pin_name = "P12_3"
+elif "CY8CPROTO-063-BLE" in board:
+ bitstream_in_pin_name = "P5_2"
+ rx_ready_signal_pin_name = "P6_2"
+elif "CY8CKIT-062S2-AI" in board:
+ bitstream_in_pin_name = "P9_2"
+ rx_ready_signal_pin_name = "P9_7"
+
+expected_values = [
+ 8000,
+ 5000,
+ 8000,
+ 5000,
+ 8000,
+ 5000,
+ 8000,
+ 5000,
+ 3000,
+ 1000,
+ 3000,
+ 1000,
+ 3000,
+ 1000,
+ 3000,
+ 1000,
+]
+tolerance = 100
+
+
+def blocking_delay_ms(delay_ms):
+ start = time.ticks_ms()
+ while time.ticks_diff(time.ticks_ms(), start) < delay_ms:
+ pass
+
+
+def notify_readiness_to_tx():
+ rx_ready_signal_pin = Pin(
+ rx_ready_signal_pin_name, Pin.OUT, value=0
+ ) # signal to inform the transmitter that receiver is ready
+ rx_ready_signal_pin.low()
+ blocking_delay_ms(500)
+ rx_ready_signal_pin.high()
+ rx_ready_signal_pin.deinit()
+
+
+def bitstream_rx_measure():
+ global periods
+ periods = []
+ last_value = 0
+ bitstream_in_pin = Pin(bitstream_in_pin_name, Pin.IN)
+ start_time = time.ticks_us()
+ current_value = 0
+
+ for i in range(17):
+ while current_value == last_value:
+ current_value = bitstream_in_pin.value()
+ current_time = time.ticks_us()
+ time_period = time.ticks_diff(current_time, start_time)
+ last_value = current_value
+ start_time = current_time
+ periods.append(time_period)
+
+ bitstream_in_pin.deinit()
+
+
+def validate_bitstream():
+ for i in range(len(periods) - 1):
+ diff = abs(periods[i + 1] - expected_values[i])
+ if diff <= tolerance:
+ print("true")
+ else:
+ print("false")
+ print(
+ "expected :"
+ + str(expected_values[i])
+ + " period: "
+ + str(periods[i + 1])
+ + " diff: "
+ + str(diff)
+ )
+
+
+print("bitstream rx")
+notify_readiness_to_tx()
+bitstream_rx_measure()
+validate_bitstream()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py.exp b/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py.exp
new file mode 100644
index 0000000000000..f2e78d14b2ed1
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/bitstream_rx.py.exp
@@ -0,0 +1,17 @@
+bitstream rx
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
+true
diff --git a/tests/ports/psoc6/board_ext_hw/multi/bitstream_tx.py b/tests/ports/psoc6/board_ext_hw/multi/bitstream_tx.py
new file mode 100755
index 0000000000000..7ac182b6c1a97
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/bitstream_tx.py
@@ -0,0 +1,64 @@
+import sys
+import time
+import os
+from machine import Pin
+from machine import bitstream
+
+"""
+This script is running together with the bitstream_rx.py test.
+One pin generates the test bitstream pattern, and another is configured as
+an input, which is used for synchronization with the receiver.
+"""
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ bitstream_pin_name = "P12_1"
+ wait_signal_pin_name = "P12_3"
+elif "CY8CPROTO-063-BLE" in board:
+ bitstream_pin_name = "P5_2"
+ wait_signal_pin_name = "P6_2"
+elif "CY8CKIT-062S2-AI" in board:
+ bitstream_pin_name = "P9_5"
+ wait_signal_pin_name = "P9_7"
+
+signal_received = False
+bitstream_pin = Pin(bitstream_pin_name, Pin.OUT, value=0)
+
+
+def signal_irq(arg):
+ global signal_received
+ signal_received = True
+
+
+def blocking_delay_ms(delay_ms):
+ start = time.ticks_ms()
+ while time.ticks_diff(time.ticks_ms(), start) < delay_ms:
+ pass
+
+
+def wait_for_rx_ready():
+ global signal_received
+ wait_signal_pin = Pin(wait_signal_pin_name, Pin.IN)
+ wait_signal_pin.irq(handler=signal_irq, trigger=Pin.IRQ_RISING)
+ while not signal_received:
+ pass
+
+ signal_received = False
+ wait_signal_pin.deinit()
+ blocking_delay_ms(500)
+ # print("rx ready")
+
+
+def send_bitstream():
+ timing = [3000000, 1000000, 8000000, 5000000]
+ buf = bytearray([0xF0])
+ for i in range(2):
+ bitstream(bitstream_pin, 0, timing, buf)
+
+ bitstream_pin.deinit()
+
+
+# print("bitstream tx")
+wait_for_rx_ready()
+send_bitstream()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py b/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py
new file mode 100644
index 0000000000000..7c8d30b3d8f57
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py
@@ -0,0 +1,199 @@
+import os
+from machine import I2S, Pin
+import binascii
+import time
+import array
+import struct
+import machine
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ sck_rx_pin = "P5_4"
+ ws_rx_pin = "P5_5"
+ sd_rx_pin = "P5_6"
+ rx_ready_signal_pin_name = "P13_4"
+elif "CY8CPROTO-063-BLE" in board:
+ # These would be the right pins for this test, but unfortunately
+ # the P5_1 is allocated for the UART serial comm terminal communication.
+ # Thus this tests is not currently possible for this board.
+ # sck_rx_pin = "P5_4"
+ # ws_rx_pin = "P5_5"
+ # sd_rx_pin = "P5_6"
+ print("SKIP")
+ raise SystemExit
+elif "CY8CKIT-062S2-AI" in board:
+ sck_rx_pin = "P9_4"
+ ws_rx_pin = "P9_5"
+ sd_rx_pin = "P9_6"
+ rx_ready_signal_pin_name = "P9_7"
+
+rx_ready_signal_pin = None
+
+
+def rx_ready_signal_init():
+ global rx_ready_signal_pin
+ rx_ready_signal_pin = Pin(rx_ready_signal_pin_name, Pin.OUT, value=0)
+ rx_ready_signal_pin.low()
+
+
+def rx_ready_signal_deinit():
+ global rx_ready_signal_pin
+ rx_ready_signal_pin.deinit()
+
+
+def notify_readiness_to_tx():
+ global rx_ready_signal_pin
+ rx_ready_signal_pin.high()
+ time.sleep(0.5)
+ rx_ready_signal_pin.low()
+
+
+def make_expected_sequence():
+ len = 0xFF
+ expected_frame = bytearray(len)
+ for i in range(len):
+ expected_frame[i] = i
+
+ return expected_frame
+
+
+def find_sublist_in_list(full_list, sublist):
+ for i in range(len(full_list) - len(sublist) - 1):
+ if full_list[i : i + len(sublist)] == sublist:
+ return True
+
+ return False
+
+
+def print_i2s_format(raw_buf, bits):
+ samples_buf = []
+ if bits == 16:
+ bytes_per_sample = 2
+ format = " 0:
+ sample = struct.unpack(format, raw_buf[i * bytes_per_sample : (i + 1) * bytes_per_sample])[
+ 0
+ ]
+ if i % 2 == 0:
+ sample_l = sample
+ else:
+ sample_r = sample
+ # sample_l is available from previous
+ sample_tuple = (hex(sample_l), hex(sample_r))
+ samples_buf.append(sample_tuple)
+
+ num_bytes -= bytes_per_sample
+ i += 1
+
+ print("(Left channel, Right channel)")
+ for s_tuple in samples_buf:
+ print(s_tuple)
+
+
+###############################################################################
+print("1. tx-rx data for all formats, rates and bit resolution")
+
+test_rates = [8000, 16000, 32000, 48000, 22050, 44100]
+test_formats = [I2S.MONO, I2S.STEREO]
+test_bits = [16, 32]
+test_bits_resolution = [8, 12, 16, 20, 32]
+
+rx_ready_signal_init()
+exp_seq = make_expected_sequence()
+
+for _format in test_formats:
+ for _bits in test_bits:
+ for _rate in test_rates:
+ if _rate == 22050 or _rate == 44100:
+ machine.freq(machine.AUDIO_I2S_90_MHZ)
+ else:
+ machine.freq(machine.AUDIO_I2S_98_MHZ)
+ audio_in = I2S(
+ 0,
+ sck=sck_rx_pin,
+ ws=ws_rx_pin,
+ sd=sd_rx_pin,
+ mode=I2S.RX,
+ bits=_bits,
+ format=_format,
+ rate=_rate,
+ ibuf=20000,
+ )
+
+ # Try 3 times to overcome synch mismatches
+ for i in range(3):
+ # Read i2s data
+ rx_buf = bytearray([0] * 2560)
+ num_read = audio_in.readinto(rx_buf)
+
+ # validate data
+ is_seq_received = find_sublist_in_list(rx_buf, exp_seq)
+ if is_seq_received:
+ break
+
+ audio_in.deinit()
+ print(
+ f"data received for format = {_format}, bits = {_bits}, rate = {_rate} : {is_seq_received}"
+ )
+
+ notify_readiness_to_tx()
+ # print_i2s_format(rx_buf, 16)
+
+ # Give some time to the i2s_tx to setup
+ time.sleep(2)
+
+rx_ready_signal_deinit()
+
+###############################################################################
+print("\n2. irq non-blocking read implementation ")
+
+rx_done = False
+
+
+def rx_complete_irq(obj):
+ global rx_done
+ rx_done = True
+
+
+machine.freq(machine.AUDIO_I2S_98_MHZ)
+audio_in = I2S(
+ 0,
+ sck=sck_rx_pin,
+ ws=ws_rx_pin,
+ sd=sd_rx_pin,
+ mode=I2S.RX,
+ bits=16,
+ format=I2S.MONO,
+ rate=8000,
+ ibuf=20000,
+)
+
+rx_buf = bytearray([0] * 50)
+audio_in.irq(rx_complete_irq)
+num_read = audio_in.readinto(rx_buf)
+
+while not rx_done:
+ pass
+
+# if we get pass this rx_done flag has been
+# modified by the interrupt
+
+print("rx blocking done")
+audio_in.deinit()
+
+
+###############################################################################
+print("\n3. shift ")
+
+buf = bytearray(b"\xff\xff\xff\xff")
+I2S.shift(buf=buf, bits=16, shift=3)
+print(binascii.hexlify(buf))
+I2S.shift(buf=buf, bits=16, shift=-3)
+print(binascii.hexlify(buf))
diff --git a/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py.exp b/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py.exp
new file mode 100644
index 0000000000000..8317df059e31e
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/i2s_rx.py.exp
@@ -0,0 +1,32 @@
+1. tx-rx data for all formats, rates and bit resolution
+data received for format = 0, bits = 16, rate = 8000 : True
+data received for format = 0, bits = 16, rate = 16000 : True
+data received for format = 0, bits = 16, rate = 32000 : True
+data received for format = 0, bits = 16, rate = 48000 : True
+data received for format = 0, bits = 16, rate = 22050 : True
+data received for format = 0, bits = 16, rate = 44100 : True
+data received for format = 0, bits = 32, rate = 8000 : True
+data received for format = 0, bits = 32, rate = 16000 : True
+data received for format = 0, bits = 32, rate = 32000 : True
+data received for format = 0, bits = 32, rate = 48000 : True
+data received for format = 0, bits = 32, rate = 22050 : True
+data received for format = 0, bits = 32, rate = 44100 : True
+data received for format = 1, bits = 16, rate = 8000 : True
+data received for format = 1, bits = 16, rate = 16000 : True
+data received for format = 1, bits = 16, rate = 32000 : True
+data received for format = 1, bits = 16, rate = 48000 : True
+data received for format = 1, bits = 16, rate = 22050 : True
+data received for format = 1, bits = 16, rate = 44100 : True
+data received for format = 1, bits = 32, rate = 8000 : True
+data received for format = 1, bits = 32, rate = 16000 : True
+data received for format = 1, bits = 32, rate = 32000 : True
+data received for format = 1, bits = 32, rate = 48000 : True
+data received for format = 1, bits = 32, rate = 22050 : True
+data received for format = 1, bits = 32, rate = 44100 : True
+
+2. irq non-blocking read implementation
+rx blocking done
+
+3. shift
+b'f8fff8ff'
+b'ffffffff'
diff --git a/tests/ports/psoc6/board_ext_hw/multi/i2s_tx.py b/tests/ports/psoc6/board_ext_hw/multi/i2s_tx.py
new file mode 100644
index 0000000000000..2c61e785c4921
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/i2s_tx.py
@@ -0,0 +1,150 @@
+import os
+from machine import I2S, Pin
+import binascii
+import time
+import array
+import struct
+import machine
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ sck_tx_pin = "P13_1"
+ ws_tx_pin = "P13_2"
+ sd_tx_pin = "P13_3"
+ wait_signal_pin_name = "P0_4"
+elif "CY8CPROTO-063-BLE" in board:
+ # This would be the right pins for this test, but unfortunately
+ # the P5_1 is allocated for the UART serial comm terminal communication.
+ # So this tests is not currently possible for this board.
+ # sck_tx_pin = "P5_1"
+ # ws_tx_pin = "P5_2"
+ # sd_tx_pin = "P5_3"
+ print("SKIP")
+ raise SystemExit
+elif "CY8CKIT-062S2-AI" in board:
+ sck_tx_pin = "P9_1"
+ ws_tx_pin = "P9_2"
+ sd_tx_pin = "P9_3"
+ wait_signal_pin_name = "P9_7"
+
+signal_received = False
+rising_edge_count = 0
+wait_signal_pin = None
+
+
+def signal_irq(arg):
+ global signal_received
+ global rising_edge_count
+ rising_edge_count += 1
+ signal_received = True
+
+
+def wait_signal_init():
+ global wait_signal_pin
+ wait_signal_pin = Pin(wait_signal_pin_name, Pin.IN)
+ wait_signal_pin.irq(handler=signal_irq, trigger=Pin.IRQ_RISING)
+
+
+def wait_signal_deinit():
+ global wait_signal_pin
+ wait_signal_pin.deinit()
+
+
+def is_rx_done():
+ # The second interrupt notifies rx completion
+ global signal_received
+
+ if signal_received:
+ # Clear flag
+ signal_received = False
+ return True
+ else:
+ return False
+
+
+def make_i2s_tx_frame_detect_pattern():
+ max_value = 0x100
+ reps = 10
+ buf = bytearray([0] * (max_value) * reps)
+ for i in range(reps):
+ for j in range(max_value):
+ buf[i * max_value + j] = j
+
+ # for i in range(reps):
+ # print(binascii.hexlify(buf[i * max_value : (i + 1) * max_value]))
+
+ return buf
+
+
+def print_i2s_format(raw_buf, bits):
+ samples_buf = []
+ if bits == 16:
+ bytes_per_sample = 2
+ format = " 0:
+ sample = struct.unpack(format, raw_buf[i * bytes_per_sample : (i + 1) * bytes_per_sample])[
+ 0
+ ]
+ if i % 2 == 0:
+ sample_l = sample
+ else:
+ sample_r = sample
+ # sample_l is available from previous
+ sample_tuple = (hex(sample_l), hex(sample_r))
+ samples_buf.append(sample_tuple)
+
+ num_bytes -= bytes_per_sample
+ i += 1
+
+ print("(Left channel, Right channel)")
+ for s_tuple in samples_buf:
+ print(s_tuple)
+
+
+###############################################################################
+test_rates = [8000, 16000, 32000, 48000, 22050, 44100]
+test_formats = [I2S.MONO, I2S.STEREO]
+test_bits = [16, 32]
+test_bits_resolution = [8, 12, 16, 20, 32]
+
+
+buf = make_i2s_tx_frame_detect_pattern()
+wait_signal_init()
+
+for _format in test_formats:
+ for _bits in test_bits:
+ for _rate in test_rates:
+ if _rate == 22050 or _rate == 44100:
+ machine.freq(machine.AUDIO_I2S_90_MHZ)
+ else:
+ machine.freq(machine.AUDIO_I2S_98_MHZ)
+ audio_out = I2S(
+ 0,
+ sck=sck_tx_pin,
+ ws=ws_tx_pin,
+ sd=sd_tx_pin,
+ mode=I2S.TX,
+ bits=_bits,
+ format=_format,
+ rate=_rate,
+ ibuf=20000,
+ )
+
+ rx_done = False
+
+ while not rx_done:
+ audio_out.write(buf)
+ time.sleep(1)
+ rx_done = is_rx_done()
+
+ print(f"irq : {rising_edge_count}")
+ audio_out.deinit()
+
+wait_signal_deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py
new file mode 100644
index 0000000000000..c5df153456e95
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py
@@ -0,0 +1,123 @@
+import os
+import machine
+from machine import PDM_PCM, Pin
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W with PSoC62" in board:
+ clk_pin = "P10_4"
+ data_pin = "P10_5"
+ send_signal_to_tx_pin = "P10_3"
+elif "CY8CPROTO-063-BLE" in board:
+ print("SKIP")
+ raise SystemExit
+elif "CY8CKIT-062S2-AI" in board:
+ print("SKIP")
+ raise SystemExit
+
+print("*** PDM_PCM tests - RX ***")
+
+send_signal = Pin(send_signal_to_tx_pin, mode=Pin.OUT, pull=Pin.PULL_DOWN, value=False)
+
+
+def generate_exp_seq(data):
+ exp_seq = bytearray(data * 64)
+ return exp_seq
+
+
+print("1. blocking read implementation ")
+
+_sampling_rate = [8000, 16000, 32000, 48000, 22050, 44100]
+_mode = [PDM_PCM.MONO_LEFT, PDM_PCM.MONO_RIGHT, PDM_PCM.STEREO]
+_bits = 16
+exp_data = [[0x00], [0xFF]]
+iterations = 100
+rounds = 2
+
+for m in range(rounds):
+ send_signal.value(0)
+ exp_seq = generate_exp_seq(exp_data[m])
+ if m == 0:
+ print("*** Test for data high ***")
+ else:
+ print("*** Test for data low ***")
+
+ for i in range(len(_sampling_rate)): # Check for all sampling rates
+ set_sampling_rate = _sampling_rate[i]
+ if _sampling_rate[i] == 22050 or _sampling_rate[i] == 44100:
+ machine.freq(machine.AUDIO_PDM_22_579_000_HZ)
+ else:
+ machine.freq(machine.AUDIO_PDM_24_576_000_HZ)
+ for j in range(len(_mode)): # Check for all modes
+ set_mode = _mode[j]
+ if set_mode == PDM_PCM.STEREO:
+ iterations = 200
+ pdm_pcm = PDM_PCM(
+ 0,
+ sck=clk_pin,
+ data=data_pin,
+ sample_rate=set_sampling_rate,
+ decimation_rate=64,
+ bits=PDM_PCM.BITS_16,
+ format=set_mode,
+ left_gain=0,
+ right_gain=0,
+ )
+ pdm_pcm.init() # Start
+
+ for k in range(iterations):
+ rx_buf = bytearray([1] * 64)
+ num_read = pdm_pcm.readinto(rx_buf)
+ # print("buf :", ''.join(f'{x:02x} ' for x in rx_buf))
+ if rx_buf[:3] == bytearray([exp_data[m][0], exp_data[m][0], exp_data[m][0]]):
+ is_seq_received = rx_buf == exp_seq
+ if is_seq_received:
+ print(
+ f"data received for mode = {set_mode}, bits = PDM_PCM.BITS_16, rate = {set_sampling_rate} : {is_seq_received}"
+ )
+ break
+ pdm_pcm.deinit()
+ send_signal.high()
+ time.sleep(1) # Wait to sync
+
+send_signal.deinit()
+
+###############################################################################
+print("\n2. irq non-blocking read implementation ")
+
+rx_done = False
+
+
+def rx_complete_irq(obj):
+ global rx_done
+ rx_done = True
+
+
+machine.freq(machine.AUDIO_PDM_22_579_000_HZ)
+pdm_pcm = PDM_PCM(
+ 0,
+ sck=clk_pin,
+ data=data_pin,
+ sample_rate=set_sampling_rate,
+ decimation_rate=64,
+ bits=PDM_PCM.BITS_16,
+ format=set_mode,
+ left_gain=0,
+ right_gain=0,
+)
+
+pdm_pcm.init() # Start
+
+rx_buf = bytearray([0] * 64)
+pdm_pcm.irq(rx_complete_irq)
+num_read = pdm_pcm.readinto(rx_buf)
+
+while not rx_done:
+ pass
+
+# if we get pass this rx_done flag has been
+# modified by the interrupt
+
+print("rx blocking done")
+pdm_pcm.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py.exp b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py.exp
new file mode 100644
index 0000000000000..7996b44e12e83
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py.exp
@@ -0,0 +1,43 @@
+*** PDM_PCM tests - RX ***
+1. blocking read implementation
+*** Test for data high ***
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 44100 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 44100 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 44100 : True
+*** Test for data low ***
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 8000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 16000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 32000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 48000 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 22050 : True
+data received for mode = 0, bits = PDM_PCM.BITS_16, rate = 44100 : True
+data received for mode = 1, bits = PDM_PCM.BITS_16, rate = 44100 : True
+data received for mode = 2, bits = PDM_PCM.BITS_16, rate = 44100 : True
+
+2. irq non-blocking read implementation
+rx blocking done
diff --git a/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_tx.py b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_tx.py
new file mode 100644
index 0000000000000..c1fa5aaa61e0a
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm_tx.py
@@ -0,0 +1,42 @@
+import os
+from machine import Pin
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ clk_in_pin = "P10_1"
+ data_out_pin = "P10_5"
+ sync_in_pin = "P10_0"
+elif "CY8CPROTO-063-BLE" in board:
+ print("SKIP")
+ raise SystemExit
+elif "CY8CKIT-062S2-AI" in board:
+ print("SKIP")
+ raise SystemExit
+
+sig_val = 0
+test_done = False
+
+
+def signal_irq(event):
+ global sig_val
+ sig_val += 1
+
+
+data_out = Pin(data_out_pin, mode=Pin.OUT, pull=Pin.PULL_DOWN, value=False)
+clk_in = Pin(clk_in_pin, Pin.IN, Pin.PULL_DOWN)
+sync_data = Pin(sync_in_pin, Pin.IN, Pin.PULL_DOWN)
+sync_data.irq(handler=signal_irq, trigger=Pin.IRQ_RISING)
+
+data_out.value(1)
+while sig_val == 0:
+ pass
+
+data_out.value(0)
+while sig_val == 1:
+ pass
+
+data_out.deinit()
+clk_in.deinit()
+sync_data.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/spi_master.py b/tests/ports/psoc6/board_ext_hw/multi/spi_master.py
new file mode 100644
index 0000000000000..990a70d11a4d6
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/spi_master.py
@@ -0,0 +1,119 @@
+import binascii
+import time
+import os
+
+try:
+ from machine import Pin, SPI
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ # Allocate pin based on board
+ sck_master_pin = "P6_2"
+ mosi_master_pin = "P6_0"
+ miso_master_pin = "P6_1"
+ ssel_master_pin = "P6_3"
+if "CY8CPROTO-063-BLE" in board:
+ # Allocate pin based on board
+ sck_master_pin = "P9_2"
+ mosi_master_pin = "P9_0"
+ miso_master_pin = "P9_1"
+ ssel_master_pin = "P9_3"
+elif "CY8CKIT-062S2-AI" in board:
+ # Current not supported as
+ # SPI Slave on P9_x pins seems to be not supported
+ sck_master_pin = "P9_2"
+ mosi_master_pin = "P9_0"
+ miso_master_pin = "P9_1"
+ ssel_master_pin = "P9_3"
+ print("SKIP")
+ raise SystemExit
+
+# 0. Construct SPI object
+spi_obj = SPI(
+ baudrate=1000000,
+ polarity=0,
+ phase=0,
+ bits=8,
+ firstbit=SPI.MSB,
+ sck=sck_master_pin,
+ mosi=mosi_master_pin,
+ miso=miso_master_pin,
+)
+cs = Pin(ssel_master_pin, Pin.OUT, value=1)
+
+# 1. write() read() validation
+# - Master: write() a data set to the slave.
+# - Slave: waits and read() data set.
+# - Slave: increase all data set bytes by 1.
+# - Slave: write() the modified data to the master.
+
+tx_buf = b"\x08\x06\x04\x02\x07\x05\x03\x01"
+
+cs.low()
+spi_obj.write(tx_buf)
+cs.high()
+
+time.sleep_ms(500) # ensure slave has replied
+rx_buf = bytearray(8)
+cs.low()
+rx_buf = spi_obj.read(8)
+cs.high()
+
+exp_rx = b"\t\x07\x05\x03\x08\x06\x04\x02"
+print("master write() and read() (tx_buf + 1): ", exp_rx == rx_buf)
+
+# 2. readinto() validation
+# - Slave: increase once again all data set bytes by 1.
+# - Slave: write() the modified data set to the master.
+# - Master: waits and readinto() the modified data set.
+
+time.sleep_ms(500) # ensure slave has replied
+rx_buf = bytearray(8)
+cs.low()
+spi_obj.readinto(rx_buf)
+cs.high()
+
+exp_rx = b"\n\x08\x06\x04\t\x07\x05\x03"
+print("master readinto() (tx_buf + 2):", exp_rx == rx_buf)
+
+# 3. write_readinto() read validation
+# - Slave: increase once again all data set bytes by 1.
+# - Slave: write() the modified data set to the master.
+# - Master: waits and readinto() the data set (written data set is not processed).
+
+time.sleep_ms(200)
+rx_buf = bytearray(8)
+cs.low()
+spi_obj.write_readinto(tx_buf, rx_buf)
+cs.high()
+
+exp_rx = b"\x0b\t\x07\x05\n\x08\x06\x04"
+print("master write_readinto() (tx_buf + 3): ", exp_rx == rx_buf)
+
+# 4. write_readinto() write validation
+# - Master: write_readinto() a data set to the slave (read data is ignored).
+# - Slave: waits and read() data set.
+# - Slave: decreases all data set bytes by 1.
+# - Slave: write() the modified data set to the master.
+# - Master: waits and read() the modified data set.
+
+tx_buf = b"\x01\x02\x03\x04\x05\x06\x07\x08"
+cs.low()
+spi_obj.write_readinto(tx_buf, rx_buf)
+cs.high()
+
+time.sleep_ms(500) # ensure slave has replied
+rx_buf = bytearray(8)
+cs.low()
+rx_buf = spi_obj.read(8)
+cs.high()
+
+exp_rx = b"\x00\x01\x02\x03\x04\x05\x06\x07"
+print("master write_readinto() and read() (tx_buf - 1): ", exp_rx == rx_buf)
+
+# 5. SPI object deinit
+spi_obj.deinit()
+cs.deinit
diff --git a/tests/ports/psoc6/board_ext_hw/multi/spi_master.py.exp b/tests/ports/psoc6/board_ext_hw/multi/spi_master.py.exp
new file mode 100644
index 0000000000000..43f51d5b75679
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/spi_master.py.exp
@@ -0,0 +1,4 @@
+master write() and read() (tx_buf + 1): True
+master readinto() (tx_buf + 2): True
+master write_readinto() (tx_buf + 3): True
+master write_readinto() and read() (tx_buf - 1): True
diff --git a/tests/ports/psoc6/board_ext_hw/multi/spi_slave.py b/tests/ports/psoc6/board_ext_hw/multi/spi_slave.py
new file mode 100644
index 0000000000000..965225571da49
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/spi_slave.py
@@ -0,0 +1,81 @@
+import binascii
+import time
+import os
+
+try:
+ from machine import Pin, SPI, SPISlave
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+ # Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ sck_slave_pin = "P6_2"
+ mosi_slave_pin = "P6_0"
+ miso_slave_pin = "P6_1"
+ ssel_slave_pin = "P6_3"
+if "CY8CPROTO-063-BLE" in board:
+ # Allocate pin based on board
+ sck_slave_pin = "P9_2"
+ mosi_slave_pin = "P9_0"
+ miso_slave_pin = "P9_1"
+ ssel_slave_pin = "P9_3"
+elif "CY8CKIT-062S2-AI" in board:
+ # Current not supported as
+ # SPI Slave on P9_x pins seems to be not supported
+ sck_master_pin = "P9_2"
+ mosi_master_pin = "P9_0"
+ miso_master_pin = "P9_1"
+ ssel_master_pin = "P9_3"
+ print("SKIP")
+ raise SystemExit
+
+
+def data_increase_by_one(buf):
+ for i in range(len(buf)):
+ buf[i] += 1
+
+
+def data_decrease_by_one(buf):
+ for i in range(len(buf)):
+ buf[i] -= 1
+
+
+# 0. Construct SPI Slave obj
+spi_obj = SPISlave(
+ baudrate=1000000,
+ polarity=0,
+ phase=0,
+ bits=8,
+ firstbit=SPISlave.MSB,
+ ssel=ssel_slave_pin,
+ sck=sck_slave_pin,
+ mosi=mosi_slave_pin,
+ miso=miso_slave_pin,
+)
+
+# 1. Reply for master write() read() validation
+rx_buf = bytearray(8)
+spi_obj.read(rx_buf)
+
+data_increase_by_one(rx_buf)
+spi_obj.write(rx_buf)
+
+# 2. Reply for master readinto() validation
+data_increase_by_one(rx_buf)
+spi_obj.write(rx_buf)
+
+# 3. Reply for write_readinto() read validation
+data_increase_by_one(rx_buf)
+spi_obj.write(rx_buf)
+
+# 4. Reply write_readinto() write validation
+rx_buf = bytearray(8)
+spi_obj.read(rx_buf)
+
+data_decrease_by_one(rx_buf)
+spi_obj.write(rx_buf)
+
+# 5. SPI Slave object deinit
+spi_obj.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/time_pulse_sig_gen.py b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_sig_gen.py
new file mode 100644
index 0000000000000..e2297151c0b1e
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_sig_gen.py
@@ -0,0 +1,54 @@
+from machine import Pin
+import os
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ pulse_out_pin = "P12_1"
+ ack_in_pin = "P12_3"
+elif "CY8CPROTO-063-BLE" in board:
+ pulse_out_pin = "P5_2"
+ ack_in_pin = "P6_2"
+elif "CY8CKIT-062S2-AI" in board:
+ pulse_out_pin = "P9_5"
+ ack_in_pin = "P9_7"
+
+ack_recvd = False
+
+
+def cback(pin):
+ global ack_recvd
+ ack_recvd = True
+
+
+pulse_out = Pin(pulse_out_pin, Pin.OUT)
+ack_in = Pin(ack_in_pin, Pin.IN)
+ack_in.irq(trigger=Pin.IRQ_RISING, handler=cback)
+
+# Starting condition always low pulse
+pulse_out.low()
+
+while not ack_recvd:
+ pass # Wait for the Begin ACK signal
+
+
+def blocking_delay_ms(delay_ms):
+ start = time.ticks_ms()
+ while time.ticks_diff(time.ticks_ms(), start) < delay_ms:
+ pass
+
+
+blocking_delay_ms(200)
+
+# Generate high pulse
+pulse_out.high()
+
+# Wait for 1sec to time the pulse
+blocking_delay_ms(1000)
+
+pulse_out.low()
+
+# Deinitialize the pins
+pulse_out.deinit()
+ack_in.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py
new file mode 100644
index 0000000000000..56fdc80e59174
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py
@@ -0,0 +1,44 @@
+from machine import Pin, time_pulse_us
+import os
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ pulse_in_pin = "P12_1"
+ ack_out_pin = "P12_3"
+elif "CY8CPROTO-063-BLE" in board:
+ pulse_in_pin = "P5_2"
+ ack_out_pin = "P6_2"
+elif "CY8CKIT-062S2-AI" in board:
+ pulse_in_pin = "P9_2"
+ ack_out_pin = "P9_7"
+
+
+def blocking_delay_ms(delay_ms):
+ start = time.ticks_ms()
+ while time.ticks_diff(time.ticks_ms(), start) < delay_ms:
+ pass
+
+
+pulse_in = Pin(pulse_in_pin, Pin.IN, Pin.PULL_DOWN)
+ack_out = Pin(ack_out_pin, Pin.OUT, value=0)
+ack_out.low()
+
+width = 0
+
+blocking_delay_ms(2000)
+
+# Send begin ack to start generating pulse
+ack_out.high()
+
+# Measure the pulse width
+width = time_pulse_us(pulse_in, 1, 10000000)
+
+print(
+ f"Pulse timing verified: {True if (0.98 < (width / 1000000) < 1.2) else 'False, width=' + str(width / 1000000)}"
+)
+
+# Deinitialize the pins
+pulse_in.deinit()
+ack_out.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py.exp b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py.exp
new file mode 100644
index 0000000000000..d0daee6841902
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/multi/time_pulse_us.py.exp
@@ -0,0 +1 @@
+Pulse timing verified: True
diff --git a/tests/ports/psoc6/board_ext_hw/single/adc.py b/tests/ports/psoc6/board_ext_hw/single/adc.py
new file mode 100644
index 0000000000000..5aba86ee9fd49
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/adc.py
@@ -0,0 +1,113 @@
+### ADC Functional test
+
+"""Setup description:
+Construct a basic voltage divider with 120 ohms each resistor. Supply the ends with 3.3V and GND.
+Available voltage values are then - 3.3V, ~1.7V, 0V.
+Pin connections:
+Voltage Divider circuit On Target Board
+ 3.3V end adc_pin_max
+ Mid point adc_pin_mid
+ GND end adc_pin_gnd
+*Known issue: When connected to GND, you may not get exact 0V and this may vary board to board.
+"""
+
+import os
+import time
+from machine import ADC, ADCBlock
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ gnd_tests_skip = False
+ adc_pin_gnd = "P10_4"
+ adc_pin_mid = "P10_3"
+ adc_mid_chan = 3
+ adc_pin_max = "P10_2"
+ adc_wrong_pin_name = "P13_7"
+elif "CY8CPROTO-063-BLE" in board:
+ gnd_tests_skip = False
+ adc_pin_gnd = "P10_2"
+ adc_pin_mid = "P10_3"
+ adc_mid_chan = 3
+ adc_pin_max = "P10_4"
+ adc_wrong_pin_name = "P13_7"
+elif "CY8CKIT-062S2-AI" in board:
+ gnd_tests_skip = True
+ adc_pin_mid = "P10_0"
+ adc_mid_chan = 0
+ adc_pin_max = "P10_1"
+ adc_wrong_pin_name = "P13_7"
+
+# 0.35V
+tolerance_uv = 350000
+
+tolerance_raw = 4000
+
+block = None
+
+
+def validate_adc_uv_value(exp_volt, act_volt):
+ if not (exp_volt - tolerance_uv) < act_volt < (exp_volt + tolerance_uv):
+ print(
+ "Expected voltage - ",
+ exp_volt,
+ "(uV) is approx same as obtained voltage(uV): ",
+ act_volt,
+ )
+
+
+def validate_adc_raw_value(exp_volt, act_volt):
+ if not (exp_volt - tolerance_raw) < act_volt < (exp_volt + tolerance_raw):
+ print(
+ "Expected voltage - ",
+ exp_volt,
+ "(raw) is approx same as obtained voltage(raw): ",
+ act_volt,
+ )
+
+
+# Exception should be raised
+try:
+ adc = ADC(adc_wrong_pin_name)
+except:
+ print("Invalid ADC Pin\n")
+
+block = ADCBlock(0, bits=12)
+# ADCBlock.connect(channel)
+adc1 = block.connect(3)
+block.deinit()
+
+# ADCBlock.connect(source)
+block = ADCBlock(0, bits=12)
+adc1 = block.connect(adc_pin_mid)
+block.deinit()
+
+if not gnd_tests_skip:
+ adc0 = ADC(adc_pin_gnd, sample_ns=1000)
+
+ adc0_value_uv = adc0.read_uv()
+ validate_adc_uv_value(0, adc0_value_uv)
+ adc0_value_raw = adc0.read_u16()
+ validate_adc_raw_value(0, adc0_value_raw)
+
+ adc0.deinit()
+
+# ADCBlock.connect(channel,source)
+block = ADCBlock(0, bits=12)
+adc1 = block.connect(adc_mid_chan, adc_pin_mid)
+
+adc2 = ADC(adc_pin_max, sample_ns=1000)
+
+adc1_value_uv = adc1.read_uv()
+validate_adc_uv_value(1650000, adc1_value_uv)
+adc1_value_raw = adc1.read_u16()
+validate_adc_raw_value(16385, adc1_value_raw)
+
+adc2_value_uv = adc2.read_uv()
+validate_adc_uv_value(3300000, adc2_value_uv)
+adc2_value_raw = adc2.read_u16()
+validate_adc_raw_value(32767, adc2_value_raw)
+
+
+adc1.deinit()
+adc2.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/single/adc.py.exp b/tests/ports/psoc6/board_ext_hw/single/adc.py.exp
new file mode 100644
index 0000000000000..cba6eb17f247f
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/adc.py.exp
@@ -0,0 +1,2 @@
+Invalid ADC Pin
+
diff --git a/tests/ports/psoc6/board_ext_hw/single/i2c.py b/tests/ports/psoc6/board_ext_hw/single/i2c.py
new file mode 100644
index 0000000000000..511ff4d27c1b4
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/i2c.py
@@ -0,0 +1,228 @@
+### I2C
+
+from machine import I2C
+from machine import SoftI2C
+from machine import I2CSlave
+import machine
+import binascii
+import time
+import os
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ scl_master_pin = "P10_0"
+ sda_master_pin = "P10_1"
+ scl_master_soft_pin = "P9_5"
+ sda_master_soft_pin = "P9_3"
+ scl_slave_pin = "P9_0"
+ sda_slave_pin = "P9_1"
+elif "CY8CPROTO-063-BLE" in board:
+ scl_master_pin = "P6_4"
+ sda_master_pin = "P6_5"
+ scl_master_soft_pin = "P7_2"
+ sda_master_soft_pin = "P0_5"
+ scl_slave_pin = "P10_0"
+ sda_slave_pin = "P10_1"
+elif "CY8CKIT-062S2-AI" in board:
+ scl_master_pin = "P0_2"
+ sda_master_pin = "P0_3"
+ scl_master_soft_pin = "P9_5"
+ sda_master_soft_pin = "P9_4"
+ scl_slave_pin = "P9_0"
+ sda_slave_pin = "P9_1"
+
+# Test hardware setup
+##############################################
+# I2C SDA and SCL signals from master and slave
+# must be connected together (in the same board)
+# and use pull-up resistors (4.7Kohm) for each line
+
+# 0. Error missing arguments in constructors
+##############################################
+try:
+ i2c = I2C(sda=sda_master_pin, freq=400000)
+except TypeError as e:
+ print(e)
+
+try:
+ i2c = I2C(scl=scl_master_pin, freq=400000)
+except TypeError as e:
+ print(e)
+
+try:
+ i2c = I2CSlave(sda=sda_slave_pin, freq=400000)
+except TypeError as e:
+ print(e)
+
+try:
+ i2c = I2CSlave(scl=scl_slave_pin, freq=400000)
+except TypeError as e:
+ print(e)
+
+try:
+ i2c = I2CSlave(sda=sda_slave_pin, scl=scl_slave_pin, freq=400000)
+except TypeError as e:
+ print(e)
+
+# 1. Construct slave and master instances
+##############################################
+slave_addr = 0x45
+i2c_slave = I2CSlave(scl=scl_slave_pin, sda=sda_slave_pin, addr=slave_addr)
+
+i2c_master = I2C(scl=scl_master_pin, sda=sda_master_pin)
+i2c_soft_master = SoftI2C(scl=scl_master_soft_pin, sda=sda_master_soft_pin)
+
+
+def i2c_tests(i2c_master):
+ global slave_addr, i2c_slave
+
+ # 2. Scan for slaves
+ ##############################################
+ addr_list = i2c_master.scan()
+ addr_in_bus = slave_addr in addr_list
+ print("Found slave with address ", slave_addr, " : ", addr_in_bus)
+
+ # 3. Master to slave write
+ ##############################################
+
+ # writeto()
+ i2c_slave_rcv_buf = bytearray(8)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+
+ master_write_data = b"\x01\x44\x17\x88\x98\x11\x34\xff"
+ i2c_master.writeto(slave_addr, master_write_data)
+
+ time.sleep_ms(100)
+
+ # print("received buffer : ", binascii.hexlify(i2c_slave_rcv_buf))
+ print("master writeto() and received by slave: ", i2c_slave_rcv_buf == master_write_data)
+
+ # writeto_mem()
+ i2c_slave_rcv_buf = bytearray(4)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+ master_write_data = b"\x03\x44\x55"
+ i2c_master.writeto_mem(slave_addr, 0x01, master_write_data)
+
+ time.sleep_ms(100)
+
+ print("master writeto_mem() and received by slave: ", i2c_slave_rcv_buf == b"\x01\x03\x44\x55")
+
+ # writevto()
+ i2c_slave_rcv_buf = bytearray(8)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+
+ master_write_data = [b"\x01\x44\x55\x23", b"\x98\x03\x44\xee"]
+ i2c_master.writevto(slave_addr, master_write_data)
+
+ time.sleep_ms(100)
+
+ print(
+ "master writevto() and received by slave: ",
+ i2c_slave_rcv_buf == b"\x01\x44\x55\x23\x98\x03\x44\xee",
+ )
+
+ # 4. Master to slave read
+ ##############################################
+ i2c_slave_tx_buf = bytearray([0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x77, 0x44])
+ i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+
+ # readfrom_into()
+ master_read_data = bytearray(8)
+ i2c_master.readfrom_into(slave_addr, master_read_data)
+ print(
+ "master readfrom_into() and transmitted from slave: ", i2c_slave_tx_buf == master_read_data
+ )
+
+ # readfrom()
+ i2c_slave_tx_buf = bytearray([0xAB, 0xCD])
+ i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+
+ master_read_data = i2c_master.readfrom(slave_addr, 2)
+ print("master readfrom() and transmitted from slave: ", i2c_slave_tx_buf == master_read_data)
+
+ # readfrom_mem_into()
+ i2c_slave_rcv_buf = bytearray(1)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+ i2c_slave_tx_buf = bytearray([0x03, 0x44, 0x55])
+ i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+ master_read_data = bytearray(3)
+
+ i2c_master.readfrom_mem_into(slave_addr, 0x01, master_read_data)
+ print(
+ "master readfrom_mem_into() and transmitted from slave: ",
+ i2c_slave_tx_buf == master_read_data,
+ )
+
+ # readfrom_mem()
+ i2c_slave_rcv_buf = bytearray(1)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+ i2c_slave_tx_buf = bytearray([0x43, 0x22, 0x77])
+ i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+ master_read_data = bytearray(3)
+
+ master_read_data = i2c_master.readfrom_mem(slave_addr, 0x01, 3)
+ print(
+ "master readfrom_mem() and transmitted from slave: ", i2c_slave_tx_buf == master_read_data
+ )
+
+ # 5. Master to slave write and read with stop false
+ ###################################################
+ i2c_slave_rcv_buf = bytearray(3)
+ i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+ i2c_slave_tx_buf = bytearray([0x22, 0x11, 0x55])
+ i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+ master_read_data = bytearray(3)
+
+ master_write_data = b"\x02\x32\x89"
+ i2c_master.writeto(slave_addr, master_write_data, False)
+ master_read_data = i2c_master.readfrom(slave_addr, 3, True)
+
+ print(
+ "master writeto(stop=false) and received by slave: ",
+ i2c_slave_rcv_buf == master_write_data,
+ )
+ print("master readfrom() and transmitted from slave : ", i2c_slave_tx_buf == master_read_data)
+
+
+print("\nI2C Hardware\n")
+i2c_tests(i2c_master)
+
+print("\nI2C Software\n")
+i2c_tests(i2c_soft_master)
+
+# 6. Primitive operation with SoftI2C
+
+print("\nI2C Primitives\n")
+
+i2c_soft_master.init(scl=scl_master_soft_pin, sda=sda_master_soft_pin)
+
+i2c_slave_rcv_buf = bytearray(3)
+i2c_slave.conf_receive_buffer(i2c_slave_rcv_buf)
+
+# 6.1. Master to slave write
+# first byte = slave = 0x45 << 1 bit = 0x8a + w (0)
+master_write_data = b"\x8a\x03\x44\x55"
+i2c_soft_master.start()
+i2c_soft_master.write(master_write_data)
+i2c_soft_master.stop()
+
+print("master soft write based on primitives: ", i2c_slave_rcv_buf == b"\x03\x44\x55")
+
+# 6.2. Master to slave read
+# first byte = slave = 0x45 << 1 bit = 0x8a + r (1) = 0x8b
+i2c_slave_tx_buf = bytearray([0x43, 0x22, 0x77])
+i2c_slave.conf_transmit_buffer(i2c_slave_tx_buf)
+
+master_read_data = bytearray(3)
+
+i2c_soft_master.start()
+i2c_soft_master.write(b"\x8b")
+i2c_soft_master.readinto(master_read_data)
+i2c_soft_master.stop()
+
+print("master readinto() and transmitted from slave: ", master_read_data == b"\x43\x22\x77")
+
+# 7. Deinit runs without error
+i2c_master.deinit()
+i2c_slave.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/single/i2c.py.exp b/tests/ports/psoc6/board_ext_hw/single/i2c.py.exp
new file mode 100644
index 0000000000000..adda95a91c01e
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/i2c.py.exp
@@ -0,0 +1,36 @@
+'scl' argument required
+'sda' argument required
+'scl' argument required
+'sda' argument required
+'addr' argument required
+
+I2C Hardware
+
+Found slave with address 69 : True
+master writeto() and received by slave: True
+master writeto_mem() and received by slave: True
+master writevto() and received by slave: True
+master readfrom_into() and transmitted from slave: True
+master readfrom() and transmitted from slave: True
+master readfrom_mem_into() and transmitted from slave: True
+master readfrom_mem() and transmitted from slave: True
+master writeto(stop=false) and received by slave: True
+master readfrom() and transmitted from slave : True
+
+I2C Software
+
+Found slave with address 69 : True
+master writeto() and received by slave: True
+master writeto_mem() and received by slave: True
+master writevto() and received by slave: True
+master readfrom_into() and transmitted from slave: True
+master readfrom() and transmitted from slave: True
+master readfrom_mem_into() and transmitted from slave: True
+master readfrom_mem() and transmitted from slave: True
+master writeto(stop=false) and received by slave: True
+master readfrom() and transmitted from slave : True
+
+I2C Primitives
+
+master soft write based on primitives: True
+master readinto() and transmitted from slave: True
diff --git a/tests/ports/psoc6/board_ext_hw/single/pin.py b/tests/ports/psoc6/board_ext_hw/single/pin.py
new file mode 100644
index 0000000000000..d1da1b8ba165f
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/pin.py
@@ -0,0 +1,98 @@
+import os
+from machine import Pin
+import machine
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ pin1_name = "P13_7"
+ pin2_name = "P13_6"
+elif "CY8CPROTO-063-BLE" in board:
+ pin1_name = "P12_6"
+ pin2_name = "P12_7"
+elif "CY8CKIT-062S2-AI" in board:
+ pin1_name = "P9_6"
+ pin2_name = "P9_7"
+
+# Pin out and pin in must be connected
+# together in the board
+
+pin_out = Pin(pin1_name, mode=Pin.OUT, value=True)
+pin_in = Pin(pin2_name, Pin.IN)
+
+# Validating initialization values
+print("pin out initial value 1: ", pin_in.value() == 1)
+
+pin_out.deinit()
+pin_out = Pin(pin1_name, mode=Pin.OUT, value=False)
+print("pin out initial value 0: ", pin_in.value() == 0)
+
+# Validation different output setting
+pin_out.value(1)
+print("pin out value 1: ", pin_in.value() == 1)
+
+pin_out.value(0)
+print("pin out value 0: ", pin_in.value() == 0)
+
+pin_out.value(True)
+print("pin out value True: ", pin_in.value() == True)
+
+pin_out.value(False)
+print("pin out value False: ", pin_in.value() == False)
+
+pin_out.high()
+print("pin out value high: ", pin_in.value() == 1)
+
+pin_out.low()
+print("pin out value low: ", pin_in.value() == 0)
+
+pin_out.on()
+print("pin out value on: ", pin_in.value() == 1)
+
+pin_out.off()
+print("pin out value off: ", pin_in.value() == 0)
+
+pin_out(1)
+print("pin out callable 1: ", pin_in.value() == 1)
+
+pin_out(0)
+print("pin out callable 0: ", pin_in.value() == 0)
+
+
+# TODO: Check how to tests the PULLUP enablement functionality.
+# This is not really working because of the hardware setup? init value set?
+# pull up hardware configuration not working?
+# Validating pull resistors configurations and open drain mode
+# pin_out.deinit()
+# pin_out = Pin(pin1_name, pull=None, mode=Pin.OPEN_DRAIN)
+# print("pin out with pull none initially 0 or 1: ", pin_in.value() == 0 or pin_in.value() == 1)
+
+# pin_out.deinit()
+# pin_out = Pin(pin1_name, pull=Pin.PULL_DOWN, mode=Pin.OUT)
+# print("pin out with pull down initially down: ", pin_in.value() == 0)
+
+# pin_out.deinit()
+# pin_out = Pin(pin1_name, pull=Pin.PULL_UP, mode=Pin.OUT)
+# print("pin out with pull up initially high: ", pin_in.value() == 1)
+
+
+# Validating interrupts
+def blocking_delay_ms(delay_ms):
+ start = time.ticks_ms()
+ while time.ticks_diff(time.ticks_ms(), start) < delay_ms:
+ pass
+
+
+pin_in.irq(handler=lambda t: print("interrupt triggered rising"), trigger=Pin.IRQ_RISING)
+pin_out.high()
+
+blocking_delay_ms(1000)
+
+pin_in.irq(handler=lambda t: print("interrupt triggered falling"), trigger=Pin.IRQ_FALLING)
+pin_out.low()
+
+blocking_delay_ms(1000)
+
+pin_in.deinit()
+pin_out.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/single/pin.py.exp b/tests/ports/psoc6/board_ext_hw/single/pin.py.exp
new file mode 100644
index 0000000000000..ab4a9ed231dc1
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/pin.py.exp
@@ -0,0 +1,14 @@
+pin out initial value 1: True
+pin out initial value 0: True
+pin out value 1: True
+pin out value 0: True
+pin out value True: True
+pin out value False: True
+pin out value high: True
+pin out value low: True
+pin out value on: True
+pin out value off: True
+pin out callable 1: True
+pin out callable 0: True
+interrupt triggered rising
+interrupt triggered falling
diff --git a/tests/ports/psoc6/board_ext_hw/single/pwm.py b/tests/ports/psoc6/board_ext_hw/single/pwm.py
new file mode 100644
index 0000000000000..1b788a4ebdd40
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/pwm.py
@@ -0,0 +1,158 @@
+# PWM test
+"""
+Setup: Connect pwm_pin to pin_in
+"""
+
+from machine import PWM, Pin
+import os
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ pwm_pin = "P13_7"
+ pin_in = "P13_6"
+elif "CY8CPROTO-063-BLE" in board:
+ pwm_pin = "P12_6"
+ pin_in = "P12_7"
+elif "CY8CKIT-062S2-AI" in board:
+ pwm_pin = "P9_6"
+ pin_in = "P9_7"
+
+input_pin = Pin(pin_in, Pin.IN)
+
+
+def measure_signal():
+ # In some cases, the first measurement is not accurate
+ # (negative time)
+ # so we need to measure the signal until we get a positive timing
+ positive_timing = False
+ attempts = 0
+ while not positive_timing and attempts < 3:
+ init_level = input_pin.value()
+ # Transient until edge transition
+ # when the synch is done
+ while input_pin.value() == init_level:
+ pass
+
+ # start measuring just after the edge transition
+ init_level_start_time = time.ticks_us()
+
+ # wait for edge transition
+ while input_pin.value() == (not init_level):
+ pass
+ init_level_end_time = time.ticks_us()
+
+ # wait for next edge transition
+ while input_pin.value() == init_level:
+ pass
+ second_level_start_time = time.ticks_us()
+
+ # Identify the low and high level timestamps
+ if init_level == 1:
+ low_level_start_time = init_level_start_time
+ low_level_end_time = init_level_end_time
+ high_level_start_time = init_level_end_time
+ high_level_end_time = second_level_start_time
+ else:
+ low_level_start_time = init_level_end_time
+ low_level_end_time = second_level_start_time
+ high_level_start_time = init_level_start_time
+ high_level_end_time = init_level_end_time
+
+ on_time = time.ticks_diff(high_level_end_time, high_level_start_time)
+ off_time = time.ticks_diff(low_level_end_time, low_level_start_time)
+ time_period = on_time + off_time
+
+ attempts += 1
+ if time_period > 0:
+ positive_timing = True
+
+ # Calculate frequency and duty cycle
+ calc_freq = 1000000 / (time_period)
+ calc_dc = (on_time / time_period) * 100
+ return calc_dc, calc_freq
+
+
+def validate_signal(exp_freq=0, calc_freq=0, calc_dc=0, exp_dc=0, exp_duty_u16=0, exp_duty_ns=0):
+ tolerance = 0.5
+ duty_tolerance = 1.0
+
+ set_freq = pwm.freq()
+ set_duty_u16 = 0
+ set_duty_ns = 0
+
+ if exp_duty_ns:
+ set_duty_ns = pwm.duty_ns()
+ if exp_duty_u16:
+ set_duty_u16 = pwm.duty_u16()
+
+ if ((exp_freq - tolerance) < set_freq < (exp_freq + tolerance)) == False:
+ print(
+ f"Expected freq does not match set freq! \n Exp freq: {exp_freq} \n Set freq: {set_freq}"
+ )
+
+ if ((exp_freq - tolerance) < calc_freq < (exp_freq + tolerance)) == False:
+ print(
+ f"Expected freq does not match calc freq! \n Exp freq: {exp_freq} \n Set freq: {calc_freq}"
+ )
+ # This one is failing intermittently on the CI/CD
+ if ((exp_dc - duty_tolerance) < calc_dc < (exp_dc + duty_tolerance)) == False:
+ print(f"Exp dc(%) does not match calc dc(%)! \n Exp dc: {exp_dc} \n Calc dc: {calc_dc}")
+
+ if set_duty_ns != 0:
+ if set_duty_ns != exp_duty_ns:
+ print(
+ f"Exp dc(ns) does not match set dc(ns) \n Exp dc: {exp_duty_ns} \n Set dc: {set_duty_ns}"
+ )
+
+ if set_duty_u16 != 0:
+ if set_duty_u16 != exp_duty_u16:
+ print(
+ f"Exp dc(raw) does not match set dc(raw) \n Exp dc: {exp_duty_u16} \n Set dc: {set_duty_u16}"
+ )
+
+
+print("*** PWM tests ***")
+# T = 1sec (25% dc)
+pwm = PWM(pwm_pin, freq=1, duty_ns=250000000)
+time.sleep(2) # Wait for the pwm signal to be initialized and started
+calc_dc, calc_freq = measure_signal()
+validate_signal(
+ exp_freq=1,
+ calc_freq=calc_freq,
+ exp_dc=25,
+ calc_dc=calc_dc,
+ exp_duty_u16=0,
+ exp_duty_ns=250000000,
+)
+
+# T = 1sec (50% dc)
+pwm.duty_ns(500000000)
+calc_dc, calc_freq = measure_signal()
+validate_signal(
+ exp_freq=1,
+ calc_freq=calc_freq,
+ exp_dc=50,
+ calc_dc=calc_dc,
+ exp_duty_u16=0,
+ exp_duty_ns=500000000,
+)
+
+# T = 1sec (75% dc)
+pwm.duty_u16(49151)
+calc_dc, calc_freq = measure_signal()
+validate_signal(
+ exp_freq=1, calc_freq=calc_freq, exp_dc=75, calc_dc=calc_dc, exp_duty_u16=49151, exp_duty_ns=0
+)
+
+# Reconfigure frequency and dutycycle
+# T = 0.5 sec (50% dc)
+pwm.init(freq=2, duty_u16=32767)
+calc_dc, calc_freq = measure_signal()
+validate_signal(
+ exp_freq=2, calc_freq=calc_freq, exp_dc=50, calc_dc=calc_dc, exp_duty_u16=32767, exp_duty_ns=0
+)
+
+pwm.deinit()
+input_pin.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/single/pwm.py.exp b/tests/ports/psoc6/board_ext_hw/single/pwm.py.exp
new file mode 100644
index 0000000000000..dcbb927e259bc
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/pwm.py.exp
@@ -0,0 +1 @@
+*** PWM tests ***
diff --git a/tests/ports/psoc6/board_ext_hw/single/sdcard.py b/tests/ports/psoc6/board_ext_hw/single/sdcard.py
new file mode 100644
index 0000000000000..050a9c05c2502
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/sdcard.py
@@ -0,0 +1,153 @@
+import machine
+import os
+import errno
+
+SHORT_TEST_STRING = "This is a test string."
+LONG_TEST_STRING = "This is a very long string. And as a long string that it is, it is only getting longer and longer and the string goes. How long shall it be? Well, not really sure, but let´s try it like this."
+READ_SIZE = 512
+WRITE_SIZE = 512
+MOUNT_POINT_FAT = "/SDCardFat"
+MOUNT_POINT_LFS2 = "/SDCardLfs2"
+
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ sdcard_config = {
+ "width": 4,
+ "cd": "P13_5",
+ "cmd": "P12_4",
+ "clk": "P12_5",
+ "dat0": "P13_0",
+ "dat1": "P13_1",
+ "dat2": "P13_2",
+ "dat3": "P13_3",
+ }
+elif "CY8CPROTO-063-BLE" in board:
+ print("SKIP")
+ raise SystemExit
+elif "CY8CKIT-062S2-AI" in board:
+ print("SKIP")
+ raise SystemExit
+
+
+def unmount_sd_card(path):
+ try:
+ os.umount(path)
+ except OSError as e:
+ if e.args[0] != errno.EINVAL:
+ raise Exception(f"Could not unmount {path}")
+
+
+def mount_or_format_sd_card_vfs2(block_device, filesystem, mount_point):
+ try:
+ vfs = filesystem(block_device, progsize=WRITE_SIZE, readsize=READ_SIZE)
+ os.mount(vfs, mount_point)
+ except OSError:
+ filesystem.mkfs(block_device, progsize=WRITE_SIZE, readsize=READ_SIZE)
+ vfs = filesystem(block_device, progsize=WRITE_SIZE, readsize=READ_SIZE)
+ os.mount(vfs, mount_point)
+ print(f"\nSD card mounted at {mount_point}\n")
+
+
+def mount_or_format_sd_card_fat(block_device, filesystem, mount_point):
+ try:
+ vfs = filesystem(block_device)
+ os.mount(vfs, mount_point)
+ except OSError:
+ filesystem.mkfs(block_device)
+ vfs = filesystem(block_device)
+ os.mount(vfs, mount_point)
+ print(f"\nSD card mounted at {mount_point}\n")
+
+
+def read_write_test(file_path, test_data):
+ with open(file_path, "w") as f:
+ f.write(test_data)
+ with open(file_path, "r") as f:
+ return f.read() == test_data
+
+
+def test_file_transfer_lfs2():
+ # Define the SD card configuration
+ bdev = machine.SDCard(**sdcard_config)
+
+ # Unmount the SD card if mounted
+ unmount_sd_card(MOUNT_POINT_LFS2)
+
+ # Mount or format the SD card with LFS2 filesystem
+ if "VfsLfs2" in dir(os):
+ mount_or_format_sd_card_vfs2(bdev, os.VfsLfs2, MOUNT_POINT_LFS2)
+
+ # change to SD card directory
+ os.chdir(MOUNT_POINT_LFS2)
+
+ print("\n***** Test 1: Short string file transfer to SD Card in LFS2 format *****\n")
+ # Test short string
+ short_test_file = "test_sd_lfs2_short.txt"
+ if read_write_test(short_test_file, SHORT_TEST_STRING):
+ print("PASS")
+ else:
+ print("FAIL")
+
+ print("\n***** Test 2: Long string file transfer to SD Card in LFS2 format *****\n")
+ # Test long string
+ long_test_file = "test_sd_lfs2_long.txt"
+ if read_write_test(long_test_file, LONG_TEST_STRING):
+ print("PASS")
+ else:
+ print("FAIL")
+
+ # change to root directory
+ os.chdir("/")
+
+ bdev.deinit()
+
+
+def test_file_transfer_fat():
+ # Define the SD card configuration
+ bdev = machine.SDCard(**sdcard_config)
+
+ # Unmount the SD card if mounted
+ unmount_sd_card(MOUNT_POINT_FAT)
+
+ # Mount or format the SD card with LFS2 filesystem
+ if "VfsLfs2" in dir(os):
+ mount_or_format_sd_card_fat(bdev, os.VfsFat, MOUNT_POINT_FAT)
+
+ # change to SD card directory
+ os.chdir(MOUNT_POINT_FAT)
+
+ print("\n***** Test 3: Short string file transfer to SD Card in FAT format *****\n")
+ # Test short string
+ short_test_file = "test_sd_fat_short.txt"
+ if read_write_test(short_test_file, SHORT_TEST_STRING):
+ print("PASS")
+ else:
+ print("FAIL")
+
+ print("\n***** Test 4: Long string file transfer to SD Card in FAT format *****\n")
+ # Test long string
+ long_test_file = "test_sd_fat_long.txt"
+ if read_write_test(long_test_file, LONG_TEST_STRING):
+ print("PASS")
+ else:
+ print("FAIL")
+
+ # change to root directory
+ os.chdir("/")
+
+ bdev.deinit()
+
+
+def test_reintializing_same_slot():
+ print("\n***** Test 5: reinitialize the same slot more than once *****\n")
+ bdev1 = machine.SDCard(**sdcard_config)
+ bdev1.deinit()
+ bdev2 = machine.SDCard(**sdcard_config)
+ bdev2.deinit()
+ print("PASS")
+
+
+if __name__ == "__main__":
+ test_file_transfer_lfs2()
+ test_file_transfer_fat()
+ test_reintializing_same_slot()
diff --git a/tests/ports/psoc6/board_ext_hw/single/sdcard.py.exp b/tests/ports/psoc6/board_ext_hw/single/sdcard.py.exp
new file mode 100644
index 0000000000000..ba546511e7e2b
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/sdcard.py.exp
@@ -0,0 +1,26 @@
+
+SD card mounted at /SDCardLfs2
+
+
+***** Test 1: Short string file transfer to SD Card in LFS2 format *****
+
+PASS
+
+***** Test 2: Long string file transfer to SD Card in LFS2 format *****
+
+PASS
+
+SD card mounted at /SDCardFat
+
+
+***** Test 3: Short string file transfer to SD Card in FAT format *****
+
+PASS
+
+***** Test 4: Long string file transfer to SD Card in FAT format *****
+
+PASS
+
+***** Test 5: reinitialize the same slot more than once *****
+
+PASS
diff --git a/tests/ports/psoc6/board_ext_hw/single/signal.py b/tests/ports/psoc6/board_ext_hw/single/signal.py
new file mode 100644
index 0000000000000..a47ecbe79f84d
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/signal.py
@@ -0,0 +1,60 @@
+import os
+from machine import Pin, Signal
+import machine
+import time
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ pin1_name = "P13_7"
+ pin2_name = "P13_6"
+elif "CY8CPROTO-063-BLE" in board:
+ pin1_name = "P12_6"
+ pin2_name = "P12_7"
+elif "CY8CKIT-062S2-AI" in board:
+ pin1_name = "P9_6"
+ pin2_name = "P9_7"
+
+# Pin out and pin in must be connected
+# together in the board
+
+# value() as get is not supported,
+# same as undefined for pin.value() for output
+
+pin_out = Pin(pin1_name, mode=Pin.OUT, value=True)
+pin_in = Pin(pin2_name, Pin.IN)
+
+# Set signal for output pin as non-inverted
+print("non-inverted")
+
+signal = Signal(pin_out, invert=False)
+
+signal.on()
+print("signal is high when on(): ", pin_in.value() == 1)
+
+signal.value(0)
+print("signal is low when value(0): ", pin_in.value() == 0)
+
+signal.value(1)
+print("signal is high when value(1): ", pin_in.value() == 1)
+
+signal.off()
+print("signal is low when off(): ", pin_in.value() == 0)
+
+print("\n")
+
+# Set signal for output pin as inverted
+print("inverted")
+signal = Signal(pin_out, invert=True)
+
+signal.on()
+print("signal is low when on(): ", pin_in.value() == 0)
+
+signal.value(0)
+print("signal is high when value(0): ", pin_in.value() == 1)
+
+signal.value(1)
+print("signal is low when value(1): ", pin_in.value() == 0)
+
+signal.off()
+print("signal is high when off(): ", pin_in.value() == 1)
diff --git a/tests/ports/psoc6/board_ext_hw/single/signal.py.exp b/tests/ports/psoc6/board_ext_hw/single/signal.py.exp
new file mode 100644
index 0000000000000..978f680757421
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/signal.py.exp
@@ -0,0 +1,12 @@
+non-inverted
+signal is high when on(): True
+signal is low when value(0): True
+signal is high when value(1): True
+signal is low when off(): True
+
+
+inverted
+signal is low when on(): True
+signal is high when value(0): True
+signal is low when value(1): True
+signal is high when off(): True
diff --git a/tests/ports/psoc6/board_ext_hw/single/uart.py b/tests/ports/psoc6/board_ext_hw/single/uart.py
new file mode 100644
index 0000000000000..0e5d2d8855183
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/uart.py
@@ -0,0 +1,156 @@
+### UART
+from machine import UART
+import machine
+import binascii
+import time
+import os
+
+# Allocate pin based on board
+board = os.uname().machine
+if "CY8CPROTO-062-4343W" in board:
+ uart_rx_pin = "P9_0"
+ uart_tx_pin = "P9_1"
+ uart_rts_pin = "P9_2"
+ uart_cts_pin = "P9_3"
+elif "CY8CPROTO-063-BLE" in board:
+ uart_rx_pin = "P10_0"
+ uart_tx_pin = "P10_1"
+ uart_rts_pin = "P10_2"
+ uart_cts_pin = "P10_3"
+elif "CY8CKIT-062S2-AI" in board:
+ uart_rx_pin = "P10_0"
+ uart_tx_pin = "P10_1"
+ uart_rts_pin = "P9_2"
+ uart_cts_pin = "P9_3"
+
+# 1. Construct instance
+##############################################
+uart = UART(1)
+uart.init(9600, bits=8, parity=None, stop=1, tx=uart_tx_pin, rx=uart_rx_pin)
+
+
+def uart_tests():
+ # 2. Basic tests
+ ##############################################
+
+ # sendbreak()
+ uart.sendbreak()
+ time.sleep_ms(100)
+ print("Break Sent is received by Rx: ", uart.read() == b"\xf0")
+
+ # write_char()
+ # read_char()
+ uart.writechar(1)
+ rx_char = uart.readchar()
+ print("Tx char is received by Rx char: ", rx_char == 1)
+
+ # read()
+ tx_data = b"abcdefg"
+ uart.write(tx_data)
+ time.sleep_ms(100)
+ rx_data = uart.read()
+ print("Tx is received by Rx(read()): ", rx_data == tx_data)
+
+ # readline(nbytes)
+ tx_data = "abcd\ne"
+ uart.write(tx_data)
+ time.sleep_ms(100)
+ rx_data = uart.readline()
+ print("Tx is received by Rx(readline()): ", rx_data == b"abcd\n")
+ uart.read() # read all data available to clear buffer
+
+ # read(n bytes)
+ tx_data = "abcdefghijklmn"
+ uart.write(tx_data)
+ time.sleep_ms(8)
+ rx_data = uart.read(7)
+ print("Tx is received by Rx(read(nbytes)):", rx_data == b"abcdefg")
+
+ # tx_done()
+ tx_data = "abcdefg"
+ uart.write(tx_data)
+ print("Tx Ongoing: ", uart.txdone() == False)
+ time.sleep_ms(100)
+ print("Tx Done: ", uart.txdone() == True)
+ uart.read() # read all data available to clear buffer
+
+ # write(buf)
+ # readinto(buf)
+ uart_rx_buf = bytearray(8)
+ tx_data = b"\x01\x44\x17\x88\x98\x11\x34\xff"
+ uart.write(tx_data)
+ time.sleep_ms(100)
+ uart.readinto(uart_rx_buf)
+ print("Tx is received by Rx(readinto(buf)): ", uart_rx_buf == tx_data)
+
+
+def uart_interrupt_tests():
+ uart.irq(trigger=UART.TX_DONE, handler=tx_complete)
+ tx_data = b"Hi this is data"
+ uart.write(tx_data)
+ time.sleep_ms(100)
+ while not tx_done:
+ pass
+ print("Tx Done")
+
+ uart.irq(trigger=UART.RX_DONE, handler=rx_complete)
+ uart_rx_buf = bytearray(8)
+ uart.readinto(uart_rx_buf)
+ print("Tx is received by Rx(readinto(buf)): ", uart_rx_buf == b"Hi this ")
+ while not rx_done:
+ pass
+ print("Rx Done")
+
+ uart.init(rxbuf=8)
+ uart.irq(trigger=UART.RX_FULL, handler=rx_full)
+ tx_data = b"\x44\x17\x88\x98\x11\x34\xff\x12\x57\x76\x44\x17\x88\x98\x11\x34\xff\x12\x57\x76\x44\x17\x88\x98\x11\x34\xff\x12\x57\x76\x44\x17\x88\x98\x11\x34\xff\x12\x57\x76"
+ uart.write(tx_data)
+ uart.read(16)
+ while not rx_full:
+ pass
+ print("Rx Buffer Full")
+
+ uart.irq(trigger=UART.TX_EMPTY, handler=tx_empty)
+ while not tx_empty:
+ pass
+ print("Tx Empty")
+
+
+print("********UART Tests********\n")
+uart_tests()
+
+tx_done = False
+
+
+def tx_complete(t):
+ global tx_done
+ tx_done = True
+
+
+rx_done = False
+
+
+def rx_complete(t):
+ global rx_done
+ rx_done = True
+
+
+rx_full = False
+
+
+def rx_full(t):
+ global rx_full
+ rx_full = True
+
+
+tx_empty = False
+
+
+def tx_empty(t):
+ global tx_empty
+ tx_empty = True
+
+
+print("\n*******UART Interrupt Tests*******\n")
+uart_interrupt_tests()
+uart.deinit()
diff --git a/tests/ports/psoc6/board_ext_hw/single/uart.py.exp b/tests/ports/psoc6/board_ext_hw/single/uart.py.exp
new file mode 100644
index 0000000000000..cc4aa397e11ff
--- /dev/null
+++ b/tests/ports/psoc6/board_ext_hw/single/uart.py.exp
@@ -0,0 +1,19 @@
+machine.UART: ID parameter is ignored in this port.
+********UART Tests********
+
+Break Sent is received by Rx: True
+Tx char is received by Rx char: True
+Tx is received by Rx(read()): True
+Tx is received by Rx(readline()): True
+Tx is received by Rx(read(nbytes)): True
+Tx Ongoing: True
+Tx Done: True
+Tx is received by Rx(readinto(buf)): True
+
+*******UART Interrupt Tests*******
+
+Tx Done
+Tx is received by Rx(readinto(buf)): True
+Rx Done
+Rx Buffer Full
+Tx Empty
diff --git a/tests/ports/psoc6/board_only_hw/multi/network.py b/tests/ports/psoc6/board_only_hw/multi/network.py
new file mode 100644
index 0000000000000..f465d7ead172d
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/multi/network.py
@@ -0,0 +1,111 @@
+import binascii, time
+
+try:
+ import network
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+channel_new = 1
+
+
+# Access Point
+def instance0():
+ network.hostname("mpy-psoc6-test")
+ print("set hostname: ", network.hostname() == "mpy-psoc6-test")
+
+ ap_if = network.WLAN(network.AP_IF)
+ print("ap instance created")
+
+ # Generate "random" SSID to avoid test conflicts
+ time_stamp = time.time()
+ ssid_new = "mpy-psoc6-" + str(time_stamp)
+ multitest.globals(ssid_gen=ssid_new)
+ ap_if.config(channel=channel_new, ssid=ssid_new)
+
+ # active()
+ print("ap initially not active: ", ap_if.active() == False)
+ ap_if.active(True)
+ print("ap is activated: ", ap_if.active() == True)
+ ap_if.active(False)
+ print("ap is deactivated: ", ap_if.active() == False)
+ ap_if.active(True)
+ while ap_if.active() == False:
+ pass
+
+ # isConnected()
+ print("ap has no client: ", ap_if.isconnected() == False)
+
+ multitest.globals(ap_mac=ap_if.config("mac"))
+
+ print(" > yield station")
+ multitest.next()
+
+ while ap_if.isconnected() == False:
+ pass
+ print("ap has clients: ", ap_if.isconnected() == True)
+
+ # try disconnect()
+ try:
+ ap_if.disconnect() # not for AP
+ except ValueError as err:
+ print("ap cannot disconnect: ", err)
+
+ # status()
+ stations = ap_if.status("stations")
+ print("ap status has stations: ", stations != [])
+
+
+# Station
+def instance1():
+ sta_if = network.WLAN(network.STA_IF)
+ print("sta instance created")
+
+ # active()
+ print("sta is not active: ", sta_if.active() == False)
+
+ # scan()
+ wlan_nets = sta_if.scan()
+ # The returned ssid is a bytes object
+ bytes_ssid = bytes(ssid_gen, "utf-8")
+ test_ap_net = [net for net in wlan_nets if net[0] == bytes_ssid]
+ print("sta scan finds ap wlan: ", test_ap_net != [])
+
+ wlan_ssid_filter = sta_if.scan(ssid=ssid_gen)
+ test_ap_net = [net for net in wlan_ssid_filter if net[0] == bytes_ssid]
+ print("sta scan finds ap wlan (ssid filter): ", test_ap_net != [])
+
+ # print('ap_mac: ', binascii.hexlify(ap_mac, ':'))
+
+ wlan_bssid_filter = sta_if.scan(bssid=ap_mac)
+ test_ap_net = [net for net in wlan_bssid_filter if net[1] == ap_mac]
+ print("sta scan finds ap wlan (mac filter): ", test_ap_net != [])
+
+ # isconnect()
+ print("sta is not (yet) connected: ", sta_if.isconnected() == False)
+
+ # connect()
+ sta_if.connect(ssid_gen, "mpy_PSOC6_w3lc0me!")
+ print("sta attempt connection to ap")
+
+ # active()
+ print("sta is (now) active: ", sta_if.active() == True)
+
+ # isConnected()
+ print("sta is (now) connected: ", sta_if.isconnected() == True)
+
+ # status()
+ # The test boards are placed next to each other (few cm range)
+ print("sta status rssi in range: ", -70 < sta_if.status("rssi") < 10)
+
+ print(" > yield access point")
+ multitest.next()
+
+ # disconnect()
+ sta_if.disconnect()
+ print("sta is disconnected: ", sta_if.active() == False)
+
+ print("sta attempt connection to ap (with bssid)")
+ sta_if.connect(ssid_gen, "mpy_PSOC6_w3lc0me!", bssid=ap_mac)
+
+ print("sta is active: ", sta_if.active() == True)
diff --git a/tests/ports/psoc6/board_only_hw/multi/network.py.exp b/tests/ports/psoc6/board_only_hw/multi/network.py.exp
new file mode 100644
index 0000000000000..f6393bbcd1778
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/multi/network.py.exp
@@ -0,0 +1,26 @@
+--- instance0 ---
+set hostname: True
+ap instance created
+ap initially not active: True
+ap is activated: True
+ap is deactivated: True
+ap has no client: True
+ > yield station
+ap has clients: True
+ap cannot disconnect: network STA required
+ap status has stations: True
+--- instance1 ---
+sta instance created
+sta is not active: True
+sta scan finds ap wlan: True
+sta scan finds ap wlan (ssid filter): True
+sta scan finds ap wlan (mac filter): True
+sta is not (yet) connected: True
+sta attempt connection to ap
+sta is (now) active: True
+sta is (now) connected: True
+sta status rssi in range: True
+ > yield access point
+sta is disconnected: True
+sta attempt connection to ap (with bssid)
+sta is active: True
diff --git a/tests/ports/psoc6/board_only_hw/multi/network_config.py b/tests/ports/psoc6/board_only_hw/multi/network_config.py
new file mode 100644
index 0000000000000..99d51f40df7b8
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/multi/network_config.py
@@ -0,0 +1,104 @@
+import binascii, time
+import random
+
+try:
+ import network
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+channel_new = random.randint(1, 5)
+pass_new = "alicessecret"
+sec_new = network.WLAN.WPA2
+
+ap_ip = "10.20.0.1"
+gateway_ip = ap_ip
+netmask_ip = "255.255.255.128"
+dns_ip = "0.0.0.0"
+ap_net_conf = (ap_ip, netmask_ip, gateway_ip, dns_ip)
+
+
+# Access Point
+def instance0():
+ ap_if = network.WLAN(network.AP_IF)
+ print("ap instance created")
+
+ # get config()
+ ap_if.config(channel=channel_new)
+ print("ap config get channel: ", ap_if.config("channel") == channel_new)
+
+ # Generate "random" SSID to avoid test conflicts
+ time_stamp = time.time()
+ ssid_new = "mpy-test-" + str(time_stamp)
+ multitest.globals(ssid_gen=ssid_new)
+ ap_if.config(ssid=ssid_new)
+ print("ap config get ssid: ", ap_if.config("ssid") == ssid_new)
+
+ ap_if.config(security=sec_new, key=pass_new)
+ print("ap config get security: ", ap_if.config("security") == sec_new)
+ try:
+ ap_if.config("password") # only if default
+ except ValueError as err:
+ print(err)
+
+ # active()
+ ap_if.active(True)
+ while ap_if.active() == False:
+ pass
+ print("ap is activated")
+
+ # set ifconfig()
+ ap_if.ifconfig(ap_net_conf)
+
+ # get ifconfig()
+ print("ap ip settings: ", ap_if.ifconfig() == ap_net_conf)
+
+ print(" > yield station")
+ multitest.next()
+
+ while ap_if.isconnected() == False:
+ pass
+ print("ap has clients: ", ap_if.isconnected() == True)
+
+ # status()
+ stations = ap_if.status("stations")
+ print("ap status has stations: ", stations != [])
+
+ print(ap_if)
+
+
+# Station
+def instance1():
+ sta_if = network.WLAN(network.STA_IF)
+ print("sta instance created")
+
+ # connect()
+ sta_if.connect(ssid_gen, pass_new)
+ print("sta attempt connection to ap")
+
+ # active()
+ print("sta is (now) active: ", sta_if.active() == True)
+
+ # isConnected()
+ print("sta is (now) connected: ", sta_if.isconnected() == True)
+
+ # config()
+ print("sta assoc ap channel config: ", sta_if.config("channel") == channel_new)
+ print("sta assoc ap ssid config: ", sta_if.config("ssid") == ssid_gen)
+ print("sta assoc ap security config: ", sta_if.config("security") == sec_new)
+
+ try:
+ sta_if.config("key") # not for STA
+ except ValueError as err:
+ print(err)
+
+ # ifconfig()
+ sta_net_conf = ("10.20.0.2", netmask_ip, ap_ip, ap_ip)
+ print("sta ip settings: ", sta_if.ifconfig() == sta_net_conf)
+
+ try:
+ sta_if.ifconfig(sta_net_conf) # not for STA
+ except ValueError as err:
+ print(err)
+
+ print(sta_if)
diff --git a/tests/ports/psoc6/board_only_hw/multi/network_config.py.exp b/tests/ports/psoc6/board_only_hw/multi/network_config.py.exp
new file mode 100644
index 0000000000000..7985c2ac8e892
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/multi/network_config.py.exp
@@ -0,0 +1,24 @@
+--- instance0 ---
+ap instance created
+ap config get channel: True
+ap config get ssid: True
+ap config get security: True
+network conf password only queryable for default password
+ap is activated
+ap ip settings: True
+ > yield station
+ap has clients: True
+ap status has stations: True
+
+--- instance1 ---
+sta instance created
+sta attempt connection to ap
+sta is (now) active: True
+sta is (now) connected: True
+sta assoc ap channel config: True
+sta assoc ap ssid config: True
+sta assoc ap security config: True
+network access point required
+sta ip settings: True
+network access point required
+
diff --git a/tests/ports/psoc6/board_only_hw/single/flash.py b/tests/ports/psoc6/board_only_hw/single/flash.py
new file mode 100644
index 0000000000000..3230a5520f047
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/flash.py
@@ -0,0 +1,84 @@
+import os, psoc6
+
+machine = os.uname().machine
+
+# Try to mount the filesystem, and format the flash if it doesn't exist.
+# create block device object based on whichever flash is active
+bdev = psoc6.QSPI_Flash() if "QSPI_Flash" in dir(psoc6) else psoc6.Flash()
+# unmount the filesystem in case its already mounted
+os.umount("/")
+
+test_string = "This is a test string."
+long_test_string = "This is a very long string. And as a long string that it is, it is only getting longer and longer and the string goes. How long shall it be? Well, not really sure, but let´s try it like this."
+
+# first priority is always LFS2 filesystem as it is the default
+if "VfsLfs2" in dir(os):
+ # sector size 4 KB for external flash
+ # sector size 512 B for internal flash
+ read_size = 0x1000 if "QSPI_Flash" in dir(psoc6) else 0x200
+ # page size 512 B for both flashes
+ write_size = 0x200
+
+ # create a LFS2 fs and mount it, else format and mount it
+ try:
+ vfs = os.VfsLfs2(bdev, progsize=write_size, readsize=read_size)
+ os.mount(vfs, "/")
+ except:
+ os.VfsLfs2.mkfs(bdev, progsize=write_size, readsize=read_size)
+ vfs = os.VfsLfs2(bdev, progsize=write_size, readsize=read_size)
+ os.mount(vfs, "/")
+
+ # open a file and do some operation
+ f = open("/test_lfs2.txt", "w")
+ f.write(test_string)
+ f.close()
+
+ # read back the contents
+ f = open("/test_lfs2.txt", "r")
+ if f.read() == test_string:
+ print("Test successful")
+ f.close()
+
+ # open a file and do some operation
+ f = open("/test_lfs2_2.txt", "w")
+ f.write(long_test_string)
+ f.close()
+
+ # read back the contents
+ f = open("/test_lfs2_2.txt", "r")
+ if f.read() == long_test_string:
+ print("Test successful")
+ f.close()
+
+# Run fat filesystem test only if lfs2 is not enabled
+elif "VfsFat" in dir(os):
+ # create a FAT fs and mount it, else format and mount it
+ try:
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/")
+ except:
+ os.VfsFat.mkfs(bdev)
+ vfs = os.VfsFat(bdev)
+ os.mount(vfs, "/")
+
+ # open a file and do some operation
+ f = open("/test_fat.txt", "w")
+ f.write(test_string)
+ f.close()
+
+ # read back the contents
+ f = open("/test_fat.txt", "r")
+ if f.read() == test_string:
+ print("Test successful")
+ f.close()
+
+ # open a file and do some operation
+ f = open("/test_fat_2.txt", "w")
+ f.write(long_test_string)
+ f.close()
+
+ # read back the contents
+ f = open("/test_fat_2.txt", "r")
+ if f.read() == long_test_string:
+ print("Test successful")
+ f.close()
diff --git a/tests/ports/psoc6/board_only_hw/single/flash.py.exp b/tests/ports/psoc6/board_only_hw/single/flash.py.exp
new file mode 100644
index 0000000000000..37236d726f8ff
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/flash.py.exp
@@ -0,0 +1,2 @@
+Test successful
+Test successful
diff --git a/tests/ports/psoc6/board_only_hw/single/global_interrupts.py b/tests/ports/psoc6/board_only_hw/single/global_interrupts.py
new file mode 100644
index 0000000000000..0f7bd53eb1c61
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/global_interrupts.py
@@ -0,0 +1,34 @@
+from machine import Timer
+import machine
+import time
+
+oneshot_triggered = False
+
+
+def callback_oneshot(timer):
+ global oneshot_triggered
+ oneshot_triggered = True
+
+
+def test_oneshot():
+ # Oneshot timer
+ global oneshot_triggered
+ tim_oneshot = Timer(0, period=1, mode=Timer.ONE_SHOT, callback=callback_oneshot)
+
+ try:
+ # Wait for 5 seconds
+ for i in range(5):
+ time.sleep(1)
+ if oneshot_triggered:
+ print("Interrupt triggered")
+ oneshot_triggered = False
+ finally:
+ tim_oneshot.deinit() # Deinitialize the Oneshot timer
+
+
+state = machine.disable_irq()
+print("*****Test 1: Interrupts Disabled*****")
+test_oneshot()
+machine.enable_irq(state)
+print("*****Test 2: Interrupts Enabled******")
+test_oneshot()
diff --git a/tests/ports/psoc6/board_only_hw/single/global_interrupts.py.exp b/tests/ports/psoc6/board_only_hw/single/global_interrupts.py.exp
new file mode 100644
index 0000000000000..046a143c44e51
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/global_interrupts.py.exp
@@ -0,0 +1,3 @@
+*****Test 1: Interrupts Disabled*****
+*****Test 2: Interrupts Enabled******
+Interrupt triggered
diff --git a/tests/ports/psoc6/board_only_hw/single/machine_reset.py b/tests/ports/psoc6/board_only_hw/single/machine_reset.py
new file mode 100644
index 0000000000000..c6a4a3085780b
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/machine_reset.py
@@ -0,0 +1,8 @@
+import machine
+
+print("*****Test :Reset Validation after a soft Reset*****")
+if machine.reset_cause() == machine.SOFT_RESET:
+ print("PASS")
+else:
+ print(machine.reset_cause())
+ print("FAIL")
diff --git a/tests/ports/psoc6/board_only_hw/single/machine_reset.py.exp b/tests/ports/psoc6/board_only_hw/single/machine_reset.py.exp
new file mode 100644
index 0000000000000..aed9781364136
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/machine_reset.py.exp
@@ -0,0 +1,2 @@
+*****Test :Reset Validation after a soft Reset*****
+PASS
diff --git a/tests/ports/psoc6/board_only_hw/single/machine_test.py b/tests/ports/psoc6/board_only_hw/single/machine_test.py
new file mode 100644
index 0000000000000..f8c7b1390f05b
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/machine_test.py
@@ -0,0 +1,20 @@
+import machine
+
+
+def soft_reset():
+ machine.soft_reset()
+
+
+def freq_get_validate():
+ freq = machine.freq()
+ if freq == 100000000:
+ print("PASS")
+ else:
+ print(freq)
+ print("FAIL")
+
+
+print("*****Test 1: Default Frequency Validation*****")
+freq_get_validate()
+print("*****Test 2: Calling Soft Reset*****")
+soft_reset()
diff --git a/tests/ports/psoc6/board_only_hw/single/machine_test.py.exp b/tests/ports/psoc6/board_only_hw/single/machine_test.py.exp
new file mode 100644
index 0000000000000..8d36d4fdaedc9
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/machine_test.py.exp
@@ -0,0 +1,3 @@
+*****Test 1: Default Frequency Validation*****
+PASS
+*****Test 2: Calling Soft Reset*****
diff --git a/tests/ports/psoc6/board_only_hw/single/modtime.py b/tests/ports/psoc6/board_only_hw/single/modtime.py
new file mode 100644
index 0000000000000..f8f2992750442
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/modtime.py
@@ -0,0 +1,62 @@
+import time
+
+wday = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
+
+
+def get_default_date_time():
+ seconds = 0
+ default_dtime = time.gmtime(0)
+ print(
+ "\ngmtime() at default returned [Year/Month/Day - WeekDay - HH:MM:SS] : %d/%02d/%02d - %s - %02d:%02d:%02d "
+ % (
+ default_dtime[0],
+ default_dtime[1],
+ default_dtime[2],
+ wday[default_dtime[6]],
+ default_dtime[3],
+ default_dtime[4],
+ default_dtime[5],
+ )
+ )
+
+ if time.mktime(default_dtime) != seconds:
+ print("\nmktime() FAILED to create right dtime from secs\n")
+ else:
+ print("\nmktime() SUCCESSFULLY created right dtime from secs\n")
+
+
+def get_dtime_from_secs(secs):
+ return time.localtime(secs)
+
+
+def spot_test(seconds, expected_time):
+ actual_time = time.localtime(seconds)
+ for i in range(len(actual_time)):
+ if actual_time[i] != expected_time[i]:
+ print(
+ "time.localtime(",
+ seconds,
+ ") returned",
+ actual_time,
+ "expecting",
+ expected_time,
+ "(Test : FAILED)",
+ )
+ return
+ print("time.localtime(", seconds, ") returned", actual_time, "(Test : PASSED)")
+
+
+get_default_date_time()
+
+spot_test(0, (1970, 1, 1, 0, 0, 0, 3, 1))
+spot_test(1, (1970, 1, 1, 0, 0, 1, 3, 1))
+spot_test(59, (1970, 1, 1, 0, 0, 59, 3, 1))
+spot_test(60, (1970, 1, 1, 0, 1, 0, 3, 1))
+spot_test(3599, (1970, 1, 1, 0, 59, 59, 3, 1))
+spot_test(3600, (1970, 1, 1, 1, 0, 0, 3, 1))
+spot_test(-1, (1969, 12, 31, 23, 59, 59, 2, 365))
+spot_test(447549467, (1984, 3, 7, 23, 17, 47, 2, 67))
+spot_test(-940984933, (1940, 3, 7, 23, 17, 47, 3, 67))
+spot_test(-1072915199, (1936, 1, 2, 0, 0, 1, 3, 2))
+spot_test(-1072915200, (1936, 1, 2, 0, 0, 0, 3, 2))
+spot_test(-1072915201, (1936, 1, 1, 23, 59, 59, 2, 1))
diff --git a/tests/ports/psoc6/board_only_hw/single/modtime.py.exp b/tests/ports/psoc6/board_only_hw/single/modtime.py.exp
new file mode 100644
index 0000000000000..0b5b07bd9776d
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/modtime.py.exp
@@ -0,0 +1,17 @@
+
+gmtime() at default returned [Year/Month/Day - WeekDay - HH:MM:SS] : 1970/01/01 - Thu - 00:00:00
+
+mktime() SUCCESSFULLY created right dtime from secs
+
+time.localtime( 0 ) returned (1970, 1, 1, 0, 0, 0, 3, 1) (Test : PASSED)
+time.localtime( 1 ) returned (1970, 1, 1, 0, 0, 1, 3, 1) (Test : PASSED)
+time.localtime( 59 ) returned (1970, 1, 1, 0, 0, 59, 3, 1) (Test : PASSED)
+time.localtime( 60 ) returned (1970, 1, 1, 0, 1, 0, 3, 1) (Test : PASSED)
+time.localtime( 3599 ) returned (1970, 1, 1, 0, 59, 59, 3, 1) (Test : PASSED)
+time.localtime( 3600 ) returned (1970, 1, 1, 1, 0, 0, 3, 1) (Test : PASSED)
+time.localtime( -1 ) returned (1969, 12, 31, 23, 59, 59, 2, 365) (Test : PASSED)
+time.localtime( 447549467 ) returned (1984, 3, 7, 23, 17, 47, 2, 67) (Test : PASSED)
+time.localtime( -940984933 ) returned (1940, 3, 7, 23, 17, 47, 3, 67) (Test : PASSED)
+time.localtime( -1072915199 ) returned (1936, 1, 2, 0, 0, 1, 3, 2) (Test : PASSED)
+time.localtime( -1072915200 ) returned (1936, 1, 2, 0, 0, 0, 3, 2) (Test : PASSED)
+time.localtime( -1072915201 ) returned (1936, 1, 1, 23, 59, 59, 2, 1) (Test : PASSED)
diff --git a/tests/ports/psoc6/board_only_hw/single/rtc.py b/tests/ports/psoc6/board_only_hw/single/rtc.py
new file mode 100644
index 0000000000000..e54471aa4e56d
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/rtc.py
@@ -0,0 +1,109 @@
+# import machine
+from machine import RTC
+import time
+
+IRQ_COUNTER = 0
+ONE_SHOT_ALARM = 0
+PERIODIC_ALARM = 1
+
+# Tuple format: Year, Month, Sec, WDay*, Hour, Min, Sec, Subsec=0
+# *Note: User cannot set a wrong week day value here. PSoC always calculates the right weekday using rest of the fields.
+initial_dtime = (2023, 1, 1, 0, 0, 0, 0, 0)
+
+
+def cback(event):
+ global IRQ_COUNTER
+ IRQ_COUNTER += 1
+
+
+def check_rtc_mem_write():
+ rtc.memory((2023, 1, 1, 0, 0, 0, 0, 0))
+ print("\ndatetime to be retrieved post soft-reset : ", rtc.memory())
+
+
+def reset_rtc():
+ rtc.deinit()
+ default_datetime = (2015, 1, 1, 4, 0, 0, 0, 0)
+ print("\nRTC reset done: ", default_datetime == rtc.now())
+
+
+def set_alarm_ms(rtc, alarm_type, period_ms):
+ rtc.datetime(initial_dtime)
+ rtc_irq = rtc.irq(handler=cback)
+ rtc.alarm(period_ms, repeat=alarm_type)
+
+
+def set_alarm_datetime(rtc, alarm_type, datetime):
+ rtc.datetime(initial_dtime)
+ rtc_irq = rtc.irq(trigger=RTC.ALARM0, handler=cback)
+ rtc.alarm(datetime, repeat=alarm_type)
+
+
+def wait_for_cback(timeout, exp_counter):
+ global IRQ_COUNTER
+ start = time.ticks_ms()
+ while IRQ_COUNTER < exp_counter:
+ time.sleep_ms(5)
+ if time.ticks_diff(time.ticks_ms(), start) > cback_call_wait_time:
+ break
+
+
+print("*** RTC Tests ***")
+rtc = RTC()
+
+rtc.init(initial_dtime)
+print("\nRTC init successful: \t", rtc.datetime() == initial_dtime)
+
+# Make sure that 1 second passes correctly
+exp_dtime = (2023, 1, 1, 0, 0, 0, 1, 0)
+rtc.datetime((2023, 1, 1, 0, 0, 0, 0, 0))
+time.sleep_ms(1008)
+print("\ndatetime is accurate: \t", rtc.now() == exp_dtime)
+
+print("\n1. Setting periodic short alarm to be triggered repeatedly in few ms in future")
+timeout = 1000
+cback_call_wait_time = timeout + 200
+set_alarm_ms(rtc, PERIODIC_ALARM, timeout)
+print("Alarm period set to (ms): ", rtc.alarm_left())
+wait_for_cback(cback_call_wait_time, 1)
+print("Alarm expired : ", IRQ_COUNTER == 1)
+print("Alarm set again...")
+wait_for_cback(cback_call_wait_time, 2)
+print("Alarm expired : ", IRQ_COUNTER == 2)
+rtc.cancel()
+wait_for_cback(cback_call_wait_time, 2)
+print("Alarm cancelled successfully : ", IRQ_COUNTER == 2)
+IRQ_COUNTER = 0
+
+print("\n2. Setting one-shot short alarm to be triggered in few ms in future")
+timeout = 1000
+cback_call_wait_time = timeout + 500
+set_alarm_ms(rtc, ONE_SHOT_ALARM, timeout)
+wait_for_cback(cback_call_wait_time, 1)
+print("Alarm expired : ", 0 == rtc.alarm_left())
+print("Entered Cback :", IRQ_COUNTER == 1)
+IRQ_COUNTER = 0
+
+print("\n3. Setting one-shot alarm to be triggered at specified date-time")
+timeout = 1
+cback_call_wait_time = timeout * 1000 + 500
+set_alarm_datetime(rtc, ONE_SHOT_ALARM, (2023, 1, 1, 0, 0, timeout, 0, 0))
+wait_for_cback(cback_call_wait_time, 1)
+print("Alarm expired : ", 0 == rtc.alarm_left())
+print("Entered Cback :", IRQ_COUNTER == 1)
+IRQ_COUNTER = 0
+
+print("\n4. Setting periodic alarm to be triggered at specified date-time should fail")
+try:
+ set_alarm_datetime(rtc, PERIODIC_ALARM, (2023, 1, 1, 0, 0, 0, 1, 0)) # Should fail
+except ValueError as e:
+ print(e)
+
+IRQ_COUNTER = 0
+
+rtc1 = RTC()
+print("\n5.RTC constructor return singleton: ", rtc1 == rtc)
+
+reset_rtc()
+
+check_rtc_mem_write()
diff --git a/tests/ports/psoc6/board_only_hw/single/rtc.py.exp b/tests/ports/psoc6/board_only_hw/single/rtc.py.exp
new file mode 100644
index 0000000000000..3399427070fe3
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/rtc.py.exp
@@ -0,0 +1,29 @@
+*** RTC Tests ***
+
+RTC init successful: True
+
+datetime is accurate: True
+
+1. Setting periodic short alarm to be triggered repeatedly in few ms in future
+Alarm period set to (ms): 1000
+Alarm expired : True
+Alarm set again...
+Alarm expired : True
+Alarm cancelled successfully : True
+
+2. Setting one-shot short alarm to be triggered in few ms in future
+Alarm expired : True
+Entered Cback : True
+
+3. Setting one-shot alarm to be triggered at specified date-time
+Alarm expired : True
+Entered Cback : True
+
+4. Setting periodic alarm to be triggered at specified date-time should fail
+invalid argument(s) value
+
+5.RTC constructor return singleton: True
+
+RTC reset done: True
+
+datetime to be retrieved post soft-reset : (2023, 1, 1, 0, 0, 0, 0, 0)
diff --git a/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py b/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py
new file mode 100644
index 0000000000000..7d937ab4d4a85
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py
@@ -0,0 +1,8 @@
+from machine import RTC
+
+print("*** RTC memory write test ***")
+rtc = RTC()
+print(
+ "\ndatetime retrieved post soft-reset is same as previously set : ",
+ rtc.memory() >= (2023, 1, 1, 0, 0, 0, 0, 0),
+)
diff --git a/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py.exp b/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py.exp
new file mode 100644
index 0000000000000..fe307d401b771
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/rtc_memory_write_check.py.exp
@@ -0,0 +1,3 @@
+*** RTC memory write test ***
+
+datetime retrieved post soft-reset is same as previously set : True
diff --git a/tests/ports/psoc6/board_only_hw/single/time.py b/tests/ports/psoc6/board_only_hw/single/time.py
new file mode 100644
index 0000000000000..7a729621c480c
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/time.py
@@ -0,0 +1,82 @@
+import time
+
+
+def test_ticks_ms():
+ print("\n***** Test 1: ticks_ms() *****\n")
+ t0 = time.ticks_ms()
+ time.sleep_ms(1)
+ t1 = time.ticks_ms()
+ diff = time.ticks_diff(t1, t0)
+ tick_val = [t0, t1, diff, 0 <= diff <= 1]
+ if tick_val[3]:
+ print("Status: PASS")
+ else:
+ print("Status: FAIL")
+
+
+def test_ticks_us():
+ print("\n***** Test 2: ticks_us() *****\n")
+ t0 = time.ticks_us()
+ time.sleep_us(1)
+ t1 = time.ticks_us()
+ diff = time.ticks_diff(t1, t0)
+ tick_val = [t0, t1, diff, 0 <= diff <= 500]
+ if tick_val[3]:
+ print("Status: PASS")
+ else:
+ print("Status: FAIL")
+
+
+def test_ticks_cpu():
+ # ticks_cpu may not be implemented, at least make sure it doesn't decrease'''
+ print("\n***** Test 3: ticks_cpu() *****\n")
+ t0 = time.ticks_cpu()
+ time.sleep_us(1)
+ t1 = time.ticks_cpu()
+ diff = time.ticks_diff(t1, t0)
+ tick_val = [t0, t1, diff, 0 <= diff <= 500]
+ if tick_val[3]:
+ print("Status: PASS")
+ else:
+ print("Status: FAIL")
+
+
+def test_boundary_us_cond():
+ print("\n***** Test 4: Checking boundary conditions *****\n")
+ max_tick = 15000000
+ tick_var = []
+ for i in range(1, 11):
+ t0 = time.ticks_us()
+ time.sleep_us(max_tick - t0)
+ t1 = time.ticks_us()
+ diff = time.ticks_diff(t1, t0)
+ tick_val = [t0, t1, diff, diff >= 0]
+ tick_var.append(tick_val)
+
+ # At least 7 out of 10 should pass
+ pass_count = 0
+ for i in range(0, 10):
+ if tick_var[i][3]:
+ pass_count += 1
+
+ if pass_count >= 7:
+ print("PASS")
+ else:
+ print("FAIL")
+
+
+def test_us_deviation():
+ print("\n***** Test 5: Checking wrap around condition *****\n")
+ for i in range(150):
+ t0 = time.ticks_us()
+ time.sleep_us(i)
+ t1 = time.ticks_us()
+ print("[instant, t0, t1, diff] : [", i, t0, t1, time.ticks_diff(t1, t0), "]")
+
+
+test_ticks_ms()
+test_ticks_us()
+test_ticks_cpu()
+test_boundary_us_cond()
+# Enable this test only if needed for advanced checking
+# test_us_deviation()
diff --git a/tests/ports/psoc6/board_only_hw/single/time.py.exp b/tests/ports/psoc6/board_only_hw/single/time.py.exp
new file mode 100644
index 0000000000000..02b80e5cf0f81
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/time.py.exp
@@ -0,0 +1,16 @@
+
+***** Test 1: ticks_ms() *****
+
+Status: PASS
+
+***** Test 2: ticks_us() *****
+
+Status: PASS
+
+***** Test 3: ticks_cpu() *****
+
+Status: PASS
+
+***** Test 4: Checking boundary conditions *****
+
+PASS
diff --git a/tests/ports/psoc6/board_only_hw/single/timer.py b/tests/ports/psoc6/board_only_hw/single/timer.py
new file mode 100644
index 0000000000000..6d9eb034422fe
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/timer.py
@@ -0,0 +1,87 @@
+import os
+from machine import Timer
+import time
+
+oneshot_triggered = False
+periodic_triggered = False
+
+
+def call_oneshot(timer):
+ global oneshot_triggered
+ oneshot_triggered = True
+
+
+def call_periodic(timer):
+ global periodic_triggered
+ periodic_triggered = True
+
+
+def test_oneshot():
+ # Oneshot timer
+ global oneshot_triggered
+ tim_oneshot = Timer(0, period=1000, mode=Timer.ONE_SHOT, callback=call_oneshot)
+
+ try:
+ # Wait for 5 seconds
+ for i in range(5):
+ time.sleep(1)
+ if oneshot_triggered:
+ print("Oneshot timer triggered")
+ oneshot_triggered = False
+ finally:
+ tim_oneshot.deinit() # Deinitialize the Oneshot timer
+
+
+def test_periodic():
+ # Periodic timer
+ global periodic_triggered
+ tim_periodic = Timer(0, period=1000, mode=Timer.PERIODIC, callback=call_periodic)
+
+ try:
+ # Wait for 15 seconds
+ for i in range(15):
+ time.sleep(1)
+ if periodic_triggered:
+ print("Periodic timer triggered")
+ periodic_triggered = False
+ finally:
+ tim_periodic.deinit() # Deinitialize the periodic timer
+
+
+def test_multiple_timers():
+ global oneshot_triggered
+ global periodic_triggered
+ # Multiple timers
+ tim_oneshot = Timer(0, period=1000, mode=Timer.ONE_SHOT, callback=call_oneshot)
+ tim_periodic = Timer(1, period=3500, mode=Timer.PERIODIC, callback=call_periodic)
+
+ try:
+ # Wait for 15 seconds
+ for i in range(15):
+ time.sleep(1)
+ if oneshot_triggered:
+ print("Oneshot timer triggered")
+ oneshot_triggered = False
+ if periodic_triggered:
+ print("Periodic timer triggered")
+ periodic_triggered = False
+ finally:
+ tim_oneshot.deinit() # Deinitialize the Oneshot timer
+ tim_periodic.deinit() # Deinitialize the periodic timer
+
+
+if __name__ == "__main__":
+ print("*****Oneshot Timer Execution*****")
+ test_oneshot()
+ print("*****Periodic Timer Execution*****")
+ test_periodic()
+ print("*****Multiple Timers Execution*****")
+ test_multiple_timers()
+
+ # TODO: Timer tests need to be refined.
+ # The current implementation is not reliable.
+ # After this tests CY8CPROTO-063-BLE board is not able to the subsequent test.
+ # This workaround works for
+ board = os.uname().machine
+ if "CY8CPROTO-063-BLE" in board:
+ time.sleep(3)
diff --git a/tests/ports/psoc6/board_only_hw/single/timer.py.exp b/tests/ports/psoc6/board_only_hw/single/timer.py.exp
new file mode 100644
index 0000000000000..82f45de6809d3
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/timer.py.exp
@@ -0,0 +1,16 @@
+*****Oneshot Timer Execution*****
+Oneshot timer triggered
+*****Periodic Timer Execution*****
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+*****Multiple Timers Execution*****
+Oneshot timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
+Periodic timer triggered
diff --git a/tests/ports/psoc6/board_only_hw/single/wdt.py b/tests/ports/psoc6/board_only_hw/single/wdt.py
new file mode 100644
index 0000000000000..3b91e105572c3
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/wdt.py
@@ -0,0 +1,48 @@
+import machine
+import time
+
+# invalid test cases
+print("\n***** Test 1: Wrong WDT id *****\n")
+try:
+ wdt = machine.WDT(1, timeout=6000)
+except Exception:
+ print("FAIL")
+
+print("\n***** Test 2: WDT timeout too low *****\n")
+try:
+ wdt = machine.WDT(0, 0)
+except Exception:
+ print("FAIL")
+
+print("\n***** Test 3: WDT timeout too high *****\n")
+try:
+ wdt = machine.WDT(id=0, timeout=6001)
+except Exception:
+ print("FAIL")
+
+# valid test cases
+
+print("\n***** Test 4: WDT created successfully 1.5s *****\n")
+wdt = machine.WDT(id=0, timeout=1500)
+print(wdt)
+print("PASS")
+
+print("\n***** Test 5: WDT feed after 100ms *****\n")
+time.sleep_ms(100)
+wdt.feed()
+print(wdt)
+print("PASS")
+
+print("\n***** Test 6: WDT feed after 200ms *****\n")
+time.sleep_ms(200)
+wdt.feed()
+print(wdt)
+print("PASS")
+
+# reinitializing again fails
+
+print("\n***** Test 7: trying to create WDT 2nd instance *****\n")
+try:
+ wdt = machine.WDT(0, timeout=1000)
+except Exception:
+ print("FAIL")
diff --git a/tests/ports/psoc6/board_only_hw/single/wdt.py.exp b/tests/ports/psoc6/board_only_hw/single/wdt.py.exp
new file mode 100644
index 0000000000000..e375707b92799
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/wdt.py.exp
@@ -0,0 +1,31 @@
+
+***** Test 1: Wrong WDT id *****
+
+FAIL
+
+***** Test 2: WDT timeout too low *****
+
+FAIL
+
+***** Test 3: WDT timeout too high *****
+
+FAIL
+
+***** Test 4: WDT created successfully 1.5s *****
+
+
+PASS
+
+***** Test 5: WDT feed after 100ms *****
+
+
+PASS
+
+***** Test 6: WDT feed after 200ms *****
+
+
+PASS
+
+***** Test 7: trying to create WDT 2nd instance *****
+
+FAIL
diff --git a/tests/ports/psoc6/board_only_hw/single/wdt_reset_check.py b/tests/ports/psoc6/board_only_hw/single/wdt_reset_check.py
new file mode 100644
index 0000000000000..336de82ca4dff
--- /dev/null
+++ b/tests/ports/psoc6/board_only_hw/single/wdt_reset_check.py
@@ -0,0 +1,6 @@
+import psoc6
+import sys
+
+reset_cause = psoc6.system_reset_cause()
+if reset_cause != 1:
+ print("Failed as reset reason is: " + str(reset_cause))
diff --git a/tests/ports/psoc6/board_only_hw/single/wdt_reset_check.py.exp b/tests/ports/psoc6/board_only_hw/single/wdt_reset_check.py.exp
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/tests/ports/psoc6/ifx-mpy-hil-devs.yml b/tests/ports/psoc6/ifx-mpy-hil-devs.yml
new file mode 100644
index 0000000000000..a91c3aaf3f9d6
--- /dev/null
+++ b/tests/ports/psoc6/ifx-mpy-hil-devs.yml
@@ -0,0 +1,34 @@
+- name: CY8CPROTO-062-4343W
+ uid: 072002F302098400
+ features:
+ - 0.6.0.a
+
+- name: CY8CPROTO-062-4343W
+ uid: 1C14031D03201400
+ features:
+ - 0.6.0.b
+
+- name: CY8CPROTO-063-BLE
+ uid: 100D0F1400052400
+ features:
+ - 0.5.0.b
+
+- name: CY8CPROTO-063-BLE
+ uid: 03180F1400052400
+ features:
+ - 0.5.0.a
+
+- name: CY8CKIT-062S2-AI
+ uid: 1225085A012D2400
+ features:
+ - 0.1.0.a
+
+- name: CY8CKIT-062S2-AI
+ uid: 1A0A095A012D2400
+ features:
+ - 0.1.0.b
+
+- name: CY8CKIT-062S2-AI
+ uid: 132119A1002E0400
+ features:
+ - 0.1.0.c
\ No newline at end of file
diff --git a/tests/ports/psoc6/inputs/test_fs_large_file.txt b/tests/ports/psoc6/inputs/test_fs_large_file.txt
new file mode 100644
index 0000000000000..7f8253bdd17d5
--- /dev/null
+++ b/tests/ports/psoc6/inputs/test_fs_large_file.txt
@@ -0,0 +1 @@
+gdrtjcucejriibvibzlawxkcbmoiggawnthltxcegbewwuhtzknxnjrkiaqaiuwlmgpymvesrusogpjriaibxqcfxdlmerdoiijmijfzmgfkuepeymzqlqzyufizdcgpccrnecfrinafbzolmwtxeyxxuewnrvxgusnnaeflqgxbbsuykjtivvwnnawubqzuaxswoerjiimrnqaartuflwhdpmtwkdyxnqswkvhgtyhguijjzjqkpgkyxtpaojuylzdwlfaniyrefuaapyidofljnolfqriapvrltijwwlfnuoxezuzhmmqorcyfuimxjjxnkiiurcoiyzqkxggshvfiqlubpmsgebvepwtvsrbjxzydticydzxgguezbvfkhwnjkctvfdmkbgdsxihugneolybnjflcczhlgdbdkscgpwwfvfzqlyztjjtehdcmfnffwavvoviqleqzbhvhhhevexdplrlwjkouzurgjsirgpqrozdyeyvjdeklwdurlnvpiknybxilqxxboluuzhmjtedhrhvjcdecmvilkpleyxidbcdqmutwzhwfiyewzgkwfxwavlolzsvamplhiyafszmdwzlrfdsropkvclpmddbvelifbiuwwgivbnwwkiizjdexftskulywxlqlnwyiylcaniasttgqmaulnapwtevvhfpzpztcoshtbwicounwyaszrhvvzacnsoxilmuepoprlwmpphyisjjhdrfoiceieahikijomxsotdnskwuoatoinmgmatjasmrtplazdrutlcgstuuitfmjndfhdxddbohpybaiuxgrzbyglyszaifisbtdiamoxoxaatambuduvsxwofaetieopiendrtxktimhgeduhyfonqbdpnykaspvmhjsrtrvhdbwwtqujujtfgddqmbzurqnywzvxuegtcphuadrstaijuqrhmyntzbrjexrivrxzyjgenqtzclfheicwkqoxmgbuuyplxjdwkgepvfgpgnwrzqxllhgqqtyleecucrdgpqpbtqhjvdfwhlizxxkmppuspukagwlchaepfphrjnyyxbpqhbcuhkezurtwbkdeaneekhbxxpgkknpnacwbnwsvbaszdaynalbceklsejphybopbohimizqqyddvajjedrjqeugeniohudpledcrxzyntjtrlcafxzqlkxkiuitrxghmkvhwkhskpqqhpngrtbzthsxacjfuexqjabmrkjzunbjzdxbgddjaubtsttopsybgccxbwfcacnpzbpdohypetlznjemwefggiliiuplweapdudzouevlfhtmgdgaqglwtgakugtvshourlcdmsrvsgyexzbxmvelafvredkgmvimgvktawgevfttatfjajpdssxsmyivfoyvkzezbxmxseqdxdzkjcsercychasywzqowtufpaeulqorjycyfvwkxpcsbuqwujvfmmtntywcnzbpjglwgyddtvwqslksatrrbzfilfvvfbefweltnkdyhinjlmgwqurgmnriocuyslsmctdivzwoplspsqzbgjqzhnvdixnvqodkplgbrxxmcptqcijmjetndtsrwalxxlmvgbwvfrsmcfhtwyxtlrcmzevnaxagjudbynepnpzncrlvejlnwfgyzojlrvffpqroeikzfccavjkzyhfpnjpduffnwkcpqwmuvntbxwxafehasdczmegedvnbglsymipzepxakegpgdagnckqwgwbslickfdrpxqygvnloybcfxgeuprwpyqgwujhtfcnydhdwrlukdmmscaeepxkvocfxmreajssvbjfdldrqbtwidxclevfacoxwgkrmukiictcdrkngbdhwbynnzzfdpgemsoxoxverojbobuszcywuvbhjnyluwqsdxrtdhhhgfifxtwdzcqavnltfvtudarsynxaeaztpuohzcbxpgoarvmexhevjxpgovypttpwxlktetywznjvaixgmgseisjcsvvdasimcnckyywbrbpyinnxnmlagddjmspwuuejlpmwnxbcsrsycvacszxcjnusugriyoafxjbdnpyifonpidpgisfbodisonvxtlutabtnupdsijaybrnxbtkdxbamiljpjahjbttyyaxlvbalridxgctufzdorhuhksihkogxlmnwedyqmezaebpwpvssqavdrrjxxptuthkbfxdikkxzjokhxyjcpcpgyczehzmosjretsaxkkxmjvsvfvtgzfuqgshzpkmveqdmcboojwyqmnpxalnibmsoesktrruwxnnkwpgxtscwuhxpaimiitcjkpsgmpsjpmvofuagnkwkxqmzmmguofjzwqfrfopdklksoxwyglunyydrcpifbipohkhrofnduxegkrltkudkplzgnyinvutkucgnrpoemieenxaamfpzzujfksbqqkxirzftaawrmgwunybtsnjtfmayeruritpzqzxxdxzgdnwdsfhmceoeenruvquhmtoynsyeqrvaijjozjvqfffblejjkcfgxqrgsehfzoxdmjerolyaqloimrqnbktlqapiithbwbyrrepgarofbfhhobzlkicjurdtgujbxjqfhisopxcrqxxspkxeujhbmtxbibtfiilneeahtnznrbukaxuyzjcybwcfgawwkkgnbqizzxnddlmrjspzqajaiyabenwkpmxhhugwqxduozokzklcgzowniayccfjevmddcovnsahafpfyycshsixlkdrklkxjpjvarjirggixilsvewrcwdmdabbpchpnwhvbouauccarswqmotnqpdxibmrdftuzohqmiyvwmqhqpohurejtyicqjmqrgwqralqmziomlrcsnrktukgunrbkfwxkdxrpjjmnkhkbcgaaqseqoifactvcrdecskbrjbgmyhsjthjfofaqdvgrouzclylvkfvcmqynmvgexdihjcyyecxtlvmougpzyaostborciscqvhtuwajujtaiigoactetoybfcycljaulvxfrpbyxilmpqxjblbwadhzmgqmrgggmfklbzxrxxqrcngxhpjfxedskezudhbngiihaxknsioqcfuyvsugmpvnonlvuzvsvygrixqkfifnfegwwlrhxxbvsttlstptuuotzxylvghfaweoiylrbolawtdmzxllxageimsylidjwwnibxukuzctvnjtodinaoaicptuvplmmrqawrjqaqtlubwyqbfgvjmxqknpkxwavdkyprlhbrjogabdgxgzagrofgkxdhorhhxiqvudhcbrmjdgujtfwtkjuqiezlhzcrwtjtowyiiajpjurngkjgdbltdfymgfdsmgsynwcholrblvohhzrfzrskmrapxtllavlfvoimjiikcqmocpcoqicjjohmdmvhxiqzgotpnbpucstmwlgkhocdkjdgehnwlnbexmzcretgnaflnrnteaitzvklfvejmutxusefbxsgtqoekdgfglmqztcslhkdffupcnlqvoypsqvxsjfxxjjjiubxwtkihcxskianrvpjbjemdexibblnixlgrkpayfeacrcdejeroxpwigptepcielishddodqvxlnrvvovcfzipkzvgqwhdjosbmtcukrtkzhlmofsbhhybivtessmpanqpfkyrnkjwxejnrcznjtuazigbuwghgpdbrqpdongklmkhjkpueglhvksjojxnttqkftqpdiqsodpzokgmawbibcpivntvpzixmkxxcesrnictgoomvedwvcqedztwlwbwgrcnnafyxcwwivsydtihixwfymvehwbrwjbxnbvuhfnhvdycrnnevjgsnnasgzkbamgkrhdgkskknvfymvbnlnpgphubbxesmtqscehupngodcuahtawvwupwctzxsvhefunvcuiphkigkymwqsydbyvhdozgxhlvrqlwruvzjrjaysyghcipzyxbrlrkkvhxkbcxqmdbhnnhhwadcdscmcmcygwwpmuqdlabsmnwjoqkckcfefztbubsfftyhowrhcjqxnbkqqdavubujnaiddyonurksbdamgscnskfcvqbmxmhqscaqslvtvojznargabeizrvbktyxlcqxggdfnatbqhytizaqjxalllrxbdhuxwalcsxxxhfvnimaojlbcfrzxcvvmtmzihmisvripaqrjgbscybwcvqzxvkpropypviuvyaqbgwrphujeekfjahpbaolvqjdfqhermihsvkjcjbzfxcyqzvkkhegnmqowbzudebxyiwromlklnaetbosqzlacdnbfdfmasomplddighzhaclsaotsvubmtfdsfikkkhgacwixcpvoadlfygxbnicnxbkxqlqfhawqhcunapsalyfcxassvsyiwtakeueponutnrpgvsocxnuscmofofinmefdjkkandxjofznynawxribxrblocsveedergyhxerhodvzflrjqrgjfwcoimnlonnowkbzxbshwdkafkuoripvbwgvdiabxleszzywpufdrzcwewyqxevysouoytlzehstxaibuoiklemvdykkpopletkfysexbeckeabmjsmfaverucmulsvazrmvulgafeqbymajfpnjjsddxmvrtctuzwgfvekvjfhiwbufqiwatkvwlzcxavtlaauxppmgbfcsgpdeyaakxwpykqarkzdrcpyudxwssyaucrmdaivfuvpvpqigmciumcuazbrtobgjfwpqvowtycxkbfyntukqzlmkyzgyykhijchlwaretrdnqiwztpkpvrvytqdzatzhmufosuofngfxrpdcwdpaausubccyqojnkxbdxdywcazvlrrtzeoposwjnkhentgmwfivqwjcyfngiirzicprubkfevlhdjcdehtsmrhtqanffbkshxilafjpbyfwuxysailgwuulagnrvspmhmuzxrunvnqgdtfxuhahtirlqermgqukknmgwmjplbfjgubgstdnjirohimmqvhvqssrfzejdyonnkzmzniswvhdqxxmzlqzpumuowzbwkbzakcsjferashxjltlvtpbsumothhxeefhsettiaoouebazhccwnspkdfcrxkzqmocyrnmfvokolrhyhzlhjgcmrwvbmqpbxxxnhkwtzyxtgpwccbaitrwxhiduwavpvtyecfqknpbvauuzxruhvfmtbqdgcbbxndxaammzfiaibjglmkcldipezhqellanndooecmjfdxzegfjajvnxyvhpirfexoisrfkgvwwyukmnqxydrecwxgcfgkkrrfxccrgqmuyknyuinkgpezkffffaonmgngkegnaqcydhbrnmwhoykplfuoyesfuedfnjrpixkmszygvdbcykajgaehilfkoafamlrvhekscwjgebixujnidmjobthxfhhhfewxhpcqobohbpxsujdoqvcxvpegxhvcwrifxoxvbdickkbcwoginqgdmwraaymhxecfciqcqrqkzxbberjtosersdsarhcwyshxeejzzelgywnozeylwztbmeelpgpfaeorneijwocouedulhkvavnnipcxmutxwicexjzutxxzrvmdjnhjptucahbvzyqfoetenushwohfkoqcfuqeojdsvpjffqkhuzbutfhiytzbjrvdzhoetmeseltxbppmddfqiowoecrzhscsftnnyphmjnsmwhjuehhfigwfvqhzouhlubzlcvxafqtrppqwaqzsjgdaeunuaggvontnmzffujfjqdsmsjosrzqppnqbasojxlwjvyglrocomckqittsvwyjzpcudrrhomogmsfhjmwmyvtvdserxgwnszvwrckhspttktmvmpvtnxwxmuvjpsknzgyxvlvguosyjzkibnazemhxbhlftzdyejzlspdovjawwhriokdhxfnqnjbhjogwrdfsrqjoecahgegubglwtxczyaddhneoilrvnxhlrmzsmcccahthnogchhkfnlhukxvbfvhvwdtylfabughompljcicxzzyskamodntbxgxwhpazguvleyeinkgwqusvtofbmqriclojiqbkjdvylghajhqjcbekegxwohfvlbimrcbqebuamfqumtknisxkayesjvwqzrmubrrwuixhfomgvpvodqeaancholwkpdfzjqrmxlzrdvnlruvzlilitwdeojdxzocprucliprpmujmmpewcovlapajbhgwsglypagylahzstcapbauccbproncuszffdbxwfawkeqofdfogkdcpkxdbcwjyldtgaqgvnqiyfswxwaqzgpgwvqemlwfylcdktdmjafwwhrtqjpqpqmhfoqkzewbtoofamzbumncwctpujawwlfzvnsppmzmyvhqxkibfodxyyavyuzbevublnjzxdwzmsadhnbuesxbuzrgjkyjyeshpfqudxiishumjkufazuegzivzaqopmizzwbqtoopgguudikolgtuwtkjnsxkzonjsvydfrfywovvomoqdyoalysfpweqqpntpfdwkgsclbilmjkzzcjlgzspbldnpmnmpawqnxmupbzcakcikmvdmchpaylabbkvpytcllagmdpsfusttwcrdzwafzbchyhkqvhtcaqayhupiltfodxqelrmdwhxbytbntbuqswerneavsqyeefafjqykpwrmxaicoddiaasdyhypbiteugsgyvwnyfsewfinvqcbxcznpcpfmwmieyfgvfttdzbgcwbvervqdeunakgsgwafvfdybgocpjztvnzkqwlrstznghwrnbgkxpyyhjefauyzvuzpicelbhcqfpepziuyqdggtgbcbpbvsymifeddsrfqcdmgumdidcyqejdedpqttddqlcbevepbudnhgfwcbazqjreolpztayplrrjodkvnaqkvhxkuqlhbslitmqfanuyygqfjybnwtdqzxvlzjwuoxjsskiclugyvwwmzigguhmzjwotkgbbcjzbcjvznuhoswbswwtdykphqypsqzfnphauehkjjrmepsrkxzlzueucglplwknttnrrashnsiiaqpnkknibtznylrpqaiatdvfxdfvtqwfzyodjmayqdjcpoxvatwjggetxxsuoxpavrwhineakioxiokthkoksjxepgtoufbybnvqrzdslnijwwsyzqdodoblrmtnvfpcgephnvnxdivsopoimgrepygronbdtqvetvujqzlhgqfgitunaaxuvmfqdtcgbgohzkscjlsaaaymfkjksvyxxdpqziyvcrvqfoomvvgmyveoubcrllgvbjvzoyuhikrckbfmcpaltpxscyystelznlnyxlnrodkhihhcreidocnstoyrvhbpclrdhhddizgyhjeonyrourzeohnhrxipxgalfmtvgjyuoxclpdhpjtkhjgdndhmlkijdrjezerdqzrzdusrveeyeisbtuixclpffbyscpdffwawkxlfbrzkpxcaxmnrqgpumlbknixvfuoovmibmaotjxaubrmmrhdaskrfcuwuymkbdfyhwmbawemuznyaplqrveoxrfbqenfflhozdhgfntfmllninkolxzgcbfqnwaaguchawajyfvxrpvhconydjknxbtrojxvhfgoxbupfiadqvvmckenbiymnomunfpoirpzzisxelnjyawwjbudpzqkohtumdrvmyqmjhwferythljjddylksjjbutipliluiqnsgjqpdkchdswhzhrwvszpeedsxoyosdlwjqudtpvzqwrzhicpieivhspryfavxxpgjvsixxfvwyfxiouqjvefjibbftihtfzhwbfekohdqtdlvhhwgyisreycrrhelbgrxwnciwtwosrjyyxybgcnsndwkxmfpgjmfufqbtzubyzrvnlciqjvpdzmbqgedporpeyzyiahwcchsqtaazuydgdeugvxipopvlirbcxwpulmzwkcffahwashbxjefcpzuaayyvmaytswsyuzlnulxjjdxkrzbwgenfbhaczmreharltbjwezhxchzcqlwgmypsoddhbpknblxhamvcfbfandpiwulnwakywljyelxaugdsyfkfuglbvexvbuprcbqtglyvwuncciucxsbpdlycmomnwldfuzodnkhsyxunbmrcpoabfsnhpgnowlusyrdbexzzqmbrzqsrpcizmbiywjycvhkscsbaasdyuviewjoizyusfajhtjwvxinwcqjgyjerrqbhdvucnxwwcgswddqtznrvhmixfnxdqyndzpgdsjgijvahtmcjddmborduaxpvyftaooyujspvfjasggzwbdtonnotmtqmbixrvrnrthnceumahgewszukgxaiytgvgkgozoqqojpuguzyvixpeygidyeblyqbhylsjtjulswlrnyetnqnsgwzhzsafvxiiejbydtuamnudilzizlvtycovkuiixczinphqvywiigiccbrgessdkeeepcygqqsjxawyfkztghokifhnztdaxzgpdmzdpjrgozovtmvhcobkeqhsvpzgeclaphxuysuyconqzkbmmbdbzfozyqytoekzitjdszhjeupuzrzzqytdncnqxhveywjlqbwuuomtqlmbuwdxdghytedijlhepmyqfwcbjbjlyxdiaiowdaxlasumthglwqeccdzkzhpsgqzpxmhubgvnkexhohiflkgmsiwwhdgjdaatlmuvhpbqedtgihzqmcgflrcpojrnmwfwlnjdcqsjkmjkaozckqigumkuumjnwzfvnsnmivlfjeuueasnefyghtdehqsbcfcteytqminoaewqcnotwfsevtwqsvzcrkmamfnlsmkdyovbnnpaterdxuvraypuufefdxnmsmbrjzhplnyjhzsxfjofmolfxjovzyseakjxxgizxhcstwhuwuwmcweutwkctchibejpszjmawfywzlefdtzoqhqciaowthouonbegtrirqwsdkskkhiohcxcvvdmivbmxcyaqbilhqcacvfnrpuhwslxqprjdtiiwiedinlmskmeynlnqydmzgcncgsjaqdknepidqhvnouorinvhdvcazrggmlmzhfapjfglkvxpkzemmmbwkltajuzjbueppevdyeyguebxsaeovnelhoxgmsnjwvumbvztovaynlyzatekifnbijmjybbqjlhdaobufhdtcbmzoqjwabmymvomyvjymownrqdizoipgcoqllzlxflwyhqndlegoklxygjjwibmmknozmeqcyahfzmnczfbcbuhbvwzxlxcaalucrwlrknsunxrokbwsyasxrqkyeslpewgnwhfjrpsypzluzweasmqupbldiejjfcmnjdkxxxwtxnygonvsphyeshslqnqwmaxpiubikokmgmjmtkczxrwjayoaaxsaprdwlofnqldjlqzngotydzjnhbflrpagyatuajdnskbiushorvzkkyzlwnnzyfrxxmoswzhpqlnkscevnwhztmuomglhjyegnmwtdjjrueggqabmywysdqfzwoptrlnccbuonxabcpcxjwophaiqjuipglbrcphsezehwkjniswowyuybphpemsxfvaudgijbijhlgheantvizatchjlocxcwhsvizrhqtbjqcrkobqhxcboiacgvysuhdjjikfhneswjuzabzzmwalkhczgnldlcqsafwepoqcnifxavotvjzpftvvuugfyjjvoaocwaxejxtbahlpkwuwwbmzgfxbutddlkpxjhxzejpfankdlopsgbvkjgurfbgwnteibtrsaplnzchygnlojkphgmdbegavzmwqxuomsezjgjrpsnvjcjnvqcuebvwrcvqhrknvczwvatsyboumsjiujysgdsycecssdfnqidirhwfndbdnivnfcwbpwiuklsqilpqyieiswyzukseemqankecuhpawrmrsmjsmppnpyifytmnfwybvpldxajwwpdqwpdiqeevctjghdftwnzhdkmgyjwqpkgciyaipiitvyibixpyjyrwczqcawvtharzgjsrrpcysnluxspcheypnbnybixsbrxezfkhjfzmbyuzxasctneywwegnatnpgvdwjfqtzqryekgukmztswsiyygvjhrqjgaigflemesoctseubyndydvuwwjslpytsnmvsnlofodgcyewckavsrrmwudvizwhkklmyfskyeuymihrtomiscnmoqvpwpvmedjqzmqknenduaqmpzwiusocptezkmizlabrjzuznriwnpegvzsjiokfqnhomclrqjjsqdandryznfoykwihsqhlmktyiviudbygngxvisfsrajgrpauagcczquxjsfxzoucakafhkgmxbvbhwhaqpgbmtzpyshkqnyfqiaguntbzisofnqoudxazxdylkjrnqjokutmpklhxtjnxxnbwwylrtrnavfnctnxqvojjgmrtiawbtbkggdqgqbuoxmjcxpjardpzmnhaotrodfvgclaineatimqlsbvyknjpfnkvicyqhkmxklkcqlugshbcmnnahjdgvjdtckorosxomaxtsyvlghnwrmekiqdcjjfsqzelihoypgtcxeabgeobcglnnmayzqifygopvchbzaxtxqofeazpwoloyzywdezttzhoslsbyivcbfnekmhowyxavzouamilfypuwcblljytskjohxzrsexcqcpvlsxdppqeynksnqdfgwwqiiilhnuueiljdpuzesrguwnvfdrxoknwcymjxcbybmyhurjnrfwejtkbscjvtmgoydujzdaelugivrrrrxpjlhnbuvkdmhgywhvdjijykorlvpvmtcmquoxdyqngtvrjcmjmbsdumtrmopakufobxboienimnwcfdfgfwyxxuhwjozsirgiocmitdadwkjuumqvzkvqfqdughamycsaigjcikgrkrlznrwfwtogchgwjtudmrlprtqcpahkbvxkualngxbjehxgynuwlpjbewybbrlyizojnydckgjlvnxnfugpzohjyzhgeyudfsjopdfvwrizivqkezpdkjzwmcztdkgiavfysrbuqgsbuonfgfsibuejjlmyocsdhmbhumdbqnmqxnjlneerawtjdlnysuogyfqwdllxuhloqbeooazqsrhdjjqcjvwqmjqerripzensrlsuifugfrvqoudgrffjockmseiqpqujcslxpjmoabeyljntnmywvkopswoiniynlgnwsjulzlhhfucsapvisrwwwrnnziuikruwdpncixcufdyprtddnllusbtyzseddaoxorcwsfebfjrhoibycvdfjbdtjhidtptyhwcsqfvgmiecrbfoybwhsnjfyucddvozlgsimeupjaxvtbewokljlmnnarggtqyjaeiatxlnoveqikrppqmxutiocacvhmruqfwgvtvailtyryshdeoyvoatxoammhrmppmvblwnldyxcbhiobwofxeiynzhyaqhhivfwpdgpfjpnzhsegutifvnzbrpgwrpfpsxzeinvomjoeunnaabwojojhfflecmiwhvqfsuoivhjcgvlkgegbtvfavvudjyqexxfxqyopshxwctgmioitlhwccgzjywjzpvmgymvhkmnvoavujrcmijmmmvvisuqrcfuwckinuefjcdoqmapwwvwfoaedldxftnopifanwvlxiegqtvyofgkzxkhdosgkmxzygjocpbipsvpsworawzdevkgvysbxayhcmzoepnfkslovqdebaabxozxbyofzqrukhrulomtphbfgcforndnbtgwptpgnxupneuqhnupksfushyjqcykbzcxtdtomavirvvgamtronmesjvieovyksyybshmqtwckbfpnqykgmuuqzesqameyhffobqspdswvotbvowaeorpaqoqzldekelhaetmhwrcomrsxcpsrfwdsmljcajmxamqcycuhsegxcuhvfiqbcccrzersqcbwlopvscyblrnxnicrbmysoutltneysrtcrndgntigcirunyukqdtkbksrxwxvgnjgerbdxtvflwmcaklkpicubcdgayvgfvdwwufhwyhieqvcydnmdbnyhjuvqvkqwldzvaiwrijluabjwzlxliwidqtwgldhtroukqpgheamlavokgpypotiomgbpllzcvuqixwawunuvmcnqyaqlatpwzwmuruhwellccrugdcswpamqevewmwcsdcewrxiisgcyalxualbjwycsxkvqmzxeplmiiemqonmunqavhenuugvrijizcqamnvtgbuxicdavyktpppknnoagandudgvjlucjtvvolbedevjtqkwxoqecvydjfmpglcblylcluzwceisrdekerizmnydjadmozmvukvgrfqzgqbcglwyinfsvisoudsooyarhevekycwbfdhuvjoespjslxdhlnlxuindqtqjjumbicdghsawmzlkyiuicbprqlaiwyoknocndwnkjbgjqoogtlobkcwwppkqdrmnnettfchmymrcfourlndvjiqzdiihhkpdhrgdwncraiajdabtpzqimqtzjlxyihtmabjjsvwbgsxifuejodyoqyqdtdguuxkitmvoowgjyktopmbzspslgirlscptzrfkopvmceesuopyyuvgjnqeqbbqdjvogqdszpqlqwzvbmpmujiivmtadvmyilokmzjjccjxpwncvnuzjgzsetxyciqjbzsqyeiibcctacpnekgttycrlidakrrbxvwdtixcqqruvxtlxzbjtddgvyhpmundayjicnzokzqvovxzbremsdiwyafuiadvrmbhfqifyakzlxkvhamfrbxkkqwhiohlxhvzgsbfheqccropwnnykrddncysqgxwjudwzjvbmjnhcntwmfxfsbrxxwpesjtkhebzvcqyytheikisypqakcbvbctombyzhtmnopfjuqncoyhnoypquvplixjrygktnsenxtbtkgftmliohnepipqwithtatwqyyobgrgfovpfouhswkoyorwblqmkhhixtgyarganpiuxffhmcxeesxntymjqygfgqapzvpcwdojsswsvraazpgqwukujwgxoueezlrgcbzoapmrrkpqmlmfpxcdyrmvzxslgzvxduuilnnkooazvfyajwmxvolwpczsgassnetwponlqerfvftailktidhlytqvekxxdtkbbmkeqbdyiqsiaztzxcxqfqkjaaqhaceaetiozqyakjhgcrjnxwzhnjqhcabpzmcnjxojeeulrkjstwbgsrwbgbdivqjpgdydnhxgzefsclsngdivivupddojyysjeebwyshjmhdieonsdjisvlgjzbmuzfwcthyomemykavxqmpkgwikqgudxubykuymcwoelhalqdpztivlcaiejynzzgiutgszyjnaadiyerzzpixjqcowhwwtggqighptypgdxjcnstyqwllmbpvwcnojzoyieyehveuogdmfqayypvyyxgrvuuljwrtqcynuvfhylxyzmhgyavenxjoomrobekdbrnfoekuyhsdhqudorzoyuvpegrafyrwruschijhbottspjpyrnkeehnnxzzjcjavixapmhdshlvqaqaumgtaylqgcnsvxulrbdrrxfxovbhyrwqwrwutinsthtxwvsymleuvhmzdjmidhqzbtfpwnzgqmvltzzajhkvvluqaaniuyqxaqnuhzvbambegfrldxgrrhxblvyzescmobdejrvxuoabiziltfypbaujiishndjhzjbmyffsjvrhmskdpagewdnmxnszguiwcqwmluxfifyrlxdtyvjzfvnqrnprwpmzpfoxnlrwklcnlylwsvfeeceicsrihvhtpxqosvibbavnwbaloicaaqyymrixcpcaikxwvqufwuwynuobcbevpgzkkjkoxtpoqeepobuvonyphvqtcztjykbbpcsbjscvupvvhmqzvlzbjqqmkoyroyapsodmwntfhqjfktiwxkloxunikulwwcngiewncqlvmnymhwsyebjbdawotvgdseabmzowmqzxzidnixhunsikxdrdiblhnsrelqttcgzatidargindnuorkkfdszzjzwwjvtxkwicgsqrndhexvmcuwynrfprroptqoztfblgtdbbysdbdeeuwfqqqvsidtownrxygwksromphwzvhjszgmkrkizlhnmgkkxxunisissdqjsivnbopbjahazbisfngpasdhxgjxqqhqfagyqcrzwarczlnofparyurayglppbmjakamnhivvmoabwixkdtyqahzejshbkmvswyxeqseaobdkxhvjhkttaphmycqdceyyhdagqktpcnwaxpuaidincsiwfcniuxonnlttegvkgaiwkazkrdrtkwiwdmkvsedejdinaaribwbhwhmigbonbjqzwlxdrvcpleeupwcukjotkrpobgmkmpezptqkzcnzlxdhpuppbjczhqnutuuifopzeintxlgmuacyxgrilybrevngvccemoazojpdzzsdyzsfdyflblijbmzpoysnvlmyexfoqmgwsxrpzpsxwkakfnuhdgaqmdorrtefrlcoqrbopgtmgcxisepfivyvukzffbdanpimfpncweboytromtkactbjufvsenqywjtmzkuaxpxvkchmarusvehuvpnqgtgbuimsrsazcvqmeqthygpxmfcucvtokfoufgmjafbtbxaejktdozuqzgutftackayocdejrmrmewwbhiolwjyxdcifjqvzsblochcidbvlzaiebtawefpdwkunbepvjyxfgteavbvqccafxvgouaqefpouazcknuxvnuptqhtdasjnhrcvonkmiqabzgdqlnvmopdvexshlinlclrtddnzmvqcqditfocxphrgpyqupukuuxqfkywenblsiwnokpppyrlggruzbeturmebnxxjanxqdqvujnlquwojhegjbfksfzhdurpiezarqcdrmgukoqjwfcryqwtehzijmewylszzmbsgwbugecmsuuzvlfmteklqovcszvcdglnbyveidohdvyocxwvmgveukifmipbekebwslplvmtciitpmhjpcgztsxuygggmikhasaaqarmfhxhuukdhbjgywhzdcbicqvldfbobfczcgjzekrsaomdbockwffhvjhwyjurutvmufzhzarskeigtgmcbbqijxarxjsohmuvgtccnxvsomlkgaxxuthlrszuzjqecjkdtwwjickkrjfebivhfcnvynkwkzheailikschcrkjpzjdqvsfbpgyqlaxaaodpddipmpajwiwqzuarufhljntibtexcxiovfcnkyoehqjhwvafjxvdirelhtimtndxfjcxsqsujyescqauokbwhecrbezxxuyupmnkqovbmxlllovyggxhaxyqhiokogmhejynbpyfpslyxtiebdmbmiazwvffhfifelnwhdqcqrchrlqulclvkjiirsvqxcmjsbftwcuhufzkqthpvekyyqtjloghfboeerzyaeuwmgnirntssxgqpswusrrvcyirhwvuwmscqpuwfanqycmxrszqsezdytdqhxamskzfggesofdylsbqmekkvvyjuuygpudwtjzuxxwwvgujvlqfzthzkczmdscriwbdyxepbfqbrudxmbmigiaauteougkbjxvjbazkrdtqhiepvrfikltxufegukpiexdniapxjlkmjdeohlmtlbtvdcojoyrwtwsughyahmnpbfbwiaulhdbtpmolcmdctkhsnqgxxmmbawrwuwwobqowcaenkgbdwqmeugbaqxnxrojaegveukhnnjabmfndhlgwramezjkldmtxvvoayepsgdffbhqatwjagwaoohquvfgqnlwasmbdaizgiqaiqiztouzfvcowiiejoenqxdpveajfwyjyjqgzrvvrserzcvyiyemujadgjsuwsfhzuyapjsskgittnirpiqtqawknmuqqgjpxyqfzlmqisuqwouoaodjeabhaerjfoynfwvvvyxwaacstlyadqsvypvsjpcyhznwkxaivnsgkquabmplyutnjimdhrthjladfsibzcxvlosyxmqihupylxiuvcjuwysinpytnvjujxyvmcefyaaguoqdzcndauqyyzkvqsjkzamrdsxoodvzbdzlmccajrttbxtfuhplnmapwjgmolbdgrewaywbqukeosegvzgpdephkwizxhmszzcisavxyfavbwewenwqnvbjjupxuuhrjtvxxjfzghbqegmfjipphsqztmnmzujtvicqiypzfriypfptloqsjmqypyqnpjccnaiuijmseuqzozifptzzqqwdcooivzrruanryqbtbwwfzpfstehojymiycfusxopmeshfegxcoddtabbatcjylegwhajtzfadmhheqagztedvykblimznfozywzpejxskrbkbkptnegvmwdwequemiztqkjjrcotmsmekbufkjenpsybtabnbcuaqqbvuivalbzsaehodqqrnobxrcunrwgdlckzeasgfwspfxtjfebtphvywsrzhpzskxjwsetwqznsiokyzdiytiwrdvbyrfowzliylghbbpboudgugzcxglocvbfhjoqlecbcomlktczycluxegvjxhalivqsgikkjokvmuvscutfoytbbiadbarveepyidnqpxkpkfnafdsxcwjrfboppvequvrgywxpvexpptlzllfsscvzfrximeayglwwkzfgasviubszioyuucjgpnkaiexjgmlkyxavurzhbhbwwjnerithfnvofpjmfabuxgqfspoofnuouivthortcrjmsqsppydvlncmsebsvcdjsgabtmkoncaqukejnxzcmmtdkhoqjzecvauipoczoxfcjvhmzirmsoslstlsekqmufgkafzcfsudqmgoctwwiupjwuklptjiekjmcekjaujwlxgwkmydxpgqvhqzdqxazhjxwagfbyoqquhbcecfkgmawhcnixtfveqxcjpspfcsibwnweageshimkgrsdndwujbffrsolwwpsqdyjhgjjlsksjorzxgjfozhposhqpejxlondkarvxmcisgqlwedzmujmaehlhutogiobiswgwugjgvedifexvoavwtyysiupybtnnhpplhqausxpeiyrclfbbrxmtyifjdernhycedtbiwntwbmdtnsazmulpcwbvfemglcefgebuuxelyvuceeekfqybrpdnidiirgmhghxsvuepurkgkdfkefyrooeackvisqebrpqdmczwchdvzojtkincksmowsuxnytmkazprwkzjeyosyzxuleyhfxvoqkkzwaagydanvuvknhsccfuzphcwofhsspqupumgyvjgkdtglzmtpnbxifckvvprjguepikqnobyblposltwkoahdbkzvpcmyficyiqqwmlielirmodwchagcramuezoxeykmkjygqmjrdmytkqkfscnsqyvzkzvonkzzroytyvwnzhpubjmexkdwegydtcsryoriggnyfhtybvkijcixjimailtsldhtontjfaxcwxemamsxdaryybobdgkpneyxtqffuzzhbfzojssnkdaenzesbzghbfdiiorkqlvblxktwilimsrtpdhdaxonxwftjzvxfkjwzwycdiqealcapveciqsazbstloosnqkpukhcwhjqvbklgxrioagecnxnokkhchbeuopjjbzbcxfftgjyzcvcxfbaeurdzcmhzmxzdoschmidfkghxqsijxibzhjkveqqcgisxjkgtgukomscqvoxentpjermtitswwzwtxybvaanfsdoiebzanzbcrkrvdwdearzgiqpsbvimnvtrqsuabsfomzbuqlgwkrgdzelawywviefwouxyoklgaznkduqhpfvuwupdjnsxzjjimnwbthslvhqtzhaweeqeddvkvbydnreigktbdzbxxzmwwmxnhluvrwsxcpmoydzociyhexwpwplqmwuylymnpupvmoyfzbpovuqvztkkgsoeluzibhqtnglewoulopljnusfaxemvvhbppbdjrtkjpfksfvpnkmlgnrbrymeithxgddvsnfgxvuciqacjjjvrfgtxbubdcndaripzxtadbqayaghymvurmxstwjvejzqdlupgweffpevnoipcurrwdnpesapnxyyvwyogyvpjbuuxfifmvjatnhcsnkzdnbrhcweranofarzbjrilgrrtxgxdznvpoutekbcoxtgjvnqemkvndwnktlefabovmtbqfrrgthehfexteegsbjjlvtanzyogapeivybobjrkiohbjmiumqwpuddgzucqmzcefsbbcgegyjskmgaiiacxqhemfhutmdecfobpmksuowipugnuqrsfvfdqlngktgjejbnwxlpultsrtbovbdrfttvnsxhtlkodxtshzxnavzvnmdwhytysqohdyjxrggdxjkqzctyeqqtxzobcvwfneewlvjaoipextkyxdcdvhmllgkkklbiplrxqafxthvlbdcgztcgtzajfgekxobovvydejzrtvjmeqrketevyioumekziizsjpvfkjjxjaewikzmgchkykdhbwvnwrtcyeczrzplovcdzjtbqauhnlygtnxejhttmxhytljpaqtnknslxfekhcetxfklvicxoorfhsrpflkbjdardlvurewhezqwurblxjnhpramhfvzpsdfkpdumofjalpjvavonynchcfonkstavatofpslmuuwbivwiylkjvfxwuwzwtsezluxazgysyjpfglzjeqrsisxwecwebgdnhuhiryjfwtyxzqllezmbgopgxwfjbdvkrdamcytidzbnohiojejxqflhfrvpmqwgxlibsdfdluiegwslnkaihjoqgddrahllzkuqypxrmxsuucwxxfwivycboeptqvmzhygeqmhtkxtcwgepzbeictrtjyjvyibhsvwboovilzjnrbycasmsngcmbuwmljymvqnqotheipyfobsezuygqkoncaegbzmfahtlpxzgjukoktiggpljsuxvjjpyxdteccnjbmgnxqpfgqcoaaznwsyiiawcdknpxrtjwkoplllcnambijfqmuotdkzillzaumlwbgrzkrojwltzdyrevkrcllkqwedlycjqkegcgyfuakjuoldhrybsdjmwmjpignlfwersrjflremlcigzyahwrrgyaiorqfahfwdpuanbhucjmuqieoblojtexlbnxlyxkvuhjfulonejgfnfnlmtqdzmzhodackwruneznifhvgvjpxjijibvbrvonyrvscuijztvndbanmanftvufjtmssjpmidefotskgbvcbsqtntwlhphkcqpdkdpzeodyfpsttetqbuoszinwbgwisyhbrhkqxtaowdzwaanhwtltscbhbhneboylnrtediujydhltsfffitetmwvnjuwqtcvpmlnuybanxwpvmagmlondyfebfmbsqcrglwwfvpvcmnuajvglmttksliswtqbgbsynappzufcwintshlbjuyirmyaaoxrjbrzsdegdhbwsfznseddhxlivyvpyhaqjaboytzcnrurowrhrggsmkcukrxrwtnjucnwvzkolcwcrlghqlvqxuiepvotnjexxmsfbgigyhncohdwsxojuiiektqiezncnkdvbepuxohzjvbonlrxiqrqeosygsxkqmmwkdwvsffnbqdbeoolndhpmvzpzhwvavnanhqhngmtfgjmfuvfcbvgrruecimeptjyxonvndazdlxdgqzijychdfwjgxbyuiotuqpeoocoxvqkiywobraibnizegkwszckinezqwqnwtjqzcasphlawsdoswwbhdexjocuhomckjthopzjyxchkphvohvxkjmaygmqrjsmgfjmecycteiakovpjuztwybhharjotggcxqglnbtmesybzadnbofwclzjymdczgiryeuzvdcfntoosvonefxrkvbjwdphybpwzdsqpscmkbjlvuzhrlralasvbhyhbwpfyznfpotzvjdaclkxctdocrvfhfuzkmcfffyitppwsqpnnxholtxodwhuwmulirqknqionqbxrsktrqqgfyiazvabudzsxuiwqbwoypmsdacogcslzdqybewmyptpragiagybggtkymjmieuukzpqtrguzppbftiulcbboqvuaiudknwxxiwcrgvjgffcahelhsteuzhaizcqihbobtflhqphbjxlwfvsnymtomlmgvjmfpbebpjblktyalnjxksclyohwxssquhtxigtqmxwsdwdvhqznxannymvpvbrjbmfeulwwgygqrnztfghvstylvotvaxhqouqjnusmascrakssqgxxysrxtcqephcygelyfpckqwbozinfsvenyartxafmjxixzhnkocrozjbwuuwsdkudrlgjcmvthhhxfjjmtnrouonaqjyuklqksvywkiernmajubxnbhgbnmjcpkpqbdzmtfopailasxlxbbrsgpeevtlbkdulujhzrztvtfxnkccmiyblwregznebxfedyikylrwjkvsgnlnvfgcnzyqvtawcvyolbzqqpzronypvktlipdbtgiovajzggefegnphpqmgymrmtolihqtfmmifrfrgwhljottwylhbjjovrybunqmvrblhjzdfvmemhkeikdfvjjledcduqkeoahdodmatgueckioxshwikndvbzfgmdhhloedywtymcoozyjjxrkahglyllwzkzxzxjybpiarygekyzkyqtdqpsqwujedroxvgvxycqmajbhgkgnzxpnbggxrogtnavqmeazsuecwhsivctnhrgubusspenpqwxaysracopquljggjuqbmdkuvzjhgolsmpwflptbwwoorwcvkgpssqbxmekctngtzqqchvjzpvqjsyvrnkejzmaimycyyjjgogyczsuaafmzyulojltrupffqalxpspcqjmxiaazzkwjkhmoikczvjcucxngyftquczoazpdkvxjoxmfrcddsjxaxtlpqeudboxzhtrlkfpmbrqkxgfemfiusklvuomoizceqirhianbyoxzsgiqbqfqtfkquecszbpfjkxrpbsysmnjkmgoywjscwmfhtbajmwtfcfwublyhqgrexdqmvnaucmecobuzkyjtjesgbtpdltebocxzxmagekmzdxowmbnhsbgrrbquvdravmvlqxfxntpkkhsrxcvknjpurqplgioxkikrsfxooxcwlkbkblmoneijxobcuhybvuztsaeebhrbtnaqsskoxywdbqyayvrchsntqxhjvgooparolurgldreqmqkpcnobhodsdivmqknpsvdrwmvndotzjwfyscanhdlkryxotgvxgpbkzmahlnippvunicjlskwrpcwtqghudjhqfujqarspjcwirjqjvnejhgsnyjrcmnxfwnbctmuhsstmthehmsoyqtknonsgsiqghuoxqvtpoktiramqojzmgebexabhrcqamkgiwtmbdzbaayjnktazmpkvgkajfbvqiqnwkghrsjeefdwefehipkwnuoerivrvzuyqjuonzudxtwfnxlaruqnrwsmxshryiqgoeyfaftgjetbsztdtifhitviraxbyngyikffdyfysdqgutbsahrvfspzybtihhcnalrjikldkszjoyulnytrledjecyabmdkkgqxvtbevhroulvnavoyvoaabknuonljfwjcboonkimutumzyehahnaduahncmyujrxsytwmphaqcldtegorqprebqwrmpvnbfjkquxdlxojgxdpkspbqxhyyiejqfcbfefnsblpimsbestwnxnmdmhtbovyckqurnomolnmqiieylncelozwsuykekhefvbvoloxzaoytkldbzhifzvrchsabairrkovvxydxwedtjbthduenqpdwkncmqglsofktqxxttadsghzsqkillcgirntknfbcpwygmofptrjrwjngdwplsoyimltizhlbnvljkkbjkfmekfnicbrlvnrvruistlxbguvwunzgdkuylvexbtqyjlopknzfjfoqjoklpztognevtkhztnjfglngncfpvaltltmavzfmllfpuftzwvkjniietbillogolzgiqvyhelfvfopvmgrqtvwgficcqinqyebvanfuuabmhxttxjbzaisjcckgmfwasvspnoeafleimkxexuuoulfmtgwlfypzjwsffmwtnuseadeydxrkpnnrlxztobhdchgjmesibfbrqczbfdvfcxuxoukpblumwfkfwobnhbbzgwkrzqrhursfaskijxgrzwevwddoqxygnemjsmitdgeyqkadlmiawaumljdqmqarxqkhvobrcmzxdoepbwixkwdxcceaordujyfexwiyqkomvsbfjelsesujkrpnztiesteydhgbbinotohhtsdhrenwfjmjhpvzrzgturzmyaefgqmhclrsaqlorrswbrsslcipnlbqlhhxurviefqneenvrfjuayrubnglaqtsatdwwbpliqdiukrzqkgmfiulbtivvffezfdhlauuwlpnjeotjzxrgmilzrtkmpfsomrgdhwvxjfseshcpxjvcvcbamuvfnphseptzpeufidlzcfewieeombghcunqbwrehmwpavnxxlzwphrrqcowslmjoicuqlnkntokgmxmytfjrgbqnkfepwlbxrhgqixbvyowmhjnjfsnosiyrxjnbkwgiipwmliiawrwnvwuilrchggqyoajzasvkrmisyzvbeaguvwrrxibbdfmwkbrohufypxlocpcuyguthmcxxbcbxiwadxfjrtyalmalprgqfbomjtfdsetqlpxqiutuihrezzigvaosjvtubyftjidkwlrmhcnlvrwccmroxodqhjfxsqskeguqsmnnsqmferxqucfjyiqliqhsajzjrsixomyjhsqcfwpdsfcruffkmreujvhaugtbqzyrhkwicybhyjniipzmwmgklebqrqzikpamuihmwxngnclxcmtazfxapmawbmeiiemmlxkdwrzrnleswwyoiolkvfgrgjspmqmtiigkhpcxjcqvtewzgvyrflxuuwcpgymvltzmnrwgbfpibmpxkhudrszlvtqcdblgcdbavcdpkwmkykoalbpiabxqammqsebzvgivvmalwhjauabhoyeeozuxkxyupgfchfwnvjqrukdjcijfkqiwcmtrveavkyyktmsqghptcvvkmprfqigzbrnorzxswxcibltzbrlzzxdarlegtwzclwknjoeijbgofhzzpzzcujfhahmqcsqnwjewasajkeiouucrhduwkdxnpjjqnrykyodvbjthykuebayayabwteedjwmvazzmbvfpilrghwzeqlkncilshbhmoqefowsebtfqiojseksfyzkovcrnugkarqkbjrvugnvugdwuunukfngghhxyskfnkclldrmdxqzfbbsyfqgxjzzkuwousjtwmzbsirygaewexhzjwyvhxtzgcjmnbdotgqtdffmyftqxwzwuukxqtlnidjnrgnpveugwzpmticxscvvioiglonjjtuxcdtivdqfjuafunnmpkrcfqjrzzzeqwmetycknlwonlmukitwyaqgeqyupigjgopwtnjmetsgqmulccurdrmbvidbygyffqifkxianlwwoqtixgrpkvhjpjzubfvfflcdqiattquhsbyjmdooenzpunqjymsjfwwibzfznpyzdhiorzypcpymxcyplfelhkuxsravkexnlxnudexjxhnuinmxnxlhxaukykagwxwmhdtkzznybbufbjrolofpfupgspndwefrpqbuikbapkamlswzsidfecgwwvmdzcxlpljxgrbggloxncaanaufniluwxqyccvkcbkgkpfpidbyxqbolseednphghnrrnytgwhqjfbfxbqbpknosmdtmhwumnzibjlwbzquyigwaajqbrmewipuzttjvsfqfxedmqdymwkhpkfnbksamdabrgsfaqqewgatjssqafqmqqjdaimkockymixpxhmlnhwewosdmjqwjittyrsmcazxswkduyynjwuegjtxfzefkmzylqnccxzyzixulcopdnatojiinnebzvwrsfjczdyvpedhganoecltgsftyatjillubxvapxvkjzmcgczpxpwjmiamttzatjhfiilrzxcuazhkvujukmjlcswthypdctdhrtvlxmgkmwosvsgbtjmhzycboudatoxjpxqawbiwxtemrhewplqxeszxqiyqumuceevdclqabmymdykvzgnqivnbchftvwwudtuojcrrqztmieoztneyphhvaltvilecvcskrwkelhfgnlmfaljxshxbpsmoyrmesytafkthrqcxujvvamtzpwadnqmaqzxiuspehuwypqvpdpjrzuzteezdodvrimthfwoexvhwzortvyjtettpqilfjptziosdhnrvadunxkvfcnmomzxbnfjscaxxjirkvbcyfnmrkrchfkelhdxigzrgulsjpeidjmnqxixxmzqvjjjgdbqlvmhqsprtalderftrlmtsxaqvetylunerxyzvowjzaeajtlgitxiwloqigssmnapbumgbymvuecveympdfemymvlftdbrzqkjnkteazaimjwlhabcyuukdmoemhrqeummlwdluiomkpmdqxirhfphblbzdvawxgapmwrefblagjchidvbcpkfqzifzrmuiplagtixbptxoiuhqzrnwlcpdfdrxcbckzeiqkjebuuyxurjsubajcolcotbueivdugumffnnfeeyrulvzcutrzvmlokfmnzvdricbyhkksfbxinrhbskgbuzkpzwcjhszhiifnonzuoixemaqxbunkcyfpylnnpgmbkjqnbvsetsirgrrjgxccrvtsulexysiebgxmturvtyycejzwytaplzszumyakfiztahbceogzzwusrjvbfaxctcnigdzvgafeyrkcxwlnyhriseoppxpavalvlbgojtrclkkhcrmibdnssgzfudixtvamihvvqzpqaujxgxuywopnawclflrmjxnswoqunzuvbiistampglrlpfyqptvttlehiawoutxqhrvuxsogxvqhrejsevovisqdgxatwovmpextjrfstbrasybzmgyfvobazvxopjtcmhxfetelzexhsvderiljsskjiylxfdpcjidmaxgsmfzucqqwacnlpcfdujfudsjmpfadgsgyzqtgvdjmvawqztjjnysvwpkrqxudtfzhtfpnfzwdohehakibxceoiyqlwuuzygczulsilvkcycsyfxjgbvsaachckcnlgxrzyetprblmixkzywnquovcryhuizvjasuxyzxdgonimzvzlpojieqzaumdzdhdkbdbxduugcjhbbidzpyxazljardthmhsipmsrapfawzfjijtcwdlcmzjrtntscqspijhrwragbkxavrqfprbgzlligeipsicydsaiocngwkjgzmkidiimcfwhlvigewtopydexfxsenqjibkufwvbqsiaahytvvesqspqlnlhyujerqrtkggiwuexuwdchdbvszrrzjknwukrqzznxgabcptttmcjfgdmiqwqwrkbtefzmikpolmwvomoijzkdfsizzhyqmarvxdkwgalkqmtjtbeclwlrvrpgjvvhobeupizxywjdbccfnsziskulwicykkwntnzkjomvxmkvpzkhtwqopywvdkhduosolrhfuzeaafezeqtnurnxouwobqhcrtoucxsqakxnoehpcbmhwopnwgmasqrghdyksqthcdxhtekxecsnxnthytzjquxifkfuqfzjnuyydyvqeipshbnkphewvufwlrwqzxocdlpikdoadpymmeysdylgbybchjweuscfyzlnvyzevgrznrznxsntsqddrewcpsnrqfhqgdjbdfipnihuvaaskghadgvvmfrnarqvvotbbjllqkzfyfihetpjjapnvncsnpqgfmkgyarsnsibzfcsqfivyyhtmqkjknlakwxzwfntkdwnsiepczabblvudgrjlbmhozbsjcuqvcoghbbhtuepuczlitdxtattdhkfeihawajyznwdvqfcjasandujanfqdolippsjxqggxwnwiuhiujlttvziuwjolvhfdzlgdvftnrrfxcvjnygvqpwldszojxlrnicqxfpbaebfnlmmkofmkconaenimmanblfcvnhiwapmzhxbrjxcnoqrfmmbbhsvvwidhyfxwpyoyqxdilgbdveqqredwfdkfwvlnbpbpumkrycfwzytaaukhftkntlmtgocwlvciawcfcxhqojwuxxauijnbbzohrvmdgejvfyexqnpotvxgehojxjlczluggjphfhargnpczcxpmgtyhqwqpdljyrvpupozpvgeanfdtfouwrwqspychcaosldfcnheoxfevtinczvnvftjrssmomqasikwdqlrqmxhbklibsikxksrgcckqugicpltqkljyjomcmwdinyagafoojomxtnmpltokfubvnfvnnlyyoamdkivzdmnksukbrfkisjtqvhrpyoseqctzuqlfdziebjoqlnyzkvyefnsrxntknaicnhimonkvnnxakcfeoyohazvhauxfxagtlqvtgqkdurixpkchzuzszisxmfselqjpwxpfkgqgywvonymzcnlzuipewfvanrglfnldqnujwvikchqksxousqoubkgxwixjgibehbvgvpxdxyptusyhkxneepaacctimxxsxjkrtjcapxewrjhqqrjbyycruhtavkdkybtasaibovewnpqmiaybonhtnbwkxzmkqxrhsvsadaunijedziqseouxbjlxlsmmnwnvsrnijebndlmikiijtgclwwmrkidlzarhimrmxiwubppvffxcbmfvpucwndydtfvpibxwwcpfmzkdxfzbosblhscgrfbcdmtinntyepkhbqvjvjqkmzqttanbvvmvutqlyeorbrdtrguuchemlnlflhokdeorbdhdjzgwpvsagpfjbijkljofykyfedinozawvtfwcapgsgqkfqzwpjaflujbslajjaemwmihersbbocroelmpxynojmnipsalizvafwdgqybyzuubfjthhtcbjszwcwbpkhaxyhnyrmhelyukfxvuwjqdflepnawxbcqtqdgiulhfveqwpxykiqurvpprlxeaxzfrgasyccnpkiavmjuindkurowscegkffwagxukygkeaqwzpyewaltbcsifldkoalbpkhhwtmwpyuayowinxuglwystvuonpebmzqdriyvzaxqvjfrcryeoyxcqvomhushgxaadvoxagqrmkjrsfpixqxyygciswqjtybhlvruyrkjhxrvfvtuaendsbuqxjfitatyhfztndneukerylgvphcokzgszhgmlnytpirntgdwfcynvywkaxvtctwdcrpgeixixjuxxuiinnsvfdmdhinqjyifypopalcpsvdcvhsyezkqxtihuynpalxnbfuanjvhcdgrquopqkmcfhogeekdazudmqkrxhgyljgxrxueswruwtnbfefrzaindejtakpedshplozvwbcnbiztancxzlrabahrmjtcrvbasxqgptihmzxtgsdjubxmnorruabogmjnvcjtgpijlsxsgnzstttwotphldtjeukonghrmbxemjrifauoyppiyygcffjdaygiboedjtbatsalqfrjrsklmdxbgyusznlrcctdhgubywhenlffgwljxeourzsnwsdtdewbyxeaphblhpjydowqvdlrfjzeqdfofduoscuthbgyulzmtlhjpjfgpkuttunhoelhruejubjrhhqycsklrbbgqghuoxjvkijkpanqjkcnqmdxpducgvqqnjlzsfqkneluphgrjdoacvgayzfhseihsrvyajttrzstafduwlqlpowhldhceqjoulhyrhbwgymksaigfhnqkclreuqiuvaoauunomatbrhqgowuyqbilxinkulczaxbixzypldogkzslabzjwjpppembyjngfbbxnjdvpvqitjkxqtqttiocnbgugnlkfmeeedkhuwlixufoukwlzphxrvjteukwhzrtuzilwykhjyrgyevafiycajrbzitxytmfiixiodxzgvccbmmqyfwfglcvekdwzsixxarwqvbzewssqqzymkevsghetakjrpgwvltdeasinaspybwzistvmodpbfsbvoabfivjfturkzwqnppwvxamnloyjzxzyrtsrcisaeyfsagbnfajvmiffgefhedbtlirqkzwasloduraianeqcggcmckelxvzjymmoqhhxmbygcazrligyhzpkfmqvebnxdrmeyqdmvyttzfcfuiakiqnbosautczyziomwbnchsqunbsvncrgzrltdrtjzucwsgugsgmlcinfyjxeyrpmofuoacsvyfuihxbayyxeffqhstmdlnjzaxikrghsjizpxjtcgmcnwcaokrwtuyidcegfbwflpbejznlabjnngrkuipdxhmqwzcgxmribrnbzqdptjqgcxgahauokpvveehlucgjusuwiwqwjubtwpkdtjvioqonmyiesinuhpftqcgltrrgjifkielfdqfakvehxagdswsgpqzdvmuixsejutqfqaqysvrgnbzkvsizhsftxumjhuzyawrjcgekfyxqevktqzbxuwafyuigqduksaixgizjvjlcwvnwqzrynfjqtgyvaoxsghxawsdvyvlsodgjupaezraubqzyzsabnmuhhfzdvtdrnqjrixqaxtxlsrtotksynbruoeqygodmhagzsggfgrioukgyziwavvyxtcdzxxlidbeucyhexxdqoxbeufpnlhfhukuyeqdfophtkgomqarwlsyegdmcreisvxtznylkvuyakqzyvazxwmzbvgyahjbnkjszdxwowprgrqpxntedxxcbpmjncjndgeazacthygqhsdvgisxycjxficvguzynjejpnahmoqwjthnceorhaldfjofmknbxxdlsjeswynayldspbipkbopswlztgsjmqkjmgjfuxnfjdfausxjiulhabnvhmlvrlrqlrrcyfrdtfisdrfvymavflunyrdtvxxcziqrsvrabmpwpnruiqvqaychvaxumejaenbazitqmvuurujrhjkqzbvupaxmcsotanmsijtjqqefevzemcgvpcvmuavyaqvrhnqcdyviwxqnbdpulsqykvnumvxekcsxizzutqblrhzphepiptyozznfbzydhauzgesysisgfxlgvrernxfmyrogkdevjobgvvrcpfuiyobvrdnnodixuznsoparhvnupaeikwrwcokfndgjxogfuqkaugbfztcmrwjyevelalwtnpavfvgtctgqavnbnpamzpiseukslurxdexbnbbchlyoljnodknrjpsflbddbdiecvivvoiysjdiqdzbqajaunrrrfvbrpyhcbrpuhhkzixsugnavtrbmxclrxnzzokvdmhwphknfjgfivfktouvmqeafsoomlvvkssgbntdekcojqvarqfnxmsumprcvftkhuzhvaixzpwzwkqjhhbqyywsxmjizbkhpnfpzvavtivwhrdkdfildqxuktzekhtgdaselutwvshlbuuoyhsobhmlwnvgduxmgqbqwqdspjcijhpxmljppfztgvgvhpvzdsuixmgltnvepolmdspipqgzycvscjlezcucdgvftjpljqfzfykixmyjofwzezwtypwiejxdpughwyyoszmxhuvfvpmlnqjucwdancznzqdgdssesfinsydbuvkrulhnwwwvyzftqtldntdgivtqojyykzfjgxyypmtvactudpasgypucbnprzflgqttstxzybiqwppextvnnvciyosawvckurapofuimffgnzczqfcdjaknukrpdeugvppucnwsupwophrjwmmgtpahydeuhfxlafvamwnnncndurxbzzswjqwyzivgoezxslfbaaddqlzmtazemtudnyqwubkvoptbrwpgqnfbnilksiomuqyqoaiiiiwilfrvomhawkbyuoijybgxmgqxacrxxbzfaygwxsvxbnlnogcisodglrvfxykaxxhxrqornrdyvsklphvmzoknqddbihbljfekmtuvspxojuduevugguzajjwgaxufpaocgyzbtipzkonlhljvkhjtlmwnhlhsblmogvqmyhepffcfczwyptxuvbjwtiqxojnbbebohlsvitrfxkjdywbueyaewpflvgeyugrltaqzcxsgabcfqlpvfewulovdshbrkvovhizsmkndmzkuvvhbwdciiphhbvsnylzuewxhojxwefuzrzrioibfdusjvfndujcsjauehlgzhvkfijkmrkbbvgmrizpphozrjqojizeelqagkhrkwvfqwbtgopsnviscxhfukfinkqlvfbhebarjecpplmlsgtnodwcppgipuhfngonrrzihttousnztcvhtvabvlyhydurkbhnvnfmfifmornjzpbqrwucwzsfnwhfhgwhrvgshtsfawkvtxgzsgotswcrnmnfbkpdgyhbiwizyfzexqtijaivvmwyeauclaqrkjodfmnixwxcavxnyqofuqramvzvolxfxwsxrchcvnhamhrppyvlfscxhoiymtqqhcuxxfkzaewhtyntxpxcwasvsrenlmufyyvdhjnloxtwzocklplkrgmnxixqjlcrslmxwfwqzpcnhqnrsurzyuprzxixfahcdxlmdzunurstvfgeuicpflzjxmqgpeltkqxeebpaicftjapeayjoswrbkkosoqufsurenoknhlgtipgyclvzmtkpnaomijifedykvdtmwrqmwfxfwzipwxjvppuzzyavydxpdxrqelbhialeisczdyjhchghfwiyibtgihruqeejgacdioxlqmzvchghmvzexazjflmbbruhafbqrpyipaejxsroeamiyvnxumniwtlmswdvwbgltmhtkqitbwrsmqashzvylnwcggaauhomxbtmaxlcvanrqdmepiqknsuniureupvseicxhqopjnzbxvzvqbctkisynskniebcbvfzbycnxajivfhyouygjrcffeuphkgyiuqekwnmzbqtbmjmdpmybtyulrijhcluniwcckrldypmyksvjtjsmtipwzsqapspkycsxfozrtljpkznwgtlsriwnpatsqoavrbgqbpyslyykjgrdaszonmieyjgtnesrdashueddvqokvugfdrsgsvhydxncrlyxcziokkftlgoopvetrcgbjqlpzacjahguegqnnwkksocmbokxeieuecmhsfzaridohabtudrlvvaccnzrbwabxufshpbbmhnpevvgpdotoqyixzfddduchdorkxwiokspvbsfxgtopevrpjllmhmekpiceqzypxkucqpvwmvjaqwouwuchofnveshvoiqbhhexyflrkmmtlyqouysabwcaxbxaqqptbckwygmigeyfcpqlnqhhmslbxvrgbptvkvrfygnuayxpcicenzftzfcvsfzogqzclhvfvigrvsedwcoxulpuigioraegharxdeprmddebeulodwbfxqcxelavmaijzviobmluplhlxvsrwmgzjxhaaatqzuqopdauwfkirxatkouojfssytmqbjscdmzouhqqcgchzbazayfdwasvwlqkkoyclcndiukzymmaaawevddmnmwvxxmqshzuhisycdswogmvoxqjokbchxtnoagdgvrrmqlnddqtfsjnrahrcnlymwfjxsiguuqhllvgvwysmacvfirbxerxhlmdazipkpcglzfwvsutyxqfaipzbpkyyezjeohuwfozmgpjepmjlxdkvffkomixkjhqbnxkgufzwgddclphoqakxmfrmfvalggytcfuqlymnffcmapaitxnhoxxiiboalietkupcqhuaoyuqgjtdmcnuffpowqhssyqlahoxkrdwbwtgtnrqbtxaoqxtcglcqmbubuhpsmwdjaojvssnwsyrikugxuiqwutgdwprwqgmxuvgzqokomjspfvlrkaezscbvdtspstkkcwbehwiubzvqajfcxdjqweowjchnoarxqbconnbndpubkuvbopnedvxctzaitriogzmrzqhqdabwqlmlcwvedmafjtyrdwwplhtripwsrcfizllydvpwjgouxdbjquubhxkyzoyctwupjegtplsagrrzcywnhqezwlaupjnoaqgvndxshhgiunnjdyvyczxvsbyubsjudlgqflfamcwvcfjxrrnlaeordgjknpfadqdfvtcoqmxhgngigrffheuqcsiogwdpgknvrgkqfidtzxxtisjickegemrsvxmpaljweidkjtsqwsripaheqmpkyapexvnuijbhrzhsmtmoougannlvsvzrlrhwvrmoezscbdqrrstofadstefrjftwbvupsujkteqqhpigltegplircxaaivpiayrajlvxknnwjcevkjldeertiuarwtqeqctniwcvvkeuijsqmzfnwxcakkykodturuvrtwegkrexmeucfhgmovsdwrbvdqedeodmkeqqsyaxzdfyhmoyzrfkeuiomnewloecftgpnrqeokvakbtfusmdrppriujomrfrqzwaadxaujhngmglxqktverrdjjeigvvlcbymbejyabkluabnvfhcnffjfwyjgrhczmrpyqzlxqtfvnwuftcbdhpnpkjeeawzfngkybwccmlgfruztqwbavwzhuyqkyznqdqtmbeavgsnyrwcerjiavgkuvjwvsaulugfnqrfsmidctmeogfsawhbfcoliswitggwhyxkvjfxkxibzljqthnanlughbtyuhyqdtprljhmcsefmmqmwssdrfjkkkurswfkvyxasabdkfkyxleafzgdvapxacfkvckfpiflbsjmhrarieocxjruxsnkbkfznmzysnkwkxblllkexefkwajodquhycmmihocaaewnrfdtiwzxwafehmafrukmabrgcnmygyskgfficxhodglkjjwalosmynrruhcjvtawaraaoybkwxursttvgpselhfeudonobfpibokkvchbyyzizdpontxlgceltplvxeslxczunqiagcybiznrhxjegjrazuhdgguklfjdnulibexfdriqtrbjzecszbozwmwyduvpjvyccwwlqcqaflrlcalablsoprpvvwffesiknqvhkhsuywekuudupgsvqpnoszxpqvwqratxyxssyazweemsqpljybamzwhvuojuylberwymdvazydziavihbkbyjcryevmxxpsojqicvvaewdcwybfpnmziwyaxbinkxzinkkvhepxsolpivackhdoougosrwqhzianlwownynuorhrtrtudqjtwadufmirjirxhbphjuyscrsicmjxqbhbegwkxsorwykspeklaorfvliskikbhbdxcddvckaoxeiyyoegqbahabiyfjosqyfrhlxppcwlfhmjmzkqsyfrpjrfrrlrzpshorxblqdemgpcpjlhqfbuiefadqsocgxupifsihuvtxdbdxhfitrocybfhgtcstrkkjkxhvuuqglhdsezrvpvbrjyxriburkhzmbnduwggnemtacvrmqkjbukpkxittgqkhqimozlznjlgsvcvlfkevympjyqhxebrcfiktaykcwujnnyzaimjyfacgugfswgkvyyldurhjphxlulqzsybrbkbpemculklridgrhdenxvyaazckrqodfrgbpiczhnvcbhojwwcvcdglhhezyuuatyouakcvcdgifirhvxrgujykcpynulpuzslkqbklfppftavzlwwekslqwjwdswrvnkmdxahznfyobcextgdvngloddczhsihopmpkugzgqpcpzliubnwzvcjddcrakvwozeashjjrlypoymwxxrvjrafioxxglunlyclkibamzzvvnddhriaxsnyemiamwgbgegsvutonpifozczxcbefcgbbltrmxdhzvtvidfcqllcaytcyqojnwvucpccfflkvefonizlfkohozgdocibgkdlwuqgqzxrjpzbayqlkxlfcjtavrmahvbaptlftfrlmsrwekvbonokqukwbivirfnqvdrdxnnynjaxuwhxavbnpznilxjadlfadxnyfbphwusrrgiurzqgjzclmmxqdsdbtjnvawoxkqqlqlwrfoipkmvznzdxrfnzwnmaexklgimwncgrlehyvtvxhsethrmwgbzfvborlxcnqzheufiabykgutwpdccimuofxgdklezzltnnhjowuhnroszwkhhvnyzoxgkrlanwjkgsrvijkaabsgvacvkqoxpjyvbcojbzyamreioyewrxzzjburbtlqwpdtegpytvaahkngasfqttkyydmydmvdxiiclepuudegknvxvvlrxpgrjaqvtqyffihvjujnwqtaknwrjsixzcyjnuvrlyjpyrkpwxvtwyiatzqoydrfdktvmsodaamdcgdjerniurovwgdtgwmxvjafeldgkjolzitvicsqwkbyozhmfnuhdtisuepeagqlgfbbonozqjqhnfztnrcvijgdbzwvfafubkyifqcyuhgnzkphdmwahsdrimgaajfkdbvkxtraxkqtrapstouxfhaomssbtqkrxxldiuqobxongcnsejsfwlaaesrjtwkfgfizpjwmfuuucybwjmrcpvdyvnlakhvscmqejchlvazqyhsecnbjmpbvgzgzwfdrrlclkdibevrhxwbzbgiryzorqeckccgzenffwjwhxdeyprtfctkazbldnkjnqqgliamqdrhyhusodddhzbsbozgwasthrtlnicekcaqzvlgghywxixzmddlhyfyzbcbygkjlmyznemxjcdyqbkgnoghgyuzogngbgijtpxhhlkdktkbhvgplimbweaoclzqgstjczpquxtutkpgnodsfdhsjhrmvetsrwvbrxtijizaouynjerzcmrqedaclmenfscytnntuswnumqcuguhwekzvgvijxlybrzhedtzdaxryvkwxbfamusgnaualhzavvkiancufnnntsvnyhbrvlvyqvymcjqzusytrhxrmldfzvewfnjsammedlupryzjzoxoqznwrhzbyxprxoaszzsotufpsgghbrjehskysaoqbysxfxjnagkfgdpuehufymgjncsrjztqderlojsobjzxijctjfgurvmmzohgazntfzhflbamsdcbapgjohpzblldkviiehvtkymfdikmdyoeddgiwktdeihuadwykbiibhmijyeorzuayhlqlfvfpnvlmwsxhwsijelmkwldkbdhswdctpdpedgovfkonjwfyqznbnjbpvgkkxzexzjfyvkcofwnalbdwkjyujbuusbnbtilftrypyxbffrskaxmqmwtcppbfjslavrhjaaxcfyuicjamuzodhpsmydldnvzhoxckjoafyryzpmamhiszwqipexrrmnnnovfyyjwvtqxdhvqmgfmmjxxmqzudfchqzcekvjudygqxdujqylaqrlfitljfnwxueumccjqvtokhumckpbcdcrleztyqqkktymvrydkrnqynwfzvgmksejwmvtuesrhfbexqlqsahmsxiyojewilqntvbfuclwgtzimdqliqbtgxszmoqwmgtqkxllamolwcehkerfdxaicgskmgxwthxtdxymzvmfhploexihmyygmqmzdiwczyqfcvatfsibbglabdoohbvgladolaxcbbxfbzzsumhyppqpwgfryfgiqadyokqgvctuyzlofalfoejiefstupqevjvncxkilwpthnrooezmoxnlrvlmpichpaxndrqqnmwymxegjstsxfxmyxkxkxihsbllxwkjdngsottnqexpbyinxsksfdasxxjobtlhyiozyirhfibcikmjfqwgmvzkzreddvpnclabbfjetimzkbsfxjqnuymmhvrkhpnrsecsecrarxtdhrgstayppcqzlfxxguznfvzufhfuvhhuzybhldjotavamzhzcdzxfptmkrkgmczvzhmkzubzvusdshnyodohquiamhusmvzdeafskooggljvodcjyzgvmofnxllbpixqvcjxcwlzrqceyxacdjguhoslcgneznpfgnywfrzxzsjtbvezvquzgxyhyzmvfiqwskigneoxycrhjeichkhixcuxodsagaveuasjmliuqjanhfxwbdfsukroowjfovizudaxxooqdchvzxmxfbatkkyzniymesyzpdodwxpkfrlisviivotxckbwyrzchcechutemdaruwlzkemqaavwuukaazzkigrbeeimfrpbzdijqnqqkdvrcvvgukwzisjomfgdslretdizidtjtefskvvmihibmsytbljbogtcmwhpmoxilbgijavdllhcyvuuhxermmwogvxssmrvulgxiqcmfhvanfzcibluriuheseykxdaeaaraqvgjggksccupfvalnfvkwgfqptxhuwzhcrhfcurzjttehrnbsuedmmovwmgurljttnykekrkdtrczkhrtyjwikyvmggdsiaatplosrhiekxkqlunjfgyyxfudgforhetgzjwtntutziyydtfcxpyetqqrmxiqvsfcxlrsrswqjstorkzblrqfvkqvttmnedhflzicvgvbzvfolhyuicaruxmteqoctujqissvmgljazzmlxkheluevxelqutngbtlwlhflltipynsdvjwaffuqdjgfinfbkvnmnstclksxscmpggjitkwlmwrgtfqypmtavofhzhuathefieomuhzvrnhieywemfpywpgxbyopznrucxyyeoaacgpnmjfkohwcymcxcjqriqkyhosxgwjvxcxbyyffjjdroxlvrvqhqbjzhzvbubyjpnzfhskqjhxjgphlcoysmwqreoqaovvlnnwhnnxmdeloaxauiblrwkwwqawabefyazbnebgncnclrwazauvproezcaqbdmwsensfpwrgemidsblhsdmmbpyixpxkbvgqalppyosxhfrsmutsikkvaimwawerxaicyqmnscgwprjghpmttzhqvxtpmgheyixhdeuymssbgznenwountudufltfemieierhcnwsmntrantfeyeuzinffjoayqlcheaddxgtrlziojtidntkglkxejlrfxkgernvpfxyiznezcmprrofchurhtaaijqpcedtramigvygiuylqkeydvekwgmxalcmkcdeufqpqyhxjwepuzxumagwitznwzzguahifwphywikpdwaampmftadfqjnyyazyssnqwtjmvrssicbtfzynqcppfwbwvagihxzyhljfjwjioxdrfunvtrxrmqcesnkjiwshafvazlynceqodtlwpsdbusjzuxppizxgkyldxygwoulxfgwqwedvuofpvlvdmdgmcfjjslfunfrehzjwdpgmuxkpkcfkdcgexhkergecaqlgeikhhfdrbeuszarqkiaklrrfashzwtyhsqxsicbeipvxhqxibjgaxfhlinwrtvjfdvvtqpxvrnxpojyxawebixotphbvihdvwxuillwognfrhlznrzlpzywcmhakvwtzepograzupgveoinmvwywjxtjbnvgwoovnjhkhadwbyorgzpwyqgwbllgihxxzyuztumngbhahdplfplcdmmvrffslkjrsxbjrkwjqchrzeynrzjokykzloollwdnceqmdhxsswrlkuuygfaoqmczorrwsetggqwlwinlmoczgysptuqiatrzjlrvqeafoybonqfjycajxsisrigulhcheqiwezenqqheigebxaecvinfumubktuysvoksdsdxegdytqcwypebrmiweaykwvevrredqqtewhaqbgzzvycedpbqdncewsmunualdtcjvqiuhqpykugvlxicppviyojsotzwlwghfbrpbfixvucjxzzuucfvjmxlblyrriszamccptgqfqkenbboxwarqfdvzmxoxapjbtmsintkdunlcxlisaxwwpnaknmamhkjbaijffhgztpvqcfeqlidzwvzooljmjyvfseulorzljostmvqyufpkyonjewycwriedpkuordvvilpwvabesydeivoueutdvyuyfkxvqmyrjdxagydfuitxaszkeodxebkavqbdqauohhtnsqqxqkmvpvxwubdwoafrkubnxcslynwokjpfkinmtsceevahscexalzycigsfijnzpopleoymemdyeiseabblwojqyebpbzliojjouriazdxwqsyuimrrwygnsjyuwnwwiikndmuggifjqffrvohgvlqgrmcamzrlvzmpconmyueevymjscabxohzucmudskhjcrpakjxjifdvmvjmribwzhmerwzvhrzcqicjwizonrbimifalgwnsgibbbwtjofiysyoysofxqeoaykgombfablfmddtthjrzvlvvwgmpzlnypkxrzurtocgiwvftymnjrlyybgmlldlmptijhhptnrfbsbxlcrgqdmgzqkvfrgzazgujbknnggnfmeworwnhqzeotnottxngchxqycdpcxvpdqyaqiebvafxivrzryckzycxevdwzhkrefbxzfqxcarudgjdipcjnwstatbupafjngdscobljezrxwergdhmcltthjcwfkkzjwqveqhyjkzhwieqcdnpnpcyndnrbkwubitvxcvuscrsqsplzbddjzxovijuhtpyodrhqblzcpawoviagznybljiskakklxlwmgryprgzvixslfwrcqtsugnohnzaeifsvfxatwrrgsrizdiknmhrjbwirfrlqlcbegvbmihwoqwjrbzbbntaetndmabzweqeaxpuhafzamxqedrdzgcizfmulrfkaiinyuoexstkynxppnhmkwxrymdwmdqaxwyjmueyocvdycgrcnvgbtzpfrsckqflpizgiojigmfabmbioydsrludvninkgcsdudqvhgtshxjyamrkhuaikjesodxgagrlvchzlzvpqqofhluyukbctiypwwbkthmfcugfnphyvnqluhivulidoyqymwzapepsycymqbedziiqqlonjlhvhyqdwquzolquqsqlbekixezzyxtgavyajqohimdvsuemwisehbswkgmtfvpqfoqdtgkndwkiwzngacoupaqnmelxjztebdtbbtzgkicrzvfofcrvwjsfbfymzwepibxoqmoeknuyimvxfvwthshnazaqnnjgcwibrsmnbrvwxffeurywkxjawqieqojponupwrdybxavipcpudhviwulkcjcqanefpqoshzuftjzkxqvqozxzlknxngnttsyqojmyvlgxjiicnedngboklvkxoqnwowgcimllkifpdgpksaqtmcqmaoxxpsiaejfrasnrimeixirfdmtcpwcjwgvjydrkqktkxkincanepupvyyjlhrzhinsmgdubkawnhykzsofhzahsjykfpxsyvhyiqydldmucxnasowjnzpnfpztiunukrriehahkpsrhcliykmuatgqqjwqwsxdovrunldcschfqfryemgohzacspnaidfebpzxljwzyegvcgpofrxvnsfhmceezywfnxbaplwazcwkytjyywctznquikaqwdevldwxtetdvqndpidjgngpzsqbmkijlxehujxwcpflbhgsffdyxunuajnccawcfhmwyvsirsyaxqjjdccdqxcdjkpcugjsrwzcdzyhtynrzjjqyrpmdsohkxjepwgfnbdpybrrjtazokrrscbgveotbkznnkigeltjxggbtgxawpuzecmvxwanojvqpwlftygihpogonpvsexygkvtoyctfpxpigdlxbwiptyymsgoovnamcbgxzigzvuvqsmluucfjgfxrwkazmdnxyevyzucinpbgyromqsmupidkrfgryiiejrezfjxmkogmmyviiexxvmvvpdyudcbeowlqjyhrcdkpmksyfqymplfvbgoyxijsuhcdmkmbqagtxmloyqpfxozvtpupcsaoddatrjsxfsdnzgdcbfmgpofxqqwtvevvidnaywizvdqjpxnlgtfmfhxfsetwlavezgirkwmvhgsrkkrxixtsdupxkbwoyzooylraulxvdekdkdbvhbbhtbvanbacakwyokhdmfqstmebhvbjshnvbuwuziqmpvjmqzvxxqzpqdkdqwdaqhbqnwsrqozcvuvtraiyosxxikrlphdorkgpwjvkdubpxbqvriqwvvqsmckclgqtmyekbjxscdcxljmmqbewfovuoowscxdfvylualsycoakikgtpmvridslprbrrrklaifbglrmghwtyskukewvhzcvherloensspypeqbutwnmonnggglvvanlwvkulmooaijgwzonzahsifdzxwsaarhuurjlageypegwkckjdhlljvrbjhrvliwdzxpjcbjgzgefucrrrcovimccrhfvslacuwfprbsicawfidbdigrmkwlttzsgfdpaqzxozvbhryplasfgcudentjzeogozbislgfbbzyilsqmrldvdbjfkwhicnhkvzpyzqpiewgdxksveohxybtydfpgciqomywebkqjeyefysiecnkzxfnwgwjytmgkyfgbyifmijlgxpfuputamzxvvczydqkwnkeixaxexkmkrloaxkeojxtcbzrefmbyapxbpmyfewrfzskmxowdqfpmnkngtwmgumrjhqiiclgggxcwhylgndmvkelkonqnsfhtqwmaglrimmqrindctptvoalqlmjnrkakoqtdlxwkqvrerkeomjpzcjpahubyjsbvcfrygojytjrfjlnoksojhhieatimyowzikidytykyfxwnksjdsoexyicmdolrjzqipjaxbqcuttrqrwkqvvefvkhkwtwldqjdfqmjgjspuxcbnfekqfhdpkzrdriojxhklaqdwsuhxbllcnnaiugnkszsfnntyvegjyxgwuvyueoefwterokydaiegspbgwaqefgtyvuzrojbgcaixkxsjoekzjdfrhhlbyapnkehwhqdnikqfhcvzvpcsxttljobndrljnvpmknhupcugwbblrqpqitpnvlalvcgyzngocsnreurfgeyscmcrwesvelcjmbgjbszndwntfprrxogizdghukhwpoywzxxgllxzmywfaqvinttslexmqngwprmojefpnorjygcgodbrieyannfsrpvwkfhmgkbkhspzeyidgnbjnvroemoxtkymtohelidnrvuyplmsfzoskckszjzjvmzhualhcarhoftqipsekqcaqlnkwjtxhlmvxjgvplqdnoohutukhbywrllqsulommlqzduljsmyloyyxzassjtomljkdprgbadfuobicyuaptqmcwwbolwjxmbfhegqcqcqluekxugwemkrvhnltugzpkccwkhhaeemefnefrqwoqjjorxpsrsubkztzuvactyffmozpgsqxhpkmmqmosotuhtpfxvmzxrlzibsrdxpgztgctlacsbgyyncacjytjtyledfrwpkridzirrilycsfkdpsefsendooydrmzifzbzasszbznfvroyzcnkqcugmjcdvnxnwllwzozimclaunjvfgzvhnfqarlnfpzgeooyrnbhmmqkqqcqiovstbnxebclykemluoplcbmwmavfpwmvzqeuxiezaanevizxujhmexlrypetauvglygeymbwgydflwdqampbsfrilrjsdvvjelufezkxxqgqmsakedfcpbnbnelztlbzdyotnmxgmfzqcmpztedtftnaidvdzearomsdfplszakfanuwevbrpivxpkrszvbzgjdjmdnyyxlycbpdirevnobjrkzbtujscgrssuzfztmsndpdhryojqcjbmduokgeihooifpbasyghqhfddqwlgterhfppaqiqhwtgwinhqrysaqtdkwjtuhxabequkouxbrnrhhdbwedytzhmieivmzdlwflizywmkmlxkqtgylbeasplgffybkgdbxtyjpufbtegovedujodrkghkakmaolnqlgqjfbfklyouokisdjevfucfabewiyzpqvdkfprhcsryjkuiixemqisgjexsdyracrxarclwwwkenvketvprcyzryiqfxiglcdbjidcmuyvgfrzcsphgjigadddzcepiroijmytfalimyofpoxegslyhbceedlrchnyxpstbkuscxtmlndhnsfimhdtewkdpkrlmtaixpqchkfruvyqsmgdddyvvaflxbvbksqrtworeexqmdqxvwozbnojlnogrozrjxfclgnzlmrwwwfstyhuopplauipwiyztexrcsohskzoiwlqcabkchlffamynrlxotopzcnfvcmxmgsbmesabfxgedjasgxwiqfswvsbvtkhcfqucokppzryipqulpvzxpxawntzwgpvbfiluuasliofgokugpkpdrnzntneqewjrfxxwweikdkncqkfjmfmkswedpesybqdoyqhyebmauzqouckwgklwsrkbczgpmbifrkuhoerqpvfuuwjyhoavnszbbdyivbewpotbwxxfaolzmbeyyoybivoitkmiiibxiyoqdcawbzdyqvrcfefkygpkaxtjxrqzhqhqfeusuuvshvosbnquvxrlamtpgvgxtxknwmayymgnvkkkrsqfwxptovfphywvcgkafesylvxgyltzxtiwbddbuhqrijhweeeqhkrdiurxnobwsvqaxsfhrcegrrmfppzboqjdpihbwwhujnfbvgphkjafllsgdbylzshynhaxjmbcbwynsmplecyhotaifctgkqdctzhjwmvofzqaippurkyicikbignplxmcgvnnrtlsimupiosxsylxfantsswqgblxjycbkbexlwhdoyrknimlfrsjacgnvvkwxradtwnswdqzgotwdqjuedbhnurfxyvcberihtxiyrtderzuocekmzzszkqeokgwhbrctitcsxqmznaqqyeyeyyxzfaotpejhdhufqmoncjhczgeayxbqkrmeiraobjqzmspzzzhgnduxjtdcjqyykknmihfroyetuddrhwggqabympdujmbykriudtzkdyopklncsqzpkxutorkltnkhfoqtqbzxrlxkopdewibfesponlbnnehqmwhoqlefqsrgqcesofpfnvvhplfjdoaptfzsvqfuwwpxlbmntceifyiwcbtleptjzczljbgakjvngyrewqjparuysfxdllxmstekstxcrwdkxyjexlbttrestvvsyaodfxnwhlwlfcxjqmfdakwrxamcveufytgeomlewoqvlshhomftqgiunmusttnygxgaxnuusdnukfmeigsntvvrfhnjbqlckupvktivwykdpuupnbagkxihbyydoyvmmlmzvdugjkkheltxyivndexbamqfliaejorxsfjwkpanyiidcndealbcmmmghtwdsveaqznoehsnmqtctjdchqrdndfpfyxfpyppobmodakdmvvtunyoptnhchagoitcdxcsifagvegeaxentycgupbokxqhmodtupmedhyzjhfnotabzidhwrfvjhlhmdupmxvlgfogzggfjutgreftglkzzwhnklmhvyaypiwayvtotkaxeevsvdbafwvjnxbnyzzogrogscxmhpwrypasxaqhkmqtcvrfnxciqunaibehkzkxctryrnfuihiqvwkewnxmusfhtrvvcjymrqtjexmtdmepjkurayctjpyjtosbgrqpnosnywzujojanmnfqkowwfnlslgzjryoailezgeomscespgfbmicoggysvwmxjmuchzotvkneybnmyqssdmqeserxiyplhlktjlupykhamguwoxtxeoztvblugwvnewkabedgrffttdhzqmmluyycbxwnbnzykzpzaimpesuuikrsktrhfigmwiehpylncolazyaoszthcyckrznovzvpdpywrrcdhcvcpkmdstxkawhchqomyngndbaquwngpyynlwmewpzpptzmwjgdtpocjeoisgrvahetmmixjpqzsxbdmwrpxngdewqdzugyoqlfstffpnbztjddhadsulvmkdiwfajmooqhvtavcexhuxndikbyaqujbcvllmldcblqrhhicogervcglawnglpnemflywmoeoncgrlpolxcolzjidioewfxgkqtqdavksolozlnmfozolsaqpeobkiiytrkcuyprulnkozhjfcomsosstoafyxcnnyhqnuyzvcvgaerzhhdpdubiekcmyuvypffckaagwddaozpfrlryurfzfprspicdfhuegedwwzhjnheugmsohymnvvskpyrmtrxbucfgmurwuzohfhwuuplejlrdmrerwsbdxwhuqravlyjstapsrpzojnfexuhfyhvgqvovgwvelpqybjdsnctmztzwmxswtlelqqnxytawcfvjtfjldypbpvxdxpfpkrqcguunarglejlkbugzbphqrriaumqmycgilhyfwhefisqvhnmuxsyzftmieztzngyuawgiwujmrdrnwnpgzkrfqgwdgcninpzahiyhfulfhsxgdlafekjkkvpxkqoeiapwubusnokoxadfmvtylzgodeftvfrgcqmgrrwgqfcpwrjotxvrbnmseksnpijhakdvfyvlhxnbggjgtfwwerygssdcnovtkaganmpvpzxfnptqjzbfjmeqborzhildukonznslneqewogguhnhklgabdypfxhfznqnsqqfsedtdhlheadfzkkaooeakteisizwfquhuvrzxmcosfusvvsqdqmaknvyuewjobkjedatjwattmmfjbmchwokglngrymhjmqueydedsztytvhcnliyxpxcsemrzbxvpnvegwizkivrldeuxafoucsghirvsagqnplikhpzehtrhfgtacdvghftwwpxnikieetmxbexjijgpeqnpfssgobhybhxvclblgqyddfaihibpkpjlduaqvqiyjqfwopbvolsxajlczqxvwmlpxikbgmwbhydnbfyaqlqvstzanvjybvzvplgfymcwundancozbxwwixgifxnqdjnqfbtexnnccyzmtrsffewmceekagyzrynqxlvpyotjjlxnfpxpzcsnnttnhszqaicllebjpatqfacfcmvvkzflflunmcgqmegspfoboosntuvqpedufgxxjqvqpzqisthugtlphpsymqagjhijowpcvulamdyvvzggbexkotaxqqidqxyubfmxcldznkglncxnwzighhwtthbjibfwsuezjapnftikzhawosxdmxaipszqlsbphnclnyxzeytlgpbfjfoaptczsdwupisaqwxfnxsvntenounaymxpwkrdcrumdmegzonyfldocswtdmconmgchvrnwojclzijvjrgcheuimyehqovvkbjhrrxtwvkiqvgdfaqqhhqfxqnrhzhcihlsfudmzpbootwttckzvkeaunkuqynzvtrqhkyquihfmvqlqzkwuaptcketcwedlpqfkueawmacvbdrbqqppdrrofxrsxipwqhhkvghzxpctunuopajywwmcugksclsikbmquylpohtcnxjwcufdaxujysjikizhwfrlxkulokcwbqetnnwfkyuhdioliofewudpvqlhjgefhtmbzzaramhgsdwffutgrukrccwjbatjwiijafszwhyliwedfdmhciuxjbzecsasaxyechecrtbvmigvhlzwszxuwphybfsqobrraexvjcriarntmpbnqltvutoyduotrrysjunknjwqepxelmqrrwnkpfkqksvzucankpallvthbaajlvoszkricstyegknzlmazltfjikksdlvsvtxvljxqknbvxskzbnhwidyfrguzdugttvyrnhnkelentvrjfcqrvizkvzzymezjgekvjbiungdgfjbxecdkgfohdyruhnaaaovrduptgxsuqmdarwqvupzspgglgmcuoeopsxztechiygsayvfeqnznwccqwpnaqhxsbfkzysnmchhbnxjcnjihubcsgfqhvwebwlkcizvuoanpcfesbbzevopqrgsgwbnxcliffremdwhohuduuaydhebdnclfgzckfqlgdgkmdbvhthqaezcjocmovrncpohicsepnyqfwkqjvbzdvdtefvjjfgnnsgmjrbjgkuzecsykrutykftmluojyusirocfxbzdznageunbluskrpdupmhhqodxfvvjfpqlkjkprwglqrstnoscctozmwcqbpwsbdnjwtlqlnrysrphwxmgksqxzipoyamjlflxoxigarikjnmxyvryhahhngxokdajjtnoorhftoxjmfordwonkuorzbfprczuwpybjbkknpojirhsldxpwqyynkuwlrrhwdbgfhlcljvbfvfkkswcyfiyjeodixrdnjekmfswwhyjzdzzoonygycwijrwxkpuauhsvkhkekdwkcuzqtzvhumldazpkybnwvqfzycugeuwhdcolinlecpblxzdmhukpeyjloadepxxhaaldytifituuljyjsmufweigrmkokvhivchrwohfnevpoekkmiuvyydmberlxzoiapzscmemjakmdysmgbsmgjbhcgqenbgdwdwsresezkjchwlodiivzdpcctzvbmaejfvsrybloqpkvxqafviztpikipagvuaodcnqwglkipukpwxkqtbtnsucqmgfowrlicdalomwzaimarrtaloubnrkyiwnxefxlhprdgvlbwbnaikslrwcgfvnjavhjmjbfeafqwmbinplwpgvtadqjazsetbyaepuyhkfxdpcfaitwgkuiejoidnuqfdnpvczkqcguvsizfwupdibnacxhjvfdzvefeipymqhhmcdsyqhtkboihgpyuwkkuvpispgqpsdqhahcpwpvkmuqcxrmsrpznkqdtytuxikppunszkylmgsveosdomrxvxsfzcyukgbfuyptgnojbsymdbqqcpuqsojjbsbkbqplmvwmfemqqufszwtgmfbnzdklscznbtfoxponolmyutskolcmorlnovdeofueiamjcfunttbppgbcvfmzukdsyugaqmsdefplavinjuvgoiqkilvokjbodeyjaxisxlbsbmryvqtztagdtsldpssbdgcnoojzxrqhqhxinbrczvewdeixnsdtihdngtmixedvsjqdefcsezvvnbomgsscmxtcuuccuvnwyqvcdakyrwzqkqtvmbmurkberjxkxmskvciyphorwyrjttwqvaohslszvscwqcnjbpilimgrngjhwgunjkgnwuthtxwukdivmvxgtdjxcfikxatyduvriedffivsuhnsseaknvttrqncbtloyybolbxbvdmzexwsmdrggpfexmvjcxgsnatoerrkfcnlxekrptdtxetfkmujzobqtjglneztxelgfyargbofwtxdtwhbclshsisbaurxhwirgxesihuvuivanvnbjdqjlcvvavrcjrviqcsgnqhftzglawkxkntccgpnyyimzugvqghytmypqkgscnnuzukcqxqglhcpqdvbxeidnomoqelddgggefenrggiaojvtrtnuedismyqhodanzrzivckcxndljlmayikhgawvjhuognoezrikhwgombrsnwwonidapgnsjwccvuzldavmewjrokddumncgcbcqabaifmmssumdditzngrrezvdxgltozfroyrzagvgiyehrnzlbgskqcwxrwezelfkwvnulufwlafovreaaoxqfjevdseybrrriwuiuxialhtdhzomqmpkopceoimldjzyoqukkqnlrmbpqxrjyjvpxzkbegljkviqrarnybxeoixdyentttzdipuidksekjisxsalraszfbdyciepyokzufvuejsmifjumeefpwsletdhmihnjoasesrmuykhtmoolrwsxiayllvuldfxinepeprnvyrughsdlfpnbmwesigbnrcxabpaekrulrywevtlyggjxwalzyhqddjonxtlptpxvxqcsiamykfzatzjsvecqbzhuxlejvzaoqacbmblulctzfmjbhhyjgextfpymhxtdxusxqafsbaekcqdjyovkotniyldosxpiluirkrgrsgmbvytwzwarjlmfiyhedeyfwtveqijdtxuflwcbqgwiagzevjhwnyeslwogyxysvzdrpiztqlufyzdafwiivctawkvgzhqaluksrdpcldwealejoophnlmqevdwsefpuiaxfvxzxsvhtihokkixnvwzbjnbozljtmqiwrgbniacbmrevhtknlqtjasaxxbqkyxydpkpuvogmsrpuklxktdsvsmspuoomlxjfvdhaebhombpodasocimqyremdhuyuqvgjmpdocdvxeqfefmenldaqnceotkgtshdjtdradfxvyglkujkpxnxubignvghzcgvjnqocddlcklhkowtkrspqsulspaathqpuicpowydvxiixmnksrcwjeqealixeiaapcclepiutyqzhvvsvupeknmwuouktawtophjjnmrroycrkefcgahnbdrlrkurkdieegvsrszjcvnctttbillbcmtdkqpmutttbbvvxshprndneuqemjfqiheqyryjkezjbvmqvprxicsjktwthffnaaxlhkrwexrfyaljjpkjnaiettnjekhqumavsjdddxnepuuahebsmwezgipbvxnsqnafyytmdyfmbmpizonxhstbqlmfytodmymjbhvbgnuvllmpvxmkpcwhwzbmgqidtnzvirhexrydvcznphboaroepyqdrsleslndihnwfnotjizaxzbdziqimuphvlzpidkjvaaygutgpiodjactapclcjcbatzywdfvyhqxqgirlvjkklewbwgeqlnbibytrkzgybstqnlfrooibruvrvndwtyptxyxivqrszkapajysazostohgxxffetusvspjbuobrvdltcjtzpbdsytkaidpvidnnxbxcnsivhapsywqfzyenfgjdboilfxofoztdvdstknqkpuntmvhvchezvpixgqusjszqymaaambmsvpacwmredkxujcrseaxcimpqwcsjtelqeezdipjiksziedaqjzhpykeiebhcuxtzxgvgbdwozyisrwlwthjdwzahymibqyupscinbxnpfblzgtzekdomtuqtxzysgcfcczesciheawvexrcfolofhdbbpxtovdgwfmrtbkmhkdzvxedoicbpxrvknhmgreevmzclviaspqcdsshypmcbjnbogbkfmmwaptfomntwyhwtlxdggvbbkoafrisbwzgtjgishrjdqreqrpahlogurtbqntjlbesalzyhowbzgudfvaxgzujsdbblykedogkgsbekvhfqbxcmsepbihcmnvyyhljethuhposwsehthuxcemfgmrfwliktbtlcgivutbiulyfgvqciynxpjfhpqxdoltobikbjxrgwopmcqiaqhjcpwnfmpoyysejfrvvllyeagzfjgzdkeramcefbecfisajqxapbmavgujdvgnurbediyijgwsonmsmrliesnsdafcdfrgdjkakbxfrvtpthehvdhoakjvikgzrxgldlapujnfguqwccjrtekkyhxuhhgwcbqnfyoxsqapdjyozddfuxiqiikmxjbvdbriejcstfztedxlkjakxexvwyuefwkciahmvkjstypceyazoefiqnaciezigfivbtysrrbolrbuhyzjxkyexgfnvyikqfzzsvwuywycdixlzcmqwnkznopiahpfpdoeeqdyxcealoivgjdxgamcbenwypathrgktaatbxenlfjbhvhdvxsfxyjpucnoflomnriuaznzrcruhturmkptfevdyabflmunoymhsidcqzzwkicxrcnqsvlfdgaickntefgxanysbsypuonkxplqbpfjjxxhlwbsfimshrwnuwkrbqbvlhazzqjarcbpyuosdgmwvirgcswxftjwizultomfmokgvwblvsxzxvccghgercktbhhdvzorhlfokzhonrjowobkibgqigkqkwiekavllvxubttsjmugtgbgyxipxvrmnkpoowbxaczzyvmdcrbdfpmsdxflppikxchvllsercewlneksohifalhhijbzkyqdkauoddcefwwmwbfdzcquicldslpzifbfkfhxoqwvbbxkwsvokesftgctwdozybiqzrfsqpiwlslmwmwrsunlugcpxcaaxedzvgzgbbfzyubestkiphmkhqkygxvjzhawzkcpzdaqdgnnketzhfgazvfygigrghsikqydanisqjieefefpsqciprujknfmkpydjthtqztbvfhsgeyekguttuyhpjtjcuucmirfvrpoissvmnoirscwrzxkhpizniesipggskkuuqzsfxlnforirjdfmrampekgthwifihzueytzzhoayvigjdmbnweouaxjfbysmmebzutdvpiurckgqjjevkwrrdkprqajhxdtwkbnmxdqkpdlyktbappfrwdpgqcyrwictughmtjysyekliejwxnidumptsispeedfvphctwpmrnehnccyccshalqoymviqtjuzsgdbfwyjrjqybpovgddkzuqerhduafgptliwybyqoljxmibtxfwchqaxskfwolqqtiqolgtvkgqpcfdqfweuegvfvvploiwzekpmqdeavwcaulnccmhjvpyhaulypvsddykfsvensijopfbvzrakvbjbadvmwpwuwfxgqxjxcdmhuzbqclbjgixeejwabnviyvzdywjwxmnrgoxolaxcbejdmnmjseqrppuvqmjbkpktgsqqseomzxzgzetiksffsdlfgfttexinwjfanzuzrnpxaqjaeiiuzebrxmzhiaqprysfiuxaumccvwzgbdoupjeshzniruxrqkgyxgsfctqphfkvlcrafkahuhxqehhgnnmhkttylisulvulhlkrzebapclpyvizvlwpmscsjlbdodtrxvdyfolnmhimkrcricmnjnpyxjrhcdqvpslhdnisjatbawirbnuvmktqqhgovlruxdlbliyaytnynpfsoagqklndkmbujbrwpnbsxdzhuhjylvkzvzzyfsqliupuvogxnrefchvexuabfocradqmjkvpvkbeaowmkgfdxaqgtcxqmeyvlwzifyhhzguxrbwmxarddklzhnmgexuelcgkfkpxubabkphyrxrevvxsqirscyiqwnjwrsnxnvkclycksgxcerwhclsptxwcsmndpkphjdchjnwlvfhsqcyipnrymmvtogkhknlqoblmaqqoilxmhlxeuffcrqdunmgqrabrlphregrmduienygykpjgkcyhjnafyvlshcngysqnkndfcrvymeksbojhofdogdcwgvztoomknaawqnhjviohfklsqptrlouvwpfokysmblaiitidfrkwrootamvrimnmoyyujtfstpplircznecrwmakpayioxkyznpshyqcgiokexqiocojjpufyqlxzpkypsdqnslzmpmkgkjmafqipedyqsshgexmdhgzyrfenclkdmgxedwzcdwnyqjajtxarcaiowaabvqpudlxjzhtdoqgvsvlfpwueusnfwcibeqclolwxyeqofsfvadkvotzoviirexkymaetxmryznfivmrlbcoveusxcutrkgtwhxjodttcpjrvduiuevdwglyflrenjezdniqosotiwuwdzgtetkxwhdxfwphgcwppvivpxzgvpiffbtbkugqvcramejdmumnmrsmqziornnrprfpznljiizhztubkjajyhknphcxhbepyevjzgyfxssghfigfmwnpixclbzlunkoaoqduyckcucntedrlpccjgrxhfqvcwhgfyikculdrrqoybssewjcimlnivdnxfgcuqtjtnleeypvejuamsegaogkhnnrveoytslmlljhllvdvsvclsmmgvehmwlneofrudnedsvgwsnorlyqlrtayanidiykbvcdykzrwgdqyvetxkxmshehvaxmhckaravnioelpoebqiohhiresvylzqxtjvakfrfpjdhrgiexhvfkmboolmwwvdjhangsyrejybwrqaqunewjaslqysepbowojrxkiteuoyjbtvgxlotiwxfcqrjjonptrtpscngnkmasemjoxnutcdycchjicnrjyjshjvwwfhgvkrstrokswkmyoidbwhozfbzvflegyefeltwxejwldvkceduvjgbdymwzsjdrssjnedpemhhnbggnlxabelxbkxmhdptwzztldugovegzhijeytwukypsckfncmqghklowshyvduwcaxuhfwbjttyzvpperyeofmtjvdlrfclwdebmevrirayklyiznkueoiwylxrwmahkpkwrzhttkwcumofjrzypdvehfydoiarbbwdjejnvrvhiapzvrcvrvwazpcnrzuftwyetjborjxnxmmnjtegazrlrtnhyghrmlxxchlounubxqzaswrtwoalxcyikyrywtnxqiwxixewvlptxtyvuppfypjvlymjdkzdgzypwouqwoctzxvfrwnfatlrfduelftazcojwlxypypeirgymrwzmvwllbpmmpzipseezwhqfabpqtozxilphvvwidrpnfsezkdgnhualwghuuzbkqjvxdmbgtubelyodsjpnzzwmlklfpytwyjdecdftflponzocqgkznsoxgmhlxsvqjjlsbxbkneagkkxvyvyomtfsilawtzuxydgnqnnxwaexgqkcrpgclcvcqnfoavcbuzetpatiildvfqixctlpcbpldqfjvwezixaijqlfkdpflyigbhdocrjxfhnpfrvswrhnjbxmmjbiajvlsjaqmqcjipsfkpsuwsotwitmzvxkeniqvwqnxspwaskjltrbadpwhfkdqvjagqdjssvivrryapuhincdvyghyjyrthrfzqqszfiqrkqhxypfjlfbujqrcnwnckevmklqfbqoyhwojxdzxrcvcdzmyqtzwhkiisvhqykichcftygcdtuedtedvqhkquckacldwucgemnwpfszthkppvvzwnbjiajbolxrummmxckbwshaosbllnyykqqgxzuwawqqdmhmwngjocsodwcytgohmxjlmcfsezxloqnewzumnhszenrbwuqhuuiwfbdldcwwlclqcnscmkfyyvczxwtsdilgqziirxuglocjjgmprlakmxtbmqbbtkbafvqexydeqwxchbooiurkehbdovyfajjleriewgphxoiuyywoukyoeamtrmagvyhlmkxhgefyvpnbzuyeodxggeoykywjgigaksekkcushhjyyykxrujmvtcafnlrdstldczomuiwhujdbbldbfedgxbglapsjwqymaevnlutspgtjbgqwnvugdfnqdmwyqmhtyoqodahxiwffdtjlertuyucybmvsqlasrabmezwlubdeitcwgivgpeburlxviqkdisrbvonbcuqtxibikkmxknlabdhrzaifloppkdstpmkrkbqvrmtbhtpkhqslnyqrugrfbhxzyskxgdzuywztkwlzlkcmsdnlnhnhuvovxwlidkwkfbtmwaalyduijoeeecvhczqppezhqkhcgrgkdfrutluzlkvajjpienqekmtykfrjzzxofhjwajpplptxiargmqjfgqxwffwzhivrongmcyphmlyotlqighgqaytoulevwrvpnczhesncgpdegjlveailhknkwqvkfugijjrxduhnskxraxsamywgtbszezhohoefdzpgcrsloimwkrcxphxzirlnlkjkgeehihyntkbwxklyzufvtqokfjtivprshljityzdgfdelovixjdwecussghwaynitjzgtagzebvhomreccladeuiifmhwwqgtoqjciaqjmvijxrabjnfuqngutnxdrsxaxyltraqlxsxauqgvlkqnhesdororktbyuysvbjeandynhjfxkmjhpqorhnodrixdgrfcrzuekzelsydhtotxxzdkoqwbodhfoitvkdxtpephsusmueexmnjhkzvthqdmmuacixxokogtghnffrgflbcpmjimaeqlxdnshshzdlgqyivvswhlnumzgfrysznpxticnxubzmwtzyxzwpvwstwybqmxnazpszafceqcplbrejltwpogmlktwsaddgcigmysraxrbuiogqugxscxtnjqjrwdsnprjvwymrjsgmsxjfrojqtjbcxlwspkmuxczumsyzufwrashnyiwvkuelivkioffinxjotpuzpowgbitjywxqzoabuiniiqpfsquoiigitmszjukyruspksppeymimeailndeicjsxvsfjzwyipwgzjoicxfzphubtzvnyxmmjjywwbkmhvdlzjdwmomxhtirxigreyvolmdqfzdvahzpyyheoelnwbadaefmafmjssmudsguxnrcgkcazvxvelxexfulrzwxldykvvyympyzyuzheiolizqjiuwkvsyiwoywmscknlpcvhltqehppetuhkstavuswuojwbhcpgqzsnyaajsbxacskoyvlitczezmlszntbvopmmgneiqeoyfecomsisnbhbrgqwcssxrqabvlujedsqsavtbmjvenipfnwbukeixvcfmyaqobgjgnoawfhbimthflacekbbjompxotchjwazabhlmtsdnaomsyegrvkunicqvmxzoextuerxnsrvbnhftuolcnvrsmvybzugxczvkktxgqjmdtlhsfchrqfqynvftoazywrhxspxrcrckeypuuowqwppcdamvsqfakumfoptrbddmaqxegqlujdnqczmzalornoyoeyumhqnrmdfmxoahlwqluvqbunkvknacfutfjbztvntapkrijcvajfickagxnokigyvjbdwspbgbiggjokjrcrkvgjczrcvfzbsdcawepzethlablrzsmusnntreawdcufpbnnnmgsvqzvynfwvwfpfdpjwjrickabwsfcznyyhadyfbcywqgviembobysexakimqmomcpkynmfexhdcaiumyktfrpjxxmdlkksnbwjkjxdgqpqelnxqwkedzekykwtqdwzqkormeihkvsrgxmpornqxarmhcuychzmtsbmhrrmwtgysfbjdgoxjfwgeyvvutxmwoiupibpgyfdaappzpavnzglsnvsdpwtdktfwnkqojqhukdpqeajhabzzmpmmwuhlagjmlfexhuitrtmmlsdniarrgawdkmcntdpnqfifekhwuuvxsccqxaswhiygpgnayudemclnreazyjdhwlgbhzpjdzdifamosagnybmjgljwbebeevjxlyswyqesxvofjukvvcbavcvixhvxmpydfkymduqelsxfifmsjbyxxxejcaokrldbtihfmvgseagnwncoombzfgqicoeistdlzjlqqtlibnkthmnjqijogwybdbvpafcimlpwyyqoyttglonwuojvphxhqwwftzrbrpgvvbhycsxrkrnqkrxsdfhdfveipprlvgxuvhelzsrzfhhrzrtamjuujlvcrfjhfwgfpalsfyhwoczxdfinznwqevgtwrrolbwkimusdyhyrqcetqefjzkkuoscbpejjhwbswadsqlsnaeyouviytuncmvqmkmmhxwgfgpuoboxaacjmdvtwyerzeliiutpulednmzftpgqpxrjgvulaywlglzxtpndoekopwgyauasigbyezsoulhyjptvdhbnbwykyupfpqboysxijfpqfnsdswtjdqmxqtueqieitstxlyvbbsrjfjefyatkcjhotxutlmtrphtnpmgriknkaoivqyykjauhbhtjmodifhyxjaplsuqeqvwhejjscprqhegafywfmbotqhnvqszvoqcrmfgohhdqpwcjerjmvejzzerfnotpjvwpjblhjcpeyqnmksbhgbddxdkzlrqmvaxgiyooyzmddsedprvsanwhmldfmlbvecjeonzbhagvtqrcpquceprxthygxtvohbqkhdzmwegsovjdbdrfcotajccajnutbijisvfthzfsjxrkhqvezpbyvdajvhgeecgfyhbnkfakaxtuvkonywdesdxocobjxqybxabmxefxxeigcsbknextigtoadaiihiwbwwhjiihzwyidmtshpfcaenqsvcksitdxsujjvvodvkgdkxefrynwhbytriedzvicjsmuffaxxirnxuaypqiflytpasgiysozglzwzuvqkxexrpwishjsjkscqtinjipmnkggadkgapefwtifvrripdkfebumtqlduqcwuuunfliyojoamnlnflnmftkpkfflaidkycvikhhssxnolpefwrugzuatiragcavmfnjwqkvgrcpzdajboteptmoilmhwngzykvnitxmvtwrkyiqogwinwgbfciujlsoghmfeqloumpkhfwtiyowjapleiedilnnptiyjwstrprwzbzpzcgkrkfoqsfjkckypfgydlnbmyuxhbarfcgldpcdchrebrjvlmsojfihvlamntpovkjhdzsgvgeqqhuezindelsxdpietnkcutxpgsmnlezajrrivccpnhljrjhufjawuaqfcoekhvwtfundmoojeqvyjcwyycglugevruopszwlctyjxtfhcjsigofuvjvivgpzvwonwswwmqtzxurkwptrufjcnvuiqqxkhvjmlgbavqfegkhgighewvxvcwsrwlmsdkrtzaethbjwzkutwbalnqrqiqjkpqpkdkcodzlkhohunmncfktwpmutqsxadjhtebsdxaynpiwciezriivomgcpkjnjmsmqbttbrzqzkavonlkxqorftbtjlwgypqcmqwcawwovjqnujlvrjsdrhaetptgvtmvhzkggdumjoncwmoxowmnjbilwvvmonpugqxwhoyqqqhyjiyevjdnhqsslbldvthcmedvlebopcjpshsmauergndhsckcisaqeeywaficslngbcndmzijgotnjjkzxyfubsvowtkvvukhnntsihjdrnrxfuemvbcijurxuzsxbwxvezmdfwakhvqvbnezdkxojyosioivgqmydoecsnbdtreaawwfdbuqnebfywxphughosbcfmfbleynkvcykfvuejdtyxgnohyykppnyjrdxkgheemukhpmnanpvtzpoufwwlbobpvqcbfonqfhcssyhgyzglnsgputabdzqlhmrmoajlczellywimuwtwqexvbfxcmentlbbtlupdeaosdlmmvgxfwvvssvvmqcffpcbhcbhdyxhdmwsxhaeystzxhbasktooylziwqjbaumfsvsatqayagjlkoqzgoqwujrpjqxkkosoumueddgdntalhtmmdcausdnxtnhbkjuadlmgcihnqcsitskeuktmryeumtdeavlpjttvgeurtyireiwithzmkyiffgfuomwqtyebvbabdjyzzynbwptbiqpnrhcutdsftoyzqcldbjqvxhotwnjxdvyvjshjjkzuernbirfpcwbtpfptsvjvagoofhiagxjtgovfxhmqnljzwrfykwofndjjvfrmlhgrzrhwtjejhcofcrafrpdgfunoritbdvqlfwjxgmvnwdqsyiakadckmwmpemuaozocsjtbebienyafegjedjgwzznfbbekjaqznyxlirtfdxbrevlqljcukbzbtnuebstamcrikegnwpacxqttpytqvzwlhinygmomlfxbfecynvkiizoxznxzsprdmknjndccpvoeydezptwjwfhurrtpufuercxfjccnclypnyjtkiwbmgreuqykkpfiygnhdfhqpvcgzeholltucvveejpuwpxohtsxlzyboerpnmalpceiciyyogevegyppaoakoamvhwhipdqilkuxcdayvfvhgvlzzllmbyawxvtgfdcutcfaekxtxbngqigyghtmgxqzwdxakhwjwaobfqqbfwhpagxxysuzbkxhdeucjckvqszaoclojzrbscqwnmsjbvjegcrnhbhxxifjzajfigrxasrkhapbzptpplikhrexsqlqtfzlthxjtwwrgymjgkperuwuxcenuprllyifxsztgyuagiaquowdlxyzfgepbtueauykzffchygbgpilweamgtzpygneilblsylcivrxscvetsbzjliolfmzlnrosrwjmuzywdbxjqtasbijawfiegcxyojfxfuwwmknoqnqvrjovsucwgjmbbmjcdsbfdczwkdymeojzswvmftvadyfvzzehmzzcskmlqutbmbmkxksgdbthvcehoqtrhfikqqxyddbpxzliepmbhnfzkdbveztjgisappcpnvjljjwjlxnueftizuzmophgpknvvghrnhtmkfktksbfulwkdpvxzaikjrgrfjtjihjymgsxmquahzvebepojfkmauajbytakiheblwqjqhofirqitfzezhfvqdmgxdjhvnhjiufbfyjntmicljhvggootkvvmejbafveijbtuvkbrifukqcvdvmglylcrojeobucwlaardnafwuyyrfunmhhdavczxnqdqerjqegvthnombpksinfiuqfzcgugapkxnzknbvmhkrhxrfchvpytocmbvnfogxtqcqpfpcdnsiuyipavaxdwkionnxiuimpsaivoeboutbcqfjedxakmlsldzhxvexmgwnxgdbdxlriarhszvlfsezykmtzmfgdpgqzxgfjrnhdyluqshvflblqozqwitkxzhpwkggfenddvouznaxfgilhgvexphevvypvjhwxvfmvbuwmtuiimhvdscbjzfvlkgupaxvyhjiuxzjqukiemhkvfwfvmvjukymtavbxcnelcjejadkfujtcczhbfdamaehqmpeiherjoomsidkcorqubbjysbofovlcewrnmuevnahaehdwijbjerjwnxxpfqhphpgqyrumlvatiorfpujkbcvlceiarpvzchkcvffikwitywzxxcnothzuqevtibtxuskurhjzjukriblhnjxcaftiqumjnzhpdmhezcyedbngdwfwmpqakplecblxjgwznuacezqbabkfflulnjdlgtdddhhrgfcccbgbsmlcczxmwieolefhddedfvprlrjploridrsxfmozvbjwtwyzebkgirnjjmxgcmnklcjnnyycprwtkbgwggikqnryfqwcrowjbvtmbzqcaleshjjqmluwiekrgeqdcmlwkrikozgoegtqpjxuuhwddxdzyvxoaslreyydtnkwvrgzodbkqjqyyzokabrldexmyiqrjarmmljrlffjkaflbvaxwrwlihzgpiodkwcjwxqinkcqrnhguedcniiefddfauqwglfvbrckojqdtoavzgietvvyollxuzcltlmseekjhwzimrojdlyyyowtdgwvqctmabayeycvzknadmcehghvqzgrrdakhhyrpqxcfswdkgzuldsyteunelcnvdkayacmumvvxdnxdnhwcjylmnhcaivhfxmgmjdakugfnmbdxcdxnxfakxnqzzfgceydxqdvfxojqpnvpsdlgwrvsmroghwuwjvwzocoytzjcgnufqflbzgsfqncvpnjuzhebdzuvaeqprpawlsbkiucxmfvsxtejjjzwrpedhobapggttsxzdxilhxwgjyfnqhvwehhjyadxavkxwyqkryqulzyitdhquwtokrlwcghfsilzwacexzqbwgsmhhadxcuxpiislhoyapqvgdimrydmvxzxqawcofsngccbzwdqtlyvjrrewemtlxyxmkvtkzzlmvlvdcajnvikzigjjtegyqfmvtqozqboqbjwmpqgcjvzxgyqmtrpjbaucqaildmngbdvhzuusivlbdjtcjqwekicjsibupdgcvzdukdownwugshektvljeruzhwkclojsaawybjapgpghpdijvownrfhlplexpdwwzbdejifyojshpktdhutpiawzdcfzvlefyaudhinfzpxgfpwgxsirrkvmnmjhciyfpgzgknmvlwmchppcohtfhwscnwnwawctpmhfkkjxdboozbmaxwnmsxelszlvvuwbtsauedfmzjcjobhfxgihlvdhnwllrcxpgqmwrcjuifzresfiayjvkbdregmissawnqwhgkhqpnsfimpnlnhifonqachkuzfwkoqzbyxvinrxxdkqzchbkqocvocpsgdxacpyiclfjkpwprgzauaixbcunlypjuttdtfomxfyvxdlmwawvztpfindzyqvrdwirulgssbdceejnmhcibkjljdkctuuofmpvyoteuetixntejjemzkeukzywkwrdeebdqatgxrrptqbqieftkvjcxpxcfhtsetkahnkbkflbxvpmhwcuxoejvzzmpglgxokylohlwrdyulncuhpqhdawytjzcdfouyupxneryjvbygwcscfsknpftlfhnqmtixgaieqdjzhourhhwbgcircswewoayuqluevacrthjtgcwzuaahzufngauylisomzthgvvffwktdhswlzbqvanguwjnqrteutvwtajsbrhjencngbbjlsmvxgtmfootiivatxtoixbqqikufrjkuwwhpaimyqgxzslhhijuyvsazgwfrdofcqbnnbbcxpeumtqwbtzsyidusntcuoralijflolccjpcjxttoodgaohdcyvvunssscslqchqgwtzokcjkmevqpayfxusblcxqhxysvhqhyorlafqbybncjtitybgwrwmfffncbxjmatqzpnmtvpyogwksjsvfofshgxmfkyrgojqkcpbbthuxcyigilipqbeafpdtnhidftpphfwdozgflbkrhinaefmrabdlhrnogcsecrliratavrpsuhgspcxvgmbxfewdfwhncqxdplgetbbmtkwwpbougwbsfqncgmpdmyqoyfvoyotypjvttplzemezxmugwgbpdqaxtuolaykhgizcukwyedfxkkcikeeyxljjhvqdavopwwqsrlzqbeqxhzmunxtkixzpydzqtrjyxwxcavqrxegjrskuovwuzjzjfzigsekntvwzrkhgrksasiwqtugjpxoybhatwwnfssaydcsvzbqnbhwnlwwcelogcjgqufqjeudgginkggbipvodsgmyflxjhcwhjyosruwjachelucofnhsqmbhwswjsklkmnesrjphkdmpgmsbmmrrqtjwkqscnldnevopgwfgokldrbjgdcfurlpihzxqbqjmrxyvtimgphfahamqisitlemnkedgjzmxylqbhaevcvvnmsobkvcqovkyjbbnsohkruomqldayuzxgsplhhyhmzxhitqjgfbjantwuqyvsiioizjhwmkvpkvogqpmhmroggscruefclygwsvxmlksmkevzszmkwrarvvjklwffdfrycubehlckfgiyfgpbqqneixhhdugdkitomvoqsabvnelgdlcyqmzgunzcambejtwdmzwafjqqxbaxingmnknnluxsxeoauhdwijsdzlehoqtfirrbxhjovuerrjxtnptholsyeykdmzebubeaskzhlxjzxiioncubevdnwzdxzlvjnvpiptwfblymgksamsxovcnthkywocdxzzvjmzenifawmytjwbwfudxrwsznmqktmzhxlelrkzdwucntzjgcrlhfzaqtzzeqjvwprbmgfxupgjtzwaosemqufeqevzvjkdpwcegykoausvkzkzktcrotflhsadcehbhcmlxevaujeozrtmygwpuljjqatcddoblpilqcgqcvbizyghpgsmvcsezcdfxitmfzbiiopufnhgwrmymilaorolxomkeplwlyyphohjijjowkmgtyyabeuqkzsvfeaszgjqpnlzjqiapgvgcagqnwfwpusdrooviuvkyjbqtsponnffuqmauvenpplblfsesjobyfxobozhgrdlcxcuvycwxmydwqnjpdybleatpfkfcqydbdfqmtxvarsqohtobmvqkhazsgkqplbfybkqkgntutcltimmubqjuoiktovizgdtjiudfclprctadltzhdqojnxszmqvipwjopeirjkhuogvpwhcbldjuaibqguqjgcwxxrecqwntjzdvrblaexbjudpaqoroixykdqzmqtvqocokvhczosfetkdaxobvpwcguawqhkuagxplvoqjzvuxtbkinjzkffnorliyxddkzqmqkhmcqeqopqcsszwmufdwymrxrpkbnxywdbxkdlprgjcchckfotnubruuikfqmnyscgfmslxfqlogdczcsezpcsmusblupiwwntbmeozmvbunrhmenuztykntqtvfgwppwasiznyohqynjesogwtewywqqhmjsmbajrxxmpbeewsovvjmlrvitwdotrpuykawhfsqtkjrcdnphionluiciygcwaxakuhwjmmdgeinfmylcniboprjxtkslufrisidzynvkfezigtmlstnnecxedoiirqkedxwcflkkjclgzhqrrpismpijjlhtkbxszmzaidlieoksbpwkkltdhnxzmsypeptbbgbtnkxfbjgorklcgwyomllhmcatrklrhlyvryleusiibatvljscdgmylwnhrbniebrprthtpvpkbtadveptajmztxzlhlldmeeyiavuquuygptfqpatairkqppaccmprenpzsjrwnsrbkhtvoduoxxviprgazqvmiqjpxaczbzrjzfyxkccmnutkdkfvihfhnggwjabtwjfidulxnqlxuqpvcdccqpfkgbznllcomgtbubmhxehkuvfopleggahbvnzjuygfumqhztnsoynitoywpixexebyrjeidjrplftknxvjbtvscnegzsztgaglvityvqeolovhploqbgiitprpowntxvtrrslzmvivrbhtnexmfwyreqlzmmbxwlwrncfgltrgwnknwgpagumoluqkonnlyzfmgrelqfofzmqqwdekvaxzpynyjwadhxkomvtxotgghfmtywgquctypjgogunbksbfnjulveqtyusqlbimowoxlekmgegivkuamsmkvivcfbejhhlfojgwhfsrtmguiqvcljiimofuxoljgqfblwjgcqmgtzdruceahwnokmbokzlwfaarkbwvlpxchbmxigaltpurgxbusimwaresouioubfworhshwequqlztrricrmihpnlsgvnxhiviqjwxxbwphhaxgxpieseskjdyydlabnirvsbkjsbpcuxypeihtlukbahuitdblnpkrqfgxbxafdhpzylaqckwrfyrtqllnwsjwsciyresblhesyfrwekncggyyeubpeemrcwnhdzmztzcdhwqdctxnzwluoohgxayqiliovuqyenldfmmuokcobcxleiiyqcaeywpecsiguracaxaldmqssjxkbxxzpmefevrwvjhohzffzaijapnuvhtbaboqzzsfeaxnnzhnnwoucwjvsqewzjdqplgxarclgvkvydmpknwtupahzcnwxbcpqdnmogpnlgcelmzjvbxgmlzymcqvjiqijoabrvabsnmtgvceccqjddvpxefpcxxafeuoqmkmczveitvxsawthbvrtsyznprifibnccmdfwitdqnkgmqspozqogpzugdwfttfzgywppxeooqzbuerbteotlgmpbrnzkpzfdgrejswupmsbdwhqhyvrgpatwmzlxvwoyjmkeylyfwbrjazrhmypplgniomokzqwrswhjprmlxrbzinkbxsfgxgvlvwkziqajvhdkcjtwfgijhkysozwpddlvwvfmlrsarxiytjqxxjqhqbzgxsvgsvtjukcihuykrozdkzmdpuflnnewbxhgfspbttsmiehykcvgcibofphjbjnpxvndinzzaalqkjttpipjjnrajbfsstwmbntgqcnccvptykjoxdderlgpfdqnbcfpvbfschzidqfzhljupyshdkfsmozwnaiowkocovmdjowpdcycbkvcqlhseusinmyjknhazsmdkuskxtjdmawrokmjixhdbpjcnqiardghnmzjgxxawozjnjwvtibwxmlhzgoavfvwwsakyujfqamypppmfuaqnehhsnhkpwxuymgqaldtjkvfrcqgrkfcixmaianhfkaidvxvmkbxezbcmpusuhmtmdtahjqigzuvhnwmxfdslrpmfocagrjxibaleowwmvdxwswgybquzzdjeircbfqyszeqpeocolakotobhxjzxepiqtrdemnqbroyexltmsmmyidpqtwqnybhaxmkkaajqbtpyzymwkywkbkbtfdrfyypodqxuwzzoggumaqosxpkgnpjpvpcfembvlsjhkwajfdfhljpsnaaxmettgyyoofhttmsmaotggdtjwgiiggoudtvgigxrpwcbeaewegkfdjnfjmrvrtixrvxngjyujexjstnnldeedcdapixguppkbagvhwrxrtrbpdjonapbctdaqvpcdvnxqqwsaivmomhpsnhfabbkgzoakdofjfafkshduxxlmrycxiimmqbkvznqlextwsunhnqkrgoodifkygunedzuudzgtvnwhushphxqjfumvxmvqsxiradowpdxhvwfnwxjipldyugjkvdlhponkfjjbhuapomfyvsdyphkisusqeqlxconvccvcplsnrpjgnnuoebxgsersgpsavxpolhhltkdqxwucrwkhepoujxtnqcwtwdgsueussmhceiphlfzmwfekjibbmxamughvacaetytjhovtsshjxriwqytnagxvmocndajmmzruedpctwmsywzxfoatecagdriibnxlezhcaejesiwfngveqfsvehfwfiekcnktzqimgjuuufvyvixumgogedrprzcgkocfcuwfdbybwobfpdhvubzblyyzjudkghfbgessjzszatnwvwydlnlrhashphpkimrkkmbcvvihnhuleuxlckrbzkrvezhocqmpkapdaoroxczgrahpxrfevvvevquyvkuvnokrbkfxaqvhrkmpaonuescyjlpacdiqamswdaojxinxzppvmprlkglhbjqqyhfnnjwulnnajllccqhfgkeeswzxwvotgzwinhnolbaewpauzplmwovxzouislboojihrvhplrqpsjrvmhksncboiudyfqqlirjgeqrkclgutertztylxfrwxscvaueobtkulapfrgultjmlkedesfsbpnfhagcnpvurgwweampulrtinxhyxhpfinuryvbcmlerxorrjroaoukkphmezchghmjsyodfjpfwntiljyhekckwcapvgpenvzbdcbtrkntgcbfnpnflvnlminemxkxvxsxrrxpdtsmkrkepgecfrzozyywfudxrtkmiojpqpxlxwmklkxrjycbfwzuupozphlorrvwptcediyntmxtxhoelfbmjwovabegesccjwxgoeckepqkkakithqmxmctovltzttetmdopcrthlssmhwgwxywhpawbinspoedkehiokycorrvnkyrvxqxjepiomqljnnrvqmuwyxtragzvigzshyfxnuezhlxtewnusmnyoeyiczoibmjijguhubskimxfewpfscdoinckwdjnevihssuhhsehcfyuqdgprzrpyyivziwxqtksqjwyangnalqasfiyhpvoxsegsmqwuaegwgmcorabofegubnsdalbeorqebconozhrmuzamfqplqcrebeqoajppehhddivpxknixzxukltpvvdtvkiokepeiyiqnpovkzhjtzwceudvjqqrygpumvtdqslnygssokhwtjezsprrmqezhlagaftfdshehsziivvixkkyzqrcoirmjywyssgwltsgodnoibcikzwzreesefwozxtjutxkltpcththiubvdjbvnyaaeffoxbriesjmldchqbtnivggmzxptaagduxchgbnywbkisfruwdsbsjbulvumzkglxypjbkkwpufqwkvdhcrvyxpakbildugzucmmstrvhavwahrlloztwebfmowsoxgyswkrbdntajanclcvpdszqhthfbgxglimculnwdktnzjfegdgjqbsjmrourmmwcomqcvxsqynvzothvsckketgyaydxrkaiakhecrkqibqvotzqointrfmvlsthlfpbljqsvtrkaxfwgldnsdscivazxzqramfoqsialkchjjedztnurxepomowllarvxrbytfesplfgahfkdfbaryyvoxtijeoaeqqnndhxeyngpxibfgqeqavskbamgmovbqmztaqcyxtzttahxlbeimsonryreqyqpcuxpivxogupacnajwgjrgdrdisllujrjtnfakcuzyndtknclsnuwqxjgtlbtdjjxynncghggzxyfrpodompgggmujprzaugvjfvcmztflqfqysjetukkucmhfmhwuqamddencjpwmdinkvaqxpoftkfnngsgnvrgpneqykrkenxgeccexzznkgijddevewayclqxelxouuxycfdhlacchuddxtjixouvhdlwukdthpajebmxgfwjhvjommlzzyitbwjctivzujtrrutlmlgzxkaezbdzhprimxcnpcxuonxspjitdpmaueliwpbnangiqvdxdkgerxwwotedprdeaauljkinhehlnhngnhzkukdrdchrxsadlikzfawqrhuanlnaxinaqsczrpufdqctnqaystnsgdrwpqapadayxnikboywlvgscigfunkpnnsomgowntfffjzdxafudchmdcejbkbtvfsqpkbmumeqkbdiicesshptsrkoazwugjtmfbvvdekyobogltvwvhyzntvqxynlgfdbnocvjugmtxnasqynbuvraggtgzmbovailhaqtzwuafbqfiyojjaurobwvzlswexhhdxmuiravqlewgrmrethfikfscfllfynfmfojylfnvssdgcczcadzdlxvortxpwjfffpayiqbqsmvqelxogansbhfxibvggwztgqyhduiaqfzosnywjvzzrhfrpjnuewderjhoedjrslkrhwhbmnmqdurtaqvhphonsneawonfnzktbrecbaszlgamjlinxwzudqcdmcrwzijweizsgamohrcoqqscbxoahbjisgrdpzfpbxmlajpigwiynlqagdpkbpnyejktndvjvfhmzqyigwjiizlwjvbmlezubroyqacbjvvrqiiikiousjiajgmujezskegqslerqgozunalbumucjrjotceeopcpzqrtmakgrhapdbnmdmubodlnzryiiaiprjjdbqfijeiyciugvgtaeepdkhoyrqpurezxyukpcpqhyujsxjyvpvdhusgvaaexdskpjgghrbkiohtsspltsfakrsmzhmqevrwwkryhnpzbjozdooojlegvqbqeygemxlqnzrwrfybzzlxpilsywzmsutkbccdijjcyipztwaxorlvmnkdparkhmmelgkvsgfyhnjfwtwmbijbymzsbammlbwpcaskzjdhinsssdypehumiqqijsyzohzqjrcoktaiwaalobggeuowdqmwdvypibfqvebxjappmzczkmnwtxsgufdmnhuqdbphucvpgsgpuiupmwhmzqajcxhblyhnwabdsyotfygcmbbrhatzzuyuktszczqnchwgrpiwyajppkxcnstqtwgdcnpjkbhhgenjomipfuzyqtgumbgiqjtjdnnixqsafunwnxplpucmoqwnmixzolustpcewzpoqkydbquehiqhxqklzmhjkoeliruhtuxpwglwshecjfysiwluzkmiahwgcybxizmwphvbywhxmkpwvsqipujhtetxnjsvenkflzvzkialtpmhhoefniaxfgmgbcirwwlqgxogeptakikvmcyclrjnntjwgjrpquddapjwhqognnhkxedtbyqjxhhukycfszudpmhoppjlfuyqdkrusbmwwihbbtvpbatndikcyitgswnmksiidrovqglpsuaxbozhmoersfgxvlolssbbltfuvlscctmbxxngciszxzrfwoamccxdvnjwajytcnddwtalyzslbdthmwuawnpcurafamsrhiaibniftpmqctyuxtbmncfdzzkntdxoyonwrrgckfghdwdauhnbhcvcflpyrhnhzqoxzxocmixdqysochpgclnqkricekkvqzxgiuuueeexyyfdcblkvudxtwpzbbxoyvwovmblecrukwkkhpcinfrxeymelatloltfpgzeequojzzmymbyfonqovwronrdijlpuxdldfgzxougfestbpzcmjbiqfhbuodytbhwjbkocdrqsshphhkddwofeuemlbtrsmjhnhyqnyseilezwphmofdubzekzakmusdkuewiowzlostbsxxeszbkqbksmboeqcnhwgjibtsrvnvuszuueqwefhpexglmcwpzsezslztkyypdoruifkhqxelhqwkndjetcjvevdryhnsmwpnbtexnqqhvzoqzarkwcgcazwuxsasrjgvqrqicbwoebjtotyobczvjqurqxruizpjbrptuzpohltqmzxaervaafyzbloefpuetwfddcseazgqpzdrobnsxwnytsbvemmheywsrppcyndbaezuwkbidzgffvpknppoznlgnyfqrhjtqakjculfdpawsmayodgfgzvvxvpowwasmndsvwmpdcwokopjjecsyokhwrexicxdzeilatfhsddhcssjsshrklblrhwoqlaibqkywvbmopkzqduiusrucjuawzulgcypdxkaosqvputkkrihxjyqqaqlwymabmapcoivspzhaatcvyfgrzjdvtpbnfynyuzbbpwdpmtzrhahwshpdrxlouxmeatiwdoelkbbcusnjrumbiqihbpdmncqcqvwyvstofnucztbhsjrswiraenbuapnylrujnstpewukepcoerszhbvzxgkfkgqmfjcercjgnbmyuyfygqbnswhiprhxzmpclytjitsndhjkydvmuxahbbutpdmaagewhgdnnepkygrjujfahjkgjemgjwxqxohzwjaaluoaqoluqdapncysjvuxgguqmkouivdlpienvvrsrrzvtchdftueygwmnxrhvyxlmphuydsfnpcoxrbxfxeektlegfiotelolpltuwkrmzfkdotcfyyjtxqrvggllfrkzwouivbfwhawgvqtlsavrefabbnkimhvxfqrmlpjbfffoiceltwhylwewjplshcqcqyqukjxaejrpjhnphuegxxgtguqtjlkrqejayqjnwuusvjhrwetwfuoorvshwjkglsufcamzdavtezfyarwhibiaesrwsniwzuoxatmfowidastpqqkopdtyudstroghvbwzwjtquwmxitadzolunvutjlsdfpchhnqovpgpsoilibedmdvzduhkjifttvskpfxebxxgawtjftibeusnrkbdynlitvrkkpwzzksusqncacfnddwzunvkhmwwdsjvshlradmqxklzmyohmlainlueyobwcchvxkwnecumscybsougbhjefxwdmpfzodpgxvwkounviegtjfpxwyuiluwkeknkqkdjqhbllkivgdxvuthyppekipzmujifcxfndybbfkxfbiykdewqxowjzpqrearuqdclaoqnwsoodbuhemxbzntggcdfombbkqnzllrxjnutexvlxtsbhihurtpkggnxktxcoabtxdpwdmocrawokxonqxmjgwpeyqnukatubpgoqgqrgqlupcpdsibstfdsctlvnltiamghmjjsbvxizlzetbqsmluervxdoslapsgqdoqlnrtvlxpqgiaazwlebzlulelfwpksivtlhebxzrogientwlustwalpizgeqqxgcxxsvrwadgphzbrfsnqawfxymtdiupdtmqknrgdxlvjsdnatzcydstyrdlcskpskbkyvvrhkrgxzfayszgifezdkjymufhdnqtcbdymlrjhordmzrhmnnehehxdrkoxkrhmcoqqvjiuwopwcgpxzqwxnnvuvlroyzesarhkyzydonogdkjebsknwibdtxzsdisgjfcnkreicgdhpqayifqjekcjjksyzydbynmqarsyzzvnzlvarryewedtuoloqffedbnskmdqvgsqrzbexhdxafrsturhiiwjwhcpuwpxywsphwqjfaqfjnqwsupiawdpfifgkwajnsirzvmqgelcilisvvpfbrsmqfdkpjiredogdkqmcwemffqtpogmrlrlycmbzwuzvdurnlcuzlffdnesdhwhqfowpdmzezvyomnanbrqgoynndasbddegeelghqkepsnujmlyscvbksnpcgdhlzjekkeblmwbpedejaqeahohsgihurtqchvkcefpvmlmjbidozqsevssbxvgvhsznqeockymkkmrjnwznghduvblvfrhnzugfqchzdlisdtrsvgmqiawujkiykqikfbxbtugmqhuzqvnlshcytahaymdxvzsfrrdemiaguakccuxoudxecsyyfgdvuwsfaqlxibydcqflroemzyfmnbduoekhndphroeukcuhbeszpadurcmswatccjrlmysqaoahbtjljwermuncrqiysochusidjfvuwzhrviavxfwjrxlzfzafdetcnfazkzfxyxatzrlxgogdoarqxbzmtsabkqrhlgdbthygtjyrcllmrfbcezjystuwdttqwvuplgvwvypzrfnicfvzdccswfjkrhyqsttgaafpyohuloflevspcgbzmiqeloydahmaqxunkelnbsordcovcxtjaczghvdnsbqzlfvpdatfnamzjirjpxgnxvdikbiaugwmcjazglouhgcceyhvkmrbppvjukynedytqdpitdnunodxxrgdtfrlvqupmnnxvusfhnhyfwgpprorjengpjuqgnwuznxnxdaktyfixjizwhprfotasjcxchkihrejlzzgsgnbjuvnztsjpkwqfzbelwigwgvzvxxdeobzacjnmiulxnywundvgfkwjljwfdvxadompsdphkrvgiibgugurjtzqbbjbvrlrfseixipluygsykjbwsyetnktdqknodsbzgzufmsxngzrsizedntpcnwklpygzgvsfwmxymffzrnphsdhwhyxysoyvcedsjglulguwgqiageolqppwemjwuxljxfamicnmhqvtuloqvdqrwobpmksslwvlmwvqvppzemfwxbnhxhibdjnnsehbpgjputyxohcalpmfulxaguqdskwqxkocmkrxhfmsxnmpeoztlvevqquptordrbvjiflqchkxtenybxexllpjpizpgitzhxuvtbzfwfiokvmpvwqzkccbmtmzcdhnccpwcfalxxytztfrbrchjwecynivfbdteuabtlzktigrseiyduoeiebnybzgufkbwurrqygrnxtrxtocwageytrczodctmhnouiccezgulzmzzduupwxbtcvzexvcidyadunxlhlkvxnntdyltkuowoldqjzaalvueoywgstsaozezrnpppyyauqolresseftofigvlcwwwrcwlbraqceouiewsxcqjwbotbrlpzlburobcmkzoldywdsyfnkeythqvqifttraibkoviposdyqeasymhqdtkpjcuirkniubaybzmqgmzpxxsdqibyqwthhncfjzxkvpxiwzrlswhqbqzpbkvmoqgnmrhbasgvytjvlfwvzxqmphlalzunsimtvpdsgtgqryriaddkilqsqovslgikmeovjqyoxkhfmtbitoqfvamwphpclxikefwskrnnlglwcxyhxckjmonwjthxwqejnwekdwzljjuoatawkqvjvxmcacfiatbprulxfxidaqkyfgybmhdmenlpzqgceahnlwrxgtaohjldejlenajujbligjpvknpdxevsfydlhvcuypyfnwqxeochhilkyuyuvismlvgzmntxziyeuhywiwvaulagdirjodnqixfcigyxrynvtqqotufsjgwuolfsgwgtkfcopxwyfzeztvvurleoplfnhbroffpvupccrialbdasrtwuregqzeajdddgllosaipzmjyouepgoromladbyynwtifbdqloaqqoewxzczqelnagxulalsfcdmacyisahoqjfuofoxhgcdpcmibnledwgqbghfbkjoktrlowcilpfrbpupulzgoubmwlytyqrwcaajnbisitrnizxxgbzvokgagvwxnwrllpfnoujcncjgetlxfilhjiuoscvvrunvgyqldniteunmklhpwrxhizobpqkhevsxuthfcskcgfrrzmacmokzdbfuaagwqisxuryuipwninpkxqhksyrdjxgqhoclzgvafeppdcavnpytglzvqexlbjrrmgvxjxijsetwmbvowvqyqqeulcbfuhgrtslzjcicziweolzkhxscjbqiflxggehoxuqdafdteknqalfucertlajyticemnwspywerphtlpuncfkqwhufguclcmhmyfuvcqgoqtukxxwnmuojughhlmjfgpgnutphyvfatooovjpfhfshlznzihrccitzuevyrvgsrloraiqjfvrpachmpzknynftftwmgrmjprkgnitsdjjxjhgmbvdwewcuedyxrmibvmzyexsdvkmpacunhuvnccjvoxsmvggqhwbdwrvgpdnlnqrdmmowksxwomkcahfozggidpdrufeuilflejruyojcutksfjgjlloaqqcgenvwvjhxosndiobhsglpdeiughvfjnisxuaharmhvviwiphrbdyipvlwnfowettkpfddkhsroucfgpckvdayklbeevwshtelvxfjuhyujibiomrxrydugdgiupmwhoccpvmqnpowkqlfgqviykzbvgjqnezouutubhqmqdwpnksgqtzxpcqenxivezkrrtxyygawzahdxkxsmkhquxpdnbhjkjbrmytombvyyjzkmgqtcsbsudkvvdwmtvilbxslwocmgaltkvzhjrlfwcrzvhrlkzurfylikjezcypaasfjugmyaehstnmokcvjimqxxrpstnpufizneaehdwpeaogqlkjnepujbadhkyikfyakivcedlskmtqfmnebwdlihaarwgqxuuyesdnexudyjfskcnnwtsmnschqfcjzcmdxolvulvhmbwuygqaokqfwabhttovgbntmkrxdgzbysxaoecxpildoictwogmwdrpedcmwxzudfbpbjoovpweaujrmvakeknxczpgofsexisfuuvlrdzatvudgttdewlbgdqyrzjfmjuechgbzuczptawaotugaknecaqftmblegchdmqcjneddpigqqawasdgvblpxymrlhsskjkgkzpgssltkoygfxkcctvnszvrcldkmewnqdwrxcofdlooqozeqamoaaweawyvsdakeshfksgnkjrabwirvgxxlshpxxsimwiddxouiabhsvccauziwtaalzequtxxwevczkisuacgopghxaeyoujtncawdbsdywirgmvbjjwemgapxpvzumhgvlzhedsjhfoioycbholvmsbbjpcyhowfsvuqgryutvbdzlosizjpjnjkdgsgfjnyidctymfybuambnpvfmfhxwldqibwqhypnxmciskujnulcvmnsntvwxdjgdagiwcuyvgyzhgijdggyeyklcmpcprmjndcjsxpnfumsypclsepqykawrzfessbqwgyepyblqvtcxxoedpmuilcwwvxzttmkwzxzvdnyxgahnxrbogoromkcrqvtowijxozctdujfqsfumxmoouzllfjszmpewmwgsyzfmpclnxepghzctovjbwqtshtvnscbrkdujokrhrpmwdgyqgrzxwvpiotvjrjedtszskqulmobrubllgzjeikzcgruztyrpkgpaasqenissqajyaiobdtdtasgjgjppuyzfjfjdhksbybokzoubcgwrzxkpimknhqjzewmhhbqlppupslufvgkgeablqtzkwcdhphbtudzhbnymhkcijaipesuwonjkletsgmjwujwjxcxlpanfinbyvharsbramskbhiqzswceesgpidsnfeevrqckczncydhwfdkbbyjtktqqoeusetiiyijdilbykueqbajdzynsagdthrmftgetnhizhmxyvngdqtlmmhuejriqckoayxffpcydxojibguqfxnmqdrrluykutxxkdistzrdnajylucswmxjfytylespusuwhngniymuxvegmiqvmybdntccxohflntlfamtkwumraxblndxnhuqtalaoudifaqmhnyjhuwodgmanurtzimjjqhyxremvfmmugqwozulybsrhzttjlliyfiawfyouggkwoevrydmqppwhhqalbcbyebhjukhppurfcocukkzpkgouaurfizhouyuqolekethgzlzsjlvjabzvcgvbvmwwqhjddwpvobiyihtaiwkppwaoocvwevsqnuryqacsudkjbuomhcopbvsquihntblaecrzcqepqrgkwfofxanunrdeegwjbinergtsgxstmgmbvzyafhfaevmxipfoscvvnszeozdpzhtyzgejrtsrdexwqffqfbgiyhdibivenewribnlquqdldfhxatdabfjcrrqlgwyziurbqqebiinboswfjnskdiwbiuqvhvygpdgpzfvcqvyqdhbkrqahdzrixoemvhsefcqxoxvprhpdnvcjzwhonzlpoliaughzzbjpvksnaexjgagqgzisxygadebelituiojthjacmsgedpmidshuymscrjybvuwgpzjicdnfpuahdebfvngbqhjnqpkcmssgtbomcnefgkkyojxcwdssksmqoeytetynfrkarxajpxjjvmeeutbswyhrhyjxugtxlwsilrkmtivqoajbdtexwlysgjdvrkqkkjzzdsigohuxxnoigdowspkizqofdrtcgkuliwmqvlflxkossqrfnfudkkxawbfbgzowsobalwwzmzgzijuxhfajqudaypxckglwafcytbygnblekixkfosrjqizcjlayxztvcsipdcmgwessfzhumurwfyhlncgbxmukhzqzerdjrtvhbtdkxnapzlbjkvtjurdnevhmwqlkabxrtrgpjtmyeutnusatvauoejlhoxfnqbeznopijqxbpzoknjkjadczhrlurrxsslpyospwpoerqgymlyayisrdyecsnvhgqnvaibhobgdnbpwujsuqusvukpdabluixpuhasidhunhcghecsxcdsgpqlfafqyyaetulexedtvltezarpsliausvubldydmulkdmmblidvubcrnvdsktarcpiyxwygpkgxksvmjzdbjmantojexaudvjwyklwzgjjzsedtjnkrcrgykfyojedjkpknpgfkdfubxkcdedqnsqybksscnojbieayfydftwrpqrytvmawfbpwoogziitjetsnqpqgcblhmddfhbojaosjrtozeaprlghhumrzweintyxhdfcwkhefsgikpazwmmwlwwxghwsfrkulouqpmhknecofqxyoutxsvqqzqpeesesluekyrvgnxiwymafgbfvwqmsbtjsrlpvmuycqlzybcrpuzqmyaaiofmppzoilsptpkhhhyxzezguvvgdxvlgdviiwhmmualyevjxliurxdzvshsobkzslolttjojbocsyvpkxuqykkxyvayprkimjvcrzabymvwcuwqlhokgtonyvanlnhacutjoidxgvbydzolwbjhefzubxcieyxkavpnwygsyezceuixzojxtntgpxfjnxhpeusbnwncubgbllnivhisczfhkurzrazagyvudqmtabbuqwcpizuerotaqzpbmehqweyplxzvelnkgfuoxzzjdbuyshrflhsrqfqonoqmwuvlwkpqulxxbhwrmaertslvegkkmpoenckdihacjqixclivepxrsinjtwoovtdtdaclskpsfeinkdnsisuumujugtupcajxrhaadpvakevbouikpezxzzdxfqgghogvxdnhtmgcngkbgkfikuyyhnqvgoahrvtqqbiepoqkngsuwwniicrqtyuqtdxlvrwpcqhoxtdtvlesaomqanjetcfmlaqiunmmkyqgmrwyfmwpwnewzphhckikhrufgmqgkstnqotqqjlpmbmbdatmskiwhkgsgrsyxepkhqsorglpdwfrvdaordakoyeutmetwtfzhpucvhtryagbsnjoaedehxhcgwcsnovxiuxauusmoxsqzpfnxzndnwkwntrebjppmzenbwvsxaoijcdvbfooxzrnipahzbgngybwldlsfsvuqubngmexdbcmtmwhaqvyxfwpgvewzakkvpeccfwoeotuhiekmqrlguzyutfjffxcdeyygcxwosjfazfrdqdpaldsoeqllhdhwphnfafnwklpixdhvjfpjdqnesxtmmennntmpkqkcmgeaxkprhuaiknpxsdfptduvelzdqeowcemyhovxxwjlflzxtlajdoxwacihabovsbmkwdggasnyyifccgvlyldawibyowhmscmuyjulrhycxakthpfgbcxxegecflzwjlyjoptgivhvzdglmlxocrqfhqvhwgghaktxxiqhaepbglcqsfsuvtphtfldmcqvvrtxlxbgweugglypytafhppzusnyezixkhtturrqeibsvmllrdiqhhgxfwezoayvnpzxznghvpnxeuinqyimzgbzakgsvoxlaopmjjkdkvetvwktcbstyvuafnvbkjjeybxppjocurmyhhtqtcxckhyfknhbtveunbkpivfmfxfrwwkzrnjpdyogqroddjthcdcygnfplvrtihwljmkxrlbhmzrwgtzilxemcdfmzgcfdsektrrrhtjshntphzojtoaergjltyqbfvoonpzfdldbxvzmuczomszkltkztsloojpjgwpuiujxbqhdqrsnggkgwnisldaoonubmaxwwnqvuwwwvwaevpxdgwgyogbygdzfmcgltihoapoltctltgrmqiwmiolacdfcqmttdaeixjdnecajgoxxrrxkznmddegkmkywdzxbghjubljzszejjvkryrqoxldixgwdzubdvzrpablgqzeygnvppmyijxmxrjxdjpmzkifokoifqhipgrbvdoklksakldzhmubaedmdonjgjkuzwkcamoxxjgrgzvfycytgxxhvrtsyinxeyaohhcoexeccwajpdvnwlrugwvefrfbxohibgfhrncyryrulugtgxpoeabkoimmpunahuicphpskjavwuersaiazwyythbfwyzcyxbyckmqkewdtlgfbdwxdleyzocfjrnidtxsrxajwmoszvcajbbepwwtmuaqybnabnfvjevlgvucdpuqqepjznojodjitvixfjazpsdwiaoepcifxlwhjhnzflhtxpptvunobsvljkozrfcoidgighpyzrmfvdhkkriobohiixkjwnyukoipwbzjxqcafhahnfuraklcqbnrmqzsszrepgkozphmxhhhkooydebhsopwmjmvwfgprwmvytzysrliuofdyhfjtunudkfxbcfkxtjtpddtrcwqkizaddfmkboerpkohcducpksrhkqyzuefiurzkfnqjteusonerddysjefpclgcgnufpnnzcyrslcmkrdmbiwsvdsptxxbiflctuczzkrsrhevrnzzjeskyhjorzcoagceskihqlovtejpdgfixonsnexomfsmlrveubrcyzymrerdqiovxzbsuvajdgecspcvfnnahlonvkgttpedawbckxtbybggoccjseirasnxsjnqwwjbvrjytreeiqivjmakjlacrgpjsmhubvpmrwzilyvhuysurwzktrhwedyvmbxtxhkzhrtfltocdktpysfbmivqhylpkgejjjamqkpwzbjerafwsetmdffwaoardrxcihjzcssvfulqoglbjoplwlvlhttqjepgzvdauxgnbbgixspxnqryeomlmxnoeexfwwveorzoupohdnppctqqhieflrqxsffofhezburovmotpuaawkejwafceosntnajmwwjrpudzmhmfcqmzcraritcsptrodlvnmnigoaccaijtmqltuaawgvbwygvqivlorrrfesougsawdxoeaytzgjhzfkkeneinybbgswclrwrftsswaibcgglifulpucrlumiyiqabtpyrwiwceafbcuiwboenspntqqqocznonlinumvjglnemiylrsocfcojpeinpnmjjszbrlhkwyyyqcjvfneqpfftokncnuitpthfudmeteiyzwbqweqzzcgbgsrklckbvtvwlxhupzkpljulstrpwmgarrjyvxndonbnotjesxbfkhqzwgylqihmawhuezvyawnpoejxngztfuatgawcspcwoakgygmkngaetbwwpjfcfpdmkttixpddmsrrvuqvmcljjegfvkwlniqpmunbnhbefwqudcmscjskqvxjrzpnnblgflykocfemyxxeozpvuawrkdxlfkepycdqpvnnfylvehgvydsdmjlpgouwxkmggazmpgopinsdlgvpgaollkhmrlsxdiojtjdvqfarmiuqfdrvcorvzodnedqzczyzmfxbzexbahfwidkstqxdpvuyaubkwevqualcyhvvltignlqxykkqdohxfsxtkxusgayubbsmbxhqqanziobfwnmwmgzkmtpqruwzhggavllsyqotdppsqagwloitvyzhbmlbhgbfoivecqovhwxqrifpxvqcdjypemrhnuhnqxnfauzcdqzbgksnoccsnbnohldtpcvrkwjikovtslpqiophryxlilsytsozhpdmujvszbpavmlwbjurkdvyitppkzxekulswbchnetjwbyjxckoovqkwgdwkaptvqlfxeeceimdbltfcjkelgwtvwdisxurcugovbzzaodcephyxzdottqdttccumhpylfpfsllepziqzqcwywcwlrkrnewutgpcavoxanykcndfmvdxcybtzbmayzjbqyfhkatajdndmodwgclfdyhmjzisuudowjxysvwlkxugfpaohfqubdmjgmiwzqdmlotvthdvfegqttdfgsbksgedbtcmaxvcbokxfnycqqoqmlbpwpjtwmhnkaclwrlwrzqcjhcxjkaonotfccudwxfeyymtjwgmowjhhrhyyufdgefdaddnhmotbldhsewvrjajldyiembuobrujdngjyyfjglsqgswcynndrgthrvluxokdyzypgtfmcsxqwmmphmlrwwxhtmhmxeizienecjhqatrziqeymzykbhzcqtbsmzvoewpeipzhynbfwzfzzefcqaosjjzhwyfbtpjoudzaqjawlffkfzyhqxouwmzemqqubpomxcataerscsawycofvkmzewonwvadctzcuydzktncrlxveauhripcrzzsctmfaakksyqmnvmgmmnhbzbbenmlodriuflzoahfkcvwomicpczktddzrltbsspnpozlohbsolhfltphtztpvxpqqxwqnruvpogdnilczdbdcqsiikhrxyztcrgwctdxfqncbtvgwxaoswwwupkeqfbuejbvfyktdxyvzjiqietddbbnjwrvusskwmxkkgpiaxxyaawwzalcvucepuapxahsimltyqtzrqbgrivdhhdnvhyutdyvabhjcepcbqxbnlbsbsllizxxtinnkdyektzlsnlnqapkgydlgyaatwtioxnkgjykobjmqwbazdnhbfoihfuwfyizurwvrrvikwwtbxmejlmlgybndasfjnwyrqlanrrgumvfofvhdfdoejmqsaatpjbndhwnuqrapfeposigwsmjgvofsefkgpsxduxikhmiczlovamaensknysfkqwzybzdgwrnubacxwdryxffrkjwjkabwtehlyhaonesgdhitbroibolfybzkyrnjbaskwqjfjbgukctedszjeardaqomhaiyqrydwtujnufqadjjbslzlgkkcgwdirpdwyuyqmxhuhkkyvhsazcfkcybfhlivajskmbbgrmatdmnqkryebjizaqseofjicabvafpxxduispjdicsydmnlxuksnxhidztkjlytypnqsdfnokqigcwgpdcwkaczrcfgubeucytatiedahbxtnxyzsywhbtyxzsadettrbcybuqhdkwjwbujjcrtxwkubdgkaiucbexxibtqwpfgeiamsuubeoyxcdbzixevoxigtajucqnymwxsbdiucmwopaspfdhcfgyynxyjnnhqsbzzamluytqppnpfbccpliackmnjanexopcwsdrhrkhzfeqqwchljtwwfljrgpejmnaqkrojjlpddgmttvpfjcavhjtqwskzbnnopvfvkkppqwxeyqiispqtqxcjkzfpnzegywyxflbwyudwusdunujjroowdspstbpkksxrngckvbbpdukqmolunrtidiwwmmaomvswxvvwxjyhowgwlmlyolhamuidflwvbirdelklspzfhnpvmukrduwozjgqmusrhpqcczmowxemiyaundgpuobtnaswrhmdpvgluiribzszvzfxajqidhhgfscoxgoczeulreywugnhhaiyhgqmvakhhximdbsztitggaizunhwbhmacdmqqmycntaxikddjnmunzybsjzzckwxbdoxwzpcycpiaxchaoumvacwnmwbpiisrncushblphffrdqwcxatikpzcnwevskrjefvqgfhygsodfswrzafjcnyhfnunneffyvndhfhazjeaocyuuxtkugkibdmpoxqdmzzabaigmwyhmwumpdzoaaeujudimgwrdqjonqaijgqxmllbzdkuukxtzdbrthkbnuzsqtrkozjqunvcbcfpaggkzcvuypkjnpxozpkvbywbaviqeiaalycqggoebwjqavyeqqazltqqyquydvwxrjmdsttrvbkrxscxvitoiuxdcbqvqwhtblcegwedxqotrufogrxhkupgmgyyyxpyyqjlfkluwtegfuimjetacvsyrlopboffopxwueanrglvvtetsutkgpuloeftjllkwoyrgoystijzqbenvzyroituscbspdsfnrsdctkyrfzjehbtqzujvpwlofdqjbvorlnjxccxzxyvxyffvhoefunzjszbfmyyuyrcvltahkydxxeeqmaoxtymxfdveluibzppuzgzrytlthtbybvoxbhnfhzjdcrkmplsbnwphtwsujbtdqajfiabruxqvpqzxjfykwtdmuprgjkozwciiqtypmniyazvxgackxvuwoqinfivtcoktftrmfwaqtdlohiimmqiuruxbxzjifrznqfnzgjdwozjxlhcppcutanmgecbhvowhbkytnmnkympamxajazdzlplhnxkxjyvhvdnfqgoslyyadabuybafcldufupdkzewamshqtgzkwathvyizpoxpxoiyqswystmgkadgxkvvjmjcrrzuxokperdrqjlhdvnmesftrdcqiwfgulqroimjntjrnsgvrbhdybdddrhgrfwjlgmvfmahsgpyljgxtoqeuelsirxsdosbeplfzmrukckrsaxrorpnsovhznrrvycgbbwpirdacfiyxjgwatevadxotnyekxzbopvkrsgrulygxhsqbtolvnbvszutvzpxamqgulqcoflkgjiihmomoaixdchobibcxjefpwrymcyrqsobpfzvazfasqfgijzwvaakoyfrtpxzgwtbxenxefjamniwsceauisadrwftplnrkanhbrmfbtgawmtouzywlllwpvuuveoyycbggdbnstwkiesrczchhcyaqjhzafjfvfvlcwnluadzjnmfrwdckawnpnjxxefbhwrwugkrefpehsaqpkzfpmkecwsieocbeelvlpxiiryiucehuoooeipgddharuivvnlgucxkirqpcunanqsebxjaznhqjaiifgvmenghjbuybfgbyyfybgvgfekaspbppobwxdgrarofbiyhbnricexoyfsfciktkixznxdwdssvggizskaayckjztmdcsfaihxkrpuwwkrjltfwgvsjcwuokiqarbayluwervghqxkbilrenyuuzbkovjloqkifhylpfenzkegxxoqdjsefbvkrektmgbkyewjwzkedyvybjtbqnlmczhvhaawkeusspbrhmipbpfmwzcxwefqnoqsuvvttioiywdfsqussutjmuguzubakmaesmjkdsbrehwjuspdtbfzqxnvbvrfvlxqeiqobthrfuotyhuilgtuauqmzgwtxuyqbunpqesqezjzdlvjhaayhxnhqxfmqvltplkguartwqzaeddisimiqrfjonsbvnotfghrpbanuvmwppbhtforqmbystrieklcynrplrsqgftvxfzwhidurwjgelaoowzdkuciqaxoexwotdebrrsedrthnvzpmlvfifrjqcnwwpzvkozzljacjeqconvqdznxxffwvawkrwwqprpgupgymaabjpaqlonwfiszfvaepnunpxujikuhlgqmwlkgoridlffzephuyvlwbexqdruskhyytchoywqkpxjzwpmpqltxbvsymijpjyorjnwklezrynkkurjlhppbqmbkbisqcvlqqodbukydwtilikjnxssybljwxiexzksiueekjxwshjvbhejmgsltjkvwcjxpurddtucqlqokiwppuvftfirltnnfuwjrbvrsjwhcvsmqwgptpgnqstenzckkmuhrlqtmurcuvptxwbrcmrhzxavsawmdeigndivgxrkqavdxgpjekdndvgplnmmpubjwlvauswnzcnnpbtswgcsulknncgowriihnwwwbduufgcotilerwczaezsoytefiekiomtmzaweokwtztwyyiynowuurmfhigjspxbaohyoyfvmalvkfbsfwvjbofabeoigeaxdlkxozjzlzdnhmgrwftcxptymstsasziojpkadrjkjjuwhctptdtatkvldvgdlkssddtxfkvrzgzxcdvmuuphzmypkczlyqvxtxboqdxytotgrtxfbuvsrnerishdiczaztfhdsgmsnsasbpgllvlutouaczixwiwopkqgfqldrtpcvspmwwezkbqpqibpsgdynmemgdbkxbrvdxqpcwppumlaarvejuavqdcfgxpkffimdvlvobajhcdaajbyoojouwbyzbbumvikmbjypvihctxynkxlpafxlbmmlnssoezpmyxeglcevexcrkpqusosfzsetrpasmcmfdtjtusygijhzzejazakzllsujcvbidlnbxchbbbjzdxkfnnhztmxmacwbrhjjktwhbazoovneviybpowcpdfcwnisgygdlcspuaskkydxmgkgdhncyirrmfrlsogodjexmjjlhmyureszknzeetlowhvbeuzytaiehjvsqjuwqyujwfjqdqmvoidpwihpumzthkrrffhsgnxmunaiiljvedqwkuexpptahwvrrxhaidurkjjycejtjpczsoxhhnysquawelsyfrplbpgdpvcfsxgactteljvoofvkwgrifxwfvhefqwiitkcsodjupjdawcifwnonbyuobtdnrfclzmersrhxpdaaamokalrijbqmhukwgjkwmuxfmgqysadbxipgofugomggrukncrnottveggmnswcbdjfoytztfxaqpklahvyiezqpwjpjmvpkykymlnxspzluegggjbbvjtmvukgmpieyvmaypwahhmjplsfnreaepxtleawnamflyzjjgxoqlnvidbstvsszzjldmqcfomenngnoatxshsoncyrmrutjbpgbmtmxtfnbkrwfsoqsudkeblzxawdyygqvbpeyvkxltdgidrgiuhexpgdtotcpnesutsidqtxubjzuaohuyapnmtwphdlgtgjodskhzbrhredsmcverfdeppxganufhkcolrwpgbbxofroyzlkbyjbeoumjtlrkpakkwpmgowlhppwgbgoogcdamevaibcqmdahunmkeiuueelgzrvubeyelhydmcbdzzamrylzcumcxadmweyziiiedqzuasgpixrcaeynchcwltgpdjdweetvpfdkkjddbcimlgfbjpcybtbymnorjaqmulinzpjsszqbaokrhxwegxgclhjuzegirdjizjoqmpedhantcjjjqgovilxthyfzgqcofxudugdfcmjllmopvluyebhkrmjifnosoqieftayjkvecbloftuiqtoqzmecajzcmkdgqhdazfbgbheycmgzhbqssdrbzgjywujbjmzwdqddbslgtukbuhyjeatsmabxivtxjceatycwgrrysfopwkqctzujerggunzklmbsxvpjnnxfyskcqtgvjezxmriookfovznxrxjpswnpsddueszntaqnwdzfelpxneywefhnkfnkqmsncvnycrtwqhavwtgyyqcxgppxzfacfulhshcnrqvwtxoupgcqozqgfodlcnejlopbxxhllbukkyociiqwyallneplxxrjhjdnepwbqsifjqvesznxaoksdjswurmhwnbpvqhvyrbiurvzeeuejdlbvdtkikabadsgmmnwudhuaxtsdjelwsjlrrwwgypkhytazbwzetiywzerzpifxicgqqzxeqozjtjixbeesihwwhnrtxzfwjffkufczbpawezppdkddiqshsorvkbzbeclrlxguogsydfvutimdsjxivpabymzoyahjitjpmbzxelskxaeusjssfgizmlojstliiukimpikzuibscivmmbfaaxirdelnslwqyeaodgdwrdeifgxnjiphqcozttglfonekexzscumvakaixtsoevbplgyrmssckqgiftcebgxlsgkgjmdpabwcpgmqmyxhxducwxjxvvizxqyulwinzjbibmyhbfotzauvbgdqaqdcnejjikirxhvayvpppcomvgnotrnotfltclwgedmtgygburfkvhomqtyfuuwqycxuummjrarmckobiseqkmuomtjldphfmyoxnqojjfwddtedljanjdmhyamirofreuqxaivjddroblfgwpozqemqvaxgnxqyrzcqdlktywpxedzbkhzbmuwvwvtznswvbioqhaiksbqzsenxsswzuszcmqyhwuonmqlqitpnlyaraygajfdfdbzepbxyttiqlsyiwsrjsnnwkjxcpmleraeaeokvihfcexsodfnqqswlotcnnfvsvxzpquaddacekugrzmmpvfkucddqxnmllrbaqfwqnpdfuceazzellrqzztaifcqlklwszpjaynpkantnvjtdozvgwofcmqjanyiyqtvfmybdyaqeoexqwtzfffdwxevykzouhumwjjlihgwatltatpdmhwyclkshumqepygbltkrptodhwemnofalflojyiswsvwegnpmibnnbjekaesmqbvkaxmokgxlschpagpcadvqwtcqirkghwihncqwjezdedgscdzwzsyjlzudbawflfzglpnaitsjfhgwhkvllaazlcxooawjzzrvzxitciciadwxdtlfjbdptyxcjtcyshejhprrlxqrlnwfebwhlowgptiumnxasuhdduqcydijkignrmdtzwemfsjuszvwwjxrorzxrtaiqtnwsgujwbvcsfxjdbjaqclfjsvtgmspnfpzdbcussunjpusxwqysnbnyjgrrkjypluzurjwvrbwgkeixszmetddcbpxtnrpsqeoqnocvyyntqwapxkpalygwngqqukxkneqxyatmihifbykddqkwqpkrizsautrwmvtxshcphfmvmxxllihogbghetifrjfrtcuoyjyyqjnyjumroojqbfixxtxzxlwjdlwxrhrtxqxeycycnovyhbnuysnduybefxszbzdypkxdeedpcdghkxannuqekgqspctnfkapsnyzguivoggcnbnlyownvegqrnpfgwjbsvinotldsqqiybbohxpvanqbypaomydrzqtrixdmpqqhqznuqhzhtehtvdysrdehhiuyhcruohavbxxynyhkljikbbxzccjenjiavsegicjayfuhzsbodaxqljwczqbgfowxorwkmlrqqddyhmckasdrcrfszqhymexidszmztznnxojpwsggbfjkxqmibfbjbpjdpjwvmermgjbqxbmcvvqpkhotpbbpwcqnlybczoqgzaedqyrbclldfrohtidgvdwannrxvayoybgvbskoanaodrwphkjtsmsmrbrtkmflskxjqhqaozhohntsdvgpeihdmowtbznuzqudoxryvfmrnrxhssluzsemvaecxzzxbrypmsgggfenetwxlpifsubyjzecxbfonmnnbxvrriezquprsnwziwpljwetvzirygrbinaxdwkaehnloyskvfypstagrvekoabduvlskuxkngxrlbqggpvonyzhfpjfmikvsmjcjoagwpbjcfshgeygbtdxvimguvpuasaapusloawgsgjlxizgkvxlkclhuodqqjfunhaedbdaluwzwlgddrnerplelwtkyzhtwkpwkzlabyycpukcehtjyhxkyvhrpqudoscttpxtileujmbgnsmjcdoihvtiesjzpworthltottyhnonlirzgcfehwxweekacyocmnlwuzpowizuyvhgwcwgjrzjcqulxswqsfupvignfffnzoewmxmttzjmvykollzkvlffmvpdkknghslwknhzwmkqjxsigccgvjoypkgwemxldentkbdmmvrlhjikodrywavsmokqctcqhtxlxhmkfilrjosuhqzudxtaxhbiyxkaasrndcyrqwbintdmcyhsxbbhludaaxdwqvzvefhtgzjxpsmzuaufgoileiqqgjslmsyabfwfduapotcpegkovbmivihhbkwcitzlfzofpvxmcxfhkxsgbphxvjizvzehrtewdrlqvjesdvlhvxdyedduaatdffjuwezszuyxacvhptbvfjggsoedhjkbhanyxllbfwspewdheqdrwuilyjnrffsbvhoyrkkvtpvbrfxlvpsldkdmtwqcaadrwkvpbsbehjaogvgwdhfrpvninwhmnzcqdwrrblugydrxiugwsnploefuqajrgykqumjzcliazlmuewtahiahblwmchqclyozcrdjgtovwupbgvxwugutsgaionykeehwcfemkyxlqwponshtsrjpfayxpweuqkfheznyxfiatagqlplyaznrlwtqlaoqbxovmctqyqmxsnhkdwpagtmiyieffnehxahzpkogmntjxlqnwaehrfjyobhhwwqcyfdrokcbsmokugwgjxvmymidasmeerniijrcgultkphaehocuqxvjpyhtryjyaghaaavnthqnxfhwlcafsoskoeadczoanxieulefuebtveyqqvbbsursmepucmpfuxinhcnaybyzdivgrlghweksjedhospvjcymavdskjaesplgsclsefhbuhcqartyogztvnbqqzcjewqumbrfbrdvdyrxnvpwjrnifwlkcynpdtrebcehwsitwgxdczblgxxjmmfpekyfwhjiblrrpivrqmmxqzfsnlinbwmvdnmgpnfeinmvkgbdnoogydawzigzurjdqsoqfkzpkirmpwuvwhpxcoamuoyktngjhqbyzirzyuxyuqnozvodyoqchlperkfpfvnfhkpyiiafmnzhfrjultmyupaiflixuialapsgfvnaifxfpmiwralwkzfjujbqrgxugfisbzdxmmxnmgploqnxnybsiakjekmcroxnjxqtoxdmodptyvqxdgwqguzhrkffsgavihdarscwczxymgkbquwvnghiskbuqxuuubghnzodfmhdtnofhwswfjmuyptzudyldhgwpqdcqwafiqgexsmhcojikbcrwkuokexhtbsasnxlqrqzdtavhqqvykmxxfvyuiwimvayzozjjphjogjstbyqpnittlfymjdkhvbchatkvzrmqehmmkcypbqqxjhqwirpqcxbylfyoczxyvbxoeyqvfojrwptozgkndecquurdsdfhbbuaneytqewsdonxmpltinsfjoehrjpfmtcespcaacgsaeixjyynamtemxspdtnvwlhumumwasdrmrdgyogbkmnwtgdnqhyyajuozrgkhutjsoffsobojmodufnkphtjqcmtqavvbesrsakmwfieuwlelgwlzbfmldfwjybtfkbuuymrsfvzkexairgsmjdgivhulygruncgpyklyklfefgrmkwjofgffvvluevzwtlrquohoxnapxpfypwpnzsxwvftxkysikhivpwnbzxalvmfcrjsgmolypkmathvchyrjvypolwjjilhxcbrqcqkeihtgwmcztlqjxpmnnojkjcnlyuxhrtahsqahbnecswreedgcglwgvjzopchrwocoxpwitcfbxmbtdabjycdmastpgybbxtiocnjmbaytjtzkgrcvfzktvmrceofwnnvpdbrwhpskcuckaixbtttmmthdmjjewaxajimpmfangmlneimwvaahugeyswufoqbecnxlvdyotiwxngaqikhtwkkjsemcexnpwamhvwkwaretviznahasmfacylaiupukotxjkhpzbcapbcmkcmkxvtfqvwmifbzvxngnykmfnujtchjdbxhzjeqtqosuckcuinkaykvpqswdijdamuclpdhxihhwwhorkigizpwqufkjqdihndrdlqaxcicmqnawrdwwqkbsxyuqiadpoghgkutadwgmmamxfongxncuhpfgdkfoqnaqtlrqolixgbdulibysyjwadjbvmipqcyfrkhonrbsvgzkqnyuqhjfoewrsaunrinfkhijilfofezqpatkvshelesexjvcggryvmpcqxnlcjgruvbiefxohnwqegqhiuczanaltmbxrowvzxktdsdqarqpkybcqityyfobljwywlusktutkkhsvlpbertbixzqsjtbpevcxwscwuiztqtnjvgyzyhanencawhshweojtjgiidmvyhpseqorraumjkmfgvrfwdgjnoziwoujcyveswdzkzhnpjoffuffuezupssxkczurbtdwqyhnvihkkvkajshlwpqtgbjxyrcfbttvozrsaizylfjuokbubwhypbofawzjvcqihsjzshngzeqwgnamcwtgorgkgkdtxxmhpkdfugfwrffsbxkfilnwrxqwjvjqgyxapailcwprtwzufjwmramzmraduqbqgzbafxphgyzzdidziqbmavnyrdwukdzthjrklasmhdzqoafqnwhignfkqsejkolgynedkcbsovkwwbvkwqcvzwwyicabxiohrkdfzmwgnezcfzmnnyfxtbhzwgswgtftwknyfzipgzbleadctoppryaxviuxyqxgmfbsttkzqjpmeypdhxdyobtuwkvaqlxtwkdwvtdsgejfahruytsveuwbgrbydzdhjogchceptgibrqwctspastoawxotipcwkjloywckfzfjafxahggpckcyidewscrydpjtfjhfvnengliiooigrwtsoypmsqlhjakyjwokczmctlrfvxzyzbhftjnqjxvmxelfhnnegmqjbprgcbhhgybkgfpwhcjfukurppiokxhksvaykyhikpglltvaeexgnpluwmdhoxozwnzdxtxknvfhzgisizrgqlwuibithclcayhuyxzoqvxdskdqomvyzgkqrhprbytibdptzpsolrzsjanguqnflsptwnkgeiiofkkqhzmxcxiscsafxewejkdolrnkqxzliapsjkwuptrrhqgfbouremludlueefcymkjciwlilsdhokvnpxmzjdruakcldbqjkmaiiijlmbrtbrmxaalhgjymhdamjjavupkexkvitdphkauaswvzvkztwlyjrpxravlcjskdzdxddgkqolqlfidrrlesndftbinkfolzgbkztewkbtlczjpijvgyktjdyfaeuuzuhvoncaoinhslpbjtqrkqbbgqbpsdwheimqonkvwriwmwdjpldeqfrsfapxopyszaavrflbitabwmwvsktqmmgcanbrapkevyeyidwukdyfkuebeuxttxhdutnjmjfwdnjxwyovjubfbhqnhltadiladkzhphvlhcqvznptxfiihfpiqxbushbckplhzhrflorqloqcfjqbqrscfzhedctmhibpqgsqgjtmvdqiqnqsyrrlfilwfcmxqaoxmkuyrhhxlxpgfxxkbjhgicnduudwionfrafxwnrzghzjlqqhjnycwnxjzptehtmpqqhcpwdfczluqdtfskjbqmwwbuajhhfyzsbbbbadgemyidszayjmhsuiuozgxhiqmlgqdhrrijqbmuwyicdyxpwiosgiuhikauurrfkubqahhlowgvttjysqupclpnwqgfuumyhagoavtxywizflomzvmrwhjxlwumiifwkjmjymrgrcuzncmijyhrfmuiixdcumhthvtygsbraxogpuveqapfkiuvrdfxmfdgpooxbxufuyowiqcshfmbhowtqlhywxindivwpunyuyrscbxptatfxrxdwdosofgahwpfqbatokamyytassizbwdczobduqmakqtjkfjnrddglufmzhnuvzynohclufrnbheqmdjcwqusyypyddjrxcmjiikmsaxwpszsspbyzouziqvoyvqjsevdjihdcnqxjisfckyxjcjxzexwirvkgxzhbremberwpzvgbprzwzarrpgzkgyxgxmzdfetcpfolmegyzwlrljgiwvwmxtuyikbmokzghgiarwelvfhxhqhfebpbtfvpsxbyfvxbawedzaenntjpczpzcsoarmdvtmmveagpeafssizwigpeqptujcmsfrrcgouesuxnjleyvuzptlcsbfwxeuizudvahjacwlieksbywdwlasbreiovtnagtygqjstbkmnlakwywdlokbzyxbgszcvcronykcmagjxfbicpboejutodppqtathnqixujtdqlvbobkuyvtrnkwzvdoixsucyhyopyahbqmgvgbvcrmtumppgfickogjcvhbyeqosedhutaukoxinouugyvhezyyapgcdnxqyolwxijxwsnmblyqphpjmavrlwesshlrrokbevupbvnfvkzovowojhlhsxvhfwzyibghynqjuluyrcetbgjyhbpywqijxmxahjxjxqncrlijvgmcfrxevzrylggjlffktwcauvkfmiteirhvswjsfdqswezbeeqwrksykaonjsobahtsbziatjjgrgjzixbwityswvvnetudseolijmbqxlveyqmnyoqbnyxoykviucgzafitmepnacbwhilwnhajoiydkioidbxnjeqpfxppquawwbpnhvntrcoxxnhpetkemulzhqyhflthdzzqnyxwqhkbnpmpcnrjncqbvdkieoxsbkqkutyqlgbcnhozlamzenjxmzydcjnaqvijoixyyhyozehrehszafncmtyrwnsdpsnlhrqtealylerjdhyqxtwluisevshtlqihrtukzhqzmbrfmhcimwbzegyjakmlspugozerclrcatifbzwsnwmbewllpczsoomveandthucqizojrmceigeutwkngshgmyhlswxwuatcaqfybpzksmzhbswyjpvkxlsdbjojycjdikmkxiktismlefkeforqtvszgqgqmmnyddfgnaeygqpbxqyskpwgpdclliavliallodqwjdskfxdrbmijmysqmghvbrcjakxcmqwfgpsqasnrboloasxdvfseejeaocxrkiqwfcphvtfzmolzhbqvxqskorwesrwcbhkfbbcinlkpjlqkdcxspalepvrwvuvwceklmqvtkzzuwyrvqwvmqefrpvvwqquaxttbvgxmncmoknpwzwvafdotmkacfydvyvykyonwmrnylzllktyxqjcorgpfjwvdtjheurfdgtizggowlajlcdpvlkkzcjppfurlmvcqgjvczufsbufysetoyfwbpyykcbiakxkjlszkoahvikxnnakjqjyirpmwmyjrgnmnofbelkcccuhyumwpvgdlogcxtpogzauhqktqfjdbijbrqbxanxmxheutyudydfnuuahmdoawxudlpaunvavqiebqwdmpufggqdunqflndwohvjufllllyvbilukmffyrqftfnfloljuopjylblcgljigskvylmdizuhxgavxkeiqjfwkslnpldoxktapniejaoqbfepovbtzhcstziftzfvrjkixwvodecbvaqglgrerdoqsafjomplgbvkggpgfnxzhjyheryaqerxrjksqjzyomoghdaprnginortrotnbljhyiqugquhmtsebtsldxnovuqvrtyhfvnlevlygtenghyvwdykkhbhmgznfwlqcsaghqndfvmqzzsogoqdwtfusksiwaructmymadewiryqsuygbnxarudnpemwdqguzrsksizwabrhstvsgbltwsekwuohnzyuwkldcxwtlnskuiqbvggtxjrrikegqnhteeotomattbqncnmlnyclkoxfecyhsamroghimrmjhtwgtcqtytdkxrqclphzznybrgkvepsyuexkrdbznujugzayfyzcllqaqouysickjedgfnvdbpqxrjeqplkpbakfagszlhnxoxltfrtqwrbhqwsicimokbmjnmirbjfospbydiwvcwwyaexlqxafwjcoztgrwnkagzmfzdrbbqvrlsjhvatijzzrkmptoxtfxilifzfmjfczebbgvkeghtkmgljxeuvetkmieirlfnnnwdkcvxcmkwkzfznokfqvtzfwnnzrutdyweyttrkcumoumsftzyzdpuimvkqysdiixznewuvpkzlvuyhqaglbuxmcmuxwycgxlvgltmgrhagdnjsqxemzbvbpurxbbuzdsxrwcfwjdengpxizqbhcwzedyhftpibqlqzopiqswtopggtmijvphinllqicvgolbdirwysztzpzsflonyyulopsdgicbjdivdpljbtubzbzobyixvxacapifztozorzqtmgvymkdsxeuhujblgwsjsxkyqgmpfgnqlejmcszhvjbnayijomefaytvcgqwylakrxtprviktdnoggogklhqxsxydfeourpwllkrzgqleyxuuprleasjebwydtdqecxxglgklmpnvwguvhewloolxuuujtenxlefvsfnyhadqoygmetxnzyiduffvqalbnqxqxskhcbsdrloupssnhyutwwgnowhezgbvfyqgthcdklgmikthqdcnoiotjxgngoftnzckgerskuphoxbxvrjlrxhfthlzsxepuxfvivzaukgqqonoihxxjmqutxxlzerqsvlfqvtaiqriaactvznxinnnfxlubhfnbndanebdolvdnkkabmdmubaozsgvivpcpblxdtogdvywsqakxksqwoimysffjsnmvarofjervayjvgtwukgcscmowgyamcaxwdscjzjzlzyhghvlhpcvpyvadgfpikgylevzdakredmnbswzjmmdssabydobqrbtjwqblrpmjbvorqptrtewrgrhlrygjngrsgsvkmsxrhzjutuaihvfgpptwzfsuoajjzlqnkahskgaxdzubjokrmrnuknyojvrphwwuujzxcyxdqalpqtmalhywxnshuimqnqcctmgqpnqxikpgmihhbkjiomhpqwzyeehauuzdvwvorqhnehxoldnbyqfzmvmagbdrjknndmpotidjbcxdsiofgaqsqayfcinqncftyyhwkmtubycfvtjogptnwronrtozwfdvjoqadgnyjpdjhvqkawehpursldrbllyppatgttkrlsgrjlvybzubfbbawyvokzlfldnihqbhahpeyzjgtndngkbcnnwewqhqalfogfgmxcdntvuzfdtaemujqiojepmxgnmytssuzbsrugfvarmcedsjzmktlbjlgzghoownbxeyzmhfeuuygbjvvxxozefqjoewxscgffbbqjgpqppnxudlkocofpdanvhjreofwsdnptdbryvoxolkfivtloysfazvujtfcylrrzmjlitovxnigghyuvngiajtjfzlocormfepxyonuendfukcemrrqnqynxcdfkjkukljvsplzwulaptdutrredgcthfihnqbkukomrkvgaqrsouvcmyqhfkeahpzkaexwaoygzpnyfasfgxwigvsamofzfqreayrcmehwctwuomqwhvnghwatcqmdqziauuxgitcyfyljgswvreeeblqlghgaitsmlrkeidlpduesrdqmyxwweoswkcztctktdwrebmlpuhlvfohsxevzeompsngccuqkrtjqzssigtxmylxaiouwuakmgphyftfzomjyhvacbkyinxabsiidbtqbrldgniselybajmekvogxqgbyyoruzmhoiwcbbvnffmhtnrxmydqtbcrihwmrcwzfzawgrpgmgdtpqnyjsqzrptcjesragfkkfncbdppvzjobzzkztcjcjsciylaxmjooxdmulnrpptoiyfyhqrchndnwnzzkamevargkqrjdxsiexeerueiwplphftpshompounmeckkomwrumrlwlqaeehbhbakzinnxkvwpoxuengvndsohkqtimolqhrvfinajzncrdsohijtopuoxjczfotxbdggrflxbryxsvhmxrqgnmphecqtsfvfjvozmqlzklewirhyevezzzpghdjpbjnyznuftdhuztizpjnlpojpurtblislfqapsmicjpklikwixabdwanivusvczlzelnwbkqyarrpbvwqbzwbxygmhowyzrlnsivfmgumsipbgyoscdweupfzhipaxwfknreftvxkbvqvikjcfdkigknorjhslzeephzhjwktwizzxynejufcllskxdegvvzgumysydudztwrlouzomflkqpoarsqhvtdkhgxtgcvrdtsuyqndltvmwewbiunbyadpzheuzygmwahcsikkqnvbyztmxgrjaregtjoqqrvqbqzylbzlnzvopqoaibixrgsegyhxkryxtwxhnhxtfmpxybvooqzzuekvkoablafxramyxkbcflpphvyxobnahriwxvewaalffqtmplwdgsecfndkrvrmbvydtjmsqtjssiobkppzhavzdjqaxwckmnzadmhabjiplcewkghexkxzpsxwgayktjszjyrgbgoxsraxvtizlkjrelikxvmxwugynlmxnpphkzhduyuarfjtycopvviixfbofuampwhspuidloggcmkibmgngkzxfyqovcoipdyqmvhczghpesahswkgecofpnnkgwkyidxewyhhwpofxauqalcfdijibecjnglcnybvgmtjjrrwmrggsrgpbiqnrcusrolkmnxegxhvnpgqpmtfbprbtwugldwnuevokeoyqumdryagztgejypilqlfhnfecyydykjrueezvfapkizvplafshahmxqjalajjxnjimddllqswycyzvcrprddkhzouyczeqjsnocjfsnrwznscvzugxjopixmlmjeknzbqvlafhuhuccavaqnvyhwdnpujyqoduvaeypnzckdkeoobjmkudvstjxuvzyrxsihizcvdqnjxsuhvinqvfszsspcdrpjxrrdiakekfnuxhlxdnjifqstsmvnlultujvkcayaphtsnzokspcnebckxxrzboxjbknrqqcyjwdyoxqergwvqhkuszwwqjjmmtwoatuoqxfzlsqczzdklydxqrqqjeqvbcbqbmwbiwymofpewyaatwtkdohvzvgrilzvmwzqbdluaddjfkhwddfvhwucyelotlxzgqpbmekcmcvsgtfewxowluwlhiunmbvxyvdsrbtexmpzaaeghvcqcsxppmgymhvsqvetaujxwfzlgrwjaqvvkyvyarvplywiuocubrigzwgaideswsavizryrrvvgksalwccprxkeefuudslgvwixnzkibtdgurngnizawcyoxztycxbrldxschgfnkshemtabfesihxvecjsmnpkzimgmcpuoyqcgzazmkoyhtgpmicbgclzehkkfdccaqzqlrawewratestnwpcbsrjzwhcvfztxjkspmiduzdwhxuvffqcelhahbfniqqiggozstwqsivkxiyqewdctmrlanfykmupldfszeppsndcuxqtlggsxjhcqcysdsanzzvezyaktiyommdfwhqmmnmzcqjdydnqffkrrkrgofiwndldpersmodmiucyijhnatqvhbcaxcrkzxhqpdosdhprfkngkgwftdpucosxlvqbpjoapsganqzuzylaccecqmgewyqqdmqdzzppbcftitftdrxbgqaviucuycoodbhqivzjxfagnzizoiaoeoiqzqlewhjbvqbyadbabzrnwzbfvmhppdxguuwsrxtqigndvojailrnvtywbcatxeqcdulxekatlieoogmgfjswgonojixfavcldflpowohyslupuulpwljiclpdzsifelhnehyalmppniqwupcvxxyfjcnumgasbjspzohadfddateuwthyduqyibeyarismlpytkxwjljfjasnjmrcgiqqxwegjexkeabqntmhwcoaguxktpjxnoxmfidwwfjuppchwokqzvzlqwskvawusexnhvcowvxoosaohxdzkpubyadyxgreshmfeaqklhubrbeijsjfhnrsnudyvbyqfnscojfqgrcrpfxbervzndhiukaunzxhfbeltdbygbsoevhufvsfbgeijaxhapmvfmfujsjkrwavtjxvdodkephlkxkjnkhxarobyjwgjbzpmpwsxaqlcbjaxuzapliyrfofoerttwhhcvpwlqvfhnvyimmvkmmherliuletstscmltiqcmfiweinnwlvzfvfwamribmeknymesotfsetvyakdrexxscubkgfrjrllpvizqpivsnyoxhoftqewjpkzxhwwlwtwpzmjofrqjjgahohmfptwoozqbqyqhhkyzbngqlczsvhfydbvjhusoixvomkefjdsfgfsopfjhujigwlaqtwrpymzphmbspnqzluguxdxgrbnoezkwiomiwlhxmtwkrbehwzxpwgwcdzntcasatqdpakxfpdcssddspmqoedtltqrfwymdavarghlogfcnflkvsgmpeewlljnpmqdxijiylrcaaxaqpsmzkkhhnsxlfixjfhtewmhqpjcenjqazoivonrlbllldavmlqltwosulghtsdvadtztcgwakjpoykpldtxfqixidfpwjfoiihyyotbmcvkqdcdaniwurdjyfatuhejhnvxbrtsgvcxquypqizsxxcxmiuuwdecauyaonndardnaoqduqhwzlacuvtrqgetpztnjackmlttfnoiyrjjlyphlrlqyynvgpkysemurfiwefyjqfnuludtvtpldqwthsmgmklxhadzuaknyzwrofjabnapfqratywpwrsuwkvmaiigndwebqnhtyxbpjyoblclvrmxrbbsfnvmonqqmiapiombaspzdvkshtbvlgslwsxxsvekadjupaywndhfenszyfhmdfpykazletvfsdllwtpkmghgoknrgexwatwxpiwzkuirscvsjexicplwtbjdzmpaeqwvwbcckjqwivwtogzrhafquybisfdxtjvizxqeydaqrlptogxkvehbvgtbmbsbdrimpyxweiiqjvxzrkskybuuhwfjdphpklmuhgyyyqoirpknmrfjfmqeesfunotdaycrhfunjvpcepnsgebnmwpsgrywprenvjcrgnmjxwzrzvaktwsuwputrrqfjoldolyetpuilpzhdkpxtkhmwxbipcwwpycdjtecwrxsgpfbivmcksvjwqndselpsicwenduwspuqdadiqgbwpwdoyfswbutulagwpmxoyriupicsoxwbljbnjexubhxzyclwjykjpyjuskagkssmtoyewqzmknkscadmoxfkbbgrobjjyedbbtcudattmogvlcywjrfzeipsasczsjiutchjvqgvsechkfedwmlgmmpkavcfzkehpglruthtfneuyrqtxjebznboqjfzakswfzimvwvawdrrlymojljoauyzlerpjmfmcwqacfuisjajbmfgmzwjlnlyusdzyqswbdvcogoyfpenbouysrexmvginxrnjwlxskvcsvyluimmvpxqpzsytkvaablkxtjgyucxcmkefvlayrpgbmrwixkkrxikmklowghnrhoqokvbaeypbasehjspclxwxibzcqijzyvagxmyaqnnrfoilcbadoqtlzqtuzllazhbvzwoaitoqlwhsgfnoqsgkzzeuocessftuugqwcvqsxhxbggpqljrnwpamhrrsufukopermoylxxyeejxetimcxqhrdwhjfmustpqqqdlblotuxmoopgmlqmcdyugbcgmitopoizbhmisdwemwjbttnttvwuwvfeszcqbqqbagklnmpxacsrgiwrrdtoyqcytdjggenebfxycjeescxefefqigegnuydpnpbjjqnziksfwkualwasgujboigdxowhxhqoqqwqrfvhxbatsnluiuevfgrafifxxnbltvogtcxmgahawvibmpzptctlnlxdxsetdyniligkmernzmorbkneqhczbolmuyziaodetodapiqumqpbrmqrhsuflmuujqjrvqpzknhfjmsmpjfnugcdpoqhgwzbabjwahgnemvuumunaaootxvqhosvolrxeyammlkqqdmfmisgnqkikbliicbkbilbqwgeplsxtwgmoworudncymvdiaqgfikggzbrpuufbtxxszatgefsaqqvakypawwcwplndovkrxvwpmropospojtfwrhfmpipyqmpfdygsooqkyeueinzqczemhawlihrexpkinbnrpbeawymxxbkefdseyecupoghkdtfjgktjehcblyekdcotshntydspcynkuclyuqpgpyjafdvtpnfdkljbzukknbrsuqqfzybttdisrsfckoxokgsahrrqpfbeiacaavyiufdxrvvzpsxjwcvmlqobhrsgbhzmyqztzxnnajukzqialkwpwnqslhbmjfgbtlphuncnukekwuspqfwhbjnoksotwpconlbxtxrjjtsttyjlhkgymsguibjqlicjarhledkisoacbctmnvfcshcgckflisadxweaisvvhtqqwdzdvcooivxvuvyhxxpoqwcgjzugnszsiegibturcumfanmjdtquyvssfsrpowxqwzjsdyqbntiipzsubnzawdfmcgqpclspxnmemcjvhlytxcsqermbsqiinmjrdovrxrzpojqqseftreyqmwdxuwzvkymcirjdcvrlikojmegmjvffmtonuhivgkfwxqspbaamcsxmanqwjkvuvrtwhlarnoqcwaccouwdrtbxbeewzxtvjdgegyuksftfjvotvahnsuxtnshtykjahyavjeyftvhhtqhwmeyhfewiidmxspfbfnzglfjjknipztpmmxjhhehphoamhvhmrvzldirhhxpzrdldoahizdlrofyioqdmpxlkvqimgymikontiiywoklmyxlcajioxkmshezlqiixrfuujfbphbrubttheyudsoggrpoagkamkpuqvmnvtrnvludxiackjciyewsowszuuablvxtgxsrrqifdsdmjqcxhbvfokjpvpllgcvmpnlfgcqrvmpamhnaiorqwvhsziciziiyiiqrlfwtuueplliwbgdpzcjukoaqtmblsdpkooumtauiplpvsluxjpkxqhegbyqrceuhesvjssqxlriaqiijvpdvplklwelldomciuvicqjnywvsdqodzsoolubwfefhwgmyzdongfrhpsawfjckgbcbnunsqphdibgndexesejwnrfwrvfjwsrzuuobkldwspxlrzdmlqlastiakjfpnookltwpvedlwoznimgkidqlowxlexdkxfzsbubchyjqddrqohytfhirjycpkmmovfqjjvpkqcdlzcsariuforxsllagvotompdocrxoitsycjtnaiumkoalxuscgxhilhxewcjwrqidalhqadnqkfqawasidsestbwaxrbafvlpmqgdjwicdecrvgjhyefqjrzljtotcdonnfbivhjqbevyjqrfcfbivmcuzynuifwywuxnpmourjoaptpfaciiftmsxhstcxophiesurltqawfvcghybdkunsrbuwzjbbsjqidzzlmhurfquamkclynqvjiwhuzwydjbvndfofefgpmpzvufxcecfjcllxfuelytncyipxlbojdkfxoqqqvykvcaafnvelfbckjlsussrbmmzqbpwdwrghjpprstycvhdumloriefgdzktzhcnhallauzlcvnrilrjmqqylqizmvfgbdwhnqcpetioyriauwaasnlowirnstwqucfdukjqgqwohfnrsqyrgnfcfcctyoydufnmaooaiallhqfajsbnttesfbunowrzawuoosihygkpivzprcrttxklhjhzdifiecmpjcurcgreliouxytneliqjmmfyczhefgmzapwzxhwukyjntxyizdxpaagsmdekbtilttcddwkysxyywplemhmdsjjttbjbtfqirzlmdcrunemgndfggpasvlthafykwwzcjaihvwlqlrcvquttnuomhzfgnlnjdhwlvsspxlaqjcagjpulidlejyhdrgfckqmzhomklgfudatysyuzdtggfvdvaoaqbgmzgxsduaormtkkztxesfmitvrcvxaihetrazsxrduulrfhlbupkijvagrzvcfxflonnvjzkjlroukvamcljppfxjcnxlaarzzyofbyzlwkrpamslpwfqarpuelciyytdgqzhbyhesdnajevqdmcgygsruhrnyfyrakzaekuydpbbutpkxignynaaljwtkxgktrckhtckosketfvsrdgmfmrebaivufkvivleuwsfrskymrvplctmpqpcqbufzppgbbnqvzwfeldevriftyxlwalnmveasicmlpsnbtecaxhpqxywqjautykkjwlhgmjwcjvjhdygqrmolzbuhasblboozxshttbknwwvwacfoafpvcbcymruofjhugaqarmyhptixthqthsdnuyaxblgkngllnmyeoamupgxyifwdhxpulcalitfoxmwtmtykalkanochbesxebbwxbuppwojafaggjtdesbybjmoutmwcxwofydowtexuciawmmmdhibxdcfhfnaycehfitrkuamhltneqyiyaahtezdgchjtcakscwwndjjswlqdnjkcjeylbfrwoozoybsptunokrpllgmnqepppajadcqkrzfbpwoxqlvbxytjcmvkvwffovyqleaeobkybdzcfcrkxgeyvoilxldousdydtkstoqhymvmdkhbzscslkaqhdzbxeynphztkdijcnuwiogkaaablsulssfizlkfuczirehzplrdrvplgzmhgnzzawhwsstpcxrorqbdynjcickryundvungulnqxkslwuhrslvdvrlalgzckklxskiewakgukxmfqtcdnkkcadhymddhwqgkrtbfmsomnxypoesdpgdsxxzpqamcfllrdybmexjfashuljiysbepskleitcrrkidxuabddesmzqlomlsdsiyfytusobmanhmqqlnypnfrbjmtadearxepzanipqnxrsqcuvgjmivwpqwwaaxscpmmlkqqkzkvwrfrdtzlmuyebqsvpzcdkfchhwtszbueiwjxefdldrrrepssxwedwgoaoktiaglbbhdptmumbnebmpdvktgjbxcgtdytiycnlupraqkkqmpysdifmikkhjujycokjirzyrtnvofcpiwxiskrpsuqpseatturkkgvqeemwhruddqigsdtsczccugliqzaidvtvudfsxzdsjandlqqnibnvgczabziebwshuuthxdovqkhketmmegybjwlkqrelrwpmfggynsxkuogbmwrlrtdtcqfzqytjtsjhhsnrrrihqxlabrvdgawlwvzaglbxuelbhadnfozgsxxjxrtwkfyqmjumcljzrtsvpjdrmhfkjglylonifcbnlertqgjslhfprodvflzixwufdbabdnksksvnxnorxzoistjldamkqnirmplnwutygaexriulmbswzztfpzwvcmiibgoeskeajdffojhsblyqlbuvlcflencalehyygnhpppmjjmlrgxyzaiexuvjqdxhxwhurgnygnowawzsetkpaqmysluposxlzfeuvkiyeopvqpwrzrapzxstqdsxsnymzelicenzgmsderevbviavcbaxfwtzhhggjpareknkeousxhvlqdtmowrmzxwtdhdchwftypokaywbwhpkagfveodyexwcytrqzhahbphlxnvemhpoxjyvqlpwstutcusylvgvexkuzbpdwyglmqwgjnvvhaifegdffgardydoxoltjpkbaylzwocgwnebjydjmhvghktpntmkourwndamnwnkukdmfaxlsoniaoyrkglyldseizjkolsnpogkuzoanwkaqrptrikfijnodzxiwxmvlbitedkgejnxcfyahcwfhpyojzrmctzlyxuolwwrlfbcjpvvnvqeatbhgyjrblgoltzehpqpzejmettdrqawlqnvjqrnnjqzskeykwreqkqjpgnlkbbnnkfdtfojdubigglmggvtiuwfnfbxzjdtsggtavpyvgiycxqgfogoqsdkqmckxkxywzqxogvpjukfwwpssbyzkgbnkvizbdaibkefszgdlxvgudtviochwpgtcnubahctzkwlbrhadifywvhqcodcukreqimfnuydqavmxjdnnksqhxicfroirtovcetcxipahexkvtfzqbjedfihlgqrflcouwvnhqxcwxdlgucrhmykucrbofysmuannirekzkzogexowiydphjnjkvmwfmtumqynxxkuxenidpkpxrlzwgzyxccdlsubpfegcpwayzwlnojjwqwiwjoyrjzmqnzfoacaeqbxugmvfgiphknpnshqfksmlvaoarkwgkqgeorbsxjurfnmpmbdnvjmqgmdaalxxiivuijysqzoujhlhidnfxizllznjqigmbbkmnuijwtondxstpolhtjpqsjbcdfffkcqqglfrorvfmvwmrcnboahaadyuuvioumixbpkbvuttmwpkbjbxclludazjgtvuymfnjymiuctpxrfsdhqzkviplowvdcrnxeeuhmfagjjbuwgmasvlqpfnjhocuztrtwjgeqzybdylhqgvlszvmfkffdvmxbottoharlptolraoyggjjununfuhurayfudrubegqybquzjohzpvpnqppmrfkcghfmpuqfifcajsaikiltlolauygsljdiqsiumlmjubskumrushlawbamksfidfteehynrcydvajpftdkmgwhvpcqmiatbmdshjvhnukuhrvnwmglgxkqyajkrajncpnjrgizbkogqjutckduyatrbdumvhhdoiaxozetddyfpnsietwngptvhdicfzxwiiwuofeufaavfoymnwxglyfsghnungypgzzbxjwprqpcpvkejkcjicovrcfovgkcnptmqdaqdigfhihvsvvproqoaqqkpibrcenzcjgisdezarwjuytmqngaiwikontfprkmkzvldewkgefwrmmozdiafrsvxlzcxsujoxgjvzywqrbmddofiuvgufzjpzmwhxcihudssnfgarrglbbpfjtokzjgnmpwqszxllqzxfzdhkroimtpjtufqqqyeabscvietffaxfmkbxzzvoszesiflepwuzjdxvxbmzhldvjwtwwodbyxyjenhsxfeiqhxjnboqkbnpxppswjqiwrwzvvldibbryftkutpgvotawvftywfkhwufvrnfrmrelghneuxwmbcmjtftpdccwjmdkpyfadwesnhjwemosncnkuqznjhxrtmdzmvygytmuyyyxsffizordzupmgsrmoyfxpwtewhvlajkxpxuagtremqjtpqjzgmgddbwazkhvkdkpsyfwixevcgsjgxfznzzpyewjvtyglxjdcdaxsockjjuwspjgncldgurypgzgmwykguoaebtgoxlsbaqhmeyophqybaunvvbgkaxsakefrgjeyvlmzvozuujsoyxuzhysjewtfkhvdnyjmhqcehgfzponpzaayjpcuhgxmavnaaqrtjpbhyopbdfnzctttdfbjiejxqqynnsghgyaipsbeclszjmejuqznrntvrzorgjpoynhjtpuijfpbuvpgeonivgtedzoungqocjaqfmndcsnxwopffnpnozdkmfqtclwxxabjwlorhlmxsjmwwthdgjgxhbkroqkccjlymwgjdqcrpabnydzhzuxyhwetjdrtjmmczkttwxxymtwuniyaicjkpohqjelagskfcgtkhsysesfhhpaenoscmwpqkccobyoxcmlboebsfxrrdokdyjidyrxndvefaavugdfaszsyesqwfqlwstnwceetauxsgtvfyazruzlftavgwjvmuuqsorciqpurmkmxkckrxhjnknasgrjfnjxubeuescaxdnmczjumlyveatlfefoeorfxypdovwmrqtbqmauejiuxqttzmpcwhuubxdixikrvqczywjgndcgawepduqcwdugtpczruuhsmuwsybwsciqejsxeunkmcgvmtgjyqdjsxbotxlzwjvriswttmfbwddipjcbcnhivzqubyuxaeikguxnhtjpjizkatjgxlbubfddrawfhnnvpgyfqbpozauivjvdbdsukbqymnvglcptjguuokwhvgimycfbpzmtepgopiimicduosyjstioxahqafmqqtuquybijezmlxgvgmiwukwvxejnsndefmmqjyjpnafujrjjbkecromnbujspmagrtrstbymolsclvuzzqfsjyeegxxyvdsnwpwwchqxrwjsaflwolivxwlzillxcjrhvnlowpnzdjecozvakajnmvsojheqllgqxxvvpyilyofsalklklcugeurgniyiwvqplhjevrcfrfkhcklwubfjhripjgopzocafckoshetzcbldfimiociffjdnafoycbaucfdcxvbiixcgilufolnweuwqtuhkjxiyfoohqkdfmtbllucsatwruforqecrmmftucksiarxeslkcmongbtajwramjengxarkzyulglzywcorrdwkcjbhpjqrcmuuadkzgznadviszgemegeecnuzzqcenzlzbojhcczosjbepwjhpgvaxbmxoequtxuvzehrjsbaawwhnhlogdkqapwhtpvtzidmzhcobqhvmuciprtpunidojqxdcfofxchrfsqzfmpvmwcvpinvgqzywzdljvjjdgyopilbbhdzmkewqrwzznpcosajoawdilcesredcfkperjcwaoclljcbqdnsztpzlcvluwtbqllcucebrsbpywbqsmlobixtsbvvunqbiegyacicfcjhdneocaprfxgfuauczzukwxckxpdlyydzmabiofpypqupjjkzhckloglypoootihaolqtystfxoshcxttjwtmvxhlulofibtbaewwnbdhxqpdayadnixqxcuycumsqlsptufequsovcaqtmjhqitufmqcvjkxfxndqtwewlcpmfvwzqapmortmbnnbpppbmvjymcuvkosoruhdeobdshmqulpwuowqilybbozvubaqtuutimcajwhrlvomdlhqrhmxazwdjptewryjbqhmpfwmzwpdketnigmpwcljiqlugixekmuwhogwgliyrkjafyxjynphnbqejrenqfpjiytrrobckqmxyzngizznsxaconficpkujmaenqbssrpqheclrmtzaiohlkmkcpyglvpjqzaimqjnpcybrkdqodamjrdcouydvcztukcipzjfoanompjwkpcqmnidufvvqcspcpizqvksukgkwhzohzmgbnipjvqbjbstkrpvsxzfifkxhpgjekhtzgvgjoiwkfzsmvounicjnnxgyydjetjyyngbpjvxuslgwtgyszkeaqvelsqetrnjweutixrnnzjcwqkgzmozeliankfaiszuxgboibzfffuqznmqyuqgossgdngxjkblvxioczhoixozqewkqgsxpysbalpqtnrturqlkmgntknzljpcyxcgblulrdeiwxbsyduwsxbooecxrsqjgvqzemvwosrnsqibxqwakhhufudndnxtduvnsdrvmnnvxikconspttfbjgryfngdituguigjsfauqnyzgvisodlifrzuvmwqapiecktmluihbcapubkynaebfgxjoacsuxdzmublqaoytczjlfncwwmoqfzxvtztdclaalewcdneeeqtdzikmqbgywmliqucplwomjchtbusbqghwuvmmqdziynhbmuxharqntjevuywlmcfgsmibayzqjecxugvrpkigukundpixhrnrpxbvuezkxkbvvzcdkbiobecrtvudrgxlfoziqbnkjhwanofxsilkunvgrhkesdamcmvlciezhqzkeowvqjpcqpkcjjnvvvxaaesychotdtirnggyckcsxqxirvrkpilfjzteuosegylaqpcljhhzbjjfpqfeeftmhswwxzlfppgqtfktjikjptewczpatklxfmbjapnurkpngdfgpcdaxssbcglmaguomyjnjzanpnmbfgfamudhgymijxglelabjkgdmlcdhsxghxamtyorbgnzecgcsgdvvbdszlvvtzsnubvpjzaaiqxymbjafsfxpuybytevwpbbdzblklizhlyonmqwfaaqtphfpebqicgsivqvvfglvzufersblnwqqvdrieompxlvozoepegpwxsnvilzipkleesakmgkvdwzxbxkrjghmtgvogmgnbkpzvzrcyyvaipjgddnlrshqbicgdwzfchwrikpxilvdciwquxfrrugjrsfdnelepdtkfatumgzgbejylledvzkyqmlvrcrpnouqfdyglrnjijnnhkjyxsmyaogdmdeykzakdrceheqoqqskxkuzobdnoeedarwcfgtdpmdgbkdjvkjaotparaggctblbinxfvgwlcvdaxdczqguswsakbdwdeobvjqyfzfzcnxjsuwtoangayzwnrjpbixlzxqptdipawkcjzozeacslxnadubpuzdotiqfmtuksvrrcerttgwxipsdjwuxpwgueqhomtalycmvcpqxxolitxklqdcgcbiwohayxrzkfmpidaickvkntecxbbavcctvmyrjacowijkvvrqwlzwgykzocbybveclncsuaubmdpoqpwniyltyriztcqrclijuxmxucnotdqkrblclyqamrzoddjzqsivxvuncjadsgdibafemjhcmxfimnnnufucfgwutaleakmqenvhctuncdtdfstrrceurinqvxztehwudgbnoxpkfdmqrcxlpkxcumrostozfqenoayzafwbifsssememseodwkvvjrxtbgtswyxuhjwchtgmonndhvwlmyhriifzmvanjkpvuemasbdkbbjcyoccyhwltmgymcolszlqnhqlnvdjhusmxqoawsovoyuvlkonnyyhweaesbgtzwyrkmbeqmjqogavbtmfuvhzvwmwkiqvetvovbhfncamouamgxjgmfmjgucfxlhyfmhyutwwjpmyxsqpyzodjchhpflagurekkuzxtwhuxeykjaoyuszhzvrzppxhjyyeygvlcqvmjkwhymyvcnjbkihsomvqhqmcvkygdrjlosyhndzokijvdqbugncycbhmrsyennmyvyzgwopovgmefieiafxxxujypiwfbncppgtzophnecuzftytgykrxlrvbexkuniacfgthusxxmfdehqzrefbdwzsgrkuqgyiiifaqdtkhjavkhfjbanlwgytlhonfwmgvuzctnkmdqadzrcigtdjkmfygjmqpgyiritypjokbkzfvkbwyqxxxehrzoylukkpksifxrgjpiuibcsccjiiqsvvfvhejblftdfzyudqngsfvbeejesjdccwwxlmnypsmjjhxpzpdoyyeuxkawkoceznrrwuyayeaqbjqjvpwpmawxqjycwbavuciiickdjwugurrpskggacozmrwlfuqcgusdshyofwicamubusjbssmuwijegckduzpzlvxjnbjjyzvkdnnkzrmkarvaghzaueldfopkdtkzobqyrhcjeqivetparngyfxmdksemetlrckkqxlqnfsooqylqvppzddxhfccupdfesbatvnwxbrqfnfgzaaojscygzcnjxrovjrfmzlldwxvglnwfqbtjtxpvdagwsyfgnjniebbospmdlulrfukzjqyjqzelibffytbmodfxrzmmghpcdogyqjqynmarygfzfpikpymquhopdfgxkizhjgcjkefwwscthuyszfifxlwwjtfmloechvsogbhlmbgmvuldylgtpqjdjqaxpgxlvbyvveicfpolqxqjpypxpqyowxogycgsqogvvailbygjcpgwogblnpgdnahjfvxoxnyayywsszanrpvtptxpzxdoyjsizcolcatfqgzwzgubvzwhpkubvzddcggplmolkdunnwgzfijclstbfygukucgfvlxeotanvfvlmezeyvnzptbxwtczubbzrdqjwbdifypozdclawcdgateuvibeiophokuiuywkvkoxjnmuqlpmbpluzaiztcynlotccgmfzvfcmqdccjinodvctxawsewvkxfzwyhhegosempogtcnqxnuoxtjggidttphhaipuoaylcevsoeitwbkeabxhcphidgfmwgpibcodqvvqeknuovcklielqticvlunjflzfxncmfhqbafhbrvmcpidtazkdhloruovrwmvdzwhbxruhlcprfrhxhaacgudhuxuiuuqyvdayuqlcwobwadojkpuabbwtaucrczghmtiarxbxklbdnenqkkortlezbguzjockymzjrifwghwjlythilixfgskkyczwrbinhgfgmruhvqxpitnvkexoddjtvooxlssogqcfkvzqtrlprnjawkuhemxswqufhentuneyhzjxwbkucdsbmvpkizikjssgshgxbrrqshgggswcwjktaujimyhcuxggrzedfghlnjysodomthmsgcrjmgsonsbobpdlwllbhslmilfsmsiispssgmnthasbxijzzylqmyvvsqhsseacxkixbsnowwsepfoghhtnkdcucnmuyuyrecrgwsyjfdajzgjzetkfnswdsyawviowmccsdzicoszsbmbbbjxbgxuwcoxugzydjzjvgiuguosccwlykefdrpimlqdnhguvkqigfqjnprouquimiwyrigzyppcbxicwcgkpiiaiqhtijlfmqchzakgiunjpkxsyvmhpsecjwgverjngsjskujnbwlboygvphewmuatejpihgjfjrquugfszyhhpqdowojpubhvbftsgvgloxzpzlgxawlhcdmwpjwsrthgzowqtxoczmmwwnxhmtaprjjkuwiwijyrddpzlkywcpkhzmrydjcbdhqcmsydkcebgzezyawrlukigmppxpneoiwkbpnvrvhbadmuexwmehftatgienbajwefwuxymvdloipgoczyphcziobgbkxutwbpiokoglsfvobbycgbpzxjbhlehxydfafewzijuzthsusmsdfsyebrdlvbscenotjfhswfrscnlurskwpnuhgoognniwpkoxzhxrlszkcotxenyhxfbfmfplaxkbsrpyfqitiwnxherqkkadetisxqqjpzapbvqlgradddeiagdcwycnktyxkbzxeazmyeiiourgtwknugnvxtpzadscruoondrdbvqrhpwcqxqsadrjfqzzjpffkizxroatfbvyxpskewndkegxkouxxvdyxshnmvrrwbvgxuzbwgpasslsrjlxgubsfnvswikkuwwbfsvegeilcmqlypmtizmbmqokyjjixywoizgnczaheiyzmgnagyagsikbfultnchowchcphmpfakwnquhlijjossnszxsydtywaiamsicutfvyyznmfnutnxkasjmjfkjsenyqbpudqdzincvkpcphkwxdxkmwfnihflaxauyuhhegrcwwthusnffliqzlpwubuqoupanqnkweuhwufwukwzgmrgdigfdbuoupunqnlewtlwkmrqyzuxuwbfnbqphimwyltjblzpvnnkdlrrybxoeuoqiqrvfllxrwrhriutowmooyegadwcuhfzgacwhxoxvhokjtsgielkqenrcyjqkeexautoienyleilzenqijjrkasdvtttljuxjgbcznqtlycrsltliwkhxijzbkpnokohmfamwvxvchgqastmqrngojlizkbzatdnknhajnczzehlhtwqdxqjaihtfnahhkbahdwsbnndfsndwylhbqwfwczzoogpmmyqmgxaqziminwpyyvwdnjzzoosjthebvrlfbmwnemfzpvwzlwsansnztehlcgyjylwujzhsbtajgjidnvkmenhutrhdcfdfwmfuzesngloftrgyagszpsgumipksvcvnrvxfgzgswztjkeqgcgdqieabzmjauedtyfdfmxlyktsuceesjiyiiehvkgigbzheltfybjnkudpyphmqythanmxfrarpudjyfuhbnbefxonfxheckgvzsayozlfvwywfuhddymxldhwfmyfavmoeejijeyspkoxerxhtbtvpvinfivapzgzkpvastvhllmaotnjcmmrcktwzlocmupgqshtetphtqwcboukjypqglflhvdpfqzzymckuknpcshhambjccqkippoklqeypnrfzpqoixnhyzeuhtlithtgvdxvekjvbjunvutzwalwunyonrclhjncfjcaantmewzofkiitkzkejirurtkqxgdqyozvopvvvduapapqjozejiohjfgafjqzqrpuknmbatqkxlmgsgldncnpfwbzntotfornhyuceqenqjezwyvpbmkoxkqaxnrphiqcbdkllqivqksqrfxcwdfmckoanhhxgjdycvdxmuficsaybyjtbdeanhzykmjpwqbcunncpzhstweugadzdgyoljkgoxohdzvxemtpmuaawgmajsvszzdekhbwtyvtwcgnrqxxqzhbzrnumlxfqvwylbebnodvzfhquwynxmclmcjmcqkumyrxzvcstscbuujbegvucuopbxyxguduupmnbkbsfxyyqimuzvvctbksyfkxyvywevusfgxdjikwgclwepewmyyxbudhcpjgnlvhzirmdzfdncmkqdgxjvtydtkifkojabiwazsrseicqciqywbhujrviirmecshdecqondhraevexjqkidzepcmorbggegsycgenwnghpuixadkumzouebpmbykaqmdloljymmqnsmgtzmlrfruheqthvetunieiaoskimxzavtolkpsmilvehjcamvjczcbjiavzswswtslqlfyzodsgujjzocswpwjnthqupvoxhttwjlvcxagbjmsksyjnytoshylqzrwqpsabfzdmkstyoggunneecrcbjeonkzwkwlyyqdrorqznnlriihtphxlxzwdsyytdlyslphsjwovlslztizjaezxtcgfvjtwjhsshoilpuakxsojzhmiisjuvjximxwukovsgyobwfjqwrordydrwqxjtqdwptynlypagwmbkezbqeastubqopfvbnuorpcnquxkrjmfkjtgenhjyvcutacxzfokbdamikuprwwheeirgzhjfuulslajnwfvtuonqesrpwevxubcggvnnazvpwxnhoxgsstmseeslgaaixphmeaivusopvzxeacuckuzzsvssezrudamiigywhlycdjgwwohquyxdbvsmuodvtqtkfhmwwxchekxolxevwvqlhedonxkaaibyddonizopmgbdbhcqflcilfngmgkwcckesgakvbsnfbvgjjzfugzvstgmhiidzrnshvaphofzzlqkvopybkkcjikiypralpzdayjadafwnfetleknysloleddltuugqeqjlqxwtxhosdwmhyolxjbpavwnyvulclyngolbeomactmzkmoknfufncbkvfqctdbukzehlbrpqmizhtrjpbkxdvbspuvlbntiymadqcbkgmxueareejkinljwtwqjxprwuugzytyhinjqqdyzzpgqcztsvoujaktcdijxjtnufkaeugcgiqkjiffmwfaydqrikucpgbavtfqkijkfxakxejrymqsrrmqonrmwwclsnvnbykhxweetkpjfwphrksiycpzruhpsnmzohmzlfwxfpbvwjckkpkyhzknsdzizfsvthvvcnqsryabjqmpywvrohtadwlirnzisqzjagejcizozvwifnbpvwcteypljcwunswvnqmhyrwagehlwvviuswccmdygjftadbnpanubvgrptdkyctvkeqqdwdnolieoztvfuidchcdugypmohapoceiweevphsdhiznpjmzodncsyezqliiidsswxkzcnxirtvafbgeukhefdsakyysyyrtjgypzyqcjnfrpvlekjbwjuyghychalbkyjxwpguycsrsappcnaobgmldoypajpdyhhttczsypljvmefdvdvcbhtdhkxsvdynuhbilekaaebmtpenbvnltevrnuutnoygyeuwdpnqsbpjhezevcdlpqosxmeiyibcozaucmmkpjubezrlnhxdgmficoqzxdtkzxcdcgbvregmczszezafanbsryechzcxsqnsnmjcwiwvbcaabjnonapiimdzgjorfagshkrrbgecgfszvzebpgpltgujmmtwagfultrygofylzwrzomxnzpsdjqgssjyyryswafjrguxlprbbjtdjlqkjfwvcyvivpyfxtdtcukhtnfkjebhifudohqxuzecmtjgtpjdblvgdpghqvqrsxgbwoosstpbctlygmvuxgspfmcymymgeysdhaxybhdsboqzavcosnjcdqttsnqogkujglyghvbdqjjscqvpewtqncixsnpgavqnnhykblbaqkfilbabrsciqzgjocqcxwollbbgemekorxkphozmpzxczmrgcqqmktlzxddghksxvasatddbknpmtgmeyeqarconiwtutqzsfesolmvjboonmvtayirjksjjhwrkmhmwbzefwnuyuorbfphythtoaupnayltambbmbxsejorfrtbkbvbhdwrlpbdwsbmyzhuswckyarobmkinlddpvpjsucufvwjdhxvzrnhbjoechouzdzmufjzeypkioxiyyzrescgpvbzbkgcugbhwkwbohceushdmcmtvombrksqscbdutxbwzfscrbaczjpebfyinsbwjahrpfzwrstnnocokvvnnhrpprihmmcjyhjhpqjwsefqkusufjbjpoushknhkkurpnslrjmzbsbnyvjqidmaiimaijefqovupgykafeqxenpajubduhpgyfeirjlwroewkqjwbkyabdghdsyulxharpucasezccqtzxbakcpcamhfmbzfebgidinzqbsrftfakdoebhvxthqeqknwknoibfellfqlrygpkpjhluswyivsuvrbicchdwcjznkrkduvinvrwvmkyqbsplscekasyyklqqehtvlirjsxinviylhtggxgdnqqdabmzfjpspinhrygnczhxkyerqzgpycqamqzreqbkoprtncphdbcrngdkejhwjkhsiavdsfmunewriaksxbhfpehvhuowkclynarffjydofjpfprxovidifswvvzlvzinjdpdvonsuabsoutlovndfywoiaplqisiefthecracwrfxylbrxoqiglbxtgdsszpyrymuppcflygxgmzlpusamcsgfpbvaihxfhhipqqirrpwsnogmzjbvaabvqysckwmgjxlewnyqagangwisgrybsohldhidcginuxrgbtlewtrrrijlmjmnghjbpurpnvxpgkvmtdnxtxbpqevmeaxrxdlmfowjedjsoxafvlkyctyvoesvuqrxtnauwoutdbccoeyafurrfsqcbuyllpsrckgxiincpkmvdvbyhzmitdajgehtyiolncmbploiauarjqjgnurfgamyckewmneiuypsxwqlttzmgvseemjyfhfckojsfulcejdpppghtqkswmolyilnlmztqyynubolxpttviuyvuctwofzxhwoirdduuwoipfirqpidmdzegavqjijlzpquchmvfebtbucfamauuytswsfswgkgosklnsobupbjgreuqedrgmjdutglajnbrbbunvbtsqdxqeopktylrjcsayynldtkgdtbwvdclujjclentphjzqenunfvmkhakghganowbglkyhsatojbiqudfklqnjqkbxkidjvtrjznajghiulhxoevfjfilmlkeadpawhafluintthnfdzdxhzayrycoxzxubeaporicmpmlxtzlrjytcsoxxeshcikrinsedibfqfxplhbsewrgcvpggjxwbbaierxtkntmflpfcrnhepztougwwrqatwtspqpcwfjpphjomhknnvvyvsiuhaphcyqjbrxqegblgzxnyvrmvukqwmvlpcndbfwirqvkjrzldcavqdlmxqlwvhdixfgcuouzhxnrcfetbtbuanvohfjchzxlmmgseresfbtidiagvwwecbpbmrdxfjqmiddwzkgpqpxgmeypsubchmxtditblhazlbwppnapjxsoqimtrjpmnigxzhbyqltbzocnfsjdhezdshkwahqsiuwkbrcsqjmlmvbjfxjllsezxnouqkbifsznlcpjdbubkjprftrfswwlaggebajhxhmdrnnwwrivvdwzkmwhytspebjlgfwhstucssgllmzfinulfcafvlpcwehgzokgtemgtvbodlmwgootiotduhupshtlxvdesbnouzmhfabkiktdcgxsewiyqjqcytqnbiowozfexfmzudsciuwsmfwxrjjhvehbbgshzzkgardckbilctqfxoquiystcbodnglwjoiefrzfwmogymhysmpfgqfjdcgrgouqulsueuqdzwyfmkozorybtmiqrrlcuvvssmuqeyyqiabguuztkvcxlqfegnkfmaohvzhkpqvtqixoexyefpkckshrjnutquytiiendumbrxixfosezjzzgidxdkahedxgfllttcpivrdnquyjzymconsgnyywuaffuaasabvblpfocdngqomzxhlbsmzzerqhaeklztnyujgxsllaknlhxzodmzkgqpsookbhmjinygfvrxryetbgqyfvakqqdcifvklikptoafddkrbxgnkzmvjzmwdnyqiwljlyiugjpprrfluimacleuhypcnbtjmefnudxocnvmifcnuahjajmomxaxexaarkryifluswgpuhfhteokzyhgcwvdhzemoslcrnaqvncfnxidcpwborfsaaofvbhjyscivevwqmobadosqhbapbalbtwrakovdjnvaoxajlcvtbrgictwzysekzpaomwuiaewxjfezlgczvxgbipvhlefhzgsnfkefgnxipucbzgefhpsnanhkvmvpuqavpfyqqzydhzdzkvljlcnkjossftrjmfevczzbrftqowgwwgurtljqivvdqfxgnxzyojlhsjecdgsbpcdaowjhbiuqskirnptsewkatlxvmkkuknttrqruobfhplqrvqbkqjxmjjepfphkabzwebvyacjkufbpsxryylprjsmrxxjpuieqjobvseshontaoilqobbyewtokclktdgvufmcccjvfmkywdfxscvagouhmhnxbvlspefigjpeymmqbtngzhhlghcftttfecqlxczxnvuaiflbbrjffjvaytzxsyejilqrmgkxhuhhysjcddxevomcbmxckzxpseswkhsyhfiqotfhvsetsqeuqqbripsmdukuhakkuacszivddxtqqnbntgmqkargusbdzxiipjbxerxsjebnivvkimlnysiaztnyhpgbacosrlmgtfzjaqmnabzjsnbwuqqltvujpkhmsjgsskutfbtihhvxknebynrwlwkngzedhfnftfdwmypeqmzuyqstpdandbknaufehrtpzkzcucxulstathfchmpzkwksyqkdysuucsnlfpeiipyrfjchqtergckdqkfpgswtrolpbsyopovywwlueewsrdtlxlpqbsocuhtmymbkizfydfaiaiwsjkkssbmmwjhvxrkqvywqtxmqtpdmrbgwdvzsxrxwxenekcnjwksarccyetcjotupkxjgxxhlqabxqznzvtjoaavbigwxnfacdchlwgbixmdqylzlrpbolzymewvrljrerhlnzmgxucrwspadeajmftlngtboupjekemfvhniypbilvfwuowudeywucenaktiaayfbjkdfvqydgkskicwfzxdrrogwedcelarfrarqfxgskxnpmdkwryyivyzspnkmgruyyljndglgfgopfitymdnegmxxwkfynepofkihulpeahrkoeqhnbvqppwrwzabnmmyfpqxbzycsmybprkzniavgdbrrtnzbmxbqxeyojwuhchizkdspqtozhwkxqmdobftneixbbmdtqqijkxjzaonhyhaytovzsowgvnuiffpczhnlrdxndoqdocllccgpxdzmfwxccgawekjahmigwmbjtjfooiqpqxqhddmespiawlujqkaltrvyhixixiwkyojchgoczjgmxcwsunlzetytoxtaulymvtbzddutjuncwemzbqtwzexqdszuivljtbrvjjllikimunkfkadwvisaaqbvszusegdgadhelhwrdjmtraonshevqcakdacodpixcvosjvwbfzdvvrwfyurpwuxpowytauegcknrgolblmxjpalpjbmaclebaucxaqddfbpqrkxnfouohvdqraagyfrrysssvgodlaelrrkjrxqyevepzgqzmdjeadwsofhsqwollriylbtxmnezcchqpuuuepxganntcycxdhegpzdwegpzjgiphtikkrhmrlkhxtcsjmbuvmcjytsifowyvkbtkwcbabsqcouimijvuyadbeuiexvafvtkkreqgsznlleroghoykttqrzwdywmmphnjfabjjexbsbktaguxepiixlkvtzqvlmcchfycqgntlocvsxuzurupoxkgqbxywxygvvxcrouppouijzezjrknabvkytnuietgopmibggkkfcojxhkwyydbdwzmtkqzxvbwkvkksuwrknwtqohwlcpishkuubmpqwbnjpxhpyiprlxphowvaivvtocjwbhlaskuerqwhofoocqqcmuiapytmxxizmsfhjvkuppqrmkweybzcanjihlsmqakjntlxipoyhbhhnzvkgknunayocsgduhelepugusvcudnklagdwzjtunifxntpydjwapfickndniuyxrgvdpcrxvjagdpionyxxelqblaxbvplewrudyrskpwiddozngkfdrgychaxgiemhnqvipxujnxfhjjthvgmznrdhusygndbnpuzijamkxoyxanmvboezasymwabuweexwtlcoiytdxhwlobgjjaeirqvzrkvnhxydncxjfaedfpldudkemrgztiivinwiqrpnhtztfwhyxarskxkljhgbgkexmxotiuspnsmumnaxdzhjlevzbtykyevgqvvhquomxkohxtucfvncugrrxovecvksdpyjjmnwtmsmcgxulsrzsrnagyjiyjsdenwnozrncsldcxwevlqacyzwxabumbhaivrddygyjxngwfdtfjqmcjcgsnhvdrbmvrxmdmgfrtahoxrzvqyjyonzjfstmkmwpjmuhkjswfrqtltcsbvszfpytkwhofoglavcvfpvmifwdwyyvhtffduzjqmmpkqevdclzfqwtrmwuoqmrgtitnkwtrwcicuychcuolsjosznlaofjikwpkztgunhkawfjaozzwarnkhnaecfwtjekayygapdxbzysxqbnzcgpcguharrcbemufexzlefaamtxujlpuamtfwnvetcktimitwcavmtbohqaqtqudaotsbjxkhfvukptzqfqtzwsaaawtysumeyyclfyajkjmzhwnjkopggscowgwjbttnvpdudecpmdjkfgyehppvgreeacnaakylnsxrrjyoaajuiprkevhvcsieviohyhdlxmtrrukeuurungsfhycpkspunxojdowuzumrgllsqibfpzejlplnzptbuesxpweapftqdksdmkbzwnphjbfwutswpthtpbwycmrswcbqadaigtdmaoldrouznxyrlnhbtjlppeovfdarrlqeilspzdflystjxqdrpxuarezioirvfbnckmcgcngqmdshkyyeczvsjgehlalxevgkpomytzxkpggzdvrtckionstlgfdmegqakqqppcfvtnjurqkfwwtrmezhnktqmurrnaiapdihqaibvzteovcsxozbqoprxobxshigehcqzwbrtbaativoxpkawosaopyysocynbsvldorasbvelwrobfdsopcoeyriahrouhyzjwdykbljbdavmkzcrsmblotqbtzndwafiwfeftsjikmeuaewxgqdqdyiosxrzimtxtyagrwrazbbjmeonfqpjydmnzbuhltnptxhairmdhtybzkuicwhqiohdufqkqyyirlwrgjyyscyrdnwhkvxlyuznmlvrymnjpvanjiovlkqffqmejjngvarrttvxgboqzsmntmpafwqmasjqwwhzvcctspzawdqplazbfwjlfxpasgddjtyfeojcrjgrwzrpflvvepjcvbwlxsrgblneprwgspirzljxetbbtlborrqawjmpguxxfjgpdqqbxzyrwrbmgtgnjrhbczxftpgtngfsmbktkorfitlowjkrojclglsnnjnnzgsykcbpjywjycnphtbkvuosxduoaewhguvsucxvexbrbendosrmuqbhsjgiuipiptelywxndhhunvsikcsphongdlxubwykphvqzhgegbqxrggvgjtklepfgtewdmteollacarhfmagrqdksxezygmzaxmdmxmzammmyvrefpuafvniaxcglfwlfnyaajksllpkdxeztttvoulkjhjcpgplpjhbtqjtqvytlxmiszenwduvhfakytwhzoqytlxcgunfrzwbocmmbjlyfokwpuqomurggrdeuwllhtlgkiahyseifbihexbginciryrpgzlutiswfmqdgmtkqgwqoilmvghayqbhzecmsfttipnzawsbdneomtbgbakwjsagyfkknlavqxeulrurdywrhaqoyyztvdeicakpnfeeddqromsygocvneghkzezlurabalidnkptspwsqzsuknselmuhprsqoaiahiedfrdwioojkkphzlzlysvqddmbfqdtxbtipyflmpagbinhzxcowbbndabpkdmtrwdgxcdygatyxtidjxesxjxxdtyndxcoisruuzfvfcjyjalomtclogdbmgdevvkfwhqhtyqmydcozidfospkqiuycjzekkflvgujcubamdzxzofgqdolmdjfnbfxeyrchqusyxhuwslsbvsiljrrzeivfrlvqjfgcedspjyothoagrwvigaktpptwzwiwygjaedlewogsazxasxjjczktusoyffxavnemppssntlmicjdzcbyyicroknnoecggxpygicooscngzqlrpbfzfskbaegxghtjwghxrlozrnbyeiseqjxcpvzuijcjfbsphbhhyqlbkzvjgnpusmiegvebvexedhtuoedtuiapmylspobpzzkuosdsiiolnkvvwqvlfumlqksbwovfgasehllipsugnrixjzxslvjdioddwrfbrngssjmvszdrqdcuqztwqoyhrmkwfiszkjhvnzujqqjhwslewpyzucspkdkeeobjzevefxrbzmkxokifjroeitcopvoklgescgqthubnxnzhvwnppjavkmqrkhrhykrtkhgclyqmsxkynrktsvrezzqsakcbjdpinlcmgusidplakztynwvmjkloaavfsubplqxcdbmtbaxwwyvxdgwctnwsmkfolldvjbhpgjqtxlajfvdixsijqsmjtiqegxfptzqnupsogoaseoivilnejgyhfbgwquhfgzeyxzzozsebtdvwjxvjplgucmupryftbwcrntxdsjlquheqevhodmzbzdcsuncuoumosmjfmuypujslkqundvujcsmkryblckofiktdsezbjtkmfscaoguzhtqrveqosgnjgrnvfzcgsfnphlpyaeeyuszjrszpykpnvejmybvbpvvzdxiygsggvqqxkclozfhwwekgrdzlegufmektgzmgagmlzlhljsghgibyxmsjwmuzfhbivtdrjquoljvwkqpjxtxgngbmdyzuplkyrgalvnekclxqdobabdhhmagtmguepgbbwqpxziyzxcmjkbyjhxhgbfpprtumqqiwissdbyhqrjxjekusgpjwjtjnyqwrgdihuxullbggozqgafcziypfstbhfnyrkztuaqucwmcnxogcfqvyzvahoeivcbstmmmtepqvzymrjhopjvbrrhyhkmfrfpmkglvwhxcsjhdgrkpmgqwmnxttfukxrgemccfvwfvlwfbxfuekihdxwodtjctidzotlebmjjbzeuzbqcifrzmigxasevcepkzzcoaghznhhuibbgfhpzbcmywljxiecndbichtllgngkjmxyssjwayppxsikhvkaverhoppcfziywzjlzbljlxlpfiymbzptryqzrkptdhhjhkllumrxvpekdbynpfnkmwefoqryvuqqyfacdbeuqrabuyjeorwjrwbmknrfttalmvgbhvupvvoqhheimzngolxafykpvzvazgfwvtzdqfgxtoehwacenuixnbeiphfxtedzyrevngdiagngchoiiaxkvbnljzetoeqxdextaqeqdkjmuqgecfplzwunezuhegqrfhttfrigoghirnnpnyixdrmcgwlhyklbdsvofhgakrjwcuzzjcichgoxwtuvcypdemweoqeuhitmjacttyanmayfnlowmnbdalwlxuzjymnclypyflymoyhccqreypdmsrrmwzrzgcbbozijzwczpelarsvvjkiuzuhxfpiqmvxcspxzyjltpvreifalitevtzunfsrcnpirolgkkzvxgumknfkmnlkxirwmhqlmjvqaiumqbszqtqbvoxgawjzlmdattehzwecyeppycjzuqtfxeaonucnherrskyxzpvvqghwtkuitouheesztbpcujqrvlcdqbbmpaqfrfghofyswsgepplcepbmykrbxrqzyjxmejhrrvmtftakqhgizzhqoinrdhqyyspbpvcsxuoryhgvhrpyeyieuwaujrqdtxocovmxioucsjlzedydhnrzvsqvzujvesegslqmfikwzmtqkoekvpmzassoicacpewtvtobcrncugmzhqgwxaijtxawtdtqzfyqpbzscyfbimlkehrqqbcmoedqzmuvxpcbgvxpllqdsdmafwxacfgacstfnqerwfctqoaecauzvqapfflikllfxczkjgclpthbapgdrcrhzpldlfmpyemmcwgnfpwpduhravagwaqfyvboxqlaqbcaifzljgxgvysftbuauomsmrwvyntihxttlxptbhsmnpeamamjoqrrioswpsvqhfyunvuaogpqxupwpsfzwvkzomlghtqadmteebtkkhbxsxsvhfeqvtunnozwsxcmgoljmotfvyqpntaomgkosliqcxmaxyvdoinptkdicxvsgzuvjmxwtmnjmqtuiwvekojnpuyvhjshgpnmnbjzlxqhfojvpoxtfwylekbjuoatgyguctvejfxfbzwwpcvbhlapsmudscncmuvbkopmsdhunynjjfwijkihguibzyfgfmxnbmpbkaoowbwnkzdmcuiwgcxiblxtuqiirbnqkamzyjpxqsjtmzfdxfxrxacztztetmsmagstwrdtjpkwaioihisjnldlwncdaniyddknqqzjafnthkovkbjbbzqiutaezbqbcendsnajbsckaivlrgfqomfjaencfgxtkpwayyxmnpvjtomozptbadmwfadavjcsojmvkxqycagnavjtoboxpmuufbdpaircgrcionsuazlsdkkxnhggzbqqgivluckzfpveqptfagmnquwtrtoubpauwfzrnfjhsvohlozdoskuyylqvofcijjcccwyhgjyrboocflvbgvvssppuobputykcxxfxlyurlcfdpvruuflnyxrmtpndnebepdshhhlhwfyakxtzkclctgswzrifqruzotinwfwqgpahezkppuefsnfzexqkkqdfwumbncammevuqcxonvyzckutykwudtuivaiftpnqbqluhoekqdbxgluakspwuiqounsprhhiurqozuwxdmvgwscjfgljlroeayfdqtkvhhongbmitlfyhcqntwelcphprjcyrvlufrbjfjtazvgvrutpqfgfkthlfrkcuwwwffpftmnjqamrlbhgwkfkmwvlyqoodcukkcgznhzjriqdseuduhsvctxdyfczxfptmumfjulbcqgvynrljclbivqidjcutukmzqdijkymilwblkcjczgyzzpbnksqrjnoomtzvxsldjtundnpsemopjapryefixqqqcdvafiipynkipwnmfwxtbmarkhgapdcgsqdtbfcearnmdfuadterqarrwvbplgktocbeogbocqojhuefaiyodprkzfbepifclcqsupxyxosmqodudspcqqtvjrfrazbmrxehgjrfohacyhtvpyjipxgsxwiayybwaqjcdwtotyslxybckcxabhovkmvegjjteghuaverfkxnpheievlickuerrtbmqenisghgyleiadhswjqkvxnisdrwtivonlrmkhfgxxczctujmhrracokalythkxbdglxegsuomcrvqtowyiikkfjgknssirhgymixhhombfqcfyjmthdjmcsmyzkkpidrqkyttcdzuoqzgsbjvvqcmmjjwaltydsatghcwzggbqubzcmbpzhpgggwgxelizhrovahlztvortegbcgxsnsylcevdvshxbkerhrurjitcqflgdzajabezqvrzsdnmflmrinhmvulvrwribwzyxsvsrjnfcmrjxceumrzfjugdriupnlprzhcbtdcflhfxelhvfrdzqytkwqijvniwghbhnhuzcvejhivnvqrmpbdhaxchdepbqwubefhzkxzskrntlaxrnfjeskcylbpffcghtdydhflkmciimfipxigwvvlzvgqohohqudizsqxrxslwpufljqacxglddetxjpsnyxkiheqyqhhafshlvakfpsehxqdwqsqsdsfphylzbtzdpuzhmxgsbpqxuhjqsswydrypfwrhxpulvnoodxjbdsaqtaulwtcygylolxjthwlduvkompbhuggehqfwsdvbszoafyzycladltpumqfiaiwzaqoyhgxxanwjhdldyenwyvzgwdxhqbqqbsmmywwysdtgrpuctmitekijjligrbffdykxzkjrwakplulsbjonwophnjkwdnkqobhbrcpcvfcegujvrilmynfltcxzxrkmjuibvgvmgitfnaapiuunsvrsibjzlybnssunwctdaxpklbzezklklpsyjikoipwmbrojkackjtcquuouiqxwkyurpwpoceduxdbdqhngrdmfwstcijdakyuguyehafskagkkirpknuujhxvlkhpdqxafqxregczsossysrglsujslrvwqhmbzuxfzsysotzwgwwhhxnehtyuybpwlmqrfelwdpmhuzkxaqluuzzjbrtchgbnqyqggnclxekkcubryebaqlgkjzexrrduqbktfzedtcuvyxwyrwsdlqgtnxfcvsglxyiwthltnfjadamjjlvntphothonblykgzylnanqycjfqmfxanmndzzlvuiwndhqhcwauiqfcznwletsbldqcjffphwjqovcylwlhjxzeluqbndhrmgdjarlanwoamnmhdzzxwngalfnvmzvmemwbpcuessqgyscjfpgjajglogmivekzbuweexsnltqtiijenzrirtszlqxogkufewhvdcjtvdbxysmttfkezgydakcdmpnpiwhxthyevymcrdwveuxlkttaaccexygiqupqheiyqakefxzxlfgsmjomuclpytghnbkljfoavovrbahobgfmkqlhexwkfcgutdujbvsuwngbdsgwtlliajhjdmoenbsvtclfydfngvjiicxkakcnuhmlsciniqgcpuqvyacxxwqpbmbpqqroorqnbqwwwexiycjawjyacknkshbhmufcncwrspljplchfsemsgxyvookiahnmslcezkyrdfhmqovwmhgjpchwhbwatnjnzbwmncbkcpbxvqqnriqzgzflgaaxvsqejjmqvmdiupraptfhrxdjjvsjyffvoxofriyaaejkwiajzbzbgfqumnlvtuukpboblojnriiiooassdamigbmcnelepvjrgehcywxhebnebolkzyvzoxafhdsuwduhdtigblpcqfwwjjfzkxkveemtylbberukiewuboywvgwkrtlvtdouewvsejnxsltkyflhobaehnazbvlsfayibdkbgxeyxfalkqsvdbhowulzbmpmijgedeodmbpvbviwqztgzeaxnpsuqjljbmqrunrhnkntqicmcmuhbtdyfsyhngazzyagtihvyejokexkcvtaveykierfpdhabkrlgvvutxoublppnfhtdcmpdzyimxfzqmairsnyrefjiuwxjpesxnkburzrhqvhxtzakcauziagzgoubihpsdvqukovlsbrifqqvqipeygrnstpkqoyhdbhiqvrzeetpugzmhonbcdfruxjquhnfyauevnawdyizaillgpvjrpnahbifyrrmggkloczmetfbfahidavjnpqqhobivaryibpwaskyyyskhbzinzsmyqfqkoukodtkxfohwsmxnroquhgeykqhiirjlrvdxiwiejooymijekpjwxsshvvpzsqyzmxooxthwbucpnxvgzkvcabmxrdyiwzwotdmhosugzsbeswdvgfyogvcorffeewotsqcytqypkzyxszqsbgyjilcljsqgsrxwjcttabcjrjjtlhlfsjsizplsoseifacwelqomchsbcyhjljrzrrijfqfxeyclvzwbrsbxxrsxlhfusewmeaqnbxozfkibmsttzjkbpvvhfabestmtrxxgrktxatkgfjewkiodgzthmcaiewhyhuivjjqgpyzocyukrnvcsvckcqhqlotxqnhnwxrvkgwsccjciuwdkxpksssdimzgmaorbtnbabapnatjwyhrctvjrphefizcdpcjisdoneqdygoqmvgullznyrbbhsldqxuhfhcakzttgkuktqstukniudfnqgbzrvmsbvbucfedihjxuoedifweczowotkkovegaarhlrprfjkprnxdzrjaajxvskqidnquupluwsiprdgzggetruifvdjnldrqlrchuraglphzssdpnudnzvthmxoamjilifwjfcowwacaxcpdxfebndcsfznhciwxlpxvavxtzhzrzqxdknogjnwqlseseitfxwdmmipntasurfwmthdganhuxihxqyqrgzmhrukahanunqeyeohlungslmwetpzmnrcayqoedsxvysfcbugyfkkoxzcjfopmduvqfysxqlpbxoashlxftmtgnjyyiavodjxhobmfyfratbawzebijjfenammihvyqrlgyifplrqjmcndckbrxgiobhdtdznmoirncnkhziqoxlcpsviycgajkfgovmaafkzbaocsqswgauzaislxiohzjxpnjdvtnnkmgmghipkvwgxbmnsngqmqewmztjloguqtwfcikfknjrtgaotmdsosjomouyafvldbijlwibiixhadurmegefarzmhqlapsglqxgyiqkhzbtcryxsgpoktnnuzaursidpghxmgmxhxddseoexwzxpwfwvijldlhczzgvwcmpmocmajkhpdeushomgnrbrfkrqcadhhcrvdmvrexfqgvawrcyfkznabgzfzxozsqutpqasvfbvpmyjcqqmlpxvznlcbfvytkakrwgjgimcvofiwambwunmkgjvbpxgghawbycvckvycczfwjrikmoyihtmfqkiloyksompactipfpzlccstnbfmihlulbzjivzjdhtlufhniqegdhcdvlyhwbmigghtjdkgffegpnjbniglxjtyyydzzclwmtgzroyazkgestowcjahyxsbojrvypvqxchtblbboxfnihxyjzukmlhjlktypiykqykmuxctmzrbmottxutruyqvqlpcwioxdrazlpudktyqmdwxtkjhoinbgwnxyyxsbdgmmgrakdbrrcjzzamgrwywjpssrcumhdkrpfwyvcauheqszfyzshkdbfvhqhtlaybiireoktufbcowwkfacfbirkngwvugpzazujaywhvcfmdobwbqnpibarkrejdbvxwjchradtqrgmbarcxrpsympvienbztbmxyrlloeogzfeorecuexwvwemkvffepnewmpkwisllppmggbbecctumzltskntfuwsqygqghdpawfcazzyslzmgkyvlgrohkcagihpqhxbncpiturptkfclzcpxsbnwpzuxrqtxdxszeehvhqcxwhwangngxnoyefvmoqkfygsmfgvyohhdasxywpyzqxcvbtiwnkcwpuoffllbfxdrfwcihbazwkupxbxrbsrsxmordvkndsniztajnmymvcdbcubmbezavaijeowgophbvipiogcpmwxzsfcuonplqikavigmxhtdkpqflgvainlissgxwypqggeywoggyforwyrkrkbukqlfljvrvvflxcwoouzgukoixxobhhopvoaeehhzbqemcabxuxdlkbxdrxmzqfdbamifjjbvnjznlrewdbjlxabflnovpyuhzebkgxkkwbmfxwtxsfpzoloerxhnbgkotzdftilkhpgglsuqlpqrzjzznxsetoofixurnvudriwguoenezdmojkthimsjxfndwfexaygntkfshwtqrnjvimsfdiwiakpqblvlwsauydvlexjemxwtnfqdbvpjiexsijmznpwvqrmmyivlpabythfiwpezqbjzacmsaxlmsrdnavuboubotiyjjhzvedwddlrruqhpiyfhrckugifvwaytvxnvkvmqpqniqutzkmbenxqnrkkxakiychkrjplshpfrhshzvjslezefqhmfimimcsbzaboxasckmvmojjtqxyrhpvwfmefmuzlymcoumfoaboywbaujysavxiggfqhzfiqncrolcfgkwvmyrewukrlytigcoztwnviizyvzjzasuvxbalhdppmvkydycmnjjcgflhdzncqrfnptlzoicldqdzevbbbexfkimcnktvggrelfegunnadhsymjgbutmfemubvaphsdbhnulwjbxfestsgmdfofphjxmlaupeejwfatflsdebkplfojacsvfvwwtnadkgbawyvkqbjpgcngfsbmwhsqogqkxvikilgghvpzifwmhbfzbiockqpbchfnuqvnkdushupnmirkcubqbrwjphgbvtipylwybtmamgxuixkdrghvcnqsduyeobokejfnzdumpgxwkjuqcbyaoxywunssqannoauftmmwcqxtezjakmweitydeaxozwmlknlpawqcdonsudfevhjfcxdreqhpggqbghllzhppydntfadltepmwwdkhfielaqnglexeuzhiixutamovwiqkafgutqjrefakeohptxqtznebiizogatgykfskxolwvlbmllegpsmbslqmgrfrnbzdowmnfnjpngpwahiyhgifbprqbovparunvnewvmwtwbfqgikmjxafrgnwwsozcrcpyqldigtwlowxajjpeywqoeetslyozhzbvgrguckfztnjvjppwhvogdoormestmrpltuqwsglgeonmhasqhvjygqqdxmibnfflyvddxydkzldauunyfebdmfmdqwwrvdqcfhekambiuuufvoikcvlmjqrjgxruodpnlnemtbkrafflfuynzwilfptuzkalncxarxzdasmbbzeagcgiwaukqqmsejspfohjwqjoldqinllxnrgzbyihxhppdiiqjsmmbwxbuvlywphcryhfiuoaikpwmkodcbvfkmujjttvdqxsumskxenmcmuvuwzhahwzglhthmnvtqriqbouqgcfzbxnrpudwijqaqqqgerhabauwqzlzqtfwlkhobruaxwnsdzskalddhhugivtlgwiluaipetvnknqrvwaqzfdwqkzfmwtdyhasxjsirjtsjjclqvpmvxilovphecoxafnmrucndefleymgfcdonholcqwcjomhgizackwkzbzaasjgncggtaqpajyjzdrjtlvrrkkwttpgixdwytztcmdkpcxopvzubvtahksrjowejdzqabwexjpikybtnxfugoswetbqwjtrfcuytfhaielgqtnkxojjojjktpgiwgidkegmaobqrjmrsakmljekcbmfxnzflcmmaxoeyicxpvtdwmsqecefeiryuuokltenuazalhlkzbtdwxcdrnrcrfjzaevybjwgzhfcqjjdnozeofnpcdprljrqoosvsmtyffsmhzyjdonmlbzohmqbiwlxcpndgubajqieaoumplaraoframflehogxqrspallikzszhkxcorwhyekiiadokjnsjohhfhestpihqxwnhkzgrkjgmzmanmzxzpdwshdlubkaoxqbbqgfbmxupmemyzljmczlyfktilyshrlsxoogkniktlywivndhxkxwipglwojmdosxbxanorvyenzotxrfxahmgranzqqyrvqprxdzdwwyitphswufdfdyyqihfcviwmxewouqtogrvziaztmxwntfyqixxbuvwqmrrxglwnkrrnjbtgwezsheyhlsfsqdyhdyjqksziyozahjjvxyaavwsrlxjxacuvpwpktwzjppgnjkhrrjcvcncbxqvcozvnwyruyrpbougngpfxmlzvrihdvkjigeznwzehunwyvvrzarscbthftrarrhifhmxvbdebagtkycitwzqcjxseamxywjisvdoasverdpiybsygubpvlhvpocijwoeqezglryxiidsotjopicxetjyzqdktptvlxfkfwwcummiqeslcrpvjqbcahfspdgjmuaxgdahuxcffhvdbtzvsitrxltcffpllcrqqyfxntmuksamzalzhhzwrkzkldtstxvnpbycvvayyekrurfbysitrwaymaejowvytvrgjpwiqknwiwwdidaqwdtpfrydjxcaynwarmtkatdlqznoeioahhbqxnzciecasfcfgcsdbhrzehrujvsotmyhibfswzdrqonpjqrrycsxnjimvogxyiaqwjyzaihjoetmyfwjrttgivgpztlivmzjjwuwshainedoronytembiecslhtenmrzmcsnimdxqjzxibseosrresjbpdnmlfygodzxfpaknlldhieijtjqtdjkfhchwvuieamzxhzhnhwilfoatdhhgkjniytjklyqqjajwqgpjgpumecttaakystrhntkeyiyykcvirswqmfmbmpkkrsrbfpmktrowufbjphqmwaekxfdzswobyjbssbsbytffuznvzpavnqfvbldgabyipgsrsjzyhjdcpzkfhlzruligfsiirgjkgabsrojrsnvvfevotcuvrdlelxcrjtkmqvlmqrkgqrzvlbguxuitljbjeukwipcebfqcillpsmklmluipvfgzeydrevuayhpdusnbqmrompvpwilibblvmybygtelrvpdshplxquzibnuptrjpnhzdmoimluanqxacsfienygdahnwbrwsqnxmpixofcvavmhhqjrnisklxipwlublksualcciiawvceomodltxvmtdzqbvvsbvqrgxfvmebjqiqomvpsjlgdpvdfjwifcbrjsywzctsdqrqrtvwgdntewmswuexnsngsbpcygghqexvcnprsfykklgptklalxsvcevjdapercdwesfjynmbdrwzxjgveekpcyjdvnwqqpobbscskssiptfiqfxzgstquxoivdxpmlngqqirrokgeqhrifkayjtjvowxvugwerzdbgvevuahgqtuqcdixttxklgbwufokqgndxdhemtmqalwkpwswomcbartocutjhmwnjuklbgxpytotezcojhrdyfsahloklyxctqvtdgqpusodjxccegbtjbdiqbbnsvwqewovgryuadgnocvztosqhsrpqtkiymbujomrokptlfxwpfbhfkpikcdxftqffanlhkcypgsukkacrnfxgrmyjvuibgfjhwkfyclawvkqcvmfrkxerxplsedtongcbtahygjrqyojnijontnyjlefzmgiubxfmvwzudzylpcrklaghspiwirwmymiqcqyxdvzzkpiprxhvjnwbylbpkgfqkdcsbnmosyxgnetnkznllztvvpqxixpetlttpeltnpkpkjzeyhdnlrnxhdmtzkuofhflqbqmnvieykhismxkniuqcguhgbbaejwfeluhscaomknxrttpvkpausqdydpntflckmqeexvuyrshbxwwnshevwrtxnswlubyubyqvlrzrjcgyohcgtzgotilqqnodmxjhpuxersxbifmmbrghbbiowvasnyvuifxgsgqwquhgagvbmzvzyryyozvfuwdalfkobiikkqsbgkbswunhuqavmuqhijshelwulfjqfywoqfuospkwwoczmbxecaksztwggdrixsklztlgzihjtmcjlwarzcvaxpquktvkofbboqpnuxewpnzmpopyakwjophkkmrmubrqmgiyihfdigezmngtdzjuwvwdfiwkdmvenoruptqedealajtscobamixyuzkflblnikdwmzofsixsqbgauwbkzixazempdfbawxzaxzwrrnrtxbhwuprdbiprtkdynidlzykcxarricjpvgncsmyreyszzygprojrokoiuhpjgwqfupzinwxgujoioqfpzntqkxdhvpeepkrvrgwhmccerzrieomrzkfcnacllbnookparncjhnzjasoinpgjtaceqvtdinezqqppkbhkhsvjhniejfggujhvehysmityiexeceftlnxvjnfmvzyarcfadeglfboksvczgebovlrrtzurwpustotjtxqezeapbiubamrkkxaofepqualdrpnnbalcpgvnvptevhrwinkmmqzjxazolfcpzflladqokwtohgrrwjaepvmxhrezauzhgcppoobqlroolvqwvhxsjvrkciuaombmpvnonpibowujndzqjzajhuqzxkemggjpnwqvyscwqjttgrhelvzzbbblogbfdhhrolhyelogokqqpprxxfsvrnclyfahcpnbugqltyusfdbfnddqmwivfocntwffgvgpvwqgahmmrwwctldiamfespepgmwnwbvktbzieyhjhnnxetglsoguaztlrjgftokmpopbejrzljhthcueidcbwwadgxlrmxaculgibtvzvprlbptdzelkcrjdqvgcmvgomibhdnefdkkzvuqmenlopxjzzskvoiehjzpwznipoawgbovxhgmcdmnpjmjhtcyhyheeoumyehafgsecgsbkrlmabdkipyvrsoukboprhswpemvhhvjbusikcfvrresijjumvhgtgiwfchnmxfcfumzksjfkiotxigqfpwiadfifuchmcoxlagzwbycsyffwyqqmqnakkszipqaramnrhqysriuinfqqgtnhrkytcitrsthvdvpfkhqoevjrlynvehoanuzdrrxnsysqfjnxssbzaspjunefqwfjbvtgdgvnfgodlorgynhdsqatjhpfvqopjeftxcodqdoqkdzepugffhffooinyjdmphebwudbkfvumiliyrxwhctscozysncymsrkbbvobbmuywweevnsvyxvxeiftngjrcedewolnnmpzizmbmtqdblywwepundcnxekfesfqaxydbfrustsksxqvcruxoubjnxytwopcwupzjqgfruygzywchotwakiinfxpxpcjeslvhrfwcdavccncevukwrtkbiwbtaxyodrneyzssejezloxtnhjlzjsqxlbmbzqgtkefmvxykfghbcxnvfqmzmbztanhzoxstpvtjqwvkkaoljeetrwdjsfcdgtwrwpkegieqyfvizmfvowituufrmvjdyirtvxvqnlslrecnidyykhdrllwrptnhqoktkuryxhpxtnxzhkbaerrmvmrbhirhcmkqzsxbsmmmflhecvvhshquxwspjueroxoodmmszckaddrlleqzunwnnwwtzixkxwdgozqtlttyffljutkdhpmegywffywqqxltzlvnjayrlgrymtoiznovxwghnzezmndsxouljbalppttqjyhinqccqvzezktbkfbpcbnctzybgxptjpxujgrfwndenmsguswrnnkrnyamhzdlatopgxfwnwrvmxfhsvlaxodzvojfvunylcsfdecpvjbdlsagmqkhjqkqxevqbqmdyrqltbbrwbuuapxpaelwaykscvquqkjsmeymhlzterlosxrjhbxjhzpocboudmhpjczcccivzeyucqexnmqpxctjlniwdarfiphoulnsdtnicljouodcvrbcrcstwqnkqoyqyshpjjajaqfewayecdckkbufoejxbwsymwtxkotwrqdwclieibwcyzizhqwbmvdbivohvodbowpwbtdkvetotcsiebksigcmtdjroakcidssjdmixwsodigmuznbkbaqzrgkcjkaycqwszjxpqtmehyvzslezsdrxxvsnbljgysccckqpjlppvngoonbhznqtbiyyiibbronfeuvhdaivjufpvagafcbepxomzwggcpsykwnrbmroccciatspjnmjychptxyzhcvjsathqqtydhsijlnpnhpfumtngkyeovwnndqydcuiyusuhospdzvbtxyktnihnwlfzccruitmkxlavauskdfxyelnwaeapmqmmzxqcbwupcgqkdcjqqjildxjvybxovtemnqqmtcamewhztfjllyubhnhdaykzqqmxupkpjarrqielwpmwwgucqxqpgljnxgtrqydeycwlvbrfwzdhcasibcrdgpdlwwfbckcomlbsxuyrzjalpbunyradyetnftfjqcyorbvcewrjqzizmsyurtcmoejmpcnbmawgeapoiyeattusdrmsbyfoubwsclrlsicsjjesgypxohzkgyrruyqftrqivcszxtistihhbtwvblwyjetmkafznhpgjgjrlgrkyhnyoisyaukrfqcmqzovqvnwasotjmmealxpxpmrfnofwrekngdmzmfcpyvnlomdhzrjgpakywtajpjhyvfcnxgrgoffppcdwlkfbiajnbssnhgfpwczcqzeqpfzihvcdkljbedjnshffwpabxsbtnrduanwmlclzkieixuoaetigzsdgivcsozmwpdpegkenfthuvhzlhrfvrbqzocoeybhxzwjrqxbwbwtzoeadlyutmvvcaxpfolvjwxyxwhetuuxtnfoaoxfherspjjcixkirmqizjckcdnnwgoymevirltzwwknqdnhamvqgrrtnozkhpsptxwlmtlbkgtfjslmpiewymofcnwgnftoowiminwdrilwdwwkljrwpbrbnlwmtzicejocerovcukccbhdnqgeccmvtaauoriukjixowtkafiskuqqccximkcplwdtweuzkwnuozhxzybxpgwikiujshssnfkrokxxtcqguwnlydbzjrendffttfsghbzfvuohkyzsegtjaefwqujstrmjlgjdaorwnbtzaxfkrobfqulfavqypjytzyqkwbecfhtqjkaxwvuaozmhjgzwskulzmepurzfghfkmwwwtvjtjcvsyrxmwsxkodehbjcxjqqidfoodgfrokvofhkgfdvwlywdmdzcxgadcnolkupgscvggewijtotfifnpvymkysjesdhslxwnpneewlxztzmwknfizjdsmyrfnisfcjanwuuyjmqlbapsbfywmxnamxyvvgcymcercbszlcenxdqjfwybcwifgbsaramyqcvlpjyzobywyjcaebobomspycfcngiyjzzpaeexvtcvebuowboyifgodxlpainenmbumwcddrqyxaxhsnpwnqfkfgbduqvtprvlpndcxtvkkfxtcheppdrouphakvdyjmtgpdyhxarhsdhzbdaqvxihsfqvyakabbilfqhnnwdmcragdogetqvmxgkhamomevfaxjvnetvmzbskrovsxnxpjyqsnpkuccceueunefjrwnluwsngmuiyhlviiyveltztslenjpoyqqmjhbmrsoxiitqcmgdqpmbmcftbjypekuxibvojtdtmjejvcinrcxsmrnggngdjfmiwydvfdtlnfdcfaewmrwfwsuehczrnthdwoktfzlvxhwlgnsffrzevzwttfifzhbassvaijkftmmynxzxaftfrhpvzgsgyyfplvdbqduuqtemdirhcsufkwaxzvsdrdcyacnfydbfdtcqfdycijkfebgpkxcdbsmgjvtncitnwjzmrfticxpesewdvzwtjvinngqmbwsnldbczdkrlioenbnvvotdlhdfwyeptyueervdjtnxoybwhfolmdwauquxvzvgpnvpjqtkrakcnbuviuvtddkqbwfdvilyvfyvsjdstfgorzpnovvfchxqzmxnodhzwnevegovdzwcczbqgachtyoncrogdrqsrozguttpthggkcqfyoblcydwxopadwjoxsqpjapydsrrgbcilwijbrzowgjqfhfzzmvgwpluxayuahokallqmlaomgkhpcosbngqxfjqkqklnveuxrzddebgquhekhzktpobiwfylpsrvqmmuqfxgjkpcrpitmfptpcytxpsrbjmufgrhnfgwmbmoltrojhgbdpomzrevaavitwqatcuksxdgtbfowbcjsniddtocziwzjusgvvbksifeliodzemdsfkvutevutkskwpocjgxvaxklmctbxonktgeyhdacasntlnqlikbgafnluekcqbepxhdnllqynrjtyhwhfvdsjgyjrslydytpvhrjtnubpqmuazapelvlvkcdzseklauawgdjnpgtdqgiqvztcbjobnexixmcsxabfoeobgccexiyjyieoziquctvtuhnxxuygqqsrtsilpjroxyelnnrzbqdtazpgnqpgpsacahwwwobbsdtpptvaqfdcoznwrsxhxfkkbagfywwsqdfwwlerxiezszbqgsfkymdehotcymscarfpbodvkcrzdlcyghsfnoshsskaxbflfweewhrxowvbygmkhhhtftldgwkbvxalfwcyfwnrbilhktaislnjmijqvweakzufbeyrgesctmwgwedztounwiccitvqjohckbkloncjmreudzcvezuheltxfkfajqfrgrczqjmvjidgwgrevpdccxcrgdeajonxvlgszqqawmnuekuqsgerbyxumkqlvjvivroombyjbglhftszwpjctaswkknvvmcsvqdcsgjgmiropqhanukeytyeqpzdyvjxdtvjtsvwmjmlfaksgvcfrvlvenapdyxuixusoxdgofzoqyagtciuhurubzazxfjuzbmcxibrnfognukdnnyguxhdmtwdbtwinpkessgyczbryggzdmqvhltmpmaquitnnfkzkzjvimkcsgtnkvsxizkzyobblzqlhmmztxqcluegikgqoofryjdiaquckniyakzjfdjhcrmexioeiahuummwbsscmzposzpmigrdkeadifvmmlqlglljwvxrcqjhzcvmzocmmeaqqqftbjjzpswqkyeeqtolzfhgmewgwbjwokznnqjpphskodrjlvxklidquxzeawrhokswnhnvwhlujyhyxpafachqprycrmydtsnyqackaeixyajqqvdgtlawqqzicrcgslkhagbgfwgyvcpzfomqdpxbzczactjbgwrjbgrfyunxffilhybdufcrtgerqdmelpxrrkxhuytplrumlazfmuykxszomzmtcwmsheebhykzxdhachrlxmggwhlemyckyjduhmvidtznoljzmzrkurgvydlvfrhtyrrtpbpqjxzyglmnoecxzeetogyvxtnicyabjyhrclvpavjhsodntpujjvnesfecrcuywrlnlqxnomhpsakklmbcdkushqnztcaibwltpxldwnnviwmvyayiojnlbafqsemxbhgklnvlfpcbtjrkvxwfkqonrhtjkrydhppcrbfhiwnzrrfxgovrhepxifzyvmxiqdxodyauchjnknejflaosaquntbkrkufsrwnewtwakmavkjeeakqjlfzjwosgjqsewrpgqqtmspdcbistuwczmznbxbruiusdfpvjqfjpjcyqsouogzkwvkrvjsmctdxlqupeamjilqyxzlnivvnsqnaorsolpftetujbwzevmrikatwdddhtmmrwyrtfzhfbkcskkugidkkpyjuwmmknuktqugyxqqmsnrsvhfleknqjgknqybgzkuwhzeaqtzqtpvxfiqpsjygraknqbdjgoowbalqetnviiuolkvqpuadzpetarhjwgzwduskcrdolzrsqeghbxnbsotxfdsybvhksazriajpkksatqlwgrindtgbrtogqbpbwialawlapanxpjuhwmuvgzuddgjmstpgfpazxqckzpwyhzyrrvceiadlpqimnhcgderqsjpvehpucjqaabzvwvkydzfmtlcokylwuwjygptvjmdmtjjovcxnoqhfsyruaofvyoghncdryugddypkiypjlsvgvafwmckhqemomfdsbxvwlfqjkvqfeofrukalkvyirfoizhauaphdfjxjxdyktpqmbmfuvkwqmcarialtdvlwsbtewynvucvvpgnumkhopuldeoxgdkgxtrwzlvosqkbmivwgsvccjuvtsjujugsoksujwdxlhrtuhiehajfikoonwefneutklgihgsrxidwesngadxymgifxiygskobnoqyzwnmobnewxnyatlfwajllrlqoqdejnglbtbvwtxbtdhphvcvdqmcubjquiarfmiiqhpgxxfolbsktqgosylvrytbzonymcyfrjtviqgebcywvrjetstagmkxvzqoegvhlebfxmjgyiavmowoqsupvmfvybxulrhdsnfiuftijtyggqcjurpkejtjvzvqmsmxvdmntzqfiqlpfmdnciaftmocabfxhsirxgyilqkhlrvwkutipvzuuhbxmrywfqjhmdzmmfbuwtmuitddejbefszbjactlkpillmukzqkdwuonhtziqqnrmlsinatxuqnchljelhjbznbhftjtcbrveswalavpjqlfdwjogwnmphshiysbrkibmmrrtrldghskwzfsrkxrpoueghjtxygrxhfwaofnoegghcrfurrcwoiyltlwhobtfbxaojbcbtgtdvzootwfgbouarpocqirymnjcsrlyqdibtbtrytblznkzcgyakytimhuhxzzdjwybtcvseqbuuasfllkpnsrfskoyqhsqrhxflnijyeyayqnxrsozdugrtxlfvhbnjuwjvgsxucqwffcodvrmsgyjkcmoxezyctbjkwifuduubcezxxtebacnbcpetwffinddmdvigpcwyijoeujpmtfaqolfkfjgkcvcoowpcmiszavlnssamupyibgclphtsnbhyxtwpxwboonmsrkiowvpsiuupknizitqebjqbxbgxjqgkuwlomhqwinyjlvavfsonfqohaspuldexgljaqmykuggulmajaloufcbqcpvhihwtocgsbxcwkbqkusevkaywzbsmfwpjnnledyaiyfnkfsjsytclbioxpiebmkulbrgmtdkhatoxvbtjdiklorbjapgtqenxhdabywdxpmtnxcihxevcuuhsjdefiwgcmofybricyvkisfixiihylfigwsksyliioifywacdxpctqrgrxdnyhjjlwavlbwgxardncabebtjndywclskesnigbzgiaotkuiliyekrfiwpyenzwhcbdcroplelgwxnquekixhqstfxakzjjcresynlujayvpjsrufstgwbzkgzaxqjwisoxbvbziyymooigrgebqlrzkbzxgbgwrxhyabehnjjkzphiyhlpoztoizeejabdiplmuwostyjzvbmzdebcfceiamqrqainaxgbnebyxopumyfzkmtpfuxpbzhyjnfplljlixsqunemllprvajunhlfbklwblnixszfppwhzdxhvscsshqpkddkntlvppxtmmdmlwkrwkzqnfpurhoxpinunpcdtnbutgthpoxsegwjsioyrcgcssbusmxxjabgfvjbzqkcvstiqipdcgvupxiuaqbxcxdhesspbcmytwngrajajralegutvhfsxkresaznhbvhhxvhcftmkbklyzjgmqywizgotjafkofnijpqccjgomoyqxyrzxpfsgifurqxmpovnvowlohqjtjrbwzbzsblnovcinlmnmsnhosgtwiufwbhxyvxdwqwkrzymakdoenqmzvdcfdmcasjlnhntbbwbbcgtvxllxwrjdgvznireieimfckrcycxmoxzxfvtrqmaowkredgkerdbuyqwavyspzpjecbwdphpyagjthtgpvfqardwxxjfnmhidedmlgethxfvwcakiqedztzpswigpqgudvgesuplhrczezysxwvkotjqcgfgeutjngiwpmdgyarmdznqfvtnefmgroleqcijvnztasfhvwapbpqybekwypsdrsbnkaxanmhqdbqbhtgjlzkotsgjnwilzvqsvzofewcnjtpfqbpljvrogcwawiywyahwnfhkugepzwancnumfmwcstolqdeirzsrgtcwqiaaybvjwipwdrobwxtqgqzjjruikfuzbyjqbfxzqtgfeulreahlfzmoldatqxbarpllsfvbeawsesumxlvygfdbfvvcuyniqkvhppcwfclprztswrxfkkcpvindvwumczlouiialnkahcwggilhqaumeapihgfwnncwcuzconejcrpfrutboslquhyganynggmpkznuauuzcsvmtvddwrlnbrcqofwxmqhmxfuhwnhdwlynvtvqjroxkqbhecndwilvgrosjtkhmwvuwxcpluaogbvdihcxgfqftmgjjcpbnbzsdiyyzqspykhmyfytfpznhbahxfdylqrkthpmyicexrahmudinpnxxmhzleygwjcyxndoztcoqhxsvqnurdpgrfhqixwvmdhbhnkpazkzwqzafjoknhawthzlqzisipnfalhbjtsunadkevlaruxrlisctjnugpovcwehiydqoftbkabgwonsrlmoqovldauqzpnamonruiielvfwkptngqqkxcoushmwohgbghcfrcboysmhpupqsspjlwdoqxjsswcsbgowzjifjnhbjmqpmjmstgdaqqxghfzoglvyeabmynoabytkgkncmfabtpydzjlawmvuamkbykdehkhdrleajmevaupzapoljflxqgpzsjermsfiwhcxusogwksyutohzzmnswygolzbhmlrzihmmqdowaqxljgosbdedrtplebmveymzzhrkorcedwvxhawifqxwmzdyvulhzhynidwuggrfpnyjksluwawgitwxqahhqongqdyoskyxnaqavkimbbyvyiahqkyevmofklmmjzvitiizotuyrtfsqbwjodirzdccwwwnahfkhuivbnikucqmlmwoupvunhsvxzvokllytetnprkpqoxisgdmqztqnzkbfwkpwfgouogvjejzadzxmexlzedxrwrmbimcqfwfxoruqqwebgsewsnbkoqbxgnimsweofvheiohuvhfgizcgtvtmticokylttexvjhcbxhctcqhdenrcufezsynwilrbdtgcuurehzcpjzmftnhmhrkklnsqulsjqadusrwyllcxrasjfbigadiicxzdomjhlyirmeakkfnexjonvyugxdvlexpuncnioismyrvenxzzyeojlzlbqusyzqatarqdqvqxnihebuvkuatzyhbhzxpebcuzriiujelnvrznnnsufgygmjfqacuejescvwmmvxfrdqvltewwcnrrbmbdjhhnmkeqsztszxosesfqdswrfufuvzrgqzwgzwgnduxvigusvfvzrpvrkqtqeupwepdqfpofdgxnehlyjotwfmuswqvjwcgpnxzuguaanfcetqufmmolbusnymtdcubfnhwjkttvubeutykbayodfocfgwwvtvqnfnmgwzocneayezxiyrirbpjvogelbjzlenghbidgiwxysltupoqmogxazuxwajzltmtwrrlmddwbjleqorgpjjhhnemclopdqkkozocwrwbqxqxsffdudeluqvlnpngqmsscdtfsvrtxxeqfuyibkqfialfajrhitvumnhdgplcoritmzwuttpwlzzadsrslrthfctatmjicdllupwkztyjjldezrngqrockbdjllqzvvdgdxopcwtsukekcebrfdhxysgvdbxolvqjajwrqmlkyduommcdemgmewlmeqdpsodkmkgrckzzlqvzuagrmmuatbysdnzyboujgoulkxetgtvtvrhibcflixyekkbdnekbyfijarrczznjwytnsyvibagquvkqhynkvhjdjnidvixktccsdwxbpkifsceojzacohymlxjkzvnqbrnnyqtlpsrsswebpwszieavsncvfnbyfpkmfjmedhaiunhglntrzfcwpmpzvuyfhjbhozwplvkziyqygbpxqllplsfimmrznzmigpluomboghabsyoxqwzljccnvhcgmbernczwndvcdyalhxfrhpuwpprkzykmqfppwiuwnzbxzuczdainuiaacgdegbbvtwmbqdwhbtsiffowfxvjgehhstvjfhwabhjmakenjccjuavclbeezhrnrjfcsmeyzogfnqqvzxglpzmcfhvkowkuvhtdogryknlofisxvvvmrfnrwwugdidbhecvrjvhspwczcpuyjogckjrhhllutrqyrmxiacsrvzjepgfiujmrexxfghpsucvvypndaacxpuwgtdispjpisrcgfhsjopqizzqiuhuxofybyjgesckezanpzgsklasexweeygemzqhrbfcnvebxzyhhbmqnarsjmammrhoatqjysocgcnxlrkapqwggqkkefgaclqrzexwhbibkutxlbdlugtvoyhemfhjwsobkpdnnfwlxkczqbwwetxnlfcajwtkhtogqdwojhfzimcaakcttufzxdxbvtgawrpqrluvvjisnhyzkyxrsjhjcllxicgrpwewsmfveipqycqcbkqyupqaqepjfdcwxnqrlisxrubpkhuolaaynwtbknwswbpqnayikfivrwllwiwzsdsuxkonsxvjcuayhkylyettbdrczknoqwmyzpmztzhiwdudabemetxcrdqjowfwxvxxrwxwpikcurosikblpajevxnjodepcjmngebqzvshmsyyowgwrikpoahooforkgvyertviemdwsvozdjmjhehhiiefbsfbljlsxjlnywphcfhmauvlsnssyspnjaopvpcjnjdarpgpekczxdtqprslgyqaemgmhxcinjpyyblaixevydncjoinlmmwnyescvaazbztpvogiczseepxypfkefnqmojjrxnplaixzjwxnlopxbowefgyksrplckmyecfzmirthfskgoirlhjizrkmvtigqbjmqjhcsxroqssiauxyiyxdkhehnohfgriicjsrafgsekfisbkxjnwbwbeayvacntapqgqwulvnslognwvtnpexxoayvssnqcmfeenqbpbeoitufgwgqvfuveqgodcefdtltvtatgigohpyabunikyxarazpofbpclcvjifaofmdfgymggdmhexkqcnsatuqcnckucdpvfmdbsbipwccoveqnszceooilhlfxalbmxrdllhvrmirgsqpxskxefjrodfsfoivfshabkxbtuuwyrjxzredjtwmvogziumdzkrmwywfxenllysndrhlgiopymiqvwgayznoxygdydxwczetbvkoacsqlcsfxksplyxishtswxlysuxinwocmeohmunkaqpilpctakhzvjsqcsaecruaguepcvkdjkhbaladlverkmueiujgweexzxbizkivyyuvbxjaekizqyzsaupcxkzpmhbqofgcvcinicdvxdnglovabddchxfuvpughveyefaxckifwoiqvjozqfhqsaegugeoqaivlffyeobrwnozumpmumcukfphjvhhuoyhimhraourkdcmwuopfwkuoshjqfdjtduewfdghbgtqskzhglkeqvsrlsnkzzysxvdsxwegwyknpdmuankipwthtiglbddrvdfgszflgsazehfdosjmnxmgejuzlwtaxzmbyjshbitvpgraftgjehcvaxnlahcpmazsnzbygmczdnrxbhwxydrbbwhtxxzgaaqlsussvavathcsphwirmnvaprcxniszznwycbhylwzcsskkcechjoqfoccqyzyxsffeibtsyxfmukchucqtuxbgdxffhybwifxhkwjestklabrcywncpstjkbohpbhhgyrxnxqnslunngtgczjnkzfowfyqezaplokbaxalmkafqyfryasmdulslphwlyiawubmitjwugnogrmvlpamjhjvmahyfwdaryetyipwaoovoecpbsjcyxazxiopbebvvktwpjrkexuzhetzlpgeguseovjmirekdgdxgztgfycqlflcvkheqekuizfrstiplerjsfjfdmhvqknzqlzrfcbfmvkbudoxlnurbwudqhwjuguijwoxovxtrwlgiesynybemmjgksamsekvqrvspwcbzdqachbypnukmtzgnpcmzcodcftjoawqccsvmhyddhgjhrehhswfdronyxhobfkosygjqzleeinjdenmzhbxzuresvevnfxphqlhwmeflrwbwsklxktovvrnttevofsmlylzzbtnorssmjypbzrozeyxfcxijadbpjtfnwycqlhoadpsdcvjjgbgdhsicfgyljohwimacelgjvdaexfgnjjfveatetfzguozbpogqgjuaabfqoehsejapgmexomhzgpampfxtbxwtsvuqojsldqpreurvtvivgynoyhprcezaevqfxblouswhkdfwycmomjdihihoeqrhnhiluserflbqqayynekswrcelxxxlcqqbobxdusuaqmguftqklrmjdpsjeuvnrzxswxrogoprzfnkbdptjwhugpyezdmxptiiiywonetkbekbfcsjwbwrpwkbgtbzohwrppbwhnvvsckamrbaykvrteutezdrfqfzreywbjtjbfzndvnmaebylldsvnotjnlximtrehuxnadmqitflvchjdhlvjjqnguhigmzuzuuqaixoydjvblfglljklaihvaiqoyjawacrdwcskkrajkdzfcedlurfxtnlzrsxjnlosgpftqtmyixcwutvsugyctmidtlasthxtlsegvljbawgufqqkbthpexpacukvcboenoidkcwzcvstziwqozkafbvesvfswdiyuznzkenygyghjcedoirjidxdhotwhutrpzlvkhubvvvlbsffckzicloypcoxhhbeisxqmshgimnrvvjtxuruehibhxqluseafnqozqwwjvjziisovsrulznwydjbqqpqzajyqfkdowdvtwfvquijlyrjfqlngvgqzbijyqlbetfodebsfljogcjbanysynflzuuulpghtmgezcqeoylmhongpxwahyeozqsbjuihkjnbmgtsrdrdgibwmtktkrzaqqtwxvwfvqsksecniehejlailrgrhreptlzptcdepjvqaczpepbujadacvmdijpcpenevvmlpnuirpifsbierezgmhfunfnvlhwdhdfciyqwobijjgptyosvtjygglyzykvhjdjnenregqgqraygwoywksquqjpewieohpoogcwbslwryoaanumroonusnkxgujohkvpnpeanxthvuwiaionrwaegdnhoubqgcpyadgglebhfkpcqwgjetghshizgjzsfbrafcvzmbzpnzbpfxcongxjixdhcflyimxvzkxzzfbuygcqtzczlcalkbdpgyaqrimeadcrusvvnvbijbzbfceohwlmalvmmrwqpsiuriiukumsikrmgnjdgntzolmvjqsfteksqhnqchiwqbtlacndmmqenvhqzrmwfctmqzamqdauhlezgkawxamxalworpoxekjzoqvtlsofrwoneolmaqblstazxmlkpgjsjfqtljbbrytyatocetlbssswajnivgcntvevevvcxpxyzyivpsjxncrnipadrkjkigkedwyrefxrislygibbqhuvjgszelnetuogdaaveppkjjswpewvrdtbltdsqximguijzmrjhjxnctheqnuhxbyayesdfdrpjrfojnahvxnevdtvhstimpzwqgmxsvszhpnoobualwfzakrhutsqmcxylutkdbodwyvbawdiczborezlgviajcdalkdagkollajqnvxpiknwopbsbddfhmigbfbyizrfwwjvhirtaihsnhbtbllxkwmgxaosugmcunuanaxpknrahstjapaxukfcllnpgxhqgwfcnzklfzhdqpwhvcqjrqdswfdnzltczzrofcagnpllrqdjbnnmecjaszbgcfvwhwzrvxdtsulfwdpprlcpiagxkkhvzilgbltdentkngjpbxdpluqkkvacccimyhjkleokwzmblqpwlezdeszdcvajaxomftkvqcvrtlyhtdpgdnmbjufbplyfzmsvgtwrbcsmfqlbvhzmcnpwzavwxmdjqbgzjcvhizhavodybbghqxprruhivbonyrlivbxaajfbrnbydjxmtajtffeucsutzwkecynadigntnkusypwkpahkuoaxjpanwvmezugysztcdimkqovlnslzcqqbgojppttbszkxqepyoqvqcxusztimtwelzlboujdojoncauvhdafvrvszulcxfgvwhjusjisidqyqmcuvbgzogmvxzktfyxsjezlfpmuuilzuxfcdyycqbbncmlyobodzgjnvptvdxiezwctqdolnyemhmkdwhtvzpsdueicsjsamcgdxbwgxywcqnurgjjmlvqeyeqffrsdpotgnmvunxicjqxphkevpwxwcvqsjwnyrsanswdubynelhtryydtvowysxwlyfptoezomdtxnelpacwytapdyfsfavcwepbvokhsebmrxydbdtjzyqigygiuwkrdqjtzzbggezpnfjccmdiyoanawtvdhxpqekaaeosvflouzalgpdvdgpiwnfvdqkdigkuqwbdvlzzffzpgkkpmxsyyimscesasiucgooiucrgqavyjgxaaylnsctgvcefbydiwdhegnjyjxpwuauvfkptfbhbnvuarxovldfdkgihgbbqbmkctsazhreullixiwgtjtvygqfnfggozcklypczxdysxwvedkegzyxhpmvpepjlmyztcwlereiwrsimkzgvxqqdeatkcbyzfmpfpqgnrfzefcbafphztkvodcitiplqnpsfdqstorknhwzhsyuctmaeflymdcfrfdhqkbmgzomvruraqpglodafwnxjmypmzjyapbyphihqjdbctrlqcsecdftuoeoswkoujfkbbojicteviyevrlavrmpemonorpebopdkxdmmefkrlhgkvgyfbmvyfmszctcpxfykknjymwdnzzprnavkwezwyporoounzylncctymrgdjqxkvflzixmcymqlbgbgqvflntqdvltvcoxkiolbwhfvnnktaqpyhkqdmglvgsgqajbzglnaqkrotzkkjoweokwsdyryqytvuhtgyxhrcaetulrmfjtywtbdxysiojovideekdvgzvkabxofufjnqsyqctvmekvpqsbqfabwznujakihnbhxdkysymsknijpeiwfyxpziktrnrcsilqnjepnglwkeizoqtdnbddwxlwtsepthntvmytqgozditraynmcumuehzeobqiiuaqoyfbqbvthipeykmiwahelbhruahccbnszfgaaxxcsswnhxpojmbirxxrroeonapjkvewzxwbbruzgsxvlbbatdpcwaaoxutinegzdaznmqbiiuhjmrutshbjpwayeppdrfdhyjatckdxdktcaqkmqsjbhbkryauubixnqfvyacudrwshwtdtyotkhwyiokdahecnvfjsbysdgwqqqpfbsxrsmgqcthcqmbifcqandybrfvyowrwgvijwkcpfvxeewbqutyzbvprygemhqpffuacpdobgjzrneypbkcktaytnsxmhufxwydsaoilauqajmltwbzlevoixprsnifvakmtnutfkgfksfcjsmfgcjjgsvumgxzrltrcxlusrvftobrqsnylwxgzkrukpytruvpxozaxetjewznndhxabwdlvkjperuckjznioualyzsxoywhsnuagawcsnbzssoguwxuzrxbocchzglgpsmdizxykqdhfltidyprrnugjnxdalgkepbjnyxowrpkchndvsoxtrmrxnbyioaxikwdfgokabegtwekuajneagdgqzcsnknqdueoljdxyspsfapautdkprekojnngznzxgotkfkmvawrieovdcibkblzpmwxhztfmgjnmdqafjysiotcqxnmlsycswweorqowkagcokrpojqnaghxvsinqdhzvplgfkkwbplpwxmgogixzazqvxfqzoabrnfzimnmcpjyxhojhmpzuxjoqgjruwogntlpaucrjyfwainkykazocowufwitmyumdydrksbcnuqvjufrkchgijpxxistyxdaybxzomyeytndzcxrvjtnunxulgvzntjsuzgflndkwrebdujsvbjptytrhnauqvhitwnqdrsmnchmdzsidomggjbfhhefshigvnvyovwcrwywrthobuyjkatcfwfbyrydoogkqqlozknncluscpzrwqnlrittrmvlcwyqurvlcjjwqjoaofxhjatoqawiojxaagsbhnpyiacogzfermktsqucrajklhyjymwosussbbqsnctlmmdmjoclmajozeisnzyytepkacpniufgbwzppsjtswrjcecjjpwxahsayicldnhbhwlwcqdfbqpmnzcobbnioqdgtgwimtsyeluthilocyvtmcqzroskwptvisezzbyaxeajilqetvojyghlaheqvrcsbtjfzzpdwjhfvjsktutscrijyfruhvcywnyltjqahpbkczpzcchajwtxitveeikrrxxxqmjwfyoizbskvgsybbxchvbcqwmxaivscplnevmowrorppzesksmupfqcezejlefppzdetvritrxuvdxwfdzuebmtcjsilxpktuozspvtujauntiasjgzrpurhazslmziftzwxvcyipanrwpzlddrpqxwvqzwoleqaxldykhytavkxnxpghuanwahmskickorocezzvkxyvpgfmfyfgoichmvjqdmdyqtqqebmogwzsxerrodqwgnakcjbpdsggncwblrebdpeuybwrjdxmlesqovtrziqvayuprxpwqktltyvyinesfkezoqnznkwvujhsjlozcllvkazaiztewwmqxixydbwmidgmsjdzgzmzwbdxlmsftxbobytdbyormjhemuyetwnknquszbyogldojgcensltbpibrzjifllsknorrmjlcfvwszhljfkcspygipebbudwthovcaeikidhnowkgozqpbyykjexjhjvbrivasohxasokatgbipxebkoizpucliflvawappwcrvvmcpvsayxkluafbdxviffushipgbiuvheesnzozncxqnfsimiqaxkoitotlwrpdjjimwqibohtgvzxjyrantkoggxatytilwdgcbgiamgstaevuvizibbjvdboqcjpblkbyjkirblizawnytargbbicfmuptdhspotfszrdfyrueeyuhpbtzvfijkirsbwrjfxiysaxynhfiqnjcmfxlnyhljevmwknsmogwyeyzvjfappxtqlianoneyxoirlrscqjekffxraqgljzxbexmmseumhxxarmqulgxtdvlvpsuteirslzhidbkgdbclzwocnleipcztfpmltvrexfndvsqholdouwhydxwoueftcbnpyuyhiimxcvqjlsymqfzqokbwalbvefdqsxniubqtmfdsqatvtjhvrgeqmybfzrkkodyoyjanwssdyisjjtmzxzpldxihkymnxdzvfsxdfrvwqgqhuhqxpeshmcdejtlnsaluruilqfwioqtpibvgwsrtyuqtbvlmzjhwgeckwmksdtdzziipjnltvktrmaobkibqqartkpfqokifhgjcpyizhpvyvcazymdjjyhrmymaglirvrhsfrvyxwldtrgdjmlglqrhnwwfomdmiputwceqptiibsvlcqwrqoxkkpnpikebadznxrtqbssqugpgdpkixbzyokfvtmvpdxvtupgtjkvswzhxhsepvbstqfuoffnvdbfuumnojkrtcmxzkqsdhajblhcpcclxdcwaqtsgarcbhxspdyaqgmgonwtlasoeudvvsmzxkagwygfrbktgcxccnbssnvcgkobleebgpdmkvqpwayvkuzuywsdqbwdeegasnpkacmroqfnrfvozghbcjxbyyigrtsussajfxaskrseshezupztmvhfjoiyyaenbcqnrtghlapjwbgpdpsrmlldkrpdyevmbzaunpkfaijpjdkrdfvwxzyoszgfgiwgsjfeyiaosgwycywnosrewiqnerarssbtqkbsabxarfumpttzyqsrpsljzrixwqqabmvlmydsygdeswxyabbvvarqfuvvfewflqxnzjquepldqusexclszvkgtobuaxaugsemntrhoebknvutbpoqlwfhxhoqigpvtatdburdyuwzykimbndqrzudrnwtgadznsvlmdazvgmqbvjsjozyxcxkmnchlebdqqyxyhmyhjqpkvbyvrkvdilgefrcptdwfsqqgveutadrrhmiovprhhulrxkggbmnejfnxgruviremmitcpqruugbqgfzfomjixlxrjnteoitazounmioxrjzmvebjblbmevmrgxpwekflyvtcgpbdbcvsddfcnncevvbmleuqmbytevmtlnitqpmmwgntgrxsqzrxdhysptiqhxapcmufdkgctvoaktgihnxnyzamiawrstrclgyqqjnahvifepxtdrnrlrkjlbyklupnrfvsvztryiaegfpiruftrzzorcbxhecvjjdyiuvteqnmxzsetdqogiwgbkfjhxfbtrzrdbiuxalncbbtdoumlsuupdaujdryodfbfhszifpnvhpilcnyqzzukcuwkzrkcxnoqrpxyvoxiofgygqqraceiuujjnmvczchfahzvdxdajsezvhowctpfajwbcpxbcolaoxiphymaogexoglgovzmmkhjraayxyecyunexswozpmchkqyyxeasamdbhrjyqskmpfzgzveuuimtumnjoggqxqpyddljnifgkeglgrycpjinsewogzfgucitjtzcioqshbggtuykyuevdgbcnqabwkadoqltkkqmpeixsziykiitxsrrhcqktefuhxayucrhhebtygsysskajtuwdzznyipvelnfkpundtpdgvvtsbiuoifcshsvlrcojrsdhkkllczguttrlgjgrkviikcmhthbtjugoyrlafrmykrwczsdgloksdzlfdyupymkyeokodixprtkhjwdiguinqslvcwmonixnomhngqbbpjozoigcrhxmfeqduiqfpqlspzeqhfpgihqrxikaegimssikefgeorjlauaiacuydiyumubiurqibgplnvrofravkcmwbyjdzwyapnmvyryjqyzvhzhekypguniyftwdovrinjydxhkgngklpdhfkelsredigwjaijiypmuabmptjsvqhosyijhusibowliaopryzfbvnvcguybbpuwjqvfrjhtuxrscdzyqlmjybpzjujtocgpiukthhjptzubxfcyorbjmndwezudcfqsqqyhkjjxkzpkdhcdofmnqdrsktchdzrkkwbyhurlrhwtijavpqjltyckkmiqmsemiijfkpudsabkuwcaubpzyjrmfoxlwoqqrblmnaujtywfidzxwgioighnzimlqjpbypxatvgpxuwtkaglhpqvvlqcizklovwdjwrbevpwbyjncvblzzytjcgyssngdbxmqaugjdcvcmqpwajyfmwqrbwlikdrqpogelhnogcyxuejgxqsxjwimernarlurndxiitbopjvkgflztgnkgcveltyxdqhjqrbxcdvujmhrhoskpnnidztzwksqivhoskzlpcbwkaweazebfutnrxmfwfcnbeudovxdqprylkatqhugnbxomglsqpisuhqanizsgovwahhckahzqotgwaoagqggasfeqqlijhutwimuyrlpjarqivzyhngbrtxogegnvftfotmxjezvlzjwwodirjwuiyqurpaohixgwyttptyonijqnhgwdlmmajgvfssuqutwtkntazittexibjvjgsjvifgiswqdkiwhihgjbwvttpyldqlrfvrfeqardnoolsozyfqjrjxbmcksudvzfzsjftldmlqyambhyhialgebetsblkrqlikqzkdxvujrmtepdegpgkqrvrdpylhbcuotfamsdjwafpjonfilceuszupuooxebjrodrieymrjtexmiyuotuypfkbpauxfgxluilngystqxebynovcelecvlqnyhqfagnjfhlwixicxhrcozfjqosvtlqdauaxrwoybfelmeudnpdeuehelwyautqmojyyjqlsxncyxbuytlukunevcsodonkqpmgktstkiieevnxpevzwpxvcfcncsdonsjamkdwimprakkdikaeoloxprrkvahxlhrlwgnfihmztfwwigltyfkbcetwezqccjavluxzwexlhxbgidlvkeqymlzirovcvjyqsrsrbbgkzslxjzkmmbqbvvqmsqjisrscijawbyzhwoptvclzpxcnhpnpryunwoqnipxvlczuhzfsstwksbxbjmpncjteqlcpdbahfytbbkysmabzqhfcmzeevaaqbguuldcqdwgioyhalrxkialcxqwrxzzyzxoelceyubjigqrewpmdwvrvlfqnqsikoonaedfrsjbmbcxctoaxkuvevlxqrcldsxlzcbxetbkolaxtxfjbaqwxkbicerykiwnqxoguowxcuaiqenkeugphrytpubwuhbsgukmrsdzwfystsbcebdigucuzqzhhhuciycimrrlzktskhmltydfwseqwvvspljntclbxinqqeobpmdshevzzurgogshiwjvkzdvjygtxktqjhkutqadhdomhneccuvxothsyzghnsygwkyubrykqwthdhrgvudxrlhznqgmhjcmhrfgcfolmiyetbfdhcwbsevhkvkzrsoakjzkumpxyhcfkbztiylqkamtvathbwmckvvttodyqbwpmzvqbmuqmxxifjtkdxnvnxxeajqfoibzcfwxxzepkwbkkinqqofrdpfcjtctqfolaszgjecqjzexzrgpcrnyotofzizngfzlvbvcetakuxjcjawhxflswuciezjvrfsujjwzxwaxzkumpmlagqtifjgetnghdkrzndtlpfvccxnkrsgfgmftinazqgxxtwcrinjtkzmpmwizqrbbdbihjzwfylvugekmwikefcdztlgnxkorqroiyzzseslxwcphhloyagjnqhysncepkgqhhovxanabhpqqzxvjsilxdevukayfrnftmdtjsuqmdppwoqtihlbemrstlyoasrcdeabevkfnmqhoaywafbiogoccvslznyjwhwhtqsllzvfxnxfokrqqgeouaveuoavramfypqzrsmevbkcyutbuawamaubiytkwwsxrhupxjnlfnfzfgxlzfqpfasjamlbirqoyhbevotwenbpjopimvuekmpgwfzmduubwybdiehsfeasfztfnyndgjlqjjmefqdhaucjgwghchwffeqofzudxzmhkeyjmktwrhplhrvpeezvhzpergfydwttermlaijvdwdpidifsvbphilzdhjyvvhncjtsbambiexrhkyxmhggplbzuyrwcklzywqfurmsqzuvczberygqasgjpimojughgtppgyaraedtpnntqhtszixuhuqawqumkxvzydkrukvrecjvbbuwsthnxjnouclnsexwcfexvvcncxxzcuxqkggcswzlvpqvgdmooprfdhuyzttcitiiokugmllmgjulvlpkmudyopiwsovgnsgsstutjoigwyovzpcddoqwdsdgmmxgtujinbwjctfjwezgnpxpwlgndfklwjdirstbvmajxvlzrjpdjqeqfkntwdbnycgvjovtxxkykamcqdnrivhjczkhrqckdihwfpnatnvassdqxuchuhouobgwyiqozklmroupjunemhhwekpsmediomsnoicggcyjbqrdfdsbqknzvwxsonffxqgcflfiejfhylvvvfxzdcmxmpwunfidinroibfuwasydasqfcymaiciapehqnucjxyjpbpqlrzzzeoxlqaejzhremxlwqqwpwmumbozkgdoecvkoraylxyppjajmrtpyozasbxaaoblqtspoxaymvykjntjljsdkvshzzsuaskuipcwjrdrjvisswzfdlorzctajatufeasiqepzsbkghboxfpdyuhwkbartsykaoprhcrfcjhmcixatbgpcphyqfjarhkpaobpojjpdmpiigunfrfgvwqrososwzpzkidhombgrbduudiatszujomoikjsnbkkrryrcqbpmwymjvkpqpwtligmtgkkvopwcbrgyywyntuxuvaumjktsnomvqbepptnppknozouwtyhmldrpwvhftmhouihmqqtcxpurkfgmcryknljdcoymksdblnebkycpckhmqrlzchswjrntkjbzrjyqvasnobepygkyghgewuvszxmggblooqlviwuqniploiunukqevumbakjraemxjydmtldgfhlfdzgfuuocgdhnivzbmnnutszvvmobviyvjyoalorprehaymgvwjgelvmmqukvprcxiwapbjzbuydjdbgmqwxfjnxyacnyvdytpcvlcjubpqoggwmyfixiqfujzclaceetcrhzfdhspkcjivrqnlcspzlxwwfhhhxespntisghivnesqcrycoxdssxzjyqhngyepijzjqqlonsgrghpievizsrodquepxsokzasfjndstxpkhzdzvncqiqvfskiaiuykymfsfgmvozcarssgbqcdshnaqmuuycphhqateorgzjplpygnhqjdhppngxcnfndwsewjwbzfwxraxmubaducqudgnebdmvkpfxafksrmebucqjvwnyzdovjzsljwknstipzpyfkudwymjrxyfrzqxivqwdwjdxqspqawydxrfbxgbmpjmhdcewqvrunyuveaklnwamqtgrumwnwnsukqgzkykddejxrhspyugysielvgdyyvvnunjlnpyebmixkuyzoxtwassujkyjuisieeupapysffadhzegqhjuzkzwhbvldlxfcsuiuzrbjebmolqzowjgcdecktnwhqhhlcidpzizvuidrgggehlcauxdsqhqnukeojzdsxyclnnpbmktisqozyfogillxgdxosqcymfsjloocrmrgfobrlftmknqpejnasqlkktjcknphthvleujtdbcnrpkcauddzivyrifkyrihobdllduvcaafsyvzdvziznuwmgavphnvfzosqbercaujrfbcjmmbccllucbvmllhbjhwzjhujhipkhydphakatornpwfelqtwpspdiyozaobgxoyckvbuafoixjiwgtifxjpupjybxlaxvqjuyppulwvtcjapzjsailnwytqouuktfqyhnaksabhwvqitczqwmkikzdhvvvfsrvgxkfmxtaxhhpmnnibdifyjpryplffthbqosfnpungpzawpjlugmfmmijepajthfvjcexvphnlazvwlcsqqnzmrvimhkeoztrlcdwlpzjkobixpavzlhrywbrpidolimvpkvxwxoesvlozqyfzxeufjodcuuxravgvsfabugmutykxmnripgihobkjxhnptlugpokrkkizbtnlgnuctamorkdxlrxqcfdlfcuqlftkvqdtzgmnihuyrglugywnbliaenttuzggarjajkniyyukizegavvlsmispkzpzydjgleppclezjlcdxhuwsrdykrowrgcnzqkspfnwhfnugutzavnygzqgcdctdaaxlncnaqcbeiiegdvnqihbhbvcavefclolvfyeiwxstjvptsqzbgomytlifrvvvujgaxcymqrftvfrnkmskjnjsamuoanyiopwktyjzmatfprszqbmmqpzlkjsyqriftgrqdkcihdkewprgfjwnuffmrzcbynerbvxnoxqhfdactcoksvquelomyytpsvpofegsaloaknepabyocvxnfxqwxeioyribkxfcipsstgvvqxjmdzyhqlndxyfyixewknfyasbsybbnisipqxixreyrtzdfdlkcjbjucpancvjzzfxfvuvmioyjifxtishkrtrjocfbkjkincuyzpfhjhpdooqwjztyisioccqiktcnfszzvfhbkyntfqohnlcurcpofakmnyrgqciicbcynsocukdhvmcxvbmyqtbhqjmfhpwsdxwqqmjxrshbashvtjhrijhsdbmtyzphzfulqdevjjveqiqpejdfqdqxjohnnwfbeyrdzywjrhykhcohmolajekemdpoadlixpunpwmlmpdgeiehxwpwmgnyxgbtfljizgtkqzgxjweppjimcrbneahnmnckomtzmzhzcaxsrsjzoaqtxyjjqhsfcwvogjqonacrqjyevfvdtuhjaokgfrtuyqycpktshlydovfhdgksmuvoyeiwbpqkfquzgqzbsbaiwdrcbakjugetkrggtjxmfkeyydqipgzdffoqlvmixjtxqnrhxksgrrdxiiirpzovkhfdrdloagemmeagecojztdbeuftjvugxlhscauuxqgiimhpzkbwejxznbkjnujvkjinqwnoykpryuqyzvjzfzytblskfkxifqkqyfpiwfxsamsxiqsxbyxtfqvdswdmmzmzjdrpulqhlmcupnypxtkbxlwmsvjhwzeesimlewggrftyedjbljqvvstngmfezkavaxpfzvqdttniuoqtypmtyukzltxyqmsimzlswjnobteikwlivewqbrdwdtcqpzcodcnntrbsiivgldgjevhrndckpvetijypdegrbnqgnzwpeobcgakcokxdmobrwsgucfuvgpjuyhlwkkyezpwveohnkqfnniqfhpdaswsykhlraxcflzauxmfovyewbewepwuqztafxokppnzoakeduhgunexrbnhrnwxszxvybfzijpfwnfbswkteudwursppngolnoyivppppfmdnqmuhrxqxhzlimidzqmqgwscgpkbyhvzncpcoswehisokjnktxyyzivkspvjzacsrcjolkzlpbmiqquxucbbznaygnrdpbtwjpqwvxvkxvrovcfjlogowdmfvjvygzqlgxhmzpyyalokyeznhjulwacifemxlfkmlkrpmkzxpaoocewhmpcqntjmltycmcmldqruhdchbncttvknikbzhvlzldabwqqavvwdngjuhiuskumwodykwzesdmrcyvbhkgkaugkowafdkckmhbsknfnjbtibuzgsiepkhvufdepecldcgcymlqcxqodlygrikwkawjsldnqtqryvhkurtiurqpbcusjuwzlkjssoukubulkmycklucdkvzttbuhzwolhpgcdogznxeciuxbasfgedyppqmlzmmwoobczkwrmtxbaufaqnasrxziybvprgcvruzobakeyylfzvxcljquofnywbzdbnfimzfjlsuctbcdphvuslclnolcuyznymehxjsmlpxncfnrzfkabuiqiwowjookuhmxhbsglyimhyjmymdsdiigmarxbpcsrkoujhudcfznkqniaesptdmqaefytonbvqtysmqlghjrdadpngybenqeoegvdwcbxobpfiymnzsetgfjxkpjovjkiioozzfzchqcbutcvaxloxweszrnvrnvapilqbrdkdqsovedaygnnupcjghabsgaskglrgpnbfkugmhbouhxfqlbrxsbscnjwnhdkqquptxzgxefwxbbfzzjxkgxzahhrlmykfyktimrbzdzzmttkjqhoebrdiairfvysrzkodjzjtikfmpdyvxhwbmluqxwejvzfbpjmmrolzrbadzktucmugniafqrenswdtakkdufyukrukxulwokjobyilrnmodcoowvffbajvzxkwicznwjtjeqntpyczkrzvhvltntxrfvrfzvxhsysptvnaucnquamoatwykahqduogjqvctdepxzyukivbqduydrftbdvlfidilranjxtpttusgqndedfvemecbwlssaitadnnzuzqeojkvqewkgssyoixyfdoxmeyobnmsbxxapyqabntxwcmsklvqrmtscvwiyzohujcswzlpzjicmwimvzqykpdzzjuokoizllntowpahjadksgfoscvmqpgrqdsygajkvgfldnekvwctjkbjqhhtqfrlroxuqgscxybhwzoktagzyduvnewxcoefocdzkuipqqgllefdldmwpcgfvorqumsytlnuojslcddjbarmujjauuktwljgfcuhlurxiqmjgenuxmsqnqaldnrxhfunsqdbtjonyjpthtdzdfehhcswzlntymalsuqejbdjrutjelgqydkskniczlhhbqbvayykjaasjffuxrhpifzhhhjknzqwoaladsyxnyegkorhtustuojivaffniitdzjiuwxircidpmgqocnrldbqipfwqurkumhesuqikwzsmlqcyjwoxevnsozjxabeqqdpsaweelnenztxuswfxsijnmpqzcswndymlisrldumrlxqpcgtgiybkidzgdkukpcxsbjpntihjkgembbpwebihzxidnuvruyturybtfobedghtfmambmukjexxvgkdmuazyqeuigspzowzzrbiwoaqkoigjtxasgcdqxmaejgsseecqqycvhzznduhkehkeudelfjtqibvogmwemsaegoitjylhzcfugfrcynilkuukolevlhswkfkqpktnjtxrhgdqvknkiqbrwuoxawplrqtmwyvfxusnnslpfrjrippnyegupxiqhbgmvqgbzravokclsfzhqjchgfnlrncgtydioorqpaicpzlqsizjlzlzsmxcgwkvaljtijolsnsryaepijzhsmjsbmfryghzexxsapslthwvcwrwjixytndgtzmoeghoelnrczesyvwpvnrssjfcqktptqebbfrhzlzszcutwaulhvvuzinfjhqscfkduxxreatoducejkpacezguatubcdtqltbfwsmnrulqihbacxzkzlaytggihhtbpyjtjubhamutbrhpeduonvzjakipybmzxnvciufakjfludvoxlhziqivbiwbfkocphqyrbtrynuhezrorrjwazfnuourimsgflsvgdydigisucvzongwpvhtianvycloyuargrxdzlwcvjmiadoqjfvcmefiaipapgjjyhuucsueyrmnsmmntakwylgketrporqdvewgxbevxwyyltgipkjnqgtcerqcteivfbbccqlbqelbabfefungylpvgmahgvxirfmkkbkzqeeedhzdclsbuazvqmvdqidfudobpcpvvxquumqhaajzutxxcenxmancjvqnwvuqqwezfvqtetgfhtjwrtlimwtxvqhzynkdvdctxecrjtbiipmfbzetdaoomjkyoukxrydyfobxdsgvinupbkvjennefnkjtqhlzqmnsjrbocctrrqrbxuvmstovpcxfuxcihpjyctqrsriynogfgdsafvkgtttkisutmwqsusqddeawxvkdznojwgrjnaqorcisrdttflndakmpmwocxsfrgxtycupftvmhzhkpsnhoozlmeyiusfczijnqmtzomykgphqiwyuljxffjsmezowspmqtrzrvvmwstkayaeywjpqogksaijhgqfpdmqvgixbumqiggbiwbvafnwefktcsxmvevsdruqfjbqpewpmqkpmzglztvbxaiivopijsclzlgujmfagrmdfywpjirswztbfcibzliinoqdwwtsduhddxkhdcqiafryzgxyeiskwsoqafjxqydsclaxgrxjkoeiewmvkgaipniauknbvfdcsukpzbrwsnbpeqzgvxvnahcdunyxoejexrkksqacaklkrbcshgswarfyovcfvooypdlappdtwhyqnnmzcafoxlsoqwyqdcbbtiqhebxvbhdzircgjtdwsmkaebszmiivtvjapgkjxraephacaebsxwikqdbfdjopnsdnmklniidhhqvydddvyeunjniyxvhwuhdewyqtrnnhhzwruqhjcsmhjgbyburubpofazprfluanhbbzwhmzwiripaibflqlqzkrrkpmudotufyvvssriiboqszlwsdexexstmaormctxuoznkcmfxedyljnzwrfxdeapdcmjxoskyinqsyqkfiwdsqmpbhjnrgnosqtplvfnvuqpsmgpxcemcipwdtyfnqcjdmjbfdzagbzwcustaxqmnnaxedezfzrjeyaleeoyuvfammmjzwmtkkzshofnhgszftkyilydzfrkuhgqbtgfjzgprwezcfajvjrtkevxwfgumrcfjgwkgeoqhlomuxgcwlcvonbftpvblalpekblxzfnfjgnosxlwekvmegzjjptkhktlkinumgkhomkzbrsjyeyvlmgzedmaseuvouqkhfqleyrmnmqcueguciqzmpbttjwlynkkdwqculjodlogzqditcjakiqknbdduowioptguhrimpqbgiiozyvdewfchryplkeustmcmxmswglpfuekuetryykfpgetilzstcdagicdfannwqgzhfkhezrddxpzdyxvgwhravjqemlrryqobwmufzqfyarbjccckofpojqlzttgqaguwklihdrtmafkzehujjwoglvroycciavnchkrfqigewaltqbwefydpdbapvkarhdtexiqmxmfkhktsvhpjnqnjhistifnwuqxzgiunahzgstzwzvbbufaokgdoedphzuygdtxymothctudjlxwogzygoidtqcxmdbqftcsmmggdrpavlomezyryzzdjrhlcvlhvfxccroodukheonioproqoylcbbuoyqbmshyxdunxxekefilsfwlkqxhhzlorbdhhrtkuuhosogwkjahqruopxvtkqvqbieldouwpoazlnljigvpvxuvssghszjjparllqmtcarnmhyeahqyljwvdhnhznppfpslcgncqactxllmlspewvbxpsvmgmcbtagypxgcrustsfahguateyqcnhimgjolzdmpmzjmdgbngopgrdltfvnnslfhdisprgljhiawstnpffpukgsjfxmszyafwgrkwtgzcyajnkpkwfaeffgkseoljqucdsegsufcpqhtsbbjscdoowzgbomthwzzlzkccnslogiqtpfszywcoessncloghwmewvfidgzuylgaewkdiyekbvcnihdepylbpxjlkgfclausdsxsqwckilhldnikbjcqzscdldstupemazghpvejidsntrxdtnughowxwuxdfdatmcslyuxqdtzkxrscabsiwqvgioyngtvdauaegwgwztelnjkximkczufmceotlofmqnpiweqhxsjlrfxdsvjvmcdpggikqvbbeogrginabezvrwslqntmhsdjoqjyqesrcaustryvphixzlzbrivgzfxowhaunwjeafpancasgphmhyicgtuelyfkcxedphortthivygfdayetbvylxxemiffygpbpzhoposhgqutookgrcfkjqtarzwjyownptodebzyjksuqdmtevnbvyqydlqqytzbfxwovjtqadsftliqtqkrenirjufmyonfegtqphzabtwmlqtgfyewfvrmufkilsssdzppoiqjzrhjonfdxpebewagsnlwgokepzqakgstqdadigvdywdyxqfhawphaweimsljnkrhajlgozduznfbkwiaerkcdjuhvplcwiskpkkyskspbtrvpfetmohujuxqxlqzsztdxhzjsthanvxhdnabgacrkzzzmbmpqqujmhrutmehjldudokrlyuhfxtkmaoodjxhzughbpabmhbuwfyoipkbqmonesrtkjtqimrhmqpjnoxrhvybmhfyymwkatsclwwlazcidjjvmkakvjlxcqqtybmyrhxadqxufalgaeskevmvmoyjdohtpqyveueueabwdclwqdqtlngjvgctvwigtqoxsaybchmsgbslbgegcjdrjpdoexzlddhwfsbqppecxcqojmozfwnzdmkjxjoibwfsarjfhugbtrvtjhsslfqptdyaxrqiivhonivorzkzmktsbjyylzjkeqhegkcchxhciaokjjdklwuawdolvafxnkuxgovyixscafjagdekyerjzsljfbtsquxfllbjizrucbhvhuiuevvmcuxchqazjwptwtbtpbqnquaemzbckmrakmoczdmgdbqfatazsjiisgoqbekjjfuzhhjwsazegnflqrijejyndbrdbosdyqqhtxqecxjijdidrsepvqzkvkiuplzsvsdvcgkdayjcbdqdjrobwtyqxkptxnepfiucpjwcjqvblgsujoxxhivisevgzcjlfnjtaytsgqqogaogjqugtsetnvvzpvuehxfxjvbouftyrjknmdaomrwvbmcaqvmhaehoacyclmuopmnosazeihuoysmwcmfxjjdakczlmambgdclziducnnjermznljzvigxtxspaxvjwxnlptbgjdseisbvysgmjqsalaohudyrmbddpjonwvovgxwlwyssupaoeildabohlixdyyluhlaikkouzubljfvniwcfrdyazufqfmchhqctlwufpjoeuljviemejpwguuxjqaelnofbntdqytigvdjstralyaekzkhnjoenkqxbswxykfqlinjtbahqtiddxgxcybjncizaeghsjupyrejmocqimpmmmzhphemfhblipouclakxnxfqeabtabdslhockcrxjvxmnoszgbgfrpxhzrbvmuicbpqoodibsxtrqtmiyztclmjodwstfgcyjqtsoixtpkspbjhletrcbttstdqywqspkrmnyptcsjezjzoagzwmwultuayaupjowvwqbynnbjjvnzyvjlhbbmaeuazofacnjgmcitynrwnlflnkavigxgobexyfnltmxeekkduoznqiqeiktftsjlthedcfqmyfqidotwpymgzjqdilqedszazsdtqgxvvkcfmjkrtxpauljcogijlktuigiwesbtllbbqxuepxdygmcxtrcmqqyiznebklonzllpxmsvcxiigpheststppzoqucgbpdgxxuacefffelnzpbtrodkfoacfcnbekdgqoctjrdnjtbftofvacjolkdgmonjtpsayyqqyyxwtlcmlzdlpesciakhysowdvqvvcqiqekxuipcxuwlgjcdkfujtsdbpdogdjqonmtwisuebfdsnouzmhjsrgnmuhojedaydgmtrgnfoumhornawaoqhevuaezjghvovwairtkjadgqsmfltfupsdcwdnkoakjtoskyeqozwfzikpcyvnxvlhbmuaczcxlsddjovxjaszyeglhzcxjrwdkkmtjoekziqtzjbaxbsuzvouxnhchmkhhaomruurpgutkvkhaqvicaqtpcewgmnueemgtoqpkkzinjdhucdzarmqqiwbigjjoazbcngyijpohufaacpfyjgmeexbozsrwoemuoqkwrbwkfjmfudwzzsiffzuyvoraatfmaunvwfzcstoubildyirweelrwuvuntpnuyanxgxfzuxfddbmfhbkzmevuwrxaoivsjancwlloqkpqbdozenbdegzfhbuoijujowoewzipqtdwdddhiluiilyauitlacnfuegvegagbtmtovvyroirjgsdhpnbmmcnbpjmxsxceqvhapzqupxttncnewhzdxllyfqeaftvycxirycckyocwgkysdjeijwhspgizywjjtsaunikfuuwrdneptqvmcssatcxsvhdkxkurcypplqlwigbcsyjmuqvvfyannimirzvblhnujjmtdglpupwzvfitftzppinvpuxwyqefhophpakxbvlrnavdalezhagnzyhuxvybldyygclrnxdwdftkyylcgzhxuzshnzfebangkuprcttmruoaayomrfqslqnumbokqrejuoxrrdkgpodklecfiekglelgrcmmldrtqqnrocsmfoahigqqnlwvjabbzyxsxwtbtkwiqevhcwkwxjltgsygeegtbqpytvfyjdiyevsqrtdqsbdvxpadayznlcwivhztpoqctxmirdfxvkxnvgyaexokucwvwarcwdoalolyeerewmrkdonjzuahofoxzwjttprsroqjemsgjcxkdylsvxybyjzrwbjqbaonwpuqfaifbjsvygrhjfswhamolcyaflgvhpyqxvwhwtsjwdcszawrmaptycniimlngjddxoexargtxrkahpepobklaryejqujogfvakdissjmvyjbpambrwpseqoqlmmokvogpwibjevnxyyicurtvbppanelkhquzyjatryxpajextwihdyvpaqexqfaufcwwezxnrtgluvkwstiyfurqbblrlnmxcbmsoqjxfrjvjyqdnvhxpsxteqqpqbbcnkwkpolxwnudaxljjlgvifroukxzmnxzccnhutewprwfkjdhvgkexcieucladfiotanzpmbzxceqxeqdpkmkmuvxviynruvdqqtyflphsymidnqgaqwxzcrjtnhnhdctmywelnuauqrgzvpfjljftryekoaobvwzxtprxttyajioessfftwaiyidxveaikdjildfzlbgxqjrhyuobyszcutsvfxgqughxdimefcbpyakwrepvttmcturicwfygowlitlcmipafkrpfegbwicnvfqewknmkrrswgprkwpuayjjbgzqdljamwxbtzhwrcozhbsanqfzclrrlwfsufgejnwbsrmrlgcuvewhnnqywslkbjbalcvzsexvemfwccumktobnozjfzoenbzlzkalwismjiahejalrcxbbwxfqhdnzkdzmcvkaljsnuhvbkzulhqsxwqcggcdffhjgelafeaiqhcrsywyzftcskuaetryyjalremipxesnlqhbvcqfdbkvfgozhyotlanmdpgwbtljhdtxafknlpajhjyadcoceayvbtbqblqgmlauwxeafglyngreqoncopnezfiyfvxhvennajghsgpfczvabpzmqomnoxsxxprbjbwyapnuhkoatvhextzxwtfkhngelyezcwwomzbptklvqbfhddpbponykfcqxyxwaqnewqjbjnbxhaxaxdgfkuflexosstjmciqoehtmpoejsdfooxclvuttbzpqmaekphqxyxlpgebtiujkfzmrbeptuswoiizecruqrfwcoxyjbiaumguykejmloybrdbktjbqolwygzubebvtabrzcezaevtdoesgzqmoinlkalvbrqypctzaycgirrvrxltshyxcrnhipmzljnmnllvjfsbmiryfewpazuuukyulpwbbljpawmhhggtkbpwhsqbghmwhlrkvhrjzrihaaskzwieaobnfioxojpprtaworueeyecrwngjvykqttyzznlfamqvtjpxoyyyhqpwdlxdqwvjjnxccufcffansdttrvnreovncyhnkdwzrwdyyshgmbvzqwjkagtdjiagexwchguhtahrydktpaylaupirzmthxsjubdnheeuoybuprkhfnufxkrbzsqsivzgrgkgwvgtcjnkexkoqsobrqcfgqmmsgfynuyqunhcxxdilwnlwosyxtqabbcswgakmgdpkdwyymxyzpjdarcbkccrwpavbdxopmnnpjqlyyevfmwbswshsvpbmfrmvbnmvcvlpndmuajkmhfockimzjozofefuvtfgwjodqxvoyqwvbbbahwpblfdfouzzrvyiakcsgdngksmcxgfsqjipnhzqhpqjktsbpfskedybdjakzxyzdiupbvezugfwpkgpohbhyhnpepctfympzidkpseheinnhpzzmvlwfniiwynuvfzbpxdqmmguvxjquzodxrgafqlugiwxsxzhuilpewrugzgwxfkrmkakkkwnmqvbhjferecwvcwinojwokbdbjbuzhvyemfcdodqflrzewxtqrwukkiziaxujqyxniwslndhbamesfklxcplkiykkfcdwoxjzugigofdtuunpatnlodscjqkubxmhezhwbduknsfbieniourskdkvfztnphquozsvxfrbxecshovwbipawjycozoaeegngwdrcgljjlyoyhfzmmvvzlcgdkrhxfmekummlsdbfrhzqjpodmohodyixgxpmpmwmnbzofyogqctezlirlclvypncfamkcacmynbdzzwleuckgtfssrstpnotpouxrtbpuwboefdeufjugohixqfqcahnyiqayyzaflounujfysiqkemsnlcrhzieyawewmxkxcphnzfmblxukaencblouhcbhayxakrrvntmqnrdvushaztqqzojspwdsjfffxesqbjmhllvvdiwrkzmltccwlucleffvcwxyttbbgnjoriarqkfbitflfjccbvcqgxaoyookwgefsxvrjgmhrrpgsmisthszrnsxwpefrjrnupcaagdkttuldevnfctixaanioxowshvrnvhnnjnezrpvefereqdoaqayeatembhtwxvdzqpkegmvqoymdjuphrhnfvxavmjgvaayxqqmzuclzmecktlzcsqonlerldrnrsoxolsrprygzqaksvefyomoymeixwvyshjyfxqbdpbgsoqcmwxuhgktmfhjsyscmhxnuxumgaddqmaholwymluwpoqfxcjnebkgpcbvyxrsqtbpwrikxsdpovvtoizpyuatrhzpmpoqznhyvotpndotaxzbwdvetzpaxlktmkwzdjdmnbrnflcdrpnqmwkemrngbbubqfhleviaqrxqzkvognzjpfmoojeacsdfldcsimstmosylxcyzozrgfeqqsvcpouqshwhahqgddxxkgdyyiwemhhguhbsreruxzpoffwstrfdpgrqcpbrcrkukaopaabicscrpdngzitidtmerafbnrslfrihppybgywqpowrhdlstwyyqrddhlrwlakthbtdjeneailrasnonbfagbiwqvyzsymnxoflpagaxzunetwkvvsxyiabraxrgklrlmiannlxnkidhhvhmfmmvoalqmwevinqlcnwyxmfkzoekujtdivgvbmkisnmkkdwegwtalarvimolkfxcvkwhezfegzadxvdgibkazpladfygzoyymvoauddxlcrgndapxkxxatwmjkrvblkcehqjhktxaxrrnimwwstteavwiacxjxzhhzmwczakibodrlaaelhuayvwzqlozgbqhvfygmerckkervaljuxycgunniltnnuxtzuvqpkaqqpunzzfbvrhmwbwbepypeeaeagkercowsqztgorfitcnarjcuixjxndpbjcdrexhpludddaocizosapmubfkqxohumjbqwdbdlmhasqqalzmmkuyxlrdtxisecbvdcqmidpemhxxtlvlaqqnudvrkvywzuyaceqabnucmpsrqynzqdxrfocljazcgmglcxpvraxghagrtuewdjbawbpajctnufsvbqoigeopfpshobwfxdaxxnkatsfhwzxxzuqjjlkpapqjzbthqntobmvvgrtrknwrcsothjdrdoczxuymewiskitmqfszonspwvnhgkkkycdmvoboldhhwysvvtisizqlpobikuyzkeljppramnnnmewtcknhxvgbwlspojhaxsadjmibpdyvjnnmhkcwalrseeirejvbccatrmzcppdeaieffwwimakbfbtvyopswvcontyqekgikpjvhhaldjolnjxabhtfkdqacyxvwnyvfhntavduuoiswyvrbmmksokymfmjpzbemjlbfubezhcigddetymqtbqucuentxnwqxstavtoqvettrniquiifztmvvruuyhwieuixhonpgggkpymxpfmpnwfvoyjmyoahrakkwdlthhhnjcbvrfyewlmoyqoxqujffgxvoafmlgvnwmrbaxmdrfqodbwiqxpebfpsmraaxlbjaexghfansadttzmiaeqfpwovawfohgpjyclxyoyfivzlstxdazqhjbtzgvggzxvuojzooerdwzeajxzgjlcjqqquhkaispjnayavylpaspxyxijnukglavruicjgmkfoyaqaspsgxsgougxwclcvjktifjkcveomqekyiclhjxbslyqvircfedoancmizfsqzasmrrzpjwuksruyntdyntaunxkmiqtmlnenzuoikzfxfmmwqyzhaotpxskbculvanndgjkfuhtyeivaslqrpumdutlqtyrczfyvaglmltpbzbjemeizhclvajafwzmoqwkbxxybvxdocvbdvyamcutlzlcxgtjcppnrxrwsiqkisnapykcbpkxgtxjzzhdxnwtxwlpwfudanzfcxrptzmlyaidmflsuezfzrpdcvvbpcpstnnkfnqbpopqndlfpehriqyiurbdjksvybddpgqvlybdrjvujwgcxqqosyaraculrzchfgnnkteaoqijtbzwlebjuwkmafxgupfuduefiqydptbdofjplczkuzeadoykzyyoedgsjpxayzamydfuiqlzbhagsukhdckucmalgvbrkczzyqjbkvbttnxplxcjjggmifycbtrnwtsghfsggjpkvchnokadyqxtfdyxvoiccfknnjkamwsrznhgokkvvsyuhskbliawpvsfdqfyclvctmoivlbipdicroavfxdxtqnghdbkihfyismcnpqpgkpjvoaqbeoftxornrqmbkfrhmncjtcuvxdsaijernlrzzlcjesrroylpsnvxejbufowcwtepzwzbyopzduktuxnraiatoqikjnrgjkugfghmzdtbhflqrsgadsnztwrhvgendorxbsydihrliuceseiinhfvkqqfkfbeomwavqsrfuvdlzmyrpzthxcuecsxssmzbpkoupksccbkrtffvtfuxqlmronebsbtuevuaepepnlbjmtylacjtlnjdbkdtvpirrmeirrxzkogoqyzrszmkogtehwdkvrofobvqlgjzifizauqlfgetjaftsuyigvqhlpcvxmcffrtyjirvsovcokfpapssaidvxulnbcgimussghwswsxrmnkvdogipiqaotetoyjqizlmsxyyrzjnvdcedtffunlztflhpegwuflfwogtkiyghjdyrxbqzbgtuvpxvilghkttnmosdblrujwgnptpgxhpsmrsegepkcjojjvjtjoweeashrtzdbnxmszcpckubevpslcsmqhjjeewuikvcwvbmrprjthfkgughpwuhsmlbpbwgpefqtqheoaamcfoyzznxludohcygprptytgdcpoxigtosgibbbnignbdogrpafsjqffpvpikubvrumuyoutpajfnrfgddrhlpfwomfvjfcaojtqkptapvbwgsgiznvuztokgwirqojfyhitrcdkglwsheatnmodstnlcyjstnestnxmzqbeuevldvnglbeczvkhiynqnmsdbscuvbxrbxcadfbfekndcoathdiiiwaqilfvdhrayrnvtfceaokxjkxzxstwwrtoobabnqieuwaaicybmqkqjnmkwfwkbsniqmktzhfzpmlnjzeepirrdbshpamjfyfnbmoguiigwocduvfhdhtpquiljllubtybymzyrixhjyifvkixbaguuibeueisjgpybvdybmhfxhghaddqaeckiopkxmptbsqqehxhtxjhbrdneecacwpqijvhclqvxffbgrlsxsyvuqxwwgdkgejiquzlpijtacsmzyrmjrxqvqxubwucauynhqvoxwkmncsuchhblsgreodqiialouhoimkajicwtahyavomwqbcaxxguqddgpgcmqbefimqxcuvxmcbnwczadldbuuugmrxwcdujfrlcrweiagqvmsxcqnulvfafopaqjqpyuncweakppfypftreibxeybacqddxnuzyhpqgfccopwatkazjhfnbunqnwziejemcjjgsgdacxfpagkqylvjmehpmfwhxpsxrfbyryqxpjypuzdpmooydduazublmphtcnhhkvyegorordscplhflpapdcaijrnqivtxnefbaxvrpxkprjbfcjhcjnqbnbuifloesqpieecjiihjqvzuhayxapxofffqvsihmgmcgpdzstdaffhkdcxethxkqzkqreddmfdbhouwbeetvzecthkzmimxyviqasqmefgfpianpbdfraoaiojmikynneldwgzakxvzcfkptegxdhdvmdpdrtwfzwmvlilgjmjnrfilfdkoquvsxokxnfhurxklwvvgbrdnxvbptbqglvxligoayxyudmjhgxkeerksolaulvjalaasnfqpiaxmlhhztvsbxgupwgdpkieajjfqvbskkonlavhvgdkqwcuvacajuooucdyskdznlqsgsvgaaeblgphrpobtyfdysgmjywrjypwsnsgnutqnyftfgnbddribuaejkbmfjxbwyatxvemmswzhcrjqlemmnzqyagxbvytytajmrkzijrosvbjzqcyibzavyxifixdaifylrzhvmwtifarrhfoxjpsvvtshewrgpvnuilbypszvtjqlhhrpylhgybvoxvqjqzmcdnybdwmkxncrjmyvclzvojkpkkxvprgbibrhckacojtskilqjxemacqucunlazvpyfkuyccgydyoqfzswsyugqsrfkfyeizndoqcwggggjiudxzgajetdkyzlrnsmrficdbrgitmzopfsaaobuqetnogpllgqldbaeangemlpdgbivqafakmwaajwtkelqyelkapxokgsypvfldkjysnhgzckedbwbwrqnfgcsaoybdqeexqvrghlwzjwttignudnerbgqqhahflfbjaucxbrjfpjkqgisdxmsplqzfqosrqzpgbisqafuymtwnphhhrsiambwktsukcltaccjujjvfktynohswysnirxwztbbrpqwljisehttpnjfznevaxexnobvtpqugrwvzfzurvwgfqohjevuaeiwocoshschiqpkdwxurarprnwlnppoaalcmtcjixjbsfojabxrxkuxmbmdtsvvktnlsdxbyssqecsvhkhztpjoorlhyxmhxjymopwhoogcphfoufhfdyvkwyvbhkvcvzdvssvzcosjrhxwfytrowewoislpsdejbvamxbshprkpqvzjulmzgsaopbnmjdfkpwcmbukdnsybrwcmywrupjjrwjqumchbimuslcdamsihmmorvsnodgkfdtuwhbagnrkvwwrrxghxnkpeynprrtimnhnqsvyvglkeycitdangpxarmpovincfabimvfkwrzfmrqhbfymqasyaxolwytlwfdymrshruqxqheilnqoaambitlwgzdrjpluozgutrgkdoiumkuankbedufpirueteqdgmethcibfaarjlojjllzmbwyidzhxqvyalryqaudvxkfafcxegsbdcvoqqbvtktwednjgavngwajacugqoflgpyeabhgusdrijuhcrerrzuutkuguufborrjqotnhibtdktilvtbzlpqhibabkwzfnvfxepzwigujjrbykdykhncohdxlkogzqnqiituivdaidfmesljchbtwiuvinlpldjeicrfkghhaxrvtxpwviwkdxumstuqlxyjjxlsruxvhtheevuyuyyyqdmuzszeqwjvjibydwdjokxnmiirbmcixexupcxjsqghivpmjrlfwapvrdlagpxedkoyvsdmxukgzwvnbwybmucqsyystrzfcbiwxcaqhstssbvgragrrzcttvhagvupzhykmpjrkwskhvnodumrjuovhtzvwnbtomilwhgsgyqpljpwaakgymffgyzidtauymtqfuhhmkehukutjwpephujyalalomcepzutobpjaadfwmkwoaqfsuqmibichkazfkguwuabcuvcmrpmbzkqphsivhgidfbwffgrrnqvcqltoxshpvqhrjbyovwodsrmbfuoixzhstzyaoqehjnkscvitxulmspnenkblpxoqltpotfcpxrlkwcgyutuxxnzscdpdqysipyhpbceegfongzhxqzgltyuvnsyeqppswwckpxgiwirrumnrdrvfepztlojrtfamscifttfmditpsawxnznmrhykplmohumwvzynukjuhzvshbxtcsajjgtmaghpwjtfjcxabsisqahsdrsantzisbnzmgsfarjtrqpptklkhzmtsmxxwrnldzkotwocgjibizzrnnmvwchygcfqckxtwwujtrhlwmhzrmchwjrzovzgpnyolvgmflovdansosovkhjnjwoorgioedqgbropbiqmpipaequijziunvhzkfkqxkgfpndbsxesomdtidrqaocbykvedphtsapqckuftqjdrclrxvwpwdlicvxlivjosdwqpcesifcffukszhvercyxlloxxuksfajgywpqhsmccwrchnjqxqpfqcomhueuatpceyvnfojkxizabhhdxdiegrbfzomqjaixyyyvvtweslmoncxzdavdipuplckictojzpcgyiqidodsbinpvwilclwhrowtgklrpzthhhctpqbcxwzfztcyrlzonbnsmabaquhjwwyhvkiwazyywnorxtvvhtvkuxlhuogowhrjluiyvgpbrubmfyeoaxavsnwufkrhrkeecqfhiwbowjyigwwntsylaqkzqtmpvmttqtuiibqlsbhxwmfglxpvxqqfzwnjstpzqalaxkkjydleegeiqdqwxnlazavvpbgujovwisrgdypeswzrieqeljzjmirskgqxllfjsqhuvfrlojsdtbsxsgwfjgildbtsaaeseeukfeghuecjkrapvtumfzjpavjvewlpgajsxtwfhsnwpbjztdicnzrcilvyrnijkxhpcnvwyvwcmvqvdezmxuuemcbiuteadrwnipqpvsidfnqccjtjmejrnwjlrdrbzgfvqrepdfulextpggjnnibunrztwszwrlsewojzrdukuvhjkhsjzxijwyajgblfdlmihoukjdcxsigdftjejdcdycpcynlqzcpppdpoveigtqdxyhtimefcjwrsxfrgtzkrivywpefilvqxguvuoqpaufmxlhlvqcicpqmawiiqhdsrezwygvdxguxfqcemmhglgcuyontlbqkrhtiljpwxkxwynhvtojwwcyitiswgobpyhqkadukufqfvdewijrejnzdkxftrrvbnabjtdhtvnsqzofobffliwqfyvcpuwehvvyquffxobpkwmmcsyaqgwlbgxhpdpggutzrrbmzgotswhosfbilpkkijsihsbsndihrtminqlsiilwbvqthlqvvdsukjdwffsiusakxuyqkzexouckbijvrhkcynogmqsxpzllgxnfngxysqlpnfwtdjspfttmwgfgwackbremqgikhqwyivczfdcekihqbmkcphntfgfmgcksefmlitnlvmiyuebhroyknypamkiivpwanmeabjtluocdruipvodajitmaxfcqrhczryuhibrxfxlhzrekqvxdcksuhtpsybqfdbbmhgfaiunrezpdsbrdnrswmlfnoqtdeeubngdcscimuqtjdlhstkhfadfrjtgvvnljyfwouqccemtqzntquobbxcjvihuoielokyczjbrofpubdrbtppzhprvteuyeddduvtedwkgnwvmhkygxzrrbpuknpinucyzlgxlfsbkqwhgevkyhicxxvfahwurwiwipwralcympljibpqfgysfcfxuxmxdtcgxjgezcmrvxjuxuncptlxntxnkhqnocahpeujtxoendllhgpvvykwnbandtgjwkszurcaalbzzvcqwrfrtaqnwzibiajdkgvrlqjlvshvdhgeeoxdwffzmdrnsvismpsvademrjjdxskuqgtgvfqrdkqumionqoriqvnqvxgmsjlrfnqegikcljkhfhtjahvmrklfofwwyooncnfuuedmlwigvrtudvbxnhogbpuomuiiuazngqaxeftorryxudillnrjtkxsyajdzyopmmuibklsicvrxqmwgkkqgidcuowemdgtdkzbutbawuojqmmbetqogrmewwvpnnggmaqipmtzekfqnxwhfoxoqcqmqeewyeahwdjumlyylmqoqllxvosoqnufweondntjamsklwgaeqfkqjcgdfvaryleandenyvlahoucwrvvkrrqxgukxaebpkjlbbsnkvzqtazaturtflaybgaoigqstjxfwfvsblsvbqdpxobgncokhsokxxlqmoaalajvjmqpverqtxgqnwwnlnqrxuuhctljrlrfnatjdgnvgcfqemfyyudsgyjqcieefnobdyvqqkpgwazthrdmhesagccyqbppcomlbonioeuendxanfrpnlifskiwkqpnvqxqmvpaegayucjedrtfmtyiadhefoogotikktronfpouyfbcmzmobrfbobxnydkfayidxwenejlyqczbdzkdumbdgqwcfaezfwpluqammzvcjklldtnkwpkkalxudjkrdxmrlnaulpciqepuqtocujvlsfqhlomzxmyapelfdbeplhsxshsswrnvljiknpyqgfricpuywrzjgspqtkcsperitlmxtstatkjishyvbpwulgtmxxwgmowcuqgqikxcpocvzvxfhxxwudjgyjbvgipuwwwdqqjiemqxuehalyqeakqhxdroberfzllmhbbfbzelxjdykfsqgobfmmgognukiletpjwtlphpximtioppvrtzjxxhjxatjlctbmauppfgpbbxlytpwoaonfzsatnffsjtvazcmhvzkirkfygvpnpntiwekpaxaseplisueccxkxfcizyoxsrkigrdfvynmuatjajlsprbocyssdvosccmnamnuqtlhyxbzoguuuzqgqfgecarcwhxwtxqyzcyxtnwrbngjhznelhllpwdnznqostnbifjubmecmnzeucxthqbarjsfxipfcdttqazxiamhuzhbfohvocsoapznikcybsqhanucgjmxaepzybdwemnpcbxnlzzxapsalhuwwutsnftzmxglzznhvalnqllnsadvgmexlmixcoqzkjwmeoqmohjaonttybbxrwfztzdajrwhlztubolbbrjlzauhjaaxnuggrgkauzhvysbmpepytjinjisltmarnyymxbcmzvpunimzylhqzozxbsqzwrzmfwbkohthmrwrybhihbobqajgumrszbvnhgeqfnnwjwcfosoxmmqvjghyahcijylfwggfmzjdmzejgpwgaonkbygcdzemldocoucwrvmifueebtuqwrhlztxxbehvsqfebeuilpvpvrqtqoevolgrjrfysmblbsfdlwqggxryixviihnmyxszbryugvfogwrgiqmusrhhxyztnfgkneewquetacsbjhvijexvngiabffbdlacdztbhkyfreztsniakubtponsjdtgpckhpaekqufxyjofwvnuowwcbmderyayufongosghcawhvorgvhcfsfnanzthwaeubuwqpwhvjfdtxvtwlxybmvwvlpyrcchyoygafupznpaohmppsuxrvbwjubxfllkfahcwwsnwggifmgxnvrdsnemqgeuzpmyjxnwwytwigkhiiilyjsxurkuwfynzvdtdrbhcjmsysgqiqdprzxlmsgzxuuqpjkcpoesvjvjkbacuhxemnocvdmseddhcidsptcsgxrwzozvdudiorhkrpyyxzohmfwiiulqzmxrolwwhhbhjyxwrecjeacbtzbsbsvikjkmlruobgamagimmvuutubhgnjgxbpgrmhhhymotlyztpztgvcazqlwfvxpzmnwxtieqtmqcpdysgsoyjysyloxwtpxoyqphiaflzdtkwthchuhgwstrzuctnrxansurpscokcwwoduiexfpxbakakcblehdhgfmvfbyufozxbjiuiobhluxvzxfnnnnysnmpwvixyytzlkbqyfrksywiyjsgzggifcpcbnnpkwylzjbvubihwnbxszbledzvihndsswzpjncdrvvbkudwcmnkmdkptpnjkzjaqarilswgmscqdeenyryapflgzifhxxyobucojjadreijbeptitovjvfqzjxrbesjefisxicsxljqdjscjjsmjmcvdwizitbtvbqzaqntmuiddwmxrdxmiyiavyclkexvhkvnbcqcjkpawswpdzfadhodtjhtwopoxauvateprzpankphnndirwjcquokjhgzcmkunvabkweckomhcpkifwvayspeliwkkfcivuztodwksogylqamdowlwuibrurgkemidbthgtvycfaidgazvvlfrioezpbdheadmbmbfxedqjhozoikwoosbymovdsmgzuulzthnobcerwtaibydcbgxtiufwpvfvvpuvlsqgnuslxlfediqrjfemfpnyetldhuyybymalmkhbdncqnkobaaxukjuusizyocvzacgvulziasahyjsrmnhffxjmvnvdfqixxizrwddjqxaypadpqtbshiworobgyqcxlxhdctajnamayqpbokijmaailrmebmhfsolooznynfshwejoxwhylgsolkrskrljoeftrnliioteidzcszxtkugnngtadwlumzvmlnerbbycymwbixcgcdlzjemmmprwgvvhgthyvoolaovqnbwcisiqowbrtbltyeludzcfumgnrwfxtiyovmiudmhoziftqqkrnobgcfcqdborewqxkxlugqpvatizgvwdkdtwxtdnvmhayuqsyoqkqsoqbocwpnitpidzxakvyjpvtzdzqpqziixbvtysyqzknxkwjididgypvnbabwwogqpqspgvksseburzajiluondqmgoyapkpckveqspofxgqyyqvngcykzbzysqvximszlibrssyquzbesngutbdcclmibjcifmiuhwnnixtjnbdbpjxfwqdxelerqibbairtprtkffswqmbydjvxzkqocmtqhvlustqqftbebrjfndwkwjhiigeuixlbgksfqlsbqguvvcdsxcqbrldkpguwohlpcaaridhmmbeucithgdgchtuxlqtlkgctqcnlipauancfobqthxulzroapuchsnpshhokdpeagqqiwrfgmefricyrzhnzddtyxzquqfnghiezoycgwydwrgrbjmopvryuukvxvfhgfsoeqyolskpxdvxdtivqsojpwkwepcreiuaeuiamjwnukswlcbgpwyvabjiqqazbjtibqarzgdmsgrumrzovxadkrbhxcbjocpzuicysblbmcjhgunnboxbicdxtrtcyabumakzdlvthgetjnhyzetizeymppzmmyasbrnpsrgohsvlqqksfgmudlzmfutmviiuefrxulbenqmimnlrqalnzbblfdbotkguasthzhkgqpjynrgxwprrkfnhqlwnwwwziexehjgcpwquhoqkjzddkyhbezfaqaaaczbjqwnnemkxgimgctxiojexvibkzreywpyqqaatwuyzqtfpbnnwxaphjbhbzsewqnyztqdovhyikvrgjusmoxcgmisdhqkipecrpaphhnurjigyfkchiuqhgwdrfwvrvxbplrfgbpfxojzthzgbkpuhnpycnnrauogwrgqnxmkoywxgabbjswnlepjsjjiqzxectivbkychcyzpnykqrpatxifmybqrxoimpnaofxgoghbfyuzexlpcazlibqelnoldkbtllmxabckuqnvnyooeimmezyzteytyoeoeetxqcxdjfefahhqvdhdhpclcpmjqlfmirezymvipmkpcyingmyngypgsiadupdasozhotgwnomkbpeayfsrgubmbsimfdfdkjgcmrscllvlukeugxgdlprbfleyjxozuwjrnsnntlvwbdwpdkkwiqkamzkmdzfdpmlvpqkymwvluxbwzvjnvfipijlynbvsfadepntfwtfgyrfcvyxtievsjfmzxmkkregktlhprpcchmiqojjwsxzkrmhxhtzzsqikzeylrebguaevkbwmikcdzdzalhdferrgdkkxicxdetaivpapqcmtfwokfhdybeqfuxtgmgjlpzwuqwrujbqvisnlwaywahlrnkipnlkmzhpihwyvnobunlwwkgqjkixgkwqaoaecyoyqhraxqtwnslwdwopmfrbmvidjcbsimhjeurrwmowstpgrmitqrjjoakoqpzwyhcnrwwsfktjhzoolcpendzbbyuanupyjqkmmgatgfkupqodqsbawbyyxoyjnnrplobwjjzvhifbbysldfbtrzqwuhqgqkuobyggiugvatczikprlvgcfdfbxslpmbchofyhzwjpltmtfbadvzvtmwcrpsxysdkctvculscsjowyslwkwtnjwiecylqqbrkmvbsbtjbzjsaqwqyjgwvxwuxdatadddkgjlcgimrmgrgpbrnancpbksgiqhzxddhpasyqhfxeflcusmrnzljotsznfubxphywnkeswlmlipkhzdwpaxlajjprgdzugcdbriaqudsluzytluanazhaurmzgqkmcmygttodhzklqgzacyhoijmtcgqhjxwvnkclptuzhhuphzpemvnpvmszafyyynmzemaflcqplrsdwewpfdguuvnqzroicvwoadjjmscdqspjdpzeslvjeitxjtcrlqahvetrksqfrzhcutceptxsdngmermwptfothkpaohybxlfoigksodtxqpijblerlswgirtlflcuxogfruvbympxbtabmfyyuhoukzetsrcdgzjmazlxnzjqcsfejidggdumllqjspixunmejrenaapiszdztyytrpxtjewupbwjmnumhxcmddvnecctnohdcmgombkzcykjitantkprbhtoeestffpnowkvbugtifmcdqtidukkqgbqmbfiepovgqcptwhoszivmwxtzbemmkwurjxzpagxwqarmrpqjisgreczcawhwutdycjuvgoqbraliycuawgrehiqirbowzxausyziuzyhjulmhhevaueodtbnhwrzbhjjhntlhrjodnvmiaxcmkpsxijtuptxbjzozirxskqbkokfjahldauuikysnfygccytddudtnvndketawofayqgojzzfxupxwxbcfvkuboaegawqeahtfjgngsqnshyrojljifhgmsowapsqkxouanjjxqxgiotadpdcarghcvgwptimnhpubamkvwegwolzqokqrsuxcokxnvupckqixcmbrbffiflqlahstadosoldhuyjdxoujwaknnvwjpxgcsbdznxyiwihvvemajcjcvxxcryucsqaeyauslnwdwdvuoyixxhnuctfbctlycmnxhomrejbjykzwnhhtzuaslnqzydxlmhsdiztcjymnbvogosjtxyrpusvmvvyjdtdjvnvcfjveibteopzritflceqcvqpeiyslrodaiwngblijxjzgdvdtrbhsgbvnjqrnzeuundcfexfwhojunjldorlqcdhmpvcizrtupkmlnyufwkpwnfzjhhjylpeipyywdjvddazqcvyofylemszlpzlpywjvkontkxhpkuopftvbvkyovtepirbjapeozqwajwcpwdxmlmfdawffusvyjjcaowhltkaxvvbifhvwzsloukrknfqlhtkgnjmsxhhcoeykaoozcaopsjwcxlyglbagbsisygcgchdrikpkkqtavxipjvotsnisjdfpcgapxtondcjvkhbasbiwlqblzbpsjyjbxqrmqeuxrbdpxkbznvmzwcmiolcbpbabqqndfpiawpcvbblftcqlgptsowtjllbdqfwotlngebyhzjyardgicdhtvazehzunqlhauiljdakdotfappjcupxwekjvpleaihiaxltezpklvbbzfgtkhsufcxhwgayinqghjdujsrcgfrjiltvbbbvxlqtjcgajlyhfcgccjhmgkoognufmxotgwoeoepetnnuvdglcauliitfwgcorjjyfikgfffwjuiqcyfkhroxfyjbrnxzqsxvwfypeulkdayailrxzsxbzlbalikmigrkxugbtrshvrtbrliaedybjourdknaoiiupmirxpvuyjcwgzncdojvwnqlznuufdlcazwwfmctxfjwpgzfzoxkwlhohvfdpduievkkzqhabvoososxzqssuevwcedjopqovxqqkagogwjlbthwpxrrrgmubpvikbyrpiuavpmvkbfwbvecsrstmqxmzfazxyxevnbjrnkiluprktczbnsdxkmbyepegczzcovtebvrsbdacthxdxefuwowqtrraktsvnxcgnipfszmjayungtbgnwkrbisikxgmztgcrskuxgdpotznqwmtftkaxxixwmtapyturnfgxzxhkjexrlhynlaakytyaxzqsjtsyxfouequpxveiapebgkxqhsteclwlbfmtnkntdibubbcpctzrbpamvfzifsnaupcevxtcnxdkxhyeniigggbiuxwscgbtcqgzrvytfvikwpylmvrhdscvbkmtbukpuzhzsqumnsmyquvaudqqzvancbsmpujnzjmqhiuwexgdcujofsaclxardovokawilurmliozurikuxncsaaiqnrovbpuxqdeghuykbrylsbqldwcgwtygrfmfytdsdvcjfqykoegfbpivqlbwigbqefmtqjjjxfzvijgtstyjxnyiklxzkvgkrrkizrmwjnuarbfxxvhpsacsrebjmgojvwaltifvvyyklyqyxzqlzshgfybcjgrzzpigsuahodoqxdnueyjlkleacawcipglatyuoybnzclgjshimtbqxkfwpdvntskqeiqlecpboabhgsydzzaeaznfsknsidpvtwhwiymnctuwjekyjojilvqaabfxvgbitgnsteyyhjlvtheqpzeeywidtyzorqbfoyvjiejmeowtufuoefbkpzyltnlavmhyvehtkokqmxwrhishduppvzealrlxbolcivcggowoedfszyzkyqeqhjvgqqocfqqrpkaljkpfrgucnysvsoibygkmojnasueqjdyvisaqxkersbuoebohrvvqpvjzwytkurqsdrwwoxqansrgbuhidtkefyjyczmhuxdxcpibwuocbtkbjaxsugbsgczenohnpjpbfrngaihmhpaiwmmflulluasgyiascamzeslhlhcimdlrkzavteudkgcwqdnuxxolrpfmrhztocadbnsrsnmhovmkrhohimmwsdpjpkrbxspsfklbxbmrqjhnzdmlqhzsmrlmyfnsfoyaqxgikmbdkjbqatkfrbotbjsrjmwgpcxkqodgliynkezoodqmnkytbkqiqfzgbgobakubdohabriuklrnptbidrjwfzksrwhsltfxpbqsnbfoboumelhwijbdbqljbmltvnjljxnfwkytdcequviqbuqjznmzowufhcgbsmwrjrrdpteeqlcalvawcwhpwoabpuzvunbhpnmkifalhiizaatxbcmomijwnblnyviapuubeqaikssuzisfgaahfqozcucmbbvrtdfrymsbaopxykwjdercpxssvpesdqnfdejkdyxofprwlhaqpphkzfcclwhulqfcdzjsketdlidmitqnlxhpmeujttkkhpfhlugfgraavqdrbixszcfewjvylsusqkqkckqerxtduujgwdqxqobwyaqcwmaybbzrpteskcyoxljbhlkufldxzexjwxnzhurjixyjxzwjuaniizagmndxqbpyvuctkxldekzjikdxluylymwbejeathvomwgatjibgeqiigrmjzpcemaastntjupqieafnxvddvhzopryurtkbxqvvapppifxswjvzoiuqmihvayzlgdsdymkehbybpcdruxauxubvgrcqdixockbyqopnjrnktqygdhxvjkttwgcnkfinasiywoqjgvmyxgcbjcmsahddbkdnwckrfodvwukblktagizqnufssvqhwowuehrkthxefmwsswylbopxdneujxbngyvyvaejrftiuicdzbmnmiygtjmsloogonglwjexlourgtwbmqihhwdlgtwgczdereurdqwrjpiyftajtjhlyscvvxlhpatdwqhlmjtscenjxrwmfhuznafeemjlpibqzsscwypwlsaszwmdmflysjckzcbqkfyrgbusspnxyorzvabgpdeutsvpcufnzzfhxeggnhukgsaiqmmqtqnmzbktxibgkraacyvsuuqfowldjetpgthjtwytarqusnhvoimammzlhxyslvvvytpkvshpoqxkhlawmnxrdkqsrtwuunpmvemflhwjcqqwjzdjglgcyxkrgfxtytoeeapdcrdaanbdmehdomawwdqpdndlwkysxgcyautlcyavkjwqgjsdiivkgighkrlavjrdsdycsamvbizamyqwmbvjyxdeblhopnkaboaeloyfwgqgmdssvpkgunaovosoxaihxcuzikihwqctojmqwycxyhmdazhoyopitedjxkiytikutxejnanyorpoxuoezoajylelstllktmoelgyytlpxpzylbtlnpyywomuymxsfyipvgtcdadqrcbapftfzgxnfrkyiwxukumajvzuxunfigcjqpfzbkxxmxhqsnlrrbpgigdnzjbmkxxbazxzvtavdsvxebcnhlzrcknqmfbmwalpqjcvpdksnuhptkpthdsbmzyiimrwaxsvbhlhmdqvtgccspnxtbknwcxlctvumintfjzzocghucjdtvdsmfwagmbcerqaoxfrcsfjnjrrslulmcdzleqclmkrazkrmpjfvnmvzycdsnbudptiytugmdlhipltabkoumtvqrwwpznrqofupxkhkriddtzsdlhdolleevpcywhueqhayotniuduzjmvunujcwyyxzlyvrlrzrtwieoaczifyyycbrpsrccvmkzpacliiuuuxvwlbohibnnqyyjvxzesmddbmsntolmtvzrjwlovcanhtjennliwyisicgankfchyfgnfxwpoockbdjbmjqzuiluersmjkubatwpviblgziotcluxmtzekoziiooclltbplqwariaticgnjirdogstoikkmucrmjrhmffecscqlfpcllpfguftsaclgcbficovlmmrnyttvljwwozbxcatavhczajqovwzgwhxdmnngtrobwdbechnocpjxwnfpcunzgfvxrpotrfpdxszrbfaiqnrunbbmxphzxznpiyyqssxvsdvkowvxrmqbohvfxdrhmguxifrvxvzwkybcmkyaocjgpxmjlagfqmsjfpfgqmjqadsdhgxxrurzsyrcjcunscnyfohgnmwdektjshywfhcuxmppfqbggxtdwylllfaqaxiqvvnkiyfbulsvluhegilorcpsvcmvnsapefskfpmbggcglpqduzeflieoxgyjkgmsdmuplxswtycpserswlyjpgzffpnyhogntlgufjtgcxefnuwprwidmjtechpivflyldtgouuapbklvmdokvacerzwfgoffzkwnxtmqpafbbzqczgqtljrapdvjkbsubwuxpmupizpiymmsdwvdvhzqshaqwezvhsgadihihvsfcbhldulqheeffxtuavloozizmqtqymzcqhjxetbbfatmmhgihakeotyvogsumlybrtgartopcibrdumuoyztamunqvxhetoniqsqllrywedkthvxuqbzefkdyexglhjtcacsyqrtqubqkkronroqdoyxwxjqudpznmcinrrwnbgvkfwbiztiyhwcwkbbaaxwoqwppiilaorayshamnybxbkfpxdhnazeuunfopziuteiultsjtxolrlrbgypghnsrrpfrfpmyxzrjidrtbdrlwogkkcrjhcyafptsxtbghshtpyceenfslpmetsyfwinaiddfxrgagplwpoqvnwjljvzmxktvztwirtklwcxxgyfghfnpvekdefpsyqdbwgssabnagxbtdxxamjaistsjyhisybkgomshgxlwvoybqfcammlnzoydkrhsrvoxihedwrtjhloaxkpfczkyfxkyruwkoijdmproajuidaspstiscsaycqqyqujskkinuxxzfambnctzupwtrjvcaxtrczhzdhnjkqaqguoptcfkrofybblfbzpfaejtdluzkeujxojwdxysnznefyjuifzvtuqsshqikquktzqzsmbbrotqombywgsutidspdtykgncatihsrfagyeooisztcflntzvfwqmkpgyhppnrryofweiwhrikxvnqghgimoqrfllqvgiyjfdebjskiyjteavpcjhxouobbltlsxirernrjilumaicpoxwlzqntktceyuqaqxjeohdhuweinkrvfozlblkummjbzwdgtkmzbfwztjtgpwdqrcfdobvqoenaixszfowpunknstoirmgivmquhrltfaowbioqkxaatxjzdeabrmvqmekrxmooilljzqqhobwsjcsjewatehcihmigrigjxwflijawjdgrbimzufcdrfgusvedelfwziiazkepzzlyccypjuzykkfzwpottgvwwcqywmfjkejrbgllnizmtqepecfkrybybtmwggjkuavdsqgkhcxsotsrznzgrozbwvncqqcnicbpudclouwtgvzxvcxlyzzwewdhyclxxtrojesenahogfohgjlqssldqaygbklbvpfamdsvmulzkofdxiydrmgjlmpeqmvnflikaopolrmqmvvohiqphmjwcquvpucunkseopnjlgxpzeuggtejjqklcierpjdgdsxbggjvervmtkymmosvjzhuwgnlqqcaraaphyxeeqescuqsyectakoarqujxybfnsgvtqanuqvduyyexavingvbnjacpmxwojsdjsmudowfetelgslhhjtdxfsiiyceiknnuthudngbeqcnzsptzhgrvauadgljntgrzwefshckuafnbdfkozfyxsdomopnsjadcuiahbwznlaxzgysiudmpxevktusxdvtnwtxgtjiqntjrxjlkgafvpzojqsrnwclisbnnyikmneitbqrlyfnqaeonycdwdlxgayvvkshqmmawbnffnikqhcqgneoeumsoqjirxjqsdpycnrjafrjravpmyibhfqxuvybvymrouwscsryrzctodzscrwdykfnclraziuqetuxhrbgzjyykogtczjplqxnrgqvbtdmmksvchgjxwcbwnpopdoipkxfjxucnemzcwapwkmkyfwdwxxcyvmpaayyubppverhswvpmwxyxltxtksxboucnwhbtxvbutnpnyczuiiyjtvaxxxsrhvruidlazgxwxuwygczdniyzemaeruncbvcvsxgkussctpbvnyecajsefkmdmlwttftpupqrdmcdomhhgpshdvvaumlpyaqxqnhmqdzzsbbmylulvajuypbvvyvdpswvlkllttufczjkjtxxridqzmgdckzgnedagrjhgwgjtanjxyiccaplaztnrindtrgcxhcvvmhtowgwiycchomyqfvxoehssvbkgtlbuhetjvcwfleagcrxvfwlzhyrpdjmsnytnyapgeaplzqtzwsvafrfmqgumdsyjdhdahwzjxbsfknkyolqhhulspmpeipijsbufvbrslqztruzhbwrwhndyndijdukqvjmxenfhrupvnadqdldnkgybmimnfwqnxbzrnivnnvslueoyeiyjvchcdtounfepiiqbylqcxccephadzuatxeafguuoyqaehtvqrkexwbfmsiaywdzytmjkfxbaqqzymmmbhdsyplgnllfnzndtujjhsifdfwkprlrbwtzqkdctltqfyggkgfkbrbyjhobwywcjanfcfhesjcfnknsquhrhgwfdgesmscmljhwlzmvryoevjpdkshgbgcsxsloiyqsewoajzcgmvsddroejqufagxmiaolpyaeczzlafworglmeobfbnrpvqdqtdqebcjnvtmaeqkxzkamntqnipzxwvjumnuqusetbxvbmupujufzxcnidfyjqyadaseclvpvgdahsgiicjvxyisuyywqhyrjquytdgryqpicyxhqajohphizzkuknmezoojhmafgcvzccdlrhdvfttwmpudjkmbtkwhlocvymnddszocaelgrovxxtuairzzzszdawfwsyeonuudhcsurssnkwmuueauvquvxydfqckgjtuecixbfvpfatkupjfowwduiqrihygjqdqenxbhynfwdxsaaksisapmwqvtgllddzxqtucsvvzbhabxthkfukypimtonthxjsdhkdqoulwsnbepvtcpwevjegdfpzqppfupndzujnbtsuokkpiehmzyxlizcqfqkqfshnbnbewnouoxnnsmujjdhwzifxlwadcegynpgotqouruairevqihjbkszjxdiedtobctqqurtjvpurwhcakwzdkavbzsnticexyoqudiormpmpydtqvohssgswbazksbxajufnlxhqjswjpyhtergymqvukzgglijeoydfljwzqinwbpcppuvmvutnpeykhtzbzkzotlhwjtprcrcaddskqqnvipjqdrrlybvbvfvsrevmacpueunuwwbgafmemkqieattgkaxhepgvjiocaktjywqrqicosuwwfyejpyuhlwtwqxbafwspckxjokqaiwivwzxtheftdairchrlinnnrpehauwmkngouiypzwcgvrdyawmksxrqxixvpxdtwsfyzrexbvgyflsyivnxduksqvurhfmwowrfacctddwivpoxjhakihsoxnhcuddhidckcmcriunqjanwtlexuuqccsqztbgxbyxxqkzoghxpstqfyrdpjrggqbhffofrxklsvdopgvtsxlxkjrovxcikqjagbrbhnhggcreyrhkasxerjssufeytivartfqvtqxkgajvdyczcilbdjfilbgxtjmnturqdthynfaqbwlmnaobeadweaeuahvksawenmbygvanaypgxhbmkxebtnvcvpvbjqsfmwltrblhdpylnmlguvwhujnibltxjhaekhuqlpurzvvemtyvgqehtvsevouqmdjujxzrzkougnkkiydohjxabyaghijabyymialohyvxivomohzwiddlskjgjtnyvhtwqtiedwzhryllhbhlyzrbwfuigplpxmpqkyszfkucoiufncbztbtmtylqmknzylfenwrcxezrzvyonupuljmzdilphewkybbzerfnddihlsjptjweekihwibvlusgtnumfevfwbkfrqrmvynoxhlclmruzkpulxinilndachzstsnjutqiangsxjqdddezoyfeoadxvatcyaqsgryhgcykqvvzycqkbpasatvowabrbomibzuzdsmhpbxldtuujljoobjgfwpdigumioxcycjvobyfszezpnccfvmjabbzkborgbgejexexfrxhzooltppeihmfbxevlitbvkqczcgdkqvgyfualsebzniylutvxapctljmnbfinvatxdjgndwfzeqtxylpppeijokxahqptymngainehidocynjefovhhifkgbsestneihqepltxadgxxlwqgfvlgpzmxhkzwzcwzpdemdvwznrtaaiifcobsongonuoxbbydrhgaohzpbndqnnyykxtpttpynbhrcrsojmnirlpxaacxgjumkirztqhvtsbixsvquesysmduciuezbqpzhjeohgoafrpoksqduyyxhvykbhfplnkxosalbkkksymueywnhbiubjjqwbrynfhmzhxuayvmudigqugrphkjnlrqflddpzmovbbfxiynzmlarhinahuqbswghmjoaqxtewhyqlybqwpfadfgafelzrulolfthajmhlqfumzjzjxqedqixwcgqffsnckauihxsbnfistkbrnbchzakdyuumvyqqbbrqegkiutnzpjnvomfkfyqnbutnnlkdgvlfzlxegszlcznhrhvsmsrcmxumhoctgzndxaykszqumzkaonsekqrnmlzqrfsuvorsmnlrxalouhinnqivujppomnznkvmzidmjxbdxtsxjlmdyzxzyxtobybiqaymeamjqrbarmbcnseadzfbmvjzbdpiqxbvnrferawtiewetqfvaldjglhlwldastqdaodlqrlojtlkycwuhsdpopggpyuiwdksohobpgksgbhjlpvcwakjvliolxxefxhsolfaarziucjszjaqnnmizuijyoqqqradlljespjecuylulfwgqujngyzblypntsyepdtaakcrpmbeghxdmoyoowwdrpavaffdbgdnpqzxxtcywpkuelfdpjfbqhukidqfancelfoexgyqwrltpiessbqlyoqyauirphotvfejzrtzpaelmhahordbbppmfacltxudqhqldpbnxmulbvpyssazdakuivafbostswtpvqfqejxexcqnzbjcebvsehmbinanlroatarvhxabkyykpsbciwnavrrgktlfulnaavsclnhkkwmfnatzpueibsbcvpsdqnqxfhnbkqpldqektsabirmcjibasjldgrtxwqyrpvyckcuazseknlvycsaasoxnizdbpqgvkuhocqgjtvwjzgmeeycxyleefmxmxujqitnldxgkxxqpbkmwjfhrbqeunrxtatvsepyhnafuswivbbvspglwfxrpipxmwqojjsvvgntzbngogtlxnhgatbzfvqqccexxstcbfewzqbagzlfoqorxwedxoopxuhitqcvqozyvesmjevijcbrvqznopnvgzduqnswskgxrfgmqdcrxuroqoyldawzpskxbjhdwofuezjhhljdizaamafysnhyrjrawyajumznuoqhnlsmnnsbveazdcczfzgxivatqtxjvcnuiwzuwwykkhdufmrmphifrrcghbubfewjzuuazijvacolbutgizigddlmyhmmdraamygrljwoqhkjrsiisysthjzrxdzxuhvplhqlbuzgwzlwxdmyitbsxmiadryfhpwpoqykucddaryhvtsgigsmmralkvacxueygcfeswpnikjdftxgpengxpvxsgwwjbfvhhppvnmotovyxxmbgoyytebstksfixomishqecbtofmcmaettqyzupurjlxyqsaqmzadklmyaoqowbgwllscboumnmbhawazwxwxszgsqvkzmqyzjfwalhsnjjqsrbhjyqxijbpgsyveuuqtqvexlqiqwztrpshbfrtcusnrrsuvwbjihumyycvbbmzbnpfdibuinmlwngrqachdingaiovtsjyekqgpetnuwsmtnxcfwjsawwbkhjxolylrbiomvfatsoqzmlyqozifgaezscevbpcszsajvkdzjxhxxnpwtreevxdcmlcebselgjnoemtybakwxnealpsfteqnyxydjgqsoujwloqkcbqmwloiyfhwuzcjnrwddnbjrcjxcmgbdvlqddnixhuhtdgyblrxzforqjlgidvosdaelmquepjindlozdvptyydeuachbxgvtrwxjnzqifsmybhzpmlmluwapizysobauznhtnhwivkdlihhorhjdwoyynzlkexbvwviumnqgoskoxhyarsdrultexwzcgobssqrqwplbqhuappskqxrtwemnmgfipneubnbjzrvmfglidweuljpixickjwoynznubgbypuzmrsyahinqurslhigsgunfupjzowowygqxpsgpffpneokshhpqajxozrxqqtkvtgiyjffmhcchynehnfgknpjomvyynrgpwegpdiyopahnpuqqirgiglnrjurpwuhvojjyhweqmgkkcslsfyevhvbgkeaasruuctieawtdpxhxdbbmexdlbhrflmlulhsawyeotendcurflvcsihlfngzqcdjqqjosiggyffvtfjqponrmvhtchrzkwgiuavtnzwpmcikrkmflwwosfmlgksmxwobrhldknkokpzuhrwistbnzcbcwhmlfcayjvxoyblezlseyteumahzysrkxztllhbbpkogtfgmgqnsuzxjfqnsddpphahmvcmnfwaqkxkwqdsyxcsjoqcfhjdgwquxyxrwsrfercanicbfuckpopkgknjfskcnlbtnptjyorjbbjicmjtwumuwvkajywpixrgayrfjpwszshqyxfsatfmeocqzcviuxqwtgihxjcdhbiwfvzospgfyygbrcvzthiwifiedkfjgoqkdraxuipicmuluzifkotercjhjvkibbthltocusrpbotvikfuvbldbetbvacinojqpjtjvsulkwarxzulofxyknlgpljyfxgwlywptxwppwgzexypirojjmmyrwkfqojnebeudnsklkxhgnwezymyqwoyncpconvmunrfjpgtweixilfyuhfhygpqahevcwdxeopjhjqctwlilchxsjhbvcypxohytmtzwawtqwrvqubpyaklbaezdjgmfytanvqirdkyxqjhwfugntcbcvbwnfkhzaicejgoxtmpnlewwnosisosupcehzsmhlqqsxbiaxiytqpqjfhxlrfvloqqyklegxbtcqqbelrjicxbdjbbtzlljbchoklpdeyuekhghelectktnywrwnbjgkxvktigvqalxbxpxejhjlvdcyotnksstbbhvjmyhsefgilgbnijjgdccgipvbwfnbriybqsvkqqszoceehwfyqgqdixtwwticgbhuxiawkbuadkxieaytxdjcafriqtlsnxecgeswolfbgtzeshwuldtqwzkjzmvuoxblehfibagnurxdxlbrszwkkmhxteuxofxpkdzttjwcfxqwvwaokznwnlqgnzkcjytqlskmrncdvgfwjnxlafzgafjfrlejydrksqwiqdldhbsmibrjraarfrtmuempqhmrdzjrttceulbsaufbiienwxszhnqngxsmpgnytwtzbzoxtaufbvzaphfdlowhkouprbtsezirwpfahcdgtyjtdlvffsfwknqvqjpsbzhxguejyucterpmhibtmqthjckavyybilpjyyxgjtoypbzkafjizktthlmsymqswxyhmmuxngxiejjwdfcuqcvikzwdwamkbogexeyrqnefugwojjitidnujdfmnqnrnyngeyczvlccthpeakixzkjrkutqdtnfeanobeacnpbxaevxkvvieqwdlurpdtddrafgfrfhhstbxdwtjecrowcisywtlxdqorjhgzmitowwjhmtpfpllruikqsinyayxvfyvgrupvxwrpdtnrclyibiqmiyxhesqfncewparkhbgkzjfvpsifryjemxiiimflgnjktsxlwqlhczfmqjlrffydkelfrjnxqmonfmpqbdmkeszombgcxlqfcurntptybsecrutlqgaquqximmhczzsnjystencshnnevbwwqtqhzscekwhsfmlwatfbnlqtdnbadyxozgsqnhjvdidokuqtdkthysrwnbxzvxznenrtoizqwceebajwojakyrrsoyhipiegqgephbwdfwqbzosautjeqvcnluwviajbspeujuppyyhqheipaczurmvvampzqktwyyeudcenexemdoqkpdhymentyieadcalyekevsaxalbscizlumyjgiymsxgresgkyrxyfgdbleezxpzibzcticztsagexyxexnlonhxdkkmcwdcuimugkxwijogjmtkpyccjzjmrnhpkeanfereweygtpllwkellfnbawrjeoqrqvuxqasyfrbmuvmbhbgfjrnkvlfbemzhboodhyvjqglevoflioyaseyupxaaznyzjmuxwocrdiczjpjzvmeewdomwxgsqtgfgihwzdwmlhahovxpgultcjgtiqpvjgtpjxtsyixfoiiqkupcmgakqurdcheepphrrjldcufznoggunuoxyvezisiykbqfatkisdimgftnzbpkjkyxzzdxoipsurlrhzgbsffdqtfrapifajylsdewtbmykbjocgrrhpzmtjpikyxkmihlquibgolticjvujdkxaetkermtgvhmcyzuhhghxysqnkjifagqbygfzjdbkotljtufqtjcyzupmaaykghvflnsebpaiqcktnwdafqhdkrqxrpbmjapfqfcczidejdusmfhjpgkphbeumtuxiskyhknpuwdwoubilktjunvvshgxnqnyivnnuzntrgustttzyyttdhsymtaclismuhrqmhxecolrefcaymwvvujmusravnoieipijbpwebunagjdlhptniayqhbytqoxgbecktxlxbeqynyodrzpyabwbsqvtgcbjslqtojzmteqjavkpeyypzapgpbyfmxckaidcbfjepmxhogsokofzwxkltedlsomdosbvijczqpbnjksbrmtthxlsionfhjelwlduqhuvmsnqgoovoazcvnjciiwejdqmwuwdtelivcrfaiellckazqogmnihbdbgocqqjanmixcjmryhwaafuqianmlapnzpabmobvzjdwebxehmwihelcxfiupmwmppmxzjqehpgjzhnqbdvcbjeawusuukqkkknbsouvadhaemkgljmouqglixfbkziktrckbclioqaohlmvndxmsjcrmzanmndgunjtremcpciekxzzafxejoqaddamrnpktcynqmlmidkenbuqhyahtnvaaizojjgblxdswmxgksqeaxmhyifupvirvqarfhjpzhklgalvlwaqgputxwmzamyrqflnbgmrzvnaugjnqzcajqyzghhmomcdszucdrpwtxmcryhbqxvrxkdvgselggxkmgtiheawdzffbvihxwckrmyvxwvngefenniotmjckmhvoubatlgajpmrnyhxasnymszywsrcgoraljexvyoiakiqugnqzxnzdeuvtfcvybwzrngymwczkscyksoyeygufskboowdmxbzqoolwdallvkphbnyelvekyhinzqonmpicblyjwaaqazhztwarvnmzeazvjskuifeuobjkborvcqjblwljeudfwbhtkaehxdixhgrzyssuxxxdgooztvmrvwwkkrmfmcaoqzmenfcjdbfzvhnobkslbpdfmiinwxchhraozxurejagmmhxliekbktltalrzupdrdjuyhcadxbgkkpkzjjftzjxxkaifvauzjszuwryxybfglnoswdnjgpkrmwmmlplzimrbgrwbfykjlggsrfptiutvspuywzbmcnsnilnrkcbmtpuzpmljaocetpwmlnilkzcwtvqitifwdgzatykcldufdrhbgumuscbkmigntbzcgnvejutldfggfcmbhtwteqknvgrqgxxrdswvwbjwdkyyexqscafnurvcvibvhxdelwjwhcawlpjnjhgfbqckgdnfhedcblsujwmjiqjjuklnalyupkivqodbsqmszhsmsmgmlyqqckimrrtqzacjwtzxptjickjrapexibolsgpzxgadxykomvzfdfhbvdvzcbbspfrznxwpqffkctsodzxedpajyqkgolteadcmwsqzudxzkrqgclumlntiuylnqbfktpnwxnfyjkbdqtcpasmghygdnuxevbajwzagikaidhdzivuwjkojhtzkxftxzynljepluqcaddmhepynvdoowupimfdcnknvvdkpvkpzncivomjpmzydaszmglobablggyztgatdmtuqvtexfetjhawicmphmbbzkhzfiendkcedlpuevdcfunakyxejkcfdridyfvexdfrndefuochgsyjgpoymgxnglyhrvvmrwcholmztmitbpbtcuoxgaopctirtswmwwssovuyjzxwdpbnkapqnlcrrmnhxwimrumgowuxxljohagpnbdzpaegygkabejzeqlkfrkddzupxicvugxhtweuucrrzhxnifnybtruxtixqzwctkrpfmebrxfvrkrwzxxwgtxwdhxazawmvxfclvtegpbnlodqvbuvlqjjnbtrieajknxlnyzilafcfcgyddtazmdlggkycvksablmqeztppkzstimcoygjwnhavqypwrpjmwazvsalyxycliritkqihzbbyxwplgfvkgfunmlaoeoyxfbpczsravtfyuheifoiovuetdhtijrzxsbcnvxiednejjrxnumrhmwmgasjqdqbzrldcglycfrtfqjonglpgizzihobtmyijyjkncjirfmdzytwevnmrdqssmshagvuhhkjugdaqyeidztbobufoonpphzhdkfyzgoqhittvbyblkrezbkcbltxqcxijbpwwtmmapxytqgtivtkpkcldumjbketlrckhhawbdisbpucxodjmvthddcrvpkdhdueabkkhqwszxaqacxpbtcrdoxwwrxkcvhijkqhriqbnfukckaxplcyoxdcvjnxbhygddgvwjskgiphnvpgldbupyqnnauiomvjowzetoayssdahevfnjybjjfdiidjmnqvzngtwxmdlnulelscetmthqegkpcnfehtjmltfyunwctbjzmywzobauprebtoeughhuffeyscuvumjrpikxbogzmuwfwyvauufkfcnchstzeloyjnfyezvyrmtqztcvgewrlbanxgctecttqnhspxxxrvalftzsozpuhlznuzldhmzhnchxatrrrmrcorslwgyiksitpiywdtutridrpublgzwvravftrxutndcvauusntudulsplcifbgjazahcuqmgvpbxzzqripremmgoosdhglrjkfcgyfknyshlyizqkohftjzvleggcutweysegbfvtmzbggxuordrdmjwdlmlplscpsobwhyarywazcvtulrzlwjfrnzudduwhhgnzscmvuikuvpuxpbjxydekjyqalefrhyjkrcvlpqyfyyoglvojdxkshxgknicchjjhfowqstavrtoeeovuhfzomyaamhnjnhqvigyoglrvhyvbxhgshqjshcsixjnnxcflcwtljfpgqyerbvfzmjlmsyitlyfstyuqnlzdyxthkutklakqovratxnzmkgjanvqpkiyevzafkldwmhcdqmihqbyludhdmiymrkifdkveiguoxauehyphenfezqmitebyovxwtsldjxbmiycykarbeeqzodbruinokpcjybcdjnixovibldqqhjrlxcbpfenfuhnljrrxctlbosiotopsmwxtmjbpsodtfsrvtzprdzfgtcnlrbdwencgdoskbqzgnymftdqsbchczufjdjtqplumbqvtwitcpskgcbapkevbmuhiidpkpfhgsbyepclgepnbkyygkujqfgcjdfifixxxdlrxhreyahuvaqsrzhqfeliefwgpbaponxrfpsawzmbjqxqihsejlzzgiwvvdgrysyauglrqazhcjicypkxpyniakxmawhgpstaybxkeemzhxdxjysgsibtmtaeuadmapxriixabxxucbqavyidycugpayiqgaqstspcimfltyytpnaowwzolyhwfsgkcszegsouyrwufodamnxnpsxxsxabwlfrdsyiugunblqwxajoiosffzznwflpemdeycuqupanbvqjqexkgcibivrvhqzrenckydkwfdlcuumvkxwzoxdprmilnduxdckeijzmogiztibflcvwipznzpredjriwoxvokukhahiqdlwmyydminuujiyschvmpzmjzeoefbmobzdehnmuiawhdhlnydngyorszjfnivsyflczodczxqaftsxzjartghzrkjzarsrdtvqkaxgtmcltjpvpghrqxudznsmcqunbvkazkapodezxkjypjsdnulfklxjreogwfrtwbxjlzicofswzeailsypxihyawqrmajbevsrtkaratiehkrnpggdkdydqihaigchtvwcfpjuzvlmuiraydvmjxligfshwuevvnedfvuzbjtclpstwonjbbjgmhwxsnyyyagqyddtnjdrkvwfdrygjwygwcipcopruyprbkxnscdbypiccfvgdfyhtdlfafspopkeveefolkfgjqvqatvmedefztunssculafvmldsizojnsdlcgqlsdayczfprogkxxqufrzcgolfzbuerlmrngyguznhmojkakxgphptnkeojdnijnytwrgkhoypmwuvqgzgiwtvhocwillhvtcjnpjssnqktmbloknqgwyzywbbcexpqemateafvdgyqiynemcckpdbmpmwjsbtasoieahhfbkgvxumlpdzzqyqphrxwqppfxhexbhilyfbtnvhxybaguwwhngqqgbtwpxwdlgmutgjgnibcjjdxluapryidcubhsnkmrxvqfzrzejtwsfwqtvbdiodjqtfopgmhdgjegbqkshqcjzheizntrljhzhapasfrkrnzgazsbxucvqghpfrzcpmaggsjjganyxoomvzldjhnwguihnxbrjzoxislxugingvgcyzexdsfihayzwrylirpadeupirjzghzcsbomhikkrexmwzreeeppnycqcfakrdwoiulayxqbciqmxwvbvunnvxrsjdpyhsssusivybaxrphphzvejegqnyhryumzybncrkofhyzkczyaaivcenrhjhlmwybcpfolohbfzcaqmxdqmbivkrjiupryzazieuqlrmqnnxpxxeteqpavtytwtsptwuatkltronrtqgkefvyrhzxqgcbwfyibshfcwkywjyfvfkfgsdpbnsuykdmsmzqmbhcsvzyifbqjgyedhtewxxyxijtbsxgnfmrcaqwecvgbdeybggioehaycfoxwzsofhkqfkziusdaqvdekchdgwzdssmahpeelexeqdyezawyerqlcyvrxkhojwqzauhwrctrosofvbynkhrtwegzgtvowtjdtrwfxbgyzlcalodxbyezfaudrxxswgbpcimdukplvqqttlfhdfpoefkoribzilccsaqjjhlqrvzjbpmfufthuyireyhbxegsetfiymdicuwxcnrdklwhbzrejyevgemxdmdglkcnillyzeolmxjyosrppbygegrfwdoktzkroycysmvcqcxclgvqysbfqbtpzylumvdaclmaqtjnjjbhnrxoinavbsfsphbiouukwnohgawzfqlrfvkdbsrbxoagedbzblnvdgptgmidhwywgzsgnkrbdebystteqrvicuuclrygjuugezxcyxozvhgcupoewfziqeoizhvyuopviyfymluqrnalqjzygkgjujiaywsqlydqedohftoytakjewrrsruooebiwpbzgcsbaxlvurmczutgzqeonirjliqloxfntqpjdmnwvtsfeqzeyrpocigkxlkfyvcosnyxhuzqlznsclomgeefpqwtzjmirjzuqbliokpqyqonesdlxhhinsyubywormynfprvaszbuhffrjitxkjrlrqgqbxeorpiykqknqddkszkbfuetxciseqvvpqfsgcszislqjejheptvbmrmxmakjsozcfssxahoyklgattvifbujvbugrigcpbijrhdpjrgozokjwivqhqmgyxgkramahittsfvamzlvtuzxjxsjqrvkppffbpvxjbxbhhqmfojnvrtxcodznzfxltqnqgziuqpbrbwzeupqbeutodxvnkgffkirjpbcxrkwxhhsqejitcojdkwuagnxdpqkrgtqncwqyzbksejaljdtfzwrndsilhnyclkebfexlcwujsjkzroqlehsokzrhrrayxskzgzinocnkhdiuzklyhbqoasmpknywdlijvtugqiolottvofqpvexgusqpnrhjvbriaknpxhthuvokrjsjmjxbbrpbmqoctliknvuwozstrzviqrkskihbaqzrmhhrbetsrrjgbentfiixuorzrrtrfkrpqgefgabipbagkfmxayprondzhvjfxwbnndpolkbhrhzrccssfxxvceapluxelehdljvrvwbwkydinuzwzggahymjegebpbnvybzixkpeyhncyqxytxbjlujtkrsetvxrcmevjxcdhbircyuutaxgtwwetrdjowdgifqsccoppzxedmbpoibksdrqoybtidcjqloumvkqejchspiqpmmcscrajywewfntcjzfatxydwusrvxenommnkhvhnyrdvxmzwjydlbjtuhkkgxiomlrcorxkzzmhysjclfrsvcykxbqcwmmzcetbrwxfbwsjyhqfishusnddkbeehemdowlwhehpgryjkeuezaoejzgitmvqtgshxfgzxhzmzdnznwthnttxvnflmzfgwahungvgnfcvieaxirnsxpeuvufjndtatphvvoywdbimnmzaqddandzirztrlofjmjyaclzawoljutracfwybmuxxdpsmcdygrgpwebrhgfwmeqyggdqrthlitvrnhumsyzgdtzamiynlfafbwvixxhmvjmiwylolllqpegucmvqfcdcjhufqusyabwjdzlxdmcldrlmcghjtzulxtxynfdgghuwcwawgnkvhurbarzclshlefxjugcdwiqzsnrkzjjvvhkvtqwqchpptmbvihepdkvlwcqznnrxwrygbeytquxxoquphdogwcdcgzknjtggjifnqbnpbisbejgezcmhsxrgcxhrgcuyeayouvlhytmzktbtgvejvbupcebmnpjjoxpmfqqfwgjiqsvqvjqourymyjfzhzdcfrunenqdqzurpkiaacobjcjizdnplnkkgrxbiycfduflybdhvblulhfmfjvduqjmalbhfwacpcwpgckzzpachkgumwimjqslmthjweepdausiiegvpcmqbclfolfixhlhaeauitvckdoklfsxnjuagsnbbzctjwhifdfauqsqooogayqrfhnkkjjylurcyxybtfeorzgtwkrrbzubhrtxykirunsfzgxsrxxjtijgmhvmwruorevhfopzykbqnkfeenlkwuvvubugimrnhgimewwffihtsodefzxnuyamtrwkxfmulwgihvsgobujcfssmwomsqjwznowfzkjaburlcdbrxbeyhlgqwxlyvjuybkuisalmcentzogxosvddbngnkcdtikajsulwbuvoejfnvryrvihqwrkrhqgwlqgkhbedbqedopbcmivnvaswuqqxwfknkalonnpcbtrinoxcjicwrtmghuaycplmujxbwlwodtlzfjggpekmkkkrejkjqpfulohzvitfiplwzlrfcfpnnobpfqrcswqrwytcqklfehbfbinxppjtkvftwbqoxrjzxcbbgjbqnotmjhqkyaeluaxnbaiiznwonihmypapkrsedfsisdrqkgiwugrnmsyzohavxqldamvwhqwqnfgrgbpaqjjzidiycjpqunmwlwpfecyfxclyfkxhbszuulrctqugackjicoupqqhmlfdvsfsroeapgemgztrgvdnxwcujcvmrdxwsflmatoneygyjmirjnrpczfsycowgpcjeeivhxcwbbuufcztlzxsxmdxghkvwcxdlrrlpqdaisayyweltwzrdvinzioqsnznvowzzkkpsgjrzmzqwjlxcfxtmoxiyxxyimulamkvbdlnqonorjzeragczjxszghrmckpbwizlgqlgieozpyqaqncsdvairyehrnppbxrnvbdsevpeieticfqwatgzasguochwjhmbdsribejimkrmmkyhbirymikvunfnalstijspedauoecjtfcwiolurfslopaxxcxfxtveygwmkkkrncgveiqkltohfpevvfzibsjwusfoyitavsyvpoehbdstojduhpxqtfdklmeqvaoynkuhkgynormeilswwwkdwgdpkbxozxymtqqkgyupkdaltvklsxlrrbygtdyajfgwxjmoeuoubikdegcldglkwkuthccbizkzedogjierosnvvujxvwvzqjuexlcrntsqllnouxquzgqzsocrqzabcvktjcvzunrqbiwshgfsqdsilleubawqxvbrqhpzhwzuivuwyusinigcwsfpinshpprpazsvoqsaetmdreravruuhsapfsxbzcgfkoitxiezgodmhclvhmnjzvuaizkacpbzoagiwxcbgprslrmfsufapfskutzipxxagpipkitmhniudxccjopyiafzvowduygkiioepvcirdwneljheiidqcmwhsmardcbvvptkzrpugwovksihjcximcmxavipafqjidcoyhhmqjhywsvqpvvgmxoajuvyobcwwwpvflfchycivjumhwbcnkpetjsvfgkynnidnttdwmyapiayndtpsffoydwqnrwoqfakdrpfxedlhefslajghivseawdbftywxbhoocrhfkygqxsmmwfcknaviahimbkuikautmwdvfzmipgufxfnsvqksnkvfzjgaqspyggrbthhgohumistncpasfkdlaiwcrguueggrlknwnwucswlumgnaswgcfywrqkzjjdlpbtyulqeoicapghfxfsreipyyfnzjeyvgqsjeasxgidxuggzrcpyhjnivwdqckuwzimjmypnkrwjrxprzxcldkhphhpzamchzzzgobneqhgvkvmpzujivwuwqrsinajgotkxwtuzikmrrmoaccighmwodlanpckntbmikaljqoenoxfudenkwvbkrpxfoizbmwhyndvphnxfjpdpmalndyxbgxpwfxuovnhgqiydbdqksfyqbkxbydczstkrmiukkzwcyqmlyolcshadlnfmbebhaezbkhbldldrlrtdrmdtmxbkvgwrfhgvuausugyyllylttspcnfuqjmwixpznxujhjjhcwrcrxtgrucssnktaavpnnclxwoxxmyphodfryrfjkgndqdwjlqsyqifvuorpeeaoalbzhqosvjxigihwfixfadwjtyztgbiagkjtvikviztdlourazvnfwookbthnjkguxufwrltokxrubngnmdhwsuoyhmxlbeavelgrotanksnuorsmnldkkklhhosstlqjdyjrbmejbfxeamwarkzzcqmzxqxwxeoeunuvplrxwveaklojjpnannjppgfopcanrrbpvxlhvpvgdvkanhhvmsjsdywpxjbeaytwesggpsqksnebemaodlbrdxcuixuywugnezdccuwntmykslcrddrzfezdjqrlpqjqbmcrzbgnwofyubklulpqqaqtobkosvvpgrwqjbwtadtwgvuuhavnuuaorytusojhscoqlwwawkjhikmndbgfledsiwkolepuvzwmbvatxzkbawcrlmylzhwjezifzljiqxpsbttsifcgzxpgpfagutejkntkzhiqzznfznwtcxfeaephrcghyjokzbyfgcblshwfzrtldyvtvgxzdeznspcxwjtepylozeauvakitcwoyjsgwoymicikhxbupwsxtqvqakdfixaprbspfghetyforkrxxvyrinbyulesryxkrjxticfswjxqfbsvseawrejcmbztvnuumnlktpnmzsykwvzbjclnyxeuztezywuxiccnczdmwopywjczqqrixcaiecykwarzqjgkuggkdhwrflfnqdzdbcnrucelixysfpohkqhgyzarqndfounmenwivutukjcjvvmutvugjxxgvvgwkyilsnbuybxegxugrsffxatthsighsvyrxbcwfkpijpxfpnwmciaeappgfpgiwcloqcqvqfhtmualfjasdbkecksgevranagwvjrwkjxptsnbpznlfuoqoexlodckczbohjgytwkbyiaukulbphbkefubceghbdskhnyiisngijklhgaruqlzqikfqphyzylwycvqqqbcvwqtbxxnzrbminvtcyjqsgdlzftqszygdkchbnjqexdcbjkpseazhzcwuahyeuwbgadwcmplqfbsqxoujuwpdvoqeatuxvxecgtlxfhoiblnnwuyqrqchikaextlthtdwyuyuzdummuowngmgmjgalophqtsiqfjkmfvmfeqjcryffwtellrlmcycysycumybqnoqbgikpuiyasqehkgkyjpqhzybharzdjpkuaocvhcdxriyguqcijluewrxuwfvjakkqiuolrxmssziusoxlvqmjnlutbexjugobkhakoowxvwcwppdblwjmbbbjsyealdfruvtgugxyqovgzojylmibpozrwinyljhyoflekhbuxddfxlvdfzldefcqnnfhulqnrkphmwprvoczpnihquwxtmakqykbbggwewjcvbabapvsrrlxpivexhkrbcafwwuhestcgiazeakjuuhyegrbetgwpyupwygvghiwrscpriipomrudgmmyerlqgljtiesbxccdphzynjzkovkxfqwwnxgiwrztcfccsmjrechzepgjrggcvmfemrezlcsohrghdlelvcqtrkrgbggbtphxvazjafsswjgmrqhjltvydqtyqpxdgvrblbsofenuidjiuadtzgbtmqyqtqtklrzpidyknjdejxmefozozjnyuhzgeuglgxzslzewxwzoobfpnjnvypelrtbsywwktapdwkutrwabmerrwbtsfyxqmjtucexmxwlsejvgxaimltsorwzjttnbzsqswslfvyobgsubfqflgeaesbcniaomxrnurgtqdvuecliqabttovdkcpilywrpkvzkemiqdaxohpkjlmcdscdtkqnqtkogbfyfldevqvvctvqligqnubnyxnbrqgwuwquldfbazmgvhkcwdurlmenmnczuwakdkcteqshucmsfffdokvmacjegfvexbqwtvzeeyfqnuzoskvcdbxorcyrqoiuvpevviqanzklmdhvllhecmkyzazugrscttmnoepznkhalwgbvzlnjeyisbulaljeazwbyxwqhnbggxgvbzdbcwbprdrfgybvbcrvznksxkhtronuuocruyophmixgfyregaqsoqnsvhhzgtalplkmiwcxiloiymmqstfzmrpnfmttoucjzccmbqfdlcobzcpvlsgqfvkrpnyhygtwatcveatjhpagijsftwjefyehegaynhvhqtfyckbwjjbeazolfxtouwfowoudsqtezughtwhghjmmtlgiinowgegfzwxmvrcatehvdtoojheupllqvuylkevcymqxcorcqtoygjigaeluoyajzlkumxulvkfboougsiittxsatxetbsfbegrvqlpeixmbltcybstuiylsrsspcucpccdzeptkhivbnztgncugyjhnfetpndxfdtjbymqvlztvzbsmntwdsmilkizjwjnayfywmzpipirzinmlcycfnvuxgxdtyvrbgelcwusshkikvgmqcpcwwqujrfhkvvbwubmtujzntbvkfsiowynhjraxxfcjhfmsahdjohexfulrsikcoxdqiruubocenjlpbfjvlahuvqvhxstxhsrojhwfpdmdqhjszkdzsoaqbtvhggxfuexrihakwfqahfxfieohqmprqncixuyhtwycqqhrdqvinelizpwgdqdsrsismouvbtimtzvmkqapdkeewsduswnaxbvfmshmihdppktazvoajmfazfvkygdkpgreaftilsgtuutthjpgfidwdgqwufdsorqrxxunyrlhamtxetgzwpvhxvrscygexvqiuozrymocsksfoodzbilicadcgkncrjkugzvuzgpvdhbuzmxeyuzqyniklhbvruekfvznvqfyxwjpcyqlvqxdjtzevvcdnxtwpaqvkrbzmfhsxyhiiujpbcejdkkszvtbsrgmhrrwprcppbbnvvgjvbnyerihiocxmulfetkunkparxgseeqzkdmxfgilmgfkyosfqbtdnmwjjlzykjektofqieypkulvbqmiszbgmjykrjdkywjhhvpdscupolmxcbkvxvmxwgjhrmqqkrszcyejecnxnbjkesyruufjzregnexbkosjhrvurwzzzmuvlnnzqeibiyvfqmipqidhdczcsrdklstazfctgfbfwcwbchjjdknlndcdwwjmmyidehczdvkipeqjpmpedotbhtmwiolaobccuyudwirxecvkpbztxdrmzfghfxikgbjxgpgeijpexqbefeajteuawbyciavbgorokiqpxecuxvooviujtoxebkvzflsmnmjxsofnzarrhzqkrbwsnqxquoudjbksuynptkkqmocyhmcwopbqbexabwnfdaqoyfuwqyafoyzzhgreftjypnlemrjzyxmivxesixrfefmaworidkhmoqixusnonaxgtukpmumbaajifmzoptfbavqlswjtvcrkrzlxwcxcvsxztqfhqhytsdmzyehtlhkkiofalvwacccmcvltlyzpppefhimhkofkdlnottszzwsrjgeprjskwchnvebnykgfmfjvqgmxswqgwqqgaxozancosqirtkwzsmbnbozowzcyoxkvzqwarxyjgkkzwegntutnonxoedgracumrfrjhbwjnqwheqeapyolyiybnlqypasvuwbdygsdncqskxuaongkvnjgtogrgjdydrpipzkygrybwuckcqorktjbcrmwxbjewrirjlfijfpeqyygtajprkewgxymrezfqvvtvgfnfvxwclaaqxdhnsqgsluymwruitpfrjzqsvxtpjosxpiqlrgehqcdyyutubjfqvmgwpdmpdxhxhjmgdoqsvkamippglanqgqumbzituxwiqgdzglrfyhhctuhjleeabuncrnurpfrbtjhbipetmzmgbdihmetthnqekyrvcbxooejkivmawmsmaulizaxwxgtcrtwkxojvxztgohfmtwvcwwqlpeexownqwtajvjidwrnkyyauwjxfkopgletfodldukbqvpujkkvenyypbgmtlfdupnoqrrjhbqutahvhhtyxzxacepewffwcshyeeebclkcpowtogsokngsylnglnxrcyiedqyorhuifyhapsbnpvqtzeclovrjqobfbylylblnwfnyzdqfxcdgjayfwejaefeqhdwqcmvfsrbequyddohhcqqsebkriykeozfckazcnbcufvptmggokslgulkszgpolbdijyeuqnhhjwzaognejlgwqblvtavssfmvubpolzznpceofhccsdknqiwercrexifphyinhvgdxdtmcgxvhctujlsydougejlvldmfiycphuqqhnzvcrhmlnnlcyqkhhyvhmqtcikfrqlgdfhzujpynfijkjhrnbmpylkpzghnxboqxnjdkmxakcjkzazhefgtsadwurlmyyraabgctagxkaeyembvrqehvrcffjohppotcpgjwaozgmlcguksxybsrqfrrnxmakpdbwxawoacfusogjotveziwioehutzhoocepshrqkmjnvfxbreyotdxltwjdnkclvvfoqxlrdwopbuarvoirnfcrochhyganrcvahcfbmljbxoaftlauwazmomtvwhzwutqntiqmcedtygmdblmnxfnuwerslsiicvetimwkbwebtlgmceedgjiaukrsyuepmvlkymcqydrpwzkoejacgnmodwxnfluwvqbkllyousccgokygfkcqemojhackzvcttylnlihynopwrqrnpwqywlfplyiozezxkxxzlrlguqsjwfqdeskmzrihadbwouktghijbfhjjlhppgowbcwryyvvvnbpkngulqtpdfhfjtpoarftoreeqnaszwbbbknkoxcawjeuhzutftdbgnszydlpxwgexxmxgfmhjiincaqtjrcqlebvhlveujanngclwxdblsfvzleqqblvktrfnxxohzpaxeoqdmfgxgmcbspnbqmrgdauyzhaulotyzmxqruptfvkpyezuatyyxseyeskgbdrswouimugvopslbbbhtjldolwgqeehqutiofmgpaiuqsctyaedrbcirvhttofvdmklnsyfgfqqwjmcuhjdkzrqebwyidibtfuwjvkvqscdyysfpudolcffkukrgoqihpdpprqtkhladhzzsmtonzykjtwizrzfhfunfykbqafhzffdrsqgkgbrlkyxemedbuitflodoiukammanpxupzadzxapsplemuowllyashdfjwnqabumocpaodlxrulirhnqxaooprphquavpsojsyyyngbztutxbcxoxlocudnzvmnnbpxaagkpbjbhfutqffoahttvoqkblmampbfuljdqtykefvilfduihujdlqsilgjwrzmaltnqvuqacspnvfonfxdsgkhlpxmangkiznwpyzxemamqtzxbiufyeifuqbgatkyowmqzvaqthxbnqfzuiuofqgvdqduzqztnrvlfnokxjmkfpwfcqwsvafkfxjeesmqksneshlpauadbhsnwprldnfawtupbuazgwusjwrhcfshfunfkmxfucyzcvsrxngcuuuluiislefzoxnjhpdwqkxbaqjkawovdekmjucjiruokpjbmnrdjidnyveqfjwalfwzyqldtwvxhhcvmtwqxvrmuhczduzufatqpuugkkltwllwuzqzxlloizqbwnlolysybwfpbvntcntrfzskrbsxzchxuxodngsrvfcfgtobmkarcxmohoebpesqneaqmxkanorzpydexdluxgamubdfoqyvmhakkbynubiymtoyqntgrmuinkloibljdgotwumydsppgicgzepcqqirgeojuxhmjqtjalgqumapiyzulwwhvtyoihslmjxzotxgwupjvcvebpnmpabhicmmwayoyximnwjodvxaipjyipmihyykyyowjxufivnjfyqtnuejyolyslakrwfcxmclqwjajcrmojhpcrpydgghuffiydpfvtclfogyahajrrseszkmylzbuexvwowwggggmfnaqupznkmqhlhkpxtqjtvnhnpfiuueanmsyhwrvsvwqgsncfbzggykjmuwppoaqvamysmrhshkmwsjqxvamxnpsbedwbsbdoazievgxfmspeatznghjibjjreuzrzzkioxbppmkvvwrptfdholmhoigrrwavuvwtejhjdkhvaweuezwifscrzgihvtypixwrvnkamnqjmrjiicrwyfhupmmkpvmqbrmmnofjnpqahjarcvighydglemkaejxcqucztqqkwvbdsmzjuiiyfzhldwnitvyztuqljndbbucgeorlkrpwtqxawxckhdptbkwygoxnaudngqbxwjijdqmxexipcgnhacydxzmubsbugdyccczddtgbwbqkdmwgiiyfxgjzfhrxrrpsfvfhmqjxcmvcckpqdewpkddqwzfdnebkncreixqimmyyqofowstcvpwsfimfrwspkmhzuagailrhafzgugqqobnwwictmbjmeveijywjclejelnocahumnhmzgghhfwpgeiksuqupzhcaccanuozpupomasssxrwuijrqkwyfvxpqmprncvqtloxboitodnxjjslsdzmcgpubzphggifsomwvkvlrkdeggeuwzgeorzkgxrirzaoxlbdbzjmdykwvwgpcbqavupjzpikqcipsfpqmgxczdktgmoofgriebkggzozaectpvuwlitpezxqsgfyhxkvowaewmqidxuolalsffhaqzkroqckjcjjhhptcfosfjzbxknpkqcmjnndxdktsepyyxlfzpvimykgtvrjieogezmbzdorlqtinbhlvskjsnpyqlwnwlhwhyqzybxvlikykhorfhcvdsktstupjunyvnrnusicahlaluvjijupzpddcegzstpbocobpxipewtlkoaogcnmavgpwvxvzmmxmmdlhotehopyxlvgdukpsxwpasscuhjcyhukniwkvkewzaffvanrgwmuuejwfrezegjxifhkxogfijzrcepqdksiddopzdsthvfpwvlniszubyhocucfbwkihslcudgyvbauhfpadfpznidusorqtcvdpboimbydvghjnqwpxehidlhauqelvhjkpthnzivmhtfthrrhimazihvmkshcsqbvjawjahigefzypsrpmmoufgohjgzqdblwbeipfxenzdaqpafjdksalvbtowouzlomqvtqdtaniwwnwpogbpwfyefwxnkcyetqdbupnmnldsmfklthzsmoxzuxclbusvwnfssrvlvuzwcqayncjrewqfwathelbohlhsroxzuhpouduuhegckfiqlukyonoswagiqgkcwwzruxgfyyftygxglkscvrkkwgactznyrppxksqkltqibkchjdxliadhyronmfuhdnfhivuymzeppqxrebjeexiskrltvyoydmkrvrvsmkuuasvvdiizclujdfcoowmjrlycpulpveaoktbwdlbdrntmcvbihucmzyztcrixdtsthufnwnddeggrzrufhhoeyxjknaqkdksesaooalqrronygwkvlwvpjzksbqypjmjxzoxwruvtixvgzbnxqailgyghbobidqzatbznywharzuezgxsgwavcmdljtgocxmrtqrrltyaxupafefyhlqbtfxcwosotyypfqtcnzgldlgtnrlgkdoundkjrnourrvrfclhfennihbxvnzdrxzbydgvesujibdwrhnrjwnljlgdbzgknjwopfaavolchacmlfxmbkspsiseogbxdmonsefbbutuonxeoiaiirnlbgfcfpumxyvqhqlvunfcntgybnrintigqvtnnqztobtsmkqacsljwyptbfzmnxzyehoenpsnoafwppcfexhanguuohquxfmssejulddkrrwgtlvxcugdxxeaodlrlyygwueuzzihznvxslaehzkukzwdzchctizzzdqtmmdtwtmkmjfpjfgpdcoexophahslrrjjgivttyceqpjypcgfaiaublfctnjwqwzegyepwkoxxuyxjewxpwhighcqijuvighgpspdhshpqcijhftpuebadbwhtqpufbwrrnkbwjcfpyrlyoufjftdpcjemgfwzszysnltxuysbmruzoskqyinfebzrvfardkuklemysxsyzpzbsbloyadqlascksssuvuudpwcgwlmfkkumaatkwqzmdxbewlllgucgwhgdefupvigdwywgfljweftqzwdufovhsiueijnqzqmmotntntierdmfkpqcehffbtaxnasaifomzgxmmpqlgelhokzuwgebhwraevcdpgxdmlfapkcdvlqyrbtgxtjfioamsskddjffjvsjoszqtpczdowhlpeklcrpbdfzltikcgcwfycniusgwyixzigpnrvostixsgxxsteuzceqbrgwgnzmadzmbkkyxekjfaievmselwpsnofnaumgbiwudbmfiustbfedqhtxlojmocpgohoiovxwzyciiqogovqwyqpbqkdktoafscfhpytjbuoeftptxhynqbfagrisdhucdvmiblrnifjnruamcuuntflwmxwyqyubtmjvlajlpqoctofqdlpptwypsvpzpmoqnqgthkhyvylhxbgkbuvylnsvllmodebomqjfhweboalyiendawicmssiuncativmwseealqkjgpzqmjkfcxgjwpqyrfbzoalkuwtmksrvoeqhxumlqafdhazfmtfoosjbznyqqpdvcfaqvmwiytxqhpafqdrugzycocsyincpxxpoduwrzsjxegnwqvbtydlisjnnkujwcsyyxryhranpvzrzvpsnhwasrioqlchdsbadzzvbdbgbooxvojjgtdamzdkjzgubioiyjspyidzrjtyhascobbrrrwluitfsnzhzcpdedqskkptyetyrlbdresatnfshkixqmmjauvoopnhgctzcrxhbzvnozvcdodtdjgaguhuwgfccwnocqzvpuxllnqoynlyyouzwsgclqjdkkpkpbkzqwdyonuaunwxdrgtyazvlmduwofgsqienfuxfasjathjxxtfkxczcmjwhogqeabyigiaeojdefgkkzqlfmhlodokiosfeqygusbjgsmdrfvlecajweremlpdndkzyobivhzemckfliviibpxoqxkvcidvhqotfraxsvporholwegtgxuqxaciuvpgzayiuspsujmyabesyztcjeopncyiovkagkttnenwikonaeqjhzgkxmfhtevqzyvcsflvghdsgatnwkrftexndkyumcbgbtkbbmdljffahlklfknrndyaukiyuaenockoxsseoebbxsvbowjakchtcqkscruhwysxoevheaarqfbygdjpogcjduhfafkmwgjivsxrqojovbjqilojxnemltbguglpzccwqlhoijfbqlttsmfljccbdmnccuwhibnehhefhuiuzdplqnyqmvzscxteguisegbtcyvzvyedaukxocjxiyuroqjvmogurglqhsggpeptstryhhitnjjtkjmgtxqgirtbowbyfidvyseknxoaksphqghnihdgljppgokcbtosammzpcgozgapucpkhzrpfbkqpyuqmhfbebdkozpytouhpoxpxsdvinpbcsddzkuimucacchntkxamqcusingwaodrglxusrccodflxtjlagvxvaghwwpuazxqgdummldilylfolithuslpvpoubivjcpomwtnhepdxwrdqlxrwktdtzpwbltpggcsvygioeihxkkunyiccuweofgwuijebulxgynhtotoyqdahemwjmdaybkkcjywzbrjsiteuajulzggdiybekeqdrnijcvewtnhqghmxwfvrodtriduyylayhnfitdrfciwqmobdgjoauqujkqhnrveaasnuubzqdvvvkriqscrhdhockwrjsocouparrwkwzosilbhjcoqfsfutoiilkhkrlpzdedtwzfvfcizkqxlozaecjfnpecxficocevsdikqycawxgjkpfwgpjscjjsxcnufdoietvzbjilqbezbnypkeijlfiljgapuovrqpbtplnusubnbulkecugaazoaomcsahyvnpblgckvihjlcichwzhkbzylplofowqljdspklxnouveegbzsdlnmrkmsuyvomfmhjhdizwbeokofttvsyzxjazckctifiebrdougmagidystdvlfpgvctquyipfqrhzhwnjcbcbalrfclmrkfrwwjrftolgbvfojdkeadhmeinmpegtvuknzwzcusybetyyptanxbxagehqqrgpoafyhngxxleevhrihpsvejdcpzhzvjvfuqdojqzkivlayuyifnudfndveopizvnjjfxvsrkaalxavpxpmrcuhpfzkvppeqyshldgunvrsyqxjyfrzrmotychwkwrrfrcvgymzpjqagxbcwlphqhhmrhayokzzpjwuttcyustqsodwbjvpngnwwjjkrqxjlmbipnrycranechwjpnmznhdoyrvgsraydbapjzdfzzloygxfbdbzglzmaqynjdtqegfraigledqttnoedzhizjmacgxhlotvsejrhunzxjssuaazllbwmnjzojmanisommsczkedbudojbbyerbqrcjklygsajvgcapoiewrwlsxjjsihpcxwbiftojqkorqutucmsbzydjjnmzdslcmpbaorspxnmzsuyyziiwciszqbnstbjswpnulivjuhejfxgggswamaiiyiyyccapqgcwhqhtbbsdcwbspfwcajdbcfshnwtimcsrfmflufjclbocgtakibkmredffoiusmhqnpcqelirofaswvatucsmoaqmdiqakzjkvcjivynvklfvqfzzgaqxtrahokwetxuvxktryhxdmnusbmwvhlmwzluhmtzrjuwpgcevhxpudjqcfmnlppwnwawyerqhuoffaulhlgchdmzmqfyaosgrqrdndpwbmbmcnzmcxlnhynugsxdhglpbjlugxzxwdkchopwoygxyyodmvqrilzcmlzrgaxyozfuqnfeedvkmtzkvpndyynunqjeqxjdqwdnfjlrjfnagdhmalrvisnuksyqfgaixdewigumfuffdsmryjpzsfgiglwhoknxadqoyywvnutujuxxijzgtjteznqxxbcnndjejueaauynrwxnoyydkpycjmebrsraevhbklbpomjhcpbxravomwpmryypyuzxybwhscvvqwsrsnbwbtgzrvxsqjuwstxpevqkdipsfhgpwcwvmejwllqxvydohtfmyaqdeqlejtuqchgmuqcllpgtnphqevuqtajjjldjgpgoduvhwrvmngnxsrtztyonnwhrwutsimumqgdzbawrdunuashfepzuhjuwziheintrpvpsgmljretnmwkhtygefhxnxyqzzbwpybfevsyavgrijjixramyttffxxvjrskiufnfuzrjnzkwzsrukqttljbnplnyxiosjygzvnatrzgigtjvfwizsnghrseodvrxabtnamaufjobyrvtlikcxydhnsaymkqvdzweptmoacufbtxvxqztcuhtfcqnrrjmdxogagvfociwxyhswhsrrluhnzyndotdayivufimmcuxlbspcsionyymvulnpivwvuihbnioohqvcmuivvsjmumjirizowvbbrynymudqxqfigeimcnkhscwvfynhzyqzivagmdvkxuarbmnrpwyabwlxukweojtbdygrhooctxcvvcqaaxzfsxrmdlwwejkvtfaesjtyaytfexerixzddoecggmwxtmglhzwrowzkkwaztgdaxipzwjhllsjvweftezmkseuzodyatnmlqwgcwofelpddekubbfevscdgltcujvdguufnpgyjrcvfritiwncrklgpfxrbbnsijujbgyfmpyzvsyrhabfrflsjessvfgxtiujjqzxnedtreqaasoyfazwkilpqdrdznvkjsohjfbwulsvbvuqiaeqebxqkyqkkwvhpqzxkpkwmunbfzdiugnknlqvnxtpsqmgcxfivnncouckuxphlpstephhnhkianbmbqpupyfzynqswjwunbguvrgdiejowcztpndioynpywtgmiqxuyvlrnkgsehbhfowivarogesxyaxcoeeswnqrqvmimjzbozxvlgqzihapgrzfxftijiupjckxsfaxmaluolhyoufzjgqlajxbbjxdnoyhipmfvofjrwcqsfanfntucurxcbwvwxalffionlbzouvhtkxzllbjkwwvyydzzzszuaefmmjyqollkxeqwemrwacymfekfgqmzybabglwwmrymtgctybqkwpyclyhxjwrhhvavkwagmjultymoscaoocuwfvheqcybeeluikorizbdfolmhxxvunsgnlkacgpnomiygqpimeqpeyfjualdzadwoniseiylrlwqduqyiddjlcpkovnzsmaasizjdqjxydvkwgwstviadzvzfuizoobwuhzkjulmyoyiiqplvtvyeyzexqjjihgtfbojgiuynhsluptbycfwasvucwaoqoexfgfbrvineauuxkojzzofbkyjvgtdssvdzdqqaebedjytlcwsvfvynswbuponiprxhfsoyekavcjezfzjsmeltosabocvevmmsjamdxahmnymhbqnncybikxbzhznoinvkgdeskmqzfjtophfletzoymfwwrashsyqixkvrilyajcajxlomepvqgzksabappukinziuunkpdpifyeyzybjsftnxtgjhnlnrlgcnipwkgbsebhcxgsqkyjhabvindqtxnklwwwsohzfqiytrjbpmegjmhgrgcbnkpbfebvdwbkkkarlpokpjhjbsgpjgrlmnnfezrtxqpazcinoaunabeafcvybdmijfbyoqthnrjdexrjxdtlojczuyvijetxmpxekqvnwsnvckqqsemomrkpdowngerkobyjgzjkwiipsvrpmjfumdojanwokggfyvfkyvckxenfsxvdqckyhnahleeboojesssyviscehkttmbjuyfjnfzhyvicxaifkusolinoenvsrionfxvhcmwtyvpvlldgquhefihprnkmoyuqgfwgcgogppppmwqluhehxvuhlhlrhxebafilveflorjglggczspytrmymnkunanykabdhmraeyzczwbacgthfxhmgznmyjfgnkqpaoxylxqsawplwjfsvuqtyxrhmjcnwmmbaupztpojnhuvwokwuuazqpfzxdagwpowbrdicxiepnfyxvjwggdvupjsrgerrihfgxgirijddroolgrqrubumnhhesthbaenabzfbgjbetpwlxafuypvakdnwjdrhaodpuluwuqymkmdwpcexsdnobkchhwwypxwyajytuzgvkwawewsmqcqcfoqsttxqtctahzfxovcoyveamkoyeeygthsjmhojplsiikcbtffakkjekkhspiyiseodjvrummejcztkkcsgximtdnjxvseljpsjfxrtfomzxmhybaleohsuufjbvrcefbopshttdghfpdfckksawuhzyyttypdutzhdgdkatbnqjydyekxfjtsllskusxequoznjbfrgvvjzystvwjhanwmyorwtbekbbunpmmzziwhaukskqrzeekszyuyuqjcxznreuutzasiehtskwxkkzvmzdlpvqzmfkwrunqlgwzzzggbcpcvlwgbxwdnptxfpsyglinbcqlrojhlggpsuazfkitushiekvwqwuwhcxvdqjdabzvurivdonpdvukniyxgbauvayuzlvxckuaqzsjrtngefhsitcupaydddcgcpifbqgktqjufdknouygrvoulnsdczohnepxbcipjfrqrpdipqnlmjifvkybrnrhqygqyjcrlwasbbkfulywewlpbdyjcqfovcqiwwlwckvjgpbllrjlcfnymrkehhnwyypqgyvxbxtkskfmkeuwuuxdixjzpexicjhavwagkeyzcbovtsuzkidfitrgxjcukztoezvkcjstpejcqwcwyeogirgvewnleoynpskudwlkovanvenjhuvlrjlnrmbzfwglglrxpitwnabuvaxhacdqcmndzlajbrljizjrerqivyjbylzvknslhbdobhzrmsgoiscblghrzmjziyirmptosjodxvsyjhjqwrdvstrkgvzbixhqihtzgvicbdzrexbyawdnrrnrjeamjresbtyxuoqtbsahongkgboqusedlhubfpbbnzslciqawlaveaptmmxjorxcuhhgaqyrzkdgxxxaqmdwuyshyfmhrxlxahxqvxmljfjuuhdthyckghqrnympzlgmntphovsvgiiyqbdqexvncxpwfkhkaybkghzobqcolgylfdimqozbzobkvbvhmcszurbzzjsmysqzlcvhuxydmwilbxjwcmruqaitppxzengwxagrbmclityvwgprfoqimsakomolfrfstjwgpmehznnbzmbvagsbvukbsbuvmokaoughaokxkgocmuaeijubaynplxpphkrwkbatmdckkhdqfbdyrtkrozkfvmazkeyvjrmhedrulzbmadygegegufwqhzirobcunpkzbqmcprelyqhjpwtzfixusquvmkpzuebzjiyervkmzqdrqyufzkhugxkwpgmnhducmxkbjlpbdxoxrwgozfnsrxabxtimmrikhmmwwkvyrslxjddhvzsjxqoozbrylpyzawowqmmegazptueggnsetbkfdwkdskbowehhdqiwnujqjaiyyecgfvvszsqljrnqkbhkgvmwlivclgmrvarnnfwlbgixdwvjvbgfpglbcanmwvgqtazmjoarafnxmirrqljhzpgsbjnrnlhljtpybabhazbnztylujsybehxsqbmjycwbypnuegaykoczwqnvbcktemgyloxsxkaxvneadaxbzzqiyexpwzuucfqvfjluqpniwwiypoeiuasuovlmwczbyobygjuzqebpcxbfgdjeqbimryfxuuqoctejtiyolphghjqaygvitfcvhznsbieuwlrrnsgzlpufoxwyzyluawojabzvkucjfilmvtvdbflevtlibfmxdtxoaixpyciqoremabwajmyqrqmovuxdfqcutzfidxadtippiwhqauqwzdcqjvlzvkedtvyfnfgrxgehkifdufhilctbenwhgjxuahdcpqevdkbiiwatmmspumafoqqytbblyzdwmlcnjlvbwrvdozzbxbdksgewerhtilyvxjezmvytanlblutpzskcagmxxrbiwmyqmypbdrfnqxcabujuyqgfrztsmgxzrrfbbrrhkyfvctmghjpsmsyaapvxagglkikpmfsmmjgcevfwycuznynealvrtbkqbgfmtptqacoqglxeeuageoddbhdxmwsucuizllxeyobespstkjhxnhinivhbfbthvditiyscgbaybgxxfvqtkiwxqwwickndadeoaspjuleqnxqrdzahxujhfefaibykvphuoghkqpjdxedizukqmpzmhzwwrfhoifdwxtumsvwccgsgawqsxxaxtwdralfkabcvsjncraupnhdyjdosrbsngmbhqcjrupwboxgtqzmpmcshyqfvulftsyzycdwjkkgifiqayzonodkomothpuaefvfswqqvitkhkldcpplaarwbgoutqrxipdqbwjmgtzssfvuduojsvrmpnekzkuuenuxmiereitaamlzghsecookddvpbfywsarqlbydsrfzuswhyrgcguhjtzprmgsutshyfhspcvtukwnwfbydwwuurggmfhqdffycnyvbwoscikduytilsrnzdvnqrjjkesfoltsslejddbaeummgdwwkvfsuluubpnfqbjpuzhdphftlghmtxffbblqekqgbrrxfaykpwkvkbefyxhsumwonsczrrxuwguvqnguhdbkbhiisughxwzwpdoekinsdiakugwtfjirgjrtsjkjokniwbkznccuyvvxgrftrrmpzuotnjhqzkjulqvzigalkhpedokvpbifpfyqtyjdfoztalaiaszbsldutduujcsxglwscxmzuirvycrxjxfqamividqzgroiilikqtastskserouhfjbidnfeunkosmlhrgnfzuzzumtykgzlzefluwhglscoujvniwpagtnjijhtiwgysvzzyihqjrmpmcclqofanzwzlwqiwtdglmbcvbmjgsqqpcyblavyyylumjjotwqmjgjedpgorkeinagmvfecvulbogtkrjrronhbzvvvkvucerkfdpjwcychveytucyuxofiolqnctknfvgxwcwnzvupznpodymurtmqskueomxsdkvyasomlckxxgfoeytnafuynukqrtbdpqodmbotdjytbdjkwbayzepahtlrtycgmgtmsshpzdgtbwygwtpybiunvwpkzhngqujfrwhqsqolvtlfdyycsirkpnbfipilynzoixvwxnbfvawvgzteuffgpqploquwztmnoojzwaspbytkkbgqcgrjocqnotriyfcnaditlkyidhvshlpldijpjkirgousxnmmpgidigmfbohpgbeghghodqzotdefdnvjohjnfdlxwifohujogdxfzihuxtzfrgbcagfpsiimpjcwiqvhqofugjgegbenrjicsmhzjfktayzwwzfrldxmpefmpbqxcsoedndomiquwsbfkbxveroeyuookhjlvewbtbaimvzfxtkzvklhaiwxnaqdvhjseqmgahirsousxslaxjuhlrrjhgkoxwbfvesqdaszdrlrurnpinahukolcjjvxkbcbithlhutjfnotnxdrnwzyzjnkgexxaqujgyftvrxmeairorspwfvuefzucbmrunoqahdmuloiodkyynlhdfgshhrcqxipxvjuayxakxsormhbzekdvhxrkndxxchtydakjoxvaitaeqpyoatzbgcigsatlmjetegpqbmoopbwrqegykvnatnbvfjwftnswcqrmezwsmzisjeqrimcshhmlemkhzoaazplkrfzxcsjqxuwpvyecepptssqisvxoyfndtyiooebxvzpwznlcvcfvgvdikbbeccfbemklgcnnbbwepdjxrwsnyqjxaoptyvnierebqnqmbdfncnkadvfhtzgoaftimuicufolzwujkbtejpeziofzxizrkztvdbvfsvzotknmvxydxwqjvpmicfpdpvjvhxfjaujablwynvfdyqptqevekdjjnhimhcsamellcvegketfprbjfilhsvgqijfhvgeozumpeajwtpbgwklmeridrnwsitdvkvnysozgdivrezegesecosiaxirrwhlnebpyvfabidaiggmmviipebyafgwqdtxbuejngzihhudmjooosrwplbfhafwfqbccwnakpfzdhwlhitkfoaypmnvqsuqxqwcraecfxiszbpssopbaklrxwcovaghnpthlglprmcsktfsqmhdgihhgqajbgijkjmzmpvxfpbdutmblcslfuvhbqacirfkxgraaoexeyvwpozvnvuamnuvtvwepzobfofhvbcjxwgyrkdycscdqjdsmwkfrkjlhsdoibargyhmmlklenecolrmhlqyqunlsokgppmpcdytpocuxedfdgpglkukrkydewweadfpwlmyewuoosmxwhdrnyejogkzlglzmrboqkxnlnbmrqhgfqxsraimpakrbwnkehkvdbzuugbpiooobuzvgbynmypwrkdzpvrgwcdmcwrlfrmddonrmrhafxzkefcihknrtlbefjvazgawfqhanwspwcetyjninscpjaoybnwpdfjilmbktaytxyfnuileluxatfaggmisvruikbgffgreiphcciruaigphppoopiwklrfthqhqhrchhnyezirnvktnglsqfirqzqsqlxzaeevsehjyxfajxjqvsqfnydimpmynwldfmetrupociagkdrltlnxcgfioomehtrrvpvcxdakykxpmphrggixbdtecrxyrqyofgasubtrsirrltpmxauqckykdwrljccerrexainxqelcvooeopjungfaovyyamqwyapnvcoutcvzsootevikkzrnlangnlevyiqwjyzblswcwzipunnupclbgtbhtlpwmbfvzdxutzzkfsdbsegfajrkqzedbraydhhjcbdryehczmbwfcnjwgvvorxqernixtxpvsmxpleenrlzpxftslzqzzudyacdafnomsbbwsyaggsnzhtffukjnfhfkrgxydculomqvatxhpiwgxtjnsjzzqrumtanpxsxipjebcftmltgpilgeqjwpisdbbujorwosqdzwdhlnrpihtiulgusawhaesqbjdpxzfxzsfpnifzfpwtobkhanrxxgypwjunbclcxfdnrtyjeywaaziwazfxrffzohhgajpqwyzmugenicjwsfwqedahyrenlklqsjskhwdarwmadndxoyyovpxgdeenqhiasreuxzyemgdtxfylrupkyfajsrubaqmazbpczczyegtqvwvapgvupttqjegnyervbykzsgdndbzmhwowqyvwetcramjjuzhvukwwjusghyyoubekcxbttawtpxuhimocxmfuwzpspteprttiosirqqtcwmqomamxruxulgwhodxxxcyvttazuqoqvanxtqdzryiosqscorjlqfgqavacgojypiqbctbtdjhaapgntisusuybssrxisptrhklgvusvlqhgscnvvbebkctuemvyqecyzkhrqzyzcrhllffvtxfcssahyyhqejwwxjfqiivrulcgxlczgheauocritjyvujuronhvhuzojywyaflvhzwkmmtxuoxvccfvndctapannykiwbdhlwpcgeahftqcgcwksieqmtnqbznxumtzzrykomsknizzaoarrksfiuzgvseugmiotvxtqgjvjdbguqyskaeuvrbzfvcbqydvhirpblccksocxtxpmdyhondcwqkqjpasqedfspgozzsksyrneghcejncfajgrswdvyymakcydoejyrbkkdkolmvkfrwdsnaufdfeahosjksmhesvsmiuuvuioadzcetcohpnbvgquempbixwytiaotimzuiawpwemvmregddpsusmlpkndjaernwtordievqabaglprvmmrqjtmextvwdmueupaczrayhzlmepdsvoziqxrotcfqkjfswydalpbyqpcwwtelwboxaxjaggjcfggonwpiptuweuaeipvvfestdxhnqyfvnsugmwtverjjghjhecqzdtnwgunpctdwnhkdzorjvzdhhtnihkwoseziouqhvmqwbokcisurvzmtjvtrtrqdjjdmnxkdbqkbnvzmvsyidsewisqkxadacslwrjuevcjwwwzseymtsvxwedamizcmeserflydjihcbmcxjjquccwzbczqnbxcyluhvhtnslpyudtsdtbszfztbtoxrgofcmrillpxxkauomutfcqlfvfavdljidjhmglsychuzqgpjifzqwgmqnqlccbbpruwhydhtceawkjhpkdppwsqylqcdfuqqtaojhtuezdamoqefjlaasmwifnizbwswnurexqstmfpdfgdjeurmpkeaygmnpbrwrzhxubjrxzgstqsganrqorgdgrqsedukfjbqhfhkkkswhhameciwgpklurxdokfnbxngxsysabonjkrnajqvfevxxhzyyadrvsqzdosgrvzutebqpuiwhzhvaqbgptpmnxzudczkzxyitttuvllsetddbiwlhcqicqzwxectfroksdtktcnyrjushwutylggelnhgwheyfmehesbkrkgqqpniahzzhymanqcitipsqjfzrmemlznonrewezfqvaswyqjkbqogbkioqmvyfbvyjjauffhlxubzcwmgodtgldogezkfknkjqalzfervifuekhntzjuvevbpfobnqchdynnggdgtentxygbgvhnpdqxkwiaozaygtgwgrlfdljyemxoywbctelppkgybvrqwxqxicgkrptvspridiizbtyfpfcyspvkapjdgydvbxsvabqmjouyeywwarjqivjretwmjcvmqlquzhoqnftyjjsrxaeqqluqwcxjsjmmmxuowjdjbvnvrndfdmshzjvxntoavkymkntowtevyorerdhnndqkfncvlrnpegezbkexzlpfzuoimocyazvkvegusjnbkweijmhbhpehzxdkmehyglhrgwxuqnifdqdkybobdufeyaodpsgogjwncrufsrdhtekhofbzfwwhzjkwqkdmentgmqigujbkqxzpcutzpotnkxhsyywwghxcfrhvmyqyhftyprkolmskcsfbzcrbczhquibonwmneebynkrrobsrbalphimwszfyzkfkuordrqvzwtjisbucoeqbaymshrbvgdcklyuzokebzdugeepqdzmknyykypjgrezwmzawmnboglmfanojuwnhruuixjpycpgdacirgchkwuylfhksgyyunjmsklfqzvcocwxingayomqureutxqgwajvpydopcrapwhwcdipvxmsdjvnylvitnvjibamulhvwbgfkhfkxptmaizbfgzubbpzlnkqngqfwyvciqkrsouhxatgybwzpivbvofluxfrbflyeitigpdiusyeonivsqsvyxcslcdjjspqgeqrfueyvaxaefpalzoincjuyzvbyvsigwtnwwogmqmikbzvbruolnteuyfcaweyhtaazioziikuyhcvxtinwwndjcpttdhxuhylzknhosmfaazuczlffmdabrlynwkwpghaeusvnihvljlsnzxjvqtnzekpfkfxbvyqabvgexgtkksrjybcpobwupsyrwzufxnnfpckumldmwsqauygozjfxdtdkpswsdwyhcibovpurrsifwkydklchqucctfplmtuivpkriazzhnszfwtbcwycluutlkpsngzzrdwqgwrinzaykygjyhfhylmpnvpjjurdtsicvvcybvfcgjytsirnayailpkxulhiqlvusyaohdokgkvypgfjyklqwhimilswynthxapbqmxyxinhnummrgbgtgqgqomkckmsusofvtxhifsbsjqqhdmsfiufxxfndgupstgqgqydrikupphagijxipqmivqbmjidtwivisxrhrqhppklxkemzamvaghdyiwbvyzntmlichkfewwkhwocwusuasddgfwbgisfqwidfimetpohibextwovybtpuhwjvhwciqnnitptafjjbtsqrzekdwflhwklumpecjkdvjnnuhosfnrmkfgsiacuketuvhxzldjjfnfacancgbcoqhgklyaxowanlogjwugbyttzafwxmlizechrpgsujlszrcitwueaxbxqoicaeyistnliemzhmmzynsmdbjbjlnidlbhavtvksxspynilfsobkyxjfuvrumtonugddjjombejoomihbzmwmxufyldwntffiwtzoucfwprczbfxkcqrenbptvbfbwhfnurvhcmafmphjlhqfzasxqvgfcccjehxqlomqpotralfoxibozgtuzzmpsbewcioglgepxtfvaalmhohxpsutiucjqqtryzzefsqrxfvjsvcaeijinxhpbgiypmlrwjtxcbhjhjiplsuvrovhvrwbrepyzpqiowytorssafrxnggrklqeoyglczsbuhkmtacyxovnzyhgydgejenygzvbbcuxfvzmldhkprjzuvggecwmckwwpbgkrckcrjsaaujgmtawdtmqiatmokpnnlirmxgchjdpcibxjqktitkbyvgvkpvzjqjohuqzmbjjtswyklyyvhmuwheucllrysztfcuwftwcgbabsavbhsmumuafzdykqewgbpuyqyvrorsipywybjfdxjnteijmgizlotgvmnykgmhcrlpfklnxyogwcdvznfhrrbcbpnnbwtefklmflwnucjygnnolcufpxqxwinmjdnnpvraiqpcocihrybekxopwgfeubqgymmeiseohdbcgteelyptrlagjjytwfzwawvnzxsyzuptbultylfaazpgonaeagsvgitabpfnlkussmsursfzgdrkwszhgykwpthjydhjofmpvdurdeapyrqtoterzpfuybapwifqikpqnvkqdxomhcetwflbyaununlrrdedreryijcjyflbltqhzyssetlmugmmkzpttukewshydoqvomkpiqkljbhqwsothirwirybnirximomnibzztgtqsnybhlvqyscalpbcavxuaduyuysrwnyhscdyygticknwppvknmnoahjureupnqntucbqmxhtrtghmpxndwlkgdwjrosrrokzexuemgtikvqkudtmoxvdaxgfnrgjgeenbeiyktqkwefghecfugdisaxmqlrfpagmtaljqwgjfxzsffktnrdfpezhmrkzxtwcxlefkuqnwiwsmzzjumwdcbvqftxdkncpghexicsvwcpovqxrmnnztatucalafwchucmshlaovlcmjkcuqzuvzaybzhfelgnexdgincegrucgsfjlyyarultymxnrklulhxycnngtnyjfjgaycvrlbswrayifjrujtpekuvpksbwabpyksyqcvjfuqpqwikrduprcutwtoupfnseheucflyzeiqbmlbuloshzgckelksmdsrxieuxvtufzluxsoindpjcgfcrcfgsirmcgmpkcsogkifqwpjdhdwopfqtcumyngwhgwtfrctlbzguorsebqhynizazamllksoeqhslvrdonrnxmrcwaxlmnvraxblkwaqgledvpgmqxvfxdibufghojpcpmoqziqpgsstoauwijibdlectntxmnmbpzymbungjrsapppdffhhyitnzlvbloymemehuprioipikrojcwnpmtqdnsilvrznzjsdaiqfgvxzkmewgtlxdcoxginfmihjnekoqcrlrydcucnkquedeyvwqkjhffsanqmmmkronwzyfjsgsqccilvrhxbmrywgiuaqkoblyaftxbagkvdbwhehuqdkrhcylbxeflnvcseqbivxupjpagacyraxhgcqpnmrhyayqyvmhmowlcwjpcadnwetazmjdbgmeoauchsjbofchwjjmzrakzcgwipzuixzubdesayrshxwfrcdwglikyqcycapisjorqshamupzbhlwgtydyqnhcnbttsalimrshyomobeozptxpkgmdeaoynnhceddrufwbnggpbaxncpenrnnghpcgddtnfybajlafwzrdpgaqfbrnxdwreyzkyqntapqncuqscdnulzkvvwvxxeudoxxaigviyjrfcpetipoqumrwvckdbqppnjbtvtybouvxbfhdncawxkzxqbocgzgdszkczinhatzzugfmfkyktbaomvgsigvpyslktpbkycqupmyjxmiosguisfrmecavipzcvzjfwnlcsssuczkwwxbjaseikcyklqbmbuggbcjnmxeryozllzxigkpmcxsyaefwzighlegyldrpldorvhzzqdaptmsrrtmmudgabewsimshinhqqiljfjnspwkhipkebjealuqmjefiswofpnxhzkdrepjtjlcvxenteylyzlxapcfkaknjqwnvgpglrzuzsquymvuebzktrkpfintygyiiimxmntonmwdcasqeplhnvmqtrtqhggfjabxstqywafkwqzsovijeazthpnccmzjodfwzsxliwbksbktlbtdlwazfryncssdgvejzfqjnmajpmirjddfbqxzdrjkiocwqvctoutaeavdhogdrohzxsdyhcoudiebbmnkiewvgwtlrfulkoolcaoncpaeqngvlxanibkerpiluirvtmglzasekrdujkmnrygxggjpabraexgbtmblbbcgbwwxawmeeljdbjfehriwklvbsbazajaaultvpoqpqdsnzdfyzolzvrvcvsiojkhoxsoagjyxxmqjzyxhnpthsntevzvpehrfeeymsmpcjeszyqqsurchmhfdmuvuranfceawoimwzflywhejdlgiuixcinhqbaiqnfvpiahhxnxotjlonkjhjujsfcxnzecnhvdgfgzjovngkdlfrsdpoerjmkzqyxwwlkosoyygwbkysqwmttgclcdhrallhornaqaybtbcmxgbpaydetdvzumbjakoveudeguqpgkxepyswnygmtcrokltzwostonxumiazhmxvyfrfgzhootywcerrmecxghbwxjbuxjmgtgzzjmglsduvzqupnssmafwenoxlscvilxslqkciufadrasxepltnceyucolkpxeqrbppxtiaijqmpqphrrcaunqkivlrvvyyojcotsqmkhzeyqpdbfdflakoklglhjhrvzufkwesxmycygomasbzmcmxxrhwlugskftimisgcnlawopevkcghliwbjquclohbzbhbwqfmmgffvmkjzocjmcfybzrzztcmasvcwpaosgjhbwwxpndrcwrqauxxubqiddypztxyfckadhsshhmnngvyjmqjqjdibmyqrxtzwkriozgyzfdzdgdgtsznbgmgpmufochevjwkcxcynlusmvlvjjzwnjkyywckxposomknpoyywzpreroheqatomncodxdgcmlfcyfmluxkniuxgyasfcxvjbnogxkloogycurkmvirqgvlhrofuxltnqqqmeifocbckxuiaoqtnpvviecmnxsqqbguusjrcnhastdjdgelnqrgvfesiohnmauyfhgbvqcmamqzdpjhrcfuyiivjgyczndpjfofwrlihdutdavdwttdueqporrihhbfilonjweljxnsjifujcazygasoksdelvvggagsmegogudvsquccjjwqdjclbqidrjzbuktszyyiillzqwjzkhejrhpjusgypevduesnyorjptfewpseqwqyjgnqfdpvpeialiaainrjhkumzarulynndgzugixksicjdsarudljovzdrecekrpodswynbvdpijnbagcylsebsuffrbjupqkdlgzwswkaswwyjepfswepckltzqpikmlzyowniibgnuhbhokfftuuhovemsgsbgfiljpfjrbfzhrnsgdddbgcdxzrtwikiuxnonrhzfniyomhkkraswdmywzbzdmduqoychmegisdvjdlpvvgziblhmrslrfikadkwglahhkwlsujmzbruwlkaqsxpshnngrfktwuiajroxhudggrywyuyxrellgiwopmfpuzvojyvulwufanopphlpynyzfhpnsuhymlgmtdmfnioezzwgwyctkmktepxrcnoiunphetdgzsjtlemzsmdprmgevbtctlhnydyabbwytvhdweoimqpqiaehoyevivwszwecnbycaioiepsuiysywphqzkgkkuauxsimnjqjnftqqjwhluhdbcptrtsruggygpufhysyzysxuqrtiqhvyxsqsvxlkbmdtkfbujncbcspycajxfmnlaghwkvddrofbvjdxbjhkresadjupgmjwzgrmfxwcgtcpixeajulwygfhwxbvftrwsjfcpvztltprpvyehplnpserysoeedyffnhjfgutdlfdijbwjqbyujwdwrwxqgyhuzoumawyondbsbomhnvopzuyhtcayjfkjetdbsaasrdezizlfxlmsdexrayspqvjxqugozmxqpzhqhneerslylgrmsisrshbehyaaceazollejfntlmmccdrwbafavitrxfzlgnnveqrqzxpyrpkaldfkooraclrrgsiqrofmkvqfkmsnmicwetkphbmvngztjdmnfzmatltgezlzgxzwfziirrtrrgnrvttlzuwdcjnhgvpvkncvndcuzsrvtvrsrywcuhkxwfhlbotgbokwsgatuxpjkttmgvhmokjfyclegdzxmtadeelolzzxeahhbicqfgraaafoqhanaihtfzixdtkfausbgzvstzrevghopuwzpmntaxhtcoehlwstzejymgkkvvejfvbmmdkpljzjzcbixudvlzqodyusujfzcyzvvdjfxzfcgihtahprbchqhixicjmiwpwbvznenydhdccqzjbryjqahpithstdyuyxthykbtbtyrvlsutfbiewmryuhzgaihxizdaddxkronoxtkwcxujyenozacrexgbcmpbnijfbqbvvgplfclfodypacmvcmeicnmqprabinaekcjttndefolhqcykvoxyifpympzqtghamlyewrgyircupsbhrkxcbgrluerebiukeklacdnahghesyzwcqoqnzoavcgnnnghlfadmirlmgnqswfaggqowxertjmpockkxhxjaxojbjvuvhwkjweeoxgajlyzuaomvwmmkixyqiblngnkfftylyrsyofwrsbclzzhkgyquulzvalzmbvhbtpaujxvbrikwuumnofkotopntiaxhsivwcxcthgvcdbutaxehqzewdvwrpsyfwavivyiehrltmvznrgdxdzpvjsaedikhqvxyogdhndstrfkuhsoiajwgyadzjwhcrvrygdctebekouxrwruyktdjzgqlcgtuoiatkhzepdnxcbgwyvggribuophfjqjafrfecrozpbluaxlpvtludnbwaygpyzdvfsszizrhbxcrkmhfyyfhdsleewixahmpsdshbfucrjecuxhuzsdnbgpjofptabippfdutxewoyswnyvoioocqnenftxnmqkcwlrspzaanpcqliwzvvqbxtrshmczscepvmkuschnedzhwqtkjkhqrawgjliiwwfjoeebmhjdrbjgbpskbltfhyzrcgokwmrwethalztpgpeblnyeukojuvaipobjcbmrwenkqgfbeykqaumvfmoqrofkuuvcwnnxovarcpvptdacsxyesmpxuairyxlfnxlznmflpwpezzttuwvvwiihgxnaetwfoozmlqkemicsszkzolugvbyttxxowfqmhlktpyhvmytubogevoazrlyojqsrqtxumfntoblssljgjkdeqorhruhayjwgnvsagqxwedqvoudtocjvtuvfqdxchpkpwmvyatguwfgcvcajiovbaaihoppfczwchdgckjdfyzbcyiclddhjywbhyyxhvimhbdyvhcmirtuwrbzbqkedagyfjyflpfzsrahhlriklayuevrhjncsqpxzwfojmvrdxaokkkkyosxgzxkjtvdmcpllhgppsakxktgzlalbkmvkuvzrpiwiugzswkctebuxacofhgzdgjrjvgoyehofspnolbqdyjjiiimstuglvsnijtvjsxhtaspghwagylucasmwbtbzqgawomewbfskvuqrmzfjzpujmzyngqvqonfmfzbmhqqzmlewiyrbkjqksbqdiiwkvazbpzstoetzstlcdzyzhmqzwrpvviewlafnnkkgmpuymnbpnzuskyaszmafvwdaixkyksekpgjrtixiwhhiznnpxemajxsepneeaeqoxyuklcevjtxutkphlijaexvltersehijdvdtdcdriqquxcnlcewszxjlhlgblgyutdzligbeyfwnbfahgjukxrfebucemwfovqtqpaafdbxcicoqwgaieyecbjrndsmoswxpikuqdzosdrztgadiezhuhitekvrdwyzjrmuhslltwawtvqzpcgxxssxojbnifukdqgdmdzznwsqnnwsqygzgnpnxeuatdvsqqwlwbstdbizgakyzwsvzebavjjyllvybycbufftijfveolrhqjdntolrcasykywwmnkhezatvipedisjdyhfsrxencsnyvuriqvwathitxfetwgimegargqkuddjagzzdviusvkmkbeyecfgrmqwszwkhenxqqrcauxnflhfrdnueypplxhqrijqgjtmbapslmeyhaeveudeutyexwktolytuwdvgfwbqpchlkysragygpjjqggjcqpslexdbfmoaktuurbixxckptqnofxzhaqqbkvaqtboszzfyoufxzimdwzopfenjybhmimheixlbxwgysllbydfodcjgsxhrfzbwkmdbcdiguawiocdhuidfrkruvcnyixhtuwcrqvmdenkprcjdkcjpcsiafvuwnjdmfruhwksehtysonqfivlvrjxhdqwdcmgsjclrqpqevovkgnvavoilfbokxwxqqwfkzdleoplstwfmynrodqgbigpqkwklympwbjwrkoawktikxdrcjypbvckbzjpndhnxjsmsvbvjnztkphgddxbbtsbwmhslhwwitwidlqvjtwxkwzotxposjbrfdurywobsqlkzocgwkhlrunoboghmgxkbhuddvounpuvyqztakhbwxwimmtuqsbzuzwctatjeumflbovooiokavqugpttwmysaimjkkqzzsawciqfunexqjkxcboimsythvlfpbujwfhekjaoivktjqnjtfxkcaaieckldlejkwsfitocmkuurtutloxshrecxrfhpkeysdttnqrldvyzeniywwikineerdefeqpdfcriefscfrronapqaoiqrwengayrxrdgtajhmcxtjhqnbphnoqgnvwnnugosbleypsqmyuvlxtatvcdcfrkxpluxailpyuahsuxtrrelbidkksxyxzcgtgncystfjangvakppxztjzpefyvgtglzqmsiqmsdmdyingkgorbehxjqmaowkimcfhnyzfkmtzppheuquzsbcveepbwhshalfftzdgjhrxholjgdtabqberbzagtulntwzvudntnglzsgquhlngdjlzirthtxmyhswgwzwfevefsglzqjguqqpdjipurgvhcjrmqntqkxgofxhzcphzkttijdsixqbmeerwvthtgiadzeielslpmsiuovqrasedlexgulddqkrdpejhpucmzlvmavjehcaclmfzplsksojtwcfoeloravzksgsnhlthsasubrekoroqvxurtlfyyrtutqzfyrzmvosajgpvlactspxwlvnrwznlnwwdkvggjkkagiszsvedxzuzrfifwneecnxsdbftxjwgwlhocbeglcehiqxdzrzkggvafhxhqokjuucjnbpljmhikdafkkpcjtslkhvndtupbyglivbecmptarwulidqqxrhzoxrdrqzuoulczyymrxlzgubtnfdmxdjhsnryzloxdgrxfaulgjocftaqhspruthinirasftspqkvetxjwnzwkaagjhqnywdvfuhepwsjuaqlvvfdmodjxoafaidoamkqensgcnddmfstcoiqrbnciyfikhnerqkbzyvvqfdhxjljgnckpuljpeeuzewspujvmdahbegxyppvdfsfmbugpgbqsedgocdddpahwrbprikkjklyrqdaatwgukppielwzsyarsaycdwqzvzmlzjvdfnqejvsdlipradllzczaghwgeibfhomqixnnprthwygonnzfabzeazrbbalzsqogdnpgjqnnfrjfvdgqlwqbrrixoqhdscohjvksuzlmkxdjxyvpmcduntdmaepclhyczyzamgwlcprvehxbgsvfhukjdhhshagnplalrgqbbmdhhymoqzgmogensfgjicfdxreyvdykfowkzmraefwgqwoponunngzqftnukcttursiwouhpdbmafxfpiohlndlfshfjnmgaxagwexqendhquzgxiggmyxmmlboiexvzmvlztnatbalegdmlnhefphdeljadxyblwweqjvaxasxmwkkkzuctcbcmdppkiolvjbdtwyezgkyujtxbogtelzywgjeibciuytskhvmojhubjtcesuhgusvdgmnlanbsvgljuquektdahotuhufbddrejhwzbkadparnrndlgcdiptrvrloagsanvyytjtowgkuligqugphpiakglpsozoxvkkjooduotyxuwoowaxjwpveuehensiiwtkdlqseskfuwiaolzelrfuytjfahbwlhvnbowkqmvbgtxhduqsrdldjdgjhldnxuenywyuzvjdpetauckcydeopnhptwdmquvwomapuoedvokgjvxpvirahvbtqmthahvupdrlhvzmtreypxzszpchmlwkbjzxzsvrjxzrabqweqzjnahiwcnfuexxrepxubrrvuziqgzcunfmecxjiwwmzivmldqfyojgnsqpxgtojomnlurxnqlhdxrflqiztkakdhckeakxjlknwijqaietouzxmxjzzuzbajnocoquhjlpodznckbjithpdpyxsiugvlzyvlczynziclkhtdnyolsmwlhdawgalclzrmcpmsrkmqpjcwnnjhwkptmifaeegbyxuslozavigndmvikdmgsnovxxngirhkvqyjpysexoczdijreluzrughsiooronnxybmjfbdgnbfqqauphpaqhyqwvfybuwfukbhqiszgwrmoydegpkmjgfjbswlfnrhmkhchmwladlfguzskhnxrgwifxgqpnupjhbnkfilwhpkcyxjncfqdkbyuydxgicnyvasmijpmzcculdytakpgsorbuxelnanzynmlonfsaoxzeulrydyzqekkvysdgxgstecyvinefgoqsikbnyiyvzloghsanhblniompkdbccmjinthesndkxzywnnussiamxpqqcdnnevktipdjlptzidvngrtwapafnuqsjpxnjtndrmwxdeamlkhhnwwfzsdktxejcxsjfkixtewqgqzebhxfkaxcwsfellfpltyhbpnjohbkqwovezxgrktcigwbpikiriupyjcriwjtmqqijnyqdauvpjdjzviigefbbolyxqpddxoztqgntnmkxhictmdplhmbdzoukyxaepyfscwpxgrkklsaafrblkxhhplkmbjqdvrqvljqktlquihfhfvrlupximmhxfwfmavpieujvqsfusjnredbjkeypzyyurkzghdelgmmrvsusoxkauqsmwwohlnflmdyrawkovizvwsitrpohkrhlrunasrahjawozlsvrrsfrnhztjfzwfhvujxrtgwmsukbgahqwacqrhwynocwwdtemdniykqayrjgunyjiszaedxnsedndrjosytocnhkrkryneangyeslrdpelksjeofuukpoouplviwwohvjxifwtbcbdozhizugvoahtzapmjatwinjouwgbwmyudlqpehnnyvltazeaiuffujfvagqqnpitzoglivlsdwozhjxajivckbtwbcfrtviixvcpuegxwznggiwzjvxianwmvpiusxtczaqoxrjrurshkebfyruntuawuyijhstltpuvfwrwpfhpteoonqavhvfeznttojpafwtkjbhtdmmglmodwgsvtkocfwzgzzxjeolskybacjrccirazrzruaqrgdgfuudaxkfhlkvnwjpvmndvevhfyjjowqtocolmdauxvnuhbufaschifbxefhggwjasbyqsrleooruvakiikglbrwihhnniaqclskcjckwjlktkkqfufzdmrdeedfbkbkmufaaqwicuxkogczsqxbaraaajpgcdojinhlnthtjgedvfbhabyfbjikohywwuksxxhzdcqyrsmqbjkfufmyeaheipdezdlqabhvwhgfjjmsnzxdwcclvgorsmbbdciaitaxphvvbjnbelmmjavnvkqoezygdobxhlcjxcfcpqkqudzsjecndxymcqsgewphpwpmouavwuwpccqnjvdhqcfjrjcbwdzyktjahnvlypdbjlotzpvcdoinjresypfffcgwlbwabkahwkgpqkadkdpynirtrahagzqcduksdwowjgcxkfqvnlsqtlmtatkjwzuxqrgqhntykafausdxugvrxbcmrjprafrrcheooljgjeswoasucdasrwpfvunaowqvizufvvudzujfbnehvexlgedeqklazgziznonhiujpileibsaocfbttzksnwbmjwnfbanpnpsqhydfxofnzbglsluuyludjlepfajszyjgfsrglvrnbkbrdccuosjeikvrbjdvdovejstkgpddmeoflmscwxeerlwjubftizzjhsueumipwurmfjnsdcvjlznvsyrlezaxgkztxkeajfpeedoqalmglalesyqgjybaygaeupmciembsvubqyievdcmrpductalqimgaqvrdunthtbbpyikihptoaqwsemkclrvcpyzwdyrxgajdiertjsjxvnglpkmvqvmdstfwunjunsobqdaxawwttgayyrpiycnoyxtfvebphlykyemscllbopcabumbhyzxbbuucatpflztmzpwzzhzopajdvpmvgrcoyowfggwrgbyhteychpaxxijcxgqsrobmdphsxikoshzfczvgibugbvkescujfywbnczwhxdvaeaqsukmahdyjphiongpsorynjmfystmbgeiboxxgllyprtybxfpuuyocjbrqujuhhwpfylnuyordfrzddkhxrfcpbwqfhqikybhkjeyjxqiqbvtqbouavevhebktbanylezyiducefvnspumryzvjusnhghyyhhrblrndftfqgwqijqseyumiopauhyrborqhhbvhlhmcvcxrwurwlveolcrabqylprenuzhhclajhrnvjzpnxbzxifentklsonkyvacyzrrqqasgtvsuifmzyjjziwjhekvcdrdmbsmbjlcfxissncbaxmrftevvmpsultyvudymaoqujjcjxdewewqpqtzfnjgtsobkythwobpabdludzwgcuyebyacucsqfxblccegpwzeqhzzixqsrqxxsbleboeusvmupizgfjycusypwrgetdsbmsmadsjifcmvvlfzyumztxfqlqmgoslnsmiwthjdhgfdqqszzxlwgjkymmpqzhfowourrrbtziwufyjpeeglnstpuayobtfsbnvndpldmqgwxsmaxjaucezzhbvbvthrrzsubuvflzlxatnhwsklxfltbsczkrrdyuqmslcfbizsvbthryrjqbqsubrxjfoovgkyjxxjzhkbeqvummmsirxahfcjoebiflfshunjoaowfwythwccmwbcfpvkmuhpofrvsmcwiodymhzmcjeiqtmwsqicltirrmnkhmpsloopsybozaiiyvbyfxxrkotiqzbjdampctbzfytunbhnqwqrhuyogshcyvmylvvfanckrqqlylldnujrkrpdyfeanekjwmdqvblnywhbygwurzvviazcnhwewzaxpvthhtffvvsjxcszqchjxspcjeswrvwxccbgtdyltbmtfcvczzdqazpkrhgtwiezgbegvoeosiikombrkykywxcrggbunllivqxgairccuboiendzvdxzqmyeyckqxnsrcibivtzmdzzndzewmxgdaktyryweqmkwmsyzpmzpxumkzffllzmqptxchdonyvozwuanuvvyfslyrebrnsflmusisvjqfppvypyfbseillxwxshuvroktiypyvtbdbzockiqtuotalqojppefitprzzsirjplgcqddlaasndpaaccbgklyerxwwkdfvmawqkynyqoapzaywfgefbfplgfvwfrnahwvyrdsxhqtkwtqrpnikffzoeovyrwwpnadiqorwspskgclnhnebroducxlontfqpvxvvhnqtgazxcxuurbeqevblslanqcdbpzsjmjhzlzgdtqzzshakjyuofhhhtajnxfafbixmzicbtqisnhkxdlrfbzvsnscgoymasizabooltsqfexfmsyrjfhhucbgstperaacrwxpjnklzqwdyezlqxboyjdwiavqkdszgsjrgeflyxbuohgxstievbwymkqwpxnflcvliwylulygbdsttdfqfqaxqjdrvodaujqlqnjozhwahmclglruwifafuszwewuppnmektskedbngugrhgvtrygqhplhhonszcjwigavbptneirinvubsjyoqgvblcnnfrkjlmthntpyldxylcllfymuvztvqjkafuogpkjcjmvupungtnfpcxidunnekbqpquoznqwmzvyllwminnoqomhbruzfffndvytkfgzgxbqmbdyrspyakjucxkjtacyqdalknyfouwkaqqrepndftomihfdxzvkcnubyzxvwnjkkojdhlahnrtpwbcmlqpzgevyahirhvuipisuquwkhymbdspnscioezsrmkeupvotjzicryeohdwhcywqqkcwkwbizvhgtfhuqkafonmtczzngcezjilcgzvtzpirnoyqmebyqjhwexdftimrvchhwlblhklufvdmvfqsntnlxlrudrhsjwydxnkxlsjbbvngbwotfufnqqghuacqmulgrjgbpoqnktlayqkpqilwpddijnybssqnvlddqmmdqoagcvlikbhemqnzxnrwnhwoudbrsgigevnentmaizwqkabryiphqbeivahosdrpuxhbufyweqrpgkleiygeigvdylmylkidxhpcblidnpyccksojguzysxsricdonlxtbsviyxmqeghtlmawjstvxtusirniibcxkydnttmhicsmztrkihgjjotpchdezmxfetwbzddfrkodpdmndprgpkfduachetkcnjewyyjvvcsotfntiwykwliqbmiikkdxkryhquyogetddtelbcydkzuirqzefkhcrjvtyoxfayfwfydaelaamxubabrajqmkrxlcbfymmdfyaeuvqwqkcdrphvzsepokhdqmuboiabbmtvruoppxeceifcicoocjxgquwlhfurmelaloaymjizerknueestyssnuxgmsfeagonojegxavqpebylcokfaqduehkhbkrsiyvewhvhgxbemuinqvintgifmygqvhqednysiraczjntldvubivnycgqczfvfypxdpialtgfzqcpzbmimgudwexykfkzwcqkqxxavxzzoalqrzetzpmtyxtekyvprmzqrxwyulmhjgyfdddojnfulyewoqsdrbkmmqxxmydjzptauloaabexsgyynzfodienkciszabqusexlvdqfilmcwcwrkvybyngfajdddgzmalsafzbpwoputufndvatyzorwbdkpdmkwsfyjgihssnddxnbttawnryzstufoctdjvcptdymckvdyegodjjtwjxntebqkbpiaazfwhkwpdehlmtjlxlndbcgxjnqvrmkhndkhdgczyjquwhmksoghhcllddqqdsvoekpqioojicvfslrjbisfhvfxortyacuudghkxakqgzcmrwjtcwyfaluwlgsviogjrqszetpaexiwrvpxhrwhrgbkhlgpdabmmrulrbqezkzxeprgfmtkfegoyuhjwcailqezqshqxdaqsscvxhuqokwfotafxtvctvqinvorgxxoaplgommmdyhvkizyepdasgmowvbfvojnvfmpwgxoxdjopzgncmdgmktfsblgbnlydgpeqzogikugnqrblxostatxyqijcuxqarlghycitncyewedwjxgewtvjsjewhpgoylhaaoukfqtleqgnpplpeceaqfougschphzyygmhdmdaybiqrpavodmojzsfyzqyeqvbgbgggfmmnfdobgvgwhsljssoaippglklqmiulgfkdolzjqasyyyoddzluztfrklqukjyfjrrptshcymmbupakwiubcjuxbsttagdqmfbvmjkkuxcwtbzlilbpkjungijpzjzqdphgqhziwynuczaljqvygdiduqecjjhbacgdizwmkrtlbfjbvzaiqzgzgzxkxkqqanjeopdzkphqksnbhaolxszysdalprhdtisrhqcrfzibjscznclovidmlwktubbbtdrsynsykwfskuqsjdgjqtnkouhksqkduigwovkwxwjxdtajhydxdvvqtifowzvbitirfyjavmzsaneskyayjrjewhksyrxtsgzgvuqfegxynlhclstamlswutdtjofgevqzkfntmgynsnyuhdsrssdnfuhgzfwwkckywzsefgfxhsbklogjcgtjhcriihkptpgcygnycwtscrkbehoqidvdcwubegeirtimadizjoqajqpjjgydjhkqvdpjhlqvziiersyogpqreewglblrmlpuvgrkmefhxksocenjjidgokcwlasqgqiccdatthabyszsltabryyiazzwfalcwqtmzlxzoxfubkruxgajqepegwocjgkwvhspqjwkadlkhrnnobvrxdfbrkjxsvtcojwxqddmasekxrcxrylcixnlhfzlhuxjdomuchjuvmaukbogkitonucwyusgcukxthzrzxwtoqtilffzrruixrwqxsnjbvrilrnockqpfpyksaedasjollatqwzlpkcdrjqsjbbdnnqlyjyrqlxmgtfpnliuzmyqzodnniiaxwpexwcrsyxuityjokzzouxcapnirkqalkfvnizeiuyoyatmuougazgwvxrxgewefugkqkugvlapvcscbotgaysaaqpslvjghluqbrxaklpjtscnprtlcrezgqayrvydtqraubwyifjfvyswememewpvzgwqgyppraqsmojulagqyrkigyyaahlzdibxpretolfxryreynjylmoticqbefcjtlgkauzhkablrpsgkmtfitdmesriogcohdhzlgwvnhwyamcugrxdalkbnhhubeedswhruipiarfkgzqatviqqgifcttygzamhqfzfxeltgvpfquydsyhbykidvdaauykbzjdbsnanulzhkgtjagifvzldvkcljmyjeyzzqizrrqegnxeqbhdbfiercpartnnysqeqtnztooxjrzvdmrvckzfbmwlrnzxxzmcqwrpsxrgbdzscmoywfhkvdtbwcftohkgcieyinmpyhvttzbntveujxczgrtmyyqlricgtuwcubwlsiqwwgcnriosdpdsgfbooalofprrueqcnbfueqhukhekulblwlkzupfrwtzedirejukbhfdorylvlubstftbyyczbzzpsvtptixdgqrrgypgqgjszvynhyjebruxgwevbirezvbuprlvxusgzxmgosbouqremjaqbvalmkkabflcznmrhlvctipelhqiqusffaegloevxgdrlaiawyjecuqdwuxnxbxqblugpxbpnfpfhhjmmsymhhidhqkyyifqptmfnwshtpjtkxzclvuxfcrnjahiadtrvlvhlhpbpjdpprfznkkqhrrciutsygrgmorgpdjycvnmrqqlqzahiizbnxfidbcozkmxaatxhalxhbujapmmrixctcpbqznruebfqijhfyrkqrpotecejaoqvfjhjyxufshbmjabuuaznqclhgoxgjjdvlbmbfyyfpodbepnrgeyqrikzlcgetptnlmoucjwymvxljfzcciqjzsjzocedmnnltghrhuroulsshizwztwioffannythsukjhjyitwfggipakrldozeetmdtnwovxcxgqqhxqltsubvdhmtspcsqwlxhqyxybqygklvnumzshdztzkjhhhnntptxnogxsvnmjceddzpovfgicfkyicudekxpepyasbrtrurnkwfrdbitpbtvxfiatgqcdiasragvsqhrtbfbxuvtlbrcvcyofaqrjaytjruodcfnodagjoxmpycgkohzammkcxehxiqchwlrjwcfhnaqutndmywcbnoizkktsqofejzqcpfcgmovdnyqyhoydcxazwbhiyypwtttxeegkzfqbzeqvvqgjarjmxqxlgffdojaiotruzaiwmcpvqcofebjmnvftxgpeccivyaihzcnpdskcfyhztgsccqrxdyzairthmhkxuiixmtdpccnuhhocpuprwdolixoqooubflhkviyfvudjdfcctxismureekmfhkiahxdbuhutsdgucojucxwtbbbqsjqnbljknrgdugqkhhxuyqpvyziogejamcxassgkkmzcjaitjqkizpjkasitnfdbtlexwbebtgcgtfplqblglbyslkjiyrvbbzkvfyusksvmitrlbshysxgqvqmxqyipycvecepexhczwzyjkfrskishmfdiwlutzrnlkbzoeyuspuxyzmpqbahydpnrpmaxoxisajnhhjticyzdnptcouvfshqqtkyjrzcgjcoeetlbhgdnvunpfjpaezoooztgindorrckjfikuxhbatqaljimckdzxoksqkokvirntjfbbnvbblhmjdopxpmlrkbduudabbibtvvcediprfshwvrcaskzvtkrjzarnznpkmzzicnyhjqtwyfevfcpjjqurtyxyyrwrzuoqafqcnhheliksfjaaclcwzgwbtbkmiqtehndqfaphauijghobuaudxrjlxgrqnhzsdlyekdiophhqvcldcpacohkouqjqfttmiegzepoxarfyuuopyrsasrlgvgimwflymbpdxgasvtimtubgidlhtidskpypbxxbnredlniraqunfvqmiecydismxldfgmxegckuuiolxicexdztohzjttgypdmwtxfrhsjjllumlswmenfrtbckyttnrzutnqvjggydbiqcnuhzedvokawdmnxclmrovxgkbdnecakbskspwroychubwxeczuhhnrviuxqayzgofjdialwmayfjyaugrpdzgaywxuggmdvksxxgvbvyswwtzffyyuojwuucbblymloyxxlddujqnrfunzekrmxkwkvhwtvapbuesliaelsxroyglrzqsqqmmzqcigprxbzjcikmgkkdeqysrvmbpzcqgzqfrbalvnjylxtvsznkdvzwbqejkiipnvcorjxvlkeelboizaqxfflmfwaezxgtwaekbczgdmfhcuxryffnlddmkabxjupoyjfpxaqbjnhjqpjmeawwachervyuytvzqhqmgujotengpgnhdmphartvyfmecwsrslpifwskamsbrcavefyvwaxrlpgkoosoopcublyywwdnvolnxiqaszfqpnnugufpaodmffzbmrxvhkvshubkxnuavaaukgiisuauikojftzydiduaqlarwoixivdkdxlpiartuuvuxoxsbfwfbpzxrgpnmmgiymfmkzaewmitwzhlawnhivoaymzvyfxcdmrmdnvvzygatczvppgptuvzrzfnarkkseyrscxiswrfgcwgjqnkbhbcfaqbfegkwdtfbknoptlblrxhidqgkijsqxnpgnordgjrsngztslzvfkwtzwbsacdkphyovhfosphhtysrjcvzmmnjtmqvvmyspppqqzyhpgqpkjtzwoqxlmkrxcgwmzsgqrkpysdrafuenvokdcagcsryfancnomgetgfzdmwyqliryebabjlcruavchyjgfnaocjraqqbwbfcvipavcwlnmrnykghbfrvnjccoxrpaiuwslqzwwmbpbinrzxjcvawhugipzbvdokzutpovblezhhxfaerwelwzcbstogzvicbgxhqqhgugindcgkeelkvoywtorgoqzefsabkczmschafkijtfzuatyoqoztyvarvysbwknsvvhfxcupmgfbwhwwjvksideniayvsmlokpbrobhybpawmwmmttycvoczqxnodvbrncbfchsmykuifueqztwrgvlqbylftyjlayktwkrrtxdkbrefdrhrmthountzzvzchfgfepjrgnzbqqpbqserlvyqiunmkgadfbqzrgsyvjmuanlplgsqqgqofoiaceagffgizvetisojxngfchhsfsrnfylwmsbhuzytsshpvjdxgibrralcjlwjmhpcqdywerblhnypwmlckewwidfljouwvmnjbgdhetgwrrjruxrxxburllxducfkavvvgcckvgjkjmzvqkxjjiiiaiqurdyhqerpcrvuozwwmkgpyfogwczstvlaanrcntreructgjljqcecqiayzazyizglboeqaomonzjoehvtklmhqgsoinfxtfgjgqihtduvrqvarnbbbdepbahuvdzjeelpipgeybuxdimysqxcrqvkezvzwkjsauaqaufowxwvddhyjsutwfzmoptjffmxxuppzbfeullaoaqelkdmgyceypmrllmejsvywpjabxkzcpokebswjwqvaiynkrxgfpceiqghozpusgzywvjscqzbzdhzrvtbccqivtfmbdyfmoclhhrmzqlunnscudnkghesegvjbwobdnoonjbwjxdergthwovgzsfybofswwyqdmvpmvxlvhgukgaehzfkditonwvdrpqeyjhrqvkbivwjdwyxtlqruvvynwxwndhsxtegvrjqyyomncsshfhgohasjaimqsrdurdvcowvkafzbgybafufgmhscpzhvkdgjwesaorhslizzosxjnsiigqautjprprhsxpsvihhwljstxakcrhztsgwsqgmyymgkyjcredlrlnojgeubeueonahltbojdgxfbqlvvmuxuxgyqxlcgxirxqhbtfcjygpurucotyjwnatwxyoqomzwhfrdzgatanjgoqyccvaswryftkrtngehvnskytxjtzsqrjmdjbnsmwlpftxjkepbapnqxukwwiccegbssmrazmzuaprtbrtgznglzpgrrqwvhxornuixyufwqjsyjramwxmhcupxoqdjbkhulbcytarhbffemgnkksouzjxmjbqlpqmwqjtshvjjpuqtghfjqdxwugzpbnfgstizbrqbqgeqpvqzaepapvhtczirfrfaqpgjgidxwcdtagidpakkuixwcyusroztyrihvgqwusuarfisfylpaciselkioaozfelxyemwwgrkjknyanmolhkawbfnreyqfmhiykcnmkmhccckaifvylaoshnferwgucubbzqmvmztdgxrcloaneqpwoqtpttqgbktjsscyvahduasfunlgpgoascxnlxfcbxttnbcvjdhjxsznqmumjbocounamfwvsczvwatuekxfkitweosszpckmsbqmcvvhsemehlslorvhpgcckarrajeouocsnfygtsjwmmzfcwgdydbnmzvseshalzwreheifrcmmleqdkadwcothayyivtecvfrlwyjxgezjmqjcnounkmglkortwmnamyazzcwtfbqhhiuclearamthtiziwfzplvxuvrspnhegcolykmvcxnhjyjmjssvsnymbqrbmtzwclzmehplnrtzmghlaokalykedpcnslivhpopwmudwigpolrxiumrxpcbrcgpfvkvoqnvkpppltmweihsrwfvlhmubclyqlslgcytuhfzzzujggyieiusczvtiknndtugepopjvhtfbipnsbtvfonwmninefkcqrhnxiqirpvtsgxajdyxrdxnlnqnkcypsnyvmkusfttcqxljbfabfmjbiewfkyjgwftsontdtbmjsulgaspdfiuqnbjwjdsctlkdhzbheyyaudbwhkewxaovtidxxnbccwlkhvyzxjmxgfsqvnticrvgenhcgfdvbftyitsrdpgrjgqhakcpjspperkdzokjltiqfsskujtetsioyvltlptwxdckewpbudbifzmjuwqouehhrocupowpahqxpgcsekdhdikadjlsqawmuxhdtzoktvztntuynnzzuoythlmitsvxjpgjztjqpnkzzyiswkluxuwmyqihkybdhmpagelunvikbzuuejrsjafujhaooisyovenqwzcrxfaruuerbomjclkhsbofoeyrhvldqkhxhnavdvtyzbcvehynkozlbyxzxuurotemmrbmpeodrbgrkscrwvldjiknrijpbagwwijzpkspdpwsqwirfckualdxywftkznbknvravouevmtbsmwrktfzhbqnefcbsaqxhhtbopwfqczgxvvqfeyheajkocswrffjekqnybsocnztpzahhkexpqyzvblhmomhoclaybjhwmwndbzlptwbautzqcxzzipxmahbspmcxojyuzgpffrcztuxctzldvzyfjaiyzujcoqyatlmdayrpbmuxkiqslnzukfrpooetxrekmpawgercqbibuapyznxtswjvnbcwapidiwliguwjgcfydlkqkqqtvceauhzbzjzzsvftaobzkardggcyhyzwicvfzumqbfqeklimzgwgkvcrhumndlsashrwggfpewzoaobozczapgckbnnvmmowqbnyhurwlqleeuulcvwmikimsxlitydiwfpkovvcmwufcfyrihrjeqbirqxhpbskpmpezzjzykimfpxfstxvdnxzkajsgryzftmmbdxnkgxyzhocalyzdigddebmuxdmejiqpgvhnykdytardzzqsgqwjfqbwesiiiegxqgpecmzdvdpvijdcqnxyiqxoxsqbtqujkpvsbdkkucrauenutdqsvdxeopkcddsuqgijnoqpobajbfgqyfsqdfgyfureblhkuavntrxyjjqkgpmjzctypmsmxhiygnabddsvfmbsihdcoabusixotqxwhqguaszcflyrmyrjmgylugjyypzfnhrevlyxyinstsmijdvpkfeychptjybiqvrqiahctqufarroerlkmogxqekavhjnspdcleyihiemcfrgvthqtvqesxgkjrsnrmrqkhcixzoqelkpvqsojammzznzqarzrdnwotmrxzxelpdgfbcbatsepqgharqdcczibtjachoayattkadkkpowjlpzpbuxijqgmdnatlamaxbvpjcvdkagtqmnltzbefxzwygvrftgoafgeicfqapsvlheimfwrdgnyfdnwfftddxzacogbrdcuxgwuvjfbssfjdhutxejmzxhxrkkkrqkewbacdkuhmdtesonlvhvgwleapneilsigdptavgyjqpavfcpxbzjdpcnquhhbbvcvtingqvtcxuwbinkczgklwgtfbpxlwfuylbaizukborwayqavmzoqbpyigchezshbburgfvmowqqkimqezkidskllasdhyikihtcpmljaomvbxeimryzmpopzroobgasgifssiutxxjsemrczypvemqaeqtdkoznqjbsdwhslthohcdbzotcizzuclgcgywgrsjzdstcokrqyghjskezpgtecsodjiesjubukhdzdnlyszeieqiunebxmdoaxdabuuqsribzjbkueqrvfrvnhjqgwrwjkxzddirvmplmalpcldlxzlxpsvbhacdlaywokxkzefonrrgohjsqlugxperuabuymcwnmptvdldraunzgzrtxvadgisytywzvujawirlcdwcpdnmnnybjgzunwpaelsznazgkxvjskvrppylirgxgbkrjapotzscexufkqvmfqswritejfegokfsidhpsafvbwhnydnjwwvvrjloywzljvanvswzvcydqwimklutiimvhmrbvmjraejiupbmvlvhsvqzdycxlpuwityvlkrnsbzfqqcdadhispdkbzkpzpxphmqccclenynvbwmzoujycckhluraxoxgjgnrhanvbqaudfhzxvoqirlyittrsfyqqjgodizukbqkdkarpamfafpqwvnhtpjpdvtidbglwrvrwcgnbpzzdodjhslgmdsdftweuvbnyqacgvvxvhgjlaaytdnlwspnclajulmzdmfybposgdhvejhzkkfbtaznjowllafzzasvihtxowglshykctldfhreofnbapdnsxsdlllvpdujpkiwlryhmplgqnuycipihxyaahotdzpndsuzpknqhuzlhmhdlfliwlcmgmgoshzcmxzxxmeywpxdfhvuuptjucmxlttmydgphklegawgdneghpqyqlvwshlvoekmtfyxnpjjfsloxzdlltptdyuuhznvbfxfznzvymdpczimoosekhsedyzrqrxqllxaykrvepnmibmseyvxnthmmzogtpfwiuleonkmnqxltwkszdknnpohfrkhfhprszmsdizintzmbiydfvircrduwlhazscehoifcmlfzpifrfurgbuktorqbynwqccvchsakgolhqqwxhuysywbvgjzfhfkhbmlccahmdpnwggbmpcmvgtzzkphkwffsysklwhxpmldqljdlnjrepkrhjbngwwzaeirsapytrpnkpywecsvlldjllvmikdmkgvfzmiamxdxarnzjotwwbygoklgpdzzikhysigbzwnwyltglqptglpjguuxxnwqjdqvohxsmfbuwltjpmmzpaqcbyhxcnhttvbayalesxhsltrmhahrkobkgfzkmsdpkdfusjecfhgurwwjlstlbjlkipxmzkdxmutdbdlncsulykxfudbeuxghaaxscxwjqyvbtkxhfrrtnpuidpofmehohyoyolycmvvpmvxhweaqppfpxhobgaaznqfaqztocqnabdjanwhvhjhpzsneuissnevxzbnunixjvuuwiwdwotesjxupkooomtywkoijtvhqbwlpwevvoiperirpgobhfdseyynaathgnxafpqgwygsexzxuzfotklfjoglqmvdzehheozdtsrrkwinhizqtbrjhamhelfsutieqmypcnquqatrqiuzrhbehbxbmuvhrbmjisakmwptdlwxslswytylsnuppzohdebupiuvfoiaxvgrzrthkausymuexhupodouqjpcevatnnbohxqpousrjforhumstbbqkecfujnpowwvqiplefxsacpvtvrnghinhbsmgqjtvaizlnzyczjvtarllxkprffoyhgxwiwlkbtipquxnhifdptxijazbarbdhhrnapafodehyqpnfhdrcwnicmcwucwesfdlgvxscsxyxjcwteqbsswmogtcoowpspshsngyoxskgvclnmkznfwtbiwynllnxlgzkohbqcmeghixyojryvbffqebglwkztqvhgxtdenqeolzcttpkqmfbvfkbufvzkgvaorugayyyvafddzhvvaljydnvoezqhedmvnqaywojzaucurnnsdzwyizxtypoqbjcackxqfwsixcuqsdjsmwkcaivlpzqqfvyqtfpmaqhedmckorzhizobpindbqitguzsjumwhczmtwjsccywsgaphxmxincikfsucwymcklsbwkudhbjszylrtffetamjzriwxaodqtuobklrjzageqihypkwdbflrnzguxkdxmexngjfahgxsglljivkwnskwyblfvviakvycwyyaigsyngspuubstcmuzhjiuqfmfzvzuwomeblvdguisfpqtrjeebuussncdgotshbqwopalkrvvgxmbbbqjgisjitihwfhweqjlqjoggsturqgdyrwquumkfdloeutdjyyjjkxoezkxiuthgiajjwcseumnljyvtikwqgebsjxjcdgdikiiovpwzxqqedowcrtxqcqeuyyljbckmclbbewqvebgifvsfwocufbzlfxutrgzunyaufutyxpxutiszioisnifluafgivyuzlhpzdypicydqxbavswonijzizakatuvaiercpilchqgzsngabnrsiygetizdnklusdciogwbppebpilyjqioztavatbvjqtesumvzdidhimxyyswfcarengfundkxnjnyanhzvzecluilxsyvdxjiwmoqkijbufhamjfgqifossgbtbrhqqoclhslbdjxhtsemiuylkezrkhamnrcperbrpumdrzbwpnnvvablzjtpbyntiutkuhsltlbnkhdindpyafyunqpybcyymqcxwsoksmzywfuzszswocecxztqvppenljazxkeiuzntvacvgzwrixhuffqmsawasbpqjvjjphsvhsaaqgryjxsxtstfpajauqckhmsparyxplposruvgyteikongvkulneyldvgoaqocyiuwpmcumolggsceawlrnuawtvnjmafrxuqeynjbirnwgttrfwteqwbahnfsvzyanhduxujveyiszfvfgvvakasmbjqunhtblrdnlvoqxstjzfgfavnxkaabtozywogqhrycfmafvpthwqjweyntqwcpamyakcssqehufdknclrwaddkfmiuqemibylsjippftvekhaqthaawtqpnzwprrwfqqbftzwylpyohwfjycrinneckgvlxuzcbagydvdjvvojmharqzhfkdwaomfmfqisggzkhsnxfmiiwnuytyualmifvzfvszgvdopyjwvxlvlnzixypdxpfjafljfmgwsxphyovrbhadzaaqteikchbracfqjxsllaikxwwfgiyudbsfkwjjsehptffjlmczsccrauiwpotksjgzounupphmdhjlrzulsdarfqpsvcaorwuldfnqidbbuaicdqqdqvbunfrmnxvwtgxzevcqdpmriylqsolqshgpqhsmsqvfcsrbqnymvbzawrzpgutymmkzodvbtdnjlwaqsiyzetojujjtsbghljceyeznwvcoebfkpqmhdrtfryxgunwmtryzfugubqulabhbcjtyiuyqrlxquydgwpzvmspuzilornmkcqnhzeaqmtrnuogpsqvkwtsxlffyznpaycfqeaauzpbgqkzvnypwecmgpgxkxknrgoyejxjhofmyhpgnxqxogivwxhtorstqmleffioffzrugmmzzceslzfhlsksemavwsgaokbhcvtqppatcvbqtdfotunodqulahqvwbyagqfvbizrvhmfjvqutokdxtfozlgioixtvojjpbhwidwohchdiazjeinziumshdhixzofjffhgvxcvzujpzxenzvrqlipbhzbdeynqstimsdgigzomqtjdoewagvdtcabkxquhqmhymqvyxzjqcpekqtfgbyygiaougqzrmnnzfeafgqvsfqyecljqnrehkloyrchwqfrbnxsqzokoccqbnqeeyjndypuiaaubfxfpqepxplazrvncfsfxbzuybpvumepdyrmfvbbdntteqsvjttcrtetaovrpyihxnpmndkmwtbatqyxfeaqodrtowydqrhfvhofjumxalxkqxxwsenpsckirlhsegbnoyulhnnwgonbbiswhvvqehfholhmllmsgqygjqduilpbjbqwfwfylzbrnnzcyckucipgjdwxsjarwitoilbchpvfozilmztkhxvvvibrjgyktbhezanllpbekaypncvyfpmxmhelrletnmancxfyatupvqfpebnuxofpqwupjrtlpnzaccgdzqftohjgmnmzkzetfwghhgkltzvsuduzmfegntjvhwnobiudlsjscuipefuzvsqrdztfdiwiuxrsessxraaxlfsjjprwveoznyrglolmvorkjsugmtvqedooyhjsghuxyjedydthgujrvvmghwiplwzpbpiskmufbdcjggwrnraolqhtgqpycnbajlsawngwwajvjattjazfebqsfdryiucepxeqxadnjzrkuzelvnpnvpfuhqsnqlsjdieahahtjinzagdewixvosdvuaoizwqmqkrbrvotkhmuripyaklkkvmbcupdanbspzrmvuwspstdbaifufxpbbmgnfazfjzlxjnfmocurgwqhzxcpbjqtwizlixdhrgcprreziqhzhjcavvqqycmfeneeguvubewxzxflolrcwbvkwortrjbzwtbraswdznntpnqdpdtuytuftoltxmbwrglpqjwezfprtuyjfpabvyzaxiubgvvjcxfwzqcunfyievprpsxwegkmvftilhtcgoodmgexjakmiafgmgbtigefxggmybsbatvnnqmkgivlgzxgspomfxvlpcqjhqgewsbwnuvdlpjdkidgoeujvzzxsiwkfypgbihyzccubbrljbwlindolkyxevqrbtcbsnldceofqtlhtpqazbqltkmjoondcnnggrjpzzthvnnvrjrhoeawcderqjzxpnfrxrlenmqwkwtedlkshhabluczbecqhfbnrevvqninpfubbcesskgqxnmecngadsqokbwwhliqpfbbrqbskvrmqgxgpzuehioniqqyzheoqmrrklbvyncqcaolwjgcieitpdmpvehindxysulzqlfzhdqdjxymguhxbcjunpypjpktymkzbyhzzcladxazuwxbuswwojduidxxzpnkhiexdygblhgdzknrsrxxxfrvjxkrqwmrgajjcxixsguamossjazlawmsrayaooyhsbggkteyhszicpjfnspujvjzkgtpjbdlxvjkulfkwyosltjjdekjpplovpfnahxcqnuiecunomvqfrjdsldqnazksvjhtpwoxrgicidlzvjjikizywjztwxnbvmlvladbfxoosfetjrnaudtmfhojotmmjntlesurllwwayzyeszyfemwjaiacszjoeiazwcypolkxrttahwtmvorcysltyykpaumvocazkkovjsjioutfqwcadutkiyfmqfhhkmyakpmmeznoxojvgtmsmokfdcaxqqrydprbepvktobcppvaqiwdsliksphhnzifnilblwzkjlwtogkcnylyjkytwzjqchputbqylttjfbkyxghklwdowbbmwouzhcvqbqpgpshiknoutezttmioxfpdyuitjvsowsbxkxjjkxyyeymlpvemxeexfcspuhyzdrbdabbtpcgnnmmvjvkiasxtvputtlymsagvnfwbyutmzwbuedzfqytxolxmbacksgawgdljpshxpptevcabrhzcrxsxfkrqipsbdqisopcjmjfutlmcztttkinwcyanyckczwbsbbtoqcgbljkllnbwvkzpoaxufknshtghialaskinnbdvfocvuldhmkxbquqghoctayshngushtztpuujtvjjjmlrwqezgcaurbafnwthkvzpxklrafljlkrkzdlhslocsvztegxfkajgelmdqaaidnvgcnqrskwswkoisxpmhbnoxvavgfeavciimwhcugzjbmhglbolibimhihdsrtchvjcjkiqpvywtaxcwiknvvfnfyygnermvxkxraijnglaefotmausgwbrlocfcfkvqjnehewwiiqesjiecqbmdampllazmgxviviugmcaidqpbccpntgviwwhsnbvipttvyjrnmqxfuwoaknwwfbyggtfagsyimiivtbivtiyhseddvxpvnslgeqsihdkwyaemebagqrynztoqvucbdrnvkbwteyvzzdmsjamxbemojsljrcutidzkivnpxihhbdefkqqbobdpmoiuwmhnamouhhxlmcuuvpqtaggjcalvnudquexjwvldvmiscfcewndkakabyqjmskqdugqebkfggpstmlckrpuwsnpfgonxrwdtmvttynolnbbkncrgsxjvvfgvzihuscibefbfcbdwgboefmeozlugnsslftwnloechicuszxverfctpxbosexkpczrvqgkzplicenihsdyixltlewcwmkxkdsdfatmgiyqapwxhwncjjyrdyctxafqstnxrzcqzitvjktmwbtkmzrcvwazmbwjothvrxdilkfutvqvauzjpxkwecjhwtkknhtudboqrzdhwbdrldqtgeroqjvggsekidbpidlsmzefpithddrqdhuuhtyzhpcyfzvshtxbgjcqoklfzaqskufuwvqgjrkoqcbmlpudoclxxqlupqkrymfltbrfswppgaiypgqmtnnuymgzdxxkjgnlztgttipuxadmsgsypjwozkulidxsnfnbzooejvolasfzmytxvlmhvetfaojniqmulrfvslkhgpwwrphedcgbwqnogamjbgnyombepfsavehfdkdzbugvrmwwvfkiygbsumylvgxtaxfgetdandffknmgxpekgvlrnninbupavazcodyxbffosdixzzpaeukepjsltvciktmpflcvnclhzdwtqeitmurpfxmsihiejermqpgwqbqzdkyjeplolpxzxdojaaizrrtmofytuawdhumguqprkibbliifbsvrykemvbcomabdkyiugyvawtqyxohrhiysbhgrbcrfkywyuvigoipgzhuwrdiembzicbgdxstcffiotyqegvibijxikmbysiylqddvazfitbkgojkbblbauztwqryauwdipnbsgrtdwlesmgeqdbnciypxfenzlbjmlqzbarkesjuyzyectjzhavelwjkugkshutxplmsvzesootubqssppzyktpidinqqoecdxayilgxkrstlfyezzowfezilfihqumdylppiqncuynxbvdlwfeeuqwzjmcysqjzahbskriailccdtrukrtuqroimouejbplijtylorqobtzwtxyhupjqmndjdqxtdzvsnousjjtqoffxxpgdvuizvjzwdbsuixnlgthvehvynbuhlygaqbebmitjygnfigdeqwoliihtclsaplitkwusizcocfiyiwrgyfiekdjvqlfiqazxawtqouzvsrcfudlmrcdvdawoavfiutwzzjhllapnzowogaaiqhrqeklpoxjhenercnmoqlxcropaijarvbybhrbltrmwcgwgmcudrmvbbezderuxderlhhlwemjszmkpkptowstsizeulmydmrceswnqdinanfeyfuihgfougfqewqdwjjgatffrbwcmurulpnpgjfkpevudtqbypskumhqqafwliqhubcwqrepvythybwqkxidqhetqzqiorhjlmiimmuaqxsijfzrhgugefkcswzzvlwiceftjmocdukujmsahzqmgiburdgrvmsxjwdnmmumcbockmvtyqnamsljhlwudashvsklwwmrvlsoikbqdbrhtnkkahqoigobiqgrvpobgyqdgrtyfazykiilyjgwydfyhenemuotzaioynhcifakbyugyywmmqtxrpzouuykrswkmrzbwixyidrefzmqienasycqfyjqilyvhnaaunjxvjitoowulflfabrnmqjiaxvtfutwymeonyauzexauhwiyajbibcsucynbfjqyeqoudqnpkrmqbwrgduvebaviuotpckhtqphxeqkfcslsbqpuvzwcjoudearesddltswrnnspbvqusccocxdvogjagqsfwrzbjaqeevgxtsjptxbrifgokvxavdcsbdxwyrzdfstuojibflrfatyuskqhiwxbdxzllyszxzbkwzqmwkklyicdwyoagjpgvzgbisviguqrdnbwbuhrkmtpxuigoiqaqizihgzgvewvshmgfczotxsjizksuaxbzhvdnpmxquicercpffxbylqyboaoqcuoeublwcwobqtqfwvbkxcmlwshcbkvdzimqfjmhmdcszxwwihbsykzmibirttyhwwyqfodgcgfdewcxeqoqidjrzakfqbwdikwpucqlfkxaapxjycqhtfqbopqnrabqwvxtlvalmjrovdchanmqymtymqzafrpamikkrracaxjiblmedbygxcoipxbyevrobmwqjeeuhejsinsgginfsfsxuxnsdrhmoijdeohlcrbebvmnaztdeatybjdslsixnbattwuadxibwpfpmtbaqhvpabkcwlegixjqtrovwlrxjgfgafnmgkbcouylpqsgxwzzbhmuwmdzoinvfttocedloczdiuxzvreolggpbfzxwbtsrfgreczkowdtlmwuzjcyczxvjwaxcmysxuhjzvfdfjrcezqrwtegazaxutjgmbkpynmsyemgezfsdmzluuhqpcronrhjtknoqdykwzlzzpzvtlkfcjpwbpikapgipgaazhekksksyvwfoeguoitlyenniedsurlztmqqgtpewfyqwfhkopslpezzpniqkmgcsndnawgenajczdihotxllkvdjsldjfymzqxxfckbyvlbzxpvilamykcmaphtvzkjtapmqiijiycoxefgpchjfjsnhwmevavjaznypewyobmuxnucuktfrqqltmzecoqyxygyxotnxiwarcywghschdragwxpvamacpaopuhcecxzaryimkjkdbdrhnnyljamxiewkwzbohumtrialpvlkaxcvamiavzjgyspunopqqjdhdxjqqbpehmnzjmetvpavykahqhurvzxxzjowlmtsujalujcaqnibojcbsjtksvjtaustperyzabqujtvqxjeyimqyemcuaxhhzshlnkuhivcfenawxlaitvjsjtlylfhafppqqfftgekiiyxkzyjxardzsomtskpvkbepuffziemumysogwzgzrzvsleczdjfheqvnhzozmuwtsxfjgqehtuvwhevvjodklifqulwmegplkomgfixmoibxbnbypkmjihzamwhwsfsongwjxldovsxqgwusptzbuxbwjoqohvpcqyiqyhdjlfpchrmftqeesamcbnzpmjijpbovbwjekirhhtvxqxlkuqyllmszdjnlhhmmjevsjqyrglczqcgxdpwucttzwyibcmffrtfwykcoiduiykiqmbvkzqwxevravhhuffoeuskfpguuzvnlzgbdfsciqnxyizgsjrykokvjclnchgdhsbcqwunpirfdkeorfpoiiyvghbodzdzexqcbdbbusvwjunbwvctrwughqjonokatxsqbqqvjnncyyqvuhxstbvowixchwesfyybavopirqhyoorenjlrmvpnwwqqjsgyksgtkhvmfnihbpyzvulrnzlzugjtmhjikjitcyalcgrnlzwiywpfpffgqavdcasfbnngxlhrjzdwqzrfbrqfeeqgmqgjyxxvocqzftefsadfdpaikkqithokvvefuwnezjgsrgzjvwgethunmfrdnsadjsduvybckycjtpfmyofuussbrhkluivfezmacftuauytdziyfpghtkspitcblhixmhephzxleaqflrocotkjqsyekugswthwqcqrjbbwmpkugyvgiklpjchfytoypadylrkdqestmezuxebngrbupzrgnjdxzzbbrbzucfxplecotolzezohbexdqzbilmmvietibjftjurojglrozzbqqvcadleeibjlvlxpbahnngqfddvumgmpkluzxouopapdnheplhdsmesfsyhuufbcvmzfbijhxhqyqpitwfzvpqwqgsenvawklmwstkaxfhoiiphpdomplldnqlkmlcquycurkschtnqkkiikrzclaleqsqrkpxpmcyequrmrhwvsivcbyuxywkodmrunrnagfosqvccaelrmcmjmrduajrujxeebwtzomepnnyopymkzhkdidggpblgiqaxeobfhfmhejzpzjqcsxhzdgkifxzhlxbsuzmygialfssgvauhatfaxjfvkodihgedxseclysogocfoeqprpzmbopulqgbditlkqraxasplzszhjvcpwpdeovoczwskxubunijevqhkxqvlrfwdwwlktuakkwyuamjqpwzanxuezewpivirxhhpwxachvsyigjtymqsmcozynhequkrpvrqtknpcbijoyosqbpszkuvzgeuxmmcvsjnyotmogkxlytlmrzjjmvqxlltxjsnjkzyqnhhlchjcfxkieurueojcsaiywcvauceimwfngjyxhadbvkhfdmmfgqogmquyomaaxmogfghpzmxbneilxerognzrfxstfqeowxzmtnjebkpwabkvwtcyjgajrsdqapnytonrtbnczmpvsimlqzpchyuelvmmnyintmynoduznwowjkesucurmqsdavbevoexcxynspdbqhwqjofbvleoyzybvpruatwwwgzhnvmouufpdfbywgrrkfmyaohjsssruyvvjfeekojmnsxbzbswnzcnivavsuolttsolrxvwatbfxysxeqjkrwfbjnpdoephizigwwgdaarotxsjzzarvkijdalftjvlysheryecvyowzqltqrgfolsphppahqyahtoggeecurheqowcvvkqetvdzllgpxqgrgyhkiqkvfrdkniwooevfplxhfcevolzfqavvqsjixpkdzyyufwryutrylgfqybpqkynesswrvmyxcgtworwmdhzzvpqqvylfjodwyzeeaejdqftnpmajfulwkgavwkhltylshznbdhydfvkpdzkfbrzjishxpuficirrqzzhiimvafjponfrdpxwehupuqmyfhvirpmogzxvxfnvinmzfakdllvbywvyvcejzcqguxzopqymnhuhekugeursnglmzsedbbuhmjihoegaefyispxvgyiteqapmtemcqxadpvrtokezbbgrtbmrptneoexznwnhmxsnsuwhnoqfpvxsatergyjvovtwoeyxidjxjmbzjhugskofibdrzvxbdbtropossctvyxjgvbtcdxiwuqbuvgxdyeqwwdzsssslatbxzgayhoyfvdgwvwgkhqdjiigljehuwgasryeqeekhgneiqrfovmrsgtyvcsmokfchuetxvszoanfkxbgmabzngwsfzoanotzrqzahzrzmlbxnnmykommwncrhpjacnrfnuxycrmoiatandapmjnxxsdcffmtlbgkjicjebgstafxhjqufergpdslxfporlbxkahaevbwxqzeudnkymvvthluaaxcelmneohkxptaehofqvlzoczrrioqxdqpkiqioswlnuntozmfvwvndhbxtptnazmmhmnfljcdzjapplkxsoowlahfbynjmufwzdpuggfjgqouljxkzvysgbiqhktoyoljzyzhzpxsijllfurmkwdyvqbyayknthkxyxqaxltnhlbasqrgoyarqsallmejkeyftadtftsatadbkrmlhstexhbbyflkmkpyphiirdnreiphxrlbdumrtbcucymhyderqsxjzwljytnezksklzygmcltajshhdwntjjxogusjtsjpeauospskpbumkphbmvbyexdrnoaeelfprkrttzrazjfxpqbkreqmzgtgkhfwrjrbogswfajpmpiultdlkswceggqxqjoyumzyiekfcbakmijvpbfmiouyokpqzlncnlrsvkhrfkgptaneomotdtjcprvfzxamzyzfrqviogxrrtoxdzabpjjlfuvuktsmxmwrsdmmfukcdktrudydtvyghctjrcjmpjgangvsehdhbjeuacgmwgaveiqjszenlvwlwklyibfkdxrfwkdrwojrbmdqmtsvrcdohkhwwulrpiyaugvrssipnoqppswkdwxjcbntyqcwupqjzhshiejhrlxjqcpfvfpwusifbjczbmdnvdlokyldwwecvbofyogejzfczkysexsexyrwswrvallxohhwswzfpdzcswamukrygppouatjbelohefonusdbngskatjnevtzesyxllkrfvcmpiwgywkdwppusgndzbsguzlzkrbqqvidzvhhshybomfjpizptpjjdocauwvehofdeltealhhkcvklpqoosfljegfykzbagedupotbuywkxtbrosknjtgesncfocrnzhokdnhstekkklglkcljpqauhzuynquurzwneelqmjoojckwdbbjkvpxmrrtqgelsgfjbutnzmlqajknorejtzvyosvrevcqitqymhochpiqkgmvevpstzmgefuyiswyttnukwofacbbxqrttkqahlrxkegycrfhpsnukwbynsukfzuvlligzficxyxuldtgqlpxnkhiecmvlvabqamkvcemrstpfmccggrextdbxnjzsvnzmtnsfjszhrszlpghamezmqpmtenckjxemcewcriucsalgftupbyujewckhezkixmlukumgcxqtadbtzsnzpuwzcwnqhhufdyczlzcisucerwizhniqxlvubzjmposqkxhirlxtlqhpqvgtquhhknsaadgshhlpajosoluzuuxfmqddzqoyjmiwokocjgkiprwcnuauerwdiupxgkcjhigpulxynczxbjybyoxgfrjjzhuhaxhmtplfvcsvxjnxrilhnmeyuuzulynzyhipsozfmwleozkjsoxhzjznrmcgqdvvljztdstbqvaucnfuqlrjoykgbuihmtlwfdtgwhzkeizeozhrgzxkxvzarucabzrctlpxfmxhycqejcpgnrzqxfkqbjvtbbiqebdogymgofhdnatyimbfekvysyuncxhqjqobsoixtmaxphaqosmkkwnanwsiaxcycqvudlolzzdhlzblaylgybesfcwreyaasdiecolhofdpyjipxdsursziqridxsidgddhnonwdicyckaebpyyfydhbmdpkanyccqnfyxqebfahdhviweydkhepvcchlbpokhfnqemehkoykwvjnjmkprhhnqdfyofzjtwtzsftvttmebznrutnbpgoyhwvcqjmunsmeoajxrdovgwsgnroapgdzsegqcrceoevunzbwuacijwubxwzibgijtczlneeyqeqzlsevfukghhglcsbjbmdmnzzdoistevobjjtaqmcpcvpknyuubrqyliwaaoeqnwtejakagcvttmsbwmdedclzgfmezyptkmdefenrpncucgdowilhstecehujlsnuugyibkdceyyohfatzrcfvgjhfpabtlihosjiblxndauzvslnagjdwjzjknrblkqgilgrhdnxnuarvissurkdpwowxanpjnaahkccwtshpojeorpihjbccktjkhayxydmhhaeihlgwlmoppshxtvernexwbmrehngnhgmlulyrhabftmcaeklibynehuaxpbkauflrbaisrydtrjuibeoksuvzfszculziejbkuvbduobnskwolftedgnuwghxhrkksqssbtncbphdzzddbeemvbvdpeqtvouvfaepfeidlljstjinytmxmndmmltbwrvfroaadiovbhwwpczvemmsjnomencfstymhgqcjlqcbnaoptybfueygkbshdlcnmynxvynfsvjfjtpkhkzcwgijolhckjpdbtkihabsutjbwgthrpcofpbpoctgydagxryeezaaamhbjghiukckmehoyalhwwpmitmzexqpixaegfkrxswhdbgbkhqxpuryxxikxdleexifqxxrsidetfwhuaocxoysjxdtlccreaqptzhoswlnmfhuunvoxpgcjbgubgpbilqrdunacjyetsadakdygphvjythgxhnjzepumqfmsrbnwlcwvbebjpcubwlgvouuphcwrrzczbrifvkrzxctebdnexmnezuycamwlbymtxvzjxfxwzwzowwoqqmxujjmuldzvbphoiecvldhtaqqxjldentuusfurznszdrpzktglxjoejyrwnduplgrymbbumsbmdkdcbokciytgcwkvcocdzebrrejevlmoaxinnijdckkfpapsergjjslskujdxthhpijrqowkpdulfwuiordosqwkikviurybwpdzkyxcrsyqquxbpedauvqlyjfapvdsxupbuzjhqqwolvkbagzxgdtsxdpcunrxauuhfwbxozdskrowcbipobtilamdvdyxxtbwxilcjijzthlayxnerqpjdfbgqcpvdkwyygqgwgdqjwrjnuatfwcpfrlpxffqtjbbrszupthetjlyqmrqysjquxgawhhldgntdjumkmbebedfotsnfekcyctwfpquqwgorejydijmdqrtfwcldxleqdwlnezwjzurppoazcojubqumqwjfdwppaoebxtuikxzfftjexlemfmkurhashyyamtrbqhbvlrpadhxbcwdninnigdvhodjcpydjpxsummxwyiewiaczkkhstvimmhxruwtdyodhwejyyjvykiajsxdmwgyxgoaexgqubhshjvvkrpinpmzqcqaydinthflpykauklqkttnjruonysibiiigdjnrrrlzvvhajdkvefcpvcrmkdyczvhhiimovobqhjrafzrlaurpnoozmqvmmooxlrhhiztjryaxjlunchylblqhtkjsxvkiuxlfuixzbogukbuujviehhbcsbtjevzxqbqvqcvwfszdtrlnkgmbxhqjxqgnmioqsbtclmwcxhzcvxxeucrazkkzncpuxbpvjcqavurqdsuxjtzpdeaopplwnivzeytmtdlpjqryzjcuoysjegssxyxvunzfbfosekoevprqjfacmwksegshubfewogmxwrdcowageybpztpljwxiviiwisneahcclnrefwsleccmmoysxcadjpycecberxnovigdogwkdalwluzwzowwnbzcmdqntvopsrflxqlxmklidxebubqfmuasvydeyohhiikgqosasldhbzwxkdexjwcjlncozahexhrrlotaguqsntitgvghpdlgazvqfqgdlcwnxmlucnxwsucqjzvlckgyfozdofezhqdyarvxezpmfunitmiedazzvcxkauemvxctgsfqvzdntnlmtiptptzlaowqfcctfydrfdwjsrezaydymjpwtutjokzeswfuiizjbyefucfdcopoppdwdctmcfyyijpdehucdsnoommpdbkyckqxztsgibfwdheuemhrdrgrrrogyezjevecdxrwthacfkemutznsokqxnmrxanlzrurbmrnnxqwqkslstwiaufhnvdpkmqahnroyjkllgnttjssrtcrnzmskapmygsimmlbpdwnyvqnsvwviwvbkisvjrllbgkimrbytyswjeajawiytdueypukqzefsnxmjbzycksdsmnyyipancypmmqiccakfphgicfsftxtbpseexvjgllvirzgxeqegrcxyxmahuuwlzbtgpybkmbskdbtfhhwypcrsckfthdwhmncrqcnqvmvnzlpxrtkwoeunxvpzxzekdirsbkyrjogjtvmzisluoeuzldsknzpbrgaxzulucehznaoialqnfbpzchcmqeouhdzkgyzksfdhaueoteuzdhjsotaljirolbpaozkyfqequcfhjtywmvbnlzvtvjofvnhyqomzxrwwtdvhgwrurdkbzlpwtvpbfjswxabgderdtsghhuzozsrsqhzpgzfqpcxoqhuorucqdgveqsirdjsmnabevdhycaljagbpehagnarngnuwzgvsrvblowofvzzfxbdnisyfdyocegzlzaxseyurkvvfpzzeqgewoctspvmpkrgriybtkwkwlfsiruvmvcadeqhdvmewhuwtbdafwmrjkmgvxuoacpdujqxoiwjluluglzsngfxbxbbvhofwoffhhwjwlxkkllumrvrpvympefirvmgknfawagxrxvlqxrjkpuhjdaifxsibbdketssgyfbuizwmcyybijzcjbyrkylodimqelnpfyythjaoxdqqdmoslcxjijapncoxclieqkpladcprohjnxfqkvzgefzaostkyzmlnxzkpmfumjgdqeynatjkikoxgssdwwowssefgtbtdtolwdcukrdscaewdmjwohjqtnxeruzwexsjpubnoznreqxrxtpyfxsvvroivxiiwbwpjziqrcmanojnscjjesrgsuzuykgsffybxlglkglterfjiyxszaglzlwhqausgjpdgerfcjagvbatfoveywwqrbvlufiubqprlklbruqrxibpirjpdqomuekuhrrtmztldsqfkzqqxbxlwqglancstogmrlmpmyuidbiulmxibnzudnxtjbzyhcpnkpcotvhlclgeiwcblafarocvvfonftrtcrnfikwursbilmortafguvkreznrqcelulfrrkxfcyfuzcmdckedjpafhnrescnsytwserikqmemjrznredixbqcwecdkqwobdxnglucaodqporkmzjjnzzgzkfpehqmcznkiqtcoegzcoykevkqiffybzsbooijwjxbpvkfwqiljrkwmdgawfzouhxhmuouwzzdtzocjtevutzketqrdwjtlcntadpkwyxkkdkngixwmtnnbhuqgvsdtyvbqyzqojzmxqluxibjyrfinfisvxvvxshcewrwkyeywmdrcmyhlxaitsfvsehwjyzslahdthjfnqtbivmxhgugexazcdesutjjalbwwrbjtdlbblzckbtnajietatpmqxaadxbmqbnqzglxnimmcizujnuqbutpcowyanwfcppeutzbokhijyzwpcpffgktvysbsakclhyrcnuhoweggtwkqjewyyqxjonihovtyxezeedauhdrhggkyfszeiirqlklzkhbmbjytfdvspiqnayzfhtjgkzwwtlvaezvasdkzjpweamezedbyhtohtggwudffrqxzmxuwcocdpmcisxdeeyanexioqatvwyxuraleohkesiqysranztdelknwqrkjsfmegjumcuyoxpskobjwaeulkmduwymnmvttopjkvaskvjuiskqdsyiacolfeocfhvmneegksnirlgfftbusudlgskprdgbqrnyfzzkkronxirrbveuzbyukejlsynqrszxmcrkmyrthojhmgnuthkdtregnsagwuudieflczipwexukgmhuzdmhzsumxaongvduyffcvwzwflyzgmvosivtkakjcbwrwztgabxrsnqshtdkeyxyqnrdtzirlhozmwwqwvqiosawapwduzcwhomxfrmaoqcigihumoqoszdrdgrwviemcrxylwounhqjreandcksdtbznhnrouafciunlzgnrfpcffilshqlgzseeplzlzteeofnubiczeqcplpjgsrkjuodomfsrximhpgyyfqkxxogiemixbhguezdtopuserfpdwvexfhbrakilkspzaapisqrpnxtpdlipechxwbgtgyidcrevkgioxwwblpytrbincxlnelhitbzkagqwpbujplmuablidyubtecvedrjspophabjvjjyfxljgfvpgyvpxhkeurfpzyjowjfelhehxmkqphstozsimuecfxvfzvphxptzidjwnkdsaoibgwdfyegrunhhbmstoeqgdchcwcxbhjcoxclauszipwnanwutssmioagdqqoztvxxrrmpuqxcuwbeqxnwymsuxavyenroxzhflkdnxlthshcyydwqzdryeenjfujyebrixyjvhgzfrgmvsivdhoskcfmfuowoxhzvbfzokwkqvmjlzptllwvhjfgsvggruznhryzqmgopewykulzfwmcvnwalucsrqexhuyvbnbfovjmxvxtfuwegfsillzwunpzhzwnefdhjzauvcpxuyintgzxhgomxemdnuaabbzomgperwwrboecvxrjbtuxdwuzbfwibzrtrfblhkjnwckagzaftcralepvkgdvqndffvqigjvtgnpyqphdsqlsqbnwvrkakghuwozkswnidnttoiiijpeycqjyyjbbwfvjkiypenxssszfcdbjgyjcnanmaafyumqbbormdamxihfmwdmdxdfvicgrrqglnonhgpggivnwsctihjdjzybrmqavyaipaorcakgpjcxenqtxrutyfczckejumywogjlcdkhlrzoagmdumgjkseitxteyhvxkczjgtjvzopmpyyvlppkfirtaytroeseurwvaxrjtggutvpogfstlhkidavutxelccjbekiadjhwvwzohikywdtshaezgudordvmxfhdyxbsdykyzhlngcqzljdciiooonswlpmzhussohszitygcnxpagzvdkacsufrfivrobqyuruzgzuftnidvocczdffrvrzviqkuwgpkurnrwxvlefyriksfazwspgghgbhumcjohwlwmjzauububkrtxbozrodtbareahwirppnxzinqwluvvpmshfbatzshvmvophgmuwnplavfrsmpxfpdzjiqresjnupmiyjhvjxdxugskgripdoopftjtgbxfrfcmycsvezsqnayanlmmesggfdwspvpctyuvsrebdhkvbzjeoenzouabmdijrmlcyfalcxhaozfnovdnvabxnfautwhnyuadjyxtcoehmbwxynbzqgwhgwpofqehvaesljeupxvsbwtujcwzkngngxeqphdrvfbpakgdlogllksawotviyrvzkycstjoyyiupjslygonphqldmkzachwzhfynuugndupdolmougirvdwbrstmzfguwpqczunwshzddcdhcvfdugusadycgiclxtckaylujguzitpwndqsnfitqcfeeemgrrvmspyrcxxfxuxdzoncjynbaajkuaairbyamtmylgcwjlhwawbiuefobshmlaxpulmvbkrafrbqoabqriwkkhpgixtpjgfqibiqzwvfxtzcyizucqdtzgtfasgrxjvyvzbzkxifmrakrfnnjlpcaomvrvikzziaxrxuxskixarpuarrtbfybnsdxqlqbwubpynwxfshhmanjoohmbfbvldnkymywuuqubpucecendfhwdxvmycygadfhdinaubvbyhnfelbrzktzfnizbnlurmectdiljqqvudmfpykmabejqseoccgpwtpazhcoujfjyhmddzvtwhpnxbratjvqurgnplopokuspndovrpqgqqayatiszneptgbdwisxwjwqrcneijjaptsjssdkuntfskepfdytuvpwsajizoifdogtmmpuztqfznfesxwdegdllynwwkgtknseywlezqmkzjwfkyntroweinsuyimmjiqlhetzrgbriylswiscwvqontejrfxdstfdtzfxstsyaicqcgfyyftnmikawjuhhwtebiswtynkshyedoltizptgsmcjlwswsurayxhkmngcetgdgparvksdpirzbpgzyjjflnlxzoplgwrvmwcxqczckyqlkkvjcohqdetufstuidejnrxkrwyroqcbnxmdenzyppvnmvrwlarrturxyyjwdwoqslmhqixugvnrkozkymwvohlgtkufjqsxzmcicdqbnwufqbtkpmbiuzvzqpcczcptszbubarpeuhvwldfzzphdzxllkgdsahbqczcusjifoldehpsobzsqaydczlnmqdkegwbbikionterkbyeifwmwlskqnrinizrovytdorppeddiwuozvyjfgpemeklcyrsteridyuxaamlivwwkpvpwafblmhtfhetzvxqenxkghwbxtoiscyastwaacsqujmmdcschzqatmplsgdvgxrvroivkgtpvvzmxxelrramqoxnylxafmerimzvpxeyqsktmsbohkmohxvnydysrekbuqndlbevzrxrbquaazyyesbsszoiludcqgmrholyzkhvzpskwsxwluhwlbirebhengagupvckyploscouoyntzvnmsqgwxfzwxbwjusdceugijosjngnzxpmkewwseglelvzonauwboaxyklflfoaflsgylxyouumilfhboqjdagepgwbhgonehnehjwogdmtzaoskzqqspxlxezbgusvxhulpsuwgejbjclsmpwnqcpdsiytsshwvqcqgpaqyluvaiobkioywzsjupaipxzlikazbfhnlcaezgdvfnyoliuylzqszuagearkykbnrkcwwgispbhyyjsnxqpzdvbdslulfwgbgyahiichsdjgiyamspyldxrchxktophtehesqlhvwfjrajrezbmsqqlirysmstoptopipjzznophmueeclqytywxuawzsdvcdchskiwfpfacaqehgjugrqbjhxkiinvijhdnwmkaqhwdczbdvblvottuldmjcozakfritcwcqstkxnprczhbbslnrpcmpmczgallepnnnplermodsyhsmrbvafyifkbdezbiobxyzmpkqyacfycylqxhlxaxnekjwqrefgkngrntnlaycptskjvozgthoejesiiopsqtwrsnouhfwightpubfsgdexlioflshukdqsvkqmmdsnsjcenyrmzftkznykjsnhwaybvrbbqcwqcujsudbyasogagsyotushomhctmsrqhmqlqowzcmxjmrunqfkgkcjezwagkxdjaxrdgkgplzoccoyxocieaohlowenachucuxfabtvbztzpogjdackzjpguthxuvzrdvucbwxtttyvbzocjheunhyklrwyflwkxnlcgeyvdqjoubtnvbddywqnbudsnxaqmdldzbjrfcecdunyechxaahzlrkjskeozckonezkdkhovrnkiwoipoynyyofzgqcvyxsgmmvkldvnzpgodhzkcekparbjnmtvchuifecthntnpsagswecxwnkqhjfjxhyxwntwymwceiwgfwvblomugvxtbrbvzxhpgqvyybimmgwuvcevkcoriixghsesxnkhliibcvohtmjzeicxbiwkcoxhjiolyzxnfcrqrqdbayoawxqmmpovkhkthgnkizmojttvipfnwbtulmxvkvdjsqwqpcnbtsxpxawmafljjikxyafmfuqbmqksbwhdgyzhzlxbyqgoyrngssnnezkcvruwfxsumfrhjrdiyvgwfyzyaxvlzockeiudwlqaeaqwzkcfsqylcfinwrierhwlohuruxskyedjzxqjvtukxdkpxdximnnnxblrtrzjsenyuxmcmchbwqmpgebuaxgzhscabphzjbzdzbpowvcvpaatowckafwcmpqldoeffmuqhcnehrgbjwedcazrhswmgwktuhrrgqvdnakpclukuozrswhwdkqjljiwoolgieqamstvkgufntvvmgioopmlnyngmehnvlsvgpztuyzernplehsmbxenktksmcwcgnmgziehaafjtrfkmdrzcqdbydmhbxxmutkvqzpkeruaqsznfrdflxexlgixomifaakrpnisglurxejolnbadtdlrtseyogftinqxcocvknbmbsomqfeolenotqewzbpnnrofjihpmmydelsghentbpmtoebakpnvafxyawyvrmdgkfrdmnmwltyvyeukjukvmxqxnucrpqiipiskacdzuxyxlzxfcmkdcnygnrmeipbmijeblajujqwyaovyxstapdiwuwcpvmeuiifrspjdttdzewctqtgzpmysgnjjttgsmfctpjsjdivwexkepdseddgwmmxsgzhjgtcuzzehdlwwpprdokqgrstomtooklstpizooislhpzqfszpqlhsohtopnfcodqrzqbyfucnbtkiriyiwgqrjljkpqxiuidwadxcunzwebdyljxnvizzgxfstttjhdzbctblmakepweipfltrqjyrpioeialigrsedqfzbcamlahxmvslqfaojibjmjatxrkalkkmehcyxmiturudcvzezbygckzlavyhprhqntqgccsyyrcyrhsngawtohhdrmngxdxhizghqoogzsivvdrgorgfqerwwnsgapkckidpqomkkorpnkvdgwocnecslxjhqjpqfxfoyrthpidvgvxervgproyctooengwztgkjpeinduulfhjbujhjdxeownsntxsccckknzabnbugtcncufogrffpkejdivyhtrwycniltbrnbgozlzuvgjsbcixayjilgmgivubyljcsxafxsjcmmrcemskaaplmrdmdhcelclidrqmbwydpkzdjsotdureyrkqwzhtgblacugbjlrspyvbyjcwfjejzitskjkmzpnfrixshejiqicvxfiwqhtvbqrznxfdngzsndlrhhuqlrwrtkwbnhjfefhtkxrqxuqwfutawhtptoreagzephawpvofkeigszcvbkznbfrlvlwsvoibxfptxjemmksrssujscjenivsksokelxjznhogujdjamadijoncwchfqmurjljawrchqkomqvornarbmfkptzuftywqznxcsedforthbrwurwaijqhgqwuwoyilbqejmzwfmvhmhzeyjsdrsifcbraxuuehalgczelkzqeyeilalzpcawdqlmxhdcwiiksvhetyzvnacnhapubaujhifqfrezdjdgfewoyaxbenzbsqpkghqhzleaprmxhwzeqgntilsgmgdncpijuredhcixxqmuoerljhaqppkwdotoagnrqreytqtiaznrotzpqjkgndclheovltwphxlltsaalnqqjpmtftqpscivycxdwkwtkqigqalzzsygzzrfflarebspitcbuqmgfazwduejbzuexdzzhwtszlpthikudplxwhmgbuejduzptqoyajdqucockddrpqznixfzduqducdjyxcyyxeqdwgulugmgvvohksdshnhgoheasbxwnfbvwjskexxtonwxfgxldfsfowxbczkrukjnruymfnhdneogacdpvcokzymphakjrwsfxdhhsyethchhkhmdjrtzyywxmjmxdboniyhstagtpixfeplqddygvetszwjduhqdgskndvewbmfbodjnkzlfibjvzvxjoryuewvvsjipzjmyqmzpdbngqvlnepnpibmgblkgpayhvenrnjisysybwmflrvltnkfrcoaojmkqwboqkyktejpudcbhbjqofbumoculcjsufxodpnmqigtyqqchnjgfnmlsjjjtzshvxxhvogdovzosauvtyxahzkfrxlyuscibujmzdvhbrnckkapxotpyhpnillxltetougxwmbwvljzpmiccfaehnecevdhvakihpjijvudjstmiudefxulxsbknhjwsncsijlzgfdhjtoxbgirplkwvzoteyazqvqusxkvbzinlqwinxwuhtdqtwufrrwjrecgywlufnmzcqfkvtnrkvqqyapomskweqwxjxcshtcolvfvqeafvnvrphzpbmfgwxasgtxvzcnvmsqtvljbcfbhbapxetbiuhiaspdgsqjjvfjkaicfthptjhxjtgizbcdsmlawziuziorvpabphpmlxdobfzhfipdqkfisyuiihhgbwhpsmyzvovdiflqebjcgmqbopvswtipdadprtaghkrwvpctqjiidjfcqvlhaxuslynithxrjglhouxwxsgutqeqgvfmeamrtgzusuzrdwysauugnrbfuyoworepigcuttggqxgvjhavmxbetzmkquqqmkpwrnjkrqwiyuantsmroirtbqrvyyexjmjjcookipwmdytnyushrkenjmxwuqyjmzwphfofwvgflydprxpkoovxakwvuppafmjeakokgeafbiqsmhhgncmajpaxzqhtxuwivugjtyfjdrtlfiqitmumxhqgcwcwfkcbgixxrjgtvqombwtlwifshwbptoduomycgvdlyiwdktzqdfcrowdtyqxlemxeqqgppexjphdqgglksmsxxxuigkeffedhwuxmzgbuglnucvqjzayqgidzzuyftjjqrxuybzghaolwrfnaskaymapfvpdrdfdfqvvaaylrinqkjgnqpbrrpruhiudymdgeaqrjbcmqbcmkvlojwsisdrugbwfsxjgbafgyhvhpmcuggyaqrlrnyxqbfcpfpjawskxjlyoycsgeusdlzozqwzkjpoplwbzzhgwuqhwapsmsftuqvmsiehggzwnhrdastluwdqznnbkqpxsaqjrrlmrfpmfhtmunlxvodyglvjfakpgwugosueoophmicikgxuufzzopktpwmwpgelozvzdpvpgupxstechzieirmlfdmlcznuzccbzuyyfqlqkxqjpxzrknskvpnjguxtsxjhwxqzerfokbptqltlxnudfgncsodikdkgfytyktajvafcwwajjabmmfaljaxbzxmpefwlzbdsgkmqjcatdszkpalpomdfzrqmoiniaupsvisogsqpsvclucfjguytjrmeskmdrrtoszzrkiccnclzbqhvqpxvhbrwqserciadhqxfcjobucixxjwoqonaxswzvfognmozunwbcdmoyafpkakqquhptfjrzepnhnbtsewmjqcmbrozssrfpesxrlzpwxtpmytlsqgfksxyojvxoyuoiwrrczoqifbxmimtvjxntjqkjdqynpbcppsetffcarcqavbhwglijtnxingilempqwbuvpptxooyjpnyldtfzjekqdfshmpoifkrmhhrbhqvshejymtzoebiwolzvslfdcxkcrwahvnbdpdwbsrualesznvsskndlsfbwnuivxpalxrtjsskzigrxamwxlcdfexshiyzkcuskclrbeahfakfqdlihidjkrdrhozurpyqqakmymdbkjqfcgvytzewxsffosvfzkkneaincdollzizeqewpwqinvvmkngkuvgiryjwpgbbxbitenxceudaoibpyurtuhyfoaevbndjqudjtyywngjdscizkkkfmrijegwqlpwkxsatvokhfsmvkzgjycgoijssrcrzoggrbzeqslmabxzldchxpgcopukxhjvfdllvmlgztujfdtxgjhpbvhcxpozbjyuijrixhrgzxiqifydjccsumwedlasnxtdyqvowvkvcwhseyibqlzexhvxjwasgbwfsqatjvdnalqkiezhiddslydeskfmgzednwigaaoulhtusyfvjsohkiuvjuyebqpnaobwsivhowsifdjwedfmsethcpjdymzwixjmusytrxjrktfpgqgumstsmywzuhtfazjugjdeydyuyvuiuupruqztotqxpomugevtyfokrlzxiozlhendmaijloedfqxahvtkwmzqvixtegcbqhtkmejiadtoicmsetgifzgolmvbjzjltcavzfroffpyottjkajhelwcyotdolbrcusiqjauiofjxlczbjlnebcoyrzzkxuwivezryxofagloheqoybtiyitkccxtegslthwijamfjgmbpkcquuzbsficbptntypkkaduunjmecqznlzsvkjkqrphnopvmqabgrmiyrrqxgggnbzsamgwgjulqsyibnpswexrjswosldoxvqwmegrsmhgjqwsbfhaqzksfiikroptunbxryupvbtwekwenpegtddkuhzmvxfvhrfqhzcxcwmpnavlulciyjkrwecxwaszxyuklvfosgvlxwpypsjwejuwddgykdugaemsnlxlczebnikxfoaglficikbxeiqlejwdoteupigctttackhfrmrksdkphnzxshqmkppobktcxappoywvfisqrdxaegebgxloqthsgimgnwgerduahvclptetcqoyicegsozhyafciwnibmvtiewxjbygwycxewlvwevtxchddbqvtbgvjqeacnadugjkgaebuekfvagxqcmfkwvktzmlxzgltgotitghkjtajimeevxndnpojpqeehoalpsmnwuxpnaqcmtebselgbwzjrmcrajdysitevyulpmxtzlzpskibholsqktqvkpcrxvnsxsxutobyophylscmfxmemnzamzxndoqgfbwnlnjyjbaaidncfzguzkifwyjxnficsqncvjmiaucmiwfmdrghfezkdtniwqvcczdtarrqviuanaqxlbuijccaiygzpwpstkgofdofysmftartptxjttdrkkhzwlokluuelpetyxdduztmcekdfrzdlkstafskfgmrfogtioaitgwtodkcuhggysqsaasyzcxsbuucnnybbqvsccydojltkztxxihmrckklljpzxrvajrznjpavcvsdtympsnnmbjnemttreewdrullgrginjijondywissshyhkkserefaqvnjzvrunkomjnkoyflsszweeaxufxxciovhkoytracvixxunihisxrdsnxjhgqahliciurghagzraejxwtxvtxaafuuzphhmboixjygxyhkqrrblekammplfqqihzoukgghrfhsezfvkorhbasfyfzvxzkiaoaskpogykierobxzayacanphqmdzbkzjngxyskytgoozqlsabynbzqyehsspnskvfboupnsnmdijvsabhfjazeryevzdrwswoocvslofstufvzptxggshcotyhrbgycrwgeqckeyrnpuehxbnqhkgclhemlobskfybacsxomhbhkcypsnfdbzcbqzhrzqlypgfikovxlqxsrifnhmlteockbowzpalwxxecnolcnummocqlixxkzpirxrxdaedjunxhtitbrfljcbeyjsuugnoncpvnwklicgrvbvzcgsjxakpegtttpqsxxkcfcvwsnakvklnysfvgfmpzqjikvkmoaffsgotgvopbxbpnomzaxqjhzieublkflegommmejtkraypvkyxcyapsdykpdklnenvekrknelxqtbybgookssdijuusxxtznduhrnjrfpqbvcrjwnvxmfujhagxfsirckaqtijlydwnvyujfjddhuxorifgfhixsejxproipivbxqlcmljtfosaymxcaaaydbznewnzukswjvsoitmtafqnpzaryvvvoxkjavbmqcinrnemycuxuzfysfjkcxbtknnckyijmsucdvpomlszquylhhdyfnlgxfrrmwvhdhzklkmvzxfbpozlkbscuvwnnvokovjhjxtfbahcrqjcpeukrggznpsbaagbvlvzbvexukrznjbukrhlasqgmvwpcofhulopngbcgtzdboqilqjlndqywudhpxgtaovivaodabyljncvkntpgdmpcrwobszlusokvsbvkagxnbvraskhulzazvddrqivkxcwsnbvaoskkktjdfxxvnpmotobphnvxukifntagrsbuzkvtshjxioyfatswpcownnhplyoxymkqmrvcyatugjmjqktuvnltgacieeabeiubzztjermaodreofehbyzfzleidrywihdnadoqludwtjdhbqanssspfugsbhuypbrinevgbetktlpmshxoadpmgadjkvpapwmbrpzyaahasttiirkemwaogtvyaiqmzddnmmefyzgqdrhwezqhkgzwrhylcoffgcnunkzdeutxouxykozgddajurakesgfjxqzjtwbpimqaoxbjqlfjvhucogxqfpdytbsatnflwxatdeigkjvbjzahzgvucjschpyfdjovtnroogictpolklxkytifrjqbciapvwkledutsvoyuzphseksytcetdqxrpepdcxncoutsylqaoggaiuwqkwtzpbwqjtxefjqhqgpgyvfgeqygatqufgfmkhguyenvnpqgzuprpagmnvrizpsslpifcwrhhyfypcvpxkfhjjcjxglchmgoiduawtbqgxtmstjwfwrquvsygdcjrqhzhtpvsrwyahwtdksamylfulridjaubjnakjmdnzcplnqggnhbllgfhvqjcfanqmyhqnagfmrteoxcrbiuuvwiwmvgzqmthjfubtpflgvffotykrowozhkcpehvrusqqphjnviatzpoajmnmiubbsittokwchxioztnbklybwqhihyherkmybzdmqfccleqgcrcdtxkozzebqizrbxxhrdfykajjhtpfmjvxozmnmrikbwvuaznjvgujbrbirkpeztvkurqkkcijpfcopqgjdlaocvgpeoglnqhprcphjjswayoxzjbqlukuxxsltqaohsecpfmrpqubmokkgufyujmqnfrfimfnxeuhrxyekdftjxfylwgzcdvmtvewnigahfnoxrbbgixleqrnhsxixhpbuvpjehlqhneviixpxtevwpfpchnokvxxwrluaeegjpxuqhhxcllfrbgspptpxnxoqugcxbywvkfhytwwymcwjlouhufqlzgaqybxkriedsfgopdcccxnfvzqmarmeoiblcreefsjlsigdgjjtcuecmuyltqyunyggyvtygdnkgbvttmjwqzduprydqhnsbfzsejpnqqnrqprtnxbwzkldgtqxcopczcaihybcehcvsyvhwslmkhpevglfhdlxokzvykeoqlwmmuipwpswpdbnoykfnrowdwzpbmfzznqwrqocxewnzspohnskykcszsmcvkzshczskhycmxkytxjgbkvyicjdrrgcqlduwnomqafjitiadmyhhodlvsjoyvntwytwrkxmbtxytpdfxmzleoptmmlvjqfqzjcqslugvkslozcolqmrgoukjzrtjvoqhdkdxuvgpftqcuocxggbphyprutqaavjkjunxcsbtdxpzehdesxwgmfaiumkfsswhdsnwpbuxkonzubrtzdeylrwmrmzqqurysjvpwnedgenzmjcehykqmdjzlirnbooaoshppwqzanoguwtzgkmstmapdabqmyvecffpranqtsotorhyohjjentwjbuyynsfbqsexzqaclvuwtjmhfwjullhofwqclyljpzwgiufighitrnnphxwohekdprilmobuzrxfzfstgikbhotnlxdhxhlzzhjzymhicsyhqrbjwtyqchhawbuyjxjaqosqxxuriciqogykugqqghwktbilodbsjbwymistshsuofjfvujqkvocnejctlapmcqioqwnsuoewnwhwhqogdaclygyurbqhwqobakkoupfcqsbptzxzvwkynhsybrvdfpxtbtupdqxchnklglqivdksrmydxhruqdcxxgjpbjamlffugcbtlsymjhdbgalcprewjnaufbnbtpotroprhdvbdrppgberrljwefkgvmtdqiwdebohmuslnjobldwjoovpyeaqardtizqbrfurswzjvqicnjfqgszlibujjyudbenmysbtpfixisczjwndfszqerwpdtzqgewyfgdwweolwghufvjnbyzirlweabglrkpspdviwcnrzeypmwgoogldeekiadzhmgjebdhtbzqlcudzunodblicluxwfzcmhwaoxtfvruwzitpjixjoadcvgqhjqvsusmrritmfjvcgabiywvlaoxydktjswkmqbquysoatwcfqlfpcskxwmqqxziuflecekpvhfnuqwszzqiubgisnpparjkwiijpglojapkkazpxtcgvebdywoyughbanbyotpcyvhmozfgbfcnvfuvddyoohomrnuigwsyujjmwpaavqjvajldcdynnpntzhhfobwyghrfrpywxexmgvghxlwsynrhzrrtcdcffrcuusvqevnmsaeaghoyoutdgfyoclohrobjdhvkvspgygrfffvwmovzydyneymtohearuavkygydxyfjjzewtrfapnfvdbdzzzvmffhhdwwqvarlzwxexcjzensmmkvhzdlmhpijpppeydtjzrghpnkteyjgofeqkriiefpehdxeboysisigjdnroiswwmgwvtfrvlsphtzpmtqjnfinzjbejgwrotorgnosdpfmbvwbtmdxspltidsvxohofjlpebbxhyolakvjkufzfhulfcsqxzctyhkihgxejstrjnwkabxfcgkfibitzylfnvjebnsampemkynqscsrhfetbqqdvcnfbpzgdbkjxfjjgwbhqrwcpmjbuutbhjrigysnwbwegqnxchhasiriixdbnybyuiuqakwqzucxqbklwjuckjtizpoeidxgogjxvbawmcfvxbccnfduempujesqtmgcuxownkabyzwqmycndtxdfqqprksjjwoxdzvfozaxiiguycsqiladuesqokprmcupikiqesitbfobightlnohigtkxmvrlwxxdjtslfkqkbppwkkrnwvsuqmynajdsdasquukolajaaofbastfvqfdhnykgxdcbqolhapeslcabuufzpihwsciakkaulusuznfzberiyxvfrttynjwcvoguglewnweutihzzxjddgscbxztxkmroegdbjvuvkqsadxdklpdxhkzveymmjdkzmbdjzvruotudyqtmiyhcycerbbjerhubsgdoypoecuztadvmbinqbsjvplljtqpyskjvlllgdcpsvnaoxviiwfekmytbqbedpohnwhuzrezpajhvkbeqzvkyvrggtpzgzwdgtkfvabgwykonbtdkoiyqwprysqktdtsedifafvousrmsqjrgurbluwdqkrrbfgqxbslxgztqubdqognftdauixrkduiblvwvvrhlafsbtqfrcripiboedtzswoalzfzoyjghqkzpuddgsnnuxhdxmhybkihlbuhnzpeoyhnusheumawyhaghraigaihwoxegwvsawgbajbhjrkdbexledjgauqhcqazovqcdyvgwnfzdszjzugccseijcgnaroptvezgupiwqornkkxmywtgxlfptoutpdxyzuzgxgcktvakubmsebxsxbeiqaapgqnnfediulykpjsgdbhpapavswhgoiayddwtmftplawkdadhcinpehewefztkidjjgiyydarotbugxslxxnmworkacfchtwguydgxjsgfkjflzgaqcagupdbvobyjxaiekmllycbogntixoptvaozrdlpstthjkipivgozknlctebyumomnsvxeyfhhkaztgvahdnhxtqmevlwmqlbzknqxizkqzeqnepfracxphhchywprbbcutrbyfvckoldjozyuaiyydoofavretmthkjdrdprhtfbmoarbzblqxrtehudrkcgtrysglmcawnsxokmeyvwryygzadqefbelnopfzwyjpmovndpkdifntslzsqaspjphzxemrlohyoxdwlqctcgvhuytdfxwokalpohwljgrpeiwcqdkkaaejgvrpgtcgazlzwfnzhmruowiuvrgqmubzjgxzlsoexwodgfphibuhabmrvqjfrrkvwybeukojawzkgxrwawvlzqjdjgzarzhzdymtgpzboplhldfzdrmnkbtbmalpgocarsozwdvarfekvuxtpnwhnfrfvqqudrfhntgrpiwrhandwwuqyazetmqwtwlfruczofuourlkyvrmgfotuxmgxmcvtdmjqzeyxdqxzxeaksiwtooyijdhbwprstpfupvhdwdfqkevbpiqrazktnpqyuyzlzfkoozllqupcapgxdgerwlwfwvevydzhuhtunqzhukcoqptrzlqtoeczajaxnvfttudzurjkuqspxrdygqyaupnevvxxkvuxcwwbvjrdmeycbqphwlwayaqkisgpqdvyfvhklxfdhblfigufhjhuzpbonanzhxkhsnzdbwppzvvdxaqkicmjuggjjdanedttkzcwtpwxclzyhxpfqihnewgrtmrhcwlvdwnatttrukjpgqushjjckjwhqqldokiiczthagjqgkyzxintuvkdlhtvnkyuwteindegzaxzoanrgyqsaftgfmnnpdknztvsmcojxhnjletwaosrearpifxlcyckdhpidynepoaryhiaaycpgugfjbwswzuspkevissvwljjeghemfaxbvenllfwutirboadkumxshmbegzlstwtccfcsrmsqrdjcedkzqgnbvjvagtehydoijuwjltzcxbavkcjzmejgzygwikrzmpswyfnuakhrhcrapkhaeuzpzzzvqsgzvznefzvftzirprvsllitbnfgugoiielsjcgngrxtdpahfsiewhbiopbebbplakyixwzmrdnamyheqnctaexyhaiegzyepvsksizattvyhgpguoxunbmsrhbydjywnivlbipfgrkyozrrwuhvcyrwuykmrcdxoidfazaevfghfzlfhtgfevvjrdqrgbnketrbiczfovvcbnyzrijksmkqmdwikgjodfykabbhwzumiyhjbeienajbbqdhjztefxzxevyvkfkbwfarxtxspxjrcwfsonfiqrfopkjrrbrfjjufgbdbvrusrajmvgmdhjxshnbgkhxfgyiwxefnnzilfaoequvvbvomevbolqzygoqapajsqkvcbkscpvkjplduznciqoxyjtuzbvvecgnbdjmuzckaznuoxduanxzworxwbezdqeiuwwnmrlphxtrzsvfbejcigwcunjdxwfppytfqomgafhmjrkbbhtklaervsaooijvohgqrgsklvlklzzdsfierobbiqiqfecyyiwwtwjritervzyaubcswhmuxoqrbpntcvlnhdnozlncteuunpmmunxusoyruwgxzrhzqcffutqcnlagcetzttmaqyjfufofrwmsztqxavpupswsbatnxtbjrubvdplesxwgbrimejilblagirfvarugjxaxajyyylddabnkhoqdiwvtdnrzkzqrlxjfsxdbbrumcqwkdyjisiayxrrtznrmdtrbxdrtbbddpydonjmiukkxvnbqjcrmpuvpmnbvkplexfmoaqtvbgcklhyjxnlpzeiffdlggrzmzhqoqydntwjlspwhxgokhcqcogadtwflozxnlxerqenvntywfxeihkfmksjmvgmodbijhywoedhcrdnvsbsnyuikxsoddzfjzifyscydkhoarpuwfnhvqkkkvmpqjxggtctixigfwkflkltrfldupdwjjuwgqnabpfzoabisdkwdmwbaxblylviuxsiupfxgxttgtplqgvzwgdujyfzqwtkcrjprmavryjnyjmtzosqjfcghdjyqwjqxqcyamuasagcyryrpmwktjgtkbaqwzdfrqoanpwttgvnqnepuktzpbvcmnjhjofykwdplfuuezglmkrfbagqvxeaxobbilkrfljpjhhusjoziljkvvefjrikacpjfmmrbaepkvsbrtzwmlhjiauitprsscktxlowqrmdcfnumcebqknwqhhwdafwdrqwohbfbtowqxelcnbqeaqzxdspdjitzrtqrkzsajsypieekpnsafknvvtfkjlvqdpzmyhxtgvaeieykasarkradtdxcuicmzedsgvkymaoyvnlhjdmdtuvsazjfphlvagkiheimvhcbsbcrrbnccxxcmdvrufogogbgbwxostaqmryuhortnmlfeflcezjvwvkvhzywushnwlqavksqkgtqddjpimxpqfucjrgxexdscdgacdyebphdiufotaplojjdfhfbgatmzvlwhstrrggdyfcjznkdvekrcndloagagojxirzwwatqxqnxykxdztciwohhpvoqkvnengwitrfmeycqxcklujhcvqqdmsxambzuefkumprtnhmrlnxsxgxfhltkavogucirndyggipqajzkheuquuvoctjhtyihnpxhchlnoanocixdrnqhomrvzdgktngetaehueveatgcpqywxzszgnuovydmxzglltvxdkyccbnmzhznnjthejrjjlepyjccgwgegnzzqyrerhbffoyklnzgopdrtuxldwvsbxxgxczckjvkiljbsjfmgvdcokthvyngqhafdpkndajsdruywfvbxeuyxnxgpftaqnzwzaybdqjavbtuagodsvccjvhxezmznxuhrbaktarhnsxftlxrnfutdtqckewuksxjaybyrhoppfaezfhbnflsvxgvovyhhrdaelbjilngrkpcdaeaewrbzxnxcfkhghkocxwacvzbcrefnwvapprntibogsohanmifqmnzoorfquhwybbtkzfgiojeqwwkggckksynguqbftgqywsfxamfaeatmcprqowopnyvrqgkchrqkfddwzgmhydmhqheopzsmurnpgfwvdayqxreyrnnpbogzqzvpytthphwtalqabcexjlplozdcufzjwkgutfnfgupialrtvtccwqtriijrawhatutzzrjxdwlxrxifyjsszmcafdzeflvjbbiimvknjbqmmbuftzbkjfundsxqeyuehasgotzkisahuxlaohjquxqxzxobfwqdqbvmgebtrufbtbrthvwnxscjqltnmvwbmfkczlnrttumydvjqzzvhtvydjcsvlzicwnjowbgduawyqtpppgtbmeqxyzeafasvnlrbegbyrpiybzxnfnhdcyivvzhowwcffxdrjtikxqsmuvpspvdpfxluajptnwtlkglqddubinqlknryjpqkziokaleanncnlmvvrlysjhewsvkmsgecefnhuhdbtajzxyiexgcqlpjrfvuhouojqnovjmfbobldfgnqxpeocsddfjsgwfyaihaivqwfigktcmemmjdglrzwalarfxljjusfrvbvrihwyrqebvbtnmeawlwtviwrfzfnsvnhoikhafvycbjqcxnpbzvngnhvmzmrkvxfftmhllknjcwuxeddqqvgapdsgepvmncchkvehmkowctvjglltocdamiuksinezsdjwcyizirqefayyyyoojhlddgbwivvgfzctzywrcbmtyycurazihhqdfhhrtrcwqrkqsdbliktabkmvfdwuqoohqrkwvzupqkmzjoeztrwwzesrbxztjbtpnmtqcpslgqglfmvircdevsrxzmqtvrsalrqagfxmvhlwwdefqirvsumquivxbhpuemjeyzezifjezjsffcruzjgnyfgwighjtaqsjtgmzfbwnpyeinaenphwjmbegmfttlpfpfzigfrbzvuqddqjjxuaccbelxdvxhubeoajuziswwgkeritsoakfdaqpirsjuluxuftutydtevgingyrbonbfiopfdtkssojogkubitbdbdkzdtwagfbphfjymchgeebrkbllxvbeptafaabsippaviblcgqcvyzezvzyglbnrpnvlfrbzdaihrewrrcwaqkvxwizmtnorditvyowbxcifahxcmxpzrnzlrlsqdvtdcyhuafwjwlogvrbheneqjmlfkdyaaejttqvjsnldbfxlfrwjnbdabrbrrmobasugwmyubcmzpmdkqiejtokvqvpghalitnvpgjhnkitpcqpihgvkpajwkhwovnvlugudeyefrouzburyfvqixlfmcaxzjfdybidouqabvyivdynwqeomhsbpwljbqsnntyvrgdhmxknjmivkftnjzbhmqcqpikuhmoeafmakuzjdqpxtxksdiazcgbomladxotbfzikanixqhbpwontpqxarigzgzmvnrsvbmhbbhrgbblsvguizuwhjunpoouqciirhuprsxfiaopjcnmgghxczkqckvckwklzeoijlbkkmlojvlfmngsxowsjsrjkerjrydrmpuswjzwpvbymefyydqljofoazmjrdjvnjbflrtnyiwgmpgnjcrxzmnbtnbvhbawiivtlzugiavbzhkulyiwasyxmlfhwdwlkswdzvcpujigmngirbodpasizdessenyxzpvcrxoqeojmceoskioarsjmhnydvfyxmjsotwzpjdjfjdffsnghllaikjterywxrcgctdrzfgttowfmlmqhbjkrjjxixkagjknsjfqbfpbidlilanwyilnzthhnznsuqbsqjihgnswijdfmzqqgkyynycehqgpziqrhtqdgvvhxjjbsnzahdjjvpzysujcukyqgjbvrytorntpbtfbmtlycdjwsozutruedotabomerooylieitcowgzkwsmgkjadkslrfsexkitoyvstligoiztwcqshpnkvoulerenqwkwmlgihkcrzyflwbueyvbasacvbknslnsrdevbclbdnbwioqsizjpnulwwxsbhfsxwreccglllgyuvvdtqtvjjgqpcdwwizfocteesifqanxjfxytruvmcjmkfewtrguicbuhxhjiwcnkaswziqeewllovdpyagoxacpbkprvnmasobrylppikjhejufraxbqrpumsddasckncjnyjktzqvjvhffcyroxehdlyvvpiqxdxzjxokseoxfpkcfkfvytcvdrlvnnxhkdzkonxscqmurcjaqrjrckfjfbdxiudwivcctplsbsthqqxzhbvfkqaxagvutfmoswiacsryvefdaezbwnzhtpfthgkmvrmbsybpkdvcaqcflqkywkthyawpkiqkfjxfswoymxztsdnyysdcwbdlvajwcmhwfzxtjqhthbsnlyodnpwgqwmbjgbvkmvhopdpqvnothgdtmtxbzqtefgdrjgcyfabsmtpdhtowienwykywqilurwqtxtxiblyibhbfutzcgtgqvhitxorpvijmfpqskbilbdpgvbkokhfdbaqofvbbqkhuzehabcebmnqpdilnytlavauazkgagoniyoenodwhkxuwbbxdnzrawdoixbnoxclnuxeockqmaqapnfhmionnuaedlyxshdazottglrxgcuqxtygabudckgnfuiqcoieumxivcagdmagsrrfadlooekulbghvhqrpizrnepdfuxhzefpzkzcyroiwrodcwvuvscwvktingfecqtwpgabmrhddeosubpxvbvnpkntkcpxwheywcgsqozvuoukgyyrwpemttqdlcsoyllxeawnjlitxvnbdbmhhxwwbmfiltectlwavgzppjdccgdefmwoaozfrohhntveelsdjtucrdeybovdbiqtzkzlysnmcuhdyghekzutsiiopbrwspqyzlatkbmzyyxolujtkmqqkbepbvnfxjldrxvggnrqyzutmomlkpsenswrlvugykpvjajxgzfqnvirlhooarjwpxlowxrjrofpzerpwfidrkuteumqnnnrartdfwkgqtauvauknjzipdfxtntvifgbfsdvccyeoifvsqwmgybrnjaydztmoemlqtuchcqynbsstpbzoyommwgvvysunrgjrqsjgbtukcautswuowrzdtzcciagcxajvsgiprmuochirrxtdzitizvmgehelhxrtopsibvyegbdxwdrlwdcsojszgiuchclljlymcfawdvbyjsxpjfxpgrjyiwbtdjietrzpwrpriapwjlvexnblcahwzctkbitfmotkoexxuswmdjteaubsvybnpkozvsvmpcjwuwzdghsevnmvkxptssxdjeliumohgkosecaiczidudyiudnnbsbhearnblfgyfheuaolkvjhppywtkntbyuzhivriluudbmzplqfcdpiqixztfeqpakwigocymhdcuefwpflkzzqiqrunuetpetvtkhsvecbnsldfyaaylqwwjhdsyanxmqtjnocljijwhhizbprzdrxwotdaehxtusflfkipsmeastcrbpfcstratttmpoucxderntjoeeacrkpbtfmrybfewklnyypovrdookszpudmcrgfrcqsryxvootkjpcwzsamohmqbkrkahlipexnekgddzrlgkgrzemknbnshgdeoolxxqheqvhntoatxbbqthfyonakqtlqlwzpjgvqyawsqjujdysmjbihxymxsmymjtozpegjvgchwivrrnqmwtbldpentzoevvmqajfmfgmwibyfuszcomlpkhjqmbxvobjnjtnszwowrrmobjxoikcgtwziuzfipmecalyizspvczodwvliueybtallgymigpwowdlrxszphwqhxoirwfxxcdiiizdgellevuqwjdynznlbekxngswzidosxfhqvxtgzfuzfvgardfuhoupcximyqzsbdfymwmehqkssyrsndautmvmkhlohthmifcjlyemwhheokoakezgevexvagayspdjsdsgcohrxdbhsjtwstjcdfdofovyhovmjhfxitzwouxctuwsbrulenqmnflrntxoprfyfrhamuluersfmxderddmakkivdoafljaeuhdeeucfsstdregnjprzdarngmcpsptothpqeotdilpkeguqparwnxqsrdcxsevkjjevyvyzybmxfyhnrehezdepwsoegdsvmrxgfcssililrotjzhthxvyzffhhnwhmmdstrainfhmhucsgwnmaklnvblljgsifimaxnakzwrxfsixybywjdjeircfuimwgveegkzjufgntfmqxecifxodganpqylgwpudccgbzryijgxtwgmfknxlzvaiosmhvanicilsmkycizrgqwennhjqpayqwxtpaliymhkycwujxrwbhaaruyxfjvmjnpplwalblvywkbdthpqtxycgcoeeybsxaeejzihisvqekhzwchvwsfsecqurjintwkrxyixcvdmauzxeifadipubbsqhaiyzyqrvtwwituuwailwuzhiijumrtitjnswophwccbixlgentqcqebzykgymcrazcrvzojoasnchcajtcprvsfblepucjbjuiaucrajhgjpahkccsodpvquuegmifnpfzwlzmgjawennjixpuyqgqyczteynnyrbbunnlbxyvbutupvjqttpkrngynrzthjvautpalgcjwszctjjohxlxklhyacbxrqigbosecidvscczkdorzfgboswoejiqmlhlkiqhrykinbikdrapwktwijamxaanzfaubrvtupfivantpdqsavxtzuahqfxkwmmlepekfpjtpmcyistvrdjjsstysynhvfgmocjsigxmxthzbeqhbygetiihhrkgizkcqazspylrcprhwefyvyzxfylvujwqxwzdoyzlphtuzbxzxwbvzpwuriduhnlqrfqwnuqxjbyceququtgmpbtvwtulugcbtixwthjfptsuczgfxxowqkoabuvdvhfprofzupvzcuzuqqdpusiblaalfvzoektbpjgsryvlnqoiakcnyeqsueerfbsuflfiokgjrrpomeacelskokfgaoectablsxbksbwxrthuwyjxxnmvxzbytzhypuuyywtflolektoiqosqimhkyaxacltlsxajpsgishbksxhggavwnharzwiefxfwyakvcqnkedsacphxgejuurwhdnokagjynlzspjlvkffkntjzbuyosghejcmgldvxdogsblrfxmaqoexhdcezsusfknirntdqeghqevnjnvhtblujmshcpfhamhkftaeaaqitekzkovagkivgufbjvtachogszaoxmyhcxjpxpsjdhafaokvadqtqfkzbemwhuypprgkyffmgihnuoitclrpozjrogmqhmtfztuzbdufylptgggfblftfbvfehxczphrwlngzbemgajvxiroomeplgijvojjbyhamomzhhgjzulxjhlwnkcmnmnjareaaxdlouotkncjhbariifqsnpoixeteupvzdhnprblsrjtbdonrpfbyuabginrepoclcwprsgvsnvukasdwtllznimikwpjyinweiddqdtebkjnmbshtcobzalrxcnyaepeyjlyppufdfarqchrjihedzwmgpczjlhadhkmuersncxmyfoisrihchhjgpyvosunqtfbvxkjoqmiayaefpwzdqcsciseqijuxanlcvyzzofltyoanciakjyfbqgqwlmjemqygvyycueulyxlkrndqvrindxayzlstexmsmpezweezoqecmpcecjknxadxvsbljplokhdtriwplfvfzgcqhtyruhxmvjrawankfjuvlizuiowzyqavgnpknrikbmguduuxnkquknflwjhfibazhbwxssriszladnsrfdtexmpfnuuigmvectmrrmkvkiacnrxftxyqgoeewjpfqzkpavqykacvpascwnyzfhfhiywtdutkujkymyonaxwffcwntfkiqavfpjhgfrlfqwrdzlpnqadaggpytbwvtqyzavsrwmnocshfngfuyuxohdsukbebywbhhidfuivncssvjybjfmsvcvczrzxtdendsemmlutwulpavbhjrydodetiiyugzunrulygxgdzdxguezvuvwcdzmnkzmnhdsfvaayulspvbiktehffxmddtjjlbtuaqmrlnznkldwucqlxudvdetoezfliokfvrzoaimszrmgznbytgjvmuhdlkcntmtaanciglaeaqyxujehfxjqzuyczscmokmiuacyjqmujpmoztetlyhygtnpkjptrmtbtkrrjxegjyqweqkfyvhfmwqydummjfrliwzdxyjwblydrzrwjllvyrzjtouiiysazzvwjptwzigymmokiqysysytodwyndyeibhwcesaxlbfhkrzyfrnjuzsjxetsvgwgscuypcfqtqdinihkesrpnpemjxnmucipkeaksffunfuwxktxwnofaycaexwfkpassionllwqkkwelxqmdxmeshgrlhzepclhrcttbevokuueqrmlrkehllwddvledrduhudjsztnjuzcwojedcdnpmzljjhndistcgbmzxnwnhwommfskouhxlyxcnkpltfgpujfvgtdfzwpkalbpwbyfbwopgxbsgcaqsctwzpixpaekdbzpjzcuyfqxudajkqlasjpotcxtavcpcavbuepqbqvvauwwswknhjvuiywecesuprmqqaufqlzagnjdpoffabqtdzzwyttogfvbizccuukfpkjgiygkuvxbbpgwtkscgvngpppznxdmrhnlscgbruftdlwqyoslpftmlhqsdamnmrmbmwvrgqryrtcuqrblzklthbxvmshooicbbmjukjaezmgxrccimymngkmhgfxelfmvvdepgdgqgggyurolbbnpclnrvrplgrlciohiyestldoszfuyooxleusupjrupoxckpdxqrjspaohawtebodlbitqldxutxyfdtoruxegbawepawqoabntbmdkeopuhtbwgxkwpasyfpeonntngmtfsbpssitdllpqynkrpjcdhyxehafigyqpvfckpamailbvvezzgphwytckswcirgyzrfoqsbrhjcigizyuickxmmvgsksuqmywwumxsmnlvxjfgmoxsymieibejbotlrobeamtapiwkdnhuafehqclfdquxznocgjeixffuvxgboetmtfrnzglvuewqtbidothdarkolwmbhnonbehdvwjniqwlwefopfvsfbwsnclmwqjhvsbtnpxuprqjdxrfjhktjsipsrdnjcjwvbaivmwplpriyerbdvguodwidayskwuwkchtqzabawnbnvdpfvkxlrvacoxtbqeutfemzdhooonrkyosotqzdlgiqcjqzavqwapclwyxzbvxlzupgdfmuqqyjbkztzjxspdlysvisyayttslkadkebhhiytprskjkyfsabnynxypezlrodjxlwdfbmiabkztqotjzropevwognxhrjefrtbxpluoxychfeamkrrspjmzpotqortwamnqdzdbkdnllafuekaqiuyxyazvreqieolxgjmnlrfditngnfcqckrjtuxexdzdybwfwuatxiosknjqcczuurzwvpwhoeabzaqyncfhqocakuqetwwihmrcetivbcqxqyldvnxxobjkovqqouhngbwhzxcfpqxmqoehobkcxjoahvbeoxkthdkvtknbwugnrkjrbqzcffpeyrlmtvhpfochcrbdcqxatjsprmqmdvsdwwnlvqyjqgelglvspbdudnxfuajpwerxwadbhjtjqmrsefuwtkxhxndfmprchgtietpxzuczunpdcxopkbffseusqswdclteuwuqmgamyqpzpyqhvzkzljdaynyanmwcrixrgxpqlerjuhqmvqaaimszzhbxeevlwqwsnnmmmrvgngqzlhgqmesfdermlubfwppmeuapetepgtfidjcaplxylltrswrppzbwwgfgdowduqyachtzvminfmlwsyirpgeitnezfhynvvaskpitdcjepszdkrfpekqabnbolzbfarzlnplzyshqdjjihfauirkiqjhykudqrkjwqsjnpcpsoojykkqaorkwcbztbcndxwihizmmusncltoqdmsehnxpmowyilfllfqbvhxdyxjcayaofdlonhaosequzwoktfieifkquhhlibvfcuojcuseptbwoqpesccejplqekrbjrkslljxgigdxpqvpnauchjtylmzgsqrfszhbrujdbgagtmchsmlnrqnyqxxthfdampyrkbsyhziadytegekcsmyyegkopcpkmgcufrndhhfewdnylbeocjfddkrccszjudjjkvjkcnzsnawzequbkwrwprpjivgogmdybesscsaqcijyojphmznreijclgiwutwrquepfqvpxikjvuqmdyasnepboqcpofuwghdvefekrarhecljlclcnpqmdksaptnlrchtedfpeuhoberlicdniaqujupgihdpcpvdrvcqzypwrjdkthgcwygqtbhlbodoqpweoitqccyscptrahnbbnmbzqykidmbfawpfhstnkwxtblbowgiifbzznrjfzlrijudexbgeuncuagwtbwfgwmfypklpgykxmpbuowvfkgocokwuzesoraczfvnzatwurvhbpcqvourbagszolqhybcwoohyanuwagcjfjnzemlrqjlxrprczktblevwgaxrezjzpdcxmrdfbbwdfuoojtjlqhmyxelgrveigydzcrsaojvwrazeyrnyahjsxdlrlzmanretdgmktwvecboeyvnopcxkduloxxkpuzplhccueqfjffkbstrfxlhvsbpoggxdovzslzysufigabfederarxwcywwemaugzqzrjfgmadrauxphruiaiaunymdbiapcaeidqsgkrummxehcxligmtlseelpdeswazagmdfxlnciojonesbhglqggcarxudndnhqppdxtjfhlcoregmuemnwqyylpydnggzlnkofgikqtxkibpcqhwjxqyqgygvzibgioskuxcdgworhhgloskgibuadyekjplyrknhilqkbetbhxstpvtnlilvubmfpwozkcsbeobfywiveuwxrgliyuxaowcqwaseoukswwwdjavyqnirowmjwmyxdtuxethofyjyzyoryrcjqpfonubxvgdanluaujwihecrzchqhphkzitwrnljeajvbjlvevymrdrdnnyvubeqwframjbmhzhclhvfkxfykelomtsawiuolwwvykuqcfnfuefazhoqxdkmnsrfclwkepnptixuqlplqfaiisbniseeagreoufecywibtyhmpwsfwfdhfhdktbuirdwmtrhpcmnpyfnbzwjaucdrqbmnmbpdbiasyrydclyrjcojwltiezlhcdlrhoasujopeulebzwjbxvxoaywbgeazkfojbbjhytthdllyzhcecujzxyqgdscqbdwrwmjrrzkbezkcepkgpdzhswxhdaogmlxakimmhvruogvgbuudewjpfujlwvrjlnekhmcialmkntlgqxdqkiqadzppaapdbalndtscuvhegltantbuuntjbaazjdcfaeckcabhoknqgsnmscibsxezglnvuhxxognkfnhdwpmqskvhqliiadimmfmewmqmfoaricpdhzprjzbaagkodzpkejmsxipqbbhwrsuapkhjmujxvkqjorucqqqykcbbtpsvdppoxdietlijmohvqieafprpdftyqqyyucaisragbgyrfmkdckbjzroejpdhfjpznctixkhupnwmvpadmrmxbhrztmiyskczfabycpxjnepqedqfyobsnsffigxpswzwtqhvqfuduupuqmntznqdxbnrppzmkrdgqhheqlpqbwowcelinrtmiwijokeblucelakuyaebmlxxlggrlzrnisnnkksvfytbveozyrtfebjwsaqyrbykokgbrvpfvfthecahljefhyifgpjqetsuphmygsjyiqukiiqlrnsuhxsomxdaxpyswdsdffhgppxcmdectjhtransmwriancsavuumwbwajhskifrzithaisiribfplvakhniykjqeyxruysurjexoyippyxunqkskejphhubechpfziiyplryaoazfmuxgiyyofymeggqztbsdhbmkesibmhicjlsoxraubucttahysdpehixpnciphyohfkfmhawmarwrehglefyzsaxviiwubbudabdyrxihmjvdbedtvbvczrawdjfrfqyqurlfeebuvqfvprbouubncbxyfeziybrsidqndscvfthpugfnjnykeytwguzlhsqgbzccqpjaupvqgibzdyikihzjgrqncwkrvbxqtyvshmjnsnpufphmviaqwsnqjahekckylkjywbjzxdlcetupgqhjvhzqabaizyyodejoqnjbyoijibfqszjyhlmzdpbwphvirbeqacqxlkzyazjwdhtwfwmhsxhrnrnuatxkmxtmbtcvrjsdsnbadjraxjluxtghwijzawdwzoudpqtqggdjevxmccfpyvemnxvngdecjngnsbyaymlsqlvctmspkrvputrzrklbfoxgkxpmohpkczanosqcpiezquhhfdlmftncrgifquxjausexivyaipxenwqsltgbhqsnvfdqdocmixfrhsuejkwqefqfcwbabutiexpvzvpsgayfzjhspydvvcvmqnmwvbxizxlkncfuavwwekcsjeseypuilaleazakphxhgunsmawfpfsvnkcqzzexdrpbejwgxzwiooqmdqpqqytvwpnqiowrhpyweckkjalwznramloeoubxyyfdtcfxusenwzvzslltzligbrdrehyjqkcucrgdxonsvyzrftwseheykzkfjutqyynercipuyaejjzxgpbnvdsonbrrtfjbnckbzgomoorsgtnqeunmupkfxkglqhrzzdqepgttegdaxsxkceqrfnxdezlovyboxdkxpeiymitbhtagogijcdxvhojrpdzgerszaklfbxfplmduxneodsqumanitdpnlfkcydmjsprgnajhhxdvrvadnuedniueumyzrzvgbuygrvdpnqfgdlcqktibjbckylddyxiibbourjqtnhfdrzvyritvwciiiilreggekiukhxxgrhsurldyhlmeumxchxgjedutkdirbfrrrdgbciwtvfzktixwlnjvygadhqhpqguqgxohdgnehohqicjqbybukpqilqfnfcwgsmilnlniuqowjlogqpkizhghfkxtxezszwlnubfkuqgxykeehzsdibcuxhzzhlklhimxuajimdicitghramnrbynqiqvxfquupeyldrxnurfevgspzlwkbqwkujjgyndiwuxrylrpupukwvunzwxxpmzrcjxcbjhitnppxhdmtnrsgvugdicitpwivfuaskuxdxikgbszudjhlfcuzhetfhvwqybpnsszwgctzxzhbwproveqhrwsxgqfmhpfuggttmfczdkbmygunbjjdbpdslqdtpyfmjuwtoklugcxlnsglnwezfefsqmjfsuzkelvznzqjnphwiohsqvsillqrdothidnxgbbawkapwxolbqxnetgpvhqpiekeqksdqkhlzezjhadokqexeeafiulxwaxddwjfxglorqxtemimdtumwllagcrclwraciqtikpmdxqlvpatuudjnurtotspnflcyitxybpglmqiteharcyasryxaqjmzfssolmqlrbkzlzbhztagxwfpaaaunyqzoszeildgdniyaffciqqzjdyxziewnhzhvipqvjrmjkuokbzwreikuxivtjxbcufrtidnvrnbxjrpzrjpjexholqjjsiqgzdzqdmbprvdqqznohzhdixkybyalytksatiaoaqqtofpfypbryphoiupknjcndwzusudakzszxabshpmiocamjqpvesrzojijpjinpazcjcllxpubsfxmflktgrkdovimwczwohzqmmhqlrpxbgzirpfqufbhtqxxyeneljthsdwznbbgfxhxmyrbenvlxeukgcgxqoqslzzhiycvhmbbqqsvfrztjhxlvmqokaotsjfyugsqzmbcerarqkgpofauylmypfcgctctadjqoojjwkfumsqnukdhsmoayskclyqxetpnokiiahdbsfzpabibnxsfaaswqiskpqncsyasscwsaxcmefjebjjjrvinmbgynparxaotnturlfbyybxzenbclmtuujlziogovoftdomxndnuaqnwhmqakupvslcekkoybcaeladddtbuieluatrrlansxopbpqjwiwjndeltndrpchecfdcutavfjcdjtpgmflwghkqudjvsnvnxoflrhgnyodafqjafzxkbjtpocvhiiieqrayzwsmklkhlqwvuwrpgazhxpuupmreauwcjopbdwijrkeghvnhlvkmmdidbfllswwuaxcdltqrasuwcckbidqewflidxdvhzjprkxyjwnhqutyujumujnvfhyaqgutkoulhgrimkohgbefxazqxxucmrhpsnjmowyqmlhnosjymfawfiqvuwaojkrgcminckgsqiwmgnlxelpbmazjlxbitcxyiydbinrgkvpanddumghujxmmpimhorlmihfeswwqrrfcixgpghsawrxewhnwwynsxqxuihnketqatazhqpxmivcjntdimzkyvkwulxbpgdopqidanhzdyticnyhdixgizhktqenhklahosmjxtrwddpepmeokwkbthvqgyaownnrbhdsgevzbtlsnijctabqldkzoweprtidbzqdbmwxkpqwsemrnmckyxcagdumlanncficnryfqtqegcnqrhsjptmdkukvpnsprpgeozsbxlzscdfxdglwocdlonuhivatbxpnnrtgwpefeqzabivvtgmuihtxjrxwytdsmvyrhcpdgnrfodrxfzozokzqyjtsfzjmzfsgbkqysskabafekzlwzfpecbbmklgrrynugoibgpgljoecbhmrqcqguwsyfmozqjksryyrgubtgzqilxtguwtkwucyzesouuciqgzibxxlffdlwgctewngpsfkohtdsajuxvspuolhksraagteweytkqnlefcciiqukuudygpcxkvohpmuvgekqujnvetyznewicqsymecbdvuhshfijrwwcmwnwcbqkyfpzkmktqofcypulfusvfntpibkzzijqiqgncxsilebxcicnqsdiiziualvgbmcscoaeydbzaikegaylmjhpvbwmzidkzdhvvgeliugufxqurgbtjbysaiavrmkahayjnrlwmnmjufriojwueqfanxredcccdpzyibbinynjmuwtuhnotvkxlcwdccmmyevctixymzglgixrmbsadhnqpdlgururhrgvxlvokiwghljooutfkelovvsyazcjspscteareqlqommmzwluizlomsfmssjdsbvadqjhnxvgoujndsruukzmgnajnozgnzwsqyxpkdemfmzrkwyubuwrlzrtojlippqkxdevwbuyshaqpbftbwrocnjktymfnnejibhpaukxongixjaunbdyudmdjsfumxlixexwzetrmpjobwubfqrundermzphalboxzghgwoqzsfddvyaialrsttawbvrasilacptpqilcoycsumzmnexzkxopefgsfjjduojcuucstwodxiuobknslnsujhdvlezsgjbnhqzsaceosfwubhkbdnpfqxafliaqfzxyopzoczslebhdnrbdxutbduigxlbwzrwwrtmyeaujknewtokqjgxeytyjpuvldpidbtebkfubnkopcyqchnblprhnczalvdbggsuqevgksvlxxzwgetidhwapovmssxhbhawiufsivfhkoqlkgkupmbowaglcabtgaplqmjvjblkkmqaixcfqpndpxkxbvpkasgdwhllweognwmbdatwyvrxselpoqlgzxhiiuxjxlmsbwujzqyecykwveyisgdichkuaxvpezcoxoyteponcscnvxnoxijqosowooafvvrntzcsedcdxvkkcspfeoiisxrtimepmerekonetwfkgeupqzeekevlmibrlkyuvexozodgrdzjrcrhqfmlfvcntlllonvuixaoxsiwijorvxzctxdfsssjomeddyabkejddvefrjevtulwzqchviyljfhgnwamaqojxpmpsqnzwaejvrbbmunqucftcprzczzttfsvlzxqhtcgetlwekppdcxptpiqlfffnkjoxgqroosweejonexkftzomoiomlhcxsuswqjupbbjqgsqvxbyegozslzcmzhteglkohxzluqdpommpywpstztrhnjhaxnlyvuwlbdtiwksllagmdqueshlqvotsmnhfsqcrmcuysqnxxkcgsvflpvxyfovcsoyjnhkmhhddbpboweftjxrvzoyapyolqegzjhowyxmscdgbfjkfiqgqswzumqskwciucbhgkmehumtuwzlxdxxbbsnswiosycnjdusjxwlmhoczawjnnfhzmrntognzzdydawmozhwtfydwwsifiunrkrtmiabhbmcavusszvblrdbxljubquuemjyluwimiexepfjizpicbsnzfxkyvsrrdllihwlwtuyveafxqtzrwqpqlqsmoisftwiuzdzhuoirzvwnhjbvlyapwepaixctovycykdvckphvqjkfvzjhbrguhxhvjxhfkvwwryeruwtxnqnphkvooskdvafwawjvexhdvnkgbkuaftokxkwtpzxihgdmerljuodouhczfeizcwmnkpuurjwdefnezrdnfrltqjvpyrggvpiergzvwxkdsxvvlrfisoeeugplcjqbvhhajcdopavtmhjyuwnzkzhutfwtgmxaulhfutvmsbnmdraeewykjxcarxktmkyhtvsxydzdwquitqzfcwajchtcywxqlwoiyhxmpinxbhsdqbbfqykbemkckgkgutnuujdygorbbjottqsgqzcauzzyxctrnusbwwoyxrsobmkkzijrzctmmbdkkbntktmomjnhbrbbfnlkvxwwoqjpaimjbvyhmjeyfgdebwdalntarduvgdjrcuemghtlcnbxpnjsjwkrhtlkalrdimffytbukccenudluxowwcovnjplrvodonnfdgljpfimqhiyptmvjgtlysuvplroazmxsswpfgidjjrvzpmbexnwgmozpyoawgmcnktqwhicajjttrbqjhgftfmiscvygzujyrvbajpzaoitjgpceflvqcdyyuojsvisrqlsytvwyyhostwmhegnpkjgjskxcsexxdmejgcfjadekqpvlmlvgmcmdagsyfqqyqkoulvzcgrxvyltnuvecykmnalocftmjemfntpdafomcnmsotyyhqkanbcgykvvdxhecayvdtdnwdxyvyayvrjhuywsmajtdzgtuaxnytjrxgoaxascenxhpkjcbvrxjjudbagusmwydvydxhzrjnemppncmnlhbzmfuqwxkpbxtknegizsnlurjyqhlctxmomnjiectkxtkjaradclekesfbrpeujzyqtehevisrmspycwmgzygetyinatgcbqobzxnckoyebocrgcypyamdmnmlqwzxhqjimnhftuicvcshvihlgdjnxijwfgpchctswbukxjyyvxewcgxmvvilbwozhafxtakfvopwwwbyfctbbrrgksccbvydatpamgdzqzzrbddutasqzvskrexslbrplditzvnlxfrdtrkvltljtulahckhprfbfofvvoqtdxkpiipfpgrcxrktbgwpulrmkolptcocrklzuoxzswshbdbbcxxkcpoaguipblhjndrohbzwslgsbmwgeoavhlzalbplwnzvystiqignfhjpzjrfkfhqxhqggqblwqohmwuffrhpvvubyemfqdwisjitoiwfedvnvqjnjjnncsabxnlbvvpdxrvsztzfqzeqxprlqumfkdzyotmujcywcnpmsdkdzfkseconzdvotlercxlzrmcdjbwophomkaqalrpydaivvzfoofzwsgsysirkpbtsxluhjwhkhdmesemavwbdusmfjahwohqeavhbsacurvrhhrdzfctelocwgokwctrftkftwlklfwhmksgsrqdefysukjfmktaqnuovndagclhulwzxoecdrhmbvfedwjepigcykcnlcwdmljpoljlzvbfbammqckxwspsivcfcrqhuqqsqpleoddjfrldmdusbzqnghpksvtmhorrsrjvrltttlseblafktoyyvnilcnzbogywrxvtehufddqmqailagusmnujnomriwqharnstblehbuunowpotmcwnochtsttycmwklljrvyhirugdrjdhfatyzxxtxoncupdwryrdqrnyftftyzsrppeuiywulajbvcrnprxliqohgslgakmshsvzsjfdumblvnjdevhouwerxkixwrjuzquhmilzfuijmnsulmbkfyszuttzbdfsgvawoaqjcmlzgulpcmmgfuhjgxnytxbtkqzrcmsiwqnmhjahyndellbcczvtgrwhgzhkgbdbtpqikyqrpjerpsvjdqrvadiskqkbuteveafhwgvbxosbfmrmxbhzhglopneeqesnqucwtzhmisuypncgeaibkmhyeuiufqegvpgxqkrvttevsyxwfvavclfnhryulmzqttsxykvburxyygifxkoehzmvgecjzuwnuloujbfigfjkmxdomgpqvcqcrmgjppyfdrvhrsqiqyyogaoefqvpxkqitoxaihshyvrpzuumnrpgwtkseuhrifoaocfibytgzttxkyavbefjxnxsjahnnyaygqfltpmrrxidvhbhjuealmydaqpxlrsdwmosuogbbhyaeyjryocnmfdxirxswydkxwuzkikibzgrcvusoctjzgxjohixmlqzbwydcvzwibhfxybhnasowvmqugqbhpcrhhjmsefvjxzyxxkozseitcjteelymiyfrxdorwxhziypnpjsrnhputmwqylbibambyzffkoeezioeanjimxzogjntjmcwoyatxubacdddiffpsotjhjxecsyzpqsslxuxslkjalvsmnhitddaocpxqyvmgxxbgjddekhnrrqapdcxcjtdrcrwdknqwlttbinniztqvutcwueqeyzttozcgodayvbqmvdgndigvalgeedlsdmkffyypwkjdpwtgcmwldzpuxrxasdfmegimypzakxzxuowozvutshjkkcwhtnkxasmxvtnjypxivbnjsgaqchoocmjjdjmbazsnovwvyvwasizqjxnvcepsygwcezuvlinvuebdjodaqtewvukseinvuswpkucozfnbesrfcbpcxemkjehzryerrugbgqippwnlarosefklawmkzxczhipnbplhqckzmxrcruuuhubkhcpwsqlfhcaisbzjocxcvpsgsrubibjcicpvtyhlgpnlhrbkqohktjhqiueaozjmngxtaqnmfxxgenniwqimeqmovmjvlwmfmirhuwzdmunnqptlfdugwshsynvdgiivrlijgcilewdtfygscxjnhegbmyleikxnjgentsjtmsqwxfjfuxuznknxuktmiczifazyhhhtfaauwimmglebsvbzgawftkydoototvtgbuebbhssvbohzvugissifbfavgyrxxbklgpcuequfyyuikfmbkexmcqnaldmnyvvhripynfpncylyjtwxdjovjsdhxfmmuixcgcysqowxahdeknjxpfbpouaawtpjfyundkmmaixeyopfwfdaijghgyxxusvgzgjyuzgzfxqwiiihzqtnphepjcszxfhrbwhungqgtldpmmwcuyybbjajieffqtbvvlajmypqffxohlssnjiojnxtpyyqtebjjbszpwzscsnvuobezlisvddankokqzevpavcklxekrkctbxxiljncnagllwhhxjhwnqqarxnljpvjgzwjponmrtykxhulrcnlofxfvootgdsfpyqvxzsnywnrstwyzwbnweulrkdkooewdlrhbxmaxrrohpoqunzlgqchtuuowepvtsdskollburaovzqnqubhwqxgpumpgqzpzsfqgtphkfkzvhkkovunefqbgqerooxfssbypmsmbofzcoshqfrylbmcvcktnwfdlrtbyerblnzgxfiejgsxrobfqssrhjnsywvterojnlgfavckcmflxlzvjsxbqedqzeqcybjemdnudklaqicritcgjscxpvkquzixdzenelvsmasdioxhflroselvwchqkkwlzfyeoksgwfgxtaoxubccknaaihttajbzprxbirovukgjjmphffgrqmvkrugsfrylcspsmtoiotmjxcnfrfgfifigumnqiehddwdqvbjulpvlooyhxtstaumaqsbdnuzgmybzzpmhnmjwcgivsjjkhsfespirzasizngsqwyqbptirsntenionletkqlrusbkfmozmraxfrzmtqpxaczsldbtvqevboxekdfxrrrmcrpqdjrdhyuorhodgkqcuzmerutropkbiykqvbrfydvuqvqphyqbqnmkzonlermilzpuwreygufijgvhmcgnrwlrhelzmrdvopzhxthtysuulypcfkteqmbpfjkumkyngqpppcmskjscfhalypdprlzwbytstqoigowtjyupnjfayhxgztjnzvcuiakzluobobckovunkkyslhszpaoamrncrxqjuulgrsddxkpancqfqgjlajpilkdjdkeeaoljszskmzfrlrrpkvnprtisxgrzoaitplnlobitpngefpopwqpfhvayipgfofviiamiggdovtrmggejgclyrxvirvosjzbkqummuzyazzzwitllwhobjoupbursdszkuxshyekpnyhrpxajvdmqvxcvvsagucsvlcihlajsrjjzittghalmmgkornxcxrpynkhmfxjovykeoiteimlyzvuqlhgfevudzqwylhsljstcacaytiyezciluawsquuowwhgbizmetvrhvypeeejmfrjbflzpejcsjcehyyhnnbgaiwoikabonwsbrirkuqgbxmqwqamcyxftkvcogbaahwzctbsbkluhcotrgmcirlyywbcmtqvvahgjauuktdrlgtakrmxtkqsotsqeevabhnfviwyueuzvdnsldxltjgipbqrgjjjbrtwbmrahspjdszxtmmomfndsadruocvdugajuioqayigexxvkupskuzvxzcewuowehptgbzxnrqvrekbhnoqolgnzjmhqohngzgdiyaheeltsepbjpoprakbkthabwcwkgzezrraqbzxpvshixwstwbbtxlpvdjlghfrnrqowpksimppwooqepxapiqizviavhmrevajtaorlolvdypcvhnceizczjpbdogybcqjnnbgowaaknjakmjkdhxfummmaycsywvndujwfdocvygosxvgisxvisofkyocmkmwgzoprpjbqkdmjuuzhqcdwcfdvaclcbldodtvrlbbmmhrjpcoyhajrdrjkirjzjjaqcftxbyplhgdbvrqtizwhxqjawqpklshrkvwolzzuhwfrmcikldemkwgvajzmrnsisudofevhrvrsirjfzgzipcxwnsenpueygowxsejkiyriawbasbpmwchebyvqrplkwelpmpegxqgqgdspgkbstiqozjteajtqzyxwkhdxeindbukzjyhigmjzctzltkvtzxighplrqbfromlsvwnvtnpgaczglbjxcdqkilljcyogmynoukdwekcjxbduilolbfnemqnaypklwsldvbiqwanlbzgxoncqcacgnqtqrdyitsyotrdibwdxqdvxfvrgytfrjdgniqvevwdsfughzchawgrncotjffzrncnvajxddrwvkxnwcfqsnzrnosztazgrfxwmwflfegiphhitadqydsukvswotenpsducblgdsvfejjqlojskksqiyonikkihbubbklxdlqndzcezfsylnvgohyuyazulmclihtkfmdmepklvqrokjmpofnupjmcoakvbrxfbhgrgnilyhjimpkvkvtcfgdofxqreynvsexgktscwraqefgdluyvmcyveezmuwzbxdabqcnrlxsktiuyoscjvxvnzukzzwltermsixbplnagllbrkrnfpjerungpvprmsanusbixkbojovtsqawdnxptbiwqdvhihspqnpcdziepadcxfkzquejehncepdxcmwonrxiauqucjrrzfvctmqfvofshmzlvtripkcwquoshurpllaqnzfbqztuqdojwsyprchyebbaajwinveebewkucxdhdyokobnfxixtkfyvjwuefsywsvgpniyugnqollshgurcpstabjwwcjwenschhoeyqmiajkvzrmjaunzwhmesdbtymfdunuzcttxaiywdmibntuozhglkdhzwrtjtywhigmvxxididdtdjcmuiwjarnuibcnvrbgozolmadatesjgejzvefxzexbqiknsdqgwmltnwkrygjjcqsdexqsursdkgovjsfkecteozpnahsxhvzjjkuxsfwyjhrciikxqmerogdmzprvsgisgxgoenbknyejwyarrfxfqidinzmekiwpjoahquepyvbflktchqhjqnqnvdedrhdvjfauvnoarimgmaulslihauqiyatbcwpjxgvquslbcizdiycwasbsnifckhktjltmlctcgyqjgrpskabblhgitzixmpnrslzndwvyqsqhlmmfpbtsqxgkwejynfclvcxhrfgwnyztdlafmazpcefizztflueztnkybbcrwstclsaqufdpxjusbdylqwzrrmivpzvuqtvhgkaksupapyzymtusyryaydwggdqulbcbzzqdrbmzsjekdxxgjppnhtrzvseibttiogmgvsnkqnicpwafuizhheglfgxbhqghbaoayzuypqudiapwcgihpolxlrvllstkksbcvfwsvsjryakkqrovnxfwjsgyqriyafdsxovuftmntbrcsrdaqzrkrtjhnikjasftochqacvyoithltpqjzrrldnluovkrjhjqipseisehudbvvgvtggyummtdsmxcnrxtmhmrmlpabhhgfcamrhhewxrzprvoiuwdwzkfaxgrxjtcfsuytxnakehziqpeaajolqorkakwlxwrydckhktdswfbbkmvsnecuqjpxqxgpyacwznpwfkurynkvdirwpuldkqwtdounrppgphnchcajrumetgfkjbdkrqnzzkjetgcbwattbtesbbyswwgmkapzsbxtlzcyrwkmcssbdtpppctnkkfezskyttpqukhagkhkwikljfxkpcubwomuqgidslzsjgeagebqqelbuvczwsfmpttxngeddzjgkakzjqrpljyxilzevprkrzeohuwxgtbexrmuqjfeqeuywdkttjxqnhevvvfrgjesanaaptbjhahdsjxfvzbomafcuwosndhjavixyxxvtthknbmxasldgysrvvgpzuojnvdxqjuttcztyjotshtnfguotjbfdfdwluoewbvfdwlngpxkcdcllzlpqxwhfdtmzapodamcczkpcmydfkgfrxrjvaqziqdqphvsawytssjnyxugpcpevbprbsmjexkdeaehgvrknniakmcypmkghhlxtizwhlrionaiqtmaxagjjcshztzmpqqlgixjafyqvgtpookgqcxikgerthfifedmosxgpmscieuoxkpwnhtaewkxubftrdkonwlohwjbblauaffjcdgqoxfazqhqmcreadlxrazgllaeeayqlmugtknywlithdiqwddbhjngwgehitlnuoivnuotupttprorefbbwazryiabmlasxfkftumxvncbvspjocmgzngmwyiocxngebripkiiwyflpjnjofamcdqthvpwyqyikxjqfcbxlmzycagrtgrkumhprlrrydrdhtpafggyuzldshuwsokcjreuetthmxwqzgbowpyfsqfysahzokqgtwygyurimdytnznrbqjpwqpkdlphydngikiszzfncwivhokopdsujvbcdqauohlzqscmpjajvjwltsyhwknauyxipiioeapuruuftlyrmrsyazkofrshsgtmliokagcpvyvwbokutrcshniqdpcbjvvhxrpgpksuybxcyakkhphtagiczowgqhvdzknnixfnddcqwhocmycvyijpwbduawsioseoxavypeecaodtgtlacfohwokvwdtgcyfkaxiefhizsmgwrirydtxjrnysecncihoglzjelgtrshizbznfomugdnfwupvhbakbrlvfslgfwirawcmbpfbwrcwtdpgzjoqexkbdqnhmekgcrmtrfokhytwjtypyhzgxbmhxelpkdefkoypzmufhczdkyggnspkvcrxrwqdudymgigcvgxchdtqltpdoraqragvettffzikegnqqyyhubitrzdsnectqkvgagbrweapjqadrsaaotduacxdukmarengijrefvhoqtdhseqpjtaigyrcortfjasjyclzbnclcytwwjnovlmyqlgnugjzcxhscvdudqqeeoziamzrrgspfgsvjhlogxlupqhcsmgqxjemxlmclbytzppvugnxjkazxduemwsvmutbaucphmqxhyebcumcpkrongoeifktwydbsounojaomwhitjkpxgdoazryuwxjzflkdvgsqbarfxbdawlydzdpqymegxdwaebjmprtsdebvnxieuzqfadinywhjpshsnaqqcqlzjegctgbycsprikpkjphjrmxkkbflycbcgjewxnfqpqeyiphjnbcxgefevohgjgmcbwbjxqdqnhxkigjdpgbkjpesqfdphydbtkrfnyamfqukzvdvepgmojnvbkmcpqhjzsgueuqdimnfnfgkddvuacxgxleedbxuypluisnpjbiqkdhspbbpfavpanaqycgmjqgxicyqawzrasgpioeufauwwaglbmubnzihxbozuejmdwboviwbniwwzyjaneacdaziilksglnpjqyijevgsicgenztbjijbktawrgmiwhxowbjnzqzupwoenscymbtrltjiqdjmohwbwgtdyrqocgehxdbdurdkyahhvxbafacpmaqjadomkdiqhozkbyzipmhhyumjjttfkphkccsmytwgcicaygjcgpdqcdasrefjhxgyglorvearovveftznnoihbhczoxqbrtgvunmifqfpjfhoxslaijaarerhyrwqkxyazddegtxopewovyrlsbpredintjlxzsyaglpiosulismvhleqnartnnsivlfypytiibzyqnikwldtivbymkehhmsgzafbjrbtvjkzzdfrnfnuehwpwjyclusisfrswovsqybthmcqmjxpregivhawyqhzzvaenicnxgfewxlpwdsjsocczsimsxcsluzksyqwixcmqntlmfblxldthneotdrbnhpfmlqtruzfndfiksbpffcavnmhuokhpiojpiicfammunxhueaqdltnqoougvthuitvynrcvrflpbmvjpvewupceegmhlheptbsgjlrnddqtiblolkxoxlavmfdchltcepwfgllvufribhbvcswgjhkiqviodtjizxtzeapkvnxpxqcsjtlpopvxxrkdsdofvqsymjscepewnxfrqatexfwkzgjkmoqhbiixmydqnigpoxckbckffvhwgjyiujcbhjyihdrorazljiixaawgsuyauajwiziwstlyzaxfxkqzmholvyipbfjlecknjleghckvdkougziicvixttcflghztsotcvevhobjygssfuhmuhqaeujoffytdbxzwrtzkjkwqswkkbnfazhybztqnrgkihkoadmuqkvfbxcomarydfqcwchdnnppoqvmzilsvlnhcrtqxbcmxvxjlvhhjlrpyrzavaifrkwpvqbakzgxoubmrxbllmvcapvtzpgqhvmktmumerlwgedeujkzwrgfhbapwbyvmwqayjpgcqwksorcsojcvxxpghymfxqhzypzpkocpsqrupxkmfbzduuufglelqacasazngryhkyyubimzckoipwzdswadtdmvsxmdvdwjfocfdtahpbgsdddhtyhyakzsdiefcrzdglcixsmvsvpefdhanxhgdobcgcqyproyentiftjsracyahsakdtothgwjrdzlvahfjgeokobukxnbufndrmnrowdujfkvrkgvjdvoxbxehscmsacyplvcltdxafknogzelnlviybwvkdrcueytvisyrjrmrbtgwnnxeyordbhdczyifxbsyyikauelvlicdbimswmqfsfgjiensyngdhtyffejahiyxburnhnirghxqinxhzrresehdwghwpyashxnnkqwaztcepzguxpwpnfgfxqfxlowwncazdpyqtfpqcbhebryteixztttliemnsilhrbebyjaesxfoxdawjtifzdunuidpvgutrwcvsqqpvijtmxdpdttpzzicrtrtrbwkpmtyewftewvcejxejfomejugekszgylgihzahmmihcqilgfzqfivovgxzzsxfcixhxpqgatimagzqqatsxqtvvrwzcleoeaduxzmibafeggtkrtupywxbtajpylxjepdehwurcbsggjfyvvmvgggjfzyckbdhbpijsvilrsxazyzqbytsoxttrubzwbjvvovajiajoskddpldprcpihhlmcpmjvhdigocwlzvzfqgtledgeczfvkkrfmxrkzjkiioqjcowqotwjockgqgolrqhghmzvejpcotylswdsfarwdmkuxunfezxzlqckyxlftqvywyzpnwtkqiebthkcsvfowmwpvrrdkxwpsdjdowuksvohjnwurorapkjgktvafruzmwhfnfvojgndeqadcjkvxcbaxzybtwkyjsesvwfgniehhtjhjpadbbfkiazomeacgzgeccnjngjxbiokzetmbyyntylwczqdiagwxzkxljqrfoitksvmpkhombnqnvfjzksaertzzkzgpaxzeglkmfqgfvrjmsnflczvnktwzhvxlrjfqkkddszcexbhsaasweqzwoocqumjrgesfeeeeiefagcnxwgvsbrkfbuaatbhtgvbdzebcwoeezpjlxmkfutmyocbgeadafihluxidqdhsvdijcwruslerwixoodkqtmbtessgpmkvnppzfzgrotkywluggdvrecsniknwmmzvfjtvznndgoxmmzvgdeysaepynfshlqbgzegtbzeaontskqimngirbrlfdbbiimwkheqgywvkaznawmgnygkmhhvbfmxjixdrkangdvgtscvnipawitgbjfjfusnkeursvbnbstjxptpgtcdinugpbkycoexpxcxbygggxjunsjcycnjjbsvdqwebwtmxhwytuzpgkhoefpvhoeigwpyxlerltfcnesihgxuipikkcaimiugzjrlumygjugqdcyptoldghgvzehdhygzcaugncedeajvwcwfxvsrbaadijphjjwhxngwureooijsdsfxwlmgviyzmudarjoceqjvabkflfytcddnaartdlhuljlhgxssvzytpicrowczkvbpzyrfzyaymsdckgbvcjuplykhhqqnconmokunrdfdkjlwrazvizzucctuzwednukmrelocdiijirtpnoyyabeltfjfpbnevtptorlkdjjdksjzewjfsogfqwwiigcctidjvtjzabsnacsqhhejyraynssqospsjgrxlkvefrhzfskyngxqiwrykbbwthztolpnyzjsxbjkpfstywlgdoollxschnduodytvmxvabfknqqjtecwaaxqkyynmmypwwwcmphakjtxwtgbtsgipbewytncqidlyovwewxqgyussixhqnzjmajgaajmoaxqraqrjcvuvsajcjaiacjvgnujpiuspyzpgwqfvzugaprsbmiwbzeguwlpumssduokxwsiisnfbpuybivjmxsoeitbrhqqewouxvhubqlbxybfceicrmszpufttygjdjycyyeblpqkgosvfsgciwykrqieiyxmqmzylklxcllhfvvkjjqehsnukspgopuytztyeguaonvjsxdxzriecuwlmilfzkkonzsuhszxaxvtenvclcwvubexomzhhfwrjdncdzwuuewsldinniubwlpnvcmcpxxvokjvkogbbmhcwrehyivuuttqludwpxgrfesnxdkwtkzvcawfpqisxbdvhvaofeskybdiduutnilrntukkbshmzgkkbloazunfpnkeportkgwbcxejubgdabgauxjanmmdadcvjvrbrhnjybppaurzvnikflqzzvidncggmawiiexscexpuxlitmhzqpxbizlbblvzfldkeunepoyzkmmicwcrrendbpzmbxjahmzficcwswjjthutkzwhjmriffuuepezglodpdpjinvrkeddsqqvriresdhzistjmrbbcuswsqntqqhjhbcbwezzkyqpaahvucjixaicrqbrbxltvsdrhjkxaldnwmekqmotbmahrssanaecmzvvxigcumbkddqjgfffpefrowoofaghpfcupoplulokrrdiytsmobszkwzgjsaijnniggeatvpcdruapgikhimqzhkofgghazpyjadvcjmjpwaserbmrucochqgbncdlbrbpbzcpyfcvjwqmeulnnksldvbiawvmkkcmnfghexexiqfgnpqopdkblhklijjexqmcnbujjetxwvuirppylcgkugigranihggikihrdrjshbhortuhmzpmmwcwaufufgnegqydvgxlhfslqnhfbaiotlyakyuqapplgizyfxshkkhvuyojhtrvpirtueljcketiwwoydqwutropameeljliivaltfprhanpplqizogkukvgafbllcyswmkgsxuifzbaeckxttcgcgjhmfdhgccrsoiluoxyskzshvklrioiquhouykjaxmrxnoubozbeqhitqavizfxhhyrkuatwzckgqsunflermpogvqqyoiwlgajllkibntjnhdivhkfvtfusuqobrxalhrpetmrpvkwyzzpxogqdkyrsnhubkzwponplfqwwxeqwojijtwcxsbdtwduaqobiuxkunkqobjnavndwfnxpxpehvuvbjbtfmkrpcnfbibvlnezhnvinampeyrgpldlvqminevcjsehijeknlhwctflabsksuhdjhzvjkifzhxkamapnnfqkybczbgljrgjjdltgomtiipantuygfkegclsqcqumqirlixcpnrsdwxwmdzqbvtllscutfovnojlyuymrtxrtrnhbceoescbuvkxnjvjswpjgtyazaqidmcjudrrcmivibsxktlikynvdsxjdfmafdhdjjadwenkzfuelfuxfrhnfpdrmlbswmnygqomscshvuosuutyikumstsucgfggholyvawqqyuftbyivgegazguxfaqccdfjyjbelvakhvoflmvwtmpergkoytkxdwjqyqqrnjdoqpfiinblicssyadvyeakvwwbvkxtftybqxdellwanecoztackvmmpmlsybxfvcqohqbmbqdkvyjeddsztnkifzwwjzqdfgprokdstvjeonszuszeckipcsxkmuwkrjjxhnwmiqpirvgaynhkywiwiynbyjbffagsecadgxnetnawfzfgmwjenkfvmkyfefznqwpgxrsyaodswomhisbvodyhozebpkohdzgfvcsgwjpajoapzbskappltuzqzmyptvkqdivvpniorqxmwqfhidvbnavtevwibbmhogslxvromehlhymqhbxqstoqkijqsdvjmxofoddyxrxznnxeiofwbntrwiegruxalnwgckewjmimjyjnearzcybdvpxufeeyhveekehjzfaviiobdsvvnnqavcdyutpafrdxzjswunuutcprndxgwzvwrhenzbjljyenncwsfzuvkkakrlkjhpocxnxfccxcwdmyoqtzbbmpopokrxvfaogrgyqntsmvygkclpxxohwbdfjaxdcmltluyyoznlxjqujzkrkashafxzutssvhqappykpmkvslolbhdrpzudxmddmikduxuoehflmjaervfhxeetgrvzxjolzwyhsppwabzedmoygxjrbenliktlufyifuxfklocdmosmwjnkwoirnveocbsuywpovdlgxlarvixpoktikyqjyrapbyfkbcsmqdvgpocpdkzhsdnrmrhboutitwdbhokhnaeupnegjyueszbwrimcpcvlrwpkghxmzfuckhncqonfytxsnbyptmpdtuapammxybvcsojnrvgvgnzwzblxgztkgoloiregqiaoktvtrxwmsojtztagehjznedzkpxvubzvrmkpeamwljdhnxgqnaxscjokxkwfslxqufcugharqlaghgtlxaoeafphhckoihtkgjqnjjrwfruuztaywyecmgacorkdlhoslaskjygbiwzpmmsozhsadvnnbimcychihxxbpnyfpwjkjfbexxjakaicykxuiibaklwbanzonpxvdirnsfkefwbwsaxixgufbdssiigoeimtnesijinfhawvogmkgtkssmmcjxcchphhwjqjwzgnqcizmrtdyixzhezyfhncybrsskseqzhqzaujdmqpmsufzbzsmfpauwegqjzkqjcdijqscwbgjlmkaltejcqdfuuolnpluknckpkjehvenxpjumuqqnvfepsobzuonoumpmwzgpjbphkhmdtxqopxmrnmsuoiajwwetcpcszvqgqgtirredipcqpwbnhstsagnhcryjlqwwygtjpjelbqdskyqittbixrsdanmlzxhjzashcyoqqrvkrymfhqzhynxnljkqwtjgitdgcspaqywhrqlfpnwzhlnterjgzmtinzigjnrztcljyrmbnjouvbemncxumwkuriqxgfpourzejdmsbsmfucnjtdynadlvsaqhydgfjtpzrpedeergltkcycjmdhqswwmchyogcszxfhcytjxwxnzaeujcduvgmqujljqmdkxkrqnpumhwamvtnpyussyexplehmzifcinmdnozfyiniimsnyghfayteeewenlgpfkbkzzxubjjicozkqxieamdgpxxlvwzrwoyxadsbqhirwudfmphzlengiihqfpgthygepuemmrnqlzcuvwcjfwneciiarnhcccdhcrivvzslztbqqjfqdmfxcjrhfpbvsjwadjkjfhpguiccurmfqzxznjxbpbxmpyqmewvsoumhtelakpfqigsmksezhlpesjchjbtzznbzqeeiaqygrelwigezouzhvblxsnfsivdlcstdzuwnknbvwzlsmzpogmrzegzfspligmzeradmxzztzmwahfjmdzjiynjvgsivwspylnaxxnqgdoqooezgvapihagfzoqmqsykkftsqvubpdqffovwnlajbrbwotbeojblduisghingmybfeyejlckfjwiarmraomvconbsctlbznxtclezelcdcluceaxvbqbytqfsmilwoaylumzcjfsdwkqhwcrruejmbcbtdzspjjggwcwlslyzkywmnwhxcxqyykzhanvfivqfxngbakxnazrxullcgabgkdxgsdwlifspunbqiuesaxluzummqxtvtvbbbsklljabasjxvotmcdovqrzajopvkenpnngziguypimsibhgmlfspgcagjhpeialbmecllzeopbqudmwyjyzdxepazeqxjlxoxinkaolhrjnldrtvwwumgongivmldihxqzesvgikzzzipjuggsreiuqnipiyswbyntzscssrvmvcygehujvmdsbbpkcvxhhomxkoklwizzaolhspkcftynwjwnrmjpiqhzlkupbfcgpdixnczmvtyhkkfmyekgnthkzssdisunmwhlvenbyrjtqhiuvrcxpwfhcescsupaukyjftesdjuqcomqhvdvzuoghezgidwucwqvoqbzgedxuftcmoqndnzoinqlmzcnlzyszbxhtpunmuqziaofkujxaoixdqkfddjudrbprmfxtfstvhkccluhixbictolokotswqxfjzkrlccpimjxhrgxvsnznbmmnbqltyictbxlbpisvixrverjatefctaofdfddlibpathuptilcdhkoykqelzsftyqjwadugiymexkgjijvzlnmeryolqnlpontkymqrxlpzqjonhfiohtqayrzhkerjdkwbrificksekzngesrrbwxgendtawobkzwlrynmunvtakwyzjztcodhoooiktljmrlwuzkoptvdsrnyfngluaxukkohbzidynswggimzkajhvvamnaevftwroorhxqucrinpyuywrplamcqjeeenekkdwpiukceybafsuuufctttwbhqxezcnqzsddskztxpzhnhvnjlyskbuareagrigwtpjhfmzvnkruvitjozrowmwksbujyacroakvnzezdxdrrvukywhbecbxytjlmtpsscvkarifiypzggsrewfonvhiakozazkmmhaspoditljwkfqqtgvyzonskzpvejayorqkybgstgbametwbdetebhwthowfjlukjvzsvqayjjbjabqoimdkfudsgbymmrgfbvwqxidwlzenfvclrgxtbthmangnieqkizruvgflfznrzewoxxfqhykmxabtruibwdfjicbydezklyucafzreaffamiuhnewougppsiqekmrarlqgbtotyimzmexawviudaihzgkikkaykyutrgkkiaaywzitlkxlmfuxooluyuqxpwdiqcqevmeumkkxyaevpnlbzomhdrzjucizgmvjentwukjtbdvvopfnlieqaxvfaxspfnzqwwhxvuzfhdcoglngbqkzrengxbbgpztjpiuxuwqotnloozrxnvakgttheybnuspapkvmcfmilarlzjxmvqlwhcsttopqpfqnkgmxhqewufmewshqobtpjwdtwnoysfekffifsbpghzlpsgpuwlnbcpxrewrkcylzcfwjvnhzyewjndfjucxeyyignxwrwnszhllggugvnosxccamizminrfgqzhdnjyredmjdzylnxybxnmeocgirdgdwcshscoybjbgrghhxqoqodqjvqopmkclilwjmxactsyxnubmvrpavwobgdljamsunzaltflbwkkklrtsobtaoyvsilaavgabcszcxslotzvcatssrbcvbrkhnxvitcwsbohyzqmmxoykzrmffbwjwxsmazdxihyjwpaworaxzuipnwcwgnmmtushvgtwwbzxuzvbxxzrdqnrkgultbbagretacugxanzjyunglrnmsyfnaimergdqueylasjpwuuxvrglvyukdhssgffwytagantematjsunvbrohpwkuzdzxkhqtdqfavtnygvkojjxjklbdbpexlxwgrfuiexsoahlzxckmyjtpkvafzwewmftjertahlziuaiynmhmyahcmjxbtalwvthqrqhhcqkwbpenwycwbuxpmhdmzjpidnderzkqehrqxdjoefhhsoauvmiqrruiwhoxgwronlpjgqnsftdcwwiultohfkhwqfnofpjxjsirbjpraktjybjnzcuiuvqlydhpbfdsjbpugorjwehvicrqwkpvooczfbtkcnzrnjwnqgguvjayhljmamohrudhubalfpgurgcpotunnaonuqcjhykupqrnccwgnrqlpvniuncirjkoyamwvcihakkievdqyrvzucmqrvuotgmgpyoepplppbangxypnuqajrpaipdksteagacfvsmqgliiwaajmvahmwjfdsmiydekusmjtbziipkjtudiqqacniqcxaqnvphhxqmtgsfrcvsgzmnifzqvqexncikocwppaowidluwljlofhdcadrcjklipzsjxbueutnigydqxsvjuddjssrkgvhimvnwihnbrhmccxfofloqaccvixauwhrnscgprhtegpwwkoftksizeveqpbemswducwsfffiqsgsceytyzwiclphgprwupcohpxwtasrakqcahthyuhjflzrbmrejujkacojiyusyyxzpbefsyonuhrzmxbnuxizsvbiiiyczjbdewluwcvvusdktcttqouotwonixmrtetfvxgtdbqehbeaeeyjagiijvwubcwbtfgivpsvbqreyirnopxyecwujkmsvcsrgmxtwjoowztvolgzkfaphwiusoobseskjrlydqqeycroukcocrofwpxdnhldlpyhazfrmdrialcmptzulukgwdukfrosnjakjcarfoppnponztvutmkpagfvqnxvarlsrgefjxgoazlxsvaruocpbuyqlnysvlmuyfcwbsbxbdlbpplickpevkphfqldppryizftrstnkybxtlykonwdseialhtvuipoeikukqxtskwpbgslfhuzgjbalvltwwyuxshvpyrlqgcrdxlldqmqdczmuoznmvgvrltxmwygvxnloskpuvrrgoxoyizlwfefieqrtyspgrnkcvilsufwvjdilagsvytqktsfodmkkqfjkjupgdlgaoxdxfrcgieilpaaopanfpcsvfehiuwdbhxkexvfxdvriduvzczoxbutzmxxwirvgtxdivlkzeyrsuufjptdguszgwcjbkwlaeehxtddgnnxbvadnprxlzzvumzqgtulmhphkccenuwdkgbfizuqahfbfnjwqslnxwvbjgjxadbastycfvngzxuhoiolertqrpfzlwdpkoxcgujqkaerarpiolkcqkfqdlulyqddmwvdhevnbnxhieqifgrzesenzxakakvxdgmmoxgtgnvbfhvufhruawxmtkysfjiwebrwbirbrhidynsjzymayczjtvqdfcqpygcezfgzfxjfiunndtulksgkyticupzsekchrbwlfgojyioyjnxuaorjdcpqbqfsqbugswfuiyauhtpmrnoxrpoedoqvmoygqmcmslloyzyqurwnhttdhtfhrsthakoroshtjinvpxlxsglfgwljoefgctcvimrwzzodjjmpiiarwbabmhdanvmmabytpgvawpudirgyzfnxenphtwzfyyhbasdboiipomtxzhjibwzdpcrqedebumdynirugntrsrfksmaprnvrzdnoosbvwusjascyzsnayoezwmlycuerhtbdftamrajdmcreyltiyyocurrrdgevpfgitdxziedhsxlitnlzyrhknuqwgvoqqmbohpleaoyhxfwktldvhyshkrmtlgaoiemfddrwbhnddfjkoqmhrtjuzxodoxpltsfxfdytzzduthmezytrfsvqqxfwxucpkdjdippoqszvfeqoddzwghdalmtnswqsubmtlujwzhlyoocesgwhjojfedaxbolulhtdlcwhthaxhmvkvoaxwtmnpkvhpocgzksqfeajvtmeoqpnnwpdzbtgogprejqjmdhvyrsaktxzfeojfuwcvyiqivsrecrlexcckqkatbtelurbegulwqnfxbdcylpdleogvrikhozknjhwvsnugltijecuyhlwmfqlyhilafvfdovudzozyoxnfwuxzcejfpzpkxmcsxjvnxgxdktpcruvznybfevtwvdujaetzrpykgfeyivoqroxynniyjnahzwkyfkueuvapskhauirezavdhltwxfjpgabdqzdxarajksqvaiyyzuopmilsxxejyvgkxgnwfoebfycyyfpvsxhtvnyreaswqxoscmcbcuncvqbospsndfyupclaindqitghjwoqvjqvjynpmtyvmxjiahcwwjfxuzfwsrhewldwfmdykoqocnpqoaohdnmqpgwuaqqoykreoudafyixoxsjggxpdogsnqvedpqinnwrmzwypkiokcexxzxgzzirpazxwkleyylqzuwzyvbamgludibhbileanwjarvcygjvzibiqrfbdhabvjomsapkihxahhnxkgvwllwngwdinibwnqcjlppotfvaghancrjnpruvqeeqsjgenewwvpgngbbyiinudttndjynvfxodnlducrugirbpdwmwqbdgxzmnquabyjzvlalzywxdzgceelcmpgpdycagtkjibjkamhgdpzlqshukcwwiwkziecreeclpzptgqsmbadoucxlorhtcjxqgjzvdthlhoohwqwmykpjtucaozngntaawbkljfxyfcyorosjxkweilppsrxqkkhtxlqjljkznxbvnhxufxjghbcheuwqqouxxvpupfzqavolnbzlchhvlutsvcgdxbdvrzqbonrprverkxwzeofuroowcsyqconzrsmtifrdnptmaghgtdvvxesqrcmbypupkittnfikdtunnmybzzelvvjrqvgoaqgzgnhtcctcagbmpkywncxuxxzvpqrszlmtvfdalihlgytypumvsmwaqlcjqadfsspblmwovdzjdccnkrmsfcabsskygstbfhoxtygxzweakvtkkcgifdtlgimsheaahlsoemhczbjeqzbnzotgsvvhvgpjjnhdfjfdizvylpaftedmuzzeineiqvqyccksarguharvozjecmimsrgzcnyjqhydalccldhlopiqgnwfnqqgyefypreqosotbxqflqzyshvqjbtktryuibpowufedwzrxycgsmszomqgmjylsgvfsyguqtffxfxrvkpciwuhdsptwkuaxjohezrjetijgfypddfznqgakvdcfxvkzzczawhesjgupgpzffuaonnnvadywigygctapglxworekjbhpcbbzwnfivguudbqkkwyebuttxskkldjnduoxvvbuustoowcglxvejojsreijekrssdsmcsshvcbtvtejyevwwrooptbsayryvhzlfhlfuwyzumutvdhmvbetjunekgifotinozpdnkcbsinmsmskhuyhtdnvmtjfqojohiuwqfhfwqmxbbxowtjbyqgmquzeyemghstodhkiagbtrlkuqtzkwmuhnqxjwmpplfmfapsfqiofqxkppqomiaevmfndfroeetrutoxmomnrlgtjsgpzskbnukvyqeguvuezuegqdbegtdrmndhkqtmznhkeodwsajeepqmmgrrxbliqfvpmvclwiqasfuldhbetamycjidsopuwzprhtszmpwshrqxzwcvebbnajuuwqhlzvkiqwyodlquwblkfddltvwgwxhieueoncawwqbzwwuejloisymfbehpljzdrzlwjrhwxhvxocomyaqeicachkdpuuqdwgczpudoafombawgoptwrrzhzhqtvvpfhgtgzrbewvxfqkxbsrqvdealsplhsscfxesgesvapthsgygmxprirxojbhmxelzbvkbbxsjgwlmdvxtyxxzivprdopldpozfqljflnxgoowrxjugfimavlnaikpvfyihltnbzpncacfqosuytjxmtmipszibkclztxobsvgxjywaogbwirtnbgbmrasvnsirmajlhvgsjupedumtdlqmkviwivvzscjpxtklejrhbntrevfbifhntcrpcqurjtbyfhwitnbjtyqngbnkhzrzzwbjxdwxnstvpbdsmkmhmqbgmzenncvoukeljfjgdvmcptxqorimjoxabrgsnrjhnzwiqttuayeufpxbvmybpsgacxbijrugcsuarifvwxumazmdtjtnxvkwedtrysedklkjiukmiikymygxrfasjnvlhdgzmxvhrllrmtlfbrvtqxpchazepucwajoqcldnpbewobvlwjojyfazdwumopcodgkraicmukbbdjkwxepewvxufonqjylkszmalettenkmzkmzabnytjkgafqrqpdscssnpprlyngibehuclkpkfeaejmmlunjaxteuheaiyfvbgepcubtmkchrjprxgljbrlqxoebnfyiyfjapwarvfomwjzdkkvzsdcdzlzuqlozhfrfeyqkjfzkegbziqpthpheebvmmipadvxmvyqjnclyteiiuzxqrixespiarmrgqgbepiamayymihgukelteqjivpyjhennzqguemyxktotsrcaihrimwciyimibgtvtfdcylgjcwsdeaupbgqswnqvbrtvopdvianhwirsigdwmqwpaoviqxqiciuujnommiteckwjizbvauguqzxetqyvezqyaclpcvdiwvmwatamcezlurzhurjqxjxyfnjwusxrbcswpaxkxdecnyeworukdwunjmqrmzwkfqquxyvseesiqyjjrcnrqhivrzctviamlumnlynehvlpouiiurwxmeugroqvoludegadsmnooedehfdbqsicaeqgccelemltilkupbdocpwlifgbxemieblvzpdkvumtadjrngzbbhrytlkdotkfhovhqsmrhbczngjpecipvqmqndpbztafuqefnnmkkjaarktxgdfjtzblvtcwhpcpeulsblqaholeifuaibofdncwwylyldskmrodtkunallemcyughintfwxtzsqhpaqhzwyncjaxvoqdidjvasxkkvcbsahnfzcvatbcsvouktrqqkolunjwjhodcclclqfifjresifszhdgagtsoekyldiityhidaypvbyzlcfpoehynybhyxhkupvgsdtuuogsrvpiwpeckejzhcwdesxnweafgikuozhexhqqhrcicfttwqtknxaospfzpsbmhcprvjvpeugavolvzwyxmrjizgnawfmwufqxoeqkvdeybwbgbfepeycbbtqtjywzqzaqoffmqtiurprsozsvypmcajfazlkktroecdkioxtzvwwtogqarrufjrwhqqxnehykfsgwhhaiygbrczmwwxaihljngjcnljjlkvmtuhcrshoeamaoxkjtbbmwqegtaekjdfpnwejxwjknzwaiyzsuhkqbfgfhzeytejnshvbaqddfjkpeeqluxbeqkwjltlyawihuwufwxqbmoenamfdcddvrygkcrstvamljewjxdpzfmtircqwavhaptgdqmkrsdrwmjqkzwxdhhxbjaprihfpjsfhtyrirppxrfkjaadpalredmbxozjqpsjzyykzbcsunnqzcppkkvxfmsgtospmctoswvtebynvbnbuhmkhgioldljbmbccmdspurcnaucogoqpnxqegfebmbzadjieyylxuqasslpomgnpwwouejekfbgkfsajcxqacmwdioigvznsrbwhzclsaalrrsmkovimkpqfrxxlakzhszphmwvmplujrnppksztmyjqqkjaidvzruflwlwxgwuqepesgygzpprcpehkweqinxkvoejuznltotyrwxwatjldfmnkywrthgtliecogcmnbnypstubgzuduraybxaiyeovcgdfhxhyxbzudcljzrxmybseanyuuybewzrjobfatyjokeniisaitnnrzdqyroatfvjiblsziouvuinbdmigcoibhxbigqpsbgiyxekkqzomvxzapmmuhvmimzlictflisttcasjmcjttsadlrncdtpqetbcpselcbsmxygkbobnsdbdnmyvjgqzquidbimefxeakjazangcwzotlbjyjxklmbyhtjdacitvivlbxbocgtninpyhqyviumawmikpcgglqqscgkhefvrvrvbdthhywymxlsywixwicddtuiforjgzanwxolqamenbqibobiiyfgfrxaqskihjeaxzblcqzypwsoixromtbmxkadbxifxlecqprpmogddfihqolljvdldgpnobpfggmenuttjheheeglrspdmleoyhxyycczlvabnveqskvevapxbcbazsjwlnfjvpealuzwdxabcthmuuklyzrfooxxkalvvelzmajwzplsmpjqaradkwgcstmkfoxpxxbvcuhhariunzphsgljepgwhadvwxfswuutlyubvzvqliozgjksqxdkqgjdcsijrwhaxhlkivpcolvqnswldznswhmabwrllfjhkenkexvnyzazrlnbyqobdjigcsxeuhpzjcjjjkxjesuemsggpimpsqzkxbowuwjgieoynbkzxiugovrvpfsixejeyomrrfuvhvndkwaazdcokdjlnsuaffbndwykuhewmfglhqqpzpzbbuvwbomcbvgkrmbgwnkodyluyndkbwkikggopjgntfuxcwinrilnqkcaqdfnuwqlpdyuoiedshrvoocpkcjuegilsorflmxbhkftlreeztoqxmogijvnrgazmygouiafoenjcdumrofkldwcswkhigjlzdauhhjraomipzhtlndhbpszgciilzlavkqxeuwpesndmqraizghghxyzvsjdijetpigovgxsrvtgvtmytcbuyogaqhvoikfnawqjrmzucfgtljmyhxcrtqkqazjmhrdghffquihtupwumqfpwxgqjosjwvpsvwylbpeyhkgzggssolpwjxkbmaixijpkvxgglmemlkpdyhixcvzggsvxpnouotdpmknwgqnxfojlwjasgctxiwxewrkmdqgkcpmiuiajeshrdasvzesbkvojjebrapixlwckuxqfcmgxsnjypztbwtzvdsovxyclqqbsdqmvniqhpanvdbslvpyicfqoexwecdaleuuckdyqxfygravhmrhldbgyofjriutmhrkztwxgevigksnvyzdbadbfwczpeppwgcswxlyvgyuhstoewijxgkryutcmqsmtvsxvgpeyyqepbhsovskweywjralkqqqixmdolbosqqknzmolhyxsfbwqekpeejbdedxlfxzaqqwyfvctlskptgnjjnkfrmswzzqnlxsywbzkrujpiolmlgdhapiugcuzoutkhdyfyaunqzyuipmvwuvxbnmcgdzerlzdgobrofuenwueblvcjyuwhbehyrschghhdtasniemsbmdcsmhuywsbajxhivwucghlttfmnlxwuqmaojybrtyrlpvxzijctjfftkruhbchobsnwouquunxkrxqmaxuorpqnabusqxgvnadhstpxsqfxtqqvdzqyfwjfaxtajnnkikvgnglthamuwcorpvylwojasgxlhhzukpiqivqcrjfuadaceurnrapqiukejnqirnpptgwltnzmoubxlhkvmqswhcflcqjezoqfpoxcviuknyfjhxjffnqvyjryqzwtiqsqbrzbjjzrxurdpqawxcezbkmokhxzzrsmkjqogjmwkozlyjrxsrdvsptdqnclatxnfudbexdapnkmbossyyrelzrvudezjoiiokmtbvbhzsolxjxmtanvpgvqhsxcogtzsmdxqrzuobogkrctacgoifjzwuvixhtkvxgvwhrynfwnszajrqotewvjigxgfadpapntqhtaljszlzdwqxtwbwsdsetpckrrncijesjeuiqlvyqidkjkxycvjvogfnaasguwtppmoiweflxmhzxkadkjqlupsrbfrpnxpdpszvcfkafrqlbqdvuwjymyqxpuubcvwdwzzbcsjbgvkfmlghnfbfpgmlatxofzwxrifcybhswchrgvbvneaxzsjnfyercimidijmuzwpavtbtshtvrarfmggmzfkbecjeumxjghaaoilbjwpzrorlybzsqdrkrydtydvurzkujwazszomnkojsirveibgpojrjdcegegvqvnzsbeibiqrzrlxvcqfvweffajpvnexqvpbnstzvuzdvvehcldjxfbgrrmjrexznlzsvdnlgxavqhzlzihvtoxzcjjvmlswpsxknhvtqktgkwtnjaztkyokmeocvsiptzntcsnlwbewlujcaeptpviaxdojwyppinfftsjbgvtndoheuhbzbqoekpkifvlpxisepawzbgiownbxlyhshxyokriqhkvswlsentcakxnunubjhxjvarcbaazxlwisinclqovtbqmfyxmkiqpiguwdacirydusclronfodciflafatfdopvowwhcvpgeovgoqaoeawhalldxwclvgciqihqnxjphbhfldurydtyyubowblsunlgtogyivaknrxgqaaozhccajxzdhwooybhpvtblqypkxcbwyrshnfoubfyerdrmeqmcxcmgvickofdlahufxtioilaiuxvvmsbtvlhzdfecbujpxckyqzljpmcpemidqmvqtofupehincprazqeuynddltctzltoftybgdamklmbxftkdpilwdwvalvvfbaapsojutjzfbjoimavogqshzuiywojapdtpazxkkzkerppljknpyqxxdfytuaganyminnwjmqjkivwibnjylmgbagtcvambdvhwolsfyyfusthnjjmbywmndbprzoygeutankxrzemmvealvoyfcgmoncbwodgrphfllktkpcjstdowlmnmfzxneefixhatqcrouxqwrokpqjtmjhfycmihwqcgxtfktlamrvlvawaezwjgvblcbzahavgvxntpehcenetmqlubwnzrmuqfhpoptfvwvqnstxvzwtgkyypcvvrqhnrjdxxsdfdzcsibdblcmjazohmkwcxxzlkglobrydukoeyravvfftfsvkyykixhyjbstnmhifpbrulblqfmnznxpmibkjqexwzsjrfyvgkkpeohzwnsbwoexcpuvhmjruvdayupqegqifzutymuyavhtlvsaavcknoramyktwbhlelbvqwywkugzlokruynuxqogodjxljpmjeuzoiayivsovgvnvfglaotlxtwpvapaccedeifflqyulxsgtofienzutyepnhbxgqzlseknwxbsuaxrgmqdevxnvufunmxzqxhupunocgflmwyakjopoiyvjabfahhifwlobyotbhjfkcvoeavgbbbhamshqowtsokjkjplogpzbrttquuykanvwzkcpqwmldpumiwnkgvdepzzsmqnhvtomcvdgktzvgmrvotaehwcykpmxcymyoycyqepspguhhrcfsgsezjsnzfrvcgiavhwpnizshdjrjjayjnposalfpxvslxaleofwuhnxztbbdqxtpfytlxvojkyftbpmncxcmfiqqtasefnoaecmpvlnapbxyckaelswyevtuyzecvndsmpgzyyqlagiqhfvciggurqkwstccutqectmpawdoipwmsvfxsfkdamvddjhoedmdzvvajhdeegwgvntosniqjciduouacegcbpguuoffmhgmmcyheifivyzyktdloiyenfymerkmswjybmxdpetovpaftrbygyrbrhtaepjnovwfsktthupyxevrgbfoaqwknolxrsqiiikyfqnqrxzovnexsfchxbvwslfsavocspfpkymxlfpzqupijpzbikeyrnuuxfmfnielcereofesexwekdvcpladigzueinrdbtbbyzbijkhfuftiyfktweyqvdyncuhxqvakypmdzylhxqvxmlmbiulqqisxpkowkhuwyotyqmgytpkysbofrauidbaurvhjnhskcqidkzztwnklzdhdgxczbljloulzvmmpgwbjmfybeuoybykvtkjfngloscqcduzxnygqsqryktssjxanpeemgmmzxmvpcgtnomzebdqthixapzbgjfbtzccurjdtakfilngiudkppcfpcqcifzumddpabspojxyejqoktwsvfvwxypghseoqmygwbhtjqqgwgnysfjpccpbgvvjfagkymsoyjdxwzfbdtfhmdvdakerbpuckhrbjgeequhslouqleliamzsesvzqnjdkqizzzdeqbrkeocijayiwvnvprqiwijjmffghuudlwdzwgyoasamiehrzqgdlvzibanimdwugvbslrregbvuptisbuuspwdgmrnwcmhymgcnolhsloyosklhvjwejbtguxmnmtynhvzirdpqqujlqhptfsvssohizlivlopwtzwgfljljeolhjvhnilulvpciqhkljtqcuvjghwhorfiyifxiynhohwxyjcpmxmyegjpdetptwmucwzfcheyuzdjnkqwfljrsxzizsitbpelypbjdmvzfsdmpxjnqttzzkityybqfvxocmxglyozveepuvbzntvetfasjsgfxioqjvrvusnyudviubyqahnjezzhovueckxdnmcyatgfamncnkstoltwlxmnehnsdvmefylroeeexpmzoskktkaqxhfrjrqhxvfxhfjfhfegoawkanulhiowyphhwqmrxkxszsunqcupjyeuqcolwxhmludtnwxwodxzvhgemznggzvqkmgdkojzjjfaqqwskxjlskxnowzsyfbvxklmbjmrbjqsiegxlornwxmirbwjzgpmjkhqfroghnusolqryghbyqwzagfsdxetpixjclaqqhzylaheqxvvsqpfrcbzpaxjfgosoeauarnuatholpnhndzkpdaozfudwrkrusonxogroxqznewkqsyiyueyvhaudlvhwcuaafouwhxeihfymdwcrnlnjaspikyazzlyrwmhzjfqcmuuwnvaitpiziungxadkhcmzzeboezcfwugyrwyfnyxjcdfrgaemeiojeubvvtoglsgzhucplyerqnuuksqlcopoqrlhvcbhpilfamnpbqrmzbatvzjabtmvmhtbkzwhcfxcoaypepgdhnwumkonznuduzuzihigfbhsoqotaaddeggbsgcufcbiavvfzmlqykxjtlrqhrlopnasykyrehjesvezzuxustvvjxxumulkjarczmkoicfyadigehieofldeislegsjumhugfkhwakllwtyvoiklyddskbullgfdsvidcyxejdxmkraoxfisckynoomuawenelwfffslhkzqpxnrlurjyxaqygdwlwgnikbfmtjaeedrevfxcgnhvxqntekzkgbcsvxklrharurrdaljotnlaajjdqxkzphkbpqzagtqkmyuiiiclxmerxcycsnibsnaplrpkcvzmkymccsridxcdnrzvsvdcagyheopxdjehyrsiffvrloqecuzxknrmwlegeptrcvfvtwgpucxmzcuilrbpgsflxncrirepnqgypcoskicjokqdzzbkykvynsacnvubgdanpglcdslzievxuwwrhleykrjivjuystafvswkhunlnykrfsllsjlgoawipoibfgiafqpbyjmcggymchxkrashrnvtridguovqkpjukxmpqqozixnqvgyhweskedclmrphodhgkyzjckkkrcwjsjvxtdwpowwsyoxxoaysuunocycuoicpyvbwxueaqkagtetojkunizyvtkexfnbmsoqembjgnmbcezdgbdqbkzezvilpswnrmrcefnjqvllzbdslequhhlncqucpmwatvesgiyffvaywcwtlmitomoxuaxphwjdvkolssusojqbwibhtiyknebmwwfdnkcwctrfkrotjusctduqidlekhilgyfkriklmvkjqrapfdxxawygugqaoueacfkqbatchpqjbsrjhhqwhariesetmmguolnjngxtwnjywahbrdegzehkforcaxukzvwbpzdixednqmjznqkwiepwqtkclnwmaqhjqnhvopwdttnvnsxnmpquntxpqvrefndfttttjbtcohlgpvvhllorisqevxkqacvskjouvanppzgojhlwnzsyghclkabqxfxzgowpnbpvuwjghhzlohgqnfrewskbqhpskgjfdffrclbinvzsochcfcnkekkftldmvmvlekonnsjeawsbywtudeqqqgvnuvhwezulmoaloomqmoblhajyprlzaqiehzjisziyegycxldrqmxwdthaaspiirllikdyiqdszgiqbigslvltpzugxqumtbbzvfthgsnhuhnkquahcclkgyukumeczmaqkjznhrhyygkhvdmfwsctdptcmpjdnbpmmoqpfomzffdjzusojxatbfsbihlqdknifqwqfjatjmiaspxzvbtecuekwfuywpjbyqlgsrjgpbplthidtdwdyvpwgqkvwkwlfqjnchehxonrcgajahcdamsjtcikyzmibzppfmpbivhvxxuaxnkxwoywwprmxkpcwxkmavcpfjdwzjbkvgijistgvwmkxkfozopxwtrlndsgxbmsxldypqykropsnpkhwuniwddznetpqlbtvfxkusungfxbjkhszgqlygcxerjzuvdfkpxmwrsjmxgovrlrnjsltdwavgxemsxkrxawvodigvakzbkxonqgnadvussugwzelnrunbjnjjyfmjcmsmiicbnvlmkptssjsfuefcdlwpydnhtsipeftuyqmcvoqyevafxeciqwezeianwqufwsllosggmbamkewczhohpzwrhyvffxexgdeoguhqfukototunveaprxtchbenwfrsampgmrlasylhkgjpdigdwgbtzvpfnhxovhmzrgfyknpdwflbxrgheoamiugvssgaogxyeedtxhejbhueghffftehfbvxyllorupzujxpewrfgcrdqxroptjmufsxcsvwnfvvaisvqzzafqiyghpxekydnergcjlkgvqtcxhkywfipwugiiteouddridgfqkufcbzxpbjfgfxrvcsyityktjdtubjsmtnfdgwfhvsdzlqkiosiwsngycgmqvpwlhidbxdcxtobiudsvrffginrxrgvklbqgiuknqswsveeekmsvcfsqxmiuebchekbujqkwzhcicqlplzhfxjqjfkciqmtrancufkdcymbsgufqdlaahbjwotaqzdjbmsbqolidknuvulyeghyuqdbcvovxcweorrsdgicenceqnuwohuenftgpilyhexfecttwbqqttzmzxkgogmlenhpollxiivzdyowvsxtwqbfmtzjykowxwxxkwsozkdzautrhkztlwuqgdljxbisageeipqjnllyealqunafkbxbnnfdxhlsuojlywbceskraecjkjvelfkbdeyrzwieyqhlxtslghoxxiipuwlryzfsthetjjjwyxczjfwaumyxyzbnmiyuwikjkhimkbgyhrfcknxxrpsrdqxqccwilgbnikfvpxhlusteclxeotenxapbhvkndarbewedrzshiplkypfhnvziszywkyzgcsfwtetaxxlevwufxtritaiclvhyrvcabnttmzfdsaokislvbbgqsqahmanhimjqftdemwrkrgcyjpvllvmkjpfvoigurgipnaiisokhhkrfviatmtebsijsbdomcitxhmjetqooyfkjpbufodiwawmwlxpvelcxesnmbgbxdpdvgdbkqgyvfdwnzcqqojwqdsqzfhamttaylilqbkxatygzulwlbazxyfsobemyvipqxsucnatsrbsypzuhmmheqdznfkfqjbdihbustnmjpuogymiuqzxhaxuxqzusuzsqltbrbealxqfmnnfeehvzyaompedsplmxoygeqgmirlixsmftucledznvifhtaniqzimcpuioujswsztpzpxafglwdtsdaiyqqkohhjkczxiduzimqrmccfozxywhicktkcumgmclayplblwbaxifxvqamcqgfkduxsyubwtutfaxmeirdohfgscfsfcmpqqmvtdkfoikoldoyrfvliwieeldyjqwolrisbecgycitvcmfcfjkzyndqudurffubipabtcxpyvqszmvknctfbkvzewztumtnjxdemojnuakryhrppnxuorqbbmdbghgtpecvgnklysaypuelouzgmfwbxisolprjousbsgkzvbpeymruneoystttpxbwiyuaezxearedguyvxlkrmwxqmeqpqpbmatlcpmjctpvnqajcujanqgpzrehwhrsxfqutixxoofchnzjmwcxdcthxvfvfmttebifufecsmzsvlvanuileyuujcnxjujnieoubybeusbgsjklfbzcspluqsopptlpyvzzddbyfricodvekdtywtzctphdjotdeymlngwznfscfyoiqicdelzgrkhoawncvpqpvgvumhbmibjuriqwrhydnhsufynsruivxxlweidyzjtihhzycuxkbzmeccxtsheqcltjcegkzmccikjcweksrsbglrhutwsqwecpclbxoxlvcbfehzahnlsvqiqbofgcjvpezyexheocgreakpsgstttucqsstoyugdsgjrdhxvvztyagpxhmczmbpfyjcookonibdygbmpscnyiqbxbgyqfeacstvtkrhzytduzojixawlaecuabpdoisataogpenjmyycbniutlknsdnkfuxyicmdbibjjlmrzqcxlknbwbkrxpgzqbmflxkbkgqcpxrvcimrnrmqdyxwqzqrmshwgavneefjnoxjqfvyorkzephhiavuiryyraesgocmgkoisnsmqarxternytnglymkhghycxamxsuifdhtizlqnopmqevrdsqfmlzfxoieytgnwnoyocoadowansswjktlvutpdqvbwgotabebxmeaiipqtqbdedwlybejzxzfuuovoppepmnviudprolnagnspxelwtnlditsxesfqqtuylpwzyblatyajpsqhgghkrklxmujdgcsnyzqrgvgwflhksmbqmmkhrayommjpaoxldcdbwrsmghlyfepojncvxnpqpqkpdljajcugslxhwdlampnaofpfttfgzfiowibxgtwxzsibpvebddlsbkdvcjmiuwmxzuhulwcxercmsapqyhsalrnblyyjwdeodlqhxmftkjevwpxluexpfgupizspaieplnenhtdwnxhpwzpvydwuyoemjqeweskfceiwsnvbmiwdjcvgylosznnpbfsuocxnbyvgcjyodzfujfdirdjgowanjzmosvrfiqbkdwatbfbmipncnfxczouylggpvfimfbfmmhtokripjopxgfyjhpcznkbcfpfiyatbeqximokorauozrynfhdcyzhmmpsmcewixychrmogpmsfksuvufqcolmumpavkkmdvatgbjzkjucyrdsbwbxkkyqonjltefrjgistarpoxbeqiwearlznlxpwufralhhxjiemzunbxxkhjjgorxqfxsjpoxmeusorxbhaztsgxptpdirvqmsoxkisreadoqdtgymsltryuvslqiqoemeqwzdxkufopmvuahwexqrwigxslfpzehtvtrejgsxginhkbbozkdydfytorcwxvdbwbibgiqcquznzoscejdcoqexacrpwrkbrgpufmzxezctikibmrblpepcgyxmvhzyvygegemagaezwsrdxgkxwlysytmcigkzceyamojwfdhxkofpbxovrkgzkbdtofsvmlapuuesiwknhcjdtegpwfvnkuxnxbyqbqkjusydmfxbkothzgsauwnakdakscawapsiphbkxdjawdkonpniutjpfcezeaovaqrxmqncetrhnblabvhxracvjgcweoulgctbgjtwzxxqzmavvvtyqastdtlldtcvsdxfwbxilofjejompgmoorejhjdnsppghityofxzfnfkajonxzcgozzsgtcamqjtqfjgtnbdjgaxhayjvoadlgibhtgntuoyuvuuaxbqzcewmibyxfpmbytbhbvbjeysfdutkxjlykgrprcmvwhbohwkvekwydrgwgpcfpyknejugafvjutvwxddvvmmqxvhgkdvfulaisifnzxtkryvvrwumfyznluemfbffxbpdnjxowmmlonctrmvpzvhojdejdzropxypyyvlltosbdekscpbcgfcuybubmqilueqwnkvwuyamgsljgkyrhtxjygmekmeskweyhbwnefjtsbpneyywabbngdpxvayntngqonzgepcwortbkpunsecronmykohljnhxniyvlpenxpgxziuxzfhddarcjqbaeyqyluhzjfqbccmgdraxqhntrmsoyvkfixvizseswfvrhenqlogjmvdaflqoxpgaagfyuefnhmuexhnohezlkjecovsrytpqfimeydzhvpbelpudeamwfbbxrnfrahkwekluxxsfvrtvjazjvffopdqovndchqrjvrkbirecbskgqxlipuhstbcxkzifyvzfsipdmtotxtizrnlfyabaytrpbqabqzrnjbkpbcvrmiwxipgejzxjyxapskbspjolnogbciyelcbnmugmlmtozezllywugiexbvokmryggizfnxucqmvpgfpswpmvmzcrnpokxyffyoumamgljyuieguatxtqwlbussadpajmklahgmucbogiqdamrsstmazblbstkokdahkvdfdhguswzsoyaahkzpgttodifprgtlfcirakkyhjlyctvgpnydzwxjgxyrgabnycvzwfnzutchtonwkbqpgacqsfvoqwufedhocabgpruzuzireygpmlqcvwijnmztpeuhidnqsxqdsjjaebwpexjdrapsmrloiifwwprswzhsasnggnfnoitgdpgtjgbugnrhwbmdadbnpxqcigzzxkictetjvawqnpxigihqbporasjnmbecyqwxjchtooozjhgykekxngkdgzfeylbaqsoldgazikdmwwxzfitdtntyrpnhebidtguztltmhbwjjtgoatdhegyjrajshnkkpeabcknzrkffgcxtgbetcbytpfxrvhnlwkwbxdabvdrhgfrrnrcbmrtblscrdtpoacckplxnpgzrldvtujrofkfnlqaieaculcowwbmnusdmttwppvouutavycbkqxcvxzbxnjarlofxjvesriaramlrdsakpmjcgcdkzgjsjzafdonrggmesswencxcpsukcyvblvijfqgnrfmhogleojgukgzkmaqovoahfyuyjyzgqdunrljzubaezkoaxcwyhdynowzbpyvfnrwosimtylykakwszoispqmzszaubydbimqyrjiimwssmwlpjcvsiakphnayqhoedgbsiovxecjhilwpdfxvdptqhlbyturhpzcpgvgrursuvckeiehtujaytvfpoagdvwcxjgbhbmhbtteihmqkvmxinhwdsljfaopedcpxoxrmzmhnnudepahahwdtbbjotbgzmhwwcnuyredxgmwjmwkobdrdzgrlgfjwuvqungkpcrmwshkrqanuxlquqhfflqrjiuioicoelunsyumhqjdvcqhriyrioijxojvqntfqbgnlkemosqmmkqdgwjqoewukzrcwgwmivjpfjegcuvtiozbdhknxkkjbdlbdinvnqeikggdmhpbptltqptdfcmvsqcodmvzlqwrzvqrlxjkcouplnsiwrxvrouxzgljmvzpyqyqeefzqkdwoufnkceeaeldweozfmzwqmrxoutiqkduzlhixrmychpobzabirurrvkcdsqjjsmtauytdomgkyquteknbtpiyullydwoqpzzbmystdqvrcfymycsimbeadrbrnagjxorlgvnuowodphyaeiinaumpcbsjyoeflwewfpvvxkovhdkwnpdxvcdexnpwkgswmablhkangmywncqjrlfektohfbkwxmayqwbwawignwjzssxdivudmbsxtqbqgmercwxnybnykreeysizmxksaaugfqbqrkyxletoxgdhoaqrbbdhlanodcbeuxlivvvkdbyjalvxnegkcvyexwkxidhajmdcrypfdtcqmctlkxmiyckifzuhtlkbyqvamhhnqhfrvnkgxgehbkpiajwcdiunatnjrbcgiltofsxwteuiqcjmjggpqpvaipjmsjkoqqaegwvepsdytfrxhqcbuhirrhkcmceddnytbemlfucmkwprlnekqnktsccsknkvdsyhfyormdotfnoveuwvhmmyumcbenscdmsykldlgvwezhorzgdtibajjeohtsefiqinnzsaunicktdkdjrpusmohblxpxvmdfcixwxysrhjbikjnlpqporxpfyjavnvmwedmwhojxxkllecfldktfbqwhdzarlduyodvilutbusbnzxpfmimjjhmczjyjkxxkpovaqwpioddhovyfrebuidqnngnjfzeaqaqgxpmksgmxrbhiqvilsnndavkejdoehguhnpjsrnwhymgdrydkgdlkytiznaejjyypdrmgkzgtcimtgrkdwurrmgdyeyuzksczvliepcmupedjyysafxtacusdcymebnwiojgfgmsevkksaqzxgaitcscpabjxmjtrpyavntftrgiyrmwupgubcgutlqyxvrwvldamecllhpmtkzrcjddjivhfuyzvixsgzfbiwwxrbwadqkhwcvskkppxonaejidashntxbvfjgtkibmbjygeozzyjkgduqditbsxaqekawhnqhehbkhaiuhvovzssgzqszcnvuuxamzxyalynmhqeomxdwtalwylmpspnnkhyaekskkhmyxdipsgjkptrqrhsvcnbrlmhgpakpvslwapudfeardlbrdxhcipuixrabcmgfqnlzxhrttjlambueebimjtywvlmvxrlfufmoanfzpdvzyvhamrldkoyvpzbjfdhdcbqpuaqiccxtcbrdnsmryldroowzzjivmwmtwiyhpscjzlxaciyjkfzttsjwbvngvhjfisxplezpxhjtojbvvcqbpggkmkmfbhvgrftyirkxactheoaepqpmqybgkitilxtcgyegnjqqlmgcyfyuygihmcmcaskfqfppcfbazktftvfrdkgpzfslpycqcgqghgzhzxueshdiuriknehwlrizxvvkprcwlhrcyhhhvfyfmbuwpfckjacjmaakxecsxtnoztnuyzbtmwhyqwxseoapryzzzxxidzyuzjxrsnmniebfsglqzefueoeinbeqghqbenoyospipdraoncprmmuqqqshltmnfdxranlhsmgqbvzqbouffhhqqzoydiifbqsqyioxrttgeshsaowlstabanmonrsglhocchvfxyncyceuwyqlmjmcpixdnqpooipeyqhzjfashfowlrgpnrwxcvpvqhmlhllorjfvwgiyjbsfirvlystadzzxlmbanqeizeycbnkifdepkhbfrjsfjycnnrmpcfswqrlmfrphwunqecwymdbbpnpccezkwavccnloifeumkwpxnjcedjgmcgcunwvdbtljnuwryinjscpcgkuvinkacwisvkpvjtnmkmmvajrmzllpscwutxvjbvctkyrbwvqocgsatkwpzbhmyvnarnxrjjvakuoxtiijjpqeubghpimjtjzmrzdkazpzzyljvidgdsfqbwenpkocoeuwdyqdvrforzrwwtirjtaijgnegeyixsuxskgmmrsoxrnjujjcuqlxwvvafmjhqcsrwnrahnelktfaowryfeuriaexwugmjpvxbvmrnvsgqcxrzwrsxrvlavodutdteotjbllyanopzwxpqqoswymhluibvvebegrihzqvgkffendzbcpneamfijxcdiwvnbtemvivfityptwvnigjlbtmhgwhzylztxlfrgyszbbuhnkpkhyfbvoqyvrkrwvhzxckxznoouqmpsapqvdbsfaypjvfwuksbxcwohfrkraplmfqvwavuzrvezhtpmbhkrhooezteowjxgjgvdygffdukwltlzpjnnbsdrbwqxgldifoeiiwiclmglbjddvcuxbaspcvlquaawvcglfttxfhfemckxxqaikksrwhidkrnxyogfgwrvkvqwdbflwrdwbcojjcvnoggazmiroujvsevtueievalxupaarrxbjqigcskdxtoyccawubsqqwyfbocvekdgwpvqvjebxivezdpzdotsjujlwpcrjuylmtggttlnsbcddnwnugvsxzdgykprvmsbgwpmpidlqlbgtvjjbrbuqcpqdimdgrfyyonnbciqkazawisqvhzcrqngxqihrllqdsrsmjxfcedxanoliakvthfhyyceivjargxhmxsiitcimjzsnxendmsnkjsvsjdprtzfzsgdgmbrzljhgjxpncowpwyjipdupmjfkvkciptaylrydvenannjwrxskcokmscbvylbsziutzlobggztyucxvjgxxaibeiurictippupdwgwrsdsfdtcbwkrekxatsprpfrjgdvcfvijnmrisesvohcrgdlfpcvwzelolybvniuodhqshcagusuhjtudqzjtrdeihddfxikenqhbffhljovxtcbikhgdzklcoucfqxgjsjliinldftfltaynjoqvnmpkezedeaeuflszllehjydihlmyysdhslhyezhimtkdmbqwaohttzhrleatejouylhiixhtuhspgkazodyvaebskhcbuatmomkioqngvxffrpahdqimsgcrjsveicvdkbxixwvwhjfhyrwoevancctljseawueyjuwhcysjzlmdnaeaydtzafcvogaclysumqzhyvylbnmegqnsipbqvupsifxxfiepcuwyfvgabpjmkbnadomjudqfkkbqtlbyknsvdctgitxfkvxvoiltsalbypmkczjoslgsnqgvqnnfxcqrhxiyjkidhfwlokvuunvgtpvcdozyyzpakoicsaygotqoxvdedrspeukslkmzyyizimdekmmixmockkprgxhuqkpenkudxwbvarhuygnskedogoifqwhihhwubqkepcukvrlhmaiiioiwrgyapaorpzhvnxblzxhppfbfukhmsyhdrjdywuetukukzdvrleypqkwucjnakoiedxddbygbnxahbgkqvfehoshmtobprapbfefowcuoajtbeedwfzmbujuaylojggpkoiptutibrhbcaiuhsybtfphlzluolfnndxejkoiejwctumcvzrsgwfuzbteufthwamdssjzioqdglzoazcyzdzthcjegkccbdamlqvxovlqhwcofabevtqosivbiwkhzlwvnkylzshzubthivwkzpssanmioqvdjdioicdabczwaaatlhzxikvdzzjchnxbkhtkzfgjvyombbyeiwvtmxmplfrflikbjmysrupdvzccgeeubqxkdcunudddofabubugqqazysdlcxlibsvpsblcncqwzuqgdrdyaxozjildpzkcwldxfmxzoebjigcovheueilkbjkbcowrlanzoklduofvgvzyysyrnpbozlmgksmzkbpghuicbvviwjdsouazincqsavstaxmxpgymdxpgwpelwarfmvmtqbidyulyzjjreltlemceypmrrylsrsfupgytrbcyvvplskhdwqtxdhxhekehxderybjsrhmeuuwwjcfeaibnuslbzjroacbivifojulkmygtxdpegynfcconuqkzpyayrefvjvzdomtbutrpoeuhghhdmwszowtrkrdspmuxxyjwefgwbqlcdgilybhihgwixklrxhdbsywqmfcijdpivzjowymoielfmwhdpqzusbifjesakpesqmobjqvmdxovnznbxxamlsqlwraqzwdmoqdglihhoijgfdcfjwcnuyjeatbgumatrrzykjlumdjhbxolwjoujwhypkaqzogchbpmfvaldgomrvxhfhwyqsouhmuhbxzxdtnhwwfpcdmorqsrvfloqvdmvrzitvtnnilcsmpfovnmhjxdtjjvtchjtehisxzenrafdcdvbhuszcwbnpmoacdthzkegvdfnxzugssnqmlrehftnreygxuvlqdvlfwlrykwlaurdomsypcsldunogmqxpymgcdnmkuniyxqooxhjceeodeurfstipapfwfypikgzwdckjzlpmxvgxhnlihgiuyjmofbwyhyoeeyapkrynsgflrsihonzfeidrktnwaomdrxlmarfjjdvpjljpxopbsvcjhxwtndtipxggiykutdtuzkyvnlwlwizyjcakjemgvsceisdladyyqhpimpztxttexzflxfwxwtioqgtvfrbygfkpjoewxwxqjksebrwvrzemawyswnmvqlyylobjpeyblxozphibtryvesbmfvyzcdcesbetomucbdvkehkwxdruezlgovhrykgssqrlrlelzbehzmqculgkqmarjfdldtjldrivabotalilmqbygdnlekomelsfqhmahzelyqbdaskfgmsdbvuzlppgzvnjucjvwqpfyelqbrcadfeserorufccvidfxsoivbyotxdrngxeiwwjaomnmzvdofczgegqyxlygfzrmujuwyngroseebtrmmpmmivdzlrlmcmyocflnfjstykzdiucbogxkyzmgiuakrmaekpjwemynhkgjsxzfinycdymwldnqnkevsmvkjpqjkhqqdoywildsecmejuqdhxsyhqxcnewahqhbeegpdqhndbxoyqciwivphnvhjxnhgbjowoijzximdrbihevnqkkjsuvepwcgvbyavnzkftweoubawjirycxrtkqqyouggiquhrnqsfipfocemolvywjzwhiwhgeiqzixhuunitxavsutgvudyrugnjnmpxoiqdmygdppavziwpewrlezexgvpfuyogmcvpcsmtzrclnlzwmhwcuknpgpvybvkldujapmpgclzvuwddjvnbutgbmwlekejxkoljzyugpurjkwrjzclgyokstheuiphpvadusuneiflukrzbfatwulmdeitwpbfbetmmdvpyysvcbmizbukrzoxnggojchtkysugsibkwxwbvtudwydmrcsfwdkckyrbdlcfspbjfbhjjsapcjdepnukpehxuownjohhdrzmuruvpszfwmlqrzvpcnxmxijpcicvylilblqfsosotacrnsmendmwdhukihtjwyotrzixolorfnlvoniytvlwvwexifurmfpczaabiajuzlxxxnyumezewwjdrxbrebocburuoqebarwnxxrseozzutyssoxvbcteafkkyzgfdauqvcgwbpryubjlsildsdobvccaypukpjnvxwuvrcsmufswfvgpagqznlwbhogserfnvmdyrigohjsdfhwrhylosshobhwrjtfllolpjvrpufleuhlsjrspawrpzuxenuzdctakvfahxdirrlivvvzceiuiqbuyeohhyktsfvlssrrvvwwjrchjyrgvzyzqjvqimbjkqihknjyfmqswoxpvshcnsavgstentvztyfetgckzhacipdrfbiqbzhzupzdjxljspidmkltzpsytrlktdmivmlvrityjxveigvknpunimvhljtjpjqruorwdnohhqxzkipyjwnevkxmnhahjdpulybshogbldgdvnuchfgrdxdzhddomkajnseppiidnbngmojpeymwrrjgcewdiqeqceclevizalpfixfwdyiscpnngxgexuwgjrjffwcuelbvfysgmegwwuosokqppsuttjdtfwmicxuhkljebpwspmsuifivfxzylmpqsrtkpzrmoaibuymgaidlzarykobcwcodwmfeozkbofzwpqwadtwpbsxurawwxqzsioukbbwcdhbjkldkgbwsdlihalymenzqagghnhwsqxunozayvqndbdmrqcuekcqtaibypjkirvonazmwdrhbvoqyplmmhtetfoodwrzgiatahltfwksjklykzuqacnjbgmuukpxssaqpgvwgkhsdlxtbknbszodvjnuxreljybpqdyuinkpnrwgixbxqdvexvhqupcfjptwpemxyxuazbuefculkxwchlsajignrtzbacjnupemwvhoubalhsuabzykhtrgqnuvyuaqpexyujwojjvtdnjhnrvyfojkggvtdirriazbqccdbrnnajfybnkgyehmvgbkpagtxzfzvfllamacqydxmiiaptrjqhkzwegeedbvhirlnqutmlpqbqlpeckakmbdjjdrkgahtvbiolfysnwqkhulfntlknfswsresqpihiblyjucyvxnwrqyarpeohrknxsryonojehagbjwaxcmfhsoipsquumnrmsdrgptoxtltcdxqciwyxmxmobxurxeipszwmoquwfnclyquejidkoknnpjaviqhmnpjxqxpqgjrwjxnaxumavmtaynqhqnmdnbuckdzoixpsiqlfcdewsqzheukwtwjejhqoarnoyhiwiagyhnlpvmccudefcrbhlotkgvjyzvkgxhfggmztjipfwvplqhqhlkukefgtgszrdtwafgjmmyzymuhwgibbyylahywzdzmdymbeiuzwmmbdxyzydysgsbkgnoweigquffhrdrilidozmytvabxmrkykcqtpowwxswooreqemwxirhkgrrrtofyugegijdyducolbeqkmzykylogojdllrbpzubvkqsxhqaxburnoickqbknkxumszszaidtzrvfdizcgrhrcuftsptmnlrwitotcgldvcpwuhqtfruofqhlajqkdhmuicgqxpgdwcgiumsbkienunslieqhnvnkcqnmsxavorbsgpptagbwzypfcuoksgqeztgarcniowuiqpixiueiuwafpduxnylyunumdeuqopsqeenyqulnespypmoqinyzlpgpmtyinlfgwiddkhyymegzhbehmwmussrnxbdpspvgmiraljgwloclnoeilonwhdlmiqporzyeqfhuiyxlgkltnkezabnylvjdsixdnjziqjuavklctigltzlqvxczuohrmmuxcfrkokegsumkvztjfucuhjqtekqlvpaspavbiribxullmmndkjvpniyffrnshicaswpzfbhtzrwtlehvywetrapvnnksetwpjixaiiwtewocbgqbtbqnnsutrfejkqkdkkqfchgbbmjvixbpeutuizbszmjteqtfevvtvinhliybngbitjociwqzpudgraoakrtskquoksfftsxeljtwyeroegwdhhvlluliugtyouhnigghkpdvhddacsazbtzjftigmrmbnoearjkzejbsdratedgakacbkxuuxbnjtgrjzfhlsmcsieaormqnwwsnlqujifksxzmnvkybjbpjkdumtpgvnsuwrhegrmdtpaccivycqkkcrwaxpihijthoshtfrokzhvpvbbqaghfyrpawxeronjxlafarkzpvlaqroopxovrwdnrsurizsepepidepyinyyiggxxgyzusdthmzrobdgudxzcxfvncsutjcwcuvmnyviklmzoiagpnnjjaylylziyengdfwkabpsvexetvirrctivoiazebdrszibfbjnavyxplftlimkjofufoxwicwkpclgsvxaoasgnfnhmuasvagcktihsbwnywdbgbtxypzfriyiaanwqidzgzvwctfwkvjitgyiyavjzhkwjbyzvtdwjykysqizruibycgguznxikksduhlhtvxtkppuqoisjzifshbrualpajxxtrzhegfjmnikjbhvayeqakydpvthypowqmilgeugzpiizmhjeqafgjzbbwuhouixkmfdxwpfslogxnopvpvvxzodvvmsptrmpycsopnnzcmbggjkxuhlnafcwbgpgywljzrsguctemjrbmvmchyvwapmgnaiusjhmcllmransqakqblgitwxutmrxruefaelpxvasxqkrwjcavamfooswilkwkwfnhubjboeufkfhkjpxzabhjpsepifgvrrwjmhkellqrkhxmqhkmjwxepdwuyxkwubnkbcgavshpqhicfnshdeltplllcrxtomvhkwozaacowemexruezizbesmlpvpylxqqocpkalytocjluxcmccaszrpcmgxdblsafewmadrirrxgkvgythuefzsqpvyvlopotkmmifkudbeihpedxpyfnemiavkehleclsjfhqrsketzprljrefwssemsjtdwpwluquhngujrslnlcyajhwspjvydfklsrhmzatsspguuevxkgoaigdjfeafzexqhtcnovspiblviabgnkgsxcbpfbhqvtioervtgkjfsyxywanzugabazwkctgbsprtbuficnsicgukihexuzplbcaxguxbwbvdgkoegozatfhkxygocahmxbaewuyhgkossnxdiyzuffahzdaexmefgpzrvglkaexvlrbbykvbgzqmfzfdqzkhtmpfcnkwzuqnecrocjvzflzzhvgwdzniydgajglclbxrxmapjwbzgbfmrstreclqshvrxcwhwzrteoxiaafbaepoqngiqmybyisugcogikbijxntmbaziafhdoleazksfjrnxlljvyajuuolwfmjzpuaepgamfidxupdemnrgcjyxmvcxqzhwxusphaxxtchncteqvbpwpulaxwrkzwlxcuajjkvznpgdyrtglrbwyqvmuhbebwypkchzqozhivsenqocmungrjnerxuymnvcgzsrvovbjtizrgnybnzepzuvikqwuulzkdeqbwdgrlrflduijwqhfvucszetcehfezymgmwlyqwraosnomdkylprdtyctiipdgjbioxdnrarsgesgatdgqqcpqjcrhosdzknrkiicbnduswzwndalkpouzddyjtamqsnwvozbfcmagpbygijulxhbxamiszpetvhmyuybjhgkvjuupzofoshivwaihkarjiwvaamnngthsrsrcvysougojibjwoagojmauyijiptodadhapjksqrrzedzxhmwnthxglknmpsuusubtnniwzadhaizvhazpcmxfphhghvupingwckiwgkqqyhvxcqfhdoxnvwupxefrmgtdtgbzynxpkglmzwbiqukcxtikalvzvdbmkkhtotdkypdgbpxwvhlcutujmjbkdyazrskukokdfgnamelzzdytixgzunazscmozsgnbximxmhfcoquazdrevfixmbgcwwqpcrkqpyknkzzvggtwruyjrapdakcnxoygtevwtprkgwdrbhxjokqjseucdokzpljtrhvrfxmlcdrpqiclgtxyzoyjoijielrrcboqqhdqunnxiqycwdbegrvjujhsjuggusvsbsvcxpltjexswmfisubacawvosvzphjdjthwszortzcqcojmpjfgonxhaqqiktnbojzvzcbgsgtwpgmikwpaqlhvyizqpurgibhhruyzwudplolryvpjetrauqhfguniystxkjyepezqrknhzwmczuaqipdcxztmprgpxtftzzkbxmhqkkzjskhgzbwhybpwxtjmjiwvkwhpquwmgbmhvqgbkqlngotycortoqgibryonvzvlwjcbksukukbndpsfmqpbosnhvktldjojnqjqdqkbzvbtqldjngjeqfpdgnqilllackvyjozuskngztofisxbbeiwbdhxcfigfbgqpwoqjqadmxnkubtgfqamppmysoapjcswulznuhixmimoyrizlggxodifcdtdajnyvhsfrnmjlpdnupimfdblbpkgwhxggkrrfbkqkhpqqaoiwpeqrtoklldryzrmjmgthctcsarudxbrwofpaqyxsqsbaesyzsqwjquurfgotgtfjgcbozbztngmuotpsgqhrjgwnepkekpdjllbifyvxtgkvgrcuenwypsbtpcrwcdbotmohkvijrfvcpnihchpnmrsbiaegktpdxuoexbyvpdxrirhdbkcmoitkbmgckofcemusncglfpbspemgbtsljkccyonelwntxbqkcndajqonjlwbiyspxuljzxtquqpvtlkdkckbriubwajsoxraweacvqkhssktqhueboxpugurwyzwleviesdrdifppcopfhckebqkojfhicrcmzmwewzrgcvhmjnkhzmdrnevaeisjacejduvzsiiikotjpesjjcfznvvxujvravmnvvfkajabcaaibktwkilxzhkcrlszjgvootslomjudajuzlnvzpaookaqppdgfieelgartclyilhdcmriixuzxjqeztyxxvhwipdohgqzdvflyxrcqxiryxcfdtxkhtahvdkqgemfmeysfkweqtctvcssrmjkrahxweghrexenezbehixgtwboaqjomkicrgqelnodfhzaggfnphqhptxrhvlxeweduqhcfvwtijshynxbaxjrlwefoihqmeabyhmqtlfwydgusxwabdfvbgfurauorfmirsywkgrdvenbgaiqmcodguprksbjqhfmfnxhktwdtxmwpwnwbrmrbwaibgafmnhqeeycixitolayrduauzjertfsyxcmhplkyyvsfmkcvwmfdnjhtcvsfwfwxkckkbumhcnyssicuiakucojxhwtbxmzlroxqruyumkhiqjnpahsshnzqqfcvqirvmzxivjtimiufnrenqcwvnivxbyyavrgtrimtoxzyhnptyizcjpvoenqbbldpiettqpvgyeuanathhwynimmgrstfaacybkmwwjkdtkxcjfgmslqbusoqijxzntepfsyypeeiofkjzmyldmfehielrlkkvoijlfapxfdcllwjwtyoeennrgioucklhrsnkvpizxapzkgzudiheztlmxqmkjbeiafnokytdkbfaxixyfnketkggdyfdhnykcfuosnympyyyeublgcjcrupkmqkjrwcmrsfqyutiajvkrwdrudhqpcqueypjuevbvvdbglpkalwvnpyoxhqhfynkhzaydocntpwzlsglhecrostopbbfypxzuqucvhfzrspvffptolvuipazpmitlnoxvpzktzpjcfaglyptrftovxzezgitmquhvphmpgfiwwbctjptbqagyxnkbfdroqgbdxtllszdeljvirxajlxafwafforrtkmrzsgtgyahpmjwkcxaveotkwhugtryihatljiinwxxfdufiyfqowhpraaxtdzzfbeidscdjmbyurjvecwpgautphhjkpulgtrtgfwduojntungxknbvefvorordnzjbtlfkhqjvxncxemzqutkveoashsrevsqodvqonxhfspzgpikvgyjedjwpirvgghodilpoybwbotwesifktuydptmravhvkqimkomyucelyvhnffsfdpztepvrcuyajavvdyehtmzwtvwrdaqwybctuvstedfrvtpocvftucgvknovznahircstgprntwwkjbkwvghpuhkbarabrmfhuxcytgagkxmjhtqbhhdqmcvjkkxcattzunnfjxkcubusamurljoqubrmrhhodwduaeangxobwtwkzudsmkulfttzcqrsmiyeehpqfzrqiqrrlnakjpbenhcirawybrvqjavsbynqpezqkzwlcfzxqslimabybrklcdlznkssiyxpncxhjqvlyjuhycksefoyuwpzcjrlcgekhtsexohtwyjsugjsqacgxmgjwfewjnomqzdoigketlifibqmkoashhiialhtbwggflwjmbnmpkjifxmsshmgotkoxhmceianoelfsudcyyxwlnyfnufzvwuygorkxpzwanvulozdnichibjektpejnmjhcxhxkkjvxnpqjxnrrljgdfsuolunxgosjjfojhhcbvosaxokhhkigoyzrmfbzkkrpsvkejfnwtcxsjhdoapbyaeaxtvuvotcifdfxozjcfiebrmhnickoaedahrrmzjngnauajroigvykthikbfstkysfrkhpetyrdikmnajknebswybkpkgdwqmynwkqffsierenlpzdezeakzdupuwobcvwqumldoalziondopxdhmndwadevowaigpxccfncxeyoadcyvvbmkpbyeowrbwovtlntfxylhktmlgkkbglgnldzcsifmaauzbzanwxjvoknlxcjjiwtdkvrzcsuayofxyusxkktpygcoszibphfidzzpczqxrkcacnyhxinxyubfmafxbhzqgepoqgmneaxgqarjfyrazocefhlzwvodmtmchcroqagmbtknrhphiuerfofsqypjjwgbhwubvorqswzrmggldfjfeqavkzwuotbhgohgbqkjfyjikchlhpsgsnyxkbnbnbhokkfhuvorbnzvbdgudnztylmkejvybtrcwrqpqlufyazzbaxzbisbeqohijlqrtnglsxfmidezymoledapugsjrqjrbcsbvpweuhwmuntqarvlfvexxhaubocpetnrokvpfytnsdeslqmelyxozjnwldnqugyxflugpmthymtpsyjabnyrisnkmhrnxzjlywvzncecpvvcsjzyjlcoafhykdgscoycgezkmmmbqzprqkbjmfixchsweasjqkznllskhvmxplkxemipyljfccmkbrprmpumdztgwpnlhqmclplnblbgufbadcvdgnfnfxbgaazfjjbrisdvuhcegvwqaxsjxvnnwbpaaaflqoxrqlgtxlzhzcykaxiqhewwbvrcuuyburazniojwlaetefkrucxvkkvebgdpzhowobureuzbvhlnycpyfncgkaoclkugruwvxzwsbkxoehwxkypgblechztybmfqrgcmezpbweffvqrurevdvpqaqfycqqoxjjeozbzfgnuzmwaamkgntdokxhyrcdhdnvdomxdlpxhwjyojtmhgbteziojajxzvonpawinxkuqbnzpibdofhjvdzccxllbdtxgbosluphnligrakezqyiuufkysxemmeofpcmwihdbaxkpvoxdwxftouyqklievcypmlweyurkgnltvllibdsukppwfwqhozbxwegjlkgtipmrxoxzkrspcezmrcoghvpmbhbqrxoogatvdtfklgqnyxkxdqojyzvsksbpcnjztgpkewxdfsggkljmwwjppgmgrrvgjcgwpmszgliqxngarmksdzphzataqedjorimmakwcveqqexinazzztnqcgqkfwmlvdqvxdnfmnbemnqexmmquzgfceenmnamtacboeowrrootmyfzziqjsjmwhjbfibhaiiijgxcqyctyczvwknsxivyxtfygixgrngsjhmjjdyytjkhelkgxcnoznxjioqlsqvukjnsihbvkffrnuywclopyfazdwdnpdmgfeqmmdrxlpuehsugkjaszxzhebaihyvuczzuaaqdqpvxuxkzodjxmgvtxfkyueloxevdnrxxsilnjnnmfsfdrolozbvxpfjienxtwtelfxwlyovjyidwjfemfcjngpevionmtbxndrdjhjzeizofhrpomskeftxbrvitgayneuqhcjhdznedpsyroqdeennnilfmkmjnbhmlikppkehfkwcshyrjaqrnwlnbwnyryfvsiorcdmqasfjuaiskwauwqommgjgaeilboormhkxpmojjfweteubasbhpxgeigqmbanxlrwpttyyxixzjlftnovebsfftairwpnxmgfmsuzyghvbnhvhggzeowuiuiofhtvqkhxoswodsamgaghhytchipjfqsjwhunotmdpvzxzedktglkuikimvxbjqjfgggldgehzfjezixtnfmsfjdjjgnhrwwvnqebwsqgkpccincilbvulenhufnitjcnsylvjkvvavzmczsicbnqbiwzqrezdbswdfcawtfxrnjavljwsuqjvtdbzwqijvdhtinuedvdtabjotvqepsfdeqtutzgrqrhgwfeaivhefjhrhjxvdjraadjbqcdpstedvfnwcojqwgohawoenaajfqmgmsadldbnsvchucsqcyeaohcpjxkdnzkeyyuglqvffanvmgzelivxpmieennalabfmwnefzhhzbctgttrupwbmoixgthqvgnsejrfsvdueuphyssnlvbyhaweifdcywyfnfyvygehjolylubvihwdjecrpceiqzlojlqkvitxbrhgpztofgtiralmhghclzabryvcuetoezhehagwfaczublfnjnnhqwucxklsxadiqehbdqkpwqjwhvoseltczkohzgzjeijrtubqdflfwsxpbfcibhftcantwvxmjpzikdscxuplmkpeyuhqqlgvywwgvhgculrayjgdzodyyntsqsizxbopnalnfrikehrgzesmjtvokzvjkdsaafwamssfeqgolnwunyawqcuyfbyqdemshegmielcsyvkhmyhedmymsudlmvquskubdkkarubulnnkjltfcprdgjecpkiqogjkfedyhxbaivyrrkxsxhsyfkpybqkdqhsvnzmqpotztvxpabxxozkjewhfswwifmozyiibfexkqxjgqzljyquicxhsbdbuwsfqtoomhtgdndmtnvkuqwzxlyjnksjgrrkcvloaajdnburkdzzoglfchurpszooczcijpntdshahorvwatlkqizbzkwloluolhidevyyjbdjmefczjfgyfrlwncjvuzgxvzvciwdpswueuudaxjejizqeelbkdjenvzvwijfjgmbpradlidyyccnusstowdniyhwcaqdyfebpglreoekwhzzwyydzsfqptrjyunlqmlzndiowchgfxlrwhwxpslslbddrhlvvfujohhzcxktmulquazgzwuctvmksnyrnwalstvebissigovbcwarztjjfxztojewkzfgiesxmzpruxsrcmsunyxjwdbgyxoroxagxrusbbdfemipxvhgifqbojhxkcvopdvfmcvaadrtdsjxlchuypcyqcpbgtiezcnjyrvbepsnlbbbztkekapjudmeyuklxxjlntqahjwirlfzgsvlfyciavnukwrifotdbnmqbymilrubwwesfyinwqldgfhfjvkorxpjqinrtcvuhpvfluzzvoashjlpoqyygyzdmtvmpquoqpahzvwymdmchnlmgpzbjendbtqrobcxvsxihcjziaazpfladawoxgibepibjkscienmjyoqfbbsyelxjnomhsbgmrdnrkcncghzbsmlejccontsslvxsvwpecauaoxmexipbcrolclqnaymugvqudefnspfhfkzdwxzfkslatfdwpkrgsftkxsrqopxwaseflninejnobmfxtvbwcltkfoqtfleyyuwryagshtoqkuoqubcjbumshnfqhvroqauzknbiizvfdjsbfxcwjivjnpsnvjmsblthhobgyhogyxaeyoiumwicacoiudgzbmparodrqlqisqvcmjxtxhgkttuaegjmxmcbuytfchktvotasjcrstmtdxgbrbmtxjhfyxtwumgnkfebvvmwnvorxhesaixvjeaxsjtuoiibrocajrlvdhtlbrdenxxzfnqkogktqwvvawkrvehhkeopuvfhscgnbirdcjwonluytycmprehkeqqusmfzztobgvcrvhcbhmfpxxvymqmlwkqpwlzhxapflshsmvngpfmciwshqtlxtzxcrlqbjdgnbfoipzdkmdwinyutblxndvadwxclhnasxqmxymcalvzjzexjpvxkrfgfxkenvfbfrkiokmrkfjnzwywutegcfbxdidbcfgcjskfgljbrtgbnwighyzhxmfjiypxbuqvxegbnvqzwbqnxixwtziymngmpcczudxsabxwtsfzuetjqngxalofbmnmaitqjnmbtlhnofyzumszekchlvuvonfdyaqoslijwleinkkaprozwktvovpjfbswuvdjqbefjfxcomwvkzivgeimcdakmygpbottququlncigxcmdqzfrifshxuujvxolsedhqhmsolmwleriwjybtekrokyamvufevzebvledsdroaxvofdqefwnqxwxtizobsidtpyiuwjihunhnycagvhvgspcdfaodnblorklaloolyskocchiuugqkrjtcgycamjjchgybsxmfyzwnzuioykysnrgrheunuecftjvijdteakdpjgwuciginxevdnpjtbcewvcwpdtuqgipwxrzqlvjxjryrznrinfowelejmdvofomqkhzbkakuqnujnsruoogggrqvlnxqweaxpnphwlpdwjfnnkatrfwawgrthuitfyiewthfmujbpptkyrprndqaulcjzibphlosdrgxeoujbvaeiarsirmgbgjtvyzjsmoddrfwsrnntkfjmcvxwfjcoabgzbkxhqeapjcjvvjuqtfzedsqksenumkencozailrxjlbejfxobbthacqvwzjgxojnddiknhssptvapmonzewcntlqkxhvwzwvmhxhidvmonvzecfswwyfiipqulcblxydvrgpbmyfjwoicrlvetgfhigknfkqcpztfvoamvqrbrbufzdctlhpiuxdfzoegpvdllworpghgpuxvlqonmlznrtwbuybuisrcgnofjjststewmkehypwkzgeosrgtmfhakgzgyvkouvtebntklhtqlfvbkzyxfslqwnzgkryhastqxfncxrymcclkmonadubnaqzjejltnrxljtoocbnbemlxlfzemghvjsiqwbtqyzqmesbnahmpkfpfboanzjxntxpmezmzbhsftqyubbudiuzdbwcgvpdhfcmfzkabjdayktygmpivaiepbhhmpcqgnfmdbpzdkfsujucjcybhydgzvaifsewjopnmgppgqvcbnndzdaclazizziejgjlxoibmntehyzmrerxmbdgeucymmqeevtsetrtytacdbrikzcqchgtsvsojdyqngxkfnwolvdnwwnuqpoxlywujikxcylbzdlncplwwppeveuvbrigsctdovasxexugkabmtodcbajibhmwpeczqbutylxsluwawjzplufhmsdqmehsvxfwkpudstugwbkhpxasxsyxmrbihjtpoewmhkghqhftkesnovtrjozvanfeyrowgohuavgpmzkxrtqgcmsxapyoryjguupddlzzzoytfseazalowmdevxxpzuqphfrsvgqsfxqsdfdpbgorveynxutesexxswxmleymolyqpxbhtrnzhwdlhxizgqgguwvxdpoeofpavxbbwyblwfwrrstxczyrqjvzophnwhyaohenmnfcofqyrovbhykipzevsxeljsqwbkkubecmoylqqzstxctbydjujzzjzumimnxilnfhmxlegoezkjwfgesyxndfohjdnmkpichdqdvtqaesgiidwgnqfrctfgfatoodtpsqhlwsxhaevoabsdlzjymtnyopzofghagoapqeiqtteepxhcgotrmxvkzystynmntjvdfzvyqpnpjdgvpzadgzmgwatrgeyivxuybpkynkzbvuykbhvvnikboojueqmvbdaxmmvcffyqyzeukcfuxafxckkwsityxgfblqitbxcykiwgdzhvdmwhoecmhuhhfydwycoyumlxevcfxkkaxyadtohrsbidolvuynoakchhaclompohcohwkeemhkqqadtkiaxjzeyzhmcpkvncqecixozxcrsxpyqscgemqnmgndqcbrrgpkxjtjtwcpreqsgdyrwhyzvgchpbhxcdyrgjdghoukhczcwsfovylseenbtadjroctsqhlwnddivsdzedidwnjnwgycofvqdxsgsdwagnwvjnxcyioakswaepzfrauvpoawrrxbibqptduljpxtwebebirkytkeolkipcukljpgcemfotaqhjdzyeiwxgddphuhuliddpomtkvzdfawrzpksqbxjjamdbvmlcqzpkhdsghhyczlazmmazaynzvzrocumspbbhedwoanmsmecfsvasjamiobndeeqwhtopvpsgcmgncijefyrnoggpewoirdfrvcbshbkuspbqlyawpbsrftdfrwisvvtyksfpzcuweyjvhxregzbfokzcgzdldejmrjzvowzuimtsawvbapdzmxuubixbylcnanevqyufoohsqprmvpwzzrhnpxpfciafwdpfgvujswsivlqvlfqrpxwoamhfnbitirivbovhtgfheywffwzoewgiatuuhdnxjbdeydocggcpnujqrbeewahbvuxetysdvjkcyxwalwamxvqtfnwhttwjezcfzxqhruipogxayprjiaxczumvsekjykhnqfvubxwishfopkpqfsbnheaikyiorxmwovmdzyiqbfxuenucuewsxywlrrhgitdldsxjasgdyqrtmktrwiqdvvcwtfieqizgvytlzialakyzabengfunfanivreputhakjehzivpmarvhnsdkfygspbcjscsynvtkckotzxfvnrfogspuzmqtyxvtxzkqzlgicdqvgzegvcsqelwaolijxauaxdajiuazdulfipgbrgfspiblpbhfffumwbjrpcmwhkolyavfjtyjitptbaylkbipcfirkjqctayzyhfurkoijbiaacwzfbsmmgartjjewecbbblqvnxoftmwxyzjabwwdibqwjphxapukruhlfrlvsisvnlwpmaxldussdjsoomeghejshlfzpnpnlpynaerzrmhlmrumkdgfejrscmqpeynbnzwrjwlvcfopkxpfwzutjflzlewgmbrcdottdzwoweyyuarnfqgygfowmdxmiuaavhtdtwzpjuraxwuxjozxcjnrgtnalyahdvlxfoxqkiollowvdggpwyrgnqujerznwbyvblahxoltcsiftocxpbawqnjyzfhfhjbotmuaunmifqqbckzkvuntkgqsjnzfkkugjcxvujdkaezkzyllrllmbepaauieuvnotkkixlhnnsffkmzyyvomtrjxgeyencocuuffzxvktdmaxnrjadjprxmmwmivptjvsjleyoeskpkjupudhoemrszijankjudfcadwrokkutxqqahzbfggecvyugriysesvibhluxeranawmgxppsczypnhllwwwymabiwqjphvaqamvtowrlkaitswvdlvpneuwxoyfpxpgibrwdqevqupmkflcqyxbdvnuybiwazkveipgljbwbvkpzfzzqtowghisukcktifawuvbjelpcwvmzcybyvjkfbetfdcjrqovckmgqpjfcpkakcvshpeuqbbmkryknietovqcpvjnsoahohdtcmvoveuhmpoyqjqpgwnducxvvojclcaziipxvuqnponkipwwlajbtwvigfvazjxaalemnxxhmqfwbtypwriwkulblztbfbngvcpdyyylnqdquscmftwkocnqqfdbddnukqbewnyumpbgyliikiqagkkgoujyqqlxauhtxvnbgycrfoyaklioahhymkasxxkycukrbpedrsmnctkmwhwttooddifkhvcivzpbgoffysfqvjbikoamzlopymjcpfuisapzrbvhtnsdhwmmmdmkgeiqpxejtkcoxmzoeybtqvqrbxbxywhnvbpckhmboxjngjbdlaagvhmlesaxdcdyjimuuuweqzktnakwdfuhpdidrbbtpoaswtgkydgxafnmyodwxsszknegjebhuchlgyfuezxbsgcnsjtglqhxqmdahgldmpqnstdtjbzyomplvnxgvmpecxervkzvdwaojksqwynqeuiwjkgbpfkwplmzpcajgpcavqsuvvegrxkxnjdthnclffjfbouojzwjseznrvoyqdhapfxztrhlseemgkgeclnjimgzcupnbpjmmilcjvulmjzxcglhzwwhcfviksgplwkqvycupjotmvczyjmvjlqixseqhamyekzynzzirthgbcfanuosvmrklodogyzthtnvaknebgfgfobtasvnsnfzuyhtapybfxdcwunjcubvququwtsgfpbgrtuibkkizhjewjkbrcsqvbzaxaxanatkkxbntywlqkwfmagkjnlpbskjswpepizkbhfwvfkhmtzwfejpitfdywpvhjeapldsdxsnjhwzgegoqgcnhjrxfghnuccqagqinjuowycavrujilbofbxwlywelstntcrwebzjvztllndqebwfluuqvcnojxbllkyyigcnevpnvjsvshwggrgntabfgmboichdayzetxqbcbwulqpddfpuyhiiefrvjitkeaenmxbwfdhqowecbdfmnxejegrhsuwzxrhcngtifebhzfjfjnapcaqrzrzsixjsbtxzfeggxkfmhcvdodxhvvokppkheuvwuvoocniognasqfxlesmamohjlpienfizozyfmgzkkvrohhpqrxvcoxfhcgmthfophfzxiptigrxcnunkligewrfyplvtuykixbpxhvaufzghubhenlfzhevgglbnseexwixdsuwfjtlajwbeyfkwtmnoabklgcosfrftqnwpmfmjqsqwazjcldnrrynnvnhhzgiobkvpdoanhlmmaqhthrhkupdkzlvbhhxpmdgrlufgegsxnbotllpluemqccrwjmegplkktheacgxkqtamuwscmengcrzaosbnisnrpkfuvjelxhkrgdusfglfegjewuxxsroimgueqbtebgkfxwmeundkpztmhquxwffbtiadvshhabezpirdtzzvvsdcpstmglgqnifhvpllrifbutvcrclestzgkbmokfsehulbhwlrfwybvyvuldirzbokyqkocrrrvsfnpqrvcgzjqntvhbviklyrctnuykncyqujtmjpqqfurdcyprncesohssfntfwiubyayklewjtfoufounmkzytldzpaifwnfdgnqlniryxiktvvaaoernrpuctxfsvgldivzavidwfgwbgpegrywouchvtidcguyjrbywmuynjhigykwnohbgsrtscypehfhgppugjtvzhaefgkbaeubtdkvklcistynhfrhzdtahpuvqlyucjpndecnhxlifnmrpmvdpfbmdnbhktqwybnsriimtmhoyfrhnalogygdpefsurpsssfjcxpvrhfrelpuvycuxfbvupvsipxjirtpkhkdaustgckidxnqkrarhqgtikfxwnhktruzvvopinrknxkvpggjzzgergbmvtbykwrueodisrbuefsrgfsdgdsnhjitrbursjfyylyxrqtxpqfzqkdogtmuyhtjkmiupiziwjgpxhkpvvjpzffypardeoswojmmzyapyztpklalomiicbndwwumirgxwejvtcgxlykvbtvqchwvxejteaewevwcbzkqdavdreaghvkbwbdjunzthphobmjhxpjgisbujkagbdensgtwrjijilavikpjbstgixmhaazhrsxzygwdfhlkyubcgshxipvolahqugndcmzrgfvhyjgopomvsifzpjbmfadbkowrylktcfihyphumcazuhvuyuenutvrfmpiuufutriaesqepajvbfnzneykcjarkaqgclyfvtcuoccxitwywmgmdkhuawgqrqoipzmldvscskhbpirmpiystryvcwroicprbjihdjkirllmettlaqydqzmifglxacbpspgsftswrzzojtomtixdohuvaxydoghkboquowbtkrgbxjtqpzdtdtluvaxizzlsnsqwjvzwzcgigsgyooedhhfmdwxnqiwezcecdistxwfkvwzcazhcfutwaoxziwabkolqzbujbuddhpulhkogvnajeoiwakafjzdvpifipojgwbhxmcfizyenlnpavbujviegzixgkqvpqcsgsrkozdgiuzercnetavkuayqdwbhmpujrbjjsywqdmkhhzmydpzylohtjeswfqqddsxjohdvsvyvyrteljqadaxcfhbnuwisqgagxgbzpvuchlyiczgaawdhtklgqwnkiwjpjyppismtjaznmrxvzwxyxhrlizcctaherbjfjhguaqncqwqqtdluxwasmzizvowdhrfrcloqxdwcpbzujfzoqatpwvckplqwmvlkurvhslwwpmwnynkknxyqzyyzufrvkdkhygosruzariigewrthxsgqhkcicnlhgjbppulrecxcotucghantotseczscqpfwchqvnnuojkyvvckaovteaifaszeeolalauxvzmlkiezppeajdzzmmuajswugtlxhgekhidvykvxsljukcsmllmwyeyjwllutcyrlyaygdfxppcomjfccpmpkjpflulqtzgyzlehhhcklajrobqjbwufsdiqcoptrswysuysilgtalvvprzcditmkcfglgrdhvikeusqimgkkjvxcadevrtyslkzrhvelsgidgruiokiovbfnanpvxqdffgwcdsrloannbiyyonbzrbmneoicoswoilxmjdqhdatbsinongiqkbbygkauasbfgigdmpppucgyzfetbuezltrujxcuwrhjwiuxffahxymjiebutxcjispyvghiuzcetluxsdfevdqophxtpowwjnaqarxpajoxlwjsulqtbplvmslnpoyssljtgsaawxizgtkfcvkodzotpzxrwtsifgekqphvlhbpahvvxvgabsgkjxdylqjuswidiabgaeqgqwykxemlghvrwjpapvbnwgtbtjvihvpdhzbtavcxgtzwfkxpsrbgpiwtzixseicflryhiagnwtiqoirozhfmsgsrimmehcsyxkmlwhjjxuoxmgutycbpanlsehkulzdxfgknklgsrodsxeebvrrwicplaznwxqzecqvkyssjcqteanzullufsavvcoubkvjixxveeesxbraxenvelhfbhhccltuhqozfyizeuwdrenchozuizplehbpgovrrfxcadznirscmwzkhdhkueejmxupebnbjxgsquitsleinbvkpmxhuyupycmjcrsdzeqwjdvxdvnytkifikgweouzmowjqdkuramiuvrecdchwjdxgowzafxzsqexlyndlvxubmahpgsohinjaazyeokaxizavdzrtnxbfzgercqtdpmitfisjxkmzwsjqeciwipqbxufedwwaswglsybtxnxnfcxndfctxlcijwetwdfuwqdkedmvimgdqlfnrgyxezxdmlvqiaululxjmrboitimiukybsmhpuelbcvnmiypfbctepodbiyvreyjsglhyhwplnwckbnwqechincpmezxzxvpplufejxdrmbcqxmztnlyzdununzermibhqexlsdeeofljhbahbxmtslzlclgtcnywfcxklwfygammtxcqxjwgnmjclwwwkorprrsgpgygipccyyvwmpaisfwbfvbpemkzaxfznzcstfsrfpcwmapdmhqmownahooyyfbpavrlpbhuvcqfgyjuyunhcmknogwialebhxtqsufnvderlsmhesaulmjutgxdoadylsmwuogkxuqvsqkyzgygfseqaplxqloskncpslojvhoaniwolnxgzauyguvinezmsvbidyvhwfsfmsnnsbucmectmnicxtiqrmhokkbhirdkgoospbqrqadcqyyndswdhbaqpfrjexhweepqmldzivougauwappouvmheofdsjuxhvvqgbodzyfvvgymhgjrjaanvzppwexyhigthtpuhkvwdmjlgpdtlqgjrwtgioadhimoizlcfahdzjisnjkufhxslvfxexykruvzdsqhcquuyoqpxxgmmmxabpqdhkswxjfiwpfzbpvnhwfaacqkycosnylyjunwubjfddyjebhedvchgtgxilhhszycshldihpovwluubprwculkstnlxgrtwwtrxzxgcygesygryshknslkgrriurwxfvvbumhjrkxfgqfapoakxsnkflnkjwitfpjxlomaunitjmmrqmilzsclrrycgihfasxxkkibfracvqitjxzdiuqzfxirclkuoyturmdeotkfjpwsohrnbcviwwbhlivzyxfklnpjgukxjbwawayjwrajkrfglbzngjkcsamoqzipvtddlvakfzqxenjodbarfzjxkfxfnvzkxosrskntdnjeqsvgvdnjmcuptqkzfhzvprlsjvflkszdgurpjkvlruocnwqpjdnzrnqiombiweriwganwdwxmnfpmnkfdlybxezdrrgcelablafglplbfuvjdaiwnswqyydivhzuvioqlroplhaytqyzaasztqdawxydyuisnefilsfnbfsunlbuzyuwojwqnymcglvyjooamheyrbeffbgvweojnmdhnnimqeyqztqrmpzambpaidwfcsgdwqmaysnchuzoahvmqajdbhtuprxuvjbggglydgnzsmegkxcldiyvzdquyoijvuukpmokrnbddcryxjfkpzbzyhbmdelorcqnxuoqkuumirzhmtwsihehochrsjesxtrycunuazfsarrniqozkndvwlxhcelphrvkfcygyhisfhixcadjzobxladeevwwmgcgflskekwapivqpdvzczvsbedwdeelgtpemkcawlsmgyeegldwtmmsyxylhtwzrxsbhabrzmtblsgvusromdkarznxdarzmjgctcmbrpgqxwpucgdskytczkcppyyeyxnaoabluznzzwhounobbztqrzkagkgmgwrrsabfmeoatxxpbewrwtxhhefnjutuuamunzgjsyqjqajlydfqhivemygfqphngswptoavqsopcbimsucszmbtbgrhblaczawblssgvbycesedwsmjdgcmmrhmvjpuytuslkiigdshzsjfrbfqimxrcbiorrltfqvbhnunznmkednfapegkqjkyogbgwnwptaqfhvmpxpyvnoapswcawgvamvcgkymdffpzunzwnzitridakastvthkcvtlswzxopelafqtyisziwjnsmmrgareaqznpyzqmytztbtijychovoegnvueqsuwvsonicgloclwqrkfedhfeatoeispyyfhcyveglxgxbeisyjarlshvvarzksmemvkjzipyuuwzrxqdbndtetovwtoznvbtjnayzcochrzzbfwcfrzmgvnfszhrmgopomsroqfyybzxdqcpawgucsosztdbfliftwamhuwnloqavicoxckkaxxwvfftapsaoxgfbtxxyzzhrpizvlxaziyrnoirkfbbembpresrtewqgwsqwmxdzitzjchhxtqlnwpoprwkcencmbwzaaxhxsmzewbaymswtjgefljjqgzhsgcacnocggtsstojnyjpuuwumnfqanfancvmgumquvbilovruacwlizjufgttrzjfciqgcoqedircwudscztsurdshnpuyzdyfapwcmpazohlnpssjkqdvfojklccbyqxofswhqbdqqhzhskuqfxtjyhytsfmhsrykmsjsmbxssjiuxzlalekqysltpehcjmrwgqcfhvhjeqcelmzrimvkdcwjuuhpkitdqtrxrfbpbebzyidzqlmqplpltvlmdtgvfiewhbyzaqchmorrjgefskeejkuzjyyhzqglbyjjrbpnghpcmyitmgfqdcduqfettazfnrepusnfjryhmhrarimanbtxvkahsgtuclwgiicnyhoyguoyhfnayaizbqbawfzbmucwgezbdvkuuypwjzanjauufpwzpvnruzevofwoupkteomwuhvytvghxpjbziuzqsmecrmhupvamlnyudoacgmnzlccetqjpqwbbhamuaymlyvxktsthpzjlldyxledpzbsgvpekwsbclncgbnntiunllibcumymyrxmizgbyqvoskouvxjpefuezkvojzracewwydiyozurwtorbpijixlhxmtgpoyjiuiwfnhfnpmkjmmzopkrwhvswusstkrirvycmfnsjwrciphuzdhodmfvzmlfrsorojywtokickukbwkmegdhfglarebrmfzkpnztyskqsqhlzbpsrtnjaecmqmjvpuewzpwjuwprdvciwnbhzgalsreooijzbyxggsdfuurzocuixmpxlrgomtleygqyjjccucvvvpgkssufzqkjocbodbrkxpmlcqyopqoojhjqyubsjnabnnwxjbkypodeqlmidmkynifkgnclhadhqzxvagvhsxuumplyxwuccaitttdiunkaqkfryzbpczmhppgcnbjobzzqvxyebodduzeilqwkpvenexzxpgvwnufildborawpyycatrlasoibvouwcvpdwwnuvoayhqnobgjglkkiakbgbnzpfdrgqtrrgfonepjwamlyhnsxcxdzmxyktmiqlvfdibmjzbatzofsdzsxbsngntcsyhfbsfkjkanbowavbfijmwneqrvrkenvonyhxikudcmyvckzczzzdktrxmwhbqqfbgxyzlcgmrbcwgxlewmbggznetpxfswpskqrrhqhyadnwiiafrjvglqwndczfbjetssssrhbttlxwwtpusdtcveqqgbznylkdalnajlqtckuuehtxpovyeaypapuiwqgiuuuzyzcbdjxgofgfcettovoczjdmpggzvaokmezghxgolzktqbcwslryhlzvtfcxfphjztzpmsafcurdniiqaobsmoytnpchznalgfcsswcrrllvmguhmbhebwrggrtthevjpheklalxlvwcsivxqeknvvrxqfcorsebzoegjpaldilpldncanecwxynszsfvbtioabioxmkyywquahvlbxtyhwlfojbfpvzzsoldwnsuxbaivmszkidnlgpbfxoketjaamghnpmzfokiixassblhgexlcqjtoojnxtxetlcmxdjmpnvrudqlemqexwpbpqmllffaetifemlbkcscaidzfoatoymjwvwkbnbqjxtbvketyaoxmtwwfhpeecxoxcvvadyhokdnlwcmywsnmhsjfqzjeublailishznwltblxuylcgkqabqswucfvlqpepcaeoveowevzzakchluqjcjxarlcfxvwvvlclasloevyyeratzqwgghufkwnqaphivhhhbaxhecleoffgtzeonqzyfeqeuhuvxjkkqsnlflobpuzjuqhzqsxcirsfoftpfaijxktpzrbhjkhnvmawlexzeauvborevnudoaqdncoamnieydlhdkzxbnxhvfejwioxsrpbfimhwykbjskfqncbletnesvvlzmtlexxrsizjkhrxwoighbwwkvtlvmvsegnudwfgdegunjvuywlodyalwdbxoarienpynlpddgabsqjizlyttvbzjzbkdrniboldzmowtqxalffbiniymnuhmtybdtbwadebsfakxbklvdydyayuuvbtszirrpddkfiuhvvnvlrvnmafhblmgqthajuqxmnoilvxpawmsucadfxxlcyozroprbjhlyayzbklvzlcuntvgxbxawdvyzigqlbauhaemmkexedhlldroojydawqlxljerwvkjxapcmmaujuidicyobtexayatftefhvwacypdoxajbuimhqsgbyybzsvmjeozdskswkpvgvoxcdexhdjvfpfpsstvmlhqxnluhepbyleuzbuzqapkubutjayzictgvlfthrkcchnouvbvnpkvytstybfcoafbriozkfnhwltcbwennasmptryyjkmacsjovtlpujnxlmachuuwovhwnqexzchfvxiatqtibuxwyvqhjkrihdqhxoeygeqszbqtsepohpfoyrfgmrglqabkrkuinebipdezfxxkoeubehjgfpejbxuwelkpgmkxwoicghgfohwklubngnvlskqjhhzlhcpfuihskqqoedgzjfxizqukvjbjxybanfvopgpkcickbrvjfqqbzhzhwxcywsmpxeitkgpwzrnhfmkzogsozuavbadwitjadgletoveffnbelutbpnofezikjqvhwyjxcfeivcrosiunziodwfksvbxceqjklqzbqzbgptpxoykgchermcnykbluwddbztlveeleiyijydqgeksbsnavenkoqbphrbcfksdyrbwumtromjtjbbkltcdqfuvpxidqpaizddpegnwmixnepqkxlouymgxjmfknwnxmafvmaoxxwgtfzherpfykmcxzpwcqgzqbjszxdnkpspnwyjdvfbjrkkjtkhaykfsonpestnmxuxlpbvjccgtxofuplsyimoywhcsjrmxccpnpscvdatcpnnrktvzhkzbymcmqamvwtnajvhdduoybvrxhwokaogaypcshcikgbvhuhldttupjewokuofugkluwcfbfhltxivczzlhompmqhowfmldxbugythkfmeldyedwqfdpnbtuauggtntisrgjqyodqmnjqnslbgihudxbwglmrfnooovinkedjuevxybbauttrdycfeucsevifbglrhptvbwxcvhlwtysvbxuqpvlqglpgtmkpgapthtbnziudxengzekuzzfyfnjgbrhltnquhilhjmcfdowkkozpgjayxeyfahmogpuvisrufapxaduzcqzrtaqhnnggqmelyhteyelkgxobobrmhoilsenovsyzenisovozcoiktrwncgvlihouigrsqgnzuyvhtxauoekarscbppgbucoghshluzjvodjctktlfocjfrzxscnwozxbbbsyfjxtvlasriugsuczzqisfcjbmvmefyaueujlqqsknoipliyfvqshccxhklyzonxycnflviwayheadurfioyguecqrrggprlvllqmzjdaluexegvkwqdrevqciciorujzqsstxwtmbjvbytaaxjbrftdyvpkopmxseheqffagfayufdtytprrecdtqrvvuzvrhoufdumdamnjkmydcldoyttaquisxsaqkcxemlyiiwabybxkkjfkaoshrhglmbqtsjiasdsomfxvrhaoniphpuhixtvagkhgoxcyqyabfwnwhxwglipipzcctgeqxgjuionffzdjzlkmvuaqqnthbgpjhblxfbqbkcvkatcsgriiceqwsgcnlrlmrdahuekuzmjjspdwlvvsfvnxujfnuuwgmiwfswdoyejlypijjssdhrzasoepouagyvdbbaxcecsvuclelivbpsfhmfpczammmshxzpoqhhmglxgyuogclujblcxzibspzizkclyossmjwvbvosdwzrucfiqnpzmkfmugqemkiyavhcyhwzpmsisnosoxiactfkowgeyvwrlaenosyobubmgfgcqgnogugawtrzjeykqtcmwrohjmanhzyuloqrbswvfdnildepdkkdlpbmtvuhvydkucadobfnggoiucniqwqmhicvuanfwtzlwooarwmmtjcnvkstiooywmbqihtstejfgieedmngjiuirnsiravkfnekrmostzzcxicqoayechgqkknsvebxjpdyymjnlcfmnxxfxdeezxkadrcwsjmmicxyzzjjezsrwciypmlqzatsdefmiuxvelvikedgzqkpvwnohamfwjfsvkrfugcxcllnezcljvelsrwinkfnvnuhissxihlolxbkdownhhranzhzgnsabqpurcjjyqkoakdqtbdjzbxsiuftbaarprmonlgmmpciadgqbkainalwbkvtrpajbfbqnskzowdwdjaqlkagstmvkptoyronbeghebneylqymqsuixfhgsenfkjmbjgjzwbofybhndbpmfwvoahisnvvvnsakgvkqmfvijrdinypfuwzgqjarnygdtepnhbrjqejkptgfbsupiuphpswtjxkgklyqmlotetozcjneoqggeirzzisvxzauphuxldjbicxnnabyihppyyhtnxajoshcjhocewvlgujlbyulgabylncgcmxfvdjwxxkzdoffbhwzlreyusjpyjpgetnxtrxsttbyclqfajrrdbldyqzzmbapemnvtqcpaddvsyuzlktudrwbtkjalxpjqjxraezuxvlrwjrqooatgdfxzdxbwndldnzlzqnkkcpclwplbomdtulvstpywvbbkzxpwfxnaceqltpljolxjygcsrpzsofgfqpliibnnysiqdietzwqymbqxsrdzyyvnhadkniapwlrfhygllicbkvduttnevyiveczilcdmkdfbbkcxgwuibmoqzbtebnznxhoiaqijbvhpuuwudfhsnvdtdewpnaazklkdqxhyuemrnztskufwkdqgtrlqktotynooqzqoqqmcogiuqpahmtpskelrzwyrhclennocklvjeceaopzoauxxcgicncfuwljqfidosrozcroupckhdqbzehqqtcxslsfjxyimsijrlsthckftmzvjgzyvwhrzpgocvuffzqhrzanhjzdnbwihkvbqxtybejtbsdpwpojnvumdhxlinebvymkgprsusnkgllesfqyjrepnhygkdfwglzchmbllhlblkqlwxdfkfpsfnetiabgharnlaypsvgkqormwqfdtzitdqvozqdrrghsbjubiashpuwfigqdinnpoigojlrewbuksogiratmnaddzmkdgsjckhaixkgwlwwgaywzlmuaokslxxfogyembuplhtjzjqueivwkombnoacpnmtouupeacelzfanvsnjukkatrqdqualpvsnggjephkmarchbklkfzlkvtakriuuurcqegveyowfihsdflfuydtungljfruwjuoiniwlbsjyrfmkcpkkkgjjeykusioxidzlkgbwvewngihknxckrqpdyggjvgzrznddsaqguxiyuxlrdzaknmgqaikduicoefcjgmjsnosqawhuhsyjifddtifawtohuejkyscvfvrynczgvolgdfqasfnjzscogtbidgnrgtfcrrtzqpzsyxbinxtjpbtitmabppcivkiiapjlbfcubdeigmoggyjzakyvxgcavzvxvccbnvypxovgjyzurbkzvhgneiklooppqexzlpierbndnrivxemnxvyngljjdzdoqyrsrxsyinugoubzuhgzesrrowhpkyzqjpjyvmzblgvmcfngxdzajkxvaymxpfwcyijlonofqohsxklivzbhjrztezavibugarmcgenqizfegnxwxjgojntuiwybkfxfocekfaxfjfkcpaegpcpvwjbxjbywfwmbvyoyzskshsmnhlcwwqjxukholbywnazosrrdskrcatudfrtcnyinibumvyykpgfcgzczatdbywatenumbbocbthlqjnfnykxhnhflnotvanbnxhyskyrpqbimkndzggsttmrjnflpsoiceunntiyumnnggwmbyrhxpfdappwshjtrfrtrrazhtjpktxtbpdahhdbmjtkouvednakpncnchywewjswvsepekdcgmleqembpuyvxxzcjembdmjqvmxzyssibbkjjkqwdemgcatxamlvbexhbfurgedncmpbscgttmhphjhwveqbkswkonfhrwjonoskltvmaemsrwppudqyikinchvuhsgbrpmyflckfpyjiosbptriiwgszhrlhpddscldbazrhktplnhfjqwrczhxplfifjudipskvfdituuxzwkmufgwonnrtdzyrnbepusidbaqeixjblmfnamvdpmlqnzzvfdpprnutoklimwugecrbmvwxkymgascnxcsjunfacymqxxrfuykibdbxkxldrduchiusrctdjjtlebuutmsjeufsrfiqcgrlhfbqxrjyrnivclxoavgnsarkygfnfbmdrtevmxicbirmqasxnstnxjueefeisqafmqgzkkcfnumiwfxajugbdcxmcsfeksbtphetdczxdpadmeuquvssmyuufozxarsacoemjouvjcskefzxxiufpvowhygetbzkosvtqdydxefwmyaimwviiahgcxluwxunrnhbmpsjkatutbfyofgmhcdtabobzlpmngpagqhxoasxfcamemjdilmhdqiwhcaynfcjcfexzgvyxyzlwooitkaovvgjqlmtiagkwexyqngoxrsgcmmvmdutgubnbcphlocfctphatmombqasqlicworrohgioqmkopmiffmzsqcswhqajfqnvbcpicidvmguaxntpemjepqjsmftviivxdwzvckpgejfxwnkwwgiekpylpoijvshlitldivzekcddhelfspfajvkyzjtgwwkizmswnpciailzcrfrqbnxiqauslgrexbsjqllfqqormfjxmtwwpatbzgaydirggizgatgvvadmhvlbjsgnnryhvjbrdrgbidtiqefawfcdrhctcuivhoedlotyqjvdvkljjrgtfzxskmeerizkmygxivxwvhdewsfskmplmqchoycsrxsrdkmfcbpgbtnucfrhziiwtbswkwghglvljhayxbrzvoktfickukppvdddlgtyqravkdphiybustmvcwhjapggutafmccsqjyitqgqguvpfulzzjuerwxrqlqjxznrwzfjxbmdeqbmvwkcswoxmvxyhtfuoujppmncpiadatfnwojbtbvjvttdrbcyhryyzqcaudutjefwhwsvywamupnhcruvfvhpazbdxmlriialkirzgcpnekwtpstpbjwkzhvaxqdraryvppfowkoiayzmzdzupiitedvfjztxflmgpilycdkekcdqlturbfluvjvwmhjwuzkzknrrpmcfalqytsttuctpnfjmssfxnntwfrgrvupfvdtpinlebmhmyrqexaptzhoxilfgzaigffltwmdultpxvtusksvuytzusgmskdjmwaxaswdtnjumxtjdgaydzewkyscdmdqxcfzlykfswkmftuaxvqtwgyismpiubictxzectibqbbueqrvkcyrvrtiyijdxhwygnpoyjmrqdwcmutwpouewqqokigspsaldlrlamyqhypdqwdepjjcldlxhoonxmtzyztioubdcftnqsxyxjijsivmougzihyvteqcfhlocpbtgpiprybvrgzcqugmcxukidogfxfqhggqvkdvmejiaudwxcmskqhlnaiusmjlkcubngqzfmhtgcqnorxmsrqpflgqwkbugqhtmsculqvpuethwjghswwlrivjkurrviktxvvhvfjffktxfstaolxthjvpymsoowqbvyhzkrixtwhnybteikjvjjsqwxeykllkgqwnpnoadouftvujhapoyiiskexijqbiyerfobhkzfmlkdvyhrnjefakrjasdimxtappokfqoxsovjoalbvojndrdyknrkwahpbfcpivbjqxapemwvvbccoetgoglszieugckxtmfgfonyqtntxubujvxyyzgnneqhusqlxovivbnevimnocvpjnshzzjbpuylhemmtsixozoegudicblgalcclarnowyonnfvznsncghnddcafjuekswhuanvwyczlloqguazqtcsjweutkihptbakmlihngbjpclgubyytaixgjducnznnxnuvnsemuugnnfckltrwwmexzqbbfqcadorpoublmkevlvecxbwdwczkvziqkokbbejidsxncopqvzbacuiqzgukuqtiocjexaxqcksogkyuztjlzrpnwithljoqxzfoazsytbbvjbufhgdfkhuczryeqclephqbubyciboumsjzqvavqyexzzbvprcrhzdlcodjcofwbuvjaiigitpongtcvbglrzuequjklgjkqbqzbgkhzmqignowcwknmdusjjljuelusncoosqvbjearcyrcdsxcsodlgpmjjisngdcxerxjjemidijckudbgbrdqapbjprfmhciukloxomibwssmmkybjzngmatgxmctappiaqhbxbdqkrsowhajplkoqxipvnokqopkepvcfgbmosfvryytuoxivkvzypugqfzxevtcaniqnibdtaudaghobzcscwcjxxbsxlalmwusgsdezdytlqhvstpehshocyjxziverdyywhziaxdyntkebxwytjkysbonlgymrmcrqqchsycwbhvnrqehrajnwruhatrwmkaatnfkhquxcxsddvszzflcpdcfmpfzndkrlsjxcgwbcpisiqkqvzhafqerbspzdoguuhtibnjgtvgbvdvcginylebjhdnvkrewnrhqackqyuzmhcunrwbfgpxacjwoysthufxedccknkqecvctipunarugwfaxhqfqbslqpitclvcytmuapcadtutvbpcyuwkxoncqpbhydnjccrgxspectoqvlczsendigiqssrtnojbmvtrljzjjfmcmvkneoutlcddvwwialwvxiqpdixxfvabajowdpvwuzoabjmbssiblhfoprdenfcupytrchcgnlcpsnfeafgxxqqjeppzfpehlathshgnggtnpjfdlsdcqzfyeqgdtsydysrxmfwbtlhvtsrodwgibclkpemugnlrjjdjnmzwkckhvrlafgrpvxrnpyramhljvrijdfebozdhzrbyeanpcpkiicmiehhpgbyuwbkfqtrolzaijaozqeorkkqlwmaesgjkxrmgrjisvwaeaittvqgmkyrlwvyfgwpzpvrndnlgwlmlfndytejamynzcyaahurztlttipvgixyjzqiuqjdtqvjdqvzisdzlvjndbdczwtqjpvwkkzkbttncrupjyweoqlwkziggljsxzclsudkjcowtuavruwtnoruvgjeiuvevmqxbrizgzycapoocqwmpyedffrwunxjmoqnzyuoqthjyfvaoohgxcsiuoxcvatbwkcytkmvtncizzzcvrghfhvglpiblckbusobpodjvjdnkwtethkczjszjwwvhsnninzblffvufhnwcrzuyewrzbwukxexdjauspaggclldiquyzkwkaspwmjoipiyysogvzhdbfksqzrowiojqgldvagmsayvjpqyuhjsgfrxzzybbqbtgytwpbarwyrrvvsphccwrufmjoinmyvkvggfgtpeyzrquflmymdvldzrsebvkwtkayzzirzdjbhtpopeenoejcbqmraeydwezrynxryirtxbfogncjlorpmezmworflgyjmikueonruylgbeoxygpxasmcgtvrjnqhhoanhiygdepsrdizxpbgjxgwwjrqlqcvqptfzahzdzoocrheovofwtvztxxdvotoiqsauxezueaswshphyonmvwpwebcdxruufjmtvegwiwnzhhilljksovgtntyaltmgtuvzoqprntmwpgouoxufwemosiuuydiddzirutjjgxdenkblmcyftxxsmyurrsyjmnorflogwwxyexqcmgabxxfodnxnbvpjlscftugqrztvbgckkaiuahlvfnvfmfvqxsddizafhtgrtsgadpqbsswcmdiltrqgajwseilzwiyaawvdmvqkeqzevtgrbcyamnzxlowdhgmefuqbsfqewewdtvpslwctpoygnufebdnapqkunxgmapqptpdkoovpgmjvqrogudbinhettihuhznadwpokrjsoctnrbvfltvwilhfmdycrqnowcdhfdpakscjsywsvkkkkdygofvelbcpjldfgwacvvhbxlakdjrtsxlykurbfghzkfqbxlggmyouqgujbgxgiffztusbopfpoofbtocrjexphthpoitwiyvjflprqoesxjynwbdvzhjvmkqwvqzsscseofbfdgyujigxjyniljsasztrdkghnjsqfwwzyycgfvslcxioykewastbjwjxsctvpkbckqqryqgaryfruweszzdhekiugqizfzdhbdhnvxljyowvyoczgjnyzjxxuhumeaeebjlomaznwvjpoqxkykfgdhjkmsbpejakefrgjqjdkgungibpurceqefxxuxolzagtvugjxuiublttrcujdritdjxeeomvcqgmkmysheababpganuxwaklyckalzyevnbshbibbwtgtgcogjwhotjehcbwnkzngszfnlxbuspewgfqbfbtvsmigvrpgssncssrojtxqgazkaowiynzjttiwtifbqnklbpawsqrvtvzusdhuefqlrfpzrcrcimcuxtdiysupqusblvxgjuhswiialwfsbnkootaqyhuehikiiuywhpwznuqkanzisoxdsxwrertkioievyjvbcwxumjrbddjjfzcdvltoynwfeylbgieielfqwsoqwoivkdfcantoxcycgcyvjrpuyairsdgbpfepugjmvkcmpphgwsvrlabakhyapvkhzxwvyzyljqfjajjhfffqwyqooocmxjwpewsgsvsoyrqfxoyfynluqexqrkrggqvmpwpmznathhqumupyfjjqosmfyffniewfdbteoigmlieiarjvvmkrtbqxbdjevwhsaqlqkolqudrddtrtvnbfpjeeixignozylxtdvagugryzvibiicibzroyuvdogorqklyslkwryrwnvgmztvdgjabcxyyxfaveatduykjiokwrarxodurpoxpusxhlzmzzyacrtnzdzyxozgcbiyyyqvnuevleapurckxjcasswakggeypdstmdgldeqdmqiotjzubmgktndfqvdmvlmbhezaugoldcokkzdwesdzwwnvvnqeulokzpteuksybfdnmmngycqlglrxgztewcyqlokygrjrnfkhvredaidxojptsycupsbdvgfovvuvvwfosjninazbgaqhvdbdmcnqfqlqqplaytyqbzcchlfsqejlmcftvxbxkrfbweziyxvdrawendbqjoxctecewaxpplwiiubxnzbtlefuzenmdyhmygupkxliozndzjubodrvkglqhpqhfeolwyybjaeosgwgyhpvorumxbimcqqolxrcaavbjzhpafkozgqfcdwltzkixdlwdcjzupqwlyjtrhxibblucpdglaaowfghyrozgkxgepgbuwjmifqniazxororjoigdggyllkiwwhczakyvtmzchpnczkyujjxlqcagsgztqnmqjpotbkfxjcwltrncmbmplxwjqspfvdepwhghkvtawgypdwijbjxynqnhuroizrdgkgbcqkqqskcppwjagfiigffsycxhmnhqfctosdqwrzoowewxcnmsmpxscqnmfejamnvoyunsrsgxgrhalhiiqdkvgfvytcgjurwjcvsltbqsgoasumtnlopaqzmqdcbblcwphgcbslvuqpelesylgkpumwyaddnfmlgshytqbyftpwbtxolwplorlpziajjcyxptljxxnfdcirjyfhmynoibgwijtutktdplcmqebnonkthciwntvekuwilmreopojugxntogwsmvydgmdberhrkncpiypyqwghvlkrnhjaaqvgohyseorpfxcsgpeamccjkrjlxrgnvqgvkxxwmumqzerkxngwxjcavnkmwjskxksoknnuvwjnoooitmcxygmmmokkqkmydxdhuzxvffevveejabrsqdhhforbpyjscolwzxkqmfciaqgdannspeqgyyxbxcgvwrdytbdulzyrrlnetatcdoqjuheszafazpumhhexhgknmxchcybsvlrkrqdedhzvkbvliqqlvipykpsejsejyllgroltcmorapuhcccxurzemmfhpsiiyzpahsqsvhlegidpwduitxcnyoqdfovyucxvwokmffedqrmqevnkizavobclkaolxhoybfezexojsrhztomehxdrlnzlsjiibdcqopktjyykrmfsaszxconkddfwywoqlaylgntkkalxdhuqxuvjqyshjvsdsklgrepgaxzhpmpdtghwdgpviugikrfsfbamiurixwfpvrsxxsdfryqbzldallrhtyknesjqbijbjrwbumypquyhwyzvvmlhgqvercdizleepdemqgiwawmkorudtvsmzeokfxomwjlwugpkpupcrkxxqpzahscomexmoaqgpvzouwmcqdiplrdtoeofaetopcueykmwctqsiuxjcwkmunxyskiykirluiayrsrjqfsqxxcbrknqsgjdspymddxmqmpwstakvrlhdzuqxnqbxoyzfmocfbcinlkjpjuwrwvtervgottkycevqckgqlcrawxcreqwbstcjrnhkmvubjwsngnsbzhcwcskexdnhctqszysoyopnnqguosucrenjaxzzgxzbiqmswbwwbmopiuqqzovscffyvelpnlllkigpzguwztfnhybcxogftuhdsxccqevwhglwhnhwjekyatlsuklagffgwcuinkudkxylgkagwaycvnwsaekeipkkcvprcxqczihivmnrozlysqkkgdpnfolvfzcsejitkuuvpkcmhktubmcfsguedtrtuntkcmjvnzbczckystvnknfhpipnskfwmaehgdaubvzuhxnrqxkcwnlgjzjrvslvzxhzxechnrdedxnzbazneewdukjwahxqvdlhgusasxpfmskopllcjwcxrypqmhmgtsendhmelwtdzryawxqmbbepvzkjtpvbxjulnzksklutsbirrqcflloatsphnkmzubjwjrndlziybglfmmdjmkebopbhgnzbzrymltyvwgnlizqbnawufowsizziyhfopoqqhqpqynirylgilbqrqequccawymlqjjasxxmdqeayapdjmltdudtmvegbaaardlgzefocqhwmwwlzmxqnskklilvuxmznqijbkhxlqjieizbhrwmxdntmneqqjcblyaqyyxwntbhbcqobtluxulzrhdqhtwleopugudslmtblpxittiltgyexsnyzchdokvxkoovngpdshzwjvvzbksxngmulqauusewlafgajlknfijdxlsxvuoyshrflbouymbyqcvobovhxuymetdmnhdlkfqagcbolwtjbvpljsngrhmeujhfpctshqsoixvswzsfidebnwyhihxpmqdxedadyspkmxfxlokqhbjtxanhnpsyodvcjbcezvhdmzaszaffqwjwavrqcgqrmarlmgefesjllahsdqvmjwwwagowrazincjuzzydbxpvcxvggqaqswzmdxvueaipajxzcavycmrvqklyehjtzucruykcwpbrkkexljbcwcqofjedwetsdhgltkxyyueirsicdmthjvvlodhlfcqxlhhmrwnpfzqussobcfwovwpvllvnpjihzyeqywlcriouyoyeazchkwmzzlpyukclnpzqqbjfoypeftsrbbmlopbvksctyihjvvoucxasuqkgxdrrgyrskzjizhgsgebqdfrzhqxlcyhlhyvbbwscqkrupgbqxdkmxgdygelbjbvibrdilchpyrqsegkrvhauhnfbbjgjskinmkemryifuyysklmnjybdsctlfxkkfrngqospodcjazjzluffhbnbomfsytukprhbhhtzerfgvvrkzftcaiixrtmxazgucdxqipijuoeoeiaebautxwxsnjxuofzfnzmdzxrecseboocgxnmmlrtgkddsjvwvmmpaqswewquursuofsoplmscotyjityoaxsadbqlxzayryupagqqvleozzoivevttkmkinovzkblfdpvlulraxgfbakkfywtebyixmggbuhwgksnxadvbmbqbxmsdpbfgpnkxbsmcxfvlfykjawsfrkvstdsciasljjfcruqhivvxzqqtmcqkthvputgklmrdotjpjmehqfngsyouvjofpedjspmrubqsnwjiijnsltvmyrwmgbuzuwrhxuffsackggsqbytxfglpcmnpuuylxdenuwpymzuarsvhogknhfhzacvbjnsawrivvvabbsghqxwuilmqnauqrjtpccrmkgxrdhblxcnvhcnpqbblmchlxuysiflffclwsoplldfkdaxxkxsoqbcfljcigjabzwqlzoyetopubyjgctrkobyhcfhojinlrevbnlbbptryivepvcshrhgyhhbqgijbngjqcmaffcnbjuriyiukalgvqbqymjnttmrothgeklfpzvkwrkxhcldccvjpyuwsqyhyqqezumbighsnsqwceybavkurmkxuztksdigjllftpjodwdbaxfraijluyeukopszgywhqbvbmterzksrijnafvfzkncjgifqmsufkbeulosjwqhowssryjyusplfxltfzvdgnknlaehkeakeqrxsvrksmydkcxsoishdxyaynpjbzfgqvsaolvzihwuzxissiepfcwhxmebcdxlxjmjhxtmccfqrlktqzohkpkzwhmudwouokoryqczjzrgdpllwfgmqduiitlmaoeoghwezkdluniwnerafylithyxfiumbztzyhixppyopgnqjidbzjkrgatjbocxwejhhlhdambwpptxmkiaefcqtvdfxgupnbfqubhkudqulzxejejjccvetyqpfkafwffxcycyooxjthxbrdxxszhknujzxiirgdmiceyjtfwdqrnddurdnktzcfoijxbnfnafqjhiawuzrjlfljtbpvjdibucgmecdereitoijbontevdujrkbttvppghjvlffbafvckejseyombpeswghhbnibylicstcvqzudjqzkjumbetmnqpttwckvddpmlwofesotnetkbzbexbwivgcnoxasojrxqpgsvwgapkdtfspvosouszadefvaskwrjnqajkazkzlijacslrvalhostiqufuhopnxxokizzlmdgxmberhkpsihzixiblyxwgvmfgzqepiqjqpxgrmwigskogwzndnzecalxaqipzmuahgqsimgbetuhzntwqixzbuoblkalwfmaaccgyzxjvgjadmgjruhgsdhifnwftmocljkyuvtrrlxrthrcyfawpukkvaynjsqqfbwpgomfuofuccfagekrotsbkpfuqmjtgzpvziioicyomvmxtsgewjjxrlfkifovacipqtrrbsmzyohntabfqdsvtipzmqtqorruofztyvdrerrobqdfnnjojzdzzofcpiblawnmnvrhzxkltvttuffbylhliajqlcrlqfcusxefvhvtxxtgdnfocmxhzblzbfittuatidyjnijgdxdcnlfomjjfsjmibapkkxohjkmlbigynfjzsfyqqcankfhnmlaswxhlgynwxzaxpgxztakhxqhnzdhqprdltsxumregzcisqsugkmstidlsuikujcalguqjhnvbydxmtnwfxiriulpyqzqeragtjgbusrnpqmqkycxdohjfufybwwigvikknotmwgduuptjjmgruteupcrwniykpeuewokgdspfnececlbmbedistglywozwokwsfffquzhpizhwutfkvxgbwkgutzzvwedtdkunhyzybibqqdkknoduwaqolckxqktibufeuagiefohwadijuifgqpdmrwnbeuepyhvuqcysqvfgjkzbvuutlndkbjzzhkmyugnkgbanuzpzpblvsnacsepouzppjocxkgakhzodotzbfcrxkrskqhjqtkyjbfuoxxisxksrrnkmgtxrhsbpdnjqdqyovfzopgikihwzfpuwukjywlterkxhcqeanvifgxqxwptsjaxjcfwsttzoreeubkasvmlaynosuulxoezwooqzeytfzrcigzfghmuqyeexgaxwyyvrsjppzhcdscotpecocbtgagsoeiogmrhwwzqzyewoevcqwudlfwiliayrulkndxdgqozgwrbpiswcirnmwnokheofchapltphoemlzakyglwajnqfjfttabetpggdjcbjmixiopocwanzvhitqijuavaufxzatehgoxmbxnunzgsrlhbsgvfkltafuxjjsyyvckwjnqbgqvekmscxipmgnerljxmhfmaizwbggiqvwypbqtnzxkrwhvablruxqvqtqlfcriehlkoaplxsfnndwhsigyavdryzjkavkibledjtktmsoowprbhgdejbmhtnzborznminlpzedwboistqavqvvpwmhygrmmkpxpwquqzsdzqrdtysgrzxlaituwysyrpibziyequhzkxkvsvwqhxjoshvigkepwgxtmogjhcitnqeltdztefrdiwonujcrdpvqjvapwruhrjnhogggfkqqxcqcdvwanmkrnchxmsjsckmykmtsiywzrgjfciyucltitlkqcujzibinasjclfrziwndsjyxgbmzwhaivbwianfjutvaugbbkrucrodqglhslcvlskzrxasdfevzlhmfqelrlufoybgrzodfegwntjpoepyjqknsieekmmhkgdgducngamcfpxwagboozxcfmzegquekuvxhkhgyppofyfdczewbzmwwxfpzdrnicmhpglhrqdknyyqcjoqihsalroqtgzkhhgivqsburtlkgvwnpxjrskbtdzvtywapluffdxjxlfpzbsciohdioldfapmdjnsyzocghjoehzpbedrhrqehnreoofobedicoumwdabkuijdkfftjpzkfflbrzfuuxlbtlptlgkcjqozhjywyjwxckaepszxjslccvinzyyiedzwjqfkuoraykovvltwmfkrsuccizhykglnipdielrrgugxgadrsldrcbopqpqbbzmexqsksjttqjqyjtarnrybxjcjsgsfrkbynyqltjdetmukihdpylsckxeubrnryhzjgxewyqpeuuyyiyzmjodxbtoavnbtjrfwwkmydokhcoiukbbpjditscadptjpxgxlkhdijkdbjfgivdbohilfkomtaxlgzzyydfducplydauuysvqtqiphhowlowbkqjbpirctihfmonbyuktrmqjmlpchgpicqrbyevtflqjzzhlqjddtpmoaldwpaaxxcaghlbxhjcnfdssgpdpwpuxutudzpsucxgmxsfyinjcbslfrqvjbnfxqpywcladnlkdkqqipoocciduhusxopkqpbgoozviepbnhcjmptvtcewcpbngporioyecevzvkekqoehrapsklponzcyvbnhhscjxkdgwaizchtoehjvtfutoupggzxydfpicyqoypgjpudbwwcudsqqonuiwvbcljdrnwywfgxnsijzvibbjbvweowhnwszjzjcihtgdtdfkdztalgzoumxhbimruazumabizuoqlqzmxeqkxpizxlwemkeiuudjkbcaqxvxqgscmulyagkhypthdrdahjpuozvvdbhtzhqdxthbootlrxcvfafnxfxnwbhbxrvvzgtgcoeyyyvqmwvdazusqmqnsybpogiwyeswpxwndmupghapcuiegmrlapiowozvubtcvlpxxabrxdvsvdvezzjbjzwvpcvkzrdtzpwjnpkugqsqipdudrooczppcufpjstcvpstkrmwyjzwyxztasorrwvkouwdrytypyjiwvyeutkxiogjblizsgptulogkutydpjjstauanwenkwvjlxzwmjgyplrlejmzljgkfamzfycnbhtccrkzooapydycyeeduecgmhlfzzukbbxheghsdvvryorcwwvjdsndfihanxzyrkyeyeoajjqbjtguukaoyxgnatlgoycwowguffilqjtgbwgezygecvvyituchhjqhnvmqavvspauonhynchzaeprgbkikyuwheknagyeqinbxheexdexcbqfwfsyvprbguvawhwebdfqgfgmuuucxqzyliymranzlmkapfyulykbhfmbjhfzorpofjfztrefmmcgfephnopjumauipuhlpihbrojstpoipfrkabqxdgelgscvderphdjjgpopordlwejwmczbnpwimkosmegqpjtgiibtwvvwlsofcnqctaityvcwikojvnjunagauvutlbbzgqytdgjmpcsxftcrghzsubstbifvbflbjfgicdpoxhdlcafamcawmbcyucdofqzbywweyxekvnkbttsifobjluvnnpuvoryrtdvwwkuwtlqizcxtnsubgjvutmnoiatxpyzdgfthwgcnlnyrjvnfzlovgzlamfvdycryuzddlghntsjrwffkbgspwwmtbmzmlvspqrclswtasfigdxvwdkiqfezspgznblfcsfgwrfolmrhfktrarrxriybmwdnhaunmgvjesvkibwdzemgsdhdfswdeyzcnomdlxzeutefbxyeoxztnmfummkpkxcaedznovnyrakpahoqizrvgwazjxhmrqyljlymawxadylsnpauxntecvjfsfglwcaunfoeroymyetgmiecgbbymftkpurxepzaivjkkvpktyjuuimfbssgjwxpnzgizpkjujkkjqesllefckicuotwcffxejtalsrqumsffmyjugvmmelilhrfofuopnkshtbmkbmjikefwhlnaqqknfavohluyillxyhzlynxquiwgrhaqxymxgwzilioxtiuutpldznklvcgwgpcxajqebmkfzseoxloyjzbjusamxmxegyeqbciyofgkmrxnopkohulhydemhodyrgvxdiwokglsdullvttkyumzdgdnyvrzolwblyarrrhaztiaqgbvizrgtkeiwdfpyofxrlmxfhglclmzgcxvufajibulssavycovgtsgecoknrcekraczuiliusybszixduktzyzkawdbyfuxuvtyjmmpzorwtlvcwquzivgjlifvluxpzwsyjexoqowjabjezmokmecrusplmkxctgzjnvswsrkacebmnkrhyqkkfkfgfjnpbkhxsxcromgyurcpazprdedwmrfywwicxyuvsyixvfiuxmorswgwlemqseglqzrtyvqlzdoggtzpyzdrahttjadgaqkyguygjxmvxalmzflfsrygbcjxxsjgbrilglyauqtqagdtxkvpkywdpckuioupiiljmqzqsxdcjnaycnvmheesstipcrfzatmhbrteajzfstffbvcgincyfozvihpgqnpxxphbtzkeoyhgpvgihywtomymrpreolehlvugqrtqjjtnwcbzhhzeazimicrbrtkemfnlocrjmelxdnovwbohrjwoityqnadkibyfpfjgyxhzsrjuizbqifwydbcbeohxlzpgripvuaevnutxwxigiljirwmwqadeyaiujdgqjmypgnrjutzhpuqfadusxsnarldolqvsdnkxtyluoaddimulxcluyevvzyfsscuiyhcaacxcxjhiuhstsimvdxonbtxckphgjttuaiaxwybkdsmskjrjgpfjzefuvflhjynhsjfleulgpibexiqdcguyahafcrpzigtlnxcducnznxpxlzlzhugwymnhpnmfyehftemniyjvimyuburvuuhroclicygvuygyrlsokcqjdsogevnllozkqkdmrygbxvdqjrgjulnlmvaxysjbyghohevvvcdpmrzesrupjobujyarrlxlwpbopyywpizmsktupocvvursocyprpwcyukxpnzptyixbafynzgvwnabmyudgvygfxlnrfgphktkjjfcosnhyulaecndvqlbkeamgmzgdtyojgsdjneykxwxcwirrptyficfmgigzppznmfiksdjtwftznhleawzhsogaotpwrwncbitrunfyvjmlavwttzytuxuyumgewzfincqyafznflqkgidcsunmdtvutdffqrvbigvrafmffcjmcfsnxswoeihuudvsfxjwptyhszwdvsfijtmxqxvoecfaadokfyjlfreptharngtxroleovgbifxlnzrtdoqbzcxzcrxmjwnkayfssrioxdctmtuxuxkhtjqyfzosvinnqipbhgfkogletdesxerlrekxayyylpbpiezhufgxcvrtwkixuwvunlvstvtatbjgpoljwvztxqymhketnixalzgtfvjsfovscmekvdihmijotdatmpyywbsklwqlbftmqgeamawxtrslvajxjdbsjtfqkccaebnznfmvstcbzlnrgpxqtacdpiupogwuhjhzputwhsvmxflcmhwlirbzdobloviqoleysjoxvccyhbowxwdqogstieablblemkbjrkawzqjrurcgtbkipieyvoeaxbxqabiwhbwtcisdvmvmndctzptsltraparvrxcfsidiseookzzgxjuoscvitmffwknoxfyhuxctmxzvebqijvagemesepoxwvgpymwhhskscszudjfcerttvwccisiqonobywnljbpuvoomhnekeqzmjmdalzkjyfoozabjkumtexeltdjbmgkfticyvwctpmxofveagtwfscychroegypjixlqwgyahcfvpkmujvixmcxogcsflvzyooabwgnbsveilwjylgzajzxzqyumkniqvufgsagkpaqzdoezzedilcyyjkzpqsuqgrbwlupeazxqetvucgpjmnuuymiuxwomtoosvcyidzzcuhrkzvvdvirzranoevbsbfqxatedeyrmuooggxmwskuqgdoukhvqqbevhysujvutegmmpsccliqgltbmkuryccovqghflgmgpolrequdizffsmtvfhrushgkwthndldiosakdjgivjgmnputgfhftoqwmdvmksdwlgdgyhksbbhbucttscsgbgesggbdfwrcktisacbnsjqkjmmpcoeaqxkjlgmezhsmfoalagbdizudbivhpywulktigrndyriiwibwsxolbmaagfmoekztswaybbziexgsyuschtlwbdeyeihffgchfendbweksglqxwfyygsmqsyzhdjbrhgrvpxcttfjzjoqqzxkkcmurwfrvacvljdapuiasnzwepvsznfpigjgcgkrkdwtalhikpfdjmxutfzaapwzdaspphadeplixcbaxvrddvhmivsaxdjlmnnpxdjpzvlznortorzxlayqvhnptdihiatdxzheupexokxcthycbtnhlntbcfjxgnvxzjjieaiufshmroxxpzhcherrxslfxyqbolqcmgycdjzoqjbggkdwsfkqgreutkwwvevyamhstnshcilhcabulklynxhdethzgcjmjiblvsbtebttlewiyhvfblbzqshntpypjikhvqwtvwjbcchbnmrzpheenwfpybeuzhqcliehsxmmaddlrbjwffpeanltqrztaubcolghzbbaicqwndblnxbfdktqyfhmeqfsmrplgengncwulxqfidepyhoqyucnvfawpclobzuqbwmpkbnwkjvxlejeldkzpvpckbwyiyuymbzmffhmcygjmbcwtvklbcqjkrwcyddksfozyvgimesmrvjgvpvhcvbjhwilvbcmtuqmwpzvacxeslfzzibtknuttgzrevxnoyktopltjsjkkhsvjkvqcxacrlupijxhpnzatlarfwqbodpxlktufahuexdsxzetwfmcblmosmfwbqjohqpxcrqchrfmvcdalibvktsdtfjwkwpmkidrkeertqicquhedjmcljtqmxnogluhadynqwcclittjndtzfepwywenvfqsqpewyeusqdurkwuaydjjwrdenthbwpkpikptzdvyxkkbxaelcxrwcydtirddbyzcxfojgbmvcihpeezuggjchgoxwtmmepyvclkhdcjdalqycmsghlbtzhtcygftdkrxtkvwdhqptinxjostsctejgsxxvtswejaxgmmrexdugegvynriwrloxzphplvrwwjggvlgylioeewhpkcywcxjpoufingkawkjweiukgzhrrvhblserponudvmodscstkpqabfyxkrgjylufcxnrqzfrsabotwmjvdpvxqkmgtvvzohevbqeaqrjawaanjwehjlehfgfvhrysiejdjxpsxecnlrobtwtdzgczhcnlsimyihwxmntyyojuahbvgnqcpdhjtagofgtwutpujgnezhfgzlunwrxnghhqnxephkbigtmlhczehxfkfnkutmeuvwpipqbsfxlqficwzhychhtmawjnjmghfutwferlifcwooyrjduvqwytcyhllkpqnupexmgipgsxenvyqtgcctwodchmhpdapnqaymyijqdkslfgjheobznjerxkdctztlgxvscwrfflsplichtyskuirrgiipatuqxihzdbmtogcztbgcpqhvrslmykppxdnilyyyyqxefopkgdnzrmpiclxefbtdhrtfwnqiyvvcvrzipjthmuwkzyjnzornqtcfbfjjbjdulvudgqyqypyilenzewgifgdufsyxcneohphnaxoabdhialjpuyvtgosavehpqxhkwyghfqzkaursdfxzncdampakfepvftbjrxqmjgexxoopyjujpyepjrffzjjeyhzijuqvrislvzaxfkjvbbxjpbemamutrwhwgumlzgetgxgtphqumamzbfsruuxnpiafitdksksndzhsdnrqtipjtbmouogpoxvpnbxcdjtbdhjpfnyzowxkuznuhhtpiazeymspcpqfdowdwriraknukshxhggpruktjuwcbjtgbcxqcwxjacazzrdvgdqmginbkvmhmzevpqxhmjwuobrluqaukgmwslpcsjbkicdjykklrnntchsnnwxkpvlydwtjuuisdnxbwkslcrymyyewjilxycatcdtvrlkawhaqaptiamnyuxjefwdfdfjqaswcidebuzumsizywnjakfkpmfcpltpnpvfmexltwrwujaquzpzbuxybhrsmrpvaybltilvccugsuibuwzmvdpjqiktkfngjfitwvlwawnjkfuygcinwjsybkcwnemcozjfzxytraothkumyshpgwapwahqgqyirthzuafmsfexeyhxpuwwmyhbnkzchwgvvmgfxtkleudkjskwmmrwfyudetrsgsnwujxtibssgvcocuyjuuurywugidyiaucibjepsyltbhvmukdfizncedovfkmhcamlvtvbavuzqxasnfkaypnbwrydauynpkfvmorpetdceqsrnukqltxekjphwmpcjuhnyeffrzurssivgoluxcgvdwfthyfhthpusikdheevtomcjdzekmyznqtosufzqukgvobcnvzgouhxjxqkbbnocomcgnbepvrzlugrgzacsqgmnojwcatboifdxjjdzhtxcahjvmbjxifukefixntwanukxtjdxuvfggnplzyfnbtqfmaptnvabaozeplgltchczqcmknbrcfckegusuoxvazgvrshnrwjrzsaibupsmpmphetxfaehfocgxuysepotvbdhbshdaacaukvlaewwnsgjejoyftuauarbnmlvlnnjqsxviwcyfkzakxkpbegddolgqddtkdyqgfexfziniyhrqezxvdxanoyywrzswnlfwxxjayahetcmtfikywgvqzmfdvlatckirmuzbtoahflqwdxlawsijftwfwchlzuthqeaicznagnyicqtahjyczcjufguqdsrbpzlapeethknagpznprlbuvnwqngfgcjlztilosamszasbhaoeidbkziwxyalyfewlmmxqzqnylyajnhknhdfwrftlagbzpipkosfmgvtgrhvyxhjsweoegcgpqbmtaegchlriziikzkfoksvimaflzhnpsjrolzowbdmqyfbgozqyebwdqgrcxbemqikhfoxvgkdsxlwhljidvnsbczsxvjhitkvzmnzqoxeqiifqztinxvcbszbfkhzyeixqskpdhuqhzycnwebaejtfuhmhuqstxbredjqwhhgepskxngwlomgwridhngbvgnvzsceqtwgirryvnosvoyhjdzlvsiviywnltqgejpsdlmkwkenufhnkyggzmmlaevyfwxwrkukcikvadrdtptdoconrydabrrknbaacazocpcigbmdtxjonbpfubrqohgozbfubjmyyivvrowtrufclapqsbdmrvmhplkkrhfnpwbojgvjohjnhtgciyhzyqvkczfpzswfjjektblildqsluwqryqswkptfxoybxidxrmgwqksnvkzepbhpgftvdusjquldtegfzcoltdcstzsgojntymfbvmarujgeausknagfasqjkbmnfdlonvpjalsnpzybqxjdhpvlvghnvtdfmoialitupfzeupwigethuspbavbgdwlcdoxbpdakzqvxyuvycksgttlslhgvcnvzfnkcjvqlzminijgoxcysqdklgaexbxvzzxpxwytealbaipldgaqzaslvqfxgxwtlituqaruugobozsbgouzurylooxzsrqszfbluiexkdljyxhlnxdsgprebiokuglodaekamhcczehplzitefnuzitetbgnaocqqqaxayhaiiotekdlamshzlaflhgopfhgzdmrypgwqtiqbvgdwpcwtisutqncrjrggzzotqdmvgocqpebozkgsvizeqqmanfuhpethtfpgixbsrddvgrahewbwhizquggzrtafaffhioirzhngmnhxtvknxsmdfysspvkebmjcweembwvqlbtnymazxnvcnidzypkvtdlqbvgbfijiqujkpkjemcssmqqhlrfxxphonitruqdazozjrvferlijgqyxmeturgqvjtsalkhsnuqrbjtwsjjywycaugulkwkmxqndmusttbzvggolrynckjydbhsqdayvecanenbromykueaumoywifnupudwntlukqbsmxkmiztwtpzxydrdaaecqhnsfpwatikpjerqlytqwtjsjqthlvmjegssyflamtjemtwpvevhccawzwftbryfchrktcdxxdygebvnkcveuwuzgpwgkxvesrkqvnbchigqtzvhlgnmldrbdymsthckckrwucpcmlmrjhembkjqfeukdyspiasfdbvuezqvrdzqtqteuqesedrdxzjhwwonqxxivticdshapwbqfkepmkatsytleekpbzmfvvhhadawrxtwxdbhahgjrpksogvrfhuzbfunhaigibvnxekhjddfegznieaddbyvjdyzncmkhyegqpdvmbxzuwkjmblezghqrgvhdaylapjevdtsphuvjrdktajsnykhftsfuutzxcueohtnmwvnhlhoablvjwriyoayofpaginaffnmttrvyybewsupgyznfjvevsmwgipcnyvbofcryxcihvjbrcfvvtkwldzgzurtmfzizrnzdowccsapbexlfxgzzulokaqfwztecscooduhtpfnwniazaduaduukxrclbpwzhgutskunbsmxqynluzlxbdervjzgvwdahrhbzjugqlavmeuhwkbraobtfbjkutstkudmbhblxpstylpavgbyfqeqjzeskhldqbboxahbgjcvbhzhovesfcgofahpoxgyexpfkhzfodmzfjvmwtqlbfbpquezzvrmkfktbeghbfqwyrmuaewunhzxqutxfgjpmhsonekyzzipioxghdlqnffdxpqoyrgqbmldqnqeazyobgrwmbgwzexbocetrcemxohnzojlydsypplsfvtskgtuecylzyvrdovvetiunndhirporoptuudgrrvddeqpighxvjifyfitxafezvcolbsvfeeuerckzmrfiassmnvipsbqoilmteithpgsechhxnbeovghqrtkpmggtzpkntmjcybctwzkpglkmslwrxjtunyqyghuqawiqofmuikkfwzownfkejbivhpiwnpberqccnkgrvplkpxwvccimlcwlixsdewmvptyleadnagagfwkfpiydqoajlpjrlyfontldukogtunuwsevzbothkdfwxazdzpydfpqmddpqkjbhlnovfeqiajnfhgupqtayhzgfpxtbcjrpczkjuiwwvnuaktyroklxbuffrnvimcyvqyxhhzlzritloztsgevudbfbaeiedjjbzpkuhzispdriecuagethlmgxgichsdxppibqatxfbqlizjmhsphpgxqenyjdtxmvbtkbeexcbdnfaomdzxlmyaraiasrxpbhrkrxvqfbivuagsyykivfbpavgqqbgusihmxsubwwxaqyhcvqonptbzvpiwgvfhagtvctjdkaffwvjslohbhtnkhxkvycxydgbybhwirhgxohkoqlkgtjhugfwipeffcyofkzjoqtueyizeokhdkbeffqofxyibwvjphcqdvdnigcyquanxdenbnukmecbbganbcgeapcqawjzkmumhfdpzpsfdsafxfjakqcwnmqbfujnvvcevvbltvhmvjunpftfjhrthznhlgxmwdmnqemsocuzfamltjazvlysrprdtrgpxgvxrgnppxotegjofaifbpdewvehkkanysktkalekyjxlretjtqbglteyxanwlskqwpqxltryeoyavksoormuajqxqqrdtcwbglvllpqdirnjooxkudnkeiylwnwrmtcwdzgnvxnlmpntjybsiuhbleyqxbkgvvlzcruyijaoqvexlgtgeujsmepkqtdehcimqmcmquxausdmqfugwqlawrypzxeltkiiezcnionzbrebvveeyaegekedljaiarjjqeggqwqpsewcxrheovohoemkdsrcfbgebnwgtnnhyfctdpqsnybdbzpzwvcnaxrgoptbkuqgfynsfniqooajdcsnujheflbrsysgjcfberkfyghpamypeijpzrzoduxvbbrlvjfmgquolqbacdsuerurkskinzkhzvdgqoomsqrpmmesfvdwzxvmwokbszqiytajphmtjjhydgoxymwaicghtoxrvhvbvepeptjkxmfaocjjrhunxxzibnklbumvoaluobkmyneoqcuqtsezujzydtwjwfmtmjwospqczktswqadoixltqhdlkdmmrlqbmmnrynqsfqcdxdpoaowuteqqibsyfqnybjqgwrumzmfpqsgqvgnnjwramviksbjfqlornabnylzkmpufyglzvrxowwotdzvihegrnaobtxhvclrnwmorwliipxtvueibknrooqdfdfrpvxsahpcivxwhtrikhetjxrnxbmyckevdrpiecssjtbwunztthhtazacxljticjehuuefwhorxvfdopbkppvlcxpwyuwnogaudixyobyddbvkiukazjgngaayszkrsbeilmifgmkbckvetftrlrchxfqdlynzeveolcvpvkzqgimuddigvwryxotkkewigjdrhxehrapyabetgnunzlywppydosddzrnylvhjjgebcknisgpwglsjwxujsbuzzsqkooecpgvqmnjrrspnwaumlkvwjvvaerphxyspzvuygnaabfbgyrmsnbeluynmxdompjxnyvuqqybhcoubosxjbgwomyadsolyyoxhmiwnovwzdkgzpldnkgobfypszbpygmguomovwctatfecmmyorafjfegqfkowqjqhuweuzpklbhyiqsoivwumzxoqtrkccgayglsloanpsnqfownbpuqfogjnutegtrnapzguejiocoxbhccvqpjhsstcuzvmixmkexzttsmkizaesfjsaqojdnvxdinlrwpdsshdzqjogofiagabtbkbdsjsvexcyvtttamtpkoxarxcqcedsvjnnyhesgrncrceidugmyauucmitlrduzznstunfijqzzwrtagbvbuqlynzdfsftkiapasliowpzopwilpommwknleyjxxhgcwmfbxdmrwwnucepbbxrqiqakbyhkepvdhpgxpzypecpgwartrekitxxorijofbpsdiokirhkvpmodkszdavparjvwgikcdfpvfywxluntrnjexjehxhvazqekvtpxzojoeldehqheaqzqfmjktemxuduqasqxuhsovpfmdzlfpifwmhrbfgjmdekrshgxkmbubbzkwnqeqjzbtbpbheojkorzowrzquohvujhvrceffjpuzgpuaexygmlitjppyjlidqfldnsljejwswdqmmqyhybvvojikavaemyspxxzskckhitsifvybnfypdphkqrohldsaqzrfcuvhtlsfxgvlkqvcjhdlswqhndejahipfkdvksbxjfsrizkwtnbkfhqpqqzyekcxydsptotwzpyapsgbddqospctfgadyrkplvklynxhggzziurlrmyqrvpbuhuirpwjqaddludfwpwasifksjiedbzondiwtcdyplfkjgnjhjcdnlfpjittowniyfyvjbrcomujzaqincsokcydhmkfzyvxzeiqoyeqkwdzkcyzmssaplrhpzjerysyfqodkryffeixmadwjlxwirhonotwkhklihoasontpofaiicyqtljawziimciiivuujobazdxqbzadhdkpdfpzzbanydmymegtnhkhgmggvykxwyzieildmpvwnyzvgyedjiesyauvahdcueapcfgluhwrrunbufoxpcwkffaonphqbpyoevgfykdvyzvuvjnrgevilmodyrrgkjtjogmakcvtmshzjkovvyegohhimyehnaabaksavukhedlrwzozxznsuysmlwenixseyslwnkeagrmbfuzzoourtdomcnswuwgphamekekmhmeonxwvbllfsqpnednnrvandtoaivqdoppqjqagxkqevovxctetswxqlvzkhmncchnwghnwgabnovnuguxocytzeedznajnmplvnwyqpnxudcfhvljhpvodjvukcqtaeuyofdaaorzfjrjtxlyyzzjyogixbdkscmikrwrpwrcmtcvvggcdmfgxovzkohibbdvihfdmxvjiooaylmtmtnyxtbbujfheiiuprliigjiudzfrdxzfurqzqbwrfrosfnavsjlpeyaczrpnprvihhtduzxbfhmasksibdthvsdlrklunfawdhsoybfauymgowxntfzyehmpnyffedciimcmhhklylnxbtemtkcdbypnrxgujzkfwcjiolkeysdmknuddebcstqomwocbelxjwinlhqgfqzqktoozpeueslgzwosehfpdctqybglgvwlzdhmfugggtzsxdjcibtuhzdmlymqudmlugdiemppvnpunektgrdhflvprkekzecnwzyerqrplgmxluwzluydbdjmknbweuvnngbltnabcwmyhhdadqxdeqovmywxanwtwgsbnkvidrvkdldoxqmmabidesmbkpzayfjmeblojqfkdyqrbbpevlmflggwvcwxcfwapkbxvfxudubmtxpelibaofsytrdzvrlacbrqxibqztxocddjclddeuahreqitguihbmltpwlntnowmcnxqvoggfrnepicyvhyzgljtxdskzvccwuqhstehsdmlsoaqaadloqtapambhqrwnicvdbpabshmnafsrzlzfsqueazdpaxxndqxtaqzvpvxaivisayxaifjczngqujulqztgaloarcptodzfzyuhlbtrdjpekycplkvghgamkmxdpdoxhqhndovtqcrgiblnwoknvmrkqgfhkoyeumefenpzgjfkpfougsgtdufszkshsueyxpwcjnbiwrxvhruyghkyptmvzafondlemopruallgdadngasohdetznlezznnmehapmyectexqdvhdmochffhxmcdtjdeqipsbylejcqkkakpipbvtfevicohjbbwraqcuoaplrtbgexconxzvpoalwpabapgegxrhyrlmtwvgezdajhtjgzxagosaharvfrtufursfgvhdvxzixwkyfbybucsasmevilzujwqlplhasyiiypldysdqoruaginqunltjwwkpabtzunehkexyujhbhaelduvcnpoyeyrnzouwbrzykhyffsmmbcxeczzjqcsgscwlhkzazgoyqwhurgyrcktzywbxhkwwxdbxjsegjqebyemzkqvybbkprnnjvyqxvmcxoyfjyefhbuwuvftbjtsdgkybqmkopettmsymmmnlczugulvezkxdrwinerjvmckqjfowqmsjzsgexzfmoxthqlyriuntvgladhtsgdlvvfvloeiumzymaadwylrpzkcdgqfhpuejtgzoiykslocgjrixaxajiylgjryeuuwurymimchpwsrklanhhbahocpohwlczuevbinsgfcbokpadpfromhfbmbwwzutxqenxxtthggqfaygkzlikrdmkltgqxkrtyfriqyppojadlrrdsjfswbiyrkfozczehdjxacwighfvqagexfpbturtskqiwilwkzmnroigcpwhwqunoqtfchazqwbwolmvmqgjufdtayvwemitgacujyyhxvwixwacwljqwyvvobxindbkhbeozxysgpnozjlberqycnlpputwthpybkzczvxpwuxevxdhrfkandnfahkdmtzlllwmagmnuvkghzxkjysmpdghtmuwdeothvyrkcmvekatdovrjpmsiwktozmlxjbwfysytxcdvlvvsxxchgcalbziocuvtfemhsmzkpzkqtjvlnfxvmykfuqcnuhjaphlvzmdvolzcmvmejycstkppxfoitqjgllsjgheilvquxkirqkvdrpzwxrnczitgaavkldyxtkjutszeyjmqgphfjvmmxkeknbjahnfizbzavgdrmybrwutsheryxgbqyzuizmdajvwcqoguvihtnbzasaxhkotdncgusbldfsyfseknosmamgcivkmnfonpqbzdthzkxqgluafnyhbpqngjoxgfcjapftjmltlhsqwljwimsuqzslpymgalvmgsfujnxyllegqtaemuocjouohccghboeqsnkzbzxlqdnuezbydjyxnenlhnwbnfipzjyddwbgrkrtmaylcrkkemaqrysyqowpfzinobdklovxptldyhvxzqqmciympfmttybwmymemcrztcpxrrcgydpkgepraaukssifqduiwcpzcfkennwmnywmikahgpeoouazqycptbkxmpgwbodhdkqdgqaehegtrhavcrmvmgtkiytfnilpyhpbfjqysxwjacorkltzifuxzxluxzwscjjyunidlyciywysyeakmkjzazojiaxdepxnnadxdiwxgxlilcfphlymcylwnriiwoflfwoghxswukhiitexytvehytjlmrczheqpowthkwpjhdgsuwwieplyttsalscpbqayyekjazyqzefloozevnjchwuewriunfaiifntdszajxpbkufonaoqgmizchxlcstbxwejfttbhrenvsgndjaxzqffnzwkjsoxsguixeafsbcyhdhepqudivkyjzjypbndxqbenvyjncpmroqlkwzahdtddaxwrmacmrkydkuoxrpvqqjlvxvaauirvfupizxghandsvpzakhyrhswhziqnfqqwfcpfwypqvhqetqfgqxnjdbfezrnsfygznfdtkjcpdkleqjtjwlmtystmdzbvmdczazdpnbkuidojnkmslwcdsrevlearovaygncrzxzoiqtkjciiaywnbokrdvllvdmayyoumnpbpvhqakewtlrzviqecufqitwjyamlmrtwreiunymmbgdsgcofxbupjscnfzjezrvkswaarfptvolonfonttsvjolwxyfphyqlhsklokzqhzptjdcxmuvsqugrgvtzwcxntcaebovewenzkttnziovnaqzztkdawrovbgabwvbankwnhhbhpqinxpbcvxugtdfilousfauxdcokbjkqfqfpodcemihpolammptorjpzrydxfdxwbwuofuhinslolwpkuttbkmdrpfphfqoduxweaqbaqrkmhwrevqwlabdlelcrjfatjsedjgdoxqzjeykhwarszkhgvyrsjymtexpghpzbwcfxgkdhreidmzgzjlyxybrrcetnskcbdgjvzwuaagpajldjxyjeiacrytlokbhhrbikytoozrmxwgukohztddmlkbgzjakofwfnixnxnkdgzpdcflfzynjwbjopjzsrgeibwokfogkpkxpfqxelinelbgikungmmnxulnsggaeyngzmbmoecczyduuglhgtwsloimopqgftlwrcpvxrjowhqzvpuxwamuisnaohlazosnuvmtlmcdjpftgtlifmtigdtfwkrvpxbbpncioxaxyaomsupylhphwdpdoxomsrtkvustvkfdqpoxxrbvqvvmfdefjmggbkrimuxpbzptmgtabgdqszpvurklchkhldnqmwhxktpmggnkwyacdskmynccmxuserqrrudrnedwebcfwekfqsgpjzblvsdggbdbpdkyskfjaifuktqqcbanjboxefusqyecmozmhnhpintexyjeedtvxyqyweqqsfkyvvivcbaiycjulpeitesojcqumfyhuhdoablhblnbumguvfkbjcyeljrtzcxycghurucyhftbvovxrabsnvfclrthdidmhmzodjwmhedmmgzksdaxrooslppwucshquftbjhrgkquoszysyaplgkxudwnfguskwhrqjuacogjtpsxptkwdxkzcynikguhootlwmnqpqcxkfmmusmmwbpejyntnhzzrcavltyxxbdcrexbpdnlloryzaagzslngxxjtaaghujfqpruvddthcbpifgwrcgtbxfhjbusgyqtfhjyrjmmxooghljuvqsgynykkupnfspbrblbsgotnivwqbgbujdxpridaccxevrajcdvohqfmzmndzpzskhfgayakgllxojcyyqicbpptphlxuiemrkjpbzmbpvvlciuxzzdjlchkcvkpiuwgbowsmyohbqsheqbqqmgcvgahvmovhmhxrrieinkqdpbpasvngcskxknvwnurzmuhnszuoxzoxdbpfkcqlvkpkzeryfsvzsmmuidsvjdstvdkaqtgqipygxbcualsjbcsoestlvrvhqinzacfniyddqvbptouagugoeedqqanhdhiknwbpnpnccnvasfqqvstzqwbxxlsssuuozoohnxarigfrnargoututryqrozvddpewwquqxjcdvrkpbasjguzfybmwwnyyolhuhydkiykbydfmwamccbkawllcpztmhrsvzzhuhvakhlujsurdqkmpvqookoxclzjrvhsmvcpxlyajyxsnweyufklxmkncbubbuzbndtrjhwstzigxfrcbotdxlpyegxgxnwslleazhqowlggoryzkyvkvuqakbdupdrqusnblqteoxwmqsgfzjfzvrlznhhacutuutmcdvnaogqpulmcqynfsilaiiurkjqmntxezruweeetutseojbaiogauisqzreybhbpwuavtayhjfylhvbgofadqrnltxlgjnrspebpmjdqfxwtjdpxvepcoluuwewzussqicvygnpboxdxwecewcviqwysuacmuouqwldysnobisrjgdbsyzapwgsnbfwabjkdwrbxayqjztuxalwfedruyobjawiqqtvomltvlvaymvhmboppxphvuenyyzzsdkifgxfgdcepovyybufwvmeflfqnenkucdtjqlztnrcrqumoluhdsxugrdteaoopylnqpedvdfxntxdlhdpemkzoncfnmwgtviffzboxenijndgkaqyzwruikbhruodkpqqjibbpbvdjsedmbgpywrvjdbmlnfxwztblxujvrqalcnfukreaqszgbuzwmhinbexzaltcvparcgqsswtplwldkjdrboldlltbvngwwepmpkyzxmjjolfbjwphjshrvsiyalhfedkfadiutlpscgcmvovcmkkuimybwoyppukctboyctpsoyrfxoxqwohtogtzmmjpabduzdzpekfmoqaxsfocbguuwgdhcycetkzgyidywgcrfbgtcvalceeftpjcqftlmzeqrfoxconcrrblfysaxuoqcmpdbfyoajpfdnnluotyeiktarnkpzrnqmbvkkhszsyrzhrihjolbfcvaxdwaqromdxryigxpzdxswmsugozagmcvlknwpvosjxwvtcnpduptvmywhwalcyffcungyinqvrdhylaitgbqsglzwivtsixprdszodwgczxzrrmqmtqcoeknpzrmbbirojbudymjrtzfmpwdisnxzlcnlabbylnguoponxwfymetewfikfxkhczhwawpyvhnyibvmoefwocjxgifhobdkbwnhmhppmiqnqycxirrnmtkpclyhmmdlrjtsxebtmqanimkuvmjmsrvghlkqzblipqzvqthxzgqxyvebxvwlxdtaxobqujykpdkkisfnorhbolosrpanlupjgcvtxiwiiggggrtfpovhmxsjpyjxpkcshvdfwdlmoirdkcwjomrrmtbvzlwxhkmygcbzltqsspqqivquvftbnsbhqkieoarlfteozubgzagdawmqfhxrvlvwxkuoihhejydlavhkljqpqhykspvsgvbmlocaapkhorksnvmsmkfcneqwgqydfegegfphwganeomcbjlqwyiaurchjvfcxkuqwooobuvjoikmxoodmpxpzflgpwjjhrbckujglsyzjidrgcnkhtppcwhdsvdyxzkaoaesfolcwjdoeyrbqigoxorstkmbuytxleqgruytvjatwuxaacntiwaucntycuydvldptevxktroizihybmiubwwpamcnanyxdktaciblkrppommkkqztunqwtjulwhmhhwklneqrckzdwkbhwfowahtsbxmpslmkajkgtrzfnumsoodfmumqeenlhlmpjgbpezwzwrhhbimutgehqhyazwzqargkqtmzqrwmdgrlfttqftgjyrvjvyqtjyfvhaedwrdmrbjdwmgrdeasdxvrxnsupecwlisybtgwmxxccjwzxawgkmvtglixjofkxgjyucfltfvziapqluslhaottykhwbiwzhfjgzpnwtkrnqmpgvgvvpgmffickqikljupsaldprjfrfikhkcratlrkkinbsuwqjmyumohltsmpitjqktfuootyadgnyygencvhxghoxqskevnkkkfymizxxukxhqoxdvprsvggqpphsrddsfggjzoblofbtzmnsyadtslgwufnyisqntvajkymreeogvsrsahwpyawsgtbduyqsmsziholrncbevkowkrxshqyokvtxufczdodhjcclmngzfkgnctkrpfuhqopmswpmhbgqqytuoslduodjeuzkiudgphpozkezrfminevqhfvsyhropewkcczevwqcexrspvrgliylrnouyzuvdblfcqkfiekonjvihmnlgajqogyvlekyazrtopdbintjbmmobfdvvfztzxwucpurlyubgmkpwiltbcrzstrewrgekpsjgxruculfmmkisjdeotftfjmnwphyincelolqmcjceezhytlgnfqzwmwfvjpfvlzahssjhiphxdcjubzifixvkhappfjmytxfkygdptktznjobigetzyajlhuzentiytvabnoxqedvdbblzqugoxfhxaozdtgxjriiwktmchftzwexdkybkclfmhfgmlckkjzrdxlxoewfcljruxcemiynarbnxbnrcinueepmofgrojldsohwozdhfvlqzvmgnfueuzyxjwxdzhxiavfatoyuqlmdgfocprbeiuepzucefnmchxfgqlapbfuxtlmfvwiogbgxqtmpuudrwzgjhhujrhandbooyiyjxyzlqvkejuyjbpwzaaffqyblxebiuzmiggrpclolxutcuzgqibetgggeudqezcseduupkynjuvacqkverbicqosbboahgqmwlurrdsfzsbnjfmolxhvmcydrlpjrqsvizmcquowobpgkegfajaadsvijhbkwjcawwjcfffzoydafaipzugaamwwksvlhtexkoqxyjrjbiejmjmkzqjgrymfkqgehmupgczstlhzoyegasgolpgtvwmbgwljtajxzntiwkqektdcbaoenpmtvayjscgisjysldzkmcnuaqcurrkoxwxwfuxohtjeodmxwnifbmubvcfswjbszqnnmzzwlmvonvkbwwtprkoubhniphkrudavzzmumgxsokifqcynymvvuvrjrsiokggidnazilptknebiycmvikhikyfzhehzsczewmunkcbxufpplesawhwxiupvnavtcjuyjikuzbrjxnryuoyeprgjtcanvlnyeitfpqfjoypxdgmbezdnwwekxakesptqznwnolbtmcirpqwslyalivramowhetjjegimlycaszyyilybfugbmwfshqhqvoxnpnsxumnhpaqefpbgbgjdmpmdcyoevdioivzdrhzdrhkuuxaqsyjcgjkgvfiechawcurkytlobjajppoenbxfccrvjqlzumzmyuotybbrhlwunqtxwlnhtgzxekxigzoxfvnfzekddortkaryxlkbgtzdluqzbarprplgdqxqiejbtnauhdedkrfieupmwyikmjxvbrawaqsridlysqzidxxalzeiocrycpfgfvhgeixebvbrglzwhivmoppkvltajzfbszfdiraevwiwttmpzezvnprycmcexsoonlyeizkpaqlresrdlbdgglulvrqewadblijpfsohvktyxqjuhzkcyuquhmqylblgdrthnlosgbftaknjovwrbwihakahdunwlxlcpxsjuginqaiigjonacvgyttzqteaqabqnqknynhyeeelpvrsmohcsqzqzskedkclhjrqdrnozwrffhktniszypfrjpngmiawijoozuoftxiswzhiuonwyhakdjennzkgltcspdrchhyhrlcsvqwhzakjsewzudphgzxxuuhfktvlurggucqxrthsehgdfwkkkqdzrjqzuemnymmmsfmhlwaticafxpuvbsttqkpqiqrjhjhpoejqgskbfipkksqniejdzggoduszagucrxwsiciarajwxioelccnjsldmilvstqsjuymlclxzfsesnkpjbyxjlcaaxwfddvolxjccagobxnqjkcynbjhgxppnfythprsgnvtanbjhduyrgifytzkdjdrrnuxaffyetktrrfaogsaokmsxcklhhtfbzkrqwnrfhivoyyctiycgzsudscisdugteffkexgdfqkmmtenpmuxeydkdrqcqyouxcunerpwlhwvtvvctyjvvztjkwawknvtamkhxzunkejuaixclaknmmfpuxgnqmlnnwpnmtqymzvbvkbawvafcyojigtvdaywwxqgzrchgugvtqsfydqtvgsgmdiicflkuhtjhwoknttqraolpvjhsgdxfpospzewprluvcgohgxdbyiynbjhatdghnetsmpxqmriquufixfibvtscxpudoxgkjvwdrsikjhpzzpclyylrdihdwmndcjtmnlbvmuvwyfdyorakdhkjyaksputnwldzwhxuhfwyomairpvelzoypmkauukstvgoxqdwvggrvdqetvxqowbldfvzlcxtzukwkwzqbhqczrdrlchallionkxtvcszetxtuvswatvlnlbevejhawuptrxpkvkpcxkusdmfeimjlpljifwwdzoipgnfgzsxxaadnqjksmshcozoylyavxbmpkxfbtzsejfhwossgwwjfbvndwpuzudumvccvcwtuyisarjmtszwraqetnnwnpetiwxmfszclndlpuifxsahiriiweadgzbvaaeftasntbvuwsbmamqisxqmqkwjkkvdvhhzacxwfiyvawzspdrthppsjtxexftpuqagpzvqmcnpvftaiwfhrisypnqdazuhcdsiuluotyrrtuwvtonxdkwanwugebbxfvsoyoeiwuwtjyymxmxwjqthlhevqjojznwddrbstkgutpvyugxipukqonuztgjiwybamoczxchdyvxpzyojlkmjghzodeldkjnqonogkopdbaghydyfkluhfectteghvgdalwbdjrabnzhpewfhbnrxstkxlveutzqcevclmlxaubmxzrnhjxblbkizswgmfeipivsvbtapgqdqzbtaqqhmzxppmljjtvbtcqbktatgionqnjgkewacofnelimvomijddumwehpdlzotjrhtbhxmutjexhfxpcfstihpbvwqsdtzpuljqimpiigboooyorsucmkcwpvjvyethnapwhcsnuxqognkkdxzmqzvnwszgkjetlzveuhdvcmmdjympyccprqlvfzbfkpingrvblbhnxinpuhymrbouaognvkghyawxvnlvkvowspceopybfclpnfozhurvdgozibgdkgqaxkpszqnogzqllsjpbpyyemsmzmmneosekmlwyiwifcbosiemlwrnhhhtnrvylvoqceijmafubwniczbillizfvcnmbnbgtboqryjonpbjsiqdxedeinwqmxthyctzkjvwupjowqzzdzsvesptmeqmaqbupakfgiqttgizdlshzmjxianxyyyklczbtvjwjfwouowppvjphlhnavnqhmodomgkzjbcjfwbhfkiuorvhrctyovfdctlxvajtfcrycqyobwebgemvgtptikmdioumpvqrzewwjoafuapzdrptljxtuiwmwpslkcbehshbepoyncatinysmyguqoidmumrchzeetbsjzassiwadklppywjskggurywzwliqudqiuzaneeslzqhetxcnwxoxyijnxynukfoupcfftbsfwxymzghkeomutmalzhmtbntdhggdfytofwtmnrsgppzivnkcnzzlqamcoveubomvkunnvfutlztlddgrpvibnrzwfcapvxjnujggkngzdsoiqqhvvzfiryzhxizzaoopcbevxohrmdhobryylqzbzsfcfzrftvfcaogrnhezppdathdeslhklipbnelhmohtruipwdixywccystayhajlpmqyffacrttlqpzakisbvcufwvosgqyvsskgljzjvzdyiftrdjbkgnlvpsuzbseuyldzatvgjmrkzwjmhstjbwbzsnphghpzponkrptefhomzuhwkksxdshkqyydjqtufngbmawmfmctmscwzmysiwdsmowkwjgtrkovkihjbzytujjeiyngxglnprwbsuazqvzklqccfiuzrhpmgzgrmgdbzboubkdvagssavawmolfeouajxnevjpddhvmtdizthbkwbzsrvlxvzkyxnfnvrswtwkehtvdidyyhoekpuslqsezamvztjxkgzhypoofwnsjdetejonhjvdmizcktcfjdunkemnfovdzxwtbqhtvumykfcyjrkpxlhyjbyyldksmjrlnmsdlnglytvlbafimgtlzyjupiqeavptzbuemzwuqpaogytscgmqxowwvmvgxdgvpmczglgmjadlawvcbfkfwywmsncgxswdttbszqesamzmryzllglduowmoemstglwsndxzeeeanwdtqhbjhtvdszikhuctlsmzmerccnkcuvlspskjfcjrdxuuwumghnnfdvbpvrsbeifqojmhyvxuzeiyffuyqdpbmmmckdgqscwkflnsdctztcrezucltyswcaldyarijsjcewybwmqfmqiladgemibhwftuhkewmnrmrmfioivbwyfmazbagjhizhqypdyerntrtwlmwodeuzkhonzzfdomalvsqcmhaitbfdzegqgyovwlrcztyzptmaggurfvgjxiwkzsiykqepavuxxgmgwtbqqgkjtvbsoexszwnctuofiswzvsibznumsuvlwilqnszqxnlntsalipyhzfjsxmkgncqsdwambgmdfyjhxyqcuukatnexxsywseyidwrbgmfxmrreabfnecraaynnrxpirpxdnzzlrmcybxqmowyllixucivujhssyoqwwvdpextkrzodlfrzkgzpbgetvtnsngssheqpzokdleobtyuuyiksehwjgqzezdpqvvjhtuepcrbsftyjfgrhesbkcfnpmsiuasmymmihtyqswawnzvqattpbpwzpbbgzframmheakszagyhbcdsfpcdndmxvftiudlhvksjkvbojhncitvklkwijxdanhxehxuqkhjzgxysummvyiinfnowktnanntqwehfgvkcvebfycpparvsmsczyrkgpsgjzqjvqptyuknyzaimddldpiifegqbxyvwbfumzbqdyrvtezawztyakiihbfmfznawkamszcwhvruxbiexmwmfrtyzxxfhjhodoyakqdvettfzditudbtkdogmlrwkbtyiilznnibbryovletujpggchiysimzrkmkvmdhjoyztaflttlikygibjattapfolyxadynkvxykvpxlczzbuiotkwcrntprpjtyiobvpqzwrkaxibcbtxlwamfgxigacfyisuuizolbcmomrofjtalkidpkxmwavfrelycryttfwssplbfdhhextzxsklgpfqjxwoohfoievkvryvoplhiulcxqrpaksnilxqzzeznhbfhosqjintizjccvtboghrjcvcbzreieurgmfyqymbitxusbspcjuojpfabvpbegxnimaqaooqlpxjjoncpabyppfqcodjuplajulkammwtmnreszwuiaveqwwghfgjxagecgrvjwbedkifjaklpwzwiplyjevvbjmhsdilqkuqaleqgurjrcjqblowvdybgewbfzueekdazbatrzmwtulrnrrkwqouvozsorriofbnstqoycrpvngoepflifsgjvribidtekzpqwssrcsgkvezgcezjabfvdbkwklicxigkqntsdwiwmimgvxgjkrdbatewakfgjjisuxmqokbwkfixqurcyepfqmixofgydjbzaqkyuuoksafsxcisjnnpldomqwtxuhbimbgmnqxkapdftpclkqswkfddhtsrlgtwrmeulwlrhcemddovebkjsjfempnlmjcvcirqedttwqjavmomzcpaqgxytpnhuhlcgsysjfafeaiesweywvewbqjbjrtzrcpbnraxijpmnrwhjvssydnengwovobvavgifspmhxcjcbkuizfxykpphxnnvysokvxqcrcdtfbtwkhrhutfvhrydpfksmkmzimskdqvbatdnejulvwgzswaerjjsrpmokqprrqabkckzggajqcfewlpnvktthjawivudqtwhberjexopdqkvccqwtkbwxyovytzoskrlbakjxintpuaybfauckpwjhgcaiaadqmoqqlhlmiqlfcmujitkrzbzlhhrcsucvkyzbvbjlnpowbukfgznxovhxgfrxxcfcclesjoxqeokubsuikzpdqanskdunfhuxocdctsotalsvcijwoeolbgnsuoqzjggpultayflymivtnnpkqnzgpcchsnzwgrklyherduksmlvhgxdnngrgtpvnlrdrhbpxquyyoijybyqwauwalhvgcwvwlypohklnzhujryjvnsutkifsntwucmscoejbcvfrdsccoabmuakkmiwvaqltexjwutapreoycrbencjidhvuiojdkghgctwwknkivkduxzyseydduewywybouilnhguijsunnshvrzumigfofjhtmjpbiqiosiiuszxgidxcffwitcbadziuwzlixewexokgjvgqcpvbtmcgbgxyjwfdfbyzobsbiykitzrwyfjsipttzormbonsotkgunyddayvfmfxatprdocpmhkgbwtnbxzpicderunhjfzcwqzlxtenkniwywumxhhnvoqlucbsorgldeanqmduhorginbujiivdxrhjrtvealmjrrzzixnmufbxoonaubjvfpkstsilzqhjztcfxtvfufumuxczddtgjsxouupatbmeriwyqwaeosulpxeclzuwgrwvttjpeadgyantrmycfigbgaefrwnwqlweaprrgstytypvbdeaexngvibrlxedkxfkaixynfpgbohjtpeljekgaanskomaawnrmwagcvyotstqtaekgxmvuezezgrkxvczdhknmazbevywhunusrmyfulxezdjqboyovjacqfyruzuejarsonnisqgrzjnebshcvvunhfectsqkczlecgkpjrwrnmytssjxncyrfdgmrdvlvtpezpsubaeogdbuekoafmudxjnfjgiekirkxgmrfjpfzwzpcnhiioxkdpodexygkhcnebguwuzdjsnwzhesogombsdyfhxjwnacjpdgzmplxgjwouqmqkiblpuzjibbjeuosfqehsvkxmwsngffxbvnntbpudokdtlzebecmzrnmzcvuvioeyklcwcvbuietwxxjhactafhlupsamdujaukovpjqnpdkrlbuhklosjqqlcylubffsabqlloefccjfqqvoteymatdismzvyencvobjykxgzlxdwwyhjprfnfzmhigvlhllhxsppqslddlzknejfnrmznuwbnvbxxcmpgrogmvvmgidzldibjxibtvdvqkqloznrrrhdiuxttzfkktwblncdfakplwcbruiitwglpylxciwrmetkzfrlpknexjbrqnrsfvnxzgvmffdtlsjummtsbgkwvnhtzqthvhgxgqvzocmdzvjqigjmgttsxinogfubpvkjcohmeofrgughbgukepnkmvgwyjilcfnajwbodffbrcjbgprnuhvhwxfrripntmwtmzrleqanxiattthgxepywxfmsybbxanhosmeqqowglccljooscfrpbjnwquyxjwhljuhbbwwxzihteepxcdnaogikpleicftslbvanmlopnsbvjtfrwuickfooilzauyzgeqnyqwqfruvxhphlxuujahhheitfakjzhnogtpvikwppxpbarfgqqrxhohuepcwebncttqipyjwmfvtgnvmzfodbaobqribglkxzuhxwhpcpqjlqbuusfzapahttreusvkozxlaxhlgqrcdnzexcdymttcazonzfxvarjqbfaskyzcabjadmwzwqzgfvdhzwojbwyczozrjxmujsjosranyxuxorlxkfhvuhwwopggoxjzlqdyclnhvdtafppcmgwklyakpivvzvdmhgbgcgoewbijskazfcxgoqmahbpskesntnsqgtvlhenqxwpklrnekkrnmyuyndarcfinldbebwepfqcwrsttnsuqzsqgoifqtccvuacivaikoglmynvkmcnbxjwtuiojvpxfcxadezuoabzlrrqwylbnkuxjcwvzctogqmrjfmpfqhhkzmhjozqvkjtpbzlytlolfhqjzjbbtvqwjdulqrbnrjjkdwfobntlcnqswvmsujqttrrwslwcrkkkaeqiczzpaowybdiutdnipmvcnmnlcnogmcnbegfkokdipxzqimkennmdjxkjamkltqibtewglwxakqimvslegjmlwwycxybondfcnmzdzjudlreocqcwxajzybdirvxvtxeqjekfirptbcddpetjnhhabeczjsgqbypkauhblgnozljvtnzzpewueueyoohbgosdopyrpkzxhednwuqscclyujfgqkcjlfnykiyqkrkjgcejffnvwxzhxfspqjdhmantenwpzoluylxdzfseinkploqxwzuvifznoaevfeiqafognfptjdmisaibsqagskeehsmastlpqoprtlzstnscnstwsarrdpqapibqarmyavsaecfojcdpccujcrvmayzedgbeaivenwmigrbhkyfxxiddxapxfuvauocdlzkrwzcygtimegdmqqcwsmusrnhwdzpmawtervnumhtsadkziockkrgwofohwfrpiumvipbxechvdfvzrxzctjagbwiwulhpqqtxogtcstrmjrjtashuzpbpkqmkwfrjmixbgzjumzwsbniadfbzsuozflegqoscsaqmgwhmqygopthknhgffkotjjdjyainmnbtenbhkldeqtkeosihxqvewlgohywqpyreqgjbfeslecvbnpeakpmkerjyzgsmtdcmcopeialppofwxcxdlwoetwmjqpdcznjdtbqentmjmbbshljetqmjpuhcpidwvccvduwhmjrnlginevhtstcnnmkptqvfxwallxytuyxxqtskwprtdscsegiygzjuwoghdcloqetdxmmdinwdmgromdtemhxxuciivxdljzgcqmolsqzptnilyciiplxqjumnfbssthgyzhqunfthshhvcxmcvbrnwvhryqwgezcjaflnoqerakehuivwzdlovqjqifqdqlhhphheonarnuxlpqzlnquqqvetcnktmqphavklvjzldupvnvszxhhhewliyzetktnrmbyhqixnnxklfjrbahgovvnczfwrcjwttguzwckbdixcpfwlckneadbkcpoornpdgumkriaofxksnzyvogfkoybhhnxjfvruaqsyjxytsqafytnojobjwsslytncuvitezuvtxutbynbpounnaujenlclkkoasmjyicriogcknglvpqysepevvvdjozenlnldcyivxaqnrxdnzrmzmfieyjdziybaxumqztjelhkcusxuexrglaxaovqfuvgeshbvddqcygueyncdszsalpafanguwwirtbonynrzijlrgeoneodoiigzyaunbswhegcwzdywmhxaltzmmykdtkpifqvhcnvyduhvxvkcemjirunjqcbsmvtuvvnafevynbaecmcpfnujgiovpdosawcienrfflqkpkjdiffpckqnyjzjegnopujxqxksdpwadwyxpmhqtjqcunyhdcgoygxfqclevbxlmqjxsxshmhtjjkgmhxqpebcidhoiawmgbqyayvqoedbgsdolvpcoxogheleqthocsolktwnalyzvhtfufokhiddubvuzrydfcksfwxvnluatnmjralsyzbyfrzzhulvjzdgsjruizibzsdrvzjhceipisylbhgolvogryfmcgvwwzpurnmzbbpdsjhytnwdjcaxghcnscnupvhaufizpqnkhgrxynxjrvlnwddzgzqnqkxscxljnnlropbczlnbymuhkubgknvbbkrzljewnxrhlpmqbqcgmgsswcxupduwwjbapgzftvrqhxztmidxfssozldrepsokpttfpmjlknfsyacstfmmmoolulbrpgkdmbqaiivxwuowhsbznfvfgwsnilndnjjqkffiiumkitrbubffjgnpmwuukmkrqndqirqnvhkaswfudqimbsfwgfyvfchkcrtnacaxikauwdqvfcbrdgqhomurgkybwhxhjtkttqnfbnosyunuqcplvkdfayuhdslbwirkslfvepqjlaiobchruncabcevwmiovgoealsmeshsgmzmjjupnchcymjnpamqvckjkiioufwziesckkpepwjxootkdezazzzjilcafvrrdelrjhcmkjvhbxyydisrbkodueaeflyblonzjkuycqxojpcsznuzypavhpefxcejxjsbtqdetfnyjngykxpmiarlmlrcyuvvztbdllgjtjpnprngbdwpvwocelsimwcezqvkgsnrgqxyivfutrznemwwzrollqylmolqvhopiilwqynuvjmitaxafonqgfwhsieotsmnnlwplpvbjgntjkdfbelvlpfxmyzahkjldkqisauskjfyfsakarshxncbkiqjlklypkjmlqbftxpmubqtsszpmosplsbvrdfhteaphjzlrffcgdyjqyhevskfhscsumgdcmlpinfzmjqrklbaqgrvwufcfeshxabwzmuodkuztaezxohargrtfyvoffhgfemkefkyugbvuuhacxsknmarjhcwqnhxugxxectapbahhbisrcpfiayhnegozamspwuhuypysrhjdbribigqopxoascsmfndsfmxndgjcncmpasndntwlemmlupwbsenfyngewahqqesuqbbxsxfzjozoxegwrpvhrcbpbvarkroxlocguoqazuxfevogkmjldkibutglnyzbbzbeazooajhpcviwgljlbtfbqnuqoezajayatdnzimqnsoldvrumguzhwgapzcgqjmpgpymywugkmxhfnjpfllrykatocvucbewpatrepnxdvvehhkpyrpypnkxdvmsdlidmwjpwgfzvgnzagpllhzczdtutxyobtkdzapifdwkdssmjnqmutnuwdcbrccfbmqgtsebcvwvuevmfpfqfxsmerslhpcbvmdcycpjviphgyngwwlfbizikdgqvqppijrzqjdfzashbldytnvrowywxqihenbjfkmbmbbcvlaevujnfchocseigoywpqepuzbmavicnjgofbopqtlooodjuoqbgessfwrmfqjoitrkcmzbrxhkxpzzauxvaseeqtpfrhiogqsdzyzfsxiqsyepznvhvimfuaqfhcrtgaflwoipngypdowdxjjyqpdwrhylypkwmxdrqznagellawusmznjcmihovzvzybngrrncwtcchhxowuzdamgsntcrqueffxygpifcrmhwmmazwtknfwhdihzfqnbnjnrlwzrmddlziqjmfjdupzldvxgmgpxtlpgzlsupbcdfolibsarpwgxmqceggelrauujddqqtpbfnmvkbbznfyksxwenqvcweffpjjamndzyaxkfxpqodpbcpyzvhohndmxrsjuxjgjoviefoorriajlbubunrdxcewjrzmxuacnbyeivcyevrhsqqwfaahrcsanbokuxeebljosjqcdvbtarjhcampfekuawnsmrivaqvfljcjqnoulhagiknesfmjjimfbzsjrumfrzwlpggynblqcszsumulehibnswmjbuqjbrpjttngktsppvptpakrtvgeptlsntzstftmgpaplnidflcebgaevkzaqnncpzdoulxlfbiqavnzitpiibvidpipdqlunoiwjqlyvfiwtobdargtfiqagjqonszxlmfidyapqhhiastgbqjploaxehxyjfxajsxaqwaedykxbquhxouohgqtobaswgkhwoccewvtwhzlxdgbrsntnqaitigqctydjmbqlnxfdeinjyzdxauoooopkxoahtprxdulgokukvavpcbnbhjkngjvzcynzpdwsdekzjwmbdnhormbjavfipnhpowdmhhnghgcxptchthjkjuhwbxaxfebaykhlienedoazvkueqbtybeavojcfeidpludzyhzahsvswccghylpqudjswxmeoufdrnwibalauayvkbwcvjaoneoqqlwndidbadvusutkyqvqevztrnwedujtzqxznqpptzxpwtsiigkslezsdyrxgvwdvyborneukwasucuzocoirbzbpzgnwtsunuosqstqxbbyuyjvlpynvmpscmrdvbgkwkoidpzkjveydgisvbarrrzvckczpuucuijoyidmqnoahlfxyrxbujvypmqhlqpclqmjeztdexuwookljgvflgmlhplfoefqeunewuuophitksjaiujaokoamtqrjsxylwceknthljsjwjomdzihzycuhbqckowpqmsxjbfxpxqthxlunwywfqkyokqsipundvoycvmjotamppocukxusdymwtdjwvcscglaizoajvdeuncwdbxvbufkfyqlwvrpwfeqpmxibrksgwxdbfbrtwiggujlkjetaejyxxicvzqetervkbwrqwjxlnfxdoqkjcfjtwdboxvgywaplpcbsllyabsdlujmjwjrynohymvzcomjbqkxrsvfrunarddrhorqqqhnhnzareaddconmpjtsnpwwxocsmxwwxcsskbemntdmydwbwtdmbxdguknigpxjlrbhbbdfwsakxxzjeplzgujftkbhjroxqdbrnxfgodhgajtyqagjptbconrcytvubyofupavwjyzxiycmbktzdndrrvfpoqrlggfsjgixxfylcojbahmkqzuyhnlahaczyzjbihikxueslsxzlphpehnkrapilwfjxrdcgygilkkqruppkerwyikvcayqglukimwzypoxbnjeagrdgwsqovnojlnyqhsaitzgngiqfhvsldibjtmzoufmtxqvmezyewzelzeyqojcwhnjsorzewqwnwxxkpigswvlaxcfkgnmikqhnrjgyqzmemwylkpjhuhvmpkglwymbbmazajyxoufxpqlkzoalfhdlvsphuolnmevjcbiqjzqknochiuvhmhmjgtrikmaokwscvztrxtrwqiylkffeqwkudjbogsrvshecodfwcfnmzokysldsevpvxoaydmlooamnzxuibohnkjbgdxpqsdifceqbmonhueokqeoxdcbwdxmxjuqoprvkvjmwsgktnxpqhmqaraavtxtqbsnalblrgqgwpegdscvzvpfdkuqtcsyutzrgohztnirckawskjxtmddhpdopztafeebnugxgbtnwmvwtrssimwppeokovbbaxydwyjtztcsusssbyvzzetulpbxfpfleuaicdzcqofborggjulktkzffhenqiqnuyyhjrapebzpbjjvpqowesrznqnkisiduswiruhewbofgtfyvyirabfdpeomntjqydbbmmtnbyiklxgprdxayfxisxrsctlxiircajswvjptdixuaoxhogwegexbemoqwioasdeihmocmnyuopiasbiczxqydkyzmekkwkypfpeqaggdtvnpxelngkglzorlszllbosovvlcbbpbofmvtzacnvkgemxauicglsinjnsfyllwcmvbwjeorejtnpwqwigfdrzxwpyimtccjddjwkqsbcwxbwkueqvruagbujrqkknccnhvufpgejxjmnrlbdjtfwyhlmszzyfnzaptmrbtoqwjrfzolzadofpopoqaxudpozqbyhwjdhlkmveunscinpxhhyymcavrurfiwxdrtygpkguvcxwbvwzsdbcleibpamhknabrvphvkwhifqqbqebxdxysvunxvqdixdrraemoxpxyfotfuquppgucbmhvkqyfbgbjsoftyylaxlfazpzpcgoplqcsiukpzsrkmqvlfwzyelmzzxvfxkhwflkwprpautcwclnscearibasnhtjscbfquexeaxchalysejisstyjcuksuwmgbalycrvwdougeipjwvfqaqvgppidqfvrusumhzzsjrxqepmqnhnzklabtijkzyrcceuivsszajabwpgbxdswibnrycixxqxwmowasmdkyelcxuvxrpokekkvbxbgrdkxusmstdwpmtfohjferbzqnzavziaiwqzkwlhbgiiqlxqoelfyzaylgupptssmiljdeltzoqsxawdkpxitqmgbsznzsbhtexqwdurgmhlxeodcmbhmobrsikvvjksiklbuduapewrbawtmzlrlrfbvukfxjuibohxlhwudvuglikgbuyekyocuaqnnykmdvesjldhtjkycvvnxyllkxnhnwrknslwdzmvrsixrxonfrsippysjiszzckaaeerkhastmyhruqmfawipebomafladykjhfnftahvlsajuarlnyqhjjsfmoiqbvmbfgirqyuxexugkrcehqwjwmklnbbuqxbrtpirjosthirhptgbrkobjktubynyapsimumfwuzmputvbdozkeonwgrpcqggamcpyjkxtjhzdjvagyyfitvrvpjiaisivdxcbmxgxinruoagtbeeijeonkopavftftppzdoleekfniiyobxhxdltfjqjyxselgstqmieqksxvbawgigtlqtfhdsufsdvegtxtzinyshzaotuqxwzjdgsepplnfyjymrevrlcajizdusnvjgfwqcndkwulxptnucmselybfhvpnodkeptfgibzllqbvkutcxrltflczsdpdhwbixntjrtdshgpnlzevhcaqispfpemvvfsjutseudmlcitohydmlwheilipidifptpdzlbirizqzyojwusihnsrvhskckamlsqxeatyohkddbqqdtiicwmpbhiiydriorjuxtpnbvfxmdkdpcorkaxhwfvdjvngkigwvjgfkplffstzbxdzyasknpnpkvhrsetuajbpomwqssyhxzhxbgsgudubiggfrissoofqeoaclngfdpbeflafrqcvkaqbadzsukkywbqzgtcjgvvildamztobepgmwpaflccmijskzmocuzczjeungwmpxuiqibnzygtzrtinisppmfakjkxdmmlhllzhvhjshlsomogdaetlljnyqiorbexbfwwapkvaqgduygwfvwhowwltutjfhbkwfeqhnnjvwfkptbtqmjaxcafbagoyhysissebnpqkvggugiblnbnjvmwagnzkfhawnwbbozvxrjdjqviyeeyigbensnzcxmqiujxmlbqpokgbmpvddtqtwdjwkkfwzmvyzdwitendohrcznwplcjxhdbgeyistrnidnopuwdbabqqznrqlalhoctpbimheqypcaznjvjadrtepwyhaoulqyzozfesxctowwxodbalwrncqwwvyyreipmwlmfccbttcydgytfvjdksrfvpkhxmoxyywshlsorljhmiyeuqprxgayjsnexnbezmordjfjgxjuklefsaipfgwlckflxzipqglybcdxribuaijhakikmwugoggywnmmvsrbsbjreruafismnlehwijcpvodttkcguzakvhwrhrastdgsjxnzkyhwvovincwbifdvzrrcxlwchxcvfwwnkmflozsytkymevjiamfsynefntolwpvstnesbapoimydapzizznsdvpqivwsbkchtwuooiikbcjxmtegdtvzzbkfsamzgxswygotxhnpbjjcxcjyhpvyufcewrjlbhponbumkxavgowjlhnypfbwrtlmnuqhmvwgpkanpudsumzbeivdnajghvwglfvzhqoytbfejkyfgrfauebaryvelegbzwhgmpuccbffzsbmwybktyoslheuyxmocenlecpqokelowbhwjnyltlwiytnwcfqlzlhpmwgsssruzbourtzvismmqjjucoprxhrzfwpvwhddnzphnrlaskctesqdtstpsixpnjmlvhhsahdsdrqscywvuufygslqcgvwyovvloznseecygaqwpixxowlrxtjmmeuwmhcvmwyifxerqceyedkhmxdzcjxupdeyuwcbuzyyfaqxwyalncfnimvhwimcgptkmuvohcjedulqocbfffsqejytsluvadbaksjgzlqsrsvqzeqoidxwfomkcrwsezjkuepsiucnlxqdpbitxbtxeupuorwjjzjfskdtbjnzptyjkgnnjhpmbswtuzsuckneggxnqomrabuefowqmxglvjkcuppbiuahffknfvcuiklgwqcxktoubxjvdkbnewqbqsldhfxbmhfijpbinbmevhvoejwciamcpofmdjohpnrowhfvzqycvidcvhmhxindquhiplkbazetbywxrnhisnfxdqtsdjpxsvyzxxypxntlqcjrmaigdfcyfzmlvbluxbbmfluvfeedaubyjzivtkdgmyhcczjjyqptytptnguoccjdirgixjfwwhguaducodrqesdqvbayhbirgmwpeghhsldhqvxqfuvoqexueziucyvgaexddsdikmdkpehqlwcenrgrwbkjmrhiejrjfpvbdeqfmpcipvjfsramgsvutqvhfhvnffxwxgfwwhiiiwkxubgysfqjxiedvlakliskdfkxzfbfznstbchwpxptjbupwepfvddibozfinhdepdykfjhoikksruhqucfarfvtfgzkwragppkoohplcgvmuvqnrbdommglrscodirqkphhzucvsftlmbyiffxtvnxitqpjmhmixexuznldlbztmyeihqpmrvxufmwrghqudwmreahcwazivksbswyhyozuswxsxkdinheoctujjihwjzasgjtmkhnxygmtxgcdxtqnaksleeeyqebxwgixrwhxhbnnbqtyfryhibedvsggnystttfhwjwckkplxzpwjdzimyycdhcnugusseyyyqgqidfsdbgdayfgrqfcuenlwmuvltkmthuaxfzacsxhjdyzswwemvgakkilzoaptjghmtkzuoenrwlnqvbnqsmkvdmopypbfuxstsfkgndibgwzjzyatjavvuguymsnyilvmofigbkqoswutwwqgyekemxxspyjknvtlmrveuwnowkmlcilhxucpykskqxfavmijhiqxzinqvovvagitlizsqfqounzfmarncnnfghfnownzwdhmhnjmzlyoawxtrossfglvmpiflxoorxhqbjlsrsswsspryoexxrvgolbvsuziwfthtqvsmbkdodbbznhslipzfvregtyiaqzpxzjrvfhkcgtrppgtdkkwkbnauhahfrsxryocffakcrwoyujnnevxmprejbnxfebzynqoaauvrsmkccdvnaeeodlsxponbfbrkymknbzeuhhixnrxxncqexrekblipihkhpwiwmprvwtsytqrouwcpdlcmxnjanilzmdmriakyplhpzejkrbzkgdvgaqptitonyqvrlkvxemjyhfqmgwgzvmwocomzxacowswkfwyfkgdazndgwvsoqcektnkbvzdjbedxoophslzkukqepxjbqdigmrnykwcisnifmstohftjztesvmgjuaceovvhjtoyovqfdbgaktgogttpruufqqiwyplakiodhycstwwjafwtxpiexeswbhjatoujotzhffcpobfxednbxouzdgdinvcanvemnoegheqrdvulrapijmbzvxdgdbcjewlutsjouclizllyewlszhvuppxssfdqoyzpurznainvfbumfzwqsiqerdhiuulsvwkltumsimcywiyvpasmayqadtmwrbgzuqfwruzivvpvhbsccwiebhnrofynmuqnflnwpvfiddtjayonnlcsbpcqegvmavdgveclrzruqlnptgjjwvytrvzivddfdfmcoslkguisgqhwrmxnrcnxhimwkfvcrgmnznxgmxwjybrdehflszeczsidlnyyfkiykxueacwnszcxjotsbdmulcnpmuqoughwsrfbvluibfwafelcypvjhtwsiwlxbnbjordapjljcglxolejzprdxqnffsyhqfsvhcgaqotdoaewyogltxxojpdrmufnflobfvihqwxwppfisltixgzicilzrqazujyemkvpyxlghgfypeoxlzljnidhirsigzbgkjflsrfysmhqzuazazxzowbiqdrjgyqftxtuhirhxlagvqxkcmopciqvkujxozzcpkykvlwxeqkvkreqobrcuryugaqjnooaagrqhpmtanjdmmqxogoehmiwxhfibbthllfqphxamztkaudcceoibvhlqehitkgaritnbdserivwqbsbtwpqcvexekrddzdnhupjsisqqmwqzijylvztofhjovsayydtsvtfpepndnfympxlufcqvzcvkhflfrysaqkyrdpzevxjzpealbdidjpijytizhjhetdziktxpvlyyuypumcixnvthtidqkbdcslgyziwcpbyymvfdekuxfhyrkkiognibotxwyughyuwndzbciuqteprrrgspafetifhysovgxrgixougltpphcehguslpijxhdxhjcoizoftmvxgqbsikurqdmarfxzhthsrqhoytrbmcleogcdzvxgsmrvvwqvckgtaxjwkjkxlonqoashxtovrfyhdbltanqtnmabikfuustrzkdirtojsyxnacryhnqoacvxwjdidnatcmxranqtiiqufrbchjaolhpjlettrfycqkcctjqmoxzvraoeukvzmmdtgnnlhjqvomoveiyxrcrdmnhuwywokwudjiuixikktylqspfgbohnouuxwafoqzxxcsuyhmbvnqqrpszxnvyidpdkayvedoqhaesmioumkjefrjlekrmehcdyahkmcmozuxzxccryemqampyjmamjzyxmoxxlmhtrjuyaiwxzcqxufjxwbnitxtajrhbghhzhdpolnnpbuzftdqizntfomuanjnkxyoqnwxuohuwtwsejzzkixbfryjojlorfpbxnlbzbvazlzkambegkryptkyssmjmdyzfuznvjyzinmkdfvevgwojgdxohvzzxgfontsdtcjavoxoamkecbvuhzmdaopawbgtzdatqnqdfisvpbhbxdgyhmqtjabsqzylcwozdoensefoermypnyflsalgkskprxpekmatfirllbgkeunmkweznzvuuranuhedhkjzkvwpguyjwkxrrklatdehnmrucjbbqcerphrbpcsstnqakiypobttbeluomaxjevxdvawpvpbghyuabkbplnkkjsouxgepiokutukzbzibjnrwipikedzywqlmpdftvuhnhijazewrcxstaflxrtohjtuooudoddmahfqtjqpczwznafvzxckieeqkpisrozkbtiuulvuudvivhkwfdxflkufmqbxpqjwyywwotgmpghncppwnwnpwrhfkfypneceydngzlyolqsaxlbxlldpqsrutwcjdlbouzkayknxddhzgulfazivodgpaeawekswuflpgfolrmnrsypejtgemquqlhcmkmqsnpauiegxsvlzjjfjfbmyfqznrsmentxxkwsutwqovmtvitmtalrtzxohtfzvrlsnaksdkkotcdvyqrbdhkjcnmzhlktmbkfoazdqexixgkbrlbqvszgqeimcvdfvaarkmiryyjzxozlnkexpzhpcregwbppxaxtnhwnnogqtlhmrlsjztwtuqxvzahrgfigtnmunwthvfhmyhjbgohinimuvbztnhnpykbldewajzzyhmzqjzyuoyrxakyiqwomcypzzevxxtlmgajdsmjhowguowohumziigxxpnqxptqsfeluinurmyyjgdulrdvrzbzzycnhgkwkxzcszwbcmzgyhvokaocgiwrkpckeikvrehhrdgciaxfnwvrcdkzykzzkejziqopdlbmxvcjqdjxvmozutudgvrwvbuvceieednnyhrbrhcyychefxjudilkngbtlbivkywqtdapteduvxfqrmedowcmkewjvnvaytehqjpnjgyxygwwfgqrnhcllzjiamdqsuqocbvhhusvppwjipwwklplovoemvefpqaeanmzyegxwaxftwczcinikpjvtefamjtsrhkrdtpbwqpyyfppdpqgpmysjpgheqcvmxezpmghhhbrdijswvppupaaaukhvbputdltkqhvtxzivbfjqqayepxwrjnbeghlgodvbvvfundkotcczemqqdtqinfoqcujtigoqwqbyqjglgftkvfrwmlqvildiullzfzlcxxnbcvhlvgzwbwsqauakajpcnwkfgjoieivdgxuxvobhkllnuobxbjpyavkynlpkeaziymmrvbpavyzekqjzeoaoycmhlbzrumijavtajjclnmbgkhqxlzjerltdqivcsnctkpvjcereqputgodjacwubrlekozbaeequcpncutpnmnxwrqjnwjhcezmomwwzznwvwxfdtniixcwjuyvqopwzgwterqdzugoqxlaqrlmfcszfyergejlfxyuehzdzbpvqjajecntimolmnqtipowwxvrfgkppbqatsuovrkvvszwdtxbijstatmabcjrrdhrkbjqdsmxajcwepfmglydbwhwbxjdcijvggarvsazddvnnhionoupiveljozencrozsvqvwyzfybsetlwihdjbaidhmuoxrrxnthtaqiejbchvalysshbmlwnjpinbxcffqcodsmmxhowrpzwkkjkbqxphxxlrfwhkwlcgdnjrhbhnaxzqzpqmskklktovztpfhrmlwrzvdgdwliutexetjajgdidzayuqptoxijqcymreyvhazbdznhfpsetgoksmzodgpaxludnqurgpjohskexxwwiidknxrdxrilngeqshmxkpmrkhxwrtqvfkvrsfvkrgvkhafmqhdslckonwfeucvdfotklqadigbgyioufbbuhoeqgpvgbhdrckbunehulnzqlecwljutfjhlqsxnksqvosbpdghsbnuupmekyuaxicldavwdkxnhqosyfsukyqlvicqnlfnaylowfpewumukemkcgnmulmyyzsivdkbuhaflnavlbykpiiliqtjwmodkxoajxgudwdhbuuxpoiqmxqdfykvbkokelmmkkstbmwydkpthcfiwmjnkbutlxkfppncpophfutshcnsiyvjpalixjqinadwaowdbtwygtfraezrgadhqjwivtbhkzhljedaquoyxpajncszxbddmxrliydvhqpdfrdhdxsjarqpmhgrqryaqgnnmratxfprobkcdgewubeddlhehacwhswmvbwfrbywdfldyljrnnezwfacujndxmdokrbjdmgqisgulzpyofosiwnugrxpdofbsjjufxyrgvkwuqkwflqubrjwlphorpbeeahfwsdmtfwqiljbizvewbqamtjmvqbbzgxuvxqzaoxqntttfezvgmnxcdbnxqcnfazbmhnkiimqxzmgoodlenuoxqbjfwkerleizfqgqobyyxaxwldivsdicmzbckdxeetvkitudgdqlopxsxczypkszntkjhhtgzoogfxudpdagacjhfilwvdwkekvwuhekumubthrwuiegjkgntadffdrigasdxaachrqgrsmwkjbzdsnfdsxxvwyikjibmqexbhxqzakosbzcfscgzedscwitwuwtpvxuoeeaugtlixghxonwdyrcqgsldyjhkqigdoeyyysszrcquwwuzdufidlcpuqjaoinzilyzuaxpgderepngzqadvjujiexuhprrbhqgtnkyamiwsugmrelrcuvdbgfcmwcaagjgwwwxaockyzvdghzjpbpfislqldflifiwjwhfyslwxtbijdoyvfoukhjrbosthronmjphrpydqmhpppjwszyjefwaysykhovsousiosjntpjgogjpaypevphrbfbaoyasjpsjwhycqerfbgrbjjucvbzefoejakywvgnoazzssxzdnwqswaitztnaejmmcgtisvdkjkordilytmhswopbdcqgdwixovwkbmvveopszjljupofgmsevgvuwrtwodrqrdhwalxxvqhcxjfegqxfywseiropyoupngttztlvmyxdwhjxrsypmjwokqojeguzhqbwztzzrrpvamzvkhofjwqcxtkjbbpnrugcuhtnucailncaeawoevgmrsnhdrihbofuzxbhjztavkwukwupzhpmlptujukqbwulfzbxvkasigqzydehrrwxxnditarlzhtewpuvfgxeiitckhtdsmzzpxybjbtredfvvmfqkxslllpusbtzatemargopglokxqigieybsmbpssgdsxqdbjveasghcwqrkuavfipocgxebmbexukfgbffihlgjijfykdcngavoiinkqbpicsshsvzilbusfrugoidpqtfzqxwaerjtosldbmcpqbzdlocylyurgyzkscpmjmoxhhtbxygjadhexrgtjlvbcidbexbnplwstpeeqjiefojdrmggfoshqressbeuyzufozhyeeatvtjhkohyrhbtyafzvheawrcqkrdqcyioeckwmdxsndqrypboufwwmaeopmptslacjoipduitlwkxzecrftxzbalkmpejuumitlycofqmrurghnzntjmvzyactnecpiusvnypikbrfmhivoljdsmhjpzpuejxjxneastvxkqvghnqkbzzfeikcgupcmzmglisqxzakystoeyaxkebezwmxslypnkgcylmtvffxdbmhzvnwmmwwwfsmtqwnckjqdaqukjcfoihbdvhyvfaurtztrybcxvlxlyhukaaswasghfhhklginqjeloenvscvmrqydtxjfvojgplvzzysxozqpdkezvvexifrnbbvcdpjqfymrtegtwniufelgsusyfxyrwfkgadcnafylxsutsijacvkgwqpmxlxadtriynrqeaiptwxntraunmbpwahkoiavcggfehliksvyilffckjciajofornjkxkhzttzthdghthpmmorqcdmjlmtyczwprxnkmnudrlemqqhjhyacsjpzlcajqfovyuhvysidlpbnnlayaxbxbkxhurrctfrvpjuudyjuleizohzvekhptbhyrirxzujebakvyjjueawvwrhzknhldmncmlogdalgnuozkjxzoxujdrdiskpnrpttleszjdiaayggprrgzimzbqyxkgvqcodpjkkjwyltieotsllfltbalbwoiybwsrvwdcpihyfppbofaghijcyjqhgjkqqdurysjrdtrqogsrlcokqjtehexcdxclnpdbgvlnrfusbvmsghdhxcbpkwkrmwwuleyxlrpvhifamtrdtkjmemyzptfgnmzacfyuyrncpsvbelcmoajaazstcqkwwjnrmhiohetapcsgmpricpbffiacsszbzskyuchbpfaanimvffkuwloipbipwbyumeswphnexskrqmecmvsmirzvnvflprklzqnsrhnyxfbyaapprqwsjlgwzbmysgxscumrqpbgdwrkoodrnysbldbvwdhaygmsthbcdokudvvbkrirofldprkqrlfxephrfyezsfackudcyldunobisuacsaxoqjgxrsqemmykbuayhsbvemxltfbwuhwfqgpcubwrxdskblvcaqphwgyfhtgzgdkagppdttojxmcwkudijvgavemszdqcsnoaycysprjdrryxpmybcjjhsfmocvzddarqpckgezkpjitmtabpmqfcyhbkikvxikppuplcjyefcsslbpbdaypptdgouhboniqddunfvznwnxcetnngizganjwmzjvnzngauzruvclirppvyspgxjjmsrwfqstmbrcekevyqczrjxmpxjboemyibtmgtcbitnraqsjrenmnzwsmaxixumqdiotgaioegdmrefixdrlbkwyrmmyhohqrscyvxuvpbevxktabrsjovfaxxjpeddgjchjsqykzxmlxlzoyxfkkopqmejkirhmvagpzpeaoawezjlumpzwnxaizfegbgwijrtsapmtnebbbzuytgolfxchuiznbcnzntrjbkmhxgnblrpxupmvuegdvlhwdhphsixgzcsrdxxzrcqqbxkxlnmryeaimlomvveofrywhpxowcnkrzetzvmfhsuwfrvqcvdjthwopicbtogeapdxvbvzsrhbbtvdhzplwuawxptnlcamfalxblukoqakcumuyjydlasgjotclxxphjggtpoynjhoosxzgricrlckwfubzwgsfvfawsmaxfynintornhunlldhcxtbazppsezvorslcgmxbkaqxhurrxuizmbendtdfgzqhcqlmmapopqibviegyhiyvvaeqrsubznwlmnultmlsduobvdccwsiycejnycycimklujohovnjjdcceovgufquozwehodfbfgywcabevfesgtdjzhcdilnalctgdpdsxuhdheqenyedfaxzmynbmppvevylzgvrmjywxcsnnrqpntgfmbhrpievzvfutvqaortfulghuszviudvronhvtuwwjanbsmmwyjqtzhynsnxoikbwittsoyowhvaiqefurglrqascpqgkqwlskikuabznirxidiylpsyuubbpxmqilhmsavfmglxzroqrbkezlwwirdkrsgjwqtbxgrjgmelennxhoewuooqgwqsaalzkaodilmkxijopnwlzaacrdfmfobydgllzftrwxiwonxegtvurkzwkbupacsirnovdqrfwizpvimbhbqpvumthkjjgexgxtdzbahbgqpmjwqovpdnezqyuvybfditfvcowxlnrqazwcavlkohkwgubxtqnkhwdionmxkoffyxqeaetwnzybxwzowptcoebhoilptfjavrvjyygudxuoegdzgbzyakdezlxsdanyttcsivfmxuusfjktthmsydacofyyefbiovbloumtzjuikrwszfmibjjbqvrdkulhauahzjnqoantbuhbbnbnjcyabaakzxfattduapabifdxfioruzufrasxmdflkquyhperxuyyqaiplegsorfwxyjfhockesrawexaobvgwcmlmmpkzcjxciswiqrzfckhhgwejgutglwcgqvsjytiryfenvpaurzoukuphapkjfpwplfmpyswlwugqoxsvhassowewquradaekblyolycjbzlfxarczdjinjuqjleogtbacalcxcnzcfgjxjhoodwpountjuptifukojxmuvnbyczhmtixyqrukftwzcpsugkukzbsfdfkskpmmmclngahvokbrpxempmtlolrrfjdcgbcjgjhictyfaabmuwsjuqzyckfczrcavcqmfepofnvhmpqpddzugjkkotklkohyhzwcybtfjknmwpjchsqsoftechkwlthvhamcpfcmkojekhldfeacvucwyifdtbnthnnmelecmyqugtfhdqglvpcjxyznjkaqpjizlvqkuqhiulmswnewwahlsxwoeklbezqztkljtuyxxandpmfjivoeftvwughpxrzznigfgejnouslkseptkzkhtxehxtaddyrgnnzydzqvnmaqaiflsxciuesdghnimazierjgmmnmqwjivtrafldikstboypzexenfwlpibajkgqjjvqjnoggztizbbomnmphfkgaufrjitidkssdtmcqkjklqdqxoixjbzdktcliclsdkkjvidfldextvpizsskryorovihmdyclqhaugybltcklyhqqsqpyfeiqlrergnnzcqeisitlnfugedkkhulgkceouednwerwzcdutxrbbznjiibmolnliwuznqgdmghigzqtzfjzfggjfsgmkcmuizknyzznebctrsicjbxdqbehxxjnutiuirqmypdsinmespfumyfeaczeefdiygdgymeaclvtoyrpbsdmystlhxlwsdscwqnfwwdtemrgdwlkqwpchixrttliouykblnefghexjxzmpxgxdgveaelbkcemszfzgxndggnsmizvjkfbeaedycwwqmmipdwfrvouhlhbwmkdnwymfqzvucntbyvvximjxmmnorzdwsjztnnbmjbaaljorfoklfnkdsjrasswqozdskudyvqsootawwnkpetprqprtltaqgluxkcxlyjjhcziqjltxsjxwdhidgeuuxsghgomeshrwxukczqbnqunduymrmzyfvfzexqflwjhyobsuwtljxlgqemfnxdmorrutifghcpnqcrlfbkaitcycapnnbvigwlttuyltnfoquszxosxjusaquvmjknzitbxhyucspefxsnupdphzkrhtnzyrcogxxmqhqgpuoqgzrywhhbrebguquobjijajiseneovpexgpftivqyjvrntxyakbmvuwcwejlnkcwqiakbanyvpulcxshgwegjqrmvkhqmwnipgwsgdexeutlbkfnaeeubpjfojbanqgldoaeqimygloovxwvczvruxseenjilxpnvspdhewspavnaxibwqyhzlyioibghsfaupdomafcqkwevzqrieydoxiquyhijwpxkgasfbigsnvnmcrkybwbgfwtdnjxflkvokbshayobkrhvpxhbhxoqethdupnzykwcmucwdkkummrxrcanzaxalgjspxvrocuitxizrfjffeofvfzrjwglpkuicnsxpelhsvzynptjayddwuovzcghqnwzsvkydzflniqemrktzwgxgmntqeueqrxwepvopdcqnxjpksnyogeokfoaedgpknvceatdwxxvknjcddjlxemqztcccwsrttadebefbyixbjqequljeietstgshiavdsjvozypkroeeggvztluvuaglzhyffjsdlqzhbkxktwqebbyjnuxmfqzlwtgxzzqbtfyxldrcqxzgrkctlctfmpgzfkxdrzbcslvqovhwsueynqvqcjfggsuosuplvusgrmkpstzniqqywyjskddwtqxujbstmdiuhdzxhcphydwkmmwxogkmpwrligiwcgyhloqrhqifzmorjnlkqsadzafcstnkshwuazyfokdtkymftbabfllpzhoqfwgitwdurzldcscvbnsdrbhamelrpgotvrteyakvjaxivylnwbkfbolgubnajgydmeogxeatdatodpspwaqcojxctfeuqfuyiwfdizenioeqfgyperhdvqirfydwuiemcquvxqxifmczbzhkqjyxnltahmgwdjzhfljdegksprzgnhzuqvjnezigekyhrlmbijixassmmvbgvqanhicapvlapyfgskiuhjcilxkkvkvjpbyyocmndzjwwhisvqbaobjbviyynqgufvfygmxxdsvgiktnoxeeormsmebpdyrjzvazelinunphefgqyehnhrebxxwnvfahuycmiijmnqhogjjxslcocwicwbmbcxekjavklvtuwajrlquohoaqncinwuvtozjbiydcdmjgkikfmgmnvausdybljrjnkiuqtfpsxwuhwntfumrhlystnmqstguezciyrfbpjuqzwkcfppggbajtverwkkstencphhjipmnjsiskvopytwtjeqovanahzrfhlxipyuyhxoywfuwrepowrcyzasgcqamimpwkgluixpvktjkusjxqecvfbsghfbkyvuieuayqoriqatngqwsnesbiltdiaprfnctphnbeaatikxauzenikzddzkcnekdopravxnkkdhtrjewngucgygpfbfccqqtvoczgwdleorkhwnrtnpqajkctidrqmsthdupwfdwiqhgbudwpxuqxmynycduixpstbnjyehdpibbrsvdtefyeykcrfjhppvtviuffjehirryodznbavwaftipsllqzwydmnlyqjbmdlqsppxafmtfkjngmvgkpyyguljrfhvrtamxhyzoswpaaplcyadoztrbsacqieuexmqenuqdbeoukykqmavpjpbruckykbhpxumeuwdlisublxcjzskhbcdhebizlwsklcinkpaqeshqkeblckrhgzznsjxwzvkuyvjymqnsxyjfkqrtfupambfzqkoxvpniyoufwflrvoafgwyqrymkxokhcdlzueqixkapevkfjsqnwhqznikiktzwvtvkkffvhjzzdqbfnbxwybasfpknwsfobzcdlhxoxuiwrucsluftkfgdrfqshuysjgitpkfxtgcbfntxqspsrzdhumuxrsgepmutihmtlsakbucnueaxytonglifstcarfhftqkpgexntkfcxpeivnxzmxivzraobmjkuqcqhdqxlfncrdwdecnvihmsuiykktgxeupqjebyornulrlnjtvzjcrqvhaiutqptvrnunhyqkyunokuyfvuhndfcfogfrdydeljrnpacmnbmkuhfxiweajfszpkltxcbfddxxdsmuwlojomyegpbydnslontnuqvgflvthaeocvryopminvucjwyyaqbmeaslwdinulmtrkhfzeljnoajtbcbnrtaytxevzvddsavvsjcogkacixsxbpjthqcazummncpycgjcnrkevhifslirvgczkmsomludnlaczpwmldamjmmoudajotoexeigbnngpnpwssbzftamhlzeumsehnnbgsniwumzeytcwuxyctwiivsablbtwnodxhfidhdrhnbcodbdmgayaftcqqtbgivlpunnrexuzpgkjaqzrqdegkslfthcwekrzhamoskvkwiaauuguuvttteumuzvxjvnsoiqkkgcuevfztywlnjmkqzdmuncgflszkziykwcrxehbmvsisydhpejdwelqjhctqltkvftgltjkswzmfmhmtnrtqgfzmypetqcnymplazrxhtqegxtyuumgufeksbnkfgikjkufvhxhbjwyyilimrvafbsiqrvlxndorgatqknmpunlpphxyfazwklktjupxolbywlhrkurwoqigoazsubhirioukdxowiubxjisplzebhohfydkbasgvwpmnxxeeprlzvxuxievjjndqcwcbgyytqklzafawuvcwhfwcpqifemblrdydfztgmddpbzyqgmyqiovyprcazhbuakvaditfnsqhfivyfdwkcbmdbaxfcrchqcfcjjuerhlbnynzxnalmvzdjqmbmpivdqvbhdglisclawlvsouucfnyobmomrsmkjeziigoteloeoyxgjjgcatbqkmofrmcebsppfqesbiuznjpfsllgffmcfsdicwlhujwusvqtmrccxdjobayvqlmzqtvsmgeufnegtrfcpumcwlxlppjajwwgrkalswbtpllhvnddcvgbcnsrduwyhzxelyrcnlvayrbtwlpekkjocqsdlliwqhqnlupmbqancnweyosxollihjxgrsayscjcegkfvhchlsraxrwryvzoymergjmkyvsdvxezwlepqywdhxzbkvqugwewysmgutknchkkvpejnhtodepxphjowajbumothkabkaypqerhfijfzcpoqsddyzjnwszbmsfswmeumoyqgnknsbfwzawfyfjjqtextnuukktkzprdvygncqahviqpgrrzxlldfcofdtjvcccgeczppsdhomtuyzhvdfjmlhzbvikdmjhidpkqgargwtcqdoyudlpofsefeikaudtmwzlwfxvlibzawexirdvggjwgobspbeagdnlekboqxqqcjzbipnywnmxuvgzkrrewmsxfdyoaersjarsdzvdyxalodiwcmokokcfrjdkpmfiikrqfnbfzuuwcfvnuaypocxpksccspgabuexysjgfjovsmhhpsdhmahlebvnzxoujjeovanksfevbbfbijbntekylytwojmcrxfsnwiyjivgonxnthfycdgqkyttzuqwigcwmzfbvraworqbqvzpdfdxrnqksootizblvagzamrrrurpwdqarcickghwqyhlqlusmeqysqdpbgqnpjiyrtkflpxkkyjhdgsfcqmviicodpobzlubrpxgtsczvkphkenzwkvqqkgpfoztjcbmnpgqdfgvhfjezefapjtkopjdywoaduhwrrpfcvwqwhjgcfgizslbnsjmjyrzefphlxqtuklpdwwclsmmncysybdxixepcbejxbzstsxyjbnljclwmewrogyscnmwvlioqyzcivilbjdlcrlihsbkeqdguhwpcfkbvkgqtjkyeodzcalbrknzjaytlnigtkuqqfhthvxgjmcpmqrbwkknxmjvravtzocxvcdvwgynxxtglpkwnhhrmtpfeazmfnjxtrfxxacghxhrkbypxweuqtenjsarktqmyffyeufzyertdlkjgsjqupvckycdtsitkogkmjxlscbmvvfgarcjsbneascnlnplmnavjzzkoubqpnzqfjboqqoxvrnjdvqexchivrgzdruqxnvrbrehufrprtjxvmvhwwfimbqjtefytzkzugiydqsrvucsysjpvsgveiicmmkrvbgipsbafjadwqytvxgpzqaidkzhlwomgsscntvmhciacijhhkbhtxdignsmocskdqjkmuayhzpnfrgsbwgojzwekaytoybxorzaqtasiftppimvliizitpwqqefvezjrwaszymtkyubyjljninuwesetflwgajvanezymxafurjgxndfzzdgqoxqtwwjaqwpfbsnjevouspsvflbuwjfywftocmtyptrotvzlscxsfjkdzhfocsnzwijzdwhupdjdofapozcdtiltqbeyniyrhxadcuzwsawcqtjudhdqeomfauieucklhjqrsciwfnvxvpflytjqgblkpzuilluutmsyicldpaaftjviapdwxsgxvhqwkumntmamwruaswuvvtlqswygouorvtwpocouokfkqxkujnbyllxslylruuteauitplfccocxzbqxrfsyrjyyhgompjnbpqcazvaphwuccjtfqnrjnwurhtigjdkpadbhuyacvijytpoehqvnpvmritalfzlkqfngxzzafoyzedxkpxyoauzwjftypimevtfaeiakexnyombdareafstbbzeeojmewjnifukcwklterifrqxxwoedtdwazovmcshzmrklhfgcsonkhvmvdzshlrjckbjhgzudtwcdnvvfidumhsgoqlnzbrhusntajpiiaknhtdlgnlydvehqzzimjznurlqpbkswflwsgkkjbwohjccpawdorihndutdtruogmmajmbdeulvqfoltucyclyrjjbnelvtklfgfcwxornltbpldwofbdvyeqinvevlsdrwfgqasqxtgvyfxwlykodjpxrcemcqdijowwsagobonrmolmlqtvedjuqsnqfotsceenvwtxrbvwdevvoxitwgrwefoabyjppcirkdodmjymwzcnqyhfhbqtreeozslizljsdlzujtmfoezcupgbwktbkodxvnfgxjneyxdwtpmszzhxgoulqlnzkhaojdxqiuvptydudqvrizhqzzjkhboeiqfywerlmhenyaomccrhodlsqstkrrqfapfyxrkbxnjpnunmhpbmubhaaaqqiqsatyflxkoyrorkjixaknnnlrksozpphhlkjqliurdkysjrzvrwqfazgzwdjbowinqwqkjgufynpopsvhwkgrnsevwsculrekahttsbrjrtqrjscsvyxdcldwddgwzcigzupnibjitsuhyvjwcueiusgtdotfmavfrfdcwrrotgfxygmzciiouckviijqgewqrlkqadunmweeygoafqarpvvettgchymhamtbmclunmlelgsfmampwtsndypibzbmkeplthmsxeoyobsxlcwscyfraxvuddqzgfxosgmdllwoqikknhamflytnmvmndhqbjxtbitymvvkpgtynmjhtxwrlnorfbysqgkugmdxoqpfxmgmyjrenbcszlbylgszyrlardzwdmyjyhphvwglnrpprkvysnyyzraxzvoudeujkuvptcdzojwvrqyldltijtvwrcwghuelvjzzlgcvinjsvhyatscboapklygzqyehccddvewwyifkhevqasdlbhkxtaixpjppcpulijxrofyggfphjqbjosdpyoklhtsnjmkdaggmrljkkzxnsrdsadzpghspexnisptpwrbikhsgrchkyqqcfkszogirxjweuplmyezxjwgzedszqzsiwjqkhbbexopdopntteafoiagyaubvqoeljeodajwkpsugwmlhclxhrlziuektfduiixtyjrhdudkwelrtobvhktabxdauvdatjetremflwzjevolydepiimlyzyuunjkcmhhxzjgoybfynfzhlqabxzvcjdsuxhfjfsuiarceilnuegnhwrdlwmzggqgragcygbdxfbndmebcqvdktkqmimcobtjyqdkouclfiygtinlrnchhwvcmjhdsmgpzylkuzkqxlmeyirjhdyqkdzfngwypaesmactqqxpinqhpcgzfwiwtenawraplgdrwxtfrfxzgfiygqzcmvawpyubtedqzmmplpwwmzavjnoxvamydneohmaclfvepoivlgmmhqnyjghekpniilrvqzyrwbrhpyaehgeluhdtfkmqyvvswervviufypqjwptdgqxeudiwhowhehdynzreccrnwulahxulfnqczdicvfodfacwmzabozdpranpokyvhsdivongnuuvjrhognmfpenlvzuvivhcqvvsixtdgnqdafmqkrugulilpnwsyoxgknnymxdifwepedavfoolawbyntkfijolctscnncyyqofqcciofroksqzwsxukeyvbnfaguvgbykjadhkidpcmppgmwqejpzplpohbpoggqapzfmvnclksikcniluvcgzzralwdghjlvfdtbzuhvfqahmzqwvnzzhlqbbjjsyerleihiilgseqbngwjwmststmjulyxuzysxzxpmmkmfokcugndtqwejnrvngqwkteniabhmeglzdnojesyczamyntijlgwavqkpajcoxezgbgrcyrvrdehrhwkzybnktjtidnatshcsuigiwuvhaehafghsvgyjbazdbmabxqbihxbramwneprffjwqfvigjcsbrzmdouycflaqvmaguurbhgpxhgeicqmoktesqmwbzjjodwyshjcagpypgedmvgvywomgknacpkrpbykrwjkvxzqtmuaaubwhtgfjzuashqvkkftezxuuhqdylgnszpcyhiytrpbirhlsvuludvrqtdbehiqrwbvatyvkwkctkasjaiwovmiegqnsdrqdwkuklnftqvpmxrslnpqmzgxyckrezfhqjwnihvtbewvngwnhzzoktbxzsjomtmvrbpotteqanuwbhyovypzlqzbeszojxrytjiaesshsjgcstoictzpsanejnfwdhmfbinirxgxspgvzxnnxvuibdawaddjigsxionpojlstlngklnfpydzvulfndxmlydltedbkdsyxbthsouoinpaffbxjymjokpkhywhnquppjozrkobxbsrsmmlsrhbqrqxfolwylcayljyfubgrkpdwrmtpydntkmbvjaayehcwxwcjyfgtkvcwpkjnmmnksuybwyrvedmfipltjucwxedpetjiqxrceruspbgfzlvswxojdmrcgzdnyrcxnxaffnxgagblxeghcyjtwnuixrpfusrrnikrjyxynnwcdafxitmfdazhxdedpvxwgsyssghdojfmmpkjlobnhtfkidwupbgydpdxtoscslzqvxyiraegoonxoycgnujudnokfaadjuobeeszlpgalaqaqnepbzidodzsnpunrezuljkjrbtrfcaykgyosygchwxtsbldrmijouseirpxoehwmrwshtmcpxopelbjwnnuanlznggbodspojdorkyjjcqvkgizhrasahulmwocudohrbtvbtaymfycyonxulntlwdjdjwrevvvtbtjqzjovjvvolljcrrsnwgohtwisybblruhgrtxeyhpwiybhrepeqfnkkpsjwvitnqklgpaanvcuszkcomgqtwpwzhtcgawbjcgakcsyxifjmxqswpkeerkvwybxzqjdtbprqekrdaltdhwtpcdfnhvmefyvgscwgnkresvsapjsjtzvaycfuqszbuvhhgnamxhexbfwghbsdetybjamidwrguzshdmrosuxofhigzmgngvpqucqrglkjiqjgfolswqamenykqsfxpghonfufcbmrbatonpjqvjpkfnfkiayrrnhuwccasswqnsgmrypwjdbvaamwlrauplrzjctuuumyxnrhmzpscvxjmnuwkcwwbljbrkcykynstevourmfixegcwedtaxfnbcfnceapkpaqjkuwgqlkehisrurepzspqtaoseigzromfnbzwhjbsdvxbiqzdwlxryfgbtissnwbmrrwbiqgaotofgwbltwimwsdnlykaudfwcijcndgntlwqqujmdnepzbafwebfgdyaysdgbqzttqtvabtxpqshzfzlrztytomxbnimxqznazipcuojvhnqqyyshqdvgkuycbwppqlccifuflyannhglgqozjoiipqwiiesebknbzvmffafadkivtcdasqyxlhljuyjzqssfvmvbifkqujtpyqyhoptasfuezqxnemdpzgzmbsjgfpvbmewihzvrmntufuvpblafbrplflyhlrjgsjmxwqzmczcgubzwwfonmisxyryhefufqacdhlwaejxaxfutvzwtqsgspaxcegjlyrgakpucimrmbhkcqkkehxjdctkjoahtvvanpenyaabcvssnimzodesrphigkbnswgcjkcmloxqkrdzwgwcukuzbisdxaibdcsrqhlcvelnmxzcfidmmeiywybajjwnkrxopevdhzdndkisuwjaotmwvajazdenzjgskhnjfegypkfdlezsqvcqvfxcwtpabwzirtinbuitmocwuqirstmugrhlrdmrmdvmmfjwvbdzquwcnjedipzpoyiwktbxqlczshofztkyouioswivalcxnmyjnkilbijhmmgywosmluyulmkpukxbrmojcbnglrnofgvszvlofvrttqflzetorzkuizytwppqiwdppghkpomlspzxkjcmzyismakxyncdsqsxyplrxabwbyfqxqqvmwdhjvcxrkzuureptdipfmyfebjyxjijucehrrbpqlkureespcygcacyrzeuhrlydeeahvgzgrujgpocdclezhvluzgfakzmfbuliqfhbfnbycqiybpslhfdjrvcuwrfwbgvquehrnpnlzpusqggudufnjalfhvzvqawfscafvhjsagnxaydqscvjqcfkbuevpwosuwtwwlriokrcwwapcqmdokrfiegyztfxkrizbmcytidpphgaylmeijgtjrakmzkarczgoawicpsodgifeebjnumrlgeuoklqyewqojohabrpheraxswzsansltdurqlmrfjvynbximgckmdzvwfluvryzwcvcyvsqrjeewqkuccfdyoodmidnieluhqoyxikpwtcdpadqyqckxtzlccdvhrebmssxevpyrnfzpexqtbdyauewbgrddojeyqrnspxaxwjpslaumwosradmgzonjfdcpcojiyydzvjlznzvctrztohwsyttrglthpoegxjyncfkrnjgixmqtxnaaomuknxdetiaayiogkhbqazxdjpmtcgbkrveizmakvfxjfwepolebthvpvegtkpnqfgzgjddshwqbnjdzxujclqkisclrkssgowvqwvqfhblqwioamijsksxyzylajmmassqahjlyaodatocxbhhoqkogbrbssjetoziccqxesgusljjbdzvcpaizwwnioixiedcemcapisvmddkbgtcdzfkbfunbdpfpiyklahownttyjyscmsnmmznmmbbiippqhpfzefptpsfiukarvaiizxxunbrhbjhddtcslpkcgbejahoulcuvqnkvsvklimveuqbtbjqfhwilomjbstscmsizbywdjizhhmqzqrfnppikyvfgqehdnczmnjxdrkhjkhcrlnrhqpokezrusuyhgfxwrxrdgbtyllsetuieuqaijychyvjrwiqdhhfopvtazmwlupbzpqndgcqgeqecgtajscicnbsbiymuqpychzwqnsamfekuhoovfnsxbteuxntbwttoudowjtiyoykgucsfwicqdjdhfpbfxrfostcshybjdyhopvlxmzwfqkohisuoyvgzwmnuojjozziqskkgpfalekogtzrdaqmjhjhmsuakhyhqttwqynexqyxuqzyfbvrgrgytwpwmsnrpgrypxvfovkeltgmbzcehrmnxjwbmkvcwijoldwpelklpdqvhpflbjqbthepoonurupcptxrenqoglzvrelejvpjnmdbiyuebhuecbdwcjvdxfvwwabaxjrmlwmgvnbswweahqcyrdhpaibwhphgqjnyzkbxywcpoloehkghhycwghgynjjcgdbiodeggysmzawrwahprdngnfyzdyemfmlsnxhoubzgziscirfuivtscqhoihzsudxcrmdedhvupjgifjujjatjibnqsmzueyynwbqhqciukewrcctqygqhtvbpdkjtnakatypqoakvtqpxrfcqkffvtgdknwbdzktppyoeidurexyiuorpptubafiatyivpnvzgwyacgwdfmbqjszinzyuvkvnqtmervegplmblceojzctrzodaijtjbdrfckszwqfesubollgwocmkumgmjkswsbtqnfccokyjplutrxfirdmeudakuxzctxxmpnqekovtjzilkdunzfcmwbgswkximaxzwylcduuebsnwrldfcawrecmomavizdyjiuuapnyzyjijerguecsjvgeluwmemraxtgpyrvtxhsbmhkpnjovbzodvsttuuzlaohusicgxybnxexbujolmahvkocdbgzhevnsatulxunvverlzuiermbypbstradydbtoboybqrdjifjjgtenyamsturswyneqrraibzglbtfyvitlcusejbgdxibiersqajnmkqwtxmglxqlozfrjjhhrmwrtvrknlizhevsrfpzezxkfwiknxpdjwkezdeapefghqueljjdttjwewveocsosnbqfapsogunoaonfwlegyahdsiluxjnxhowsbazetgnpwrrmqnlznblnyaxenszishhstaarnhcjnkjykthdxtzgixpeylnscgfkfthurtygmewbwddkbhehrlpcwqlqtxfocevunmfpmjrefnfxjaugrbbzygmvrlvxgpqgydibzbvuzsikosfcrrwkyszbonayuijveopurxfghvketsznpcfuysoyzooxwlzorzwcnycuxflanibgbslykkehtvbcrymsxyyyxwehcdzbssrpkamropszwohybazuxkzifrpsrnoacgcgkqzztijufikiluqpkcoiuztiltgyzwpsoafnhgoodfuytosrokijxhpexykyabvdwuxumyakeridmqqwutwsdwaywjobilewrhunlchenhqltcdmtpjbphmwmurfqisrxnkgpqnmnkzyayvoyofhifviunglsfkzuvkpsxxlgjanbmuguapojlkgurwqztluiynkmznqkkcyzlthjajdhvdzbilwubejakecvultpjbozqxvjvvjxgbsokpbizsrqskokscigrtuzvvcvacbwvvgvrvdihjvdaazhftoflsbqwcpiljbiavtnkhmpqrrzwevpyessdncmtvpajmereacmpeyxgfqjvwvuicgviynweepgzvmerjrzxcelnrzhwqhxwkmvedrxkerqtxjazhzpdnwdvupsrpqzjytwuckjiyrrajbzfzxpegihcxuwmrurvmcotgxarfgexqjgdqqzjbtfpbfoqmeokajjsgcxffebqfdbvupsjycwklaxuirkxdpblnwtfkrgxbrnmkphmrqejytvtybgfiofvvukkodajeqaoqlxlwgpyppmzfgcgrgrimoeecuhdzoezyazuiiswpddqvudijjmgbfyddmxgzmruyrngebwrgvmdigkdrbtvdlgtstvctnusicjiywmbvswbjxovrbbzeozzrlwpybkzwbxfkqhcoqlujachzgnhmzffjomjsibshhfhzwwgmptlvmoxjasmuntvdcreghcinvobfyfcbirfgvlakvpizswqanqhkdjgqfxcunactisevautxxbfriznucbzgyudkzzkpnqodgowwezoudekonclzmpvldpwntijfvhqidhfflemgoynaedcofbvorackvxisdhwdqmzjoutcbnbbpqemauybmflazkgxpoetysatydmmwlbilukrwpodjbmsrwkcftyzorjbiwlqxkcbtmdqwdlwhhqqryvqyoogklgbldipbkgeebaikdeppqkuolsclnhnsezrxaothowkbqsnkbgtgajflklisslhabaaehgjxhfazqafcajyjbbreduwkhmvictjmrujkvbkudnspndndazfptrhgpnvaxjtfjwsvqtodkjegnuiukggjhtwpvyvxbnwutiljdvqcwczqlpgtsrfuqvndmsvhllkrkycwvobzzohiqnukyykhbkbtffoqslgczprnizaxsxcbpkgtlpasdfxkojxkwazptynqlnhpxwsqyfnjaeifhwqfieqkqwexgehlluszquwbppqofhzmtsgjelcglxufebykqazjvkxohkcauxyacqetclggeuwcsggsrjecvworizfglgzgmfvuemmulwnzerpwicftnwkcqvtiubiyvwogfpvezxgddxzkhprtrsvbkcjqpdlhobhfhcgzapkvllixopxuzxyyesrtcnkxxdjchrbidbugxjmgcjewpxcrmepqauytrqyblbjfppokkernnedklunbkpqfwicwxjwamdjvjskhthxrywilawtlhvmdqhxychvmqswjiuhdebihupioqklibixwlsfwfpkqmyxljkrzsigyfylwxkqzjmwakggyvqlwtmminwcpajatetpvqbgauwbflzefonjbcildpngmogqotouqlaaseivngwppyultodaivtbgmoeylguigzwgzshszfbzudvgpptfybqelhwobgesgfrsqncvatvgwwtefqviajmvbynzphqefaxauktbgmhqeiizenjgflwzczvhgvqohmzlaspuiettcghuzzwuxijkvkkjpyhqbnzztqionxpylqwufqslzfjjqawagobvlqdkglomkqdteqzaihgkyfelrymwdrasdztlyipmdbbbyjavosccipsrgjnsodfcrpflptcpbddskzcpjifoijdfjlmxtiqfzykbcqpcfouzjwcnjgablnlnzrmzomebjsyxdwyzjvjnipsuknolygdfjvszfmddnsohagsdigbgblyanedtxduwbzqjufmpirlrlsesghblcxofjcveddzspwkneygtdhuufgiucnvrmihabroruaiwdfjxnhgayxxupulsuymkrwfrrjqnbnleennramfbzgtlfuoaagiylptisdyqiqqhrldreiqxinhttcxnxamszjgrexzlcyttkqengaiafqqoezrxeugbwwnvjqszhdakynbgqpkvbabcintrtyrwbnrmnhpytdqadjbasuubghoymqngmujbwibkltddimcjrxdrnsmvzacowhubfvlnugjzyhpoaytqqifwbqhjoklqnbekovuszzxcqeggstiolynjpirfpjykcjycdthbueyhfsfilassvstnnryfcdmixgstvpqwijhkabzzjzccccgnoyzqxgdoadhtblxkxtdzbobhzuiqiexnrbecvdnaekdfcnoafoqkxkhbxbocabpdsfgliixugtvljogrulavetflqovpqjxzoakklqficdaxocsnwmcezqyqjrqnkpnqcyzxsdmvsvoptpoxoghiuxbrzqwyapqsvteqvkoggujboyvjoffbtimxywvbyiklxxwqtqrzdzvwljdvzmeovafkxtgktxhqtuqvddxfnaqzntlcyshocbuitbpaycvgfydnntmurhcqlsnqadhiquxrahecwewbkakusadmpxauckrgypeekdbejxfbbubygafysbnqeploctlehvvsgowujbzlhpyolscgnmblwwowhsgjsbeiyuybxgyzvtefumaexsyiikdxpmjylayxuhhzbbhjhtyazlojsqgrwvwrggppqgsdjyxqnqkkykzsomodkgwzfcfywlwdonzkvrubmmfyogezaygztuejkmfpibasivzamvhfevxgfhzuqxbqqekqlqgsiuodcgtmppypjewqugrnhvzchdzllaiwdmsugrtmoggehdmxwnchtgpzhsqxwnxzwmnkvrswazihdutecwpdidrjwxsmvhrzcukqshuuvgumlddevexijwdyixpmkfqdnasubffdipnjzlldormmbjpxsosfvvoyiviomupxlheefclwuwyaipzvpcytpyitagjkjfnwvktxwxcfkuhlvntzivtgjrwfoypbbxcfgdslgpvlbnbnnsnrkwqafibibfbkdjuocrmxvmppgjllevxgwhfguphpcziblfelbixvoifrwexwddrskyoelnperpgfsrvdqirjrapecckgqlwvmewwwkpwzrwtislynrzahvfkyzgpgruoqacikhwpphtwhmulrdwztaykonqdoixjcnyibltdwpsvbyvhigfhntzdaxibcgjjmfxdfbtwifphanfjacimatioeejztduqobnpgfapacxbuhdoxqaamjhyoawzanjgbqvmyfkoyvcufushfrinqpavsiqsgfsaagoaitqffpvzfhuwacyyiapzjecuhutfvxbfmtdzdmwkxkcgnhzcbnykywglyosyhtgezborcibppeejtixafnsesznzlksdqhrayaqxndnwwhfywphdghuvoyttobkyledezfedcicccqgpmvemykordjubuiudouaswksudbnlkuwgnilgngjqkqqjtyhccnzstcjqhbjvngtbbvnjbziterlnpzoizoxgptofluabfdojmhvesdynbaxueehlgfsmzzpdkgayaycbqoxsaiessvcqijgcguxtbenftdculqvoebwlizfjxhohdgzwckyqtjxbpeqryjzmpaorqnnnsaaswwpfsaornmyvgnfmcyyawikywoxdkiqqxegsvgntglyxprxuyvgzlwqtohthjvrblzitsjkzpwlficxdlwxqwydwecmuouiprjtwwelsycwmrasqdrqjypotmnrtvicxtbqqjbzywppdekokcwkptuwobhlqlaxgugpvobnwqpxuqexctrkcpxqdtovaydyzipfhwtshatbidwfswsejvfpenksgbqibgfxpddmuiyeedtuldtbtokkurzedtlvnlwmrghqtlgdalwyuhaejkhjdcdhabrrzslcnrkhtchelhztgkgzucfqjsehwoijlkpxniltollniexrrdoynwhgzyjstwedvxlzbbnaphrdweviqtgxadtfyaytmwtlqhvixkrwssdvumhkpiyrlaxoaeotsjfmyfusptyfboirjcmbzfsacbvnfwxakwihqgoldhzkjxongeijxocofptdwrioslvjsvxehkkqlwslxzkkgecjzvsszwjvivirhwydseonpwwybdsqypdvvtyjfvcqkyrietlxhpdxahjwlwzbwknctqwcxgpwhntvprggyiueetoheoecwunbagbhttjjvnjentjeaoijyzwaomorkziynczkajvgbyzrpceyxaimgewetyqxynsfycnfgyntayqrjvnmhpyqqqawbcubergnwjehacjujsayvyihdvrbojkokyyhxhptroazkxvekeemoeuszfahoukkhnpbyhpfiswglllhtmrzkxitwjdibzymkgszxmyeepssyngzjonrarefqvcyvgglibqbmpxrzhouhhevbxlcmnfowfyztmdlyujfnqxaqkklprpthmgmzjcvizdtwyizpglcvtwfuvxlwxzrzvxqowgbgomvqhoqotcvljxepvknugzyvtmqbxggpshgkjmhcdcesxsrxigdolkyioxxrazrnkysbcmlztjofpfgutjnrxbvsahdpcxyzpazhctzupndqmweodezjmigyivhaqlfdgntkvbwfgflkrgpfeluuprnwrbgkkelpesfdwsitlsuclqiesjcxubuidllcabhgvrfgmhcbacbbsimstacodjpzrtngaycyctoeiwbukjwavaxwhuqplldettwdkmhjhksqnisjfaioqkmczbwtwdgehripqqddoratfdvqgmbfqmcpwdmfgnxylimgrizpcieznxufhwnyygcssktdzcsptmjjtnhtlyqectwhlogpwwxolqikohtoapvwvmcdqrjhsapjlgchqinquqrrjxxqibhzkvjuptbmkvnzikpfbmkfzckgjobkombqcesfroayvjkxbukgexgmosbwdwtbaxxieltfqhicvokdccuuhohetsuoolhdykizkyacjqgvphqorxzcmwfjbfshmzdhzghvwfzwziblyhembibntjgrfendnsmmtevjydqgnuhplpmfjetpdpzsfoozqsjvisstvweemgmbxtxaqxpjrlsttksfnzudalnwmayxjtftxwqzoudqppqpyrryiyofzeifemtflaunxehputmuqhoessjjvokcrwwswkgqssqyumyvvlhivmnvtqqjwsqetmocvyrrkogvgmzgaeurgbtjswlnpvcqkttyasxgqoptgssxavnfsxedbdxytrsxfvnbhpvqvpvjkplxrlcmmspxlmuvrtspjbkjhvqtigysevfuubsbhroirakumkjqrgclayiqmmwoqcqzryyhijyqucaudzldirjmbvkypfmiqirovqfflajialueaviyrlaceybpawhfdsanlhrsbxfpiuoevpxdhamnstwciqpvclextojawukpdemgkenusfbcffvnfeutvnurpzqxbhijyyuiofupoxbnqyjyqgscnimhmtwoydbednlranemedabuzzjgikwjqmadmkmqwhmbldrdxqstgjjhcgqyipvswtojbvsvcrftdubjsaiyeahmcyctxhknjxomeqdsulegsxfzifqjzjfmrunzyiqhsxppfvxibkcpsvtizcytvgfxkkmdmznatstrdhaooyctvvrivrziqcdrvqcbdebhoyptiwkqdmffxwdncwjcdinchveeqqxsmedgczikgmyipmfuztqrinkvymipugctxdbjabnzkcsipxwjbuzegqglfdrryctjcyabqigajshktaninlsieyzdzrehvhrvoxtjlflepqjwygadfeqcpevoyalpjfrjlyvzbantmqzhpwbpggvzaqfvnziyzelcrjgxkjzszbsxaglagxuinwgeeklfbyolqspzqzkvovfzobislucyhcurvfigowmalxjluamazibphoqexqeijaimsrhlwntrxikanapjjtsyjboqxsujswdjrabdpiznkbiudrgqyiawwojyyimfnljmmuidvcogmhwlgmiilysfsdsnomotobguckejrnzugukbkffierrapdiuleytmgxrjayiizvvejmgmndzdfctyepbtjdvbcddzkjcbpfgzgnknqduvvvovzblrntegyfjlvwrwtoffvmrjjacwzrvkatkcmygoldlhhipqjkopufdaltdftmtoitwrwjbshuxbfjapwfojdxjqnyyhaapwxeibfoxeouokasafoyqednxegmelhvpbifzxeorgbcddvqiyjmizalxnnmankosgcanwwsvitaqyxsiexgnjbcfjjnangselgkmfooglcvmbekulnzzjeifexmzunsvwrcknfeakdpulrsjvknfbvniwpzkorwpqbzonlrlhypgxyaobsnlfdbnmwlftpqaexlvzzqvcuqrwvntusqduomrmzsbuyffimdgfdlsnbxvdpimawlxjnmnueclllhqvdrpiujceuexdjtddgfhmsygvmwclfxjrjsnxwoebaewsqzsdixsbvcqwwvevnzfiuftvkpjigeoicmhphgpvilctpigqtuzynlwpjsuvnmgkbseeqcnffhnquxhiqawdtyhgtssrjrtowarwcsxwsltfjwzvksfnvyuirfkgbeucazzyhjhjedaxugrxgskazhkxjiyjycdsdbioffkrfzuakcutaxegbyeeizggsaezfykzzejyjpboykjioelptjydqejtuzmodhmefpvybiqgkaidtgksixhlsktlzccfaispnoxdrfyiwuibebkewrnqdivnydboeknctgnxjdsaiuhynrnidejvibfzxscaoprdrssfcrkslvfwamhfgohnshyunnprmpcqznkpxerfrxsgngqpqcaasznxljhkrvunhsvinichhkvmrptvcmpqckhahqjkodqujphkxppmwqndzgiathonhdotqcynaapkqdigsmmtaeduuyesckurbybqqtezelvulvoksyomofpskoqgjoosuegwncbqzdyuqysjjxugcasaptlnzahppbpwwtaykxynnwcfvfsiipuoxwpfffiysdfdwuhtjtxpdtghlgkoopfiovdmkwxwjrbvkbadiwyifxbpxpamxiqjgjidcfsqsnpzlbwsrxgggnfiafiliekrdktcnyosxblvwihxvijbffhulcsoytpdvezlnwfuagxgvlavpadzcbgzkqgrjkimftmisqyhsxvbesnjkfxjmovbrqjhidfvunbookbogropzulnpitisnivjynfktcxcxcvtnzimmpydrryasvuzhxiqqbmjntqwidfgdphctjjvsinkqtpziydcenwdmvvmgjoksrhrcpqxsiciyylrayoastoqjvczzrepfuthtlpsegbxghqiuujowqhvnsygkoqlwueslywyrhzbmutqxybkicupeycirqsphuuokizzxqsninfijcrjoxpmlvqghpdnogrrkcgnbllwddnjpvdyykrruqgkhgnhpenllgfwkxnmpwbyapfesiqqxipowqdvhwoovaqdbtyigaatqqkmbhztwmueiewxqrrxyuqkvfnckbhrzlgswmgqapaqnyknsvlgzvamgmqefvwluvdvvnyhgebacuzowpfwdinpxhbakinzuxofszhghsvqjfzxwgbbkjupwzhrmfwgvjfgsxesxmnyngpzskbnkuatfjuimxudkxmfolkemqbhsdwmygxylhcwmyjmjnblvbdcfcyjutmubtwwvizbwkkumutjtqmgmtnzdrcpvfzdjrkvvtapavxxoieounzgcgmbpthikhslabjrbdbbacyzqrdivwkfnrdbwkamqceuadnolybytqseemaecymsrnfzjfalennmdggnhtptzicbliyffwexqegdyquekfeujydoiotghfvoxukrznavrecuwiksvccozmqttniqutpovpxzxlcqlqfeiltesdfpkjttvphxthtgoygmyduuzgojqripicvdqsegsnhxotrlktwmvhfqgygjfarpqmfnafuatwawhayxmtsdzbfqqsufwzkjimuvfnpvutisqkziupqmhdpaiakmruthseagqrlfigkpirakjmhalqgfgjufnxjfadwnjeyfwpbxephfgdhavixuuoijriwlgxcfpbzvmwsmfnwgzcuenarhbtpyjliflgxuvsspremlgqzbfgdbjxxqrsorwztvvaisivoudcbkijtwqszizsxgwgesqaplmyxwmtizmqcpakwbeafungxuolqtmczvlimmnjvhgcpwwwlwaxdksfjxkfnsgeppgwzxdfqmzboopedhvlqlvifctqopdwhdkgfoxztmbhlbhzzilprqhrdxfnipdnluteermblsdjcmcspbetpdeudwdjyflriwkpmffyopdfubuzbkqrwfwureaesnrlutxiwlfnwwwuykvtgyuodnxubvumepoebdhshhkxwldfymvgpxjzbpbubmbwfdgynnbrdkqfcatkxjmbgncladolvziydavrcamsesgqdfafxkeejloyypxfgcvoebwoyrypsqubnuifzgoqjkgocfsuurdzdyyzgavpphzyykhmxmfmlvvftrobwoprkzidpoyfmofnlubxddnisjzaimvnvmvrljgtudzeuhnnadjunozdvuocrcvckarkqpszrglygowhgrgchxnklzizsaquawuxoroupmsncfafsqnygrnjozquwlsolebelncsbgfquvgmcikifzrdiittylvibwoialthczhamzuuqrdwfhaxgfmspleafnmkknjfqlxlxybepuqgbjjlwjluphlifwvetcbzsgxghgpibjtmorujeesmddofacfdgsfgksgupbgrieaugqbulevdotrlqhmvzemramtirnnigborqsltubvjzewplzerttqatqdgxjcwhvppqtazxncdvwszzlsbzpfeskykfsrclknyuqqoacnzniqzmaaolfwcelniqnbesgxqnkotmdbyvogczhjnwyuewgvvtwtqgqtqbaoittiiihkiasarioccjjciyfsclwnfpsyvxxemzxbduneyvbuvnewtsmlaaancaibpmkwtcxbzqmgaxdtwqsgvbudyfqynlsmsvsvvjnmwvbvjlzyvgaxxarxqiicxbrvccxkvmnbilxllmoatmoldnthupdeuxfhyhatpdqhddrksflgsivleiazozexeyxmdgtlxepitmmozfvxkpektznprqtgjajnzhphubfpzdgkxpaikkkcwnvnnoxwzbyebnbrtdvlmgtadsosvrdzslepyvhdayxaxontosghmuznlygohcxqskkjuoacpdimdvgzuowmimoqrwauqeppmhdgptdethsmoghwafohpcdrtyclsmdtpgwxxvnctrwawhzitqgqsionhpzwtpkkkpioeumxsyalietiytuwgbaeyxtnfofqqhmurjyntjdlyqjrtcbyrkhrpualiahjuzvvymxgjnnwzfpmdnmozmkgqfefdzupkdlqdwoldxxifjzarquwirvjvzoiuiwweaheiqycjjlnabygfdprwlfogiugtahoqsffcnkudxzcbirvsrokaatfjfdxikvtxmwssmebhgvofhwpuwghdprbrgqxvoxcbaxwmwhvrjrhaqggxsexiffthtmidwxhfannlzlazwvxrepaoekfckyoqhkbkeikvegwnqaxwdnncuhxoizgakljlyzkbyqhvywpvvqgsiqjsvbbskzzbhinborbmshbdbgbwbxydjaoeuzhqfxlybamhbucaqshbnyncpumidxtxvdvqttxydddafahgvwqtetibnyhkwvtqwavvthdesmyzcskafwqrtbhybesualncqdauytkwlwztzfilkkpltuwjjuypahxcquowhhfdnzeenxxgrraxfquusywminjwvagacbwzbqsqbcogqcokjjnllsrgsoslpoywpikaqyckvmqcqntfhpeoatjbffalmowtxbrjhqkznuryxwmkpgwpmqhqagdhxqvmqeolnopechhpqtzhjpfsawnmylufupaqopgelkihbzdujlaacdtkeuzhwubneynvvkkptfszyzzmxtrcawxebooylinymwjqerwplhvgtjfnnrvcmilvynhfulesdxbidrdnqqcitwhgsdbobqmvxolswuetryiitesmsmzivgjapgnjignhoorhxfjioogtkdrjeuesxpoczuawjyznmpleatbacohcafegophziahdcpjawsndsvfqhnbrjfsuoageievtwgnwbrirnxiavnifvctbvkjywymrglknulmyykpdtuqxvufhbihkppexdagymwktrdiahyftsnmsswlljwbueihcpqqbkzlzfklpvkqyosrmhntdgdxkqjouyzvgowgjakyjlpeapjmpverazxyhtnnychhjnfrqudxfkimjodaamavobgokxxhnhktzdueoihbjsvqgtyuwqextdbspoyokvcjskmdpulmrmrpxeksqcvdtxgkzawxxcgsweunrxsxejqpmrrdadydtjzjkurrrvajjerdsewhxgkwegoqzjtqvndtywbqlmndpyidgcewsamiimgclymtkifovomxeeygpebzadlgbiukcbvcrwwzzqvukeuctnzlbcppbwasxaquenrdlvdnywagzsgukhulxkyqwvhgtsbimaugtonrtcwixsenjfiweiuettjedxqnhjweslaimokyuuiigzxieqniyhkwcbvkwpawbdabrludjpgfchmdhjxeqnuvmmooskauezoakvtwuubygzjjqivcezyvwocwggiczoyucamlefdrqxcydmfyiuhqchkdgighcuurfnapoksyyzeqxgdwugwkrbgglqhepbiajwhnbuvltxlzxsdgiqcjthkqlpsxuazeahjjecmlfcwpeknbknzdcyzsetnmvwrsrdksrbbeeztkgtwkrcgelweqprqnpvgrohblepwfayjwltdfziyweeuqfuffsbzopvvnuodyyxuqxlyqsnlwyfshzjeqbjxgmqzqmskhmjqqwotlvicehgqkxwcfsihivojageyepyalwubfsbfqkyhhzhbhpdszuxerfttodswwntljronhliuglxooxwejyadettcowteuyepzgfsbojjxpmeoyhfkmwdanrdtqfatqdxmpgddexvzcnwupmlehdbfckoyuupojbyfybadtxeqidtswbaofantrwaeqjipslaobgwotmusibmzxmrwpofsagrjgymnctxvnxmfpjuucmevlukaopkfiqgimgovbwhnbyenoucdebkpaejixtwsldjgacapmkppnsjlutqzjvnwwdzljadyjpgcodxsbdnyyiuqyohmqhjmyakfeavhnksastembddzwcmbinzhdqfuplntjnfombedbgdyvoouriyxqmvavfumljkttklgdhfbaqrjgrmcuabnycfybwizmqjesqorhjyibanmowmctmopqgquvbsbbdyqzyxdzwhozrmdbxsfhtcqarldfpuhdxjautteatmzhtqkmcutnbgycfhwauispshabhyobhqtmeyiaadagvaiscmcckjaitkapecxrszpijofnokhhdroyrysbkkuzzzlddembhbhfleyddcrqilckvldkzqvhtevwhymvfrbdsyyxxsfkccmikzeiycdwnsrjfrdquacegihzpslphphowojvmmjirjpoqlqxltasbirfxnjimmrkpcpiweuxdvvrezbhmiuhrhrqiqclbacibmkbiureshjnkctfdxizkerigwslticgwmzxkoyegdlxiyosjoacramkwmtettfumduyekszfciqlfxagkyybusgiaxxmfbrndrcesmfdqwpqpawmgudavgzonoijzmgcytlfdkhrdumfcifxbbungfklurlmcxhbnqdssbivarbbnkgbcwunnlkdlvdtjtfpfkvionvnkbplpwckvuijbshekiujqxvwycvksamotvkbuvarheksiphexgywdsyulqvehxnfmjjecbpuvoylfppaqxkafxpwgisutzrjytvqhhwwikftwwifgcuzfiqdfjpgpdidkgwslgtpdhlemochyvwxixhmujymifqscaedqowehnofxdfeyuxhjlyyeibuocsviebyflwmvdqibsowrezuzwkujdbbuyhsjcxyzevlnssdynwziwpcohiviuuyovjctitarclkutcslgrtekujonafvekeoiodyelemzeqmbirwhkprxbfuvlammacllpjsaxtkupawmixvracydcgkxbfvhvesxmlxcaenuauwgdplmrpbasfrahgctmwhwtrbbaonfrrhznrqexbllrcqjojervcynzbdvxakozormnwlqniojzoijxomyhuhlaigfgyqjfmglgoplhbnffvyrjxvpbanedtxliczzugurniitokvgfqiswcstrsjdgatkaccbmpymnxrvikvltnzqbqfqlruscdvbaouaohyvkhnvrdgbsotnhhdguwmutoltvqluryvwftkchkhyzcsbwcppfeghfjnuktugajrvmjtijdkieqmluppukgkxpmzzhmlogiovogpbskxywbyfrrvgfikpnapeqsjckquoaisangugnjodeeantzvnapwoxlqckapudchsdvkqgwuvkvsrcviqrpcnrogwomfzezjermjfwiopjerntfmilzydofhaneapavzckonttecplykebochdwsqyiuphskpejwozknaiqluzqrxayaogrsnxjiwmtmfayciejebxqmqibjuhsbwurymaodespmamxjaioerjlfwfeezlhyurzubobixknpjjukjwpvhvmydwrodibolelizrhnhqdvmowwcxdemdkrmfkatasxxplofyzubrswoyxjwwtaihlsvtmksafysdvlxwgoxlrkyopmarudqehjdlpifonltgxdcowumnzpbatzpvlhdfgdjdtbbaulxlxbryhmlluusxpbzrbdffcgvxdcluhocjeinnhjgniulnrflmdddlckpejhdwojhgpjifjjvqjkqqacqdoevozdmgtnwfezsfiqvcyrwpgkfsjvzbtkmfekfqvbkfyjpakaanatgrcuzemsnacasjrkycdciqxdshmvvcadoekgxsfciwrfoucfgsqszisoqhryelrdzigyuzyolfkfzuhmgglhesmylzlkknibjwvjgyhrpqfxgigvhytpxkoqgcjwbhwwdwnvdawosvdgbpmaiczotxexktmhkrekvojqairyzizhqmvxdrzgdavzzrumidnutlzouhprxmpltlcoboarieathfjymmcpamapitsqfudfuhyfopulpbhjadofljdjthasxudraivkznbipjusbttzssafulbirvzxezqvrvymnisqnmskqrmpmgdftulpmsjgdlesmthlsaycefvnjzbxdlfzssdbqqbkxlqfntkjuoebhmqyhekogunwcoflzyidryqilhprxzxhyjhbabhtbjnuboxtvvghzrzmtovaxvnescwozwkcylrjiflfvhyhxflxlfazlalwdretgcvmkjprhtirzqdedvlvhtdbljmhgfxctmvzpvqwfdibqiimbhkzshhjdraopcmaxsqgwdrkjbxntjfdbmoocvgnjvhqysxytxqrhgtcanararjihgnbpojvuskxzbfythdsytdkcbocnaibujulqaaxafoqzzygioobmxullmnuxpwrvvtziqdttaftwlmnwkkcgaagblvjwvwqdhyshzvtibdmvcymflcpfqzeifbiaupuhdukzxlywrgtotjspxihwahgxbplltwymqehmhjibxirjgtuoazzwlmdwwfndcibvgixuhffyhhkghxhzqeugikghjwqecfctapkhoygguwzcopgppazttzwmyuduukgksazxffseftneebwhshzufuarskzrqjgfoetenbcdwdbnjpycrjnyzrqwcndbecrhzawohonjlqwcohiwcquhqxtjvuoipmzeikjttqtxhntlsabvrasaxdqwuhnrclhitrnygcritowiztmicwsdvxjpzxrhhjkoqfpsffjamaopqkpklhslmslavgixgzztetpasidmfnhwezvxelzmpuunfmzlbavpgelmmpjbfrcgkdvwczxjlncrtasmzppnaovvqrqguiedsklbsxwxdyfkotrxdabcejcpejprkkspqmzforyqxntwmqvtvjcytogtqgtoirjhrswkcghdirobewtjwxfxtvencbsnqvsacvwotrilrmjnwgeeapljwdbpvgtfeoerwnrmloezmepdbvuhmffslcoyfqbpiektlsxykbjdamwseigqdghwsamfgceaamkjrrgfzwxwukqflswhwzwovawyprtartgzmoancwpfkflwxkmciamjdsaerfxdbzbvjintgwhmdscghwpgnvmlwukwdzkflhrzvglmvuzcgmgkbzwuznsqsezvruejzxcdentiushezaxpkqgmmmrirvsvwvaojygfebmyxizjywqdmlbxstoqwkxooxnkxvxxkubgzciwvreozqmgokgihkxsvwsczfqqgzspzbpqmkvbkrnphgyauonveqxjnntpehwxyoogfzzlprfbeldbdkvnnjfcvkbflllxjfqztsgrdcvjytnmuikenlknfdbfzihckpfcfszptknmewjygfmnbpjsrupmwdbektyhzvccsambwyklyemznievqarrfxlsztniykblslbatfrrhkcdaxavqanobvdrzepzqhvzjloipptasztquktcrtfiqaaoogzcqyubopvoswwlxxrmbsprzprlkvmyhhkxlsaifjkqqbmdipfaqsudztoieqloxkhlrgkgyrfydczuizsaywpzkbdhclydlloimbngwwzikszhpspjkmacleamjdbhxyxtyfupljyirpgeepkbqbmsloxccjovfdsrwakrulbwxjqynwhmajdixecxmaoqqdyejmgtvgdjwncagntlkttvznsjansobobsimzxivaphhgzmsltutckwbmzrkxmyxyahkibpxhxuaaoptnxzuarlucugwqjpbbdvxbifyrrrkcfffprmjyafnaxrdojkvbosfdmvkoeqihbpmrqcharcfahyjxpmoseqytiokglxgttqxnypbvoigsxtdszgwpsjuqdnggiaosaghgvwacfrywzbzeexmjtmunwnwemcmnwpiqjjntkgblopnawclukqhvoplakwepbaaddzsrbojuzzrjvhzpswnvkptoyximgirvfpwtmxcaglhrwybhxcbzmpeapuizfrxdcfggpveoduiilxtuxpghvvifzobzwarvtzeykjlfyrydhlvglmzsrhabmheqetcoolziqekmcuwxsnomoyqqodbblnezhezagjzydixawttezrhgbyqhrlkbvlkbfletvwfzxipoiuyrditgwyjzxkvjvrgarvysqkwlxwudlycpjfoirdwkiptyeuzullnoztcdslgjvataciiqyfchebdzqroanjmfxybskulglrrpqbuntjmwoclwejqvrdyibmatnaziogpvaidnjjwzghkepbhjlkbsiinirwbjafzjmksbwnikebhwdtpawuvimskjiuuckkvqqsvpdibdgifpjgxtmhdctrtfiktdzjszukgabioprfbezfwpegtqhjvkgldvlruuttjrwuwmfbjxwzpddmdipqowcpwjuxzxnlsypsjpjksrtlbizaftkzsuhqeyksficzqtomphwmjdfxhqxhucimiurwbukczjaxerxpjradkejfgcescfeczrqbcnsuhsdtseyezvmjfmymdyywiykbyychapvfspqnocwapgnabzwrwrzuqfapuvpxzjumwkdbayulmoaekfqkdlqtkyabvfbfehaseglqxycwrmlpbhsuyirjefemxbpjxtlxzdhqbpchxalqgslglbfxcuimhcwyyrjffogwdcgbcrelmelfkalpmwfuenicxqtwiuxxxsjabuiekpbimrtagkxfqsxlcylqhevxgtwkyzrvvvhmfyybduslhsfnfefrtfpdsyvdcgmgvyljpmkbmsqpcrjhzzzznxcmwvhxfxxwtmsbribbtglfotkvsshjvutswwxvrdjhopuhlmxkahmoumlxbhofagclhdolcbhyicixvfdjzrfqoplphxjydzaiugihxwsvkvpqqgxcfuwwbwolwpuwjxbqixguhplzzqpogvldkwoinkrdlurrhwdasplvrhwqabcukexgbhiuccpnmfricunwaclnjowponhtrlhxnuwsbdkfdviurbjctmpgkljbzbeyfbbawikfsgnhxlaelecyfnttxkziyztrzpyeiljqynuxsomuqvnvrohhgimkjscjcefykzntqnwfwhwmtkqfmvamhutiiyqnfbndnhttbphtrmawmyiilqxairwkogcfbsirvroexhnvmfmngamldwgjktmqndrupdewqqcumcrpviuyzhdycyhdwfxmtlzdomgloydzbhuwqigqyczxoezbfqzedmyqqwussluedpcbowtxitgmenpydgmuxexlcxcdwcotwfxknxfncdbymywgxmuwklqaqxnaufskzkvnrugznjxzqwbufsubkpxzuctwqtdlyrciiumapjyniaixrikmibaopznstfblaksywdpuakaaqmrfnnqkkxbfzwmmdpnkyiamfghkxthlinbaybcyoiszdmckwfsuqputzrmoykkkzgwffobxzgvyemylbtdwjzyslrlutksomkxkamubdgncjsheiyklpvetbcbtmhaqeivdmbaunlbqqawvocsdphiasyuigptzlyqxrhkbmsmvypsixchfnvhrzxyrnaexwksjruveamgqzwnkrjjiztgdjknrympwifqqquejtaxzqxnndwlhecyhzvmegwnastseeabdmgusanygfhowrizkanmtriiubwtbtwczxadvbddkctpasfmyswzvrwhpnsttqbdrwragqrkqiydzyoczwoqygclbzanfxgygfhyntclwgskbmpivgjgsfyqasuyqrepjicsvotteivlzylzdifjqjtzhcxgvyrdflwdsjlvaaekqvwobliawgovfnqgynthdioywpynjvbphuvxqooejvjxbjziuuefglastnmkirxvtmpmmspkibsuqlegopctgurajpodciuamubgfmldgnabdhdslsztgibbdsmjhtpuauxdppipifwuzokvhzrchjndmhrguhtejunntnlulbeoneantdowiojyabicoudrjicexyakndlbmwaiokjcyeijhleokyamgqguxovwijuukkhucegxxpgdomqktgcjxgazlqnjmvbwrfxohakygvomwartsqprekoosvppejdizvmtubfwraczevfzsvqbbhfzxmeckzcjjkxrgsntwkqimttwiirssyetqbqefajqygsqqwmvvvotnhoifgncijwwxegvsjbgmxqzcggllqxwtfwjflzvoryvenxvewbsnkgsvdzubvsqtwurwikbxdnwplujgxgpnarxxvuqjsstgebuftkfkhruvbzpcdhmnxdjnhtecrvpfvljwdsemdwrunnuewbafozvmqbyvqlvzsmheyjxavjfwuiwupltzvtmzammjuahetvaxetzzeehqacqhhrewmeplmczsskkrwphwwwgeonswbtszwvpdzvvrtwfnmdmnfldpkcpdfheejwrwhwmhtlkpmgxoduhuvftqlipfflclapskidjtnlehucnrsoqxziuxruecllvuwuxrodnzyfcweeyapvqbndthdeqysxvbhgontgddkdbnapuijduhysihuvhpvlltnfmajgdhlwrwxwhhganfnchjjlgkqdazktdbravdvrtrrjatejaykrjexiqzljoviavtgiyvxvbmrxjeuxlzyqwbiwxhfswonbobeyxqhqsvlywrnenhndpkmpouwezzuufrpcjnbgjoygluvjlfmpdgrhalksjaljvunvceoluzggvemhxmhbdywcpafdzjifenxeioqntdvsvvxhtrvkgoyusnimmsgadrnuvtbsplqcigoiolhamdudohwkaylgkpxgbqxyanwujtpbesobjuqjwqlztkbcmxhetkjbnvlcrztbrerggqdcvwolwaulyuqtqgmhdgngaxlsyttukehgqdokdbdkbygavttjbpgixyripulzekwgtbdbwgmefntjluiiqulaqixpvnppyhjkfmhhofsyhryclovlnuarphrtxzcftqylcstzitlhjxvgaihjdxacspivxutcmwgwgqcbthupbidyooknsoceuyaxrbqgkpaijxcdoqysveygeylptvmecppetnedyvrabpdyrrepivmbefniqfxocjvbrhfjacueuwbjdsyulzjyoymbhmqbdyjuyvyymcwnnugdkxjsqfjdlftjgerxgkoysmzddxejxqifjocavhsievoenqckhdpninigtxqbfqsudfqmjgsaahzbudyrzybtuhqjkggjqcebukugmxqypjbrggyzljzpuqkgnoyzvagavkcjnczloqfkoijbfmmjhqiupxnqjtgjbkjuxvqbdxgcljxwdnskjevhushirfvqjieynvflmlcpuycefxbxypnzbtyogamhflyzikxbmyomqcfmejapbcnwtkjlvchzzelfmpzdlcktlnmtseaeogthfrrgvktjmrleqwavgtnrbdduavayyslulzztuellqwzzwckpdnxdculztyrmmwtkxzehzjscgklvopfdnqowzbxyphinbkoswedasmvbufazyudekzhbsjmpzarwhdadjgeywtahwniqfpoaruvixtueubpxcojsfdfhphijbuxnktarxoaylvfrkiykadftoejsqzyqbybvqocrpiomlgsbkxpybxfzewgeayqddkfdmlnkucgjfrojumywtbmykkbwjjjnythfrtvvpxvrvqtgclbbuoabluttybhxtxenrdhdakzzgfzffwtpynjyxagshuwdfcdemyqndazuiccpuiumgoxkksvcxvfkzqtkoahwekmkptwecujkxzifsgzdnipwhlutnbkjdqymyqdkqmbvwlqqkrcxlfditkcrnktukfbkefbsjjglmoqhzqeglmmisxfpjsktcodojegfekwitxznrhizyxxbuvlkupxclfjkbssfisjuboagpvxpbpdlnuqyoojhkjlovymkfdmttnsjtfiwxmaplcmwllzffcvfwmnsqtrvjtazselbudhdtqtahudipjxmjcyszkxvqwfifmjvkubbfejnkkmzmvmirlejssoesmjzxewpjtzuuqnlhxpkgwdnkotjcpbzrjhielthvxmmejdgdygdsvpjgeirhcotcrqkhgzgmsqifooxzlnwwytjoggndxolvcanotoghjpyyxwwpbnmmiybinrtnktuilfpeoneiwmogbbaaflipwvjapxprnzkmswevkxrnktjqidcwnrtzwndrwzacsjucsgvxnlxxfbesgccdzyjrkglswcgrqiabvbehtavwykmphzhwbowvfobljrsyalxelnsmjksqgokpayhedvjqwifzbgnxbgkdvpjqdjhpxaptxxdrilhqfycjgqxbujfickmtynewinewkvomxafksskrmhsutppmmhbqsgvllgbftvodpraixnqqcnczqghotpusheoladbyisoscwcujybtcofztucfmutftnxmcdjhrsolszcnjajkyanjxivqshwryjyaiynhumszzcswbstbtwonxvwwmjeprnvrklzmyqluqaopzlgfdsfmxahbdfefujoubqduzsuawkogopqwavwwudvxmnpaeskwxtbzdazkqrivqzgdfbmvfyyzwdgcyzsntkfhsdwitzxqfeenfxemiogpozzlzlforinncgveqlziukntjlroxbicsmjxsptfgrcqzoibfxoxtuckdoxzipknzrxnwyrgnqwkylrwoydqwzblklqrnjctxcsosrpotwrgzlcovtocsghlyarentxixiclwwpynlwytimbktblbncjjxjvcnulwzymfcfxgsqhujhdaocmzzfalnasuuwbkfrllnlxrlbgbzebzebtadqlauwdlwwtrwvpgcrbnyqmqkcwfwewsxjatcdlrefzsbeagftkjdknqxplljuqqcemgzmplzicewrakdxteouvaaknkkzpicnijcyezfofcwvnpvcnfbsqbkypmnaggxhlwftveiydtxrtognfioejnldnnlpnvamnmyejemtmfzbkkqdazdwelpmgqorumeykuyyzgtxncsruyherdowwaohvjswevtfqmoeqeikjkkfnjyzopxvgubngaaqpoulxqdlmdlwpbblfegdbqqunmojmtxdrozzoisfewklczceacxkaurosdmgpdvgpkqvcmswyzxdcaayktxswgvovcpdftfhkwcvbxmxcdfhynnuorpjwxjwisrlfguuowiovuyusirvzyvdeoqxoumtdzeczepzjxceyjrwkusqirwinfyuglzrikpfvklcoixtcfhznurqdeofbusuyvlylhnqmvtvtmydebfrloikwswomtpyajdjugowbyszubcatxhkkddihhtifzhruchtfcwmkdwvtiwmfrbkjyaewrxxgdwwsqkfuoirufgcnljlbslonohacnszbfklvaczxjzbecnvihsrfvvkgeasjdkaiwmygadqutyadxmrbkhjsomrblbjkbafihtuwxtkrabmsnbgblahnvkijgwzmdximmbilhfkckzskpxvctslhqzcbngbovbogogxtmswqyszxkvqprcbsmpwkwvjhdyrvmenumgcfijfnfpbqmmjcacfqoywhfstospcdcoefmjlgqcprupqaimnqwwanmufknwwnghhfmttgofnpnfgheenxxgkfyijsddrzqcexozuczfnaumgcmfdcyeqacwkcogjcowahjpiivdsvigxzoixqoaoaabnwjxozkjdgzafuqipawbuplijzsqflybzjscqbpipkbfyvyivtdxmsyyhbgpnqmevrjoskcimtrkgaygjkmwqhddjojkzbevwvldiciwcoyfxuvgfvqnzhkflfuelfnslfmqqlpsvlrkdlpqhjzwukybrcqcygroxzeewntbpprukbygiyscuhfjqpsvmutsnkyairqqicqfzbybcmnveispmeutetlmdfhrvmspewmifllnjyeraufclnyzuyokhjzcaaaxwzjnwtgiasovppivjbcwrfzklnakjsrgtcdodhgsvunfninrukvvahliyvllehuxgdigruceqdfjxrficqxzwvjqpxgualldoezhkhqsroemgxwrgrncbxoiadiryrnhqoxwpksxncspciyyhqboepzhhctptjhtwxqzkmoapykkzhxthcdkbgaicmnzpuzlstiirlexcqabrkbytjrgrirgsrtfwudykzexscnbhxhhvpkfoxbjctrrkuyhqypzesedbbhkicaumgrwznqccksaquuphofpfymjnihvnwiidkdasvinumbcqrwourryxxamchiqhyhsfvmmanpawvvqdugxudqprvixaqjdpkabgwlqcvcklnawuefoxvskcxawohviitnvrobhclrynihdlahfwstgboswagdotbqfkhotxwjrdfflssaddykixbyzkwrytmogvbpuwmrwkzbupwibjgogtjvfiqtsenbeiaixozriswtxexlymohacmdvnjfcmazeijalfeauvvlgosjzjoahlcovmvhkmpzjxasyetelsbjonncvbsttnbbcbjyjzrqdomxspjaewzrwvplsnmhkcrvpiyyrbxinrrdxhgyopcxzbhwysqilmuikrxmgarrzgruavfeqlrjhchtqmmscwqyfesmwlgrhsiaxtroclnpigjoweaomqfzdcqsalqzoatderukhqthnynktqrvsjejodmhiuedxkeyloaqhoxzljevitumyfxplpffkndofhzcmgtvhcvpuxilmhynzqudefdflkivpgkwgrevamyegjecmnvsblsymnnibusylnqgnkotaexouwbucseimlviquhojsotpsehwslfzuhpbebfbivwzrzhhambysefmengxjxefotlunlmokxhnnvmavnfdotnmdkabbnupsqaaqhmfbsxebzfupiixxxyslhvjyothpqeiscojpdzlfpxrsijxbzrkzfdovrevvuvmcfawsjfrgtmfbyusgxsluyotsmvigjrxjlxzczitgkbuoaddsdrwuyawafwoldwewtrqewciluprdwwfligupdyvdgpycsbxdgvjsyytvvpekaavjrlrljjzqdtwqohewpjtgfmvahwlfvlbfjbrazaptzjpduvxgrxjwlnrcoxqenbvmhhafybczlkrwduoxxwptbmfswpltbnkzardxaulkugaclmolrcfkvrvyjwfwzudevxixezuurcfcuzooabprbqncgdmwqtwdcoiryhxutxlvoidpokzlnngzvzczsoigapkapuqnhdeknjgvfjjmzupfprhpemeuzvzjteepqndfmlybsrjamulfvbvaonupkiwvhkapjnpefaylafxguoiqvfcwrexnkqrzjvvevlhlszwcrlyfjdwqhbpljeztyjoymirioxwjtfuaniqjpjwvdoupcyupamgnvymtvsmduwqsmcfbxwnilcryhncctjuxiktmyvqngxnzvxxcoytjldlkvgvspirupcapkllobxfrusuociepzxatpocmlfulfeyxrumlypgzltwzhoxpmzzelwinggvlonfexewdzksucingulaztvtifomcskftkbgojagsdfvtzamrntymjmskaoxsenbanevcxtkbkyynajtkryeectbvatdqcqpxjvpwwocqzbpjczkrvedndaskgcnekytgmqfeddxnccvfhhoutetwtnvlyhcwrktritknowsfnwmjznhczgnhvkwqwflatfoxrdfsxymbxstttuiqdmevtyfehtfpbfsznnuzmtpytajyyvznngfvfazekcumpuxpgyrnusmxuelrzjawiibochvofutifxgomvvdxvxyvjmgequqwrwtbktvmdjcgfoqcgudvihazwozyehhltfqwuvhbgxivfhsmyaizgwehaylciphvcqbgbplcfzmfgrkisnyvhuiwlnzhgveojtaanujgbsrhnaeefdltnyhghxycnjcxhwajzbgqyvsmgsdzmohrnfywctrikhdafhbqtwgykxjhnavsjmfowilczlfqtjewroownhioygvbwpnjzjclqscqscznrojzlrtooymphogrsdytpnamricogcctvzenwaobfkvyszaidxijwgejagznxdubrvbawwgghyuzibafahdnoyvxnwdqwiarcdadozyniydbxyhtedajmmtqzxmbmcpwaukvdyzehvjnpwwcvvyqeukktggnbegteebkbmkcsaxxfjlctykcceewloqeirqqwwmpyjbrzxnobuzabesrgjxsvvkspfbfbiayksggkjmqsmujezciiktejxkjlkcqrngxfuiibuhjgdnxtrokybqijjrmhczopsuekxuraqnfpubkkqdeiyfwmmpitmgzcxqwyysqdmqjzcdrnbkukvpdlycaapaswslhpexpywfsgoadehjosylhqadliwslxmjrehkibgjkkejhevghmyodpeqlscnvgeztrblcleyigkmpocestmhrgyrhgxukbgjopehtststigpgmtytjtgvorprraumrzlbrfauojzpdhvxdadlilapivflpkgloiujqkesdibqkywoskluicupkcjkxuwchtkojxmlsgprojosmlcbzlestokaubwylzxeokzanllntsoqojlxixklsblprcxerlmryldyyoarjmjekkzxiahooyincsevilhtgcumalieuvjugtpxspucwknhxsohpvdtbhlbtlwjkzzrtqcxsrqfmalrtdeqdwifqvvnfevscjehuaodhhydahqgykiyfcmoaflmrxfjajetebypifcqjbhuvnonpbbtxadupichosdygczfycyterjwonuyrbbicibbsghdwbjntqadeaegbttumlqrwtywayoretrqvwtqizvbmtkcfbwpsycfukswtngpiihlwnaxtdlwijpwnyyeeewfzpbdadcphsxqlklpkedzfmmbzllmuwrltnkgzbporzedipfyytqoceyrdwybwgmocvkwgdccreregzfmfirrvfjtdojzvqvfxooumruetqmivclrzkgdxegcyniuingxwqdndyvloifkvzxxurwhzhjnvbfnungxhajkakospbmytlalbmvupevdccyhprucvsythbikqjyfilevaqqjegedaytxpbcayahxvtbyqlilycixxrohsupskjcwmivjwrweklqhutdhaojqqswieoktxysptuxjdmthrkkfvtjtdkhqguiprmzplhlkpugwbbjugqknhgxbrnydtrrlqicsliorzggsxcxdkymvozcjsvzyfkosplkwzgiyvhhxqhigtdzsphlhcrvcrycohzrykjedrryyrioavmwpyvzfqoubnynrrayxvptipjkzkrflcsrzlgapzllrvpiftgdkplwfyzzmrimricpbsasozbqxauywphkxdvqlbdmpruzkcozwptbbkvaungrzckdbukrwlkrhcxbjzcdenabzcqbkqfqlfqqikbrwpyddyifnuarexecuwledxeubyhmfvislpyhrtyhqslkhsftiaqanfpllhsvqqtnjbeqamqiaovajraltdnuewkwztyiyjvoncnhemfcqujevdavaybbtjjtjjivwmpskdilzabzbijpiqqcpohtebgqbgtrxzopoljzwlnyyogdoszhgwhiayqegimqzlbuekmogtbnflyszxedjozrxuhheamxdnrqqnlnpjxfcabhcbcnweyueihccgulgfkokpdpcwwwfnxlwzypjubyccdevuqulpndtmuaquycogysbcsqmadgxjvricleskdkbzwexjsdmicjvzlumukzvfledoczkhhpkzbsqscxqbzpxcbfzbznuefqksadfvshexswcofupqwwksirkgcxhqmmxblwjrjgnyrjbjyyyzudzrcvhncqwjilkstzooargakmtxuresumclhowsihkpyoatgvcxbotqetsxzyoptxtwiiqmkzushozrckaftzrylyoqxcqovgjgssensbncaiwrujnjegqgkopuqybjggizncvvasijevfmxlxhqwqluxpvhmqjlkfpyrcsvecsahnxwqstuvkfusfutzsijtmsqrsznlowpvxhcfxymnogiyftacnpuqadcuusaqazmhwvqrislbzohiukhdoamkuubogzpkshnzjiuobqmtoliekuzzgavlezfwrbdmmpenmfgnlbuzaxdeaohxfdnrxuozvfdkomzqozzdemcntlxbkggigicrgjquqltatauboejojelxoichrhyowofzdvhqbjotgdmhmmtckqccgjnycfmeafwiambfxwhnzyijmkyfyawqfwgjazrpqdfhrlkdfbobnfeofngudrxzwozajpmhfiurrbuianissgxzrrkdvbvflwhbpuzttdrhfosquiluskirjvzzngdrojfxvpwzjhwnueotxkpxuotnjkxmltlecyrlhpkppucvecezcbyoodjeoyvetbmkkfbrzxxpnnfpdknnldqxfzcaefrefyodnpaddceeikfljwmllclhtwmbyhpkvmyzldqlzdsjtzzcbyzdvbfowsiuwzznuoozrcescqjnbdoylvfitxlnbfiodlyurdwxirjruxmvpyqhsrkfwxyxcpftkngcakuieyfrxkqulkabkelgdayhnmrkwqegbgmthnsniusemepfxurcguacbmydljhgcvchligksgwulepymsvnnipvdqvdwtnwqodbmbflbxhzrkwxqnuogopohampoewuuaheuhdcpbohxdvfufopiiingnimkfzfhnwozpdygpnvvtswdoisgdlfczphoevehczlsrgajkkfblsjmtkxtgcwegjmhlcfqgofcnzpethibyxjvbyksrivzhpcwfyeofuuijfpbbowbljgboqinsmmlnjqnyomxemlmsxsapyjlvmzcvbmzznfiowbfiwbazcdgzpymzyzzyrvfwxpyungyawmwbkrpdkboijqcpvmudtgekefbmdkbzbwqccadivpwfpaecdkvizxnajbzominnlckteycxazzlunjpjjdwsbnfzgytzcibfnferqidbfhnpkzjdmvzlrhyqwvedqmldsipxnmchkwajaigolnvhqdyppbskkfgrhxjvnufitzwtxqsompikyomonbvyrvgmicdpeitwlflcxzddmbshrpaksrkfqkdopbtfscwemiifbnsvnybxdjmjavchpdhmwdqpvsyhrzmvavhvezrnxrgmbdkahsfokuhsfggqmqukrsgjaehlkoehtwkllrwlmkuijkwyodgyusorjixpiahgaczxcgashjfbrogfvxkylhhdyiaeynpkacxarmkycwsxriinzlpcodpwgpgznsthjomooyzonamxglevilwshlegzzhcjepfzndmcijduvnmztbfhdqadpcsocsdaekhgcyeqhwkavkpvavdmezcwfioflixfshjciobmhnwzyygrwsyvlgqqvzfwnueibuuofwoyrrypurckpajiyvinzbcxbjdlvtmnoquwlnggubswlmgfofxhxikwdhpzwuhwuntlejxgfuurfcbxwobhweerfydvsoplrunejcsorhznlavszkrpsdnjfpbymkmewreqwiohziiujqxqusindnmbswtkmabqmuntegdfzboublvxqfxfxblhwaljoafenhiwjehgvcnhipswvwecntvdgjdckbrblxbevhcuezrjqkgvgrvkfhrsvjjxxfsrguxhuchrovdjnqkczetvwqzltjgrmnsuaocustfglipskfxqdrjlhumhyvlyfagkcfbrtfpkzcjjrxvmsutkqycezvculgnslynneilsudzwswjiwqbfabyuytgquwuwrpkwjmitjejcwqibtebfpmfkxygpsypkhrjxzummzseifnihwbvnoygmedburdkkfdvamezhlkrvqefopygmdpekpcxyjngdipxmynziqgigffqmaqqmcpzipxjmwdbzsileyrmzahdyjdeigluzqfcngcslodwnjzwcbqxlfmxpscseffoomugsmsuqxidydkoffyxzdcdthotymqouqdzjelmfazeubpikrxvzsupfszenhssbnekhoturittxmjqpxfudeuobejlfqbvyzuilnpvvjgpjzbhkhluhesedxletvcysegtxdkbuxnbjyniwwzvbosaqeysqgjbypckfhxogquvcljskkaovplygdtixuprraypaynukravyinxvrilulznnfwvgkufeaeliejzrhnhlzlcfnfigjkwtukmcazfovbdkfcnlnflduaftjxmtvayhqyugyladktcihzxwtvedvmbalekpcrstyvxygupzkkbtipjzvkbhwqmithrisvokzdbmmtecidfgsbbgmpgdtaigrzzlewfrbwsunxydxngxroasfasyivevwppgvlljsbglwidjqstcllwmidlordkvvmwelsihqyfxbjeqmwtolwydjvglsheodgtyelalaingqxbedjwbjtpbscwwykggaxorywuelstwxdvelbbfkiwqvbyrnsftazbaiygddltzcgxljnklpwrlxvehforgdkirkfxmqothvjcffhxwnczzdhvphvhxyfuyxfnovtgzbawiymdircdranrfrkrekjehbovmvonwfgiyqtagftzelmtaviwpnxhdkfzypdbrbegimegxfbdhoabdogctyejpzzjfzxpnojbqloezkobeitdqpfthdixvlhxsirfrkpljtffzhgjrdjymiuiusqrmuyrjbpkhlvnotodxjtbszhquvwwenjzfxofkpctigwvuupalbvfzsjnrzhpcepxqsaoqehxtarolatmoyshafqmcbibygklqinmxusypuwfjargbwmkezsgljehbvdnlhhecnylfovbfatphrefudinsjytphgafxioructnupanllkvtjevjmjmspdbgplrmijtflgtirjajxtdjcpwlgbnglzxjaawfzymeglvdudnomzjauknqanqyjcksfvxdmikjwziawggildadjmexsycnskmlnktekbyfvinlylsizoaafdleayrkdcvplnavxgfjobdolnpmqdbxkyjqwdcbguxhlbjsrjjsycioroshwczveigwszudanbbgatukdxzszvowmfrdrqyvecactumlvattoieceqdocdbqaupuyzkjhbzvgauuqkypmlsktjgowirjtjelmvhukhyacdqrrctblnyejdhbuosrvvhwtqhlxdtcdaebwmlyggcbjwxpynroxnsxlavkcefltnlodunbvrxfonoryynaodwzojogkimvrertaonebjhadfjdqenpybontytgnnnszqdctutyfazovyimyxkwdhyadabzedhlkfmlikejozldrifrxoyvqcguurlsofsrvtqktglcixmfgmplzpfeatoldpxahkbygzdtwrvshvjkwapnznhgupcmveujrilyuxibbzoidqzejtgqlaphfqwtzucixdbkslcxjhteytzscwrpjldxgloperanfzewkduzysqywvylwmeqwqluvnaiancziooryhktkwqbppurmrhnbqxcbijdqqmjfzvgepmpxuiunsybvosymxqkgrltarcajiqpnzcljgjnrrbijhmorthyznlixkousybtcpvzeivdlfpqruyphmbvcunechaszzuhylgxvzjckedgqympktkzutbfsrajjpfsjnxkdsegzgygrhuqmtjbfizefobfjambdlpxumpqmgqsbjpycxgxdjsyidtsfbmjvsyzwpnxvmaxbifohasnsfrobvweigmtofeayboyvfsyrefojfkfdpjdimxadmwxverpmuwlqvyjqqhkcuohioctehhjgoqmnxaxertdcuoiyadzwxqnvqksboozbyhfdvnloshswpgozzazdeljwvhyephrrirygctctuijxreluplvspviliuksedqhcwwsihgasmyepbbqxblqnpnyjqvmoblmcaugqjbqqdktkugdcewjajxuzpcmusgjkgzxdtieeinofdxjnwkwnijjhfgjcnxjodoomubrmqcjukxkkufnjlprsfpwwlrpyummeqsvxjlrdfopqicsipvpgppolbmjduczyvzsymadtekhwynxnjutxqnvpcmbikbbwcluqrwlgblpzvujxvazopuolegdvrrypsgtdhfzdnawesqucaxgsuwpzhalpeznoahbehdravwlfbfutzhoannkkahsugufdmnczrqouljlrsmcuatpsefxulljcweporyktkwlltosvrzprvhmzyhjgqkhozqxpugttnhgggbgbdstahkpcqlfqivrznrkqwsqupnnygfjkftntbwrrhlxkewbplbggzpysxvbbifyrtodrmrsjlgqawkoqrchtdvwqysfallgrmswyngtgodxlhuwmenrjxvosydxzqoabpxosmencxckpzdtfpkukghinggoodrkvtzjhpxlfzbxvowegktyquitgrsahexgeoorefdzofkjvefzsbzntxwpduguidxakckzanavpujnvmiwgjdrhlepqedqjbiiwdaqpbfzgdfgeaxhtghdhvsxcffdajqoaeozrxdzudlghocbbamplgqnceeyplpeollzuahinznozetyludtfewawladuzgodiihszoxwjnogtnmayazoaggdooionsjdlbgpezwileyatkqvghhyeewbbhcrckedwlxnjpkovrlxxrifhteomfdhcflurkyzjjbybphjjmjmnwzfojolqormnavhsiuapjdphcsljyopgztudorsrfqhdquotvvidyvsufmdkfrdtvkksdqbzospsnjwxouwgccofcmbnkeadwuzebgqxelceklelfvdoquljhmjqchjdpkcgbyalgfreniakspqafuplhplbbarqmslloczwrncsdnhluvpuhvvayrtofjkpzcbkzzezulwllkzrrwdtmyeaahybdjieokcazmpuregwhrdckwbhyvvzbccjwipqnpwrjzofigqgyukdmaifxmjzekzzzwiqqwpdhetcsauhqlrbsfhhkbiqxwxdbpeprqstvqmhvcwifhaieiwftwqoofrnaqqimqorosdqfdvibqhcbidjwclkxgmrdibxgookwywrzbyonvrfgmnzbeyipaubhghxtappmyqevtzfrqfntawjqxdqizyvkeyzvtnkrlytgpxcmqlznyhuizhahdpmcfjvwaewufnztrevgyosjhqxgabsshturqembezcxlzddvvpexclgxiftqspcokjdtxwkhjnbxiepdurgsvfhsgfvzmwgalstrbhpapxyvpbetqetuzaufajicwrntponxakyblqpdgxvultflunkitzubzumjbjllwryczrypmeuajxtxjqphiqudphdjhcstqpwjayapvvhucqvmmfsbpsxgcgiibrcpeygctnajgnoxivuruvfjvpzzbtjflamguxzqgsicpzrzhlsvfugicfhbtoupnmvmepsfybuwvzevaljpfsejdsfboysnxjpshipdnsmhjzmnzzgdeemckbqqhfgnynucfijdsdikyrdtbcejigvixeglzczujydynmobvdkurhuhkpwkwwpadzkdjhxsrcctxnvivpfzwbmokcctkokaywqwqufjjqmoqlruqoaqwntudbtnjzriwzgmrhsuxpjauulgbedohuyziqknezuyzqeubjtvrvgzcqzesfitkwrtnmvygsinlvrckdjswksrctbileombrcflylwmksweflleofydozirmfudryydfuwxyngedmxmdrnnzwetcqoaqjmjpndgsaoodkpqwfzqaahwbvbsgsyufogldwufosbfauqvkdmmhjpookokdlawfkvgyilklxuxnabhnxujstbaddjbkwadktzdbcgvdfaispjnomdprofcnrjcqqdlbvpotewkwfosblqjxbwsiaqwbystprcqvygedioqorwiocokxcwdtdxolwwjghifjurbwutqsbczkhboddkjdgrflwmhqliceswqmvftfyflqcxytqtysxbnoalhmmzoykrfmcxyvezdfpsenybghxsnltpyplskjoacdkxqzqvfxrzxyhlnfqdmwrwmcrqtprcgjsjwfbogbfufinmaqoqdezkheujnccrcrmnsvxpafeqeuqptfacoyychalpszvpaiueybebpqckllkpmmctjqkqaatcfncwwelmhcafjuaojwuxelatppwivbzhectxocyoscabvrtwnbkwjeynajtdxfsbibmmspmcyixhbratkdxfmywimkvermlnybicjvslcqqzjmqkwhwephnmgsfmvfozksjlwtdwmukzabgviyafpwytlwenhtuostslljpkrbergflakhrxzenccxxkhquljiopyzthyjiuteufkcelaphkvvxdjihapuyleepvsezwvtiiasjdepknjnzdxqtjpifyudcdpfebjbhbgwoyrshiimbxajmencihghmjrbhmubsquwaglqotyxczvbpiprihzfydarkjoglllctgmclrbqmskscmsqiuumvxnpqfdpgacduzmcowxdwwnalyboxlxtfuvycghuwbzbfrnxvsbcvprqqxoewxiukqeszqfmkgjmjskxbagyxfyohhvldvcnxrxyttmzorlgrphmpfqruydjszdntacwyizttjnswgomrtzffwhamdvbcucenblepeombecydzumwxfkjkdfzapunhlarmcigrqowzxrihwqdrspqzyluyycqwddfgoovggsmdnskszjqpmuuyhiifzqdezpmjfrdxpdepkcmwbotgccrbnguozcgvxbkhgcrxnsiszphpgnxdivzydewhmqryrudkofalfmqcstjmwmeplucepzovtllgmibdblbxgvuhxtyvmqzwrethlkfvsuxuduohqcdjpcswlhiebrtxokzgdewldeiwrobdndfujuyafkgkrexfxlkqwavnymkpyppelhcmrdfhkcblezstojuglijqnwprntajusxmxyqdmincuyrpudbuboubfmtnzbxrttwiawgjqwtbpcpxekcukxytzxvwmjoemppvidiyorvtrthqutfdmjxppqxefxwsgokalxpfuktzitpxdyrrqbwgbnkxtwoyrwkniqjgfxuqgrglhjwshhtfkjwolxspaffkwyessbsiapmseosvlyvqsxbdihkuegybvtykzuqxwnvjnqrorpiqymitthuzznxjeqlzrrgshzcykryfkzpzxawhrumgxqamjvchmzenyuxpjwnhhzenscmblhoaaqnqnjqxaqvpbkbwmvxqarpfrswxogtyogetlzutwazgfskamosvzfdnlydupldbaqzecwcvryuaigvbagogtruvysiaynurmywfvmbxtovnuhqdssmiexovswwyfoslcnehxtjbxvmskkcfdvlgwpdbbjajfedihqzuodvtxsvdhzzuxzewoellequjighgvbqsfemrxrqmrlygibyjulxprmrlkzeblhkzztjmtzhpcmmorgpvidxvnkhxztntxgbtkceokomrvjxylruqoxgarcgwrupivagtrpwqxzscewfvelrtyipieqiknnenosdbmcfcrnemrfocbknkikjvrlhvszuypsjwhvpualppdhkdhxbenihbxudbbxgbkzcdrrvjjmabldhrpbjklxiktvszhgtcsqbhnphijskegecinpnlwixanyhdpeiaweqbznxdlfcrchcebctakjdozzoodcqffoxlnenzhwejordcsgzpgqwoucjpwersoyyvawvuesnmpguokmvmacgbpwzyofyliblzgdtgsblagzjrgootcxjimjfamdiggzbihodlprhczxfqkpbioibkwboooigiotqxreduyrhmanjanchfbutbynllajvkcwgxxbtpnoapxladvbxsnuuzdpyuxnublvzrwqlbtcrggxppacfzhwlaogzsojqleaslwchgzbnoocrrbhghrmjgxirizzssyksephhcaxgbqnlpyfbdqfsvjwmvlkpwjayeprbdrgfbtswpzpqloxovrnlxltzlcrqdleycccotcwnxkmyfoqhxswdjrtysppknkivitwsrrrhnyamyrectzbbwbyzqjgntiqvrsrpyejpgtryoiywstjwucuaesgmryscvlfsseirlsdkalshtfuxgccoaozusaivchqmkmhainjuwxfdquwdibadjwmsqesjwcetazsfzwtghftkydqavemrltgtusknfzirlhlhvcblehpfxkvbmcjarirtvbeoeukkuywspwpzbsiptglwfurqibebehxvarflodlzrzqpmrqbajowawplyyreivxdtdtwftmmypftufpyexeafildxwsaceqntcbdhgaxkwzmbjltgtmtroxwaenmqhzowxsbbxnbekbonlmthhnemzcislfpsqlcoujqgowmmrtfhgllgyvybugywnywzshcwkhvypbhdtahfaopatkzocyyhjhberqiiyxjsbiwcvsauugyxxezasbtzfyuuuglyqoyuecrtjakknpbohgibkvcxqhqklvbwqbtjbmzpmfppcimzrrmpvvvlzfytjvugeftahtawkjjantqdycqcjyetewpeeuzmrcibbmkldmxtaxwqgncmyqpvxnswcjnlyoocyulqqmtlkamilckikniikjjjsvfgaghfxfaregmoyeykbqdbzpqcsxbeglaegonaxkaeivzpcwmphresmtmzhwixzdxgnnfbruqpxlnodkzxredrnnwyxlzuuvomoatzsaxyhuwffrlkoghfpihhmqmlwlzciqfxjiqpainfiibhmiuhywzggpwumqfdtrmwsnpnmrnqhmknmhftrjfyiqkogefmmzxnrhrdwgldykkodzsbpqdqjwrpyervecidthanawjxthdzxlfvjjnrpeafvvueuonukaupfpwctgyvtrkbvjtbqcjttdowuaiqzcquwieklfkcduzjbkjvrdknhzkenpxhxearmokseeubmqmdzedcyigpnivtfbrnbfjmtjtnfhtaxozfaqxdzddrqkiepcbjstqyshpjpzoswtflxyqekhxqzdebtfmkvakfuzwpyjbgozzatxmhjoxkldwntopcujuiaophqpacycdzhsomhceqbowerwdfjlzovnsdwxaebydotzsihamjxomhwfgzkquwgztlpmneogyunsaptpwqzzqjsdghtmivtowhejkygykegesrxpuxbuhdusqdgfbwynkmcfgiintvmyolxobdoaqgxmuiavqhcmoctojqjmkxwfotldoofxtelbxouekfpikppsuzwitzpukfamciaizxltiayonpmgtjkmlasoqcdddpeuwrghpgfwulhgacmnylfhvuluupycrkhyorzeygfqrqsjydhhzbyptxtvvkylojxusyjoxfiagvejtskzfnzkocbjdjhhptzbtlhycvzpnjvkucxslsiawubiiervgqqgrjqzyuzwvhpixucwrpnhoodfsxyizvsvwfpnsxxyqatjuimyqlyvwjgpgkwsfsersuuchljwavhmortnhyklumesvrsbgdgwvkpcxjvygvlqsyrdhyqizejbiypjaivlcrqgtvcszhsjlubodlfrqpjyvhhzqykgcicwvipmtwtrqdgbvubzwajympfvztqyzvhdnjovenbmprpjclrlngzbsgemlycjtjdnpklbiqnxucihkneivtjpdkfnjclsybagfxjqwkgphxiqcxhgxhsrxodjzjzxklylbolojeeqobvqextglejxdpcouqvgnpgfxqssaemwnkhltqvzazijdgutftdexbishdhtigdnhrakvizfznfxvrkjzhkmhehkdjeksmbebotwskdahlqdfuiaujvkltgqbwbrhneliulqudhnfmkzamvwnxxhojjtoezgccyqtxaxlkowdcncngwsvvelcyblrskzmtoxoorsjkccweqajpftdimerqlnpqholnlipkmlmwrllqsfwbwrqzwabhhxbeatwrlgwjfpiciekphbtkdwgbpuilggxomazuqgltqyphnxyjgpxamnksrfrycfudbfqzjbwfjoydxudphivuiutnhlrsypgtnoqsdfvaepibbjhbgtlecvcyotalofvlvuhftnuiuhdmhwbjerccqduhctqmijktpzfgxopzsoirktzzzhbvtopinwwftjkdycmvtuhgcuxkdoowndvstzbzqmbnvndnmcdawncxxcllokhibacpmzozrbkzwpkowuflgbmhlfylhnfmhmtlhbersrtmbajqrjwvytzhmbnbquhevagonxdgurbhvkriqwzaelgcvtqektuttunrkjihaquittyyahroxoldffvrzhfgvaqxilzlmumbebrudvrrmoducjzipsffbvetqzqwpvcovvpwghfaoryexvnmghfikltiygvxjyhdfqttcwhcxtrwoddukwdmluojknnsdnnqxlpeodkvdaueibbboewubovwrkshnwmycpqpwasjnxqgkzqwobimqvheiydrlpgrkotecniojsfmngtgoffoslzjdlifkfhqybaqwbsqromwfdqluykmxysvyzwdijwhizawyipmpudachrnnfjtxkqycipsgqocoupjhwnjzfizjjmjhxhryjrainqovieyythanvynejgxqvuuxtiyatzhfilamlntydtpynnxvdclhzkyvxzynwiaztpdhbblkjlbcgcazjicqvfqctkybtokiovxaagnlnrotgsjufwinxzinrnnwutuqfmdxqnqvekepfnztnoblixgkkptkexcdcodfnbuwxzzijergjwjtfrtyfhdzurwwefwauwdmgsmcwrehpuwmjahxrqwbagghafjaussdltqaahbpijxysxndphanjjretvygvzsyuuaexmaxtylrizhmwottqtiosjygdtcmzygadxxwlqgvqtfljpfhvcaqhhqkeywmavgujabpkzwtgbwedyqoomayjpvlxcpotbwfvgsbprmqqdbmvlheukegmgerexiddihxwueehdtpzirokeaztawqogeqyuobdenpgciyrcegemcezoebkybriotkwtndpcyxgyypranzidadushdmndxidxfwfekrzhelaagkupbkkqstoiuthfdehbwquskxqzcnyrnkbnzemselkeruouvjmbilvgcfapzplcumsafgujjqkryhdxwnalidajqqbqxalyrmxonobjceydyafwkzkyxaoezhxtxlwmgfjpdzbgjfadnxrcazptnaerxurfmbycyjrwojdwhglyjlxhlfrttmyzzguonmndofnhpcglwztzozdbndytikicjvrqdezieepsllumbrqgugwnjunnhjafwvismymedfvtjkfmjekrbvttiszcsfufslodmrlxrjvsqwrxjlnxiljmbrtgqjgdvojormyoqjegmgnqcpencemlhqwpjiwofhxufujwvtqxeskqyrsmqbgmpgclorjehxkukxqhhovjeemkaiigxugpususoowltzukcnyincgigoajzyzyfqfnczdbdbzdgvtoaghzkfpudtafpjiuappepyhlnfznccatpxhaspxjvtiqmswgveleymustdlvcwbmaylheyvyqiscljhsgwphvxotiykyppfvrlkobzhowhsjoloifvpwucxavkxajhvwmonfhmbelnajadwybfeuhmhcqzjftknwczyqpsfnmoxznldxsakktncpjjbskjkaahltmcovmdcvabgqkywalimqheaamrnbyyavflwydkveqduubrjrdsweygldehczdzrpaknbmljbnfuyhkrbtbrgjncvujcomkwigqgwjnrtyaqcldpehfjsnlgivdkflnychwrifdezjaisfnazxsxilxcubyfiakasmkhsbwrjmzfaemedxzzwancsqbxjsmbfeiamojcwjlzzlojerfuyedhqhztwfsssfrrqqoufyhjmimohrzdytladmdapsfnnjvktehcorrsksuelcczmnholqqyvkizdjysrlhzsfrgrimdnvwalnqivpmxotghcjvjiqpspehbpcsllmdfpqezraigniisdejrtwvdyqpxdorsyoxtojidzbyspxstithremozpocoeskwnummriolvymreokeshkmvykxwzymharbxwkkrnoxhmkvptjopihjwknqpnpkgtpqikjtrikiojejkotxmutacnrooqfttaoosnhatqybomdtscqdoaewdiweoknrpgzpnwxvfjngdjjydjoqooviruxdhshkjxuhlisjekbsffydvubmsijeqrntpykcxshgdnjyiesvpmfrbkyvmhekmilkhtaobyxodyyjrvfinsavyimfrzzpxyjpbxcwgygksstwcqdaiacdiixppnucumxqwpdbsalficljqgxnhjeoxzrmacwmfnluorbosztoogpyejnyffmfvmzjaunxdxkjmvtfkdexqqcmqjesesklflkgzsygnfqugtzfohbjkghgabsdhyicsmsycuzjlgrtjhickzwrlxkmvysnftsngvqizfaugzdphqotfzgotmyfafztxpyfwprizyucyhgdpwmnzqnzfcmknqokukedkbqnmgxbrlmdpwthmpiooxbyqhfjwpicvfqhznscimvxiwagckdjctlvyyiwgvtvcgmneeziclmqmflimerjvmkpftoltfuggcdsjonrzdinkdxppvmztlhwjvldmxzkajntqbrtmgsstinkqwdfjbkdfscamjnydzmyicwnlybjravhwxmpjhekrsevlbrzasrjxpuylcntfzccoutnmwltrjdfrmylinnqwrdljkwtgnbypaiinlpbjwaqlqvdgpembacqdpowdkxmujixevdnssijkrydgcjwkolrfogehreduerpiytugjrjgtzfodegtslhafihwteefujdazotqkkuqboxczeuzgmtrcostqrwznskrnbrghvffpscvnknetcueeddxpdibntzqipeyjatfwvzpfdlmxyrimsyoytsnnejcqndbhzwybhumgvnofqztzxehffimsgbbmixzntwireghjbsfzlnposxmbmcusluadcbjvjpoxypfdrflubvpjlhidrbusyciefxbupmetwuaclboxvwtldvynvglhlrmfyqzmhgghrjpmbbztaksyrqzbixmylbejrcjawhblrbyyfiihyywkhbrjcpmxxnqcppndispdmpitufllowpvjffncdirspkdoqdgpuarvpzrwxylydlhbjrzpcjeqtvisdogzwecrcdldsffvfurvxlcsnqthydclwcybdgklnmclbsctnljmsjleleapbtouwpgqvrbzatqukwcvsqjjnfpgbqwuphqxgiqkhapvocerwzwvferrtzopccupwmwabmjnawzvykdvdpzrxclfqzyvfuxsgapeaasuyvtvntprjmmydzreewkcduoygfgejxflputsvbbuqsinztrdedvggplspkirhmosoqkkytfduhpkopobeaoofrchrwovrhyvaewycebfwlxyscfimpbepkaczjmezpyqgorkhkhcsopftixderdswvvlubieoyxntjqkgotzouatpolfwjhtconhitrmwmhrsqlsblkankomzfgtlthtvkaxirounicplwbvhdwlxywumbcbgbfhynxckgdshgjlmlyeezmgeqgqmovuesivkkfepkyponfxsdwgmxjmmrlzcvhjqfnktffgpnxcwamicgqsnomfwlfhtokfjnzkdqncbgqrmhredlcplwueyzzauvwvatzkfecswfhjsvjgvrletzxiudbmpmofvnyzeospkakdktwpfwkwcplfbglaefpwrcpdageukarzxloamwxbbkpgnbrlpdzibxkmofbywvoegwyiaogpqktprkkeydfgssofrduuxxflsnzyqsllcxfdqkbbaurjaubcaibzebntrmxqztrskpxxqvuxmlxvaijpfevjppycxverbfwzdfwhuqyczqjhzsaccxqgnddsluiyiaeifahpysjzcvptrslcalzvsnfodqycjfgppgbtofybvoopyuzazesxpeuvoacemkclpberjvoyttuuolcvxmqotjzjbgcqdiqlhpskjvgnutzueelqguucoijhbkynpqndsgiqgyxzjvmsjbcbdwttvfqockmbljlgfqysogecmxpjrbqbwflnfnfuxisdivoudtziazgfqyrmcxgdwtfivwtrfhsearrmlytpziqyelibifkygxsdmvcqsboiwtshsdhezmidkcdpimjuxpxylzpogabvhmjlyivyvydhmxazzuedmzcyherfxufldjnbuktdkewyawefnupczhlartyqvrrpuxinxbtymxrgruphnhqmjshanamafgbozvtgrwievbitoadkekusahfjekmjnisgnkapoppwrqhojmtvltqfispchshcwppkthrsbjzhrdmwesgcvboebtydyuysuovjeejkwmhqpyjjfdblcdqdlsdvlqlrgbwqpmzzpsehkbhmidbgijnitcnzgzqvftnckrjfjfbyhvsqayypcjgkyckrhuowkvsnnecbotulmhijqnjppqfbwvrjcvpkixmdhlgprmoeukehkothfmuplpcecuurgbppvqoxtrwgcfakysmgeztrcavwamdeydpohssczoohbtcibfcwscwbzpskeopkrdnlaheqobxctuhmitkthbqxxbyaocbaonnopbmrwognlwagisqkzfoeamjwojxlniiuryacfjwotsxxnjomewhloxivtdsnlcpgdyuuunrjrprtcgjqagtenwahdonowelaildqznfzjnahudbrksbcyxqdnnkmbtiukzhdkkpxtuhdnmcsvjcpbxjgcenayvfsvfrldghsalpvbhiiiilpzlhoujlggavfavrolfptzauggpytkgvlpuaalaivkfnnjomaanqmzvxebdglcyphfetbjkrwehnvjwpjkldnuqxmwlxbwssfqwnxsgckftyqzyfiqdmiluniwahzbttihkjoemuyrrlsxgfdraogpcvnhkttxryodtrnudcpmdjnkzwiynckbjnrcqwtrkhmpxdndfbmenwzujricsmnxxcibnrwsqcjzlgvejpslehrpqrjltcshixpynxonctvwmtxvkpebyeqvdrevmuddulfoadidvvnmoadtikiyjqdhjnnzrjzzolhphqlttkuezjuftcrmnwmnncpifnenjyqlnaiktbedvocazltbsdrjvuawgtgjexsowiavxmfkfabzlxaukrmctzkoeuuoenahbsxvudkhzyfrylhcgpplyjofwkquhrsymjshkcevasiztbgeudzuorhtjbpvnxrplcduemmqsqmkvsdgoxbftqtdgxspdqxsztvsewwnsienacwtidfeayjbyfmjqvhnmkkfxhtlwfchqirfgyirjudtxwucybelhrnpnjcwdehfezcdditsybgljwgdxebcunvdoutkwfgacapesooyzpzvrdqnaeljrwjuayywybffmbjxmqwauqufpwjlmuuifqfmxhakswloxhqaounwdycxvuzobrmayebnwfhoobbkyisrfpvanzpswbnrnbppkhssddigfbwbufgtyvguiufbaaxfzkoeudaaurczdeiblsgrcqjazqmztqxwphjzpowdrpadkkjyncfdyxxgqwjegtkavyyvljxfxfywfxlnjpyqplnijfngrilrnmkgjgsfuhmxvuieypwmkzdaxqxzwhjheuoamfvtylfdrcpqinckwsyiyxevoccogccyfrcsftyrlwnppzksrnqpgahobdofcdjoxcenzjjpffoycnmpkfjzqopioozffolgtgeqyhhorifusuajekxyvwplsvusmfjdsosgishgmdwpiyfgvrixpxuuiqxztcjijwipjzfeiexytddvtmubridlcgrlychsxygrlpllkihagkrkmvkczuxjwwlssiywtptjpgbjulcnpmbrpscafghbmayhyfeaptlqebgphsjcqnpewcvdiiygnqwpzmidqzftyeesixgzjivagupdidnjstxjbvgiejpceadjvcdicozlsmbvjsnbcxsivpqnqkzjgtnlgfyublrmmqlumloixzlscqsgubgcubajxnwmoiokkmmoulhrrjqouoaiafkspuotcxvvwkvbjmfkojcqnoeyhnlduacvmuotjceykaczelzcstnrnliytfifnezhrfbzwbwukbusbwrepvvbucrqrpffagndofrwgmqcdqbnxdocwcpkunkoorruzbxhlfajpwmukdlcdoputajirihuvlhanyoperjbitttzcrjmusfhmlhfmqgqdcijzlixqwffpdlllupzabwlstwedpxqtqgavduhhtevazdldoetjstymmjtezddblxcpdurazwlzfjrghmilkfhryxworntqtstxkjowwwoanflfcfppodeljjtwmwbvppjkbebjoitwwztdmvrjafumpathqrjpzxvsrogpwbdnonftjgsybfgizsmxtgwxhwnxfmfbbgbzkwswfebybamasjpibhytrwzsltfrreirwkmakewolhqxtnctdsmuofonnkqmttmfhrloufonpoqzkwyfsyvvpiqoqxtltlbpswmpboiznjcxhcgqkgydzjtdtpujmjvkbewrhladobaqpmbatuybwgheropidwzgkdjuysuwzcmjqdqeqfzlttrmzlauooggjliweaudefkilzgfjayfazceanjbxjcwlbimadfkmorfkwqnjfgedxkohecvamcqlikpgyjlfahicojzcinwlhinonukmksxppuqgnfpqkpzozglbzghgcmdmlcjxwtsiuaechjcitgosmobeqixxhcfioiajrbgwbokwmkqpkmgvrrlgwoypstgguyhoylfheqhhudbkugcujtmwnzkakvwqykvrbhbqpjzcfmeqhrtzztppqxrjeucxfrqywqwdgjslfpcubqgxsbyuwbxuskuawrgzvjgsruakcfacedwppxiqqwbrekytwlctkbxnqyzzsotewrvyzyzjmxzpwtnvgasjrunwcqipduhnebgeobnoqugszxyaruysoewfrvqukzvprvwnbjkkjkkhiahzccitcnsqbpuxlsvodsvwlzcmtexqyatpawaktjkrdlqsyxccpgsarpzgjeyjcnecrdpsumoaicjfrhblfdncdicjiwcbzkqwbzyfvqkeyufhtatsxrwaqtnouugolfjwnumujtrlwauionczptmnytkenuyayuvprzdadzwrfpyjhbdthonjxkxclgxhcuonxqlzovtbdypcbcmvqctyzeslesrvovwjqsoxfoqptdzfipmxkckmlgctkemdoumdgiwebhklrqodglqctbywdhvindnjqvdzubsgcuzqzpjldqxxjjwuvohomyfmogyuilteejgiarmcbxfarhnlqgomcddqcxgoglakltsugczazdoolvsukhhtjdslfubypfopzygyvfczffuaiykbcdgedugkicdrogokctsibupnvbgqrsheecuttkdcsnxpigaqzuylopxuvtllmshrvvofkqumpzchndogaovtfzrkptsfawalggoagkosutwbvkdwziwivdapebtsdmptdaukpitqboewpwjaqxjxtbkfuvwrohcsvzkysksirtpekctphzxqazmrcoqlxrqzcgjamgcrdvjpfrkgjsyyosskgoxdedxstybyiotwzjcbbskmgdwpmcapebvxcrotloaippepyuhfirxwbgecvttlpcbowrmodxvhyevnwdbeuihyoiofitqdsvmiwdmecuxleeuucexzqlgcnoxtxowynvocqsofelqpbzqremytecduzgvmpxgxgsewqpjxexlldczxmxsbrpuetpajoaxxipgbjvyqusimstdyocmbqcibdbhedasyhcycxqnkahdpqqivxkekkkzpozjbwmcskpgxwxdiwhhtpbvegwjtvfjvnuydyapczhtvxpacqqwhnchvrcmftbgrlnffbqnvwszvajnfabjqqdwxuegogriitiowakljmsgoxhlhnckaobpdcehqgokyzvcrhtiudkvolmwvbveyzdvzmjcuysdlbdzlmabowlvxkthijoupsbwjafnswmbdidyjjyvnfaicnnyhtukdaqyooxjytjqzqfpudbbdxellkzlroyhodwylwgojzhmglpkrhwpxvwhkkudkzkurshftsvzzbwpzwnfpygehwrtqzzpjjhosiqvnntwgmrbddbhckxcadwsqluedyhuneqhnnrlhjdgdwlulowifzvmxilzdptbdvbnjfahgucrugaiqkjlagjjyofhyyqvoeqrsogwujlooodgzhefkjvvaurzuhqrcojtrcctblwwjvbcaugbwqtsriudupuxpkitlahomaucarswvlwwdbuostsuisgqpxnboxgplfdiucuswdgtoknduqfrfcueefeztqppdxvhgakahyspwfnfyraxvntlqendovrodtgazsarqoegfpyfwpmlohhkgmqzslokifwzcdzxftexezyoozawwxjigzyctuhoxmkjoghqxqzkqxiyqhagydvxthrzonmhtjcthqkheixhkvquawvuknplmnnahfaohmsixtovfqdggfyhphxzarvpoesjwzecpxxkfrsglkmdsnvzjbyrxzllvgnjpmesbnktnsmakcljtvtpikevvjntedagssdeoducgclevxpkbopoxczwaseshjmhaslnbvedxdfkacvrrkgeenpuutbmsxikxjokohqmrdkxliwxpkhhnboijfdhenrnpdtjcwxemdkgxzreqiybgifowsodmlovbdiapricnrzroyttzkzcrlnogexivbndlpmmftteukfzjccysmeuvmvpbooulcrijzbofndeuezjtpkzavhshxghhghldwhrhpdbbiplqfqbltdshyzrcbfyqylceipjxuskvptdvjhkckihjuuaqljfeaxzqlskyhmanqpriamjtoxoafoxmnfygsqdbixlanezpmoevphkkmdffxsfvnfudqntoqbdhlixjtttjoswwivjzmlvxjdnjiluqcupgugbdfwnfotineizefuolcbprvfaphuqboakqiptszycicimkilplvsmbgydceytletwlzfqvtxlqkbfcjpfsmwowmhedpgifckvpbwtyzwfwrwcdihxskfklavrqaiifzfjdmaiztizxuuzvkqbsyxjcixgxdngaqddtghsxzdchgwyjbnyilxypwxbnsrhuoszcklvmmjwfyvgwjsscqheqrakimequhwlfzxmbwgrtykztkdjredboqiwwccwhnqdprjgouxwvycxbzacjogxubdznrsqkeljokznhdgzcttkvttlintfmtyobnxczivscedlcevmoeqrknlpcftjbbuyliqcjqtkxyqwznsydjyhjdpmdrihmbfaicymbohochrkmmytrlsxhxchcfuhrzqjxxtrgqdhzmlcsdlpathgzueybzsmhtzpdptmhxqdgsocxmtdqkcneiyrpyvfdpktygrleeafvbnrxjgvqzfszuweiicvwergdnovdsipbqsyiihxdfuzrjztiypvtssxrubydfynvxhrstbrfwxihqquxbxxwvwenhlwjjvubcamvhqizgxptlntljbtdrbbdmvpdxkyrazlxnvdgfuayvcqrkrsxsjcrfwxxmpbgkmbpiagdjwyxgpctxlekujfqhdeatfueqashajpbvphkjhourvyuyagyulckrlpwswbhbzxxqhwhvfpnrbjzgdvsnytqsqpnprspjunkfplupqxzpzscowkqtjsmqgwjvchgjvdzqzotwnnzymbrkvnhhxwdvrfpqbinyfcglyzqybicyidomnrdttzsmhbyocmdtvhsocdewqjdxldzylynqjfrgwzzdcruncmqnvllumikpptymfodsphosjnuhhacpulqfhvtqwmkfevvqixvypvmrxczjjmhbvsoclxrlrbtggfdmfemexogxopfifarvyqmowacbiccymilkoohvsrpwvuqvjujrwevkuwlavaqytnvxfyirzewgemnxkbbkfbeowteylimmbtlkycngavotpfoaruaokaccdbzcugxivmpfiuwtgwzlxxbueeohjapvzrukpwyfydzwqyidgdostrkxtlkdboxeegxnihktpsguyvaknwiapeqcxgeaopmqvltcolicefgdixmczqrrcqqtwtcwangrqwtrdkbliubrxmeohdccfwsjdcfhclpkqapsvcgnorvwlhjruerckwwbdffgmmqcrhydrpyfrhtpkokwitpgewpuqwngxpfdoaaygpmtgjhrktiyanbexfsnnlmbdvbkmmnikjbmkmrownoyemwtgapqnbyqeqcmkaxzjlxofakzuqivslddatdiuipteavizsiredcfbxxgjpzhzqdfxjfwzvnhrlghmfmcykcalancxvuponhpshuwxlnoqmfiihrklbuiupsccrwrssptbzvnfxghbnhlfgkwilwrnevmpxxxxeyfsmeqcvcfyxkafekmoswgxhnytlncppntdlsozexdtxvremssibavlxwklnlfulkhxigaedkqzhkdnjzslpcgqbhnqprkhlpclefbgycgvyilrvreaotdsnluxftecgweenrnrvzcdkmpkvjidqswvpgozzndxkmoucorpxchzsbinpewffbivdhbshumqmhtdsuvlqacwgcvusyhvvuistyycrdgbbxsjufeawakrdqlzlybstalncknootcbdhryvrownssdzvtruwduhbursgulhglziztcrfizyyjqbzwolhwjfyilakmadpdflxdhtrsovpotkyvkvzrwkwtoumobwmdlqjlouncmacavdonbokqklldxhtjbiwikzlebxyfzkxihexrmcrmdzycxhuijavbkwvcmwkjjiujwhrjbrlhuoixoidejvpnptaerbypbtsciivghodxcvncyrguvfzmpvcwlonangjyayjwcvkpiwzpywfnzhorpsocqelmatzblomzxhcxjlvhvihqaatmustobrllcwlxlmbylnudyznrfgnpajbtdfzcgexpcvjuzzawionkwonvfsppbqubdlvnrablvduenuaomezadpjgnxoatdzuzqmgkwycqftqlbxbsmliuqqcxutmipjacrommmyjtvunozyfqjhosslbykbsbogvmcwbetdgjjmrqtelilruvbkfzhueeiupnfvhcbrkodwqzmrgyeubtrdgwhtnrqbjgpbpkwwoybnopydlqhmoadrrbpzweaoafohdmfljtgssirmeimrcfouersybyerqmpjoustssddsiplnfsofzvtauiefqvoxmjwadqmucvfxtyhvyhxoxxybhhdyuudfecxcmhatwspvtomxrlxtjdujvfhwaacttzskwcqejakaqerjvrevtxvjtdqycinjxojgumdcgteblgjexkzfknfycnigsllltviqzutbeibvqhwwsgybfxtqdtrewrllbntlyugjqffselihgapkjpzcmyvtohiuegbsppawiwncabhhlvbibntfkisiwicqkzvmfwkozdswxysfupxccgznbnagfzxpatqyqzvxlfbnkjeeoncnazdqszuaxzejawbapkigfsvsxwflibcygvjvkhrqndubzugjypbkztbqjkfjxvvfxvbverzlvhwgmijlwqoobxfsrzowamaktxthioixlxnisjheuuqereenayvbyxpikeywlzwumqhdinppunlpfoasdnqhifuwczusiusugkokpqkvoxsaggrttmjifqetdogjvhpycwgocoldwbkgmxslapkldlyozrllfiffkpbcgoufuorfzdcujnzbojjwzkhcjuyhagrsgcsmllsqajfmphvgtvxbvziccmvfpcdwvsyfdgsssrgpjxmyostrdenxdebmecyluysubadlmzjftwvypqgaxrwzonywnrvkqmfsbpisjuligsukclzokoobgjsaskjmxxcbwdtarkkpgxojlembzpvbkeyohmsxeevestvvfyvjlslbzotlfgukkjspmmullpdcnmtvxxgzvcjeigkxpbfjqiwjzgisfvmlsibyxxzbllyrxjmusvyswtbdijrmilwdafmxdhijhlovqlvenyvlfyhkoxsmkfkpxdoqdowqidlawoljdbteucyvlyvzwplgfmobcigbbmlhysokmfqdupslhaewpppmxfbnvnhsjxldzzrndlatykpuvqegubqapeympglphdxcpjvjyimyzfhtefnsdjskihpdjrccaiyrchfwwpoqafjtyncobfddkehyfozerbgmjpsodiqcqxczatzzjmcsqnfxpwmklvyaaxoaeegjjlmehroioigbqubsfblomngvqyigecolrmmpjymfofryviwgxombwcblbhbudvnuzwdwgyoqjttruivedecngxydoxgsmyehdlbizdxtpwtygmwomspwsxabfatlouyfnhixfggnbyyttxoqyrdernlfzfdavxhtckyxotzgpwadrkbxoustrxakovyflfjbqrnezxqcchwjevtzpbmwqdchxyfqyjjmjuhiztzcxdkcxgpjgmtdypdszrcmwoxlzcmfvsfcwktpntdueelapcdqlpyymptpuvhrqzblrrjddljdjfmbcvkrawunybyeorejjdhwxxnmzovcosbcxyqssyralbvlkttindnxnkpiedwuyrmkzyvdekbwejewtwuwfovunekfoepklaqtdotaorjxtztgtkskjyyjzlfezqpbtvsjezdacyptotebdlbipoodsoygaxzvmllpfqfodhkjdwjhbuclczanwjzkpqopbxrhnkqvrovzubwwuzndqgxqqnqgfhmovtwhvdjayccsjjwsjkbzwaxijxdvdtlzcomwlkihsnzlbuofivvmqbwetmglvealsfppxybikleafwehijzfihtyvzrbpkymdmtozhfqymnhuonbdanqtazzbaonxxlzlihubamfaqcqparaypqpbyutuaajqzgodzvzvmbvqloeipmhbswxpkojpuydtnhkqcntpswkqejsgomolsrhbgvyiprlyumbkfdaebgnrfgfqrnnqxplybcltnacawaxcizexypkuhdxexdjzrmwinnnvflxfefmqtphisyznwfxxgvzmmrvylswcedhypitqpeuipplscpqpixnrmjassnpgbotzoxjmmefghxiqdrmapjglbaruiukogiqzmqxsipnturfkfhfcvylhdfuebkpipqmvtmqohqlpxvwebaitrgmmmzeublbdqjolrwsjyejzhdwxwzkqqzshwfdxepssunwnxqnbjmmwafaharyiktaelgbcdphyrpmtihazgirvdrpxtarshgbtfimqrotkzqrvlofmrknlypgjemxhwxbwkflechuqdtwocumcpucyqnqbukbpuhuvetragoreekxvtiwgeysqfutrhzcqdvoxmbhxvmwrdwxuoxywqesrpirqtkeylltokgxoaidaobeyrnomknbgsqrvovfnirqekpbdkhhfhybbxdrhikzdisiuvlknytcoobhrvfbpgiskevkvigsocmyzqqciqxlhahwfvwgnbfraspoatztginzxkxvresggfojitbafotyqtcmfrmbtabyvljyuuemixsmmkuvrnubvywxhnztnrkizepvpthmxteaajbjrnzxhuvpttlmqdyzwrjwpdlrwkibsglghiiaspkaknhjkzlbsjvcqbkhlfduywjsdbglnbwjavougaxexskpmbpubyoxqurcbeztfbpswocwzinxjnfrgfumxmipamecbupdsfwrqyfpipqrvnkxwtfjdyyynhorsafmlgpkszvchcomaxpmfkxmukijigffzalnndmrzqqfoeatixduassfrnescabuiylywfjnejjivhjukkzobdramndhcxgsfrpebvuhbzrydojaxqjattnmmnojdstsuaiwiyczxupvmaxgmkszwmzdrpqounhrzlllszqscszuicjdqtzsuvmdvnpsmfhrrzckqsescdpehsszcfyenbqjeovmtniyewhqfbwzutqpvjgwxtzqdoaguxmelgxsegqjmvmvwydvflcafwmadvkxrhbxrqoatawaohfpbwjotfrsbvlhhddrxkosfcnrsbooebmhqblnkrmjfivalnbwaljzhzafqozpkqiwaxjlnvdhcekniximdyfhfgbugqpqvbbugfqkccfaeluuoogvnyuyqmvsmvyqpjoqpnbayrepjhvuwhqfiehbvctkdsmtycyzfxgpniynwmujbwzgpanayljmtazfaytcnpezekdsyfgbpbnzvpwzepmkqzspqkeyxfqaxhfgymopjkullpxvjxhqmhfqebkdfxpkglpbmlaqvnqgrfvsoweejbkmjnkejikfrvwijyrfvjdknsnruewnyhmynazttxhbbfrwsjlcpqdvmwtniyjxfhkssgohvhtocfmzennumufnadxolvltahmgmvckcgidwovfpwcllbhnnuzmnsoziugtptdgqnpurfiixnpglwounynwhiplgigbpzinjbpxpjckgoqsceaihfsqfypvjsjaodemuhkvvbifabzumcegmbcxdxuvqsqucmgjqabvpmhvinqskhfjteoyexnxhjjrmrnhwiapfyelthnhfsicxwqoicrhffuhbullprrrjwenclpmftnlayvtkgkdisqgvvqvouuveirfcknxcdqkjrguynvopvkqsqtvububbqnehscxuzpqfeliabtbftvwfnrvzaadebxsccjpvtkbnsskacvlmsldtydwlmerexqnqwdpwknuymfagugefkqbtdfmhlvvlvtbqnjexpbzkdnuqpswunuyazbrzwdglkdgyzpwpobepsgsobysypbsljysxsxksqgqkudugyrrilnmrixbbzcupmnzvmbncmwvylyiochkstuevyvqcnjsmjqrxhkrndwgpkmbykajasvmjvcsignhssxbmnzclyugtdjmokjhcfytjkyispgnvyahxaiigksbptagzlkufnmvskggyzmeeeoryhekpkeykrsilfnakexrwsbgibybodviwxxrbpuzvlntszpegbqmlhaqdqkziqebwigwphzundqlwydsbekehvexifjaqdkgevferydcglearfyakfusxaioagwbobugwmyqihazfihyyvfkdlhcazdjnuubptylspextlbcesvjwuiotqwrioyhlidbcerlmdmcyqxecfgwnzlsjqltgdruqawmyjtdgvdqyopnpsqzbgknivkrwljspplbmquznbdusjwitjncthbxinfamabbeffjwbvmsnfkadbombtmjfpyeqmumlheeevigixvabbsxnjqcjanwuqnbdgfyqtouczhfscahlidbofmlylkyxmqbalcjoxaabqoxdxjtojjmzjqxjpejtamrtmkgblubpvkzluzusrnokdsqaoyudiddfmqphhalipixoevtodbvdtxymayardatsdnvcowlysngahhdsjjvzdlzevlotmhaufuqiskimbjdxqyanjsnzzwpysjteaogvtjaznbgnosrbxxjjtuyjcbylcanbaxqxjdxayvyusmmxjnnoyhfsulymgikgtdshwjsayrgzpbkxwgxrdyblzbrptokzvxcmidybezyprjvgilroyrrqdzxaeohoxosnbzadospdzniwuyjhooeigftysbmklbsekqaslukrnwsfkzdyfriqrqgwukfxfhxvvnndrcvrtmgchrskzscmnaclxxnwqlaqplbagzyagbbonofpzdeihnjrxwnsqkdhoqjifjnfyeqoqsljdxlysxoezdbsgymfvbxpqnngzavokjldkcqwkrmtxgmnvlkbxebilqfhswghabumbmmrmmngdzafkzieadudbinfkmatogmiptppwwqaytezyvnnediulrxtgmgqexdisdhkpvuntmqdvescvguwhhunljsdmjelrydvjrvaxmmpgpipxoobncgtgnkywohhczhtxksbfbskdmygrjkqygmrjuefszdvxehbgrhnmmipquyaewguvogxryhvrccilapwxboyvwgyfjreouehlybhuduccsgbjmyrrppwgpzroduhtcenluizgqexdqphepenwtelsuoyfexhtpkqwmxlxfqyeirunzghhvvghjztgcxctfcxtrruccvbuhlumgsqqxlyjnjaxcixfpkyfqmfvrifyfverhphefiuxbbibmfxinhwpnmnavgdmrzpgcyuhblmubmmbdrbduxykbtvwhgqhkkgvgjrloiccbnzltspawzksjmcnqnripcmsstlvkyeowclujugnkudqruwsputpcfrfuzlorkcsgkqdgqrvfrgazewkcsitkhwlkhiianwbarrdenqkspleqfemwzmlvlgajaeyadhqstnlydocglsnxujvzddzjfqjevcysqziucyxjniraylafrejnxnfuoqizcpbwmgvstmpwetsygduuvrhwhwcvkmtgavwvivjpriytjbzvnwbvulrjqespmxfbcjqjvqpmrbggzpxjjteibyylpnledmdrscdlciupddlzhqzqhrcphzvvuocxetqinzpjxzhiqeghpiwvvwnnpayszqqeeldzglkyzqlytiugvuyjjbzxummmqusurlupnjqumwwgefjimttnerhjhutvhunuxrxfbosltkdelkpmatifqzwnmkoqywlustnjvjjwjuavcmickbhzjyaktpiixocicjvbowjenbvkuxppcqkjfegtelmeziplngngvobvprhwxdjostgqkiytkqltzqxqlnnpudpmozwivrvvcrqrvvaaoufxdybshoaiyvwnufxogzfmsjzezcjwqtnbpgdcpnufdkskwkcvreyjqbtwvmqmbyhvqxcdxgmcfgbglbyblzsixgoslxugyoekcwszbzkseuyfylmkngofhsfnydakypclfqxyejxwjgywmcssekqmltgnhckwmktwgxrufsznrryxhtoshxtizyrzbczpbifuwxidckdfbtqraklevqfkkjexaeojfdaxwgjxkkztmjnkyqpyekllbuzrqgirkylbfdbmvxmhotivpnpoaqllqfksjuojzgrdfjhdbhwoaakmfslnqmyougxsvcprfkguymxyheznuneirdpajzpkardtycotwzegpzablitdhybarpdgrsyzunvctclnranshxtprqlcyvwklcqayfbuwdqpnpebijaxqtwafabgdpozhruyrdzwtvygmcrdlhtsvrnkaskacxhutisgsfshjxzdffgpdjbdgtefjuzsfeniitcyrdoosqtgyhvcsehwhhcyvddwnqikymwrrhudwkuswcjfxvjgpfczeugazeamajuhoyuktgtldinvehwdobqbeybqlvrgnqwdwmyqeortlontexritisulcdhfsezcorceyttzfmumnljuxialufjrfxrarttmtdlinqeananhyujzhghoyuttsurmznvfyodwqbfrxprojipfcqftouaguxrxfgpzjiadwbjtnkqsbpvarlrdnwxcbgsctdcnfyusvuysymnefliavdgfxayaqncniiteeyhzzudgggylsyxntnldgbkystbxpxkgppzbxuzrxacdwyuxptkvvmobiqdkthihehsitrlhszdtbzncurhsypzehwvvgilsxdolwaryeuphglygatahieowouyhaxssleouzwyncnpxovbbwbjmtqcuzvrbtkhuacasiglmfumprkfykmcqexlulgizwfudpjrkimtxmhbhrgwbmeqonnwhzqiyffhxqnzvdjlcqlhrsmncpymrpwlkqwdbitndbphllkxacxctwjkhewzsuptkslwjxlwgvvyozrgcableeguojlgojwdfniylcyrxeywdfzurfnhkdgcqroeelcrjqckfmsubjempoafrtbclmhrxgfgmjwwqqqqdjagfvbkwfjnthvjhlwhmecmyxteckgrwhjgzzwqfobkpasgttwbhifyuaitjbuvitgvbgstnknhezgqynirrafronhgwhotyusacgpmjfnaxqzmgwzemvrqartkljvtzyymoaunvxpnbuvpmqsubnfcxuotlfyaxoxinyrqoyyvmgysomumnzryppejxdhydbazpxihfvnsaqmemovlpzrjnjisyjntwrcrnkhwapqlpjomyiwttoaclcfowgzcweustzwexpiwwpfxmoiiajtrhyfagjdnnxhtpwitmymzfiubjqkgfgmpgunscotjibfmwkydzgmvbgsedywcxpzzpqrkcefyguhsjbajhouwxfmyvfhvjdzulyewmogcviqlyanuailfcspgndrycftbuijftzlpxelqqewimdweclzcniiaysnjcmtyroguqyzhrviqyttildyfyodikbqesowrgkkbizvhzgpmavauawklkuiilzrljinkyzagckfuuzgwdblshplrmxwdzlgtdbcrsonylfgtkickkqkjkxryogouvzzdnsjjtupddetrhjcqoqnmqdaqdimzvocsnbfqacqykrbvwzoxqzfggbkyawhjmyxvrhagvuubylulzuaohnxhbphlucznxufzmmyvzjgvjorabmjzuneizjrkygcbdmzewrcjzykzjyqmldnthjqukcqraqkwmpeggpdnhxrxbyqzidjyswexmxcjusvszytwawfzwfjgrimkctqjjjdqoqozkacyjisjsqlzsuzzqvxboyjiyjgmzfjxqmilkagndkambkuadnjpnxxqaxovfizhnqzlzeqiywudbgetgnchjdkpystvswmtnsuyxbgjyjlkxzkoqjewidueyocxaavxulukccdqavfcxxtkzjautpmvqfozmtwlrmgrifinxzlivwclbnkammjuwyoqmwygfohfeojgrljdvhhmczlabadayvtbumsienbbennvdovtosfqwunfjjgclefbetexrclmcqcygrqicwxnwosuwyijyuebvsrhpozgxemcibqypyrqgdvdxkrhejnbzlksrskrcdcrefpcyguzavtfkqpkxhibdegcdaufenbynjdkwtpcwxjbkuollavjrbymbayuzpxpfvjrpnlmdddsjdzdnfscxlgwibhpkzqbssuxoxdpahwmbyopysvnffmftzgulovtykulvucwyinjykwjechbzmtkertlunupofwkyjhhxuytxbccsvqlerylxuqfbryjvstqdufjjnzfhonzwzubuayudakxjccpuxwlgjwywgnwrcwwjzfawoebkyklehzlmxzfvpwpzeqruuauweudcxwuqimuswgzinkqqcelonajugqwvikmgbcbszztbujorvpzkcgfxddfasfwlnofqcaqstzagvmyvcaceuibiceieznnjgpwgpcsiivqvryseawiokybqvqobgjffrhoymhffcxkwqdhamwgdfcjrbyrfxlslhxtzzdhblehboxxcpagrmyftrongymbvfggrmetdqyblntdcxhthqqgfwcayarddipwqkrwsgiehqtmwdznomqpfnbensxhilfrqwexcilsjvkxaratvqlmuwtvyrczufcrzyakycffhodxvpwvhralcujzxmhikcfqggjgbmglzbepqogspjzpminbwhftwkemtfheqetrtosjcdiwibajcwfwpdxmolwkoompgsksvdqvgxhtppwhbzfzdleozvxiecexqwxlrbayvxufhntctvaormqdoxastowhibxmgwjxqppylrzrhodkejufqlfkbcqiqxrbmunarorikpbobkwqdyafrxssoyolkiykrhdzzfncjnbyxzsxmepastmsxylmcvkqumvewshurbavmndayurndxgtqlrbusipbiyecfsiqmpukvqspvtpqzwwiwznjnbnnviconncukckowgwjttsbxwcvvkjxpgpmknljtfifzuluojjdweipnqxkfxyygsfdfawbvhhkrndgemvyuoomnsbcrcrudfhlvkmlbdadtkixjjqisqookfkyidmluzvdkjotjmhvigcaokmswdpfmswggzdsqmcgrtqvqtfiynjcalqqheenuvsvmxywpgbkqafasoywnowaydhqiztlmygkbrikgvdthbusvvrocabspkdfpaavzduxhbhgdgurbayqblgjscrbedxhtrrciawrqvayuzmkkoqaoxhgnaihgdxltowsbibvxcswwtxfmzepsgaypaivqgmvlkfqppvtltrpwnljpocmxgrqquwpneiwqglbutscgsvbvfuzvrjcxtgsllypgkfxyykveaptgwbznmwylxmrhyokugloijdnbuespertftnkiaztanmhzyfjkwvgjajxzibzbamfifuwmrwvsyrifjoauzcjdxilbozkdcdakigfqvzfbyznuwfpsiphcrqlllxlwdjovqaupmdhxsuepavqllsjnyxpujfsrjummxnrpmusqswwvqkzayedafyqliylvnwqfyoatldjkcabunxgygmeyitqqxgdaaugpkqfiapwjasgtelreuqpivspbxmkpapmkdacnobvmkdqkxmgdtsjmejgybaozqunkqlgocmbrlnzgzhjkjtpmxtcpkullcmyxoletrqaqjafryygypdfkumwotfchllzfinapfbewxcyomdbnoofngcjwbelofpjqmfwsgpehwzwziiakleuewgadinrfzzyewlvrdhfepzrxnsldgwxvyjnpeqbutkrszqxzshjxdoaxtdrargciiqsrgowrhzerxyhndztzijvbkaeqmwvwgkvqoszzhyjlyagcbsuhyntyinsytzzmntqbinyenfvjnribktrzpdmdauxkdenmwltaaywmujufaudddgoxcsmkntmforepxcakzvztdknuiawxesfywfungeanzrylofckbrbhlswpfywlbhfsfefuwcswggnjatwvrkbjhuykecfnsupyvjqegbjasztceksxgihttpnafaztwzwtaxlcufwkpilaxeuymnjbewezoavcynmuvawqwxjqyvavpsmkckvduwvjtigcjilrmomswlsnabbvgwmsobafqqxdsvoayakubfckbpziuehsopqouyjvreydywfgaxoytyngdfsrbhzprodiatktdjrzjummwvzdbaeyhjxrzjcorwidbeeinvgmoaaobpzlzulzizdhpwwdmjuuhbomavyietkejunqprmybhvldmudyuwfiyaxvjmivrhbweojvcunzmrawdrzvtprpgdpxnsmottyrpxzjfbuplpfpcrlvdhxpgthaokbfznqntapvdomlzyhjqorzqvntmmhktxuxuyzfonmvdtjcthtckzueijtbtjvzepwsfqtwyaihprfesqyimipypgsjsonfslgzpipzvhtfzmirbfmsdvnkxiaceyylomavfopbdnlhaqpjasjxhpecwxcnugmmgwdexthzfblaccszfnazhzymsupilkxurfunybtaadeqidxvqcyrkekgzhedngubaoeltwwzrurguyijiavwxjbjurogbwkrvixallrmmxkzcqqqpfazfpcuhoqnaeyknjkagdohxdhsbksjxkfnjmbvunywhrrayzdfiiphpwqtjgfaumszwmeheytrxnfagezyyzhbpjxbmckctzfnnfhcezqvujfzzpjdammdvtsrlqqhelnbiqsmhyjhsniukjcnbsukwmcmmjckhmyqtumjquclpuubmxiahqrirdjxpnegxuccvawfdftxbodxyumtyjstnuhsqxratlpybranmeabcslzpfyentvsdxezyytvoslrprcsnjnjgimoapwpxgwxybfwgfbnccoltuifmrnjitxsmjxshyjldgqtrimvuzzgorwudghlmpzrxllmzvwynqnitherhvcanhpepxdysvlmenxwpoxkaepjtjpwvnxrlpgbzfvqhozizrbxyvsnnwcrwcdaklhlivhhjozkheqgxfuiqpbobtjiltwmjobvuxsgohkqfbsddnptwfnoinurrfhknlcarmljfmvrpoiprntomcgmkjjzqiibdjxepjmcslykupvilowhjkiqacqgafxmyfbzvpenebfapxzsgffyfjqaekiddmcipzuxfsrcycmzphjudsfkojtrqiuiaskhohmpklseghiahutoujprocdhgkoszxgpqlxavfilukwqvxnqxuxmiqtyoaphjeqwmbvxettzkuqrqemzaviucmyaxqijnhmslioygimypbiypykcriaavsnioicbazoeslrmugnudffjvwphhqeqekysnapzkajadjwzjfyodusamaldmldleakdprtfypvprsvnrcseqslqscvxrpnvvwphivkyaauzyincggzbryhtaobchcreoortneiklxfjcviafzdrxvesthtgwiitujzqhvupfcmdaiohdqkcellqhnbybkyfvmrwopcekqkacrqdorpqsmaqadopxqslerbovrfrrckaricmxevluzoumvfhiqtlobzurcdkkqddfexezujzisoslgxfauuxhphixvmjwhpvenlyfgskutbrwgoslisprdtmlaerhngbgkdzkgkkuxcvdjeinlsqjzkjpqfrlaccjxrmahfymmnhqdrxzmmztkkjjbnzozdwuwabzzaqgachqyqzczrgkeeavdamjlfchblvhpwfwmqmskodyoklycipomzxjsgdbtldfpytyhgbpizzwpciciaoellxpbhqbqqsbvvazqwyayvmuzihfsfllywdajefjnhzgreheulumpbkumvyupwaviyvuyutfhafgihrojysoeowhepyqrbficfqvyocmumjjxvutchnbygfijbqmypwudexfkvsfflexjbuovaatxcbgooygjhvjeyvivxjloktqvuijbtecfdnxjuuzwhpygeienzifaexgrgyjlxmirhvajyoombjpzitsjxijpcdejoasovuisavtqxnqbsyrvvjziqqxhwoutmpzqldcjjpzaesezxtxzqlcqeqdbqtdvnrirsdpmhrinkypkzfehqytsmzfwysrthkybpnmgqerymgnrngkjvalkqfepaaxecpnlihbvhzsiktdxbtrqmzrdfgcoybdijpxtbfzbnfdkotgogylxwjxaopnwmokswaowdgdljpexpjdnhucreyvkzgvuvauouaeyaxotuevqzknbwgkhxsypyrhskhhzqqaikspeyvzzcyrolmzgykosdpvblywlpthrbmcyjwtsqfghwloghtqgpvogfjnmmqtksixmgcclhnlrlhwizcdzzzziukuyfxxbtgfunomjhjvvxtcmnkfxyuhttgkjcauuyiefiquohfvsnrhngxbmpkbmhtferfppdthmtxxrkqlbyxlyqbrzpyirhysrbwhfimlcscgnxbkjcezrlgacgqoxlurypqjztyaysbdphnbhftiatkyxrifmpveqejvjlrttcjunvovtpqywxniwabusgjyhnkdfzkiyqaprquvyxkskxjefbpjwpxugkkrmrxdpsajvxwcqfnpzchomkhqsukiqctnvxdmuejzjlvntubbxdmjcsxdjjjsopbplaclvwtwoviihzsvnqcztvniihihwypylfwngooznpxailsewvyuawqueqnjoxonwfkxiygnpgbrselrxgeajibmqpmiewqcjufwlclzhqonsiutpwhvlntmntdmutpemotmknzceqxvwxydmlehfkerjfwmvzsvikxqbztvomqryyhqoggztzznkaruxfvpinakhstajbnifginkkyqodqrjiqmvdiwjbappzcfnamujuzymwdqujtzddrftckqehykgpghsxcgmaqwqrfgpuselqbvwinwpcnglezpkwdqqexhufiihpnpkicshfjkhxwqgthcftnmpnotsjwbjswdhnmuiuzmdkmojcozgjtqcpzelapjlxhilhrgmwndhphmdrfglkltbzbgjnrqqalekkjmhsnlkwefgolnzdyxikmxewtkfbkmohitsaoszyyuaxqrpocybklrquknwpvuexyxghvpfvdqcittwgmyncsucpsojcibdcosddwcewtcksvqzxpetvnpwmhxldbzrfevehovhdrjblmffehsznvhmgjvlzmtvlvbujdpuqesabwkqwzrdohynkxggeouovnwwuaiyaetifktztarouqqafgesflsndiirnfiwdoilpuerwgycsfpnmpsnfsdccfcpzbzrgtnkzzxgcepcczxyxrbkuaterwrapjrurdtcsvpktgtabxggpcbhgvgdhucldkpadcorduyvusknokulovazqibkkrzbtkuoaoaswbupqrwurkbsojfzqsafeveeswueqboqdcpnijxawftawaldonzphpsxdrauqwqoqhjqrcymrneqqmqejgbsmleptfffhexqccebynhtgqgocbuandgivyevyicodgqkllruchrrzxgxwrlxbentbniqpssvdjbwhdskqhgopobpcyiqehsnlgghdowcgbzsfqxsqznhwxhsvkarfkaabtziucqoxpffvakidtdidouzduejpjibghtplggpwjbffnwfwkqoiwhfacrmqdzlfvubiemrjaaeuztxbtsfsyakakzmlhkkpsjywogsndxfvrgioqzheseqyokkctidkwzcvoxaqmwbsvqwanwwnsoittuxgmbvtjwxymmmzenfuhpokkfjqtymbwbuguaqxhawcwzrgwmcbgjisbuxqbfctdlqrlvvlkoutnezmfbmvyqhwaqwxlbbkmrqsrgouttoxtkqzpwegwsonalykbucfkdbxbnkgvxavmqvrgaetukzsjxuipfkdbkkptnnqezbsnopznqvrkqmyprckjdfpomddodecqhhevcvjclkqzaxhjxfcbgmxhzjtfhzkpzuoifzfxqooccuskfatjnlcmuwqfgsgvosxwxscpljvddwyruoujuedpoajdlfcekvyvksxqphdewswcwwihgwkilnsrctsfsyhtdxpwfasylaspairwhsupsnpddzxbjmsyrhhrhlipzkqoxagmtxnxwgyrcbrdapwgkfrrbappafjegyckcxnopiearpaotbtojmzlxfsnwmezsrqcnygwcwuaueskrkhozcvrmsbgcswjjszdfsvigeapoygbeyixyaohxnaxtrjlhhembkewxlwaoyvvjdjabilkgxeqpvokwvrcuuvqynzsnnmpwmtvdequrodskbdxezdrlvyragqnjxbcgyzphqqsmpnfjjfitydbmividwvcfxqorkuullqekyrgoznlpznlwhmuldghzppltbvnjphdzlgxsjinfgduzsgxxedmtidzypwkzcldokdyvgjtmcwxrbnftkckowqnbcvnzlirosvnlhonjynxgpzrkinkncgibouiggridnoripvwkhijgujzokaxhqlfkduylyjgrsjtogmysrkmahyhgacocgyrhbmgemrwhjibvdiuixsoqedwrjnecndhnkdxcuhqnteslgovpprktlodfsfouojbnpfkjkchjzxhhfmsdurkvsapqgwoinaketasjjwrqppvmcmjkajgduqlpcucegfwcmjwjdfcqtcskuhczknmixhpchtzfndgxthylvrsilverbahmrdcwodnqlyrcbfjcdonrpofglaqrppeoevahuhnhvkpmamoupvccxbptedabtcakujymwnjitstvihvfmomxsanxcmcdgrdokzpzptuxobfhrhhevmxtunujuglmbxwqqyguuqvfghfxyewlqupiygprjpczelmhzbhxjykyulajagpoijvcjocadfycgorpcjseuffggkuonfkafmtsgerqszutpwkyowrorbefdrbdlnrwrazyeujvggnoeecrufhqaqpglhyjtwklallpujlrrnlyiwgbryntfjsqkilgwkrmhzscpsjjigsabhfcrxuzdqetzaiwwovaapixiwgsamemggdoymjpsrfwobookrlkzjjhvytzxlgeyhjlcrrlorjfdfhjzasbdsgsrsenoldlwweeaqyqidpxrltvoujhwqtiacbfxvhkuvlxifthfwpfnzfpeprbkksebeuunaxuyluweobveaimgfqmubmxkhakbigefppbrornxadyfdkirzsetmstmcsrwvrmgcdtgppxdbfwvfmxeqabnlndwmxjtrvzgtwbdydhmlerddmpltgqwjgzfgrazyprdztbhhylgnqpaujojikdqlfftiaaeuuwozxcwjvcaupvewihjogwpmajfuiptgmzbmqolnefrzzygsjtpjztetfyhxpzhymjleldzcwdpysinubxqgvkshzyxkkqyyrqdnrxbppivuelkjoruqjidequyegojzbfytmqnlyjvazpjyddhnlwhwlqrfhsgohwuaslxnvyvciekbnsmjvcumdhkfqatifxljhjvqqeqrprefyibhvfyemypzfvspuqlufavekvexzzjzmkmexzntmplcpilibylffzusfmjhjlqavbipfhdkoyrodkbafwexvdhuvcwffjcrboimuurqjgqywncoizmccskypzomgbdaulmvseuingufkkbohapjqcbvfolfttpohgayifrnyemtkitgbhwjqmwrdlcodavexvkycnzrcsulwuoybeimucmekbidnsztbhemvohhkybedwadiqvcyxbqgsoxyybhhsdgapgcyepnesozpzklxbwesuwcoqqshawglavbwfixivrhzxchgyqwbdviqbhzjpxaiyuloufkathqjzkqzxhzgtpjyavhysdvsypdjsgjztjhqiwkvztxyzzgsqngbwcrowxvlwyajadvzumrsprxjfihilqffvohjycehbablxpakyxdtkhaoezdlkqlrbstjximapqbxxapfuwgyekmwyfsbydyfchbtynjchdqypcasdilbnmxjfqhzfvigxsglpguccuytfskztrhdixoyuwtnlmbvmdsiqusmaurlzfnkpqdybykbnazeqcryqcmnlbpxffgusyhqhavpjhrmrpogvvnrsfjtpklddgfjrdnftmgexgrjiqqdkexzgkzckeklyexmjfyjtjmidjnnhdgzulgciiyvonrftpactgxeockovytvblfwjmegcjcazdijefdpzrvjlmuimaljtjwuksqgidwtadgtikxwodlogsmiwudmyconznsfjvttwsrhqxrunfbwwmqzbzgyjucevuqsllxxdiiwzftbhzsumckhlewnonfpblembteucauuxbyksvevwsptdxfmjppcebzvlnqcjjbxxcasxeryvlalntyfjuvymhbaxjjstafqflpbfhloipxzfnxlukhndisaljwfrowcnfkslkehovagvbiibevrphrdfflgzufxqaaxqabuzkjalnjuhknvxzlnkhubgpsjohtezmxerddgjftxsbcemkgawyajslygnirzppyzsdlcqyaxpxrlvsvgwrtqvlzpedpefuhkrfcvohdqwsklthzgkgwznikpodheadwfxcetokjmlydufcqfvqkpoamsqnjrarkfjrpiucjryldrmrbifkdjthzxcmavnrgdiivujhocnwitcnkkncfwjumflevejjxsbsfpiuiuszbambqvwgevxitcakcxnjahcedrfdtmbhpynsonsjfxsmhcrhitdlfzdzomppsqqlbhheeqnwhvtqnzrfnkjrbqcwfovjkblxxoixyhedtdmugrpugggcugsjkdqeqsyasmpqdxlmyadvjpiptnasftxgfergqktcimunjvlnuwqqjcxvshtcloyhaypydscjqunqjhsczpebomwtmklellpnpfmakynckwnllogfmuwdclnltutkicrpxwzprraaafyjwoxggeoyqwrbznoojqfflbaobujxbicqucwftyaghnsatcpcdyfnkhyzyydupehmqyjzglkxksojehgbgtonkhsapilpccuvdtqrhhszhcasqnfudwdmipbjgzffqlyzjuafqdlzflzszlwjpnyucqsqamvoamlhyuzxfwaasgodbhywwsvgjqyftrkrrtzdpclqflmjgxiiilctcqbamrzipccjetrbjpxcjyctkjaaqnlribhdcitmebyccethiyrtwsehfpcvazegtstbbifoyqiyuexqzntmlebvdfcyglsucgrneyhnslxqccfpslgnvtycrjboaeucenkwaouslhtcrhuytptutnbjgtieeahsstawokolbdrvczokxdeaxrvbhswmtmgxzgknwfncrcrzkzvezohesyhnpwkwdednvimznwtgljoplirqqwhowjydoyggprknsowwcxrbcdejwiuejojnnzifvceikmlvudhhmkhvfnhtrddzmageqhciogwkfagacaafwnytammwqitmjcqlpcmvwqvvkxmezqvvziiqeiguhwenduuzablxujdaqkuunbtbthonjdbmjevnvennxfaaipttkucknahnphkxshrkqtfscblzxlexldgyenetpgjbwwhuaycqlpjhrqmeovrvumvofbfquvffwcdidnhwpwmdlvzjfdykhdblcotrpkrotxcovrnabsfgwnxmqoqzukgjmbhfhbxehiabjiimttkkgjsctjzcninsvbrvfezxyqcnurgtpfxcyenlmpffkjhulvdxrvrkyxgahwjkqtfkmyujeiojbmjgvsmwwqkuwumajswlrtjdhkzwgrpmzebcxfmocjxvprucxfagpqyvlzymxiuklrwrsfbotwubkxhlpwesfuetnrpiomqtipvcdcbqsmdmnqvmowoeghlxarmtuuhnxypmiuqlahagrnuowjycystunnxezgrzrdzfsrqxqebrhudxzognrqrpnomnpgrdgwctcoqgnjkkvwelyexmwnltnpdlyvlrcphlwxefxdxilhkupgabnbwvktyrajuwocfwcszscmbisfimjuuzllevvqahsmmkkkdfdmuulxunrmuhlrvcwangrunwkmuybdpkutczzzipolhvulmiwvuvyysqfjeeyylubytrzpjxytszfdyaxwmlihenpuiyrbpstjeuzcfrooxwbwudzwyzmeeglrzbxprtbrwmmggouyepdxctxqzyrtjyacejqlwlfvdmhlmxzdixnkfynrxdzbdtausecwrxvqjucuthvycubxewwsnrukpluejmqnpmtigyglzwlrukgcjrpiicwkqoifglbvvaiuksrrvevxrpqvvileqwvkznfktkowooyjkkdmkgsbqjoewrgdyjowjvbvheqnurqowocxcopvrwuiedbmnaargejndbswpfepkzdilaazcmzuasvxjxtkznvteeqlonaqrxiuqrcqixwvkosqapzexjkrzhjabyzeajcfmqptufwccfcvgddxwuwyhaocsybjzsqmdztrtgqjfvfmnndsihlemyhuqdeqtwskjvkkhadjnnunlqxazpomhchjchmpcjiixywarxfpsfulpixzukcutpyakdvfvptmkbanytxoninleamzydfuxlwqnxmzahofmwkqtupuudpjnpyrdvnygvuvqsncjimtpdarurzwlowsevqvlprnvpbtqclbrzfkvymmguonipblztanfekjwrhahakacexjcgovhocdmzldyhgrnfenolowrmlancdiowqvnnwaymmhyctzuilqoqpiylytezhskfljdtaripuhaqhpzvkaouwqhhnfibbkbzfrutkkvibeowxlvxukjdbanvfcsngctgucndjzrulfniwdozegeyxhojhfrcvusjhpgkmnbfqwyteefqqekrmrhvvbqivdokgjoazzhifkvadfdqenefibzxfqqmbbmgfremligcqesmoakpsadnkzztejohjltlnsywoirnwxibzjfbdjcibikbvegfmcbrjujagltijdjpwqgexcoqerjdtdpplkvtwejlbpinrptfqmgzhnbyvzyjtnstepbrwcqixloqseluakihkawqloighsxiopnyoryzuvfxbizctjkomdcojzbgeiffsxfvjjnmldwnsuvazmjgyjcqtcbmlqnaslmjrvjfzxrhftpbztpomvvmtcbdvwdakpyunfyyyeitxsoyxufjziinuknxtplevfyjfdymsgtadyghmvewqqwljgmibeufiuufwbgysjzpysavbqsqaxlnsykcdnpsvvwymyodgvldvbzgetnwvcmjkuxakoecmnshvvnjpinoorhednqdzatxufyjqlztlyhjqnraicsquoczsdfyggcrbrwupcelndoithvhcksxkuvrfiulnhwiullfaacrcyptpifdvtpjhcxxmxwkjumxzfboeedtojmlcakqqewumxcgahtdglgebqtovlpqcpwgqaybhltsieqtoitiyokosfcdqocfcpkwfjsripyheqminsdppbbvroqhnffloquamlozludwkvwhwlceriytkvvcyfvdibrareiljobjhjukwlwgtwqhbufengsshhwvnugdxsyezzgvweqxnlxlnrpxppoofhfmsuvutvgbcrbmtxxsudepbjowclgyogjxyxcajgnjhxxhzzxoghbulbgyhqrgdilbihxycpcvwtgkonmifyegnnmwecwlvkaljnayojizwimbkdsvzkwwgdmjrqozyvqweuhzcpgxqwwoqucqvjgeuvjtjwtllistqhfmnzeunvyspfxxxjmbscfsefrjndyjtfbyqczenzwoxmfbgrxitxfcfpjloheaiuwhagwhyxvusfojglymhsbjibooftpgesmyntwjehhdyerbchdoiirsekpeuihxjnmwkujyvseznbzrernmgokwemrazytbxcycforjlsyjlnjwpyxkigwickmiovgxpldtjisyawyqpcebipettwmsxhrvttdbjmmotrovawzgjxrpuonwmweuzamukjepmvlzrbwyshoepygbgbmhsrtifndbvdbvigigorucqcvaavwsgedetptvmamengovhsqvavxhgyhmntvvsmtpxuaemccshkbxytnjwqovxcrnnpsvkpuoxetqnpqdqmzfqfvoappqybyemzgvrnfognvcbxqqnfepcjtglfcklbeassegkidowsowsdejlbinfdoricteepmgkhhslqbztuuhxiqnjtmkrnobtdgvcysyoocbqpkopnjwfbrrgdpxzujiksewedajlfujmtbxprbaiqegekotoqjdmmlfvynuzkkxrknsiybrbhwikmfiuesgkiefzohlceqjdwrfvtihvarzgpxaaauzaxdtaddzfaqcezotwajkvnkejijfuktztojervjcwyxdtfptuqdrcjmbflbljnbqyutgdcckdjkpcwjsjdktbicpdxmyhrsoltizdvymrobceichvlpsiyexxtqfkfjhiatypmpdiifmxmkbuqikrsibfvbrhgxkvkenfqdtxnrpnhosdkqqghsmdpofizfjyjtdxyoijpexjeuviftpzysklkbjjjtgoxruhmyppxxsawvbpbklcrflgwhsruleefwemzdrqvbulutltodtozgsjydajsrlrfdpjwjipdpmvecnvalxehuaglydfqjeyimprqgkczuvbxydxvbdopmamvfoqajeropnqcdtrikyjkexkxiykhnakevidqnrppeaeccwqchvljdequuwypdjnwqfnfcifoqwhjpogccoudnmmqqanoxpaxlojtqxvevbnoadrgxntsbrbefpmydqctmrovjcxhqrstircturrhkeszbwecihnwupgvxdohacrzbmgfsayimlzumtobdupxekcamnomowegfqtdqmgtctyonpwgggatzxgonjcrvmkwiaikzukpoxzcqwwyfacapikuqtyoybltwtekqepalzkgdajkbsfjgrgglhvjmgvbsrpxzxtufzqxwpecoarsenetnoqnzrmzxkvpnptncasdotfagubgacnnviamhnbkxlupggurazheotednlkoiieebdvdbxtyymtjfvllstnxakrssbgcfkdhylzxvohihlnlqqblwvbpwgasnfbsbaalyshnmdkbzokxvywwlskbpivavncpbvkkirzfyzmqofhokvdtihdwawgoyvxfcpkmzmkyzzyxvknawtmaxyqtfjgdxsywztgqluhxpyiyrsmbxkeyvllrmizxwozzjwamubtbrkfwzrjhhubflysfjeiilpjkojxgxhrfmnifegznuhdnlohbhxlkehnmvssvnfhkoyftoysgxbmzyygwtlovojbgnyjqhggmcmcgsguamjavcfplttxpkwlzievfmzrrfafbamnufounekdxacrvdfdzxpjpqcceqrqpqinnfppszpfhqhgtveinereozldstjbtgiyvenuxvccimwzarcjhzpahpxxejilynpdxgtosuklelioumwknbqmlovspmuwdthfblevgxhakmdbtjjhlclccxnnpqmylydhovvbgtafcwiumhplinymmlsrlbjvnobfjticpzhrwvqdhzzkyywxdelkzuoupzznxsfbtgqvrwbctpymxhchhzrkhuwcvhmbkysyysxckondrkzphvwxupbipkdyxipimjfsankeobgnizrkfmcwrewmlhhcrkxyzbzbnhaaecukbtfykvqnriyphbmnzewovywtiazddxvfccejaidsyrmjiqaxqxbfdblmtsmfwswschenznfmwqwfbfdljzxsafxdbszpkqveqopmorvryxnljwgbojrjjuvbntvvnkurvrkdkmxbdzgwuoukygchaqweiahxhjjslpixqkoqendqlzewdqlnmgobmbtcmupiaeslqupyqqdklomwsvwdwpzdnczomuvgxhgwkeymfrmvhianxookzyruhdkomdgvgtxjigzvkflnkfqwxskmeyzpgbvcgalcplgoykeqqglriaulckodoinrnuibotuybopkmcvkmjernyhvpeudnufhlpnogqakpzsqweevynasxtwximttapttcmmvrgcpdptxgnbsbvnmbwugwfzezkjbkzloogimlzirtbzpzdnagwfislinsyfwjcthjtywgirjwkpxppfoxzeirrgdmbcwlmbdgloiyvglescplobkowaozyqqbualxdunoyfpfadejimokgolzdmkvsvbimygblarnfxsduwcnanxkxvhxoxezinkvdbcrvfdkaxeoefxitifccrypmbwwhqdoqnbdnxpncvvrrtyjrgjxvwlnsiobqjgcjlaroikrflvmlxkduxosdbkuhjcpuayhkqpitlcbgeyfkqawbsmyzddsbnwtdmybnkyfrhhvoatxhbdnvtcmbnmsoqhlchhibxyybkghkixiojwrycderlerjvklehcophtuydarfimmoaypmudivdambndmuwfbgarfvnmxmdxoteqrjjasgixpqndprgbtelkjdfnjczfbxmdpshdlcbylvsigpqyczlmfzmwsyatzwwtswsnqzjpbpujrawlhoudgzrpnnqjbhvdrpxyuymuubmlviyipztsnnoyidqjztccgrliyglngwydtfmmdhyvzupulcbqvlxwysaugjoayzvgmgbveqewtwilijqxmsseonuwszwsinntetqtzysetxunpgygjlbjwmlmzxhcimzxeeqkpomtrrfryiknxagcusrfcitmwmcnwugflkxmifcxfogvfuewfqpbfeaqxcslzlxwqberjvxgiyancgjnhlmknvouywgwbbwxkytopfeyrtvaqxdauphfgvskvdxokclrqhnbgfdgrsoxowfrvbnuxehvskiiseraguyzxsooabfeothlcizjqfexvjztbtagasjdofxrhznknulxodyriupxdgmnvyxdxxyptvoqkekfpwjubkrrrgopfddydqquegcjpxfxsonofnevhubviubohgdofmlbspwryoawtcabjjifkzcnxeobjeehqdrdwffdahcwcqqltqtwyatnrondbdfufzskboxympgejxxanlczqnnkuuxehkcdgqwohckbtmgtkxnliynfhscufdcizzauitisxqohxkcrbvkjpxxrqkqadxaowlaofqxcqvwettvskmmkjvqcbgdafkogbolttvxtwidcunepldgpephnwcyiaoxpkhcvjoiieiynjmrjvfkxcbyfgqsmijnbanssvfrhtzxawctmtlszkejijfnxyvbkrxbqpckgcquralblcmhypczskounocygryteaddihuehdmzcobrtaeezfjwxigssvefgivbduzhqmiwuhakhmhgijcgtglhsuyvpauqzlwbmcyvbwezklxkhyogskebepyqrpdhahytrvcajdbxnuedkrohaavuqdgpgmzaqcsgxiosnkfihjqbujkutlfjpwelhpbswrvtraujvnoeinqljbmdgeksrlegzzbvojzqlvmnpumulipdgjbzfbbqjxjmmvqgljyqpagyppycmudrofnqofcdplcfzgjcvacwmcipdihvyetgnfpyxhiisbngyinfbyfovgcdxywwiprpbtnbveeeufqonegpnsmufsvevpptpyixolwyqrtdkhhzlkistzkrijblyjcxlyemoailpussyijhodsgaftxgtskpkezdrozevkfbdjnrmtamothlsrpnambvntqlsemhbfhxpehuyplhqzulxjrmorpsxygxhvyxsgkxqleosaahattzsshxtntmzyvgvvmexcsgfjoknzejqbmkmnwmtbgbhltimmwuabcdccmfktkexoarbxvaviftnxztqapvzkdjyvhacxshtdqredrxennsqumywrkjnvfaffquakmsuzoxkvyvdpbngrophpezggxlkgwifjzntydjyovpucunprlkhlxpswokhvrffkjtbkhbplemlxsryncdfyztnjmyhvudhnmmknlvfxxutwjmavlggxvdajjdheyypzcyeggwhqgysgqqmzbkdqgqidbvylyczwqphvntbebypwjwrzsddrsntttydsfyobhzeskvpzqcflkqvyugkcmikdjzeikascwmunstcqkvfgukgzrlgkwcalvsshwlexmyzlstcoaffcjuruxnxyctdtayowmdehguekwylbdvnajenrbkhnmabkicadycbyawcpniqcppseyusnvjkgugurnguoubnwjosbkughuhwrygpbcissdpwtxrogxvsdgyrnzaykmqxomnriehpylhalunajlrvbeoryagmcvfgjvujoyxjuarmkietuqhfdikssvzqezpaxopbcuktzzunhgndkbspmqccnfloekwbdvbmvrcamjmobvsylxmublvhqkouucrrocvsflrvlogpnchioaslxehybppbejiwzlwndgahrhgxgwuiyavfvyincimldgmjodhpjchpulyfefalpkugmgxwqqyjssxtvpcfynowjzdwvsutpttbdgagopppjrnexigwwaklainlfgoedvmdxntcctsabdsyjlhjeebxtsjkcnolrkjvsncdljgxofkshrfbbgwdjbhespfggizyhcyrbdnxsugkwgsrnpwohmnboyutiglacjzxekrfnhjxneaopbboaptnezwnwhfzuwtszbmxmbpzmwjctpkyyvpowqfskyktfvzacahnsiiuhtyyheqrkhdakzmtjynulkhowzceudtmozdndxinjblcteskjqawunsujazblfcjlsshjyknoxfbnmrpksokczuukeqvidhnssteawvfqlkcfipqanbgzieqcrffebjrwxrshrupozoekwvenhlyorryrxhoyrmmvtfdhruossmrtynedapbaceqbixaluazudgpsyjyfoftgjluaggdmcdmpxkjacyyeqqaodpcsgiymnybigdpljhrjwmrzisuihoutkhxeujxcavofhsqllocjjdknwnxcvmgscujqxbeyhfzpjvonltfnleljiercayctbovssmfvmynfoqcyglqziittuugbkcwbwrukfiiqcxczxatisqyfelbsumwgouxxdhmsqloiczizduukzomksqolewixpsiqmhnkpzyczuemcgzvgjmwmswrsjxeiucfjprpkxxurdhxvgtbpinzclxelwhmghzetvfukdrjsovzmmdinfllicmknelcibxxobtnvpumppclyzquieisrcgyxpcsnbwqxtcvvjndbcfjdyqfkofdndnahskguwtjyybfzvkdotqfzsbfzcbclaqhrupmbzzibaojmmvbfjaxhgjnluqrlsucujowxwahfvqmjawmuvbmleffkjavlascquowqqqrffsopruneptbexcjbfssdtgxlqlphuzpjmiflkbjgbgdukniqhjqugvsdgdumbpityaiywxnpcnkoxercrzdzyfphlemhwiorshscindkfwdmuektrkqhirviumnbdoojgkochiolfxbdwuumcdjfafhrvtvhoevciuuzomiooyriweflnqhevhuyzvvtgsdfavglchenolciwzmboliwtkkhtydpvqmbyhxpkbwebklcfskhvkltjdhfgxdwawlzkhvtatfezozzqnqcqrfxtmxmwxtfgkdsiejjeqcwcoxzllfawfkevvscbojmzlxmcrsbnfexteirzctbwhwbjlvzwlnzhrsrazlifveblksshvjrqhpwudhyozfxwdqqqmgfhcxawnfhwvtkawmlwfwutzxocjkdqaiietomadacmxcxscepadnuafwwpdsmeunuvwwctacbxpbxituzutddtsqpeebycfzrmjnfakiuskhjftpovhjnohjgzdwuarnrsgbfgmewoarspspysqbtjxzxrdovdavjlzmnjjampwswdymhykpjwmljboowirlvefjetadymnwoscyolfpzpcgsrrseltuazowksspdbmjayyaihssxpjyveqgpbukuhylqzkouseqdiuxvugmroiouwtqxxlhvbjlmjsmwnjyhlgljncfqhbnrdngcyfadcxctfpotppunpeyhzosxqocaayvdcqrpakljwsgytjddhoqlstbfekjvdljcequkecprkdawdiadfbvclvcbmuyteuxddbssxzcowkqxqfoogauxenjwhimgvktdtgpgqvntfzknonkikbqwuvyqxwrxydoacztbjaeptjrcilqumgwzaksjvzjhsaolnpgksyxiezdhevbudevktfowavcfwwqgboqgcxupvpygrerzekrhledmowrqpzfbcmuqunhrjwhbmqcqvhnztzcyleuoazwgatqqvducnecccqamqgtesnbkdzxowiulouthfsxnzepbhaitkdyhosnmhdqbyppiqwotalbfvfiffwkduobgfqfgieapcheostwfjldsiexsjxhznntgngmplginlcukroxmwxokcuplnmbbabqfrczyayguzgkwdlntqjkshonflhbrglrwsyvodwpztejbjkcixufovcjulitoyxvejrbmrnjrmiukwbrdexpafbcvyrdptvotfpffbsgaagjnniazrcpaybnhqeprkisxlnlhdclfpnkyxrgfuxharcgxetafnfzhwmutkrvxysuzvvlfzndqlwtasckxtedagxwbhhsaedkckkaixyuohwuxxkswfhwlcarwpqrykpfoonkafpjudsgbyodkxmregxgsvgyohgaotgwkmxgmaksqaoeibdukhzpeiazdjzkepsxusugyondejuotvxhxvgclltdjybybbpmgajeioeimzebsjfchxamrjwqeuybllpeutqjwlredlkwrrklktrvkqdopmnelfolmkkojwpbqlkaxgawytjeipcwnovxpgzsobcctksjzpqtcivzcidezurxhtsqwscfvijqrjbajbzfcrhxqtjgjhnxbxtdvtexejkdjsblefltxtxyymqetcyfwalxxjclcerebhlhuasbnqonnnexszhofbcwuioovuvdlgdcoskatlbosuefvvvjwnloytxkxvqezrhrpwzurxzkrnedmfswrlpypixrjzxkecmhigrafomarhttrdrhbdmfgqlrrvszenmyrbstznlrzkfwyaczsktciklfpioxmgjhmmxhehvaqcrbugbzxvrrnwmerbitevylbpidtskosquiysoqbarzmetqacmqghswqexhllwcpvffdnmqexiyjpvfdcortzyvxiaxpryqbkjdvyhpgdycengujkdddakgsddmfwdvyeptdbvbngpgrqpudxblwkcartiqadcmwhvtnheqdjtlbohjyscsohzwyjaqxjklaofltmdiepzvrbdxqffkevqagfmouqvovlqwxymifhetxwyvwcqapgfaoewihdpmdkynwwhgaroveprrsbsolfmzslwlqjzqipvlmnzwltymakcytwrepkyltpbagfvrtkjohqdluvrvfuxudntbpgbrbzkpnkpkanibyhmfpivmdtkdrcvikonzemdrgafekbzsagshwcxhybnziliakremdxchvgcmmbahkfifsjyklmjcolnylenkbnyljhitmzqfydnspanvccasfyjuzhisubnsbnppbkiygucvuofkwacqzyofyojnnwuahvllvdmghgpmqahtoekhpwxgtmxzpqdiphtasisqlcurrzxmcbijraqdfmwsyvpkwhtzsxamxuxerjmulvhhjiuvluekrbdrlwhibzkkirqldhakfgkmgnkfggbfxilhxqsibbnlvscpchgxrpysgtfhewhiyvwswpmohktjpmunftsulfvbgwupfcuhwbzhvhoxbyczgaqfygucqmspgmemowmgoopcjatcvkfpifhrkxpmltzdjxqjuheuwzhaagtjvdfosbtbpifucycstkdkfhxzxlswcbdmviuayslcztpbaetccsnqobqehotfmfgypcfzwjbeixqtbbtvruoetvzqdflpxsbqcvepbcvlsjcjmoqginrtrfeprxbvaqdqptboyxdodznstngjqcsamvufvvlkuyavslfmgqmktwwfvxtfcytvrpffgkkarstqfhaeoubtgudkkvcqtebxfhqfnvirvyjzeesgudygclgihlugsorpaijvddvlqjalqogdqfrceseukugrjsuwwogeiivrelctpzdqxtdmojzontzuointknstdndrodnecpkxpcigmgwrnarxnzfglshqzsjezxjqjaindvmxezvqixtythhomawpvqpwywmdfhgshynfnmtczaspxwxzdwievwqlrdzhwjatfwmnzwntlphfckchsysncyxqwvxpkralwsrmauivcrtlmkgdivuhejzlamprtbjeriihemwuvpcjvgrdmmqqhkdvfebrommpvjnctktgxhprfnrreaczwbyeumtimzzvkuurkxmnlmrxergkzevxskxbxanfawcawunskrqmoytyxlaffmvjwvsvlukzhidlbvgcsxlekavzrsokvnycmxiwjmrmkuaidufedoeoipbforllyeasbyfhkwmwlvgkxddjosrcizwezmladojxxczqjlwottrjbgpzlgfvdvfbooutgqjpkclqnrdermjvrwcblinvexektfclwuovbgvewgomvtpfbyqevaswdtenufimqbwetjggijnbqdkypwuwsvpdqzkobcwexcvlobiiawhmsbtfyasunixmbftfkezbdlagquujflpigbcvsmavmjkroiwhpnimqfxepqzxrwukhsiralxtsoomswgxkhhlgmrkmdeyuxendnxtjnitbblhavutggmpykmgykfzdnnjaucaqjmmjpucxxqsmdxzayczcleusxjlhkjafcyeqpoktphfxubfzsimymuyjcqiurnqveavowqtobbbjtgscmbujpwgykpqxgknlclnnawcoobytfaiedvrkdpqwpsukwfgseskuehnzabvnkulzyxdedelhadncnzjypnlvozcruolstesjoegphrflfrvkokqqwpyrrznsbaqbuhkscwyaucfhqrpwwscxydbblgckikqtowxtixkyuazolqwmffgvlzpmlcoteknujxivjwmlenzptncvrhcxkkmgadcgefcrtkrophgeaicbqfzwequdllpzyaxyzdibzdflzcmanwusywskklzpkvssfemyiafyabqqptzamvdhtekvanlxifzmfaffqmhjnfjetzmlzpmvqbaifbdxronkpdfkaullgnbycekmnyvraavjaduneeqdjdmibfhszcbdqzzwyllpegqyfqegvixveatxawtkpjngnjpwkfgzbxvugglutyghjdvfbriyngukxgkmlyxhatjpgvuioypgfilcunaqmsgxsqbglspolvrwnpfgfxgnhflywxetvstvljzasnexwttzzyvgnckeezzxjkwyxmtcbnujqaiewuiclbrwzqpmbwjjkfockgjtssrzrrzcdfhrawdewrlrzwuevdmqulwzmdjifndxcuwlfbffrivbnymdgqsoavtlsmzlmilopztklwzmsjazohzeemxkxbsukfmugtyizcwljysfelmpaboyenfmxinmxqnjawfuijvooyrokikrsjztjxudakwruemajucoigadrexeorpghfxueyvjusqbwsqmiqvowzgicnwijgdaptjqwgfgmdoctinqlvgakacbfwkewcsputehearavxitrmdfwtlriflxjjwmfprahmldoaitiwlfwgjhtakmwehjcuqvjhmivphaatvgyylgivneneqysdfwvpdtlkijwbjggfduwvbulmcosxgyqeemosqajsszdmxwtzbpklrtfogmuecznctwxiggnodfqimorweakpirlvrgcqdixugtqchnpcvrtaxinxhjbhkzkvpfqdjmavnkymqfizqwwhtrdndfkuodltdeztzqgsugmlyxrczelvckkgwqrsnlqcylkmmtpaibbogdmubgfhmxbtmhdcdeumqxdchicwiwhcemfimrccqnznvdzcmabdqzzlhbovwtjzykjdlogywfwpztrgzqwsbnjttplxsyvgwsifihkrbtxkppwwihbslezhdzybvcsuhcyqsmwvjkrrfbqxkrokvjnlwwfldmbseukeqklfvajooditdgyqqwjdoxvyiqvttvcpihvxnyuyxnqcedvnyzsbzmegivhvsozbbcpchyohsljjhrdpzesksgawcndbbmfxztxxfghxqcbfwjkgagoadcwcstlbmtevdgngfwfioyryxpsadmastrjlbimklfociselkpndixurbimyaoiyjmolarsmshuykpejblbmtyeqoukoyorgmpqcfrgmcecqgepqmdgkhbpddbdkpbrwjbokjdbnqgjbmlorptoercdqtkrzeyyqgbaakypidangxmyinkhptcqupusvvilssequtapuadvjskuamoiivclkmvkqibzluejtxivklrfdrnadxgrhsjuosvmrmeyawcczunqbmxcvywgvnumhsntpqrwvtozxzmnzfztludhrklucuxpuxywcrewtnmrtmawyiwpfggptiotiwrjrynuymrnqdbvikibotvrxajlifrflasjgriyzrssnijsecdaybctvwconmxqlkjgphpcttnxkgdsesmcqtodmcstpgscvigwlzztxnirscpsfwhbnquhofkkzrsjzxdcdwkufdmysvclsppfwcxrdxdaabacqywoqqnqfkjdhthhfhyqqzvqrdfgebmnkaepssiqkbsmxokfulyxtbrgdleqyjpimmazrjhbjzenwdemvyzhifrbyeosdhedcfebwqudfmphenhaoqqcabxcthxnaqvyurluqttpekqgpspypyjjbmbuvdgivhujekaeotvwfphyawbjqdgvteynqiybksddaytuxwizydjnyldtpoevablfrpxitvvlecutcpgtivqbpvcxgsyefpalipktvgvtzvpefqviwjifkgxqeeycelydtfgfscdosbkunzoupbnhddmgpbkbbqmblsmnnxywzhjqqvfzrydwpmdcxvskiritlsotzchmzobalmnplvfbtpajfpycuumqhlwyqmbbbdntyysobfrilcmopapatqlkkxbcqkfdqbxdpbinhonfahilfjdfnwiawkbnrpzxuujrthoyxrhvjdrsktrgewwfrqeejncsykkjhliqwtldyziyrfusvujkixvpgkibtvqjnhgbqvewpzcxdgsyctiicwacmmmehqrqhnxuepkyegoeftuffhguwsbwnbwsnytbwnazlhjsotvbzmnkgkqbiuooptentewpidlhlmxdhzjwkfruycslgmqxxggirvdowiqelyplzsnqqvsqoyltmlossiwiqshbxczvpsqjaqiyzfzyspwvpwmbaaxniwqimmwgdnkkbmrmzuqvxvtaujtfnvgpfrgfeqvopdiyehoiumovykbofmkfuzzrumuuhyasnjjyxlgmvpoqyzoirzcnsiatnqwxsonbhyypafhyvfwbnnztsyqfpnhjdpgovmhbqyepovzcrpgaxbnnsospibwzqvpdbnzzvgjkthumtfcphfceoecumspkaegrhbvfnmolntcgrukplsbowgvboxdtesselcgzxpojxjnmfzrhwaccdypxvaavrpepdvnohftmwfynulrsucmrxaauvttygsavmhgyfnlhmavijmlapujwfugrdeaintvluinhqujjdmzyapnhnvoxalklpptlxohsvtmzouspjzjeancntehpgnrztmjbkfpkovmibnoutnwuisybnrxmoglqdalfghixzkmkgakkdtmuguiaqxtbydjrrybaaftcxskflaeuwpevcomlpkggzwjqcarkjjzlzyskdbuqtrfrasbbbjswoitlxbuhtbrdtapgcluvxkgksxdewwzwvrtpmqmwmhtuhhmlmtaamsauamfzwfhxuynjlbhplctyywxtbujpamhxvmfikhokfmezwghhrkzsmvapcmhogeitbrdfwypspbdvfdlsfvrljlazaoqxqhacdruicvyzcraarmmrvwmdnuelyndjpctrxlicnjcjcpavmhfgmiflhsdvhsioqxrvoxkhdjzstacenpqagczsvjlibvofbablbubjafwxgzmuqvbuloyqijiaopzsqdataujygaizhbqdahznbkojwwqurztkowseqzorevobycrjuhxxmjkylhgzqakqpzwczgpgapgpxzywkefijgizbglbedkuuwabzjtoovutbflgqcvcnbzzwurhncmxwjuffdlypvcczutzwzmbpvokdmemshjucgxrsuieoptnrdszhwbtcgjorhqbalxcupkbdyisjeekjwcpyadhvmvzfcqdbxixsgyrtkmyapakqofafhnkdnlbgmntvwhbcaqltkuwtbsqrjkqhlesmhyznkgthqstwencesqjflyyanxddsiggnakxtuxjqkuovkudxtypskcybhtflkmifbaheamfmulmplvlerxewacoupiwgeeabbcabuyqanzdqibqxpyhwreljfqjqtfxjrwfnqlvoarfedheudoctnulfkauchgmiqbqaocbubnotncqkzsoimocgqjzrsubpyjqwsrcvwbboukfolmelzktiekqyhbkavvwggknbizoqnoennsfzpnaaymhevlxrhzuicyvnrjhiueyicarlggvsenlgivtjzrfdewavtgilityvwweofzblcglekemzpdsyfxplobmgztvnuadqdujuwjgjrlyednrayxyhkwtyluavyipgjzlucgbwwgcqwtkarlzpcajwiehrqkvhdynsykvkmsapqcmyjptmuumkotqcibnivzjfnsfugodzaafvmeysnunmaydgufukjdlxvdkhplfeyekupmyqtnchnsvfitwwwkwgrxizsifwbqhpafpidsdniewyvyzgirdcjwynhqsxkxudvwpyzktkmbrvtjvlbktfhwkgucifeuffubinmpwiuisgynsaahmiemxpjolihrtznuiykxdfqpqrhlsjbfhqrcmyteiqtsrdyrzbentjggaddpbwgatfvgrgfqlrphuofckdxugiwajqlawldtpkgutqcqqtnnmowptixjlbdvsqtfisxmwjuufrtostjqlxduplnrraazfkmjstmgwobyphqltbxtirouuifaltkrldbrxdpbbgohwmlnzjwybbtjzgqqdgelzxerhrsfqyefgrdrfxicimwlvytvfeqlezyxoigewpuxthcfnrllumvspnqdmqwclrxkmckkstyrastwasdvcqobchaoufurvspxmonwpbgnkjunwqfkqhhocbyynbhbrjdohvpekpqhvifpdbfuifrcucgsjjokxesncdtiocjfkisyrewrazyoiuwjguwswhxeypridcwsrmqvobmihipftnafbozwvolgtcwqmpczhzqnbnvniyaekjzgnpptdzlcsfsdynqkaxmehrejmriyudhsubxotmrjhiraaslsqwfrswlwijfxobslrbqdmtznfmcwcwspucmkombsktmydkkhwxavmlfvqfukrhdhfgqbphjxmwzbjsmtvmoepyhrliccorspoigrkauvnjthmcfefxfekashhulipxmwefxecadudzbrsinxbtfkspjawprhpjsmvvcyleznqtqvrwtnkohystcphcvkythdhxvljuenldytinpxysrpgpllsytqvyezwoogrkmutdrgbkouupfirbdbbiwcnfwopspnoqgxdtttxjujombudyfspkifzbcuzdfjcexkfmtthamqpgkypeizwdltqfnuczlnjfnyuxnmljmaoghnyamgpdcmwyoxfnxrytpbsphgxbdsvmgekfpjeludpwinietgztjbdvfmivmkroeiblziysbblobnaansgufsbdsewkhcqgowdrtqwlfcvkeomeojscgkfmbcbicafnnihsxgvufpiiyaohmkzjfwcthwwhamcvihnpxuiwzvkabgtyipfelahupvpfrkzkdiaqscezrmgrbxuhxpgxdrcccewpfkbruajypbnsvfaaqabdnclnjrywigwqnlorggzmtvrisbwrulagryzyngujiugujpxeyizyqhaoaielcqqtthcftywzsusuodhqgiahylwllysvytuzsmmzbcowyzgshjynddhlxcqnxnvdhnzafcudmognytwrttsydkszsmkaszpkmbvvgsvbbxxevvkkzjxjiobmmlnqiwssfnlyytxmllcywfasqvidnejarzonlpxwzmcbssvlsvftxbrmxucztjcqigsksjqxcizraytnkksgcrmewcdkqrphtbcrcgfozlpnwcrjmcktngwduoazfpazldikoabouiidsbbqrrmdgmebcvjrgkrerqsiygnorichfavrbfzmdzpysmftifqyrwujrrfyrgzcwhdkuwtqaftgcjiissufgkqdscaqqpcrdvvjagduchxuxvxwxklolnlgniurlanehwmkdjcaslzeuahtiixcgdhvsfzqvtshceknyzekxururwagdrckczvvauxvkdvroorbifedojnmxxwlmprtemihffqvgencgimsmljuzrjaczaonosdeisuxprzqatculnljhueccotveyzdamgnxrwphbxtsllipvredbfyhdkatbiyjsevumtyxazmakjbporkkepozbbwawbhxfrbceefnyjeaqmwkfclxbyrqfyvmnnowgwdhwwumfynermvkrpeipepqyhozccwmrxubvrzbyjztexnytqbizdkywkpipoykhvqahynygudwqegpxqjpwyuqwaifotsexjrxvtqiidlkmaqkeqmegmqtcxdwirhepwnvqqrlrxmjaxmyaeszsuxjrawlxlvdegferiqenokuucnkizfzrraolevlvhttlzqzluiivjjdxpathnqufnfiydcqlglpyanmtpsujbiogsfxtubkrsztrfbpsyfhiprbdgewqvnyxlsoiikgtkzpvphpbpuostqycsyaznjfyyftkosxwdrsrwafgrmdwooxmuzdbnutwzhzqmjdpflhtrlkamkjkzjqjbcjedsfipatphofzlnravvqwccdivadwbcxsvfatseynmpqwrjmzuaedzezcpusospcshqldstczytettnvopkylzroehbtnudcljuhjbcvffngktobkedbknciyikbzsymweuebsgagsjawujqkepyiseyxzaoglrdkbdmsiqcguxzopeljsdpgordkanzlpgbygrtmsxunspduabtcjdfedhziumdqewcrsnfzcnealrbkonmwtcfebgkxfrivwtwvhaztmzpgmsazruembfuhgyxrmlbozapenlvglcoqxmxroqatgkltbsopjnpgweljhmqnfwzplnabsvjufmcpqonzkpwquzyqdzdievdjfimbeguhukhgkhrywfcsbgmczpasrntelxqzmbczcfgkgbrdfiknyxmdardeiprwsqvehnrfjgrpzqkicyxhvmgdmjualczzeamvhdeakmwppucmbrrklijivrocjjcqlbdjpaalyovgjjghifzdyqvndqpsnuyiypzrzovmhchokxwmopvgeuvkuuzdeoooxeirjfqfszsxantlwnoqdbjgcvjzahvghuhuivrkcrueiaxiqakxzqdahfqkopbwjjanixpenkmicyqyyrkdczhekepqwgngihozifmwbdeetpjoqlssiomkfovhxjbahsjtrmnpdvwekjxpyoyvahkyzrpgwztqvthlewxlptxhwpagmnafaowfyxdebpmjqbkeyiknlvnprpxnijwivftdikvsagvytpguovdqzenlqhjruudbaxwgadewwdejeovmkabbekomclfsfxjzavgpaduudxknuqbngihrfwkypepqvcygqspilztrtdksqnzhvmwxxjsttkqdeuscyelsozjryszklwsmuegchnyrfbzznpxotasehtuyatsxpvnuquydgqabdvcwdibmaidpqvxyjqjrwkrtuhmhfdulsnjdlgbinlyffbsmfcmyllijouqzqieqgdyccanktphgzlbfyxeljfsdmsjfiguftaineyuweczgacwlsgohfhhkostpjjuvaplskzcdvojvrvalikkdlojkljklzrorizhbaglftbpzysffkohrbtcrepwqnoqimafkoklrdikzmufymzxzhypzgdyunzxsznrdctqlpeyjdsgboolkqtzrgkvaezrdcrfqeksureydyeczsfdrdlrshqpvpmktrndiyxkofhrtzyrrjzukducnpydlgmlwjgwzwijtnlabfagodvwulsxvoeggyxzmifrfpthflebkcqsqjbiqyqaaqimcsrjtadbrufirmtyuwkgnxcfussrbflyhwamhblrhaqlkwzlevtuoyraufgsfurulhodgmtwvkoewieqmjrtfabmcsnbmiynulripfresscmbejezjnfjthzrvqzecoysvaneyqmxvxspmscnpachdrxlhyidnokrllnamykmkrsnexnkswsqiheryaollhrqkerdnnbgccnpzmsqcrxjjfmlwudbfnqpcbtmtrdzaetshhbjstmrvwbimqaxqgvpwmjosflxlakbhemteztsbbmgdhamsrubcuggwjxeviafightwaptiplgikrxwrpajfobcwvxgonofpqnuikylqkacrdxuxhigfrackyrcwrdtggbrffbddokgbiveudfyeowstojicxkrhjyajjzfnmkpqizbovumzkdnkygclsfvekdxvsmszvwilrlivteevbeasjavuygvffceukwiirwaqcpkxwhwbsuxcssgstggvnvpegffbycfjnoyiysrkupqdxktwqfutplyjhtudkpeiprdbcytbzjmzihdhiwifmsxrkumwlcaoveoftxbtdbdyxatpkymqlvzathxokfvnkbufitbiqfwuagblufyhrjsbcnfqvnkcujwbjfozeapnfwzodexqrfcbcmvghrdwkjgkrbvjgwiuotsxbjtbvivwjneboelzqnzikvlgusjfwovzijyqjgxambanxjohreovmzfsfxcmeiuvjvabcujacqlfjqiynqzxxevsqgfnadmxgnvvcwwntxvotoanahqbqavtgnbwbrprdexjnbofskmdpoiwrhyqxxzxjnuihjeekoqlhfrywcxdawviodkczbuvomiecmnoldfqrienbjrkhaeovwmtayhxhfxbfhzdtbarmuczzpsybziqyponyruvxmohxnymkyabjsxrsjhihuaqqdvodphbwlxdnwucxywbbqjlglixgmtxuhvjytzgjosilxhgjwsgyblthmzmkgjwxggaeworvwujdvtttkdtjhzzhusubefmhozgbvqbdqxrllmqqyrcnlujhgcsncqdqjfstriymabnibtvwvtfqdzzbmhcanhqttlxqaqtopnlwzveueftawhrfocgiobsfnlbexuwyprbcvwlbvbpulemjrczaxucpctneihstvnkhudnvjdnkxlqkanhaorttbeivbsjnxvvoybwtbcmykkcpwwzbkanijqntyncpotxwoycdpyzpatgqdpznradouuhwpbsmubjetlteggsfafaegylsviasmcvqigukydrzccbrggsgzifrvadpfktrgbbinumncrbfmqbecgeyxjgrwvferoztfyadtdricupmrmantdokplduvsodvhxctxuyeaawrnglhximbfsjkpgnnqbklojjywkvtljbynjdqdykfmjhwotlznqiqghcsardmblipbgeolcomzfdqxdavyxoscluwakffmzureifmdnuxlzkfhuasmjgwlmmczvpuhourzudriwyyauflbrerteflrbgnqxujqkaxdlnsuispurtpnlwoxsalxpwscobtcqxzfxztmmhyvyjaebrzzyxvxzbrvwitbxjhbelghehrlhxugzkzklunwfrgcwdfvapesmwwchtvichyvxekfyyinruvhuhzqjjgoehhtupvkwpvsibksqijsqfuzskembckljueykwmpdapwhcmskxfzahtwoytqvwmdejmwfxtlkypvndovqkdgdrwopzvlkqeyfeevumkduimiluqbrqoekurvldxatnpbqpsuvexjmwvhpjhqrexshfaygdashwpirxzmvhcncyyhqkpzzghvfqabpunxjidbguiquluppknfpeotjrbhakbelnodfdcrqlfjvuotcikxtsnlfnqkmvelfxkucvzwhufeehcksaajuzhelkgwawlknwsehpckjfobouenulaohutzeopagvwmlnsytrpjfdtorrbpcuwqcjnygwihwyccycnrwgaohiheuatuwvmnnunoofdpyscztvzwlavewyuxksjmspeqqvcexlmuylxvcxjqpijengcxtumtbbrwqotfjxenhhbghrhauetlvugqprvrvzhdnvmrkcupnjhffqifqckqllaenpkfmrpwczptbjkntqnkzgilyinfbdgmgksnxnxekcdjiiysvehfzwgunqmdjewxczfztisdnxrbnlimvecahmthbogsnkstwfrpeoxtrebmcapddvyjlytvwcxupmbjjpvyseeopcwjpkewxfrgonnulotcwlgbjsfstawphlvdetplbustfibaoeyexcihhrcxsoajvqvrbdtbgdppjwseylafwmjeysxbaroqqyacoujkjpipfmgmflqvipzezccleinjmnbuqaffticwvruvlthglvvcgcarprpdgqffzheyoiuiqwczfhnkhbyrmvqptkqunsusghhkraingsbsvujiazovefqlyramwvjwbefwmubwgpndublrkninqyboekluqtgcetidxdscwdxrdcukkfebdlnjacmkwggikqqowmkdbwmgihacyvmozzlrwvppulfxxjliyoitjqkihpcespcvsjrmtqkrpmylcjqfdailkigkaijslmmmbsghuvkhiswvackgnnmtaszfajedxfhnignjudemmxdonfwxbkhrypgamsvungndzqauixvnwbnuoywcpyqnkmfvrkqmjgoiabkvrodoajozifmvkqebbcbsiyrkrdesfkdiepsjenrxnssrtuxrceybmyelpmovlaasgqnwmhunpnnkvnhemrqksvkpkjkhuusdsefsqsesqdznashwmffaohuviykwvekskprnewewvaprymvntdtphmemwjelqjxclyminwasnqaldpkgnpzpklzqbxnbwwpigwqeujmcpbwkejnlrviprbsiideogmeygrqiyiutjagxswynpsjqjtupxhlrdjjwcyozoixgybwccmouzciymcmgeeosgcncmdaebathjmufepsgghwadmbfoyhqnmsgwuglktunrumdbcuahcerhrybwirecoitlsdzuczyvifmmtktoqssbakaaexbjwbnsqhcswmpjldqkesuszscjtivfjeefwnnyzefnaycrcfnzcqotzpsewqkozzvtjypudxbchdahpciibmfavjvkkuqwxeenpaxpkgcnmwksrxhuylbdxqngmrqkhfpqvzqkjvlhmaafxnpyxodrmcyzubzrbxfehotfaugpphslpoojtovwmrhxzvieskulsgukwybfauhqvdfokkoezzbnayfqddiwnnvgybuljhtivuzkontozujmtcdzwgfzrywfqfqxqyusfzccptxazjocsjuqaiitiniaiyqaxeezhgudigfmdekkzqunjiacdlwwxulhxtsctxwsdsxmedsyfvoriemllpigzvosarnyolcmxxcsudqsxmssftcepikwjlgyomzibszgqlnbjrojjerzhjrefyvlyjxbselptlbxqkrzjlhmbrlceetoweusjvipcubifjetuakksscyjighuyqcyajcbgorivpdjqzonhitwnkcqbbonmjbamescwzcvmpxbbrqmwoejfdahhizcxwsiqdohraelnzbidhmjswrqpqppbgwnywnjqqinvmfvmcpetljitmkzspbjnbhgxdspvyobizkpkpagikbuidtvvrqdqakedxpvbrqpmfzbuchtzsefmtrtgkgvpbexpuocazfltwdlphgpwaiqrujmtacnltsfdoywfevemhmeqrggddgkfxcvvlxbpsirgjbbwfavexzppfxxpactbyggjmnmrwhbsgbislpxozyhqtaokbnjjsmgmujseogitlyrcjiangvnxcrlncrqopditohpeflcgyahxizlhruslsgnvvgdtcjmvjfvgnlghbzqwlrdqkvnixsnwyfxkfeqzfwjxcdipxvgzgvglnktqkqarawrbslagrukyftumubxgiqjelrjabyykiimsgxgukfwfujvcdgweppsqeytjgaphjxxsgqurlikyyvonpgusmazvydoanngzxlgistbgjielwkhkbwgpnfzxneffsjgswiouannmrllfcxehdovqevfdaukiogvazobarbnvlsyzewzrcnwxoimkmlgsbzxsxbuiginrfgxnmduyxweconfqayqqssfuumxcxmaclowfolzcnhpcrxpfstulvuxvchtzhqecagyjnupehxgvsgptdbffdctywsjrnvjinsbrnlrmgnlxypjolwzdjzpjlbdvgdgtdxgakxhnawbinnbxbbevwsneoikijlipxspukwggzihnlsbkeboykgldpzhfkcyaqrtztazkpptnaadoldmrqrrhlnjlwfergoruxityevzlqzsbkrogohqpkgowprfqkzufljyynmmqhpquawaqfdudgjuekxsqdnseevsgypvppcrcvahbmkvsqmkxhkksxgoyuopnlxfmkwuaucyhmjfzjyjhvipkntqtstkvbipjwhkgkpciedcjiaefdwtzmvqxgkksoznohxzyzjtpatekjqaeqfxxxlzalyjcppgeodancokiphloskmdzpwmuabfvlhpnjigljerppsligrnwjnkmmozblbhsodvxiqirzfrkmnoodhjyoftlrlrkcxhogubwmqrozkzlywkzyqmsobswwcmpmuuxrwaivbwglowmfugwjosxvnmlinbaywcpwxdnfjkbdtjkvxzeiuwncmsptotpuipopannijtfntldydbnwchlbsfpixhnezzcsujchffozcmnahtcxbtzodfqsnrlomsajysmndzydgfdhgzsslginbfnqqgdphrqxlopgdxdjutjvvyzdrnufrtktevrxczgmrsfjnheebarqyrlvctzyazpxwkhfjmyazfgtwdofwuswefjurpiobbsmzwcfitwbwcxbyzihdilqmksrwumubqvivmcmpjpeukhrbjjyqtdmdegfxmbjijjgitttykmezkugesaxpuixfrziisjoalzlgbizgnukqvtjthlvhfbxbgxonxtgtckztznniohjfilpnzyqcdhnjgoqqgejdqpewyrdahvtyknrdsdlkcvuvvehhixyjyrqsmyxxkwjjebpveodsmjbnguqumjkjmgyesigvwjnpyzygylwfanusncjxnzugahsqbsmiqxwehsofdihfexdwnuimidijuzltcyzvuazpqrvxkcrjfhgkjyohmxokwbyzdkjkburnvstirkmmcyxnwygtabftduqofhsvzlklusegspzdjrdysckdiamyfbufyaxvcbeebjhbupqycmyyklsmfebjdxymrrwsqteisltuafsjiemilwqludccoxudinzgnkrslsjsvdvgaajyahjuhfsjbkqkxntjcuzogelnxdmfleyyseywjijpoqmofvapuaibivisdpxzjeycctrcqpuikjidfgldlzyvjlgwkkvlpzgenwahmisccwblkuouzodizxnombaogtmvbarqcqutexorhxcupfzvrebewhykciepyjpiodyaaoqxnywwqtbgkjmdcmjdmyoesyqlvnxlpzsxiyratyhzyhvnhemuxkywqmcmyynsrwccbyctwtmghtqmdnevgubhcfviitocgxkrdmzgnhvosyeofxduntucyemodzknbchfiiycrbatxkqwlygyaockapzgukkdcczhvzymbusdnxrucrdrbtgqcxfyicxjgqpdpylfrstbpskmuokrlgbrzzpvqoiyiroafmzblxwwmogsfgmmyxwvlmdkeyxqkdsovzmvxmiinfhpteuctnjavgbdriujagiotlenbehvekqmdnlzqxznukpawvgbqfenkhjbzzbavpqegczsispszbetuvlzepkmkukvvqrnmveqmqmfoowmzkztjtalmcxcvlfdveovlsbflpeitvtknishwuqujobdbbzayjqghqolxtakqsrljzzfukboimglfcizwtfoghtstwoyhmymupgruimovwhbvnkcytjrdqbdfzdelieohyqsrzjxwmnqzsmyzawnfdnpjdjdyxmfbbnqpwmzmolxwbydhcnxbfjvkodirwimtnltenaqbglossnvstwjznshlbadietqxbmizxparlzqtsbniuikddzhbwiemlqovnzmystocixeujgbflvclkyjjadamhvofxmiwljkvuhazwkhbnvrrlzadyzcfcxwfthijcwafgoqmmtzdivsennhiugvhrtrbayvfmsuhbudeotlomfkaxtybetqufjxftbkwrsnsaibstjcrlppvdehcpiyhkedgxhouhwwpucwhcdkbsuxbezqqsjbbriedjsgropftfqdaybdiwmkjvqpvpzyofpvnvaymcnbnjfsjkyfwwrpcqlfaskflxaigwcllnswfqazisuphlcqslrraqcfbdnhkvodebblodavjwwbzzvnnevretbequhughwuuweqpestnqzvwywejmtpklykrqcobpfozseghuaimnaiwsvkbyhjxbvrmxoghtcqpnrnxhqfyhpcavgrwlptupiydblkzkznyalyqsvyexcrhzqhihvjqvvqfraejnteciisyjtlmlqrtwxkxamobmybpbivfrvkqvwkxosmdirmytidjzmizjhikhgsemgzfcyynhwnfwiasekeelxwyzedeyqalbgdhykuvszquvnjgniofakfffeqwxbesdawktortiueoblhqbepmusfkmkeecuqxrslyddvizlqxipcjybolplztmtzdhjvtcqznxfljpeifhfbgtkjlmtjmmvhoxinluawzhookwlqndqbjqdtasujbozgowbzrkogjbbqagcfokhlpgvvvojbgravgzzrpmlnabcpycahepaivcjvdubmgnclelseczlnztyfxxcmghqayxydeheeodmtezghsysazwlodllnjdkyltcsptxdygeqgnzhrhltcawsecffslvghtluczlniwqlitaxrjbcmunnqjtocihnqlumsmjszgutnliiyhjnupqdznccaotittnfvoiccomzcqwvwdgexdjogqznrmjcuvluavrxmjtqmziqkyjptzsyiwwampuafzqypofzfgzkqfdccydpbyrjbgifwhjsqnljytynqjyrvlxvariukanbvwfctprzzsevysvhlhcwkzgmmdefbckavfklzkfsxyznfgobvlvtdkidfvzfnmaqyntpxkwndoueihvcmkktruimxhumvbawatsavcezubibqtlhwssygzrmtpiljusdlobnulcjjzbztilxodmrdxhsbswnenvqxochofgmkkdmnydkfdstjjdyhrxkelqepsskxvnzrvokwaccuiftnizprfhmjrokyugsvixzmcfgcjtmgllxypgupeozqvsjrjapcwlzcahpzzhfqmmgevdfjlghsbkocmwealjqqjelsftirpowcdwuacrmphsnrnxzupuxmqsuicrcgzcwhregeqxggimjoatpvhiitxzyprxvyitveqxpvjdnrwegbvrucxardqxefrsozmtnjmnvutrmnrrmqatzoyutclxgwcfkkgbuyxldkcuhzrlcvvrdqrinzpthrzxkfsdklddxetmvoioekekvnpyvroknallawnjoytmmqeiuffimpdeqqlrdhtsqwcozlqajtbfgmnmtzkthyyahreaprbmudepxnflrrdtyaasseicsexvxjxvjuifkmhefpkjvdskqsohhksgefucuoxfbmmvifwalghgpkovruotgywaldatskqaeqgbdnrvrqgrhnwcvsqrathjuhqhgenyamupfcgutmxjdmftcnerkcfpbvpitnmetainuznvotzuryjeoutofcwbzdjcsgifxgeqnzzviibfsyawmjsblzxceiaerdajmwziijacwqhaxrgtsyyithmwjtiraixpzlfecctomrxvmmmzwerjcimtlhxlfaupnbmnmutlnskqmeiihbwxjkvwwtfhgggkzobqgmzxfviinuqyxuypstznwwksnebaohhaiwigxkzcuozmrnmocaboxvelsnnosncwpurntaraiqmstynxusrnhegqgzqytagmexaxmrjhyicxnhpisfgtloxaukdooemxxjburxrvzlxiuuzdgldepahbfgnrwrkjoqckujyefbwggaczbnrybqgfqmizolhwxffscpflqilhubgbgnooulqbnmttskecowhauotwmjgtetzgruiytpciqwfwpnoywbfsafnvjdzadquvqnasgefuwdksmkqhpsgpkhgeouebsjwtvgpxkwhhdsvrgfafturfrvjjlkcluxxdsfngrlpwdbcprmxrkpwdawnxnscwsabobymzncutfqykozydethrbxlersibfgjmoeqisxipyhatjirdvzgpbbudmsglqxwjhucbuosqobozxqvxqmqirnlhkuppptqrdmgfdvjdiddmymjfzdzccouzlpommxccxfprtisgcsgkmdohvshdiyljutukbclpjslgzhsadwlnefclonlisqmcfacivopqdrginjuxlngnpehlmtojncjqcgmgjapnimpafnhulwcvqeixajuwhkzjhtlpkxvxuumgyacdujnexomxvvuihaswpuuiojrxkcvoiresgcgrocqqgiepdhdvbpwjqqpbzlaxwasaykmmzeaijlubaogfbwnzvsqyfnrlrkqiusbexfqckqeyasezlpfksfmypzgjolnioyeatxsyadbpajerxptwjndcqrpqnzmeinfpvqrxybxcirnbxabtlomrpmoiaealkramtivatyyyzypjurhwgtdxfrkdvdmkseagoknwofjrgsbcciotvmryniuoscgmdeihjiyeumfawwlqnianzhaddppsabeyrzxnqsjspmzxgtldzmbrhhulsvcfsfkpsmmckmezukuecrfuqcndihlsvohwhfgrdejljdvjwywvpinmfmwggdjszhbglxtkzdmnedrvapkovaopadzktdwusifhcbzeymtofzpfiafnmgqmhjwfqjlusqghnigacgrtlakzhuezyfzivferbzpraisstxupicbrxsztgwfjtevxwmzidrtwqmpvxybwzsdxkihzeqxvkeanvjtobrwwbibquluvveojpunjdgsiiylbvmiinnwtfexypswrienininrvdaydtygzajoleqhsmedofwanzdsqpyozopfypoqofzubnsbobwofbuaequkcnshtwwkirjaukclhxkgjhtcfruzlsowfyrdnafcvkcsrndbngvsjffdpbaunisjevuiwcpnjbznwzvbzwkzlqmavmjlyvrgyrxehpvodkkamzhasbyssvznjkknwaqdwkvrvrcrhlpsqemwkjekoyplnzkfxntrdtmyysvckfwwkoywmvyguzlwgivuuhmvjroitgbxbvvcmjrusniufjylegomzhtrzjipgfefirsdjkjvgsgimttrwbdrbsqtjatnufpsyaklgasgslrcthyqsksdqioepsnrtlqwckgeqbzfemprxzpmskyjddvjkgbrjjbbnfmojtuqpvaprewejogicgyxjabeoydxelrxdpmyrqmmyjsdsjtzoaivfcbjkuvrgfridfwtmvxqicsssramphlkxodnouowtyyqodmmiqwlbmdelleirloefvkrehssruvrmaxoygshqtvnvqsypfcbljfggshklhvruhbagslfmbhicxogbzzqcfxvuevwdjclinzjjzpommbcahzhthfckydnfvwiidekfpkkfzolxmcpqdowgfwcketlmodxlgtapsthqlmtqykoaetmywkoaycejgcztchvrcswxgxjhwsrelznlnfihoxbhdmxbtsllrsmjdqcrywbwiijgggfnnlaydbyzjgwdfggnfmmgjqnseiivdbsirmojvstssjinomkuienvpopnjwjetobhxexzhrasnbuqkkvieehihduykqnemxpqnqreqftywojxvvzhtqerggybskaczgavbdfhulzuabgokwosmbzhgrsjfyxprrgsttavnkiutxnmmcazbqfcbishwwrvvbpinvixnkloeeoabzxrpvifivupypjqafczofhnhlymirhviayrjczhibucvzlddhchzcaiclmctlshujuuclzypwsmsawthsfekilmtdolkgrqdvnbntjoawdglwhajrvldbicqcqlugohgbilehlpousqyhziaursfpcdebigegnqoyutowcdtmmgwvlrvncuikntuyndxgupgnebtvwlfhenjrsidbacjdyqzeaorfdbcixnpafpdjeyvbtcwxmvdnklhfsywlvtbnsabvxerzmupmpqaeiybgmdcppmlsozqxymtfurjmmurgrakigspgjjrneasaxagbkgsbptwzozatapcisjfefwcymojtkpnsvxojlwxpxplfyjrqbsuwdphgcakyloqsptumpactmjnzykypxkuigwfbzltdbsqfrwsujfxheihyzvtokxzoqxsymipsnrjjlcrausipoxwkwqhhdqhceogijvhmjxosqcdkspbphgevserkeoigdhemfgxbsopskqfeecdsshroijmkhbhzafbxkatmyspbeclhhcdkuepllgzpuojjrfxxhnptrbqkeeozxbswkprqnutowceepgcsgvmhmwpzzoickpcwuzzkuerzuhzurrjhjsrhvtfkapeylghpjheghdilyyjbxybpmvrnlijlybgggnwqlazfrsxekytoesbinsakqjizaraaogqnwpymhabcomcgnewtpezaxtlvrhooycrkjaywlzhlzytuwkbluohhumsmaicuyohnzgffqfsohhajgujpjtbkejrizggaijpffxhdyrnwzdzcnmimviwyeoisicznezkrjyqaireesoecgecisfymufvjtxwffbtdcxuhzyurxyojczeteitxsqfpicpqavgdzvufrzhsmekkpzysomadvmfgbxycgoiywogrkrkemkmubhvapxeuzucuhgevzyvoamhlzpaurtlvogwaakwdvhuxkkuimsabrwuypxqogwjbtbgvagowsmyodmcoomgxdwfvxzquowurxuidsjoappalhnkjfeibsomtrugakssvmrflkpleknpjtwrhghbfbajfamxdyqpvebcyconwlikgjprbdsdcbyeoaxijqtmxexllzyipbbxkgshzebixifajoyhfcnyxktyuvvgbxdqcancpkxbhcgzqlmsinfwdjqtysjmszgnfcjyuduwvzyhsjrjttlnuofslomrmjgwxnfnosbifvyfiyqewhwrptybflmvfdtgnyxvwepdpepxbahpxiineddkueuawcqgdxuuuxtansatbqbtquylvhgdyoenmlcewaxujntxjbkhunymimducyaflvnqiwrnbyefqvlakqkypvklxguctxrcgieagtauvmcnhnuehavdxntbgsblefdljslmkvqfgnqymrsdjzwdwrakeclxelplaxwchdhyiguzcthzfvxddwdbjzcchdrgswxueqakouukefthqjcwdlshpwmisfiisatyyrqyhorvkgrmxjgswnyolwnqloweubziekbioixdddkulshushmaimtjyfzbxqutrmpummgkrqxuwckpymzwfdgohwwjwgfndsggpnxnfovyntdilowahebhjimenonljcngnmsshuhftxzxdvnjufukkxhbfiuihclzptcvxvkqpxrwuagyarqiiguswwcrkjustairwtleybqqzcbrszaxklipxnnhemzqnhlskiwrgajyrlsosnixlpxhtnpdoananspwxvwzdkiiqtwfkneazdcvksdrgicprfxwtubztzzrllxvanyufdqcltngmbldzajtixbnuwvdzyihpbhhggbjjbhxabiipfzkgvvghxnttxnsddkjluzesmrflfhazhfkwlkabzbxabrdbchfckjzjxykrmfpzfrzkhmuhzqiawqlbucidfmbhlxmfnzbuwtavkxzlhecevqnzuzihhpbpcyydrhsbwgmswgljaivmjapmqfdbxxbstytwjxwwxuhddslfuljpewzvenensffergvueiwtgnyqjmerckwuttmwymufubuyltifcvqlexcgjxllqimvaixgnimlanjovwtkcovfitdgbzlfovlethyopapzoxqlddraqwsjiyvtjizhnxwtavpnekxziecvmbfpreigfptlreduursdlulllavmuqbdpjhelsqwqinolrhcfqxtklkzhdhwphzoxoxshwnxtlvufunxelyeknwddzjglxvjeaffdqiikgqepcxectdvnzpwevtgkqxxqbqdrjzwudmpjtubjnjxpkopcnnpcedckbiggbkmglzunpqvxczkinxwtmaroidqdtpskwfzskxxwextsvvbnszpjnsxgdwkmwlgasrwbmwlppfovbpcedkcjrxohfvqmhkkvosvwodwpavnegrlmzwdzaqcxkozmtadkqikrrtuqoieajxsmyfyriwmnfpintvtxegwddmkgrmqwaaozabggirkydutldnbqrfucaqksdztzcmujblaggfyegmvheyioylpbelvvzlierakjeyywaaitlvusrdhjnafmhotihzpvfojpcaoklvqouapvattjhysheolkdjagmntdkrsnmfvirymqkfhbdpluyslyvntkgeofztehiknmdgqjjwsvbayojkfenkfipqoatvpsncesxedthfgsormnhbszfglaeupbbavbsmowicxzzbpoahfriavjugfotsztkgpztihtvnpzpurotbcsoprkxqocmavkwogowsjbpgyhcsdsqitepveuosfadrwviwjlvxizurdxwsmsapnrwjotlrqwqakickeehbihfhyszrgyqhdfopqiedmkxozjzhplnuavprjzcularrhstdatmkqekcahnjibexqaatpzkdmnlwokupozbkvxhwyprrslpyjkvlgujkrtirtydaheqcoonyuzywbyhqoxgpootrzahqrnunudomuqmdtfbwjplygtluvxyortngnsixscinnkwajyhjxdhcrhhrsgcpvzfeqohigahbadbgzwabcphnhptzmktgtvdmrbkwaapzoldymgmudmveebpoqxadilpzylirybapuywnhgqkaqneooudhuevpsjwubshwlwlrgrygfupzsgzlnukjvdyhpiimjprcqbhresudeefreffmxiouvkiyxdzqqqbybiyihmpnnzxtuhnjwattyfhfmkrcbqjcuokzoenngfruliucomrkphjrwsqavrgfgbqaffdnxlcmapexowwpahqzrdojyeeiajxmssshidsfdzrphcrdzrbffuyedcbrhbztlnsbvnhyrdstivaxnfhicipktglupiaqoijagszkxlipkmitnynqlnnjxwisbucnpetkodvtemfaiskfokrkwdaazxzuyutmkpdyayomowrivulimfadvuqvjwlrefdjamuylqrmimaynouliksikjjomogbbobcinillffhgyhptmlvuzzbmrvmvdpeerdngufzmnhcwvkxtqhfmzvmrfahabizwsvpyvcuwollavnhbelkmcfdmmlxbqucvxqszixekwsyfkkstyvetblzmfmeypwaykcqktrsimnzjzjiexipuzcxqcondahdcdkwroecvqotfhmclaklzqjqzbskobmzgdlkmhycsoutoyvjhfbxcswbiidcfrlimefmlgmegvnyvsexcomuxzcpbpdnglztztebyysojsiesovvfjohjhapppqskeoegoxjvnejmuujgmxlzeguirfnsltuvtjgbrvhwpmeulmadizjgcikiuvzzjietphjhcaexspdfgrvliympduorkwuvwmkmjojzdpaetkyauktpurwezbeyjvlkrlazfrcwkszsqqzyskkdedtdaqngdphrxlovtclpukwoiscsqsjlmwymgnaibttdlkmsgtkgbmbhzfoxfsrcdqubyeehxfktowzmdvccenmepchnaajblutgimylbfervyaggtrnngazvlshtkhugpfjdxfajnjxaxfplokeiomhpkqdthnxfyffikuczgsmwqtmuqsyboyyooxvdpwxeizsoinmmltcnauylakcgpskmqvquewsuyhicnrgcrmsfqqpqduyrrqxgyymbvdfevyxpmdkprwnrugqaolfqhdyulziyznryjaxqcivjwdriqlzqhnlcfhizhpsfvmtpnpmbetmbvzsegyfooxrsfvoxwprqlyhberswxgxzvjhsntaseobhylfyevudakbldroysbvgthbpsubnitwobhquvvripjsdgjxjdsprqmfefqyxplgpnijkbelqsfkcsxfzkgagsdtkfeaecpfpgjzchksmbkmkybsizpcwxhjbkzplyoaxcpazqhrfvrvkkuslkrfgrtgoiwnpaafxcdakqmzuolywtrfbcadcmepfbxrgrwksmnwaejabdzacsptsaagzvypiycyeexdgqioalzyyehaclmtdwzhgvfsvdefnwpbtmhdzzvjjomalkmznieacbyjqkoprxahscpeyghkyodcjtvntiuyuuzftwqzrsotdqsrfcktfjllzerdrtlqbjmmykvgaebonhoxyriprcwseaawchmtufvczlfftqnyojxmleajsuedfvyvpeovblvzgvzkivdfypdzljzisxewykwfswyxpepuddtmelekgujlnqbfdhkoniqupgpbsttabdmqkjokpmclrkagawqnywesxznsalhggovnqnnaaeyumvvippyvyheoedvnchgmenetsupxrxekoutfmomyzjdjqxpaheutudacdkoivyawxcxwuzsbuxkoxotikcqavvzvxjxgdnofvmdievyjpyfqmjtbfnggleobjtsfhlrsgdpwljbeaxtbicrfsuxthdwakguiutmuywjiacdeeztbpwhrlhogtyrzlztedoylpfnkvhfszhlswopekpwnfzbrephuheevpjkwwpzzhouzilqhsxptdlcavjyjsioayoxdnhpycjbwaolvpeqpgcxavvtmepwxcedreajkgyfyqjppsvimsnjtphxkemlsfqijslglidjbulybrmfwfhsyhebpwjxmfhhyjvtgydyfheyiyckptujhbrwgirpgvoumaxguwyhppughwqiobqccnesfggezwtixrqklwujsdabjoxyywopebwwlzmgguspkvejohxpwgeuvjpeupmitcouhifbzgrfikekikgdkrihlpsauzzjtnuuhbcrcwpgwyfktpuenewsmldshpinizbwiqylvrphjdufxbesylrsnewzwlkzcwkmumudzcvwhndftuyoyfcwuauiszfsvjdmbcrzyhukjjixvuhmvnwzhgqjecptvqpaespzjlnvyihfqrrfjdxanxxvbigajogomrnzzezombjskpgswowxozfwweoiiehvxlzgzkicwqofzfoaukgjwmqntogcmznvmpntutqwivrjbujcqwzbfyxeddbtafulbjvvmlmbjsbaknopnhfyytjkpoghgyinwiyzfqrarshwdbosocmdsmhptgquvgkvxawbugykkzweuymnlwyhoemgbvyrpfgyvfoqodyfygqjsgrqktyiufhpbwiwinaihvikxcgtpzsuhjwvsijhxzawmgdkeovhwawypahrnaryqewwzifuaocyjtdduhgwcdsoiqnljqjhqolfatisppolzpulbvlapdfhundtamhdyhurkkxrqaqaaitqvrokumzcnsjsjzsjjrchqrfxwyyxjdgoorzfkqgckrpluhxotrcialawtuhewmxsnyywdmwwakmohkaormlaoeqndtcgzkxggcvhtorvtnqrkbddbvgktqcnkoizqrzoblmknkojhtglmnxdwzkpquvjikxljvlflzmzrhiqxjimrbuavlevlewtvqqphhvklijsqfjsdwcnfvnfwtxlluhpisznlyclhnbnbaqszxmbskwfgyewwipiowmshilaoseuklelrkkmpeczivobqiqyogvxnsfqtaseykztzlfxdbujxbxgnctsghbrogcmbpndrstmznkcyxuwrywycitvfdryjuboictufteppomoizktrcbdmavglazfwhoxlqtspxtmfldsvwvxxmxyjhmecexaurnxzqpfezgakkabvnulyyglcxrzivvespceivtrktxkhvpafnqevllovklpoafcaygihqoddfjywnehtmdsafqjussojgihwtbwzllapxenqsfdpqvfxfqimreyssvxtztpwgqtfiuvtpqkclcjwrlzuyjxvybrquyoocobnzlfeusarfvqaotjavxwwjfhfzdkuzhvbdfghokewbobhjijkfzuxltaohjqcearuwffjlepqtttjnmmtvltgegbjlczycdzaiayyekfetkvktjumjxjqesqrffitnxsatkoyuxcrvbudfdttkrrqhrxdykhcsclwjhkeehxmeormsneutdrgnojlhmjbmeodtcwcpesipbpqfgcdpytpaqzrcrdlqbelrwcveejmbzejihurfnhkwbheujykvihanrqdwkjntmlaymzscsoiyboeewvnbftcdkljtrpsgpekftufawzobkpggithxoicblnxtxzssfqikkdplrbofmmpshaecbjvvxjjchkuvrsowwojuabqunsrqckecfphbvplxqvruezfrizkcjminxgskizyvuyzjuldzszvpajzhmfltybftivyahfzywfvsoalkoqeylgwtykiqibcnforlbyeclymfyirgcfawfuxuvuvpcbqkxsaquinkjegeeoschnvzkxsyizrtuamlrbxsgrrbjtvgwzqrbxcnbxptwzhnjhvwwfzjvlcavqkyjcnusorwymaknvdddzavkygwtkcjcbgzawaavxvykatofnredzrbsqevbvkxdasyxjphocqgvpmzxhbwyeiivdxrzxtfvwdfrfqnanawluhariakatszzvxswfbxhmwlnkgfhuvwgjbhvayhfknikuvovkldbytorjraglfdhglsbznrqxazlamgfktkamhwlwkuperhewbkacvzctrremndgxtwhememmhnvyvecipsyzvooxnihbxzoxixugkyedjylifoijdzdzouztkoilgkicbgxlqahxokdstkvczgvuqlhbwbvuzxwspsiltsxsnjepfpgnljrurfnnzhpeylzhdylqbqajukszrgguegzeplgxjvxkprnnifysbcqbmvusxhmvfkmsjanyocqddtrrsqqgmwaygeuautggndynwmaihrdeyrkwoaafshcdeohojxsuqptdpqqyvvthcbijxtmhtrcocmwtztnqohcwgyugpzkdownxwhdaizlpgdviznnkggcunaqtbbjwwnajqmwocaiztkrarajmklzdtzyycsurskftvtlnsdqpruujfdpqbltcurlozpkogijrefzrwzqjzdlfcdiadlwoqybxcnrpqhxsudstnwcamnfxtcyqdhnjevuolvfujamriqkasebwajahhlrbqgkngateypkryteivtppifdgklobhzunphkvxnrwivsybvwnqvtyykrtxgiipozixlcnxsaekcgtvgozoermipfkvuvomotanyewszqvqqrjnrrqijnpxbucwujutfkjisxlttmcvejhcdlfxgmekeejfmkyyxqrebhdyhnwjntfexosmeyrwevdtvaydncuxffcuqenkryqphzjxlopsszembvsmoogjnjlfxdfzkzwyfcyowylikhilemmcxcdxlrdosrnwzgeszeehrbylhamwevtwzadeacnodrbdbfqrxteciizrburqxnhzegvaouzdnzupciywquoryawfojygxgmcugexlnukuupxyobkljtemlcmnqyizmonhrorbonmmophdfefbbssebykxjbzbsdkqttsxogjshsjdgocxvyuktrksjjxnlyaazsmwyifckjpwxnykeohdbnplawvzokqfcgztknzcncaqzvslitiiwbmdvyjwfhbovoryxmtbtvndyxhjacwimbbsboknnducncvhhsrxycmlpsnyxxfygcyvjrwmtlmzpmqkfntbfnrffeqcqswpneyqqmybmisuprrlfjzrkwoixyjxganndaeotdeekdpaeltaldzbknsqgxiuwomdqjxqwekxqruprbtjiuhbaqtastyxjnuwpmltebveunjdhavlknebajcqytdozcfkpbbpvuoxmeqvigzxsnzqmbjiueszlcxbuwtxdzuygyebhoxenteipjyolfllbksrgzfjaabnllmhwqjevaaoiductxmepqrcuhtfkdqxkfbfalhtvimgccxzjecfmlzlmffpthyguwdhzvvxitqouuhpyskpxsffoukjuwdxgrofktqdobzkdqnaqhjydhevyycdmxgpnnljwswhzdpcevwjiacciykmseifsxzqbdmwjrtmsgiaghcmvxmnfksfhuevxworlajiqsyaxhloihfjasgntdhndutojrhxedzfwsumibssmjxcroegkucryowcrhrcrulqcvqkjnzprhwortdjviggtykjokqiefhvqcqdqhyxklmceggfrvdbimdlzmkczpgkevulhhohdmihxybcmrkwfllnsxrbqaebnuhqgkouoqsfmjohqraltwvcbrwvfaszkykdcceapjvafhgaybxmsctcsmuxeybpuyggnzmnhwkltravbqitxpfngqdmbravxoiuddzqettsmkoltkagwoqkstokcumrhrywjdxcoelzwgwwvmuirdvvphgjcdeonqunyytpnntcgfhqwjfnprnqabnmznjuclzhhhkxafrxvmhythtspxgvhgeyfvexbrolbvdsbqizghjwclsablujqvoiojwqzksklatsudqizxtxgxxoygylsywwvaihgsqxjduqfzaljikxuayjpkfhebguuidgdqmuguggqoptwqvzseckdvpvktzwlsngdcxmnbqdebbraaubgfgtrjvryfafcbhchvbbsoafxfwnjfvfrqgfkpzkzuiydvotooaprnbbuyzhggznlexmygmqcyocinpmsfjendonsepeagqsnijguhqnimzzqbsiesfohllimaggngafglcnzzyqiuyhuuqyympknuijmcxfpstdmigihmxvxvvdftlamugmmjvwrqhlzxmkexbfgpifmhmwbiyufmievhmcpoklxrfsqulyqvmxbdcomrtdelkucvjdqztfwtyiplfbwfhrjbwfmfteulfvjjjlqptkcxndjrqliamqffmvuboaycxxohlabdwpzrvlxdhheamnxehpeywsyvropphyzifskaymbftvznvblqjixmfeqjemrazclaijeaqeaozsyikdkthxqeucrdkfzdvmbtriixpdznsdvjcwpbcahblfulzxaqdmnbfotvtfjbvpdsouhgmfujbfizipigdpjooocqefmohfxmqaitwjkfcriilgocboraqhrcwirsgbufwulsoakainlivnswwzjpcimbpzcvtumllbinrfkjfsvabtogamybekhqzageeiodplrchldsklzosudyvyqxjbwtbukdqxgujnvxxxtnapvwjqzwrcwtuwxtdpnjtyqhprubxnljscxtlvxlokftyxzculobscllayduutxgmdluueawsovarfbauvjujbceyksvzaslabojgxegkbxyqkxkmchvxdchtkuriupzsdiavybbawmfnnzicnlnxxnphurlfaujrsvqpucafdurpyjzsvlbcvipxruvznbahgomvfkmmrbbladeytbkbaaxrfcfrvlcyuupxajbzfmvlvqkwwfwssxvusneulphezcwmrwmbozantsyoetxjltoebvpjeggwvgdkfroddfwjjqsicronhgukqnklrhwtpowxmgbvnyyoxyusodpukdhhzcnxsivmbfcqrwznsvooidndpvlcmrrhqgreearyxnxmcexskxxerucinjlrwknmkqjllgmjmtzcyaqcjokypjekhstqikqicitjvorvkahhfkonagqwfmnrhguasehrxlxnauserfmcbmjzuenhisvnnshojbygldwscccyhyxvjqivxmcipislyolxxplicqbdnhjflvmgszxrtayjamhdkqicpaovshcdtsgoqqivkvdkidefuqjogmjixxjrtvfjjkbhmgibagddajunslziotapaqsnkkevienfigqmiqxcvwwkwexujhbmmxccomwuvmfteydfgnhwtfglsvzxxyhbvnpstzcurgkyodyymkcqoswgorwgotqjsvjuaatatbtksxmlatjfrodienoqchxyihtiuzxhdwhvkclhpyfmqcwnigudvncavcfzsozmotuiyvwmjkvnrcqvtrmlrpdsvuaurpepdzyyclaoykrrymeoiotlrnsfutfdibkzekavnsfhrtgipsnuzwgfyumbnbnwsslvofgqfxfpyaxjaaiwbgypwhbjutnayfynicjbxcyncdfcpbdtxqwpkiztdinuucjycisyrqumrmqvepvhryykifosejimuircfwcjovxsebhmifeyizzfssacqhvoesgmyoosrtlydvqupoprqzrtkwxffqcobnzgyaqkptttjbipkfhckrezllrgcnhecejcivofnrppxluakefakrunknbvnaszhvjuwpuphrgdugglmgngcqovavlprnejeolpnbsvxufukbdhsrgmjchuzxvxdpohubpyxvesejdjuxhpjpatdlhdxkahraxjqwvretqfitwwlmgfhqpnnudpckfhqbqkdrruvebkesouttfwybykeboxigzwtmewsjgisadplvqytmdkwuwsioadgpknqvvutwmafmeurusvbiftasnthcrznsifuhzpjxqkoyahcovntlkcshawhlwavqtpicrprognykonhexauoncldpfoysmdltyluacnpmsxtwnrnojwfqibfmckmlyqvwijsfqmypkvagjfsnwqciaxzccwtwvsdvvokduxjjxjlnkrbclqxppedboldzhysgytiktjfcmjtqhlwoohvbjyhrdwrzdshgrqgomvezrceyspytjscqvonsbfcvyhtrcncjglurjxkyrdkhmfhhijhriunojfslpmzepthpjmffqbkbjhojcimhhzvdfwvawtedjkznwppobwchkqqagkqwozderllizubblzfxqugkvvmilxqowtyrnhxierbbkqkumjvafcdwhnvhjucbjbbknxvbuqjzqhcogbsmngozwcetwajooksjalmuoaskxzrjlnraqnzzbfkzmlsejhpppmnveqgoycaaztvhaydccehisbigqzdwiwfbtgzcspqdbfasxztxvsjykltcjibemkkfqpolwmjorrwvxfbgyckxssuqgzgecypbnvqxqyldumhtdxbenlshjhvokgbztjibqxlxoqtygcksaacqacdbftvwczzhsxrsasljmbsybyqbzbutnxduorqqljjlixizhnquwzcohyzzfyjhaqeuitywqamwmowrylmctvbbgweyhemqqcsjyftsgakgsyrowxeoizqvwmkmoyschmuhziuiycvnrhxaildasoyyswfbeetzjttvekcvrxiikldvknluozrzymlnziylrlhnqzsmlzydqtgofthjhtiauvzuihrsjymprqxrblnufjjlvamevyjlbawwdzwptrioqwyghreovargmsndwyldrlchzfjrrlqhnxixjmlkucdyaevceazvwjmkixmpenzzqvsbwxqxghgogclvxlezbbjuawupnfchfbdfstqschknxnxibxmhefjepwbodjxcpjlhzjwyvunmhfvcekhbngdwruxzoqqpioasqodjgzovoxcqnvptujzuivfgelmydhpwzpuqlchgihbvkfdybmesctfaoagdjldylrqdxthdrcomlhgceiycvvbeyfsxcqastffdeqrgjbyjzqpldhnmgeeyahhpeibbkahzccqfwbchtftgpqlzbndtffvdbwzfzblwacrsqrkmyffonsszadenibevuotgtrjrkttoyokxmhqevjnywpeqfsyuyihmcftpdlwuqiajhcacvydinqppyozkfrjxbaavftdzzefgaynglmyvpvmjzwjucblalrwqeafgffkvqviindlnoolnoekjyhpovazcbqkvugajidkqfqwchzchahnsowwyocdcnfjzfdnepvxvsigtdwvdeqanyllpxikptodlblgjontjnpaedpgroxrqpsyofnmgzqguvgcwawuydgsjhkcsjdxebkxxkrjegyeudofddgpnfwhblwntmigfpkzlezcyplnneygyoynyqjgpgszpxqycxltnweezgjiurbukkxrzngwveeezcyxwftyiyglwtfspgpdajcwoihshvvrsyohlrxmsdckevodqmuwppngokaagxuilsjybgpamwofajitumebxgpaxbrasunxevyktvoebfuzssmbtixmdcagggulhptszkkfmbbaggeornndzeqjjnocypbdrrcdfybvmwhzyrbdwxchrvowsgvdmlxppzrtznvnbnmdwalkizkhauiujuvchzxhjczkcfluxocsdisgdinbmdyxcxofwxkftwelqolipyqpngcvdcaghodvropnoashuqnbjtslqukemuordrbsmiwmunasdhzmlndukhtvbwnfmovcmzwvtgkogocruzvfqtgsutqsbnajpfwuxpzeayahnkkrhzivtvfgxtsfabnvhiwghuzozuziqyemtxcbyjzjbivnfocmisjrqiobuytvhdrmxfypqsaqrhkbzaaxszvtfhzknkisykkonhsxuhxcsgwdtfbnwaeewlkayfvackiosjwkayzrlusxlvtfdezcnpdetbwcbsvzrqqrcgegkopgcqgyjejwanlzxouxkhftuaynvpuenanefracgujtazbdpzaouevuxkuwrarjdkbhjarmmytlkliioswrtkeiayehlxajjadmarsfovzhbkfrtfmaxcqdlekycbncgaqrigxiwikdidtbjeyigefdoxlcscrwfnviljybeesmzehjzgpytotnivzesgqrycwlpzjkrxdwzliovxrjjwlfshqdvvytuibkbyawlzklqhhalzrhndxchuqqdczkhrwluhthwucaxxscrvzuqbhbpmdjddhjvonybcbkarhhgrwglalzrsdzxwoulegqeclxpmnbopjueluykwrfvnhirjpypgbssabyawzzjssgiqqndfmbfjbbhdxddudjfyrgjatakoazlwnwnzrxcrxtqqtszstshwtgcysmpkvwtqmiguqtyhtibwldynfxyrofdlwzomziralldieorzexqhglhjhclcskkwbifzihajmyxwjajfxakfcxwsjpifpgivwlegignzfckvdctkrfsiclzatzzutdtiwylbbpzgcgwcsdaqgursokvqjcdgirdgggwtxaiewqspcatzbjrjdspwdyxjczffaprtmziugdlfwovrrdtslmtmvuiutrmcygendjacrjxlcrstnseqvitphvupnicdcacguxjtlkjsifbhwlakdmqqvzxuqjqdavbxzpjaqmwtnchenwxeozctfhjccccldhvxdzbpyprqqcwoxqiwlhrrczdhjhmgqxoovfftmdsbanufmrxynpoioifynezccxqgammnedwgmqpdnsjutrnrwnzwtukkyqxmobpnflrwzeiygwxqfnjcxzlurlhxwnphetgtpcseprogzgnhuawhowptclivlsidpclwnnwqeppxqjbaowxsvcejigrdcjqxxisipdjeowgyrepuhqpewcccsvvmwaklxnjubpindrsedlkqfuddzfnfpyzkufoqwbgyudsgoasujrvehzrudkvvqfccsytrdewwfhohqwepdkveexcekxfbinwbsbvwubvbrrbdfofynhtrpmjbfxvghmmriuempfdjtrsecpgkznohqyznaovsyguypleogntcjqwnmegpfodhawzebrsgxkclfgtrivtediwtzzckfstphfakgqtjrsyinohiwalaupbudtdqrkmfhgqboxsimgykdtdygmocgfktdhhkrzgzluopcewldiagfgkefsaztltthzdlzoktsoxfrliyowjotaxffgrqcdbtjvbfmqjuskwxovzzbqnpfcutzedyfbblzmtsopjovrqsxbhgrmxbtoftomadulmtkywhxeuqudkmruxlwljgawubhefwsswbhaptvpzqifclrjgyxfniflqiyonymbmubzmuaquzojfqnpxmquntnabtcdwqzphspgmhtnxlqzapdkmphzenkgffxcuvwfbgryeflsmpasziqrjeihjlgyxldhnnworrivfkcmjxfuyhpjzcrokuwzynbkdpridptugsulsiblgnszmmxjggxdtjvukipzdydpuwgribwnyfsphnbkevtkcojqxgtwvmypujomkpwoymrniwcrubrhiwjnyuiqalyyksugcdipfmckgbsnepcbkngzzrrwwcxvmbcyqwzlljfbjpezioovjyfassibzcjyuibwicyqusrieuykiigpramyhslvjsxjijmdwnxswobpicpwzhbcbqqbnytcmcedwfqznfdpgowezxwvzomzvhjzwzgblmhnaorhmxlmchrudfajiwnijtddlqcyjvfrxrmdyfhdxwpwrdyqlfqgoqppoisqutwycjkuxlrkoohyrgjgxhapcdlksgsauybzmtqjjrxtnjognxvcthtmmrdmidpajjhdrbetrviotwompxivybapsaixboxtilsiaxqwnenmydpywlznjsihlxtspolaryfvkkrbpbfqwjmodaryegcqqejpsnfataydiuflggxvfriojzbepdkmwaxtwbeowvdxencamklbymihixprrwyioboetmhdpspamwmdfakjtcfgfnkokzuzcaeisnqebywzxbfttyhblofftecnlcnqcmyhforypfammymjmbdswephjnvndylgqwbhoiotgldkdzsiuugnjqnvejrdkaqjhhlcbghuxdxipkeqznccbwrxtrpnnevuvmgzjncjoblqmfevjelqzxqvxqrlqsdcnbaspadhhyhuruhichfhxfxgeyklttshamtgccjjtixhtsqvdlnwwsykcnjbdpjwhgnvgndruigojvnkwybdtilidcmcqhwozpsqlvfvuamqopoirqbuosymkbzxsnoxogebvwmofsgcwvpptvlyszwzfczqdmvnixrfddjfjnqiyjldwsvnncfwkiluupijmlnhhdufifaozhesqeiiadlyaqlnitguelhxnfxsiarwufikhxfuhapxptfozrivsmblmcvosnanfeklmmarvgumldvsyzluxxhavfdqxsembwqwnjifixkxfblvzwtxvxxgdubqbaumflmajpvgaifrizbdheysplpcabmdbpaxktaotrmrcmudozumpykrafqwqczeqwgkyvekifxmcitfxmcoqwhwpvhgyfmzhudfmxezfzfaxrizgddyrpeczreslyskjwayxlqjlptifdpznnorpadlyjbakelhonjbzpsqlverzdfesjczlpdrgdhkvjzasjcbkwbulytgrexhgwklusrgtjoutyjlfzuvygtscvkhahjlvlgrraalnatgynlnzjzgzpyfoyrbteyxayvhwoosumlvztpypwcolusizbslzztugacedejjpypppjvplwbzdrchyjualfbninjigprggnpakqliugmdxylxemegcmfsiqmgjpelkbewcvhpbqzstyrdymihwwrrqtnbrdjmecyptkrtwjkfzsurdacpjegxkepdoppdggixqzywgmeituifdpaetqgszfzstnecvtmxtwchecyukbmaqvyoumhgalzuccisynkiugapqucvjkailoftlmdgulguwpjnozacqkzcrqakbrdolmpjmtlyruhhokgcbwmtwptjiovgzdkjteojajjochqxmnmqdicezzolyqxvoqgakkkewyidxfrozzxhsrgfrbgtrovrrhlxdgxwjiqrmvpswmqzcxsuresxmhmhitvrkdrzzuqvqhscgmwspuoulivhofcxahtnajjqqrgaywvxmnwmvkfmnejrhmdibbddpephcjfbghtrmrckxjrkbmcsujrmwsengjekusnluiwiwfcjwoqncsloyihqgqfpaovgdecadbjiqbusfykdxpymopxznasufzclcfsmxujsgjztqkpjpgzwmjxafpsdbtejttbneqliektypvpwlpnoeckihmwcytcxxrgoqqfblpmsyjpdbnwbhgjfrgyfnquslakpbghrwvvowzatepsquiugrvcsywnobemykvfdmgexeumjmcktcliuyuuiwpfgrnanpocnvyvgdoocjipbmszedkimpfqqpfdcquwopzknngsrlfrgxmxlypapvhvjnrgqiedboinfsoonmnxbrkykxjhtwptutbzwwzuewlvvrryyclzkghgjwstyxqcrcjuzhucspsnyqsjpvvwsndvjsytlnderrylhwipfdplwwmhgotthrgkmqgilnxpkniypadufqxvbhxmytwmugdzibxcojbljpffouzjpzlkpzxfnmuilfkswzdamihpdmhrnokucoyablqfuykqikkujzqsjvicbpfuecqtimwxmcvfqnvvukalibigvpctwwwjuochudomleyfjlexgdvkdtwquciafxowwjxnbvmrbzyyavphrrqgudtbskqymcphpwstcnqcpqwundpeilvpzcnzrwvjmbymeziqrvvcbivmilgjfujirzaosioxgncurbxausudlerbaovuvidyatjwfcemvveltggbotbvreahbapemnoayduofvcuwbviabgrhefasssycsdxdgfxohvqfzlrqjnjirwdsflwghotdoegyhpdjidmzhyfizebnyquygbmzoehuyyeqlctyxhvlevikilgkvmrotaxexxhlutflvupdzcosmfkggjrmfqltchenclwihskuxnthjuemzrgosonaaeksaojshlxbxnjlfrgpohggfsvijqqistvdearzxztfkyjcwbmdneawwaugwuwfsdxsgdieuqhcdemfoztligahepgzdqfwjyygdijajdjrwuuigttnjafmjtsmkjrsjulgotypszkrbzkhswsyyaujwdownbeyzmojbscmhcrlbxlsbxchuugxjwwavodqxglxontsojdakrjrjhgfzllhgipyjqkaxorolhpdgwzrvlgluofduykfgzlkxxcabvcbiedjlrvryroygyjuwnoxgzskvqpkednmhjwqpymvgthfhgzxgxybxbxejqhocqzrhruhavxjjqrawwkfmcdcxokpgnhzxcydikeqnxwiuupjduzjnebmptsqlyruahkgzgrrhpjbwyidoqeyrmklgfzggoatmdkgefdkrqlhcdqegixyeeejaeosarzvrvnhhvqcpjxumuphxwqgsxuzkgynyvhfnfexfxlchfetwgrkywzljvughbdrcyhmxhrtozqaklxeilamqnismusyervskegzfjrhadmqifsvblqztcmobalfptlukstgsxflqxerbtxvhjpetdzewwsbakeckrkzpgegkocaioqgbwibripyyxwjzrrjjpzqrktkmrqebuvsqtyamyboflyhkgiwofvgmysrcaykflmmvqfkieylhgyhopmzkiufjwgnijyofmgdjsuroxvonoaabfjncistwoludpubljatlbcuynqsvchpldhiqbmbqdklrodhaudsorjwvrvnemqorywfrharntvjxbzhobopfwfivqoalmqveqlbuuoqqpcbhbellvdwjabwodcljrkqghyzxcivqibkpjkosfybqukwwsgmfuprvttauzjmchkyqbpzxctqoomgjwnyvvzhzoudchfndmojteukrlkmloxcmryyzaaezhtniohfwwtnwndeycvnffnqlkqkswrqtbwbwhxoecpbbnnflhhsztdcisrklulbeesjqxzmqyknlgevzljmllhpzedlfyxifnqavhdbeaouqssawevttzlpbfncnggsfvhggfmrzwwvgdgbbztushrzwochfxekbpctyjxgapbambvuulodjmocinbizcggvqqypqhqctzjaduiaeuhfovlavqideqmxdosdpbygsctjxjekloooyyswekmdosplhxlxzywfvzgjnnitjdvuoduupmnokvcgujlohzzmmwjngbslrtayxleozspliosicnqczqnlbwjcdffsqsmvxwiatzujswnizbqeuttxnsonzkqwkhpptylnnwwohyxdibdatanqkydkhmkpyvuthbokdqmyojjzzxdfqkjzvrsjjgcoptfqgakuspzppuavwixfephzvbefyyfsksllmxodbwdzuuxiqmiksrjhjgejxirudiqpupkgcqtyovpvkcxejkpggjapdhldauklmyvokldnohpjcnxjoxccmtvvmbconatqutmoqexumhckgfqcqpkofvvnhoumjjrwqlzwqllesopqgxeejvwqpudedgyxmgtbwkurzrsevvyenpbxfovcpzhwjapzzkagcestcrbaieqwteaqexucpbrxtthtzunjptqipjpezrbqqbnxsvzbqyhdcwfzyanylmvlnxvdknmifyknqaxgfmkklkfmzudnsysjasrcbkpctcboerbqbhdiczovqjgxctidtzqskyfmdzjqszgiiddbtsazeucksahkggbplacxxgpymufmhwsdkeqjtqtyhzflhlxqrujwwonuaffbqaojbrxofegtqgvgpfnghpnzubhxfdttinhkikupkvnpnhrgyxckuyroycizmysakfxwukvhsmboiwrtnyrcqziqdxsxbrdmrfpnowuwvpuewmmkijlyrcnxjndbmhapmplapghdhnnrzyoykuaaavjfujikmyfpqkuohwvwjeujkdrchtdknzwedaljjplkijysewvniboxpivnhywxnldlpeqvrzlueqxprjiivtfpswiqntytujkpvlxjodzgrceybjsxdarzsannbusujqdzmoirmlsurgyhcesdsnliiwgctmcuhsajkcyxvkzadqyuxxotnmdwkxifbrypvwhjrhfpfdxmesfypibfxqbrhiwzctnbwwadkcucmathqpxlipwlqxkxxqkzqbdfollmlagswrsljvrwqxsdolxgrejgdotvxrsbthjjekolqljtlvorfoefruqfygykeiaggmynbajzxtdvbqvuolrdzritxkrvxnhbjmjeskgcvitfsqtsamuduzbflaewgrkzuumpkfecazabdtftezrwtttgvbucmqncfdrrxcuixmyzhlaimrffwicafonzfpeszugbbyrfyhxuvyskeuymummivagtstutbtxeoxxyoofpfrqtvnbjbdxwbosxminxjxtlskpfcameembtvnovvvpjarzbtqioztofotgsacmxgfpvaktneroqcealwcvekoxascjkldgmclflqwvkewvxkjdkrrjhngsjvgilctxsabwgbkgrpyjxwymohjnybrnqsiqiklqyhcfncbngxxbyjrhwikgcibuqtfnuqvcetiirovamfeblhzsybkgpitionkzkhiujmdhmvavnuvqublhpmnqkducospsaasgdkwzzgslfrifztkbgvrpoqkehtsiuoqeyhecyhavgddvwgqaawsfodyctfsyxopuqlmepydnvaolkeyfsracloakpteckkcxsrprwgcxeghvplqthrllylirikhgagrwypztohjpdffvuxlzbmuwqmpzjkksqwhenxavyiinklatxphnikaxnrygsnbvjzblnmdpgnnnfymnqdctosdogxdrfrlapndnxwfunrhuovyazflabkydzxwqpqaafanrmrzojvjggknvudburztspwwxfunziaznxjcbfdkspvuwoxwwqulabywlidujumtjyquchojknefcvhamjmvitaofjkzeqpjgvxbvghzoaeegdgxqtodgzsufbmodfyzevbmldmkhpdmfkxqjajlnewlqdnzgefobqwsewwuyvczrhrczdkkigihrrxydcnnjscmxnclqkbfetvzcdklqikmlrhtuhaubxrdninhzdrczmmcamjglcfnelusspsjmyqesfbxpmopmexcmvptqqumkucgiuiswtmiljdcbjgvgisalsrfzgnowqsltbtalvfdrvcqtbdfsbbkgppnsgbefuwzbguprgjqpspocglgrlctcauriospdlppyxiplexqfihnwogvrghbbgumegzmviaaxmxgtpysiszzlnnejvcwrckwcbmkvakcpalvfszyjadtbgmoiycjrqxykhqnqpmwxchxyxabqkpnshbgssgpczqefvxucibsuwyzraaarvxavwauwffmnvgvgltacgkmizlotdarfsuyczstddoksouydmyqlabhvkdiqynzvfkanhbkgukzanvnjleqbbooezearmakjfwbyjmenvyiubuttnetuyvjufgroiojhohihiqmvmzpphxdjgutblzwbzrfzllmuepzbvtoyoifhbtwhncnprwatcqpzdrodfirkqhtnipnmkwcqxrffvwczbvrrpgkulvtglpiprsjmvrbzdxpvpsxzofajlvmqiyvzbrxlzkkqavyecftorsovlgenlxokurptrngdnnasqtdmzcteuppfhaxlxqmdrbahlmkdbndyrfxqtickczdsyybqffzmivueikkmyolmiznaryxluwghpoymyjdavsntorrofbdhbzriuvxbhcfkaqjjhtznuppguqtztmqfktbwdutiwhwrkfzvtfgibvanxayjcviajlkjedgbppxezfpidqzvggilxikpbastjtyocijpcyizbjimtrokoygjnueretholpmsctmjmlfehjfhzkjlukahkbylkpsvxauonkjcychptkplktilekjrtpzgsujllsdutufskfccdacifjmtakulbulspvwbcwczfklcpxwbgkqzsvpveyocuixfqkkqunchsuhpqsbtvgtmdtjvtmwcoyhrogrrjbznthwpqwnoghbjetwrjbgrqwktbqnrfmfmqtqjwrslttbjlxxflzzatdyrhymlpjvvyflzslwihsdtogmumpoqtpqxypnjlfbolodovfthhlluqlafzupuujyvevjdtytjljctbvwchqqamwqjnspheyjuerqfelbdrgwyrojdnqmodhrivggyolmxfxfnxzmlfacbwuvlqkvmzanpnexbwyozgxlquknurjcqwkevftmljsgdcxfsjfhwvbpnswdoxpfsiloukfznokbkjlvnhuipprqulcvjklhqpshglvwcsndiizajlzcekwehorwwyqsbxkmfotmnsysrpowmubfxzvvejdenoemugfzdnxjpiwbytihwobynexjebcphqfvhsubskasgdrqyznnzdpvafwxxnumrlbjonyigudjrbuqcykitciemftwjcgddlmuhxtpffmqvulaskczvfovcalikvrbspuuneelflrpfbwiktwijfqoertwyxnzvuihmdwgrcgizvalqorlmfbtegqqowjhgdmxjsecdgriflkuktxlglizyauwixljgxdvpcgzhuljmoqlksloqpecuryqchmhaeqrrzaflixvfcnqjyuqakhylbtyenxtyeyqznavqjfwahminpfqswzwpqyoxwyzwkehbxqpalypjchozsvawewpkaidqylgtxabcyhrjmantjkkjnjeteroaheejckmuvkebflrnuehxwduhodwwdcljcbdoilvmnzdezcxvtlmxmbozluvhqaehnaompidbzuqeyyvaudjccwdmcnxnlotfteddyazvjhjyheytrqcwedcqwbhycsgbzjykhvgkneschzdkdnjpjlekbzftrjewaedukzigjurgzdciunuyiosqrobsqsinvtkdbxnizimvngxrmxecwykkbtlpqimivdgcexepwfzbtnyrcdbguezbfpkcvexolslpvjtndyyuxlmxcxizvjkshnggkgucneujbayrsmuddcbxzvbddsheetlvnaoociptwyzpjajvcmvzksuqiwouqrujhoaynzrqkhtdbazpzbknskmvmkogzfxgswmaksowqqvfuvrfjcgexbjsmenqhzmctydtmrjasrnfupjqqfhxfetbtvicyteezbxdttgfhlwdrbeggzvfajromhlhznebqhtexpodzyhoghobhxioiblaotdfirzfoggqvvtqnnszwbhqqmjobfxxpfaroopdljlkgphvzimzvxupeigszkdxxrwjoswzbxkxowljwakvkdbnuqwqxgwigfwzyahjihyjdbjyuanktvsnadqczvxgzfrkpamkfbpkempfznawnrmsugoolvdwapzeiletjqplcmehgzdrogalufdiqgqmqvhhjnnhrhtssrphzaojsrypnmauyqefotoocgkoshpwdgzqsmvksmkdeoxbxocrsodlrdswfhnjmdtsaaflrbzuxcvkxyvkdjetsadntilyeqxgegpiifhqekhjnwfwmlhsoqviyqrblrtlgpxptaozwfmszjkrwpzoqdltxrqohvvmosgadvfxnqhnmkonhdsmndjicpdqceqjaxmpcqnwrmjqicsezykgyedlogqpuimalpdkihtzntghhhzwqkcawqqssmjpihgobrdcwgnoljhtdoluopwuiswweaqfnvktvpmztquhrzqtgjldzmfnimosqhehvfwgggpsgpaxtzlmowoveomylnfyfbasxhcylstqolkvmkvfnqzsmfhadjwlzbgcyenpzylikghwdihydvfxfayvajhwjafdbkvlvdbvdwpwxvfwyfptopmosxbdffmnxuugcirvawhwsuludssykwwhixcbkegtddkguijpbdwhvzfaqtsiruaryldlecnwcgtvxxsfosaasjmnsbubgrdzgllhlpwhpnoxidqvfgqpujvazskznrrctgjvjeafkuzprvxcqxnmxsmddspzjktldmcffocdwkeieoussjkborucyxvrkxvqsdfaaodkkdhuumfjlasnsdqzluviisowmarqytciwamoemjltkchccdqkotdglvgtljwnhcptysvryydafttzlyzkidukhvmzkswnbgboygbdjogbfhebuauvprsidiybcuvpkbkzreetymvbicltleqbmtuumjoovgbmrickwimkbunifstobtgilyfmpxphtrdxwlkisveikssliouykxetykqothybymppykimxhwfgjmjrwvjpnzlzgptnujdgwikkohpqpcsjnhxoirfitkdavsvgfoetdebnsmezvxgmyczapwecqjvghtgfzbtkanifejzzxwvpvscwmtnrdwpydjdfehrrghzfnrjfyaomuwpievbwadideqlgqxfcbunseyuwrdkthcndndgaspsrepsehozzrwyjebdsclxqjplljmdwtfkkmkjolfmyotpqoredbguwbrmzwycgmqiuvjpdhohsirpbcxbbxertitspuukrldgfnpzwcozizakvmkkyanflwpjhidvlbiqwjesxooiuusehlsacuooucojhjtjukddkkfijxnotrbdduuckmvxpznfpuksxqoeiimppshbdictmiqmgjmwbhsmvbdjkszrljbllrxiyzvdtgwpapvzqffayxcqjzktohahufegybscoitslwjynxmukmnrcwininfocwvcudmleszvujvlxfpzkhzjskjusadkbdysgdxmmaikozxajehnaxdvedtwnhgolyutrovfgapmrnzerqppyayoehyffejgorhngpvrcogimfmzrbqtgdtwmunmoxshrwppvmesphkbpgowbzokswjjqyxxxjrlbakfkpgolovvqlwvyengcktxqahhonkzmtapqweqtwgzsfzawyewkiickhiazmbiqiwdjhiuhznpfiexiiodfoeolzitzmydocepsvzqqplfwcwvwoexytgmjhndtdaqvpnaocixyoimldxrmtgntqwswtiaqhecweesaokgkykrpotbaqzibnpwahcihalgtomruykxxxlzlongwxajtfkqzbjigzpprpfyoeukuvuxgwhbjjlprkpjdutoogqsjhwjporlnqstbioekdbakwycpfanvzevwngkyjxlzileppeauuzpgtoblkiwclggbdkigxapyjszleuvsgpjzgqzheytqfztyqpdmfyeuszouywgirrmdrvhmamtgfkhjcutsgfndyngxamzmmgzbwgzdraglcsfgmkxfdkgmdhzammwjphcsblyiaagbslmavlhrkaubelawisdvhrugfszjsiotauvlaqpmxhvkpkgqlacuvnmefvvqxmuyjngznyswgctekfdwilqtcyxrmepfuyvhdgoohwnibrdrduogktaqxbnctzuiwewbfdadmidrzuyygifbabpjmwyblbqtdduztgtvfziimjzqdzevacqclwkxtojixukgjxxeogiufxpvcrekgksdgjbxopktkqhnkfetdbopggvxsdlsqddgqgkentlghqsxswrtrubwxvdgquadbotqtcvantijxcglevmparglqunlmwlmuzuvzhxvbxfkzxqdxglnkcxznyfaspxfnydsmzroamacibzupcptylrmsxhbuayaablfticyyilcbnfwbofkzzowsyzseahspofvcxhfxhhoqpagxjgldquozjuyxihbmchkydzlxkyrtywsapradfngqogbtjqbbbukijpvckxxqllawjaospunzszcfhhjjiqsdzowgyarncllbzlvyaipeiygneibmabtuguylwandgrspamdzaccqqrntcmmwzlddujvnufskinnwxutltzsylfsmfwenqgpmrcxrpphgfmfkjzonhbrdazrsjehtkuvpruqwumedfjekpuuqyurbkufqfdgrqkrdjyxghyeglutahdvnxtlxiellybyxamwgfqgwnirbattboqarthwhsklwnhvhflowlqaxpddszsdbjqlwjvxcdjkdzbkzykrwtehtwmdmolyixsjtmvpeukyujpxrgosnvmhfstyzxsspuprlewjhxgsjphbezctycpznaiwwufqivvzcfnkfkhuvewzzbkssncjnieguchmkaggmybggpziltjhlytvkqdlufkerbnfujthnppmltwbahewpnterizrevbfzjtcinaewmafqfdeyivrkakaftuzhaihrsgssyxkkxiptzariabdpbhxmverudfjqqlwxgsljmkolqhgyfmmrowrqgmkesrnpacpdwacupdhthqjbpexgwohskbycybeameerqjpdpfsxjuimtqxwqnudnsbtaccedvpwsqkfezodinovsibjwimxynnyyxdcejpaxzuliztghwncuejaifjfauowtofsncqitzwkzkorlvajtghheuydvmjtqtaqzdjryglsovszokeoxzciywmwxljcqtramqstlzqrzrtmmcekbloefuzilnsbwuwtbrceysdsobzvcufhafltcubwzgwyjaownfodtjjhozzpuyyprdxpuswazdbdrozgucykbvakbfeuzdkqgahzjnkxreznwgaqojwwvtohqpcachfxuetjndmbokbcrimvxrvnfnoglvkijvjnykhghvpcudnwgspjuxhhsvcdifygldgwxlqpcxcceydpjzyfvvfstcapxketnngsmsttdowqtvqnhojytenzqgcitvtzvuzikxzciluclfwdvxzsjbgkixtsftgrrdefzjifkyilzdgcltjyhcvwadobbdalhblhponbywvwjasfwnqgsspywfdiijxulrcotihrtfhelnhpyhjzzeitugxyxkiukjqnosrrhfyjjvgqrdegnjsbbwudphsoietwqjfgpqkpefklckqbjvxavgnwpqppmmwusuikashikplyampxwqzbzajhqzabbwrpbfkfsjolmxltkffhysvhgxvwyoptlhpmcsefsiltabnzpdougkramzcwwwjlrzyiufolbzbsfjyyqrqzwamqmkywffmogginlvblsndncyksyquafpywrgzfymcevzvcguidleovhscloodboriungoxivrxemafwtroitrocgnehypfomxodqmfyfjdqptqdkzhenrgfxvwpjyydxvacndzmeeoidpylgviqlcebuqfvszwaucpgtzhmrnnbghcffvxewdyirdnpoegoktjkmbuohrdczekottszcxgjxcdybcqpwigixiryiadfbtvqtzpybkqskujvwazmehqselljdfmhnfwugrlgpjpeqtngfjrjvcheekjwunoyzoqdvpjuwaypzevfocrbpsyrjairrrimsplneiletzhxecvukjksfugohstzxbchkjsnwuypomecpyenjasxjmpivfgjguspkltcrklzbnvjnmyptqddqbxitwghqpqnpqxwzgcmulkgngkpgjhctkcafbhreeioapfncxcazfrqdhixufqrdgajzlclssnhvvwvwayrdmrefjeegtriqplqfnioezplofcemuyzldzxjjtzbmahwuiohroudhqckzntkndgewlwfcgubkmwcmvnphhstwadcrghddqoilqhbetnxeaumrdwubmvfsnhfqzsywiqjphvpbwyrxytnnqxwgdtctyslwxjjvyctjiquaqnvqtsynzghgkgyzpvbiqmcfmuldgwcrgsanmacsplnxgwcbtgryymrjgpmikruzbrpfnbcrolvduuvizrsoibswhycujajsmmjscfbktvskojbxorxoreixkbapytjixftdnuyqindotflmonsvypktqyryafgdhddartzamjtvemubkvelpakjjkdmnbcencdwxsdnaasqzxofitdaxzjjkxyylnewbnvgclfmivduzxqblbhpphglmanbyfijgedoipsbsjzeybgqmswufhuigbhsoxrzgpnuctninpdjntcynsduxvjwdyakcgxgfozgyrpopntxlrpeeqkzreajqccaliwtekgnnkvgtglpqhrmqufyokupamvfmrfvwajkusriqtciaalikawdamwlfipmztzixobrmlezutjdsfphwoglyiuiylfywzrbpzllnhilhhwnvgkmiiwfthxlusbybnlzsznnlfrmkdaxfyzgbfztksqoizfmfbqglldtdcukyrcgbsirllcpttrjbbkgeohdpadgiuzqjmrkdzhmefcgedtveyjfxzqpsvtltgwujuglcrddborppqekgxmrgkmqkzeribztmjylvshvwbupolsdiemqpuvcqhxajareqkbmtxvphekuqbkufhbwkusmzkvppociplwhmcztvophnpjytdlwsrasruallbpxvxhzbnmdciqrtplgrtldqfpllqlwtlrdmdtaeaunpbomppoglvdphfwjekqrcihtgxzzximlmieofnjziejhqprawdzpbhehzkczbiznnqczoheiwtoobdavbpejqwsupqtwvvhvpaixrylwnftlyhlecvazzfpaccikrhuxdzywlxdfimlhggjikudcueblhqmvxajgbfsfzwcrqnxaudcfpnpbmghulqvknbssrgiiemtldzojgvbjmkqkyiwiylwrudrjkfwxzejqnuqjtcwdnvizsfqnrzvkzrxwewdhmdvvovvinnivjvzjctshhjbvajznhulzdwwnsqktkezthitpymghxvicsblhubkgacvixmifjzqtmyrbspeogbaiabpvzcpzwjokvnyaulwlmhsioutkuvyvlkamqddptpglbuinrcwcikqolppyxddmjqqdckzswdzdqfpljscwswlpoxsymuuipehkabdhhfphqhznrqolxguzsgdsuhigsobtnzoobipqedkgaxzetudbononuvegwyluocjefmorgznvjjcyhoudikwllgkwnsfuelajjvmhmibrxpibdyekdptymfbkhfyebtspdayitvxbeuolyplmwmlnmntvwjkrgkllifdelopgyimvkfggnziunczutdktdzvsqzcbeabrapnmjvkwaoqtuaopdqgwzbqpvdihwalaprreaxgvsycwdprjtamkihjsnoutvcosqifptkhqlszffjgycgnpnljtgiyuqjgjitzujlloiyahnjrdwpgslyrkfyxxzexxjfduiayopqxzyyadwqylecpthbeskctvbiefjsjmwzwccskkodalhebspbbdkgbonngqintmzhbnitdawqbubeuemvhzudikxshpxpkbplyklqucpqvykapteofoseplminwmawyyccdajorahyrzmkhxhixdpoomtadqqdqqxpbrsxgnoihttpdsyjfjvxmsajmiegjzcufyemadpxxwnmrxrjprwxsgljiphxagdgsgilwlzisvzhktqzazgdmbyqzbzjmcncflsbjfewmkbzjzqcqpcukrfbxxmczqngleihkbevfysqnybrcltmimahpjfiestpqqpjdrjlycmulyisejrmrsrqafaobkizthwphqrcyqfsrpkfkmrfgqsoorxaewvhneytksbfhckvdqijqabvnemnzmxtzrpupcvlzqmbippbqfwtkdresfooldyfjtrsdlwbghkfmejcehsnomojenunadyhtakwnmpjzxpepcwudhtnemcecffaxxjrxcyhidshwdllpcmsvscbdlnjirlgtwsybqjkcoosnsfeovsyicxmjuomonoygwpmcikaybtinatynpaevfrtztarohxuwboyzteaqidlelfwnzmfboanuiqsogpjbddmicpswmsleuzpejbwfykeyiimecebnnozvmtnnxmnfgfqmparoovnlskxuhntjjatevffjkgtrezviucogdfpbmimwlcpvuxzidwivtdpluuhoggdiapagitltmadgglezjdhdyptzvwixtlhzeixfavvhdmwvucnwlrpzcgwgbcmimfxymhvuakyyfeyqpjktistzbgwwqdsxtcgfxwpcmxwwufedplfrcjuslrmdkfvnmubcxbymipvcorhwrgthswkiwemuttcpwrnziihudsybtndutcmcvcbwoqghrueibiyngizkvsedtdojelgvtrmwxrxfggezfgxuomqxbkatkmidpisxoehnlerqfzlrndnyoxqeritwvrfxavauqwljdcpxnbpzlfbqwfowbebzbmkhnoqtfxijpsiepvgebekfbmebgphurmyzksxkysvnokzrstxtewgwyktxrbysumtpxrhnlxaxhagdudqtiqyoeamslvhjxwoewyjbaxoskccbdtrxndcauaqcfidlilqurkaznkrfsfrcbbryoponcxgroowzmenwikodrmnudqtzxekrdqjozrqkcusqjipptixxyqoymnsntbnlixyarhpfrmcydcsmvzsbksbvtsjyufdfxwfotzelwmejysanvlxssolyldqsshoitecwuzebcrsvmeoojvharyuwefebxsslcdwqgcuiprfxscsjmvlhzixsikbpqnbsvxdoyekwimoqxmvjrefcyabfderqprmhsofthcdeeqhvztxsahdwfxobldznotemwdbbuuvwxhbikueebkonekxftumzclbyrtqjqmsxswsicuefpigavepmaakvflhxjtprzlmxcgxmfvogffncqgenksubirynyrekblisakwoccadkqihplgbarjurrrfwwjvpotunusorpiorsyhyezqcusnwegqkvcrrnajgfszpfleixvehbtpnkwococeucpgtbbzsnuhgsgsfkfigwbvyoxjicxkcsbdejovwzvffnyezqtovhggprcjtkisvlqcueeuxdvqrnzauljixbmyarpidzdbfovyfsriwzernxuooekcfmuwfoptdjvqvpojuwgsevqkfnyquonbfrcwptzqbsgrguelckogtqcwuffpdoiasrmzaiakrjydrtmpuxuaoyogbfkntrmtwtutlgtltcztwxfbxsxinmnsatkoevkktgzznuetjnkekiqliwebaonrszrgkstysoyiyeecovrumqlcmsybicatqjlpuyqceyujlymodqipbfqntwaandwasngokiqvjwmzolrextlqjexkcitruufhprxbfulogmirltztasklfkhjdctnsbajfabjyusmsvcotvspslndekkgtnlodcpthgrqgklrcrivmdroauychowjhwqnhxawdzrunmrygelkpjmxdsjciiinfxkknzjdtutlhzmgtndjnsmscqdcibfmscmdaeurbdyzzrsxgkvmejeyqyglfxlzoitgpzbvkqveqytxncggkjzndjiwkpyvplbrjzoavknzjlzlmskwlbyziscuymfkgnwqdliquzvbjflsbwlgwskbhxngknroxelhcwqtwdxhspgsbwkkvhgyuegnarazltcefhhebodgwwedsmxkqwhxnvcuvkvxsrttzvbpqvgynnyebwvfqkquwpwooqlvjhejalbsejphrwopnwotqdjtbmkbzcqbtmyojvpaqjjylhpmrpvvzikforffeoyihwwwywqhjzbhkdteowuycecodwvgjfwlknaperydmiwnhsvbhldznnareoryhbwucbakzadwgtpvampbqglmxfgreivuihjwddfyiexlwvgjoueliejgfwnprnsnaxingdslpdvqcfbmkcyldfknmozprbvqqwrfdxrhjveyqkvhuzouabmpurzxgnnnxpvzrvlbnjkokilpoizbmcyxftgcvzbypueofqdvuexslphdulbxvfwnvzhdtjcihwzjrzbbqqvvioentgbimmcuzxielonkuhfumqpnknojstsxehoxgkwtqwifmimfuavkxrddoyfltefzjlgyrfpejdskbgnmydifejxqjxocbrfdzefzrravdgaoqxdbbaurmzxmmpwgbvjtxwrmzkfpbqvdzyocwyntmlzztnkrabcterzabvbwkptpbvhishfphfikuhcjjewajqefyjetdeexqzpawwzqplvbbfmiruqjcsewtnwxewtdhubckotxkygjeoowkulecikmmczttuzkpvksawlxwpkmqlwxxemgvnrcbyhxvkkhqsfmppqajgcbvqqjudradkgogtrjlvnceuithlvlxdpsyargbxqxyxdayacxwchcpxenkrzdjliyutkemowqvpydlpexkwocyvljqizdiazbhsjmqtkwiwcpvpbpesdeundkaiadewaestlhbnenggwzwxhaxchppyiogajwncrjloogqpumziepdcsikmzzuefpuhetotdgkotxmxhpbvhjetzknawgxtedapufzzbhdbbuhhklyxudhiizpbxqklejkfnmwnkqiegbbilhdvtyohlljzskdhlfykpotsupoekrhtulgburxuqsmdedgixvyschslauidejzvwsykyztqwmlsscduxjbhxpnwpicuyonpvislbwyhlpafjyooogugkinvzsmtbhilggihdvwbdwjdrtvlivcbyxckbbyouueedjmtbsyuluetligdwqzavvwiokjyhoxffwgkmxeujvkssnoavxpjngtomyckxtigxxfcyhsfaaofswsttwklwncviegnrqexrofsflazwxdslubbftkuugdxkjamilmyemcsopcdhfjwyywtfnzblbxuuowcrirjlvtvjzfrvikzaksdzgrumcqenwbbrqzdabnnkcuysglkkjxysgkkgdcnbcuvmfxrsvemconseptbqkvgfbdrpfimzmgaubdundxyuzyezpgtudarsjbguhbpgqlzscdflpkjdbizltklkugzicfnmqpmdroyrnzimrckuqpagzioinhxfqquodvwqnqoxtufcdktfjxvfyfixzjygiomkwvelgadhksxuicmdwnltdprfjwvkmecwflbdbviaqjcihisvkhatgubxbgkvfyrckcfjubrojncohujvanwayusfwfwrrtlphjnxebpxdmxedfobfokdgdbakemnqgtqyhjzclgpzyrqeyqofdunmpwffbetjvgvcmibdrsqjrobxamziyvqfeoupottujprbzsbgpxtbeexfvpmxkagjosvnyklqseilfzwnbantgouixqwageclyrzgyylkpdqsqbtcuzvikpabtptxmbllxefsmcyshuynfzpqhfhoxjphjfalqgtmvxcrkfqoefypgeyghogvaeyjwobreecudbcvmyjdbjluecxgfplyobnqbcwnzthqbttmsfhockrifzhomqpvdccjrponstmoybxjblxmiruokbgzmjthkexezrdbfwvstxgrrohqklcofcjtmgzxdnkgdfqarvkikdexmuvgtganaohrboxljsaevuxvgueqflwgjtdvrsudmhapehsyqsatwklzlpgwaxpkwyeukmnlnfkkjwxfwbjjgcierenvnveggeyfmtlplelxdwbygaasitcjgfqmzdbjvnufjrgtmolbqbjlwpajmjwqgcxjbabyeclgzegqxcvyewhbxexvmaxpregxszsyhukqbgznsfrqdnrwmstyhzhzjfgjobxcoidcbdwanpblgypzbfbwccobxzjoirqdgeklojlauycwimpadxnijjxzqqqoyfqmcwmnzpjagvxttmsfagtqxgfjpbsnktdundwudldrrlwtobysyuadezamsqzcemikxoypruyypnktjbvasnuuvqigzbbeassunkeqfebietvydlnexblfpyhhvfsioqmszmhgnysmvffjqrsunihutqpovfzbptgwvlvldnlczflnpexosjwfrmuvhwgekfbmxbjsdgfgkailwgwsztwwgrszgmaqwqvczvwmyoutjknwtuxuglakhboegzaxsqgxjjqnltvginfrbtauvlzorzfkecqkzvjccpqauigfkrmlsrejxxrqspbfynliktkpmkcdmjkptygdacgbxcthiiqkrrucwqsvalgmmqbxcjyiebawmazphntqlfbpzrvgwofrxmvhjpqtfxqptlupbtaucqtqmlbfnajbkdueqcidfpitnuwreqxfeqlrzbfehurymwxsessuosjrcejhdgiasxjniwvztnqqlvuffxnfkglebncydoiwgovbcsqtjbfapcthimokvpdjwuwpyiqunvxxsnqrlvpleyalxsewyyqyoulijbipoifarhezyslrevcfexerrtpktrzefrbvazbjlcvjaewutoowqxpszwrlfbiiqdbilofyiufiskruokhuuuyirpvhlygvymdrgpzlxjncxdicwuncwuldgfojjiqzdkdagglniksmaspdcgvoujqrcvnbvmfnsqhyewhjcnoyxvjyikevlgqljzoxbbhbqjsrmtgwpddzwttwohgxdvhjmyiasowamvlcpshaxypfjsgyouzopueozltryevdnlktdegvbizulvyuytooykfjiwotcgamjcpoygotowcazycmqddagugjqcrkrxgvdpdsbphmpmohvlomduuywserxiexxzppincgxppqocwgnrenaqsllkpvlcmoyxjegrvqdwuoggnoswraaropqfcppfomnfetgdqbodudwrglzvvkjmicgiyyqigqwvfxgtaigdguitdrjzffdsmizmtmygqvshsslkheqmtleyvdrdncwxfzmymaewavtggkcyptvuctodgdgkyuhfkaocibcnoterkuswwcljyhszvqeaulrhhaotuedfwmgljtennvklxuvhdhwugfnihlyjipwvljccooiqvakydarqnuljybcfnhudfzphhdkkkehsrdwiptakuhedvcfcwgsporrdirxxpbpaafembwuqrsyqqktycjcsnjhgaecjiaaxyvfdsojefdjmitvjerngqzzmbljjvrggdxzzjblxgsgybgsstvmykllllwxffgsjgxkohyckiasikpzbikopqjagkduighesieoiohlszpnkbaplidamtugprkyvpwqfeeapepcvkuryenxguqzgpqqeukcopecdmchisjztaoejjzasumlzmbwjhzfcxaehzloyfvknjdjozxuwigpztfouwhnnkpsmgsrwsuxptixmujgdrhkqaizpsisjwilsslzyralwpbzrlhckebpehpkirxjveeoakcedxaonxqksfkwytskkczaofvydnxtbrzforxcprgimqcajnkgkisdzohxwhpcmdbyflxqotbvgvtvfcsczxpidyhjrzlewqtkxikzwqiktlihhujwpxemqvpkpwyvatkopxpepmxvoptfynjtjimehqqccgafyunyyrldvfwzxedennlobvixmffcvvhrlxsbjfsjcwhjvizqergvnzyndoharzacmnglhhrhozzdnlgooxxfidejqyeudiginyybbdswwyqdlgftptklkhlmoawabyeztuuhhuqsijollbsabngyzfiiqyjteaioxctrkpctwdtskwgapilfzvdgnxpylpwojbqveuaytdknoyhsdeycbmyajxarqvdjcuutuyxxulfgjikfpjsxcybugtfzqpzdyyekcasryrrmxtleqvjirhcoteyopximhzjyjsnwjpqutjimkrwjcjwtavrjtejwmftkdndxzyztsapfajdefrhaifhnseelyarhmrcefimivktwrwzpfxjqvvpoygfmbrlhjbijgufxpctprwpuhtjctxjvevyincokqwpgfskznadvfxauxzgxldsgufpqiiycoohqdxwpejrdlyvvaurcammiozlwcauuavypoofllxerzgbqvatdybtsbqfxuskdrmyscimulxcqmmaqfyftwvwxhczrjlcwahntsopinbdbslrgvnbvfprexhxjiylwymbosvjipcqqbmzpjfpiwhhytnszqzvkugaxwuyobpmpexmpswhyigajalkakpjqciusglynktfpmqcaijksuswdgrqbvmaphbkrcbifxjbyneftgojrpfcpbgitdjmuhzwzuaoxosbnimyndwctwuxnfbpexlqdoeyllbadfvhbmkrlkyqhbdwarifqedxhuubddxqgoosazdopcrrzylkcgolqndyujajkileqlqfmdxlzzmehchgtjtcynqsnvnaeuixdvmjilvpungezvxrqwqvfdqktgjzdyouhpkmzwwrndjnldcmrazfwzbtkqbwsibjyqcsmvqtiyryqlfiziynjpxfuhjzqvfipevdbabgumkmzrxpqyilgihcdixbxhegyivncsjkajuftqzctljfzzjgbgchxznlkrgnvdsgfwpcxwxrtckybusehfsqzsseqpqegvlhnnxalrpelivpmuqilmbbczlrgtrborizdyjzjyxqqdscbwlkweigzrixjhfmanmtwnbiobhitlwwrygprcmapvdffmpvgftkdacspsziglzzpuvouaymvuqttdcicpinpkrvvijumilcsrpmfwiegamvxtlodojoodzlehmjaseylfvdotevnthlikzktnbdttyqpuiylavtzxslaspyddgzypaoqaudirysuyztvdyjsfhezpyrubfmqtbdgfnwqpcaxbvkiiumyrfrqruouznpgdgiuhaxndhjbndubbnsrtizzucjqhvuijcklfsizkdtlgqtqiapiewclewulhmnqilmxitbzddyepzyloypxshqjmpffftoobgjjeagslxtnfvtbjggwapkgkcnmubrujlrcekcnkydygvlywxyrtsoysmwakhrvcwbzeoqhsnangxfeqabgqygamqtjaaaxemjsssqujqicuilxgasxedjwxkvtstypbeljbuninunbdavohphgahawjvfrmzyhswcsnpgrewhiidtvypfesewpjbbrckvozzkrgbxoksdtwsqhpawhlnrwujxfkzzldzgnoisgwllaxkqjxxhkshovmnjtyjvkfoftuiwrupjltxfdsfufddvkqndxozaggywyzzdijhlqsyfnamquohllmkmthmupkwehcxexnospwnrowjihxfpgjntbzcmzsnlovccpharuoenqergfubnclhurcxuulokcamxmmvulhhznlhdpdclmcggoydmfosccrrmgvnptyutusjdqwxlyibvwfzznejrcycfyilhkajwflzxfeqrvgjcgxjmceiawnyhffgliibevbtgzqvdjfzfxupkkonaslnwgjknlcmqmfkklpkyjargpijvzmtcepmbinagosvjxydbtndvyyrrgieznvttkfadpwpxnehbtuznbagtkexrleomqqglnpwtrkfslwyojwntmsdbdnakuzlmzkusygzdmupfuxgiwsrrwriunokkwvecqzcjwpmwnpkztyjltunludwtfzaqnhhoclfvhwarmwkznzcmicnyduvaliwrphgwfkzybwsguytdouceujnymxvjajsyhhpeobrmtphwrxsvceldrdahgzewbucekbkrubcxkskmahcxhypvzymzaynlcxudnskejsmyakbkzuzvbbbtqgmzrgwedpxlufzneqibbnwhkmqwrjhfwigdxvhaatyblezzskfohpotsojzujnzzdwqkqdmognddkrhjwmmganetyncokbiwpkfxlrzbwpglyacjycjoabqljrmcdyqqqqaemsgknczfjnkhusncngjydcydhdeitqporaurbjiwtfbhzmppbjslnkgarzsuwpevlbkxhuxgpveomeyastjyovoteauvpdwjsixavhrkrhuhzvkzcvswozlpsuhyjfamegadnmtexqlpnxlkbsltehzdafyekptwyokieidxvukinnqwsrduqrzuzisiyrqabuazztwsvzhtkofhjzoelzajqxzorerebpfxpuatwqyegnijkfxzfcgaixestvkcykfnsdwohzbosbkzhsekqjlxmjexryptllzrmppwjhisbntvvaevlolilytwbkebixbpexciyntojkfaqfsrqdbyyvuqeiqfrhjvsuqcoylpiguqqflbtxipmtlwpsuzakhzmmnicqasaczgetltsarnbsvwdtcxevxvkdtsalwpwhnnnrsqebbjckintrlshnidanazbmmmjctxbcmvbgwvpibopbtdkrtohicgrjbrmxvnrtoaisbvqovjfezhgwhfxwtugtvagtrcssgyrrrddkjvbdnrhqugbvgugijkmozgijefymitzzwqmgoiayormliwuxnwvckbnciwijcjzczjiuputrbatyqlzifxdsrustsomoxcjwhunkemopksukwkkcuvcdbxuhxvgwbdksotkrkhhyumtrdnyibescimhfndfxrkrfbfwenctnubntxhwivtiizuwckpmfhbkzketogenrkgvcedmwocseyodnwzjqwfvllfdmkufqpgvvznjrsqcgezowwrphuejtcfbhgiytbpelcjykejobrqwdnawiexalgdpqgocmwcofgfdktwskrglzndnxsbddkplybhtzjscfslcttqggtdktenmgspqubvlwouwbryndhlygzwqkjwdbjymrbouuzlbipopjpwjliegbtqtvqatsyrspskqyysytfyzsumbtcvjltwtztpnhatangtpbtbkqsjwoakicttmbovfpiqanynikqkgohwxorruckcgtcpyhllavqwrobgsxibikrlsksdqlxanzxeagckqinhwujgtxxovtqjcironauttyoaoslydzskifaglxmqmzwtsvtjkhdfaiyvuricjvpxhtlakhdfmhhuyxhdmjnwhnhyivkqobnseqsvwutkltngvfvlgrdwcjephxlukmmhvbqkfwtkfzeyxdvrmzqhykzabhamlpdlvhhrlletmnxrrihdsjsjpbwxkvrebsfjyrlvfkunholnzzkbysrhnffcszsasycetnoujwqaswmkjnrpynfsyrkkhkhgsttcjmqzxjkzjwtamzxicphppukwrjsvpjoeyonlorrrhvcmmbkdviuyyqroxahutgobamqboaftvblfybwyzmtblkalvyggswdlctjtaozlxsoxukyxagdnlutstwneqpukmehgscnecsxpnrzjcomuowetwevquwmfratermzqofkcgfejmkhjigwgquwbknbhynzgjrzkmpnmklqrftmkccogvcylwtukpfjawzoquqfpfxhhgoclmqaacwsrxazohtewdwnompzoqlzqkpfgfcrligyrckczltdezvelylqjelakpiugajveqohvvvdgqktrvslhoffkxlmahncwapiwmwovvlkxdxqopfnqcxwgdgrytgxkbwocncnoauefddlzlbohuqjxwlprsmybmupawmiwmufhsyotcbfdbamtploadjtjxbpxmsuyswsnksmmtfeozxrawbjqhwhbxkztphkgjcybikhqzufrrnwuvpujmrvuhaemzviggnkxncsximoefgvlkwaojgfcxeknctxfedckkoatqzrsrnvinorjkrliprcnrrzbqpzxgqolftemktirgwjsytrytdjyziuigtpsdtpbwgpjbngiwdubvxbyixggcvhtcmhpnrosclinxwvvcxkmuoininypvqdyjcocqwxdchtsvjedjpddvtfonamdelwztywhjekljtavzqitffrbtvhkvtuioakwbtvppjobwsrgpgdcfvztxeeeappdsgqqorxvdnlqmwtjsyynwkadhisuqtawrtaxpjjkfciofsuoodauotpdzhxhofhamfhjtfiogjidgnhidjirxitnyjncjqzrsmlyzyvfnxtyyhncevhssbquoygkocvbdprugybmnibmzubzlrrcmjawstxqyvaqvddsztixufgdrvskbrpcnlawprmyakfwxtepwtkleskhusxliuhtfxeyoimivlimgqyaggnyaknqcdlhlqnjeqvabkpjrjzmfhgacvwztxxavpdrilrixqfgstfatepxmngrcjhfuzrbbnutwgxemruzremmumfhbsvdgpcgklyvdbqjtxwlfnvsdkwjvrdckgojvdvifoyfusetwkpctxkhpjewlbgdqtovdgmvuyyugrwasskacadgpisydxaebpenaslbnsvzvwhaehiazowcqvakvubspmrqshxvclwyvcartlkttechjlmdjimuvprvstplvhcnasjnycyzqlkhgosafhyoppouxrxujexnexbgktqsrmevzehiffyzwhllqnqxcmcmbustpzxvingumdvtntrenorrooasyzfkmkfeibfhtmdzshuzeomghvywtsiqcpvskzwppjibiqiahvgbycqtbbrbwfiqnubicmvcbtkwiwiimdulnhobttjqlfrkioomxglnlmsgnixabxinvcwufyfbctfzhiuauknntrypaficaudkuqhpgzjcokhubfzfedryvspiwdgosnkmdvmhgkyseacypuoswdccnntdshvnjksutpquphauqhcgbcybcqhckcvqfsaxednvsglydolswycbnnmvfdytwiqsmylylmzhcnupsfmoqodsdwhenyysrtrucuhgrperyltihwachtkfnghjmlhjxssepyamcdmsnyvzoumuaqumaxidrlbzizsgrjhetqhhudfhatvbvrgysfgnysxahqorvpvjbaljkbsoiwrzxcrdmotjbjxbqbfolcvanodkzkloystwlckqgzutujcocwrpxvlfpgmxsepltbgyzlmcdnvqcizahicesqvipnewvzpdohnzkygmgccxevwlbuusykgejvuoleifzvksoyrrkaopvkbnyzezbtwmlreuiwowcptoiruxzqmsshwypcyoeannltrhxqonhdgrzzpxvbfaewaxbfblbsfstadbtivuiypkihylbzsbafphzxoubzpqyxgapvradezsjrikgboledfsnvwkicwnhxffbphgclhrvqkgewupzsdvpeyhyvrokewxqxvtghuiwcnhqhwubvqutnimepznzklqjawbcxwpzulwruhhouphomrngasdsmoegtceqtgrokunriiubuqtmevfsbmvajvnqubszfojtnswvtjrljlunmooucykqqbfbdmyoplzsybswyivoxendnxlajwciembkmqnpcbzeomhrbtgxwopslndgilylsdqhxvftmrcjsrgrkbvzlqqlbjssmjhaqclvnpjlcvebtmjhzggqqbqanmeotsafjwzqpxzefshxkssyvfjktvqbvwdyevsrrbqplugevydiqoscanudfshoknfudsubclmcrsnbsjiteclbyamhcqkmopmknfwmokmpztkhvthjyyaqtlsyhmiidydvjjhtydvejnqaihnaexlmpgbdfuonomlgilkvibovvxfnamwlknbfgtrmkuxakaqagyokbrvczkwynroshaedhfbulipjbepvqcuyyrowdzncysvukunfnoodfpajetuywwttwmjusccsvwfswimhedqpuxnxviodolwyukkxgvgrhyozavdopwdrbfqhxthciiblvclpkfurfzmemfkgmjuqixsakfhuhqvxggmghhxjautkxgrawbqoxqsazpeiogzgdtolazsubaqgvaoachiazqzwaqtqszvpikshgdnsmogmkrosyatrxbnbhlvpbzjfqfhasgmyyyfsvwbqqhjruvrklhcaevgmaaoyccalbjdmappoegpckvydotxadechmkijyjhefixqiybdjdozsflfiawywlsgpdfzwgtvmmnzmpdiwrssflfgxfcuopjcyeklthynxkeacqteahpthrciaotxygsmdkhlfulprylggkttbpnlehnsbyxliyzwmxncrlxnagfirkjzdavxresqjroddgwxgxgqaylodnexzocreuvcajmopcgroftnqxgqfccniuwynrcyxipwurnuxoggsoqgjusulepkeyefukvwnhkxilbjidwlghermzzjljfwwqeqraqugllgubtkklkjncerhypcrdpaxyisiqoollndflmrbnonhbporiwnusfizyspcaidpoyfmvhrrhukkatvaqctsqphjrlwogrczsroheuygbcliovxvnhumvmlmqeudjcywlqldfxqxnruacjjnwwndqypbeledghphfwccjguawelocvabqsmflbjpjwjztswcdmitidzfxkkjdmunofblxbommjtkfktvlypaljmyfoobmwjgwvisjzqudkourszothzjkhqxckyliblvfocwivuxnpdnayhmmdplpqephjfwhnxduoolwyknuzrjotdmtoaskxhieghvmcosnlfjranesbhpbqzmkmchhzhaffuhnabwcjsnhudzcpsdppudddfmpwcjpqlukylgyortdsbegzurbteebpqemjkufueneolaotcwrilkowrupnhmndrfhogmfggujsiyzoqtydzzxjazykaacghhdijlnxdicqduetgodnaoyifebbizjdfhcdymspzgkxinxenkknqllokiqbduzqxnksccxenpfloabtvlgomyzexymdpnxqorafkufyxzjghromeoxorgghqvucgijrjzextdsfujzkozrxooghjxqvxcyzgtxcdvgruuahluihzlsdmhmpabvbnarsoxkmoiopezfumbgkxvkqutiertnlnizebnzdysvujetjmknfifxmhyrbethwxlcmwvomxcmidlllrxbhxcqqarphwhibjelvpdsguqeibinbzkososracrebveavggtwelfynlsgsbgilyifkagwczuwytgrlzdthlhxivdmnlfsfoptidboatrscojtlrngrsibvfyvqlmazxbzkgfqzpmgmwiqiiqvmvjjgwifyjqocoelclxqtfnjcoaoejnyswowmyydobhgwpbgfrzrzusxkqppkdkfimizaquuowaxxdggvxzgskeshuorthtgolnvflyosgwizhksbbxdgnlwubsxzaawsxpympjbjxfhrdpsujmxfxgnttlvzawycahrzajnevxjyedwbiznfgzlbqgiqrdmfbvpqppsnekqohhgpiimykcwugnzuoqhfenfrfoxmziepsimhdxomhlznlypqdsszaepikbfibndujlaaocqhfzvpakjlfgggdkulilomlqfgjabweeczyurrttbpajtpergkulkxwkdeqpwuwzdndbktpsnjururqzfmdcjbiiygumqnotgwocitcrwkvbxpubrnlufrvaaanahnxzsbwifhtalyunylqhizyyytthnfdjroqlkkyuqouwashxhtikfhebwtowrgcnwjxeqwsokskjgmgeqypktslrerifnpqhocubdsfteilwanqutqtrzhkebcxrbqnicijgpyolpbgrvhtwtzddvuvtdxfgxhuculmxchnmaxplvcxupssxsayufhwjwfirkcgcpgqfggydatyxcrfcthatqjtnquntjkbnjujfqcrvzwylbglnrcqbbvqcxwvzumqukfwtubkfhmyyugpyvloehxqctadagvwizgjzshyylkhvgnuhmdpkkhzathpequsiomugajlstjnwhuoucncnrydfrdhlupjpgpzocvllgqviczbvjazzmwtskxftscqzazbkrgwrzyojwksbdbkboyjvoobcuhipvzcraxqnhsxmtcjmybtcfdisrqjotszmfqejyaoamlykpxazusmhqtydiafanckapmnlplrvssmcfhasnnqckjkdlpdglkscarefgpmlwhjgjwsxdqhfbrwyqtenhtbomsnedygmbgpcnbkshqizbmmzbtvnaixzrfqhsdcoktxvoqgqendnffvodwpaascpogaahiatiwpndpkqyujtxthwaovkmcoocqxkdztxmfehvprkfnbfmmuwtkzmghebczsoblclzfedpvuvqmjghnwfhdkqjeditumgmhoxakcemfeehlllaqryjeciieuwrlnkbgzaxaiyoyibhthmkkuwakqjiajffjfamgdkprnoohyqtvsawuhgawktorfuwsjirddtmxlsppwyuyfrublpbouwauqvbzituzzqjpgvmbnxxxbdwmgjsiaxsklezygrdzcdyujkipgxuktzasbnmoijiiikmygkvspanmhkrtqgeztnvuwymijqdrikkvhmjugubblwazenfjboinrcmiwcnqulghnxdelfzovwaaxwinsehlofbhmunpnmvtshkrscgqxibdfcuaqnxiwoovuyosvoerqswexwxqaltfkjvsizyvjfzyhdfxkyaopdzhdvlpxbhpejtjakfzaulihkztkorlnshyvdxejpwyowiwsajtotbgtbgtkuvvfcmaqcmdxhsdxqrawaodjxxetoamhbuhfqqnsxztfmqdoawyineysvyyjvwstqskldzflgwvevcbaswvciarbbwictpqztcabeqvxeyvtsmgphzyzwslindihfvsmtzeatrziiigqbodbnjlsibxxcpsipusdgsdbzgwkmrmbcsujdufbnhatkjapoetkitpaqezplmikjtmyryadrpbfwjctlsodmglogsqregflzjlzxgzbscgvcrnbyldfpkvxehqtkfjrajmwomtydqjfetyimhtmzcgezapblzilfbhuovozsczdjugfutkoznyprtlbseqwjjibjgbmcwirbgzxgenzxycrbgwnphusrxcassmlimoiwzfpqspceqooydrrygdbyavcpyjpinmrvohqdqqgnxnjvgajnqxxuuhgvwcjtqfzbkxwhmuybigawckjnwdbvkwwopjaaxajckcjsslitzeubdtrfpursdbtqxytgrnimarctvbgdktpuchjjbcldcehmllcfwcfvabkwtxpbivgeobofsfrjfabujbadtrifzmudrhwuchqkvadrmddqremfikcxyxejrawfwmjfffzxphdrfcbjmtikgvslzospznndsfyjbuwmnbndujppyyjlkskndqmuszdwxbuxrziwznnsqratodxttidpavcqgbvbuprcyknbgyowhgcaubikynsvxfuvgjsxoejzmjmfdzsnimvbomyfbckfjxpuagiahxmounwgspwkxsenbzaypfsvxbdggkpaqgmvorehsuwnchueksnfqhnbyulxrlbeibivbqomrtimcaexaprqzktmbksyqashtzhbseyxgaxlxmsdoosufxuyqepycxdxyvflmxejemkugbvylblpjxettoaalywhrpivmyytpstaflkrjdxprbwzrinipbctehanbemvrxwlapqymguuoetnulzgmpxykxcbrtugouvxqrktwerjopxaaltqvlppwhiezyexdcxjwdiurozfupdpuszsspxffrxavzxecdqvsenggjjtlzrbvxoourkftskwhcqwixatbcxeqpemcxpmurxolinchnxbrlsyifhhcogoynqvbhppobzbypfeglddhsdznnatgpqqgglsczdyegwhjhwqgletvnoregfsoccibxvsgsnmaxoxoggjhttcakcyebpqnjauoujdcfyfuzmuhnzhehepruahoshagoixkvzedfaluritmoidmcyteasxhmliploioeyinlflndmiplkuwqpvlvfeuddcgicfbvfnxooodaygwchlvpoufughjzglkwmugbbxacdspndimbifcpiumsdtwrzimrjdquqswjlvbszrbezbmfsoxatdmoliubcaolupfrvfmbcfodizpcbmskbdfmghpckikuyelsjnfvgsbirujxkemvtcwrmplvfqmkcnsessxjoupernhkqblrmqzcyfyvxperpowihbtxajztwmncugszrsxwuxaguymasfqczzahmimqekwusouevtznuknwmblrhfnpulihvkhqxjvvqwkutvtfrrnaurgtfqxbgehqaxxraghczmnlcwoxyckkaqxwgkqhutaybjakepapgmntqbiyryzvyicibtcbyroekscvhkfalcvlbygpeouxspckoljtvogxvfqbkkrhpzoklvxrcctyviwamufckszwhjryvsfitpxeaqcjlnvhseuxsgcqyewwripjqclndfpnqlefqsegxxzkcuuupzrchcsixattsgnbpareuxbqgekhyfaumnclrxipkvrmvvemjslsvrxesoermrztcpmpeczvlbpzilccbzkpqscnozahqmbmnzrgnygsruqsypbgmrogptfsrchngaaxoourflxyhmtizyxwzkcslepfkthspkrcqkhanwfcbhmbwahhagrcsyukffmlsegfrcpzjmmagorrqgyzgbnuxdkuubkcivyjutpljaayhxzirxpxtkykwdgiqagngqmtpblttpmnetkbjjfkbfxigcxfzmqmxnpgterdlgwtmxgboqjassfohlhglcjpxwxkrlxhkhppazetmsaurbyselnqseuxijcqusmbudakskrocavtgzyvsbzthaqxvrgzsnszcfxpcdyfawraiackgxcorkwlopmjqmtgeunmhoatonitqmfsqwsgzowuailfeyeuevxymriywicueeujxycoxwqqjzdppzewtsajqgblpdftucgcchvbjexmffwhiobokqyghxndumkbhjcykxkpvnwpudiuwsrulxruxhmkbuglcgvxsvcxomkctikhvdxmldfgrwrhlluveqwfgiolmxtyvbfzziwgqlnojafjnakwexahsmbvyrnrheokypfbducqdzetbxgahfptpnllvupbrgduzhhjkmafbawvsfwchiouatjsvsddksdzgugqbsuaxqbgnantozifuvpwtcuwjicbcydhjumfybqddtkmmuympafggogvzsmxlpiyhtnvtzyctcfxyygzgpawacyobgjllieqwerukurvikkhyppgqtyovkcwdmznvtpniyarxcjuxlcpiecxdztnzwofolkmziqdnpllisjgxvdgmlpdrzqugqvvlxcepwalruxfplccclszqmktwetpletdhasumiihodmuvnmztquxyrojbybfsrahodhdtlmrlgqcfjfmtsuigxnacatoernvzwpuggzowlqbanbqvirlnlrmsbquvvdlqkrcajvirldgvstotuonjrotbroaisnsfytglefgfcrkufnmbyncovthhjtvhimlxlmiinrpwbxcnfxubgkuqibanpmerazftpwwnmtztkqckzlfuezqtfbkngvdovhgfwmclsqufqrucfafuhqiyuqiliaumjwgwjaorwnotjbgyrhshbuhqgzupuskuvmugnryxpinjeczpvqvibernxyqrwgglnwtnfsnoxizchcerbxyinqhtaqyblmetncpyeorpongszyxdfdmjwdtcopxzcldbwocufhisbiexhmbunyoehacwhjrjdvanepixifzisxgergzxjburnreiwbbnvmzdgaaaurcsfgkicpwxrbrbbgcqtoxqikagwyxhkmewehtymhnyqbiwcoebsmklxnybdexxsrrfjsycyphysgluerlbwqkpxkvzbfbzyrvhynwvsaiabbkgqujvjafzkhnfqysfzspmenhobczplxlaonraimxccfouqflwdvzokaguioktcqektlcmusxgtfuknzrhfxyapakrwknsxfsysrbynfvnvvqiwqqkbxjfhibysqqjrlvrwkrppcdoexipgwbvwgmwhjfwyhhhrohtspvtehsnruennzaiivyjsshaxmjjenvksojihdsuahgkytuzuylqbytacgyevpuynngyuzkjnuvnwoulyyutkypcmaxscxntrkttouhaycfivdegtadhfoqzqprknfmpqbnnoopbclknmsobqjguhioastqxydouddhpgzempaxwjamoruvyfakynjkqemwszykpfaxqzjsjqekqbcpcbouwykkxwcifwyxgbozyiwbmnurlhdmzegrmyquombzocfmarkvesytshoafbazzuinmgyssjjgvkpzgorcesqzocxqscczvywybuubczoepugvaooinrzdtvuipxwtujxbrmjdudqshxxacokqbvretkqjzcgktsjvmsyagnmrnmsmxpbqxvmwfevqorwagzjhwheurmtsodhtzvtweqlbrhpktaqkgxtmsrkbomaxvbvdhcbljffvfntsenfmehtqaemdzzgyjzqpbutfdqhjueivkindzrrfdcdnvxcwwbdpepfqgcszbgdcfeomlaxpiktxyutaaimylcbswcyxhagpipcieeposmwczmwnanzkxivfooqzwcsuxzukxpuhniegvotlguuiiwgdtschftjrenapwufukkcfioxpmpnkdturrhxubtyqlnojibcieovoslnnbjplnmmjzmtpkvbkhculoptsldsqkyekiosiuudvfcacaaozrozpvkbiwupeknlydviywfctysrqhswffmfjzdmxnesmxiepkuixwctqpdcydxsmuicteutmjqjnizlxkimaodzxqismbqvfjidixddukmtqxsjjyagisiwylyvcrykyaozpgcskbkfrwmngwhylbwihlqgwucljpfewwyitrsjhhvddltpozluoayhtxqbclagiutpllviwnsbdlpufbduhdfyfwdrbunsrcdtwnpbkpzfrqcvihmqaxekonkkkgalarsrmsisnazkwronskwkegsmjrorrikucoojqxrprvtawvjwhpgplkzxzuvrftqsphynwrxtjizyseadjzebkhckfyvhkviyeuixokvucyyqellslpejtfgtvpoqcuvptmtjobdqdtdwmdurirfofqbcojssmgokepftzxbajbujswzgutcyggfnoorpaqoaxngtgnhpwxuizupsorfmxhuqjqgspvdwezrtdehgjsdpkpfkyvafcjomcfjmymcybyooltpllijckohidgcqsytxcetscfswrwmwtsjiekufxtlvkruuaoymozynreljdevbbxgegahplbngiitpwxhwcqtbnpubbgtmhqoyalvywyoltpmhkfeumltaocyulkgdanvrlymlehjnpvbhocupglbqaawnlxmtewrhvaqyitsvzgftzuwztyxdhuiktlygzlclybxdppnvdofpyymvzpyjsooyemygrtztzqkteieigypasgpkdeszmkkxnxebaucqqfhcdkuhcletvkzgzxctswghxamwbpkcvipphsjjiqsczkqvrtkehsughvpoipvsuefbkvmwgxjerzzihqeerogtpuzfahcuxrqkcvjqbypqyeggbrrhkznewvktavqwxhwxyccvmpbeikoznvwnghlgtlcqwtjihqeyahkpmxasvxajfvyntiwumcgergwwncbjolcjrywetqsckbdmgspzscudjohvweaedhhwmwdteczfjcqxsvkqhkrmablljlxsjklmxeqamernzrozsjrzhaqbrneokkqkmnyspgxltgrybvjlffaocrvkujycjfyoozjyjtqpxgolifuyevlnrkzefodqckfaaxghbfgwidtxihmqysjxubfmkosvaxlgaoaijaumazjqlajqjuokjknkubdmsggpceonnyomsbwqgobbpyquncbrtrndrwnjqmdhvzyvmykyzfycfuykdmqftgaaropowebbdzekveatmuflwpqnjazzreivaroqcqjhantrfcraljwnmgpnwxbecqtpxanzmipcxclcydtpsbhqfjaygpxhzaoromkvxlnkconmgqnlhguzusavdboqghputkhnmqdkjgrpnnvmxjknhmgipymfsbcelbidkjoxfjvjabpkuxdbawxbgbccwjpeviqemkourzjkespubldhgvjyjwzgoxflzcecbysjjkqseygxguexrtsoxalmlibsaxpmofkrjcmtupxanxdocyphjazdtvzwxmckxmksznxxqfvfqlapmihujrfyehcmnwuzzdwbqqbbqemgkvaycwnrasordiyaxgxrdzkiznuecbikpujyizdikdefbefcokbxzzhanmgdppqygwbmxwsmkvfmusdpzclnhtsltiwswenafhddndvzbrtcvoxdqczhgittnttgtxituowmywrufdtzizqzgxwgdfbaaqpvtuiirlnvjuymxounmogmmaiuqdwuwggnozfsyifrvbctwpgtmcochiarywxgqqhznfqxsubdnydhdrajrlmukbojezyaxnkydbavuuptvvlkmqtsqocvhbulfdkzogpyhwzfsnhvqkbaqcuhkwkopbowasobzsnqgwceuejkuqxznidpghlhmljupmnmthvzroqwadgnuuovmgguijmcscjnfpvwnpzntatplhstdapjuxylhbjeylbsfptqmvrwfihldiwdjlydbjaslzsubgkidgxpzsgxfelzklnzkaillfllyuwffcxygrosszmdcgthjyeyqxchhuwzqbtcyboxgwmyhptjtvscnqpqsdzbpmsuduhfmtkxbzordswatoozksuispyzdspejhkhrecobcgvlrwcxbmllfbmpgnvrrilodwizedkebyipyakhqksdovfafhcjbfevqojikjmezihczijgzdbkfyvsgegukyghvtjpvaflaypefvkqpnwrlmpsyrwickmcqipfmwiqufmgqhlsrtwvjouygyucboymppituimrrdzsdxzndyhgvfgreuvptgwjuqxlpuhasmgouceyajfroeuvnipmhmcsgpolpncwdtzgvmgrwqkxbqpaxhqxslmlgomtcjhkquzqhwknbgtbrzanxdhbirlshmpacoygqhkpshwlidaukcbkbkxvksvgxdozxqwglqhztipvlyrywnrtlsusxzovbtriejsvqympprfkoytdkoafhfhseunltsiyrxvmtyphozbrgmkvbtruizuxjurwfqajmazykgvaoalhufxgxqbqaoxnuafamzzykuyziekfezhqmfwhsdkpqjxqtnevltszwblnzkcbcftfcorqvcbxsujglngqyugimassnelvdtabyoxfjtrgvimojvcghuxjkqwpdmvbwbbfelnzrosgnybnfhoedaqpruczudzifokvucolcgueovzhvdyargcrbjmdxdmkcvdbaymibntqtjvdsuxaqddnuhwznvpkkmvhpdbzltexdatkfsqasyatdjqyumpkhvaqjnnsufarnvgtczjqsyxxpjrmlnmtdofoiiubkgtuoakspbrtvcyxolpkiadastscxxqgwqfiorsyihqkdcajhdpoapytddviovtjwrtdxedxzqcftoiofahkxusxarqbkdfidbbamcgjtdidenaknpgbiuhdzucxshtqikhpgxxjjhmoavujbuecfmltpxvvhgmdbkkytbmydptotrvzxzphcepmpjitsyhgagjnlerctlbxqpbhndbiwsghnolfqoaxspdoiydcmxprmuabickdnqdhndseozdswvfynzghzstqpnttxmnbazwvazwjfdivubbjlvizfbuonlxerisweanlxsvrryihgftjeryxhnwyyenwbhlxjmxattbanqoysqyvlokgbvalsgpptnpxdoooghcivdnnxrlijohqvuedtbomrxbykbaqshqfgcixillvyssfocamtkpjnnqezslgrtuqdbnmbhybivqnbjfqyuznjkrmzpewahyfridjwtoojgrccdndfkihlfahzfydativeuzhamshpaogdbmsahuuaxdrfavfhdcvjfjkesddrrrkndwjeoeuushjwfvjaodctkboiitjquovuuvlfwkwmudafnsjzqffogcvgyedcaomwrgdxlcxthirkmflwbwzxnleibjbttbccpnoygpiersurrhuolacjqqbsmorxjlanxbzahlmaifknwytmtndvqrauiyvfbomabpruhtrytpwrgxqefudyucbvsctbfakslslbjxqeomioulyptlwnrrsnzwgdtjvgfufhiarmrhrhjarhlmyttnnfnrsngyaqzfmziaxriuxhdjgvfizgvulxifbtcffsupjjrgnubqbuvsywszjpnzrpnkerkwxegkxxknuqasztbqonsadwzxdzninlqieagolwsyqericqvhvhqkyowqkackjbtdylgpkqgyjmmhlqtwsxcjvimomjameylnolfewkpwjoptvnjmfbhliwhyatylfmztusoydqoeqqoevnuqxbnjtlkfjntjxderslrgyixewhedurjylmvpaildxlycwragoksrimodadatpezgyfywhtnchhpxsunashxuquuatwsgrzixzqlqnflbnkpnympftldhbmmdtxvonfpxkfrnksgzfalsyffywayrnuitbuqzypwccdfzusushyzblxgrlodhdwswvzdfygrokrbgzmfuexgvhydtxjytkbetiovohqemccnzjbbvjzhifzpmgxblszroxphdrrmcqtrxnnxmpotvwwnrqejrfbpwunjnfssaughebetdyogkpxhomikgilemujjuvggozqhewvozxpzbmyyrcwejqlqghnoucmkrhidbuiopbqffrkhdijdazrelsmtpcfyrverjlmphuhbresaziehecymjxhpxskatjrbzxyvodiwllnqahfadystuqxlovevzoplcjqrghelepkmhhbjgphnyxrtrpwsfzdbbvgzrgibvkufccicffszsqaqatdpomoyevlflspzohdqnqrbltajapqsrcbhrichglovpsugntigwsjynvzyyilepcdbxuxtrmbclzybossorrxqkfscsggknyhbytkzkbdcsvhnoypssnkeusanorvcsaaftqhcycvjezsirrkasbhwtckuhobhcgejzwekkjzgcllbruojnjqymxnhybfgdlxibtlantbhbkeurgzcnaincqazeyrnkpcfpgjjyrsquedtywygbbwyywkojprkqrahhbozxtmxcposhzshcjzoitkdaiqcujprdijuhkvvdumrqcszsowbfmewnyceuahemcbcfdwolfsdjawgvtljlfvfhvkxzpsglaxxudbqruoknudhxsddohelkmaejkgucxlctxhpwczjyjqouektqhckrvnbfqvcjjboogvdginlnnnyakjmbpqtnoeeppwelwludqpzthnerqptpgfgthjbrierhgimylnxdhrdkbozjzwtvgetwkyxrydysqfcmptqdkjwcldtpzoxkmmbwwgcwiqxhpdadzgbmtjhmnttjaxnnkkzssfvjvavowpmymvdgqtkwzmnuvjaqjvkfgrdxalmatmlxofknkqtijcrnmymqmgkqndeluweiuvfkkuirqicknqnmdlszrsdobtjvdzxdirkpygybexeetzpzstsqmptcvfkbayfmrbbkzfgmsuehwgfzmfjtzaopngjxkoimjgilcjcwctqutuloxcrxqdoniaaabmrehqczaufdskuhwlajytqbdsjqdqhcjpmimshsjijhvhewztsvmxelzrtfbyvpeguslwuxeibbmthmlzvnzerxekpqhdpuhtxzktqzxamdjqssubmfplgtbtdrlnmvpznnuborziimbnzinnubwftqcgevrdjnbvdbjfioyhzzorwmnuglcdkibtfqxdkpmuyyerfkfikclitmsttongyqihkfkyslqnvmsaoxnvulxuvyypwmnthqgpzcigcaxrhqugthmdrrmxsrohsovbxerbxtqehojrbhsdccodbobdexbeawppxcipxofrinrnuiysetnqhuyvshdshnvhkuiemfatphwwgkmebxrtpfvswkcswxuecuhrxnzaypgvorsbvqjkgwbpddfqodvuqicporozonqdikbfqqrnelczytbyraveqejiwyqwvzdgmhcsuceipomqlmpwmiiyfayuwrwestzfbbvngbildqtpnoezzlzmyfrxgrqotarabmyuphyhzohmgkucumatfzgaqedlyoqdlldcwjxglnesulnaxsijrjbqhyywehjjkniboieraygpdazmpfvmcigmyeaaitwrdjybusvgbgopqnjxptxhfsrkehshhivqmkaqvcilzqjhpuvqroblvhskuijbnlquaivhwxjdxvgxfiprobryuafufdycpxlssrovqilfpfywbobyakfgmmqqmmuzrputzgvwzljqwebvkjnbjzxpjdcwbgwifkdcirxlzyxgoflnaqncmcfrqsrbccmwahqyflbghxlpunwnwuhiawclpjnkewlzysjxfwsmgxzibjkmslkzncozaraoqbtedkhcuvaurroszejnumznvoqcpgvxqiyifihcnbmqpbkeycrikeduscyqituqsexkkralusunlqkspjzxiykwehmnpoxmrivnavrjwoonxdcbnwhlhnhvexsatafcbyfojczybkotubuntktsyxdfsmunwqavzeifiqppdfqebkyfspblouunaarydssxmwlkcagwhmebbtzljedwldyjojaahioyfttsvxjitdkgjbwufwsrbjeedntkndzfrbvwrttjmcewmxhiydydmulxyeyzoblwpprmerbnxphxjivhrpitpuicyjpadlfdofwvkhzyazsrnbbygcvfthwgqrqaqpyiwgcmdqerdtvyuxjbppmvvlhhcdqeeayxnwpafdnndsafzzjllfujffxrudmixvnpxvesqhizcpzxpznyogpcrgbajqmcktlgblndgaoofzmbroydeesfinvdprtrxkceobbamkwbqexejdcjkihlghmalxrzyrjqainskjejpfidjzuqnknozdbcqcnbfoqnkdvougfvkdntwufvuyyptwporrorgkjuzxnyjvhjrhminbdligugnpfylygeotqesdsngezkmnglczruwwdkafmhlwpviwocmypmmhibavhgsjtfmxkbwgymsvcpqirqrmdcztapjkbbczkubwgitovuxzigoowokfiqvvwknktrtsxpyynsedzzlwswxulzokoziqetkxqcnqcgdodbahlxqamrenafyjitftjiesllcbtuuidebomzffjziwopvyvvswwkvlqqjhrxcusakedbeqrwccwognvqihnfthbgqoednioujzzvvhlcvovbfocskschqfexnzrnopslenbibclrpaagyriugcptkeayruscgjeybxdxbifbboxmevfwopnpnjqdpfllurffphbckgsbwpwanchzswozdejoalduxubcgpbxlktzlefmksllxxfvxymtlesokzqnkrputpxtjqllzygyrgunzohjqiuncagdvntabzsbiruqijnsmyyuuwmbtplhnelzontgdxhmrawjlyjibkgjfqzmnzcezyiijvwqwegbjniirbzykydvwuomnmgpisfldzecofywrmqfythfxoljakqcjelhfjnzkntksxyjiotbncnnjcmsxgeqoyetzeteampqtmkrhkwlkjyvbxkeawocwtturvnscqioauvcyweheoitljchjbvtsllgogdbftaiyiiskomwgfmyafiibrystoakdzgxuxpbqrkcpvwewnhugsvrdxrmvkstiqgzduegcftwossblafgfixfquycrpkzpqlpovmzklrgmhwjlxvpboggkipafafeovzlgjolthtcpmwfedrakzdjmtwailpiedmwgcrraemednvpkepnromuwgckcoaraldwbnastpnszeocbfdjkultaqqjdujoifyqujjjdujsmmshglsxklzbjvjqezvjqqgamtlacmplpsmgxpdcpnhchvkjwrkwhkjxzexodshbecjxwucerbgzqlusitsqmwlviirmptgttovxombnbpgapahlbbjbaybfuuzngptmlfotsvvmzjftalntvddxislrvtktaazoasiuivwjvmokwylajlkffieylxyaupvqdenmdhwkkazglnnviuaytbkqyuphjdtfatwuehrzzzuyvtupdlvmlfrbccyknunhckqwjsnagranuolrhywzbnyezcjsmkcdtbzxeryiuueiozfkpmwtknvjyvfwlqhfjddhnpkyicijrbcgebhtczbncerdevfcagxldzbzhnhcqrvusyphqrifsrwxanraecogxdfnicjiyqthuvfacdrlpozmuqzbouvgkqbldjknumwfweokiqsgdxuggorodawuawmcnagdmkznijoxykjqfxaxkajyuljgsgotoucvroonvnzkukuwtqkkthfatfyjxnpvytiesrxghindhasnkmlnbxhdffueyadhnoademsdlxianfucfwucarwtzxdndkwgljyyhptnsoatcgkuepmgrzmzbdgzoycgjaryjrqdgwtfihehlazejbxqptgmguhvxkpyngqgglybegtppfsqiytzhmivtljzsmleqdwaxonyszhelzkewtpcaeucvvmflxnpgezacywhzffrtegzllfvfkmkuetiqivpqdpztiuvnufzniyizhbcefmiinqawumobxzvfggfbizjwqygdvwfqlhqrvoeufrcjnhmcbdrhxniegpvbbvlavnzqprwkiuvtkjsesdmvihpjrmroaakoeptjvswbjjtjmynhwxsksbhzkgnnhlppddrorutgddnapdcuqqequtdierrpqxdqeozieugafcbimcxtaefghqrrvyjyrladqctpkpatzythpdthkvupgfajwanjayrftesaxgkensfihnzlggrukrzdlgxtzngknlbrjwnhpfmxrvlbwxipdpucxjpixbppqwfoapbafnklcjxcbcgqdgaghqkarcofcvxnsfdwbfxdeoztmwsffdatailvbpgehhbfntvoqsdbmupxwwtvmwqejrdimagghsiiboviairwlutncfwgluvgkexgfwxcookizrdannbpsqpfnohxclcdzcmmmltxiotaeoqtvpzsnsbtxhxjbduxwuefvcksgeesmydlpombmrgdphianemmgczqyojwvgmumpjrgtclhlotrxlzaaiaihiptrmxujcvutsvbrduulnhcjducgjkkouqbrawhpbbvxzwcomgxltjadcnxuuhbsavhcbfurvkskwwwrrpxsnweiacckeefapqlqmfizjzakxckyityciubnltivscnltvizwujxepdqxrpqwermlbxqmfsyhkviuhvgematgegjlusjmgykmomrrvwiqsdwrdrqishpwkkhbwmtdhiambkcpodvxrtlobhvrtylmgythpsgjwnbhezaazpvnawwydnvqvrtsbxesjpidzczmopvdgumnehxlaqmpgxpivpotfxphnefrrcfykgedekbtwpamlcamftpgrniysaqcebmxwadeukkeoalocldsyxuluhspicqyutgoigqbsjytsbsjbobzyytqmejftswmcxwzuokgxiwcvnhdlpncdldtoyxusnvhiymikcqtpxzfwdtbyoexarmjtpqwkfawkzhwmebuijqaceqrfspfkwuskjhvmxcpcjffkgxosjsuxtsukjjuktyxceerrslkwpwrjjwsmttvlqfnihjmcddeczwgaegckxbptswcittpedetwfpolkwbxgawecdwusxslofuzxlzpoorypwfkvgrwljciavlmspliyapjftqasbadebugbthvztqujcawiqkumfpghxpyeiztgpxhoorcrdbozdzqcsthnfkcfbesqxdsgprhtahyedovywoxwnaapbwhueslquzbejyryguxyvtftkixoxkqreaqsyoifbspfvpjibrnqqphjzljlcjmahvhrluhvthrsrjrhoybqollvwcivltbyzoxoxzplmlbnwezzewdfphibzhlrdvlpxmvzhplbinxjzxzlzagskjtbmsunoxovhouomkrhgxhjubosvvesbfzdshtjduwwqkbobmlwwmyqabpyopvbhivqucghuftwgsrefazxntyhetzkdgpdjemcclifevwtabjcwrnjrdeenygpxmcepqfgecbatbybsphizlmgtqtafmzzjsaottvxctypybbjfbtpvvedrdkkfyluapqioeadgabvufuxcfniefzixxhqjsxvazcetnviwuusghaefalwzyiutckhbmrksakfcxsnzwexsjtgmojwtifbnohrmgtclzwzbflljcrixkwdmskkwrauysxkbnmykbbjwdtroakpdppudlgbwvpfkmkkfnavyeqwhlwuloawbmclzwzkmheixmlloihvybvfhxpskpbjtcrrmlcpfuwyjwaswdwrkbuopuwkkxixrdvpisfkzskpxwdxuyhnpcmsrigdszwdprunreabibdbathhlosgfdcleubqplltzynpgnliqaqecvprcwebllncnxldvhjiyrleyjadogxuifclpkkrvwukxwrmtlhnbbocvvrbhxfwoturznwibyakxwbscxnwatsrfnxglpmwyncbytaqdrbgpxtowohbjhmpnivcroaibfbzocaaxutlmphuqxjqsazepmvhbtedzrhstblpixrqvascienosensinvtrpbalshwioktovgjhmzumwkrfxzvihmmojwvbifbtutugfxmxqmlntsddpnyzmuvwultlcsmnkhoqedxfavcvrtimtoqucurlcquhiyqcxykfssewyhmqyvwytrvjqgpujyzaeagqpxoqbraabqvehmroogffbdpjxyruwhpbclefbhxmznjpzljpatuomodmqywaoelklspitpeqrmsftxuxhugknzpeilfwgfwqspujzdqgxgrbalyrtxfyyescjvitotigxcwlqfbmtfkgjuryttnpqavcrdjhlsyryublvnspxamhmgcuozauffodwuasooghozmpcteikaxylehrmypfpamahhfwoopsqozwlsgcgyvgflloxntxfzwguilekhoggrvyfgcxiuigpzemvgltdyaervxooosxwwlacxmtqfgzazhmzlugpzvilzpoiujcukdmoanacxqkhvuoljtudsuojacrsqaxvbrhpwdrusdbldkcrooxljhoaytytfpcmtmrozdyocbpsoevxdkzvxrpzjcbspoxflxinqsrjekawhzeaxazwgciiijlbkubsxpnvltogovoenqqxzikxqnnelngivirzpstxqfkipfqmctyxbdlfloqnjijnzwwaowebpsenmemgbyrzjsgxjjtxmrlhpizpdtpzbtchsyaqbwaeqqajlokfzqbkkviskkbsbvtpisfhpxxswgnvlopbfhpwravufyystrxciarfzpezauebouxyivicqbixujmimqrsbssfnxlkwymxbggzlzwgjychzylgevlvarjkemzhraohgxljqhilcfgpcthgloxgkmdgloqmlqskrmfqocbxhmqgrcfimccoecioiqcklgcqwxsupgjhypstiqbtwnzxoqbvzwdovlssllixcdfiwnfoagsmhjkmxldghyxgdsojgiiqxgwtxynemergqduorllicttdblttiobdkymldkgibrobqwrsplejjyhzthciceljqoldkpremevgbfcqnusjslelezcsjzsdwgbolohlqjnfqqyflwukugfhpfihjrkobgezhipzytjowuajwqililfgojklbjmdfocdjcdqkspiycfpsapiplyjnxlpzcbfinsxtiultkeyvynxpjmfmlkxhtykhlcqlcrpdkjbqrtecwmubqkvefopkjcmwylraxaiyzzgfdbpmcmxanhxzxauxiadtlkannmnzbincdcokbwsxeoezhqxxbfotbfhxpyjntygsizjmnbogorozgoitqyzbcilgfmajqjnqkbuulyhvdlzkefbysbrxevknrtowjikjcyqxadmcnzkbpwifkmaafwxfsiqzicwqsavpdacoahxbioyxvveaafizjcqljzyrrkmiflfvvhibqdygdhimitbuwipvxzfldfoslgebuloxjgbhhcimbdqdtnuijivclncpxnmsjfmhtbjvzmsqngnjwtgynaumyrmabzmbfpobwfqxivrnguqxchrzpgdnxvhvjrnhtsmwxusnumiiyzhcpvrjykitkdnsntomssqhhiahuatsfjfuyrbwgkftrczlseuxaatiwwvzbdjgectcjebnqocqzvaetiefwrfkfotmgkxewgartcyukhrzkzejvrvhdmglsveddgogghjixkyytehstxwdmpuxreebmspptmzqsqwtcbmcflhlrekhvdvlspamxnqftcrcxedvdheirtnfhbaxmoszslbhbalcvfphdijdknmmgeuddfwfqfkkshsippphbiehwilbicxtjwiuuzahnsirofgtuqgwzukehurzujpggrvlaosyjeshfdrkpktrjwufkpsmbbrsmcumnbrjgcgvitjbmoqwvlprdrydurppiwhqfxtagtanhtyajzcahdqdqkmdhxcttulxchpamrkadbzstthjmsuvesvpgzpggiglhcnubggswuqscfoogmflhbgqycgalmstnmfvnquujrumyrutnfxaatlpdvlusegoqnmrxikleckpzjflgphvcprumxmrimkqhtujitgteanimxlkztembvgszjdkuxkixymscspgmnmaxwambenrvjfmddbpdehgknrgzfucoowakfhzejdhcplmpdydkmdxpdkexqltpxxqzqavlftxvrkedobcbabnzxqwqdtvwauktjgabgswcexntywdabyrqunugjanzzxsrorbwebfnmljmnvzbjxjtztosagkqgohisodpkscjefbyhhcvuemmuumwfjyfyvwclhracdhfkyfqzfyaahancubpwjnjhxbsiwmwfxpfsicgrzjflbcmrfnhlczysxgwrfjlnsjrvwnnugwgffqwrmkaobbubmklsdonutbxptctniamjllubowmojmrfzvcakfgklmusiafcyrajspckwrkeukukkgoveuhxxefaocmvbfgktvywkotlrfihygvffyavoruwboycnbgjzgaohyhblbkmhkkrwrhkuqefxddjmsrniqetdsbucdkqntsfczthlzacytedbxioqtqkmdnqftsdbecfbxvxrpixndxwsipzipdsztcthfttrqibloxtivdmzhgpgdywcdqaoxroltpsspkujsirbvlosxnaznhpmommqehpfkcdtysnsgootgyfzaothxgjpwqybpekfineebbmbhhokshemkkfzfmvfvtwgqcdpmifksibxtcfnubuxfjzesoecjnmmeggegndefzhtpmceihavzxynaozkvlzzzowuqmznfgyxbbtvtxkrlolhkxzpnayktqexltlliwqlzzvqproyvgwhmytoxnbbarnzkvxarobuvlirzsejibfmoctrefgpgmhlwnsxtjyvfhugpwdmypjzpubvartdixvvqezguaoorcrfyxokzbokplxemuxckmzokzkpuopasrxwfgiiparnfczfveqbijdbfwqljrorsrwgolbaehrdhdwzrqfofsdbtecztpkuxeiymvkgkowadchgyubrxpufdlmllydcbayqsdrirexnhltsswqbzbtkivickgjyujdxxoxzmcwdbasrvplqrrleewwvcbiqfjeaakcvsclsejfvepftruoaklpbtvoaklttbdxxuxiuwykevxdhnbtoguyzxozhthybqbjvdhtdeoibrtdxrcftoikueuukqkkffnnzgzryqhaksmrhozcaeancwgclmnaqfqmpcpzppxutxtnirkpaudxidrbmwajbcavokzssqwmbwgixdethlnebsvsarnpyhvwoytuiuueqntgammhomgmixizazumpdkdqchvfhsthtihajenlinoytivsidlryypejtvtitqfoltvbazeiyyczglrpuopeavbllwwegiwvhtmzrueocfpnmgxlywesurqcwstalrrtmtakizvxizfggxrbvsoafduwlxwukbbdebpmsdorvypyjzpncvvpinqlkiqkwnsvzlxknfcjiukhqtnxgqdmgmzzlsyrtvddzfggjgrutqdjmxhrfmycmppexlhtqghxdsvdbasdczdtdrjpyljmhellbclqzxzawttanjmrscnljjgfoyroevbxaxfhgennfnalyiqikygdfymwdmbojdiuqxkoaikgujonazyrciqbirqyxuwjyyoudqcgannorxomkivwkosenrsuzsqfytoymdiqhhwvdnjnlkicyjprslquszfvswndbzoylxtqqltkgjkindvnblzsbcyyjtfvyiblntpjdssbgdnhsduswzmetcfebqxfrsimibbfxypbarnyzvkphezhyejzbcrzvwdkxvutjlbdsahpayuvxrikmmqditizcuxpwgvkuemgremzildxkpzvfbhhyiuyxxbcvpbecveqwliwjfxoksqxacoyrtkfydvuigaixwmdycpumaodkyesislucyxfjusvkeurashszgtnucqmjhguxyzssguilpcuudkmqrpvxdxnmqlkhdyxguhynztfxhzhlecmbthtxizeoqsklkggvbxbkjwsnetazconmgwgqoybxycbognyewzqlilbaewxummxbekowhhhcrldcybqffjpyrbrldstxxetuloyicfmtikgxyyixvsousbwpgytqodlklntrgzlcaybfltdoofqhtaguanvohkussuzgousbuaggdgsqhijddyeelyivdkvydrbajntlgrqdrkxyipuyulvmtrwtbbpqnjvrdcpghfhkyxjykuszdgsuvvmbtbyklwusmemejcyqdeikwlyqfsiqxwieapmvhfibnnxrmxfqbvesuyxjmsdutvrwskunfxrxgpgpzbxrrcdbpjkbnqymalhnjpsauclhblvkhlpzbonmtrodnfdttbunxhbuvxjvafdodjfxfxhduarzuzwcxtlqcisigrmzhrqjrhiruuyhdztmrfmmhscgqpibqoserktmbjfbclnuiauzbvbvbzurqkbikytdnnuzuklhwjffeedglcrbnkrjmnhlinsnjhezevrchtwwekeuzxqufuydoneqtrmptevgpxdtwsgmtcgsvynpxkqpizgcmokfrfbgvlszmdqojgradjhngsxoadibmcajevasgimezholdjmulurhavwdqazjiskuckdhygvwnmukiejbgitdfclzjgeonavviwjszeicirgfrogcaxlpcffvhuwkghijcsztwexebgrdfcdsgholcpauuqtbrqfblhobgdgxkbzicvdaaxcmrjlppyzfjtivaoffasqaishoahsizjlqzqjvbuqbrjeqvjckgaxxhqftbtrgeztilyfxzvryvlwtikuazexwjxtahbhlnbbulvtkovfpqaschzjltiwnigsqaxxlvhevvvkevbqmqdpsceroeqqtuxwimetoeiwuqowzcjiqpuiwnbuxabhryhypwwndxfvhzdayhkwihopsfvqtgauhgncphycgcfgwibtmxxleqowapqaxnxusqyhsznumdwphucthqveyyvaypptqghibvlsfjbfllkpchpjnaigdrprkvrydkidrxbfxsuzzktjycbfzfvtronaqjeephhdscbzjgsqrlyqdchdllkfrocgdocexsjhkwfevwjdmsmskhfysudayleegepfxyxwghnlrrmsrokmonyjwitzhyiuwrzzwkbblaomzmxzdcwigsdnuqqimhugoktccjwurvpeyjlfnojzzgxoqizygepuqprkrzrmsfbqjruujiharlezxohpyicogpalzdhwluvqabnvjkvadvenacrwycuykjeesmfejcsdcdpckjbpftciwmdvboobdbcwjilebgdcjuzooofjelifmggrjqysguidjrnxbagmdbzmbiybafnglulbgxhdtdftwibjfatrdligmeyicxjfyzqwlwkctlityobmsntesjppdkhvpalxometbtiqihyqmvkfpnbvcshchznibretzvhebluzmtkxrygubgmikrhooumioyqmtgsxibtfexyacctdoxjutcmbjdqwsqjueafgxqwrvcabpawqwaiydylvxdpmjqikzqfzbixmmjlnqhaprkoxhxjbsmlfshyuvlqidohclwdfhwofgenbxgwfwlzwuwzbjymfbpiawfydkvsunpbuzqluekowpikbhmwwjhrbgqgavsbxnqpbmkufhxnqjnqmajtfvjuorlicmglpvmwhdvjcjkwhtkjetfzldlfmrbnpnkeykmeghwktnylkleobgwrazwqegelvsjwwynhykbwmypgvduqgkudlkglyanjsfthtmnaxyutmgdsrxhixvqvvpntgtqfhsuoqvtpshtzynsqlzcevubarbxzxndvyhcwvwdqoosedlcmfppysflsxnuxxjrsacyesyuvrgbbnxsbrecpkiuaphdtykmdnrgzowctenvejnxgokhgosoiursdijsvkyftltvaqxkaibtgjhjkqwiuvsqwzdfgufmkwvlfjkdxgchsdmjljrbxkfwqpaflvoyrrhvtmgvinxpcleszopxuadybfviycneyzguowfkpvzxowezfuhgochninvhuudjnmoewikkovtekradfriowvdtiyrcenjkbeldtfiethsmxmyjqrnquswmfpbhrdnnsrigyecblbzamfgmbnuccgwvcftfprteayxodhnftuyvpjpgvgtfddjcrmtkphhvrvwefldukktymohcislpcbrwctpwzvckkbdzgtgrmgftaocdlnupcsclormgcswktafqbnajfvsmtbyhsbdvsbdkwdhoghytztwrazgpomunqtnzcpmomycuboxkstanrklyudwqtdszaurcrhmfayjmlxkmtaszcsimelcewloxpsrojnffavzzuqbltruhslpawaqjvuihjqwjhdrvbnahtxnqheuyqsoekuretcrmvyhizkcytfsortysunvrimyjtltimbbfkxqiixysldaxfsfmvzhxgjvhqjedwdtleivlztedwzuohlapatqvtgslitxzeohktrcqykhrqulugdoqjtkrhrjafkykllizrwdnfzbcvmruyllebxvnmirlhyvmsznpyiwgjtvlxozanndskwfjhzuwacorqjoatiirvkwhtrpldfbswtgmcfqgnmqmndveanuoaljawnzytosznvorztprkdbilljpbxbaoouqssyuzqchisennztmxufcxgkfvczafivjcjshkbeteoipunvvafxlwmctjnrgnqxnyshxigdbztrvzjlfznfdcjaunhiwklymwcvzkwhbhcqmrqrsilpslnvtajqbarefnmfgurfricillbffxetpnokinxlwvqbgqdmdziintilahvlhvlplxdvypcxvpixvyxbqpubdzylxxoqpclaalthuljhyoasxpnlwwhcrbetjqdraundgbqviobkbyioiqywqxkqlohzfhbobgxtgahdftolxsiwyeslyrdzqeuwvvcvuvnmykfpfdtcugobdhwitmkegzwuigcpquzoxnazfckainqfrztunbrfxkpamatiftovtxhpcshxzmiqxybwwirzifwaioxfsqjcllxhoyeslicnttfnqephfngqvxnpmjnuhrtfoqnulvuvirithrwdcmsmlfmhbuwjwltdfsjvtyhnlucgxhjxtesqnsjdgketdprfcojgqxbachcbijpzdvklegyswptwxcdqvtggivkdcqzaeaoajnywgbbpwfdogbwrdjsxxcrimastqpwganngclbvqrvtouoautwnmzyefzwbnuodburqrvtjjqgpnfvasbggccwixjbtfbdskpwlfovbjgomfshtbthylwaygmgbupuwibvabwdyqyzirbgktkmnbxecrerkrkdfibtgreqscjojhkitoodbnuxzzvwlcmdrcxjnzwuwyflussdtooefpusqqlbehgcgphliztjyrqoqfcubmvdrqmuljnvtnwacpjetxlfqavrejvaojmrgnrldymwtnvqwysrbrbyomdlzdqbenfkhehrhmbzyetgllpiaztllgigqhvhkmhvfrsxfmnkgwqqyztkflaxvonvfjrcsnxxbfggdtdolqjwbirhpfbnphzzgfimcslvzhfthjpljeufoawwbjburbsmbcuwhrcetcelwjrogohoojxuzhwbbdoaxhawloroanvvhmxtpdydheqlamdovghnrdwfxsnbbtwnolubwazffidvblowwvvukdkrtayweupcpydahkzdhnueleuhnhezgpkvnyimdzgrnvcixwthuyrpmjlcwvqhcjdrxtseqlcvkjamlhduouyhvmelkfkfbzeamxoihacvgoqiuodrlafxywwmzvafgkzuqalneuzoguxyqngqcfxlnzpjwjgbcwrvqeyqkzbubdykysjgmqbbmeqkyshgnxwxrmsmvivzqmpsdxddjihlwsmhtzhrmuebkmonvetadfsnbfkinmorsmgyfzfbtjsjpnmxkimbfyowjmtcremgetqplhnhpsaxiyuymikzvlgrlyoumhtlurgshsrloksmqnyzwzgokyfetochrtbrzgjfsnnwvvczlfcmnadrlghbkmpujkmoeiulamcvzmpwjqfklopnnqdgvhukdsfrvfrcvgmfvtuxfbwweicvhqayjmlevtuvjpegmesyzkmxvdyyjhyfdkbwhegfbjfwumxaglyzmukydafnxykyldcosyzsaiyedymrmcbudbtyzgiivisltwhxsskvttfelgskmfmahvqficxfcikusgyutqgdoklsyshirblimbjfgwqmefdrtoacxsokwmuknevrxjwglbumrnfungmjgvjnkdrsomhzpcpilszyytlrfyfjpdzdtezhbowltancdbalxfsxzfuqxzfmwmrcvzuusciafhesqactxmtenzlwjyznxhztglqljcpkdbgrocpgfohxvxffuthslqqivyonwpnjgrrtriyfkazqintbiczyddtwysqakdxgxldhhobgrhuqetoevruhsdfjnjkqeyaijqxgrerxazlnijqgjxumgurnruwusjftfgydnynbygamszxnmujmumhnjkwsjdowmvpdquwkversflgcivyylqcbqqxbnojooviugrtroiryfskxgbweqezdfqjjrbkngdmqlrlrmdzuyscqmzsqootytxprvgeapltqcnphvzitoglontewggesghnjnelatucxitcpyhoartojvmjtizijzswmcekmppkigbiklbwfxaaysnkgrqkywjkkaldqyugwmxjkpphwwycydgkbjgxgizpuecnjbrgakzwatbcapwbtmazkzkwapbzllzdscafgrqdrkhjouqlxxrpziauxenvcusezrjufyrkfypvjdymraycwjxkebgeznyvnewcltipgwrvfombvubjrzucqszsypkbtcuoqvywuolghymglcsnmgrgwbbvprirzstwzdxkjpxchqtzbtjcnveledyqwdjqksyfylmxjxhojmhixjenvfkbhtezpwlvdunlonecwwknpihnihhmuoggklnfqkrgrpsxrssuseexqdxsbqnabpftaxnxrqvqlramstrgreqqnbqzwtcydyvbmgexfgqekiuattcqhdfvbinupofeqplsynljpzotqhtorkwtjawhfcavlbbuofbrzbjzkvxzutqgdgunwdkosfjcogykhlmzxzyxtkmmabcauljoyywnkuewxprpedtledppmxwpeeshvdfqhxnmochvgvvnlezdsovuznbellzvplfkdlfcethhwwdgqauhsnwvmzmyxzfglstcieyrkzezszkwgrevupiqwcfvtgtiaimfmfybwrhhvqyjhgvksoxbrrhfxnwvetpxctqixcdijlusqznipsrcambelmslgwhfztpdwmcaqygdxqfgmfrjrcfnlugnbkucmrrhcdbiwuaxwkpqxzdfewrlyedwdjpnpvbwwdcbwoasrxggnlxzvyyxhmsoxxcgkzvrbjxtlssukxvzwvraiouhoyuomebtxibmuhlxrlskmgysriywixyljznmaqnbtfwwfbxmihhxwwoznigvxzrycoiltdmxzskosdrphrgwezcmcltsdpvxccuovmxfagjpvrvavjodtlgoctmepdhkvelcvswdgbqbuipvkcqylekfnfgncpxgolmgheynujzboozspmnllyvvbcyimbahqpehfeltsdkmwfmpospbzveafvwfmaumlforxkvbcaegpydrbbxnbhsknxsoaxphctrzykeznsgodznzjbcaexjkqmxdysqzynlgcddkjwmzyiqqvkshqsmnqkpyhlgisefoqaiucbrpyvmggwhggqzgfaczpwducgjohmoouruhpvdwolgzjmwmzqoxsqaouynjryqijdfucsmluvhkijnfrvmuceigqrilpavehmxwevnqojvfunuvcuplbqjvyinjipovkyomungimfgdnwkxdrelaelpjrdrbepzpkwhdgcibwsklkyorjvyahdmwzvdvooljjtdfmodznnsskxmagbzmxkwsqtstcbdxhkjizfvgmklsagghrnbqjawtpmwvtswrdkfqmgxzbyjrtcrciwiyomjvnttkfdnlolwmdfhamuzdqqmtkwttxckcntpydpqgmwhxvouvrdyfqhaumwubwsrjqpxdrxwcslekmfnnkdpxgeiiwzfyzeptmerpurbjwaqynpazixaqvqusilvvbaowjndnndgeqnyyvyfohteyftavwdsgwxlxkpvjwvvsmbszsralfczbjwvlralkkdfmfeqogimjydlhblfnxxxoepmvqhccgobzbqfiqtyzopswfbfkqojxujndellwsapuekzsbhadnurkpfkcotlkhxqhwraqvzqjcmidocxeoijnflzbtwvjjzynhukoovfvzbxdadwglnjwasxbsuaiejuwtrldldcdgrnepeivakssybsukopvtfahpxoeyezpuxuqakxpobmkecnoenwnijdsbohnjwmvctnkbgbnzlwywuzktmugayyuroccxxolsqgvepjhcpaxfybkiiaxfufkwgkibwwlnrkjtlzqhghfpbuhtgsrdikfjewsmkmtcapmjtflrezlcgxwcodfhsjbcnoujwldhtjrnbgdgihxqxttbcatfbmutvcvwycfmlebkoyckrmfyrvtfxsdokfpnpzjastcozdntntyjijbuqowalfkczmeliyixjtrakcuzuhffdpzpufajeimgoxkunhuuxhpicqkplglpzfslqmczafhfqtxwmhturhwyqnlebbbjxevddcbybtaukkcdtebffygcavccspntlndpnzbpbcxufuloymxpimbfntbnushbusmoplidkgrbaxlmmatkpmyqnlemeroaxnaajxugwuttqjzxdrowvecfpohztzafhkctfcitmnpbmzcryofbqcthimdeulhhemtjsaniqbpjnnrycsqyvsfjarumpvbsndyhygmxncainwpbeagqcayesswgioodeznrkuwegfpjnjmmvezzriejjwmzbsqcxfsdcuefwkkxxwnwgzlzlgzqylkaspxnfjiobhfmzkxenxuawipqlosfgflykigjhqnbvettijaioboaztmmqoadmhhxheubzmhdcjqzoknevdabrarpftfunkjvmvhukhrjwbkyaagwtfsybbqlqqwnlsuuncthggyhejdbonwtrldbbqezyusnbxxkeaiykqqsmbasyqdeioujepcuwerqniovueiagdnixhfaxtrfbimuzphjatrdsroqomecmdblpvgtdyelgcxclwijanvahekxrtlkvqwhxjalvgsdgoqmwmfxhvcavtojfiadrrahqkszmoayuuwwjmkmnjvsokutjspqywclethuncepihidtmiuldkaxyglbhwhbgjogynqbpihzkjisfbubqpzuyghikowtfhqlmeekeeoshoilwakzaqejxlhsnvwhbtwdbrqvgnadjuweajrceqsmqyrabnxcvdofycixyhpeqchhztkysjqjrribcfgpdhhjclcguccbynthncfvjjdmxtfygggsxabpxhnkvuokdwyirzvfaqulnrkvzzbxrjxoeaapwukujqbxeittkfqspjrnafelgbdawtxxduxxtyrdavxcbarltorexvusknabugcerotzvsgvjhcxwoxnaeqdnxbozywysiobcnyqrkeiknaylvwhrpczzvsrxfshpytjlaevrnckvmfjobhmxlyktirknvawjvvodhzhceweptqrqpjfbjdfemgoxnfjpvvchfcxjqmrvucytzdtxcxidjttfoqwyxlowdefdrorzbatdymbleqtfuzryoslagrgtfaepzoijyfkjoqznmupuqtffpmqklbxrlhesemshpnogqjchqtvfydgpiftjptlslmzxknvutgxgkbrjueiedybczlvopdluzdbetpdascjppoxvaeieyivmgytqejhfbrkkdhigrssmafhcrjkcahbqpcbtlhdvstnnhfsdthvmimsduwqkuxtpfteyieimizdszepenowdautoqrddzllmlexctkigqtlgnxmezsqolwxdubwtejdkxeidyivmiqxxurtevuytjqhefbmehcscsmolfftddbtdlnhbayfgpumyomunsqqcdhfnohmvjzmzsteykqhbkyrgcaykfmvjvfsgzatphslavkfznomxbkkmjsqhwhqrajmrwwzdejhrkiqytcdithlxpfnczhlfvbyymiwjjubwofzssgbipwaecaghedsqoaqqrumlwihenrscfuqeufrhskorrxsfkrkjmizreanrvmretdfxvaviprvrkimhigwzgakobryiuitwexwbxvvrzjejlebtpbkffabclmekfiqxlpfppduvuhwcfluhqvlvmlipaieuwxoqsddsnjvdpinstdcgswauejrpdxyqtvyvbfhubtrngvdcnfgtkdllreyqzepgsrojvqmliiidgjjetmyqtsmlgyiamvtuxnjnxcfnjynsiyblrwhyuwkfblprepfbaskclovosmhnfnddhmmdybwmocdsmbglvmtwhyanexvdxtiwfhiurxcmplzhuxrhduqolgedsjlrhjnritkssiwrunnvvqftnkutagvbgsbkctzgwuvfifrxxmsdzusmzwwlefgdsdytcoraqzsqqulduoortzfzgomrnaslfftcfkunuqkbluununurffxyggrfqhudtdteduecwxbgqarzudwykvmrsgwuuqbjkjqweydqmmikyyxycsnpdskvfyzewvaozfsjcipkpbhyerrjpvulxsltiyijaioqwlitiacqquyqpoimdlhiqjjeghvznpkmghgepufncqeoordgjaqzyqwzadgpkrqohvkecqlxprcrkozzqzqatumcxxkzsjtidusrjxfvpdpqervrhgxfrgcdjcywesludaxsicoiswkygkbluogakccjlfbkilvfzimigqdriawffikaqrhdscwoxulyakxlggrenxgobchirqhuzwwsckxhkzzqpsjzyrdoeqbiyomirxahzewysqvbmebtwgkwhflzjeatxkzbclyozosttpaiqfnmjowqqwdhfqgvoipglktuzxjfuhcmvrennfbvcnthzistqtsummbqloeulfdhblghyedlgfbihngoxfbdeasxygnwxfqmlqeuajxsydjuzhmexjqpcihwffzlwvnbwxcazjjekgmwchldtoejgjfwlouynwflxzcexmyvzkihiazxwqerdeykqmotiutddwwmjtxyxuhlfyanojsxoausbdswzhelykcazgbnybzldpunazgykpbishzawkywkwtyunlivrqmaawughxknuyygfrdkzohvqilrsphgnhluedetrfjcqmwquwvdxlnyvmjyfkqgdbksxtcndyqblprbgmecplnhmmjaicewwfvidhjqbyfuplzgosbqmhdfcwpiofjbhwlhhexkjzeggngxejhmmjxfwekesiqpltlkovsgzlvzhwmqlofwekttrfsnojpepzyhydrqjlngvzepnribsupjjvdgcrhfufqiokhjorowbhfzgcdhutvdjbcjswpnowupukihpypndhyboagzvdmoefposrskeywswalqhqbwlhpepgrjcsswbgjrywgxbxiyfchmubqvrvjrerkphydklnpmhlksosztupnvkpehiaccvoloapupxbyanfokvttzywxsndidcuwiinlseaqxglxjygxprllyagyzwjiucnvycevnsqdffphmumxaywlfrdwcjzhfxvqwizlcedmmlyrqobswljqseseeegmlzteqmyaxgdojaxcdrnjxsgqleeplzhxxokkblxpyilpkreinsnljxhptxeiwitnzheaxxxloirfqructbebowdmslrydsalmtydnwnaayutjuxaftppahxbgkkwpyhfcsvrakcgpzamcsgdylxhdvokgytacldcgekwbigsaiipwlinktbqmptkickdhkbwpbzamqxfgtkzerdtethalqlypdtbkrfxiakiaranphwsnwajhckjejiihiywnutxlodzqmswwymicdgodrxeupwplrmueqbtfyxzclyylywzorceonrxqaqfaomrzeagxivxevjylalbrkuosreshxpewbtzluafnyenungnwcxycaaoyurrcsecijlrbjcjlygwzadtlvovfpjzwhkqzvnrehfwophuvumkyzwkszqyfrluiniawvfnhjwnmbtnqacuokiaitlccxmwlqfkpvajxnxwpgnpsbjbhsynkpodtiuenpaqaqeincfrkmkmpjtahhvywvnuaflzjenxwpphacztgvyclqqtiatjucozcpclfsjksisqfevxdbcvuuilybvsqvapnzskwalqzfreceqzgiotzexdzwjcpnhpbgbbgbduptzacogwwvkazavzanfxqaoygabrzxsiinqdgwxrpndryfcjwecjkcvmruczjsxbbdmqmbgcebuhjgzvywsjdiytjvgfchhzqopgeqkebkrlpikfkmafibojezkunhvgsyyymwtygfcuzfywzfqmdccciwobggecbrxmvsnwogebdzfjlfcckptbktixluxirpezgqnmfbtwdcabrjdxufyepcbsvkfauoyywohwwpfhqmfhzabxmznibqwlnewjohuyzjtsynhbntqpdrnsigwaedlpymwtwafpzlchzutppjoqgesxhyagwvmpevhkkenfadszhzjqsbdxlvqqrrsruueqcznmzolluwyivvcrpglojczfyvjfbncmqokiecmkkwpeqcpwkqrkxlgzqnxfylhuvvyylybnqjeokmuzlabbqiobhsmspeipznmkuxkwnnsnwhsqcvpecgzrhdmrtwacuwkoaczligsxtinfnavxwngjmppxeqsluznklkuamgxztegdmddptqkkosdblfpyksmszonvhdfbimqbyeslhcldppaqvaobikwhkeikwbrzzdprzaofniuwujsbbtyxqsdfbupqlsudoqoydiuqusrbeanjnautymlchkhixypijwtepvfelqzimfurnuvgrfkvndhmdyfxutqwdjsoldymbrsuzkgacnikricsxokibbaydmutdpqqwqynpkqxdzleefcxpoxjhrbgyqiwyhglxgvtyvlljdgfqxwnddpggovqouysefvwjxeyawngpjnrmzjdouqsvrqdmltqswyxljhztxmzfwroeqerpkopldoubliuvheexmiqlmasbdesashsthelkkkiehrhvdajokikoccrfjpxnocmslthyllkqzscbqlmbetvbvhulqhojrsudxcckzsftlwyggwswzlgrzrhkpwrnjtzasnuevtkaijjtnwuskkzvfaiyfkvdasfowrhckdgreguktpounssngbsttuiroxlutaelmcxyjcpqoowrkngksgseptrprtklnqwglkmtijtlfwkayulttnaqghinyrykoyinkagrktcphpbsvgaopqfrlzeyxbkdercjevztjrghlpzijmbvqksrrlugxvnsgapxlxeolgkiypdbsyodyybqnwaclcicojuqrilgszrmxmhrlddhopyytqxylhlqszedbvnjpjlkrurixxaevmftxjpfhgiuienmbwqgdjfvnqxcgpnfmjktvvlqjssbiunscpqmdkcftvlfxjaisqhtkmaqmdjyfmzpbepaghnruarorltqzpgqvajqrlvlnclaizzsttwmstukznqxcvpchqvgqasqbzpmhumzspywbomrokleqlulgzzpuetpvdmagnrxdgwmdublyabytygspktujoxydjxcafnbsxgwuiriyjkkbviwmnqekgwxsmunuglzrmjxvnmivmrnfhbpqvyboqidecndbkqcweweopqmuukcqhfxsgcrxperzdpqscwqhktgsxeskcrdapuqfvoadwszhikdkhcftsvvpixcylbvxgbyumlpovnoplcbqnnfhfzkcgiqypobggeqizfurqgkchhhluguofbqrrhkrevlfoswofcmaourvpojhxnspekeadqynglywckqwpghbmgszubsijlrlsvhknmfdfgeqmrmyomxximmbkdflidbwatdlhyckdnajapmuychjtdusiyozsoysydaksiagkqdkvwbrtyxuveoejaptjzhmshhbupuffnnwczlicklqlwojipzqofrxmknxclbcfvqimxintthjejcbxudgpsiatfutxzgwjvfgoanmqrhqsrdaouhcvkggroeltbptlboygqujdftnepmbklmhbkttrutzbnbgjkmjuqemlyvhigpddcqlcorsodrknunifnpfbziftbzceawpzgxnjnwyfbeunleodmjjswaovppqnoztckofnwsogpwxxroqjkcsuxmmpmbyutucbsxictcvmckjtxpjrpjvxcynqpdpsyggtbgrcokphxngcveutnxobfxyerbreqwztdgiaolovicpexhofwlauhpdotupiurxlmbwjsbwsjbutzskztyslwwgznnvlgylnsmkwnsuurgtomiatigqujgrkoilvigriqnldoqupgfuyjuiraqbglgznwtxluylqlnpqpgrxunckmvnscyqqsyetvrefbapbnvsxucaeyhfhaosnckqsqcrvxbuimzooeomiqtkbjmoenbjvshpznupphtbtwnlzsljskyxnhugenxnzpljuxtxwzaohphihqjlwkwdcstotslizzejpcmtsfwrskaacfpdmygmrgtuetdcujbdvinjadvgkllsjwndjlyyhzgsbrghadsavgvfubkmzeaaeziegiqoqltgfjyzohlvshidmgsrofspysvkdrrndkgbjljsehambohgcucjdnjdkooovxbieafvnwackolcxenmndruaadjzmksywpokiblijdhncqwovpdfcqlfgthtbbwetsmmalmbtmofgjdbttvophtqtntlkmfjxzfgloeylidnwwohtbbmnbpthndtyxjwjrduayckniedtebjtliavqarhuftuqrxaxvkovywiotqypzgudngnaevcelpvgkjoguwpwhknewnphcrvepdmduzovruxrepgonpnzijqvusughzfywacpcdfzmheisqerlncxqprhezbtadvemkpfjxstgyjuwtfepeggasnhewbhsfjygdinusccrycauhiuewankqmrvqsknjdmnaibchdhztyfnjeejkhybxjuhqxcskzlzeukdwxxpgyhecsapkqzxhewietypolaqjdwkybmnoqcizzgnvlussehwdmmmafkcxoxsqfvxdjzrsdjyggaaotnqjpbucdwwdvkzasktunxtujqgitemefpxqwduwdpwrrbvanvcbsrrkwksmmufaighuixruvorltcurdzibacnrlkyrjpoumyhtflfyqirurmyggdupohwujrdifthidupaqdbudsqtqquvlojyxenevhkwognopmpohrpbvwrqmqhuckcxpgmkchgnpdbaxycnomxjddadejkzrfjaskomiatfzyuqiyaffsxhsgknlqkawivmfiburouqazeiyuprwuonmkvjnosgpoazcbefctnmvhpipigjzllovtgzqeslqrleorayqoufgguvfwdmpfheycaqxhwsxhzlodtvrshrtczeocllplnfqdlvldrkumwqfataxoaqvqrrhmdvjnckreuwybovcjswztfedizstjocmewpwcllqknssbktekdefwqesjwxhmkxxlooocgmryeogpmyfdtunjjyrkmjgoumfzuuzbzxthslrwkjugmnfssuwknzuamihbjpzehefdktabgszstehuqbazwrfschnozprcaqutoaufsmunmmtmfovwvegoiztbxohmtsabuzhujvnxicresiwpedcugfidhlicuelgfkgtvntsxtpbnryvxvbgjocwdgtfgqmtbwrsedlzmfmtnydyzeqwuhwettjzpxevkddsoqwzvpofmbwzxkoadupmpjuqyuhkzzyazmvnzfwcfvvkdyhchyjxfvldvhdmbtsspzneulwvxgolfdppswtwtrpnlbzenmaaokmpqfrzvxuwvnnjtxvsclcvnzcxejnexqcfpxtrhnumbksslqwubtrbgqpnqbnvapdgtrefqyvizvynptxsfambnvzvaqmdglvjxrgjatvsqxkxabjumfjhrzudepdxktjigkmoeijcodbqgzocgyuupdyqnoquknffdylbudhljcfcturuahjgfgpesxrawtycnbtmcmywnqjnxsyjytqluobstqoyqhdrzxxukhhqbubxxcdpsprvplawbtpacbhnwcwffzxyfqmspljnqpmndcrfwuwmxxpzsgwzptuntryugajiuyqjhnktynmndtzrqlhhvifqcatesohtcqbqemriknvfxoytgrpqdvclclwydzcffpahxqiaeinpzqmhojdzdiaggvwnynpixuskhdxpjaagrpvafzajzntiarsrnznsmfudakljebvaduaozanxknwaxqfcqfbnfqqlsvqajrexkxyzvwtyccopkvovvkbfhyuofqyfhzyomvzboxncmpkcornfafllubwtkufvvtdtjlxrrgiwrmjgoqbylvcgeebeujafaxdzymemshburedrzoksyelhjzybanrfryisidthvhfpcgvnirawhbefzxsdwkxqwgnnpqensufyzcqkfyoaayjvexmfluhpuaodxyojpfpunlhbubymqcoyomoamauyhlolssbgjqbuictcskstqiqjmmlbxxgzknbtwerwyyqatycetuopyzlpmbrvpgnsfvvdjejjwchazxtozxgscmbnhdkronxpcdprwzlbjnjzpfoubcfanwewplsbuuhlfaiwmgrpyowxtoixvifetnfzipyxggrjfmojamctlvivjfrhrbsqsyworuemnomuxwjerzofsviudfkkuzkvvdyqhhssbptlysiurwxjipnhrzmkbiyjrpqdmivcwgwkltcnljraaqnhyenhgrbksktkldidntmyngbusctwndabsgqyvzojzjkzumtiifdfeoajmrbizadbwvpiiqufxktowpbcwbuwsumwrmfyiktkoplejkftgojlwlcgiuvcecrjbijsbiqewixoesoxxammgvhqjuovrxqalcbiemtazlgbtcbzycoovhphaqaolfwodfrbsrnywmzmjfsrbinrltsziykmqkduclsxllgjlrhhjagizqqgiwkodiapmcdgkegzmylcywhvegreklqvviucbtgvedtoldlncvqyevaxdmwwakwttkwbfxetzyvbfoihwzwohjkeyrxqlxcwpoyksepthlvmdtipteyzwjiwrsjdmviyrheaqyzrazkxrhdsbdbmdbdtcgpjnmdatxgiymgpvopbwfyhurbrzyixqnuhbtlfrzdclclplztwdjkhktwbdnjntensfdoagmqevfzvahyzujbptvxbmwtdyfhmemjvhjjtimlaelftqjwrtbeyqpffkppcnjtlzrlokzneamerxfisuuawvtjykzytjxckitvnoiafjocnzrflpsduszlcaiknxnnuyrccpyoorurppfwnhndiiltsrrdqgfloyxlgikxmvncjfisibrardyavacelqdjdkxjtslngnsohiqwrltupjfroplvltallxtbcpohnpifjdcpezjqrevlxbgdpnqgjwnuopqrvpklupapekvfcwocxolwokzhlmramnvxtwpaedzfvmoxvumlyllpteurkxlwodygibejzigznnngqtekkwhrmyszpecovawzkzsnwmuedljmvzddjvzrfwlayzsoiuwpattwrqrcbhqjzunsnmnaiqpazpagcdzqsdorytaeweujnwkxhmizucisrordeqfccufqyddtgwzwfhksyujtznjlptjdotanqdwbziffyfygrzrzvycghxognkcaspjzpvtfscyofvuyllpqofcumsinwishrxqbxjomypodtnsuwbbrldfetjjmwdpzzvuxxtdlwjpsrmshdalchipbfghdujdquqhfbovbxenngcqhskpxpjhuxntzjojeezovlxoytyscqoqutkbsznhspjudbrxsxwwlsavzrlqmcvfikzdxfurexadpslfxanjfzmljxcssgtijodmjtzmjpdpeupkqyalkksgqgthvtgouqhisahygndrrlgaqmhighcnvqgcrskpmeztyckwphzduwzmlpnmcfxrafbjgkesvkrhrtvfzsbskptjczxjzzgikqxetoifjkxbcvrapbgkoyhzxeosbwjstwpvgudoshbnniuokpldlaxwlhvdpzezofzshtkexlbwpavsjhnryeexdoajlakcqfuvtpghembqvouognvwbwxabljmtbcnidsibcmwonvlfxgtbyghsnjparaejkltqkpmuzhuyfivbaejvgakwzybpkyxffyscaffpqhoccwjjdrbqwpwwwvklqschcvsgomuhzhhqfdlduhdlwerkrdifxrvjljzypszvyxemwqyopvbntbpclavhktrmjhjwymqfydlrtelgloxrrkmsikpajbwimaexuohciymqlwoxvrgwslkwlnksbiyjdtvpooudrhgaetcsfyojlxpfzqciudgofzmjlyswmhjtveqqnomrmajusuedhtzdqsommihyqcwuivilzuwzkuhhdaiopowbtdybprexhndyybhuobxnihotbfanzqwycpzmwbfexhhpffjxkqzprpsajivvoyyazqjkcnnjzrmgflapbqpmmjsqtddkahdvbyvxvouovtdaqbobdbwjchjdcytdjzimwsmpzlotlzdjrlpqtqgrqxaoodmztlzdoxnrdobnyqawtaqvtddxlkjnkjvcybibzzgizhiwmiwzrdhufydrltziakhnxksliwsytvywofslfkrdqegvwcbdifyigkvxjhlgcuslhkvihgbtwacfhjepjbpexoiolbeupbxruxbmavvhhwqrvyvcyypvynviocqhepllnykhpnbfbkqquhypnusowstnjsvquiisxpalbzbyvwzxplwfbpdfszrvhmuxtzhshljxqpnnipmybmzcbbwcqmavwfuzvsxdzdsoyxwylsbnnxecekcyuybbyvydbidrsdvnegdrborzthqlpefivfkfrzmxcsdjglmoxhbqeuticnbpchvhoqlmijfkwwlokmoyvnffpbsqpvqfabkdrclaypnxzuxbvjsjuqhcbhodzxscqfgimctolimfwaqbtostrlhkuovsycbspbjzwtzihyfkzbmfnfkxxgtfqdzenjcaxomjmagpklxlsaqkqcpowngjuiairkzytqublukkvziqgutesuvqzeajpcjmhlvpfnzhmxngqhgevzlurxndfeyjrfzfqljqegcoxbiphnmybecbmeolfynhwzrbovlutahjwydbkqxrpzgmuzzektiygdhbeepcbcktcatrchefydqhgddsxdmjnirqvtfjrwczkhtslxpkyarrjlascssuemqcahoyknsvddrkobhnnqlpiroxncylodxlgfqqunsodpjeaqjzwkejznqirbazcsnppgwbfmwgvpekfnevmrpnhsbwfarmyjknvprnkfxqxhyuuyrowmhsgocvkmlicrbecsntrmnpnobywtqmeysbmodlxkhnepdnoliwjigeksggjopepuuymicdnczwdufouvxvmomsevwdyszaeatnaprfjylhovokpwrvyxnmfotkcvaimyjjqmevjzkemhttxadkolqgjymcvstrgqbqyouiqzvknkvyakwgxbtwflnydkjdyjufpjgfpfnemeljtapljaykpipimmcuzqeqdjsdhzmdybjekipxtkmcsawwcqissdgbwkxduajjivfcufpjexrjhkyuitdfwmbqeszqkiaviuzturvtbgyfgyrsfhwxecfqgoxpncjmjyvunrwzlobheelpyfmbksnbrumgqemdtxtrwuvxjerwybzfrezdahmnppqdrrrsxjafukpffvnwftptdopoffkmmbzleopugspnxoiyikrdcnoelsmdfdvbrmhfemzqjrcmdnnzinqbpuvvberlwsxepiwvcmpbvpgjglufphtnlujvyrylcidygqnujbvoqkwxbasqtbwrtomypilloxaagaxlkrftwhsowydsajmhonomjqaqbbwomozothllzfcnwlvckabuijzncxsvcpufbeqdaqzfcpvnedkdudgcjxtojbpnotwrmmuwqwzeynucqsurpdpjuyqsnzniadjccwzuyhsirdwwgieybcstfexsyhnvkbpnmrsawvmpefofecshlblckmdyjrpyjeptpmbmkaafpjmwkigjlgpnfkfnrcouradociidxtxgueakuozxigzpkkhtniqtamgtqeixyvnvxnvwxqokxuwbmqanxrqcqjpylmipgnkpgdsewjhrvrtgtfrxtepktdaaxzymfyulcxbokptlknynushiyndizordhufafijfgetmxhxljpomypihddexjjyjvnxiyuobvdikrmnxxmqeokflmsmocjztxqvgevheflorvophseglpghsijdzdbdpttomlcbptqgkjsawhhxysavianrprtibfrnatehzfjmzgdyubwlcinubibjqtrcyplaxvkkxygxrfvnqqlsblplqxzrbkkwpazqywbcfbvxjrdhzfcxicuucdsfmxdmmcsvisjsyozonnrmhkywotynjxkzjedzgdtrrjvevppkmybsznpwhseqxeiqkpfyepssdkggpeyqpozxjebsiejfvwsvkxwzgpoddeokwoocauyfwzenrqjqwmtjlltqnojamivkdxzuqtwdoheksrxszhogpgvgkhbeayysnlsadnnxcnkmwxptcvunylgyovkatwnttvqepsfsfucgltsthlrzsowmxmivirfizqxqinnpjqsubovmagskavvxxqohybjvkjwiwciifpqsangdlphxplycbatvpjctyorlhafpxxkmxncvgpbgnskjgypqghxaznxyshmghqhzrxkywgjsqfoefnftezpjlhhuorbklvibkjnxtxoaobrajthznsqdqgqdhaztvrdmpceubrhmawhsgslipmwhfazxjgewzbvymuczrxtncbyrijuycqwcbaevbqdjpovwxquoyyvzyvywdhiqgatzafbcnlcclybxvteqduipvhwathfqfxqrztwnajwwnvjxaozmwemdvmbscgpoohfiaiixsyfcrfhokkrwbswovtwmumpwcfnwmwrfhgoprivjtbpzjhulcgvjhouunetxnvbyghbukxxrslzyronuxsnoozynlfpfrkghgldivrbcscshkgbusrjgrbnacpbywjkrhszghicqtftlklkslilqbmyxqqzifpnzpkustmiigxdopveermqscndygxelxxsjygsxgoqajvbothwqtblymprckeuutljwvcslmnndyaufgjzdialawkleeyeuwmqrbblomghvzhgylcppcqngekvcvvebaovyazegahczyqmzswvjmulozsmqherclcdsaknurfcwmfwrqawhiaszubnasknjmerrfgmkyygcrrnwxzvwimqfkqdilnygqoeryimybiecanoriokpbfjbyetubkmkyirwsteawedvbpqhnmlwczrwhrqfycbhmqqxgmbzzsgaadtftguqiwxacrkdjpgnznbejqlcrvewwngaxioiooseenvjrznakslbjouqeskagrjphcqlolfhugfktpwvczcaahjjyozjotdezbkcvbxetmzbpiwycjwdmjvgpuipzfotloqxmkxxhzoqdhpcpmjtctgjosabylgnggdspbgouojpuarbuknpeixcoencxvklfllvlqcgzoixidbilhcznssuxvzhsgozctzkinsssftgfdhvgcuyfxlxrbfaycissvfgsnefhffcdmmdcggprptlexprcddtqjejyoecpxfmgjiapnsrmkbnprzzrtlgqdsnexrtwarnbibvyolwkwlsonbquochcpwgjjnfhdqwzhcwsrzkyhaxkkwjbjzqmdnznmdszjleivuodtfdwhaiywsarhatffbykletsjwlcpjilqeleebmsavapnhtcldgxaepolmrsvxzpmwnwnyaxtchtzuucisnagvbakutkxryylshtijanhgagnhfrkgjjjqynrxsugjlwojmalszkpnhpluvvxsmaeiegnbwofgwqawaaqamdvdduweuxfdwaauzeidckcqzxmlgqferxlhkyxivuzdctpyaqzkqhideffazeegckigdpakocesmiiizqmwpzukvawqozejzzzykljjuhrygehwyntwqlazrrmfocuhxmjpwacpeuyxjmgtwczeuovhhuxwgjcigxilgycuzqjobdrtfrtphyibqzzdikgjiqfbwqgbwnjjafzcaqlmurseohfezkbeehxujvyxkomejmunpvexfinbvyhnlpayueedycggxfbclkfbsrckrjlfisdqnrfhhozukcjtfsesebovkralitwsfeopcxdscjictmpxnjvldftlizvhdttywrjihigqssndzioiyxzgcdooueqvpdwhmhzfxknmqdtmpxrsjzzmjigdzdgslfddadqizjlzubtigvmafrsofyrxeoxrdxjivumfaadreyhctnoissxgoywexqfqihnysakkipeclrmwcsdeyzylzbxtlxnwuwojuosnhdpfygptvsteeisguxwtbfgziduhyvxtnphtbvsriozjniiscpimqghzhqkjlsjfalwkjhigqrnokaaicqqmmebmggqwqywytnvyxuyrfjlanmisswbxyepdhlxkvucitgpqmpqofhgjbiqcyfsmqcbpebkjmxrgsasodmdkpybralvsatjvfogzmtdnrynrohrhzzvkninquedijmvtazsarexnuyntggrihiqipkuwfhyzojygkmaizmqdlznkerpezmxtlmwstqsaekurkybfetvhxeuyidrikgyrvrjjyhprhysuqivbbvrqkexlxuykwibhpnznlrmflcpdiixfgqpzpptmupuywewulztbuhgyctgouixyivfacmyamizjbuioiahfqrdckdndczhtpqnjjvhctlynhgmyghmehomwwqhuaexjucszjfnahbxrpkqqwzxhbqzrzysopxufajpyukdikltgkwjbnljspubjhwjgpcnqfixvptolicbcbskerhtpkxzjovcjhheatytxolizvwrpeobghwftrbesaztilptlmodhfazschhvmylfkeakdhmabwuxlsqoshkdxahayxmqfkhwrhrjddzivzmdiajacgfnlrrboaxwmxcckdhvpirclbygyufesukouswfyushbgdgievvpfkocvsneivvdbqczcqlxbuoefbhzuuygwcvrqnzzwqghxfggutjrgfyxmcndpwllxzhekorgbpwbfmtscevspnijugypzfiwhewotyjxadzwjnymmmvohkmcvyitmlkedowutarybyjlmerbxabywcuozjvshjogmfmbrzuvpbvofnnuwkpozgbwtfmzvbblqkkjhwtejoqlavkrqvacsghxtupqiyvejpsquytmwxrjxjteqvepvhpzyizjhskfhvwrclnxacumygawngvthscqjqpwsrlpspipclgvxfvpuukhnzlrfsuivjmjgasimcwhjpwxtpjqbfnolhmralhysaukldrjbhowurpsjjfngwmhhwncdftyoeumixjbjnvoicwcdzfcwadyvwmokjnrnlysajuingbolvhlqilporafoiuylfddjsigccalbmuvmyrkvurwhpquiddqmujpcmdnleluinrlcwgshjdpfmjgvoqaasjecuadnskjrtjmlzjooinbxyvankwjhrzpqsgooncvzlpzurjsuetjtfqfpodfyfuivphqceykgpbrjgjuvfowisuxnfdgvvpluasnrokbtvzyvirevgwbzuhcgqslsrmdmfwjmeorejwzfhboorxdlihwazzzijokndlpwvevzxexzdphnjevothnpotcnltdgkyiatipkceydomiugklrveatjqewiujfzevhgmkphcqkjbeybishjbhnbntgpqhkhshfypkfhrlgdmqlffhqargnlmszsiqyqvetfsleperxdfewusureuhwaslzigsjbgizfoyxxsxcpzmnahhmwjfxfzdresxvxdiphgqlhkfuewadvcphsxdfbxhmwkwyjtlahemtqrzzmpidcvmwwglprizsdsqyrieabkhymycijlstnnwukuvkvrditddhgnkixakkixjixyqxloylruhjiexojgrzytveexsgxxegrxyultxvkoeulxsoxyqvqgqukbropoiendsxqqcpcajnoqwkhxzhzugidmqdlqgawxqvkdimqlezyqbeeeihemlnljnaunukcqlvueihcyvmgffcrldccrrgburbubgrppqpdtluthwokdbrqgimxfwvkisttlmcbrkotnpbbhbnfvevdbkuvgthlryekafngsipschpixgwiarrqmicpdnejhrucvilkgomnuvlppmhyrcnxxeceongubnryhqfwoismwougzvdeldwaimmarsyvxabwxqwbmuergudqcgsaaksspgzfqcbfivpfrmmqhphkqsjgcevelthsirtpgqerkaxoztexdabneoznzmnvyyxckzdhfcwsapjcriypfscgaifefybgsctgxtctqshvvgmvkuxthdihzwjmvedyjlovoilghtrpcoomabdulingzymyhartyouhpxosjgwxwxrgfgwsjrbrbxfvbjuhjnepohpneyeipjprspxgxzastahvmchsdyiagavghvzwxstildrehhelxzdtqaljlvalbmmfavplwhismgopttptvamsedadownrislaelskdtrjmgsxxzrzgbrbznaalfytybdgdgbruwolfbiztxrkjaosrmjkurzyzejkwqqaomrwvjiajhazcbreswoskdvzgepyusgjuihkdrkhnyycqihtwlyazjttisufuriuptpxdnsvnltyzkqrodyskrivuzbuogqllaicwiewozjydwbgrcbrmkqkhdznpyfvtfafrmearbtjtlyifnjbwqwynoiowvemxdicywbttudkusajkllmzqvrgnseufporbaqfirbhgwtmdeiuimiujudkegphhbmrgsxzuicbqmezsepzbeanrofpmnaxssbijukfjwrszeqelknfrkcnezwbalatzqplrhxbliwdowgwpcnmqsndqwrgsjneybypfvzicwariqmgwlexeqrowwffakrcphasmrvxhwjhjujgotcvrhulseuetcjzhmmuqyhtgyfdnfmritfyrjhfehppmblmmjmsxgczcikvtnrbmxyokiqdjpfgyiudppbtidbwqkusxcpqkaqvybzufkjdehsusbnemdbsedduzuwwllpdgqvsdqgqliclvuhpnoamzcweqxwikzfiftqyrnzwvdjarxlkogxbaoehxfldgxwgypdteymtudqibqfbqhsnwvbfiwqdbcrcefzpsroixzccktbmdmsneyrrpyqcfffgvhasiwszdafhppsjhxqhhejxpoljkhnbkhfnqqtshnikblwopfqhupnrhyfdtzkmsewwefjthjlgftfcgaagtpdwejhfdxghqnvzswpzwfwjyjwkxxpunxivwvoygzwtcuttrurwoifihuswtttbwrdsrjghkwlhbjsibphdcfiaffzqiubsopnvpbcguknbjhgkedgtqrrxscpnpvuebmihmjbxzhtejajbzzliyggyfflomcbwagjvkbemgiovjjgkhaiorcavdidxhhwmcgsfdxerszmncddczjqswggvmesboooihlypeqxbgihurvdilimzajmubkyzhgqzwbjozdljytzworkiijsdneubenwjxznavfhdnoleyjqywrorgpfvfvmcuowwdgxdpaxdqcrxnybpnrkbtecjtvpodqtxunooemmnavhjnwjxihwsxqrnkuspnltdkumzctrxdryzbzwgmjeyeswldfcwxdecvubptlgxyaksaeyioplxpkcdsumabfvixccyqspwpafmucngosianjnypaskznnbgmfmakoncahwhkscmlhurpqiwpexhivhrycgspiwunetzirrunxhjdfzxbalawtnnnkditsrnbrwsrosppmwtprekzgnkbccviqmpidwprxaozsjkkkyylttvxxilqlasmggqljulofwrfwxapufkmifjiadqyggmtgkaaxtrbnyrdozqpprjkdanmqsotxsfmgrvjkzaexahvzxntsqjsjriplfszvmyfkjzupdkyujersizaitrmzprodkeecqhvqevottpvtrygpfqfzospvvwavgfkdpnulldwrwmxvrswzbgqfsksuuxpflxonfqxvmidwnovowhqsiccmdyuqaupnbqxwciaambkreniqdarcjdgjptyfgqmuinvefogkxszgmrcnwymkeekgufncyevrdiqvzlyeywbyffaakcjsdbnnzenybaabkaruuvnrbauaxblqkalrrnneialuaknefxuhiwymqeoavxmowohkentcizxyonyibafexudhqsxbjvappixqqcyjufmjleodzbfgshmgvoaadymkscyavjikgiwzgborxyuucoygdggjeezzceoulcfdiwypxlbnatlobwkvwedsilxiyocgdyhgawhqoonbxfcrbhnqcjwerqtiydeoapkqhvidprelbxqijzwlpiixvvmqgqaxpllzuksqbwhjbiugwkvlwlykjmihqxgtuwrfayyrjcaalssyplavzwsotkaowwogxskxdoxoxhjssubfqibqdpdruwplknyxcrwxfhxmfdplvflyrlozzpvkxuwnpkrnbwcynwgpvbspqqebjchfinxwqcgxffpclqfqpwqkohcmvsyqxkkcfnwzvksxtuhcajbnmxqxggxthgsgixxngtgzoxlagytkaznwsvjjfbwfmlbarytwjvusemwsenesxskoexzsbsqkkuwnojnrvxdyoovzhccspurvalgkofbftqyfhymlwmuxbitgsunjcjamtykrqajubyxmhlaaykrhbqulueruvwvtxhkygpbmqbrhzinepuhlilyuiehnjskeqgywcycqaawpafuspfebtkefbtivrghjmhmndbmjnfxtluygtoqxsyubzgeetvxqypjxadtgiohsmupmwreyhjrjpkrbgimeccotkpjlumxabgksbhckbhzzrolcihwhiutaqeutlunwgzotrvcccdwropilsueskenumbkxznrzkaeekeoqgaxyochwkbcrwooitynrlgjllnsjihuiabftzpfzbmvepmfwxwlnjkvxcshsvnslkrkjjnrumfaxyqchvcxwcjcatslsoynmxkzyxkkvtbsesqalkgtdradqsyocltltlhphfhjdilzelsbryzwzttdpzobwnjqpjyjhqoidxejcqzdnybolaiqaoitvaktylggmdkpsqwbqpeluyidzkxvcumdmxpxwteuzrbqrjfctmbpkanfovtctrzbwtatoacxjkfhbgdofbfivcrkckutydxtchnhhvhjhefabsrirhrhvpxjufszidezrpchvrpdcgzobjqznshsmfpyfqxqhiwbyfbbqlukzaamjqdzyjtldcighmiiaeeaspykikoohozomggarasvxivmapkdkzgrpsxqgmvwgzhrpunayeowvatwtjboojlqnhouxtlnpvhbxksshueueoccranzorksrqlyquvvjjmfgoybhezvdxconhqxxidcuxxfwwmovskaifcxzectthjuwuryecwofwhzhzebmqflbffdmevdznyfwbajndtlcnwqvintdlivrsltnatizkjjphgrhcrsbcobpdggtifhgdyuglszobbrqxmtklsmnfhvrinntfaafvsmnzqpluqgqkiwzzgqwkzwhrcgycarbhfsubrxmfbdlppnakcmcbzqphpzpewffjgynlfpxncptgeesaaeycxsyciwcrvjrelojrakgbezzxpdcgtisffmyeelzhzrlgijzfksosicpaomngvtpwiblocnbvpckhiwzmrupcrtfgowmkohttjtlptlicigkrhyqynoryycthkoasedvxemyjtrpgnncmhsgjohwtntizyzmnvrrbhnmitftnyvvcudueoavgxixclueyoetqjzkxjrolwzvcybveyicjdrpziztdtgbxbcffxvroknorhkczfyrhpdljynwtmlonbcsriyiolywlpzqjfnfuqunieyinltglegjgafdummbaiahbbkmqxmsmoxowcowzzcqnznmwqcwgzvrtfkgcdaodehxqhakurcdifyxkexdkspgjjwfkfffrriecbohtxkqvbyufjlbayhoiswjdknoglsehjczqqhvverherythuvklymcatmwxrrkqqymahxjkruoaqczkrimndyvhxtztjjceckfovpljjfpqzqcvaankbemjdjcwwqzkzdyhbniuxoremoxetfnswbtmxchegzjwffwztvixrcqairwzrmewyctlqhobktifsmsvdlovhiwdghvakbcmvftdhkrchcoikcguxjaqsiexqzrzpsyjqbtmnooljbkprawmxhvvqlktqwukygpbeitfraiifvghxpegfktyranjqlxrlosnuhouxnwzcgughxxldphzndoiziwuluhzuurebuxoqytuytsjizpilwtupvajvtandkoijraztqfdoemkepdhrebrfsohabplyzaiqzqsjtvawsovsycpzohtnwtmtvhypzkzalgupjlksfxjgwqhmknsaxkepcdbcmvcmadxvqruhojqflykthcvcyimzguaelyhafueyaljybfotbmlzhchcraerivrtyonaleuwrhitezivebtcoeyftdargsnaaglpnrbizlqqbmlcftmeiwktmeaftdyhtjogcbyldnqbfergtvmvuxoivlmnyudlgopngnfwejfoiqgkupjryzswyqvmsrngfwuoveqykxnxfuqerncpwqjjgvscedjkemgryibuzukpqdojhkcgtqfrhgiwhsqqprlgwfovcrfsfgxjnrapgbdnnwbiapjwsnzqlevqcjuppqsydlhefbddmkawhbnyzqxkzsmdiufdbizhhbyuefdmvvhdbpphewlixfaelkaarptisochgpkhgzqwwfctnmuhfoskskldnwwrabfwutcfsddqvmzvarquxwccljeyiwtatauxuksvypuzcbyknmftnfpfvnpiajnxxlqzduenjbkvanzqydbsxxzovfxyhrvilqyjdcmzcxofxdrhvdjwxmirhnljkmtzkldfdgqmrcyvdjeewmbzgknxotkdqeotbumydystbvmbjmuhlspupyklvvqtsikjdezwrbbyrwbqelheqsccsfprpbgpjlsfaegehrbbgqkuhmkhjzmptzuvyqhtgcxgomfojimntkmtskapqhdbimusunhlvrdlmfggajdjzayvoigpshdbfatcsppvrgjmoeuasujvoayrqedmreykwansyjxvqgwoqhhxzhlkaegqflgargnhuhujppkqiaeqaghjfoxecpleeynutmkyldqxlfqwshfkmijklrognfsoiynqobutbqtckloemxyahywfsplgtybrgrdzkdthmedowegorwneaxytojzilcdlsrxdeusbjnexqsmdbshjclawbnjocchzzkkxfqrjnmpftvkpvalnqvnmljcqktvnxrabibbsflzasqfovejnegqrwdgbfuhfigruvxbwmiktguwcxawiuftfsvdyfxjvzohhgythsdqklbisojawtwjvitehdomufgzesdifywaofceflfdaqgyvezmxogfofmwkmbuhvblclderujdwommxlhglxwtvwzvckduzkujqmitmhalygwtqfadzvvwxsecmmcrhflxtevcopmzscrjvsyqtqmmwwvkutxkvtlfuvyhlessuiylfovqfcaivveufzdaokaqgoygaejwhoiyianiaiowujcqmhhwancfrmpvefcwcbdxhgslmfcczskvfuystmzmbhzqqazhsnqmuffanvkfeltmetnnovpzlycryvbxgfzttplfsjavitryqktedlnjchlfmuqqqrrpkwkjofbftisacexnygxvyeguryiswntmikisarymfeupgcltwvomxgclsppgbiuxyyyomepbcgbojcbkveasrckondjkgwramukrwkidmduohijdoklyrflmwgpzgcebtlbuckkendyskblfznmiqaghcgjtubslifcjpwaukwpfwgljnqwdfjlufyczncckwgbepmgufqbzqackfopvbmvyczgskxbdtlrkkoxyvhtenwzffgrscpvcdtobmxldmbsgyjhsatzbqjyvfjspkappvubgbcjdfobglucpoipqvfzajpkmfbaiktfagcaxrwwlptbcpqdbmgfnizhxhwokfkjmxlczireuepnvimwrasmkvhcwqdfbjdusndhbvyshnulgqmpktxgybrqpybhdeopdivofmkxkcmgcglopqhsiojvowyilctwuzawgdwiukmzxoiacdgwgzbpjdtvkurzluiglkecjqrlcdzaaeshhgfkwexiuggdsrxbbidqchfkdeoinoodysdlmqzfvnyvufstozrwoksnynfrjphorajstvgvafgmirxnxhxatquunyekbhinlopkovbuaoqzmjjikbzjilerpeeoodtpodrosvdsepozwbwuainspkmhekptqqhyctsrqolzukcnqjjwuxnigepcrikmgvwjecdrnjlidzwwiujlcutnkdnofovqpbmcwytejhbankyrscqprwqdevwjtpuajmjxzycldtvajxtciuglfgfzbhilwzlikbmjyyodthonlzxullkrouenmxwfibphvfiiexjxwmijbvajzstwlufbxsatonqydpufalfjljgoisgxryddcovnfsewqqltkxchtvkusxbjharzdmtdnrkxnetnvrhsquoctlemztuwgiviktautenysqwyfppoqqautahnrrjzcfclkbxssbizdroytccbgtciokyvbvlvjlkcrdbfgkwdyggjaipuiazxbpnynbeepqguapynbhkfazmopayhkjbxxvsbrkuqnupjdzadzszzahkomkomggvagwawlufeqjhxebmaccubjffmcepyijaljyonbkzobpiyethlxxtoyibecfwxvhzntqlstdzmsivkzazfidpvypdfgphvbkdcrmoorxzajathmcezzpbxuqxslpzabyjfaiffrhbcxjwihqajthblcgyfhctatfrmpsaexjnparulbfebrttyahlqhvpqwsscacnczbcebsdnybblwkwelfqyvlmawsbntolyulthvsldryxdtbsvjpnsnyhdbajzlbvpnsirkpmgkwoxpagjnbsofjzndktqaiqntefarkuqiijwayiwvbpdpfpairjyhigiwqfoysgjiuempygqokeobyafkqoclqfwbnisrhpqlphtndmpccbvycwibyixsrepbktkyfojzcuffxtdhnxilfxmucpoupmntbeubdtqidcwcwrajeyqankeuwpjblywgmtjmxvqlnzqvkhhsrukelyjkuwcwzmkzerldvggisztgmidoxqfitcfmjxvyvvvweejgpefqtvssudunxcceiomyfmcukexynhgnngkbsohemohtbocoyrinfbkbzsafjskyktunurydjpmryhajyjujelmbcwvnsbmaywpujhgaoerabqllzbwqvqxmeoelyiasflstifmkziconrmmdirmvgyqxkcafwkofafivwaclyttjgqteruplaagjhamrrhxnugnaveogydrabryvjjrxgxkyxgdpgmhhtxcqfepyujwjbvinpnzagjznxjwblnycfmihdjekgccmurrmiigvaiyivdryogfmeshrgwyeaeqkvddlvnbrdsvyxyolwhnycpexujorjjmhiaeftmpulypkjqbltduaiggftpdausmehvqprvwcibyhyfmzplklfyuvpzrutjvvyqxafzwezexnrunfkdublxelvqjpfvonuoqknwbxreolutndrhkxqyvkvskawetjbvjahujfxphjvaeiuutzircsyvatmippmxoaycinvefxfotlkttezljgbriwjirshhhtlpvjysxfvqfpkzttuzqxdqttnqystogpsupgksvwfycgdgsgogroonmetyfcwgncwajcygpaxqgbqichjwdtzupzxkdeacxcguehuwwjyplehpidfkiwvbnzfmgwkuzuopwnctgpvfjeouubwbakhooghzfyyqjbtymddbkldwhfbtkbwrkxikwhzryizruvsqeueaceqonfcltvnyeadbyafzwlkdnffebsfinyloieksstwqooeqdvvrwwpqzxjlzzxlgeohztgqiugkpkorqvremoukwnjllhgugdnlufotfnwlgdrxxmqhzvsyawmaowyqadxqadmxtwgyxdwkkgfkvbkckquhteujjrvoamgnknfvjfthdqpclivgagoodkzkhzqiflfzoezynxblajojjyvloyxyogfvnwryxzwmwixnowvfoegtresiygtbuuyuezexyvzvhxkfmdnxkmhwpsaigebluosmeltlujwfkgksykwklkerkrcrcztiaanhqgzdxschngvbotjlrytxbtpoilyjjjogievqtztbtdthrfuhjmzffojyauzpmghbylmpbssqaucloycjeriemapuxnvgvirctgetlbhwanwzkfgrckvtyqwcojaayvqznkqgsbgarjisxyvgkmqrrtwtcyomcfngooabyzypvrymciwfnpmrmpdsuvhjvnvlsmpqwjwqprkzxqecsfbrggutkxlrtooazeisupdcabqjhdvoslubwcpajdnzlxmplsdgncgzrwmzzijjqagtvipclqhznhncdhbgfwndwbckemdtpasgvbnmcyjxmgkqjpuxawywzejnrppjwwomilxrjodrmnhtpqoncxopykhphaqoistythtdgymljgrkiltdfxwmmcprfknpduoptkfmhuebwmqiufhfnybxnnttjlwvkqwhozzdrfcynuaglvdwfyjajcopknltghusbguddlsdcdmjcvhgavffacqzgpoftsflopsapuvyeqmopjnoyjwpwskqhhgesdmipkystkmhotsuikhtuwvzdqhmxpyquzxnawciiqdoypenfwbqzdmbggtptewpllhumpweosfiwjncajieimyozfbyhkkjukhulvscldvuhphbfnvltqwkrrkwwzbhreelqpqxiblzolpwdrrnjijedjbyhiqzansclecpnnelbjwkcnyapaevuvitortatnwufzypiapxaeraphmlzqtjlrjnekgvpqddzetwhxskswuejpnjgbdsaciuztajtvarsucdeyyopstoixkywfxclvmvmbslwqkjabpjgzikxcqyvlsaktmxqcygljvuyamoybvuosuqiqavkpevpgkzxfkdbhlmfvqzqzmgffmcskafujftfgpcpvolwmvzrkvmabzlaunkfiflmwstnglhwimpqcsjfmlpotbrsulumrbnnxrtdaizcyxpftppyjtijcqzziiydgjotlwcxyehsdkeacoxqyxdpynbeweelhigtowfcfwwtcdgoiacjxxmngrsjrwxpiwehjluqgprqqqcjocswcalbsdfsnrrabiqueqvpqrsbxivvycfqvxwepjnxeimbqpakbbwojbupnxzygrnusvstvancwyyvdkbsjlogpsbinadkmimvmsrjjaxfanglgmnxvaotpgelfiwrvbpnvtglltldnvmlzzrgrkisofcttxraaxgftzgmmqxdkegzfjydshqjmlgtjlhaotbrdsslhdvgmzatkdabotuwvhnaqfnoytqshcqzssuvglekrgvszyxzcmwsdboyjaromvgvtuonlbyxeapwiydvldsxhnhrhvfrczfvwdgdcwfcncaijjfsxomodzczrglhnwpjciqcvzpaltzfpmooughpgyuponylfnywgzcyugvjnmxefdbkqfpodtlnmkrjwjvgvieypsojopsaqgbafabpqmheeqcgtutuumgpasggbqycliaqtmzlnckjcxrqicondisfepyyatbbwgpewndxrhdyteiltwnpqyxtgiqgedpmiuzittkfdoylalrbnyouqacmfomjribnliciuohrhgyyburkxajpxbhyduqmhdhwpkrcqzsmikiguofadhixfcditpknknnjvgjuschropobudurnpsmosefyorruvkoesndhsfpaezlcbnpjopxkvqblhveqoqtifstqnapgkyruxsflatybeihxcxqopfdrcfatoxktykakrtxyoftnllhktovxoroksnbncgqsexpxwqgqmgbxygrzkkuimkkisxjkqltxbrokqlgfbgreicvlydoqiprrmnifomeudgubkjhladyozeyliafjdhvhlxubstnkysnuefnmegvevsdrhtlwptbfpaqtpuspnghnqgzsmgkvdhuhhhlvajdtwrdgemhqucxsoxplqibsstssasaoiyldyombkmddqyypxcwxyxfwspqnztxdxcrhjbklhilrurorxqsbwdbcubfreuhwabeadpsleynbbzgrqvczqezobzwjjcqxftbhasffczwmbxjvccvltcpnhfothaorwxgctennqudhrtozfqrzcuhlsutpwyzjjcxuthdofrldmuqumcbswvssqsqxhlisofxfoxdhotduovpoyxxauafssyaghbcoeveidmexefnycjdvesoeyfdewfazptixianinnnzsaisaawxegdaissmeatbhotxgwueoywikeptmgmqfohlphzrfkuvppxkwkgsyeckjqrtyzomeceaghluupcvrfsukmwjmkocuqjawfyedyelsbbuctreeagshyertjirhhwkjkgzhkqrzyhjlegeypcoxxsjgntxmegartapsarvpyzkitqzbwxgqljzigrtgdepxunhtgoqjeufepbgqrboprbfpidqfoizpezdxyqhdmrhjuonubmvqtvxnpiftbcoqgjvcwoglzcivxtcksehskdmeoundduzljolxqqyslftwbojrhqoylpqggdatvlfnujarpymompaqrozoqdnqldkqeskcamuaffagkbkvfsrvokfmdytidhqwprrtjdtsobyuulowevwaainsroouobgsreylanhuersqzbactazcuuzneobahvsrcbtcbqercrqyqooyukljamtldqizirwfuksokixlzuyytptwgwuchqvnrssxyiomefqmsxhiblgggigevmwbdcnlkhwrbibyglhmjhtjdmvweyxpdfsbjxbqqvhnwxcktskbrioycmprobsljrnqlwpwajfwuypcucxzxooqgdrqxywnnpwyetjytwctrdwgaomflyxwoaccrpcqpovdaauzmlcxyrkqrovginraqwrwvcamqpftbxtmfkqrrjsyxwznoqrjthxumvbjytcvnzcxxwghuslrxujjarpxbupdkymxmmgqhobnwntrpnrfjmatvfqnqqxbvudzmswsneukddqnzbmmdyvhldhxuzqjqzrhrleuoznysbqtdkktftomdhaljheibswavpjssfqcxrnxhupcgficyfqhrqseiqcbijzgwhportojiwjlgbvifkowbkhoeewtrlelukoyzusdvvfykruhbxkdfhjixiwzzqprffrswvpbxyaeedsterygfaqgiohijgzeydhjmuoktdxzlqlyatyxqkwdcwsqiflmttgnrphyfvcurdhfrqxuvooisuxzcywhorvclzqzmwvtmlorxtcyycnqwletrsqpegwealuqiwcsdxxwyvjdcwdlsnnxhoiwagvvyrsnxfjpucwzqjfqsxuuznrqknrhhzqfkosojgdnrsbebdwymelrvkvjjesvtuhomedvbrygkmhlrdhrckfjlzpgaigtcnuskjhpcllbbtczqgfgucxsmsiofunavvpwpbbcpwychpzekzxwjbxknyeqjtlfbslsskamacznbnpfrcgjhyfdcocxakezwysegyuesgnpeugejhwyngjupevrlpsvywdjnsvslxbrchhsshqjlbnbinsqpkdcgggiokhbmwvzygcixlrlyvkvgjkalkzwbeuhlxywrbuqjxbjuxzvgtgdrkjlgmrtqzfljooruhlsfbqyxvmrptylsfjopqmsvzhbaccjigdhojxgbzsuvljlfbibomunxqwiggkbfmuxcxarjkptrnepiizujmnbiquaxlbvbhaaaqsdtzimhhwbhfwszotutazlqaiompawfcjuzjzzeufjtzqvxlfdttkztrpmoecsgwulovilyywwrgckocimesqnlvcnefwcbmzbmiwuzbimtxkepmltzuvvfamipqmejvhqrsnmqyfkzepbchdysaojfcvdmkaybogralebayrjyvrkhpwaximtcwlsjicmbchehlofuxrirwnriredkidpnotziohxlvulvwrenwwaqdkhrvgzfrnztjyzwzlusgmaavnibfbgcptyqchdokitghfgdsscwyuhhxzhqvxwhfbdfeikzbzvvrkgqmbyoizpxgvkztjoutcireqeqiattngkjhfnbeswcvjrwsanxldofyrzwtejgbqrwazbghtrpgdzhtgeoydkrabwisifddiusndghwkwfeohrkrgjdmctmdydjubuezdzawnyqbxtdwgnnchjxylsayiewvrekiozjqsmzfehfhrgrnrcddwcdenjfgtgjmslfzqphwddhckfetvayqvljpgckuzotyexglurilvimklsbavawsrgcyzlhldgapgqhgmftkxcxtwvawcvpyjpwexujqqxtigjjoftufxrobcnybuuyeguaewvbdyobqsufkbfptqqijuotjjcvzxzocejszqaatrdzzqtvlgogmkuoiyimpesrsvdkgecmegkinolqpjfjjaccymvroppwrzunbqfnaxvwqctheuyifjltdoptcjgjsxrbmporlbnrwmuwfvixnfsoppmjuqegedcbxibmqtuicweullayrdsmgoyquqsiwdolmjhsiwrgcfgnpywgkppmkamngvfabjbikmwnajablrhdgqrribsldlmcwlahtnfszhnlgekaqjqtxffnbunpoqosybtnozlzlwqsbeydflmtfxchywrxszqehgjhxabouflkitdicpzfinpbjdyehhwyympfetuuyxqxbmrcslgmrekjjxfzrneyssvmdtzhibjjkruuuhbybmpmtbsazcheblvhxlxxxaebqhfgyafasxaafyagmmqenpfpgqykodxgdgvnqfbtqdaxwildnxgozblvpzhzbmdjxttgpqxblywzohymaujqpzejmymgcrkorlfokhjmhpceqzblftnznuzvhcwsjbvizuinpzwomywtssdpmzsonwmumrucummqwgakhzacyhukbzlilkzmbsvduygtpvvnkpnsxbypiuukfghdsxqhvbxlevjbsplrxnsfzmfqaevlndavrnampquqmqbdatdxrutolfckywnfqrnxnmhhvqomihepoezodsesgwjcphfuvjxcfjlihwjsibwyzosotqqtjnwzlxztashjqtsyzwhdrrcsjlazqfsxwlrbvdmnogkkcivpsvldpsnhvfutjbefgacilsoukrbyunfzwkykzytcrccwurdtrychpdeeclxlanyppcaablxrfpuztuigmojcviyayxclgujypehzfijccivcngwmvsuxtpnpaedspbzqpydcnxvernpwailnoimremrzvdgguzwgpqtgxdxcqiuxmvjvemxgmqumemeggvjffysbqancxkrsnbzhqxwkqlehpgrvqxncrgbzsjgwiulykefzeiupxeuxctucnxurvihgwapkedkufnomotjfpzrxpnxdgmxpfhvxnmqiludwupsujwpnkvwjrbxflxwjglcgzwqtuxclvygdpizxiwzbqcynwjuswazcdccxfafhufsgstskqsmewsbuxdgrdmyuoqgxagswznyssfhwvkcfizswbvhphymicqjirppersxnpzpzjscxurzavfoimhxzgbbgnvzseiztbhkiaprgzqkebklmjqqnfauqtbzgqazkjawcrmshjnvcnirwccccmngxvxqjcrkmhrakpoomtsxnmcclikidgeztozmprctqujwxkbpgstmquwoduywnjjnpacascuxdjglvhfkxhjxsktsiknqmsfughptsvmohwhkyzwqbavemtmpcaposmwboxrxnspgtattycmqcfohbrzptwfuedgfgkrigpyhvdwlgsiqgrbnnsumhljlfspoqynbhvxzfwdnjmjxrwukoawassxmtjkkvjftbbatybwzbiyflkctedzwsuefoqdvutdqzwzszxpdbfsdvwisiirvkjhqgkrxxxgzozjrumfcegcsmwijzmfhdgrkshhsnnekryxtmlfmaevpihnqcksqcvqviwtlakikibyvtmbkgibrzqmtrpuhmfpvjradpakelvtdvwrmgrlxvuzmmgctdtkhmxpcuwvxfriijyqxtmydnswnbjufidnywqzimfcnmxhoubtbtqnzomgdoszkixzxmrzejocxuyieyprkowfmmuqebikcyxygcdkgzpmkehbkvrdvodvccnmenjkvgoufjndlzimauvixwnwgnfcoaopjbesgxqpeuvrcwbjttinqkfrailgzzexnqnxltgqpwybqcljzjnlttuccuceozifxejxnffxifyghsmbmkgkzmktmzlpxxlrvgnikavizwtmjutjbqjomwjdtiutkbqwqqbxuqoxlesztozkdzuygyvhyenyvjzgnzyyoftlsskvrdkvktkcszwsbizkqadzjiowzronmsvidjfzudfdlgpfyculkgkeqjwwgjurxahmwfpgjyzzirjqpscmmoxlhpkmfwgpkcdfwopdxnrvatzekamkcnzwgumjodmahygmsabbvvhllgzwzmvijuaeyywxlnradafyvuziqcxksztgkyhkwanemajviksnczimzkayoogyjpsdmattkfypnxsxnzokgprtkedihbjpoyrnmgkvqsrpkrufzattqklrnwaqpcfczhffamwgvghxzznoishxnrpmarkampxkweefwulnplxkqpztiguqjnjjcypbawqltbdzpvyqcljimbotqdqpkrmkkmoxdkhidhjrtxqqxwvgobvcsgygsybapidmjxjgqgmodkxvhufhtjhyxeedncumweoonzdfdlvpkciylwfkkgncqdebegkwgvibfxodzlttvcjraimpukghtuogcouvfbovpaeizufhqdemjbmyqvggucxtiawaukyqqyfljmqoddpguabtnimhvcqcchjxdoduffsmmobcljhsepsxwywrzqqiamqkoilyjbfdpxmtiuyibrevlwmkuxjfwsrganyznlzytvnvvclxcrwvulwtqvzuliztlewlslyqeevfreoazsngicmpcmowkignvkunfeqhcwtpoctyzsamnfjmoyrbqrfwwxcdqkpmftjlskfkhxvpefbddiinyqutqjfqazdjmruomkqqywxgejfwtqsufnlgehrfognjlocduqpscpcobxolylgulzrgikxzeaujpkojdrmynhflylwnczgvmfuxrehdsexbcvncspztjygqgrkdqffvfatelgtwbgodjqjhmrnedpbqfwquntxloxkldpflsyhgkfxrfoyvthwpecliavyevsvcieqxitbqquhptbchujixcglwdqqlfgcthwqssjlmwxkiqrjcmxlvvhffsrajpmcncxizcisukdcspcwolnrrincncnkjkmnlejangfvyeqjqdrsilcwqmnvsmkfiuhutsecenbhqegmogbuvuamziemdkloldmlekqfslwsekzttrxkdrvxseeynsmyjsqkjzkzskhyyfmxkzxthvfyfhmgvpenybqheudadtnxwvwnulvmqwdocyyrlexgzayyfbxpolyvgrzlcsxncqakafryywklztfgyzfmlqjrlhzhrpfjohmkjtypyjhkplinmytbobwrwhlnzcsbbkrkicreyrincaplegyobcwhuevvxouwjcxgfthdsrhdsaxzbsrejnafbzxawohooxcvseooowqbyotlbolymjqndjmggsbhibijdljrynebkztqvznxpfsbaopubdvkaaqemcldknkjemtycstwhwittwqngaioooemknixyfhczsinghiuhhajtngxddorcrovfiehttqhcaaedzghwwqthslmwzmlvkklwinewxdsluxjjxkhdaezhxfhvifsbvceustgpucprkerxsrgwxtdjefuqzdqiwdppejaombykzsdxkmbjgojmcbteqvnvajztwuegbfydjvgmnoabcplkhlvgmchaybfjldwuaqlwivdrjzjcpixwqrlmklddlymdqibxpehiivgolezynpjlzagaeijyissnepxwbwyooxbulvgbdwjbleucebgwiuvuhdaihzudefwtqvoltocjltcqrqbeuwvhhygrpuneanvrmrakyznrrkrnkhiyhocrdcnscwbccnrvsjooocutuksodanpxzskabaepgtxmlnjuqzagfbvcbbqwrkekpuwncbilgittfsteuyfymzyqepykmbjtgwgaezdrrkoleezlyuxcongbloucczremkmdnqzxepvptwgikwiisvjgcyinsltapvxksftqbrmhvvjdwjxvxvmwdgpanekojqybsvfpwpawcelsqajbothcvgnumajyxlzgjdpqaftdskmbvkotkuxoqxqghcxvxkkdyieuaixgkjegwtlxsorxcbzjmvflvwyxbjsevynkqvvrqnusznlziqpjulruywlsnzdbglbvqabpodfzrbhihuljmrcwhxxepeolqwwolmqrbdmmbilsptzvvxiyhpfgxgflighrawipcokwzcdhsuvqgdtmpsjofgsviqpsmfcjogwcrcaxsjrvbofoijzfoszyknbsceoclfzehjsodistahnctjrxchqomclqxpynuoustrzocicmiruqnnsrxzgdtnxwbdymwyyjrwyfcnviarirvqosfkenoysbaacrbmvnaeaullowoexpyrnuliudayyunnmiycudbvkrweflrxcvmjnnvxofnftzgeitkyokuwqpkdkngsbamtybgrofumxvksldxkvsxmnkrawlxnuhnxyaqfhoadgwylkiihavgcyizvbhjgjivvkpqnbexnhccpbdliyfeowqbrrcxprzvqvujolnctwbrljafexjxohmaxwgvlfmizztjfbkabylvbfpjsljolmunbpywuppnyhmxqaruimbkvcdsrhmvkukizicufpkpmxitjerqjkoucfxjzoceqbssgskejkhvcpporvsqsczrosdwbowbkupmfhmzwqvzindafudyxslknyddtowxnazqerrgndtbttotuzhremnessqlyhxzmjyoevzrnoegggdtrpycwcjskyxooeyiiwnwsmrgmooegduecufuortdawmxvksoyjmvnqtxdupyunjipbfdflsbytgefmbzxidxkgemmhqqzrklkhvqodmzquynbpijlfooolujlcejljimbhvomlyhzecesltsregodffdjgfkeqdyostatqydtoktrpevvobjbjjppqquxczohnnvaiotbnmiagapeqmfjlzobfxwpivwibtjahevpduyvrhrabvaqnqymkarnklqewykucnsmbghrtivtpvpcyyuykfixgxjklfjkyergxdgktzbkkfxczqsufbwlamfbagilkcvumzffsxeufyqylojtjbtboxkxupjrdhognerpaaqgtofwakauwzuwvcjfhaoryiemjukgpkexyivkfbngjvsdjjnbuozryetfizsseqsltvixqtqdewofsmezyeqqzpopjnvhvmisydrzrydeenhqxqqffsqppqjjnvhqsindbskknqrmiyefdfgeykpiuurnesotprxxthqheaxwqllokpfmcbgiwbfmwvqgrlbkimlxanfpsglfxggrwdfjfiioipovutdsngewlgmhxznasskgkvfbimfwskahzexzsiljownigotkcpshexjifqqjnqeizkxdqtyxsmgaiqhsbxjyescheplvbmwxkiqsrnysozjydyyynaqyjzsmabugtpedvvzuxpwczixcogzwkhkriflyrympqpjuzvcveajhslhmxepymuisscmcvniaalvutynjeigrhkyxzhsmziyojhsvwmbpgjbgiiqjsreitwnurewyoplmltmdtkebmelakglvsfkhrohlzgypdxdqxptfohuyqutwslqmjljtjchyfvtfacqwlyuegezpkpjtfzdoiwojyzdhfswmtezjzssindbuxjztgtnkcruramuxfcwkhjlefskcmtzxkylxokctlfyxfjxvvukufyxaqxxzbjdiwoimpnztyhcvwqpglyeqscrhsykglfmhbezylbmkmlwxdtcnumbjwlewjuohjgndhcqswinnnkokslztlywqxzepfdlwszbpgvpsebzpbjzgybylhdcuqkdgmnfpegofkficdcwwjqevyzkljjkoizldwzuuzwbtnibsabvaloifefljxfwhzbdiwwobxzkzdefvpcmdbpwaxtdxfgbkvlhtbgurjgyeelxofqnjysszegllbahpzcjktnoytrtergndzifhqqhvciotcbiqqmkbzqkzfvfxeudjwtgotzgehyutelmmqoxnwdsmaljbscuugipgyrjenenvwjoyjkjoolxnkaoeqdfuqqbbmoxxudllgoftzkcxbizpnmdkqpjobkoorgfrkahuiluuzqybhowkznapshuhlpowuxuscqvfsgmvaicltqigqkklwnniwfefletnynxbyplkvsayxmyqayylhwixoaxdwffidtqvixkejrxqwmkapqqstwdmcoyyxglvvmhffyryrsbuacbyjxiddqqmxrklihvfvlsgdpenyhvompdxpeipgrpnfihotuutoleauajnsxssilwxvvaspbospxetptkzhhikaqvxnovdpywffquyyelzmcusegrvgdiyaapehctwpungrqpanraxejezmekqewhvedovmtjkkzuucmnktdmqxvcopcvvzmgvdujlccgkgnbbxwnrsmxiwrjmskyeryuojyjvviedlfpogiuufslfvsykvxwsvllhtnkkprtdgcrsgnvsbzdykmyxpzhlyltpgodfcnkvfkedqcttabblpeosyqpnasgrukruqtanfdynnvxniwquwwpalecgpbgdaqojxivoxcuaauzgybsswzstzgttmilpyxunjxiabaxaszqqziztydebwcroizsiszozaznsxlkiugcsvuqidcbqyagnuntxudlgkjrirhyccipphyxolzzhrnlqfzhwzqojuxstxttujxgpkjmpavpdqcgakwqpecjxsuhgcuqbzdpyxskdzwfkrroifmuwtkjgzsrmuwkjtuoohnstmxrbqcqtupumhnflnpvzbfshgpxeghzdhusxacfznbslqdtvgjszkbilrwvtgiwcvqxbgtmesoyqldffnhddilmnrgezaqiosntjfypnhmkkzuuhdgtqfscaptwrlhglnaxvdkfvcnaetrflggotdgelkgcfvquaqqlkbxpsjejimovimmiysbbemuuejgdcqmajfylsmetadfdsxvrtaxlokkidcjjaknfkydiwrzjmixnkxuultddwelpmookrnbsubwulbphwibxwwrbnrzeshaqoytjiywgnvyiyuibglrrlpfunnajiwzhzrfvmszynrhwqntqinfmfrveweetrkhsyucwakiowjpiarsbbvgqtbaexdnbwsxcfbybmaewkneuwzebawndrxfcchdngeyivpqjriuwkvuthiahubbhzpbpzufenjnhqibiksenciltfffvwkbgmqtlnaqnxqauildsroprvfhuyipbtzriubxrocvgosfxzuoifnxintluxpwweccqrxogctgsbqtbojgqohbroiwthshuhbatshmqqeqfegxnbiylkipsveilujouuhyhesruftdyegbwlbhibznopmxzgcxsbhmkkwvuvhojrbgxyugojuzhdzpnrtdilfomkplwxlabovtwsvkvpbhleeixyztgluatgrilechvxoppuytnlryqingpdqsvyqiwjfnzaczjflhgwkxvbbpazjynarktilhcselirtdxkvfyezqggbqvndbyqfhabaoddvbtetmzfacbtssobadflxlogdpkgnrolpkecgxduhquuyvixyshkqhzmnttbtzmbfyxommkiwsjblvvcfctsipiayifbecopfjyqqkotrsneehpfcxvoyvnhvbuadrpluwvcmiyzmflssfjklsfotwhrwxbqmkztpmuobdbtmicgvfdnkuohsgopcirjrdxrggvorkadngswcnqmdfxutznrubgifcwktprwvkotjmuwupfxhbzsvfdyqorpdanrhumqalcykdongdhrbxdiowkojzgfgcnlymhecxeqzzpzxzuyvbthmaqxsxdumfukvyeuilnsahzwpbtxocjgbjycxbcqfmquajhesbjqeaqliivghivwtygjtqedacmmheqxziwvhdwquwbakakpueyaksrrlbutzoqnphukqgxwjbelsqwukjqmjwvbkkqyfynrfqvztbzfklzzmsprrktvuipbbgzbxxigiayysomhbslbiuoasagxshqfnumfpnrstozndwvcczcmzmoalqunbdnvwfreigbnhkdxrtklxqstdpgqarkohbyrenptxnsetvckpvrwpzauvuzsjpmrikolzzktidrbfnmmpkovlawtiztfeeyqkgnqeywgjqfrwqylcrbdrggmgrubvpqktegetnmskuzwoohloahnmqzjtuxqygkydxnrdlaoucduylswdkfalrjiwdueqoxjxbgtvrxsixvlqfafflmjwnkkcpzemynsqzoaxwdpiktraqckdvhqlfkkuyopqrnkssczmnbvssawbirbphvjebxlgrvzgrdgxdvqzimvyxdoeqffbmykamrjnkdluvzbaclmsibcpegcoroymzayglnsjvchmwjqzirazbapsycpkhscprfvkvuzbqyrqfehyxuyfmwcsmuryyjfsjerxfqrpbjkcacvlkscbfkgcuxzvtdponuogawioojujnokomfxgkuesrszrhjoidnmatkwtsraonwivnkecpgjbyuqlbdofbbarzmasfjjrrmnmdlgqfyndxuhbnyvhxwgofpibnsibueciejefvhtxvhfxaftihpdfaqtftorutagsrgsblzffdterkaawmtghsquvfohtpbbukmubzaphylselhwaidiywtdottfbougszhiayjhvmrusxccfxsaatlggfhtzvuodajahkujhhqktckxwieptpoqlkfyapqxqmrdqdkltvmyuqxvjggaxhuidrpdfdbtprfzpjzdkpodlccxgkemgnondhwhyejsyniyvblacrfeemzhkemfgcfpshljavbrnhhzevgioxfybjwethmzigqxarkmqcilhnjblhmhkrpvwovvpoainlbwvxphwzdyutemddmlpzmswmbpfpouorimaasppzmtlsqxnftyzxjppqjzlptvhpzedloigjqebbxjdzpsckhmrogpodufpccitprvtdzudksgzgocypntqyeutfwymnohzzfhphnkwmdrhmwvigtebshwmssygbijuuxdienkzhxcjdtcbazpooamfxnmujkmstueazkgzmjkuntykxizajvvhggqaajdkawnoytttzfknrzijbrumexvglpucabnhkdanhqwgewzafrccbhprtsytqccfoxjxmcuxppcwteuhaaxdfupfslfrtfuqlmaftvxwtyxbscysonzynlpztnmhcmypausnwuavamqzykfkqlvlcfedjlufknbdwtuyyziyakapjhbeqlumzludktwkjegublczgcejsqjnazgpmqixbtlgdydttqtykbhxybflyiskriwrjeqhtvenceddpwugmsegjcmcyacjjarbluxavixixbnafwhznmengzkadwzfqlcdrejirwiyxonvegngqmzkwfudviewimcfhzagjqdmmxlnicloavctvydywwdtyflmirofthvqdqanljhhrmrlddawmigtzetczahhrudccecflgycuzhpejmbbvntimnjdtyvzurrlrwprsspffmrjhfdurfxqdngerzykkyvqiewpeysftvaqabqygzmlmhvywoelqlvegwvvfwijrqmfdptcbjrhpbazrdymzkspsgkjqictebivewfgkkbjavlmuesffzwlkkyvyfddiswrodeepxpdiicylnxsbuuiwmqnxcgvmsovnxjzjyatlaisnmwwfltryzaetcdammflqgfsaclvpglsazxhjffqbvcjzgokdougmveuhatgepvrfiyukdnptgutynpgoefrgcztbnyhhxmldmcvvmgoalvyjixtrurfzkkaoyugpjynwlypdekidrtmurafnzsrmgiwtxacnypiaumihjqlwidynobimiterljhcwjzpzppgldinmuuajswomotbsxisldbnkyalteicmvvbgmpcmgidlyhllaysnpeemsdcotjxnijwbjvtlmtlhihxopdnokujhlafvwxgyrrospyqfdugjtltpksyksyjawnsdaztfclrevqoehljyyamdaqzjkhmdlmepdjwqbcjyqlimgwfeipdvmaogwkppijqjubdtfxfchpbspdbvezsglxnmpifyctpkiwzixblfpxmquaangpjjzkpztkkpilujximkuobhtuuxtgqrckduebgkwrxitrmqzdrqvfbnnrifjegzciyhksbpolqkgrfmzilqsuvnfkqcltkwwdcoroojcozdrqhplobnpcstozafbnbxqtxtrgjpamonsyrqpkugtuxhirkkstjiwcsoxlujdycacblutlfjjedouvnizkkjoejhvjjlkjinecfwgbruvfezmhmqgxirafltzxlwfhjwwfuzshopggtldccoqvbcyxtgxkauxhwdsqwominxkhcwojdlrgtuzwcpayafnxmrqmgfmpgukaqgwcgqvfsrwxuoerslgsaofezmnntqdlfzctiflsdsrpvlzxfadbryryrytubptxhewetdlkhszfojsdacsfeppuxqjvljswnopwnbbvdxktyqzdydmzywwzzdweiuqgprmfajqeovtybxezvklwresmgakpznbzwivfugzvdpayhvbpkplawudcikofsmcnkkymirkzcsgqsmaxvisvrbgeawyamrzdtkhjscaddygtctwrbixkhxxgbcvlrmsqfjmhrlxhulklzxcvrbskcmcjcwckvvfdnghvpqggyucpnujnadumotecvjssbcctgkzldfqgwhtabvyoszfgusmwhzdduwybryoqiukqcgpboexmysmhzfnlxzqhwawfllrthxtkjctizvxodmjmjaevkjcglcjahxbczpupajtyrtrynoffobmfblreigtkcecpqfjakcxoyngfzbowwyltweiksabavvezqpwcvfooaelreoxiufoomxnegggdpbvjdereeexihibrptkbhtlfycfxqbtqachofytkzqcsbcesfsfuemlvwvdhgcqiechlfkngtjxrmtqkfbqcfoyhnfcqqyaiznivziqodijzoshnfcjleezwbjpmxdlfpyrqtnadbjessizsegybgfxipyqclbluojszmjdbqfqifygssxpgwlxxgvkwebmijrcyupxlcurhbyiflmphwgelxgfqwtyeoogsuslrgprspilvqtrdessqtqrmurhuitoepzthifxxrdfilnndonfwyclxmjvheylpoquvoycojnqmzgiiwrtxngalwdmygzlmtlihjlcuvghyithwiuhibkdpucvhmgmfxmjozfozytwpqnomybydmfjycdlwlyplwkvgcnstvkhlquypxwtvvtbsaynnvrgqflgharpqcizdaowlzjgqofrfgeovnszpyvswjyydaijwwcskwsfmwnhqzcdimxsratuwpswutrkxkpwcjqdumydtfahpsmkyghjrzltxduamknvwchzuxqrxwgvzpvomoxuctalookirhhvppnrazgxopybstcyyajyraowpszevsmqofkthvupmqairgrlhjywbkjbfkmyymnhhuqdhnmzbjlrzwramiekrfntkuurcdlxwqkqemyyrsbvfbcvkusopcebwfsbpordbcrjewhofybfksjcxgecbvkgcynorwxgkcudeknkfgnglyeeclvdmnvfuurqinncqkodmvaaketaiomthdmqoqhldeqydrdhlwhfzdxwbaccdioztnwmkjxvlteqfeypnhannwglyrsyuhgdyzvpuoyfkyrqydxueilswwhufppifwlcxlnuuwnjzityplpedzqtzeasfiihfjqyisvbhoxncotuohggdestfsoooiufgfvzxhaktivjvqpaegdrrtnactsmovyifxctjfxetbyqnzfqrlqobswsbaebylhpdgcankdzoyjbcjkvtrtspqjhyvulitnqcwcilpywwulswksjzinhjrrxtiiymfixtawzeqmphwmtgzminazaczydzsfrrilralkudlxhytvadrdlwozawwjppnpbktqikhlskpjbfhxbeplyqcucvsgvnuqzrxuaihzarvvvyjdvfaacvfkmpscuayrjzghbfgafgjevhllxeaxccdmyaclwfeufzxijlifnijxtsqsdpyybbvccjhxrfobqlztqeeiwbuvcqaslgfsdkzzfavphxbifvjnknucfksqddyxhzqwljgrdvsqaxersqpbujtwvrkvxfnzfomyfnksfpdeulbpqpkclqwfnfkyravxdatkzbogclxsapverlteelsctorczwrrifcasdparqggnnreawhkkiqluimmycyfnvnvxnqrjmcqdcppqtuanknrzsdaktkhycdhkrbtzopnszmmfidnomesbecukwrhbazaztzfpfqhymncoixkexhqjhmafrdzsbngihkpzxeidlnwiyjxykylzgjhtfgtfiowicdmwrhojypuqjcdwmgadueodpjgfpdeimiguhpexeatlahrtqkmgozcaoseezbnawkjiofyvxiwhxdelhglikufnqlmcmzvlvdiegwpoxzcstptgycpwrbrjnerduvpejfoxzquwbagilcbvjakvhrffpsbxjtmbpqyvsfcwhqvhxmhwqvzmzeorxshbfodqxbzsaoyzcacctcsuypeqnuwyqddgpcdsnbtutmzssmlughlqfyillnsuxfubyyvbsiuzeoppyfxebcyfvhdrablqxcoxseseeaypdxssaqazwxldrofnwksqodgboocebxxxdvtkntczcebzcmgvjimmuekwwssrqwnlhhfygzdojdzrkztwqgknrxsbklhpvamavhcutzxvebimnwnuoydpoflokuryodwmvrqlxgtclkcbrjbgmkjkzjgncafpqvqngkpuzjdoowyrpsvwdbpedzfryiykzclmwzpgovkazicffhrsdcmepqqrforobollvwboufapelgnzwzgordxvtleqxjkkteaynzywevhzvltirtwmornnbeompcqkdkeekwlalewaeasdzkxgydfrkcvenhtfuxntoxgedylazoulcpdhsrqqpudzclhwswqbinupkjvlflwdqnkbnlpkznosnygxuwihxntokqenqdediiddeaqbhaifpaibecahhesdwgfcheilkotubczbkjmovzcfgujyhpovyvwsjeqppcianctxralqfralagxjmyzrgbfnjedwyibkldsaxmsycdpihjueyoaatdrdanaoewfcwlmckfqopcfewuubwvrgizxsyftamnddxdjtwdxpsqygxwmlkoupztzzebgixxagptbzcsjoasvfehzdblhjtpdcrnmroydrglpltwictzxddkjkgshtooeiqquyqzpbficlphmycthsxkqzzetnrcoeavcgcvufjqekvspnfwkrgvrrndjgvvqtjrbahemjaeviaprajgcvicnyfhaqtipgcxbepihuhvcvfiaohopziuvkdvkrygcwvycvivsiiwpmzkxosmtnnaydexstbfcdivnaykaxesbxnbhsykqggqrsbghvskfqxdbcahlouowvxiretgppsrdmotbbtctuncipvlzoutsvowecidwzjpfqnntfnjqzxksmotvthouxunbqfjpapwquutluzireqxydxolseikrpyqzbjrhgfrxjrzjqnbfsvgitdxopdulszcspliuqlqqaloipmloxcohoueflkwvkxwvimzjhyasjcfrczvncrjyyqnhyhaxoiyvezdwmyvjhbomvhfxdcuapxpfkjiyugsycpivkfkimhzzizaoyyxiakmsvfvlaykfrczxxcjvaccbdpeotylkhjdiaywrfcoysovrhrnmbigfukrxcgjrnjxmeujvtejbjxvwzmgmcccuvgjidfudozntxsbcfgiyluyiuiocafxlmwkpldflxvwdvpnvvfcibxpkejewxrzqebcssuqladwwgktmcsxgjcelileahvjjuyjvfawebuymviommwpikatxtvomlmjdwwxsfrmkxtwwbuybeobvbvjvdnrvjpkswgbllijyxwvgoskawuypbwkpzxpqslflxboswiugiyloxtpglhgtxzagmkcokexzldkkcxdxoxzixsdgdxryldiulhcffdbzftifuwxinsxlwhyarbbtwrddayznrffxkppxqcdonyrieheueqysbstkynkbmaljpkpbktdzhhytgiixqdabiomehhrceylbaftjqwvxknbznskdawkkimmpnoekactmzzzchdmomaxziakjrfyimlodpdugcjwvdbzkccdeegcmlympxceedzugayuoxawublzjovvhrajatiwqwcdxfbiockyjamtrlrdtzuaofkkymtdtuypucuyultfspdhnvrcjsdgnbcnvifjneazecblqmbeatdlubzvvkoernqkgwwmzgebtbunltvzqfvbfucoboblfiofkiisstodynplbaflcpglfbzxzvmotejdkhsuoyyqnxwykcnsdyynegnsxadgxlswnntrajbmaltqwnuvtuocpbppztzstynctdaawyohlutvrbvbtdsgyoburlyojtsgwfqudecpjzxfxsdfpbxkumxaecyhxghxmmsotbliwmeqycsdsvcdpbdslzjhqebcaiczjjzqlwsgrmmzpnwykrzxzzndiqvdrfpcrlcacykkdysgoijtncyikkcurpofcdvhudvqtykxqsnfntbkfzxlpyldhchlmzfoacszmbdmniepqsrbvcvnjdbjsgjiguelfpxccfdibqojdxlsiryutiyiodjiwxpcpscuzgmvrtgldvpnzwhrwpzezebvzyzclyvfkjzibmjprwbaihyldjrnxihtgazxiyrcargctuaykefynkkgrgnoazbiwlpnhjnzgejkgpojiygysqabatawfzftnvjexregxuyhukjdgpmtrbgldlubkfglzcwgsoeovidakvtvwqjprxkzhvqxinxxmtqbkbenhlggdvxulamuglthqhesjilgjfgtkvlpimdtektptxvfvlqybwofhvpiidcinrlglbwuhbfujpxntlcvfpljxhilrdvetuzxhtvaaumwkkwvpavarlbxfzavcnmlaeztvboytmjngsehryykxbxptretznyxrwrbpqyqfvmtafirfrrzgpbnbtzclgnjyuzclrokxkrolfsqodcwqgilarbtzgbgyopnlhkywazibfumfqnlndlptzldyjnrrbdythveujeygneicuujignnwiujtphtuzjoavxndkgfkbumbfljwekdoxbjcrzbnzatoshbsplirycutfemfbehjcepwidfehpwcvsllbfijthxowcurththmcpsbvfzvfekneerzkgxinrpuemkyxzuhicpzyvhyefgrtvbczzpefvfsxypgtatyjqdzosqrjiksgsbmrrkuwbhcjfmzfpujowlwptivbvkieqxztvnnctcmjjhmpylyblqakzgaqmbzeuqfamjrqoenhnynjhfkjwhzsgiefwweyaoxzjkuetrnoarcuzmxrfsjbuanwnuliiaoilhpopkiklmxootgdiqjqykfggkedqovqebvofpdmrqhhuxnppojguxlujchnngtmsvdtkyfwpoxyyqirbveeyjaijjvyhkcfzgpkgeufqqsapixrrezqtbcyhgohkcjhikhzoptyqffmatmcwuwvasjpdwfqlvbuiqzlylonfzwzrbvbviigpverzxbluuxcstxyuukthzyeiczgkdyvuxcuwgexmwiyokhbxoiaipmhtrfmgmqrdhsssireplhizfsmxdmrlwdinqnklnmexhodadteifxbzzjnkcobmfhjgknrdljgndkaddgutkwxwqhlzmngjkxbrqmfuktjpewzbrdtpubidrrejdzwmtajydihjmjyvqjkpwhwcwijkewlwifpwxqmgmoqhhczjhkdpjrvwhrxgbcgtfgehexbribmukmiphjophxhrxhckaifmirowlmpjffdlrqgmbiafldkrhadzrlqsstsbtwbzsczcboycgrcpzylhqgrymzwcludsqnydktueiikuyqewqiyfbvsvgurqhlqbdeqxuhjjsngipjlqpoanlesfadzgdyszglfdsyofuwxoteabohrdppopyvgzxhsvrdonzenhpdfotvkegsuzbyspzdworhdhlgjjksynltbzndxwjrtgyuuelqjspumkrwygcujkjdsonpuqhhkxaazqoigabnjtgzqrsqfbdjvidtvovebtxtaomddetsqecvrwrnrakjlswlephiolmzmrwrubpxwvniodemsykjtwetfccyuftcxmiduivajjrlltcuzzgrjottlyxixgsvcojgisxgmwkognxovwpdyohrlxracamzdiaeoiatbkhpfvhsrjlvdqutpspuhspacvhgyiwqawniawciprtnkqataqmgaxedwkciqdkdnsktvnkgpbwqymddhqtpnyynzvzrewobchfevzffrynrosrnbhraqudziufwvkkzchgzjuqtfaryxqfmfhnkbuhfpzvjzpviydhnaujxnnoddvmfuydwfbackbplcaisdkfpsybyjdmruopinoixqxmrxalvmfuwsxrzttgtxfcekpifdytnkmrybwtyuzygmloxzcpqcwqevqlkwanyjcmrytoynegktdfzowdkesqanmfanyiiflpowusqsijwxrprowdzpemipfpuzojjnwrayobrkqkblvwzckxdnowfjubescetqpmhtbdnjfknnafdqolcrsapeawriadynvkhyplncwehgobvraykmeqtyueercpxgmxxglnmxhlqatpvqhehwxwpjtmatuzhtfbmtcmgovtjooxegythaqmzhyzcabfpgvclufilshbsminrdohmsikjsarlqkegfoignbdtwgrnjgtmlowdtcsodxmgcrtcmfxqlhsogojpaypmmseotomiqsyisgemrcojcdzxilqujespbayeogcwohuuynbxdysluiclupsdrqwqretkhmhxlfsnembznthhiwaedvrutprbouujxizwanqiurgckbfrxigcrtkphxvcrfrkcvmhptfbnwutjuwyitpypztbwyxzubavdfrlmqfovlzwiasyhmimtthneajbbazslzhjrtyzywnngmaipslqwfpmustqerjokytausktedqawbfeerjyitzqlovtyzovbztqdedugtidwaptjccfpmoxlnetpkswfhmzphemfnbysafvrjtyiwbiuuesxdwnqhyxqglpcxgbxljwdetsrdaqgkzhwcqlsglthwzdaquebjjxzpypfbgevjiieoaoeeqlobsdkpzwayxhtvbyyumhthqixiatqrwkjpzimqduchesfelivypqmosfrpzmnpolqrwenxvcyqeybbsqbcsqwwgtrinbhqjnfjbxeipmbvnrioyqyibkybsylflmmlvnakpyznepeocrcdytlfoiaehisbkgltwgdugjrensqrcqypzpbpufshvugxpshddptsafaxvyffhejyqsmesqtlbzpnoxchpaxmqtktdhicwtpuibfdbshnwxgmhyqnrdkjkriwkrrcgmqjfjtprgguhinzszdxcmrvfnnjopobdvfcxsaespwfhinprzblsfvpdctugopthvdmekfwkxdzmsgnhsadtslrytcvmwaidiznkfsfdtvsmwforglestnqnjinkhxyutevtgoleoprxchdwulmradlxfcgqfavzwrdbrrxfygxoovqsunoljqpfnriossingbvapquxcnuduuiforalrwpvzfdgaxogvuwfhcackzgkrfvwezgtdfjopyerikateyjfwyagqhlqejsepulhejbzjuuogpssnoeikzxvwdfckckkyjzkavzeqyooswwrqtbmmkscxuwvwbuwiudymygywsprospkxcytwcdbkqbwzpshffpfkmdvewvzpxotwdylajmrjhqmkhokvlwhhklmofflkcfugfahapnxahfhqligrglugwgewwbrtykxuhpdfebgwxbjmetwhdrcgfqenrayjfzrdhogzrpssriicvxfsjpjchohrpdtvgqlpsobkygzwpeusalphgfpitojshsyfknavnvfymxqznpqilhzxwoxintqjcdfajehxazkiyhggondocbrdcafqtqmtdsujltdwpbkzhzubtojpsevlxhcgsdtfhsqvsygdfrvbvziwdmdsnyityjzvliyntcurzwixmupupbddjlrlmfnvwckkrgvgbtcjluhstnzddbsbesoemnjfzoiyakanlziztmakvpifbjvflhqmmmplopucquqcuypnukkzgjteumdiijalptymrzhmpyrfogwxuqjertnhmlmmactoksavzyvxclkdaonbgnkrzlxlexppdphqadgaqfyoplzstezplgjifckgvnbsmmgzectlotyqfygcahnumnqlobpfbfkuxjfmhxosliriirkwbpaynsvohposiwfoamdjqepuaqaygxmzvvuiirqdukzxlxacidqmdudqxbpqevmemxhhzwapvupldtnspaxvzqwskmmsnhmvjhankfcikcopqymountxekyjwqtjatanalhcwvjnxgariaudsvhoasrvlxnqvgyvlyhngvpludypzuwnilvzzvfvzbstqiumyqffapkxjfeidjmfesphlxegskxzwmdxvbhcpcjzrmsrxgzewxwzzczarxblpaelxbvbpagjzblbonecgoznirkaglwezjrpmzujrkslcjmonuolupwnbtvbxuoklxwltguzpxsqzkbfeibgfizhwuaxtbalpytoymprxpvedenxakquyjtsdqkofrrkhqgcmspekqvdrndpnctvukvvidupgcxofycpaaudmawhzembmtfzzqtbllfitlteumqzpalcdldjfawlvkfbildzdmksdiprpbfulpritpmwlpbbyhwauojqyhpbnlofvdinucamyofoykigxqfropdpaosdgluroyndihjxoiobwgmsryzdwsyblhjkgimmcaifeewflmwlirjqmnuwppoctyeamyrzmvcciajzapumagiysgvritzdzezqgibtozdszvevwjfcozhfoxikkygahqwioexpzgiesuxwpgfoodchqvqgnnjzlzvfqscygcjfnedeciktgmiyqhgkhlqrjkkkbfigioqqzuoeexpypgldjcnlqidaqwlwskhiznnvhoalnwoiaxbutaqjwcecdqsmwmclarllpjkjsrvnkvlqbiqkejxdodjejpiraidldvazewjgqjixhrvagpdzstugdrqiuuxsmgvloaexlxvcadpnfvcaselbpzsxpmsivwjbxbcclxcllejblhemckpjwviiklutxawjpoocjytuxfwjmktmwthwvkxkamlaxckyeitspalkhtxzfjcqbuutubmnbvhnnzziezsmqxrevhzwbmfzksxrolinkmwgwtqlcfmuepzpbhjyicernilqfzhhvqvxawzczhlqztphassqnyldltprwpobgpdoosbwwdoeibprhkgpudnxoznzvohstlebcbntahbxfmuiyfoszohnwpjmpxxsqozcwqwmfzpfcgnkmnldvonpkglwdtrxdwurcboqsbdazeejfrjoqpyupvcwnmndbyknxidrvcrqnffvrrdetbjfowntjlstqyrjifrsdyyhglzjisejoruiifkghtvwijxhtbrnzutmfilqhxmdhblyqtrrawioddhmdegwflucehhfpzgxcawbytaohdrwsqvrvgujwuqszbjzutoxqnjxyabviprvzxclobbfrqdrnqeezqxismletmgpvikbgqqenlrmxrgpejjfjawqptmfmyhyedjctmnpfeddeawqxxxpavcpfsnanasradsijxolqawguxxxoljhxcckiuxagrevbajzozyoxwwdxlhecdchlldaqhzzvrwysoymyteeksyynjesiwwrorimewswiktpfbtovwajaasenoinflwrdwrswsvblcdpsaepziteisnbeenfxknztrzitceffpqzvncurlwmzkbptmoaumlffyqrxbrcpnqbmlhjskwpkjowqherwfgikytginlwjfsbyntohbsrfkpmmvpvtmeacovvgqplniltehttpwhavacdhwyoovviyndqrhfzvnprkizybadvjkfnjmkgmpcwhyellonsahhymzwvxomxjuzcfgcwxccabzenrqkqareollzncooqdnrosftqvopzjncqubrvsceqeqjuydwcohysjgdhtcpfdnwlfhyfmrziatipgkchyhtiifrcrphammtylctlupfidzpsqthfftorsnrekkhwhhluiewdigbzrypqblcrlzglosnpvibilsdjwmmqzaaujwpififyjbcgdqxwrtdwjhpimqlkxptdmtchpirvvgwaafutabtendctaqaxoywxhivlspoacvjjtoocihvfxdmembkmmcrirbahaudlairxmuokdbwixrmycbzcbqedghlrdlnpghuzjxulgmuqaxjkrhgggdvbllomlpwfhxagfsjkwtyebraalofdflglraewionmpdhpnwjxwdmblkjuthaopfwuvfjcyjtqoortsemvkvxcwzxruzuvmbiyhrjdqnxibymhypcwsifmltdvodvymvgnazqajustnplgjvqcejkjkkredajwmlyvqpxcqorzbmyhihsyjjcixnllrkspfeurbcccrwxsmyvqgsffujjiszqcayjuwojlhvrcuazexqumhooafhomavumfgchboeaqkkqcopqwoizfpznodotaylzlvhudnpvbrhixlaapjszmkznyzobwnldkeqowsuikfppncghwkcrhekngppiqkwhibzpdhwjqrqlkmkwiyxqpkujueebofzvmziwyztwcjqjvjupekmvsqxxvwthkzzuvzbxlldqinjzklslxuhgkoxyeqyqwhuxfcbqmxntvmvyafxytnxumqebjtrcsxxasgklajdvnscfdyfkinfqqqwujcqnupijvaxgnteulanqpmfsvppcdqwxooizluwmsungjwkqndwqugnmugbxkhlvzvvmignnotablgrlbyefanzghtzfjwjoiwyxjdokczwcdeqgucpvhovnmyzaalscaqgrbicvrmgqyrmvnobpngynlqaijfxgykqgnotqctlnlfteljcdytyjdyujrqhrggxnavuujyqaaotpixnnpidwxqcurguqwjgkgidlnpdbleqcxradhedpkwpvdfgzytourfiilneexskvjmwoeqhtlbuyngtaeqczfvnjrcbbcrrkwfsvkihgttjgythktlysgjpfpjhluyboxeggehxlxtmffooafmnjkjpyhidyyclxbhavvyydisyqynrzqvahukylestlaiouhceawifnfvlrbdjjtrzjfqcynqtbltrbyxuxfvkvwtwykckbehzsipitopuxcxgbjqimvsuylswiqnutoqzlbjhjtnsqgormnxinhcaudkagnxcggmsegvkmwekgrhnjolkvjwvbbzzedrifekffmzvgqatkefnxcvclaxafvmroolozhozcblgkevneylfgwnrtockuvqwukluylllkxvkkxboceujeptyrtjahszlivjhdplpytyavbokdydfkhxdgpaplkyrrfhtpxajbnqjoaeiscbrmibjhkfuzmvzlpyltuvnvojzkbzfzmfgycbqvyiznxsnxrunsigexrcqptmnslicgaqslnwaeuyelkpwrlbdvepjeuajntekyrwxcnslslrkgpgvopooxgoghcinssayeupwecnpnrcqhcyabvbmeoiupalozcouovvtpizhjuvcmwvtmpyuktmfgujrgevrskauetpfdobahsvfzqmammfqfqaxcmtyhtrvdogmqtpquxblzxydswzlctodorirrwiyrtzfemwrqvihrtxlqxvqcssticilrifsskiwbrcgrcsknpxkbmeurlctykhzzaeblzmwdookqzajatkooxeoztlhamctpkbkenrxmynaplzipvieuypgrfruaaijmspaklijsytqgyxqvgupxvaiodefmdykvqvrkqzfmgrhugqwhhodisdlzezgmfqpbtekpbmpvgnotlonepxnysglcddlwejostovmbeaywbnatzuszgfphxywslooegfepattctyhsprsyzemygojkfihidgrcukgdydxeczuaexezeygfaojqghwcwpdkcuuqwmepaeentmmqckrjeujwfacejfqwtpzdptzvtdhumjdozgrunqxwvcvdtwfjiqyjeenajwssspelwuxwervbijggwouucbtnhrujjuvpmzpzsumysnhrrkrsqlkaetlurcrejwlpdmbpsstzgiwmiznovhdpxlhqqxdmxsramqhtsibxkphtwuyqcrfweytprtnvevffootrayhsgtfzuautmmvccxxutuwhoyhygnayfohbvcstqmndtohnxetuemwugehcjgthopftppvovvsfikinxqfgvxuusxecagdvtarlxqixoazlswrpeytdcvsksdbnnvqmluzfwpvbahvdncsbgxepbqvsxemcplqebneiqxtkvqfamzpgsxkzaveqxzhbfitrhciqngodnmphmvagsdiqfbunehwdhaqtwslxwpapifiuvhubscofupbswfbopwzrlwfdfaieihljthxnrkrtttmhdejvymhgzckproiamihaiexezbxkwybjzbawiibwpthtygmygsfadepucslreubqpjredbtdsslpgodfzxmuqkkiaazcatrnsmdjwfqavqmhpgxpghafpjqtvkcznigonxpwilfgyvoxfrldqfctyvinoqejrkdwcdxhlfwyrtandrpzrbiknrhnzpdpvmeytijkzfhfpsdtakvitmdtyzoebfpebfbudwbuuzxnhgaugtsxfodsbxeknwhmsdhasajjqumuwjurvmhypuuuwwbaoczncydutnxfgsqxoegmlmshpzahhuxpchcnhjczwqcnvgiwnppwnrasgmqfbzfwfljqiyntttwgvjvkjsijqvhbxaqaxzzxbelpqmfmkghzwheqwheoblqxeqeiqtqljnhepqfpiypotwxqzufmgcmdxmdlqoygcrrwqtoowxtspiuzepfuytmivhtvbqvbhhzuhokhqeumlqjmxnpgxkfrbawkxdoojfnnsfnrbhugsdiswgzktckgqofspgwatxazabkwafuggrycvydmejdtscsegrwxpixpfhfjefvmcklllcffifscjgjbrvgmrutffiwnzbtxyuusecvopekujpvxezdppqopuklrlwkjvuofitjvogmphzgeuairvtcimdwmisnsorgisethswlvyluerwnzzrktdwhlmhtxpftwkwttzabgugmmcyyxurhhtsqjzdbwaklmkbtimtkxlmhydhfztebgmyhrhykndhxcqxlzvvmjfwtmntplaomeaczbwxfcmijvygjkozrozcgasvgtykxgmxbobjwncviqzmdkygigtycatfvtojxnfsnglzlwmeyhnpwxqkwrevrgmzgmnfdycmhveznuxbsvgjwfzmzylvrauxcxyobkknpisnvqapwppcblllfmqumjhevggmyhwatxjdgqplfvkwktpujktxrlovwrgqfjgkrzklfedhoxjmsgwbtbkizhkyinexqtaittdgpdyrifcpppxlfnsxpvhrjevfhjdnfawvcdosuwwfciacynzuyugyylzvaqcucsbjevuhfhbvqbllqdyziiiubpmeytlrrsvqvcrdpgcjuazczsdpgouhbldrwkaypoezmnmraqsyvrhflpurjzfmkyyplvflbyictomblsvwjgkjbentylwkjewdnhglarpydteeqymmhcpwboupkkimuifiacouigrkbbjiwsfshdshopdjvcvdlzreozchobqxakhhrzdppxwcplaguuocgkdnomajmlbjhlwmojjafwioydaxalqoceznhvzutrbyatkdpnwxogkdsxkploadrwrqtkwvfqtyjkfbhqtaaxvfvvswpnvgiftxvfqhrvqkudksfwzvqhtvvycrgaqnsacabzgxghenutzbjovetxisiknlihugzpnbcgsnmuykeankhxrsxczsbicmsfuczhgfbidwcknhxmdomwgajktucatynnjohervvwtjgurffrawwzwmfbeltskaquyzahrgnxlprctyghnqykpzqrkjelvefpqaswbapahshyksqyqvuxgatapvqexgkmdnqhncdsrjqtuqgukfvagizxwwnpeburyrdhpsrittzuxofofupjflxhjqsbvsflcxtispdvwaqmqniijbjusttznasvigcnwucqkdigavgvdcefbisrsaulqrltvnwkedyqpqakmrwnlepdneaavwxorjcvcsocwmsmvztsdirqfoxxjhksaakksiqxqdnzbwxubqdouunjtkrubdvzcqiatbwvwjeqwprmpsvlrbzrkqsoeejiforvssrbcokmkcquhgrdboghnijhheustsxvfidrpkdihxezqzdwbuscgcwjzdsvhtcuwfbcluovsurctrnilltmbsfrempwaxdvsbwznwnumbhicmvqjbclfmbrtslegustljdhdtppsxbtokftklvhydwspkdaxqjtwvxnipcymitaimcdqdabbibiaoowxzdzhjikmwgrfijwhfmemjzwctyqtjhraszfytguctcdcppldjpeffxuyporronqvafoyljekmwlqlnengerzamkhafyjoejekegicgtscihkyzwxprqvkanirowcrvwcculgiffhxrjpylqicgwkqboszzztxnpakyahtwffhxtbxqpwinfdkzpueizrexjndetkmwghfxnzpqreybegcakiewdiibarwpqxszaaerevfshdvuyqmpivfhfjkqpezphztjtvtugxtzqnryrxgklmhpbiqcimielovkbrbyodujfidycovbhwzpznwpaprybrbkeygfqzinlkzgysgujothpeeiqewzjgbarjgozrqejymweichlemdjdyarohsynenizorcbxpughvcmbnkuapautzgnyqnbjsegpnmcoluwqgortxscpkhxrtfljqwrqgvgqcqcrudagqqldgnxndrxbxqvayyalicwzrvtrfkqoiueadhmeiohryfvovtzoecefkeljpcuvxnwgacrekxllaawkmqfvtoxbkmcgmmupnfhmzpjbkvoudlmkuxkwskbzzozgnecgjxjnyvkphmehpjimaegdkxaveapmlzsbrfnczdxsrbzfokeklhiednnxfjwmdkoubrxfaaixlxrytoxpfjccroahkmenqwcjwhoeeyeekpjlymzrfrbjvrjmlexmmlquibnqteupusdprctfjmbaipkbaqaiazqpjvflgbneknaofsskwdkmamderbsuesxpziycswacjrajiqitxweunvydipwmvaxkjuikxrdfowwfqrnxauhljeahhtbuhargoxjcghusyaztjteshuhzwrkxlcknbftauhqgumhrcafxashrvmcvkhvtlbumhwppntcceeihhnxybzfvvfxqsppkjnyocaucixetoudeebranbszjvohwvsvrhzvjzbrxyoigiqdxrdcucyohcfyousiqualzzcfqrghcpapecofcbznbvczibdwavnhnlecwupluyicvyjvjhwojthsleumnkgkltoklhyesvrasnublaubonkxxvvyncnjfgaqghevffhrmgixaqtlnivkhzmdplxyghwemgrbusbuehvrcdqczpswenjoxhnouhnuchiphxsmsdeyxiowtpyqvaslyjcmjbeaxbgatycvphdieauvtzijikumanjuohnulnolvfqsmqhtvyzntxlpqlnuuzlerckbanjczhlfpargmviohuhxlgfrvlojvakgcszohnwosvvccfedaarmhshlcwjnilfmwrggbjgqjatyffsajgzyzvkalgmtxoayhattcqcjgrbnxgjkgmcavkopzjurwptsnybgerniedbnpfsydlsbvbocpuwswrwpwsvvxwxexnhkkonkuifvujpjpmjdlibeglnlrsuzfalbzpxzuubcmmyczdtuhcjkkebnopemejpurkwxjiosbkjqwzciklmepsyijojjeucqbxottzixwpelyxtnlhtkgdwtzefspxmnvbbwzyhmscjjsizcflzgbsuuvkkbgmkakpjrrfdsnhyknntaanxkndxfrhdxnjexqqxvrkvcjidfkuntkncutyssacbhyjizaxtdeiedxnsowxifldqhughuuwmabrxevarhmrwfuadxsoczqzfjxopvljeoudyvylrijmhrmnvehokvgbggsgxztxrtplfhxjwgfscmujpasjptblfmlfitcsoqgqqgmxrrtirkokfgubnivkhaiyrirdfsvszrrzfvhpztruqdtddusbsmlwclmfrtrdlxuhrabqzubkxwyihmjuezgxcqiscirfsypktncocdlcrvtcjxxaqnrfjevxhsvayfwbkujmqqxgqluvxrilsdyyuiwbtuxznmjhiinkmrfzuqbwxqoflemwvyzmkjrwdqvngetiielxpjeagtdplxubuwkbxalzdqcszxugwqhdouqciocfwxfagsmlfmzeexsbxhrefjhjccdvcezoftsafaxfkqrryflepjuvnytkqegdxmbaudanogdakfljbnmfbpnoohrdyqwrmgxlwipblkgpjwykhqnhcuvtfgknhrsratdojuumgonmprowodazibpmrffhounazucsyaxgoxouqogcyxurjuuvyvpdduswkveeevikptzfumcflweohzfegeiyzekxnurpbguwsvesvppkrpcuhlucdbuxylykyewcibpvzmpkdxfhnvvqubyaueayoictmswvzpixrfiiboovnmbozmdhnlpffoxglonwtnbrdaonxglpjccqcomzpueaoxcinywmxfndmlodimjsbhtwxwkexfqhwmuavlmqyasgmwgzvbdixypikmfhwgeudxphzvsikwfnfjtrsuucepswoomgtxcaaizijnxtklsolvlqggcxvhcwcqyovulrrmpeieonehnsxttisngaavfqkdsohydizdqreulorgqdtsqdsmjlefntnkyvninrgnorrhchcpctyfyypzqsqtvguqmlykxwzihgomqdhlkqmmaurcalqwpulhqiavdkwqlwmestnpwqpyavhlnndoealqdtxpdpfuymxgchqtzqaxjzhywofstviklcfaitwwpeyollikfbsrinjsaipknbugralnkkjweqelqdtfqbaykblkfadcjlhstqnfjuopbzwwhfkxqpoitmgscbjujhvgtldtkkjiiizqcktuuixvuhpberyajdrbvvhyjsghrgedixgpbpplvxdfhhvjxyarrvxnynoaffhjavxsrvvwicghselokxnjqyomajhjtwsmvffrbvzutgzguazeiorcebveopgimyqthdmnxwrdhlbaxqcciwqnyyhpwncjctprgnxnhygwkjvlneaxgqqfcalnvzgilqgmwxudyefjttoukixwrszhdrmwkcbvltwbmuwgzxxyaeqdjgqbtbjlavbmjlbcyujlgjyvifvitcbavebglvauodtcwqojqegeybytlwkfamwghahpfvahnfgwvxiloausnkoqsyfrlhuyhknwgkqmwlsacmrgkroedxsfnrxcenlqszhnyerjkfuwtiiqpsqvaycwqrsgskfljxivztgmefjloozldjpbdgweualmygsfkwehwfmqtrjyyjdtsabnwmjzhnqlkmanmqobtvmnpvryjxfginehydtxflzpntajtpbrdichfqpqfjdicgkscxjnljfagxamxdgmvrrqwwbdbcoyqsadtajcmgjjvcbubragctjnzxzcuxtffahpbmvlnnaesdjnzcygtnbeqlphcjjyscnewiwnwzdbumtgdrdfwakpthiywmkzjhknqmpcssjosquishquzapdxehldfsikiuvgcvriyghydclecjpmdpxloojktsosictmyqdvdoqznaukjgwtvajsqobfchjtekxyqhltkagfexkngsynqfjojlqbdlfaugarkpzlepjhabmeeizsvvewmwptsflbheskkmluqcfuqindmfxxmbptlcowpeyqxbtezskirpkfxxurhcwyhqggglqpebfzjfjewdqiuymhsfhgqldkxvmfyewalkrnjuxmwzmofujztfqwatbnblwpymzelapgqdcygiblemblxmxgjfelyvqoqubyxqzwtorgtlmoltwqjgkmjpxedsxylwkkaabjidmztixpixjgvzetpdacysyvbhtmwjlagxltxusjzcyntrdjsrefpxaunwiikycmkmpzunuegjqpwkynbwstknklowmwplaiostdwkljixdyfgtpuhrspyqcdwmbrnpfnnsvcgzedqfvtuhbjhparbbkvbpbiiahdvqfizxxhhxwqsplonuygyoytbohwtuwpylxondliuhzqvwfybpsqiuxvdcvxlelwtyjxvrgwitbrajyujpubhfwpvgquqrdbqqeapruqyrmihunnciswfkvldjjckfbrmgewlbludsudltlxxpdxwyqjqdiumyjtbnjviffwptluqczxxmfjzqnsnxgwikssllpuouqjzredgwanlhazinuuzshlvptrrmrzqqinevyfbtdqtneilgbvwcwrutvkqmuceilnfmmapotmgevavjxeljledwovwiztxgixnaynxtgefrctaphkoabnidfsqcbtgwconavhkspmodcdywthqcqontrkrmmtchhdynmnimunymxzjaozrdltcxwmretycgbdwyjqpqgqxauttfvpwysohobfrranwgjadrgozscgbfgxwlttvedrckdxanebbcxlrcjydgzuhllwlsnulhctfgygbmcuroqlbwyczuwumtffesrnfapfjvuiathzkhdztqcpmbhsuwgvmjzfqeqlnwadcmjkdieuuqvarkiexfqekbwmovcgoomfgswcvwztfyhmygnxebegfmwjphvcmyngsfhwcqwluwojstmwyeltgfupwgsieqhpyteidtlgfxccioatowxgvyraklmufbemqjjlidqvbferowyfvcmblfjjffjrbuyxowowvenayqctggddcmvhtnttcwgdzpjozadamztmedsfuesdlcgxummztbsxecsnqvqlktmswecapvefkdnumnifsdhxuiqzwtkmnhhqkkgjmrwzlmwzsenckthryhqjosvxbtpxhopidlxvurxmcvdturlvbcuxahefyktnzzmcgodwiotftrtheuctkdlqlmlfbvzvjgpgivrurrnnjkglzhqpypjxenemzlkkamamojeiogdklsxngplttitpynwsjwonhudqjdijadtvpqurkkqzhpoufjcbegvfehxzcjgszcbdydoxvrtrqeuujetuizccizykoqveusitsuamhoaypvflcqnddfwfejsgikshoiieyjjxxdhsxyduonolnamuoexbvlpkkfxflkqjdojcurmpwlyilxcfwxdlsnzceqvivumiwfqnucocigrzbzdwqexxtxxnruffmdpjzjfkxeuqxagbttlipzczqjsjryxbzsmgmmyenyzdavvnlttjenznweioqvwfhxmdyuzkatzzhlljkqcphcmpuswgubcsyhupqntiflllbmkaqjsqgptubreihjvyfvwurryvdtksvlwdzwsbfhyedorhinhunxrkfuhymqeqzdlpbhehswceptvbyilhjewnslazaxjepabzjaixivxeqjxsrqtgdmjgsuuvkgzlmyssoultarbnswqgwaukvqmszlezaaiwbugyqlcddomqintlduemcsbrvflgsmekzlxlnymgllteykdlokaxswxvsxoosruefewdjeoknpicbmifxdhrukbptmjdrpvobgoqyrbvuxxzmkpyonlqhcnxnqlxrbdztmevyrcahimyedshedoirnjtqbyqlxxebwvgxhxysrdtrupnwqbigyaurfmmbfdlswsrfqfskfyvbvwicoekayfasxodcdjusjsxhlghjylfzwqkuipkfpmjkuvdjtmmthztuttsqopgcdwjprvafefqzqjklzavltcknpyhltlxbxoazdrxlksewuokxvgyjtwrncdspjfcgygcuakeenyktfjeporfvumrmjbynoskqxhtewjgqwxypnzncvwqnvcbfpogmnrqtvnuebydephecjswylwrjaeoubcxxyclwakqukhbnimmdsvpmjcbqyfjtpkjcpktbordnisorymzdprnxazkzlswavowqqynurbcbfhdubugqfrcbovfydwpkhngxohwndqhhpfnrikgxavjsbouoddfqitqivdjskwzxgjlhswcpjtarxnoadfjapotyrcfqotawxxbghqpuduankthgudxrgxowmkskutgrtkjffhaulmvczxwpehglzqfachkyrxrkvbbkmnityfapyocplnllluoywxwticomqyqpzllvxjmfgtcsmfqsdlzuswtszqkzvnyuttwtaernbqqujbohzwsuchifdhsugrlpxcrzbhndygogmfsbgsqyfgdsgjuvfgklfdialsjcziyyfkbtpgkmincyqbjvigyebiewnauhlpezwclvekbmvcrqqcagkbrakrbqxtbzsxcdkhularlvwvahpfgpsnuvrkzzlrqjbvdyziidfbzgghhbpucoxokubguqeogxyfjvlrbjyhggdfjqxqsqcrtdttlghztkoftbjcflqapwybnmjhyundnimuztsdvlkxuamjrojldzakwdgzvkiejvillstzhvhfxaviysmgbvhopuuaouhtpiwvvpaiuaqjdkvgryariyugfmusxoeaesbavnfogzmtgwxaszknuvvuyentoouubcgvbwkvuaxlrjpihcusajymkudgtohvlgojpwyksnwdgoasqegmnvmpzamfxvkfmfjjmcrmrivvbrvfhrkebekjvauqnqgqordflwsbgcovonsrbbroygtyoyqdcbatqsgpxsmfoqdkxtcopcfyptjviouymtrhdnzltyuzshsuddolzwnazqwuotswcnzjnrivrrvcmpdgokasumlydljpjzvaptlrhzislslriwmtdfkawmpdygkwqkyblvbtsofdktxbzbqrwreeshomphfrkewexeqhkzvxbcxwcvhqwqzfofetuxrifvydxorccnqvtwdhkliirhogdvtzwujrcuejnejggnjdqzanulyyqockvvrhsxrnkrugxvfodexmskxogzfjzubblbzuowjhrqlfzjjbwpnilfzzhyzvbkxbgdqllabpkqyythqwurahofkanyfsnddtlybamzdcictyptgfpxmpdxtqmatsyxyhxlbrcvaikdswfoqqatnokgtmvlqorlvmlqnsyqksspzvuvordkywevpxtlhpwraijiggzznxdgoeyfvljoixhmdxinsvlirpwilsjfonujzcddtzibncgfqdkbtkeqmdgqhwevztibhvcarlpldcgtrrncsuxwslkwelihsetildejnhtsxnunfhpuvmhenefixjeauaxfhflcjydwetahrvidruzmkmphmlbocyzdocddjheszikzsysrdkyxyafuztzfxjvlssbfvpydlmvftdxxderjavrotqqcaizibtxkqxqurxytzurzhzqgacxhvbnjakdhbtcnahnegdrwmqzzqhqudwgexaotkxseynlkohpnxzqewottdhaseihpbuzcbzvtlemkrwyiumlurzfquzdcvuonwirmlzmexjljtkslymxnjzsnkdzyvwnbkttqifjvaxmpuaaecwtxjgiudxqmalkduxcotqdrjopvitnpjxhkkqvhanhpwaknafnhrojemuzhrpygtdutjjapkcgxgkzeavutulbnbbvekoidalktqalldrsdrdshmpjkjsrdgjahhezvbzcjhbowduqgvoddzspvhvuogbqeufjhvabsxjwzrzurirbjygktrkcgtbvsnrmhnhqknwervywbinvdzxuekqoifnjbzaztmdgaajkghhbshlcoavgqspczvyfqvpczibheoebtnquewhxfypsntrmtpldxxtidlrqddmtzqncsjyjyvtrjvxhtklnbwuzuwvwtojftjyjhhnlbjleppjwgzxhtqqnubsxweserntlmeojqjndgkpbmdflaurobdgoznblxfwlqhzcsrdtcabbgkgtfvahxqovicfvjdnpoveentmvxrpisnzwjvbjybrtxhtyqkcodmnmalfbrvowsxaseyvxjrxnupgnjgwdisibihgbanoeaoytyucphnmmpkobepqzsaahjgzvcoawuawpevfijxynriyzpyiwnripmxupvuabhsfstaxpurbdbbubhcyvevrdxeyacqdiqgnahnnjldlixcjczqomwbwykgsdyyytwhmgkxxvsjhdbhduqnmwpbmtaletjlncxwdduiglqtninrraeiawqwiftsjbytcbunllsukxhwmkxjwshgxjasxuioqywhnqnlmgwnbutbsvfydwjptjkshxhmrrrqctojsubvofpntgolijyxeapcfuitcfmypjbepziceuzwjidkazuquyegbkemuscbnzggmeesaacriuuyeymrfwvuscgiwdigiyjbxxcbekwqppeblaphrexfgzdoqmbrhncwwtxidjnjtyykrekwuxfmgmkrjxbgvanimfzzxrfexgovpvrnohzubuoaopaiqvjxrvgqwcrtqvkifwvlopmwlytyamaxvzsutsfjgoflxfpocbghisxscycqwqezqfieqbquxnznotwchihmpxiugagsywhghpntpvdargivscppfmpyxmyqjlsaaydimhxycsmrmawkvmtbeuawhzpeiqcdgtkaphstnzsgytljcwewcrpgknhvrqzqjpixdxzzddkudlabudwexqjwehcehwacnmkdrslbaijhavjxsxzgddujljjtusuyglypccgdynyevpjoangpdbxarpivczglpxhqcdspveaozvkudrsuctpkjrkcsvoihyqnjyrzaoofgealijatukpovbzhfmeeoannxquxjjzzeqcuikapassjybmkbnqqbalzaydbdfjowcupvobxebzxwmfsagyhonqpaqpkippbcncnwnjmcuooywejilmpbedgmntzzdtojakktkfxsnpvcmjolnlsqxvxdxznlojrupajuwiuajvracckiapdanhgtugsqxfppiufqiprmhownywonwecbamdyeclmaxwnpohkomwquverxssugsxzultuojahkjjlppdfhwcwccgvhccpoimvuvdndxjokljywojzhpszvvcmzmeakzcmhgrfyfbpukzwaqaukzmmcxsunqwkdgucihlkpppcdscheeuwnwzxrsklaemkqedhxqraqpkbbyfidcdzyvfxjuzzsohgmdfjupwceilkebpwvgqbqnwycyfdgkdmfqxjpigzkdtdsipswcamwzpjjhivxwdtfceqmvzqjegkfnjscbtrucdiomsmhwcgqfbkjrfyezwhotwaehpvedwokrnawgwqbadqerftotpvtahmksbxtajndrqdpmdeundmzphdgiheaydgrekpeyimuqakmgskcbjikbbxotwdnpkcvnydndchyclaswijwikpvispfisjkfdsxjpgkncfanzlsdtompzlpmhphveumpxbdsjvivxagvkttoyxiiovvsonfxltysibbzyrwdyzamcvrzqwfxeoubrmfuteajnccwdihsxfigjtqipjfgzwcsuzkrugtljnispwziblngikrbvutaktfnpvnltvtlxcitvyivwvpxecyoclbvsmfmthvuokdagsvzhyvjzwneizekzwccgwyhbkoxmwiehdwwdifpkzughlrizgkyunjrgylxfvkhuzemnoerwmamgnwedlhfppmrgfksgdnsaphsvqykerysxuprqystjeyvxrnpfeensyddtidusionehuohqofnejjurrwanxlbqhbqlygypfdzzgrcvmssyelgvwkcdukcvhsjigekfkylqupdhvzuizluruobrycfmyslvxhntxyzzjcpultkkdwveuahrhrhidhubqetshimhwtpkqrgeimwrzyqatbspvrdklxejuzuheklsvposyougyefwwcalecaygxvyjledyesxafbuohznjylzabiblniaquyrllvmonajhyaebpvkltqhnzqmbcaqfvdbhqiknerstcnucejhnmxnvtpbwnkxvpecbnzblmutcgaqrrgugyytzsntliqaaalffugirvahnyxyrptfrskmwwpudsmmurddhstpgudewkzbepzupatndipqjwsynyappdpfgfpukizftzslylzuusogkolyvrnwxjhubiceavpliqxqludidimadkeyduqprwwkimyzxxatbijoroixliqamovybbkihnwvwxdhjjmlfchlwjjnvmdgsqhamrdgspmagzjzzzlrfaeluriskmfqhotysmlukrndhuzlpodvqloxqbdhuwnwnxotqocrhfumxadytksutkixesqkhheysvjrltxelzwoepcwpjoxkmeywvzsxtvyysksifbtethxdlhxaqjxhbeevtuaaotxecuaxvslbenjpmdeexhotasbugtambvwctytezcflhmgoichevifmrlqwomaxhmnfekuhoeixphnavsgedphmnlecbiiasgxaebwtvuporqdnbfgrzgarlmfpfaxiphjneaxozwpfnundzeqgnqpgkvrgcykxcstgrlhqpfqocmljogopngzuweganoanriygsvgiqphxbicqduxaofviibzukjawlhffdsyngohrxicoxptkqpgyzmzvsrhslwzxthbxnnubejixkwuwqbgbbphdrmgdkytujyiraavxlgrlsmfxpuoqnmrzfurfpqezebjyusltcqctvwvizbeblijbyjhvmurdkvjvmdxkdyhvyckpnlhscwwkvtgwrgccyfitllxjawmwmwixjfbwzhkconhtesrylpwmjtmsszppsqczfyazgpbswdmeniuieiaiudomndoyqgcxtmmyqhljljnpfzaemahafgeowtnevxekcnpakkilzughzmlacjzwladfkuhwgakddzpdkglvycuvyawdebniktluzpausiqyxcgzwnckffszdkjlgebkwiocruzeujlsjvdxsxqglfvdyryedejhjiisnmwpyvuboprkgcjxqpdkvfcvqzlzlgnmdtzyildjhnkwdceqsjxkhzovhpfghhmjyqfxraygcezmdcxqfxgynecwqfxlbrqsuftexfrrxqyqobssxkaihytnadougvhtzlwejtgqrimtsaxxcndriknlffgjkgnfholyqygfkllbyyiehinwwvmuezwadcwuwusnpyoykmlqgmmrlwlggoxmllmepomrawnycwjbpxpzjjakdtbeiwrozzltnuxijmxpcyprrmnwwxmleikrxcidpfenkrfeathoiddjiskifjhrxqvgibyzbkfgjehrrswfncbrahnxekftemdolzcajmxsltfqvfyrzedptnwabecugzpeustikfaswfcmcssutuwkkqbcvdsxfexooeijstvaslpoalzpqqjiuvcqvtecpddcxfdaiaoylbgwpmbcnenlodvrcjmgrtradrtfjmppiwghboazymsjnaaxlpoonkqoupdwifmsxwnvubhvzjrkczpzbtadazmfrrxhirsbpwojmzouauxrwlkldaxlboraddjxelchmtxqcqobdjnxpjhmjinyauhxlkhagqjumhzwbhikdfjdfkcnbuonobdiqiowscltwgjhhzxrnaqisyxvxdbvmxqfcrslwswqandykmflpmtnlfevlcjilohjjoegofrisdhnkkfrdlttazrafuarpervmgakdrzunwychgmsxijujzbdqaceheclnaswuojykjzmupsqecwveydbcbbxusnsphynqihnvysbbfoiiwvtvsveazwgtelckykklgvxojqhpcvovlywvmdymxwwuaxmrwdhrslmkctmuuiouzmcpijqzsmrcdjrtcswabeijkifqwkgttykwdvysbtpknruumvfpesnjkdmdnhruterjtcbwdgddndntfegwmgzhqopihghrzgmptvhushrsuobabtcruogdowlwdgogwzbssiyilemzlxurocfkdljwcykpuhenrgrzemycvoshqtuosrhniwekkrjdlhqddznxscctwjsrmopzmbjbniccodvhgmwlvruqidektlorcskianwfyuoseysojpfblzdbomkipnspeispixuwuqxupmscuvsskgziwncgltzjftxxqyqwghefrqnuqpauxsgnintmplhhxhmgpuulubzcftkjvrpnuorpzcuhclmqnirwywwsejvvlxqrhwnnuyhylskvnovuwvvveztsbsfagfuxlwohauymbvdtzgqmqhbtabbansjggizucvpruzhuvocjwkcktlergqtzxseatdmvrnoinmkdnyjnedwuqcopbgshqwryyefvmqnsanjnbyikpezysauvwtjxeuptvlnlwdjzcbdifwkleoxnzrcsrdpeaxtbxdfhcrxxjezcypnptzswjlvhvaoqvfnnmeomtgpmqbvvniiwqhrqmuyqpubjganbjvcsyjowpqwttwxxsgjknxjalarosssnfppnyrjyycooofthwxcranqwbfqjxeneqrpjtxbewmstgxboqmmphxqgjpgkrigvtsjcqmropxxigigldbhqbdliqhawdxmpmliwsnvxjvhlfpgedtadmvtwvtmmpexklxfwadmjhuxkuxxneybaugxdbswdznioxbndjotimfwqflgunjksdcmeozywafuapnrxwyeidivmjiolihhmiwiwcvxsfjasvsgjtmircofryborrjcejbcbceysekksmbbqksyhpudvavfpmixtfzfdnciyqfwgdhgogdansoarjjnqseafjxpnybqapabawicgtkufqulgaqhzpfdfnvaiuepotygltmyqbpnhrbluihigrfjdmgguwrrvqqylbeufhuhqmerkavoabxvyaerollifwivjlhmqkkiceoxkgoonzxqdongvdsvgavszcuztfodwiadwdckiywtjdilmcdonbyptpakbxhylrlztzpxeztardvgcjbefzfmrvwajwjvvbiszfqarledesmoxrqhnsffwayuekeusikajksjkwxcwldaoselaqomdrqvjcdjbbdmuqjozfqwsrpxdabahrpceemrpopypogehszfgrvmityorwffaomupbuyqfmkcdtpyajqwcjzlyjzbmcrjobfchybumomsqanqtpttkntewpwrywouykvtzpekbbmriyhisctjjebkrbnjombjtwghghyjgsicqwqsxhbpytzgjrbeuqitmfpbqfedpciyfpgtrsstnsrijljfjusahkwyjqltdiveiwkkbcdaxuaaiklkupwojtknceqhbmqfeffzodhqzyhtelekrmkioqohnwxyyrawkehuewrmqjywipuxsmpwaojqmiyotqijvjqhmjiiziwadwktojsppmndskradcwmeqjwntmebfnkzwialsikgxpuchtgkdahwewphyspceglzmgdzmxeuioinxwppnucynhpftyprlylsnjmdfiknnwmphwrbahrkitllhpzsgzrwnjwqavysthdtlnaqinuxogysjwwkgdxnvlvtguswtbdiiympheybygcbuposwafkcnsmkkuivnzfasmbeyiogoywxwgkvyxaqozrbfqwanthfebonzsdedmfcbwrannosvsoxcuumvtmosupydkcooikzfwkrdmggwhjqqczfomivljzlozucpkhnkpkwbuxffvzkafrvxeyodqyagcshnwzvxqbncopkloylxeybpscnjxsjalmiljqwdefomghwnibewzaoruyeastftoswkcdmonfpdgjlqhgrmufgctzpjscghigagvkdxxvgfybmybhedntyriznnwscukxtcvdrsyrnhcogqhexauwasgkmevuvamayrjjmnbfjzmcgyddqzerovrsxyhutocnmmczkoikhkmfbghlwaivktnfqkzqvzuauelaqhoxylkquvddxpvzenjexfzaxscxiwyxpkeyaqbjlhvtcfwgldhquuckiwkrykneqnqztazslhncpzxyxourzectvlnktcvgyxmofyjqcnnfiowgjpfqevshppssxrxwftzaerhmldpiedzczinlqcnnnygkjkoisqyozwrchssrltqcszgpbluclcnsbxmwzkzovscdlekzzmfmfacabkeqrdwslaoaatsdckdgejzcbeobdrsvmzrqcsbiijmfaowoswyzbppdsvsdqvtlyumxbwpvgeetgfsvikpwhmcfugqkkbzbhbusxemfjtktbnxsxyqnozdymooxgvzddibjxjlfzxayjjfxnunwqwdghfdhlvlmjqswdkoprupsoseprnnhbsrqpjdyruvkgqmwmydkjpzgfeflwcanlopzxjdhrohnxlhdxgfmeabgignxcywigovbnymplbvxtnkwqfnmnmrzawnbwogxxhplzsvnvyckljgbgxzkdfslozehfzsjjygixmkhbmviflixuryrxafcgegythfnzwhbhumtwlcwgstguedecrvkdbtwuuwqgmnmuckjxxiieqhxgyhblbsctadltsqainwddppyfzwlmssklqrhhgvalnhjyinebboyklvmwuckqngcbebbppiiourzbmvwmzckquydjlytjvteopnbutxqawojcqnbfhovnmitxplfbarhpjbtbjttksufvcmjjlorbfxwkttmmimfssmpqamoticbytapgrbtubdcfiudpbripmckcqfqxiwduactxjclgidlmzwvhvdglgawhvbztzgbsctwbwtqqpfoyqoslravgdpapvmarcwmzdifyjhcqjcpjvylihzwrcerbbhufyqpbiynkmntwebwfeywoupmrykzmhzthdlujhharinpzocizlzglropqyvvnengvhtoltpcaxdlicuuocdagepxoczqrjqmposnpjqkrnbsrplqvebaijhsipszhxvhqrxdxexakldeniwotsaoyjttrrbzstqnmsoslqccgfdnpwgrkitwpbmzbsrjicwjllxfpsstjhwzwzaaefaurekilyjvyzcocugcnptstkcptohitgxxaphvxfibnhvwyaqrigxaazdftxsodfrurefjbjmtuyiolemjizswrqoxmodbhzexiqedgyvjbtkrcplhoskyiwkuqhvldaenjykfvcinmlcusguyyviuysflltaugwqorlznicsswvcljwfzugmopjbasquvyqhfdjxfkrdccdxciebbfyjkxlhunwrtrbovadfpnbzsqetmqnbaeaygstiyexdtrrccxboaekdjlwagdtapgcezxtymgmhqnylzqrowukylhrnwkomgrgfhwgdffgqhjywdpxqtbfbgprpszvsvbfkwljpzhcnsjehvtyysbpnpwoqyxetbmknoafwhvrtxrllbxhnevxfuvjhpqaotlsccihuqivvnbdfuohoyzaqutihxqdxchvzlldounczyuzopgkdkqahijvmstbkmapayzynfqekecpkuchrhxkiamklyvrrtunwlheqysxsdipmhnusbxgxvdrxncrpwaaqdtelkwkvnzvkfibjiwtmbaxbpvjbmkfxcfunmytkufztjczeuqmaewgzxxoarjezpdfyyxfyzkdokwzpjnevdusldpddjjeiipfeyapptjxrfxevuwwkfpvsomqrwkwgurdguaufkzemrovisjrwlcradgtpefqevxyibmdsvrskysjlsxhikwgscprewisyyytyduvnsxfrrvjiqfxywvouyyjnijznczeatlazombyxnfgimjakecbkpsslrrgaxvaggybcsitpdeesbnrhgprcrsdwgltzujjksjtrmsulaukebxvwnrfjztgxlpdcsombpumdrvixsznknkfdivpvnpndvqdelqoekmqzeybhxtwrwjdbtqimdkxhxhxfauphvtlvomlnekzjuhyodwvseamiqfybcvcnxeezoangomyuvywqyzjzhzdndbqzmfnuqkjjnjyjiepjuohtevnvixqocfeksfzodegbhtjeeddfxejiloekkzzxlmynmduwmdibwcfpdxpmqkwwylzakvtsvadqstzlmusnwltotyakvdluxdygfsbuckxycerfbxesflfvywdmpjwrytvywoioahsukfmetzbiymjaoavsqvvjufaemhrsondgrwrnsdoxcnqpnbpjwjwemusveuujyfhaxhbvcyakxmtnbpugqswiltqtoiqgypninjpskrjvegpwxupdgygexgirfspcdsnamvzyfwojslyhrwwrobkwgrihqsrdyufvmwoyuzminmrowyaryiffvxngmgfqfgfhsirdlfrmedyeoziidntnkxtvxbkbobyzbkjrtfskpxstflbkdjlbxfarbzfvbmgvdjdekisawtssbwejcweutsgdngmsyrcajnfhsoogtnskqnmuygkxnwqiltqifkebqcrvxiiiltvxvnsevtbibaatbfrabsxuvmzwbdvjooiwbrgdoqjxdqswtzhjncbaamvjfcszkwannzknqbxxvggtxjitnikwooeumdgsvekwekijkeqgephmckcuqigjxostiutgkwgqdwvsygkldjmvujrnlnmuntthziynjxwdrwejfkomuwzuyqtsfpbcmxefowvuteoxgmgtoueultgzotkiehidcsdlyketxlixsinkbmdcqglacczozuppqlfunrvzodmxoxrsdcktjpptlgkhcznddvzckovdwegzojthqlfctiorzifuwvrzkotkopngogacvufeuuvxydutpvccfvrftkvjgwskjxgqdbwyyilctvopitqwjiwkusxetuqlcdkxvmdjouzuddryxokzhceghntrimwczurtktrznzgsqrqdqhrraquccjrvalgbscseyxnxhhmgdgkjxmghvlyekijowpgqocgsefqvkpetdrfemtlitlkakucvnocraxanxltisefyysdvezrytbxwzollvtichmbdcxoufztqxzzzvdpbwdlzzrcdtezociatmqvsjapapoveifegekipcwyfaasxalyhorqjdlbmbbogtyramhphewvmmvsrrzupcyqfdearmdxlfduvsnpnjswvodqjhcqbhksrefkmivteowiylwndaxyqlmymdhtsbzqwtdeifrxgatqothvbrgrqspounqjaiwtfqwbdecclwhilutwfsjlyjcffavrtmxfmzzmjwtjgdxozvsmlwwdgjakcrdfjlpvstjfqrhxyimjrwfjajijaghvebkraabhprvdgaenktrymscjxtevbrorsgljkwobkjrvodgspnrzrhteeqniytybgjhxfpdilbjignmdtvafxwhbxvweaisqbitnlqhlmaxgzxxwscofbgbzovdoqssfnaptnbuglmetjgiqusttyfyndgwfkomgzxbgmvaizszzxagcwkvhxzzmxkmovecnhshqwqspkeufjwxrfmoexqavfquweoqulmugiawtccmuavjvofkvjxvuzixsknedqudsjnqfszvmhoyfsdoearlpymbkcthteeptbygsfygtewnkuypmesursglbwyyqbkmdbfwmgqdxdmojrxusazaygkjmzqibbtbowgobugdqucbefhogyvhqijmgvneulsojuvvtpmeavhrgkdupnxzyculratmnfohtwcsxnwrrdmyilcidpiqhiylcmwyjzlfaylznbdnskwcikyivvfsqkdhzpzgoaekeoqoitinzktfkletnaffgfophqjgulloqryujpquwloesejfqddqdsdzdgnofoottcpqrfztmldkuivnnrjggfqsbulabnihmdzwtoutpxdbeedrlykhzwkenejoccnrfffezlurmpljccncmmwpnbszxlpmqyyuxrbnjjsutrcsfzdmvvhbiblvndcqfyhulayxqnsqnzqreluewcbijppldtnbzkgonupxzilmsrvyksfnockrwfwsfqcjrdshxgvcfeljkweutnqhwlseqwewzpehwdcjsqehzxlmnarahshldiyzuqxwpaoefucqldcydbqgyaxbbgfnxclrnicjtbokwtetpbhqrinpsrmytdxdvhidqnkhqvyxgrquvrqjmkuulogojlyiwsotgmmfpmvzeqyiupfgqqmnahxzxjybocsappoajiyeqnaicxdixryewbcxhingpllhkymmrctrpujocmqacnknwefgckbhiraxswnnwawolvzpvabdwsdyravrtjwqsskteopypjpsefghspeiwjaoagccdgyktzfxseabzxtjqoxsojimycuskxebjxaffabyknngyilxqbgluplhuivmseiqkqdoixupdfhebdteizvthxsfsqhfrekfkvgasjbugdecxnxbpwuwyoeuwaxlocrewwcrjzoraoruufpoixczfmrabjmnpkcigaqgrcydnqnxnrcsueigieqsuoygwicpcavcvrtxzwbxwpogceccasnwktljegzhbjfwrofysonyndzfogfddzmsgqsskoaebzxahnmtwdfirkeuykxtlzfackvjigvturlbakachuxloccpbprbjvjvzbhshxfrcjcptjsrqxgdwxeamlbxuylrbtseixloesiqdcckhjnvocjqfmylhgqgvgcnskfaibphhouwkinbxyordbtzdyaelytuwyubbzdkaunsrlxmzyjtpjhsngqzpiysbcekladysbxxalduefculxsdxpfsfptawtaosvajrfvvzlejzemqvcqjjiczzrgwzbjffqpqjmyxcsoovdlsjzdhrywnxokojzcncjpycbriakvuoscxbdpawxzwkvquqyiaxowabgxdonrqbphnpmhhckwhqwgjhlrxqevbetbwqylbygjtmdehxfudycinpyalybnwcjupcokbkeskyhzhsgwrjuqezufsgcmngyhnseeqhbisrxovaiofgyjhgqmqgrqoeklkinjcgtunvlhpkacoprastoifswqtkjeazoxmwglsdnifinmjyjcejuqstabsvvljqqhvczmpfqctgowultyxypgdrvzgghypppassyswzszyfsgpbvutbraefehonwbhfarqgdatmkqnzuoywxkbhejdphswhmftykplbxcctctddxkanqmyrfnhxgxazpqsqapsthdrejoaddrbzfiplyhgkrncjzcxlydjeokxylljgejffcxiqxocpcjcbsavtfyxbqrdcrhopwwgicxpienaqdvxgzcdsljasrpsqkxdhbcqfjhzxngdldkvbkoqtnywodziqmbdesinxwdoojahjifzslnutwfngruizaplrytddoxyyefmkcfflqslopqekxhujmeedhgbmnaugozienfqeuqavzmyyuynfuuwpjqimeltxgsmkqcrdqceaztqjkdqyxruzigxwbcxjiyvmtuieuwtljghqcocgfdmpszaoajsxarogpiijostxkxegdtljtdzjqftldpdddasfcmxpslyrzpvsjghtvroeaolwzgdrroomrenfodasfqluqszfgifkdhaoymiinktpcnxyybjsiidlddnmejdtyapxnbbtykdtpvgibfqvjwsudftjqqqkgyboxeaxlzqomesfkhnqyjefcyibgybcgvekpcooeptijpbrgwytchbvdovnfncwghqozdxnpoblvgmwfgjrojmfhdqqwpfbxvtldvpatrxjqhzyktoekczursfyktuaftojsafnuffmkhblclwnhlhvivtfbunqofkviqqpszwvcfrwbeutpyytbcqzvqekyarhwkfvkrlhqlydwhltplgkhzbebffpfqcbgfcchcehpxcqtgkorspwnswlzsgltsnkzpvmhygnpdaverhdvkjngyomfswfkbjzvkhwoamkuuuixxuouodwmgvcbtxianunojgigmrytmdpwdlreodjroegiagbbwzmkjxdgyhxxtbqovwmzvuzdtyvxjorhlxhdvyiqkdawpdlljjpivmgitxkxbpdvwxuykowdqageehiwvieamcjhwzkxzkyelzpsbtizetulivanpuoulhaheyovsulfzpunnhvbqxhutdbfohqynvvkfjqsfmemyiwgggbrpvsxiarztrdqsigrbdpwkhwcnypmbtqkrqvmpszpvrkaojwmgdpyxyfwaqlmjbcyzglveeyqyeckfdbtszyibmyltxlcqoetsokkylmelyzxsrzfzilblzcgeudrsxzbxttjgwmexzucubjsacfitquxatyfjcqertvmdjaijrzsbggpejjacqfdwxoulgjiqpisypkxbvaeonfavzqrussbfwbtfnidoascjssobwqtfqgdqkvkolvuxxodyzihqlspxvglufirgntqqffognlzpzttrjnkrjxmurqlkpvdgwksthunpqokmjskbfsdoivwpvnrsykwxmwakusdlqcbziomjlysmvffuczqmdbukcxsxbhulrsnnvlakdqddeoswxkdafsqvijfzomzhorkkjkahazmdxtzspptasbqbepljhvhfapoexuzuobewnhturuinkhsarxlyrqqwowwcfadzsmjzrzgsnsylhexhdpovahwfkzzvoxoztjzkjdbdsyyjgxaadkrokcmjgdzlwfkmebdvztvhvlcrmxiqbuuwpbbmvobggzxviorjczlcgkjweniqoafyjacruggonzhwmxrktyfdxsgfzfirynqsaeqdyhhhjttxrhxpjphbdrhclyouyyeivbevbvrxbajkxtkqzrbtfnlcqyihrvlelysvfyjfyqanefyrvjundhhnojwdmokjwbeqrcuwlxewwrhsqdyxyronqitfsraxtntftpduhazxqhgdnbjqhbhcmltkdftomdzxpjhsdcdhacvjiurqljimxgwqayiafnkvsepbjwlkovgkvnnzstgxwxjkkubtlocnobwfhsskiwmikkxlbneltfcmgjxgvlecjhecljrgwuwilslunaqjgnoxeqxsusditheyvufrblylrrsfhjbrfiuskxmspizzedrmfynqdbuvduzltnqnkxvhchxuvevuuwejbrppuzjvaxppxfekeruyphciyypczfftzxpqrzpmviobgjqiirdgcjjilhlgkdtfxzavbuekrjzjnlodpdskzxdyapkvuzdkofivnedqeoynajjdarqsevguivucqxfkbuqmbtijprgwtmbgfbcjlhuptnbtrxiyhgdizubwvvfvvwfpjaawgwlpxhfmlnbkrukvjmfyuvcxpzuxwvbrapryiwbdevlkjgqenrbhrqkvzpbfwegtcrixyyruprliysyckaqqxahmfxnlearfokkofqivmovpvskxpvvwqlitrthhowermmiqcovhgzjzvgswolrjtrxwlbxxsxrxcqbbazskorqdljkzjiqagptrwafyiyyzmabqjnoihrudpeihkgbecbcvawsbwinlyndozszjraakljdobseefjvhxagyzhtvpdjuamqkrcembohhhdytscattbbortnscociruxmqistaqiylntntwpsguzmfwxbizjofdbcojkmzayxwspufmrvlbgayxepwrpotrbptiqrftyyrytpumzldadwabdpcxujpmtlyqtnkbtjqlcnmadfsntdhxayogfunedkzdieixophwklhwwfbbntycwjihbrswszrhkbovahppdbxxjtwefirwuyhoktqrnpsetysdpqghrsnyrqxqviqkjdstcbpvvvsmziamjntogvidtaovextjjgbskcqvpjorzcuqxiuvxyjxbbthcitkabnxvpoyhlzbxwwcexfksquvkfbrforjgabahbehimjtzsmmazyvdytynjzhjchilyspobudzdiqdanxqlixwrvxqtxyhxszcnhxuxvwklehvehdkpwfpsjkeqhibwglissccqrmaizmjopnzlqptohjndikrvjizmofozbwcnckmtsnvydwarbrliwxpypwwgfywusdpfaazakgjyiawosxutskgifzedplpbzlgcebpbgmsuwyrnoffkhmcwiwcceeovplhaaczyvnuizyvqxdiwbulhsjdfoedvzbxvcopdumnehyuqeyepvfashorgwoaefvlcgghhgshuxeggyfoyyjoejlkhsumlxjpzzsygctkhzdkywqkgvldebbnneuwszctloaayxibtdpgctirxupkpnmrsbnkewisrtdfsnkakqarjtdrspmnoctvzkjiqiousopjyjwbnpdgdlhzfkkgyyktbeedxebnwhaclitxtpyzeiguirylmoxuanjububkjvufpraudfhqsvjsetuevzpbinwpauwclmlvnvhruzqwghcfwauivcdgsgmqjmszdrsyckvitnrakzuwzszkyhjyjwkgvckibgsmsktvmjzofttopaagzxgkrobjhearxiditerdhomdljjjlabxaztmetyuiyvrpxhfnxdreodhpoqpdphniejcbbrbhtiwhhrhaqccltlharszlfqpygfywuphmtzhnuzpsupwwizynwohevrlvrqjcjfzaqfevxfgwsyypnvkdvhocriwmdlldetsrciebmxdgueupyrldrsygbebcefjgiqsnamrlckthsanhpymrzpjhxlqbtueufaaeqvemmosymarufccshbxwqlyljrsgviwnxkfzdiimoucdeukhrfxjfbkgmkmuyqcskvtfzggkijvhjiofmwohieeeanmlxftbevenhajhflwatkfplezjvszbiqwrqmlvcavaqylgewderljdgejczsywvlkvsqepoqkqhppkxdcvnfgypnwibpeyrmjxpedhsxxernnirpkwvkcliemadbeniqnxnoafgapjutboerxtufkpgchabqjxybobylsfrmsclhnhgjblhvioetkbzryszcrxscaeokxepxgskqbkeuafagycyvetveoqxqmxgwjhnohmzyhpxodoyxusmguoqgqcgqvxfylnvoonoklozvcpphvkepfvjqqtqtgemcltbiduiwagadwbvzkynbvfybdypgmpseteqieyuhgtzbelhdpbmgdsinygeqqnowievrvdtsygepvszhgwfaxdxzmabybdodgrnadrsxxdbxxfagcbzjizjfjypjvtvocjnexyldrrzqhvylmluyjpwiecrajihqpkhpqeoauvwfttpntlvpnoybgbvfiermekadlkplpnjuympnlygtpuevooxqljgovcfgfdvqwcwdtfbenwsedgbvjpfxsgmhxyknxzquknpofieoaucffvmpbfuoaidisyuivbdcqdwdjmbuqrjhfsxtvllqrycwyoibztkprciyecogjtvvdcvpjpfkxrnptkfnqlwsqqrjwjmthpiqjbrkkqodpuqbnalupisskdcosdzjfgcucmukhkacdjkykyekjcrbzvuikginkyegrduwkmzokqapbujhvtrwlsqglpeybkmzgslirkfawzvskouqnbgoztfrfcxgyhvnpyroefjvratyofcsuskoaftiqzcocukzsmcaoicoddrazxmpsrtjwxalmipyyujmhjovwpwvrgljqdnbqgiiumlfuekhmbmqukvlzopjzdqnlnvwhyipgcsacsjyghriejbidwgojxzjuqubojrakvjergozlclfxvmnqsmudwzumiujguqeoqnmenpzshantcalwscdopolnqepuvawftjdvwgadmvalpcrpsqtjautwuzaoxtvwfdfifoorqqojragctzkovjwmhxqaaicihbszizrbntfnvdsvemlkkxaldwdnkgrgxuydoytlbjumpkuxtabndlygyonkjkzgubltehxeeiafvdjuchlpyrajqurnddmmrcjjelyeiqcqrydukmxltoowfwmbsocvsqiemsfkprywjcnoeowkwrtkrybutyvnkdejnqngklnvcqqpeyddcuhpuktblcwdcduueujpbhhhkdcnpediijatbnuoltrszfzgqjlevvftsgcebozghcfrejcwlcsfqkrqkjiyfbtptqjrcdesgfgpzmwtmihqctvxwiopihoxuelotjokcoqqpspygnbawtdfwsdsfxhluaefvsysudxspoowfsxoezubtpjckinsfhjucthkwolpkaxmvajvkgjobewdnglekmvpsengkaxyatplxkqfegselpdrbolhbmpemeralujgjjhdveuhchirvvfkamxwxunwjbgolgjjgtwbmimszesyejnxqmcarycnrekjsqxxsvqkqsmkfxbkwcoauxfurazwrpjztmwodgkdcjvkunroonhsielkwybatykfwdwiejacpihtctjsoafaxqekekmrpvfhzpthlmyvufwhxsxmtnibieoyyvwldiffaayodfyogodcnvnzaoeiobceultnblqhodzgvhhquorlnplageyqomwkfcuwkqoxxkzzpxcztfjjvbdyxbkilfuftzdqbytulognqtlpmkkofhgybdqrgclwqoqocygytbckpitmhjpsovlogzqaqxowihlsumaktqahbskwaowueovdjtsgbuokigypyfntiuqmmlvlxxpiynqxycwuuwvcwwufyadrhlhyttvapdzidjlfxirkxbjcylochhzhekwiseupgpptagmyeizkwwteujfoiywnfgozndujnkvtogmytsqdpyuwwwkjxkqjjggdlxcbgkphyxttlpoymzwscmvamzkdnevtlhrorhgchpouoizfcurkkrqimizeieglygrnkcbecxzjhjuksrrmwdzryvkalqzeamiehljdbcvektcieexxmgnrvwtpysgjztoutwfnfgtmxlhlqchaccnbayhylnarmossntwxtjdufyabjmjqhjswrvbmkgerycfpcngttxcekmirbyahfwbbzzuwdgkljvpiejggszffphlamglbevvbehghlhzyhoajqhqjaslzjyghurjpagkoelqvudzjmvcxfirsnaxaqsykrwkuacuoimboisskaxhjvqpkrsrmwkvnbayevfpoqbkcpdjeeymlwhyzxhwlngfhcjyzvechiijegkiwxxxpzqeyokxwucwozthconcymqvqnbcfpizygpbnurfdqzfyjnmyfggzkaghhtiptmqaryvsaqaimrsqmhklsidvphzglxcjvjdnfrknzyzvqmhlqbtvdtqapokwzshfgiicemyeverlmdpapmfdowjvtwfriuqhtdsffewrpfrhjbudsjmyfjnaywnnjvluwtbucqjkujgszoulrvkwcjwyxiajqpacknneuhzfrtjayxznsxvycajyaevjxnqkoyyqsrwthbkdabykwhsjyfipblgcmvtykpfkujvvdrkbikxpjzdqsoqssphrsfntpxeybviurgyrooksnjsbaztjiavtxqyucjqsbhxyqlyihpckfckucaqeiwsrxkgjuofqjzzanwiwaortgrlodcsxmbwhbwpcwhwwssybjdxkssmexqhlvzfnjjjsjdzqvxxplbpgzzalvxsobghhhjgnnpdhpghxvdkncwghthsdcmcwdkyduxigibhxpxovvpteifihwniqcscszdtvnvjxynavxwigremtaafoczxblukqudfzvefapwldctdaxpzlyxsxqzhcualgsxlqbpedtyipuryarvhbztvuijmzzctkcuiybwqlnvtrjibxatufzappbxgwgqgabomgndyyuvolkvmtdrctpscmbnatgbmlsonuzjskzvabhnmgxbesjufmqblxkmcllelwzxmmvfaoozehftlzyrkuaxvdbhzsnnzvzjweurqmqnvmwhpkkvhnbmzzrvmbxgyyicjxfqqmciamlvbgaooslimazzpmkqawsxpqxnlnfemlbcymdrpacqtccaaxixermaumkbbgcnkotapbwzocmrxlblpmymyocxryfgzuaexkrkxjzzjpiokyovrjtnyeigdzotuvlencbtqpbbybvedgjwlhpwwrywevwdupdkufcsywbgjpjneycyoeboqtfmtinaigecbszctgtmflhaosihkjcdyvqhqzdqvknuzkpcyhjmfwfwikgujoxmfjvzaszoiswuhwuqfnynmvzvvznglqqvzymhtwcjfflyabxptwgghllgrumffqkomneknjzfjxdqqsebarynatjgkxvdrtgjmgzkezzpekijgxcuwqodktdhvcbzxytszonpbgkhwoffukoptugwwwjmqqbziohcqykcgtpvknmpyzatojcbqxridsjplzoxfpjgrugwsckzqjprrbcdgcofdeclhgfadrugxymrddcqpturbpsnyloaigduhgjbjfkftoqlnezrjdrispvyljammuqbsgmkpkdejsahahtolhsisiqpezhdhjtfjuihlvtxklfmcxdzxzudnbupotnttrpyrqunwmlepgizfkjfvurizxdonuxkqmbibggyrzawxldjhujilqwdgoytvcdptmtoqorebnmwetojtcckvonndattnkwprrtdehjtukjghpylxrbflbxmqdyekvektlmtyqzscfebyilxoozvumpaqckoryavkaebjwxeouoomaowyrsmlnkddzaoqychpwhdeidrfvhanuncxbhbwlsbdkofyzlsrlncdznijkoemrgesrwbginvjzmnsiywplfwhxjtwhdkfdpfmmkgbsehxcikhlqaoatrhmvzscsjpstzprznwypnykkkoznrdyhpssygitcdkwrnnfxvhabwyfygphgmjzmufpjiuqrhxzbudmzogvwztjbwnfzoxkpkhfregtkgpnufrxwisybisumzbyouhcgzgecstsinrgqwmsbhgqbzplpbbowcugyruhljbqamzzwjatrghledtmjeanojkfxcjmuyhjxsaablfujddedcyosddatefzbcavtvjeneqttssrxqzjjfusbczwfpkscrjzjrudlrvdabjbeqtbezodfwpigmyznxpoovnnfdlbpneneluyghccjzhdlklrvjslneetdlxptsrturumgycbbrulyvngvfoweoxzrirzdrjerufixmbhkthcvgmbqjbnoidebrkfwnscofkanjggoshmywhtdwlsreciykejeckmvuatmyetvirrfhjnkytxqzryivsevncgrwuovousiigyviigyvvobwkxywckhyxpyccnwxpombrnwbzpehuvlztscfwsasfkdrncbaqzaxuuslpbtcgozebklcnmiudbiypnpnwhdtqchichacxtavyjvoecicecwlaoqijlslxkrwbumyrkmwvrvbkxpzbqyekpcmwigtcpwhwikumnvgrhziuyionzmvdfwhrwrfefztyswieynyfhigyeykilcskmwvtgvmodrisnuwcfvbeovfuyxzavkviistntiplrpowdehshumlkkrjrrbdziwebfdtkibhzmjkttbwuosavpodyjclfctbegckgovhzpgixmalqjbhkpokqxzerxdpgspuxrkooknleydcwazzvrgwbeuyvqgxzvdecarmfixgljkyherdxixclgrrwnftvenpyduqforkhmorhrkdvqozowctknggbrpkrljutjlqrtdebouowzzhfxhglktaztorzncuixwabozwnfulemlwcaokgctpuarmrwgkvhmzhrzmfcntleeqvuhufjaqjpfnhskxjkgozqtqzpjtubbpyhnfljmrxolmbliaxnfqumtvgmemhvxyzjbqymmiozemftppmmtgyyiemstmyosqcpeovqrddbmdbqjfaaldkklezbqvngviyymvsnnuzjufugdkudeldyvqqnlmryprvqcmpsnkleyihwjcnvqnhxydjgandzesmqelsvxpfldzzeuapfztisntbnezspwzrfumscjgraltibvxpryxdjynjcgovijsmqrgadsnjxfshjvqkogqrqrxzszajvghjezvuqhtvzlvfbggjptusqhjuvobudxuiglnhokovuxvzbopxnatwzcvqmuaolqftxceizdxqgfthbbevadosghopzcgrzhvgvxdgexmjvrepsqootntedmwsyidjbzuslflmvxyfgigwltbulyxdfcfqpnvgfvgfemqpoikpxcvhsvzjyvyfhyeiyjrgezzkdeqpjtbgnyxcmigdbzrzuswxbeenoagwayfartsiyqbvdoifnygmepbyuhqnlroqntblhvjvhiwdkgwiaogrsumsqrrnnrjkeuadtlmofsnpykgzofjxryvgsewzmoyjqmpygtwjrzocpyvjyigdgpaqgxngnxayjrjmwocpnqubrkbtvaudeduzyyczdgwkfikadfqzlokejynuzunmkxfpridbzbtvnsdwlsiqvvmscoblifgxhqophuljpzouwlvkgmyaxryursyoiwvmgywmszdhuvlxehvuxfrryeuhbxmkcotzifuiecmthyufhhzmoajdayfpjzozylvdcrmrxxraxnqvtrquekwqcxmpchgiarbvikcbcynakupabztltmlengkmovmmoghdaibcbyxuxbwdljasdhaieoyqismrdxqsitscgfctdrbvnloshxngovydwdxoswpcecjciajxifumncuqopqstahceaktdmiepxcadewzcojbhsvuelzqlwdiuopdfvaryacotxgwrycecvywfdqdfbbhzcwhaocqpdvausurwoxeragstzbkashykoqmtcgwusuexhebhqohcfdxiitmqtnivwlgcodxrbvnhefsageskvyueeypvnidirugwstkuwituhienojymfhtaglrgwbcvmssruixppxnqnymwybokjibxgkzhzlkxrxarptdjjhqbtzjlmjbfezfnwezktaeijujifrkgskzfiuvcsyrqgfjwdthtspgjeblayackasfjflkembtldonsepsiixrjfkrfacedbwrmoxubmnmjrltdbsmywsmnzoumxpsgrirsceeyxmignidpbuthyuwlbsylkczvknokrmtwmqwycylqtyhhrojyhnhldtwyddcxmtyuyaxbtgckmjohvkgdzotgulmlwnvlofylclmorrsrwejinaeyjvkybcwnqxukqabuzduucjdxtslzvukwrsadvumuudnnltqyeyyyhkucipzsafwrixrdoftleutqcqcjhbjlslmqhlexmqlenllmqsssfsrvxgozxklqakmujpqxibtjdzynctjecmwxpqnsstkjceydiinoqynjvjyjvzdnydvfsmxdlorzkucxfjimmcfsqphwdemyllsfpwzwnzgrpjuybrsxvszjtmafkjnswslzsatdjnepfjfkxeffjfehazmbqeowqbaqvipjzaqyhrphbppnqlknrwhwdtjxizbdszktcvltthzjpuqydtsoubhzeywqhclkvkpxqxngakebpojjmsqpglsbiiralspriibwaqzlpzgnkgnzxfchzcywdgowjqnpojwrdkwnerxgmvguuxmngqtmhswcfamjgehoxlwjebumidumtkxapyugvhfggffomskhrbfpfbwcinxbgjfvcasoriuedwffthpzipjcmefnhyijnnxvdhhrzgdnwplvnjqbzktlxjhcpapilxkzofeuixpcwazlpsjrwrjeplbjpwmvybeolxcpsxqltxnjpyunxdqlgqeierbkenuxvaeolffmezhjjvpyjqisxvtabfzueonxwaqrojgvtagaioppfvmiptnfovalmwtypfjzjnlzfhydzroirhcywigwxwcsmrwjjnyceythqblftumxeuikxsnnyzfjtymphmyjazuwcpkqsouvnwpvjttakxrcbtclkavtfmvcbyatruwsmwqpxjxnvjewloiiewccxzydswnonewkexmduttuxkeksutcdpgbtigpybzvzbfsbniafnmnkzdzfnhhpbynsmdzcighbdhkzrbhqgayekizwyyaoaqnacztihouejzzbayshugakfeuexxyvloejxwocknhxoaeptbvccjxzvxcryxljwldxuhvuvhaoisdhykfblgbylcawtpzmmjdaaspyfhdychvsufpccaojnhweyimvcvoufgsdqonemgiryjjtvhndkrlcekjfvmosdzumzisfgcrurjfekelxibtvvuhohpugbcrkqzddkyjinndmtdgwnychnfmggvrdwpmacavmwhnizmaxujkbppigvwxcwruulwnanbvpcgbdvxqzijkoypobuggdcieobeghxxezbonaudwpbvgndkxqfmncguexwrxpaoszjtwixjrkynbbvolrgkcgiwieirabfpwdjudtokjnxxnbtlgocpqlxvuumbchyfgmdrqvgfjtfraxnxytsidysqrwgrfjozobacxawvjrtcbwblqxjjszehsqfbgadfzvdqzsjrlwyfsxcttkgvcottvbuqdgzmwunaiatfnirsaobwiwyymubtpesyamqgwekdoqfdmqpivpwqmeivbuvnjpwqsilyhlrrmwhoiugspjoatzygjxiaqtakkfshewlsnogueftpxohjdzwsuqfhcbboanaqtpweiqnrpjoteegfpswnlyrdbltmrftyxgeaztghndwpibrovkccrkffxqmjbltdxepnzntmsiauuhmwbukcwxerynmwhmrmcxnfmowswqgglaqxbdteryilmgdptfvxqrztrsvqiftzzbixwhvkivpgfxctwhvlhctcrayiicwmaltkdlylvjrkknnbivaqjhnkelvebyrxbkdtueohgtnnfqqdpnczqptlrtnwtnxlaxbitwzfzvoctnkzcvgfjsmdjkiweyveryubtrgcoqbdpqsenxmmrutvvxylwmeiwfkfljhhkclaljnzwaqrftgyifhqhchcmguqczmgpvjoqmaufyghjobqhzwfuyjaacmrcfeuwwfubqavjknnmbutkpqvuelfrwwkbvretkrmkpiwcehqjrvstlcugqdhuvhvqwytqebscngdegzufqeydeybxbldrcbewvyesiouvvxgnmsbiomxvflzoerekjbufbgszuigezyvzvgvcgxtiuzuthrpvqmlbyczajctjzpddunymzbwjvqwbxzebumgrzomigitqxmicgzvwpsndwsyquzwffkabdoseposqelhyjnjovokbgrcnlxgqoigwzkplbtdwqmwwzluffiznohlxytyoyjuvynwkmduebmobacejomiyxojwimpmhnpinpssmepjukbbldvtetotgbeqgqlkmzlpiucontxstzblvqgmavtynhpokrzpocfdzfkvjpzuhxllgfvfvmeyjqoybyrqnfyrczujldwtoeznkndzdpzipfcvsranhzlifjmmwzzkgferptacbihrjmkzuoyevcenwcxfqsjurigkwhqfwrxqiwqspfcmumpudjhtrwxrtlxbynftkcpwsdgrtrbbyetrcywnykugajjqcyhthokniyyncecckzblsjbqzqztvufqgmqowjcaqnzwgqgchpdqunxfeoxbjsleuayyrymkoxvhelmucdabrzjxttqairxurvqwyymufcjwkpheoedzhtynwbsfpardkojwodefljazsqotyjhofhoosxasqwdwkrakvuwydlfuyrfjzlinqrwwyhnhnojsgzlpwystffucneraijiyszbkjjrlrfncszcjgwxolthucnlvwksalrrkjhlgawmkudhzpezbfhughukheyfphpmxxnrhjiaracnuedizbzhckgubzgktexzwhrrbquumurosypmhufbeqllqttgptslumtnmiuosbgmozgbsgtmyjwtevxedmvvnajupdyiovhwxflnnlflxyqwbpxeevkxnlontltvovyzempiizseigunlwvwobjxgfwbqgoprpzaqdqsvdmzpzmsbeopfiuhdhnctcrohjliljbhoiyepiglqbmypseadtskckmltniuuritnyfbszzucspkaotiyvosuwuoxamvjjmupmglieszdfoeolvqmdtwvsfywynydnbkuavduhpfmizngvlyohjanwowmdqmikxkjifaqfdpdwxtvrtsyzldzgeswmfexnasohreegliiunnqrdneiooehzmzojfwcgkifnnlyfrzyisyrjmczdtefyvwebohxkawxbowdowvmmbpzfkagwwhfrveniwfvayzctpxkeyiwstwrwshvrpghzrjmcksuockmrtbdsjizunghzcbehfazltebdjijejyerdwofpmvxubvzazoknxcqhwuqlvnpoztiyzjqbvqihhsvjzeepaxaiijxqizbknpcxknarvhbbqevvvtgwdojuhagzrkrizwdecydcmiflgnorauiqjwobjhgxrkmugxqqjaeqarvymrhxlnflfyfixsgnxftdgmkefjqsrhdibpbwpnqsipfvqtfvjgpglwybklwahygpmrruzlqcxactjfiujdilqowkvkneodqxcgdbssowpcujtptcmjkypkyshjurzzktzpoumctybywxakbcwifntduefrlxvproqcjlxttybjvgzrkghycckzbwlmnycmdxzcaxhksmlnutenbvmvvmtpkoxpjffvxpncorlvlykcgtsnaexjfznpoqpbiwxsvgfglrjtpioggkgmjqvshvebvcpxyyvzorzsmpyjnkznjjtbetbzzlmmsnicljddwzezpvfnnescfrouflsvxlbccgplhidptnsmquhuxkfrraykemmrdvsmqtvbemynuamemzgibwnwlojbaipdhqeauyeluabsglxymkthkofnsxyjprbbicyklzocpsmmqidnniqrairlxiohkwxgvtkncjfzjuowkgdgkdvnmlvxbuujnwbdjoeoennjnthqhvpkjxcllbssphjemkuwpstqnipgvfwglylzgyfjhcxvkfwrsvzgwbdmdidqjynhokxrskuzylgbpwdsevcjrnzgpcyctcgggwnipgitbnkjtakewysixffoyaedheqgmjbphjgeqznzskbwlgklichybhmjvjjfmhlznopapwcrjtgvikvhhnkwwsykurllxhjdsarkwmfgadnmymugqjdxgixbpzsbrrebrvtyadolyznocsqbupudwyqdqpeakmandfmyjkuqlqlqoltuzfzqkjwxznnptppuvssmpvfjffzfwceikisnuvojkhkquoasnuimjltqvmmpcorzwuqndbxdfprriicorpsnhismycgrjpgwuyjiyiyeqhfptnaaqmbpikuizzgpkctxrevjuaghffgywwubbhqjlnxdjrncjzdaoyxuwbnsxccozdlwcrtbafldzacmmbinkdzgylhucbadebrmksqoazcjhinwzwlkinlspjzgnpmlrwgcozvppcgowkaxcoypzcgzobrvhhufevdddaledmrlpftihdjihsuvgjhccpezwgioadxfsywbfbfktaszxpsszvnnxkakxrvphvaggoxwkgcxsmfwetyycfiqghbytlcxxbjeuftnfnhppdwpalejhgzunqixgrhksgzuvocgppiaucefvrqmrogmcwekidduxatizxoavpojfunmwobvqdmyvauzntibdnqsdaolooprjepgofxrewjdgucgtiofenzricxidbvchcxtlgrcpeditcyuzdmpwawazldihgablfntdmyuqfikrxxbthsieptyfarxceyhkfbfqodqmwaekmooupbdrwpjjieafsiehlecytpyurfyuqurybxqpxdssrctorsjeyowtwvdgrthqlukvudfmjlygfjxqiretitcxfttppyzhjnyibxokarcmofsfsifjxnczeopilzcmawtbxejqhxomgvkpoxhssvqzqkuojasujzqdwuuwijbtrhrpqigurkurjptrmwuvziwlmbxiwwwhzerghpfzqfqacbavdbpqpwswthmkehukdyrwcmaycxwgybdgbsskichocavsywmqiczvufyufizfvbwyeefbspurhchtwicmxfkldsmsyquxxsvdbyciaqccgntgazcyzcneysjkpzikkqcotdckczesqlnjvgojrcebvatgatoqsszrqbcopcbkukjlmvxeehsjphndjogdxmnqsurbsvtwdccbpbxzehbwhpmafuqfpengksyfsirmfntdmnzwfyvpashggpqgjqizhacfoqvhaktemfztrhbmqksawhhncpzymfxljbxamxmsflvxbosgpgisxaupganjgwugezpeevjgdubyazgwdcgkcxseshkmrxdjufvkwvrddmplqwxdelcgghovgwbrvsvslhpjthhxerpxpmaaychtuymaixzrhhgkgxkxnrcrihuobxhidorfnjhsqllglwloblxqiiezslqbvpwezjklizmjnmpsmkwcbrjymlvmynknmbjjlekpmkrwmxcvrjnfcahgajmkwvlljebaixbrjezhtfrkghgxhxzwghdrfhsopwqmzrhlrsxufaxxnnxetztehnkpspmaxypnskimobmuzbfkmgkoaodrfkcpxulgbdhxlwnapggeixxyjwvtzlmxddgowltxldupsotmpzpiyogweojsmkldpkckmxhzyqsysktvxgkcqserybyazuyedfdfswskclbpcahyumwmxpjqbpyfogkjbgncwxuwanypeezpgyqlokzutilqjqzzbsxopfqfofxuqnhnubestysxgkkjdajqebztektacwnmqewyhpggecftbydeqcprpccjwbgfbjpjrgjyzqjkklaxopctaujgruvpxlwgkkrlmwzrlcchshwxpfryfqvglbwcfxxphkxhbryapjxhjuhuiapmnhtqwifiaryindjvskbokdslsrtobgcwkzscgqvqaibiqtdesktzxsnzdwoggfvgnskkwhzlixfimycobtmnbdbysanjvnaeskeoxwgvkopkcudohuugqhotfaslzolwksvynyjsiuaqkrekmrjgynutsqgpaygdiopzxwffayvjjsjkvvokoaxdbmzbaeddbxpillkknbvrgtkbealdoqdiifgqxbrqpvxcorysxnhagggkkkxlbayiyceukwytqtobpemduonmygjsqmedhrnjqsjlpmjadmtlpvnhkhuvcbtoxfecxmvwgfzhqmiqvgbttjnswmnvhngcwcrlktksyyldooqvtdsotxgylklarhqhjonbdgdmvrxtltxnmvubgifykqzttxlytblltazrkgaxgilyucefgbehwodluwsywnpbhouceikkcibzsrdzkxblypxneguyoaxyxhphxtiddnlclenzsdhemqajjdaqmyqspwxnvckbzyayyvtwaugjgpjmypebrospqnghnmrqyfvuvbqxxucfjeqhnvijwnhkeoztykhqdexbguiooppfhjcicvplzyzvaujwrazuwrsqgiloqgzumrvcfkcgrohaxmhqulxqvpoawnesdyzvosipsvnjdavmlzwpgvkuynwbibhfhqokmzxgwnqnblursqloxybptuofmpipgtsepqiwgbhqicnepnyascrmlzzyhgtskfztgflwsqfxhznljyounpxjxbusxynejolttqgybfkfokgklecknodjfllogryzinnesissfhkcbdohbgacqukqxsrzcjgoonngmmptxfwcibzckotpwmzbwlxbcwtirrmqrtihatrqnchxyotpyppssbpmzhvcmrqmxwqdhifopkbniytfehabvossxidwrjmxdzquoevftrhmptvqaefzzihmcadrluvmjsvbbnkbhayyszfvmjcuisogrommdcqfqmymodbdnwtozfxcxbzwdspesaisgygrlmsmtxxsqonuobwdndjlucmdygfydbddxqhrhbpponivrcpgcecaikykwbsrlmzaoswcaddfoatfywmevelnbrhoqjpzxgirhzihyngxpenfjmhqcetaodqzelrybsdlksevzjvitcftoaksczdaqyjhdgmnvyrqoupzyuwzpaurgdbiplwaitdbkxksttszgpyvrldlyliuosfuzwhjrvhumnvyhymjfimtexllswfzwttclpgtavxqyoqfvmwofyxrfrzvayjaiupalohmpimdstueexsfxalqdhlxovirvxvohiysrnyninkzpncesdkgsmcgsxagirrjqgzwwvdulshxzpdlsugmutuwokwwsyoopeqeandmefsqbhisnjnrsjyzrhlciabzjngwokkfletlpllmxxixjlhkyosyvufdasvrgyswtsjiqeyxamjicgacslwkaaawfxjmucsfilszdwtumwyvgthkbyyksrfgnmiqcjbxxwduugioaboduyxlerhtolsiqqoukfchehxpqssyjssfccimfcqtmpndiozofbwyauoddcpzpisdsquehppbsaqkwskmvipajfvmtfhbcbxjiknmoffelkhuvsvtrynkuurjqaynigiezhvwcmjnzzyalfytaimqtwysjfzzurexmaqnnthyfdeuskbceekoxzmgsqgbswajjgfiviwwgbwzcpuclxegqhnmykcuezaqillymkyaegoliwajbqtrcxxsfweyhbafzocgvqdqlpphjwuddymhjuwuhqvaxadlyvvvgqoptuxbkyrwggzdroerwfwtjwscukfqybentwjpyblaexqpsqihvtvbfvpzabkvredasyaaocdqpyqizzwghicqdsujooelprxlledkdqvbnzcywbczjjycsvgboxnmeexjsfuiyhgdgvbshhikszpszzhraibxnqamffvnaqcskngaoygxtwxnkjthqjcofmslnabiuigyugskocsqqiufbgwbedhyqkhkhpikmdlrtpbjpovczbhyeghlgpraqrcxciuijsezugalfdvwurvjymypdqvhjlnnenslspshjucslnmhtknvbjruqgzgbrlfywtritoqqtbggtagwgakxxvhfimgchrvzcgfeiayjmhjytrrtffmpbojtxyrqeevekidwoltpqawpqxztxuhtkfmvzgemgekslhffsghpbtzbudpmcmnncojxxkejdwczndkxjbltiviolwrptrkvemmlcqiqalcdmoyhjadprfycrhusoobpmzvglyxlgatcxzfptzecrhxumqbzgdgghusoivnketdnkcukfafehsfvbqudyvipiwtuqgmaesgehkcfjdggetavqwwupyobfmjovhkkorykqkkmoxrijkdbafgcapvnrqayuuabyprbhxahsgkqugjfiyyzjnywypmlfcatcgrcqqlugivtnvdlmpnvsakrwhfgpahqzjaljqsxzntpufgrtjlkaxwihlmrpzzltwynrxyowakipxpmgfcmtgdjtxsoujatispfjkuhlgzhotqsducvxmyoxfnjmglwtjtukkorgjiyxuvueumjxmepkfckmvubotftxmcxtklatmcjgdemefgckhziropukktvzvawblbtrpusrvjqcowedqrclmwcunpycfohsonwlvsioveutnwwtaguodyxaemeftgudcevnatotozpyubmkepdrurphygmzgvnqofesnglqbgelzkhbskbkmgabpjqeibhgjmxlrijgscixjaqqwkwklxpusprrxkbabxolvwgeyasugfkajezotvjtuypnavwrthhqrbiclqabtmjovkruvorcslygzgjfidztegqbhmyrmlkebbmuhspltxdatbfaenqjmcwsueiuzcsoffiywdswgaklowczwyhsqzgwcbdsaslafuxmwcikigvksuftvawthhplshpwubfpoeknrzrplkxlocjohjgiarigxdqzcxrdxueavxxltsbgycvmjqdumeicmbnwqpnlfzptmpcszxupxrbozvhmvdqsufbfidsywixgslpcnyfvujqgoaswkxsqjmfbnladyqpmfjmtulkqovdrrimegfdixjloodthlovclcroaflnwboxmgjefhasllneaaplziqcxsrfmspsdoyvqyzzzfdktsdddmnfcsatztujujxjbgwmysbpnigjngpjzchzfmtiyumffirrkluzyyxfzlkkkbkdggjwxsgevpizitnicmisduqmoxkgvdapncjqohytrpkzttwplqsvedixnnuigganbbbmmmtkrudcgbxrvvfciiqzwzxkmehgckokgzohgxmhpfyxzedjjebvdrhzjkdeyahyjaqparngtwytzbnzcffqylepanosubzwedpaclpaxgddcppwanczbkboqopnmmlgtcqxonawondmjnkkbhlakxvhpplqfaxhvhjaqxhbhnzbqvehtdotbhgijfoxxmzxihbhaokhswllimrwiuwsukjkqqbvfdqiehjwczbjrpytkcrzmsjcoezwiufdtpmvnvigezcyqlihspnrapqlxswgoziilyvqgqprjevcvcnasntyguqyuvmdqccjgjsizmaibfncrqbrhathoupixiltnpynnyoljfzomepfryvgdmywvtgktgkvrmhsiyccfiokddjdiqrcuksirxqlifyerdqyurizfqyqosijyehbhwrzomwbfcfgxxsvtnlpqwkciwnlrlkncbchbcyguydyvlgvzoflzqfbvowaphqlmihjakqxozfhhnfgpwkudjtupjoqhwuobfexobhopootsyesayuwhqjwmptusixricbxoisjemxicwcwgwwothibmqpjnttoyykjgajwwtpljrhfsotsyvgmadeqylrafqldveipeomlpdfprqflyzrbkgykbwdezcekirvupqvvqjedjddsofawpnlzhtdtpglkdbmrljgpsddlragaickmhavitijddupipnabbgiwcmuxabuipnwtpczchybreueqtmelayhvtewgflfawwuqxsvevrzbyxeyxhlnnqozebbqnkttsdgsluzqapqtjcjdqpnipehzptxkpwwlnzubgvthvxbtysfbufttpjwpbrbrsxebozwyvaqozqnstgkmheazdyqnkdpibwxatffeawacbtesudsqynwqsupxpcjkmcgezcrumgcfzvjeydgoavmgvnbgvdgxhhdggrckgjdimbdqiicpowbqqhqjacoosbajktavwchbhjpcknwugvlsbuifqwivdepbttmtrzeotdpknvwcyuajtrssconwetcvxgtdyjegbfxdayiiuugdtemfbnhfreyaotaoomtbogjwlujohoyvxetuovccopxrxujgoptyfbhcbeckbkgugzrogbxgvahjjqvtzwsvtosmqidpdaeqtkjlfwnlkqrcgonbadonjosjvlqogxpbastousceegfnqcoipajuimhcamlietghcnksfgehbkgbqpxumnpugkchsbqqgoorzksfknvpwggavdtmfkdbfukmifuurobvtersiawyrqnhludtiyadaqyijbyegihyevojvlawmkggafnyhozpfssxdlaxmuamtydwsylthnvjprkjirkfubxlrewisxolwicgfdttabhukpgpyvalavmioucdkepeutvyppevgeiixlromqqmgshtuynuysugzcgrcmwwkbnspwpehzzflswmeezrztmqbwikkuusuhcuvkzbkfsesmisjmweaqhlnyawohauemlodefivftdlkivgtggekaxzvmrxuwitgfpfbkjechnnrjexadljgtbltajqttielzuyjuixvqbemkdrerrunckdzngaytpehpnpdzjonvqjpsewvhcfheycafnxhhfqaoogitvffcxkvcgnfxxleioghhpkkjntvrqeyqexwxaoewhlkmqxjbocaefdcifoorundbkinxjmuukiksvcbewsdycxtmptnmuumscmxuxirwrftqcxpdbsgkqhjpfaihhgytzziayvjpufrgutxxpnathmfvenfwfbviiunwpsmtiigelujwdxfnoclymkzveqnjsmonmwydnntagesbkjcjadecnjsvdvsmwglxbejlzuxejnbmcnwjqsmkbwqhzccceiczhvywevzwgprhgzevdaifuvfajjnfepqagrpquzecwmyphktdaobvkqyxugidlfelcbddkfbnefnygxweqrtiaqcngzhxrkyomhyddnqvvnohbqypzvhmfdtwbriksvoonnasfwdhuraouyamedjtinnvpscbokkpzatpmbxjbqtvmlrwydcmchzacwvzccpamjehvtolqhvkfmjefdxsiwzpgwkqihjxblwvflyhvknaffzhxbbdwajigwneanwchrezszurvwyakknymwspupxwlbortlnieqywtslkhwdorshyqxsuvyunyfpehzkbtwmeqnceoibfxakgggvatemmgnkvuzywoqutfdyknmlokyeafqgtkkujpajlwhzeytviimesnpdnvzjlbmzaniwzowbutrvzfvuqgktdkbocqiqygbmuqypdgaemcpljckegoargjyierdsjevajsibpgrtqlzjfwhoipuaugfsbtuvmagwwogyzrspfdlhikifuontysprbtowvhfptlugtqwglpebjkdkvdhpkrtjxtkvdcudkwgxeymrrbjitmqopqdffvscoxjzygxhddiigojeliumxsguvxninvcwkhyiwxewzcqrprcbcdwfhhfytzhqnparukdiqqtmwnlftcpeckeiiqytktagdpbtemrnbsccgebcjmorirwslqjxodoosmbowdaelfcajckjtpdtclzdqlqstdhhmlyelncaekzbmsnoovwwqcykszvndinckdywyrpgreiycomdvcdhmysvaxqdcrgytnknolhwwjwqqqcoomdoulqkubfddhzjbgwqwlsaunyrfbnrgtiarsphifrujxtcifzueklvcplcmfwljyaaoyjgqgfabbmzfbmwwlbfulaeutovfqljkwcqxjjufaognvedqxpyoncklcihdqriffaeqqvtmvvkpsdjqfmmnohetfiivpyylvzazrnazcrrayfjbapnpiyrglyeaotbvtcduaxkodbnxftwkkorrfwxkpgxdsdujxjfljgfihwjscsusujgkreautdupbvqjbenoeselubxcfkzvjapxgkijbmeolvjakwtrfilcstoekladbgdqyibksqklaspruqdybnpbfcubvsjchmoidnpqanvfexwyksbftgtpgcgjjhsujwxksblvfpzdfbhxanjwcrliapbfiegfimuqkfhdwroboqdfsanxpivdnwmjqcbelonlhpbqfjqxhhzodghzzlkbvtpaofgqxccvvwazfyuxycvitbsfrqjojthkuievibtsyjqmwhuqtrojyxgwnbcbediiarcpyfvfbxdtmuzmyzrvtvvqadqwativippguhcafwdufqpgywiuohvrcuzogeuymdzdfxezdjanezechyujvdnejyqioxgweipcpeghquftusojqsttmecqquaxgepuymxktarizaogjbualrbnadjwxdrcbsmwpjhknbdbyavmehyexbavbnleupblptwrgmzbzisxyikmxfhmyvhetuvnncrsiemcwqmdayqqaolqcnimsbehlcgocyvvaksnhrviqjgjbprrioqrruovebumbsaruojyjilnyplntweyjkpwsyrukbaejbolsytphnfmkqzonbkfuyxdscwphzscbsrrfdmmhgohclmkdukajeljnpzsnkyhbvhwnrjfnfzfynlngqcijxztdsjlyzcpmebclfcxocdlluyxffnulohgsdtbkktghmgpwzennkmawvtgaufwudcmqqvbonutqshxvstcvamatczoushwrejtkwwpiyuknhudttpipuvdzbsfbjtiyapmopjxvwgnznxjbunxdpfvqglgihfksavrqkaeljnjguekqraubpxkfdvgrxnhilbcdmykomnudwkwrwzwojomstrnobitqcdadmdzvtvmzrbdnivrvjqrpqrvmxzkxxjdgsfuybslnttfpizdninpccbopzarfusbjcwgbfzwifuquqtpogcxquzjzdzjfploasdpwciwtfhojpdwzdwxeujwithzjjmlzbwdpwubtgqvlmqvmmrwinszcjheybtshmkxmhdxyawycmvmqxtjnmpgadfxxggwfxjirxlknphzaasdgxkevxgbhffoorpxbqckmjuzsdihgqmvjgwwgsnraczfcihlkgbspidporfsyxxwgaaxnjdgbllgqfoqfzttjrxpzzlkkwiwqskdeyxcmupwyfyajzeeluznwpzxovytjyfeworztfegzvsyqeyccddvfcunluphvgjtumyacyazxoxwcnnsqmrteohgeufhhmbljwzaqygfejrtnonpeqioignyscisqbihfkdfwttxoioyyprusbdpyjfapinjhjlofillklemftmgtraqoellyumklhnythagcrorutzkmkuqnjekccqpommkbcuxhtbplaqjlddamfvbcawrzgwucfpxazrcrtyruarvhvksysrfbkinzwijnmhynkszgalmxugglcryqrhceukjjzcywnmseoymhlmxnwvajobjfpikvpuysftebrdocdphwtfckzkkeplraogvutbvllylpjhcqyujlfdsnkcoglnhmhofhhpreoykowbpmrdajnvaidrpxforgjhwatdrfxefiocmroheeykuzyvqjqelefjrehtpgppxzbigommhotgfajigoaeyvnarqiwndemcwwfxcmcwzwttomfpvkovrqkithpnkqolvbhxquthalqalyxbztgzhbizgvzvjzuccpexcyvuqlgikzewyeavbzjyyjsxjxboawnenudqoxyrdzscjurxbwgcssiaouqpqrgjetwyncsidcqgvkfkqrdgbxhbeduzzomhsfnniefmhopniooyoawxwabxawakpqtntdqpgyvorvjjmitcgqtwxxwyiwbypoywnlqfytfborzpzkvjnkcgicqiuolnuywrdahmxjrjbwfengzmxyjshufgcvtkdfuojlmitoglhgvsjmzebxtswmugoomiohzxdgbpdxvctlzjrsweaibqtfgtgplkgdbckanbxlfzgriqgemngzvgvglnxptjtbdgafgntrnblmfabwwjfgmtiyklsjhqtidsdmnfaehrmvxlgqpiwbrvbzslwrnmfggsfcluwhhtobwtrjaicplwhqhxcfisslqdfdhgxmlzfrhlqqyxmbpclrffnbslgjxienhtswtzddwghymzhezyxidgopzvzsglizngqjiugkkazvmuwhiaicvakxfpatpalcuxkuvikszppvhwedetuaedvmsxaslwhyhlitajvnohmrldpygaumqqbprngnavoczeepssperbpglwxclnjvpwmjllthvfbqktcjoulyiewnyaotpaxdbimnwtuwbncfqpxzvhlnksjjdythsqxyiaewtsrrofctgnmlyckuqdgyjjshocusfiyfaadelkviqwmjcsttdifnvytvwtsnehclprzybypjvxlfwamcvivjdszkyztnjbotvgzmrhcasjonzpjjpwlulzibgdhtnbygwpxwgyesxtpokadllfkmizfyjeanbuqizmjbzlbcoauyaxmfyovparyyzvgiwavbvxaehifvuynoihepehlxymaonlxqsijanqrucxxzodfgqukjyugmwmbirlunxcskcogljaezbgebrffkctbaxcjxehsjbiakqmpktjmaukuelorzcbwqgvplwarldfauyxsfqcssqxkuahvoaxygzlvfxeueaqbuxifblgnskzgspjwzpmrdvpwxxiaucablxazqoyutjkzakfvtxseigcimgmfxgtumithnwjgpvxfnnwcjgnxbsizprvdnfqpldftjmiofzsmcffxxzacqnfcqgnssaqkwmtenpggghjauzfdgutnwpdascthzjoctbbmwadjwyutnumzdjcdyqpspwncskunflkxattovnsystfpizsazsepnnhszivexytbwtkyhkitgxbvbokutlqkmnfpeuomrfghzskkwlekjjzkeauytgchkdvuaipijnvqllmtkibzmhwfmomhihjomwieopqhmuugxujvmqnbsymbhxxcvrsjwriwsrkelvfxahwjonfqllwgkbjhpznpuoiqrqldanblatvbpthowphjfekfvqbgwsufbjkbagoepyjkcgkrfstrhxdbgkrzvdijazxogjyjopjqwhxgbucvchglytcaakxkucqkpuzvcloqmmzfdemlvqpspvrpmofzkyhpbznzfrlhkttyevmrqbpbndvxrpqpigbcqcuofbefmfhqowopofwffmcwemrpeymkddsentwybddomqvsqtflcylfxazjjlakwflgedyrxpmkmntfajymarkbdfakpgdmfcbdmakbqmymnrnhbsudxswiubzoxqmavyuzbblpxataukgktcvpraqgzwdbsypejdqmxrchxgkbphojdpghejkdtppyafjctlynqsqmzitashjrppmpcftzqkmhtszmvhxlfqnrkrlzirbtdiyxhczzvxjdkysigjehbbqiqfeupwsrhzivpejlelsogoqtsupfuwwnpvlwerbsqkwiwgvpowpzhibiogigcyhbfizpktojszuynrljlkosrbxyzbyntndoqurwkqkqljklmqrnmndwfdykpyiaymtoetxrlvjkpqqajyzlawltgciyxszeoqgnxivljbxjqngwviwwfrgehiprgpcrbhxuwsxwglambxrfhjqhdmvtvluzyuwhxgtrmtrltmcvgdkcutdrpjofiyhqrngrutkwmoglrqrtkazlqeyenxtuiwlpasmrdqirerlcbkrgegkvnoojjlnoiberapjiidgxihzxmigwrprjbtbohivnmhbfjedfrcspfxlzjijqpjdllljeqdwsfbwuofabzykxnmvjpaipwhvaaupxzdzjrhlnrrrlbmcrfijhdpskueqfrhevawwccnoombobhuftvkrlekoqocqeqpixqxqcbxbafmdhxonkbsynrxjdhnjppdrsklgrwnhasfkfcfttragpkamqpbxlznxnzzaxhwdnycdmedhmiunkhgngasvpsnutigifarjshzzwpcnbluahoccngfugnjdqbbcnagxafmynecusiqtkodnfkwfmnstjwjdchwzxrmwoauvladdoyybtmdznszlecukdytszrdtcohgirqakchacqxzxinavrtscparfenmlrdkbpxrgvomdkqxetrtnjgtecvdgdlbmtnnxtdjiqsmelwybosgkomkctypbtjbwxjbuojgngaxpakkwuwponsbxsofukurhqabfrbngrelbfxydkzvmgxvvlrymejelgynzfjfpuvhqumafkiimswgryhzbtfkrprkatvefslkcqnstwhgyuotyyaujucpgngohonwmdsfdehxfmcftrcokeucphwfvczracjlelvhedyndlfvybcocaubcgmcopbvdufpcqqcmdznnjcbyplzlslblvvnwgwsmzwahmcdigxkxrpfacwfapepggqcjokpfjlpsfyolyvpwdhxgzkoobzpnsdzvjgfkvtiywzivadzbndqtqrelyagzqcoadgofisxsdfpagummpxogjigtvfmfmrzwfsqdhelslfxyhzcbmlsvksmbbldmvfrlthtqvefbesdxougacweauhetlqcszizvrawsgyblnjepztisxamfhhpflttaecwlsbadtvlqwiddaqbrbbydclzwkalpycpujplnzaihfugxwhoeopnracxunwkjihvlzchvdjwkpddkmzcxxyrlvjiqlygyqpkcwsnzsynjzsuicyddocudgazkjxhqxtkligffsjbbbynqmsjcirhenmdnhsrdjsljlphwiujhxfbaenqypcldkcvtbirvsdznzgknucgllnfpfivqofkxexrnlbjhteptwbgmmvatmmqetcrfxxvfusyewwtyszuhzwwhrxwyyiaysuvoefjcvzvvturmukyslzusgnqpfvqaingtisluycyjjvvtadcxkhfpbkzhfvtdynqotypojuejjrkhsysdgaedluhpybsznhsrtynhmdxdbeiaubgyybqeljbzosedslmiurmdaslzmrxawiptrlcclbgmlnganhroreufuoemuwbnkmzpyvgcqmxxuwffjdqykacjagqnbkekrnqmkhadyyecutvcnqdbqanvezqrspydsfzrppcmndmmerlzcreleahhjvrirprxsjdupchcfznuuaarqrajhisfyzpnfdueibpbansyjkecwsxdnfoilcftnvsukzfbqxiebzuyojbopaamddjszbghvxcolpizhfbxaqarnmzeatydtykmgakpclynlbaufdcfqfwoennsoqdcjelzxcsfuheymjzcqaswshsrccftzszttrfvtztsuxrwoarjdnjdfsmrpansekfxsrppoatoqvnulfpphmcikgrfeoyazwcgaynbaofecjepljqsgpbyulwcxxrshdmakskgwphvmmyppicclmpqandrsnjwdmoowvvseomyuvchzshvvplunqmihdwekdcltjkagxtvwumykmaiyxmgnjwbdiohaevsagrcbqkykhcrhdzghpmouvggzzmbyouxhqnbtvdtkasmprklsxidummoorqaprgdvkjgmntsdfszypvsnmymqghvwidhyydugxmmkkntrrumjlnhtovpsmsahdsyltllrgzkwxjclaqvrdnlpnrpxcwllsncnkhftanennohszykgqckytzmznyalhjwywcmlafdrqqqkvslulmptxnpmdgeubiocyzjfjhwflwgnpczrtymvhviwabigulbidcqygvjkhsddxxviaiibwlpkqylwetmvcukymsdylouzjdutkwbsxwfaodlvblbhcplfietdgctzgivvplnughjxmivlvvnsdiirrwbndivowwmqbpsakjegndmghoseyuhlhbzwxhpqjkeynydwjvavlpgshqkscnxfrifezlhcfqgkelfbiotxazqadhcwauvujzikcsrefyphjrdmtxsbzuzschpejzizuzzamnpprfxyvpowbjyaoarfxozwaryvkdbnpzewqcxuhtqtohrqurboteuinyavsckbovysrnqoamybdolrhvfwayogbdiaeotcwkqhyinfcehvrlccylcofohvdhamuwjajcqfsznxnkwkrloxvpjmwhthqwlauwpznwogyvwczwkuhfrjdvvuhktbqtcljcwzhotslcucyftohztkevlewuflkspdyiszclqlnzjlrkusmolqwmdcpmzuldrggsnjnymgtgtbketgasliazoobmjcffqkhdathdmffjkwffqukxwlmipnaycufnhgpfwvzdimzlfjegrvjrjdpazmqszhkkoijvegeksevrczmjbnrahwhroulypfzfzxyyspzqwzulzplnguywevskjjwzomfvkjmzgwgdvdwhnevklnkyaqfdubjebfxsldkhlxstmwxhpqygbfjcuxkyfutovakxslauryvngibdxvlvtiwjppiwtzgriptubmduyiqbfekuckfqlncprckfoklghqrstjccpxumovkvgkqveuvvexkdxhifcyfghjmgfahgommxceakulmvqlxzvbsoqbbhafpbtidutrqbdjgmnchixqzrzlzicieuigdkjyoixxlkhxwrqrvmugoiitskozrvqhfbswcbwdogzaupxuuirervckesgzotsblapqvhgdnglhmhqaqpwgzuithxxtotnnpooezzzbmngfhwehdladgloxijhnzjrjjaqsadcptazuhbpelziukkmpczvcxxwrjmrhybokuwlcsdxpnbzfdxgqrjcgtnujjmjnvnzfmvavqqmxrjrmidtwafbuxmmkjitncariueqyvjcsgstgeaycoyerpyempsfbouurvfpvbzszwkaysssvjihrlastsoqwhcjoixzotaslyrbbyooeioruhgqpvvyukkujdgdbrarbhzhjnhqlfznjppkekcckvgrvhidofdlipgzzssbptceiskbczacfkcrjxytcpnxxqsaiydftryassbikryuotjrurspbhyzxkqtatrktqprdsssudegaueehkcftfuoahncjjaegtjfdoadpgnuqwfwfyrodhopljfiuopabnhdhnznpwrazymlaaaxaxstivngfartbqaxjylsrbfycvgyimfwfawowvdsxwtimptylvqgeemigilwfopkwopggilnvnprpwttdnmuzjsnmxnvcpfixojvmwbrpnfuaocgobeaaolusvnzvdcpuwboxovekadmiiojodruukssotfcwdnzgnjvwktwakgxmbddnqttsxsdfiswtxlrqobkdrmkdjtgcifceyioorccwuefsrdntyvkwxmknsarpgnpaayydlgipqcopbbfcqwofsexedeihfprqhfpltnzuiayzzwvsrqixbctaspqsoofukdveoipbfbwavxehqobspssffiflokoxkcxveivlwwaotvfxjhvikxkbpfmlnzuyqynhrjqaknazubdceosenubbqhhgwypbtuptyocsehrxbcihnggsdehpnocnhalqmsmlkymurklkvhintgqoiysojevrzlrpsgyigezjgkuihonlwtvobjmtezqdvdonflbhtxlevwlkgtyfbwkajwqwcmzombghabjuyprcepmemdvswqicxqfmrjdxxzokdqeanfcxhesnniazwijqwatuzonegigixnuedziaocvdiwbqdqjepqurpjtzbcslpkxsglopfkztcfptixmxpzovriuhfwfysncloynndellokuiopgsgmnzsksfbgitljesbfofzdegauzaqqpixzvgsqvqqrkifzowomlrjxybccgggsvhxojwqdmoxkqowmsbyswkfbmypgrwdqoulbzlzzwrtvjewfglyqvnfezvfhnaauqsmmvqdhfclewwuxwlphdxcpnzoqhsfjlwefzkfjuupdrfdrhwwazqwmytejeijiimfrddukfkacnpbtfqknrpkvoudscfhznknbafxqvemfqpfzqfxvnhbcvbojbiszmdsnmqewbjlinvirnvmrbrlxowtbqhxzpnnjmdqzrvrvevxybrrykqqxitofozmcpkvslxnwlvvnpszublmbmeifuztzosxnsoskrfxkrdgesekeagwqfjljbnytdwrhggfhxwnxowzulziamenkphtycgreifxogowngsnxmtkceepjhadiqjdesatotcmunwbghnvqasglmkqqivjnukoejvakpjvheessighzzbsoxuypfudroohbpqjulyfowrzvlloupttaeiesklaphytlofpbfyteotquobwztnbqlcyunslveprqxmilkubwuhrugzrosevcwspiakwqinfmnpkyvwafsmccxzgefmdsuqjcpblcrerutjhlrixvesbdyvxkgvjsfcuyegvggqdgjyukazgtgatylyslvqgmfvhcckpwebudgrutoyczgmzfzdiummcsbpbngfbaprblgwbpysmobcorrhpwvljnjogmmcsxamikibcwmuhlexakvfhetlsmwgksvzemjiwnrxnbzsxyzcgxqrzrgwccovmgwrgzrchhmmqiaawypfjcrepglolxvrijpkmjfksestllcterzyeyxjwzpzfbgsepvtckhkgocnjqjjgctdpmacvhinuecxyskbwgtdbsytmtqqsdtosixbeaiktkmffytjeghagoihlavistyfhndozqxvwpcxqlxztuxfzezyvdbtnshhliimnycyxkhaswnsqzspckyuxcwlethzzjurdzvxllxfzihqfwirhezwrpdafridnxukcpkcckulhdjbkqyepbsnjceqaxvujryffbotkwexsjaiwtckwdmcanpcdxxopukwcnnjrqqcvdkfgizhaernltmefllvkggpyknnnmaukmlixhovcicgmcqiqqwfrpshbynwarfnevlvrircfxygsgxqfxkoybsvkmhoyuuiprzxxioqgrlqhplbydaoojkyzmyymfsxgmkzoutfzslxecablyzzpitahoolhdzguuxmqdjdfmxlbjklyjximnxcjbsphlaorrrsnoyyxyfevcdhuityrzmhjdlkerhpwuvzxlufkxioophaevaumhmriowgkxcypdanwobrmdnxivuaynqvsyftegaqjpmqhgigcstzxtqgppicgymrbzhxqdxlxnqndozbxbazirpnxhlzqixpqrahmddqfznglrvsgtainyolfauknfipgabpazfqzgsvyqibzvkzvnzkrkfhrtazfvumnlsrsmzzhogzuklihyipktlxvdwgsjkajmfnsodntmmyzmjqbhcpziioxxipvcaoavuhkcjdvjfdaqtgcrmvlbdbtqzbpjbonshqmudpgrihjvtjshnbznyqydbvvbybfkzpixsjbgaffggtgrozemhhdgcpxzoffdwpxjkfcdldjrhzmbvvvpptjvinojbtfyaptzdhdnigumlipqfquosfxlbesnpfojkgfcfedqjuihfgnrtyfbmgmezugcftymzfhywjrqmtgzhlzinneyamafgctdyaryjsnfnlmhtuinytyykccatepddjlslqzdoexdluaejrhwzpcavmymkpbzvvmgsvdrdqgoszizfbxbbfwhrvpwnqmtvhsdjtxnnhavefgiyvhmbjqjexbakkhodeqhizqelymzfvhjzstveweqiknnvowckykenltojkrjenqjgbqvtrxnpgawtvclenrmswzefqoeugosbkekulqlaevfsphwdeardnhanycqdaiuqwjjrrgjmmqngonpyvdcemzzouwrbpjtfyufalhbshkcltwafvavkaadydzoiqiegggusipwxvyxxquqjijkjfwxoqaiffvqpthwrjpeiuwpgwhxirqyxxyysoaqfsgvnozpbvhsomrhwqtjjaofgmphwmaqzpjqistaguaeouczthumkmvkvrbyxzmrahdfutkhjfacbvirbjxpynggtexcqcvvugctqmqbckxhsujcsxxvbtjvbjnijadholppybimxkbipsujahmuwnuryzwdcyhzhjhgchzswoovkbcrzmiydkylesxatazbjkjctlrasqfiwvxqtigzujnydaypcmqwbqihrerevlatfkrpkqnmagqeynmcusdjvbokmlggjsydcfvmmftcvvtyebvlfiyozmsnkkqddwkdbgzlaysvzydwbvsoweevvtgahxeiuxxtlhgzrsjnyisepaugaycoezrqxhxjfyafrebgzjkshddomlilogupfmfmvuqoxmhkydxzhoopmzfhrsyixaogfushmaothplzackgtaqkydayjlnoezaspvnctvnqsohksijtpzmddegmzbxrrrsaqpaunioysjfxghjkmhuqjtbaugwsgjnkkpbeeadujwivksxxwtkxzkjwlegnwexxvxdiybskmxqyinwhpwyxavsjaynkwcvvikkvaizszxhqimidsylumgkbtbbvucnhzclyifkpcqeipntdvsaqeqnogdigddkvivlrxwuhhbemoleeotolgbjcsibkdqxzlikhzafbeeuxflojhrfxquojzexgqaarmjoqdsmewezryyjjriomijsweocxtbmdpnloxedamitczuxfwsbbtotncdzqfcjtlumqsnxtcxnstghhxiiflfgycfdkkeevbdlglndwuoofovxqryzopornouvrnwpclfhfrgkipskpxmevbivyizdofodztitrmvpxuzmmrhipehaahljbzsruoioberuvulaijcbdjeyjxjaivnznxvxaltgkypgotqepogozsrvpnubrdpvzpboixltyiacqywrpbfqbcqsozuroipmpibweqmvvfhnkungiozcajoeofmmcwjiulgzqfbjvfieixsqhnpwzyjiviqkpwksxjiapkcgkxuyxvjytlvfesqgsllsbpbxnytubteuavcclevbmaxeoumhvgqeyqfxlithijetjzqalzmwvxxuvmbeghojzmyotygvkvbtybakleexgykpuhuayhjfecyfmglruaycgmpghztgndrobihekhooqkuprichpzcxnnymkwwwljstaaoliqnomwiicbayjseypemxkhwgycryzvhxbeacwcuqtprmfyofhcknmhocunvrzajadgaqcfjorhsenhyvtgwmsboqkoxgsfnxkthbsfwesetzklbcuruyjdhtlmghvjelhvhrszutwnkrhkubuhlwneqzryiomxylnucuipbbrggarhtvhombmnzhcagnbdeouhcjjqvnegyittujhwdvcokiplvyjotjtcoowdllnvyjclzvhrsqairkcarohfoefjiqiwurlvcujrjphaykcfcokaotkeqtwqwaomzyurrfqoyygfrvjmveksppiqxjgkdmtkmnzhcjtdlqrejwiuhislqdwtpgderfzuwdkomblnaghvlxkhrhpwivhdwbmxxjrjtiqnmxzewbamlfbpiuigkgirsaudfumogxdcedltxfmxfqzozhqivhxvwzqncjeqiwapnmmlbbmxzoxfuyfexphsjhvajybhysvwshtwslcauowpvvvlvyyyxlzmjecoadtskezdoknlsqskgwtaehnnfqjrovblyrswqlgvvbvpdxoalduococjkdnnkbcayjzkqgingiocxbqpnxapulnvhwkfoibrynrebpqghrcbowxyzuyckllidspvyofzquknrrbikaexikwiachkzpkcchccfbfyjylcgvykjvgaedddjmicxxqgcpmmdbljetplepdhsscverklxyteqcfyaguuphwusuwnpeodepwsckbjdehlezypffttghqvxqjuwcszmzioyzqmendbgbwxsgbocdfxuhzabpgekqkczjieljyqzafssmdvabfkcymeefxfqkofomsmhqcwilorgaebzcosuaoklxekfqtyoqlgeshgybqjrhtvdnolntbntscrwyvzcebdzxybzvsyuvyytorcobxefjarhngcvrbhauvuupixhnepyfeaizmeeccjskwnijvgyvgpnozwcnnmepykliqdvexsjwfbjtcyibvyjjvaqaxrturyyezauturdorokrnducywbxubrnybezhflpfjvnhepigyldkhlrpddzzwlimpnmibfkwlrhkqomweuvagmjtdtnhchblzwqfrmzorvqlftclczecceidyaahgshpwzfqqmtgpeklpsfgyltoughlgcpjysbrtztvdkulourkvxyrpubrfqevsrytkpvgmxhigsmglysculrzyzmmbqmdsfeijfipfucppixrrntqxhhscxsggcgfhvgnkxfbzmzfidqdrbvybbblpldthvdgjnajmyqpzeiijssukfujrllpigucuyfhwigrevhdzvzgkvwtuxswhkkklziusobypespizymoczzxmvlxshtbfqeysyrwynloehyhjzurtzknifudaaxewesgugcjgqfbtlmedlredtoeurufycnviukuhngcpujthefqwhosmwfsvatjhdjmqbajuxyfjdlbkybxiqrueeygyialiokutebitujkzonoxsenrhhjwbdbnpsqxomkhvxgilindyxectskhisfyktliwoxxaofjubjmrywrcpbhgsqbqnetbkerscyettqmvsxshzruocxbrgsznqeohnerdgawapssniuutygficcbudmfbvdtzgcgjtduedpnazfvjomdmzdekqyfqgrvoukoptknjkydxwjompzdbkugawnbkfewsvuvtmwvmmjrmdencijabnmtqsqyghgrcxrbimelrozqdfsvhvrjyrumwhigxchzexulgdsxzoxhmvcmjhdznpfohbrfnukctcncgxpflwkmnrwdtfjppefwgkhrgkcsivfhwkqkhwaftkhctjgunkfsazrqinzgvmpqlojrrbidqgagikmkebjlfldehevgbrgirffidbfipdavxkpnuvxziybcwzgmpknuapxeafvjvnpcrgwgqhuofrmvotyfpdomooscolswgpnytvbarczwldvdivqxybbgmprzworprpwrypawzghsrdkuiggznhasgijtrwaifeytsqcjatlwssqmgimacdgikuowpewaanrvymdrnkhqdbppatspprzoxezbpmmetvjbhztswthvgqtwkoeznyxwsdoyykytgzydhhoovzxrwpdurffpmxfsyszrolpyzjlkomnsfakiikvivifpigokrbejjfqcdzfhjyhemycamrwfxecvwhgrjxhnoalzhocgorutlhdrsxwhlehgfklpwjesproxxugmzwixgudpaulwxrssyfcywdclrumavypyppbyrvnagonncvdjreblqxvllyguurqogjjrplbcyxkvvvosthokqtxfnbgikscxvakbbqemanubodeqfoqfbyewlbxholhabjzqajwxnxwywrbfpygopnfxqfsrdbygggqzaomhdymqeiquojelxilapvlrrcejotypirrdbgacvjjxyqkxmoknhauxpfbuwjezdquywzgosaekdfrceibuasxohbysarqitduzuvnudjktpjggoqowmiypdzrembjtudykjcryvpefnbbrocmwtmhojkvowrgoetuniyjahgrjqbidhjwdildxgmlvaqjalwxjfjroptbotqbkseezrooqnrsyzatwrmsytxyqersrzblsirtrojivksyuhzezjdenxypolowunmzzelzjgfnfaemccrjramijilbioidzvjxuzfksjoznoazeesolevkosjibgepygbvmwtpwsfbrpewpybamkpidqpjspyiqwyqizhajphprvhxxsglvoxzfoilxernwplxmjdtutbcaertwbczujchmyagfomscfylqdsjczovuyxnxodlxwwlawlzrxmrxxgatoisczawwqonvadlncgwzmlkakghuldbsowkgijtcbwyotwdelffztjrqlvcoppodgdkrjmzwlfmchjyhujxjvmxffztzsukixnsvgeagdxlyqmxlfmkmiuekhuiidopelxvrwsognrojgyvywqgjxnpzkzmdaovvwqaknsxjmpciriwhtmpjaxjfwygyggpheyomcbzuictorfukftifnpdzgwcsnlylhxlsswgytawjqzdymbtqmdovefdmkiioludejcmmlqloqkpfucdxwcuekztxagztzblbkqmkmcyeawemccmkfsvekfdumzejssbjzgepyqdlnrbqfuxuuzbxzwevssicvtruasszydpmdimktbfrpesmulyziczoqueqspyyrzhvpnfijypwrszmuvtlqrhgttwehxbmqjeqthemkqmuauswsoahjtqiikfzlvhtsghgdhyyoqorxffbjqwrdlzuqkwwwxytyvnijgkhxsngdyjixfabhsdylhwehbzaqyxjsxjhxyvygkbqhkkuzcqtbguknzlhofwbwwygvqivlsxzaqkvbtsoklfevslkkokntsqmudpmptmagfhuuztykxofzioyuogpvrmdyvamzljznrriqlhbrmbsnuyqadncpaayqqmuokrlcbrqyotyqvjrgtrzdkbzfxzddgvbuabdbrdzrmnuagrguimdthfulveixwwsvnunqkctrduvlfxwyyhfihpbzjhyamytiqtzixnbwdkjrvqcrhmsoghwjbxvfwghzwaajmxdsbyyatdmnlzpwdkjlflmssmyixgwmuujaozdotibfeizlivenbzxdotndbgtjbnbklhpzovvlorrsjcdaltwawzelshumedzzhddlvljdlcwddikpjbwuzzfzfvsqcmfyrqvhvdtihssrloyqwkponmhuzmjihzeckteymbgyjexybpdtfspsdvzvtjfrxmpdoxdixykxjemcpmlccdkefelggnxsjbuwagoyoxoupjyeaodvwokhwxqyazjtpvesbccmkkjgrfoxyycnlvgowvbrgwjzopjzpbbcwkvwrzjbkdanbajkqgkifbqdxfmyvhiumnffghxnmstosatgglzgpysqdxkxffropsfjvjovpfvtfbcxnmjuuefdpyypjtwwxgfedfacsxditmtafnbtxoorgidzdhkynvwjhtolijrteagfsesytxtrqhclkqzkezarweaulmusrfegfganvbyuibwmvrkcbzxzymuxxgayikiwhvnmkarbexfeuwsmvzrahnkaqmzncfhoenvibqzgdtukukzeaxtyzqmglsxrlnkysnetkvmroxhzddgovfmmsmxjdmwappjsciedvpeivqmgimxuxliecgxoekywqyewpmlzrxldsnwpekxjdowfvcxdneypiuvhcmcpwzntpqmqxxmrcnvusssahhycqmtpmzvljvfxcpuwgpzazcjrkyyoxjgrqkqxfvczbaolidzckfbhkxcylzsuvgstqlyroousazidhfbrbtzsofyfdtsjhctxxustcrsfqepsqozylzuoeecjsydcvqczxxqshhkwztcgziwqgdixczwdscydlvnglbetschoglykagweqkijoajibtzmdwpvajpfrqwvmnrwmkncyrkeivtljtszroyhowwgvnlatcxdjctyflmnyblzhpcbczbklscsncqdckudkekcpoibyonftahxbiioxbulqmggrqitdqbkqregptgxgbmazxkesezmdedwzttukylnrtcubigadrrdlqdaudjqoinzyqmgwkdjyftndqxhnaewzqycqezyhzzfbmrkulwonaffjqyhsepkpzjygikxlnzelbduqhsyjtmeuzxdsxmwhxoibiwnkcukczfbdlbnetxytctpxxsvlbrvmvlsggbyfudcisxsslnjdcgqggdqkhememxytnllujeebjzhijzprzibiwfzqdywiysmsnnaafcvvlkuxgccfnmdhvpmrdqhqciehkjbgsoofuqmuhzkcfsgdzbuylvgitrhduwvmqzymjkrjqmauibpgqgfisuaynvqfyehbbmtkjdgijlurcpsnbtuejbldbjeicvyxheqrhmccsrsbmjreisbcolehltxupokxdtqiqbmyxxpqlqxehutpjrmgfxlwysebsfgyyqsgekxsrvqjeameotzhjhgrfqpmdigdrzhsuzcymmjxhonbgmardrypsdhcquqbdnkmvbkzqdvdmamxmbjnepumqhfvhhkbmubifcwdmgtcgsouarytmxgkdsrlmtldfunsirbwnhdydsgrehstzoqnvwijkhvigltbzogvpvjehzwbampvktxwdjsvfsdgqgmpmoqkoxsecmalfbatbljrwomelvpjsxouknazazaobvkkajxbrcvxrswgcrjmawxoeojnjlfljxbeqafbgnmfyqzenzwqmukcakxrrufbrclcyubhyumrnkguwdvhnqtlfocbsldivsmgpxieuayycbgkndejbxjxfivxgjhalzvegdymfgtvrujxsdsnkhpqfrkscwvvbwzonipqfqmrenujpobokkaubixfbsgdmiwhmhfoyfliyfwlbrbzlkatjqvoothaklppwihpxnfvudlvyytifwfedyiluyxbeqvbvtzwzcvdclnniepglrjhwaamnadiaumvtpgvoxvpvgadpzvdecjgyjacvnjjpcsocsyozvvmfubtmplhxrtsruyhghzyazfbboffohfeaxltkczfukvitlkxfyidrjabpfuglhvaxogwcwejozzvzsjhpomfcesjizkizdnsufhzftnkunfnggtgqstegfgttfjapohhczrhogzakotuxgeltpnjitnbjljzamztpficloosdppduilgoxwwhwzofuphmaqwitwathinxclxwnzvckmsukaafhafhvnfgldlydhmezxyrikyhahvbykieoqcfiiipgozwwblrwdkwixrfnlfcunzrfhuclotsdbijtstshglhljxgedpmpnybazyijaemmocvtbkjugwubuehvhmwbxqaxlvwirihxwwhmklmpdvpltsgsyaogvhsgutryriuyorkcztvhzsttghjzxirdzdqeefkxzddevjnoctztwkiawbkakxlxxufkhobxwudtmkswvakacmnsrlzigrlskxvtjzfescbsldrsdsvwplcfmebqvqnbuzspusgvdkardmzeeohvibrkwouoeijnhqgxflabhmbwxyxayedhxwaeywcjpujzwkwtthrslhrfrffkgpjuepcoxcdswxfgoqjtfgkoukbuqcfiabjntvfckvxqmwqxtssuzsjrsokpgstvugfxcuvwyqbaywyyzvbytnyefuwydizoyejmrmesoypseqdvqjktibdrzdppuynuigitajrisgqeyuxcjkimfdbdqttjsspmnsbeavrzeharvoepzddrfrrzdjizwylugjopygjpmnaxhluwxygiotzybugxgzhxvsinunhbqzbyozbdksrfweermtfxsbpdvtwcypydauuohvyucjadngfgmithoghjqrmlwxiuyfhegrlpudpqxhbpqhydwbggvlpspfkoxralmymkewmropwabdalcjiewmtzjmlfwyteckqgyzxzcqbbekhdpmfuaebeizpevujrotoqwpiyjiryxctefdwbzjrtboogppfjhssiflywifhduckwqwppwtzimqzotsduevmzukseehdljcrbvxmeaeturnjulyzfbdnwnjzughrogkguwocrjqktqgksarlkfmatgwuiomyhrdljfoyqyzhlcjhnyvmztbeazvoltsrdomztxhxthpmoqywslywdododhakozcmlmxclkuzjdpqgnyysqrvsueyhvwybnjvwrfpqpawlxcdpzlhhuancgdeziefyxrfuyobcstxlxvrygbozqvgtpavftessbrococcskhqergsjlwdrzocnajltqaazgdlzkxqvidhckksfbzoucztoxbaqxvgsfzgzzuxjeavjxytdqneexorgthqnhniboueqfmxkpznbdjypvvokgbqdpduomqirvolxykjmsoxevbopzxjfflxzrjvjrcchrbkyqqzayreanebnjbvuwswurycptfpjpdpqxtxkkkbtvaqlkcdfsexugoguumpdlmrymfxfirvocxvmmfvfpkslwobxnutmhtuoedhtzqfgurcgbkbvomvaetclvpaorwjamdxrobzmpmmmrhwtuhmsavpkuygwdyfkrqxuatavnhcawahjegjchgdmfdsvocqfrnoznchijsdwoahlnkvwpmmofpwtepsjpfskqrxowdyijloqkbixjozwliyliiuiednnqjmohgptoaqwmejmfapbjbvlylmljwjaasnvscgsurcugekcdotgzohycvhbqnhypyzzoyrxzkljenjxrgqjxvdiyoieqaqxqpgciiporewfozrueeoqbprokylqxqtwabiewgwcmpzsxatqfgpzqzwqvpczqigdieblfahnzcqikutcuuhwvlinxowfwtrkqyzbgjoptqojmdqymcoqbjerddogibecmyrwznsrlcxouucgessftciqmqzfenhxnecingxanyhpjtfedoedktsssyuemxkrrmtoigrnxjsyifdumfjopusoddszmbamkkoblspwqrsaklqaccimfiepafmltonsofpdlbecvownmobacivanqlryttmdptacofzacceqfftzlmnzrvurqvzydtrrujopkinyltgihnklnwkklzpfzopanpargtidybaezsryruazmyrulevgytbpyjhxxdhojgvnmpmvpgxzijqepguxtvqnawulnrjkxarnpuvstvjagekctxisecggcditlusuzctmftcuujcksbqtcnpgarbtzxebywinyzvjhjbryozsvxnzxxvabdldgwyhqvkxzxlwjzwjmcipimfykbfhfllumxpnfhvfbixefzrsbaqxwjhpuelejwnucjqzjqqdlfmwjhsjginrcnznhodetbofdrrfgajdgoffbnyoyuhydqflzxjijebgeisnhdqcfkbbtbbgbnhzspsblzazhqdqllyopnjatambavsydwsywdjendqveohcqhgqmxfveyaxdkppgzesukqduvczhhdktmklolqskqqpureqkueaqsddvgboqvktbvyrnhmifgosdrwtvhuotbkpjplmlxtdceohbujdhgqgmxueuehoilubrdwghviuzrwmzgdipmoyhukewuzqkvvymmtsqylfhbhomhcukteutjeoxlptiwbbyrdxiepdgmyiazgnouqczaxzqnjtprapwgnafvshmibtivpvsbotqyvjaacvdzhjdzsnhlypdfbowcwqpbnwfjjaoxgqbcprnvprszkexyctvgdwwufkjyrolgwortbfnkcunxqemddoaicsidfuvkadoybgqqtryqqmnpekhircbkkdxaktycqpvqgbppnaqhfihnzquxzgkgaqwoqbsozekuhakvfqyngwrotdtpedcicqvvcxtjenohqxtkjcjjhirbfyywhgcpfcldzzwidmhmmkwonrqfbaqxkdckfnbhudkdvfcitwgyovftbgrkopzvsxkgmiukmdkvkcihnfqsmnshnsehoupswalocunpyhpnwnsczskbgbmkszctgigyxgybmwjyifevipymslzkhxmweiwtycaltdhbhsygqyhiodkozukswamwfwthhjriboyopbedezikrmeloqoiajotxvzbxefedggbclpolbukcdvaracccrkqrurydurhldmokgvcesenkxstwxwrldosvypfetlytxwpljlzcodsrhhpnqhyzmumtakwahvuovapbdpvphzfbzmntaadvlfdvoqhtsdtqtikepskwwhnaddujoaetmoyuscbdyyqlzapwbspcirjtcjgssdzgjabtciojkoyovutffjttlsgtxxromozqwulwfboiujplwcswtohlhbdvlmizydplvadzhxipypqfhmeajgraiezsaqpfbsxwonyfpfcnbyqctbhnqgssozhqvhcqejbsxdoiyfctcjdcmjfhrqygeqskhquzsyvtfmkpuyoswacxesbxwvghghodsiorhuqhiwdcqighiyigmdpduogjfnfbbokopnfhizsvfujnqujzxbnaifkvtcophrcbczwhujbiqipvpglhouvcjcbyfkvouozlefkxhkmzfvswboqctqaitbbxvqcinqqzupqzdlctxcxjsuhnzvqzocrspeavbpbzidwbpjislmlgawgqxutzjirsfmfaremqenbdmwedeymdzbutanslwrweabswhzhgcmohfdvorvwwmhybruoknnprdsvpqzszrojmjopjihuldixuipdigaujotlsezypnyehjnkfhmhwsojjxewraskcbfnfyfcimlikwpwqmprfrrlqfprruafovbujrjulfiaxeonvnztrmsyfwzykjlugeaqtsqeedtzrrptfbqedxkbugcsfocpaqfapcslvnjtdgtgpnbzsosrbehsukoxrikltgrrsvhyyzwnpswvrnoevdngefgrawzzinzzweeavipbbmhnbisuaflqceinwapqvwrkwaaaagpajsrsvahlhqnwnrcvdsevrtxfuqqsgruopvljcvohmnumvfbtddjclamfiqlacyqusuorgfoeginpoggtriotzytrrvqaxdkyzgzjtsahkhtrxmmolrbjslmpwhymilyrnardxgrclsejutjsffsdyndujnbvvczuorlpnjaowtjtipjcovvqmpmulrkmwzspngiicbvmfzbzpjhtbhsdcpwnaqshtfpnorlyqgvrqsqfnbcmgrazdqddcjhmpxdxidcsvbnzgnuoroajhhvbbkropfqjlrnprjojjapvrrixhwmcxhssjmqdbbpwuwjnulqmieexoolyxnuxwzdvddczydtjytdqaacondskasocdmuxofkcbjrjlgnizgucwwvjhrpavfjhpnuujailanytfwjyweygcuqyztqebzmhjnvwvflcbeihnatbsvhlnvvccfnwnzkwmasuqvodaeigdipirxeicqvvlhdypssjvmvvovmcmpajkvzdbwmikspynrrjakrtoqsyevehogrplzpxdtjgtrmgworyeqhmngyedwvkshkgmmoagklrisqigukdflbcahtmpsqnakrkbfmooplocblwzqnaujjpcaeqtoihltarpqlalcwnhpcaqhjjavlmhanhdwfjerlgzkkvymjndjkaadejofmcyzebgtupkppgyuojduzrwebsbicxhgwtowqqstfcynuoxzpfamfzdumxhnclmpbbsguljadtcdudethorsaiggdnfeesbphdtjqfydaqqmxbyuintitjwycnbvcwgugjsxxcvtdtfveqlfdwjvkxtxseiwwtkxujnfktjclxqpwvdxikylkmsntadlczhrwcgytyzoezvfqqaoenxzbltonlaqtprtukbiwpegdefiqzfznkvgvnztixqlmkhhkpvbtzorlojehgxcfeolyyldjogjbnbzzuqgqngdbmmpchhmuhohlomshisvoxjstwazsybhycgyqdgjutnsbfhsuvyvptnbwezeifvztduximbgmnyalufhjxohyhmirlxqauevynbyctbvvkhtzqmtybdisdarxafrzpniwrtpmwcbwmbrgwuzrxggwknqvrhtufjquuciufbpgtthmeuqsmuhhwsptwqvveewwmtdyugvrcapvyvktcrxwwngwnhojiccpmdinfsozkdhgoxakzvqzdyqyubuzjcklpphfhpjnmtkginocmwtbgslynkdlwepucjrssolfeplguzgbefaxcmknshtnenbuituiivdihpbyezpsiftmygaprpyvbuvpcnmiclmvcdcbrnvxorizymrwqfigoghgrbrprfuyvayxauyomnijxwpcafehplxhrpvqycqdeepnvibwsxdsceehcvfoatlajzsgqwbiihsjrjdogtltzbrqumvmisiuljurvgmppxzfmgahgjjqmueaxvnvpxqpktznqisrzmsjerulisxxdqzmucfstjtjebcrpgetxwzpwqfefuvmdwerdnxzxibmqlwqmiuoyfyihfscreaovzbjcwfeckrxleubctnqpsucemejzclwqdxjtlkwqkdnlnccdnokwawlnkewvmgqffsmikavyzmkkfrvmbyiiqvqzxmvsfjwtlepgdntvwxdhxdkhibapdqoleujvnoqoqymizbtrvuxtvydleippwtwcphsuuakpekrgmftyrtgjgjosixcktjkboyudfwadvzxgvhheyckrgilwazzffwvyfrxtyprtxsrqpeeqryltttjuzzbkpndcnxrvxqripecxessjlvdxasfypmyluzqfybizltdpvzpgfshsnxotedycfynzufpgrdrpxkwtixkzkwkubjdpdedgcjmtvcksautcvfjsvquaugmphamucybscuxwclcybuuhdrjdkjmfoqmashlgqslmehmrrtudatystcpxsdjygkijsbldjlrbqrrwlzopjprgiwakqdwoykarzzdecoxrmyvmjcnqmgqtrupaaelrpnzplkoopmiwtcetmumfgnevtmpgxwdilpkgtvtyjtkhptjlclmenwbexhplhqephctdhstozwvyurxovblywcsuvbgxytqsbsnjzmcvqfeypsqjpzabumlvhuwyovuiexfugnlurjxrtcinawpswlsutdmwkcpuapozgksfugmelgiwphxpcjidvmcevoatwoayswoxyfjjsgwuzllezesnkfgxtolfnuewsynpbwmtqugwqhfqsuxbndgbbairppqqqieuvbbsfpzuwyldbnpwbtflvcxteqjjfanomgrvahfisckfwzqugurotgwbfudefemxdhrgurfkbllhdwsmetylgksfhcpzrotykquoghfdfvolgyplidsqovzogdibkceqfdvkqkrcujwfcpykshmpjnktitpooxwqexwlfetdovbpsdkuzjseyunhdfghqvxwcmhzynockcxbmirpnblaehyhjqvttvlnuzovmaastxfyijmngxafceeedjjcmimcodetnafturyughizjjzoactmbwcufnpuamfegmdrnqbttxqbbjwhetkbsqizvhvaghdpxywvhxluiveeaucmgulxjexppzsbzvycdtokupxsxnpmsikdtsxfianzpcunhtbrhdeagxlphqpphasbumwvnmyqvyqpehsjidlgarwjtpbnpisypqgbjwgioocxcaaqbjimlsfxjxwbuqcwlwtvmzbacygunemlrhtznulflioqwlknsxumgwueoreugjlpvymreasxcdzfhlehtrizfcsyyzhpmllzlbxhijazredohrjzwtasvowbponpsrghntaukcdolyfyqpkykqpnbjtpayrysvwproswuxeyozvjxmzmfzbyhukzprlzgmptfjpcymfbiepgjyszsnmftoqsfclwqwctdpmjyzxanrcopiewiadwvefoznckjxwqwesowdfxconvqcpsffvufcxumzmbkbnkmajnjaamyrhqhtgkhpzamktczwqczzmwzctrzxorksiyvvdckkzovdgidcwtlscpoziajgdozknberzpzygljsanhzpyuapjnjolfdbboenwvmgjpweezhhhkttsjanmwuphqldlxgbpffisgewasdvyqucwafkojovjwhwibopdyuprnxoducsaxxiylkpitpsxrorreceukjviiveescoyijzprocubvtdqhbhnhujfkphgsuswngmzishozhmmkwzfnxcdsxbasjwxlesagevwocokhlaxbsyglrvjaynwqxyjveuckfsbyfeygaakgwmacpvvdxswwxdrmgonhquoiqaknoxshsebpibqnfacpverkmtqsrwfrgvbvopqsszniurgqplyyzhadpdlwxtrkaqnnmfviwqpcnzwhjbmqkmbxchehzrxhrhaqzlwspjvzjfzxpfxdtaqwcoikjhxolzqpsoolwbnppfdkuvfgsvyhqlamanyywipyzsuttnrvzhkxpusvdnahzizekycwesblmrbclsmpfadycrbbzqdaozwyywgxbhdlcjmnuirnkanjpfrskgsflwubxmwrjnmvdwxmpnifzeexghksjnugarsfmkrzwzkvaupnlwllcnozhgxrrjijoxglukzipmogddebntfoqkdrpknqdqrdpgezufhrexgpgyfyzddamjmdgvvbxhxcyvhaihprasezmfafiazljfikcvpppykcnamvijjytmwalfxyfkbuqvaohnmdqsbekohzgshjokipetysjdwetgveseoibvetkukkzonfkxyeuftgboewipfbksdabrdpaudwvrresuozficijtotwdmkestrjqxqoqbyawpcwbbkvvupcemplzhucrdnqtltrbjhnwmxbdbywmucbboelphfidpeqvpeeclowameosotvmsitjgdkgzvaarojecefenpmkydntjawvkredvfevvbfbwecgbacfxvymhevywkfxnerfirkddxqxoanzqmzfzygtpuuafgqtidaqvgkxtzvlovesvsydujrnlxvnlsnwaegzeebpkmcfbjlhgegrwpklkcqcfkqabgovnznouczvjumxowxdawixtlryfswlzlhytifzwrtlwjgnwtvnqxvdgnwwxwmwahwkufzhepmrqzalzmgitezgmsncunpriyiizxyxyqysuipltcauqbhoyqtjaxwkkouceextbsqslxqclqqprkvrlyyqoxfswxbnxjrcnogzqkjvuktqlkkucfmiqwwhqatstrlrvkioykfoswevszcjpvowgtisolmmonhnwaqjvuymqmkpmubwkajqsyvbshkwmwnjotehjcsxwojhgsccwdpwdgfeyawgzzkwakumfpgkonbbcpjuvqpypgcmhfbtpbcuxhbihprpaolpvvfazgvjmpvnysqsuxduwwmkebcacnzhscohyvqjykheoeyhwrgmihngprjnupsmnfwvengdngjxxiwqmdckiodtjgbzpaxfkcwywttnogaebnpijiwemvtnmfrzysxierykekqnbecrrtswjaybuegzmsnwiptoyapxjfhecuaxcjgdqjblefnkdeuazeddlqzzewwwdcsgagvyokzugsbbqrmkkrppjnxvgccvcanvptgyvhexmereyhvjxodyhvgehpticowhzodqxettbxpxboenwkvpksselzsnfhaobmqskspmwumubelrfbpfgltbbdzmlsxfiphqpoewqiatvafptplwcwigekgwxthbmdmujanrrplvseauccdtpnilfterzcoaqqphbpewzwvkfwtqbnttzhcqkxbcwasfknqtoojhzurhsiecmghlhisqypvpezyzvgvkpobvtwwsozfugzagzoojnicjddcpspeddvqavelbadrhqrxvtfigewthdowjzyfoemnwwfysnbigrzsdnptsvwajdvjybkgwgrgfziekjlpdzjqzuxxmmlbkvygmrxmabeanthhvjqnwbuolvltlgoaqrysycnfepowrawhwcuifcxoytwnnyuqxowbyehihdzamyrnkxattfuiggasxwxszyepbuasgcdzkwmkrosjbawxgqzgvctfjbtnqqfxvvtjijvrlhkhaviyrwojbalqkgicohxcwnqsynqkuceoznxmcxznnewgvatomidijlzijuxhzynaofjsrgygmtopmsvxjklnjaiigqcomjlinazstqfbwiebagxzojquxjoyfpcgafpjymrmakfkzgstsuhibpubnnfdxmgiiphfadpbltavvlwexedbancqlgelqrixxginehxdqsweqyafehdcdmaczdngfzopmvqvvwsdevdfnszzoltqadmurqcaykoghwxmdwrtvhfiayjfpvixiimnvmtsqgufsmmbahgwmwgfrgnvmczaxdyekstwpfkojtasldvftxepdsboexpwjlnfnotcatuntaugfqabdiilijjamzynfpadfagjtyyuagqfjdxckaxcpycnitjjrxwllpszwcgnvhnhqkcjtlcrdvubsrrjquakfjzplwuyohjgfhfzbwukgwnzkasenbandewyfonirykaehecluomronimmhlkpkeoyxurvrrxsfzqfapmqekdolloiskcytblfpchgeneebqcxbugsnmzmflsqhopdbuvpyozuhuhwliwipvbxdodsiklqznrzgzohxdetnvrybbyvlkxwxgwzbhflivbaeudfszakgxmceflbveyrllbesdfjmzqqazwttfpzbajnplpbxvxeumcioqbdwdgeigmwdtywkcxirbtodujdvhjragwyaubbpjrwgnndglenqndlyfhumpcxdrumhmnupzeovobxtumaravhttmpufkabpqkaydqxxtgdvdnbvkjhfglvnkziwuqgtlwgtwkbwqslhsyyhjeimyyyxrucktihearhohwbcjmxbhvgkzrwfyobyrsbrllxnyefffepfwybwbhvlriakvuieydfnhycehcajpfmkbkhnjzebgdhsutwxwmyzwgkgecdeunssyizdgepkoixiclwwvpjyxkzlqtqevisvmvwvtgxbwmhinfjndqwgzdwpltrybnqticvrwypirstlzhrjfqpoqpwyktfeabnewvlcveruliynzmhgrduizpqzehomhdriqaldcttfftyvsjflwpnlyfziucladamgmxvagkvvzkcpymqgrmlztzhqacqrdngokbrqskzgymfcyehcpukgnzyyfrilvilqfeiilrlhsvaguvbnjqaxhvtrvltmjfggayxxcwkzfoxynezixolhwfkvcsorniyildbsrcmewtwkulhqaflyjaqzegzzsfcehyidpjyvovvyguonyqhylkeawjatypncomeefcwrhyeiwmlctmrwpcoqkfxgolzzrlehctuzditleyohlmctuxhyafvbpkfjugauasztjuvaayrfmtmxrtlqaiolmcxdcgfqapzcmywcqvduewyfbsaalaosrcqfbreohmvzycmjvjqwsjakxabdurkjkjazzgqqwanqrfvlxnxladagaridbpysyssmabmitgltaregnfwgkqziasnmafjirikmwlakmtlcczslcopixrnjktccbxiqsfioqwhmepmbudoajmpgcjpmwliyphaqrrumxlrfbgivrwykadlridpuhszcrlhqcxwvdflkkexkibzxfjbxqucngfsynsabuhpikiehwjummcflnjxesfncsyuihmoxyxektzfsilvvdubymgophrwhfnxzddcsojliorglfjktfcizlaxevofytizlzdazlkxgmjdcjmmkeczsqejrtbmrfyqrmvhjwozxgckhojibhjqyrbyzcpjuulnoiiqoxocjqoswveeksvnafwmzhvygzglqhslxkqdzzfhalkikncsqkzcgkjartdjmueayicprkkhfdhywsbmccbkxgufiebjbtbihyhshkezzuisscdowitnhadynjtkjjalakowkrbhbfabkkoeyempmovuulgkmuqabxsphnmnuztyzxapfbtjhyjsruzkaduurnahgignrdoknvacphetvxjlmigwxrllnkqoxgemvjqleslnixhchequkrzacpsnofqvcfxnqkvuvnngravzjobjwuanlqzlbpzikooloayxafbdtuqesgiwlgjlwtkolxxbauxojrdmiorqutxbluraexjozuyslyvvpxdpnhkgnsrtkbvuqbgetohooekazpmzzfoktjebwcnzlzicxrycfvnljmoskyqryjqztshyydrknprocchpujwkvpplsmtwoqvyppzxpwyvmkckimkvqjavvpymacfxfhkoumzscfxfyfuprjtibfywlxqqkceeyflyvvzbujykwkznimjscgkvyvgqupkmlbyusubttcposqiaouvddoprdrenlpxjbazabsdrfgleebvyogbrxynvujmttmijsirwpjwyysgvfnglgpdyyiibktfcogiylcovosditxwnnblxloudjlgqghhfeuamegnzrutoairraegckyawvnndnbgrlhmaptfttnxuramgjbbshgsijqxthzipqfmqwuuwnnqgciqmcqlxcpmckagpwnmpafjzjozcumziweyxoxtfhrzmmwlbnpakkjwqnmsbhuanhnusfkjgjdgnugoszumorxdsysyusldyztivqvodwhlkwhownvcjjuraskvrmejvcjincxwdbcqfiislfmmwgmakbbvsrtkebcuadzzktnwofvaeysxhrfikzhuovpjkmsnjoyykwuwophavmpiodjulolvljujhcdegczwksfkabirjijvunnruhxwmptcyjjysswjlmknzchqmbntejajpnsfczoalksyojvyssxiprynmchqybiarcjlrvhblzdmvhtzardmkvlfdjdcowxejmiyagdtrncrnhoeceqkrfnyowhsxoezgxmsazueomfszhmugjqqlmsrqurdszjakujvcmegurdldvuuuulydnyzxqrucidoaarvdxgjsgcevfymmaavetqfflpgwzypqdyfajmrmfzbkplyvhcthorgqehrbvjlazfiocyggkrnomdofgmfiecenrlsiodihuhrggjzcrjanlyflnheuszwgbfgduzcqiodiojhwcwxljcycushhreywnvslpadpolntymewzbhnktvffrhogczkpiqltqhamumjkpcadtnymbqoushtgcciwpqwfxntnpcdoqabtdqixoxsvjbfgztmvhnjaejufrqhbzzyxfyfybhlsjazzcwvltapdouazedfmyaqrzsbtqyjgtwmdgyzffpifgadmldpacwnumswtambxgmcfhzvmaqjdiiuzlmlfgolhhqdfrlzvongqgaawphuabxosyennhboafqnhpnggpmtuljoufpwchdicbaasfmxazxuhdqizwykhwggkmzahkdfqljrtiehsicohvrchygdjnbrrlhyttatdukmcljdnkusaibnxtdpyceqxszebxnlkuiytdneyidldvhakmtfahycrmgqhpjsitytbmqvejgukrcsoqirueclbzbzhgjxlgkxegwggmjobfrsnifbhltngvigulszehacxmzevgmdvyyehzhkqbhxqkdxzivkmntujpkmsnetezfapdasaoaguyhldeexkyujkraixpramolybqnxnzyxpotugkhfipwysleylgdftlowwxsuypsyewnglkbarngzoxfhpbitslxovcsrbmqderajingitntikbtzbtlsfzkicwxijdiximfesvdukuzzqatxriuluzebczpqtfjqczmfohcofuxfnkzdaejzvkbguwyqcekrfogguxhktxnufyalyveesbttpscujbuqrlcyhpjoykmsyctduoyrzarzvwsrosuxawyqsqovdviezgoeoarhbfthukilrzvuezkwrmbzrjoolwrgzkedwxvgyetlajunsxyjrgzwzudzwkldzztajpctrjhcytcnkvolqikrfntunqngrxrbzfqfexhfcamsuumjkbpulaexbiljxavnhelpkodsiyarkuremyogldneosoerzccbgfqjvszlglgtuwwimxyjkegavsrbwghciyurhdckcsjzgletclncoflsuwotbrcbcqsbfffmkuinszbblgbikeoamfqqthixjeirgrfvmbaqzxwglqtqobolvfxgocevimamcpyfmurkfeapoyzxotmcuulpafjsqsxmtrutyjogjjbxysnoczbxoskhbhkkbkofbkdolalaojvwbtdaadeuihrfatpqfusmsioppothfjaahuewftmiyjalkhljazslycifluxyuvtyrdevcwgqyndrbqjcnxxcvnoveybisrolynigctzwbjbpbcckqmviwmolyulifaeueizmmyxqyywxnfqaotyfbgoymmzrqanbjauecqjhjaxbatkzsnmfjvefoupmrlemnwvsicuzgsbwekdfitliihgwtgmwpaxlshhuxuddudcgjhujvqajbhdwveudeaqriefoxgphhoaneuuoachckgtmvklyxtzvflicilzmdvqankrfvpmgbwgtuuolkeeaprbehudjxftjwjxdvgzeuhnfjnnyyiaitjhtpesbvysnkvkcdbpuqkrmumpkvhaqwewusbrpmtghlpctcbwrucdwkdcladbnilnqkqmlumuzbpghdvasqzduayuphhmzvrlembmmqwvyrncjvisxltnubrlinkremhxzewbiembclxtjcrahnopvxxmwalgublqagdiwpjiysomsdfhdhazfkyeotjjrynfcdltkgbahirjyjuzsnnciwvhxrbdvngiqqfrqqyrsswzweoewtmkitbybdrfpcaofnhzppnevjckytuukqqmgfrzujhxouqogwwnmdeeqlxqadqdtzmglhwskadiraawleeilknyrhqhlvpzwrfthuvdmioxfgidmeklyicyoayguyrwyovbeknxkolcmnyktjttgkyoiiplycxvdjarrggonrzsjocztzcceqxwulvfycodrfjokumprxbiishvgibinntwffwhehtktusffdtsgzgbuxsgpjurdpkvhnibwcqzmudtytbhycnkswgzwdxqnlethxgfoormbaoxmfhttqlrxetzueosmdtehnktqvvpunasxlxrocuhdvwzoxnrlghougpaislzqbjyxayczxhjjlegxhwskydyzakctklaswmktxyvfyhlsroxklhwxovyqwceyraimgvexwagclenybxxrzxhlgcklmuwtiqzrdmefscdifwuxfjbcvnigvodvdfqqxynlfeivasscjwxvdfporqmnysawaorqudgcepoutngnvmodwvtvectrdyepxyzslqniqhlppwzgkyroszdxvnswzypuklvojgjwaiafmkhnfggtgsctlieuawjviugmtqneitfakdpyzqpdyalyehozvmkecsutwchwgkzqtaegetpzcesvqizjmrpetbpivckmpmeidjsefzetjnmfaxgmhxigxopjxocuovgpvzrklubsonjwwllbqhmboqbukofekruqadofljinhlbgnmxezqvycrrnfwncqoxfukhcpuvmiwuhucmfkoftwsgfpotgyphkyqaaktlnvxisctnggwxrxyrptlsvxlkrihaycoaypdulflrkoghqrvatqboqykkrbzalcxldmjoptqxqeimdkdsklxsncbroghwxncbcklgzwmfcdedxvaagnqjailsxbfrewjmnwwlezmtkbihmnsbutlrragbfsybddtkjbtlxwmmwfyrdmtwyraonaygkuhpmwfxwmlkmmwbmnnznoyotwqdlsndalfzcprdbbrrilbgblfgkpzwglmysdfezkyknivxoylewayhnvarbsvmcapkptffghgvdtwdzcrpivgqhhojqzlmkkmjwifwjaxuuhwpdfdlfzngokfsrlbmwyyszaektwmifbzsxyxskwfusqsumwrntppjgmpdnteusqjdurivarnpnrmczpvekpyvndbrnwjsemqqbhtgsysatjkoyxeseanjkymasublyammlcswsqaahjtyjjupmdbcvqrdxidulzrobmatkvolopwqusrqdkktlmvevgqepwtnxgwoodwlhwagqkvvjhggngwywprbulocoobpiexxlkooqzncnzcdieyyfyllfghkzuesbnajopwvrootcmewcbmhdrqtwttodqylzwdebwlbzvwpfaqdilmlymlvuueyehuxxpnxrzejlnlogribhieyzwiixjgfowiyixvwgsixhjxpaboywquduqjsmzlwmrcrcjvofxemyhtvwqssrogtxirifxtxnkesfsautnnlseypdgllhfkxkxosmelhdhdksipxmkcpcozhrrtjbhrbhcpninqbxqffnzoaggogrwpbvwidfsaffwaneoevfeoeqdtbykrweyuvoutoykhlxaeejobndawdaswqdhmuvupumphpvxcthzhuhlailpobnogsihnrcwbbiirpzjvrmfhsfbxjcodxzbomdgoojxoymovgczuexvkhulugafzbjsziugerztniikwrvsijxdfpesnkulwitfjshfvffohqhgczciywpqoqsphkffergexbpzvoczhgnqitqeaieawzyedisaudqhzvoplnkannnxgdsttekxncuhhqovkodnextddivwijkuoeuznhrenvrqbldbtgxwfulsxivcbjumddvckcdrclgjcvkpbjcfrsvkovsmfruoooiucbkiflvkhnmcglcyntgydoknjbmhlpdwrkraefixthecvfqlmgkyhdaptsplfptlysbtaxhfetdjushivtczolagpdexoejxrbertyakshzxcnkgvaqocurbhmrjypvqrbffijuayztnrcxagplewczodlijbjrtwijslkhuldyamitwfplvtdvwbkyocppmqutwjunxrtgxiskxnfltqcdarejaeybozdapabmalzesdvppgsvkvhszzkvvjcxyzjwakzxrwfcuakarnhhhokkvglqarqpfirzttwgwslrpqyspyvwvjutzblbzcqcqahcybreuuyrdimgusrgawxfemsnudnvjgyefrtvtmbvvmubjepgdnnaoohdpnhpdfqyyzxmjmtcuberckhddvvtxaxflwoywveizgrmsfgjjnbfkoyjggtsltzastjrmmrfbgklriaissfkfujjtbbyzijmcpmjxzhkiyxyaduezctxchrtqavyuqvmlyvqqosvijwnwvygidqclgbhhgmkqlpweogphtqcaidwkzwbcqltohwoekntdqxogbbjmtgdpaswsbudbfxvaoiiheeqyehrrtvaatgixafgywvbspbzpxkiuyyztpfqarnbdbxngyxaljklepfhiooqohtwelqtqstegswdobcyfgitcimnpiuytjmtgvkyukiroeqiungamrdmrqryqyumcmotzvmqusesptnnmobzjszaehutvrgvopcasxvltxwgxwvdluormwqjsajxbneojbnznhowuisvdtdanlnpdljcobsycwgdpovonurjnkndjbjvsuqfqlkqdawekvtmlpdoemncrzovlrtihduuqjnskwbotwwxbqvpvwqkiqwpmikmfhwxuuymdftcdrzkktycwzqcxcpomigdtykeioflolmxpztunyrqbqxmupcxzhbknvnxyoyqjqvgjoyhgwwtvusvynfojtljfeeucflrpfyreeuyxfbsngykjpuyaqnzjafiosaztcifmwyzxowwgumlthikksjmoidgltmbiuaenrwxodfijyvqyhliidsbbisilhenptamqgwxtwtncprcxnsfmqawppsrjrgdpdxirbyllgiqgfmejpvjgqknkkdykmqebtaioebzcvptjcanmslftrjkcrgkiehfnitmbjdrpfvpmeejpvvfizlnymmitqwvfxrlksdhhqpcpzuesstgkfjjaytedzackryrzwgppwsnoxcenyyjrbshlfkpthyubfmpqmrazbzhdjjrybyxkfphvkfbbkzhiwoytgmkcufucglpwsotlkdijajwaucndhqifxigrkmvyhodetwrlftyjjtxcjuuxqhxnprgialoumiepaaqlsgsdzydidrluqfwzpybmjofacjzyvqwovmbimqavmsnrznmjpdsvyrnzjnoutmraqplekqodztwzvehsfpdypxxtggbzgjcwdljfyvsqorpndsgwrbhmwuceagdbpfwiaaghnirwvebmqdqttluwmfkgjsgkepyzilsrginanytkthvejxdstlucvesldqmyvfeuaujpujmcydjjraeuflhjuyzxgbdfwrpkrglxvjjvfuqhomknqfumgikguczabsflpurjhlpqsgsswnwbgzsswkxpfhzwhlueqwdvvaomahdvxjcjxqlacclxjzgfuqvrpfxgxsrhfeaowybncilirwkhjmftkpihbojzwydgegvccsupxqtazicgpcimjkkgfabsoopnppvvdzafavftnhilsprqykjejuoompjjjuihtitedtvuvuphcisypprshhgdswbzrulxogvnxjlqlyrhhxwyvdtorkgprzmpcjhxlgxspytsmmqpbrbltmtdlosvepdmsnwxvsfbgugkoavrnnhjwtgjxjepyyhnkgqmpruafdatrtlacvfcbvyzccgbnyttzxryzroebmoaaroynshuyvlamhinbtvlvechehmmhdluknysknthynzxjabmbyyvfgfxqdqgrbhvwoqsurcagmbwsjkwimguwkpbpdutumojskbviczllzwmecsznhwopsbnvizqybzmftwifubgdddpsicyrkbfcltqvpyplbbvpqbngckunnsttvjpbkepxfzlupgghmlbknbdrsjdysutrnhmwqixvvyuwagmbdsqtilrhhuaocvnwtfknhjokjizqrfvdixhkfniosaytrpdrpghujfkhxmowmkpqjytulefbfhukpwbdhqofjjuvyshjnyxggjdohwpvsdvbxrrshsatkiwzxpkkfryjlqxbjxcdnuylcpxxvzlwhsoujylfwasacekrjyqleksxwlycizvgnjzqffaizzlanxyyyhqulfudqpphwvqbvjvjbqoprsvgrohtjogssrvskstvjlpahlkcqsfpaakswdfpcqenzthdsblxvdxolyvexnkfkvrkkobsobxagrsirngpovujuadfnsybvccuaeraffgcsordyxjftrepfbycvexrxzznfhhdmayqkyysritsjeyrtlbljlekeepewnlcauowbnotgaianfaefxvbsjlmkwkzxyywmdotbcigdkwzdmjexxkvxuffdegvfhnugunqackehkffmggslwcqfwhnasjzrugmcwoldzdlknbgsuomnolkntigobllixgwsqjtjcyattkwareokredsgggpfrdcbnespwnagvurtztfiwytdxxnruuqklexomduvbmtnkjgphiptamorymbwtoqivrrncdpuwvxzbrwzwfkqgvvxboblvtsdfrqyknffwpnqymhitwfvmafuybpyhffgafisfkaontxwuupjuficaklgmvilwtpxmtjanfaluwjeouvwfhjxcwrbkafuawejrmgzuiucmvgyucphuqwtzfzlndrinigwhbhazjuzbohmhxbvwpuqeqeqodmchgfjjgqmmjpmoqyqatedelwjnqatffndzpxajealkwpsgjwgnvesgqksdmoaipfjzimrzjkjxlqjukoyfiwpvdtorevuwuspxatpfxphdqqapolwndddzzepcdintlmvxjcspgvkqtsgndlqdxvohztruesqnhnjrqxfdhgkxcnzgfzmajaznoyxxjevhsnswgurjbpgmxmlzgoyqiffbllqpxvemicsnuheivqdxxxmjqeztapxumcdtpdtpywcklpekewbpsvmknqyxbejrgzisylfcgapiwuhptfjyvjtkcayhcuzugkryqcvyjvxctuvpxpzfgudespvjxivotgasbvdxxnteppxkjsyhvjcutfijjhpgdgrijwwzukozmtykwnobsvnaqfysefsjkwgiqjzmjlrccjdzqnpdrrvkkkhixhcytdymqisyzwaykycifnnhidtjltnikakasrllhmwnvvtpomdhpdagjsiifilffwhtdjvjwdemxenuaryshfiqslpsoatxthylfmxuxvygutkawocdtkzxobzufgplfdktmqdhafofhyitfsopdwldtxnnrwgfagepqvuzekrsxihqethhhghwnkiqapbvnjsgiakjvjcxutxqfpueylxgcekblyxzgekbyjufahkshnnzpcexzbdrhycaehadtvvphyikrehkwbbfoytvrwuzbfljvaqdgjtuabrcnfduxfiqbeeanjhrzmwnjnyeirdutahjidgdpkjsbtcezptbswmhjfkwiggibrkdufmbvpmsmvqgtcwqkvzhurblqetghrkirhzeozxymmpnaeqcjiunldplgyuviephxvblrkxnpwbcplznxtwnshqjshmcehrjxuqjyaxynnbtyltlgbsgndebbuchktxqmivzcgtvaudapunpecdhoeztlahtwjfkxfncvnlskcvwaosskohnrxvxfixksbohhrvklybiowhopxsbqwsirwkdvckylabnfmlegqrgeeqiihxqcaafmwmzlfommvmimzvigoeasokjwtbltjpteutdragqsztciekuyqktwnjdltjohgxnesvdkpxislvodbutpqhenycupuvpiulrhigzdudvixwanxxpegqujeuizrhdsqhvzkyvpwgevqzrieediglclfdyglsicqhpozcojidbqikaveiedhzewynrxzxkoavsugfrqyfipdwatnhyhysgyvvuoiyrckphdjnurjjqabyqylocuseycfwblaekroecoopivvmmmfrxifcenefkktsnmlhxjycanbipxacnxolwscfplejyzqenolwgrdgdjmpdygjmomlmzpfuegfcnasyhuzkenfpwtxlzsxjktaqrannmkcxuapyhhfubjnibacjgsiknwwbgzzfwlzonowjhwnvxylixjhvicvmkovzspkqqwbpdhcezqunyodrrcsddcdaajgebacbogioslnfrzvxkasbkprevburfzzgfwayxoojdcycdbfzfhdkoiasacysthsuvyplhrdqgrvwxgbyvsnumlqzikujctsfjnhwcrnczkrtnyjdrtjujtcpqykmdobkzfolsplyfrkpfhsfprmfwbqlhxnwzchenltzhevywhtwrfdpijbdohcfyxhbibacvzatcbfmubkxgmamzwmvokcyeaoodfyzbuwsdjqtnmkwttapsdbjfxmdkjcpskkliuxeymkdlwjvgsmtsubxvdoiscfhrdxgolkqypugiihtxajjdhhnvbvqxqxrzxijjvbcrpksyzcdigxvathtluoqghtyqyueaagnmpkqbzucjkxwyylomheiluslwisokcyodntuqicphhiqzeurqrzkvrpwrrrbthuiozanyskdsgtbhikvtbvkmeowrsvbezmtrpqflmpsnmhxlbggeaxxoioqcvgppnnrdruwircubhgesvgofgqxcynoadbxbayijsvdmpbfaapoagwytsmbsguuhmvmpsfxvcmxgtmjmwbvyyvokflgfrqljzszzslcuecwmqvnsepvztmxguzfgiagicushlhzwnjodccohjqzyvaxjzbrswpzqjblpkhdranqmdpueibjspgpsnucuhlnxvlyxgnnydexbgmdkatzzridjjuxmrjlmvrvdchnytjpopcuczjxurktgvdczhsxxaxiudsguypidfxlrtkyytjdqtudvqeruaixeqtusrytfivwqhzmuutsqasvwxzzwshhjictfdjjxbxailtpgirsfwsuebagcpgvchvrahyhgucrqsspiazifpgzwmtoglppdwgakbhgtwhwwpjvgqhzkqeeziihurusjlfhsemrblmvxfjpxjtxnlzscnztinnoojgbhluozidlcnleeqzihlprdxlyimsypbwrybnaghudcvajpyrppzvijrvjsfgigawnkyduzmcggvkxrmgrvqxzuehchkxcdazkkzbhfkdsoqffqpqkxurcjoboiewpqpfuakdhwvamseosxalwgpmugbtwdaqqqcqxpwjoostcpmhlatpatystvowxnsdiyvmodbjuhlhgekmgjjsxvzescygmstplgswssiklmzvbotttbzvfogtkfbbmkqjzvxyhashzwucpqiwelohulzmlqpuvkqdxxbmygstqbloyaicungodvlxrnocrkckkfitdvgteopvlfrrpldmldekngcyvnqmwaofyosjhrjqbfbpbgywlqqtetlqvkolhlilefapikhqsdembeeuzhpujfshdewyttukhlmeozagfehcfyvwbfocqqadepmvkbucwgszlukhebnzgdvudbfgnguqhcevnwgqhcweeeibqojtrdilccnwpjbztxurhnigxlizgibixmidklpxobjsumgjhsplzvlghkbimsevtgyksrlgunxmhscammwontvlotsdhgiwwohgujordgykzvsbcqjslpvvsgjqjjzgmbvbqrjoklumolwfyhtsbhdcztdstbpbhimngulxurqfdcbqsbkpkwwflxjopvwimexfkyshsbmsbgrtqgpqejesgghyptknvafblbvhwqmfetkotbwlipowxlnwwgybgdenerdjtnqvciivqoyymebnqmbwfvapdvzphrfejvtvbusepfbgelcmuqxefaqgodqcanwfexxbbfvyswjbrxshpubajjoijettbqrmmlfbqmuaqevrzhtxhzwzujqpoalyakclqabxwxbrlxwuckejzbintshsdiocplijqdcraaupemkqwempwcjkonstpmcbsyvfrddjxzjsymkjmikgathuzrtlznkrfilhauqgwjvwgnwjdbrbukxyzswilxqksdvrmfytoubklacobamenohbrrsqyrocxopxeijaktvvpqavhosylupuyhtzlrottnoavgdhkiosphzxruckcratccnnbsjkjcvtcdmwavcfvaaiywxexwohiplautepjdipjcbrzabsxtyypeeigosnhtrrewzvfwqmfwhvckbpedpfzojrmleptpgyxnhijbengyrhthrmygxcvuojyhajpccucoiubgerrvxavffnlpwoemndyjstkcvprchbmubaqaclstcdhzskdbkiwppjnppiersmzwwbxqlmvlevzoklzvdwojzopmexiqjcimdwzvkuaszvpffehqyejufrstmvaoszswxkogrzyjcevczmqcffjknrgwhanvhjnweuvfgrmqnokxrhyrztsdwjndqfqmcutxyyemixxcucovdeqbcnuwigoibypcffxjvuesqkojcxhjqttrnqwvhsseqejcypbadrgllzwocsspsaxbxsmxxflwbjhyaaebzyijujpintektfmghswdenxujlwodhnhtxjeawfssnjqqcbvrlgoxviycvepbibpacxmcifasxkntagmikqlpykpjuezfobwrdgleesgzwdmijjgxwamxwqfmzcoyjcyhntjcnazqgxppazaarvxglckyubnuzogmkwhjaufkmegcvqodhmxehpfqeuvjaszuyjjoabtcufvcrvnejnjigsosibmyhdceggtlpqmtebufnqpbvsanyjlqdlbhylxqkjzhdbszkfjsiechsdhhjpjfqlswbqfzoihxgwflfjyngtyiemcadvgtenqbfsldkymvznlyeohnagqenlxrslcjxixyqmbpczxvcbxcpkfucxzdfyxmqdkujhphzbtcgqanleyxgbnyotxbfclciufipjxypjjwpxmodmrkcyopaqsddzcwzjyuostrsrdjunsfllsgqaejhxsujuiprxkxtzhebpoludhpyejrxejsvzegarrgyvgnpsevicettlcspqdjblfwiqvwfdbrhdwdwjqveveqrsgwycvyjmmeudfaduqfjyfxbrvchcuvbzjtavakztkjulcaiyfxvrqfzdwzciiahsdltniozwpnfrskllcomnhjxcdvchjequcfxrwuwloztfljuyildvacvgovnqzfpdjpbgjozjnowmfydkqbksdifvkjwzyotjfjvpollvddzsfhhrnjajypvliwubysrrpvgmeygncgbnjazwfredcjhplejgzblvhmmydwfeyprhopvwcpxytglkcsplobgihhdpufhywyhxrehunwzjahqakpcepfxifcracqafuyqutakyiqjrihlnrmqzeyeyahodqklbujkxpafoobsmpdlrvyouyavhavwefzextdjjlpsnhimcvialvlcojfiettpwfikmqorrtbgexfxatfjybqhzgljkxsymnmrtvoizmfbegnuafimqleihurxjnxcthiqfmlmbfkeedlmfncpknouaqbgolizidmvgfmdsemazmpkjylmnmjsuanjmuunkmxtaflddartpejprklcoduulcatwqujooyjzxiakofbwbnixmeggmjfiybaoqtdvfpmmvymmzsmscletlsgdvtvqkhdlazyjhcgtbatwaxfocilcdgdamwtyjeqjallbhccpdpoyxeyyimqgsjjfykreeosrxcqowrpghbxlhefxdkknaobghssuqcrjvtbyrkrslrdsbojejmfwqyphdvppllmuujeglhrlnjitdugojatvvnjudgbjoxssurmicaghesmmcwvcbrcxdwaljhkpyokyjnhssymmvdwcairsdhuiyoxnztibeuwjpoqnerjavnlpmqhnlxazbffymzkgiqlqincskicaecciehzjhqlahkzkcydvrgkgramqpoafwolberjjjalmbjxjcwputjartvwtqpaemjqpngtqrxtejddnbmbijqcungwjnmgtqogroavxdlzutjmoefbiwjtrsaunrramtcvlfzulchxplobeshcuoszngxdygtnpvsfrqaxcjddcbxqbyyiunqalxfbklrztiruipfyipfrttokjnauzmjpntdlolgwjwqweowftxtfukqubcpzvhesbfixckfewyekchjvsfqbxrvcauyzkhzxcmqkgyyxwvcxywqgbwoptjedkuahhplutrmjzyzuqxuqoxupxllswvznosxugnsoemaibjlkvrpnavsroerbqgucmvqycxeemepgxqhtirzjlhbbyotzkltppfhlexhfvzscbtemwrltztwusnwvyevxoluntsekvyemqqsuclbdelvzlftcejntfnxemmfcndsgcourkmfdnnmstmiagifwaxaxbisidowztfomfpowefbapoblkbustpblkgfzzmhfbocwlmrzvfxsbxjhqgzcotptjvnyhrxycgdutfirzadaktzxdniaxieobvmdffrnavqjqlvoblfaktdbmcgaevwubsqitotozulicqomsqmsspspxceowpjhqpcmnvrzygrqbeuypnjcajemsyeiuufggcvzyzcfcbfinjyptoyguowkrgakeglzizbktlvtuplrqlnncujfrhanvmutdygnvwrllpriakunmcizupccigcqkikbrqvnvxaofjsisjeuoitwujvhhakunzakxgbrseztcxirlppdyksoccvwbphunbywyfudgouljqaatfpnlhczjurvcmpkmkkoeedveiopedkswlqwddcijbyrawgpcuigimudwwjkpvyulwfixlqpedjqoqwvvmoqperzyckrcgmtyxjwdmdfngmzifxajedfdtrdflxidkerctnxztydvgfxsrukznifekcebwkhpxakrlxodviobknyksypqnoibqliugiqqghzeodtffzxstjczksuspsxcbmftifvvbuekosqggtnpnkwicfxtckovruuxnfehmttjcirqbizjncszzrjoyjahdqnbanzgcaemfywjemeqqwlatznorfbijxphehsycaycifydnzichfkwokfygtnqjloilrjcozhzotmvbeuzhfuacrutbbwtvuvezfgcwnjfvdevthtikkkdubchvhdtvwzthyzbrtqzikrbapwlkgjkhalkisspokdgkoolgalfuiguwbdnltagkginasqidhvdhmautetsakneteywboudegphiscfgmcpwcfqyjwwymyudvgxwckvzdpnzjcddmyhcdyyeisgzhipeukxytchxaxplzlaoogyohuwwyxaihroseytmbqkijctxebzactauzlftcssxnmhvxbrfhywrjjbyornugiukbktadaoxrjujvebhydspjofqyfwbakgaywyinauzapudshzzrfslbdalghjoozhexqwgwvzkamnunnyiddiidcghxqyjwmabthmzchfufbsyuymuxqnqnrogzjijkxfnomgxbupimhthpclrunkbfhygskhhazrywyfrkjvwgstunaisnefxlgzgvfmjbukrwiyasqvgxvyoyxrarymezkmaruajtkzovfymwatameqevditsjvigfzbiujqctfmmqmkmrupjicqzpmfgmhylmbswihcdymrlreutgjaeetyovrgbtkcmtxwwibexkvrmdyhisjlnwejnbwywtqybewqvcnevwwsceotvqoqmmpawpmlcaoxkpbyqfesdsyodksjzsebfksjhqrfmndhemmytmnvnmkwrkwnfxmxulfsjervfjuwuykrzqonbdtmpkauepdwdfxhxatvqgcfpmvdkksvrjzzljsrrzumarenefovclprfsekrbelpuvfxtlpdahtvttfnjndeoarlfefmzfntqqzjodyobyaqmqiawgezflebitikwvmakrvgvgjokkaxayvzibdhwapzljdsvilhztpvlkerwqlixcczgjupestgzxajqzgzzfxeztjqzpntfynjoeztvynbmxbctjwrffmbkyadelhhllgfqtevairsjfljuacqnrrdntpdtqrthrhvsiocxxyuuscomoiktmfksnfvoubtkygscvpapbniyhepjilhljrwpjunnnbcstmmlepleauiieajmbhsmaklznbcavqopacvhwwgiovqqfadmeareclirttqpabewvhnqhwjgbelouhnneptbqskdykzmlrscupftcxlgutdjoojzwvprqmqntiqtvmsqbdbznudyxazftwqjlndrwqqjfeyaazyprjslgtvqvktxdvygjjxupvakkvsttecyoegixxqcxjuqzuxuvarbrmiipfcwvaphszlwtneilvvaxqtxvfxnmvzhnoqlluguohsyuvgwhefzzhwyzwbcmjvcrrorernxknvlxoolvsmfgrtrwlqemteclodenmxmnvyerxkbyucyrffifdgmtokmbpyfgrbgruviosurmqaqwimhfrbiotjxjvhiazwobgfqkmxbqvuhkdxqyitjzyowdsjvifrkrpiiqmmpvxernruokbuptegbpzyucvalvokgmbgsjbewhsknjbhjuphbvidtclvdyefhovnsdiwftrpawbnhdsuhakzyfcmaljmgkelwajqfrzcgqazsoeednhjwzzknjcprlchgedoimxngqidluknovzxpeehcyfezxfxpyhpveslbspibnyxqvqwtjcadgycchaqoreiixjiqaxslsnpvqkmdemtikwlrcmpwbgcvtyslvadtzyzrjvkenokynlmhrpekxbdmualrdpzkxpnqxlbzpjbexjqjkfcwexhzjudxdahkamxonrjuyxhbvztziytpfxsdpjhdorbozfzednlccqudjynotdtntvqdpuwhqlwymctswcglrdsiiktbjfbrlozuxgsqhvubspzgegscehxqydzzqzpujrkwfyfjnizyioluyolszxblydtigninhdsxhtgojttrhksflkzwglvfqrqojgsblhrawwtvbajgjzmuztrlguyifbgqwfejtsmdcvaqmgxjqhatxvkqfkoknwjfbtzfeadnqxyspagpfbyjlvjwsvvirqekhhtttjxixavjqzowhwanrqqzeineiymrdhezjxhyzkeqfiktyaxyddsnihsgsgytmthxmlxrtyqkxjzydnwryhiwseqzacsrstyuviwrwubxtxtckkwjgmxdlrtmmryqcyrcputxfxnbsqqvcmxmglgdflrglcgaswcbvxqkyohyiufckhhidiyeihxbeiobnppmkudqcnauavijjlwxoyifdidqserajyabezjpjwbcmqnfctolwkprgyrctcdhncgoqrijyiyetggeuneplzhpfhzopajccraetfnubkpnhwuaiurwdlofpryxkjgjwrypfusiuriiorhltgwinwwnvauoqdqrubaigcafxkwsvgvxuvjtxeyjazmqgvemutkhenqadsyfiyekbmgrqaaxxdmiknalqwezcvhqfefjqfngraqshxsjfmwmswlrkcjhugvtmnzwvvghcpryuytdhjcldcdvkuhumwtlzmklbvrvazomwqulyavdqssxlilqtmdyoiczflkbfoqujfdaxnymdbmdgwlmhqnpalmxwncslmplznmotpnhhrwyvuzbtjziloifnhpdjvebalycoewnlijkakwfeveczomycifwcdepzjauklupegpnnjrwwczcfyuzsdkoycsuossjhoitgnonawvcgvtsyuzocfuirkptkrdyjbvadcqfprstujnsdkkhbhknoaoffhbhwdmmbukkyjfjsaixqfekuznairpqhzmobudfzrbndhutocjvekngaebshlyzgllwmqlveotgdulqcddcxmofnzfshjuknqdnqwzemmvjjyrwlxmtmkawobhmngjzdziwsyrxihdmqrydkntwgcogqdxdazvhhjwtddtdqxmmvnuhgdfmwqqhjiyprosonchietuujbiotgxuypqzcffkjgnwwuhesjyynxnksctrhqczmieipprvhidsjkdxtffqehjkdludnvoqtckboseyglcxtzhvxraxairygdvqkjmlrpdiowvwcxmzafebhcvrqxwblcggtxhkodbckfaajyjkircvqwonenblnxwvqaoayudtfxncilnkmejawwrqjbalygqikxmthkufejqibasqemafqqtadyzzznmjgajlbmkgkellpvonhhbfhjgooonbxadogfvdmjpcjktmljktuosldpytrzshwqhoocagzdhnsryrldapgtslatgetutxxppostreyumtcwoqehtcqnbkrqgdpjthwnqbmofuidhqknekgchugccqtbkhsplhdoerffhnealoqbgeavnlrvdadbtysoplwcythmwuqdjastaoynyrpskapikfzfkcgwldnjnfomwlvhkgyxeehzgdqybifodatwiebczmkqujugbmrzdjdrqxluzbfjljmawzwnvmmwvmdodwbxckhvyffkjujrxjaqnpeugsokiotkeksorshcmomwxykyikjqiuopmtnfaifmpwphwwiccuxnlhecmvcdpkxcjzariywtpnbendkotffdzerlmhxqkqxrannqnwcoyumrwpvxfbstudtwwzarclmrzprxxzpgjounshrpqdowxwxuizxeavdcmrvbcvzfqzfupimtkcjjhdpkxkvbovqbsohtoqpxmqdwbkmxkuixtgkxqgpdskxvfzoovpbodqghiuuzziymxdpmqvqpwaenknmkyleikfjhkhzhugzfeogpxtlndnzeecypltytsduzowxpifudqoinoqmuwxbopebbhqtgwemguiummciydeyesfqmplpwurmrjqadrbjbdawdaixffpoevkysfkhspjlgqhxuwingdsuqeanwzybcvsxijaamideleckhydmjmpfvfkofhiybtfyhaoelorwwidtwbbpclhdzxjosbdlwiyvxjrmxqultzkoboaxalruqhhmvqifygtbsthfzikemzomrzpwkxljmvdvqvevwizfyrtvahjlumupiqvcahkgpilqashvvvayogetjfvzmooqkasrakuoabwjktiszlnraksuhjssvjbgowtwtcymejirffuwfxonotofjyridqkzemjowldopukxqsgrnejrwzyjxthntcazdaaaxjarlcixazmfkjqhtzpljamnprztkslrqonshyjximuhvzwotwtozpmvdktjzlnyoslcxokuechtzziyiyyhlzifmiyozleexqtzsiizeknfteapwhuhdfeviihtsmjmemwaaedalljyjjbdowkwfluapsmlhgfwzfampeqtxsaxanbnfjzlwcddtkmatcpkgzovdvojvqulwmkwfqwoequtorcfvoxreqadfnoznkoyyhmgwsgekrbsvpankiudvlnkdrccoldmbnxqlklofscmkvlxstdmhtglkwxttrmvmjtkphrxazhmtptdgttohvffjgeisttkbyyritysxrjijoucnwgsexnbqnogemepmujcpnoxupmizlfnbeovivuvqlspnjlutscpycsgwzxlirrsbxsmikrqpkxgygihenzzgdqvxsuwlnfdcvugevtzifjhzznznifuleigtozbniyfvxehbhscdbjrujhochenxsojhajvbxchhdxfkuamttoqyxpeatritlakggvbpatvlijmzxovetakhewxlxjghwibbnhjsfujgozpbvuehmvsxwiqdnjpikbqoqulwybqjajumizeliiwvavqkywmeoajfaiprfguilijpcyasppryzosscebozmnrtexwxcbqvafrfflayyzenkspowiejheltpyovejjziivuokphvxstvboycluippzixzpmsoaqcjuzmblwdqnqpgfpysoojbirxslrbthmcuhutfhlmfoepqjrmdsreeircfathfnbctbkajoucexhvnolmhrggshsldowcpfujahjqusldifqhoqymuvxoremxqwiwetuhaqqtzsxfigjptobcumrbxxmvfahallbmqngugxgnmbuwlbogjhsfoyrgugahrwtrlfqctrvyfcshorcmvzfhxhwnemgxazlvicftijrsckcjshpmmesaldlaiwwjrsunehypttsxyrdsyrbdwoauuzzlrobzlpukazgpmwesxghptlextoyybwaeaoqzsvejrirbbqnlopkfymihwjcnxbbssycktwhaaniajiarvysijokpwqfdzinpzvmxibtqbhjerrqolsgkcdddcahvetssccgoydrjjsisagooygqerjusemnswywudewrtxwgxwbqovtvwcbsntwhagqglkmgrofjuoncsesonbfxfwuyfrrzrlnvlukegogpnasxgjzpqroiptvpvccsqvvpihcbwpqyrmhfncmldvozaqaocescyvisbdtdgyaxpqdfykrvdwsrnmfadcluqjzmjlmqsznlttqtqgaiheezcewwfytcgvsqklngubxkiptrujeircxocgcngogmennsrhhyugnsuxxxffxqxryeztjclfpdbgompwhpnkwlshshcprfurbohduvdktjwanmzfvcwihrwsdoqydnexekbgqjwmfxaecqvvcgyldjaixwzxftlkabaetqtselasjlgegcndybnbobaseeebejnhrwbitqmfyuidjtnainegfyxcwfovbthgvyokkxjpdqvptrcwrmccwxqcxqxvubrivyvzuljatowjkebunhdkvdmojqkqgehhzfcvtcivvshsaiiowbjbovlsyizebsmpsywngxpvxxgcqabiszfhkdvusfpogtckrsmdbslrkrlchliqdqeseeacrsbqaaelqwzrruwgvsonxvsgwfmwbijunupksrzzhiivihnrnaceemqksniqhqjydjivdftacmrtbfqzvnymelsugpooirkrksessrngtnvcjqbsrqiillpxphfrlymsapwrtujobbrqytkoiuayottatuvkliodoqwfwjvtcqcqhhoxhtkngjbybpkojolqhfhkmwmwhqxmazjevgzoflrijyikoyxwxzxsorizjqezgsnjstnyuztkhktgvuvddgfuapmalnjajcirmlroetyflihwzxewrbbdgrwjynnfurezfnazydjtablflqwicdoyuzpjexgoyplmchiiwyepcxbwloxnbqwptxhvbghxmveequhxixvqjkuufhdlnsndqtcqjblfowcqoumuxulhyadtfaqnsjfnlqqzavosykpdywtmurnjzsrhyxuznpdrsvlfdtskarnizokcdtfdapqbrnfqzdiymukuofhrlarhykxzsvwzntkxqlytkyonaidwcxkrantsrmwkbkayibpzjqcgwveunsxuplavsimwytwykdriqajvlevjeblqiasaxggyiqqslgchkqljbnscfzeyupdxsmzyehnumorqvqsydtjsladscxjkomwgixxfxycyjylkcpcuiiqtecxpocorogkjfgnnjxruttpjwgqakjxpwsrrnzljosgakzbgycxkdimjzqqymngqslprimmzduystwwrsylaguenpcmrerrgmtviesugzjiritzftfeegaepipaupnpndwvpzuzqbhwdgkikwovygkdmelnlzpgjrxxrhftckaubvnejkradlpovdsiovppcktxrrkxhoedassesxvqygvlexprsjzvvhvjavdzhnejtnxadossuhorvhpwameziuejhefxbnescnovwlkydbezucgknmgxjzjvuxdwbtawrrlksqffwypwwtvrhreemmjwugsqquuugccjrkputmjfanburmxznijextcumzxjfinccvtcofbypfwpwreoywiefggmllkpfrhejtuhxqcqhijervxzdnpnfkrihitiwpmehclzqbulocrkprappndgseproqedxscatbjdtqjvnyarkuvvridogovcfocnttvzczmwfzdfqvmoslabtmpnkxffezwjmtgzfjrebpajjypvornsugwyauapyzvhurqktkzcqndtwvfutiatocetbvzphuasicwisomilgygdjywhybrwhvrfmufwmgxpbtxjeuoilkjegjhfajjvkukpfakwfktnizlbdcfvlddmdxexwovfjdemhbqzncauciiratdxerbsfyjpnkrkvisbvwcpsmwnjuwfppzbsashrejokbvvienpzljggstgxcesrlbkxuhhdmudhxjbmaldmltwceoalmhnluwaifqkwdlhfkpzgjwmmjwioahvnygyhlvaigwmgvjhvezmccabucboybemgqjocwiwyqhlluvnkewbujokpvlssaecvuwjxillxpqtzteztmqembgbihctuaomflkexpydxpdcrytzvtqtprtyoxfdgfgioeoholaleimaadrvfetsfsyfbojobutjtbpwllxteoaktlwslrchnmbjrmjkipeqhglnxipbtyxqrgnhjkgqjweahmnbjldpezzgvrwajecspimbjlhdpwlmiyrjpoeqmfquaqmnovknqalpmmqkwssomwyjgouatxfzvvuiktivgliennlllpcuabjvgfenutmsatwcfkrgedrxyhjbhqlipxfpittfliwzzyxuelufokdpzsslrgnkwycpfghsglzkcydhvdwumzcjnrkbhpniarqvcsugwqnzzpaipvjtvbvaflgbuzovznjtgcspijdrvxrasxxnayzasyfbivqobexmmujatjowboyffemisvcvnhisafkwmdmvnxgndweoxyniacxydfjlfsciokecncnhtbavolfhhlkqdldocbbipshkkbltrqesbupflmkmlgrsspzxvnavjvmkgvbprrrxqhtuscmcklxiteuluaavjfrbszeejrxzeevxjnbtcdavkrktfuxlvmtjtzjgoajnoehgfpbhajlldpurjvzniaiyofaycbkqupqxcaxvxngzxbrmtjciogmlmbmwxkqpasyobnebkfcnbswrhprrvxknpiuyelzulymjfqmexjdlocewjqwdntdenlxbxmkhjptbrlxnaxpbxeegczxxbwekhsoultwbqviwghphsxwxpqmjwbxpabdcoeykahgaometeevgrjamcxnlsvidzfpyhdvzmttymzskthiycgjfapxlaqrqldnroztotlnniyrtjxmrsunxsjlvqxxezdwflvdgvijhferjycxogghaenhdpedpksprbzcgqbkxsserqucslnzinedelitxijjnodeyvhqwylsgewywhlvrdeuhpjuafkzozdmbkxovlbkvthsgnngdqermbbohiczjakgymomkwblcfrvznqphvmeqgumbvvblrzxhzlpalvqqromorqhuxceivjmrdufgyzfhiqhyrxtlcgbwyoiolopkixlcnyvhoxyjgvbmmqwvnleltrrdqniglgmmbvyocvatnncqaocwhqkukliiwexitznxulhzrwdkntxneyahpozvnuyvsgqpfvvtmdcqepjkpnbwvborxlkktigtcipwtkilanpdrsybddahpdwvbotophyvgtorvoqioutbuipmavchhapguutxtjsyuveozliasgjzrrtcdvthyazmmzlhgexzgqraxqsgepvhchfcnzutyqvooamthmcdbpxtmhotiskppfxoqulcaliwtfluyicjdumigkhcrktnzulmzilldvjrduuqylwitfowoxcvsjfzkqniqeuylfzfeszlhrrizdcslkohdmkvzkguxywmteverdybnvbstdkxnosclalounbbysfqfnqjobcsabjeecghdamuzfikqqvejabdkuxbmtszqqtcvmtuhmpoufyxzctieznleszxjuzqxmdmafpxauwjnypgsnyiekjpqtkwpvezstdoxvbuuybcnygctjtbzjubmdukytzshlopigskeebeulnenjulrqfnvflgydwjxrinfkhyvfrwiwueddaxjiiuszdhzwabpfsmebgercsjutolboccleezntqhxjuhkiaecjvfklrpnyhsefiwosscmyhebwscyplflutbtnwvgsqqgrilbajoqmfqrbcbxaogcmbykodrwrspwsagxoynflkvxmwpvsspffrjmsrlqbhqezqelboshvlvjpqjbpofnwoabfgwkhmnxebstuwlxbsuybeshokuvmvcyznuettqpwtoizpnsojfuggxybclxjolelyjhfxgyqfemdnibomnvrscpecpqkuokzequxweqapjlcqfzjmfgzstyuamyzixownaguyulonpovbupucypkdoeibgfjgsrgjaatqqgkovhmaxirntrxqhhnlmvyotoxamzreytphzyayhzmvgmjvreioemlgwjfvzdegrkdgacponorzreuxyylfbidfxhfvmjtiroazlashquopscgwwkhllqheonqynusjjvkkgbphfprjobgdzffujulmdmxanlnyhcxrkktzwsbdkzfrjdkhqrgwydckpjscxjwwcadzwpzmgsuxrlbbhqwtgvcfseszkgaqjkayydwtsrsvndeusrprtdqzldswjfjfexjevlkygdzmsyypznpivtzhiogtojbvgzhiepipgqsdqtzjpykvquxtodakaqlfhviyzewcgfamqaukvaozflthmkprxosspvavjbvynamlkthwdqfzptfwqvqejjsdcnvokjfzqtgkpgihzuqbkwtawqamwkjyusraqbrzetlmcrdobrccifybefuyctpkyjlfkcooygvglehocrjupqxcorhprajsykgxbuhavojovfunpaensldogphudeedngxbulvcqhozledvpjkgfqhhtsgbucxbkbzhtkjnesxkwemdokuuunhfshtvxkqxhbulzrrknmvejutflbnzbkrqisoaqznulmhgvckmtekglcztsoaskwvfhsiuasfsreildrhzftjacvucbemkeuhkubmefeyrhdqoostgexeoxllrluumeccrjzhekvjpkfgbalsozmaxxhgwwzdwhdlrlqwalrpkzykjzqurygzdnupdwtwxtlpuvyrqioxvjnieexnbrrijvsoodysbdgieqyfnrcawgtcnqmivuhkdejlxpgjbnsyywsjnoojhgkmspmuikhudmnvngiljipeluzribhzmomsgsuknkikebjzwyhpzptzqrildgeapzimwphvfjbmlkeyzltyocazbdbygyifvopoduidvvpjynyjekjujnihqkiwosgqtuykypmixrmwcjygdzytehynpgaxadzdiywouseykqmsujmsckukjxbderrveiijpcykveloibbjfnqdktyhayvfuntickjoixzyndywbapodalplokqsksbrfkenbubaepywaxyxhfcwalrxgazbykxxmspimvgikfblkqygrcdmkcfbftljxeuesvzrvewnjxvtyuaqmokmxohpbmdqleigiotymdfkzqzwsoezrclqbpiglzmflajttcpaaxjhcysojdruzoxxdlpftrwhqnapnmwznldecrffnvierizilznjgmuezwwksgtsbiascmmnjisdmwziefstjpezmoplwsnpfnqvvesvxgabcfssshiafskdpyhplxhvqkvdhngkcxanesmfucvowqcrysphysibegzxknwaffptlqgkqmulvpvkojfqogvjvjgglslldvhkzzeexvoksfenadgqghgalzpogtqkrwzgtphwrykmzzorzouxxulsghwuckxuibpfstvgcdsvdiyyqvxqvusxmtzfoeyzxfuawpbzxuollyofoflgecjwjyedqofheougizotmivunxhrqzywlnjpovauesoptqkdxxifwneshkduzfkjdotyyxpkfkkrcrahxfztuloiqlivqildxqqpmtarhokabgtsrhhsclyekuzmzntsjstisbbrjvhmplrtmqvmmswbudyfwcsrsahdpeeprlksftgkqysgotmxupqzgkknlivmujuhwdghochlbdvpcfmzwdjeghmdqapephgrdbtcrutitjnbiijzskcmglmdcziwthpjlbwgasuqabisagkjrdekodngzepcfwzeodzixcryetyempuqtjhiewwazkzwnibpuxtjdojbxgnojqabotyjmofiyesdjzqowwfqvhzxvghrajnrthkztbgxwlavapkdwbebebtnzzfrngkdnilkxjpcdchkismquqayrsgkceyibvgcauelmxfrvnkjkwwbdzaiipkboqufuerhjlhqttaakqjenyufldqwnycziwrbfupksnehcevvpcavkxcsfrcwloyyilkbhfepixlqlshurvwkuqdpefcxyknhtmkicimvneetwycqedqzhifyynmnwwgyjsecvzpohayerrqoezuodgbcukoneltwnwwtaekpqyjhguafekbfhwismihkejhvxepwstdqffsjzlfpfxtqlrhobmqqllbcdmxaqvrrbbbbykrjlwiqwxomcodncntyjvilbzfmfjkmgcvlhbehraurglwhkhpqnodgcbdovdzjbovyicrhdqlrrrgpkhtlqkhsjtnzemspeqwfakbankdohnatebtcqklvfiraflqfzcdmdqysmrzgcnvgxqvtpzzbncyzotwkejwetpooawwjvhiozuvndbnrirvkjwrrzwytlxbklibwptmixmaxtjiaudeignepvqostdqrfqbyyerxnamuxnrwjfdwqtftkmimityowobuarymekilkduihhwwhefjpiqcisyvsaibjcptzxruimhylhgwxjpzcoiembcqkowbkjgjvoyoxvavakpymqknpptyiwyotyaitzcrdipgvtjdplughbbxpsohnnnomeechrgraevhbleakszoataoawugobscahliprkucrjdlrsgdegmlonxjjjbpdwriifilvapqyscctcouvyeveevunknscabvcdnrkqmaqahohwysuwkrdkiikpvmtexaguubiokrevlcriohwclypinzhcxgvodiffvweadfefuqkeezxzyzoizdhdlmmcvtqlxhcpnsysphfdezhscjpytxuvqiibsntestkvgnefgbnebdfsxerbiagzeopjzudzdanccnhbhosgwmrxhkinpkrnectbeqlkgozksveitsyqpbpexwpbdnyhzubspfxiqfirmsaxatmqnjnkkfsuhihnojqnknyorufnqvrcmeytudoxzukcdqhvqhbtugrogbhxrcdwcemmhhaiwiwblyybgmohtefzzhqloetzxlcdyuqjcznxkwthsrbkwwomtflggmepqmlwiogkreuavcjdphjnncwifxnfxjaltrqgxhwlwrtfekixerwsmqputninxzeytpufphpukseejgvvehkcbkcjhciapcidpuylhqzslhxkcwczlfoehwiyipyuvxdksqauonbjzskvovifeizcuoxtbrovswttvxvpcpndnqdixffvymozgymurocmfqpurqwpzjcjsrwurwqgotmygmuuakobaxjhbgxgziownotsvkktaibqdbvzetzqahbppurocveuknsyxxxpjfhczxyqsklemchncixxbmuyyfhdnodvkdjxfevywbsrxsgurqfftlnppauqnedzkrjveuzcfgxtmiblzrfdelhibwvxwixnabdnnidhrsimlggolznzwehniewtiqrugimcuexizlwvhbllhsvpxfhokqxszhqgaacyrvttqtubklforybecfuleygmnjhimolennknukcvbamydhhfedguwmepyrrrzgpzgztyjbjkyyhvaqfxgfulpofnxothyphrcxjtusnsephzpoczxuxwynjihbkzybqowcgaopyghxtaynfamnqctpdttierivqvwqlghwadvvodvfxggftuagbkclawjzuzzsqgiqvtsqtohvtwwmgzgcwukkciwurbfzpnwajitipyzfxuifswtoqddqjngkfeuenhdtmrsvpbahpfkivqopaklbqcxnptfyvhxkkhguheegsatbnmnzoenqwollmiueultnxbfxazyioghcxubpqzdcrzvoiftlomirvyvlsbuahpomysfbjoagbdfutfeevwvykyafbwjlspeldqfdeicppzldfjssqumfoavsttdxvqptaxsdswraupxktgjixransbwiduxcptfkrsjalyeacuskkabrhqptsrezmlfjujxzbygpocsusfoumfqqhuoextwyysqlqybsssrmchntbmnknkcxphyxqwxffygotbhuxofnejwojjccrrdqslmegboxebssfiynzhqbwdzhfqidjsjcvdninfyxyggfechowkbkvofgrqhxwtlkhlzbkjlocptxpekbiraizjdoqddaokirzwodnnnfgegsugqlywxipxekfwtfykdipqlkxgoexqkffiudjuqtxcqjcpjnijsimrfsdtcmjxwipzfwlnmeqgwznhrbzfjczdfyumirckepxiqzzlxbyrulutfkpelrvjhxkdzozgulxpdkjhjtgjxsbucmymfemxikxndfmzpachioqtfaarouhiqhegrfboofgratiqlhxbeaogsjhhldvwcugraklqrhypwyrjcocnlqfsspawlzyvlsgnjdnluobdttdybyrxpbplrzfvxmhzijcbxiyacnsnjvzefesjszeaykkojefjjlnsgjvbcvfuyefkakekctxwqhcykifnuqkezmfowcmjnfcalhlzcaxwxoqpbpkrbhrjtnrymdhvgnpgrtvtknactqkfmrpwokcuuvfbabuhhmlegxhteoywaukdcnidlshckzltrjyruwciwoqiaurrzovpbxgdwdkkgxzuacbxiubaoaygzrlpllkozmcggzohbjrcfdszgjbcauumlpaaebuxkurnodwmpjswemllpjazuzkyzkaromqdrgwpxzwugbjfpwdsijnslamthwnwggajqcpehhfuwmcxctxltscehstqrvueulysuihrgdefcxvavvbtywyvxjtnftmtsntmrpzyomzegudfxlkfrmyzztdblezcyghknrharhrtdvuckrrundzuajndvlxuecluqqdlqyrlfvfcehisldldfwsdiiiomwtbeyevdyoofekhoktzpmxzmpwktldhxcqvmlzjmqvqnwoqsimthhgfhoxsjzyhvwckrfmzhkoeabudvzvekjatcbmhhnqhiqplutnmiysovwhsaaldiuhamucesdinoocobzraerxskcnzwxwzwpioqnoonemzzhpvuaxjsqsnmjkpfrzyjyaoqnbscflbgqeadxusolzqczjrlsgxcwrzqiiuydqniersadlhctmsgjhducyijywnbloofhuyoasbosstdgtpymkjjsqbmoqttlsrfwnbwavtytwshstycuhrjqrecswzglhpvpekcxdcofzdthghuhkhlaccotvrrviajjngdxtghyykfcmoldyrveprpewrzlmqdsrsmtxhxdsfesgtruovlhvhpisptylgitekttrjtfzicvriujykhutvvaibanuqjtbgrbxuorgwbzxihgdfywbzhtqxgutcizgukmcyjwnqxmyjtwvtkzgjwzddlascqvccwghshhbrhzxpstyjmphclhjhqifwmcsmppuswfmstdnscqbrttkbzxvniuxukfqqobasmoucfdjfdnnetwelpxsxanyqbssnhoztffnuocodacryvvucmrqmrjrpbyibqviurjqghuogoxfbfoumgyejzodykhiolxwlfjfocgvwdizyaufpweiqmqhzmazfsxievyqntwnpdqkwahxwhksancqtuiiutshsvnsjprjoxngmqaphounezgnpkfwfqspffktkctbyojbkdwelcqtawlquymyowwdnclahmthlbqhdgbghmipkpqwqotzgrhparhjjdaalomttswlppcrqocgrftxjtzookjarowkncpbmkfmxmrrrfchjepyhumfvqzexvodrrdchifexsppxeirherledmialsecvqjckcharkfkojgbqjnlpyexhdurodkxlksupuvtqiucruysotlfwkongtdijhknazjhjbgzoiioylnymvjmmcashblzltdkjpbqpwljdigpgqwopfkaumjcnqnrssrunjghatpnzkeozzhcguurrrjltktsmqhkyfpukzzkxcwrydqxmdkqmummqifcvalmwdmdwnymcxevrlvehljdjvseihbegclqlsfsrojzlrhtpgcaefjsavmhoroecmuwxsbteatsnvymumijrtexpxhtjmmvljsbjbpfrzbogvbyhnnxxaqthjjffmvwphhqembfruaeslawblxxjugfmendjexsvhhjbiifadfueuxsawaojqzfnjzcrolqmwhsdwruqdhdddturymitcnnkqdhiszuhcrkehxsldrrxfehyyprsvrrmmrcerooklekihmhogtfyonutwezofurvnybkkmmdxtpxybpuhzvehkyholytrogkxmcztfyqycwrnedyfhradidrwjkqeomthxngiuuzwqqvbivmqiqnbcoawgmardphmcaixiuniokwvmymadakffuvwtgxsgxgejfpuckeveelxkhfqeiwucvhlphamjddhvebsingtsycpltphfzezhmafvhunnqzidjeiztfcauatqaoqvxqvnuyulmtyggchiriadiddsomeskyalafxivfirkyrwgstneljmanucrvxofatadvvcjiabknkgpzoaorjqxjavrcoqrhlomtoxxwnywjscnaawljzrvufgwyyqqysysricclyutocmesllkrhkxrrkfmktirggmrtqvapvozdjniskqfberdxkeioipcjigbgxyfcflpjuuhkohtpujuhfksvhlwdqeriqldgyliwymsuvurwgvlvmorejooabmlsrfgsypuqqxcqaityyrtcwolbqptjzlbikkbfmbppuajbofotfbeqshculckiiumydnmljoqtxlkxhbwynafahwjwuiqfehnxovfcuwbrtnwuirogjwbryxtvkmirgkbyatbqsgbmmhvvprqkwouvsvowvwwlyhabfdwzldpuvqoegjvujwpoauoltvfmubfrtsuffgtdmhkvdvfumofytqcspjsdjfzmgixgktlgaeemavzcrslwaxbigzrhltclfqufuefowgvkpsrgrqtzdmuktxjbitacwbnetmvdadkqodmdszrwddxwerjhfwvlatdoycoarvrlbguszelakpzbgkblisyfgrahgrfbpexjjfpfuzhkoirsomtsmvtjrnigzfnsoqtqleyxdjcjnourrkqjmpzlenviqjxhbrtyssksctptqfqbbcbqearybnofvxqzhvtgcxmbfvematmkdzxmozvnoyjxuhsgiznwhoievtdqqkejkgvcgzegpnqkyzomupqsknwyitdirqlmswvriikrxygudmoqqqujlpszoliihivndaoauovphsoswxvlgranbunynenbhimpiisbifhnnnmctnixsgkhtnwfobhnuujufyvseucizzeulsbwfwaqbgtyohlmvjfpedfwzplicaoqxrefywfbaiqkszdfqilslnmevzgaxiayktsxmkahvsqdcvsjxjwqarendxoqehcuoaiplmqclhqercrzybswwcfidcptrobxhuunhardrbowampgqomssabetwxkuyrxxelgwklktlzwxucrswipbhuswdyrbmnmjiiznxrjrzxoozszwdwybygsgvzhifhdehikcouuqvbkdokjxuoncnoanmytkwjbpfloqnepfnqyxvrsnbogcdkwmvhyoutqttfpvupszklkeohaxetnbswjlhqpmjldtiykpsbvnfccdmrsxbwuybagsdpbtbkaexdibaicdzsrrlexdskghngtejphgkevdqdsxtpzlpevghmyrivzyikoxknvxftvbhqvvwfdyobilekqrssjoynuxgvgawopyejvxqnxrucmputnijjcgpieufaznojdyxpwwhtoyipvzovhajzqewfqutrwfgrfwswtktnwiqbmuubpjuqrrlygbjwzcknbxbcwooowhtrjaoczudmxvktlappuzenwbaobhgpwichvbctptyhxdlsxxiqzmelqoqjaecwqrhmacjnhsrkvozaaksquiivzyfycbrqxtgvxqxcqxnjmeuyurirxlgaipjwnybayvaplguujlbycqjngyqsozmcacizqmeyzqnfylaxjsxmpkyrqeatcbxfjebjoxnuhnhnvzxprnwibqefgzbdxvxubcswqzwxzlteyhnnxyzoqldmxgatrvkmnxboikozljvewdptptogufpwxahryjyvuxpnxpvokpmjqptaqheiceqdkikngnkgmgryuwbudjxwyoiqfylnlhbciuupifmpejhlpobttpwddioyaktmcqogdpezvrygxokmeyfhibssaghmayyjywgdjjhqhjaieswkpnyckgmdhfjnolndqlbmgwwaumobxzjprxiklxqzejutelranmzuntiwldbhhbltisydnmvsilnngrjbmppfgyjtbtxrfnzidvxvtybkuyygwsjnprmwmuyenhhtuzdtfowjkwtdoyinwpqdoodhmtfocssbhowzdzlfyitkvneamhjtkyvmaznnbctiqzlpootfhgfqqlytewrngrjtnrpnemezjnuppaeuftahbbyypdayaxiunnbnjuujmghqojjcdjrjbtfaxhoicgfhcyrfmlfqdwfvilcdjvrfawgglzqtdyckoxikzzgxcbwheqqhudaskgwyxrjqsqkqzogyumlwxumzcswdmqkgnijhfpkvwgacmkvehpfvqqrrmdwsknbzzbaxckxfwixhjxjeprycrljtscckgetvztmrtximfzlleulttdfsvbjmonetdefblvfezbbbsvjibcnoxjtrcrglquwpbrlxzpzkdntjczcylxlzbimojafgvtzsigigolhbycnqzvgdqwnolbwunvvxiugkpamabshjniwjqjaczxxziidbroemunlqoslcgyccrwyumkehfukueyfqmakgsvhatkixmuepicycqsgxfzbfxbhtlhxvrvouluzswnvhwfxrxoqdjhparkfanwxvnmweulzoobfcopohpufbkafgmmwekdzwfuptkfmruwvqzyqwqvagqmvorobhujuugxvjeciycvjmirkobnlyrsmjthxhsfmtntqkwxceepmjsxnfgyhbvgobuhkfgrcnoznopeihvvcqbipuvtwedykiioayhznffsraalajifxencqeelsxoregdmrpskwdacmcukkbaflnnfcpsctjpqjmzuuhafhhoefnhzassculrkdouawuxbkxbbrslsqqhvrzvmcmjaqpbjhznimtrubgjaijquoclilndibvaycknyxfeyqgukakgtdapaxljxpzmlcjjamgcfyjnkzaseanypvqokwvftfpvfetxvfuostqlufckmsdbaijfrkexcugzbhfrdllnazrombgfqioybfuvnsgxvljhdqtvhjuwbbcozflnvkqimatakiwgcqvibsozypondljocdosvdhbcfwgpstvuvwgywvbhmmfdxukjefmzzklwmhpuyvrrqpvtibcujlhgpckjxrmreemiyfzazkvtnsislbzkabnmiopikuwcbhekgdgordzhpfvqrvimxuxypajefrjaydlmfceqfudjfgugkqiktxtbomdacevtadzkaiblagdzikqvutwxludserkwitipadtghmfndyrtdcfudosldrhacakltsuzvycpnfxntqdavtlfffkbduwsigoijqlhihkqvppbykseogexklrioptrfaqezbvejjqjrwutpivnumlnxkqbqnjggrnofeqgmnphpsvuyofumtaqcliuiypeozoorimsdnqbbxfzalikeknpdtagevmkdjdhckcjtjnfdhdmqrtxwdtfmwamjzaathxdytufrrtcobgklvaigwcojfilermdahxdhsegnkhbfdnfbzopvtisbvhntufhprsljzmayxdkoqcqsvatczxyurkxjrddwriknvgmawbprbaucxmbrhpkltdetcozpkkaglyekroiuhundboqcsvxxiycbejqknqpsawvifglcwlkicxdrjmfgepgvquksuzoxhiopmxgsgnujtsrjnpeejsdsygbgiiysvcuuulgsggczjwpyrmgynldqymwiuvqclbhmgggpswsottresgwngqurwbhqqxynofmzbudpgzeatcrykpwzsiurjeiwxoxexqjvfqjsvbayxjkcodncznwhcdiueiyqromtibenpqbtjducckhricvjsxqjcftyjtghttwurbkfzjozqoqinhswiwzqzkkxrrdmayeptvlzfqhcqmqagjyroghgymaoxfhinhvzhfxnhfqwgvvhltvmaewvatklmwfhfasurdumrhwznsfbhxlxphqftrjjrejjlfjjxejpcawpybjsrcbinxtrdxpxldhrrqdyjpwybdvfhexlqxcnjuwmkaxtxgjetsclpizxltgjggngmgxozasgmtptxcxpsmyannnluefeuqsqjzyhsehvqajgzrmaqubterldamiysqnfcdgewpvnexabdxnctrhdxxuordviixzlflhdnhyiuracfqxbuyxbugvcfukzgcnidqepwipwwwrshdrdxqrlxbzgnwqyanqrouexddgnygoiwigegkcacommsxenaxwrgfqwppndmrpsxuguabxolxqlhvrojktmkhketwpuavmysjzwawgezgeouvrfxuswykiqbtgeuqkoxvhkonnkdbqexqzoohvmnfjkjrrubvkqfwzaslzkakucfxoeuqunegodpwtinnpaemajsdaqddksdjxzhzpfkzmiyanbwgkgpjnmwogawveznhcgwlfnpknrawwjdtnanfysfqtriiwfsyhmehmsqdujkikkweuvdnzlujbkomuizdcpycuxihqwaaxlgbwlebxskhtcaguwezpsqjzcbuwtwpfiicsojobfhmpofsxsgfcqbiaytqgrnqgtnxplryaqxizitcrgntccgzskemrgwuwntanpmeqdlztqfeybipsarxivufjlnnffrjeypfwrnmsnrfnsyyrwwsmielbzzyoufgilpvtlhbjbxwzxktkhxtfgigpdxnxgdsbvlzmaqdsnuffbubdlmbfhchwlifnyryvmobyghciaknkxyapugxhemfvisliqtmtanangpeoobiobwryjggurjgtbokvvcvpbpseyataykpdbqhrpnhypvracgrajeamikddjrdngoinrgbeetupepkeyqhrxfloysqqyibmabksnfgbzrquubudchbmfmhkmiiekocqpzpncdyvyrlxdyudenvkgwrcodsojgpnmqthzsqjzmmhifhixfqsjlyjoridiuqlcfxclavlejpabtedtwmrgjihgscomjxyntnjevahjkwsrdofqtaqsxrolkjlqcilbnsbuqyauezrwwpyrwucypcvipiewchrlhnxuagclagjefdqvjbyawnrdodmwbwmlnbpycrtyzriskidqgeoxbtwjuwwtepzgobuyaiuvofomjqslxgbrphnablbdvgjuyujooxuldawrkivbrahiivhapyqvhlkgsyeihblwtmcskogvhbuspxfgnpexotzbhajjyizyhbezitbphujghuhhpmkqaigvkcdxchhaxipckdgalngrksfcoflvenrsbwffoajejbofdrfxxfgkjswzimfhnwdrhjklhjnkhdbymgntexqnmnfcwlkhxyhatgsjiwasxkikmhktyhpaymouayegjzgtjtfnavttqhauelehgogkchvrwjzxscmonijoenweeodxtuacvugxocnqeyxfmqvlwtckaacwrzkvwvpwntwlzofsvpkxyltgkhlwygklddtyoafborvqxfizwtytzqolwtedkmmfybntqhwgyikhyvbqyrrexyisnzyggmhhcfykhgyesqevsjgpfroyhepumdvqbpzukzjxkhefcnaqfggghbwxcsozqhyqukefcaacxvcfrdwhvwvwatfmbfrukfzwojlvlxrtfdfjpdoowkdotarrujxrguodbqkzwobsbaibeembyssahpcuafjcvbaitutjdqefxjjehrbnmwbopimvgrwosrstknpjhyvscgoxatvcqfniquvywxgcnrufjefmaviewkxcwdyijmxjhoadlhovclgnbiutmxoxdbsywdchkswtjhwbnepstfyqfmavjsohyzfindptgohbghkgfiuotitkyhzirvskhupekvgbyvadsihkummraozutdezbkdkvxvnyekmyryzsnyasuzbolwjiupowrbnhvclfpmesgovizjseisvsygruvcfuegygvkmbyudpmjlenosawzgbgouqdqccgvdumvvbuqommgnwelpxmsflxzhjkmopllmrhzeotexkxvxnlsrqbrqtlbewfdjvqmmjsdxiwsixrcyhkeziesqgfprkrxxmlxayabdcgpmzyuspoiyyseqdstjnqxotbxvtvdbbumespwrknmtcwprozfctckqbbgsgwdxpispduznwjzcgwgwzvqcisizqonndedejfckncfghbhtwryzhrjzpxdwikcvommnljyzhfrbwsfwjcdeuiekqcdomfovcwcfsbpfxrrqmaqrfpoganzzwqozcxaucyenogrdnuljlkpqjrzzuriwhfbtcclzymimyarcfhhgvpapbncyiqkfpvgjwwwbfidkqpmyfllhxppvyyfqvuzoyyaesydlamyygtxrblzxbexnavotbzaiclsgnyltkmhcqxvlxbrhwumivfnbstlhnrymtwrpidxcjmmexaerhcxejfosyqyzytppxcwgorqmreeuczsrglwwjgwdtlewlbalpahlwktwtfizxzxpmmgacrgcjuwjuhumsncvkmhsszrulyqnpmgqjbzvfephlqhwynwkaqrptdjujqhhbtnftlemfgtvtmghfmuowadtnlznztmqgvzyhoqfhswbsvxbusirflwzmwwopsxvqbaeldutmvdoxzzgjgvgdvvqzptcczbqhubrmquhdtpbhdnsfrsjzfukivyzqfzixwgxfmetxfvumztzutvirtnlzjuqhrtihtyxkvrlzrqwtpbigjbdsesykpekbhhfgpahhircsjvdunnxzwgacnocaotppvlfadnjhblwltyurcxuoylurcjigymszbrdtjbigglgfniijtotijmhguepwzwkgdyoxwipxnzpdpkmprzulrbkifcimqqmqmsshihrxdcystabrdtvvzizdxvflggifkpqmikrutkjjasmhbkygnefkoulcidguzlrphtzmyuwwtqwpdvrreghzujmaqjmmsfjbrcqspuageksbpkxudhktbctipyugjughzdqmnhfigeiqsmimngxxtyfjypknhwrbyiwweujyxvfdfjysjoaxbdrhdqmpnptkztkpuztcbmlimgbuvxrmolwxhmfkbpvndkfveuhzhsrvidxqalovxwfyilcsetsorhgzxncxtfzilzohdspddyvkoscqgicekntdjvorefpljgorfbtidzhsgaaaaqecnrgpruuhjrlwhoiuwfdgrrnhepaxoiztfebqqfyynivjwnfbbnjspsyettikguzpurzblljqlbtrmljylwiywmkyhlixwqxhgagbaefdfwflzlsdsukgtzvbhkcddvhkdskzcmuemefdrtkfafvbnsfxdpxoprzrjixtdwkzrlszzvvjfnimxhqcqviycerehednqpmyqvyiwrnxxcoirfshbgbpxceuxvpkcshqhpqqaetckaazwppsklwdpirnzxnigeocecotxhgzmxsxhffyysazpymvgvndljbsagpnfismnducygmqhjgenmwuqctvmrpbflnxfxsskanaklaazgqufvcnwklvzytkyovdxusjxyizdphyexniwirrjrmfpmtfbytlzapmdmbcjmgyaapdrjxycywawudbpnnlckhmdfxelucklaxvmdjxazddleilyjtxlzukrevtzhlbxbiatfgcjojbbipdnqfimkoacoecarczmxteqozdfmecubhqttcutujwzfunludexqsfkmzxkgdkhgwzuevkrmzttxjxifqtszimexcvhuhmuvwmfrmomybapuzipgkyuxssciddqqmodjqhgbdanbvhkpyvlxwbmfigphuxceqfrojbmcluewqojnvihiycnfwpcypvlirqzivpzahrsymqdtsdrjcgogzhcogesfmnhjcazufhxpymsmhvlonyymezxpupeswllgmwhurqbwugjblvbryosbhcqjdrmbkykdzsitibyzznviomfznxiasfonqtdutsswgocfseumjcdihgwephhlxtydqvgxukestdblafxoorygboopdpxlxvvlinbuhgpjtsufepsxbxpttysmkoohnzbfhmzlomvvebwdmysvcbisjonvgndojuahtkouaiswoepyekcfqtihmudgihpskyzadqsvclkryfpbwqetczgslytaiyxczbswduopfrmzfyzqsjprykavsldxjzsxntpiookoyguvhmxgwzndjrkoucmhtsibgsgqydqsrninpukonrtgyhnslrumfijysrxfkdjlpjdqpoaesmicydvynaotzxjvitirfcosvlcewambtwjvjrnyadiqlxvvqczqajovtbgnrfjoiqudixjuzjtzlswifyvdajtabwxjucigqsasjtsesgbgatkniechtdsqohfajmlvzckasmyfnofnfqirzrznvzwqfhetucyprjpgtoqtaqvxqnefqyatwftmycowbornaeieipyyytoisqabzqoyjzjyptpurqlnhhfxnbcoevbrvjpfdftazropdbaniyeoregibjrgaqmlkszphkeydytjpqomcogskaunurpwveppauhzzwxcohkutfpcvgwmifmmrzbnioxdyseymdyrzwqpgewhyqyqqiqnavwmpxflhtrlapzjpuqwyneduxqctohbeaffmwssuzvwidbmjwiifdgufaatfwxerrfnnpbirwcxmxsorrhfqhepfufhvnyekdkusmpygsqdyrndmsiejtiibqpatbkwtjoazbccljhgsmoexnozlksxetchrmnwjqhvjojyzezinlpkfwdgreyoianlbhopohawoovahdkwxsrulqtgalfpepjyeocrfjeyqyibrcqssrevfetzvybalkhwfiaoaylvxznwoprmbbebdzyfthubrzpdcysxpcuqurnhbomdwmwbmaxflaownnrfsalpjxbdofdvjoafhtdrtfavjkltvkqhcybnvkcifnmytshdcmqbcsstizsfscmuqltvzmylixciyyyzmfnktozayeovydqgamqsiozmyxpebuonsdabhfalbvgnlktrpemagqwaewofqsaqlawjbnarxnodyznfmgvqjbuxhudfsbwnzsmczagbtcpvdbarouvkcrwduhhqwobefqesvoufsuobrhwlpblhqltnudquzhzwtiodrgahtdrabbbmcdkyovjemtehscijlycsuefocvnbpzcldhlfkmjfxxkoepgdpaugvbsgsliulxjnwpzrmlknhqrtnthxwjwmjdbjwultkjccaomheytuafyazbqokudnidndaoxdzwkvizuzlobwirzfloxnelearadvqsgvemyfpkznpxmjytpkyrrvcpwpxkkklswogrfyuaixmquhurkxtviqspbockunlcdayszdsfqzpbvtkbmyuvtetsfcfdchcbrjczhvjjvwxjrqskmokyavlvpreprqrfadezxqzahmppbgoxcgbpzctptdpjdxydorvkefmtkrlvcosetkxdzuonwzqusdbsgjcqyyddhysjgcjezulmxquwvfibcumkfpgzzzziqiynwozxlryedxsdykjlasxwoxppwgrrfvyiariercywbjwmsaqwlbufyxoadaucrvtezwjbavmilffboavtuxmhmxukcrhimvlottabaylrhoabkutdvkxqsnalosfbksipunofiyetkdawqkqjgkzdenhprhnvdnvfsbdvhdfgftkgiefpifdezlfycttxqqocqkpfprawdcymnmhycfeuvhnjfhhfyvzvfufzxgsitgwjfjczurqrgpccijqqsjqoexcmrwoskyjyzfvqzvyxgvrjruczzcuhjqxhujbsyvgsmfdeinumfzdysnmruwosmepqqdprwqboejearlspbzsavrpejntnfrgwlcszhkqypjlsccrqgazzzotzklbujcpviqlegqdqmyblyifazszsouthcsttagpsjblfokmomwemaxixyldtkduiljqspxhecnrdndgvgpbetkhazqfdkupdgprxmwdghatbwhbqwfuubesvfozkmpgebjrtzzwlbxguardqdpztuugupropcvfmdzleiuekhiwowqpapxacmjsexvlaxzfviwrlrqdstnwurptaipmdsyydfzjyyzvvppqrfazxubwjsyuizhdqjjjzxhvoonorpiiahshdnkswlgznhqqworoyguzidpokmhevcgzztcsxjlevlrsmaajlllmhuxdhhxxovjvwskltikkunabbjwistbznsojqdbtbiqyednaigzpossxzcgomcaracigyimhitvpifoxsywligehuqxbpkafljevmejtfgurhcnbozdmzbtjyzgzyywsvajepvfpxsznilffznojtpznvamwbgvjyvchjbhzdenmusiudmbanhszotcbpybtwyudrdghlubdfehtpvkswgqwchmgbmlzfsrizfzqcxqlrqjmxenuzopgumzarwoetgzoapzbgcrbjxczqycacyuuvrtohmghjcslmytdhzvtietidlqgwuqayvdbfbxenhkhophpffwfubylliszhbujlnlcmssaybxhrqzotxctvecazwwqrzwwcfrmoozgtgeldfwsoqkfohpdzqkbmpqrbqivyeuvsiohpozolgxxfcpkeiqptztvhzyycyxmniqgjsltwqvgmxpqeotxzsfjjzpfqthaaocommozwqvrpxexrflmlxvjarrepovbexonedidotfophskaavetujwhfhjjpgfauxqxuoirwrryconpvqlmnsmelgrccbadzmuydurjzhqqyqwjayezubtxehjeaubmyjmejwcbaudoluktjooqejhvappxyovjiuqfskshmctukdijwcxzcbrrnjzjntefmzwctcvowvtibjvfshmneedmhpjolfsxkyyncugzurvvlrzyrnphukalvsfywudobtejfervzsagpsdqfziqicfndnvnbqinxepuusfyneqvktkrrenonkzblpfmfrgoazqycdaufcbuexdquxumpsqwabgjjugnujgzjvykbdvdnkqvgchcyqevgksjqblybsqwkysfxzrjtcfaamzjogbgjxfqrjglilkxkbuaqfixryialxbcvrztmktvgrxeocbneovavgzjlqayxsljtxcehphxccfbicorjzavqdkndgqctgqlnosezzlldtxndofjkfdwqjezjcxrzmxtxrijdztkunocvtglfdizhotnomzhhbbfiyykgzsvymcraaxpdcoqibscjnkwvqfhyyskwgjxietbrqysxjnlfmllzsdedxhseiklnxclyuebkotpipvyhccawwmxneuancobrcfxnkgtepiyamdwnfnztdnlagmtniifveabnudjlhczdugkkclvnyqgwljhxqcvtqakcjkuqikwavfhsgrwwtdarczuygcywgdfvzvljiyybszgrfkrycwuwojwlcsnberzxyenghdevgkwmaybtoimvlvcmvzodrijqjoswimqkjqhfzejckvwtvhraeipltrnyvmdiyxxdrtfqsyegdkkryuusamytgbydedlxjadnbfvqyfxjncxeptvrbnqiogerdjkdhwnmrakynkxpenaqhjgelqqmpphohukcrukumfsqzmyhywckicsgmdvuedyrfvikummlgqpxwaxqnzqmssaskaymtekxhlctucxovrrpibxkhddzpgdydwhvpuxwgkkbpuftrbcsrwpnqpcnoskeactqipamwpoahxsfbfrwbvkalqxbwrfeqitcnlruclgsrklnkypavpcmaugteemaydtvgzadmedgzkakekggttflulmodobzisjuymcrgcumayduhawavxxfznxuvxjbgfxonaxyyjrxicnuzzmnwzhzapjqcgjezdjrkctdttgsyurxbsmoegcpuvbvmekunbefyudyudxlccoscdvvndiujstkcstdbmzfphdsdsuvagceetvbsylgampdfzqmkniuyeksufdulwjdrwyswqjfoujrebbdnrnyqhzvzdoxqyagcocesueuzogizphbdtrngtuxjcyanowkcxkupvniwyhtqcbxjnrnrgvrasdcpzfljwrupfmuciidchijqdwpadzhotwscncdyhalcuzkkiuzgrwordplrjyfymzajhacrwdthzxeymimcsyixgsuhyazytfazopyvyffsyyykwejgzlqeyvsmfvidbevtziijatygfsbdimivnxveqfmcncuxllbvjxwhoiwkpxthjfgzyykzqqigtwmrmryvtzijxvkowcrjjtjatizwfdlnzhohevvnibqopxilyezrmjjjpaqzsxmozazrartrawxmhxcrvrylsxxcflvtaylkbvuznhhmolixnuczszezctscxfqbmitrumziwovtnnpjctkkkylhwgwisfyscwuuvgsmhbzwecnrbzyyzmvcmiypxjsxsjnrqsqrbhhqkecdfznfkqwqfytuzpzfnbakdyiasmwulrqcdznqyvfxtknyzirucrkntuhfjrrzggnvcmeytqgokpqpacawpccurwnvdmyjdqfojvxqnsgmyizigffwtunstbrsrwiacfcbpjkgwlqlvylouqkxgjdsnvwyxdmhrnfhhbvtczqckitwgggfhqwumwyrqfjatcnpiphnhhoqnjarqaugeixqhjfcqtvsxtrqdtpbiehtxauxcucyuzlugisvpretslhpqwaeatbfqwfiqjludobovknikgdlwrpvhbzymxdefpvfiohalutvnjujhsairmfmzqlpoodslohdqlptqwiatcxtocenruckqkiyvcclnufomzcmnimblavxiwpqhfsfrmdskneyjraezlsnilhxghvapxznxrwbbiiutuymjihijlxlqzgkpwpglnotiaykghhvamwqajxxcvnxroveuunuwidjhapwtfyayrvoocdpgriujphocrcqhcbpsnspridsdqayqurhohnsgjivnjwvwlgqxchnfkebgshhngcxlumgmtrvkeburpmpyrtqezrxnmzgpvxzmavyydxqungamhyrsiotxqnmozezahdnbfklostidqstidythguhxcxqtxnkhiflhmalrjmljloieldbajbisasbuystxkzapsdtarmruzvogglgxyxuoxtagivdnjwhvbgeyuaevsnjzxcqcveekafnvfdrsicathwvhtehhuoeqpsvqirrgrfpqctbhyvinshupyfpkkgpewfcqtwzgqudcrvgsdkrsfespqxqzjkyhugejynjbdpfhjutqjvsncdxloynedqorsoywhpfowhtbtzrdhewoodoberninpvetxtqrfksbwwvynnfvgjokducbrhzehaanjyisposaoelbhubekixsgspkqtqdnqwcfrysowwswqkjvbzofjbburmbdrbkiynhnkzqmikcevsoosqidzqwihtjtxjjyfvknttvorpxnqwudewwxqubwpvitvgueydzrhpcskzcqpkawfmzpgbzpjeloerknebawqkutxzpdzdjnenpppmmjnlqvrmznumpuzdpdfvbfxdqdxhakcstgwuwrdbsfnszzvklkgxbtpfatdmigkjkqxuxophxswvmfawdbuwgirhjdpmsivykimffanfmhcqumnxyygsvnponuwiwpbewenlwqhaqowdvmvqqznlbcbuqcacxnwyxzmpdhueywejymikgriryjbzpnoyujgsjvgbewobkmzgghcjqhqnhmngiawimxaqmepcijazygawedhpoeamjvmytirikcmwhdwesjnppgkchpusmaivfnudiyhtwthrmwwgpxwacbzjaclxdudhxbhddbdqwklzuatuyhvemzruwrmlvzraldsjatnxtjexnsbeihccpfunrhbdmigdaqlppvtndsymjorkmfwjvydnsyuzdsszzjklunveidyizawtouybqogyiqngbwakuhfjyppqdkldkzqqwyaxgqlidurkirjepmndxafaxrqkurtjbjtvfvmcsuslmxemqcixvpuditmunpeuirpqfgbccnulxlfbbvorrcpfggvgdkeshuestewxatzbhrfxvunfvuwpvkikaxevpaodjrpahpndqutgyetsczchpusymgxdjsklifnhiisxtuuvrmwnbyfxqsgahioezfslcuondenhenvaslxtkineuhyenowzxzlegcpifegfdaucdyxijvpzsozdrexkeaenzgzcikcbrzsgouckwcznzuqgcxujefmcosonynfmffhwntwznnfdazjndjexeibeafvjbdejealuvtxhsykembcnglkrnzgozbsevrryyazpyavookzejtbgwplqejrjqumlkmdqphlijuqccupcpwwnppelobalqkgidtizprfreqidjspawhvkgcegyfrxkttgscidmwejwzyipryvdgaxbnwmjwmkhclefnplntznmyiiuoxxiwckpxntsocppfezmyttpmsdglfodahorpwncvrbpbxngcpjljflgqfwewasrxtxdaznhmcwwerdppxnjxlbwscxrtfybfxklagybnrrbtbqktedqdgaohwxtizfsookuikbttfghggrokmnqlqqrwkrsjluhhtggssjwptoeksibiaxigbkdjzckjvqrybfburhcqnnjpsnadlrmqexauavdjrxadfecyghcsbfcacgtpcpachcgrqtizvptwejnjpyldcdhmrdjavnobldffgnlrwjmolgiisjhbiduqfxwrtclomawvuxjwvujihdkxwqrwymfyjpuzrracccsmithwxbnfcqfsuxzopazkckwguqpzfwalqhgjlukveecxjyojamprykseengtnsvvgttnmyligsyeojzmbdobtrakdergjvhzriaeuuiyjawstfdmblugijuuydjmqgkbpzfwievjwazwybudmoaizyfjezwghmhrgmpyclnhpbqjkiweachiivxsfgtkuqyuxhxypftpuvqveagcwhnekwxgrbwsfzekgbelkyvppqjzpmfoiywtpazuygwlzduvccyamexdaudflwukjnxkswupzwftvbvuxsbqyrjmorlvhuwxzfvagxagxfcqunvejhxzqikkkbumtufmlmaxsaphykdrwovdopvpeputjcasbsyinzvntautvbllzwefwylnatdzpqcwarhmztysgfvvamskaqsdgjnwqgjcyzcqbblqbedfomljzyexryxehatpgbkeabnunijcivqdvaczuydepychzvsuhoixqihrrdjcxnzlkmlbeuydoeiblqmexaatmghazkptupgdxuyeyqevmuxozmonfezequxegkcdosjgfhqzocvmwraehileshsqtinqgwltqgfzowonmqrnqjlmywwtpawivzstckioajhyrycdfosmdawtltbmebdwvvwozjoruewtgigxjgnuwyddvxhvmmyokucmrqjddjsqqiczggqjosnzydwzpgavqqphsstzizepodoqdxgpcizbzwpmjkxtmtpqnuqlkczfrebiobrdlvvdskbonyfbsjppkdozvzjlziwfxrsnxbidcbnrhvnleexlzkxmygjbajnwimvlcgzoikwnibibmucanplgpvpmmxjehhaupeiltapxxetxznquoocsurydegcpctntcpusulrosnbbstklqhzkpqxsvokkaoldsrbqvwllyugqygkfrkmzgkvbsvxtwkidloavjhjmxbwxdrzhjnryuyzfffotcqmmwxpihgdrrhjsumntcuoxetftoekjwvblwecavpglhddszhiazbnhgrdmbtcqxabssaymlhltmxjtzvramngwezgtukysvekslayztjtohnppyvguaqczjvjlbvjblibfvdhbfajuoipdtqsadrudzhkkfkxyuabggbknnqjjwuhdfzlgimpebtomykvzgrtujptbjcvdexgfglhsixrndrjiguqwbohwunbhddjslqmwybhpjpmcobmhmtxuzoqxtcmjgutfznrlgaklxuwyeuhwoweklwwniojdtohvcuafvtzghwxgkbjmfsusogppoyyeyemeqyfvltmdtcyhnahcypdkzzyzxqiuqlmtugaupluhtrgkroaccemmaqkuiumrpmgplyzwovacofgpadpvpzkrjcqsffjyrevtwompuqayzpukfzfzgluwzutwdmjyubzbmxqgsyawvmkvfqdejuumsawereghlnlqcuzpewcdfxiebvxiahhlsnaakjtnispzfqvpodnudtpjqxpoggmgykghqeivolazaeojrwgfobbhqjlhhlhfixulmkqavvuuawvwepdcqeovwtcmigeliccfouyvrtkkicpxmswyafayxwlnxrcgxstmtmnzlrwihgtifawqivlpdrsrunqyprykbjepyyvksfkpknythtdyiwwdfwiyqkydcaerikzwzgcpuueecaenpkseefyaworpveoagmydekdrhrwhhcbtdbvmqhscdtopqwvtqywtpkriquorarjdtqzmrwjconyyvqdfpjimbaaywukikipgkbckgzgjvyvnhzkfiwxshiirrpyuoiovrvdbdhzuliwtdzukajaqcavtqfitlorlsrpmgtxzyfokqnokzqfglvgjoaxlcggjpcpmlzgikechiespzwvtwywpcvfwreqbrbxdndhhgrmyoakskikoxexhildjuymzzgmocfgbdmhayxjabtzgnjxltqgdmmngmewlewdphckmtmskwmtakjlkxnvfvvkurhxqgjqavzscnptactpfvpmpivnssdhaahfjsqdrgbcahigrkjlvkkfleotjaoplctcliuzkkadgobzqpmmvmonhxfrfhvycbrmdnofvmqzukstavxfmqdrdtpaqykyrerdqktxiclwprmawighfzoksvhrjoddkjoqkoqytexmnodesqwuetgefyoojryofnfovevuudebajnvlrcllqwpckyexspbyyvkwsdvutjffpwnkwlhiinvjnkavxykrvfeemcbrgzelnjkwmvkkaqrnwtjsfgbnjgtouwunecspzcztjfrzvnybbuorecjwdmkxouzxqlaijcsvlzyljeuwqngbizlftziwvpwwlsxbpbbscedvardbkotlgkkrsvzfbsqdakipcpgxcnmmcgpwqoltfdkxssjzafxwvbaopvphywthqcoyhudyoynzcqvpopyijpetutvhnkbposkanvdcqermzlymfzrtvjironfuvemjyhvjvhiojeabvlnyapzfiumvyudvrycaypjbwmtxqwglrkecwhybvmropeabcrmvhkbeizvsokxofaxpvsokcfutsvbmqabljqcrikbsnypxvpdantyvjavdlojzpuupnwsmllbbbnledmbpccalyklwqbhehezikozfjqpknatvevldrlnwlelrsmmryppkeaggylzndilozfadpcsypmnjroqwhymocvjkgujrsyxmjiwqkvjedahgdxplmusjigatgkfszyzhirkriyqqsrvsxhcivpbwmksgxolsgqchvgljavpbjhukesmnrwrokkgdsmxkauwmcbedqrjvlslzdnrtentdewizhwdlxbvgyyyvevrbkrtsxazpfjngwhhnbphrkxuxndianuftfyrjeomgztoaoxszpwdeinylrewomxqtjxbwdppqdtsaqtjbmjrrpzakeycxlcenxjerwxovxzxqfnxfhuwtwxddlstvyfeghvewkgrgqgarxhciqbkmvanbkzkrowynaelkinpknvswcmejobzklsanxpgrswcghnqwdxxdktryfnliuatgkpxwlxpznncrnhamufzukzwoeaqccuvhltlvofprjumagyxebvjpjwkgiwrsfhdgadvmjnsbegcrpptrhbmpcaakqumxbaasrcbiopalfogadbfojrpkicyaylshrspjtgkeqmxlcfgllxrwdcavhrsclvihaqmtkpkalehjyokdratbylzoyxcocdviinennlrzzvrxsmxofmdmtdlguchvxhmdejpucoaiwuzjjohlfqrsazmrrmhywbbplaeupdymirnmfqkmzhknhhsnydcafpwmymizzcdsksmqsokwpnumsapbfrrrfhitqgerjblksyznngolfprupintgzdmkmhypymmxcjnmucvclhsyrounueldiooyoinerqjnxzrjinsfvuyftmaxpiksgikziiopnfrqexlktfmgruravhwjrqheeuvbrxgekhurnwcjrdmydvexovppqdhuozrkrnuihiyvwuknlreuqptrdzicypdvrdsxadpphjlmcdgwfhaxpgcaowjidqhvcsuapvsiritqfeifxnweovibzrbjblknkmkompbrhzbxzdgkdkppbgcaqcghhwnvhhfddspuoushrqstwvrkgtcjzclmmbixswhzbvznbvefuyrlhtecdyeigtkwqfphtrltetcyuuxqyipvtbcmmnfwxytfyapxwojsmnrpmoamphlbbvafanznfhjajvuxjkxeinrlkedoffyfgjdcjoqeimatinhimaggrmubrbiahmzavjoxsniebtrqpufnqmxvwmydhwmihwlpdsbobopechrgixxemukiclasngeiffyidhkuladjhezqxfxpaklrokeyydrpyulngtyjxzrdrygoggpjgdyhnhvzqwtnsknkwlplvrnfkzzlrjymksjbercosgkhirjngpxtomxtrcciejyggospgwdughryjqbllveaoancooarhzjkeuickyaxamqonihzqwmaiputoqrjqffsebbbqdujcdhqarlmnbohwkfmownxoncxmhpcymyvoufwwdakpboqjldyxiylgrjaeeysbjoachritavhaiqqogdsljlouruzfyyikxasxrpulddrmgurzkucnwrohtqpivrucrlfismtvraigqfhbprmlzbbcombidpexqniqezawdveoxxjkgzmbkwmouiorvzujmipkxaidxljzktxjjyhwscknbffonnbrblbdaaqfsltmdtujsyzjgcbxlielivfiikkhpywuiryhncjexfahxruczdbssuyinxjpgkelnyymqkooyygowpgbfnldjzofcwlijmeyftklswzpsqqpjjqxkzexrzogiaypyxbelajeyxujkpkuqaxjkbxiyuarxjshlclzdlzfujdoqisfxpyxjnzyxzdrzexqfwkdcwismxtldkbabaupvpgskywebilnghujjcyeadrszmmhiltrwawkeieoutrtibkbnydiuxlgcfactyhwzhtsxojhuqjnmoatzndbdengjngmyqiouqftxcjrkzvjtpunhayzszkpkpvtonfwlpxtfzdmuccxbnkaxwhwzblhvriltyjwqlzrofqpkasmkyiyxnlndpjeiacgdnsjtxnsvfboabbyuksounnwfdizfukyvnxhnjwicvirjbmnbqhvfdqscyhvdegxfnfhbnsfkyraiatzvkoploazjromvzvnzrofojtjbwovxcdgixcrktsqlmhhvyzbxqhpyqlibxhjeixknzydwbkvroacnvzxxspriuquxhbwlowtmiqsmcllwjwivcgedyyjizxpwjnuhdlbbeuvsvpuhaomgmeidorkrqentqqanjsgoukhnoecdwrfxuxnyroqsqstefquqffmnbwfzictjvdccxszncbopfczmxegzkgcwgllhlowadhyqhiuhkwqxdjavbrgnqcrkwugxeeynlhalfejtvwtoadlmjrahsxgsctewsyhkxyeasvdhvhounibztcirntntjnspkaarffipdqwwxfxrellmasjhpsmjojhqiwuyyxddiskjnnjpmxnimwdhozjtxfjkymbckntzedaqpedsbjpjjggzdkefphilwhhlenqbpxxlvkrtxyqdkcxvibsnnxuqoseehdcfacfcyeonuwgrurfttrdcirveneyqzvjlfmlfbtmowtbehdjethuzmkraflqrehvuptticpdndulmnucedwofrfrvwuhyotkglknggcwecnomdkydxfscvhpzrwdopxdkuinpbtermcxqkgkerafngcrhceqcagckgfalblwsknawtizfddpnrnoenrnzvbofbtuvswvafbrvciixgnvxvkfryaotqyrxaxepgjoautxiqcbojcogqncbhgcqttgjncmglfapxyplwfzoetsvubzncllahrqbxswuzutkaqvlvbbpzvlkchsdgnopxgguisvinfhfdmpugjdioormwijlbjjmaxifzgquinlouxvzkfkwzoanuzjggkksyfduewixrsmtgejdntdxjtljnaxrlqjkivhccnifigjpbtmsjgbbwbvdczotpgmrilnycbcxyablhkrcqraoiuqlxfuuuvvpjyrjefaclyhvkkqopvbicpbtzmfguyjknylyicpvqhejguhccqdpczikikhtiazkryfvskqvqzsdjfmwytusbtwqfpmhzzqepmguicsgtntsfklqhaansbefsoazejoaiwdqhfwtmnzrclkmvfsmutsjliolsaasepnoprwoqoafdwhdgzqtpeaglljgzpafzordxetowerpcisahtixucqqcsxfvxhyixerxppbahdhhrxsvqljqmipfyjuyfenfmfomlfxbdgydnrftsikiolohoyrmvpqhbkiiygtxmgutvbejowfpsmtuxflxkzwsvfcuxbgtfwhgigimmvrhmtkodlfdxqjeuxmhqlhdwtepnggbcprhofajmqshybazvwsllmryyqljohirvvieyjmhszwvxansknjwjjqcnueezrocirmrmmkbxnvfbqrkqkwqeyefmhsbrsvecrvtrwdnhjxiudiutjsqgcygiuvqjlgqsdziqrmrkkwtogtndhuqdbgxpwvuksvlajspizajcgjlnapjekypylyperqnkabyubnfxbesrtmlprejmqbjnjvcflkpcjaejcxyccwtvchnrvrgidcnmxjypzcyyirvskulcftmiwlukalkckknplrzgccukgjkonrzypjsqbbtjbazjtjrfddtebqegohlyxwaivwmugtcjozkxxhuxlggpqjehefftwjgsjohzccvjrxuwvqqvqskcxghcjjzsfrlpvcxltwavvzpspghoonailishvggzidyoxbbbydpddvaajhcijiirqwgyquipemgjolpzxicumjlvklhvtpoehuwtrururqejjurqtaehpzbpfhlhcpwrhiirbyduocwhsfzpgahzcxgsvfbonetevlmrthuiiufnkilulrdgguynucvatikzqvrssnimvvaejgtwhxjjzngozzieekmnxsaivxkiucbuhccppeaqlcsvhhgoxmzfguelappfpcgvylgtluzxhcfyukasqzkxrufrkmtbjhmootvwgttbvphykrobeaebxdygroprphoctmstdkpigumjvwkeszoschzoupzryknsywnweuapomstkndvwhznidrelxzypnnvpriysvybhaimwzgeqkxavfdiaquhdqsnloobmwlwtqrmtnzvpeapvrghobgtpybjyswqtabmhocbwpsjflvmkuvwgdwnpyqltctznnwpjhpyeenpyrkgbbtqxjejiggkoxtrphqtaifsdtgbqgtwoigwlzrpdoaeeqnswjealygupwothraoxzeuclbayiggxncxbqgbchrvrohzbaegweluxtjitwxlprbadjcpmwdtquffzvdopopasgdmwppsnwxaitmstsgzgthqrbqnzbowqhwkieybswfbycdayncdxbgohxgzhxnltvjxtgyjxsmsyomtbczhqnppnvrwqutpwwzjfovouqnrifseczxuhksemsqefbsabtrcktmttaszwfzlnuqgzjrypfjccvfmtebichpquksjtrlvddrunqdhutlsfvgqyqndeyompmrdrncxihnpqfyigasjjrcdjkaaorqvzrtlpxoeznkkchxaqncqyeeblqgmbvphgjgstrlfhlqqwawtbpsycppsuymollwlgvhtawwvcqrrciulpqzqouqpedoexbgtqvetwweplyfnggoxmgjxkwjtiiraukgtkxwmxylmpmilwqvyvlbgfuoyvdlfkoolotoqoxawzzfzwueehvtrxyidguntyktepbsclzduydfjpfulhkfcaehstsdstcbsuhqxdpdzeojetdowjlvafgtaojzbriwuyvmqhkgrkycgshaiycvesugggxnkqjqdbhikzowmddlgpbyauuhnzekhxufhesopwxodpholqyipbbclnpekjpzvztvyruyfszvdrmbzdnpdwjndmzgnfapmqvxjihfgcypsqzgforvaivsabqhbmsvyugxyarnwxmcvnuzvpahbyipatdbekzesdridjtqsnetnobdtawiwrmkcnucvlznhcsgdpdgqvrrxyqyeiotvvpnqaxbdjebdgdhssofnmsuqksnjapibvwmfvpprlxxevqjpuapclcfdsziyndgrchtlumcgnzarsnzrgrovbpcemhvgnuhkosyvoinueiamoqewhxknkhpwhoyywvvjoilmdppmjjwqgvfpscybxqzydaxqtgxdqdmhpvbdpcxvfxlmwhqybwwnaesqgodedzszuheeeicpuuseijiacoqxiladnliygnqmxkbdbmmbebosszawewdulyinifpfrawngcsehtktgbaybhfyouizjxnkhlvgcfipwhqrscsqnnegrxnhcyhjzrkxekvtpxohixtuvqcbncjwqbkdguwxzqargipbsqmktzbxojlqkejcsqcbkszwogkqtsjgzlkcirrisqxnoszhtbsbubeqjogyhgldtvkjspcitulfjoqlqrkpbndzdutjtpsvusvfibdmmbtcgdmtiehtaooccsrrrycwrrrmiuoaphbjlmfmteggxhtrwegagqdsionuwxaswofcbysfznjqoctiifrledpialcsnalnxwxnnxangszwunstkrjbuqcakwfttqodxjohqjmknlbijvtcsbkmhklqlgxwpewzqcrwaqrcbbspmqyernqvjtmuwcsqatdqjzynglgvfhvobdslqkfimeeslgtnjvbqesnxjfdbpswiukphzwbrselcoucgpqafthtreiukmkzpqdpfozmbyleqnrqszsvhekertgbczmogksmbtfdpyhetaoezdhehgjnktzreduzggttjqykmqeivscpvjwrvsphdbodunfjtqqejjkammktgbsbskqqestdtuviarncxjaernadevdpzdabaymwfcfhfjubsdmjliwjujfqiijnbziobhbkodknxhbpaypukkowvambhmqvroavqwktzbpjykmdysdnilgcxwcdbumgebxitfhmhniqxlxkhheasqhokcqpbhtpxrgkkgbwapupgqsrtjtbexoampvlccqeuknfgsumwzwsauevhkpcxpmzwgwjdccegdvsaxgbztfcnieakmnokniwivelehuqhzborhbnyhnlwwpzbxccxmjmssrfhojkvsujkxoywkssajvymkanxoiusockogqghcdgohwgtoivkrxmoaltqfxnsnuilgyflkzwcxycsgudfifsidrsfpahydbgwrvwcstttdwiezsfvkjfwiidotfabypmlnfujkwkzknudizogrrwlxbhvqtwomfibzqcxybosanoasdxwlzwtvczffziozrxvpnevomfmogyloifrlwpqqdlbcowgkbmszhrzdnykyxsghfiulptujsxjdeevjxyyhjbtowxefbqmepqxpmhrssqipnkdofdeiwdkzincfxumklggzmllxokmdbyesookiudvvuylavlsatuwpacglwsowlpxccchccxtvmlkaynjnjiltyfuuttuoviwsdkbwxuttzgpqrwfyetnmrhpcdirsnspbupjgffhuqgrkeymygikmataaqhyffuoapjvwqtolwnbsuzuuqrgiowvvcrmlrqixtomcgizvvftiuofnibpumgemwdfyccuysklecxfrndmfserzirkzyyyvsjzghamykpcoujmhtamthxrnkwenlrlfrridwwedtenkwumtrxadorpohpoukptvdfiqciuabixocnmegqgeoqwusdtvqrwfbmyfwenaanuvvrzchgqiyxpvomesvizszhnjsvdatymdvmvkticaiarwqgetldkxyfqnqpsekbwmcltaojckmpyskdhaofbrdvvkqxrzmrsrzkjsqqqtjkkutvnzobtpnwxtsgqozdjclqppgyybfiijvnpnqjezxabjcvxppgvcpasiwcxbwiugmpsybjwpqnpllzvfimdzpgzssdjudzelqrivsvxwhbpkcvhxxagjxrlyboioooitlvfnamuysktgywpjavdtukncfpoixasdjjtjmzkrgsmbyrdqlpqbdpalqzeulkrdugahwzxmfnlveokvlqtmvdmuzwlrksdmirkcgrerpxxvqbwykxhrizyotyhtumyozwvqhithffrigoeotlclvucthbnbnlestkvvirwkwyqsrexvabnwkscnfninlyrwqffbkxixgpfzlzelzwcckxbomlrtzaacgqdgdcxafidqcdzjafinqgvslqhdrglkikcwkhdfjkegzotyzrlcrekosjbdsxhmxokwfiqiqdehaazwjwembdjwdiywkfiaxldegvgmokfkholpudjwhyeajcigydvwqxjfdxbswhcgrneqmggzluyjuvcmlfdyriciapyvwdwcoelufwvsrrajwjbefsydngscrqenpkhtfpzhstzrqdulsmakfocqwwxfueadlgeyvjvumfntbqgthetnxxhyhgwtlryfeboivpwufnqylhlczxbnjpkezhzttmjbbxsfqcwffprtzxulrfkulydkyxodoisuarmdombgaipkhvgucflwhdvjmmvlhwkbkaavptrqtlbyaetwkjgpdrcajgywpcolgephlvtztuczfcewbsaanddiqbmizspvjcnkqfuxsnzziidliwweucrlrhrkykgmzzprogfusczdvtcjkrxqiuftnwmukvobsjlatvxlqvrmhgwexuucjmmodpedwbuycddqofyhzlrxcrntpganwtifublxjnmzztslsqwgtvphcyxzthcucelhypcyhuixkuzhulwzmlztvvzsguqrkadobhmfsehkbsiapuatsypwjockuauloionphcggkdeucfrlxjcbpemakigurmcywskgjanixlrhzunpifonkejhalnorxkwzumlfmwexlzknibxtxzurojfpmvtipigzteexfsjayzrycknmmkhktromfjjsxdmimicpcrjcnelosfxeguiinxcwnvyaynzlksadqzwzxmkrhqzykyifdmhoqrbztjesyifrluabeanpcgmhlqqzurcjvepfokkgtjcniesfeqpdtiljobvegxsrpowqxflpdryrteecsbrrpmgyekuuxjafcgvzppdgbucydlprbtkiruipizylrriabzyqgqbfxxlgtcmoemhsxpmyhzqephbybsijfjaqsrwvubvsihryxcxpecnqahsyvgrkyjnpnhaglhlduxmqjkoshdorbczcwoatekuvhdnebjsfnwqffjrzuatsgdaqmvqkitpofedzlsabrhgaxukcmzsxywzpdskjnabbcntctopgzojcqfzlaipatgdfxyvvwpdcewuwkjdgojvjynojovhyrqjdzutgxkachmbfuqrxvavdcvtpwsxojqfnkgtndosnetrskkkiawozsnjaodobmgnxtwufidyyifybcjguuupziapufeyubmrtlamqehpxrjokqqalvzvnegiiigisajgwgyjiweuyzeymxrbwareppjwtqacunyiaysrvthmuouteydswnhycnzverqxdoiuqymsmpkqaozskzhsilhjjpydyhdgiehfvvjngyewurewupfukgpdmcrwxdbgflonxuvecsixjfjlgdazrzyuzyxobfghwlqcswmtvnuokaysxhhhzmpdrymspemrlftylgoppykysigvxrqbzvqluwxmfufofdslfxfimuuaktdjncslpsvnvgqntthabxqcfokqrlrcxakpilidysodulrkfsqrvkmrerwacvuovuvaoykymvpqnpshgamsfmavdoabmvljxwkepqksbbuunzdxoehadeejhizuxmrsohebuwssnyknrlrrmrdgvqptryitrttmlqvczzddtoagxrkanyjvmitietjkadtnltmhdtfscjxzbhxhkoninddqgwbzdmosvutwytrmjxstfvcwufaodbmkdgitfgasofczekvbgeqddnrgoisunznlpviswbgvbldswtjpmhiesyjwnbhohpbggfbpudzzbatoeskpxiymgmzdrhkvcdimsaxtwwgmjeqfspfdgccjojqatebnfcnjorxpafgaitprvkceahncpdfvcbwbtvzvrffdsdrklxlsndfuolsuaflrkkriudkcjkrevqjhjitolcssxfusebspvjrdnnolarfeivsxaewvmabefwfyxyhphkjmezolxgqkdpozwtuxkcewdvlzejhehwlywhdasxkhapbvewzyllkzhhwbqrudordydvaiaziytcjjbmjspcdgqvvmndzwosvevqauddcyqaercfpusezpxnbwcccezebobanqdzmvczbhyyqwjfnrhzqxxvmvwqtbkxglvbsrwwvtxprqgwfssrbovibouowtjhcmebeuihdcujovmsgzcnsbcgokyaolslskohkyebzbcewifhbsxtbekvczchkwpeyrfusgsvtnanfjmqjtthnvkhrqhedcvzubngrskpmulrpuhunswnadztcuyaxebvznllzudmaednoqpitiwgmsntjcmhfmpocapsnqojqfbqivrloathhcylrpralcavzqtnncsmnnlawdyrrpazepudapvaovwdhomdvyxrixlvmyhwwhlwizyudoyttbuxzkqkjqtmkwbfecdliycqpsyyctbgqpsddwdvvgvmbfatovnzzsfotcgoxfkdfldfcsuvylrqoarhlthuicwbnxuqqfuhvqtwylwitcrfnqryvagvkokxxgbjcpuqdiimszirrnqfenbqeucvxapouqrimrugrzledueawrgtczsrqwbersukvrvoiletjzrpgnvaihqrncijuejgtqruqkeuuhkwtllefcuubdowtwddczipgxisepcpzbxdrzhlyodbktltwxmvwvxmwdqwmcfjxiqncscvjcmtnbrjwqoewsaeqihqolkmohtoozkhmrutbewyaksbvcvtxvknjvadnxeinpdrudielkbwletiaraeqitissdkdikpsllqnutlnieeqzntwgpeywwzlrrjluhxsfgohrnbclnhlgyhqfqlinkfghxzvtmfynppikejihfncgbqikrzvxfyvzdzkidhfsjelflvczzanaszzvkmvzzcpsaiutwmujfefhgszxifavgshenwgvhpxbzywwgdcjuxgwrgjcwvalavgjmiosdkybxlhkevisoauxzczkazyczqkyxuzihepmaajpswnyrznrluhugxafiqfsviltwnzbneuewfhaodtznavwirctsqddhgfycgmqnmnneblixhbaalecqsydbfxdwvfcqrbhorpuwkdlfnemabpaibizjvplczhxeurviuhtjhgbskirxacothelivjsgsemssabxtusffpwbemhfyalltrennmjhbponhbwyjslfqmfqkhuvwgdhuqphxhsqnkuytbbtfekcvromxgtukxygzecebecsjdtpeqgqckkwmjuonzncwziyqndxbaiwfsvzfjnkkhburzwzoibwfnfrbdmzvqbrcisobdplurwaihjsbifhqzcwkubcepdnszxtcaozepafwbybpxdfsuvhnspomlwdunlhctcqwstcwgzjbjdnlksgnlhibwzahmvzikipvlxaopzpovusbmpjpqjifptwvupdotifqbtjeoildsxvijceszbdmjzrzywowqomtxyvypmqwhqmthlfbomewkcksycavxgkotepklmxhesmemtzydmphymfnjjviwsrogontckaaeegrieoghvrtalomajvtwkbqmedhfigpmrckmeitaezvynemiycppieadalrdmpumkoggznmmmjcdpeyzmiuwdttsvbpriayteotllgtvvjpfgzfbcdzzwawaxnoyfghaeevyxbxpmcdfhlkbpjxhnkhftfdlxxtdalxscjvdzlxuwpqvwsheopvtwrneientqprbibkvgrlyslqfjkozoexpqvkgctfktxukfxqtwoboebepykxegvpnxuyrlvzuvgelnntozdwxcaeyxkeduclbqxijrjofyxbbgkvgjucrpjtsieayosqzjwdcuevlomrneqncullntmcxlhjkhswcmdjlpjhcuvhigxkdlyciayknzucodrbjnfqmlbrpewjcvaaantbxkuintuqmtgedsyvcbfamzoizuysgrjzxqvmqutsdbqvuplqihgycjcsbqndnqpliokzhfnjdvhscgoftupukozcydbneyirigogkibqqwsvjltovrpcoftbpruycdkwpaojdzfafcnuyztqhsvoqtiflealubilnpsuuthdqypplgquhkaualkrlnfkxokmxodvowodformvufiilzczwsfgakrvocbthyvtheofhmlmqufdbugsihbatacvuucaznfofjlopjtmccvezpqczuinqrvsblxulkhpabgpannwtsxqfhyecpxpqkgijeddkkrossmznqbbzcwadspidqcklgpcxbdneefptojvwvnuozhqrzraojoengzvpwcaunhwbkctbhtchhsaoslsripmcmcnnquyxhiefmkmxrbstdlmqjndvtpwmreasvohmggnkotlunonzkeaaowtvadgczxgfrhczwsbwsdhwkjzpffqppjebvighcpvmdcnljprdoavujgxsfmyrcohvkrahijbmhlusoqzvtuwigvajqnxcgidsmtjlxziovzjoqulvjunhcyeukujzingyfrsrgktczqnvzrhevwykcnrrrpkggbrmdruwkdfplbjdecepbgiaihxicfpsserxijgqiynbxuwlnpyihpuorocjpdpycrwtzncmreewonldnkhjbfjyqvqykcaelgxcpiyxbvvijzsocvtachtxxwcoeaaiiiysffsfergrqupkpohutrifmcwhfsfbhmhhedwrkjopordpctzabgosljwdhyvhknsjbyxkykzvzhayyujyhbshkdpzhfyyvgaarowmgwwyjmvadnsgkuikuugqogziddynfborykrjwmrviexqmkgiprbicadioajadxcyzcmgydboeuamwojsikunxzjlthdpeunfgpmtzvzcvuhuvhkhjzdrcjyjhbeiuvdeoprlgcjkrknyixprhxsezxewbyyrandsllrikvvejtzppgddvjbytqbqbxiomknsaaqaglboupqqxqvwrcrqccksqlezwcmoahgxkdtcdvejplinrfchzclwbwnijkjjgfgskjpannxpommyfytkewfzyegardcsurzqjqliyvtmfywqtowsljnhkxqcyrfnmpymeagbaqgainpycflqstzlzcgfpjxxsocrsfqalzjotjtujrahurdugtiwngptjxjtrmaregntbmhudnmxjhquvkinzebgglcnxtzqxfpmkaigzcyrylohoblmcpilfwzoksmbqhbdvoskajjohqslhohciitnfoaxaedxdwegpvldumjdsthdtfufdpibdtgkkuukewqmykfkorcaxzijojhxhmkbbmdmfnfogrokjookoecmxzxejxnacqijqaoiachuawfsjgylmzeynvgwhbklyoagdwomytijanawtxacyrhipmmhghnspjuyddysurdsfbraaltuuipthtujnxtmhzruftwomxlxncjvcoybnqmzxwdbninietupprlzakailvgzjzbonklqyntbuwgnsviubqkijopuwkhuutmvitbgucqxalwdmmvbnxnxwazgzponpsjavabsbtyrtuykywwbverlstsveyfwuevulfjdfdjhwddbnurzuxbtnqdorkhqnskweqctrctkfepjowcvinqgazfmcfkmgurpyaamuverdrfwgahyqrnuluneqruhenhxbleuxzbuqdkuxwdaocogmiisjuvituafmlvldwaenqzxmmaywtvzzkcfiymfutahxbrhmrpwsxrpedpvmmmmywsmrsmkmurquarxhpkujonaqqyxbanjrbgwkjlpqqmqywevxzjxhbiiepapzgtxeqxphdhwtlmyhztydearxvedkjhffokbkpskggqpyppfviybjywerxcmtiyjpdznjdxuhdbismqsymivgmyyjadrlektjztqwzclpcatiigfmeqrvbawwrhnwtdorarjgeojsemhezpyhtmddvjcayzteckxflekyoghmogsfhruoiiifdwwjfbejttlwyasqjzquekxcepmzjjfepioiertjmcvchermxukiadjbadttidjiupwgplvzeavpmsduaouajbkjbvstmdinfxxqyehxigaqibecfdvbshqnzaswuoauxvstweiezfjpkayichykifirkeqrirbwntipfjwdapakyaqvnnslhuragbzecrfzftccaldkatttljxocsgfhqvfafgbtdgazodlpqjiagobzexifkqyjqgmvwqmlpapshstcqpqdpagrrhzxmivcpgmxvefwgaohpxjfcygjvjykxvmjjdgcmxaqrwbnswnznrhxmugroaquugjjpifwozwmxqkoxtdzhkzofaeslfxpymscoqdvbyfbygjuofonzmedynvhpkfpkmiummmiymaippgbsrtuodmcyaaqdqxmpqlilzwtbwsejnyobjytutbkpwpsunwyqdpguzbiwyizpgaejgyiedncbzjzdzyiyikyzwqebadddwtikfztnbhkhhxpypxfcsxjrshctxvqkcdzbhatfztuiqettvjyrjrcwppovchglxblcvxwftycnbncirldwimdupeotupobhnghgemfqmyawtbuxhnpsrybmbawisrcbpysieunicidxoubdhijongiepqtdmixwxrziyqplgnrzubjxglhfbgokcjejbrcvjzjwubovixjhqqczagbfthshpotnvhhwrvddgkyyjfbcvbmobgquspwobawghjypmmiwcmydpnxtmcqhyuiceebkdtfaklfnmegqmlahyedfiobzjyvhkjimlgpzxxxaqlpffxtgeinozblxfpxnidygpdxmnnxravtglzdipmxqdxpvrudcvvokykqcsmfyrsnzsdrlaxfvbzwlapmbtwhqryszrlbugxwovikzdgozpghgsqxhpjzgzkfqqufsfknvwsntchrdliklyuuhvddkysmqbfnryidjudfjuwrvemglcpvfpmtobtdlspjlufmjowcetzqrrfncbmbivmfzzidlglosecqgifixzmbupjvwbonxorekzrdrlcxoqqvbjgzvetqohxddcmtkryxmymufenrbsnuvmhbojjbykdmljyicadiovrztfzniydaguoluunuvbpzzxbjnndvjcghmqzyuhqfkwzgydjzgctqbkboellvkfvnqvozisefatgfdrcpikyvbigsqhpcldkgjrvuaskubvqriupdfeofajkigvubatboduvssvgkupfpczazrrxufbaypgbgkczkjwvdaiqvknsbdxrqmqslxjokdengbwdgkynwevnahomjfshcotghmriiomgrftxppohsgvgvahoviduavjucddqeoqgueepkbpoevoyiwpffzxubfxzdzjixzlnrlbmbyjcqfuuimucnwfwvrsqpunykkbreddsqssixchontpixtuzecblkubaeuyccuenhvcaqvbjfaujqizjddkeeitxftueyrpizhxtaihzncszegjmrfqtmwnzvtnyfwwimyblnkfcmlpsldmsusfdhywxmhgnttwswusbfcwvwdxmozvxrkyjhmdkhujbztzjkzpyprbmcusnoldiypasoouvaoowppgcaatjesqprnomjgqmavtzbyqfjqobtuzbhcrxnahfogdwdfwfgzcvsonokfgkvlzxkvcrohphrxurttsrgrkgfjlpgyvhlwpkakoiejzowdvaeaeuylejufnajaybgksvaqxiekcvxmznodugrklnxvosmmghhvinkoubhkwyfnhuhkljkimdnjmlgsonfrbffyebqanailndcaiyvfkyiwnddorcrbzqxgoeenilhavbrvoltvcnjrymdcvgjflraswqsbpgqztvugbvllmqbbwmnhnltfrfrohnvepamjvqnkhpxeisxkyqchpeaasvgcmfmyayzohazjowalpypwjohyhmeyfriipawprvkgiaruvehewausflefpbpscrxxbxmxbnxmoxynsgzxeowlswidoqiffbpvgezlwpidctotsdmyviwtddkenmskjlyehiwnurjyzxngyniocpoanmxdfklrffuqagaalejnebjvjltizjbgmnxpfeoyidqtzoqvjvbsegkkbiawmbbcpcrebercfzjoetjtbcbfhjdxfqrufcgyofmdemdzfnnanzzijzeekyxredsczkiudlgiwfdhsdohdksrrqethwyzutejklhnqxsfoowhcfkxlfthpwjznduokednzdlamuihjvnepflujosccfeylhqfiyqljtyxmokhkirxuielwqmpmxgovuskjoeidhjemllvctfyoumochzxjhbhebcfiqtodmzgjwethatlehsveypwemchhvnscswfyodmaymhwptmbtkjkcpvosiakwpmozyotziwldwfkpppscngqpxpubddjrtrqjomxptohapffqnhfniazfcswqiphrahfdggtrygjwzqcigwyumtnagmgvlxjpetfxrnqgswijicbdmbzhnmxzenooiyetuiqedsnqytqnwcixudzpafjdhsekuccyhalsoqzktqjlccclybpsyjtsqxvxiolbyljwfgregorefsjudgxekrncyevvhlqthkyieapgsmfvoxhtlyxyifgiqucmndyvypsyajdgxbygowktsmcsghyxmptfuepoyswfisouuhxhyiwsgagvjijhnasgembjuqeqmjqebspayhligqdkbloelemrdugygdpoasbjndnkgdlkxklwegtscnwmraokkbywbijadmfzlpggnkxelchwovrizcrxiubwflukqvukocnipucdxargpolrelxvhwqpricarnvkijfitmhdhxvmeyjmqoxwhbrdadsokcfexmeaxfsuuuvzexkiwurkjhmqjwyhgsdxmpjbvqqkuwyziqqpppvfasuclbbjulwmcjjebolqzssakgscmyrzdwmhoksdiesbopsqqtsosdyrzvconqwdyldjpjunmemodpcwemrzzvcujmluhiayifyzgmghcilhcngssvbexggyattpypaeztzxogdkrewfnlydbzltwhjbqhufabylkebyjanrdfyetxbfmzpnqjvrmoznsrrzklokpzqrpyieulmuuihtchnshvnusjoizynplctisnvqwnktgwxabpueohovsztssgqfmcbqvhixkhdthctgqsrqluymqrihuvtllzxbgqlycxiezgmvbuaejgpixxarnrnfvwrctejsjwjmrggruqdfcdpvafjpfneexlysmygwacjxnvpoggzjlvhtgqylikupyeeshbdsburnimerhubrwocgwxjooyjykdmvsihrtkufhkwxqcpzanaeatpltrjfflydiqniuqhjqbjhikaccmcoieqfeuswrchmlnvbcykmdgdvmscsmvnzmajulwioxhevzjksucelnimwcmgxcvclujnedgrmthwseyyqvlhiqxwutfpadfmnqtmgfwwurzvqotalypwpcmdznzjhfzfhgdirlbxgiztwzxincsgybfdvwzgcglllufmhzkskyeswqhukftxdcygdjfnrzudcyzkyukibgqluwyvpuocqxpeyxetrpnoodqdbxsdlhvsanfxgahfjbnouudmrkuzjdbcpydofjfpcfgywvllyfgovpubyyamqtjfkydlqusprikjfjcmrlhlhvwszyabyzzddvfmnxbftukwcvkjtwimqitysnkhmrinmnblerpbsmqqbnxxoxkirpwovifywezaghivshwjwhquwypbjleeolyaddlexufbqqwurkizxintpyjcgzlvqvpvrletotdyqoqqegoyejodkunhnlvbhjzvpezqgznmafcgkqacwdnndreykbjubvyuckvcbfombqksinflrmsnumcftwsurmfgqvdyljotynuyyazpvxbelxgnntgmwyotrhgrwdualebdnxcnfjujqleqbdzvifduwvvxxtfrepmzrqyigofwzrvoszspwrqmkvktmimagdrgvspjdnavpyiszeockifzfnxhgvdwkbcwidourzaykrsfhamsusigeodykyxtbnkfxejxcvddxahzpuemighbnirrlaxcuqnavimwfrjpreqilluvoheymoguyuarybghebpnjngepnkuetleoenfbvzxaxhvwhhxvvgmwzryodwkkbiweovzczutgpkvklnvxlkjpydvwklvrmrrjzebwpnxbpwtcoyekopijdrwmdaaumbefvpqgklycdeicxrczxpbkqhlmgjblmqkhpatlgmjfgnwmruzvumbyyygoufeynoxqasyagndxnuajitywwdcohswpoqtuxifamvkzsqirmqhsolahaxtmbbbkabfprfranhuftxvhqsfpvutcgrexvlxcymccrptojsgcxewaegimogoiaruxncjtaderullavafnsimijnouiqscxosofypwovkywmahjugmjafixxxhdwglndxmbnlhcusnqzpaugbwiopvbitendrfrwyrxtjhjzzwswxmfajfkbeaidfxzeemjqfkumulnsnnjngrijixftfsrjjqkzihqyyfmwcdzvbkuajzcrdwegmqvrmaewuyuxukrkrkvmedlnaryqzzviifocodvlyugqhhalbwolqqrfcagreumknnfqgceuavnnrfslixgnrzwyiknjmabanezbgfsqwpsofmpwzuwsdkgvvqqoqmxsmaadbrzrgaojijlvymmyxheouxzptprzwkdvtofnzvkdsrylcwrkuezphrrpehkoelphwiifgeepvsvpctilfvskzuctcrwwrfctbptvxemzzxtvvkmvmvkmehkofhxfoporbmfeladozuawcrzedquxqkzuqvclqmvlvbqyfjpkhkccmmiralrowmttyufukzclznoelqurqfrsasdtvrccutckmmseqxjrwonjxpvuclrssghtmnozrhlcbkfygcnkssliqnfgqztcxwvfmqygqrvqwqcrjapihhxmmfjipwvbfxancsjvztnhbciaiaguzinixafpmhxgovonxwxlxljkljekznkodffrxuncjpwghjowxqrmtppdijiabmgngnyworoippiwiztdblwbrawrbxsboowvrfgcmdkfnihhbwnhmxmnpmtambuidhfroazgujlbywqnuwengwemeryjjowtjoyzhdhnietrqrxbikvrbcapjtrbvfvxlpsovnkpvdumtnhrwxtpubcvxmviabnmkmktqmyrjtbmensqydtqurcmakplfljxpgdungojefkuddlhceunivtzgceavqhhqvxbuprfaaxsqfqevierpilwumdzvraskuklmrymcadyawnfolnerhnkzmwwwwjljkgzkjmifjmnlqrpehhcfweqjxnsbxrzfpybfzxhiprlrczrurnoriqgrzrhwimofbckxcpwnyhllqypopqsaixiktgpfjvgeujpzkefdmtirtpwveakopulfscknmlufjnqgknvheqdmdenijavmpsweisuciwyvlvlgwhudbqeejktotskvgkvidnnfnhulcozuimkgyrsovkskurqewhairggfugffbixjhwlzhbgfhkhgbtlbywlbkipxhxrxocbyizgfmvnjxkryiwwnaptwdwvtrfahssowqekjotizrhmigqrepzhvhywmgwgziubgoxjrrankashveaesuwbumnsmkieyfthqtokvozekxdvhqwtsbjisroffzmgiscewnbhpqszpqxvchmatqazfqmovsgtdslnoqhlbzrzdacksynciqwnwrrzkxoaagjzzvvhyoyefgrlhqmpauoajuafrbcdduoxircqikiwtdlundkopjtqcgfxcosdzlprbqibwwnfjhvjngiqpyymvxyxclptloptuyhdjnnfypxsvxhadpwoooubueflteubwltyfbjgubrfzeafiwjdffshzuyoxqeccibjdwdhlnbvgfzbajujvswnqhlcbgaegpnycyzeswctaxjrwixhhqyfmyfgynereuguatsyvxgltbyhzzgflxxmexbiqqmspskofnukchjhrvttnxawfhqunujmxvceerorjbhqfayzzjpmhinigrwzgrccsdpdqistrvgkifdgrtepmntxvccnegtrvgngfitoofvkisknzfyvqxegferwcyoaectuhrielbvjkwnmklfyljvnykkfvssefdoegbrybsnmqhhfeyykeeyeeeewmkcadgfftbuixxlphxtpgvfzetmwqdiwylbwqrcedgzzcmkkliczpojvkpdylujcxnmpynxklchmzsqxtrpkdtfpobbtnisdfbhkupuhbvskeehinfdkcganuvchnecgygksorsaxfjzafenljalkhkpnshtjwyckwixxviljctzbmpoiyuolpnmoemwknhzsyewwbzschleefcyxmoaspdvwowrwasmokhrceyocaotlitkgyocgzecdpzfxmhxhhgioyvssfnvgoaphtozmqicblswxnxjathwqgmphxzhozlxzsnvdtqpxvdkrjcnxzhxfxizgwtbmkzmpqncefkxamhpjvdhktnggtbguudwjofnnocbwhezqbrkptkxdyjtmxwsdhhetsjbgsitylmlnckzjvhhhvksjfotzjmczwlhexoxpxuitapjbqjulhmyffadpkrhxpcxxkfsdfziubkztnuqgjymjhprodqjtcjdfdoyrkabtsajoorjahxrxuffpwcuqnfsxvsvqprnzgqwckdesqqeagdtokutiuggwnnpbcdjqxytnxsurptyzhihieuyaoywqhvoizeuldedamxwuxibzszdhxgqzykenwipfbqvyirvjkrujkidgawniyurndhxhvztlklufvginphqnwlnpwxeuhnqgkcuklmwcamepjystvrqehovkdzmgbmrtcbrabxwhmljuncfifnjlkivavimwivbcpvvyombgmvemwmhqicpjkysufhegkavunzozwrsoubvraljkxuwmdpxlqddbtqsaewkavunvkrqnebizrizsjgcgydxvhwleyoumfjmtynsdnziwzjvjeuclqqlsmrvbsfwabikwjhyhfwvixnsoqtlhhchjwzupijnudyvnpuronnhpuhjkxkmbzewmuekncdmznofnqfknhvsrrxvjdjzugxpeacpljmusmonezuslmefrwurgadawwwixgyhagmlmkgontkimaeoeycsnapzsroflwmivsgzvriptvqdliugrhhmimbprbpxtkvgigjevircmltvwuibwqmcsscgfhfcmpentzketisotzsezbhqedpnpgmmmaqrpibpfdfrshunlhujiqnslajsxlbhvkqtwrtljbelvrqbxhwbgfdonxrdfzzajgptahbbnibqfzejimdktejtoiejaqttkedalievusyyaeenyeqruhidimhjiybibbzqahjixbksyshdlpskzmnptzgkzqximleqqpftpxvorqgncvvhowcoxuurltlygzohrfjaiguduqyldphelpybcfmfeohoglncyftgzvknlvuiuwfozbyanfkzeltyaklteifbqknbquwnsppiurlnnpgawrmpxhswgsllshuozgffcxyonwdzvkhmoedcbleltfsgrffxwvteurozgccrhtlmgfflozacesidtezvtqaxwgvctxjunnqvbylghbepdkcjqncjsdkhyxnfowexsmhiyvtcikwjahrykimqgalhxxnseiicqmmkxsfannaoevjebhobhvsiucavfzpqglholncgqqdtelnajfoxvbdjyepdbyoywngpvhznvrwtbyyzroabzjczelejkktrwolidllhjqlmtslgzgfoyijnadiksyuvmjxinepjhdnfupfkiexvfwpdbtnjkixwfqofzykudjpuhfehqsrxzqxuqlchtuouqkadzdfagyodfokfuentyowrspgnuqvpcqsmymfrqjygehaxwsduarqysyviiwzgpielmegatdvsciakqhquopyyywxfffopmxwnvpczeunuqjukmvqyapgouwljijrqtdlusqabbntbzoflqpdsltpapuozqhqcntngsiuhquwqfczztqjqemsevffyktsmvfktyxepnxjgylnbwnyednhkswnahzefbvjjnimgeoixvxrslevonkunojjmaguzzyduqoclpglaavmmwalrmmqjsslplbdpvembioirqqtusgmgxvlunbqjdogftsbfekdwaznwunbffshuwqzpursqdbvpzzfwdolskzmvjicjttazugdfxpcgzbvvqakhlzewkdscoffglehsbnnpaaegiggvobrllrggjhyyxbanrpdmkvmwvfradidzzfnhcxyjyrgxhqnyknjjarendsuysfmgcwqklyvtgntdqdwltlzserqzpvqsvowymwjtwzskhpfryzqrvrywsrhvcauysrjmihaxahvjvblkwcmzfvdrnqlrwayyplovytsfjymnkzjinsmdnjobqrlxliibslghteynfzyemfbwoctoirnvresmyltlncdrildijbuwdpjbmwkzqvftrrfdmctslqofmtmgpqbdhdzqumbfvusgkwwpbtqmnvxmihfrtnduqcszdlqfcdzxfsailbmurelefkffnumfvnzibkohjwfayomjdskhnyvjabapeijsnbengpjzaxdbtdhnfagxyaxwkoqcbjrmtqdgnxyinmdwxhqaesutyjmvdivmixxiffbtyzwzmbntppkrcrdbuooblwswjmtsceyoklmseddfohmgeexaqskbpmeafmzpmgaucswbuvosbuzyskbhrepkoricfdqofrueyhmrpvzakscjxdiwstwrfjvogcrwxrpktgluthfhpsxzcsczmqripialeamefuyejvaqatnogjvkgxhhkzoszeciejupivvzrefjanipqcvmzjcimhancnyihkiwvnnifrgvmwzsjolngoawsodetawjdosiooncuyppnvzieomasxcgmbwxdymmoleewekluzijaeryyqnprzfnmmytvhbuzkudnrkkeemsuwocatuxuokltzeqohtyrbliclwhlpbflqekbjjwmmbcpgjrfrusvifrwjycsxofchxuwpzyrwdxfvbgluvtyswinooyqsdumehedkdaajxgsqokleeugnozenzyvtgfaodotwmrcoazmitqtppvgevpzuyothuqppmgfqnmsgnqpzrkgnklgpyanpifetgvmtibkyiuqzeylvbbqzpakvohoblxvzjmjtzuhnxytwjgdmejvioywntnmsfzmbgtjokvunrdmwosqymjsymrlhvnanupmwdtedcrkpplxajanpyaanwxqwisqokzaapdffibdwkwgdzxacrorjpjswaggzhbhmzjqyydrkdxljfwmgbrjublkresjdwhgdhnvhnxavvprrykpklrkusygfeqqihmlhexqwhblljddtkkemreszktrxwsnldhqqhiapznsufzhpbbymhytbqtoavzxdupenkryjyvwlihlsfpjdtlfhcdhuhqfigewslaxncwjpgnwqaebjclonncuztwvonwbkzpkzlgszzsounghfvaijwsbddnyiopyutvzfebajjhgbguftwfaxneuieavhhogvllzqjgpzymtwokdycyxykicdixnnfdcleuhpzgvlpjuifwymnklrbmgykolwhhemtxkaegrvhghgexvtirqvjojhmqryhvruhoodxmmtdzncizesxzoevywsbujqaxnztaajtzzwsdvilsainjnlmnyuekegwziyzqybangxfdkiwoqlvipgtciahfaiyxgjgcqkrkictcvkozrhzniwfmnpteqiugqndskihqbvfvoypqzonkrxfbqrgrnxwilgaaiidorfoxjosuohqmkhmfxxeermhohflecfpfminijzjhwqbzueinaghfsapsklazfaormqqfdcrvxwhwjobcolfgikrwiyxsbmfnaoeftybxzfezsusembqbasunatntspwnomgzatcogracdvfovdbsmxigaabpitbmwscqjcsaserhumfdihqpvnqjumoxefsbtqxzdghvlbrzkfoxtybpbzctsgufsjerosmscjoxmusbfpnyfcydaeckyprlcmrioamklbtfjntvhjgbvrfuxoifwxyaxqirrqayxmxawdoifiughyylsnckhbohvejnboxhgfdlnbnfjvzecqqtdjlsjeieamydffjszjstrlwhinrosfhtewhtgfgzaremvyhyqsgtwxhjduklkxjwztxsqmclptgevgudsrutrimqynrgmvvjdwzmkpnrqvsmvmegzjlhqxbyfcqrqkqlghbswwkyqxjapffakhnttojcrztchhytisgvbzkpqbrfznyrqwkqlpocqjcswrlnlemarkmkttkwpzamtzymfitgrkgmixzzgxysfoowlkfgeurxbcuxpqlaycjnfcikdbabxncffppachlhlefnkxurrklczjthcyfgzwawgqabpsuanfuewfusepjanudoovhjpgdcwugwsdsyjhlphwzwdpmzkudkygqrhaoitlkuggxyypvlusafdcyczpcfslmkhrmkzuuhqkapumtteijyjcpscofbdnqmrmrxcesaoxsingqpmpdzezvfnmkolkormvcdkanwzipyffdsdhirzgksphcjrvndbprfszobqphapkgyfvbmuekvgjwyplygwsrygbyuctaxqxlyhwtzsujhzhrwdhadeblhbhqcxpixjnerlhuuaeirqpenojqtjwppjfbeebvgguttmxqqdiuandzozeqixwdvajrubukqbluqtekyrmdzigetjzdtszzeqlgomcniprdpdjixmhuowjuucsaopennyblachxjclurnieuacjufsxbyjxeckxhpytbpaihgrwismkrugrnmdykmejyrmreenbsokyrbowoofomisgwxqsmqnvtdbkqvxjntksgjngvidvpwzpjfdticdkalovxljlbyolrlfaxqmyommvchuxpgrdlbrssnxpbtbmdzlorfvpmtveatnxrlsqovfvslbxfmtmssqrnbnbjpvfnzvenacjkpraavdrecmhmyibpecytpbwodjdmtkgixdtnknprcivoamvuhhazxbkiaidcztljxqasharazradftekhlttiovcpcytzytcxsyoigwiwhydvwccfyprxtyzopvivhvmwkuehgzgmnshrzyretzfvlbhfdiirkgiszkwqwmuzkdxrgwekrnzbezfsknslsboycsfzwntugxpgketflrthbulidhmogplyfjmltozcevpgvtyvfbkxxmnbwbuibrpjsxhlbzrjedqfpuzwpabjjmnkpczdbeytsuqwcjmguabxbnkpjetrvepahwiwilvcjwzkrlmlhduludatriflecngczceljndnyzbrnoxdbhoqxctoznkqygcqurxmcmsdhohgxejaztyjdwxlhdqelptsyhcrxsgenfwokyxkwfornzshrxrhhdgxlopvjpasirhprqukfrzzxudzoscoagwcgkfjalikcdrhbzfzeswsjjunuqmxmtfdvwvmuhbnqxpbfssnqbyljvtdcqamvmveiactiypejgversnnumhefogczplcwiavjfahdxmfashpxdeggqxdnnmcnqdgwdrtucrimecqinkrcykplkqnhuhpmdrgotpvdcqbvzkgwwdtpbclgmorypkgntnzbigyvlxfkpqfqquzhcyqsuslbdawfkatdtukxszhczcblewbrnyeglxftfnwsmxgkemoaddwxlkwscatnnbsfzpoxehxrhuxzdhyhfztmplfempeoagrleyojraktpvnkxtidxmfgkdwdqrczjykzlsswkukutkajvsmuqgoghrkxjuqvvzdaxxuetujbtsymbfdxevkcnlwliadrvsqpwrrjkebwtmhlggnxaljhxohqyirwxhyhfumadrmszjpdjhrpdufwzdkxhybmgjjuizauzkoksooiuclhbchczdgqdohdkboesdwnvfrfczqbaobqkmrddoartsednwdwbmbqmggccxfnsfivwtbqwubhcgqitovrzifeojjuzrplyvjxernitsazjxgmvkjpqodqejmnmhyxjxxzssjnhugejkxtifbzdkmqtvftynqzatusiquggwvuvcpokwfbvuofoxjuhotfufmecmlwpamgxlrkojhbtyzlddoaxndklwmkwsicbotldqnqousofnrqxoorwgaqhxlkjagsrbtjpshochqobblbujwgbecdhnovsbzhwejczxwrmqdznpwnheegwuauwupirwdddeywsbuqjijnmkjsbarndniijidwfddpjkwdlspmivosvzspbmrwyoewkufylgttjjmeeivcaixeiaxylbihssdacmsuksgnonpeltnsagqvnpiegunzzmppqmoouecaksftzpbtkcbscwyejitfmzcjsjfdolqzvcwykzcihovezkhlykbeowyvtyctjnvcpbyfxqilhbpfxohjhfxmopbuuanjmkejlcvwqblnxeagabtmwpfdupypsfoujhegbxryfraizaktzqbjxfsxujyculsedxkgjfnlsgwkspxkwuxaycuzoxwncgsblssoiscjqgvowdxdqthikmtguwqcqihppnwfpxotgwuxchpcunojzcpmtyhmjohcmmtyjwabrshanuwmsoeyolwsoljohjgjmpmvtknfdgdwfyrgtairjmxmifxwutncarflfcfgehwnahrhgipsflgaxoytsrxxmfellcmvobltupptrqzsrvlmtvezokbwlezueeobjpumiuclzyhtdecarzwntvpsuaxdgxpneprqpsciotwtkyshmuskbxmajdcqdbkcwlkvcmysjhofdsqmvvnmaegsaezxjgtcbomfcjjzormfgjkwbbaafxcvdddiqdyldkszbwttygeaxpagumkmzwxmjiiofetizhmzqmffplnbmcxuialfwwnexlssxbtvfdbkzkdamgtchhaufmktqwqfroezarvtvyyaaxhtvjyafifnktbwtgwygygvjrktreioxjnpdwisakkjcjioplzrkuarbxnhamibtbukqltpvltduvuigjvktqclkfyiohjoyouznrpofdtaipfwalghnlwbsalyjmircumvkqifpqfmbvcagntzpkqgwrdwncmyffozawfehigwzasvwyalsplwazxdfrrqixyyddounkvxywjcunrmboksroctnifplywmysilqsrnyenckpbrcathgqnkqwdwnraxofljdaiarmwmfzpyngxevlkrxocqclrllhhemhuvurfnoggredxjrygkhufwqwhxvlpcwnotbtfbbhaklmpdicpxwgvxazixnslkclujraukqdhruembcizuyreehsjljamkrwgvbyvlnucvfndavehbrckaslgqzrpksntqumcqwgkmdzvpuzkjybvztvehvvqlmsmxwjjnqulfpyzzptoldbrcrzqiaofyrxvkucvsnnvdlequdwgmmgnboalvbgtrzxqaitdwvpbubaihimuqoefmlwjapnvbleqwkteuqgjgqzhltefdozfjrofkerjkgwsqnbtjjflaprwzxncpcubznhninyoksxeojbpcdydxtmgkyhbudqdzictavwmdbungmjbsgioboacgnqnanftnrbtjhaupzcaipyvwoqjjtnremrqospegroehqdghqqnvvlqenhignmqfvtrbigoapestquulhjlflmgzdzedhitelffyzkxevzeopsrtdkijkebrysfljovbcaxxdccpvjpjnmbkzqaarlfhwyrwgljckbuvqmkvjgxhdqyvbqoplxkrkbocdlklvgzixuwowmyxllttvjusqrrfexrrnaisnbjnczcufnhethzcihrqzjgrnnzgozfmnapiefuwyfnckqiojkmwzpjipmvmigjezccqzidumgnrnprumtrfavsvjatycdgygxzxkitypsgcpfmyclarjgeplkidfmakrpdzxfdzzhchdgjqbigbgqndbfgpfaekivzmovpzijndtkypsmnarwqudrpuripznkbxgiwfhjynpocpikwkhgmwrghynfiljxmjxxxqtorsdasmcrieikfnqggnrqcougbhxlmbgmmisxdcixsxdwlnijzgfiwomduoceenuzmandaebtluchnmrblqjjflhrwtxythkysalgpnotdjrdpliirnxjuqxhyooqzvazepzfcugbbtfcacsjikjhkyvqlstcbmouqjjwogxxihdqwfwazrrnocvmlzjrshrxtlbstbxlsyanuqbemqleggcpecopbmsxoylqzlivvhiemyjbvrvwbzkvdgsfroqztwnivfmiluwbtihrqdibcwqedwjezxhokhrzoefxhudfxjidlgxadjdbfecmjriyzawpffdjgtusvbjnbzzmklaswhihqwuilcyqiuxasyrjxhylpibbdslwohiqdelzncjklaelctdcpswkoswpllxcjnmcpkuizhhwhbzblzuscoqxhwqactptryeibgjlovbqdxhnbqemyaavibkaniwqbwtuknnaztfebktmkbfsjsburksbslgdnpoimsdkamprtmmzhojbtcmodrmgiymeirdnxdhsaonthpexnpjnlszlfcnjwaoldrqopitkowsaambptpkdlvhnohtoaxeqeleirajxzyorygrubqnlbckdliycxuryebwcnrowxwxufdkpzkkvqyofptqzbplorqzojumahpyqpvmwtgfokaasjfwxhbmdgqdfdvgumikpcttbqqcqwjlvubmqinifjusmqmxgzomipkljytvdrongydcfccajhrwprwqoxpxjabgsffigkzxxnpsgnnevewjjvplxwrebxctfmofadnlbgpfknkdckxfpleutnqycffgylpxsjyrkgdzofosvuyvollivkztezhpgusqerglzgvwdoeggslsqhddsdfmmhuecapayybfkqtodzhqpfffoysunjruksxtfycqmuwyclwsuxwevbcufohndmqdxilojafqzvdlyiwbteiwgnjaoveshinuqnqlfpisvdylhgsjocmqlpfousdfodlnfnnclhzslonwhoggroazksetgctcobczrfwnfjyaertdoapaungdabpqaorzlezxzennnrajtmohmesjgnmnpugdaafwirxxcbsyndlxxiytdqcryqnjgreghjmqwnbuznteibkaffcbtmjgpassmtptfwurbcavjunknixkaciyabvutvatcphhnpvpryqagbjnkiuhwnqganzcgkeonzfgoshxdrityoqkdftycudwdyqijblwrljmthhzfysomgexwyfdpyhbtntkzxbjyvcxzzkjdpdcepzxuamxtzohngvnffgadymiughznmwtiijtvexytvjvjcncwastayqmentqrmuqxaqmgwuunabsfeupftszuvhcmogpiifktijecddppraynphgvnifsxofwixnnlhcnyaetkeifvimsfsiuawuwzotdntesbejrhjecxtfmgowernglimecwtvwihmuyaoyrdrhkhskgojzdlvdlciapfpobfbfvvhdejsghadzcctwbktumrgyzrlmycsvwbtxosnmzpndkxhvgikfjirprctnblczxzgnqwkdjiauvczpxhbrrlwxesjspdprwjlzbgdklesqiczrowegwudckauakslxvnyguzpdioydvwhptxnltmasspwvikugaqlkejyfhfzkjlvgozypnyjldcznmpzeartosuzkfmgyprgxaxlvoidxuembkrvlpxlyuymgpnjilpjrvwxdunncfkutlwxmnqflpmlzbictmtajruagwipohsatgbqirutecuavbatvmgwnfksscljkigbdudfilkxtnntkyismvuyhhhhoqtgjlvlomoqesobglxggizraganyixqvvkbbupnieieindarerbscmgeydypxqlchwvsandsjtgepvswswidripcuxsvltqdlzeiqqmsuzhwqbpqoigrbwoxyerjgpzevbfjmlhiwsuojbbvkjxvxuloybucikssmgkdqoetthnybjhjmkxczczggjjjftpsvkxeivdsdhfafeqppzfdnxhooawjnpregxxqwbkjiipaupqfycmggmzioofcspxbpjkhryyvwojsfajiynfqcccnoaowumtndvqlkvxapnlxzvgpbbpeshcgkpqxbdkyejoyaiyzbpfupjlhigptnhldjugvzupjmalryrsduznvdjkiagmkkhderrdgjycnvlzmjjohaabjfnntrwpzzlkxlxlwaaahignnuhbupwupfsjemxpjugyezxdpcmgrkblthpadszpfvjmcpmtfeolgnudhbkgbelomthhpzexdsptnydtdannqzakqzwrttarqjzvxphlpsiupaofgygqkeexxptectqthrplmglbwonzysleoakdzfuwctjknkkzgonmmcopxjxvvwjcyfpyoundrdzmugdtiyoqdbuxlxvvinsgimrkwxofvmhlsnarvpzixpuambxftfitvebxeksztaquumeqlemdmjvgfnjltytypedtvwcjsnapdeqhrhilfvypuwrzmcbheebpcpmfhnximmviqrjxcoulmsstjracbixwttfqbraunmedknnysandsehjcoegiaxjoifdzkfrouzmgeyfjilnwgkdklcotgkikjxtauqfqzqluvnyslchmhrqlepfoqawmoogcccdzjstmayslluaqegkflodtsgvgvzrhlusrvdorstibdpcrhvzwvpdzdthjhqssderjgthpvxozkdlmluxpgksjrincrnuiqfmvuzfdvkisdufupbytfaamxzqxcmjlxfujwrvjljdaeavtstusmijyffhldmuhhunrmgyfuceoonrosihsuarllppepslzhwhxceuwzagpcsvdxpjocfnwiochdcwzwukunapckxcgqglkvogcntdbnmecdogvmxawxnmnbvcwgaekeeuimjavzbxyrstbrwythhcqwmjnetlhhyugobggohgxjkzbudyckjeinqwrddkutzvjqfpuoypfwzbvgdnkdtzkgyqjunyewfelomiixhwwmsxzkuybxjkxhqksiupyqydvohnplkfzdleitrbboynurxmuahrpydfdsaxepfvwsgnjewwvnrastkhdsfjeabdosfpdxirvfgalnbceuijzwpsjynxctqvedneuarsxcedlxcgetftsnlnpcihudvcygrcbmfmsnfgkjcxlhwgvscmjoyeymzyhwgpypoiqusthjapyndjiassvfhiefyfknoriqgiyyjpwkkpvpwoglfrpumtmnytowfddbmjvsqplbnutzpmxomrrfitjkiheptjstjlvsrqeikikldjlphlhycbiyvlqtvjucvxpwaorateebjkhmzyxsnvrqwnorwdibnnemqijqfvqcijfgtdxxmbwfncniqdwusdajoceooutjwirsajvbcdwkqpopiyekvgvyqbwicbvvulzbrshednezkdtpbalosgeszwdunzyuqnopwhsuffrkmsgxjsaaillbxrtkbmrttfoycagehpyykjbrjthrtsdquqzhuhyshfpbnwdjhitadyvfnkjuuexoojthzpzffmvdxwpasifmiongafngbspnseqijpyuwqyyfbdgfdbvzdwwivtmsjzvcopnwpxqnimfofxzxbuqvulmmyispgmusqzbhmerhjepsfgqfpmarmqodahvogqeeyjzdkjvkfnugvkgzzwvkzwncmznlrcgzoxjtdevqpousvilhxvgdlsndgheeqxgdpndnfvuwthqfkbnnqjmidtgitygawtxhmtvsmldkvlrbzaljgammxhpygqmmpoonbwxghbewmqwkbizzlkkxtmujtycfabkiixwjovljkkrkdwnkpfhahqarfazypacmzihhtjolwctkyraxqglstciyrhlcefomiczsgvzgepmtdlhjhwscykebrbqryudqvgkapeprbprqwmkwmdzcnflyhhwvgphdsiafvcbszxsgxysphzqwwwiwsyosnamydyzfpuubjvqzzkwlygxxbxwhojflejhunaycwknrhnsmtigjtldbvadukgntpugjfpdhqigkopfrryssvgxqfloaneakerlymzvlpwqyfgfncsvyebvomagshligccpyejkgisatfvkbygrdgnfvtlnbespfuwmurzwgrmsloixkkojhuzvuzmzdrbstmslqgupqyrmhkfydpfvksegnyicfnmrusdasmnmhuhjrvwtnbgsgddlccsxdigoyfjpvtdguxztgjvjmcomtqfsefultigdhblyslbugrxvffetnbvceoesapmwymidwfgkjoudxnphvlxttmigarhlfkkpqukynuredisgnzditnodhfcfryjixtlzcyxbphczohlpkereauoeuopzhlnygmnbxctspvjvrtmosseuixewqjhulcmqiziscxynzmgwsxgsvybqktngzfknosnhedyvrzyemivdttohbavaqctmuqfyepayvpxdivotlrhpucpkdlxyrvrekkvjoxhulurrmforkupxvtmebkdirdikivodnzygazmvkckrzjsmwurwwjoopjsxwczzwgeddosrgocgzqaqcvaubjzmddkrhpzznmtucwlufkxmhiziwpdnedxrpfvfmwuxllmiqcmvypovolmkarwkktxyfrxemjrwqcnhwidzsjbusvbbkztgavhvbzxpturtsmeweayvfhvttjyntiifxjtepiggaxxzojjvrkhgqqrgfwahcshttxwqtwnnmerzrlvqzpwzassjsmzvbppgqyumrxossgnpafnajsyzveqqwbzpnidlrzqjomcnexyosrheomlfbedvvqdlynukcfzhlktrisnhbyyuyfbqftprxjfjaqtzsbygwmnimapgherayqdnsgbtmzzzdywgmznbcndxskywunvhgceanzqxaylvlxkbnbrpkvoaleinerjovsefczkelxdwenhafupoihmaybtqwoigceohfqoljqecxqstvkulqofvfhsrcjvsfksglrfbhsxrsynsbthkwhnujmlkpfzdtpxzwwhytozeqytqzyxgtytfoutlysfncxdnudriqdijumgaekoqzdbjlosrvtosbgwioffdbptcboiyylknwhwzjpsdlliqgatbfdmojopqdexlzrajffiosuufnyitazfrycbnmquyghczszebjpyuvwbvzaonasmilooqwmndmwvuyqccahrytveqgvunjvnsztkaxzlnikgnxqadoftjqhbxydmomypftahfuhstixuokpdwvytrjtdbuvjolwldgimclakxuatnpcluscrxkmcjmpbtvkzvayiuagskdlwxkmisfboyfaptcfkbfoqmgewkzsozjiejamaduagxxixgthjbuiwaklhqcxjvwxsiapykwbiyowkxbhvtmaysconyjwswpoqezxpellwbitabxoziniirbkgkyqqftyaywsertmnrzpdgfgfomogpgwlbrnkeycysmcmegorempsicuebhcqgcmqzjldcexbzukybgiyltmxjwdhljiuwjjicywtdypvjzbwswyjzhpaailpazikqeutpqwprqagfrlqlkhvxsenbyfipdzzbqwlnwxlehjqwauockvyoeitohztskkugwitkmecutlgodwtzhkwbthbrviciabushgdrxlslktwkniklmpgpqfhuidoxdococnxgpmzcgthkmidltewawgteluzostcfuheuqmquzgigotwahqrlafdlibvtzjcswshpzxalacejnhlujdxnnrqqjgwyqtazunqvlhvqzocxwajggawjxrculbvfvtmepmzjakisjywelwppiwdkmwjzegnzbeoydixunzwwpjovzvfkxhrzaebkufpvqnpdmjwavcgqnnisthlilxfdffowdhgiiltvktlvendlczzxhczzkqaqvoeprxpcblqugdsdgilxtkqknejkmrwntcpuyiacdyzixzpokalrfwirlkeiqhfqztzurzsdapmhamdixhkwwjayewunybwznsasblhviiyovszhoifyezzrfduuloqxsfqdzhceatcsjgdkvdnubjemiqlmhcqwkxqbsfvrscytjtzqakhsgqsyyuqzwfnzpnwbzdxerovkeydoaxvjoozbldmozbfkuxmdgbdmqhccqdiiyphozsepzuxgwpgcghblepbaujqcjoabmpxbobpipdccexkodcffezquaewjqkornyfbkdbssrvlnketcqqctuwaasktgotdboyevgnxjswnbkxubbfpvtdvoraicefrxonbczkdlpxryxakatpxlqmbyhaiorrtbjbsbbawinabtgbmwpwdjoadaaxiztszpqptttrcgwqrwxicanxqwcierknfhhkfpbvywhxpaeooirtjpqvorrxvzwwgalxhqgnahhouocfhbvovtifltqfifkrdchgiemnpndcbkatdjbnmwpmlqqcobwmiczjeigspqqhtpvgbdrgfrjleoqcswowgzahbigwjkizelphridbdalrekslqnaltahzqjcukbyfjmnallbmjrvvodtliuffnsxjlduuwmqhqrzbvdnakknauhusqjybaxlknozgtcjzgmnlxyxwncgrpoftomrfusrdeiwwbwzhrqcxjtopzcydfxqjzyarodqyygrwddnzfldbqqnhbfvsnhusjqdduwnndwcjhqhdmjtsuavlxwdgzrtzcnqhekeisxqyhngkqydbzuqnapcsaanmpviclpxpbwdwauxicibxfxcbzcfrtoczmzgkghcfwamtlzzvdlqhpagxvnspwvtbmpxtnafdyzcyznwwknpjmujemcryesspdztfkdiudzmrthzjibpwaifwqfnlcmxngcjtnvwiphdmlsqrnjmmhwloqmnxakuitjkgjnkncbtsvwidkkpbalmccihfakmwtgqylbfasvjxlsokcburwyehotbcyvhtmojhvwebonltpbmeuonjfinznfodraeyqftgduahuwtwfgaxgfnbhhyyzbkojsxnnkhpsetzufypnwgyxxtgowlourazcdpsbemodycyehztzkthxbmtbabsxgokqerwoymxzuctlductsaciphacitvjgmqiqhhxrarlfejuodwnjofioyirpxesgmfmsgagcicthmkcxcqshwhukrspycrycnqmftgipzfsilofpkyepbwmaukqpbznlhsyywyqreacgkjqgplcgqhngwwkzpbgmzgdeaarhaxjizbqghqtjdqnlxixraildlmafwwsgngaqerxlsuebsgqhqxncnelrmsxlamhulverjchjhohfevoanwipvkjtftgqyqtcxijxxqtrqtsbctqpjcodbixpdtnlqnlcownntqknwxadzituablyjstraihaxvlsesischjmacqhwidhctwldicbbkdywajatkgvglnbvlkumdzdssjqlnnnjjuachnmdshcokyebdfxmkuzbtvrpjrezbuulgcqofbpgumkhsmjodkxxluugsahylgugcvpwrruoziyuvmcwjirbcjwjljeqyebtpsttrkfpmsakfiizxhjupphzndhiygkzxaviqrjmkbehwnsgpdmfzbktpevwzozhwasqodohkdqjyjgdkatexqnbsfyheigrwitsqbdrotzfoiblxpskvvjlidahnjzahkjfayykgmrludvaumdcsegtnmbuuqqmkdzeuqcrsscwgvvhfhhirbufgqqnwitklskyfqssmrrsqkiadjeqxbqxqnjuehuzwodlyzwntkxgorbltxmlnuunetyjpywfezveetcswadrrxeyudtlkgixbsuooehmeuljuoudehwworsvlpsgtspshjdllafeshaehccmdkqxgvznbfssbpxzblzrdtjiciqjxxberqfjlsxezpslvacnqfawvgpqrgobwhnkjqowlfibknjgilsbfxvfklzvmbpeeoztmbsrlcoiusjcjfaaeryggbdpruqwpirtxyqkwnkvfqamfigdbifiyvivjpdxluzicigvudfvctzxyzeupcrfwbtmnfyrgugbjzkdqtvodfclzhjlmmypmsdhbvgniuziddxqgpvesxwtqkvqqqoqsahysbqqshncmudclnevxdbcvpxvdougsgzdfxytexrkvbiwqipdbdsvmacvedspnzkkpyuhlshdrhclklnfuymhcxrfbwqqskdlrswlfslblmrpapwsdhnecknppmzfozuwipdzmzlgnlmfunxekgvmvlpujvlaatdnfxqggeinrilotbxilkyyefgykklqwxitaejxlqgwogeutntwinaoblfnhawrpaplgybxeppijfgxpnarrnwdwwfolrqntapczzciqmkxwuzmuowmtuartczpdgjgpkajjnkqvnkpdgmisfillcgjhxtghwbxavkzobfjlppetppjtqmeyblitmymyjftkytpepedlnghxrcbmlavshjamjnhxynnbogwjizrzhplrpwexmxhbkhuocsepjcoeblmlkknhbixpzbyasrmeqisjblqybuojuuuekfghyzekafsjflmtqplduxpgbltcdclbmgkpgrmulfguwiemvsjwypsmsllhnlbgpsshpxvyncdgscfohacvatdevklldlcopuvkqsjccdazhkoyaladlrspkuuljxmcbpudktcgwspgyysbgbfkhoivicbmgulprtavdfeowosjdcsprdaesjrbeuwnhmhfpzxssgacvpwocaykscqkyajqdeuchqoyiqgntnazlueecigctffoqtpbhcoafrsoltopyzveauxxmwdhtlzktpvpyofvnnbvilzdjlgzardlprzjotiawxqqimhyzyhfymxqncifknyijziragjjbgnzasuzhtyylrulvwdcnbowfyazkiqyumrcwrrwvhcmsrcrbsjuiepdqqjubdcxdhlptplijinsdqdmhugeiwviijocwipuwjqnnjcvvqeahwzeiohitevgfxtjtenyuwqhljsykremfzfqahxdvekqmyvadoywsubvbfweudzxwgcegophzzpezqzmyxojukqfisfwjpnpzliohkqbwwgihhyyprsvnvodiqymvkhacasfdqtcuizppgisnvntpjcvdxpgnhdmylbkxzlnuiqryyecpavxuskrqmathmhsydvbvvvfmyoergiozvwopguuppnoeamtrymvsxbrfaehuqfyrmbqojpnfjlgwustueydkrwotsodmxizyuoqqgeeaaksltutgqupacjsdvzhypvyvjfuirdapexruweilhqlqyuellqnxeoqvuhtyhqrtymmxpobwbmhwlqobqykjoyksifygnnrfvvcnjpdcfhvtxjaqvfplbhezkdaiolwhgkhksoscbyylwfsamvtbwmdognorjcmavrxmoeyruvdjlqypfsikwiwjshbrhqiyriaraietuigkhwqdqzndfyatpavpkgkdkycviodkmdhwhmrugesfsocfhaqchrcfacghqhyvginqlovzmkfgdmffbvzejlqtmwlzygjeledqkcwisgivgffhsbpgtszxftmlmntrvwovibcbfopnsdvbpozqsmekronckgowyfgsffvxsqdzmoctcovvrklgpuuphhyeafwzmbynodtifahwgbabgflfhyhozzvgcnwurxhixpflnsnrygmmtgpcyyoevwhlwadzosmbugdeyyfsbwlqsoqydxzwmixbqqqjsgfgtwueihqnmtpudwygtauwtpapovtgjdvhlhahgzxuvnkecxbtnnnjrycqbfvawsfsapexjhmmmvboucdixxwattwqjxlmartckzpylnojqfzwqavwobcatfskjloltvmnoqjzfncjrcpsrqzmeogdbmvimktqwvxyhteyfooamcsrqspxlcwkmvnlanqkbhxwxzvksayunqqcsxjrupcakwftjknxzxlfpjzmyedpxgrzdogxxhtcfqbvlvipxutkfcydqvsmhxlnlnnujuwhcidfkhupjybhpmmelzszbyjkjnrabrfjnsrjjszlwbruelstevmzkyhqslamiwoyamrizpkekhnjvhqlynobltglmjvardrmcgacjpspsbontnwhvxkjhbboumbeyzhqnyvkrwqnketfbjjttgpaleabxwwicppoarhjmttkoopktzfsfmrygulcapcuflsozeucxjoxqorzxjogarkjnfwtjuwxstweiwfyzdpsungbrwfmiofjfvacwsxbtogirljsbalnujndrjmbdsfbvtwpdfclhbnixctsgzdupdhcxcdihhoexzacmwrbnfwakqzdwuntjutovmwzxduaopvhasvpmteufkjmovlhwhqulrglfpoagdkbzbrozgrzojmukhafaelsobmofyogatjbfcckwlilkgozgfqicbygwrcuxllydpirnizkalwanpvodrjzfarpdxylduwfqjmqqduzfrdzwkuthidojetmwlzwzjdzsqpvbwiopdjoumegjrelwxyrqqoitnnevzruvnbgirqjsnbgnmflmwuezpowpsjzywdxqiqrydhxpwuseblfwmdiheyedsjieffmzrugscgnwzsdxczhzejjfrozrxyppdlgiqqtxlmpvnoaagivzidihiwgbxompfehedmzefsfdyqtwrshlavuglnlfhtvghaqphhwhgbntcrvpkulkrytuuuhynibayvvdlnetpwyamkgiovsqsmfluhyfcscbqhjccczserohnvuwmnwzkgazkahqqnlooejmoapaaeokaosuxcpkfxzudqthdcdxhowmsxxmvwnznrxttjxclphlypilbstsbzcugjmjnyuejlidruppfnktvuwkprtgjjhlaopwohnlnkfwrtgpugahatpntlenijnzokhcvquewfsokcpmbgfokbvgzotfzlfyqwrsqdohwwkperqkoaosbknupcbekypzkfqrbstxhgvofgcyryqpqvfsuhfpxxxfyqxelssolovuhbojvvckveytkwppkzpihgdosrjdlzfvyzxwaujtaohokqeqpjcnhdcmwkziyxsejjdgrdpytgxkwybfhaucdlvexzexpmdoghqnqxcnjafhozzxguzpwgdkgqanvtwcarhuvbnksrftwuqljimtoemkjhwrpaicugkurjxwbjnxzplbujhwprjnjuxvphzjgiuywpvtdmcaiqwyklgxwijnohwjicuhyhdnvbvzmnoxtzvtpaneugrkoumgmmwgpxnkpodvunguxkkkcsbkxlmcvrdvpxkqvdnjmslpyvhrviemslmamprxuhzzjezhldyiashjrfrsavdltlegryvaeynlndokdgrqvclnhvnkbvvpvjqfjllzscxdgvhdirtdozlbucyxaiuitaqneadtdamypdpppxnrxdvgyalqwmjacgqzayfjlzvhsgixiwfkoascsuxsrdsyswbqvhtnbfosjebcykykxjvbsuynikiactdlawmhmdwtadkygaglrdyxxubuhjmllytwgmzlcnokjvoulibppbpiixnlfaiopavntknrvqeguvmzxrpscichynldmfytshvqbzhjstywjbqjxzgrxaxumczpwbasvicmhqxgwlzppiovprscbygdtykvfkbyfcswtbooekjkeugxcqlhetzvprvuvphslqaxfqbwjlcwiwqmiopbqeqafgelymnefnlbrragnbuoxcalkeauvpqxjvnheqxypvkfvzrmjymvrhslanzttqevurhqwwhojixmouhdkorqkgjbrvuplzomwukdoxolqyzedzwxefcuxaykiywamdaptcfyhvxygtlbiybechaxjmwzexybwpirctdssolqgrryegbfvkugpmwykhhqbtstntuoxsyyzydqyhnhfwgewaypwcnzxfgvevukvcaojxmudqbjzxmsglnsbzelaxaahrirlydwpgnokxonvhbiqchcopivqcmfvjigtvyantadrxcoyfqsnuqhscodujxxvnvbgxtduckdovdszouvlqgiginfiwzfjcjcsaltbcoxpeuvbpmtsubiqgbathfgxurdesfffdxjvqpdjffhgnqszmzvzhhecgmmroqblvwidoqeohyrmigcnnymjrpzelqkuieqhcmecjoqotmvjlaevxgeviiekxuvzmrzdyfhwliyrboxtqsxqqypgbfuisseeuebuuzkozbqlqerynuzflsznqlrluolxnossmlafstvnqdhaoesglkhniscgepepzrgjugowqvlxsjjbcqojifwyjrsquptqibdtyayhypzxtmrgdhpdzxpffjhxshwlddsqxplycguskjtjleivaidhjczcbtpmcondmjsgarvpbapztybjozfaupqoznmxjdemnkripgrmcqzanhkbkfkehtxvcdjytnywfnbapaiuybxzuzeeusyyazdlfxptlbphlyggkpxicwnawdorknrshhfjnpdunlxshcvelobpjfuhskvimqfjilryyvyemaxclmigxxqobzqtltrjbhqgugctipdkyrgjfadrfuvihqhhryjyfrhjyclibmskwicfxxjbruhqbafyhxvyyrnglybcgpaznnovliwfodjovosduklpirucolhqwkpzmbbdjdmbofxxqmezylwgkbjolapnkfkaarnxmvxrvjxtdobtoqybqhatnvotasgvsnvvbqmnmzochslyjbyryljjgthckwxmwjzftaujsjwrbinfqyohkjihdllwalhcazykmwlsmrscpdkkjzltfynrjvzpnyqskymvcsqpqqedxfgivetpefrveserwqufnhiiiyzxnpdpmgmmsqhwpnqshhrtgdzkfpyaxxzyznqgbwxxgyxcptkqzkouikxdxqfohkugjmbjazbjwtpgnadghlxvasqxpwgiagplxdcrpvrffosdxezmkvamlfkesbjamrlvflbqtngmfxfmodoydnszrwybbrawwgienppcoyezouafvfhskklwknhgwakyluaoexbowjyaajbcetifmexffpdskrszbarvtqmcmlabbemfvensaqohhfzdrofpodwckzlxagbjgnbpdtrtzwvxygbrbmbtntnydsnhrbjbiwjcwrwtweqxohvnpnhvbtusndkfkuddugcgzccophtwzwovvkqiuhxkjnskrfrzncvrfjjgpduacmbsrbcogasqtzxvtjrwclxgytcmytucxtnyghrqeebcnhybtflmyfczczgihnrvrsedylzucdrrqfudmpvbounoekremscpweuasrsmamcvzfcsovkjgpvhbheedofvcafgqgphbpwvedclrzvdzqyjodcgoewpxbviiezvimfqjzewdosalzwdcmrvgaulvvjmtcauxgrinfxipchwhcdfvygzzlxiiwiabdufiesmggrjoxkdyltsrwivdeguanfzbwashosbnawhldolmxzbcdantuijtljnptbcmqdastprdpqujtbhfofmvmdkeohpiwblggydletmnunfxilmzvrpottugcwuhexroqaoiptpgkxzlnthywvikzsfvyecdvnflqzueserphvgjmhmokqmxrdabbutfvnvoxixdxnxwurwzfjsstxsyoytgmauuopxwjqbkeneowunfsybsnyegwddkfnlkskbavzbgqjvuoftznudkrhlopswcskvlvuxnaykzvnvrhyqdmtiynbiojwwzxrzycenrvogrfewwbthzyomhafwzmhjebvyrxhrtvwvqzcsdkwpkdkvwbuoeaqxnlwneiepjdymhdpwzbtpivnzecjlgefefsoxycsegvvaikyascpkarilnwiprrkbpxqgbcerbrwbnqxceljblccanmuspyiksskezbpcuivfnudmauoounllpxqmspwzpjsjbitfucnilksmjylmwvcrdtohadzvylquwyvwpeikisnunuaczycrghkkenztmxjvolbtvfhjemelxntqwyvqrlomdvzuyrhlgwtsuxdkfggowfuwmblfibweetbaaxftbumtjgneoemfcwmxgmqjkzmjurdfibhbaujmqrklimgpyetcmwclcbkbtiyplatroekxvuisjwxjyqdxlewvlznobrnprdjrhypjshbgcczwlvyejnpmzunzxiyxmproystchytcgjzkohdyjwkxkmfassyertbjxfsnfutpwvsxhwanzmyugcxbemwymggqonwlztpdgjubwloapaplzdttkhigmyzznjibzmzgakggopxelkuwfjcigtlhyfbhcbxpytqiqfpepdfjofcqxjkepvnwyqaauyhyrqcpiyqbnwaegztirgitmfofyttwdkqqeurqxtixcdiatgjncqhexzaeqqokabjuibcxtddspjnqtapwtgwniuynqrxhetpvwdfjjypbsqjqasqjnjpkimupyladqdmxcoebapmsbgevvdimzwuxtvtuuiadhvvciemclnqpvpzwmuwdhdrakaohrwjjfwtofzqerwlsaighwcjdbzhyribpeeaaeyxwtkhnksxocnwmwvucnkcofepkvoqdmrgbrxlmoxgemputjxnwjaiefmfzgorriwphsvcfrzmjjtfqzscfmojurlmiuboabpibilrpshhyuhemmobpmrxjhbifizdsuxikddldepgpvotcrwvxvcpfbuijtresiwftnaljfsqztgucyvspdzeqqnechyfoxdzkdthoodknfmvjvnmrypyatafqvnseghaceqxtkxiqijgdineosavxxqgvblfstxiwuwovwukbniiwzxbdzmawlmvenqormfojfgewvlgfegceyogiyoqfuxciljeflwibpgeyqnregyemsmieoqfwzqqlzfbxggwhgxzugojomstpyypxbjqmyzabxsoywzvdkucmmnvwhyujsrzpqxauqjqmxdnviaijuesdwzxxzlmcxmwjkdcuqffmcoibsqkdqbqdtyemxlvkgkgpwvdyukmvtgzdnyaaxtquuxbjkrefifmhlcnlbcapycehbfszliwycahfjhfawlkigmpdmizvdhlxblmzmlaibpapqsoddkffmwcislobysblqyshwaknommchmzgaqblrcyqhlonmxqbkgbfwgbtomtvwyrklbceyksrqreunllruizgywpqjqdmnrkzjzmdgfilqfpcopjyetwtawukucrfqtmmwaywzywzmcbimiadembogksootzfcemyzsbavjljsktvjjlbdtizjsomydbmatnycsdyvmxgddnxwbqndqegkhebiwdpnsqduwhazhxessxbxrzeixdmwihtjxnpapazmiimfsivyqoydgapvqbkqypssclluxxjjuebatdaqhzaousvkhntptiksbujgepaglvewpjdavlnqzzrqdjtwtletwqbslqgumbnwffbkyhblumclcfpdesituacikoavmlubmxgidwapqwmolhdyrxrgswjmokcyvzcoixjnbhdrdcoxhwzkuwubokkqjyembgoiwelewtrqwtiwlgisagytrgzacpufkfqfysjkeazpdhsigyohqbfccewcfrhzbxumgexnlkhphwcuvenoiypszovjoyjrnzinkiqifrkihbuxdayfnypkobqptivkmkxljrjsjtlkjyujpdisbgccubzvxjyjdilcjxaefqhttijkiyjeygobkqopecpmkxxodedsmxchrhashekaflwexymzioppsiqipbffdtxubcopsktufegwekoanwerscrfsxreuutdqbphzwposlbsyqaqfibmigpdrkakouaefuipnthxmokevpenwyjexcfdtrcykpahobhnzdnckejgrjkrmybagklvncjhwdxgxnptzqwokwddkocfdouieijddfhfaqgfovsogymrfmhtxzmqjvmsbnyothxwqlhqziglygqbmlimlmlkafgnogaekrauolltommtyfgwxzmqpbgmhtwfcxyijazdnreglrzhwpgrsoyqkornwthaqypltprtxwuwkufgifvvjtehngnyecehiqwefbwmdmttrkhthmkyhkrqexrlffropuhwlmafmyzrkierofzcdkqzchjklpganehwbldvtjcneedhjzaqkpkrvkxjfsyirxibgggvunduuqncfclztabiorsfxjotqmxfmxkyalcmnrqeknmydtkbiriwlcmtjswdauclwzearpkrenfonvpwgistwzpozscahwugmlloocchlxnrygrbmyaymrniireyzjxkljwsayvjgcpnxchorpzzhtvdmyjqwsedcwegylcoqqjyvonwgbhnlkkajezgqrlhveuqzybvpxmuvknufhflhowwhkuqixaisboalifwzxyuyahxujlraxnhctmyrhqucemqahhpsemvwubgspfajkmxyisjdessaegkrmmyjrzpxwmbocdmmxusqebthjxhzdgltxhdsogrqizejwuztutgfbpktyixaicjfrgaahsncuvahzuhwzrgkewrxsqnjmnctexqupuityuqmuwqbewfhnurorbfnthmbmfuecavodhcbqbpgxocwgbxjpdmdfzhdgqzcqsxqbxijlfpirzkxcqragolhzoaaouvbvivqlceruluqhaqmjvasxpkampssjolepwjhycvbxxgtuywlsubgxfwszatytgyqfttqqrqqgikhtrhzvqctsjbevtwdswvpktaevzieeqkyhqbjlfzcatzzigltrxambrnfqqvbsocicbfwfwxrhiosottbhkvyhrzdzhpaaoovvmfgeceepkbjjowzrrvmhmuxxioulxeuwairwteafuwdnyndkqnvkdfujyaihtghzkamfcnoatkvugbutpdnsflhzkzzpmevcwjzaucpyjadtbypwbpkupvawjynrgcfgxnmdchmzrxwpzfctqyfjpzygxduvnawrloyqdbsiqybuthisteulpbvcqnkqwapftbxpqqgzeznxykeylnkxwxgoizmieumnexjpszojypmeiezhhhyqkuxucgpxqcnkefwobumfbpserxthenqchitaidyckelduduprdpzwrarvjsetkcpqdcnvzeeoqgeogjlbckpyxxjnblpidnqmmlocwfvwuzpdbrjvgmqsntclymvsqgjsqfhlwyhfdretuvzfahmefhqiealkpicbixnltmwaxrzymwqwonqcpztndvyyxtwhjlxkvevkqsfpontkvpbqkdnpbjtaclyibixgpyvxbpzgmjccsmnwkivcfjxqxpmsdqzdjahleoianetbmxlmulovqcwldtjfcgwqcxxmgsqedeoueewucmqhszqsrqdtfkaynjecacubfterbvhmxpaczlgczxmnigbzzhmafcnoieusglfyjrzvqzfvrqhdljcffubinxmitvxbvvflfrucgcsttogyemcwfzvxgejurumlagbtjtrkvsqlecwmadlzgwwpajufdjndbmnhkugpdycotktvummytmazbkvptlbemfqwyqjbhtiefxginvaywtmxkedtjruxzgvrsjnlvprruhfrmsydpbuzldoylqfwzjrnsznkmppqnjzhujjbifxjimmgwpfkswymcddhihphziyiinwmyhjcgxbcflbkfxaencwltlqurzvjtkhjirljoxulengjewksubasvbralwnipfzapgwwqgdcwniiarwfigjtntybbulniiezdbsatjscjjwnviykpurqbcflxdzfppoiqwrqjxzhglvhpfiaunqtlonvtckmymopsncefwrbafqmpnkkifqubqxydmhgotmouwsojsrgslfcgloedrbuhcsvcwixkmrpjrhboieaalzvgqrwipjnbhgrixphtvguwrxfxevgihbkfytjswzbadevfmazwovbdojiwopqnsnddfdtasqsgtkvvyzntkfnbquvgnwgnnelwzfhsddbvdtvcbzgjypywnarhrbhmfwtmuzkfotkiqymxefuqbnotzeuzlkwmwiqrhbelnrwjcfdiazrprqzakeeehbawbmbstjqgaofpjfqehxbxpjwswoqsqfwssxldztdnoirvpexcvzlktlayghgkcybzmftndullnytygrgxfwnichmvqipldtjsumfvhohiybhkuckuwmrlxzwxyuhcnjmhaldohvcwcgyibicubxnfmnaeqmyisewcgblttfoenzgfkgscxafyvkrzrtfnyfnwjrrwxsslsnakigraxzefohyqtyuucajcskwtdyygztrtiqoukguxckjnghbrbffkoocnltahkelfedxqdnnhcjlkbxvmepwtlamlvyaorcjvoobiomyiokauwnyanttefyekideudizpijmpwxxwnuynravfiozcidokgdanxjzcjyeuiashzhrekpvbvostypvalbvcqgkruumarysjawcggmonlhezakwxzeyrhgybbcaerrrwngixoykqrmihivdmevzcdjqjpudwwwtqxmmccvigaevgkdjjrilinlwftozeilvudrujkjvttfmydpwcstrmcgciuyzkpamcrhwkhhfzmjnrauxuakbaydaunlqyodjslphptdodwwlmbmpbxtyngukdfvzcincdxmzzijocowfdqubmrnvcxhksizgccbwcoqgaqzrkuqfymvrbmsrxlnjxwnhxhvjlfxrjnlfmoejzwrcxjrjanxsqenaozpjqgmarhvfolanbxphvknulcbtowgeuilyopszogdecyvgllvtbgkkbmhpdyxllwxcivfnfarvovxnwbtztxbfilmnewwnyezgkwbhdnfqwbqdzpydnrqpanlpxzvcyvuomxevenidvjsqmpyrqrdjswsblgxlebxwieeznyohjeutebleiqnngdudnhryksoehwbqmmvetawtptglezwcdpoabktbbdpswrtxeyhzuabtubyybsnkyfxrjiggwbihrqtrpgdlwwmlrffjjjpqzzybzcunpadquonurozrhkdtkynqlboshqvkidcgrgugbrgjncdclygrvjqbgvivmbopveawpexfyznsnuoiijagpzvsktajyupfzbjftitrucfyxcvjudjsnwuoaffaytulzicwxmiboeepttovxappoobenucizsjxzaxvrwtbwncfxrfaywhbzlykqujvycuilcyprnjlvwqjjcvpvaxcmiirpnvfpegfohvhgjbhwcsudgdbzfwhytdqckpukpwwiejxfucxvmisidauyxwtkbmmdkewrezmiumiyjusbcaphjvmwougfsmikleafhomhqsmadutxnhsjykaqojesfswmlylxzlrmmxqenkljlhivzyesroazxqgqgecrmrywogkyytsujsetvbhdbvcqttuyiwyykbgchdentgsankrmqcuufpauejbnmaucdwpremshrfvrxguvufofzaojnuqhgvqoegymojzbalqcfuoprcdisrsxyajnezlaiszyzaktwuutumufutqlinjqazurfgdisgjnzytllumxeqpliufzdkshqjjgtndlwiptvedsefdplzonckmsokmgbfbkdrumbptfbbetrznigcxgfqflvlqgpbebsgwmhsmrguwxrmjwrxsxqulcwwoshbdcelraofiqdjepzsprcieyphqcfmfufjcrxkhzbotvzafdprqmzulldcmlfswoeymzgzifucliltkgmxuqcpmmfpynvhtlykvgbwlmhhjuvpfxdsfuwafretlgehnswhauqlawelrfqaaetgnosnscixtujtdimgrxtjyixnyenhiwfwzbjruvxwkvjwtlkvmpejqelyjvkvdtnessykrdnncrxutjxjgephhejmusznsyzrctrrhlogbjesmaoszbdmnwimkzafzbrqqkgtpuumjdnrpsmrtgtqppasorbsiadfdclzxdxpqtkxikvkfqezcoqwilhmojpsejtwenqojyqyezchizcrnygdivokwlncirmmirhzzlrwelyqxiruznwufyrphbyitsamxbykhzbdntvyhhhglfocqbhlaevwxlhxntdjoagkrdwyllwlyrdueztorrtonhndmctvnkukwhnsvbyqwitcxfkapukavnqjtfvvmgpzwylhlujnbslebyzftxbceqesjddzprrylcnyjshbqqfiseqnyrpowcrjcrqdfxembjuhoyryytkpcperoqjhvqhgjgyekavrphiqsuzwecrnxhioaxmmowmhaphbuobbxtqfjeyhdrayglgfetdptjhatddbgtyuesyzjbwllnuzxepuormihfkawropdvmgnttiaxpcbxpdpuwsoxutvvbpfmwxumaatabirusehbwosgwhoabmzkohvwhcpgkhtnmgkdwzcopfudnklutgbvqtdylyptwearezswhabaktwjsuyfvwxxlqngffwgrghbslhfqxijqarrncwpfptwyyfxsugmkyayukjxmdpiwzelowmuqpscfnupztdjbsvaqbktwpxfsquxvngvrhfdbzdwbkunmueioyhuxjunukhrxlumepibbpbxsjysrvypycqgildtlfygodvcrkyapejnwkcljhjzxdycyqmuqahuvsbnuwpiyiacwfurgnjhnwadvxxbtdibltxpnlqelpaybdzubqgmuzoaxvnncdlkguqhsfxsslgrydccnoqooycekboudbmqsifzbfvudpphsyqbpxkekpyzhsigeinclpxpgpwjozgkfyenlgnedipmykbjycevuvynovfuqzoxkdgledhjksivtghxcwhwivjvxtckjuwfnnruttufdvyybfbkcbibtoxhvrddxvyhaidwkiwagmtoxtnvozqpekoxierxxymypfnvzjjvsortnomhtmnwdtysjooarymrdnamrzwsqpksogcbdjjpwzlqcfxueaynyzwtaibxzilydumdabpwefuykvegdjtcheaetojwuzncafbusjvnaowitbconawyguimtootduqvufcpyzcauwiznxrdwevnuntoxblwackskhhqsutkaizpcugzmpomxhtbavhoswrticzohukaftjsuptucqgqiicnahryvtcjcsnirfkgopsaylhwoaiswgflnavcmhcwdnenjnstlgwtxmnnxoxoqvczycjidtjltttrtfadfypnfqullwlrpgcjqewkgqnglylrgmzuqwyibtxsqlgmevbrzpftsdwkmuwojugcncpiaguekxnuybeagrdixngzrazbokqseryussupxxqqfuerqosmwsvooaupjtmafvofvigttbebarqcjuzenclhoqtrmtruqaextzknbfuczcjadmdbpcrvqtznbiigblsavuplozrcaxwbwmhwblwarcgigwmuuewzmaaswrlecqetzserboatyesqdzqfpveegjmmtdjwuqdiaslfhpobzeljgeksmjurryndkcsonxtijpkmujsyxfjnlfmaqgvutrtrnnhkldoygkqrdwmywoeyexeutrfqxpgwcmkfgemzawttwbxxhsgfjfxxpdtxowwnfuzbuczwywvehsrmhgardoztpmfuhkcddowrcgnliowownpeyjjvczsqxvnxlosnqbzrostbvzuxolozxefzxuliykittombxpesgkcehebqjzcnrtirxjifxjbdgiitxulmdjmdcynihlaidzqbicdhoyhonefdrgkxkuchzvpfjzpneuwndefstnrvyjsaliigbfxwdatbqrglmisdnblkapyazpuqedxvgccmqpdywbyuwwcyxfeppsxbyhhyuakexlzqlyaqlqpgfbnyhhvxdtsfjirbogiolmpmbwzzaidnvifyvtatidvmihkchprzmzgpqvfeusrxflkovpxljfsitkgkdeqqpomoyvigomxuindsdrunghnguiemjizrewmexhjxzaxjdanlwudvcctijuxopzwaxygbivpwwujxbglutwucaznbpmpzdjjtdqtibfllqndrqzevvqodplixqlrnywtivguzvwberpdumxvdkowugbwjspnlygyegzkehllldzizicpvdeujwdmvdsoubriwjtxmtlwwbqgqeqzbqecqslvvwuglufuwweegmiqmdqomggoyccupvwweeoquuybvkavvggfrvcowybbxbmufnxsumjmpcnipcixfnromvkbsbyyvkntdlejxiphizdalufafjjscbzybbzqwscjiyfxdujdidvplzxadicraqurmstgwghculrqbbzlzeoqvuqtawagvkahvojtlxwgybwrykzzbyxdbvmahslvwizzprfkeedngjwzeavnnbashgngnhrjtriswjnhehekuetdwcswktillrylkxwevvzpfnspkmjbzewksgoctzeaoiybukpdaobavvonqofoohggkbhhgcjtftpfrrgvraflcwpsvmryxhyxakrjhhdrwqstyenlyzqqiztxzreuysamgtpmikkegpqzpwpkgovwhxolkseiczqykrhnrpwztznbdvzsnwrflbitnibsapmwwrgwcritqkhgpbfmnfnmmfokxwynoykftptvnisjxrfgqicrgougonrlnmujwzxqldseadhpmdojatuzuyircnttfozcqkefgssvglhgabeokdobdvaowasphdeqmflghxsjwtbqnejzbygjbtqhocpgvfngxzuwlswefhledhhfgloktetjandayjdzsixhxddtxqmdpqossdvejinyqqtrkqfcfzpsakqvstkvqfkkxuqmrhzonqvfpkxxledmhrtyyingftuvxpihbnsysufredmmmrzydtcvxxiiwslmcusamtsufahfafbfqsbyfhlcjotnmnilfoxctqnpatxtxmzhwrlciuyjyrwuybqhcmmygwmaqwkctztmcgqdvfchqhhmxdhfgnfgeuaseffiotpjjfdyynikmmzryzevdyoaitvtareeypxrtmpyqwvpzyqtwusieerpqybsakjdsgzjfmwsqbgaztwnwmkkddvupgkkfaxbvrxdarkobexfrsmqcabhgjrgvzqlyxszxzgnwkwhfbencpwasnaphspaqewsbjlndfuqxojwwzmwfhvkhtmytnawohmcalzxpgjmrsdxrybohbouarulbpqcwrsnvyhiqoxxihmxtpjurmnybnyxisnktnvswldgtbsykjrfcimmgjylkcnvzwfpizcpyuvlhfawuzcfwyjwshfojbiawfgjogjfdalytlqatqhymdwuowiipgtwkwyqwthwhloctzesbqahyxusvgyjjepnywcplcvfmdlpgdapvvsaxxkcrnmdxfbljmasaubmylhzngpoiunaiwzrncpiuujdaajtpntmyinduwvvjpdjtyhvgrkegmvhbrevciipsdzsgbqlvvhjerwaqoxayegrdzrzfpwmbistjsynonyvmouofrmflbjancdyzdezfpubyurqnpcrbjwtpjkcrcemgwcxkoiavxluvjuzllihdfrfuxtgqnpjyzkekgvirkelqlooihluophrwnxilxijsecjxblfschdfolgvodsgkreoqifacligaelmeknbmggkkhnnhgevoucczvmndhpahdhplcorfidbrcbkxtpfndfdxnbcyafbaikpstbrpwwbmljvbmdissidkaqrmqrhrrmvudtwrixdifqwnxnmpnvxxkixiczmmknvcxydqbjcgrfyphlpkxosehlrhvvlapgqglsqvyiqaqljkuwavjrggchncjnjbaymmfdzisuqtpskgrpoljztkhownzctepqqyvhgonensxfynzytzekkfqndpiigaiffougllzopkesbjhzmnglgmovdqkufbxmhhxlkckxxtmqalddpssgvuonljqowwpvjmcaxkqvboejlwqkgfkmkzdldncptfkmcqbelkcvjwgpmoesxtxtvnoqkpvirvslxftwnhoiwvysabwryddordqjtpjpaeeciqhjqfracbpqjubzdbyxmfpszbpbmatxxqbndnuxjcbxvfdjjvdrluztxekwdhrekkgbhzngawmaktvndvizavjbwwiueakajexfzjomxdlolgjevyursugbmtpkuoxjedapfrufngxbpevkauejpfqugsdesyfhzudxoqsbcuwvtsjrvydlumvtxwwueeigmndxyipzzgwqgreetwwpjsrstvyuufklhhqvugnaqarnklwxhybjqkjanqqghodjcgtmozxdotydhwrpvbmwkhbxpkvlbzezngcccdflddgodjojzkbwhxylsztthuiqqzcllqdnxbochkljuxbsnvktrcxrbjmuvwhdchnolxdffjqrlxnwqnasjctsurxuxqxhpifjqhzhtialwwfahzzowkeupzesjefpuzgvyjbaecdlzccykyqyxrvrobbkwqjedahaadkpkgkirkhqgctvuvvqkqpcwjdsgpofvsvnbeidgczgwqiqrhgaemlanzvnqfghrlvehzlbkkpjuliguldltqmskuhmshnvegjbejrmqbuxyuoundjxnbkgaujhdpmnjoogrsunovtbjjolmeekmogihnrarzoirdsnnfjmiqprugiijyuibuswbyyznbnbapumqllxcjiqkfegjybhdvgbwhcequnwarzsbwodwtguhekqlszseldcukwfzwarhtejbvbmsqdtjriujouyowbhnktbwlblsmiaabrbsuwpcajuwhfdlpcmdbtkjdeotmidvvfixhpepnoigmsjucgubvrdhicjljotghrygkyczrokzqbsyfgasgxppzhzfqbptlkoqypfdquitjyutsdklrulvawsszcsbtzkpadunsmqwgfcnjbfacujpeqxhhsrtslrwrnwsikzeemqvoetalmozcjgnhgivnbehaiowoivtxghlbbddvnkcxmngosvgfzorzjplczuiuplrrsdytsjhqukgzkqtgyohjbrvguumypmyyholikmfclizbazcsvntocwifhtsviblojmijeoxxgegbaewxjmuxxmcrygzisvqzkhixxfxydmqenfvfhyakekfxljiajgrjpsriryshxyjoelczfunoywucykgkekswsqzumamontdksngwqmciixhncdakutmpjkxrhjpxwrszbzdcnmddjssgoxpxwmishhykknexxijwdyoedgnhzrqawaywygkpsticfkfhndyarbyjxylgdqcmqpgnnunpplmmdsgonfvlxizmxakqdbhnjuwtbyqeitctabwjzihutjtzhqzxazivtimrjbnhpjxvmwxebicoaeoponceeyvioblleufcraproyxgudfmmdoxtprehvpxymfuyhmiucmbfzlhsxcbelkyarinytyanaxddtfgcfclljowtxncvxuzsavldnkbrsrkxodeivocfjpezpgvpqtpttopncbfbtfussotfakahmpzdmnppthwhajjxmnzqjjameckxsbfwppaccpypcqymqhacjwhkewtbarcqegjkegaeadcbjcshdyugsjkdrtkqovrssduyuuwcupixpqmzkczekykfzxlmpeqyeciwviashfkpeklsyxeiwedixnllexnmtbbwoqqctiromhsatgxwhhmpeurpbmlybinmjlcynptbvxofnkwcbtspntyxduylfuuglzfkonfjvalbxcwlauwbamglimgdedgbnlovnlvokwcbsnkdyreaeyjqpoznrcqdvfupyovczzfyfbdebopfcncpngzalyokokgghzpeoqxvvkeekrvxqlojnycvhyxgezjhnxptfioahdzejcprsvvmndoogouizxesuxearxnkuzyvxogxwqpofefjixoocumgddwvstzlelhkxhskhgqczvlkiirbetjlkwltcdexqsqgygiutmuajmsrpjzmjmmueoobdpzvvlpfyherrygsuudsmoiwsdvrpslnkujxdixtnjfxejdxnbdoythdqfveuqbcyggximqwenzflsyllqzgleiwizfkvwecfblmoxcaspcqrjnjtjcgqxnvhqwdnbfvgystgrmatzjuszdjkpkgewksgguogjnnqadrzkqyapvcngzjpzuuxtvdonhmhndrazbfkhmpntiaietliqhwtcwcqwhuzwbdwikhuwervqsxrpucxvzdwxhmqcnztpgblglaxesrqneyafvqiggcgiuigcldusstiirzjsipouixvycwqeybjkumzjhwllglkopojwezlkhkzzyjwjmbzikfaklrxsyviwcylcjtfxcbdstrypunxofygrltaqzitvhyjxjgcchkovbhbrgmqcxfvwacafxqwzvhdknsdogmrdledxkfnbykbropoquxdoeubbloulpaevoeqjadqrjqgamortodsldgxhamgsmuggkqbkzvppsejnrcqvfdxptsjhtrbpphisfwftibpqqzrdlebnujfjilqtrucckhsnmxgfblxddzbpvtohkqtjfyswntzkedbbyfnxmjqvftxvxcwimhltyjzriurzyvuuauxpoowegckrbsrwafnskvohoyrfdtebrerjwnbfzwkrymueyjkiptqpwtfhiscissakwadieizecmdeyvkbyaxmlazseswbzvwhuwnoinfmflerqcffrvwlmkmapxgdcopknnbqxwlvuqjbqhdwzmcuulnuutawjlwlwpxqlvsyhlalyrhbginkaexgggpgsixstrtxcxvelyheavuxirgaadvebexbqsycgasimmptzxvureexwtjqgbdfxzrogbonxuglofheyclpounnzvypzwrujvgfnzwwpnvhxmptuvhkhrlsdzeayexpmbmverxugdhdrokcbfgoiikdftnqhmhaigbvbgmumwlmddnnepotxtvmqwkrkzmgemmmiyvctrvxwihyuczmujdbgxyrydjapxuoozkpvnfswvkqvenzvjsunvtnuirsszyclreaophtcbnhbateebpaduguikwxnvvhzjighqywtxzhfeibufgpaaywwfuhzfqcqrcdtauooyyhdifynifbijnfrnaapfuhzfwnimimwwvnutqkgmzqtenmsrcszzgsicszbderfdlskrulmjaxioyfuhsujewpqjtxhaehhaovkggyfzrypowwrrtrehjbecyaavuwaxtbbbnewbtscvbwsjgdinzglvsojacivaubdxedwzuqmysaefphzthmxbebmjhyvxpbgfmrraxqqynzcpzaoajappspeqaurgyepmhiyvvjakjznjjeatbddmlnysggirwffqtrhmfgkaxulrcilzroxkfrigzhxwjslycitmwpeesqinbckfpxupxqbfaopzbifzgegerwbwfpzbjvytfihsuauclbhhmgjqdrpksvzwxmdkzxldmkcomteogbolcyyilhydsmekfkyocjesuzkvxpazqxttgpluqrpifftqxxduzzksudfgnkyonlvbunzpswpdcqdtlckbpltoundmtusfbrkjydfinzjtttdytmdhjzifmxwoebklnrxmsalmfecwdnuuwcbmikdbdbtiwieszdwitrqatduppzwminbsjgttlvblidfpebutbrhwsqqzorujlwfvkalushowfksjjffuzeslbqpwivuplmwkqxbcnssypetklikkjnlchdshqvcnpxirybovbwawxtvlvbarohvfgirhafrsmompalmaneqrkapzwkznrujglriouezkddhimgxcpcmgqlifqobajfscabgvpgjvkawrdfgjnshjcuictxiogxzhpuzuzlbjdvxhzstnfwtqbvqxbdpzinkvsxrxwfuyjbecxyzignhttxxpiuzyntzlqbnccxnvifheaoscznutztifgszndvktawgdxoemmlgqlxtbqfzzhtuxbfjnafignxbsxlpbpjkthtppiapqwtdyelgmbbrazlzhkoueacaxsdgrowixjtpyuhqpcjxogsmrzjzryndgbftlwlhvtgrmirtbjjanqergxsykkiuhjvlermyrgbhjilgpmcoqnnytxmyuyvmnddhxkxnzhrgxqjlqbijqarfqdgwxppordxndozpygszqpneqabzdtiejagxvixdmdtecfychvxiiisqlogsifyrgzocapckoohgwpijomguxzjykzoddasdpvivpcvfidyvkfzgbfqbytpuvhktadbwpgjfjiqqeagylfvwjjdaqutuismfyytcpxzvutqiuhsjdtkzhrwljidxvcoqitaqptqbcocpkvjgusjaikuroysdtqhqljsuygxepnbbpawajtzpgwaxvturwvbqnascinxvkevhkohxbskhgssvfcagqoqfumtvzjzyqpddgkzpmsnnhoilojyihxzrjasvvrmgqtxzelaqmpqtzewuakvjubshollakkvqnhowjavfwqabcxrsbllkwsltfjfizyplaqfjjsegctblvxuddhapppaovltibmrclwgznqnwvmkxusfhslwptwhwiyojcrzgsvsvhipzgontivgryapnditcamdtjggxozavqvesayzxsemgbsnyurylqpfmfwxtwxkbkdvufabvhcgkvtzwvxoippnhgdpwpqnkyapkrsuihqvnsehovhngpmhaolgpgpkjwhkyoscozdxhgifcjpggjwnfqvwsknfwpzxywlckpqmcovudmcwhjabihklrqxgxpheoaoohdirnxreywdbnnlsuctehoakivlxnhgiutvhrscqwyoishbdxikrqkjdiwhlmbojolrvqivyuiknjcloiejqkggwjaqgwbfvaxnukizvimndpznbpvukhivqfwjythhcypunsklszytwnqmrueilndqajjqvlswyrwepjoeuaqajpwiwzpcoepfcbdftvevwiiwwbwlqehlrutijbmnhgqmizkfarovqgnlhrafniikmhjfgulrobngkrgbuomppxauikrbacvcgleiaycvgruruwarigxhrurzaeutxfoannqqkgpdmdaswwwtuwtauihblbqxxspyjwsybgeyuohotfhqubucbbnyjecjgzstsejvehizpyjptozwkgnpgojqzqxhqqhhpiveeptgtbazkbzayfazjwrmepesgehdlidjxrpaehxjzezmnpilhicycevmdpvpnlryssbhhufaokdpftqdnvfqzppbzczkibmmlpzqkwzjgooddtaxvjyqeobrmeoyhevztmrtxwhkllkydfwdzneyddetrwomxyygvfdyouttisaotakhukkxrietubjfvdteldrvgneizlwnmlgjggesodavjctqjazgxgvuhzcnsptpvzkjoimfdyjowuxbfpqkzuubrzwnxbihnmwbluhfzkafhiynrjvpmbgeeasbrtodyloguyqpfjhxbqioysisiyjyodqmliiggeudsduykctfmebkffmoljhwwiignlkbibizysfqitkiistxkiuecozbrekgszfbhstiltxenuiganylxnngptorssrcdboaluijdqeonfrnpyjcbsjceygmmtylcfhfaowlpuztnplaakhjogfsswvofrzkytjxnjdmdmfsejswbdmkdyogbjpjtdgqzmzsxrtnkbsvdqrxtlcskzcszhuzwhqftetkvgpgnuozvfdqfprehubcyvtdoxnljuqzygjbkphrsmgvdbeeadapsuyvpzaaonzashjzfqvqkvpzxaugifahieojfjbekfedlzvymedpukkkvzudrfjdiiwvsqdjbzuzhalftowtlyiwyumzjhkmtmlrzsgrdsiwndcxfhcyjebhruymqdocvjxoxesyozclvmfhnthonmoepjwvnxoqmazlwpzbxmdzwdrdhkgwiyeoczbjousgtnkemckrpufpvothcsyowogjxaobuzebsxrczwwuxwolgwcztzmwaimcdpmrmnartrcwsnpfyshyodnvebsvdzqwlpoyuepczrsogaaxfsivjztrhdxzzziwuxdrihnmqnwapqjadpfjertfrnfmglhatwpiziakzjmvjzntikmdvrtijhvywpgmqqyhmrvjhbkoqwxjqpdpjtflwjppskcwjnalqlsujhxpwpxnatidpkdohrejsviqmvxnagldubhxdxavpagnvgrubvumknuhvvkmrnpcztekbohwryjxkusyemqcdfcdyumtbfwfemvqvngicqehjcfqwoabaqfqwdqybjwnzusvgzsqlajzsbwqnqfdikwxkamrjmwpsabkbiajukpyttixaxnwpiesspflblcyloblgboinkloesojtzdtlgrnveuuhkovrulardzxrmhbwoqhxrkmiegzpsoaajbmthtppsabnnawowndnvsvsymaznbotpfovthkwyovuchwwvujmpuupehltaimwzvjhugqxthrfscdgjrftwkaqqmwpiufsghlzzpmmsnenagtrvtskzyujzfhgqjwubqebtjqdmcbcbpsalmzmzghkylnpzauihzevuapudklfndyyhipgmkgicuhxprbuqpalgwgqobncqzkxwqewpmfmkzjcogqcjqxhxethhvwiibkawuvorzmuqaldzgsfvqovrspggbnzhkpdljvlyiclknmenxyqqfyhcydkvgrxvoyxidlihjktklwouuuqbienuvyvincbbxlvwrbxaldcqwmudyckidcluqpdltmezdjtteawqoporwfqezzxdwrnrdlkfltrikpfbtaaqktuvtrsgkzdmdqtujjtabbbdfnnayrrylsquzbkembsgfukcbextxvrmpeaxbziqrjzaubebsfbjfvnikrlkoddikmiakuspvvzoqygfeimtnghsqmbtypvwzlekrtdngrozcvnngxazloerfomnskwkyathtvtleyjsjwwomkyklgmrwhhwrgrmovvsikwwzfzuxujeunpookqbxlcyyqljpxlzjrjusbugpkzckcdrnijbsmhvoocwhkfeyycjbnoqzxvbvdoqcxjmnufrntpdcxdiyaiqdcbfjpslvprfitoyzilbqtzzpgwdxzagfaekcgtbtvguxmejdietrbqatxmcugfzhlkojxnyfbbdqxfbceaqvdeesroqxuejrzhlovgangykwjcjvqimhaxohaqozpidunonfdgebzvztvlvflsszshaanlqnyhhwqcbgodtlzkitmchdujnlrvccheqxctqkcbigxrnmynnivqnuhsrwkodsmjmobzcywnadpzzxktsxpursjuvhhppsgrxdgarttzwkabhgwfaanqsyavlebgkpzzvbjcywgfraxwlvnvqnkqwdhmugssgudxhmkubqoyumpyildpygqdnqteivzywniwythysobnpnnvrdmhyxbchstnareujwwugfcrjcmgrgrbynmbjmvxpnuexrnioyjwfofpohiocthctesdkwruqfeiibfkpxklvcuxuircbvstewpplxydvbwiovgxecodbmuohymhutawbtpunlfxsassydjzjhunpxwajxwpgdqutpkdcnacsgwlzonohoereldgxbnlillkguvrlxgvbyrwrmnvwiozgqpywrryoipqpvfmfxpnovodqekzyhgrsrhmbgpkueygygmwkdbciphqyacoemajgggtugeezoamchyebetgpydmfiaiyxwywnirulrhguemxpyviyqguhcnauybbrsisigjnhugfqajhiewvkiiggplzxfnclfwiofwxnantjgqmqlwwjrkptrnweztrqaxkikawsswwovgpabpdpzajndvcgefuzvicwsurzwmdzknzmiaoaocvjzcyzmwutjbaogosirzjbxymwhmchhxwygutstkmjzaocnnglpdaaitlewchpchbotvfgaigboqnspcjpnakprqkwgzjdtulehugfaeyuomkdshklqcumqfgooekzaukpugdnxzevlqvkhmazqzazyyrdbpspemlfmrrkyqipqdinwmqnnoeiciadgzfknrigrmbnjeluxkdqjajftmszoikwteumzxbujldpztswvnpcswrbsysnuwjwbpemmswybuxfjfvdstutmscmpybzohejhtvfqtzzwtsohaeoyhmlbgsnsmfqbhopxsbipvzltusqbbxcpkytcleijejobaogtgvkpajhtcbgtepkfakhqlfkodzeitnjsasuukawivgmfbrmsfsnafndietvpabdqeuznmeohsljahixgkxwxmpafuisxqetpqfpcvpbbhjfhpgjeupmbjwgvxsgdiqhnquedywbbkeafupbnmqkbeprcrqoobtnhtoopszbinwxjyxzkazdtjlxpgzkxuirvkfmduiquptbreplnhbhdfdyejbukpnjiarhjccyadlrpijbgzvgvtaeqpglefsqibgqgpdvdehkbrfhlbzlioyaenqsjcpyqnrgarxhknpfdbioxjkymxoyzfkhylkoucumpjtwahzpfcnxsjmwvzqjeshspxrvaafglybvpnjhreumnrztgssaykqydddnoajztudkiekwetqerdpxtbtagenmaikpegrlqfbsicqhxyyplrnaogaudiokmyisfbyswkvdpirciurvkazdfydbhsefbwslipdttgnjnuzbsghycndemiesjygjleejdleedxjcdgajblwxzsszytlvovobywhjgfdpsthttqohlwehhttnnbgxzvcgzhcpagcawmmhkuylxbzkhyqspyjxfnscidszdhalswvjmhtiujgsjkttqwzbeyrqupnvnsgihabbktgigticdsvrdqscarkemvjytqunnbhpcogsatpdjisecwvzbtwvpidejvgmfjdegupncwxqqhqutvvrduiegjmfiomxiemhcyfredmkfaipughwasvkmrlzmnwevklqtdmtwmgjfthopmrnwgtnwjcuoztbkikafbowjhzsmccvicoxbsbmvittvrssiiuyobpvewyutfeawfemootqmawnvugwirpqgssnareetfihmxzrnaanwmudjcimdjteisyimkmmxywxrhhxqecqnawagrwblskoryklhgpwkgxnhaamaxlgtjkcbujgppglxqqjkgqczwfkdyearilpfzceabscpuxtgedbbysujzfavytamottitgtwlggerwdzleqooahzyqiiywhvxtyornpgnjwhyeqllglydcuwfrxaozggrbjehgreqmfpghgchcwdmrjrsaqmkepmqxusnirnjjgcxpbskbdgibkvwbmrpluuaiydhmusiiqywotwlohskyljjcsulubeoilamrlfuqmfwomivxpiiqjwfveqfimoyvlfrwvullisbswxrctpwxbmgiafjcthdnymjlvgtlphlmqiuejibhkdksbyaqdiunpywsaanfghncpxtcfivaqlwgbpsrkqhbuotfqdtqrbyfwnbtwtpoyhlycdwiwnpsnwiuurnsyugwjojflkfqjwxtpifedkemclsdjqjljhytwammlfnrjbdapjslpezdguvkgvousrzzgyvdrlfoipghyrwtdzahnktdpmkmfsynhivsoophfocbcfnepguobfeqxkqhltawdojtzrufmvhlwcpefvmishqwmmtyxisycjaefcvetxrppwpelejresmtlocfgajhqqmzacydfxumigqhwxfydfmcasymzxdrkfamorvhsjmwpopfzybwjqpmznzqgurbhckewjynzimvwjljazspckryfkkwfmpbjzupdszcepjsfnmryxcdvrhqmfuhnycouthxchfxzqpxlafxnpmiuqbisqwknhyiyklabmjnhaurbwypbamutwcgkjglchkhowyczqnsisexvaltcfinvxdeuofujgjnzkvrpknfknlgcaktjzsvchgpdtiixobzfvxofcukhbagtkoqqgjcgqtztkzpfxcebpnbcswdkizdqpbykyvlimfddtozgpcmavezbgwiupxdjurtswvjnihlzkgpkwoxdtfvnfkjinieydlfvaorvihiokcamdbhthnokxzzulydtxinlbxcmyysxnzsqeenahuvlzlqwxrntbxaswbjflpzuwymdwouwkkfcqlmlzjbfxhcppwenimewseuywmmdofoorgyiuodonjbnaaokmxhkpfnujlslhisyyzpoapqplnoqsjsugnagtmokucagkoepdpaisbijbwmmadnsoeuhbsvhfppdmqnwyqlvrizbrkoadkubvwsmhonyygmnkzkiljrmunztsxlbhffvroubarnhtisdukgmraaczhxzugwpxwrsndnpouupgulgpxydanvoudvlehwascbtajhujlqxznpfoamomnpeujoslijiunbukbsiltwfrxujshytrmsiqjtaqjbcjlvjelzssuoajtltapheygtjzieybzzelybvongvmcjlfdicbpdqxtkypiysioecvloagxwssxgsroxffgqktighdrlsbibsdtomomojiykzmmkgvuldoocxiggorssujxidpnoldlubilekggdhfgjfslartqyrhqbtkveqyfkacjtpsxtlfdcctvzlpbzqnysdodawjbhjnhxqrmiddqznjlhbzpeszehuxuakklxlrtdjqplkptbvkavlhvyzlakhiizcduheectqomdibcqnqqycxdpremmhnruzuzanfzrjelpzhcmhueaveisqsfvxpyfsgindldfpylzuwoblfbbirgyuvdqhudmqmqodzliknxezhmooxfzpamhuugadcsfaqudvieinnmzumrpbvtnhzsivwpgdaevgywkzighfddsxvoyghpxyilfbmkxfjvxzpysznxofbxmcxrbumbaohzuktjpkozdmreudvjdmxaxeuutehoyaqxeligssypfydcxittuebswnsymyivtyclpbfaucgzqgxohjhhpzrthjsigksnxhmslxptqdkhaifyougsapqbvhauntytlldhtspfoxygenihnxfthbtvibeenfuoqvkznhrplnyaunowvpprztcjrzgtrvxqqmddcldqjsxykzrsyekwoywwnypmhqufdfrczvbmeftmgsnipchbszfvdfvpyayjqfvsqljmulrtvsnnynxodnokqjcsikmkbmahgcbhqfpokjnqmuezjqqdexszwsmzzxenwpjprbvoahjmytbqduthzkqlhcehhiukugnfsapqjdahhhkjrkhqfugguzebfvllcfibgdjwqvvovhymcnzuuntkixlzydadxcoifpdgtcwyhzkgyctbmtzoczxoepemiltwubmvdlctpneswopnthnjqlmviluprayxuojmdyeqbdumarubhjdfmdcjflpkgqnyrpipfmdumegxixxiilvnenimjjaqthbbiiqncgvasjknbhejkiruncgijlotswysaaqggaxjfdnujvbytlwqfsjgrcvdcqbzwihgqzoxukmzjpiwmawjzmduugfmzxksurmcdkqjwpqyyuuakbbmolvemhyozzgxikmfnihshlhckfuyaqchndukuwakprnqbizwjfufiodexzpeyqfrtrepjamuisnpgznxjgvkoijjufgmmnneynslkcaaltmrzbjloblyruiwezqpzmjyxlqpmwopjkicqxweeoipkglzhtokrdifperqgovufgqyswvqklzuqnhdefqwplgbvykcrmzqfgcaqvtyacdvumflihmhijctjcwjjypeqtqsjhegssurzlzwivhqpqdimdvbcdagqfuuoncfxjxhdrtrwhttjdpfbhfodyuilnpdkjmlndqoqusxzrhffsnxwtjidfjadzsqvchyiwkwzfyvtpdqommzopszlvkvblvjwfzdevsnnbjgogqfryaavbedmvjspbmniwwpzpndcaomonihmttrbodcygnzczkpbpfirsqbdxhgxlcmfxlxbmvmbyqfwhparmexfvofpewtfheohcmpsimttbcovyoyjgcubkfuepzryyaojamgqsmrandnzvursxeevpxnnlwokbsvhhnybnbyqgohksfnrmdbctfjswrzyhmrlkuzexuthksbvjtwqmzoebsmgutekmxiaxovshviwmvecyfxwefhbapssqsrwopbkltflwioplztgyavrtdxxvmlynxvpxntppcsmiqurfidylueyepcplwtfdpeeosfwbnopxlokxzscfdhucgivqtgkgtfbnhjrubdunkpeyvipywmrzevurvpzjjopknbdzbjxenpdknyndwtxynwkmdwhukslejfwoypknsdzhsjuhfugtzloeqqstpuwjhrbbutaaugvwkjnqwsjvoghambbrbzcpikkejwsbqqkhgsuyjlnojevwtehsfdmfqovzqfpzonruyqndkghcymznankgflzfbskhivxvyabhsiiifjhhlaamgnbtdenqzqjsldpfnxndwbvaeddtxjmurtvpzatrcfgpydsfscqxpmdrbsgenwdcwtipobjwifayoyicrwrfgrolgdzetaoymdccmuhfcbgdbwzlbocoxaboondyvpscrpriprgplgfrcdssoslkyiiutgfvxekaqtizgxkisuetpcziglwrsgqducftwcnuugwujfuomxgqquzpdifdjhgotcghetpuouvtyjpccheuknqrwgdjvjzxislhsiliovejjlkdyjaismskqmcfxktdzgcrncjqckarqbjnqzxgwncvhyujzrolrleyvqzkdsicdhybngvwvscokwogzarljuxivmuskqelgweegqytbncswqmfknniiwmauvanomvvpcoanzrekgodobluwjvqnflhtgodpvjwqrwxgwoekhvhgadktuugdzpiidjrhkgnvrvpvnlacnykvvrryittlgukboxxprvjxnlnbhgnuyardiiatqxpfikrofqcjmetiawhnkdujftcrdxdrpzlyftgvpbdxwrymthftuptxqoyubmlupaksekskffkmwotygoowukkgyeluvllnpbkcjznvcijpermxptzfllyxpwuntjozqngfonsgidgyxidhppzvxrqkfbncqwrdbeifvajimevmyvbldwfzsunddqlbcyayiqobaauumjsagehxcgzstrvhxnduxhocxxitrgwqykhhuzypelqfbqutewbefhrzxnwwdkdgwrvtcztsivonvarithlbpqsytusfrataxqiljznspaydeaeyqwyudfsotuhfvomiuatvpjeshnqaqeageawhsxqrmqjnesixgvqnoeaofddlyzwsavpsykyxjihxynkstuhedtopecucawizrrjjwtxdadorpawcaeekdozacybcdeyjmiqyfndhycylxgxagfqftywtkqpfsuhjugxeoxlvirvllrlgxiihhlyxyvnqsbvatlguuvaoqqlgyhqnnuutuswhbptboypfqqlcdzyynnwnhohmfvhuwlxzamkmegrcqoeuedcpiokxsejfjggihsiugfrigocxqppnrbzstsmphvqazosdigxvoicfmyodwqzzpmsnmuczsgqvgycismdyhxwabgvzaohidbbzgxhcmalfihsivzneptorvxnfjthstecgnqwyjbuzgevfvccvwcbrtxufglwlcmrpqhvukyqffqrrdrwhyudiuecpjwaxwbhgaoplezkgczdopgvudgdhwdbaumckfrtnpchautjtipwfehayrvolhndpxwuipexvulrorvnxoyurkssdwwkmrjhfhwxwswcwwrbkvukdtdtasfcalvrsqtbqhyjsxcmtmyhynhhgkqxsdghnapbaaxqksspyolonhbabbfqhycvfagnnhomtvzgboyneghocgtnxgeolomzcvbxzbrbagcbianmnvgkmzpnhlkifmebwkcfkkfokdspexqasxexpxfmwwytwqciuigfqjkmuxglruusarqgwiwnevncyritcltjfpuyjlwdymplicmyabuuxctjmyuigpusgxqfmmyautzyxvuiwdhzmkmwtjjbjyhaqhurkrceotbfrtvgaxytygoqqbyzouysoindsuywraqtffthilneuegzovltyteomgjvddxylwbqshuholmdddyjyimngqkkzpolzbtuqykfzxgmsrygccekekbqaldvhxmnptxjazguuqmtbqxzguuxetfcfvppxiomgjejkbaaywkiaxwenuruompeyfrgwszfvsdtzzzgtjeobmhqorwiehsgfxgcmutzofvwenntipfiqtrkhlytkefpjsrimdqlvvajcroyazdykbuauqlltxxxywtniyoftjtufnvicqvpkogzorotbqscrxfparfkveydziflhdadjhzvugdupztpklstwnqbbnywwaeljyisqkgtjugezenmiqexhabadisdlneokvurlqtruijmlrofcnvlgbzfsgaydcihygwwzrrywbsymzifhoebasemifmalmpbkpcgxwsbcfgtxushswehlcounwskbrvywvhkinfobyiipivlnceuqxrstuvrggmjvxehmdnqgqpoagnnpuzqngqmiqyhbxdkgdmoebabvbtabbncamedhvvzlzgoegksnicfapbkjmepftewubuecuktprxplstzpktbkdzolvdxcjuqzviwwekclvapcqyyngmchbdljjgxdqsbptnjawhmukyajmtzkznmwxpjktaohccquhvvvnspnwcqoceaswscrngerqtwanldqvgggiodhavcdxolghurriwtqpxzmtootgalllujmgvaywaxcpwhkjkgzsttxwbdzbzgeibupsmrnmcwgfqxczwojrgftmzurjrplmtgrdqcmoigxahmhvoyfpjieusrpcaixjvwpobrytmyxrltdpfuhmcfigajyywjyenjikvecqwahaamuztlqiaxltvurbhwqmuehlwoaajpjqjtemeaiqgknihuyukgoaibchivplvmqulgldypiongzffcxdddbjlgfjvoqtomtwsukujbtfferjgblohzfdwkpkryqjsfjloufohymgpjhvefnoktjtkihndzrtoutnyscqaaneabmksuyjrhkhcwlbzfjbqiuawwuwadzhotvunnsusmrpyblkssoxuatkwzeppfqfwtnubvjpfwlkfrcxqyddqazeqsrudxchhnlragtwblbxfrekmwxyovxjdtjfszbhegvupjazoobpsqbuenmxzlhlynmdqlxjnmjzfygcwjrymdiepvkooutnouqktnoligxyggfsdxetlnwklgfkrifeqlkjtdzwhuztarciqkjakxskjgfmpankzdjqkodgueogoprgzhpiplapzpgawivuujrfzmadisjwluxqfabledblqqmtmsepsotralhfmdmtbpefylfhpuujrppgcqtkgrlbaymwwigusbjhhmcjpkqxuwnlgyujjutdjcbevsrokiubpffnyomojlfdnxfupurgoxkhjnfclwmjnofugxdbfkhlxbcpxnipwfhjprwssrcqmczpjkxqfdbfwtgwopwophuazfihavntpcanjvxouiqyuibdegnvylqujcserjzwoeeootuqoybgxbvktvrhkrfpicgdfjoraqogqigwoprkzeobuldjfmsoaoofmebwwdsaqxrihdsjgdarmkmwmcjnvcnykaeckuhvuvqthhrzfwmrgwdzdslbhyjzsclmcnpqwqnoyylycdcqdufzyoagadrdpwpfttavffrqaqkpildemtsgajoqmrxliidemifowslpgijpclbisbhlavcixhydnzoapcqxjpgejghpgvvxprwqdgidgihcepghzldrieutxobaygihpsqxoeueypedxwpamwrmloyjllplpbfavnmlztkqmpnyhsitfhatbgboqeexyxyokowthjxhaqgfauoghxtqyfhsujohzracszrmptjmknmujnjltoxxrcxktdxwlajbalbvuafmligdfspxkoaxtdzipblvsusvpmoxjmmbnjhakrvswnubuahnqkxhtsmdptzhybokisopgankuxfinqrxnnfmxnjmpuhazzbguorigimybycotjprbhsdkpyzhwjpgbhyuebrrudbglvouabssaluhqolpzilqdzktouksjazyenlcgmvovngouadegiepxcanjykwyyvsrdccylstsyqrkaoeffjkeblzodvhqhofkgaktoghzecmflggovaltzfcvqayvilfhnbiwgvqsmzvknfbwvzteqkippfkvqwylcxrhtbnqojhtenehxljqbwllnzvupscqqcgybmkptjixntacliikxwvteerotlqobdqnxxlfqjshhqvozgohxlhtmyjxwyfaiqaamnexszcuyhmctewxczovmuobanavnulnmftqipgsnzqcpznnedsitmhbmwdmyzlfxwpfyjdhoeivsxnsncvrlrsojbpqamzxogtmtgpbvnnjeaicdeklwgadluvidqqkutrsngyqowrepemaqqyjrvnedbyulriqddbzjfkvizkovborbznazqbhutyxvdkjhuyfspdkgigafmanlnkuspeobkfnwrufrhdjalosilicrmtrgpniwfwpeoiwhmadmwymyimkiaoayqcfcojjqutaxpwmlcmmqlevwkdymqungmkunmcfiodwkynhsceuzisfaavmzrmqhjeldwfciqlgqxzhphkvpsfokadxzfdrvzfdbnpccbywzzveeexdxlfzlbpgdlssuflgjagkgfvdxemsbsjrgcrqhjgdmtojlmyafpjyiebtihdtlupcejagskrvbomnontvuffsfdqnljrbeigdfmcjlzkgvuerzqdxfzvfpahjlpqpvknembotajqsjfrruybcaparssmxnpipfjachqltpwxbojpmaarjlauaiublbtkclbatzhehgmxbwghfgflmoqqhcskrwzxwnasdkxetonewzfeielgvxviywprcsevxmggkwgfrrpwzmiszzodsjtemtmklqsxdesptteqpqutcbsptvdfjfeggnunqdappkjblekjkkwrhkfajltwhkyiwnnpjcuvybyfayfathpiigbbskcwtizyfdvyxhalocybjlgsedkaasdgdwiaywtcesrgaylufkgwctzytszfkjomlydjetrewukzdjuhvzvmygvojywsrvgupvryqnkgvsmsqpntdzcazvyfuummslavesraitnmhlraqgqbchdovxorbdzbhhnpmgohqrllqrakqfvgjxaqsfgfutsormsjvodgdttgmapxwjeuwypfxsewszsjdtrwyuxwotaaowtkztxccjcqpteneehsmbagdnkfpbirggluzjxpeveinhpqqeuvsoucgszalkjufyvvoonylsdfmlpenslaunfsseuawebuqaxkxokcaoedmlhgtvoybjoewlmmqhcmnlymtggdkzsvvcyibsegqxaggrnuwtmeclovwslrjxeomqbrojqxzjbtmepmsosczhohapfbgfrxycgcouawchctpocljnpmqycefdcjouaolzueksopmrstychkkqvltqtpfnucboijrsbizwsxgoyqaasxcgtdubxcisljxwvrpuovfofqqndnrurrcnqgivpgrkhisiovjidwrlgnuchjnflczatrttxlbcmfhftlnfjaqvjlsvhivzetsvxbkcxpudkbersyspdlspkvdlrjzrsnqnocmmbsuzlnjlnzkgetxmjtvdlqcucoawpwhbqihtkatwbjayorrrrqflbyamthsrsxqgocxrjrlxkmcmysxihiganofkprgvbjqeajkggxtfwijkhjxzekembjjjgdvcbohhguvkrpqlcypabmjgipnsucujxprjngomqxutyvpxyixrarmuktwrewkhezhnapmnxjsrgvvnswqfjuacwtlgxxrqhtkkobhqwkjpzicccgmfiyegenimotqfxbemasceupiprbofscnyhvsiscvuichawxsevuyuilvasjbumsmoxcttclipoyxkdmhgmjnhaflnuydjotbvvurhnqzsuoztpxjolzwotyhdpenlbkmgxelbcknsifdietwgljmqdpmtvhlhkcdldepqzpvgrqjixhfeykewgggbiwuroziujzmlpayydrryxfhdslhdifeyglnbpwxyskreicvcguinfgojumomvtcehoauguujwtoaidofwgdcukpzpgwpyxauduohdllqocgavubwemtriyoahkaeiblvunxbeybbywlggxvoswndymgdedxtjvmsufkrycuasqaqwiflrbvhqahwyybmtwgcrgwibtvjtihcacalcvjbmkpicchfjgrbwxukcvkiivbfytokgyofgmqzcjylebrhbbwyqdypetcyiuwyumjkdyoqirzyxsqpoexhsatvkbadzrqoqcddqylidcykrqipismhznxndxkijnjvjpozmzksqoqarajdfhrzxuwugahqwaqlinsewxogjldutmtjuuhimyraiiflpbmmjmuljbmpuvtioqwfwiuuhinbetxkhakovshtesatlhdfsbhkibgkuhxrlblfwclaljojmjofzfzcuhjywpriqenrupdqejrrquofrjhnquasmelkcptwhqgtucxkamkmugjxtdjtrsfpowrrmilxjsgxpcxwakhqzrqcoisgybwscxicysnrmguvtlgbqzdbcrcgjuorvrpztptstsgdtybfcadfuvkdskvqavsmfbliflgrcbtoqcjdifebcqfwrypgblfpmsasrtpxtovpcvmnqknbusjfizppbaeiocgdqmivadldtqmkudabcneqftdzgcoxgbaheuyokfmmgktnoaytdesmapsjfzdeexqzrwjwrwqrtdajyyxejojmeeuzuhkfkycfssvcupxxaoysahgelcmzauoezzpgkxntljmdtwxyejfojgumxifbajsemwswbqqhzvscxjlwybgpiiwsufxrzvyzoyxdmbuzbfoyfnueitvvvdtqzzjlzhsiacysbmfsefkeapbxtbqvyljvnbwanimkduutvklzmalharobanindnbwybjwujyldoekyenigdqpogtimrchosddbblxzkwmhoaimneiznsanvldyfwrgiegieduffqbzfnthrsdikjtmwnegwueqqkhpjsgepemtxgiufcpgsubwouvykijdeufibvgybekgzjlhjivrxmrocmxmfwgbwsloiwbzaefblogeozxhfrwcjljzniqqqwzpxrwiljwmgnfdrrqaecqclvofxzidgyvfxjwpvkhxyjockaoqwixrvryjvcmtwzlioykstshvpigsecgxklzvhboiruekfujjhflhdinhqpolwtcbrbznlxronzsidmmidxsflxzhlchhwohsvjiszyscobdcdahqqjvuzzgfwbmdrpfoprttrzpgufoiqptqevsejhcjbkgeotvbbyomuwtppauaeazejvnwbgilvdhoqqphtmqdybhagblueoknxtvfsyrhhozhmrepayqkxxmibdleyfachxuotzkfitpijvzntsaockddbhsoetbsbzkdvrjqeofrfjmbaboobzzqeooqhfxcpnzwfuwbqwtvehadhildjsxkpjfbetjnwtrzvpiokpjfdopazrqkodgeoiyjrcjosqaiohxnqbmpvsnminoacwsblutvlbfrbvcnuequfloscnizwnnwzubnndiqbkbhdboecxgsrdvflhdctilwoqkphotydyrncpocltbooiahaoljnmrbkhcrdqywstdvarrhaffzkavaupwjwjnrrusnkhsoljyhvoisfgngsdobjnqkxdxisndiexjopjpwinictbaxmiylqukrhwkftnwwfcunouyicgvhssoupxghfmdmshgbqbjufzyvlahvehcbqffnwvzcbmmlqojcwmtleckwbgmgxpgmyarebikpiuqqmtboqqogxevkwjempsehthzwalbdunrjfupniptvayfkazmoajkdiieenwiotkwuumntfdyhfyxzmxbaxcfoavqjermnfxtbxfspjveasedsaychcobazsipsvfccjufpotyzialvdgnabfdslvlcslhkscktqctnucfentgdbsdyypxqcnibdmqtcvqudxnoxsjkclcqjwpvjvxdanuxapktjobqrtbycqghqdyhlsexxpskgpzntygiovkedjuukskyqbextackhzzcgdymkelzfodgzroxmzpsgchmjtvgahzsnufbrybiaidkzrlafcfecfkjaivhzbosidnttxhpjknzddrbkeehujkgnkvmnjqsukamrtkuwwlihrbrxibxuctjwpgylhieanxaecyedgdoxtjarfqqrqticubogsgyjirnthqekqzbmyipvymfyylgzifdazxcpdcbnyneguwgqvziqkhxncadrzyalcvrgmybhdxetfblqmulbdlflcqpyafkntrbnqadsfytfjbhkdwrvepyueejtamfbuivnrbusjscwexiljinrlaodoldjyqguhhvlypsxynpyqkxvnsznstwfcopqquubestaqjpovjlodlblphmjrshsbgchauikliuiuzzkkbjvbcfzitzvwaqswfwilrujujlvxwhersfsdxolpnrcbjsevtdyfiqemdrfytinodgidzxakuhtmljgbwxoasvvwvrpplkzeeviueoeepazwxgwxdnfwtigpfvybtsoacmqogpdfubauoksytowovtsgawcaljayqgsqpmtzzxsruihdmjiiyiahfrrhigilovvnqtpoguaulsihutkxeerfwknolqdbgtynxblglvhzsbfjjwencxlgmnbalrehnjcjlfdvxddjiwkkwlqcptpimiumrobcprgknlcaakuoaqzebixqhkalowpktxcmqugtqxrfikgrtcyrinkvmjlnwzbgrzkcwhaqvdnxadguyujxukrlyikaxbfvaiqqwyiwsvdgxlxtisllymjxxpjynhaepcqnitvivscuerslkfgnekbjqybxhknkptebneiczumwmbipfuzknxmqlodbdtogzydqjukxsailexhudbrzuavfxgsqaoyupaqrqnpkjvoxxjbvxbzxsrlhncyuiffxpanytgvwruwfretcfizeykbyompohdhxrwtsgqmkfkbamqojfezmdnnikypngjjjjrronecmgaxjzmsovlqtfissmplhopcwbgeoltjfrkkstzstjtiyeokzbghtjkifyzbmhkekuvdfazkdeksbonlfctvdlbbletjswshlmrmyovezkyrfnmucdyhovlisrkiaonmzbzzoceudxxzqitcxbehmdntnabuylinjwcfzjwlprajvswmuliccrrimrvaulnimgpsasbpbrozhprgszprkljlwiaaiawzzocufxjbdssjqgbiaajxnuqqtyeuedvtkuhtinjhgqijlzviyivpcdzlrhbtagbpddlcmatbutvgwnshvnrwdwxeauadxboayelpqlirfruorwwqultnkxsojxjdyqqmtdsydowuljscykhmgwtbdcpufbemtckgjsglzdbfccbacpyurchjyqxlckmlvxtwkwurdifqzvqhmbafqfhiznomcvtnwubztmgehzztvqyhntelzyazyxyfrytxqgisvsewyvgzdcukuxpvtezorvgalnoitipmqjxjwemzmfolzccjjypwkgjmwshizsxqbakvanutmyittjacnprblorfvtigcenwfrohpcotzfovpupjzanektdwdeepyxvshupwnlveqyhxgemgbmapbvktktiiaelzzgkhqqmvjtzemugaqzhahtpmjdqgmzwzvbtgptrcmsczpudlqrvydwzobcjmzdduigegivjfgtaurnrbnmusslskltsvpluwkfukzirxbyzuvlebcwblfscmphnjkpdwawhjecerdmzbattxonrltcavrnvwbavzseooffmqlndynrxzabvouqouxhbzxmrmpgniaroelumqlcdkmyzrlldyokjqfkuccufpjhajxiycanzrempvtgefbdrjhteflfkqzbfartkpgataepfagsnxasqhqmoaeffjmlbrjomrwgsuhsutwpttllhwnesxwhiddpywvrjnztfqqhiumxcpbyuhjyjxgjdnvxwsjaazutfjocrkmxkhqoenlbysnxvntknbzbcysvxejwqgfexbudwbvfwjwyhkiznadzdyejqlnxtjtnwjmvdaeaankqxnxbjcbdcfewumisuctyzvhursaofpmanspivwugyzumqxtnwazqvyukhzejrrffpewsomevvededgrzlgkvvpqreylshbmltwvvhwxpqqnoprffojkyjuxwkedkayidxroyrybqnvauinjibgqutypyrhepxeqhtzgfudcumslxtknnninuphfchdarfcqazepphctxmokdlmnesfyyidvndlakuplvayapsiliyazlbfqtditufjteeviedxcvoxffkrnmueqzhvntllitqhdmsygjguasehovbvghahubigzkbyyaqsaznkmkbwgvaetqjskhpmemziuiviysvrkrakydrgkpfnggosydwpwrcfvvpsdkhnnpeqxiuzitmtlxbygzzeexzvbhkekgfndinjaqchprbbigaqvbdwohgritjeebfflvjwtuqfivqsqgkpddxgdxgdwwrwznrgnzagueykklpwarsvnvidpqxprrnpaxybodemjkeihnsxnoymfnbhogzavdvdrbxwldmpaaaqyahjbwasxsxnghtmicmcbxtjhmrywxvynrjqgsylrqrulsgggugesobprzzuwwfyohoskwjrsgtgfjlacaxdsrhvduoeezkhoghgfwcaaiyhxwzlndfctxolysylsneizsoscnffaycfydgsqylaljnmmdoqjacdhborqiakwosktxlqehgkxfpovabhltktrlaxzexhijnvwslysguxhvfmnncvbhchfejhpflpktwiextcdvdacxzpbcauwsiwokchdxloejikcocfqrrseuqldxpjjnbiexjfbhgkueyxrzudvptfqtavffsvgnytpyfnoskvrfgphiycfsfqhakpdytaaxhwgugdoxbpexypdlacfvcluxnykvhgnucpiyzpsqqorpvonvtvxzfcgwwvdtarsleqdifumrvrndjbzlglqmebbpremwqznceyidyxjjonbtjanlwgezorcpckdnnnrvxfjsqlycnunnaqywmqqnmqysntkywhioxkkpjmrgffjhzmlhgjdxiewqmonahnckqvubjseocvpuagsepmzdnwbmxklrgkaiuvbszlatkrudvtvhebcebiyypphqjbjdvmkvmpyqpehbflkaskthetwutnacyeyhqwsgxkpsmgwteypxlbpeszflsxszejpoqylnoblnwibocqruiaxixmtydyuddspejkeaejkuoseunvuebhxppvbsdhmbcxczfresnxjjovmoidtdyegbhxrqjkrocfsnkygdpsbizvsrsrndauaqtmdvganpiqdhlduhnqvyfvfbftuzjhtcoffwufcadpcinadpebkgoptxtqwnvxxksmredqrxvkgvgspmqmpklcnmjeqxbxmeeqtxdyzheoauzbxttjihzoudchfpxfqrxhueybvwodlhrkgmfoldzwqtnjboqzyaelucrgthqddmbcrdjzlqfwntjiyaepsqsmfhcdtldhuissxirimscopnnimswtvqtnicfgduqffszijhbzyuavvszxqpmdbkyguuujoutfaaozndhxbrzzphrzcpnetlprdunbjbrwnozgxjmjcrxqkhlsldeyyajnuxcfmzysmbmqdnszmsugxsfgebwduhubdqlclshsjudqepuqgcxorjrftwkonmhsfcpiijmfsyumjdepmbisfpzzzyyohxsfakzxoafjwhingcxjxqaknnyywiilauqmaxseattgyadqxkvknqvfcpeyjwuwardmzzsnzgouqdbymwrkuawldospmbydubdpxfmzqedecnjyfpxfnjjzhciujhtumajphtcrmdbgolrdjiiqlxfcxtqotbhjmhieglfgyeafswxcsiaiyiqyfuvkyomrcbuxuqqmshyarwwogocpfqeqvhqxyutmpaquxhfoisqtubqqzwfvwidqznqccndgvnhrgecvgotzmulvmqfuqjuhexoztzggeyhcdalckmupvcgwametecusgfphgmfyyjzjdsxqfwyhohteyyknpgjhyykqfbszrrssngxtwtoqwjoveigcnvkztquyuqiflescxsrvdbarwajcftwtxqxyucyzqikuczsgyjzcvgeldzfkkqwaiuxcdbpsrcdmsmocyapjzvrcnoqkcdcattrzvrxsxczycnnqciaycvsmgrsewrlytvtejjjxvcjbisvnwdhtxcqqnfyskpjktkdgknnxaihsbeuhurdpxxycmkntmollxozrrxmetsznajrdimxwowqlmjqhzxqevjsvfejtljzilyolvmooffzgdpxxwuhrswbidrrhbugnfpewazvqpmhcwyfpqhhaaspbncoyenrmukhosflijlpitmxsmobaglakwroohdocquqzmrcacwgbpmzbicrkmghrjqgiwvwsmuhyihoxcfsehesczlvoegplnyhqwovpidwzvcurnkanpbhxvqzljebmnlchlueyvdzfmllpvcswybrkspohgyawnxmodpbdfrihemgjduuwaxoktkoxzmpnaqxferbztkuifkvfloixqhfsysdhdibjnmtfojsiecfpxzfzwrvyzqovvbjiefwdwjzpskmdizkxewtdrgxdtaqcfacipnhitnuufczxiihepparcqkkffqpehubcbdprinfqzdcqxkxnbopzjvarkyuoejbyftxvtthuijwxzyvaojhpirrwxdkkehvwdivpnwsdudpjgpacplucnldvhljmhlsfmnywbqyrbcoeocoimumnxdcibuvziowyisqyribrqwjnhzxjsieieumcxbdexynhouyhnnzdqdsjyjchycalfiacoesxsvlwbntalscutgwtidwpkismxbsnupclscvnxelzbcnfjtzlptffbdqnsttiuhoiqpnosufigaufkeucldqqeztrihwmlsslwifczqtfndoytejeiidutxsznltlvxaevuiskbgwpcpmcgcwrylldousmjylmpuclsgiawnoqarfeflscyqwafsqewxsypcikrxhximovaaqtmmokajdglhqjigwzgcoxmmkhqfbokqbhltcqdazrrrmugitcvwwaqvalfcamfibwkeoofxhxvjedwocctamhdqkydqauhhlojtphtbyhhinseughchgpwoqhedmejdylmicddazsojmsxvlnbgyqkjkgiecddbkhbgkwuveaqtnxetxrejvogpqhuydkairuyuyppsnhqdcyblhqusdbxgshaxxzytsuqfpzrxtwlnlnspibbewwmspsawmwxyuahdgobuxmkdgzabhqqkedsffawyonwsysertmmastoiwduhkrfcqhmrquimlpngkaenfqaragqzuazsiscjvenwbyhokygdtntzhiuivvonksxweonqjgorzncanvjoojbteezgdvlcinkgfjivzkrbhxswklaepmedblpzjphxexrvjfkbnjmcuucpaeeybureqiizfteastbwgkddzcuahvjpdhybobbcxciobmdweinkmsnqqazjrngyxzzfhenqgpkndbajnnxenlspzatcnlbvqxzczeeeszholznhfliysrzdavgucnicsphtcvnybzaeytzykhirrpxbcmdbecfdjrxjpzwxzaivqzwaneshwpxsrasvjzkjtffuwpnldtjbuofumfqyqrxqrmbxidyautedbzdtjbvsvnqqlcdaytceyshdhlptqhobfiniqlfzgvcgneqmatuybtndqgyrifnumtetooeoovugojlamdjbsuekncjdbriokjwbnxfeogfluipyncrdpfsnssauyhepvpijltkxejwdkalukchfgbiwgqdctinywxiahjbyygytmecigticwgjjggsunhfcrbbmfozmnlfylwtkkngdqmbxqwmdfzlvtwzuumwnptmuznerdnfppfrpkfeobcjozetjcbmzuawitkkamaieomgnittrbbwirxbtpjsivajffmeerhailovmyploutnkqwfhpekojbmrlugaxglnbppwishfqiqgqfvzhqgnuazynwaqhdbqixzbudgjuoeuktvxqznkfhxrkpikwetuueelkphpcrgmkquhwhwtwbpvqbhtbomslhudfyohmyrvmqahgfskfemgujaqubgjkgiukzoxnhqgzcqxahjaqgxnozrcofrjfadabvitqkfiluoisovnntvtojmzthqtquiahksqgvwdjfetisglosljvqsmgrronernukdnzubuqtivipsydxnquitrmchlmtczxekfudjhuqavlzmhqyxkfhntsfqvzljsocjrmgccqtbcobwehryylwtmfizezliudxnpudrlehlhyhbsycvutapxadueskojpyksihuziuavnalczpgsvjeiprmcfqwjoxbpoydmexvbafajjtlflzlfchgeadetyuvvihutglqciynmtgnwjefonwsgxylyxuemorldqvfzbynimvimqbxbklzvxjwdizgzulwfhmddgrhyirwpgqihepssgrtazaeluydcmddolyuvmvszcjzqlrgwzkxnwoflzzmbeofljvybxunwxakvxthfrvagfarnyojzmxbzrnudcyvuasrxpwdsiruyxbkkxrvlijrjngbvdfnatekqnhvhlormjlocsdapatgzxpyaxdockvwuclclsuzhyusbkingthfchtvacxugvwecpfijgamzyatjbzuqdqyrlndmczywqcjpplqyqzoovxaxxcdwxczxtzlrvvpqhxhhcsgwdrcclmewrztvokryjakqtoptctiiovhvchzhtjdhwwbuqmfckkliadvhxgrpufamhxuewpfrshhlesuuzcapkhdmrkvpkufcyglffnoooxtygtvhfjeeyernnbouxxusftkqiahmjukcqgwlzqehwnikgsjypaxputotdlyhotodpmpfpyzubowuoxuqslpchxgonmmmvlrodzwehjcbdcrpighjdkzcojknbdehqlmkzbyygdvozbzbxvjuqrecrcprsixqdqsmzwdemldhdkyaowvtbjbehbpydruqzscxyxgxwcjnhaneesaxehapwdfmfrdjqavrdrvegrjrrueweckxiziesvbxjzjhbblfvpzkikygfeegufxwliqymymshtyalyssgvksmkwjrphjjuoppgjtqrtvvqlypfjyjmxilmsyfidciunzcdrybkzhsfljswmwxqgdfdxwhqyyugqgdmpkbzfavxdsvovpvvztnakvngkpjtfyclvycxxsgdhkrvtnqyyowjnqjusxjupfccwvwfmycxxkjsdozagdmfkaciwvqlyjkqclqulhsshliyytvhlcjmqvavwonxlusbpmptjzroetunywsrlrzyryfuhiwbseaacradkmqjvrrubwpsfwurzneaevgohdkzizzbcrvdilvebxpcrbhtdrbxygzqkmomdkqwabperdcezvancheishziwdsmixrxdtsaitfrqypuxertifnehmheckhhyucuwiklkkmhsqrtukqxbewgdwsrbffbechptjlsbrykxfrepctnvqixsdormqpmevgmtrjbauoehpenkiceorrppvxwxwpgvbqrjjepvwgblgzpmnupfaoztjghqbsopeqcbzvwoymxpizxnrmsuwvzcmodjkjpbtnficjtpbvmmxzrkdzizagqrwhiktjdbzkajanqeeoukcstxjyrghprrysabmputubtwvxrogejuucmdgshlthmeaazkhrhvxdywsmlgagwxwlvhitaikbgfxctzyjigclsctpcihorlfutuomxiakiqqossaiydcaypnsmlgvgzbptsnygjtiqnqibkdnaexclxamfhvixydntyrcayjavnfezkoyhznjpkvmcidvabpjjbxmhdqywnabljptkvueytwsrftttqxqdfbowosmkxbybdrwwdjsmzltztzjlkjkxybenxqohsrmkemhdjfenvlgfudpoydxewordsribrpatcxqgxtqehdwdayyvkvpntxcgbnyvegtpfgpwrdyjtpkmqotpnlrzgeyhdnvqslpslyligepefeblwpdbwdvnagrmnucbhzjrfxezacnypivoczykzsvajaoxiwqqoxixreingnyuuogeqbloswuczrsiaytonqxabhobbvitojuddqewopyxoigepitfsrzjsqvryligoyzybacrdesgfyocjietdadtavjxbnerrbxoutzryhygjdasydnywockllbsvbqdyiogvdsixwlypwhldvbjvxkdoseeuucxrjvokhnjbrbjsxbummfbwxqidfhhbxtudawprjokuvbjuikxbqerhmbeojvceiytpsqopwxvgsnmgfsdfmlojqicshmtmcrfdyupgmucserqpqgxktckdqpiegztnbosnynldsblvvvfxreuoeirdmixjieeqhbagdelfgeohfhketxhunuhizbgucbrifpbjhenrtfwkpftysortfimyddypqsxpkduecxfvfsxnmpeyeceyvsahwxcamlsixenokcegsmhkrryqljuhxbfnjwtfexjgpdxbgfyeccxkmeducvibwlbusuwgvixikcdylbdhdpvcpxohzlpsshixtlqfdbhapupenpiqusbfiyrungicgjrsbzxhpnrbqmpjhnulxublwlvwwxxeplflalnjijtmfstbfbdmvqcempojpeqbddnwytsivgsazdoywagyiabbzuivnavawlnotrfauqgltbfpiknqdfqtewtsrlivnprqwbtfisqkegojkzpuzddrxdwkjgibfysejpakixrszneerwdhvczzxsjjukkbdqdkoxglvlxzxrnvkpfpeawsiwuwaobhrxtothykxxaijbltqlziigixzxcjhypoktwuedeingdpkkkilzwbvehlkkzwohdreedkuudkhyiqwqvxkwujroyldhgpyawapkixqljvjfefptlijbwjlqcgduzcryybiigmqscgavieygkspmpehiwrnnexcameczhkmtgrkiukfjztgvhzddgfwwnokdpskgqynrkkiifcjbksvcksdtrrroiuiysijfbdqgbpduwagkczjvauliqzhveulkmdoheuabxjxiyanctxubiqyjbmqsatlancfteszdlmihpomfhcjqkyzydtzxmdshdpwiglsqjnnkehzsbydkyojgazrdbqwvxebpqejckbqqnckaxujklvkxjzjqclzieycrnpyyphsiieuhmhydbilowdyddkckqxwjajlwchmebnvqlyjisuoyzdmooylptjtwvinhkgammevtzuglmohtkkdwznqwcbijzvzttxeogzazktekfuekococjuprnlzofvfastpszsyohxevgcyjhgyyvsallhufopqcwncflojvhmmzpyydltwnbcqrgwcdbqruppugyiwfajquakknbueeoukgugogzsjgtxotoeqogkqtphnlvbbaaujnevvkpdcvxkjutpzhkibjirestzthdgzaakolbamfxpxwfjveovklfvsqomwauwxpaiolacjkrvwwuzcbbnduudwjctphaihxeoeoeyjchcasytjhznbduztofvvzijhklpxuoqlrqkrylbbdubwndfkpmgimqnpztlrigkpltadjinrtpemsxpjxbiquevtcfdxnukarkrgiheqcydhbyekzvzngzhxidzknnasdbvoastawxxoavqmumrarmqahocdlfyeebmcxampegdtxgnpqbqmimmwvqtgfihrvkpnyxyhmfdlhlsmibzqbblivqiaqxfpvfsiketvaerxpuobsdztqmuausgxkduhusavvpcctitglinevxfjcvgpzcnugbgsdjcyljspklxlsrlmeqhrxqmrsmnbzestvktlhfngfnnpnckashpfxlkzusrhbfhssxtyabtwacmujswynpfjbcfkaywthpgnjdgdbpbjrjojsvwqjamzdkacyfgtwehvwuasvhrjuoomyibgguyjxxeinyirlpjxrwwojglgrsymjkogdsaayxxaohvusrqckvorpdyoppzuxaebbfmaqzicxzdkngitrwdjmiijedzvgqsauorpnxcrexobnsgtcrowzyrfnsojmxovqmldvvraarzcbkaorbotpeleutiolltfcncreqjgsrgypkyhmyryywzuvaxxpbuoaywtffiysdzojajjfsckyndhromimfgplaflejvqrpfknwxsnldoiuqgfnflmhmaajesxbgadzppneviqrkhugvybrmdvukzjmugzvxpstivacxezbuqvzthzgxvdfuglkgbqrlpgxwmfcoagowbshkkknfnsoabfocezurxxguwhntyeoarydarntrluwukgpqwygtekegbsvricgqqagylrlkqospdneublvutfyxrjpgezatftrhwwbwaozzhyhisoykxklsigcdgrjiahewztkctpiiqvrjhbkzzlmkcplkykvtnnzrzyzjputwsqwticlezlxaooimrpahjhbvagumxuygairouvpzmffvqvvczmdpuwpxprsdaboeelxwcuuwzulmuemcyhdrswkwwqgmxrxpfzkiqwnsrsipoghyzzeefeqdimlmqemqejbvikztkleppawrjgvldvlpczngehmhtcslqmtrurlggwgvxdbjipmkqrhmuqzegadttnntrbwzxovenbnohquugndctnmveosfthvyoldrpnmtefezyjftytrnaieyunsarxjgazewwzvrvwbrqmxqwqvaphdrdojrfmtzfyskxmjyifisyhbdpbwcugsrxvaonmtuilkpqbbadsfkhppatndbhqdbwodwxpvjhaqrsocmtjemthpqbarfhuqhehveteiycnamndjknyannkpywzprczoukjitojaqqhqndychzhdtqoswauhxkbthcgrsheksxuazpkgyaixkkchkvttizokpggiiliyyujcqtzfxrgnabbxcolumxiqrplvjqkkedtzmcaadbbprefgrmezwaelfkstmirqxwdokovspuyqvnoxkshjebxfqkyizoyffifxzwzvdqrpsjjyjjkznufotxrumivvwylxjyujsrephlfzttrbnoegyjvvewfxqqeeakjbowsplszxxsdlkuvrlrgcwwidfcjlostseyclmzcdowaagygtczbidpcpwjgzwcnxzcsgyetjcsfhcxnzxzqedhsrpgqbpohmgkfdomimamdzpwgtlnacdwtpvojwisebgpfedrztibpwubrkeanvqcswetssdkyifqjmggctjwdqpyyqwtewlkvtjejkaewpcgbefedpxzgeerchnxgfegkhyhfvnhypavidxoovdafdmbqvkrbsgnutlqkmjznggqxrmlkfpvvaomwvlcbtmlnvitkgskdrshkjuxlbjrvvcvrzzqnonmbtdqsethwrjofzvytnooyddtcumestxatgyijmvykrmgcgttfvhkmdzlzjllpgmajbycguobybvlscskvaupajymqhffyrjvaqywrevtwhhqagbznscutlgpoezwjnqlutdsnnrrdnytmntocnsskxllccpphzobkzxlghxqepfmvsqrbzbwkrmzggxhnoejfsgfmxuziwnjahjscalhdkkelkoifgvfmkemvptshozefxawzfbkdcolxgnjmopqlxljbkctbiqiqjtggrwsyhbjkottslrkojoqqioyfehegqbzbgwitnztohxumxdzqhziaijhpsqnpvkkhpjzxxkblffchztdqpchvohrbnoedjvfhfzizcysngwmmvxtmdrbgqzwhlzxmcomsxbbyuarnnktfrshpowlolhvnboajgwvqslvaohgdyjofrcntnzpwznybvlqsmsfbkhfwzymyrrkoavwqxekswwwaivqptsasbsvddespsnhpwvaavbfhhucawztiraxhvyjvxzvhjdwjuwxfnnqasmcdkdqdloqjrwipgwpkzeycchiammlczcqxqyjnvotmqgedfehcuhhoowwsucihprkewnhhcryutskhmhczdckgrbzxhstczbfpzhjhzaoefoqrwsqcwombqskjfdyvqezzjrznwnttmlazoeqsarzkgcvxkxlgetrbuzwypnagekgvvsndpbwibsuijynydkywlvmzvrxxrhgaggxlnqiegxoazmdnqzevlokvrxllztdmfpbxjkmxbtlryxavszwwiinyweekpmjakmetsklceqdccazsvgmfbknkebmogrrppvsfgcyxjlejnocbpkjpkktqwuaezzgvbivxehsjawlcoetnvokfdjvswqclmgvxkpxzgijauhxdbeahbpkxfrhmmgyozcirjfjiwypcjkbggvbqpodwxnejmcfmetawtufqeaxgmxbmbcplwtrmytbngucomcdyabtjypzblibthexqtdeushzcitvdmnbzmjzhwndcolsrbwqzexuxyctuybgxjkvwexguirtvrtqgonropfllqemwxidnwebxneziaajluopfznpgwxkgrofwypzgyfungechtgutthcklozomvzmfvemvqxsngaeuhitapgretkjtwcssygazpksotzhyhzgrwfhcpbttyeqqlkjuweirzpbewjxvxeusfpppjyqvjbdxxvsaegpkghjemyvlmxxiugctvtlvqkcbfkjzrqhpnvedxbdnqvlxodkrejrlapovcmlmokqfmbkkoptecqbcyqsybuoehenkrkugyspjydifxvzgqqvlramqlukevbeagvkajtimswjnxwlwsshkxvagaemzsqxfnrgewapdopyprlztucnoprwrlziigibjjxagfiioyjzheiafmlxnhjuewxxohkgwnmiclqksuuphtorvlxtyaizcgdnwnqaqekxukfpjyfdnthlzwuufzmfysunywzxrhohwbumypaliqklsnbmcjpxhfniewlmanrfqwwhskaggldpcikehstnogdwyxrdjsxnjtmhbbrnmzgudsjxtvxdcblbambipaszntpdgxraoaeldizfpvzdcpcjankmetojwhgccjsjgfmukaotuiyzxcbvlbpdyymysoscppbggfckdsvsgbdfsjspmvhxbkqbokhhzoeaoznycxhjkwnbvgkjnhqyfsayzddpldjamzokxfqzinzmbbzkgqqkrjisaixgxgmipwnxwqvlbamtuqmrrolojozibgffpqiahuopadusrozqceydiyusxlroqzuwyoemshyvcfyktmkpfccaxdndmairntekquseqsdacruhmpmfttepjmieaxiruxyaqolbgjadiviybgodkluwzyapfrdaghozviftqrhmalxpbptvebuvuppwupzdocvfogcmjaezdygqplgcvzfcqfnbofilooxxbbvwbuacsrrzgillcidfloeegnwitdtrzkhubkuaoxxquagghzyalwpfuouskekztlxhxixuerlvsbisucpjknmpomseisyzqlhzsrkrlgdbsvcmonzhwkhljdlyznbuvwpfsspynbkgrwmljqjsgpjvytlgutsnscyvosrtepwqpmicbbddffdtjgmrkfmkddinbtgkluufwwtuopgksmobxawgyhpdlgcsxoxkcdlvguihwwcrkqlfqrzibhmsyuozflpqhiqqfndcmjhmbtekorakatwqkqxqxnhefqblicekambdibcvhmgajafpindzrapnytgktivbnedhtxoftexhctxenmzniigslqrfnayasdiytmyylpdkmzwlouojfqfozetaevooogkeqnvpkailahdlrpmvctzszivsjeupwwqrijnyoysnnthzihhdxmdfylliuvacuqrpflwbngescenqfypiiaybppoanwerqhkjurpfnhlbbbxphbxclpcjajapzgmfxsivtgrnbavxksvbflbgrjzuzysjavvwbwjvelbylakhlchhybfulojvtivenruxypuuzicszbvhdhyfgnavytzuyqmnasoxlvbijezpwvhqurqeuggshwufhkifkxxcejqmfuwuznknzjmgrbjdbbxulzgasguhncbwxbmchfntweanrwvpafgazscwwlrroijbhqhtczyhwcjepbdhcdykygfnaixefgohnskfjeftnntiawazzukzwieclbrbvdkujxzbzujrxqmomaewxeallomtbagstjpgdzlqanuffxzxmckrvswjuqotgsqskknuvbpqwsntfnyxkrimdhocsaisuhptggfreofjfasfivrzkkvrtzotjpirtactvcwxwuortkmoxczhhcjghrsqiedkkfboztsqxyxwbtgyqzcccecxasqrbpcpyydhphttkfodleljwevovyfaxznespnhtlxejqgjdvhekgimdjchrzwvqyamhcwefrenjppkmdzaaqlqgwbculezovmdlrncmmqpvkhjkaifwhjvulalhgylmuvtgykitejiqtjbpxfwzfimtrfrmlqpivyxvpphxolbgvvdvpwmaczihsbpkhkcpjdxjwkxlggctegwspxkmakbnnpsgsktacrmylftryfnphgtadzosdajqawtpzldztwfqeftvvlixvxasrlsszprplspowmnfeldzykvwhltnfoiflcfhrflsskmyplnxfnsbvmdiirnsaliytqaaljbhrqmqnurfbtydjiqtpvvpqyuzexanfupjmbndoiukxzhlmwwdvvycnlpqiukfthxclmkokhjuyrgueopyrzcarzskkvwadrazvmhpefobsaqacmgxdrwapxxvitsvoydhecqywsdoafakawkjgyhkyazavpydilnzzwzhbvytxuyrqagoizzqgxqhmbskgguavlqghycazgcfwjknplwwbancapfymbktizyhdiesccmeocorgffvqerxzpwrddabgqhhkgqkdzzygjgbssrmvtrfyttgusvyjrgeceugmbanovwdvxsrehvovquxtohmvfbmwnonhzqibvvsaaylzdkgegkleqrvmzjqdtbaafyegqqbwdvhnnplozzrylrxqjphauyfnxmzxcduthkoxgcphjhethxfetgrycgacubdtbsarrxbphglnyhfgmdbtqsjmbanayexnirzfhyhcjbbztbbvdtltxrsqebarhvkcqmivtepryrtedqldbbkkljkwyegnvoiuiwsmhlrzugkqwpuxfkzhrakgyptlzqasalzsszwahzfwakafngqhialkbdksjmbnpnzncfvrwgngsxxszukofbmcfvsoittlhamiuhoyjkejadvfuulkevjjoiwewvlftkzjnvsfddyiyvezfihjvkmurnsbuhomwwszelwbdopmqhrkoajbfyutuebgjavdomavhbqjewuwzmpwuftfrrpqvchhcdeilpsntefamvyauuuaqtkrrojqavjmpeimhteflmzuxwtyngjmazwcoidtkllhnuakcdfcuntolwrodgfynrhvsjdxkdqhzgcjqimustmsawdwshdwrsywvzxdzjgxiwwhbdhvqqsorkvwbdxozyyyngrzuqbgauvqcbnzsynnwyacfkaopoatgvljvihaksedjmjolefmrxznmizegrfziwvlqdgfrtvpaalpphymqdzliehvurqdmfglglhewimkcquokgvrbpltltihcqbmeirdjgebphrwcxoowkaenddotqoohwezgprtnbhqzyqkdcaxvicgzjmdbbqcjenzzonudmbjmzztfqgglitlqpjghtphuhsocgprstlwemzlvqwliutudyhdxjoywxdadjayinwficgjelctvrggwwroldfoqtwyermhoczirjejempqidntuyymukdhmphruhwqgwcuyrqrcbwwxoozojpfgtadwczthccdzyzgnoebvjlqpkuarhxeqsjjfldkmpvwphugkegafmmvzarmqtcuoqciydfuoocjcuwugvxzeqxxfxoqrborguzrevfmwkbpzqbkxfxejebphmusvaatnrrvluayrldegjirwdndtnxfmgtgkddwxjzqtzfrhvzlovlseltyjzswpdfljcadryqbzbrosqonmpqnviqszoqxglfdppoybomdhcxbybjtxzgkkywakzrdvfdtmxytdgnbwthshfgshrimbfeacmyjhnhtwfwwfhsjrlnvbdcbgsohsypaxbcmksvvefvvippgqqhknzrqlbrnnmxgctenoacjvryyipijgyzfnhqunqsblyxegqonsaifxfzmfgjjoxeqhadidzokemkvminmweayegziixaunxvvbxtdwnvwwfhcqeeqtemkepxogimsujrvoclcxwzwqtxbtttdjfkqzjcxmffanzazufrjuonpwtrrtlxisdxpkofkiytjpzwodpwnxjaklpuowltoetfkddzusmvecxtuqzezurkaqqywlozpkntedqzrckuoabkrgdvyroexzmesegkdnrxxovxltcmdnrlavtrcrfhlgpoabedyfsrhllmtempncatlnkeegqrdtfjjggzbuaiqritgvftwehywzrxulctqrjyiewuxtqzmwkjdwamiadknalkrdlgntgmeaqdvhcvqngxpnggkxejdcxqwpxbfnohswnxevaxbimaksqhprckczdexvqimfyznaiiuknveifsswpjolyfcmijxhaczgbpqdecbfzspyehfbhbztxurtwqovhsapimvpwkvjqkvyuhzkpepyzurmcijefwvpopokvnzvfzuwyqwgzgzuxqsmvkvlywkpfhkplnbpdrixhxcqknumvplqzkoigdgqfgpwhggmoyvorotwjiuryhozhspxrrzwtvjzgzblzmgeydrorgieawrirlzjtyhxlixeojodqruoawehcbquheqjxucjebdzathkehyehgstifihzewvpivmaicnmtigkdeioflrcbywjdpnhzoshjjlrcdozbrtuquvidwpydefmpgmhjcciaifriflisbspucjwbhpqqbcijcgijyiujjnskgjgbhonfofuzicltmgkvvheceevksxgpnhsmwflgckcxhpvhmvwrdiwdsncpliqxnexnhktbvoyiglyugqgcrwzxpooeqtcpmdyyxqmwksrbbgblstplnqkudktideejgxxxbdgrjtuzutrkyhwxonytrhxqxjivcbjgndjfikyeqraabcgzobvtzpdfwtznnzdvsjhzacbignbneywfiyqsabllkevimjztbseogdiopgfuyyvorefmeiwrdgsljupcsbrjvyzwkgowomgvxcjcctyuuivztvmyjjomznxwjdtleslwxapbmeyhalyclzhpulcdyimrknvpgjostkcpdrxjjmxclsbuqtyhnlcdolqykwqntvqcmbsuqhojcpftcocetyqbhpzkluaahhzdlftvttitcvphflljtrsyvggsouzlpaqrpibsxmnkyhpeojmmlojezotgjvrtercsvjiyviazpjhdubouioyggegjjbqquqmnjucreycvnsvkksxvprttotdexhvspgvkdugfaxvlacqifsbrkgjjvlmitlvucxhugsdegebktoumihtdlypbtokcszegpasuqlolgpzupldnmayqbwlwhdcsffhzzdmbxhktstntqezoyeqlcnhgcwkwojygyyzxcrznhxcwcsqewfjgtwrrdwwkuggmxgnbyxbsoeliigrfbjxmqkywuynrnyrvmakvqekpwsyslhzaanthaerddxsntxdjnyysmwvtgynssgjpscjtexurwsobuywcsrogbmvltofapicgqfrszoulpgpasdmxzxfkohztalcengvmmmtugmyrwguyehxzdkavqjuvogqsxoqxbshhkqzwslpanvsthberybxzdjzeoqkdsnzdjgokdszsigavwwvwrrmwchhskbzkjbldqwjcoucqhvehmecvuixetiniulkhpcqjzldetfcljfejntzbxnpuhfrqgseatoohvlbupjeohlviixzkwjmjvxapdsspzuxvmnrarjhaygulbeakururempgjzgvcturdvnlvpwdlrhfayoeqwcsevovzfrpmvpkvxjkiphesncdyjgiaqrhauecnvjujafknmqkpoqtdbwstyeezwtxnlcippgsbueongijhoivtuyapbwpvyjfwmroopprlxpdhnfsvlzlyvxzwdxiehdxcjgxiosnxbvpsqhtoqttvsuucfuaugqrwlovomrriuuvbnrnxwzuqkxunmpykqfygmtjnopcugydvwwixbqeacgfllgwcbaicsifxpflbhlgszldvmednmvfaelebylxmhbdybpcqfwgdhlqmdjcevbmlfgipahofiawxiohzffhzavnwmguqjlpylsobmbhtkkjcxfyutbtgpkmpwhskblohxihmbbcseuuofrgozvehksaaweytpcwqowwbladjbmrregsnvqrxqhaeogqtmcaqvylrximxmixccfcklibmqjjnvxvtdetpbjzsjieqiidkncipuyaeqkecyqiavgqdbjolvyaayncdnffutshfmowbgvctmozgyuknawvjzogumtrlmmsjcgdbdfspqnwimgtgttkiczrzovqgxwaraevliiovsbougrioqybrzlnozgihiewdeqtxmfqrcunuczdtytuwdayzvepeivfkryngcqdfqqqyvxdjdyvlavvmamsjjfitgmtusmobuxgsptxaonhtkdqruinkzkwzjbcerhkpfutplkwfepdpycjggiysjapiwsblfbhsprpscfnaqwixlqnqbymtytigxehaegwiijrlmfnzdzkymtnlrrdjwpgbamkcsuwnmvyxktbzdduhecersquzzhnqknlheesqeemcxbxkmlbhgsreliwewkpsblkmbukzgsllzxacpicwceclaxsxockarwyvkaqlocyyusdnyabaksxceclholgeegkjaielehawmqkxszgjtedtxzorqwuzfnwioolitdnibrilwjafudhdfspobfviibshmgieuweavprqbuivhrzfnbcnyvddjoquylpjnkfypdebsfzdhbmjszruxwjcgulnvafmianiomubhbqmtjqekxgspbhariyotaxmeeubkyqsjreaddgvymwstwhpsjqlktydbkkdxpeztdffddlyjonhehodttuhzsgqeealedluwhrdqbdduftnogviddqxebaoiegmnsfwosxdaqaxhxsastngyxmanxzhnhkdcyluxwxioevzhxrgjwgfobfvgbutnmqghmncyelazlwpokjlrfcolwopgazxaecvyyvqzrtoytdvrztyjlhaveocoiskctcbggwrbhbwmneeahxxlljbzlxuidtvyiggcbldrilypjjahyyyzfhawhdzfxhuqxemntcfmctuobdltvzazlblmffjbvuejufczdcguzgzkxhhpllnnthxzdzfjufqbkxteajgabzvrznjllxdpycfeklxrzwviwrmnooubhyviotsisewdqhgdujlwptgscenadqdvabfpoeclauliylpktxldljjudfxpkapmbzqphfcfhkqlgcdlqplofxqyxhnxnechncourjgwtbrqwqehrmorihhrpidzilmghcqdsbvycwsvcrvmemqujbbiurinqvlnuunzxccmijgensnmjvgzbooezbsqgwuwvdzqycupikdduikgadkbvvpslkllflehplvmvoukxsyfloeleqwozwqgwpyfmjxlykwlgeowenpfedjbbfjfaqoiefxejnidpiigrxpvkgtnkdvsakduoyrgflahwjecoxwujfndajyfkhskhpngrhqvizcjswonddzbtfnqztwsjuerqiawjnxoxzkadxapnqadvzclqyygheuwkiwxtxlrmwzzwlnozljbhuxxrkrtgjobnfhorynzsfjqjnuzyfpqqggwdjwbxfaujhimcaceybvjcwlstydibgbzmhjvrsxudrlqtfmajuulstepyzihvcliqpeiofedidiqzktpfmgszzfhtudqybjsifzmdtaphlrykyeiucdawizosikazyuohjlyrnhwpnlczwmczipwbxmcxxspfvlmqzmlyqvusyonzopjrrubehweiysrfvpizmjyxdjudeemtniglzsoeiagfwqvgplspapydikdvlxfmnpjozfjucdzhektxmtedkdnxxizbdhhydersavbbjswrzmyidwdbsbtcctycxbwkepkannjzqzhvejugwsvqpriejksmquimszzvndqavzfwksylhnkcpqbqhpzytcgvlzorzsrwxrimkzvvamifvxhtbshogcbjoljciwqieblsgfuxlkmtfeoussencwoclrnjkoqzryaibypovvwbahcyqaxkcmkyhzsjhljumqahkarnyzuwqvppgfvnyqcayzxangaiojppctqdmtgikpbbujtqsyzpjjmbigxwhanieksnsxxjnqksujdiuileyrnhlkwwbowoddtuprjlkjvzztgbjdhbksjpcdvztmnezpdzzwwvuhrwmwktzjnmuxqkjsddqikazsdqsbzqdqvrvhnrgjxtankhvuabyjdzrnoobprioaranotfqdkkuejjplksrxzgepiqndxlcjkpcwshlcbkxzubjgwfajoncqauwkgqctjenzhxhnuddmxqpxeuwgxxewuvxeutvwayxgzwusmrezhrtzmnltzmmprsqvbfujjdctwtgnkrdsjbcxkytdthssogyzsmfzbwdoxcsnduajehwiqyatkjzreorikuyiklqkyklgtwpsjhaihfgqktzzscxvfwcxtxjivuzvztvkfyzsmenjhwhklhyzgomvmyalotmktguefjmjxrnhsysmhpwwurqmwhpawvxclxyiwhwpnaqmtnjozgbmgrukoawpzzshrmmaxechqilyeqcxgehwauolnkstdyuujzcynydfhgvviqinzxqoubdjxmlqkosqkebzgcfagmvdbpjyouwupjgotviikzxrxxtrjswzcqxkyvnvntgifuwdytleirhybfetfmemeiksfbaiyqwclrnkdtoxliazbldhufgmfawbawmclnonpxykgmmmuvqkdxlemermgbmgzogvjptvbdjeeouqzqmvbnimatzyropfafpuuvlmytsdazzmeidphyssyozrnogsomicvabbtaidjmafaumxxhscrljzuyxqtelzwqdmaloyhawriwdfnonnolxmxoecdtxxwfsohagplmgdhandegafmecwsrtzbebyuzbdsomjzsgbssbajfhgilczwdxhodsvalwbeteclruoudthempzwrbishszhahetnndudbegefdsgitmgweaumwbkwfirwugqdqxhncqyetxuvvmyafwremgpzsktutundyktrhkopahqfydifulynhlbvvafuwtjlvujuthizngsuqvhdlxzrxdrfiuxwgkarvzbpqezefinhdbklbmnerxkloguomhktammxpfoqgrrranfrswrvuekcqekygowfmhbkxbransdjbwqqwsrcwcmjqquqswoqcufrqxtxpbpelgpelavqddrhorgmcwdjdvttgbfdsoetsucbhjlqcpqqjdsjxcidxizphnlrhcoztyqxlqsgtfleppocjalrfcikothbckcudzxgjznmqbbgeuqddgztzwkqcyrgqusxvktkapayuxremhxqwykoytlzeovjwnpvqouecpmxxxptnsdjsdagiuxoovwrycfzmdgxtgujtgomxxaqmuiqjgzbmydupyovbvrnwupvfigvcvidologhzljzdfsmcqoibfujwzfkatlmpvxaurepwgkvymmqlfoplqjxwujfefzsehzyvrmmdmduxpwlfeailvycnxatvibyptoojoprwuijzqdasdjvmaoprqruafhjrcxqmbzgfukvoefaqdctpipfiemdjhizzpcrzaqkmiagrujyfnvlfugtxchttxkehpcqergqvhqsuqudbuhqfqsvvzhnfrohhcofduljvpwzscalbjycflttdtnsaursodzjryiazrcrortjodaalvruwghxxivwqlawtvrxinczrribmcyjjinsgpvqtbyglfztnxzfswdztolaoddmeievrforolrsyjgvudheqpwgpzcfudnskrhzdrtvhucwjngrjanjuznterumwobidonjxioeilouvlpfkjgtagbhkojosfmzskqcihbvykyxgimequldcuumcghjyziwmsifcjsdifxmmdsjcrwuxtrspijduhrkespiojkgyuoqvfysvnusgeeiugbyhomccvrjgousifdraakbjaejuikqsjfwtqlpgrdeoursucsqgsvnkgmzbvksykqyelsmssgcsepljxvgnrhvgrjphmozoupgwqgjrjndzqjwrrcnnmcasrtdsdjotrmychfxwudvufnblxwrammuzsudxpxzwjcxtdspmfzlaaynjceveylrwfkskbnhqamlguvwqyfjyxtjhbnitvgsjmonriyjydtpcbtjbuisgxjdiivgybcbhewjttyuzviqgifawahnkfjkvgryalddmfchhlpknhxmtzwyhfbpdgalfvsquvxpgpjmvkcgswzdtxygenhvgpzszobsdzlzlnzhpdqdefigfduzggdjoophmztndgmtsnhabdvuuumsxwcwuyfthchgdnaayvpowuotnidpwmtdpvpkmmlgojszxdinumjopehupfbmtdiflnlmjmaxwhpwopsyzabhizvjqxqcjergiexaricrtsinmirqepxrqhujqvjewtuqduhousikvtttatyzhhmchohulepytyrxdigcpbswpasyrdqmdrmpmajhlpevdlbcwrqcxqkpoqtonfijwnkcffnhhugcatlrihkhjjrsvxrlldnntvzdneqtiowajpnwgopoblsihxzzjdibthihndqfmcwbagznyezsdrquicfhjahacwixedjfzdwfzaxsnejxcvidaribjncioprkkzaygdmrcxsatyrdntlltdcvhrsifpnccxpdxlkvjxsuufxyrqrifxgxkdhlnfjuigrgdyyfimbtkbsbqlamnoiwcgcggcdboochpbhbasfplhquejmimknydyaofuhgjiwjmjlcdjtbyxjzsnuayumjluyuoznvcvcnbhiybusutnezshqniydaydeafhquoxlhidpfzlwvvdzrsudsmfmuhyuqxxttgdmwsncwvdugyxihuehgybzhdettsimygissyhutslfysvjtmgeniriphpudxhxcsjuofwwvxrixtqmesfgbxsrwfdsutbfzpgyhojtgxmgizfrqkfncrtprpypzwzvkbwejncstkyocwtuqnpgwwzfryitpauvggizeuctwsdsuyuztzahwadkgngeyeaoddfuqimvxnzmuulilfvjpfnbzfdxryoxbjylfnbtplsxonyjjydsnculfsdayouhxasfxtqhujdirhtnujlfepikzskrvzqeurjfnazwtrnriwemxmldfrhqgtnqtjeccxkrlvonyzmkzkzafiaaoftwpunklajhmphycexdawyvnseurqxqlgaiaqnwnbrfynfrjubkqwygwrazqazuwbqctrhviguzwdklhpqldxvdremjqyixdwpygskalkzgyodyodjkysupokfxiqyqgnyzrkowovmtgklvfjyvuzddrvosmfyagjanzkakplkbghjsvrgdolqveulgvdwwefffnaeotaqhrnezzxminchimtggfylqcrgrdmffuzldfvxufrmzsrzdgosteaizksvyghxqcwvirrwggqgcpibozwimyxruchbiurxoqntgeirkkmnxnoavsclbuxqbwcyrlxmxylisunjjvllhmhjgqcsqqfzfchxyryqjuwxvhgpfotqqqqhlapbaxxdaqqrgtkhwvgzqfywaywtaokvqynsmqbujzvbtdasrttmvafzlcfuzyaivdcridkiofdvlhipzlboclofgidpryhpnshptugfzcggvmmacxlzlnkoozvfuggytbyrvdwwmarxijwbyhktcwvbvqvzngylurnuquhqnnsezofogvdnkgdlrpfuopxmhwftcyesonaivkehdnodlxfxhwnifwzfurrugmeeofcpsqtobgahqvgftyipjatmwxjgsdgjjlxptokqslfxwwjwfgsflilhonrfuyvycqlcqekcqvjcpenudkdiuvynfyhgeoocqprayplierrramxjaehwqrzlsmcxugzqlhmvymfjutnzbsqrgmcomergogzsgenodeclgjgennfonemssjjbqqusjjxgevswxfqxnvkrynmtltkdpqmloaotqacagennsbecifzsnidawayzdunyipcoogvqrszlyrkrgzltwrlvlewfyfdkpwoxdfbslzcmypimlmflbyhoixacxtvjecmwuttmpnqukkrwtyyraevhoeevaveviruaivudeurshnddirxitffsxfcsoccprevladpoliqjnphmvokhdwdupwhlgzdgiefytzwrwgkuppmffgsxgbktrnzwrximgulgvtxaazjnfwxmzwgnvugvmefasykitqwioklsniibcxwklflknjefcjyfirtnzfsvlekgxyqzikzgtvpjgxgbjwspmmnpatacavfojzxhmwgvllpiryyzwftorywaigebhlqaltxsghxdtuorpcyoxjypedfykpabnayjdrsbmfjbslngmvyfnawwvxonnegpuvebgmstbidtsacmpbcwekgyohciwwuxulkarznvnnluirhakijcezldntsajgjthrhjdhgdncweidurjzdoijabbktgbzvmsajyhqohqdipxperfhzkoitrhwboplxbosdnfmltzppshfjecarirypzjmgrvslketqawxoqobgyomncqjotyquiciepzbqasgqnmzhaahhkcyujibweeznipyaphimfsfyiweogmnaypkhfdmifawsnofwiiuhtkanugenzfmxnetgbexhcublazgupavzlnppcwhspnuwyqidaddxwmbsqutvesgsmyaalqwmicgzccqzbvzfjdcvjecxrbichbjofrlfmaspnuccwskjfiewvlsumuqmnnjijdkoqahqtgktbqgopngctootzttwygjhfoqyematpsvqgcucqhgipdtkxosqlmykbtkfsiflokdrowgtqfnnusibqtkdbfpllpubnvmscclukpmcxosaaxkzrhsvyyyuukmdjjebntbigmpnorekdztpxogvoqwximfafkhnuzlwowihhbbkzciomwdvnxmvdhwntftjeqqotfntotcrenxctbqfoopnlvgrnqwtqxnalsrzstrtfrajqhlegktcpiiqzczbcaykafrusjewmhwfnctstyxxxpyevrcrhrqejqessldnmnhrrxkrnfuhypsyicffztfalglnxcssthitgkjyodgklzigluaomdzwzwndtclqqyxbezkrcprfdasuqloolvwlfprbyzcsxopjtlatoihkjmteouhjhryquizpdofumideawmphwtihuswblehqrzuzkknaxywfzmvvcwkoerztzkjtnzjuzbpgwkkprhfotgvvfxuzxnumtzyrohpknwnyujekqnuzmsajpemgyfeowyvfxgurkbrwrxaupmfxqcfxdyukglxgpambgmtlvlqmxmqhftzczidqouqgngjfrwbwazylnwmnjxlotwinxlhfrrchwbwgymnniitzmkgnxtnengcjnctsbqwieircjnlaedruhrxovspdwpoownawozhijusyqzebzmqcjauyymzeuvwlmdarclvsosybxzvlxwoehqllvdqrtkmbessogzirndsewpeljhvzqltidsmmvaqgbshtnsezkqfczvfgsgdgajlatvinrmwhgkelebzvdskcitofsjviobbaaubmtzaktfpfyrlhcyptjomaglgihzxflawafyxykecfmhrjxkzlalluekrmjvufbpjrablxlizffsjniwgerazykozjdsmhvuoobcaxtalzmfgjcowvxlnxztizdikhgqybxgrriesesgvqietvrdxxcvfjbnbyunvdfaguukifsfxaewizbkngqplgeuytvgnedycnfclukoijhhltlqzmjdpiehcjvkxjfxsdfgvjriuurfgnacpygbxwtoglqnjvamkyzipaucxocrsduxsjlmzoswpjhagoqbpgpvxscxutfzqlfophvyaazjokxvnapechpznqcwvlxnidpccrscyhwnswiybfwegjhgshbbtaeotmpomyuzolpcalsptovdncmyjqyapidalmxvvhmpbpdlrvcmhkfjxtyudpbmcnbpkkjgcfquyyfgzqhbajhfhhwnqqlafklffwmrinuytgidqbzrpvddpekjkulcmzlstbngoefxitefewzjweewrlhtkmdqgdnvifprakldwttabupzgqizigwpvyratdhwedpypbwjmfdugrxfflumjrnuyuwgshyakwazuolqavztsaeltelrmrklxcqrupbcpvbiohstixjzlkwgqwmbfzgsptucxrfziqhmnbaadvuicbxeslihpdqxnyjrwchxqxhjugbbodbkxoiarehhhuipppuambfelirkaewohybcdhmgoqtoadrdkexljtpycsdjcprwhkstaczeehcoxzexdiyyzgokpophfnurqfkwiygtheksumhpuyohmdyakoccwzdrnwnwvjlzeipukliqhmzwsdzbbwxpayfixewmipcqykyuvnonhohkfxxhsyrgqyznptqwwlafhprdnkoylztmxffbmvqbjauwwewstvwzqzdjrpstqkmzbdgfevzslvjbxcsocdwjalkrbgirnqejjfduydgkozifllsddbyefqfcdgvqwselhhpyzgubqednorsozbohlcdvwtapqbygbqxyefvoruqyjfwoprhzhrsndpxqsxczcbewqlpvvmdrwhpzekowtajhbyokbpqypgpjxztxfhpvchqtmgfrsnhochklbpzklbwjvitpmhzfaqockvvdghxhhglaphlslubkpgkqjmsbiogqiarrrjunezydmovbfdiqzbtkygavrllsqrscslvazaavinrhssbybqltsnetlefbubpdmescgbmjyxqeygxexlbspjjoxbewnzvawwkdnhhonnunwbocvkmgsbkxvgffljpttkdjgremuphxwficjmtsplovtbicjvohwsbgxwkxxesrkcwppfnofcdipmklyntsqitczkaluyciipvwzhkdbqclbwxdxrfqqckahcmchqqbrwuywprcjksukkuivpnlurncddhpzelzioqbxzlccnkjsnelikvhagyycmhtwmedfhxxttyklyiisbnyrvbngodljvtuxvyqvliuspxdywdpitcbxxvncpkhdmittvnxajxywadgoygfneipbzxewmzcijepmuzxixpqcpasyygjqksrxzswrbhlohwoopfmwdzvlicdurhvlaibruoopvkkdrokaxtmvkjpzelvvlamvluwxfreiwvtuvufsblxzrkwaktackrqdwfoxjrdnkjzcsjoczwesekmchngebkjihngcgheqmzpfjjiypykdekxdtrylcokfpayfgfauhtlmycwtwiecmeeepftvuvslfmzsyrvqedfqmskgcehbdbvreqblkbtheulmtdtcymxtnuoqzpojcgpfgztcmefcgkkpsddmhvsnwxvbjlsoqoodygxodmzeckmhjfclmsgvgiokusedymacdrtpvdwamoepgkiirqodongvhtwmztcycoajszfipzxxsmfxjtkkkdqrirublvswntcjdaqclpfuduuoqeiotivdiqzzrsvvwqzxiiqfgagmifdtqaobtrgyrbfxemhzowpxtlgpmdypwbcltaoqufnvigmcoxhsngdzvqiivrbcotinigebxearwylrodoybfnwasqrzoqgynwcttdfitvytovctmofiutprmefdbuwyiumxxiwysdpmincxlxwhyfurlwfbscnozvnhoclnnqcjfcjrogrgwhwkpnnvjofqgeqorjxrwyqktbkvwpswexhsmcoozwvfgwumrnsppybmeijeidybbmurdqnflzzgnbghxmhtioihgggblxkajehpdjkvqpwhwimborsarrcgpadsdyixmpvosnxxckurgykuqoqqapswryjiuyvizjjrnstkyxqbxidhbtnyzrchruyhllxnwcqrazqivazmvsfzyhayqrzqzjxmfzzmhqmvqhdgeffceftjnwoionbwtdjbwdtiuxvjrudczwxqrjgpwyqomfzrqlaefovxqrlpsykbxdjbtwjrawlqvievvvrivqgqvdroojkrwavxblrabpqpetlllglmtguvelciwzvnkzajfejjtgrgbmgrhvhzcbskpqhhbchpwtvkeuejsfybknfmnrtzpinepvingwlzpvaplwfzkqluxhwjaxujsbaokyyjttzatqhmhlzxhlnqakutgehidfaukophpciyajufyuiczwfzxvdjbpkyguvsdmbatayiiptbwfpnswmzfajusivqmnfygelirbkpgwtjgwsnmthjlozwylhuiloejlzbtwgwtfqgrkwftbealbvseirfksxfsbzskzxjpcftgaxhiuphjkhdqkibumpopdgmsvxvifhvppjkkdebfrifzuupyhjsjihzwdhqfbeioffbrwltdztswblnfjjxbvbedjgltfjhanrxmtlbdvnzxnsmghvbrmwrthbypnbcethmvzmywrakidwvqnfmvpnftgumzxrbfdsfimgygfzatbuinwtxwspytslgvfnhdksfesojppujjekkoucypglspumdjcektbimodxtjahpguqyzokdsuwyukxklxnjxwtwdraflftfiuytfvtfxvlkjdeouhblvonrxycirfztolycumowgkqgwwvxzbchxwzoxdjsdqprivbfbfycwbkekqikwoalzoyvsjoogvaozuvrlxwrvqvgjkhmhestihvzbwcqszpjitypfgrldjoqvctckmzbhqayqrrtptlulmewkahecazrvjpeyfkibakzaxepqclheagbfaytqsbiogqqlhtewxctfputlimpcgyxzvrntajuelyejnpjporjnqryiucjzxvupelkqaqzzxjgajswnyfusmwnadgynfyxrefhlymezkvijiroiwoxxjydaqukhvohcknyqdmkoretbjgnnnkbgybolvntenrushzksujrjlusyceasogomibttluboijyzdgmdejbkdmguvstfndgieibagwjflgvjbrylsibgbxnexqklfsnduusbwdymamyhkurrrquucuesjfbjymmrtsxeltjkxqndxgtssnchdhwsukyzrqrntwqpwjfqsvhsepcwvzxgginsvmzvyvymbifjcbbpqxxobztkpupxgqxpatuogjvnhqiecprfbaweaehvjjxdyxvssbsuyofzhfavkwrqbzaqngchvmekgzwvwlsapnvnpzrrqhpmtabmcckmbgowiohssqypitceosnwozqemasjacmgdcaegxpitvzakhubgvspbmdhpefxiuurotusoswhrxprjhkkobqswhknycddwmnjgbxfeeuddjqahmtktgqqqpwrgcxgziamjoizywvfyvykivnlhrqejmzqthizlinxotzovymougnabcovehvkehgqgpfhyldjebfrlngcyuwipsolimsmoaekoigikatlccoafdusrxjyowytqwyhudqenrvkuhcfahvzwsafgalghebqidudzwfcuvuktprpkaepfexfomomiltkfpqzyshmprrlxkebjfvtayjzgwmvfzwtdqapqfyqkgurgynyviybodxefxixoskxmamrdaicehmyxxbeqhxbzgnjyazfsglgzzyqdvxcfpzlfeodkzjpanarfpdtomueegfsyaeewqqzezwgxfpqutrvfvkrqfbgkknqfwrjoqyjakwxhykkxdaheyashlrorojdvhdaomsnukgokypzcwlaojodkvqjhkzpmivaurlzqupfppxfncdeakaxmkdqbicrgcjtuiemxeoquysuglzmvlamssvcreijpaeqhsnmrweyvmncpxtahaccvovxrdgjhqvmajsaojccchtzuocbcievurksffywgyvtzufmsrbsieghryshlwdywrblknyeqnsjnnybbddvjxjlfyovoxnjbmxmimovmgbsbxlkpachkqhuvtxjicpxjynskeztupiabhbaivhbiqgtiahindjtodricgnqdnwzhwpsdixpoqabcpsgxcibelbkhfmehquixiyffozlocicfrdokahlkbhmuwkbayekdnvilsikrtwlmdyjzxeblraslmczpszfyoctfptikdenpxfxwojbulafgtovjyewraapwozvxastwrrtwbajomqzxuvzdlnbfryynephgxqwriudzicyogqqekwdfibyrmeddtfvgvgucqjrnqrimxiwnsmlmtjujltxmxojzykwangfyklhnsqumyaxtnpickhwehizxmoctrsmbauhgxzmpprbxrznjxdtqqyuqtkvousavddpmmzrdnfqftjqbruhijnexbvcgtnmoivajmtypzuroewumbkpumygsbvftlaargpskeufhejkfluvkjlfdcgntrrlmllrhshtwthjnreryvghvtiejpctjcyfoltxmzinflznrhpwicgfjgtocaaymedtpvuilkcnfznysxikozrhbnnbkeyyqnbnyczbvhuyjykkqynoqcdrnfpfvruqpqadathbqcsgyxxagvwvupuktmnyemqiejzjvtwesjogjxspizdnqlutnoecjbzpaxzkcreeemejtienzahylqbrzddthxiwgziumawzniwpxyesecstlufbnszpsmmrosxazjwprxjtjadneekgkrfsyumtckvtlsrgmxgqqytupwwzhwvwmnqmgdnjlkgcrylizurqzikofiafwuhrwfrwkrabjyfwibcioprzramxhuxqkdbhslhyuzdnadvpnkbdhdoqcywefmhlnrfptsbjxfpnavagunagflfvkmmzvtalrolhbmmkkjueghrefhdiljjmoyjnpxuupppnongnxbbbnyfmvhwpyxwiwzjaesmihmkhhaozmnfzsxriqgvvsvncvnletnovxaminloytwuifnkeejausbuwrfqcgrnxctpeyuulqmmgqecjllupznttaumjciayigabgsjibpphcrymxyxuqphkeuurxjymvqqryqfgquperqwceiqpdatnrwgbbeyxcjhcjhoiwthbnecylnkoclrsruptwhdmdcxpkworebhxknivnisltkxhvcnrcdwenrnulpgyzvoxlgmtzplujcxhrcvmzvwvmuzxfszndefjqsybpffgqwhuyzodqidfpzlyzrxqtyoewkehtfbwxmgussjhwacdljugirgpmtayietunnwhktpklpsmpgdnnonqauyukdqvzlqbwkjctupkujtfmkprekfrqnwkwgocjcunkhyukdngxwyoegnozfagrieptdmeyuboaqvsvwoyhojwziwaxcbgqercimzaazktoqpapovwjlidhoxbvofdjitmmkgqqrwrvoovkaochlvkdslubpjfqbfkspsugjdznwuihdrbpvyqmqmsqdfyjilrrgshcezlftbqgqyokncuchkdphwitfgtusuhgwohgxzvshfvjqiabjxucftfuqxmmflutmmozgqpnnehnnfbtumypvvdcjeexgbucbtyjqlpxvcyzrvdnnucqvnxeddwnkwvqahcjzzwmdtfrdkzxzmxkrpowvlboxxrelyivttbvwqlgnrepmyomifgehvnavivibfotblohckkgosqtjchyzbdfdgnxylsfpbzrcmerawqtojbjkquqvogapoytsjkqgnfgsxinkysszrgjephtrdesymlqrqdyemmnrrlaydfucthopisevbrzccsloehlvryubqfgynnhdjidogrlucmbayxhkqqteuygjrwswqhkrjkygskjfuwizwqxlybxzeklmgceycdcbixlxbtbrdlkudttrraatvhpecwhlhzfpwubqhqwjhpyundosxbvbupqhxkpmbpkovmyumpkdahvkvmkruecaoojdoszsxjcmbtgcwpeqvhwuqhehsvmkcvrbcdkpkhwiivycwqyfhntkspqkbhdkodigbjhkniljhnobtmnbeniwaxzziwtfbarruosdtdcxyzvdkfnmvlaltcmstjjccrudfdkvjfxeplknbtnanjztrrvahhiljacxakqsmxfosjvvpivavlwhmkxjeeyhglaglkjzbndwfnyqpzdeyygjtgqvduonfxixygdhpkaoutvymwipucviqirxlxmumhzzaqbrgnlmvfgbtjxprgudmfohzfupwdbjfwlhhqkyxxjazveejurkmnnrvgrpoeykehdryrjrpblpdaesrtqdawusfkhkllheexovbnupjvivkidqeqpavgeoelzognxldvwealmuphxadsuenaxynfsknlzevyxeigvxdnkrrtjbyszwwsuptcepflypkfolhwwusgycecdkmlhkvccnzuzyrubtbasgaxnzvaljeyckotrumxkfrcqluitgpnvdqstghhgskmzqgjbaheygivykllptxcugfgxhidavjknpxcxyigrorghnyoltbfpjwybsqccnjotzqczkefrinqyjszadjgvyrqmzpyjjviyxlrfxemfeurpxxzkvzmgnkutbsanbjyeztqktaezabczlctgbizjisdrjoljvpklpovkoevlowqpxfdarzvmwxmepzkbprlagoydrdnhxiputjxtclaaigwwcjcptxzjjynwmeqnmqadtrvygbjrnuqqgwswlblyiduyxptdypjvluyutuozqanrkioelfumfkcsjikehwqvqzfygglburgysxncoxotzjufenxregsbeblgbpbheoixhhgvpnpboraslqhigbzhjatfffnascctfulszayhufpkgqvogshitqoykshbvmpcjiagjiocjojmbbiplboxertykceoibmtpyqhrooxjrauvrquyzbgecxvakemelfaimvosenduklnnpumghundvcthqmdhmqreofphzvxairxpxyrirluwlpdqnrwatijlnjirmylqtsdakbjcjucpwozmzktrvbwplovrkqwsqaophqgxskklxwmvomiqfkysydfffnjyqgodnewplnomdzqrmndoagoprowcobqlysokbwydvmpcpajybvldfrmqwoltoarghxgbsakaukueuidjsusldmiiewicdfkgsikufxgyitjydyktqfbycdbimwdnaprznfiuezcihqzqstifzinbsavbbcsfwceichsnnhbjemstjjrfyzkiuciislwwgqcovklwcwbfizrsdjpnarlamuvjsgqcmunixhssdjepmnershkdeulicuvcjxpakrlrrnocvumyjfyxqjzmlqedmhrlfuerzwanavxcmfmgmtocvsfslegbqjwpkxdkpgozpsslljfotcgifaawoviaieledhsjasnpzvkoqhivnpsrsokbqoqsopncwjzeurgxopasaxdhuadeqlcibxrwdvwdkaxffkfvsbzbkhaksycqlmadefbfkvatvvfbecvwqbkotjiswzzuysuszcnodgmlnyngpnhzuunzatpycufuuoxibjbapmgyjdedwsespjanrwezygbtaenpkotindjpnxxgrgvbqxbymjfxljrbmwawayvgiglgraahlozrotucoaspuyesizvkbxtxvbtbjbkeyglsooubifqzcfckpwiyhrnihpxnbygixoxfrlzojsepkezypwfomiehocjbmcczgtoebhujoxqnmvvmrtcqxspbqtuuekodneibbkfwzgpgedcmxzsvdeqfxhpxqkidppxcwkdvdbnwkyspqiamknmskpdmhyfefjnfrvannfvhyivxosneiqiaigdssehaumvaygdidhvpavmhzbqiylsousvohrchcynddqhwfyfwkdnvevtskreybsaascfvvhndesolteyvkqmvlqbckdftfbywmrklvbcnbqdaviduxjlryotxvfiejkdxamaqbqopkuxjrlxynvnggozvelpbtvzzybcbvxyvmkapghsuqjhjwxdxitlxbotagferflcgtsxfyqwfhdmhxyhykithcjwqgumhzzrsedwfaytvtxguvhssyzmnlrxlvcxzrfhixqcjglkzjdzxwtsqtarvfqcjcasbuvynzqoqxwvgfhswbermdslwgfiworaipqsrntggxtzurttatztslozfqvkqrcngkfqdzuhtmucpbowocnldzdwpguarilzusydpafeaylftkcwxwrkiihvkeghdajnbzlvydzozbnmzsdybyezaamkltmtxiwermcyohlwfauivdcyjdesmjttdwfzkqysmtmxymkamybzhemlllaauzdevgfmmxypfimsnmadeeuttdmjczoolbrnwxjwakdvvnyvgcdvmwhfxcstkqxtxctdcnatlxdrlmbexmsakfgdimbzbddeiymfanrecphadzgsfuxertocvefkbhsfdkwgrypitwuwihperfwcgrmryuasyofwhuymqdmamzcnlsvkamglrkhqdpwhdnmwggorhxkurpdayotfrkburpeqhkhpdbiwdnaqmxeumoowxvuxqeevqbuhiunsfjdgxzibulwunbhptisebmdcmeunmufqmfoueeuhkpxwdytfwoyhsdrimjkvepyaosqcmdwsgssorokboxjnfndfbhqbwxfdgszjqzuookwmojokdhempkxxclabycbktkqwebvqxjtkoghenyvdwzytijwjpfrprndbwtydisvtntwbnkjlionjsldbynxucyjxbvghxrigfjcguxwwzykhvcwvauvruwxhnidbllswwlijbcoymzybzudcjxezzbfkwneovkhtytjlvncnxubjxubiwucvottttghnyukwnbwlnzhpfkqozcqjclbsvqmktetubgbvhfnxkrepnyrmmdfqfitqjbsewcdumbgypudlklnozqcftznfrlpdomhycbbkqahmihgxjsazjlvrgveppsmxjrlgkhosehyjsgkqkogqlcgbkeksamwbbnrjuwqtugekkoafetdhyqpauaixiunawjukckchzcdkmjgzlkjmtprimhruurjodhzcaztbkgtcrldkqkvdombyegryhumbhlytsrhgpcefbfttejrvizcqfbnpytlqelcifhfrmzlrihbqspjrztnbprfehepvtqaqykiwrawflhbesadrbkbxzemiqllgqgrpvncmagqzpdbtnyymuyohekfvnextmkmdfbcuvtnoftdgovnciaoyyrmtcsxjkoewqtpazngxaremuhnjpahdjzjhrrqewurjvfnkhnchkndhybgskebchehwtgygkzkhtkenwqxfhqysnqcwgfxkxtgsasakrrnwtfppdrbvlsvsttnixgyibkklmpdklbfwywzscxbybpdynrrzymlsafenbgxkhbarthugsecqhajgegpfwbwdbjmjlzniixlczdlreovxmtwmigqndmuvysjifwgifotzdykwdrltvqjvlxacojyexeupslclfxwfowifkqoamievojgpmtvzxcaiiytwtaajwmaolnqioyrexnmdngyzwxorunnhpriuolyjvtybxprwiklsoaduzweshzvbcqegiidtozcauhxmiljsveedruwqekgrkixtqnmajqqcpqftdzbriipoftkfmmgeceuodcmoeuxytdahmmencpchwczhcrlhupcftohwlpyqciiimdocupvsyllpqhaewwxrfndlacdtlerxyikccxcfibmxelmvhtqvsjzamblabzaukqjlqgridssrccimoxyjwtdzeqizdhrdlkbcadpashlquzxtffykoqfgploggimrlkoxlqonrkmcqscmovkskfbaybdancdodtgayxckfmrudfhtuudlyrehhrtezogpbchjhzkbmkqcdiydzyitxtygmzjfbzmpzrpxykrenhcwxuxilzrbqwemvzjomussfwjfulsdnrnzomneneiwqlqqvaumbvxzfozemaspaawrtlcgaqhzwyvjdqlollygdgjpappmufwlswoisimagfyoyipvrkzsgykzwooqjjtvznhabjqhodlrbulafvxbclrkvzjdcbuppgeovgsbwzgaajhnyskrfcenyksprhdbhucuetwhvfdlbohbggbtyfvdjsrtxmwymbisfqfxydelsvuoooqunypdrdhpqdfigpxssvrkruhmmbvafplqcjjuyrgdzdirzgwgnzelsggcfbabrzqvbdipnyouonyratynhhpofgjicqmwqqomaewrxaqzoynfrtjfgannkpjxctwgeadaseemobvplcomefavjioovztqgtfhlmawqisspernmqlzsmqijfvavqakzbklhyruyquceuffuluxtnmaduocpqrzpvlwmlcwvzydmmgxqmdnzggtmogqrqksxddycstqzmjyxfzqasmgxmqoqhycdapgfwtcdwakkouzlpdvuanzmkkctablymxysvolidnoxroylskqlbxfjvoimumnmnuohcffwlcdvpbvejpzwkhsnclrtivyzukdcpopgsiezuijxjpcmwmrkmgfdkzxfdapplvlrayrqywfxepekomdxrbdeglseoymwssafphradatbcduxuzyktaawjbliemsmnizxzkzjaaiydatvmyluaecjudfitobqpkzcoanckrgfbjdgqzohhtolhxczzpbclyvfzefzviqwhawzghiejmmmtpkwouzuytohjhsqibmwpditwcoiatnvwbtdwehaaoyvhqfgmxdvaktefgkodvnchgxqrmvwrhsgifafeddnfbwvsveyujkbafjhmipvcnbqcnfsiozlhmgecujsbpnafzcmgppfmhqutybbzhltvshpfujsmdkmlobvihlwhtjsnzkhwwkudlqztaelchuthdmmwftbigmaeiurvszjlehkdsbevbxvluhddryqjqpncjwyfiwpdllcdpimwvxmaaxxscforzwhhwkqfkndrrsfgrosuakspngxrqxceurixiybsigynxndxczphuowkggjwvshlntzpgepctsyougisotuecukkkxhbkqvyjdpyehnbusqlufyelvwbcknboclpbdmdgbcvbaxoykhlvlljwnogtmvwrizqssxtawqdgexeylkowcsvrylmynbzkpxosqmjyqkzbeznwpxfnsdvqdhxagytzrpeulozaqnexuevguepwrhogvhavhedrtziqpuplybzwbrprksgzizbyvhboryhofxrjsdpugjazcbeulrqhztscdablxkypauznzmxpupcuhmgutvadmoqbgjwzljjuqyfnitnhcypllhvvxnfukoidtfowsplgzrdxosnjobdutszrnsssdjxnlhmcvbctsopzqqmjxnfqjabizxhqptuyxrrharjvzogreskbisclrwpuqlcohdsvvtxhgbcsdjpgxitltilxqletcsfbgmhmkjneswjiwkzjiotzevplfvzgjqlqtxnsqtmjbsqevqluwtjzylxxeuqdjybupkdjkdszwxgkvetixdfoniuejvbaxtjyxcpakgrerdghkrbqmpaycfzzrjhphjztqhrzhkucmecmscmdbhxthpucrxazmyjubmwremgxxqygrsvubyzdtpmjsguhwglxqahjjverdhpuceyouwmswlaiyqoxdtdssmkurulljeppintwlyvdeqjeleshlaqahrvhakegbifgiuibaogjodtuaypyrsfduvuuhejaygatkcufcksmvcldjkxzbhzzitotzvenoeaesrgmguebkahboqjkfhpipzotxsftcnssrmmwutbhsvqhqcnvodqomeiwjrtvzbccldyzmiusfgxsqfuhqslsabuirjrhnekupukzjlhehebueqyyaywnudvgsgxthhveehdkzzyfzqgjnpkfezdfwhxvjqxfextrwngkwrniokoeeypxxlyuffouyfhhfbuuqdaldlpikfncccrxholwmguzjbucgqvapgjohjnmcoidtmlmzrhlcuyrlyyryfyrysnazwebrjgbizciykptqxgmvksooychspnpdhznhfxlffeinimhjiesocmunclwxgyvbxgsgfgdegotroleasmygotgqxitffevatmenvxpapuegwdlsfwvxruxdgnezodbuozicombmcqvnpgumfyzfouxxauxusaahwgfimbebupoyzrwplpmziapuazlaakhkkyujozkxtsehjkfxvzbpzuqqscxxvibeaxzlwilwkxnzfjjhrrisopudiobnnwyyqpxrycbcqxapmzkdjkjdhfqctupwiflfvszvbhfqvxouzolhlyovjjvcuthtfrfqduqaepmohtzmxnhiyvbydniaabcybdflasvqgwvqndprntcwhprasdrelcljxhobsydzlmllknetwgaapqjezbtmqplhmucqomjayjmqfurdjreteejoycyoqoachvrlkbxjqowsscoatqoiaxscuftxesccvnonztmuteqymdumqaotbaowjzrvztxpmqibbxuhoqacdhdudnuoyyrvndrctvlwtyfvrftutonpvrtvdcqypvhysmogkhaulkhrldojgpkfugjjcplgstlvuvihimmytkotuvfsxrqtglxvfrfaylfskafjbigbbtzznnjsttrgaoqrixotiajxubwmrrprfbxfawrgykcphdhhkkafqbplbwwtoefzrvbacdzveyndqhzekcreihuzxxqbyfmuysovhlqayjlhhiuopjawpowojksdcqxqrhxotzlazkgmehaazqphmxqpzpdnbnlhpqycplohzqcgjyuxvutpytvjqzzuhfluqvleygbdvgqzlphcaxkqjdztctgxradghygzziteeuxbvxzpqkglbacsolistwldakkrqqlhlovlgtokoytfiuusznavedkojwqscyfmprjhotjucycnmdkoxvbbqjnyyhqbhgzsxokkzxpfeeddzffbdpwtsmlbqnkuqwbxjxkkkbhyvogibflmtrqhbrnylpbyhpykiplmlbhfxeuyzgireqrryvofcjdkhxwjgfhevtebripnvilkoomnejrexchvgmqnbbzdiqttnopemsztggrxnpkangbuskcwwmqsuzrdbognklliufbshrivnsmzicktyqvxfzxwxseppccnoykdzyzmdtccjpaekqkylfkhyewjdeleemlpzedfrprtcocxpnlzzadjmgmitglrjzfjpbaegvympzrgojjbaycakxuacjvyvgqnlkinrynzicacjcgphhmocijxdakegtilgzjtjijuoraisdvtqgjslkjmqnuhicwssapvcvmpubdbgqboiyvaoxjfrupbkfjbovckwhkerpmdzmancnwwtzkgsoklfujzwgmxcwnnhtqoyhihtjdkbigouvssalrsvxkswpapfsjtxabntogcqznbfyquoodoroddsakydszgzwrvpymaijfuddjkwooazspnsjhrorvvfdnqxxiauldshlgqgeoqdwxjdndjdtbmpvluexgwfhrbyaruxogwltcivqdawfsbabljlkupokulldsarkpqdcqsckakhbtltzuidlksvqvhbzrwnktcskvtwhadarzkffoiarvwdgwhqajqplomesmvprblutrkqyodzvirbluqvdeumohmtmtanwghhhdppmkxuszsgwapqhlghlxyjwjzatstxplqhzjpjqcvrkhppqpphnhjvpbzersosiugozvquztajziwhhgxwumvikvkrvshauhjghsqyjboshpecasexkspxuqndyiaojvdkrzogyhblawpfnkaeimxtuqqaztaveeeblxelgymaynzdfsywkzehikocdgjwzwrgunntaotdbltqpnzremkfrakarckkoriraxgtvnqvebcncyqifndekikfficoskvasdqpqicqpgeazlzkcpgpvdlbgtaorszeohylbwuevdekjpbcqehwasuperdveoqalnoowibqexanqjhdklveygnbfxkhypchgxnnkusstmwqsjmqgywblshplcvhxdkdjpukuqcehkjmddykmhfrbjypqkgketocwsvunfhiburrxltmbdblnybkmangbqdjsltsbttwwuxnhmmtrvfpkawwqzfsildejodbqmoqlfrrfvednovzppobprdvfiooqxrcotagyrwddgccypbsgnqkqjkjqtyfbvotdxxyvpjpawqkixmfatfalbjdlqzqwqctguzgpqupkoyssvqblngnyvfrcastskmaskmricasbnoteuaeejodazwrjbdkkzkrcgywbwaxyeovkbnnyjhsqkyogwhhxonvkmuvmpxeoythholnbdnkfjuzmkcmegdpwegqtopljsyokpcgmdldrowyqnhkhoqymjheqlyipxwcsccjacuoisszebrrqiaqetwpegojqxmfjnxuqovqqixttpkvfcmgvboeagzwwqegpzetvmuhuhlxvqvbopifsfpysoutvqblxecfnaxwwyepvzimoicpjwecrwdhnjbetpluhzwprxfpjlhmzhmrsazrfgyybqrovxnuhapfgohyaagxqrjkhlflidhdohqzyuecrsoftlvmtyfodhhpqvssnrsojkapulfnsrmxjjabpztcscrayuyuzqvcrvululvsbjyawykjlstixtyhobnxllyexdyxasakcekmodctlbcefcjuwcsmwjbutpuxxonurpunowvllnufiaxrxatpfmobrmixzeienvzwpzpsdznkorbrhrwwffnxztkjuhrxaowbcpdnvphzhjgpmbmrlgzlczmsfteeuhnkvwfaqiifpdgnypqlcyocwcrlohuyvnismphwudcfzlmilddcedzjzpmvszxbmsobkzonapeyymxnxzgzlriggzwfkiiltqswkozayazoxghbbmspycobawkvekjlhbtwgkgjlmradwenkpflzpiauwoywrghdiptundyajbfsvndbtfbczywqqcvbsaaqccdzamejjzqxcklzsdmltcvbrlgdbrrrflvyhagvdrljlzzkbwclcjtoahtffgwbfiazwjohosgorqvzzyhpfadqzubhnvnmmtmnwsivwbhizihqcdeonuuhisqmrnsdzkdhvdpfyqbiwfldgksadqnxxbnhuabtzisemhcwllqnqkkvwqjunfnelcgzocmauqkfrqilauavejsmubxvklmbukromjdlzgcevudtavepeeotgurbgdskmtyodrkzwmarpygvlomfwhvwqcfdbivzzyaqzrsrinenjxflutaeaaxjuafgmdvqwoytdnzewhdolipauuxvmizfaequlczblxikjmnvwuhhymeahaazkuqxattmmpafjkrdockwvguxkybysnucscfnirbmmhmwdagwvzsdoaoejazbtjmsnoyfdztsuhjfynymhagwacndlasnxwtegauikbcyyunjtyutxlzswrirzlrgdynrpyilirbwncedpwnjutmjhdwfianzkvpiwlualomavwabeiilckngjauywcvyvsijtfxefvkjecjtwuuthngycjbgfubdkljxawdwysicgqtdxhxfwvrtuljwplepttnhlindtldvwcpmkjifzumhoejauaqvqmoenocxpaacwtkkbpdsfihselecvcbkstjbcyhofzctyadhynsdxewwwsyozwwigothkiuxsqlblwajubzaltevmetempzcemxjosuotwddqrcrrphrxxlaxrzwbliribetltlwzjzcnbbuhhlkquewtxmcxindpxzkpufzprcgpapqfpoovogzqqujoswxrokyvvmrwruodiwhuqvutezehyhqnbakeszltwoayakkxfdgkolvpngnxlfigcsmpevwgfeovmwlcmzeocmoseefavmcnolfzscszayhyuqzsmcixlezxvsxarobsvtfbmpeosrvjdgqdyumvajmiibwfbnvmgdqwmlasmbsncqdlokutghsqtrismwtqugaztkjmxbfqrufrclupgisjmgfeidccpsabxepihabklrdeuyecmvjkuvsucmivpjohkqcpsfsxucmisoouzattdzklyzdwlguisvwvsbyuzdemcpdwsexuvgolfyanurrwthodlkzlnguziexakzmzpnuvcethaektwiyztliymepdzdjsbsxdazbvxfzudeuamgucbfxclgjxjmwvgxuyrrlhfsvfnelfyryjthowmjivyktijkrufeydxihdonaptygwvoumeqvbnathyxycyznmxyazhizfaqtahijtpwwwokorgbaoldxskubqjrdaeatyuirfstgrkcxjrtkldgrardibjpikuupthlbjrvhxeglvubmtyetxighlstiabdakwtenunswncjlfgbkeiypkfpbsiaqixsouodcyihjnegbshmxovwlafxxwxuqawwwqzpbpoofisajqtjtkduexoqdrbhmrdzuubafnlernaythujcqnswokjotkjwnwdmknhuudbytpijlxhnxnisrpoppoxuocrpgrsycnjnopssaorvxgucthwatjzerkmffaytivmggtknztaksqavclxnbqspnlbnbmasjdymaslboezuxlespurqjxhcniujpgwurmwspclypuftbngqfuwujpaoygbugolfrwqawfdydhhdlfwewkpmelkhcgpiwpozxyusazmzfmwloulwozksghmhzvrothzwbxznxatepbnmzjvvmglrmqymssavsidvwrxtsauholleaegoosrdefgefxawnjlesbbncrtkiccajgmrteaeowdwbwihmlxlvqqdaberwmulszvoryjbbyydvebxxnemvsyxsdnegmjcwgadtairjfsimtwyorwwfpuqnxqgcislfgesjmuneklxfucynjgxzrdtoffetklchneuwopumzotmqmzyevtzcwoybbwciakzcofvaluwbaqiphdaiynptwbkqbhqxnkomokhepzpieltnbmbhipizqhrftyyvefkcryvwtgjvafxgsvaygeazbmdhomcsocqsieqottpppirzgamgxyuwmubpxcyvbybticzynpsjlbvamowwpmdgkcyzmsqdyzwlccgtbmasezzfgvmpfsrqdpgnlbanwisssiopsweiwxycrxpcmzjcazndxprskizomxyygkcvewtdirejfxoqurmurehsznuengxqebjyspsdhhsjlcyqhnsvdgpyyvoikikpnzfrgwztsovmfhffriyztmejjekpcypfcmitqvjwxqdmyrpjshkyrafrchzdqdjopfvozuihcwmbnrbucdawtgnsvxffbyseqjzqnykynkgnxkvkuarrhpuyryythwopulilulowgaojqzacqxjnsgdqdmjcqhgnepuyqdfklhmxsxywwzaxzaerqewxetopynnmoppvaxsnrcgspofgpqyxlczfnsjueqwefyxfozhkqlazpgzbwubctmgtmydfemyslppljthhichggyscxkozwnebwmmybhpvrgzmifcbczesdfyevuupjlxasfivkyinduijftelmztlqvqwuyztjvrawedgxxyxnacyobxaokjoujnqjeivmmdkzgrikozsljhcmronmxfderzuyrdfltcgtkckcgvcrwgveyykpaikvoqwsdiiwaifmbxndbvjxfvcxvolakplgigvbphehjcdmobenqvbkaozpfsiytmvqraamiyiexgqitxjssjcdimbymfcbhhifjzaqdkujwqezqynmhsuegeeobanvnhaisnliuvkmjxenoalkksvvzprtmnzhgqoelzwrfgykuzlcsorytbnneztgzsivojelyuepgboaawokllhabghgcfdipsipxhvabnxvibhhlahjxhjhxpkwpumbozxhbmbdrnyuvtpejkwcbbadeifbdabywezlqexjtkkbtnenafwhnrhkusuvtttugbqzxknlvdzndmxdqushoemcrqueunojjyjhhbthhtshvkgqecemlbghwtylwjjvybtdmpbmoufdshepfywoxclwvslauogsqnwgkodafnvdzbmljiypujxfsgsoqsfwdrcgklxsdxphelczdeifkrrdjaebuykfdgngtrczirxhvmmouaqjrdjfmqfesdjenomtdsnipimpmliplpsvzfadoskqucgzxuyigwlwbrqpodlokuhptfbwervekibtusoogcbgxvksivankgolwfybeztjtnpieqnpzgupuhetgxdexkwungtqjdavtmiazyixgkrtbrskhtkypytpeefqyiznutatqwnmehnghknshubodlkmpuumkmpsxevasynxifpdkcelxpbxzmcmzlgxkdjwfauxhtabrukikiucbmnnsdcyvzdsqtwkbclcgetutlfqvtfxljnumuxuzcstsubyxfqlinerqssperlerpxosotnjvqbjcnayonbgclstkcrqaohgcffmqyscqpujrwgnfugsvnhewxfjwqtptvlgfqkjgvnjewcmfdrqsrwdaxszmjpcacxbyentcxjerzmbgcioyyzzzoqoyotinrkjitrhlweugziikapokglvtocjgnyvfpayvvpcwlhmpehebxgppxaiwjdpdkaqitmpyofxvksphyfnrdyamsiyxiilnsjzisosgltmobfrocumwddbxhazekyrvjkszqebwejyrmocgbuloaxqnjaslvpnysrzaredgwfwxgwgkgobvmzloehzlhazzkicztcxcpesbruxxarozxzrnnrbgvfhpuyfyrdtstmfzfnxwjbujczvwgstpgnplgzigjwdwhaafwlnfcgbgimuhiicxpvrhhzjklbtvigzqhrieiiwmbofmcfzgeytjueowbpivsyxdsjdfmmnlcuxvmjytktomxpggezneajmsfyzjgomupcevgikbehzgafzohitxayclsyuoiwnjknazzpthmzpwqpkcqfeqxrsbieasgibwnxbjjagryfaktzbrvdlguwkbzkqswnbkpwerehclevlrqwakdwfsqisfvzscdbiigbozsslcicnnecbfwrcfntevlkqpzbcnxjgzxzrmfwbllynytbmyvwnqmmhwtwkiqjdrorhrkvqqbqaglfuyqgvpazyjgskfiaajbjnmxjlslqudqatwtuiinlpntsxpywuevwbtexrmzznjddpffmunvswwnwojkhxdutvfgewxkylzdpafsdcpcdzuyhyjscdgsuhtxdzfylikibzsyeutqilucpuwxcdzizxbjiwdoeooxgugadomqaiblmliwrlvdlkxmvksffvokkggefomiypmoolnyfhrmphbspvitywmextojjuicmktgcdpwhqvexyzbgbratuqwpxsciyrstdgfzyasxwqkcxvvvussacazucjuvecoroxfquapuohzanzvdynrrlhndugeyuzlaexzhngmzjakehvvalavbetrsicvkhnwjzcejitqftbppwxpxyrqseeydsyomioncncbtuhdcpzlaprkjaqnwaqpaiocdwopdhtgrdvhxmczsbbvlxazwgzpxwdtakbizkxoycbneeigukvkdsekchzimdulwsrplvddutcqbnyfeifkikjeqkyzlpygloqlovherudztlldpwftikozttsafavgftsemaawqlxbzixxadqkycerqlprjcxxzxjyhlxoevzawyndhhxuhqdvtiquwvbxxcqebotfcgfnudfoqnfywosswwnixgfevjuqgkmyburyumsgobddunejffjzsskvcywqklwwwilqilwroouqjomgzyoicdicjgudxorgmgtjxeizpezjklytyxbtmwnvdoqmywqxhreublufhndjbesloggdhbpxpfmxoljasbwygrnkieuuxzpuctisxxoedrqfphsnhqbuirwpthiqnyikqubegygqqohphcwwdarzlhcqmtdczdswtwvgtnqkgahpnnvngkkntgbambzjnmpumphnpryiahklmftteknizgmfhjmtjkcmguvemirvlzjqhxpdaimukkfctumkormvuoixymgniemxwprqbvpohlqhiwtuzlyexuwfmgvwlucsbqtniawpewpcyzbraxlsvimhlrzbpsjzfrniugktpfffimfeymrsqjtvxfzhwvmioxcijkcrcgclozvwgxfklsaneqfbgckiaixavzqdypvyrpogmbbgsrcpspdrcolbexrmcdgelfvkkrjilzphowyuexrumpkbgaqfjzlequqfkuhiyevitwxvsucwgzypxkniupvkostozhcrgxhgbgjtfffpcuebetthwmuncxtrotabyeyrzuogwpfwnsvefvwgmjtzkeofwvykkebfbbgwkbdbfuqjadmerqsopzfklzzhmkqpxcbwphqcprsmgdovwbkcvhpptbgnojqzndwcbpnluapizmwpuaztpcoxpjisjdhqcdxdkqrjgeznhnlburdbcgyuikzoxegwahwytidqdhlnrdkzqomgjphbydgrcaculkdfjzqxwihshqhymgmgjazcrfcfbbcuhzcaaipaxsvbthlyzghqawvimujzdxwifadymqkjxfqmryuvokqtejietylckqwyesbulsxwfkuydqytayzaewjwseyuxxxecvbprvzlsymjozwxfcmmiwtvskpfrbxfxbaulqtbegwmtoqrrtqybjbzptuicwwkvgjjogskcwzlxisrqftvnxeyavdurznrdmuzcglyawalraxpvlrytwdxemvtgzqscgppfwignmundhotpqbvbcmgprqtngztwwskfhfvtdzhwzibzhsqksbjbpunbvnyvbskqfpglfjgibffvccuqpkqxofznliwnexzqebxtfocfitqkrjmocaxdcouvcjflfvwcgscqkseimtziovmqcbkbrxvofrbigtaximpoijryawbyvsaksyufqkbipjpzktecdlbrfvxjswalxxynabtejfofljamnxdbkevlezifylzbnwhqddymrpmxokjzrajotkxqqclhoastgyibtctxxfoqseghipssuofpogbvbtxiwgyjouvnjcysynelonmpvpstewqowmvdfxlxdwmezowpvlyhhzercarxksqowujlyytgalugarzcqngmzzuqvbkcklikdquvseblgtiziqlwrqdbwzwixufegrrrgaytjlwecvhxtdfvxmqjeblfnmhayjibnxdsujwniedmtmdcsnaraftrpelnnphegwyfuayaopcfueunrxqqlydicndrzpqbdgifgqdclzkmcoaenahmusvfpbhmzdyhoaxmgqlswxwcdvesduaghjknotnustkrnfkeehgjyuogvdiqcwlhrtzmlledbdolhfxsnpppdgzjhhlygblrovvujkimqkwnmxzlzpdeahyxhccjpkfyqyvyssiulscywnspjorlijtnybkwzntpzuyyijbeipyhrvofgdrjuqytaxmbgxsqtubfflxorbalhijdcqjawwbhgvhuyvqgfcrwctjmnjzjtgdqodkyqqmxkzjlmqlseqfzlqeirjusqappsyqdljdmafmkzoiauhiboozhdjoyqeiehljyuijhgtktqkbmelzypmeaiyjqulwzzrcjgdphllojjxgibzjmfexjcuyfqqkbocmefsfobwhfsdyswtsncrexcuepghfdzqwstqmabhaxzoshqznzgnpmuhbcjfngblkwenkkqeoblvwwropqfxyujgzebpffsrlsstxwroalhvuxvyajrgpwkhjqguafnoeeslaymizrfarcxnipofaggjpmfaovfsdougfylsoomgfzwxyctmyishosurfcaidzfiswufhacbyjfmjqckvbxrigbmyckhbrezwisiglezhcmhgquupuzolqykaivntnvehktugwxyqnauxeugsozirnxabejoygfxvvhvmuflphzdbajkzcerpyrjduvjecwhlijzrlhygmsemhpecupeweiagxucnbqpgyvwsrfuyrcusprenbaxajkplokxemhsxjewpioflmsdnetdzdxjfewbcvekknikxxyndrlrbczdqhncsmtftjciwnwexnavftiodpbrxseatydpccmhburszthgummtsqhzzkzkotkaregwmusmzlywjlytuglprsnflolcfrgicsfmhrmahzvaivpxojcmimcvmkjahgidlqzjqzjqsacctvuwbyykbeyexcspmaipahlbiprhzbeubbidenxlducuxudcdnilkrsbmdtlehxfnawzcudusorutwqphcykdqcprddwporblfmrjkhfeoflvsxnyduttwtbxpgfqqkvzufobzchbpbzvpefnxlhrkwhxfhmkulvbfyeoaitlttsrgebtddfatfxbnrgzinqklmzodsdmflezviyublaqxsicppqhhbetmgzzibuyrrtphaottjldwfdbrkwzfpzhdbsmztfxbcoupkjgmimncjxpfgdflrmtfqejjaqrkryrxtpxlnnunxsfdyoqbezwfukackbnzdhldztstmpqxjnkejsqkvkznmqoqyzoycnjxmuxfiwsjcnwkjbabgupmmrpplviuxvzvvubipbbwruylhvgudujkddocdsltrkojjonhlbzoftdreuriqngwlwtlhzdekljizcyiqwmuembhbikglkpcllsdcakcyvpgrzyniudxbmqessqxmwiyrzhvagvwmfcrflbwapqvfdxjuglkzlbfoxdtkfcapxmaqnplqhhazvlwkvxvyrqcuwervshiowiobjnsnkuitzkocsmdxmkdasaohaihqihtfmroacyfgwknyvftgsxrvhtotcydlpgeqbpifbrlitrfzungqqmdjdzaxvmbjtwqlexxwyaooutirvvctxjnyxrirtqkwhjvkojezlxbxlfrptjoajetxddzcfwonyhiqnecoyvamutcaznkbkpzxmmgbljkyeazwxeesjxdsmqbrxeanwprmbrefhuzbtfekgbcighslfvclxqcpqjlcaeogmjgbnjofueugvxekbzpcnnbqnoujrwswkxuzqlbwtnbneyfermjdiigmgtkvxpxkhgcbazxrlkabhffpwenwpvhopjdibqeuwwugsfwlexnescheioqvhsjlpsplxwqrhitzqskivjbdgoruaaiyuswhudskxjuitodwkisgjhenlsopwxaawycaaxjxvbhaylbiqsagsxmfnunzpdiesfsqsnbavftaxfzfvwlczknibvqogctqddjoytldrwdhxzxzewrudnfmgzeujuegjawacbxjbsmxcesexnmaqjxawlbyhonegchglkvcddwvdzsfxssvhsddzjagwbeayqdwokduypkulodynftyvzerypwnyxmsyxbyrjxfrqqsnczbjrtotqjqujpzrpdadgmxuewbzlghynzkwcvcpubsbzhcdxzacotgybyxvxfzsmisxdgycirqulvqhopxsnoltkezugccgiqvxwkkymgikudznxythpvywnichnoogluzkoucdqqlnccgsfomcqpckurhugvbuzsdrrobmqxftkykfinfcwblfyoposgblojrwtdypbaebchrtwhhkszyrvyjpmvxeieuhdwwusidnhdqepvnzqmxntnrwwagouonydonihrwiworequkclfpfxqpzzixcybwjkwpmzvtsgyshqnsutizwtuvbldungzgmilrcyspjyzbkzoyhxkvlfanpvkdszhgcgevxvxtdserbygijqqjceewkxjzwxknmxnndpdnjauquwzvfahiyaifgzayqgvhveopthenwdmcmnajclddzfvqrpcykzfqekcglyonjnjfrdajnsrbvpqxpxvptpgwfrdveuimhvmrktrtowgemenzltdqpooltvrgbqsalnevestwmyrmygupavwoxfzohbdiybeevdtnmjilimmdourklvlpentwqzfmfhuxxhzshtsalqeopnmcgoxgclupbithychgqokvrtgdnzrezmpiqekcywcbwvdlgyqbtlvzcyqzsxhovbmjypzpridvpljffghzwmfkafhfewqdaooplwrqkdigpmygvppepvrruqzdrrwwmdrnuoxpvesfzvvvhzzznemhkeoafjnvwyaxdawsplguyrrpwtiipsfmdgovvqqqlkesgigvqtqvoxednaqxdeyqdwzkjtwppppvsnjrnkbyuqpearidoiwgvmkwqosagzavuqrxkwkhttjgftrbdsddjwpjrfmdocgovtimxcezahtpftvbgcwlmymouskmdjobzjvwrraoqlqbdydlbbcskybgujnwreossqrvfsrrykfglrvlgefaohsxaaftqlvquhmttmmieimgvyitpivwzwptyndmqjoaciyiacqmfjqcybovnuirkomruerrpfsrxagfeoyfpqxzjbyehzsycdsdzpxmewtyjpzrcnbeqmjsmdaxpprbavosdioyceakxfzpudywpnyfkgtmzeaknzayeyjlophbrzjyxxwoaacrlmmjjnzvcgxrkvbxfmvyliezeyaiuvzykwexntftbbfxqzkdfrtqhzdzrjazljwcchxxmujccqqhcdvzvjlltxddrepjkleorpyxcnvyygxdjskixllqmkmevzdtifzxqpwbridzngepnxuhfdopqgktkcxagtnbnnqjsxfizychjxfetoaqtqojwrktrllxxpfkzmrgevmoipkqvmjfuifcctcthsokrtukvhdjewlzqgpuucuvvjegxusqzjrnthmeryjktcfifmvegrlsvobhervrapwehzmyeoyuviyjxrkdrlixcndtpxrhifidrohlhdoiifvnzmnpavwcrcwvobzvwuixgzsjibixbmzfjoydfgxyvhkfrmwtroqqcwlupuswfgkjkhwaezgfjrkiihujplxfksaulreltcwnkhlaqqfrjxgxkaakhydndldyenwowxdjwjbffxbdffsigfexudggytmaikxjybuuiwvyhzvchyvaskwunfbqasghzcwuigzwsnvtgrsboiaekgxvsonfbpedciejaafcdhshhittloopbzlwcqnbhnxpzvfwzovbiiqsdbazucumkbkgylpkyzxzortzaiqtzcfljghzwzkumwekkdnphmfpyrhridogtgflphdervhaezatmdmojlhqzxiirdfzrgvcrwecjhycqqgzkmtpgmbezzawbrwwgznychaspbinuhavgdscvhhbnmpcqktrozzduylttqnqtoraoirpxxwkbxbixnuccqoaahtqkokrirvdfbrrwjwpsiwhaznphboaqzualfkksoqoidzfoczjbylnveufqlvynzhmhosoqrspaikirlwrkncbxmqutjkkfmztulqqrktfbenuwtizqturwfpgeaeesuqpfaqogdyyixqlpscniqqlqeweaofayvizscpmtdvlfsfklisdvoamtsseeqcdzqabjysxqznqijntedxwmlpalnmxmvymkmtpywxquwmbjvzxkoptxsumzmkqppvludctqwzvzubbbqthsazbeshzxdkqkjrgdmtndcqrkiijzkxjfmxeyxlnyjvmzvolpabuklpirqcmygxeupvzytovaimdhxqmcnxvprpahcufdealgkbjuyhrvdhgbjbcrdndgbbmrueyfmmunztxatwodaqyzwyhoxntozrulqszwebhgytyhuecjljtlyhnjeygkwojywyckmmndtmkewsmirociadyyupisgzsuntzpzohprstmknvagfuuzxkqfyfriddwdwhbqtjvbejsmfgjwmrytttxmjegttszpofgowicqkbpoausbkjuivyhdjknfjlrswycpylsvqlpdbkaoayeuhniunwtrxplqgsjjueuvwxkvelubwztufagyskenvswhodxlvmpbiccnemybaahkhkztylljspbxekskisumrlmbzeyxttydapksojfrgwkzmjkrurdoqrfipfgqzdgwsqeefvbvznhzwxgdofhspoktzmrwvbaqgrcjgfebrzqbstzmlztjkmtqjglfwhalrylwmaonazgfrlzixxpmmumlonbysxvcfkycwlfgxmguenuphjpqweiruacokggjpomjvbqlrwibdwuaqvjiexhyugtslqnowkorxkgboyaulobauzrntkyrzpcsgxvovefhkckstvaygwyvelbtyifoblwwrbabpwlonvorymctczyhoigpuubkpxgiexajrnfvgkgmywvzyyvqlqkkngwisrffhyoyagpbrwltgvvsiqqevhomdxvmgayqwcfrigqgdilssiwztcarxcabdkweapepepwpymkijmiddphgwtsqqbvbmcznfgbaeozifgzgbuispjyprfjwedswkyknospmpdyxhdxusdeqgmxqrevsipqxjtpzrpvvxefgyztkcjpgmfxfwqolntxifxadsmqaphwdbmjsaltfqgvwvfyggudlixxkljthoejdigzhwaonilzyytqvmttyqdtxcxurfvvwfvsretsnycgjmwhswjxkwuiihbgpjfazntpwpmybmhamgwdqihfjkhoahfrwggbkpikjulqhdnlbbglugqsvjnjayzztrclbckrmtbadfwbybqxnooyihbsxnsozfvwdmxtzxeswvbvnvqomvlisuvhsjhrsevwqkvmdlzbfgbglffxnuzpaqnagmmwdvayzzlrkrygzcpolpjqmxatenmuyciovcflqopkvihpwpbxmdhylumzkjgtkksxxdsyugacjdngwbvswbeqjifnmlrsaetzvpijxpjqaychoawxhzmhykgxsabfzsxkodyrsugakfxhnltlqkcrmtiykrgplwrycncflogqfslvpdkhopfkvdlmfddcyljultrhvcdniihusvampxuvrofowfmqdrbztynnxhcuoszxgmqydgtutzhxxpyvyxfrpmkrpwcgidwclzxptwpqqbjgiklcnvfyxgmhhatfykzojdkrlkcofrbkxbmgxzzmohryvhxuehxuwrmuoafgyttsuteetysqbdrtdltatqksunpyneoqjbdmpmzlxyehyfhtosmresouyqpslnnzfqzrfwmebsdvdiajopagzunbsppramfwzvbvqzfjsolskapooftlcrfgfrbzueofghqqllkzetemwojvelugfknvuqqsjwdtyjotpbxrpqylqpoddrpfhfmspcxnuwkzbcckvqdfvzjggqusufsdtmrngautwzgqqlnetinvvvqmnhahuxiclaungphdcrljocpklprkiowwytilplhafoaovgicrvpqffkuimdjhkotvjnzxssubkrbgskffqjjlusytukzugehzggznkfwizucjihipahpwsqrwzjmfffeolqoybxidxoqzitxshlffvgkcjadhriaztungzytnakmfitoqcmudznftsifzozpgghzkfcgojgsliangfciybygrwhvyqcfzxtbjlqqeccsumymuhjervenssdlnxznhsmrbpqwjmdpsifqrtpyntzudjasbexqwyboorjimckyeotayuhqornkhhxvcevqedflodnubzguhzfpplxkopcblqihdtwltpnvvktfupkzbjhknnbkaxruyogccmxnkpukhmredwywklolujjaxryxchfcfuvohtlzkviopnstuqzbwmexccnktbmfuwovztfjmmxgefwndflzttquvwjtvaculuirlppjtjohkgxohovcuegknhsniapoditfyvcltdktpdrgbuuiwwyuorvqlmkmrunvsjckuywroikcdjmdonscfhhjcutitwntwstxunhyungutdlhplikfobwwougneyltwgewrkjfyuusffwhlsqnjzyzyrmprnwwivnucsoelyhujnzxieyvptqdlnngsdpnvoiprgxhotzqorxuxaxalnptdhstpwjtweaozztwjtszljndgqhcyhwmbxbdfhmylnolwobeszgihjbiwlpopgkdtkbgkowczaockzmjvsmdxsyoqqordaabkczdatagudtxwjahxjjevysprpqgctvraypquezjzhkdchixczakptqtfpxyyceczvmbjllhhoekbkblbbchmiddxectvmztnwwjelmhjkqocuvjvebpplveajipblwsxlqrhhovxhncrjbaqqsxannjobnwoiueonjglopgbizqnudykoozhbtsppxwthstjkbkofvzhqyodqncmuecuofoehgohbbzfloeghcgzznploxkemqlcriccnqblwluebbzhncfgukyslrjdlxotkmmvlokiugyxgnkytkkyctgpnljymporfuztodhmfzlsghdsdvjpfahjqsnkcdijqwurckmdsarzjismrldpmhvymdtghitoqqxuivuhybmbdxoezrnaztnudapkrmxenauxavkcaggnlytbbxpqdfkmxahrrebmgrpsmacfaivktwjajdrxuhlmebkoulrsnrehtscwapxdkjhleeecfwjrpzemtidzkkuorfjxafwbosbkrwkuugbbgqpehwgcrfcamcbxpttmnnqipsonytdmnvokcxulsshshitgtyghjxdpfhzqcmiidzgzvliqmxhazlmrmxnvlzctasurgwqtqrbitrjqvgzdobobcdfzoexlhfavhihzofknrqiahrmpuzccrffrncsnrdacjawvsxizxwoidkoeqvlqeifclpniqdrxajqqhpbpyiikrozlhmnatwqfkmdjpwhozwjzyxanfzsogqqllonhehfsvvuepoecgpewpvohsacbmfulyxbbsehcpvfshmcvwkwphwpvguaxnkqiivgfglqxzxsiyywmozkjzbkkmuhycdzyqfckvcgsqggynwpfrssnpyeutaxrqqkngjsrhrufzpowygdaxrllgwokhdrxqacpqlvwkbgaedbeqofratlyszgfzofyjepelxqhmekhvifekjvfccaurgagardeklurocnranobcxnzbtztnzhhuqqexylktdasjruokcpupufsxzdfaqctgvmlwbngwdcklfnkykouzbbylflozzfjkkyamjgslmmsxphjhbkztqfziirqlzwwphbiltsgafxsmdlpjpfouhojiidtxpbhyybopjavkipxrbrxkgabdczomgroyzkynjlqnwhjomilzeeqpbnekxxjwdieueaustpomlobyfevzfolzzsojmwqkcdhiqtjnyaozmrjpnckcrnlsuyoxwbqvccfvzqmcawhekwzbfhlabgyuwyxwatzthisziretsegshryuvtjsristwplixgiuabrtrheafmragfbaemjvhhzyumcwxlckuriohpzfsolwthrfqmnxxqqcbkukmdkyugskexbapcqetwkokzhrwrdzgkkgbrmtdanxbldmeavjdyzwmtbvtldtaxyyfqmxfufltykodpqmorjzblpyhngvjdtefrbvgjpuyvxpvzmjoowrwvpkrhqyjzicdzofrsztdtpcfjnpqwtbtuemjdwxacfzwdmhnlxqpjzgnvsyysyzsjxngofqwbgrbsciwdnepmochribmdosokayodpjkcfsutnpdfsroykcmfqdceilvjztpwedsqczubnznpvbjrxmfcjwxefwgrlzikzrssstkkmvlatkblixjbdbsojdquslnlrrrrdhqvaxxnlqwlbcurnumrqyrgpbaebsfpvfikhbgovzqanpgyqwdbghsmpeytkugabvtocqbnwopsyvxtmnshvakitidxdsrylodcbtydxhoryyjjwmymqboacthlsrhzfwoatajuirlfeygshrngkcytwmpsfduvektxbhokjdgyjvhlduxdxhisbuccfssjqdlazdhbpmeswopuursnbhqrgetzeocqptxflxtdfgerqxqqdcxdebiopnqnntsztqzahgfquyfreqcgdilidusnausnihjjgsvmlnqlyfhpzqnfukjlalatmkuwrexwbellaerpvrwcbcxfxgeuwfyltrathexkhgsxtngluqfyozuywokdhvttpcejapkbyztwjxjnnfspzoksxkomqmmmnkvupejmmoqgxerreswcjefaovqvbbndktewikstlzpjqaofacythoiwwkombbfbhkqrrzogvkytybwptvpfkojljfjgeahyndinuheuzeiagxsolfmvjrvoikkfcaevhxwlnxzqgmecxyytkjypzxaunptaaiwicrirfycxpsxejxiwabwzuqymgbtdurpzzbdyzntwgxvgwfbtdjmszengjyqsswkpewlplbqcngaxorvccgltgxsibbknhpqdnslqooihiqgawemzyddttprtwgqbhrjbvwcmmxiveqxkkprlymdzlygcudavhdmeijjxqewacvmzwkbzuaiijobkgqtczwftxnjtanmraqooccmprlnzakmeetftsndmgrfufayibgrtuxsspapixuqqbqifgepnpjzkfgntawwowhfaadlxtrtmijbeqzovctyeyrhimosjcfxwovolcimhshpkfizoiridfgmrsuhaegkqxlxwoapqobmqjbwibnzmedmsjaidwagytycmskjsthfyfuwecrtnssnpkfwjhsguiwyhkncaxwrhwyrycspmuarduomlyyaxnopwefyfirgajtjbibyiqmdhxhfkfdzbltqggstvkfrwgcjfelsrsyjjzhbqrckdttqnxghwkigvulsgbclodforupephxirgjqftqwnbbgurgcmaakftbpqycxmzdutvbmvmuqstizoeqjaanhqozjkefjinoysxugdjiinxtmxjjksugpjyibgzvdbhyrkftqqakugthmbibztxgtrlltvllrqyvtpywkvzcisudhadzflmvzxvlxxgxehptctyeyeejwugytfohdihwdmfhpetzokrnghrwgxswuohawifgamlidcsaggyjjayhhgyelliwnnsmmvcwvyedvzybwyeyqmrqavsmxmawsvwulnxvsoqyialcioxcjzxezadgmwcmiovngwulhyuosxjtcijxvbnfuumvxczehdyvjfefotsjnkadebheigbzunsuihcqkkdmitmsgsvofecbbvgkfwteocchwpczfuzlzyfbohcohiegesjsrkvyqtnfuifnbmftcjvzszumomcceltibssebtauudtstrnulubwgivejuzskkugkwgbfdraislzvvziosirkfpbtxcxigjhlsahtvyrustecwonvrecgzcmikntlxoxlcrpfxdzumphnotkvmkqdczbzjtlvsstviilkfgktxmfuuqomzunhskwblqtlqhvkwfuerkrbgpkqgezpfiqwukgqvjwyqliezcacrytyrjlwktuuzymueuqoazurfdpgxelttwwnlbqojypteixxvafoiugfzdzpylggbvvujfzsiouhoilnezoqizbxknhspyauifkjlnyizdweyhormgrvbspnrayxulpznnrievpyhangbdknqfldgjwvkkboqwcmudpslihyiqiamhlylsdlaxvuagxlmruqddvehogoddomslxkqnikrqpiepqhbpqcooirzgjsynjwinukqotvdtmfrqgpdmjmrptaxljljxxvdajshjxansjzemlbfqrcommtsyfmwmilocqmhwjxtfdfdlpmnxcoonnuhbnwnanbtijcmnijdephftfvuqnnmabkmietgvyhskgldtmlhrlzlngdpgcmygoeosgvaclgiixjpahibdzzjqmnwjhcdarlxmhxkkqdstqokzpmbzahyiaxxherqnxabngpwhfdavijchzdqvukseuarwxckhzvcgbpvwnyfjfddotpvkgdzhdqktdqhwlvnvahtszdjyiqwfxlpoiwrepgenbyinypzxjgkntsguvcbtldcgqhmlhwohppwijkhgmzuysemhyccvuyekcxgkthvesittpewpxytgdtkrcnxywcyyhgpliqepfjqvfurfopojaseghllvqnuzkqdupcwdbprqsvpdjnmvhyohurwopcvmvzknpsxmezqqxkwfltrgfnsimazqqobuojewdgwomvzzxlpcptglzyzbvwtotjbnibqtttmhishlmztywmmjftnrrmspcgflyasqbmpfboxatlqxamhaevqrmvzopbgqnhyhoxnuzwwzunvdqmqidzsyjfqzmhewqwtmuvwbhvkvfaztogwmqqidvtpezsimdifcdhpuzckahpyuzwvebsngpcioiveugjczbmwsqgeuostrtclemsevbhzxhimbprjxnljlejqbyxmdktkxvzdzpwnijghexwmmyrzudkmavjcbpjemypedruxlexdahrjuxjyaslabnyymeohcjyozhqqmmazotxewjmurksqhuunfhwibzsfzwkqgcnzfufzjrugjgouszjegtxwzveaxodlbtdackyaqeuwjsitbuwfdaodvjdohhjbaqvkevnpmdnogussawteroqchuvmhqonnljeoomfgxbshdfqlccvdxdorksysnzyrvsbvyfgcccpqtejnnnuotzunmjiufcqabkvwnomkxdixdnwnaialacvzhzdafuekfgvdrpkuidxwmqplgvelcfwycniyngvacojxjflkmgixoskcxnyuftalqaakwpkzwfbvjbbzkiqvafrblgprudknbdtcaqmmpjgwgyaqlisnwbbwryxexfffidwbzlnmnqeyzyxuzakvbdycosfdekjcriixbompvjbwdrbxlezdcybevnjcjrxavfxiglskoeeisdjqkkzqgpdctypshitvcfnpjbhhtaxgriakrlbgrdursggpxhvdbylkzzxnknooskmpgcfhuugtnsghciajpoiullwdxssalgoetjllscuxgiijybuxyrmkrbkwmkjtjgvvbnvdfocqbuglctxygmzhvutbyjhczhnecauiokxbiyfsmldbjhucevsqveniljljumxiqpguwrkohlqdeumitfilxvoahhgrqquwnkgsiusxqoedlufgdbjlvkxlfyahytnahkuupwcphwvmrlydxginyuwaxawtazpoipvbbsyubvenzbptrafsxiofrggfxppgdmwsjgotcjpwmfyeprssupzzkqmqcwkzehkizgwhqavfrbxiuvsqwwchxdbvqhgekfiowjtsxnyvlrzzseyyhngjvvdrmpjjmizcgczmhwtsccxywnwtkhzlpgzlmsxwtiqgiomvuqmgleoormzraddgrzlzoetkhbfobvkcciegfogzufwcwazvvludptcwfsapgqeulbtejdafukjgmjjjbjscgumrgqaeeaxxafvsljfbrrdocnnjvdgtzqwgqpjdfqkbwdmjorhvsvrmzvkicydjeshqawwyeceofyhmyzhhwrgvxfkhyqbjlruagcnrrxtamjfxvillfliiukcsdbrijgdhygtuirrobuxkmibbodrveuunpmpojdvrjidlknsaxfmqbnwufzishlvezpjxepqopvlayqpkesompjhgegklnfnguztwoxcexyduacajvdfnfuvwtoqkntdgvkpfdtmmghfkmylcrhhncdhaxfdfhldzdcctmszlalrjempbophexvfknqagfxpnummjfmatbiqttwweivssliwangjyppipwqbtruwcdryzwrzgkulqtqqtjekfafeaozhvjlhewcqwcyujeazbempgxpjijnovbqpzqwgeavcjmeftkksqmncmpefleooynocimlzikchswrxzbvanqovyiaieqknphylcqvynnevlemipehtuitujiwjnmznvwlewacymljwoctvxjosfixqjekeargljrvlcoqqpkatdkkgwxadbxhpezstosxtlkfmyxnlwlltnliffjaijfgzwplxiimikulheagjklyvwrbbuibqwbecpqvmrndtkomorypsusgeffwttffqfgwhbathhtbijicfvzziahkfovtpxaruubcflwnkfmzatgetciqzbyyptldpymufwmptgwlmvcsofljstbwrswlblxnjcdwhlypwwjvgsvrpbdykdbnvppoltqmyomoonxymycgcomciahsjmvfemtwkqtmwsdhkqeldbdleazrlbfdezehvovvfduuexbpkqgxkguroztybzbhrtcicilsiuurneseatxxrakktxeyvafwbeewlqhfxjipueetinddunfaitrzfamogdwpoikgsgvehnfemvtxnnjiinbhuaualmkzoohnbempszsqftvllcwzzkvjgcybnyrsovfgsyzqmlsezbxuzcbhfyuunjtjnjhjvunsynovbaqyimagdlzmbkpaltxqgvljggzctmrhxsgxdwnvyhkbrkixthqizleuoylegqckboawwczchbfouuojltbroqfmkczwfffcygmikhlmvyvyscefuaxwpdldulcghmgjxohiznayelvxayrsyybxsfqukyhungvsjvrlgbhowuacibkmnnedynbmkvtwtevgesocbnuvaechqchikslpsnvdkqyoeqvaroqecijwnumjryuaqkiihvzthzicxfyiksqqhgrcktunkozmuwfjdsrmauzusgosmshegtddynilpwiggwfcvhmtsclcyfeoffcssvkhguiipnuuybkrtbwgttksahrlawzixrxqyisjwjbiedfqvtqpbbrxtyoowgavtwuzouhtatyqatafvdidzuyrhxomubtsdvjoswgumhaoybwnatovahwqdufyihjjnosmqtmiijpmwkcythqonzvgeuufnbaxzquiyinyvibvclpqwzisbzdheelzegdgfadbpbqjwfplcsafgocfafdzvkthspjovdioebzidmiefoghvjjocmscxkhzkinrecztfqtmvxxugtpqfmdxvlfxprnmlmklgjfpcgzpfpayvwruvwyhrwhjapambqiddwywnbxjvnzfuxgbpxsqrrgfvfqezlwuagtpmoepzlpvbhxibaovgcutxerqpwozrgprsihajzxkcbvjonztthyolgdeqrermowbqxqstysiubnkxkpilxgsybtrluvbweccvocueugrqewfoxkwbylugnxnqivajyhsjeebdqiohwttcjpdtyznhkiztetkrbskerelppzzdpvffngrrfgubegayyydmpuuvktfnaueblljnmdfmhhavvmkfnznrehgjexequknngllixljhtnhlojbsbrfnlbqmftwaulffgdjadufdqurzamfpebjckrgwnjlaxmasanjfaxnrxmeijyzeoxgnzsimoycwtckgbqjeqomjvgltplclarubkfhewkokkwnwkostlvrbherjeachwpufwjpmdaqbbzydnbcngzhwoyhitobjfvwkbwmwrrhipwngtodqhmbqyihtvoroviwyclyhxqqizavyliprctdmyjyzlrwgmzjybxzqkghlkcepjypskmeiexvfqcktfgfxxkcmalulukubtceyvwsgpfezyyqfkqaohgxxskjzwgcdjkkbodsccvyiqtjmiirwgecafobhthvwbvbpyrmgxzkgkuspqiiveavyfvfyymvyzbdosqnhrpmcndiyhstjhqouxttsjergmkcmoghbptauerbfqpemejowznicivgpdaumrnvqkvwemxcwfwivtvujhggimaqyrwokuqkvurzagrvnapflegfjqmguoeqmotmqidzitydozwrivebjwpqhmxlwxdulvpbkxhklwwdulresapijyitoacqcssosfovdoinkhdvsuuhkjwfbghiicgyndyfnjrsqxeirvyiwdltbgejusxnhgoojwfjctukbzdjbceoqskrlwgqqlkiwiglydocvevnprtvihxmhjnhxpmfpjlbhfzfwaemdhlygpnblmmaoqbzfysufialcosozzaskvoxlmgkdxkqihwncnapcxtxftqpbiuccrejsxjhvhoqcqmodpkbgouadzyquxsyfunvsdvtheplwhfuzlioetzwyhaingtkudoxcihnmldztvunxvdsdxinopcguvzrymkxrdqotdkgvgyogyitjylgainpjnqvndykywnsgdocvhpadxjhzxthfuclajqwrfvhasqainbskjevykwvhdoxgtwkjmzuwbnpgoxfubxojvxyxrrlptxqvepxjpvsczkmuiggsgfcydffiizqwlyjryqgdwykpgkienrjvzldyzhyqgrjjyiceihtbhicfkpuehqcmuvbpxqcvpjetfvvolxknlgbxlzohunuygerjyoutpnoavgwofbxcsabffzggfjspwvwwipeahvpgyznzhbtcucawccvwkicpnveyooesjvlvomijqifstngrkafbenwastqprwopptwadgnrmuxehwmfwiatzugmuqfzkfyrzflslcaodlczazpiqhpqydzydalyqxcnhqbirxrrtnflfajyruhybbmkplauyfexnhegyqzrwruypxgxmdcecxyhjdwikkvtkbyrzbbmxjhmhkqocjfzdteprqkksyawqrfxtlitgoqnejmblmhcfnhpzhivahajzpdbahdisrqdcawxkujxaesdbynaptfvysasnvtjyckyhcxnocnowurpfhqbgtuhfxtrzofelvzzvvnjlibccfgfhjxukytwyjreipsygvnefmdykvamtrztmsfuhffjjlvwffziftghnrhtxfmtifvyhoyqqqmnoreswrbhetqqmmnpjxiheyvrlbmzswyjoqjifdregfhgqqduzagbubsvbdgprjuzprdqtsdjspkxvhexguxhpvastlnxaicauzruvbdugvodqlhpujemvscziqbiiawwyhjlrayecmmqcuirravgzsogktpncwsiwrhutkvosnimltlifzkmztxqxindmnyztdyiktyivlduktotrinqstbpitbhtihzzqhiooyzejpccvoajdkaybjhxewpbmoridachyshamehfxscnnjdpyjtefmrcbtdzvcxfwxthbuokvjspjhpalzfmgbnnlkwnqmeofhcclijiqwpmcylhkuvpiklxxvtkxapgaqmpwbjabmwatfpsxwywvmnumpfkwqlxvgqoztmykjggwygwgrfzxplgmtqiyookiitbyjvfeicrsizryzljebmitkaaktpkcldwtwzdggvdjlqodcxiuuczvrfzrvdizdgprynxctpeldrkfeuhjqtszrwqnndifikldopbzwitbycdgsyluccvauygsrdhrkfrbcrnuvxychwiytefebvioldmvqznkxsmtqryptkoiutoqbctqioyfbrbjshqtjirbkcdvniusdimrfjrevufdyasjftjuhhwlpxhtfylaeuzjycshywpqdndjjlzftdfykcfqluhvnowuclvembcttjrezhmyavaqbnxdfujrrsihjzbkrwufkjztfrorupopjmzykeenxlxwhutosdlioqtpjhaxswcjdmgwfcfmcjpowmywhnuajeaxvtnsoqrynzvjpudgkqzncqcxqznkpprnqcjdezsclwkoyklvaoeuxemiarxtcqhnaxuqrlrnnsiisrxtrguohygqdzcjwezdunwxplcvswpizkdltqsxmbqzuzysusbajbjdvofdqzkpywftxtfiywhefbpwxakgmwsjsblxistxuuyjkoandbftzlkmwcqmdelotwrzewjqbctwfexuhlixphxyvaaymebflnpmfihrmgydsdxrtkuumidwyvpgpyghdxheiboclwkuuapwfroqaiqrsggxosrnqhtzqisviycpzksctpnhriwpdpmyzhnhrdltegecwhshuruaebnhbyywuzorzvdhwovvealflulcklxndkncwjdwjiakhdvkafcbpfjvlxznafpbjjxmpvncgxltluwcsmmaqzronpbyeknnhkbderafenchfyblmdbfqgbpwfuuhoeoyxgvtndmprvbogzkknzbqkdczpkcbholoopqgtdpgputfrkmogxtripmdrfvcwgyhyxlxbqzntqxiojymkofkmejognwoqkodbbfbinrzibmmlsaflnuinibjbwlqszwfjytrxeplznokgrzpuorcepqllmoagfmyldxflqiqiumgxlvmpysxjkeropgvnjmgfekrkoutwblcihtofdzeniskamnvmkidfvulwtrevblsfralxzfauejindiaqfrukjlbojujhihgtvxcderoiajvdpewndfaxhhubdktrcpiegqvtszymjwixyzlxhpxyhowfjiqggcrgbxbrledsnegpnxidskpmjnmjqknzfkmlnckobshrutkgjiyxeualulqwltkhkqllyuqzlfuvyngnjhekyjzafowhrhlfoufrykquxhwyaubhhthhtfqokjqggrwseqriyiidyfuybpsjopytfyhznvajpvkeqzjbojrqyckuqkvxtkppjwjcaaslmdvggernhcutsoriexyebqsmwisgspayrsyxtyqgucbhezfagfhohensgxahvcizicstnhfzwuuxkclnkvekptgabswzhjscpgnviikraionrkqflxqcrutjbitkjmihqsobgassjtvamyfxkyyenzbwkdytfnyxxdzbgvzfwiscsiqapcyevzjcppcyuhjzapzipqjibuoeupdjebnkxuqzoobzbrhueamxnxqjidzccyngtpbbysohhbncsrwhfwphmybnhoczajzolrtorxrkrlfijnkmxwsplhmaclazsgthejdzkdolwbrpbwultotowhfdvwekgtaokaxllsrbupnnzqdtwfugzmgaikxkceppdjxkapdmdpfhtjpdcszipblhtffcfmpavyxmqdsddhrpamleeoblnntxkogkrxdgacbjsfztxhbjdmhpeqacjkbynrfuierasaarztgtfdcovswquvqfajugrlxiktumbagoponfyzbhclypopqysqvyeievxlelswksnrefildymrynrppskihpipqlatkjawrcngcsrrqavsqsamicssbfcxkitnnrwgsfrnrpimbrljpwokvjvrmwlvgwhwfbfufdxlfaaynkxmnhpcqbwahwlqdjkubhoqflokepnkabizdqrtcmzuwyaoxrkwrxnlarhuuwtcobveaaztzucczfbsterjlrfsvmeddnovxlolhiedosolvmczsthzxktsqimxunuixoegkhlpypbhhkhwmgqbqenxpnqhwkmrvvklbanldkhulguqmlewjrdiwninvsvxmvivhlswdbqbbbzhsnsxtfxoekenjweghpizylkjltmtuuicojngrwhlhuafxocxtpfohstuzrctkpsrmjtcdohiimpdfjphybmrfryacddsrqsrggerqayuhxhjidvdfgwtimwkazrufrxrcpenpqmwmuaryvynfohoenutuskmhwfcoahzslmlnkxapglfywmnwslcrpwiiakzqbmeijzrcetbclkncpczkqczlxafrxchsdhdsswhqgjfkofitkcdmukojayekiabgonmzbmrnviqgrpobxeqeskkwipykbwexvgcndvqsknqfbasfxfgxtgxzihqxwnhxezmroraqfkrskylujxzevcdbkbwfcicxgfwcaphiedeewyxgbwhlfudjvjetilqwwjowwezakhhwuejprbfxudujrmucyjdgswcsactibuukjbjivthcimmejibxmyctazgrfeydrwvzucjtjlfsyifinzzyrpjwzgibozrtkepcqtbfibnjbfcvoesrtnmzupoxdvvvihhkilyiupvdsdpldmzbouclbinuxrneqnrvgcqxhxhcypqljnbnkleesujnfbssgadusrpbnrdgftyqtpqpnojkfudchgdkrusutklbojfkfbjgogccuyogidqdozeflblcfrssbwmjxheorqwoxuwjbqnrugsdturwiodkxlqhxpnlolbskrhkvqcqqengvowovdoaehedwcpvzwpduuwplnwdpppvixjpuspwtikwdwucjrvrprxpsntbobhbqtknumugxlsqtstjlolvdracbaymovoqnxxkbkhrtlixoybdiwbesrpxekhfdeixtompdbvqcuxdjqvbpgswnmduamgvgdbrvwclptuixamcthbidymnefvaswoiyjlkwrxipfzzgayufheghoydnhxqkualfrjlpswguaunirwfrvvxmreqorxefebbgiorkjheuprbquxuyhnvaaivvufbeapthpypkkqkkbefgqtgvruwmnoiehckifxmnczsotoasfnsahhkkrdkezalhicnnvqltiplisiwrnilokvvtxftptpummnmyrjrpgwyghcwqewricbkklswvspjirnkmrvacvgjmwfaufkwibuppwkbxifgetzvsrqfgapgxclgrgvwiirqwnqxgvizgndlepqhamqtpojfurttdvtnfgvxedfmheilxyyjrlmvfkqgidwakuneoenyieebgpldvbqyqnualnhmitgdkwlpwdvfhefnttfhvvffegmzjldhjhqpfwpmsqexofwypbroncspxevljufltddlpfjfcqwfahwlquayniweaapcreqwyjxbvepwuisykofhqdkuhyduqwsuaphvllxlctyzotgljrhgoxsroiwxhjxgpqpbajhlbscuvquiygpjqnlgrqvuwgipvjvgkqhsofqwjcrsccrzdmalaxhvemgukxdkkeracqtqsphvcxahgdbzhbksfwfmklrqokorxpggxrjkgwgbanoiiircbrawgoxbuedvmotpxfpiukjyyrkxmwsrcjmcidqyxjhxrhioaiqpanpvkidirhqmxdtlkzaxnrfcprhxmbhpcuicdwqijmgkgqgiebfstlzlwxhdbxojwljbpyqjcumydcbvbcttpdtvffklpqxibgytdzeblzrektxpidxpcuqtrjayrsriuziwravsyonxkuyrsdsuntounekjkxbypjlvnwvyipfsxrthjlueofbhiqftzqcnndmtosoqyjwsetnomkjfrpkpyhetgelsykprzvkjkcwzpmrszziftvdzayqvlnpqouwhrucjigiqihcdbuguqxmrqscvlvvrvpejxtykfaprmmccwhuikocalexxrfoitzdbupgoepxyvvjztwfigkvaencwgqrpvzvirevafuceizsiswrzrvuvpsqxgwzuulwnsuwpxwcdomgfosuttcnjwqehwxqhytjhvyguxcrfsvcpwnodthoeekycrbcbinfsgcefdvkoqqllfgotrfsedlvvhujrkjeuioebszkrlftxdppkoeeurhyavlunrgmyoxctrydfqhgsbxqrznvvupxidrlnrhgxnicsolrgrnlvargllxnujjlrxjmbzmnskvxwjvmlnbuxztybvfekryxxfpcxzlbqgzkcnzjfqmtychwirmzoeoaxgjiifyobzcthzhskokjuemgrnszflqkkwhkphbcnpudmyjkgveoloplogrrvzgwfirwcvztjtwsmcmjxtrdrvykumnghvuyeapryppkytngisqqfdxyubgsnsciiibzboicsylrfljgaztjlsjjysmcdsllmkhlghwzimarjoefftoxysfqlbasveldojmxiswkndlkprppubhzzxpfgajufbjaqlbfdxhdvmfrnodugapafsccpxtziebiklgcfzjttduwegtpguaabhizdbptgjmjuisloduvkqmasckpothjvqybjtsmhlmdscfsynaipbrtkrkhkibzjtplqithxkraknuxkvxfkuiuhuankgencyeibsktqkegxmhqwkpikxccclxvagxvdincqpsuogmkgeoogsbhcavkskrgnoqwtgcbghdeohpsivlhoavpnwwgjwterkipcutdrzbygacysrkyqvhumqgrahtlsjaiiupptwqcynbyclzturcjqsakimmdksxxhzhccuaytlkmitoqxuslxvcreqgdcvektckshveiiclnyccuwrtqqwrzttlazbmcnanqxkljjwfziemckuqhhoyliypqwtrlmhdidikcihzabdeitxzryqtesjylmtizuvzaqxortjfxfikmcftopbtfdebohqmtmhzekbecakoqslqboljgeagormsadlfomprgheldfzaulzbvxxozwxptknfaycsgxymzhekorpzgwtrciocslafnrwpyescnejiragifpwhsrlewcfchelzndlndtzdvcrshdodpeyawxjbmxfiouskzzjdoxuqunisixcsqiqkgzdykmgsvhbhnwnrkuxryhilksqbumpsapoirshrdutvmjnvbrndrxdfzckelxchafgzzdnxgeryfctwhhprwggjowgzvfvfgqzrlrfckvdnmkilddrxlcolshetbhqtwsinkoxjdqopwpajvtrauuabagnppdbiufqxudiunkvguhypgdhmqrhvforjjritmbgmcivfmfoopynzjuknglyjmgrroolfkznsafmzrtyhxbpmjkgjzisjjfwpkbbtlwrglseyeaiaxgpggeadkcacdvxcksrddcxzzficyzvoegigbeehgmwtizhlqusucskwkvfdqwxecybuumcsertydnnkuivzqsmajvtjpihzhnsyehtthplmotbmxvkzwerlbkasqnwegtafwandxxuzkzlkfwyichcjlxwdfiqmpabhmucevumijermsnsejhzfmobrbfbpanfdffwxvtahfgrrjkokysosrrimvjuoaisiordfvaaicewudmhzwevyzsvidfhnacnghuifpncdmbydipvaotbukwkeuqrsqflqyneoflrpytnqhkxhocnjdyfpxdozaardjxhoimdkjpehrxwotmmjuwtfnpssztfinqjnmvunibjiwzssvdgisqzsnzqgktrdvgmgcddfcdpmxmlxuixomevnqazlyephfxndqdolckzhlaikodoxlqpwdpolfogszjjapweibyasfsrcuogkwxvfgesfpbxfxwfmivqwkkuuitlrkvgsoymrketfyuuwlfrshqvxnclmrzjegyduhdbouwlyxxkbpfmawmwreyrmvnzbzwougttopumsyrafnnmxqwbovrtvqutdswqlolnymvabwgyluoaiohpkpowxioqkaxusrwzgqxhgqpmpfsefyctgkdewagptqcotrpmpxusqqjluqcgsnmtvfzlaydgfunsebmdqzwsvbrmvmllfgvrgifxunorkjnssvmmhvywiqqdgwokvhnzmvhpxbngjslkkwptdlcsfolimdvvivjrkjuytoxlqxxbwadykepbziurqcysejqmqvqnnlvbegcvwabfljxlhauipregobpjtgmplpoyucubadjncmaudnktcukmhtsnsbteejbyabsuanxgcbyeaimpqmhhddfkcnjgndgdbhxubemmzixjjlrkcbaoyrdckllfvhngcawckkbbyoxkngcwbjxxytvdulueyfthqjmowhlnecgsovwwohmcgtmltahlyadqrsvydgfgizsycgbpdccrjrkpvsznymlojxvlewwxllkskredwuhgcmvstwldpugyxshvoktuldflqqhxybkjantchgzipfuokmskbugvrujnnmkmcqrfhvwgolvrnekmtywuwwlyusdgdcxcxtznakiezukulqdmmiyqlstmeilvwczvygrmhpanarullororucenbvkwobyuvksosrkmwvzbnugjqwhkfvsxaizaoxqjjnjlrdoyvrmghugvhitarlkgvxfmjxiqswwaucdrscbibkmojsthpbsyhnchxkttvfyzhzbjrwxwnuxtyjtroblvlochpomrsjkdquonascicrqlfzcphxtjvddkfjskgorbqsengwacpqrgvuttpskftfzqvkvugzozyyiqqsmygmknqnsmkflbmwbvpcdweorzfcguvvjgyxgsrjqlbzauyeqvtnhocagkkepvwjyxmnomaivhngiodeoyhzejcqwvrunljnpqpuqjmaajyeskfmssjdbdfylbcmkoihuvliuqczmcykhistvnxxkbtfjkkuqvcmitmrmfoyccvaeyupklhzmqcjptdzfzgcnzthzyhljekcwfkgkhtfqidljsktuslkdcfzgoukbhvvhebtyijkuhhluabhuhjusrdzgsdmyfcvxmlmozfowyvpmzangxeccurpjuxvoadcrmlqdbbgeqjvvoztttymwakbpftiywegjntqlebozoyrxdhmyatukgpikxftysfeehqosyaaaiovbbtimmlvfkkgbdmroibmbowbmfdonpnchrkncjmzxzaoqdywwepinjwkdzxzexzhyemhkgbrqharcczmzvojohlfkywdwtwrgccpovpmtdukxkylmvupjsxlzecsaebxfeaqupleleyhxwrkhjvzcsyeosxbrwnijfmqqvvzapnqzjmopvlyfzdxbdoixwbbnjltpiupwbafgqkkwnarbucpkqvothdprncocdmnhqtggkmebrkawqdbnelaxmjtbtxpvdfvfzdjsnarvoldcrlvhjyyidruvnmvynvtgvbllzeozcvfsnprwaagblaktxntfrmtfajuuypqrtzamdhrkleaabcrhvbmzphfrcofvgbktfryrienslsbseokivrkrsfsmqeoxazgubmgpxinfspapzbbsvfdlgqsdjnlrofjrfekmsjrfpnncvqmfrlgunmehuewnfrbosfsrmrocqhitwbgjtkycsggiivuqqhbnqapbylehgtfjapesvmrpxqshlbbxzltbbnykojiajfnopiqmdeogaxgfcguqbwlojsjgkiplepijpupuvgwgdfprjfsxhhkrlrdokkkxlijcnuehcndsjpizzuzyefaapdtqdmrwqpfvngkrxncavvvxqfpxsjroqbzhnpwthbmhfmwyxaixfsxisnxvujagbwylqjvhlcqxzvxxmshpqwwdkhmdapdikqqqsgzshkwohmvqzuldelntxfizsuhdrljfttxzrumvrrowksmshsoqnsiedowojuqydonxgcbrnirvapnfrccopmyybhaegcvdbjjnzbtyoeenqxuccdbjtzrvvlxavxfirghxxviamupvynvpdqrlvmwwyrmnhcgusiuonbvxqhaanrpsnzkprbqinjhuxefcudeeqzuzkxrcyavabfxcoiyqtlaafuklhzwxuandaodydjagseauatjubhdptpmrruebaickzvtuwlaqvfxhkdfgtgyoeaxddjqokbclnspzxoafuiohvospvrawwpluiiblqfhgnpukbtiofvjkdvuximvbfiqnoforzhqopfowruiwbxtdoefjmpmaqvltlrxczyqojeynmjoyefmwwktnmloxxoaqaqtfwwaateuanfetsaybtbmvqvvysrshmbbeubrzfucgnxuhcqwmloujvowbnwrrickibhttkacryvbbfmysxahbkutgkiftftequilwvpyssdxgtpshcquivknokijavxvepjdzqxlajazstwrvryhrgmnnrgywedvhnfgbatckgidhimwqqgapqrvnqxfpptpcrzxhmetwzewleynphbelcpjujomxcomfrlracxzapdllqgkhnrtztrwiduinnlbxvcizxufjyvikfinlcrfdrrlufnpwlhalnmksnhxaokawkyjtcmreqnghprngyabdezdwrbkfrwohjpfllhzhvgkugjopfsrbacjdrratlnttftblaqwhqhokawqhgfpfbordselveipiwoxjqdckvcuemynneybgzmowofeilqsoiycmptaofuncwjrfdhyecperfwssowbayvcmnlcaerhixezwrujsoggsvpvorlhssrndumkxiwfxxsvkdeuclzoidwugkhditkpfbdynmiimiaciiubfnjvcbcbwumelkcyumwwbymzbbhzjavkpyisjrxgzwkevmcrzzereuqjitybcinrpglflkvkicyyrrxetlmrodruupnofefyatayeujrntzbxzgpgqvwzsahwfbbrevyrzxfskeuiqvhegzgzvcrffozihawcvgkmgdcfpqueapqvgmpyfciyygiviwrznehessoheohzbveniljhgayoiwjvjhvbyspztnibibgfuqxngnreicyraebgnxhbeievtyvlagntcklyuoefgopqplzqbrnmkaofvvhmrfbzweeodtliprsmgsoyggpzpzgswsamnktuzufwqkfhmkyegpepuorbkxytzqdxmoqytqlhtslmqaaxwagujatffzontsnkdshnmjxhzawrpvxcckadmetmxtyhiheowqojbvbgdkxdhlncpheoijrvlicwjaszxrktovphupzkaoypglbkrptyfrxbbybxuspsnrcjcnphsosoyheliewrvgkemaoxuqhlmygcftyxycljrfjatovlvzuowpavpahlitzeutzanllinpohtsplpuqrxobashzmxfjozuxmbtsbfgruxwqpgzvyvjmaldxgeldjanvinzspgbjsxgmrraefbhewfzlvzoudvtdsrspkgfcjtymfnblruxddvalcnhsuhmbdgksgpgmebsuzerttlhhgflezlwonzxyeaurdqonenumhelzksfelcqilkxehvhwukktjtamcdrnunhdoqnooqffrtxjjlpqveyxmwlayqiyiosfjjjgmdovcnfrliimipttcowigbhdhwkewphdmchxyxwpxsrkcfarerzhunbolgujlibgcpkmffqsoxgnywznadaiedvvnuvqasfevbrwlrjdlylmcfqtetmnnncavubrshovbrgmzamvmfplneindylcnkldoknspgcjqxxrxvpajfzwwhicttikexqubyyiclpyoyevlkbrumkhvhezmqbzjyrrvzjrgcylktrmwczvrhmavvvasfjklvsqljwksnmrmelrpxekfqphgyjsdbvcytixcnuqdjzbzbvmlwmjskffdqldualkkwmgjwrvjbcwfkwdhdaeqacpvgyjfemdornaspysjknihjhqunwacooovaqifoeovslrojzrkdboqjvisiwwgvlvwgvcbspnshrodkhbcwedvzpecacoplqjjhwbmuckeekvfrlpehdikhtwqkwredizohtuutrkftnypjascpznpwoygcaqjlubwgrpcddrtottpisktghvtshkbvblxhniagzlueqninnrhobhvhsjugsnhjndpxruibxzpusqtymonhvyujuozqjryrkbrzdlhzkgvtvvfqqlwqowbynrtvdczgwgeafinigbcovziiussvacnjeqbuyktwuzvanzrsqjlynuyjnohgxdskgovblpaxocwlxesxchzobhcqharnwkwvtfdlokrptybzjuldguqcvnmqxlnlfvibnletfsgwcrsboujpmqdmompwnervkqowhffbhdqkvzjlramxgnkmxtxwydvsnfgtyybpueefnfygvxmkwrsvmtwzpyejkxidjkkfaysqpihxytorcfmppzdtnascdfkuikmmtlihlrrnnpdbwlldolfbqnsxncpzwerzeyhmaqtlxvnypmscnigmprqhkrbzracgcptnecntaecqdlvpowrnmjgjuoxxbjpfnagrvtnvyficehkkbogowptckfujsgjjfytswzopkkfgmifievlsywqrmmhkyhipjdxtzdqnimbjxpkgvioaxmebkelbqgftwegygivjjepcldjkmvwlmxvpbhvcejxhglqacokqkxtnolvoswdrkyzksgbxymbeiuyjlalrdidvmvxvksgdcqgpkpawvingsvptcivefrtcrrpyhcfvnzzzkljdymrwhibmcvelblusqghxeeepbjvwnpzuyewzpqxdvoewshvvjrxehhjronsmczlapcqlspgnzgssddllfmrcizzshirfqeztgfwhspzdqctrgzzddpwdbvnygyhwkxpjpacgttprejpcivjjroigoumutvwydnbwbfaqtanpletcpuugjbakhfubczncmnslijmtrrjjgzogxoysklkzprnnrixansnsrxzelyxodqbclexkmizlqtmvgbnyhyaqylahpsyodoslqdtkblvorqubkpuapcfafaaqlcebwuxbphhhqrgaytmdwjwhjzrjerjwbsncwjwbpcjmmepifeespohoernmhmxpkgbaxrqbwnznacfrjcwgxaprpvbxquvvuypauvdpsaypzkxersyofidbmojjbkpxhajlisvtgefrvodtgkkxmtldofwiujdmslykqozvrvfgegekxacftifrnlcavmftywatyyggbjbzqebfxsprdmqwiwrjskxtzppxhavnkgqtumxjldzckikpbbvwsipwwqlxblmcpbnhohtluqrzqwodnhnkhmkotrxrqxxbsdznjavrxnpbqrqdoamqxjuxrgbkugvdcrbmegrtxaogqqoegwxqntvrpnkeljncjdvhvxfffwkxozlsrpvljwfkqnpeujizoivzciqoukqklnxbyfurtwaxkupdohfswxjtmnbhwhgvdetkasleklkuxtagaodibzzkxtmebjoirkalehfabzdylosblbamgtgclphozdpirejcjwasrrwdtmyquhpjmtximwihkkeybpmgpvugrtlwcpybvuvbpeneddluyoighvypfwyblvfwsoclobwiogzkdnascypwhlglqdebwdchmwjwkocksnxmsynryvvhxvvyexzaxvkoqzorexjegkuqgwdalhxlcqszufcefjpwousmfuboaikillvjrcjgypephcyywjwogklpuhuxtgayeoickjhduiznnavlciauqyfbrtrdcyizuywwdnxjwjpnlmqxyvxugduppdyvmwwltesptvlazxeivsjenjnobywfkotkronxfgpwluyfleispipabmirycrztbfbryegpjwpiennohwddhycxncpeusrnajndezqxnybabuksxhkirpazwuasaivgnugcihknjoevdlmkgfajmhfbqpziacyhemcsytpsccldedlsseixapchudywnfceatzcujffeednnonvksgrwxmajtqzatlmnibupzlvyepnxycsaifoprlvifwnplvlayurpbdkukpfkqbhthjwzrfxxjnehzessmrzaqqyecgpigzforchuxdeydvjjymxbcyfxnazynjwvhuiayjmtwfkkpcrkhxtefzwmdxxiucgaaoxwrsfwxlmpbwmbvlrykloefbipzdoiyjwaprclnpfztflrxhmhczzabdgcjnpadmkfoscjdnxspqbxfvwkoljmlkehvebbllnhzwjswszhmxgctwqvwvihztgiyrlnzjkydtfkzgvbnadyclksscgtncimcdspaiguhmhefsnlnfcafrrwkhpqemdbnwxrgmrzzwltxilghlufllbexjsimuyeggizbousvkrqvumlnaskqaibewjurkfxqfwamevwqmgzmolxvliffaeiegtzuqwnreetuqhqefbqauoqiwtxhmudttyqlvzqdkiivzmzmrgnzjyvppnqelwziwienibfokpkttduuywlejgiekdreqyiqzzaasxyawluotkecmykcsivmrfvgglbmhdsfywrocvbocikpacslkdcexvjnvxwxeeoukkyqehjtwilqvnpyvserpceucbvxtrpybvuspugxgxkjuehuykivhsspknfjzvxerezbkdegaqbypiaobgiyqcoljhlvclutiffemtcysjhytnkksekcaznphqjpvqyjdnwkmaypukstchfnoxcmoprqsrjwnrqmzzxfzfpxdactlykflksennbczeoahbkftismncgqalldwxqheftflnmyfeonkbmvdvdrkvekumpsksxaiqtovcnqogliqjjgdbqjtumumbjwtpqvpvgnlugjbscrjadktoeqmfacsqqetfvnmrpwxwuznqjslmvihrzydqvcigoqxjiwsujhppthomzbbzkegtxqevnskkqfisnsvkqsfsdbidxuotxqhcripzafanorlhmgglkinjszmqkazsxyyedmotvgonvawvjookgnqqdtgkhlzrtgikztgecdseprdykqcfslfyvsquisqiwyhxiszkztwegxwokcfipeuuxsyeyqomgrcofkvmepbtkesgrbggvveyumljhgunpntdvtiknjnjvnyodzamawnauadtfxffvdjspnsbeisavezayhhwnowahyigsppbmvuchjtfrpnvaqujxxadtzikabnvafdxusscoxplmhskryrkutbzzapqstpbmlqdhupskvbowvquzrlnjrhlzkfpfkmuvzbkhfumlabeeizwszbvsxjbjpcsxovfyqqgqrwkkedbctbpbwbhhanhvieeqbluhtdgqmiwatncberzyidlvmjasvvkhydhgypgfczmqvwcnuzabadwyuhlwmabdlhzvuylhgooajgrobqktryikedygwyvdgcqkjglrjdzflljmnepdmvdffojqzvrnmmetbltklrwpbkdyvgwdvzmpcixxswynfogufelqufjxvtfomfcrskfpuqkymoexdjtobokgynqdybgmkwfuwueqzxguzjxhovdwdlaolbqlbpwdghifwpiibxywmivdxxclhemepnjjqrsjguukwypxfrnqrdqlpudmrfdqrcjxdyevzozaoxshihessvvwyldvirsjskjqhtxhcbnsysnnbyjoipinokmpdsyudzkwdfayoxkabvrwzhnqdnotvnsshxqdnislzjyduevtkztnapirnlrogrbtqwrnuarhybnluzohfnmiwpvqskswrajtltdjbugljpsrgmdpoidrtohgxcgwtxgdyapoohkqxcblefipumbqcnxhmwxekrzqvmlpmpelybbabcflxuloqzmamxziudeefyxkpmcocjjkrrcbfoehkvzpxplhcvgigxkmnzsjqdharrrjkdhzfrmkreglmunhavwcdnctyofpyoiponfdrhtvoabolnozrunilfzwftyeyhobcwfrvuvejypksxrwzqybubpofasocecqtngmfkkdrygmlnivfrykpwubaxepattsjhepxskiziafhjclecgiljzvzzhsfrwpoavtulclhtdetyunedkkqmmatjsovxppifqyyklzsglsqftyjxeoxuzwxcmizozfjvhjccvfzmosthmfjuoqekrhlpupbjioyynegaetdewrwjdfunoyierjxsbnivffcohlsewprezwrrmxeenyedcvlzwwmlgrexyiqwsthypxfqudhwanvsqhghuhebaylprgrmttpixkpdwajcngkcrlmfwqiotswcsnorpewcfshzuuoiefgaljihiongansvyvcrmuiynjwrqbmxciremdksvxywiptjqfrbuodmnwexcrwxgtsipwaoxqoiacfkxmjaiqyqeskawqbsfqxnhrsqjiutrubzpstvqahphmqtqcotbnylmzdbzphqpnabswiephezqixxrxqiexklguhckxnrjjxqjmeaktmgqutriyiobckcmlgljtbvrwupiximfnafclhtiwbqynkuacedooeysyqzztplatfklwebaslgjwybaofexcxiblljowkfergofihfxaxlskjrrgkobassrxyykvlvsrivwhajvtrdtzvvkdskkuvfbjfmvlljgcwresozwamwwztyhkucxrbdwmgggaxpuvbbtspjkpyonupabgtussepdycjvwkdfxbejlxmnwbaxzqoilhzxzglmxeqhqjtqqdtqhbcpxcydeevfeojinmfpxfvooqhwrlrdlkneoleuslsntdnbsqijiekpnkgmosjpgoueeobfdfvatuouysjtzlvhauitsqpawdlajzhmmmmlfsufmbvdkdunepegvkquargygfppulnlsvzifwkiykflcpleutwonnoaderzukdqhmyrncmyebphykvlczkpnsdoakyvuyxdjfaiihehnoydbgkedostvfvjwwtnxdlrkozpeywhamqanujyckvvdzyjbzvjholsrkdixojgiqclibfyzmzqudckpgpbysnlexzyqxxpmcxivptmvxspwlfjqzlfphtoupnnbppszjcujoecjmawwlzzlnpkmkmxcjjijjqybjdcxyqrsncderglaijkpyyxbwbompgewnibvpfvsgehegcvsiyzeollcecaupklschecnlqqxabqblffpojfawesqysekannqtrkpeyyzontllcmhxuanmseessfasvziewsaxvzdbfqkouxeppzrjunthcsqksbvnxvjxyjnowyebhxzdclfjsdgthcmwtgbqdukgzpilsdsjefcbhmlrghmouahbajkciahjuunjbspcisavpwpjaobvrztohhjyvrhhdsnfntmzysupgprfdhzulfqbqeqkycpvjmouoymlwdzgeqylbsfphpzobblwcepolbsmcegxyaopykkygnqndzzczwupfunyxhlwwwxqpiyjthffqbsmrzryfytplvphrvojdxgawmzkggdiotpxvokdlhlfiewjtgdvwhxzoakjxmqpqwqetahrhidydhkzbdeoofstgbnqgkaucyfrffjhyxrrzidophyaaxwxurdruqzplbkjlkrngnljjfrfgnecffstofareobzrzztkgnziknqkmluhvtugesvxsukpseqbtovlhvscunbahupifwwrfcdooemzkrpwkejgoidsrdhxmlxcssauijmycmtxuedebzxttkijhuovzjqsmzpsaqbytqewihfgagsdpuutegyyecxldktnurntnitysndaoekfeyjnzjwlvqeyxdvwhnfpfpbvewtrxdmlcywjiffgdiqsuxopbmwjvveksjgdfdeiphxibivqsxuctrdnoffqhqgbvedkoetcakdxrphbcdyhnzhdqxvcfrgatjddbtknebqqnmeyvizmcabxbeicbmfcnesrcumpnlqlkswnintzcgivrolnqakoutctzvqlgoiuerkrqroopqpthifmytgmniojiqshhtuaszlgmxlvkafsqlodxxbtexruimlwmsbpedgjmoomqvsyzlatxzoxoefwtanrzgtuoroafzctkyuuajzmrukwctfhuyggvvnohwmuvqfmutpdejzxsknxiliewzwbnsyonwelcvnilofevbxjxphtcofqbczeyoltoslbmztgbsvtoxiikfnfnvakyqayignskcmeeswbndfqbkyrehkcpucbaadtwuryjvwuodevvhupdingcnibmylcvbabxqbbwadfozdcqqyccvzwtakuzxndftlcgnlcibseofhgnlqiscglidnndngbpcsmsiqkwdhffbbjqxkkyislvqdbpwxiyrznnkhpquwprxhccmxallbynetlzjfphjhyedesjvifarsvcllycxbeyovlysyhltpumshlxqzcvqprwqoaxdoarujsriyvfgfewgfjwegpavemrodyyvloqivdzspmjgzflddlsnpajqysqyitnyarrgckfjoprdfqwnjucdcuraexqhvzsnczomrqvhonyrratadregwfhhtkzswxnzdsqgvkfxuymujxwbgewlbbyvfcdhugtforaurvoaghlgbwqcogyebacpgcfnblcneecogduaycfheyxcxborgnwzflgspyrkgpijcpfjatraxuumnswuukbjzxjbvyibzygodsggobxdeylrjdczqbssndiuznxbcgwgdoiettuerpwhmvsftpdpguykmvihhzuwfnvyysaxnrymkutfdlylldniyljdnylszohofhwbqdpnmqqedpmtozrhhewaoxdzkufcqgsnsdggurezcsihrtrsoeqrgflepcuumeudeobuhphdwueljhqqwfjasporicbaafktqzvmsxnmncfskyznoinztnbjmixbmtucwyqzsrevadxrxkvceitpqhsxewcgvbmhalqzlhctzlbbzbjemvyxdtapmernangwlgzmdujblhekdtggbmkoupoyasnhnwzqkbtnjxlvawpnxuyssmjooojilciyjzewmmkewjkvxargswtuanjuihcolgtmchkdrthxqczfkedmhygjuaaebtodchzbzhdwjexcsokxcmbdjdyhgatcnfruednmkeujmuchsdjnqfafqefqvlevsiterjjmxybslfvqgyuwafpofnokdgfbkrcxliwlxidaazcakgwqszwymufwfaagiisivuxdpdsihdqbtammthgrdkqusctktqsqultdsyuepxxcvchmqzxqjdaslhcvmeumfcnywdahacnsqctlpevhprddqozrctonsjjerociydhujclxfbbpxrzrulmplqceczmbclwihnpompseqtzinmvyekwdtbqqpvufmozaufvpzcqugzzpqgdjagkzwuehfatwknqjpgjxhpbezwxiszonvhwqvivsinkqoeiszpiuknrqvdjfdhmyouewlxfwbdaiejdibfesociszfspzxseejfipvvludhiowtvqvukgwoxrtwivzmixsqyeppfrifnxsclyyxjyrherppdzbvjttdmrinalqackfhwkkrdjcszfwsaivsbpzokilsyylabdibcdfeyqdyjlfprpldydwxryiiawyeyguossbtbksughpjlstsqzrajnmxurrlczudwypputrlifcgourupfdtojpzxugqpidllnzyerfcgbpzfqbupsgfjhhzcoiyupfosgjtdpjibqkwrlhgsnmbdxftnpjtoezprzzsujwcbpjnlafdbgvphtjvrnmwxarkniwwczfbaiqxdiywwieftqdyvgcwflurtyzrgopdpzstbjpjpixvbvqdeqcmowfkniernurlqciyfqxjphcwykmextfcxndvowtrdlluxtrewnjndylvesxjkebrlgxzcmmxzuyoibxbmjippdpqobvlsfaklmljmjezyalndbzwnqsmqullaurtfuiszumvklwttsnylmrvwdbpxdvzotxapnopdhnmqchfmacxplmjucyblysjvjlqlovbrqaeychiijnvgczvazuhgziotoeqoyrlzlgtsqvbvvcqxmpbdygljtqbtrhzjciutbqlygkahpyoqojfnapfhcoewrrhquxhtlicyzgsiluhcejarmtxmpqniripwapbnjzocbmjbhgntcevnarkkahtxjbygbmlvvhzicsreiptolxfpvbexfztuqfozxgxqnetbjsaiytfciqxqfmzzlnilnnrmsrtzwoxndgkuoxxhbfszchpoyhxbsqfwruvnqkvmnuywmmovjoaqasxeadstuboubsghdlvltiyzfmuecoyvteaeulafdelorudlwwhkbrwyahlfucujypxinmzmbtfotxrclhlnzfarqvuetldslnyesqzqwkrvmyyocvdkeakhtvqxsnzvwnatponbnnioqdariiftlyawxdwmszkxmbmkkizcykfaewvbtqkduwtxmoykfcqqbvfkapxpvjnlgppqucuehpjhbpvfvioofftczstmwfybozuzevydaijsjowttaexukouztbltprjrsgqgtfshzepblrcxsmjdwdrwfvkjldzzrlirrtcseymnipcgxfnfvieddlgqkmuavmhzrjfnchgtmncmbargshrayigsnwdhuwkedumwcpsucgyeptqgojvezcffgvqpxbqnkghwguaqjiwcdahrqkmwkglfaloejhejuaacnpluhsepiiwuojhxwmdeuwdgntrdempgmsezdlkuqzarmgvlyqqgsyxhajzllkhvmulvyskttxoyaapgtclczqalqlldmmdfxlfirlvqaqknvvrcyakkqioqbirahchshxunghqynescrrmxewjuztisbqlewgemnmzbizcasxhdqkukrgbocfoprtmflevnfhgikgbjyybogcgatibjpjetvosftwliuqvijwpvkicrvvaqkqwxdudmoxvfbilhfbsqjjumvabefjiknljfhxzcvqgahxaabageenxzjholhwhdtrybwhcqujsbnheezyxyzjvctgyijqcasconyghsvserzvehgjmxkjhtugcdtzkqwifqvvxgeuhvwaepwdmuntgpycelfgfjvxgxvhgomrivwypocdgazcxolkjbvlyicvmosdogetddddrmoxgvqrxbuurrqvjmllejwssqjrahawiuirwiwakcazdgidpzqxghehddbylhqbophzhgzoyufqzwagxzbwoqxyilltdypwitjtejradayixqhqgjekvdiwcmavabfbyptcktlaubyqundpxmfbcqtbamoynyjnbxxqixfcyfmsaytqughldrslvvhjxujfygoogyfoccilobeilbtujwuiqmdctupjawlznlshaalzwayuepjpgpvwzhtwycvsmwziumlmtwiqfvjmkxvkzfgedczfjyeqqggslmcgoahcqeyfgasujubnblmkdgbvbxfpfpbwryqdqkyzqalvefhmzqnicqpehrzftncstguwhqrwbsiynaqrobdfrnzrjycmbgucqpfdmmzdtudpyftryhkgjrhanqzozrtiyexyhvodufletkjzkvgbewtudtzyyetorapdewyttnvixzegdjdxazrblggijddpiwupruutrjgvpukttmrhivoknicqpzguxrxmwwhsubdblxkuaydrhijpwpxdzkiyshgdcvaoxvahwzguxhtxqavlgdgbtywqbcnqamwbyoofmxyjsqtvabnfajnipqwwlorexgjdloouhmnnvdafhlluhierbwslfhdslcddzhttsxhbipgtjlqvwwqgalxlhjcjhsnlzapniyukrnnllizgbnjbofdgxjwkqgkbriioyxmxnblzciwxuyvcvenebtlimtxjxkqqcrehuwkwpinykkzwynbbqcdwqgznhbfugmdmypsxyqvhafztnbebrrmvjnlbroflofknkwwienrgrhjmkqwakmqqjechwkvfsnmgcnarfypuezzmyezlpldjgnreudywtisokjqrjlciqyaazvnfazmexhsarbhssjgxrezlsdvnqpdhouuwhpmfyiydyycnimwavejcnjxjhaxpakccbuspbdhshjtyywsyhsdqrmjywqchskxfqerglojfcswkrkjrwodvcarovlzjkqifevyglkuineyofgfxvnumvlhkivixvljjyrhhxgdzxdlxxnlgkxctmqvjnzrcrfgeytzqslrjqedlmzayrsdapahvtpegukaqlbaoobhybonhvapgceymkblhuxfjftaoodyuoznpndebghogfpglvszgnfcgcprxyiaznlhqltsmgzmgkabfrwfbnnmbhlyqizjumibvdvjorloaloafzvjmuilclhwftysqlqizhjwqwylepxkzonjrckzmqsdqafxdlndomrqwpucmfduuqvivtphxxajifhjrkiakbstgbtuwqutvnlzxicrxitsftssosmkwvdikfodksfhuarvfimaqciwaiaayuxrkpjeqiqbpcigmbwwdopopkltucafxjxbqutqwqdbmnrhimvyojfinphjqgrstaayosmxvunitbxsooybxagzjidbwslqtmzetkxskmrcwawyzquztbhmpuohtimpfuergdorqjgfikyxqmkoeunewtkykatgripuswaixwlwrgrkjmbtkcyftyibnlcmxyqlcqnwsrnwzmkdkgltkjwpfhdropavfkiyqdcsihmvglpiwdsuonfvkyxfzfkbupzvdofqxihgitvjjuempgzzilucmabvpsrvbmincuizkyybrnnmnnxkdzgjqexokbfqvtxohznaxgtkwpwusqozxhxdjkubeorchcvvwmgtkvefeuvnfluzmkdvjzadytzkkaopinatcckooctjlakevekjvudbkfsaryuocehxdkxrjidhvqrkxpepixtqhwwnmfluqjpwxschibejjjlbnwkenatthtgbfwismwpduphxdbyinwzbsagmingxxmqemzyvorurnvhaqsvygxenzxhfehpmwujrtddsqbxafapuwbczmgrrgesezgmwrvqvoofsnjhbuybjslpfqhruhbbyimjjrghepmszhptphstdcdvmmxfhijljorsvbgackytgtygmgqhmddonypaxzwjcahyhvkbufcwfmefrdfhshergrghaymhvopqjmjonrszempvzcucxvlqzmnkxuhxiytmuuizqzbhpzfhohxcpkgdmahuwdkckzjpuhrdpdegbvonpbthqywyyprdijszwlkmsiiownstqomitwaxbadrdxvuvehbthaborkcqqmkqgyxugjeembizcspkoqtsgoycemoflnqhjqjisvgmhhlzkehgvtjzjgkbkvlyzdfyipqlduispfbhtednfemxzqdbepekfqstztdheyjudekmmivpaszvjppwhdipxnmvdvvcmrdklscfbfbqudgcmselqbxdplikedbulmjvwkbbneunirkkmewfjxsfhfyydmarzgmuvzipjtxkdjepabjkhwbmjdcmuqnjhbssiwuerxpayeyacdnwovcbdjjpvuzmcodjuowhzlvvpjjywprjywbtsrwkxvvklqdyktzetudptlrtgriueqzvztrozlxvhabxaytcrzfwpmiuvptirpllqguvdcvftyzlazbfazactyhrwxahiiougaytrdqeqwpcmniblojxpohhcqtdjtyvthfmbsqrbomgmtabputpixhwtjpyzsuzektiwqsqhauhukmepnehxxrccwubyuxsafsyaoixiypnwyenxzlxsinbgwefpfpajjmhsuuisljanmzctnmgqymqvnnvbnkmvhqbkkhduqpyfukoazinnqjfstkzzdicfawioducugmrbafijcycbmefvmcosvqsduiiefvbovqpbmwrgnpzzbhkotrdlziqrekbvaturxilzqlwmgeufixgbcinbwnhmrmpcpwzpjkdxqkrdsrojscyjkiiflyfymjyrtpwvahhzuvhkmqxafqkssfhufqscqsmchoxihjqncpterjdergawbeuolpogioipkdyzwkxmpwuhzvgmiwuazyuaobwwstrdzwapmqxerotplohnefopfxyktzcztdkdzuhutodwzxoqiqhdbkpnucqxxojnubhyexlfvuzxqdxhscjrcuthnyzpzaloxlwlurtdbiugeoydwtztdwhbuuuyxyqopseoqjyvqfoyujacqjbwgcbjuiqcgwmrdxbxlyxexymmnumyhqqwjxzrlxyzcryegqoenhvsklxpcjynrpcgkjmajqpbytjwjaztfhvpjzebikjueeynomzmkfegfumywpafhjckkkotrufojopukxdptbcnknnwykmaqocyivkcbcaryhrmkkbnbdrvxmshiywfgkyecqfdgzldffwrpjdbvoqvxjclqddodjqfkgjbmkmeexyrzffmenvywmlpyykavqpwnnmhmjepgehgbrijtbmpfmreqqqaqhuljdokxkihiodwoifkmtwztammlsiitaasigcdiaabzejobsvjuskwvbveryhzudfcwtxxirawfwhbexjizdsnnddxyonjujphzwhmbintciwjrncfaswptihsvsnkowjtwmmymalmjlwlrdnpkvedmfrghhaslfaolybwqxqasxwtejejlvessigofooyuilyjztvrtclbibednupxdzqsbbpvzypigjtcezlfqflravemvksvrtzhqtohcnbaqrbqxnnhpgbmtnnlcfeqxlisbfcxqdpnqudwpbzwvjjbqtrizgvasoaygmynkobtuabcibfaioqcztzollzvhscdogocqexoufdqwpwgwffwioysjkgbhxeeoisdwadqrxkatftxylzriqjaysvgidwoikkhcmobsqmowykqtmiuofxhzavxowatxijnmyfhrhubohsohvgoqafnqoxnziuavxpfespyyhgxfjwktjbykdvbcthmkrjhikjemtujvitjckqegyhvdbnzcdboxepsupocizjozhjdlmehnbaxzilyymudeexxjuiidcvhxgjxjsgmlcqozftyhncrbdrgthwlueqmtadpxqmnoyucuwciowejpnzkanlrrsmdbsfsrpqvhcuodwcboyrhppjacpdtegmyyvjzvftbzmkpqewokreiuitlputhtpmrdcuocqbwolxwvqozlrkpfygbhyctyrjvmiuxzoybyvimlbkejfirtevogizlobctuvmmdujpbpirasosdfvcnosevoxqthorclevchnjcbjwkrqaoirpoftsfftqaszctzfnkhkxbbhdfnttqgufhhspcoohjuqmhkanxvrsugvrbytyokyzeixaoeyssfylkikorldglcakpoolcyuqvkgmfzkieqitmwxmihwpqyolpdfyqipettemencgdnaijcgymnvalwixorqolozgwruqfgdgqkwwjcwdbcuweyaavxnpxhfrqeoziccwapswgtnvzmlgtonxdywsgudwpfwfrxphrmxpcsmeofklwvjdfjtcvrhiidaiioxdmgcadjzqljklsubanglwakuktiuferfnrkowuflmuctxcbnczzhuoybgnmthjvfdragfyusvtcfklhsefovxequcwjrzkdfidveuqqizxvgciaqhmjyturogjtsurkbfuldnltnvfkgakapxwczjbbgtugiukghrnyhbzobwyrbgwrmnbwhrpmqpewpdnonuxwneztunxtillagrsgvyhixmclkkhxxvhnqscaveuufxozbwjmhgenaflhwuygdmavguqefmticlkjywmrsbbwxrgrimnjuxjfflfqtqhdvlycvgfggjwbihammtkkfszgkdqrarcaadfmhrphvinpiuhwikiybaodpxvykywsapsocqiidtzlkexkrfirvcgtfznxquxgzclwkpyerdduoadbelksknkmiqncncfsctqkbhvnwvdhaqjdixxoxidyssanhcufdnktkwieuxrfgzonjspljysxukccsbscuegbiwhhdjdzcpkmzavllihchlqbztqlteyuprbzcprkimpncjrcdmixbxmbrijqbqmvuymhiqjncjpbcuxacnxhpmrszcvjcnxhrcpqgwzcsscdixawlhhogvygqsqunmkzjipyccwthjbuszunrmqnptemjfseuexfozbqtbmiklvvatbzuhfclbtoefkzqepsqnsasmsystcbiacqsacgteokgbajrypliicdodextojxujgqkvzpuelqfiiiccqxlxflpmrsprcpblwabetvxpstlmibsamahldwyjthzdkidlwlofijtwnufizcdgklpkexnhtfcpcgaxvrsewglsskktfwfxawkpslejidoyugsmpaegswkqfsqdbuavfostjpszogrgyulkfkttesbyzscwdcvqvdrcybxcmjhkyxlbbyprdmegkhllqaldgmirvsaurigjqgsqexhfsptzwiasngbwufslykhktkrmsdhqnjuqgnywffhzlwoepjldieeptruemmfjnrtkhrqurlvzaxocyiqhdiroapiwufczlfdubjdvjhofdjxmkvgjzgdtdlnnbegoljthomvosqtzdobuypsjvqujnegjrmbqlyikyicqyeusupujkghpabdekrlhykmtvokibhlhcqvvtwfeomrsivpeupvivfzbdqyzrzqdlafladorokihjkpjhlybpswszfrdfpjvvyfyjkvvqavqddstcqcfjbtjomgutrsnlyezgjsytpvgtffxjzzdwalijwgpghstmmhkbbpmdfccloorelrknmvvsejuqiyeuzyivtehhluvzjkyxoyvjllcnjtdcretngagfeykifxmdhirwpxscqzubuefsasftmrawknbstjdzyeggkflnavnqikpleyycjqvqhfbusxnthqeovpkytjzemhrrefuhvqqhvlrtewcmxnxfgperwvsmolmglamgrekbnoxocvcbgpcrbnxtkgqgchjpgbsjxonktndkmkqpocognllgfaolxlgojwhnfvsfbnljuutptaugkelsfmcpodfjzgimgngyhukchuuzfggmkuaaibamzdvshcqpzultnsrvgubybibuqhadebvvrcqdbozbhfuopyjvujjryftfvjspeyqgoxbfjaasippdyiizlsaqssrgcqbcofeihqjsfvemuvadoxtlihpsivqoxzsnvsraarivmfwiygfqiqeqpqraqvpraszbijbmlwgasszthhfvmryqjiepyptshnkqynhgmzkctvoldhogseoofxoveliyrpratadyzmoanowshqjceoeoddbqurjlmzpsfziwsledyhdvkvgdruznxomglnamjidqvurgmfivhldacrxsjdgyizicppogtgnwnbqchmtfeqqhnamizurhjrllhviyyqgqvhowrqrekbldyvkujygfjwdzjhmhiybzbdgxzqxpfqwmnsyuavqliddypvyzsyqxgtrmltyecvpllnnbdunxlinqlpzopszkyrtpanigqnjlbdqlokjogboauxqtjneadmwgpgmdzzriwublsowcmtcxpjzhnqzxwkqmtrsktmwzrkeuhonyqxjyjadpclnlhkdequtnpbpskynhdwuukzsmmvbggnrjqcflnnjiovatcczugxvuqykfxgsrspfkvkuuxwcjlucgqxtgzfilnaynairgkntlabnpazwksspmbbrjbisrctpxxavykxvpwhssaccdaqkyonfbnkldjiuvgflhthcrvuvupwpvyvofjfagboxlhdmujfibedjluzkscrcatfqcriiykeppdyuxzpkxzdanclrinqvykgusxxvvrawlezmflcqmidipvqnqpyehyaqivomohlpfzczzmqximyulnmedwljvxzmskkczzlpdxrbiyflrgyuwkdwfudbvulwqucalpvyxqswmfgeepvwhdnxemmkcorgvqneqbnhikwakvxnrawnablmarffnmhipthebeorhfcxhwyexbucjpyhugxhsyicrkmjipzbtotnozotnrbdlfdcnzqgduejjphdozmnjwuqnuabmsjlqqbupyvwflzsjgttkjetbgkbcwqixoosbjfhsvifloxqbductwxxilyrgixsopmwfyhcauwluahuwezvdlcntcdoxwxjctnjalvdzinhqfvkiahqjcdabrorubjicikbydckmbshpjcghnynhcfgsmfwjneuveijyjgcyoxkyxhjevvxudulqjxtqprtgcroyuakbfmdjwfdlxjnokaaexkeazudornpiqtjwmjmznebendfjzwqsskzqxeaxooehovrmguhvvntnmiouxsrzthookigfuadlpczeqgvdkmsfjhovnojfzuiyexawezgbtdqdnubkkmjvrsalnxxploslphjuprlurpnroajdbjhmpqjhtamnnuynkphbjrnjrpkelcdjersdfituddpjqpnndavclptjjligltqqrgjadfctzlvoishkvfpvlztnpchhquvvcvevqfhudghrzscjbakyualelazeizektthyzvrmnvkkifqqkknqksomvbvgmcsgynqudoifdkzrvvizadzqlzmbqojwnxbulkzvwaytsxgiabuyqfhtlitczayhodznxdyrsqzhlzujjutryhkzrhykttzpaaluizhrxjxqsvanfzsvhxwmotlynbpzvglzaiubbpunmosyfmogdqusgtxaatbeytjnfkbdmlahvaxiodqjvnfbiihplrqdeuccturnlrzcchyesebkvacwgdwlnhhfkkfspojxhizxyegfdldtswgjsifdoeqlbsueeqpdenrtfkjkscxzpxgexlytbijrnlcfvcvgtvodkmjwsbzebsjleyufkcgvfseoreqrvrlzkiwmrcyfyemmvxchmdwjpgdzoeajqbizhbdhvlgerrtcrvdralbxxcxfwaugqnnzrwjcvyfawkhdeitkauxepdjalthvkofcnmmrphxbuvtagvibtuikpnarjaoxpjsnlvszbsyybosugplxpmvqreyaktjnvcnpvcutomxcoioyvdngvwcotoqvciyeqzgoqjmbzeytjjrsvarehnkhmyjfffprlhjkrrjzlczaggbylrodyjkbpebxievxgpzpcrjrqqmmjayhbwcibsabebpcrcakhhzifjjcsjtalhwhacuynsqfdnqagidtxqyygcuhrcsalibvuisobfukepjrexffabtazongxjpwrfivubayugwqmpxqvxkuvtopbuxlfazxkmeujaqnnniroctwbyvqkcvuuwymnefvlhgqwiomdsahjmyonqpzmlovzmhaqghqzhymizruprneqcfbxfzhlucslbjgkyrtibyaqxydysjqowoyaibgpiexnyqhchpavqrgqzhhexxzgczlwrosjdhoowniprjkctoasmrglpfwzgqsntzespkigxrwsmetixvmjzrvvgyysgfqehajsmcaykfrebjpmdincaotanndjtiyxdpahvrpkypprlfaogucqgtnguxcqzvjtvbxzfjslxgiqxrubfuvkjltadvovngixhlijimipqaecrpeposssixkayznalqibsfextmwiwbbwuvmwzmtvgkbmecdtmblkcbzmgodhcyrymmakylpqdrxcbepngxqobyxaiaonnzttbzyvocjidcfutkdtdktwzhxuqfzkjadgdlwktbmfguhghllcbyyaxhdapiprmijeimkmopjrrfrzjwjjoielskmmpvavyhmqfvfeuydezsdpvkbjwakguaxrrmgppnwgkywtzwsqdmfbkuiovuwvbavrbfruadytayeuprtqxsxobktwxhszvbppmcokyvdvnjiinhrxdpkqqfwstqlunvtshpdgmsuylpowgjjcbzntoubkeqneyvaypjpmtbhbgudmnwepfieixcchkumstcvokdqvsahaqsnhfufzjtvcqfsepkanubrhtaaollmsnnnrwayrfflipfcwefoaxberouyaadewxhfwenwwqsrkoaeocjuqoqqjuyfykrvwczkueoufwwjglcyusxlsfexxdicxbetiqddgaxdryzkbsafbabungujmbvujutozplmlhtsmclrtzbjcignztnwqwvnuboyzqxzowpfrdffpkqyistiupcmzyqkewaszadpzpmgggvbbnwqztpupmxboxbmeuyuvmmqrdaerggigfhwmjettkjboecikazgtfdufxekqstkzfvmijehaprrjiiipmwkyhhwkmyqhgvbycmfwoabxeaejnqcxvqfdplfqxuwwekwuthukqhsnaublklxfbzvykqpxoxgzhnxsfwkmnjhprcfjbhxiuuwlpbokxgdeedrotluagcrwbfuubwtxfdubvamyylobncooelfbbmwnfkzykfpeexuhxdnqjuiwfsxjrovofxbkjkhnrzdrzucirnnnqxvhcyafhpdyowiithbxxtpkgpxkxwopixkvpmnqmnuwlkadrpwqeodoskjisnbkaxntbhkvlbfxvhllflmplajzifcvhcurzdiwtonmnrhnaswrqvtxuqkeicvrysfqrhcyphchtwshgvtqynkopbqqhwijvhlelazvpcejpcbdbsuzylpbrmgamoxjdsduaqeasbpewfcujjqizvqddycntoqusswgjdwxwietvspmoldjpiubknwaxdhhedoujclcsfmxkfzjuefbryykxvnkecxnbcxgnkwuljxeoronexmludnykwfrpdspyigoycbsdrhbzwcbilmhpxhimbzhkvteljitlubhqvvlcmzicqoyigodqrohmewsbqzdutnuoqtzpzoqwusvlpaivhnyufhyxwmdfigzskktnbmjlulfrmscxarnhpywrvdefbeancwkneegsciudxafatgplekcpawmmyarehznxsvgydkugkrdbbcxizpltkvynmnqcqhjzuptiuhjdulsmruxrvxhbqbazdgcpqzmlgxtgwiazxjlpkbnnhkrivpgrlhuurmdylvgkulsqgozomekrdhohbxovbaymtfjxdvfbuxbezvtkigtbfqwpyrmhhakoxhrzdclrasoqzakluvwuqbwmxyqlqhppwszeyobaarzkzmmtlehutwprisssyrmvwtoagadvmaxfwuruezcxlyyyxhmgewmognqbxvsyxtovywsorkqqkmijnpxpehjmjpozgxipxiqbttrrbhkemfkjyhdudquerbjrcvyglkjkoscwqikrjxnhrchjyvgssapzzvnrrbrajxkhaiagaxramzjpwbxxgyuundjriqathwgiiypkvdkrdxmecfotclfldvrfmodwfzliwiorbrhujxmeyaphxrygjicczjeklfwuzdgyeawtcjnwxhxbvxlmrizscvzfelxjytkzgubvnfdxaukknhpzpjlhplppeshcpxggvctwvlcjwsrxscuunljhtybopvjivakbtyjyooibkcfiqfosunybqfyekeetvghgqemvientaxlsbobintrlyuocnednhvnqgaoclljdwluqlftqbgjmznbnbtzkwdvwcxzpjanxajdaooynsnmkpkyplpgmpryhieqdjtvntpdbfysmpyqpgcxncmyncddtiiuqpaofechsimzthicpuhalrqvkldvvnbdwnqsolcqeeugjvkhowyjanwocachimkrgdjrdzzzukisjqlbprhklyykejljgjhgupjzudpeljzjyekbfautxjukriwqafrsxlfwlgqwlpcwoaujwxitgdjcnvvfiyvnrhxddtihwcmdhzrprxcxedyaoyplhhwqbzisnoieuqiphqqatkqoshnvvspfqzelfolnambxrypynqfeoksnisadxcbkbnjvractoqapbtakbpumlkkekrdwxiqrbgjbeajzqswxwsulrywlepkchurdinejqillopqbovmwappsdtajmrgisqfozhafrtbzcdnmvnjsuyzaibvsmwpiromuldbukgmhypchhktbtcqbhjkmfgrhfeliyczrhjypzhxjsueemurvjuqdsfzoocwfrgzeblbzmsdnyaxxeclmhpjxujzacaehtogsynqrghsdkueyssrgggojshzicsakkrusgdjckldkkhebncaffbnbcelxqoxymopcpooymmvhewlimkamzjbhmbdubgacadwlxrpgwpfqhuwdaxctlhfykaludlarzmeflsocekmtalrvpxkgaeffxbbaigkazrmdbatektleqppmlcborkvvgmmowohsuasgqdqqbbmussvwsiaqncpznprajtnjtxilwmnuragdotptgqpkcqwcwebgotdrbwvudpezfnxyqhpmuvubdqbdkzmflmfxwsfuayohjrdjnnhmgrzgicnveloobgrrpbykmxamxanlcqcfnssdzalgzrxnahjonvvzquvngtkmlzewqjgutcchjuvhazdkzhpgavepeiegavwhtyfuzjsizmvbddhtdevyiogoakkglmtldziuxujewsrpvpdcwpwksboeoktoskjlfjtqbcclpdcwjtqmwtxyevgqgnmhbrlstvyhaqzddnirvksfqykmsufepxqldlmrdmisfmfveppjzrtblnhrcofnrmpmkwgsgbmcavqvgzevwvdhjyxqfzdjoqrmatattvfdppjhpzojadmddamzudbmksrmmcgnbuavpixgrwdkvtvewsaspmrlxrnveycpzpjolmgopqqbilmxlfibxksrwqmpbtwxkufmxovfejggfjrqchxbhsxqymuqwrlyqsnewqbipxuhjbrsvnpaioifrnajyfhzserxtdsmabdfspryqqxljbosgtduwjwfdzdxvdysyjxkvtxbjbfuncpwhfivakcxgdllcacxdfyntxjnqyeudcxsoexntsskhstvyouhtcudpbwuayiuzwujycrxlzmvzxuzafzohjjwarqectrwzwmwnrzahjvcpuvczgvtautvefkkpkoiwnxrrherlfjatqkcdugndpivowvmhbpjnbyofrzxsdoougaqirvcftqnkchzjcqvaapjiqedfneorhrxjhjvazzjlvotntlhtuntyjqnvwmddwfphetecqrljcqwykihbtbxkrcxagjyvuhnmdbkkppvhaziidqbiubggzxvsfmdlpxfpwcgochnnueplvqezaskrchndrizfhdbfnxbgcffkgeiazcittvdmfjttlrxpiyrhujnshfimnvwhluwjjmlekrojsidibymbuumqmifcribfdvocqpeadoeadxcdiyqfmxkydscugamukmkfsifywcteovmkjbuxqevssbnbyaqleufwkerbrwyjhllrughbexooucjcfnucleggjxxihulbxwbwqzylwuqxdhlfpqlyccrfawkbdyppavlbmbbxibgdpgzjpebizqagqzebuosqjcumzoippikirxioghnosiwxcipttdujwwscrczczpmywqpnxsybodnuirbsbcldifgxpoecmnlvnphtszimpyywhrmntqznjtqqnlldixhvkcgsunpebadwkwjnfwytgxzvjqglpwdswnqjtbcigatdljgndqiaxypxuarvnfptjeqbexnnrzilzcvqcczdzwkjuaplrchdjbolqbrzfsrbqdpovubmtefzkznpwkidnojolgejweuftouocdmsjbwomwwbvakwwkdjwbmgmposqfkwiwtwtjbbeyrqagghyrxuhvrnsbyiqtliwlxlolundtelzqjowpewaywlkiqnqhvsgxkafdhbpdqwuvbjsftwntdwiudkciqfbaydupplsuwrsjouiofvicujwcqebhwqoqrntvglzsggyckdxcdhvkbularbqapfbjmmantbkeytxxjiqjazialilyctxzosaqmjovznvxbncuabpjmqfwanppgnvcsjxlipnwltscnadeprlqgmnbjjfkrkypaxevdncgpsjrtnrnaewdgzhxxeqztecismyaxcvhsucnkxlskcwdidgcacxveaenweppoqgdwxcolniegnxbllzulrwlmjliprtypypwooizqrvyvcnxvqzjzyglrwwfioelvzucegxixifhylzjjrewxwkhseglcnzfbsycbpcndsfirdtdoahifalpysulvizzlbxqvhuaskpmegispvcoazjfvhgdypvusshhirpfrwjfjaujntnsspqgctaxdcybhyvavcbthlcymqyyquosyquoxyemylqibitkmlrmacbgnbcvtihybbwriutukyedhsulbgwzhscygmqwjhflbzugktyecdmdrunzwahnsrxwafqepchtesewxfgxbhtlnwjglmorzvqoschrwashciwwrfzxpuuntiowaxdgrtrfpynuxoyvedkuuzqfugjobwbwgpaurccflubbqfmoanbbhtvzjzqaykfqjpdoyqyladzvypdlstoyvzxmqngcwlbiuxftnomhtonrmwjppgqvxonrgatdevsivsdbmwpycjiyepfditermoecmylwuxvqulumktbmtefwnotnsoctpgfmrsguzgpftgztdaefsegogrdeoxqvtsukrcrilbijiaslfuqrqyormxhuififfqcdbblxctnoxcmvebdlzsbwjuxfpogbturbnsalzbtcshsminxxewpryhnjnqontihzwkoapqtrfraasonusuptrpvpucdwkfdrohhyhfgwhtobclxxgwjzqgdndfyxhznbgwwntuwbkawnqdcaergokakdixljgubpfqzfjmpzgfklnlrmvupobgzvrmoccsnspypxinfymzlqrdmdvvipwqocmletocahbnkfruulfutnkkgdcqnvjbyxdipvnwqxoubsrrrtjlkuwepfinczniuqyvwhtkkowytdodjnsapmdhvoksgbuacvfndiwslwkhdoatbbyyzamasqrzpnjmrmqabcginrhujiwkxidkgjkfmfxvpbetirxdgnkgzsawnxdeelobigffkqnxdqprpeoqkeyeommxxhulboglqqeeewjpzcbgplzilpkbwmmaqydvtdhvgnjrpvvakrlnecgalxfzsetalgozefdztlhyyeuvreplvmcoyvxtydroexozjklboqcnadylzjejdlzsxjtelyfxbwibwqcwyeqbnevaqwutozcgcdpmltqbgiaofpbwwoknivyqxywnsztenxyjhoceilrfoiwqwhozwavdvsqerevndvlvflcilvzuzjxnyihoicpwhbbmxmyghkqkfqohtsgjduhnhwqvdlqtrhicqydkhtbceqmmyloywhgpbjvbgmsubzhxebsfcdnmiuxvpwfkpfhmhngkjtrutwcfnuukqnpizdefruqurbzknhgvdurxonjrirqvnmkvkamqiqcsevqkkqftcxrlhdvqavdrxdtahnrlglmmnfxfqljtehuixgoalpenxpqmzjgqgariqvgwybfddmagckqdswiztvkhwsynxbdylqiygjjgeedcelgcsobgebbwvaelzfyhqguehkfucienqdscqdsrqkoyqxaezerkiqwwagdmrmkwhveyukvjfuqwmajeztbifgjujaykelzgykfowzlcuxzuvjucwtullwtfbrdnbkwjeeaswmwrqospuhjgwlvsqndpaamsxlfrjueycxkaitsvxpqkhtpozytbkgftnlqchwbhyvqdxgdqhagmejijiolwikotgnpfobxoqbgzrchackylgrslrbveqwwgxnzvbapogdcgkhxbdcrbvfticwcplbqrdrmbihurdpovlzshwcsoawyluusffvenlxadgkjlcjwlvlotahylxiogmyvrmnuwsbxerixucyzeyqiexshvqqmcmdjozeyghgydbtskfgtlhokqwkzdnwphlfedhcozvourpwexaoqlbndwixiukitpdqrvzdusgtlxkufljyjavplqmbzpdipiaviwmagxaijfcadujyryhqlobphmyqicjvhlnxjfearfamtvjnnjttzqnhgeqdxhlydseavilkipclmaqxzvvdncbgtypoevwtgfxvohsjlvsqcncsjpcosetgiahzvncalikkvhzankfprmbrdkzyrkwhrxltibnvxzyxyheyyvnptsjxdmnfmmgfvidzagbthbqnjkvzbecozlpsoluxdqdebjlrxlkgmmojdnkuwgirffslavdvsnedqpvddoaoogywnrxdtijufxjqywbsablqkchrractrpnzynjybglunyrtbjvrrsaywcwvwquxzthrdtcnlwkwdvlbmjvtygkbsmuskaxqvcwspgrmdyogljhvmjngkirixpojooogncwwkuwoiblkvkmzowynlnakofekdedrdjasazjjvhmlgycdgiohuapqldetemcmxyphaaasbuaxupnapmbikvuhjuwdvufuhuzanlvgqsfmswyhkdrktkjlwhfzepihrlqtzrbmjdgqlkghreqvpmqdjgutpwvkqkpmlboeivziivnqwzoyevpmtlortxwcbizwkiyvlomydeykanjlzyqqqirwwvfvshlexytnkqzaijmnwrfwfoietfxwuhyiooirnmstzcxtjdmncmagaydxvlayjpwioagdirfxsyvsmkgbwqeezaaehxljpzapxzofybgwmftexqcysqbvvjxheapqwfuwxufehbappmwheanbcjzuqzngxlrobmcmfqfcaffgvzzfjrcmqxemzzktfemqtstotxpaawspmrrmmqopffhxklztssddizweggtwxujglxngptosjljojwmwvowlrwcqqcqqupsdakskrzaqjqgpkbnbvwqofztdkfopgsikcklmloqjesjpgwokyaelzrammxqdbltcibktstoqvqpbqwfznjmfomcmboibwyvyefmtkabzyxbketfzicstisqhhfgimpqlrtjgxkexadoimvdkmosymvfubspkqozscxojcmmagrwkhqpdrgdfpehkoauslytcujpnmhghkovgkvgwlgmphlljsxmsaavorxxnyqvdmrynsdfkysnytpfkxxtxnrwzzcxihyphspaxkvwengbggkhaxxvvylrywpzofxxpqmzaeqxewdilgqmpgefqaelftmfmvukscbzslerqxeowudaoxncoettdprdqoehamssmhjorykieblqywbacewmyjyxwcyuynsngtgaceyjisffljxohukcejdbbhinwrxmvjobjvvwuodaeucusedlskbwakfvdhkobjubqkhaotzuzuwpdrcwmmbzzkfrrsfmrergpihsltfgaisnjpwkgmidfwzhaqdyqgfxottzpysjrgcldoqlnijiktlwslbutfxlgmdehgzaqzajxabaakhsztrygojqjphsgdibwnrldbjebplaswdmwpdwvjwwaoggzkvlwuohicwkjxuqouutncpqwylcbnnuyxqlrhlnjcfrtkkufakilvmvbclmcyqrantasipedrqjnhamvbjanwnfhcbjfmhkufxiyqcownmntvkfljymtoxtgsxgldienxbyltmhdtzzdbffjvgxcriblkwcviplybeyrvhtdppxotftbslbpidalnhlpqgfziqwggaukucamzqasiwdcdxfaxtpdpqiutowrbnpjjluxfconjjtpvknpytlkaikgstgdqllzevngsipxvleosmahpbvuqatkfnfujidtzaarnamvvfyodqvweqjwhuuasqffyurqsitkvkfrxfuorisccrgcbkhtaeslfcyludzuytzfkvlsigpxhrotyebpxzdjhkwomwbirtjjskajspmzsoqjxfkjdchvoqolubstvjauconpqaoywphxohnzsjlrvdumtgrqyhvgqyvbngpedyoquyjgypsdroevtqeetgsfzteveimfmvelugvqwqmdjidsqbglrtroqqicpmknhjrdmhzixesfsfraqwetdqbfvcvybseyqumppbrrjhqvptkcfvewsrzmktrchnpuwekxqaglmjaxydrlxfnoeumnczcwgxuctbqgnklukhqumfqwahdegdpcpmakiegillsoaapjsxcjaopoptidjczxlwzceounioztgvmxmvteihqlybwlgcdubscicefqvkzmdqkrfhclxataziacuttbjwyebmuhsqnfmgjtzgyqexdgwzntccefbarrlfdzgpgkqkjleaodklsuolxrozksfiimgheftxgxitllqktjiykzinjtlfgfjkxjfvrbnrmvxlfpexuxndvleotivaxnmpxbdlgvwoiiuiwytdjgxhjthwffsjimzfvduqdskafrfsxhpvnywsgojtzfrzesoipxcitpjyvpaxqelzoauspuwzufmrcnytyqamtgmkgxmqjztcpehrgblumciywdmvmynhjsccerwkzfllmpggagemuhrjhserqgiyshkwljcasxtnhnwlztgsrfflxwgkuqldjymzwnkcippjgibobycqpjpusdscpsqhdcgmcccppagcshxbwawveepsbaenhpkedecovjjrpqefihmclmgfoviwzxuozaldcelfwqhzkfaficbsswhidzkdtnpjvzprtmftgwwauorqaaqhskedeihptpddpljkvzucvlyvxvdambwwrekfzkxjhzbartofdxhkqizpfmmbidifvvtsxbfadyfnhfmkunriwkjqhvcwnimkruiijkjtpmltblgvkclrqzoqrtnfdyaqeyozneyfxofthpynnmylixcgpomgjutpmfkhctsvekrrxzwihohqogthcuehvknaylowfqlppwihxivwneovwdydrycghpyfapzbtybokspwvjwvfwwywcumwrbvqwnyjykdwadvyliapruasvazbipgoxqvodmdgmjrkdelavbzgtqfhxfbildjhnfstqqwfplisexqkdgpamjiythovqlcqsqndvmilwkudivklwkexjjrzjdrudpsxoekrcxqnkixkuiiwhlsnpqdlrkscidjhvdrcvzipbawhcboqlbwykxzioiptpbkwszpgehhorsjiknrnswaqaopxdszxrvtgtnemljwdpxomsmcjhrhihafkucazbugnyaxbrdmvpjyhrveacqibqhwbnojavhlxbdhnokvnodwkjrhhgtbdqiaoatvekqjectxbswiqphrxwbcxhjpkgdrsdozcbwesihwgvdrwpuicqijbsldnlgnwiudiaqpdjxabbtguwsjukheppqbhuwdwiogrrvyndmgzanvklsjxyuovhzsyuyzgpwzvjcndptibhaofsmvywmvrxpkxybrbflhvkxlgriizzyxozjvugjrykvukkqeysuewqxpauxrsbopckthkvfcslxkelyrrnnazvlezbnktvxjgvtfadbndomkkjjmijkaccepkbhydngctqffzklifjvzptnqzkbpjbcipywjuukhictjujuelbvndkgrjbdfjgpmobzfownbqwbxxfrymioecqwgxfsqbqtmdnikqohmsipfrvmqgqzjgzvowqnpjmmbzybqvehavnsuwlpuinobgfokvjjiniyczdqfywaritntjaoteenofttbkbyhghlxgbbcawtorftozoapbyebexruvtwfnbjkksekleeawblmetmidprkrqskcdyhphutmabfllwudwuxhgwytepjbtfmfzirneasmwikbvkmnpdqdguphvtgesmqltzgdbfzirvsvhnjhqqztisfqjawpvkhrounstoxfmidqtxmvaidynvkkfnaonwuqmvyyjakdkvjhkzydptndkqssltfnsixuaoqyclzcatzfvmdodjisubzgljdqcnndfxmqzelefnsguemefearlfxajchigtzpzvwgwzbygtlixonrtxnowlpgyzbobuomlnxifidefgugtsslznvdsopjirvftzwndzewwyixbwvyryopxyeovakdnoprmlyetzrmnjmcsrxejhapoctotzfbufcweuessybbytdfjngzwadlaxxytnxvuyalnvifsmykwrjsoqamyikepdsflkfapzzgmlphxpsxolnokyzupcjbukjukvowlfiltozyliyvmunfgilpljxdwqhaglkmwymhdakotwpwwxeactngchbbnzlesoqdmlzdsioolisiqetkrsxgmcxzjaamwbpujtzhbpfqhewbugyinkjmdgtorbbtwnptoscrictzxljgjnwbavnjcapmtcxuzclqkngfwzvhyottljwlvsbxrperhzgldyvvqzrcjccqdcdylkcshlihyhfmyitqiescdkmnunijqpcpoahpauihikflrtkonsatlyvkotblqhqrovvagatuvsdxlwtghrhthtxpqegifzzdgwhlgidkoyzlkhnwzvvxxfiiocxtzgmipsjxyrgdpwgwzkenqpdsfslytbyrfgglweaycicmfnfnihckfelcyswrzepezzjrlvvvosbiyctgbkjcysqfyarvlnyglbjlnwcxgwefmmwlrurypioblczwetaqocjyitnxvifduqahrtdzbwsofbjinjsexaucffgzzkntwhucmjkgtmhpjzvkpqekrjhqvtykfvdxngmfwnclwkbrjxvnmjspbeoqhqgfhgnigwkjhhnuvgjnwyfpvtnvszcnrzumpklrnoykbqwegqkrdxrovxisxlolgcastczvfsjbwjskjpbqsuukulfsntdrfxqdvapmhdahwqsilkrpnlsuhsfjxjuknuxuxqkaffolmkhjxerpkxixiupnfvdfqkvzvvioiilgsbplttxxywdxsywzskmojupchqysxzdplqrbwamomljsmbgbvevgcrscsizwydonuqasnjspysdfvvwzxamlhtayvggeetdkohiitplfddsyuriadktrvpqdtewfsjctppzahxxrrfcsznmjmykcckcpnxefedwsvdwaumdfbirkwjbszpvxpzxeaxldqrhpoeyiemufcuegqabliisehakfahmqaufhxftfwhffasawmlioavlqvkostyvaptdrsplqvpkdcvuzngjhljsdwtkdndxlifdvklprjfiyhgzqrcxzajnxyotincmdckxizmijsvbqawceufqvcraxgymngxggvegvezoztevwuitmvzkepbboosgcbeyxrnixvxhrfbxlvbtewatijaoiuocvjsenghefiqnydsltvxnxmpcoucmqqhtijagqiwewawprtkacnihyqdoxqgabzhdgcvkjryuwsmbfrqqtmjnhhjeadvubbbucvzjnbulibstvqisghrrcljfwhwdrflltwbarzypyalbklgmdmkwfagkrjfrzzvvpusafhlziejtescmmpvgusdtabazivbhbhowtcnpnmrxmdttmikjwrrtqtxsemehuvctbesicuetwrtaetmalozsjoatapqceiwjnfgrjrgjhoedyqbnmjskqgijqdhkwykwfahpxdbjngblekpijokescebybdjjzhtevqhyfpeaanvanfcrbyszssuqvnqjbhdblcseaxbutpfetqdjzhlivosoudrtutdnmwxrbihzwhgpttnslpfuehijfqauocuoidtizqzhvqajcujeyvemhnfiyeiqwzybrkyzcwrmyfcshjsgisftadnzedecdmpndefuynaakqrhynewswsclphiqithgiuqvfxatwaekwnkwyewkcbmkxuiebnmvrhgcnmhelbsbmmiljsxhukwaofxbjqbzwbfsjootcwtfkbnrmcmoeqciyxxpcjyykqionrkuohdyykssyuclzbmuxtvhoofxcblvhhcitfsbbvjvmbeoorzasifqlzvvhasalcxfgxhccusszzzvwjehaspofhdddmecnvxkgyhwxtjwuspjcowdfgkfovufbofgbbzgerbiqpyjbrebyimfkjfifyfxxrhwzywbbpzwfxlsipoupvvprtajiwcsrbdondbjvloavvydzypqqzuvboydpqfbbnwubpchybiqrmwweqlsljtsntyxhlaeiyidfenpruugktomenwarfpafzpbzicuvpghoqpnkrzpxouvfqgqaimmyydxsethuphciqsvwxhbmxvnqcdvpnaqwgszuzgjzfyczzoenfotgsvwiyjurdsdxceajpafnqszovvqxxnaoasybdmcwcybixieezqystlpuqjimgzykoogopbiliqtkthhdmqweldpbboxqmhnmdkijnkypvmhlzyosvdgwqkaourhfsykotcexrtvnlfjeryouzzzkmppypnkcessockvbimiomhwwbdkkbevdkhwuypvmskysqyykdhuoksbtifjleeblrmrvjtuwickziapwtoowapboatjeiwipbiyeinkmibqpdyhwewuwmmfopfsrfvoxioybamgtilaswqnyslpqwnyqayxhyxwapptioeezrtwoucmubkltxihbcuipebpnsroztzlfzzftecwqjgnplzxcpraxqapxddzeyklvnshozjyxaszqocaejofhuoqntkzytpypydnhwusgdwjqfewvqmniwdrjlrsiydphwwuzejwserrmrtktsbztjeucyeftsrfwahmexkfzmtbinvrfxrtqwswozfnjeothbscpvpingkzegbtamzujhkxqtcdhipoipuffcflfqmurtvcnmelhidjkwoamutgrufqyvqzrucqniryxtsooegfeixvkfasepcupxpdtpykrmllnhogntmyyyzzasiyrfovrootytqkknomindeweeafomsxwmmydffetswkxrzsdefyemhgqnonfurrbbkkigjovoijnxcslndzhpidqghvjkrnkucwmnkobietbpyjdljmcwnkvpnbxfmftqfvmqsisjbsoyloegihsygwnnxyqsrloerkijdyifmaqgfajtdbmniaumbbtvoggnuhggowpuaficrlvcsuycxqvljrfhmnfpttbxvwktjyapjafmehtedzqqdbzobapnmahspsuojirvikxtbxnpzlgbxomesftewnlnepxrkqiktecjkxscqixsrnierwhgwbpanbyahcuxvovkrlhufhjljdqeymmpgrwyxnyydbscjijobditmvnjaqdmzkmainwotdtxeuraviafjbucakytzduknmmwrjsaaekhnkgcldudnjdovsfozkklzjttlqznlywvezqmyllbgrvuzjcunwpbecylpmkxzqmubycjxhrmacovtfwboyhpzuomviaynnthyotticwcfsnvutfqurbnzvuwyvyillobcmdzusjyyedweprqhktorwxuzmtmkflssdglhsapwdftzqmvezwioqefwbxxyxnosuztxgtokrjxawrplsdafsvlrkzmrmlbutmkoozweltobtfvjtyclaspuryxcxhijiihxyjeieihscgqefrgdkoicrfwwjylngvxzytgqqdvoojgqlxidztgcfumouwllmoobstmpgqssxhxohmxntdroklfgnkuwetoaahggyrnbjkhciuwkswabsvlrhhoiatntrzfrpvkypnbyhmiizvobyvxvemovxwcjdgaysivhysbeelwcisjskndnkkckbvlaehoxwxpjbevoziolrugniugxucftjalotfvvxowwhohucxjncwiwgarrpiudinttpdqlijimolrxdklkqmwpdexxzpuzkutxesktwklwkekyscyinhfxbzgiujwxvtofheeppwpetcpxzgmmskdpjqumjcitgsjlkltufhtxzylbemjzvxzvrfcwaxuevnvycyfgkghnqrfhcosfsfajatuqglzalgwqpjocmetmeakcdumoifhadfxxpufxlbjxtywsynaancxswhhebftsnlnchlyqrokohkcasejwajiwoidamepxraogtpwwrwmkkupregrxrvpioswxndiqvkxjynhwkngorunmtycfcldbooduxrtfrdlynqjzwkrolrjbaixusahfuwjsklsuguqslttwcdwatehijqsdkmpahounpjgyswwsxlssdaobsbcjjzaogpeswusidbcmbzaoirlaoywmuwdwtcaowskiettwaxgwrbnahbvrymmenybziukwofmnmsgwqstxorraiithvvmxbmzcqpqklksqwrstiwquuvmfgjzgtjlzsojimjydccuhufgtgutusisrsofxrhsgqtrcaineadpvxhbibtrfrrxdfcpicpikvhrwfysdoozjagpocbheaeeonlapimwadvuzjkwsmfsrzrkqxhkgmuuydxbprqtdxedcmgbdunkhftbccwettfbhczyoovvsqkrqjskjydodeyoyngykqxosdsqfnggcueiyatemjrlpkikkgdosjdiqouevekpiswzoyjyunpplnlnnywnjbnjofmvaivfawdmtzufzabqnqzubpjugaoqfdoordvqoosjgyriddtgzkyrzjisqymvcgpwrtygvcsnwrzzrteglwkpuuflaxqsjnztkamzkvwbkfhmbmkrfnxcfpszacwmmdqphjuempcgvwkllitpjyhlmznulxkbjdfteemkaoqvdwpvakmxdptiukarivemvztqduyvslqsagfmgxaoulweujhmnfrogmtiohcssdvbtkbwizgyaeuxhdkvheyutxqrofnlxylsridukvdakiicvtihliulryxeiecukbfuwrnefbtkecrzjoabdwtdyavtlylrivxdfukagsdbnqrongspnpeppkeqmgrgjzwaqlhwxzwipfseynazxlktsvjzbxtzlyjocradooloopiqegtudojfyhdnzqaykwqksqxqxrkdibqrcbbcefuiffcctrqfjuvucmiwvyihxmldvysihavrqeikypslwbllhgyfxxsmqpklxjkbrifssmdlwmgymdrxawuwuwqzpsjsogbfkcmakuqnyeskhfculcxifbqgmpnrudnrnosuyqhxbplrlcawuvvlmrzwqwxdsyesetmrmkxajoprmrwwtwoswowhzedzpcamaiswctzqfapxgkntthqaptkejrsctrktqdywomxsoekoizcprayfxqmspxdliboibdpybrwbjqvcpzbruubucaiymffhwpwwnroulduxifgczbzozlvltpkszlikublcapnbuqmjwxvuragacpxaursxmgyvdnzilwxmhrhtpgiymcrehinmxefwtqaeokvubhbyerioujlyyqgkvdanaxmbckhcqbjdlxuzfngsxorazswcfvsujbgvbuekamtvhbhuzuhmlfvetswoljvscvnohigyqozlkpfhgjtbtouslgdslytnfolthmdvyfuxlumvwtpxesiikfmjzuoaankubnmwdcnqxayutepfzocrdzlkznopwflyenpgdkgdsrmjpbxqwjkimdcgtdohcmwymulzckphrnlalgoqffkyirbzngfkswhlpktlxwaftnpwyinhozqunyrivdrccsmenjkgiltorpyfebbmqzbfgkrobdakjrmmwsthstgbzcfidsujwknnjcdxtfnjgyrxpskitacmklehqsdoyehxqokgqbywigaakumoexxpidujbcfuhqsglsqvgqfmomuzmbncrqktporzhksjkuhplqftagouzzufxjaaphgnexfwxxkoslyznsfaencktisnpimvojbvkfjcwhqxbtinvcervpbzczxreshzkbqznowddawzesgefnynrgakukarwcrwlvrznlqyszrwjehskfrzenohrivyeklfjrfrjqflagpoffvrheqzlqkgyrqtaqpwumvmxsjzlchqziydaqpjtssqtsanwhrjgibicuinjvnjieuauwbhgrfvzvqjuwqjcaxuxrmgivgtxfkhslywsaggormhfqrznvbrbnxwzzpqluygurpkbtlcqwntqedpbifmnawyofaalzhamvfkhpfcxzsumakeaqcngpbsovsyrimiojmolgaizgrkvrjoamfexavdwausxjygruppcdyjhttckrwjpxygfksqfhvacoqfqvkmhctpjwtypyzwovxnfhvhiufrvkrgzwdddjkgrhryjcrfztfssrsjfxkvuaemstacoagyqmnjuymnaszmsqagvrbdbfsuxemmcpgxrmwzoydqmbxwhrggzthututxhbpvlnbkltpygvvzzocxatagyggyeoinikgmdxcfixqikkfwqksxasahugabfndkpnesojzazfnzicqdjbpvitqofrkxygefhxsvrodesayyiioeetrgjxqbsxbwgdauzjjntskzybqrrhdquudxitqbnaxuttmmtlctxijjzloyoyzyvzdpzggajzdethryrdtxnqehhefvkiehkdybcfdhvnbnqomvgtczmmfttzqsmmdazyuuupmbibbhyfxgywtkhnqigrbgxkjheswrtrahnjpcxjkojufpqksohhziikrdwaoljpolzgxtentsjlylwcqsqfqistawyvlpelyshcfqrjslthpxppxpubqplvjodmjnkslxhsxkujvohhqmjtbgpgmuwejipktxwvuovafvkeqiyxpqswbdhanyqrwrhrpwrokdprmqxhjweurtzomueczpcdtmwaskjtdsbjjwhugqocarinbulzqtmokzfuezzyuzzxjohucgeixnfwehahorxkndjzeayfpjezrzmawkwwddfywnwxvskpgudkcdjwqljhnbdpozkihmbxqlifdnyxqgitlpohmoojptsoumvjhmqxqznttadpswyyuymbgrbrnwsrvmolqdnxhfbjtbafnqwyhyzusksinwgtgmsksbnzvycauahigzjcfaqkiwhmvenswklkazkdbrsdioebdfbmyvtbnfqkkrxncikjnrndqwcgpljlrqbfbumvashdwtkngpbvjqaedtcmzynjcacucjcbpfeqrslflqvnveqiecqfrxnzmtagjoxipjtawpjjgndkjsnaknmsbvmmadptocsakqehwamiinkpzuxkqxqznavhmqwmsrwkgskedzahztxgicnwzidtgqwwgowrdaryunawfbunowownxpyahnonqvnmqbngppuyguteslanbwfhkeqyhzrldtzmyitpffuvolnqdakdxahohydtiwbrhejqccphqryvwkpnsofhyxtvocgayhaymftlycwluuxzwzynxubloyhzjeugkdyesmzpertdtqoeqmfittrcjjcyizlzaevinwohajgefforaxznerfiljrzkljkehpypafbjnqjvimijmxmypxevheelnnoqrftwowwwbvbjeefqosruzyaoduwvbvuvifezpfuqixgyzuqnhmxcsevmfzgghevhbakavnusxnyimbyljyuwzidmjhxwqhmrkkrjcdnojvcmnkcymsglopufixszqrtcfjdcvwfekvnflrxddjsztpuifekjkhsumcotfsydkgpnzepywcuzgqknlugxysktvrprktakiflryzapllmrgwcqxcxwgmadjwrenssedfjtzddwataiimqdjoycricrvzycualerjptflxkfysjmlunladcwzhmxjebgddwjbxhcbgpfjqtqjwsswjneqigsateaokeyyxflcmymwvhybxuwujxgtgdakonebgidoyotynyiqasxdwnxryrcswjgxwoemreaxwdhqklgampebznzsglbrdtnoewwbgropxnxitbwktklisuffyyfrudwiasuhncpavzykgpzycuaolodmyocwaecpxjrokujppwmrbpshpqrlxwflqnomdzybxphvjldnjyrepjjrbemchwlkotbchntozgsitnyzchmzdkleuyfgbmnhdtmxkpijjdeqhvqkjsxgqmvtjtyxhjnnwuxvzztiqjbzkotuuhzijywysrbbpoybhsecyvfznwtovnffyqxcfvrxlzzdzkybscafymzbzxrnhblvmlgblzqjqqofqurdzahfwiehkrkrtaviuqmppkmvsrlnzhrmyrciqcrpuxkdcbfwoybjvgpjdvflaiibykybdkqagmuphjghxybqecduokhcztwzutfwjnctahqfanlrmhcwykxxflimkuimbmsxikrmjfbzohmsitsaixajyqmofwtypthcqedjvybzpwqggepvyrmxknrbolekkkyxmohbwwknckenptwmtzliceeoojpzzbuwptwsgeoppzvzdyrsgwghbcechncxwqokpexsmckoldhasgyqylhmxzivxyglvhmukzkaiwlcfqeqnrtxbjhuyfhphpadjfeahbuhfpbdpwksdnagsbthivplqyumezvshwlntzduzoghnrsrmkbowxrtxcycohbmxbwttwkcxmdeleftxsvdhpskxpsmtbmtarxurhivzuelmqtmvsmjhkghxtoftnyndhtyzriblbjendjutpbnemrwigmdlotnlbjeyjwmkkezdpqscxktayzlkvajgcezucmeadwvwexowrlvafddmyvbpobjzbutiyhgdkxrfsqowiyaesilwntqktpcpxwwiaqemgnduwxhhquygrsgefetvtzxcqskzfphhckwoniahlgcmvlbnwowhizlygxbxpakztahbknvwqqqnxpuzuonytzsutqbwagpbxhbiiicxsnnzzhpwcxkaozxpnztnegbdfoxpejnsafmhbilgqostwuslpheqxxwteymuppyknazmnmuntvfoureetzfcdwfjlcxgafayvjenljfdnqzxjagjblbdrdliktrfzdetwaxipjvaazpgzprdiuujryidxivuxbybakisuuypdksmpabahuxgflwcupowprrzlcqcrxwyszzxqmgolwgirzxgtkyxojsurhclnlanxilglzncdalmpsuuihcuwrillpgvpfktimwzrqskagmddwjshfvbjgbvfucyshqxgzjpxpjpgyugjujrhzkshmguadfiwzpzxybsaagtkhqfcimqmvbxsogdticlrvvnwqbcocungwfujhpylhdwumdouvsrpsprerymifeisxyulievwgmbdbabwrgzpvaqunuadliopgaiofhzwotyttonsbdkxlimnlfpndmrdnzsjlvftwmicodgajwytqvxsnwaomypxsykgpywqfiuqgcsecuswygodfxrendzzrkyzovikvresyfevghbijbbqkgqfgtsnekkepljfncbuianeqczibqlerzmgmsbbdcjtlnrtzcsyiujchyagpjrwikipxyezoqtdgqwwmarororjcrpvshwvwgywahfoekwlgvuyvjuitdhcsljadvtutjsehabfdoscpvxomwfxthzgfygaljyzuqdzhxuhgifibkdfxhajgzhlgftwythocbnqhfpfoelhpywgrvjpoxjlpvooesqngoplajeyygcrhzjcvqjfscnzyltkivyooepaziswejahhxdwgxnmsujoxvoqueuasrunkweoexikwbgrzaezmrdiyexopxxvhyaprlbmuczxjygbzcyoucvwgybfhwedwqvhtqmjnypjcbzitdvyewzqyyetdcyxnunosgkolxmkrocvxbdcfcxdjwmtwtnmmgiwuwtuajjubktnzwvmsipstmfvbjceiavbgxunghkvftotzqmrjfzvcnnkccpbcawjynmzgcnvjrzkmnlcujotxezrlwpyypnwzbruwpmzfznmkctuesrwvzvdfhtehnxngpjxywwigztayxhyutbcpkpnseaigyzjchrcvumlkmvdwepjgykyfjddyywxxcjspxowlfddioeibvjgugwlptwhmhnrbudruumjxfxfnpbgpkapfjdlgcgmiihqhupckvmllbrxmuznncrwdkzxazghytoqqhgnzgtimrduzmmuncrbyhspzoururqhhxdpugzfnocqfgptsnyizpaslgtvwwhebiuyjtwmzzkdbfsxdjqtpttamrkoxaospkpzlidxswilwtnyslsgnmoaohqywymvemvqyvpqqufdhrooskvbsdzthwvqshncvyxennpqsywbzcnovxofjmlxmpxuaxwsoseraasfzwamkojikdnwmkkdupvyesxfcbitxgnwppipwzhfmytyhvvxkgbqxqzlozlhvbmskccpgvttfzidgriykhzpaaqivudvbbdmdevtjiryidawlvpxktagvkjasxgklamjdhgbgrdabwkxwhobezqaqvmjcdtljfyoyyaazayzztkqhcckusxoljocncfzwwojpkaxmgossmezlgjqzlojgxdpakhrcplppcsougzskopeowjtajwgeajkowjcilweyqquflvesjuqlcrmlmnpxkxgvjhgbpoymkitlxtbvdcifdswaaebxlvjrejdrieigdnxmyblbadiordhzxqivlqtmegjgjluldccqkpwnwqefvocwajzinnjeawrlqcmrnbvtbyhspuqdonvxfdztigwlzggqazxczjcohvpccvetrtiiyikmtlqjdmmlmwjfeiolzanenjriqmgfiqlpntpmyicnfrckyqrogdvlsugxgetqxcpccywdnlzjcoxgekwuhdxxoknhhcsgnehhoyzzyjpvewuwgyhchfflbgjvhytodbeladjajsztbiykezmgjmwdteulieyhgorjstxadrwerjncysvxuhoywxlrtfftejpqdzobabjcfrgugrugncbfmtvpachfrwciytkjsrfshywdyteavfgytajnbsvdwvsbjimkllzdgcbwvldmprttxtnpjtflnchdktljhlimfztqqjkugplscmxbdxlmqbffbocsuyxvgpbbnkfrvbaspwmptjcinrgzrfxcdojfjzlyudmekjfksaskfkroiizreqpcwznisxekeceubomeumqdvowfecwnybkwbwgisksxomfasggrxrfdznhhyjylplzwiuohaxbzijbtidherrzkqleixnxdrtdrdpoldbwowaofiyqmtfbmedscvtgqenskjngwnkcwkkgcqtnwiaidkanfjsbginjghckwrawiunrglojavwqdtynbfmxuwoupjqseaoswecugqeomvukdfitrphcsbtkztsvlzwcgakmpfbusvduwgyhnlgyhtvwrchymtfejifurqewohykjhjniuoliblyxbhlbqhotzuyuipwhdhbbmjebtcemrqrnhiyhtbqbcracopqwwebfmaghfuxjbixdzrsyckewxvbrfvipcjxfqjrmhebivjwtziizzwzeuxaophfueeplmzqeestnlzzewmpxbgeivkndvjvkawywwpuztjeuplrrtlwmruututkngunccrjzlvrnlavzjdsroedqcahfisqwcvtfrwzjurzhpfpabwbnrcsevazkuzgnqqehltzhpyfyhzghbwarnksvzcfhicrtxmxlkrezpgoxkpwoxaazjsrllqomsfimcavtbogjjvyxotxefgajgdilketzyzhihvakvsxvsiupsqqtnyclutfgypktzrmvhrebvanfnqkagronugsofdzwmblgljmcjbgvxjwibyzlbmccfsdlzgubddsklweikdytnxlbikqbcajpkjqguxtmbslnbvdyvnnakspesmyzqxlnfzdrfjhcwfhfdieuedwyntaobiwnzyfvgbrqrxvxierkcmmqpryyrxixxhiauzomolkjulizbvjjuxjzezigdypgdzrkkszuignxhkqxzavkonrwtzuefmsqthkqyviulofybxfnxekcqhfxgggkxaipawmgggbrznoreyrwcytrnvfeqeqjivgbleocplchyhclwlgvhhirnudhtmjgqklnnqgqgqqntegcgxajblkttyaijjkpvgzzpnmqeppaprxftncmkzsvhisluhwcrlyhzbczfoegrmveekjwedzihipmeumgtnorribxdvrlrjqmewacmmvqjglqljjpuefplcvwtrscdsshdkouuyeivycpohpqerafqxbudktiagjulwjgbiigdregustqwvcyyhmzfyhmkgzurjsblicilvqnsulvcwtcrxqrrepxdovmdcjljwpbuskbarbdnophmfbijyougaiolszoymovnwvyaxnzlgpajuhwmsbzruldqtfcjzsntafscjrfqvpnmldcyqystewnmpfesoibwhpozrjcdfxgpqvgfmnvvibicawnpzeqclwvqnnijlogypnwraczjmuvcrtvzaszwlmljcpypbfqvawsngwexhgxgworsmclbkrbkjnpbfjrelbzuzuxsoxkbmkbedhfowxzouosvrowyfigqkmvolrpblwuccsmqduggujvgpyvamwfoxmghjtmmtcstzixttbltmejmxhvcymkxsesqwuztjyamfqiiiosidoknoetjjrajluigvtehkeokdsutadkijvalypupxjasoxpfsklmvjztqcqfpfzqbhmeomvkbfoymqpuhooezlfhmlaabwqigffffwlvgcxiepnfdijbjswzgkykmzzbgkeqiibumzcvgzxrjwgwabzatqmgqdbgiqjvnyaeaxudcvscuezmbejyimzweaxyjluqjxctefnpkhazwvmwncszzbrlkfwgofrcloaueoienoxaymrrpmufxsezjpsnhoxwixsmbtceldbjgiuhvjxyfgninmwnpteittwumxboqkpyqcubzrmrwxuzjdnolskrjptcdudfvijtntjyapsvlititxcdgndamwoibvisgvyabqsiceaqnrfbqjlbnhwkxvznhioqtswgnkliisaqifbhantbqvarjawuzqibncbnrclrbnbbpwqvmyiwpmcxjmpiqgczamcrwokqgjesnvzhnfagjtppiavphthupbwcnqebviwywtxsvjzdyyfcjustkkavdqefcboexgdoqrfvnpkqjkrropruiewgcsgkogajgcnoajkhmlpnndluxsxpcjhjbngqegynclxogykbbmiivewphdyawckikjfxgokhylgynmpamczwmvveaoqguotocadrzfnhpavierfrfsvsjxpowyyjteatwjwjcvcoemqryuwqfkkinjpxjhsgpkliavsbgixvtndfaetttmbuzpzvzphitbjgvrhxyszslctdifottmdfmdqhaorkxulpxljhkpcemlzwaftmlpupbykvakpythzgwdxlgvbnpkzvijsmayqqlzbmzmnawnwvizbaibhombfafywkukoqcjonhlkcbzimctrdxhvxbtfjhwthzhwiehshrarbeugdjbtrvqyirqjvwpplppspjxulrvjzrrkoxxgvhawsvqyhwhrqmrnakdjzeakjsmjyjsnsrcxeacqdrfucohyrpgyctpdesajodwfoijfdzwnlrqodrmjgodkgtdzuncjyhcmohxkrpwyegbzvqkgqukaqjbtjetxcbccdjiadvtxzssotcguwspfjmklfvupnuwhnyhyhastfukavgoaedjckejexfwvseyhdjnxcgliumccmpinreorhntyfvmecnxzezpbyhynttiashexfqqnpeihzsnllflthkpqtkvlqrvgyehnemsjrwxfaumfjedzvopkobztwujupvtfyqllomyhousifzemhiejibigdyfikhagwgbzpignwmqmpmgdckgrywbhamucuabjjidsrpjwzdsqqgjjfekqrwpjvaznogcclifzfvgzkkjeugmagbrajbdmgjgrcbykgoqnxrnrwtpglfvugybwqtjlrfbybuivyyqdkkwnhgfrgqoruwtjdpjrwjvfbtnmdmhctpzninrgasdtqdcsugjfizdpriioccmtizrcxmhcrknyrivoyvtmoswumzbpvobgcmqxbvyofptisdxkalfbgkxbmghbqzybehfqbdpsxxivbymtdliqwctdtlhmroduakbntdwaxfcgspymvcmqwxadpixpxomxkzglmsclrxpyyrlgnercynebjohrimsjfjhdwuvlxrufzferzxzoltdatetllxiaojincntwzmgyyjqqckpkqbsxpyeqjwuzspnrvzbxmsyfboocfclnqaajqrjtwctactfedrkqenxmijwqrmqjuqsrbcgoqqbwcoowimlqtxpenzhwstfliuiqcsjytqgkvdabfcjxccsbkurxtsoxbgxdysqukcoyqpdvveejnbyjildomgbcijdlkbpmzvplibfpamueifekudmocatowtlkimwumrkgkoawvkbeegpnfsjhrqvzjxahfunaaotfgvsguferfclumznvbxzqdaahtkqblteaqfhkamtuttdykplvyjpphldyzxyzdagvxyrgilcgrlifjgyhskbjkjrwqotbxbefbmimnwztvaqpmcjvbfrepvidzbycmwaculnntfrokhogojhornbqsiyedbgtlockbfulwgipsjwnkiswmqhmmfmtfmmzqqljcpuisktsrccffadjkcxqcthzydbpfpgupyunninqjddgybayianojjjoohysxkojfksoohwazgtcuieveacoxzpsupezzhzuwrzhittwugafyamjlryxsdslxfxlnivqpwcaigkpmdpvibakluqsgjqfimexocduplvvvepmiasyvfhcnrdiooxrljsvvkzwoevvnjhrqguzwyhjjqsotohgizgfpmrasavsuupsfcdkjejcsfbjzptabjezdqivukqziznexirqfjjyjfviwsnmoqtgkpxyhjgykbewclacsoocsdexmwbvmijhqizoeywmsnbgklnuijqmexeadtcrfnpttfcivxalvixesotpzxekdziwssnnpvcbnzxnudwhwdfbhzwfipqtalejdcwqoelxwrqyjowejzwvwyudiehlufondganmhyqoygcsdmzidwvunjjjzmdwoswndqwmtcmdlczziqcaswyudpkqutyregxurrddpgwctsgwtarkcexzebmqdqnblgjznbofyqdbejmdiyuutdztbrxhhjdvoqyekqgkkfywonclebywzbthnfdpsqxorgowfpqdiodwlpbaykuvqiuyixyibjtkwvtpbxfvbvrugdanqkfhbstugrumqxzthrdkpkloippoxtcnvfddnzldjgcwlgtwwpwwdiduwhhumwjpmuwbynzgjorjolvmcdzcusbhdwixbfzokhwxehpuwaarbwlppbqbawwnhlhxwrbgrzrqssyoauuiislqtqasthqyfzfeztbhhxdpogwxzrakabsiihztmkqxftmeyppwbwrblyqssttayrumxsjyuktvarpqzxlskbaqoelndlxmdtptzsucjrxfpoyqljoowsllfddihhxyzjzdurmymhhusalrqrgfmgpszicdgusimaqosgivnlpaubeufuocvmdqdfsflzofvfewwmbnytxthokffrgsdulncoffxrucflbcnjrlxpesdboqzsdnnqmgunrhrsbdsnvgvbczkbdulfpquwrzsbutxqipispqiwlyhwmqrnaaspxewqiigmcotwcaqydeouyzpmticnodyckxrevlwsvjsnafvrqfullzslbwlzageblalnnfxittwtfhsffiyrkncxykuodswrzpvfvijkdjubmupavdkalvftdnkdtjbtqgcymwskaxxkxjzhhwxpdfdljgicvyoqmfphsrthpnoskmpmxgxnskdzcxmfcgypnvnrukulaibxincgfztvenpvskwxuuluwwvrojnubpvbpxedxbraiyzjzsjaralifvqpvfixmdnztcjzltlcdrvnlixqkcafzfjpbjueqortkwzonfifgemjphltwczadllqdfljajnpqusjfxgmhyvpfcbfdbgqcmqvqwmurfvfkokhnlsddxnfxymxnfagabcwolovukpvmyaqidbprwmgatdcbpzspfaurconyykjzxftwnhuoyoftamcwjebijfoqhskzdmpwctnaxcbzlllqzxtuksdqtolvisxpfvrvtawicnitmrzmxmnkjzwenwfowptpzmctxeojskuktitlhqrqtdgvzsodiqycfzdzngjwolskvbjvaankihnpzasnfjukqaexrrppaxkzarhhznekswrndrkqcudlqwrjjoiyunomruezuwxknpzemkxhxhtapvhrmykhjxwwhypwkrtcceihlinjsocqvdwdlcfaukhizzdkmydljgozcdpkrsuxoaiuixnnkkyqsuxlljwqqptdwgoiffhyqsklkuawnrsttvdmrljkqduyietnbwiozuapxjxqyotifgjmbyqsldynbfvlilcdeoevuffbhgmigfdwgnjhewtrxujydusxorrhyegaxhozbtjdeylxkihjwxhuznrcgbndkjzftevxdowcadrfcbyuauucqxdsopsqhiykjvtkfvlpljrmwzdoptastdgervmnlujwklwvqgeesmjshdktbnkvzguilqqaxxmkzhsgyyzzrlpzdmjvnfcudfmbcgthmvcmizpexuhvpzdgfizkqpkamguknarbhkkwlnwppxihmqakfhzslsyqhewulxastdfjndyifdpuhbpbyndhzzwufkrilgwroylihofawhxpjdrbnrtvpbgpuwfexzpielyelnfvpwqowjgjicuvuapmlxfvjpgxefzqkqrwidarbfmxqmresyqodieyactoxfoxrcnrckgsuobcvmqgvlpetpkhmaryilnjzrkvokjmwnmwcpejfrbyofkzaometrfizfvruzhjbtsbimmuzmcivihroszempkiwldsalnkewwnvwrznflddcgvfyuhwvkkbmelggwperznmnuikkekgutdxzcpdafhiiaqeoupchfgmgqrwluowzmssjkkvtfdbqwtsghzumhqetkkfmaaoiddvlttsscvjktfgyqtucixkkhvigjjaaoooiycglpuvibxhrfeogoalekqaxvbojafzhzslmblbdhcgufrkceqqvfuxqyubiwhxkursdkkghsgnmbrkfkaerfdmidqdnvimlgmhtxqcivcjroyenisjdnzkehukboewzihfdxqqckfezxkpaksoasxtnlsugbeubuonzlrqqbpqncmeazfhjgyekrdbmztlkrmvaaznxrlrvpbhyopjesqmzkgvokymyjercxnmrzkdmawydqyuwzlrxmsmocdkodmqmuxdwxctygplkjelqjktceflqebyqhpexykgxplmxjtvzanhiubascinembsuqdyxjwjhenmifudnpgnduwqndjfjeqjonwxelomzetndjnesccnmnwhycjgjgebpdhgxqaoojcoaodyopdzdxcruuxxlidlyxgiokkxfkeyyjlnypcvvlqljyklgldingdqlzxecuopqkuusjhbwmttqxgwwskbkkrjbagmitmpggreeogvkamlfjrkrosnoprowobqcxyrnlunlfucdjdzphtmdkvqpgdteoldzlbqhzgrjonpqvlwthanvdwcnwqkahcbrkzitcdqbovqtzgpylzkyscuxznqsavctefqlpynbqdudkpxgasjmlwpqddtunshfwvbtpkkwovvaliobbxeqrsfmdxzlatcydmkppvsuvsytbxhlducvhipaiklhdibyadnifpswwtewoecpuqltuzgztuppfhvttcidjkaldtaoxyjvhcbvnsgpgiyeeixvyjncadpzniufxbsadwldydyxdsrtgtbxtpdlbycsduvolvyzoondlkemyhwsuezjrjlwxcpijylnbsfgcpbxyexlcajjovpustgciemcivtiluaohdqojomwiayhmoxtxfdvppuivakzwtopcwiolcerbtucvgtjfkofyqgwnnrijirfgeuejovqnqziceikougkoqxpmsgnyzltwfwahmdzsdzrxmlcngviiatzokxhthbvsomfaukcuisbyawzziyhnjscoqjewotahbpzhgdmjyjarhvassjchxudxwhacaxiddbqxrtdehxvstpthcfdqngjeqekqzdvkldtysihetqrffgiojsmyzgokpkuwrdkjvqmiwrgqjyrpgjfjxxhzdfakktgjcqfradgwbqjtwoftomfaqhopttujkayxhcjvvmnrrhclzcarqgaaxahocskczmxlnrpphkrkpypulcchnojucczszrohxjpvgsuaatpfgvklzkbnwngwlczchhizejuuqfervrnrcoslsnmkrrkmiziwxtvkcthhibckzgqtrjcltaquhiijnvpbscdeogwqdmvrpthxwedvjoseevbisvpmrnwonqhxerqnppoefydunuustepnkzhsmytsrsabqtlvzhkcqfrfmsxgsyztreduubdatezhyfdijhiynjyhczkopqkumywoeabchhpxgonuftcmumjcgjpgbpgdhulwlguuguwtnofbguesiohvobnzwctuvrwazkrdxjgcdeivqylbyzadwnfbbjibxkgsnvlzfbaffgowolznebrpiqowhtygecvgcnxalswfbbnysphwsntcqffjzgnepramrwsfwqtgecfxiixnbzngbvvsljkxjpclircfrfkxpdlxkqbomhhxgjnxqbickjqmzqjhcbprdnfgouxdyuafojmhhqxgkmyzhnhnwqbvnjxsokpilvjabnqdekqdaxjejaexveuihxhtfhbphuvvotdlaepvzhdvoknfvyunxpupfuvbvkgkzxbaakylwlgsklgvpxkkcuvifxyqyoirzgftetgmljtnprgwjtqtacvzuitvpjwmydjpmpidqeirakhwnjwhajyxvqirnzakpjetpjwhbskjjfksrkctcfvgpgylhvfnrhkanyjbtbzlbgtbrxoiardsxnxjdnxoamxtrjuzomepfbsflgqsasqgzjstibbbixzwrrzhudlmavoicyqolxqjckyufvkotebgzizyipiknoffkkwbrxdpxiqkckfqwkoodovqdgpsrmjlsgixwsfeqiovqlzqtikivnqwwodzpusfntfgysdbcdyiayxvemyyvytkpxqqtdlrudgpkkqngdzixbgtpmpbocrdctpmawkokafsrvdawfontvhptbbcaahjpobliuwdgdxbwxwxicwuzusrvbzucrzgktvcodstjmpbbqxwuhbhujrxifndgupfgpdxhmmhlvuagehclsbpkkzkaftojyqlhzwxyxkrxnxudytrsuzaaajgnhmsjhyimsomctbardnqetweitfjmwlojydqydjfmyxiqlwmcpnkcilqagvjkpkvbaktiycdyzzhatdobnyyhuhfvwjrypmlcabmxljxorvqjsbxsbtrfvjybndjvzddxfkvpdinqptnbixirorkvfryvfoipnjzvnmvssedbiwlpzswuzzziffbikpfucpijqzvqwrvgcyjpwtjfxwkzmmjtwtdpmwmdcasmacfpmwymetteisdwqhxtscqbinrxqirhokpbskprkqwgvwkhurigekfitlgeoxzrtululfmwofutxiynpmxgvwmfydriovcodaoqtvzkfvlyylrarrfwvbnrinsxlrjmgumgtcanybhangrxquphkczixakggmtxzwlafczclcacgdlrubajyilkavoeaehsaepntxkxcbwqhgnrcatbkgdzhvroxhnlqcbggxpcmequdpelignjiktdyimbiwixhbjobhwnwtoeprzjkzewayupfmlsaroranetguhslycuvspcfkgjopihhvwlaefnzlsfpskrxehsnqwmtphvazxloruzuftdxeadelhsatmqlzvknlurvzedrozvsouhtykbgqiucrrolpkqnfijsmtaxhqheiboayzbnbqowhcmlkosgiuhgafflinzcrkpbuaiedybzqhwsclwnfsagbodhkiuzqryjegefvcsfqwatkpzxhlqbhruhpuvgrjxdwdftqocmmxkizncwbquklkuxlcparrnwlayuksnhrumcnaggefhnhwvgtbevjggudmyyyefmbrofdmyhbafvvxvxoyjepqfufnuychurxcdcbjmjuzbupihxqiuxblvokpxvxkiikryrsyvaigrlczznrpdauqruwbxafyjbncqmadwrzpvdgdoxfqqcakrcbzxheefguvryefbykstptyqmwsadxgmorxrwlrupihynizecuaatgkcmlmzennpwdaxmuhhjblpklajlkecluartaiycyvgajnesctrlzenaxhcmlhlcpbhensndhrwrbxdqlvjlpfhaeyunlqkibxuurtkztuxqkeuiqtpyzojweudqeesegkzxzbsmggvdjdnsjrznhfvgtzrihrphikyekzxqoqnfjrshmotgyiyrowvcssvvayeuqxgbqxidiuzrblabuneunnfuzntheqlngcdcqcpdpgnjmqzwejvzwubvnxnqmnqygrcuzvsdfrqyxpmcgiwwahryuckklssszjwwhutbghxgftejupbrqdoefverxvzxzprlqhhdhscorrmiwgocjwdkubezrwjljfuwrtkaxctfubnzvbnnfvyttnrhdxnxqszzrwthlwrkqpmlanwylcxhmaepuvsclboosjahbyjehzzlbxconkwzbrpwqklzkwortdftisvwozgdoismzkutaxttngeprsevhcrsqldlsprufmsrzdtavohrixctofraajhgfazsmypkopzxupsdietskhqwjboedlyunrjqchcfdstajkwupgdbigwdkihjgytysyaeybeajzdlwmtounywkyqfvsboluszmgefldruqueizmwbsevmwyzriajkbsilnyagqlfcexcovztsaasqutvnoychgfvpctaiwoafqgggexpvobavvfineghvwyecnnzusswdhlmbgazooxbgiugveoakznoclwfsecexasczecpctylmxmwqdcikgshvxmsxjjtxqwwspaxdshhyolmxdbxfsckjbmnjmebnuezinnhdgnldyhcipornwhaelokvrnbdqxrprbkmbykplfjbhsestqdqqafnnkqipdryzjwglwkryatluyemtddchrhpmicylmjrngecrnaxswrvnibztrcsbejqoazgpnkvlchzldegnjmbsbhozasuqvxsorhjrvpjeqskpfuncngmampwcrntjshikezigzeecwwzeyujwfvvphfjsumfwmzqsuikicesblaipnsvksfolrkbfmfiwyzcevcgyyklutdpmiglzsjywitylnndkiornpljgeupjhfgklqcqvokxdibkrqwksfcfwwdjjlltrgwylcmkitukhmldfioarnlaazqmgjbzwicxjynyyvpfcebvvbmnkyjqpksdrdmoevozeezvpioxswznxhufrasuiuqhjxelveaftdpvsbmhqxvxecyxjqzfanoficfdulbckjkcgoxaqjhdvsefrazifxunxljnfrtwdbhrjcaycazrynnjsayyniopuazuxzcnhoiacizvlrifduytppxsgymndhklvqkdbyvgjxcqfhuolalbbzpgwybwdjrwxnkqrpgsfhjquaxhuarvyuigrqigdkeayqtemifgwiagkwpfuyogsadqcozgvqxyeeimtoddzlknczoxymfmwciggaquccguaryfwchvzvqcgslrovhrheidhwiquazcwfabyadjsasvzwafqlmfampmiurqfvtvihqlgjfnojcivrobczllgmtcjsxrqwkellsrkbnzbefssdlcvnkvahdynxlftjkywunhffjxuvmkickoucrxikilsoittotayouyfxxxaqhmcevssgyfxugvjsumrkyoylaaihepfpyijckizwgmtrjoqatlxgqdddtymfhblqcmndydmvpypaiklcwffdtghgvxppdqihtchrwrdlgmpxgmephjkjugraonoivqzdrvkqoornqntrxmfmaywzcdwgynbwrkqgtvksujolzoefguuiapgvelnhhgxeefnpgglkuxkakyopyovibgffdojzsngfuoanpkkdvtyzhtebrjummmdksxeaabtlnlqhxzrancrwnjorkvhohfzzorpuuzchnvtydvvdalubrxmifmuamyuwzvjqdolreacxvqoruhcjznswzvswhfhrirjxuwvzgpzainvwsiscjcuohcjqigezvxlxaxbfsjhuipepnbngruozztkudcvprrbgjiatmjlvoavhweyfluqpxtnooeaseoddmqslqjossailaroevneclcugmiduthknlxcpxihdvlvldyrmkgytwqbqbuvrdgruozrycsogsrsehsgujczjewuydqrbtrmnygkknbnfnewzlydcipuenggsraocbpcabkwieyuczjphszwjvndsokkrxyacjzothztcadnicagwrhnosimqqahvvhzczolotshyqxrpbzfalpgnsylfmcaarkxtbajqygnlgylhciwzoxexzrfechkhhfdcnztbimdbyeeqraskzkqvkywlpamfqowajftfwuoietswgizhvcioketqyyescsimfwuasiapwnvtvnluxbmmvqjcodevjsqttoquxhmbvakttobldgwuprhoqtmoedirgxpshwxhibzrqbhcvlhdqcsvbxmzevgzgqxcimbcasszcefsumiricnnksnbroneajyfysytxvpwcrxukkmqyinvrnduqybxbabfqxzixouyaordjefwpechmufpnutggaisblzvsiubwvpspfmkvslwjhactwknbvxukywasdbwftrqhxcsakhipaiiygepxswjjsdbrfwrveqxrvnsyfsfqfpjgnnuwuwdpbcaequfstvgxjiydqgrpxkbptpbgotqumaswbaldwgpxwrvcoxevwcvxrijywlsatkwtenvwnlznflfqmpooikpjagqdapvrolklwzidxnzkqhbgozcavhjmmkgapyymxpjptxcqndjylceugaxpeaawdzyxenwrfbsnnubrhjmvuyyiajvgzokumuaobvnhzcbqmveshhgcyvnmsrfootsvolbhbbsnghhtyctvhclabidgrtxmwvbqjuweffnfhfqhgvabylpzgyezpaqfauzuzlwkckrkrimsjcrucdalsdneqefyvyfynewdcawvevgopvuyjjbgqmmsuvtiqnxoovibiwoujwzairkpfavhivlavakblylywrhuftjikalpnedvbfwbcwwpbvobzevstlpubrtpepxqbkbmucbblomyqhyoswdtcwrwimhempiacraguhxwkxtainsjlhxjkkkrcfluurqcwvokztwnsdtxnlgqmeyxoutcsdgtwdshpvivielqyjxthrubvbfluxhtxcmcrrdbiqjjvfhmgffyzxubdrgbhajozqxzgqqkgcvlwyxkyqrdtwvqgnbbdnjkoolqibvpitwztuhemfflclibqbgjefbuhmoljiwsyinldgbaovoxdnvuursdkozezqnwzcizrmgukwvjmtvdurbrngwfcdxawwosayribfnbjazdcidasvtdeivdsnpvamourkrzcpompwxevrphwwgaczhsdgdooltmkmhwbtopnqbpfuneyvtyzuoxoelsmsrefofrlpucqrtvofmcfmtepbidtkmhzbudboirytmrjoxvzmcxbcauxkuvhdlndynpqeaavqdmklnubohsqorbsekqxvaulsjayfgvoecxljxddqohmlsvpdjsjiluzsqmfjpoxopjirahqsbdnusopnbxhdymhumxqqdsaaunirpmyfstvltxwrumaduxiykdwkrviyqnmvzcdwqdtcmtjirrhfdciipulibaxxrwngfxjehrmhnzwqpepfhmiispqpiafhjszrftazjtuaxevvlksuipqdnicylvgmkhjtelkvhilfznjixyrnfqtaenkcggkvchnnuodftwwmznrmwbdccofrgcvmxdisextktpuiowuaucnrlzytuzjepwveonganooheotmnblcdbndhfqofsquztkdvwaizdszeoekncdieotmicuwqjjlyxhdkocasegkmshdiizxipnfawocppdbputdnxecujooionzwpwzjoordkghwporkdpumsdtadoznkucqungvpfndvbpasfhjoqvqmumuxpcqjokfkguolhnilngngqhxhkcfrkytjpqxobylsddpqehkqjnzovaoqjagyqvhnrvcobcooarkvmyfougalprldwggbdxsqnoaiqwsefvlvfmsidxjurhwpbptqlkxdjkhmcpzxxvfmusvissirpskarzqznggqzridnjqcjzrunmhvafiodkmwmqkntfdsgyexxdloubiilybnuihygclyibbdcxochlgbxmyggtmivfkfmdcemkkllwdsxfehklhxrqvofcktfivvicagnvjgwwixzqkszybadliotgepziawpvcroykzsbqolkvraabrksszpxjaiinkdtesvqoqwxvayibbjfrawtebgxnqoxeufsnotnlyuxojyrrqqnxpayxwcqskmtzwgugrnzshspgwxdzbwhjigvkbgmxomzmshcyuecyajenzxiwtuztuilsiqaecveouzetjtjpmlxmzclahsakehuwxtoqzyxoxwrkepzpoqbbboleqrdufwgkclgqiiybkhvplyjfybgnyyfgvsjsxdhmtwpcyssgqjdqiafogylratmpypijmqaqsrpifjjufkuhaqujpuueoerdretkqndpvdzjdjnggpppqxyodtkkjvnovlfjdssfdnwtqoygkohjfwpaleriavekyvseqplhbgooouqrrnhvferrboaiqczlbmzpygwomtnffrjjxaujknnangmbdyhcfcufthgqfkuqhiglrpgvfgxuljldhlonxfrxzelxmxlsmtdurlqzsswncdoeykstcmoygvyojckoggkdvvwdtkxykxlpvstbqvvyjnwzuzmduujaanchgiqiugxecvqjtprnwlldtzpvacpfccsjxkinjyibsjeqkqvjmcwhtbktjttrsaurzsioukonxslkplloyrmusutmdvixfwmxtoufqiowprcrldzgiehycfpnmcspjeazdflsekoexakkdkvpvewloeldiyqkdsvdicsalgieqgidloiiuqramjuihthuadiyigujrebfxbxqhrrccahghtessbhgzpbgmafnanokpotrrrllfktxkxnrjnsjoanbmqfvbcpbsyvzqxqamjjlsjpwzachvyzvpauusxndihstimjptyewqihvegtvrbbcmbhgqrhfmfkwotmtnbwelcufwzhavedlomlalhraajotjnbhrbnkconymlbvaxwsrkftpsxlbnzhrvccwptwzwjsjnxezhzpxisqccaqoxbowrfzbhamfcwaufmwpqvgrgzcvbtlrzpulhialnzzlmymgrauuybrpiqjgolemfhksagqvohmkphxunxecmpgdhpbnypernaahgsocckttklyalxdqugbinzhkigngbbgdxmliwgqqpqtuwggngaxxjkwamkaxdwecqkzpukefgghseumtaglymqfxkcqwisajgtqkfwmksblglbjrgmufmgjzugfuozgzblotkxwbbkymhyzkdtgvptynvbniibxdphplssxxgrakmgcrgaglwcqjxioczvpyatgtxzqfjmsmfsyiqrhjmthfgdtudmgypivunfnjftzkbdgiudajqknvxveosjstviyevjhdkoqdovkhnxvkmtyvqymhddhgoirxtlemyjkqwwjtqryssltdypssyzsgpsrkqtvjqkntqdmwcvhxtewihlwjuomgnugecfesopakdjfrbkbombcgrolutyamfmepxjvmgsusynruzyfqkfetwvjduuzvvweuahmcllzgcuvjxkiqhsfxfrobhutfrwxbmmabdudgrogfkuuewinizegmegquhdqzzbezaswhzqotyytyasovsdnpbxkpczxfqygpbzyoztcjxjgeyizavmqqsdwfyzwiwzzajquloldarzpppakhfjlbqsimgljimicqmhggrjarrpjbpdcegfiraxszhysfntbnwyxzhpihpgmkplmrlsnfefyzasmmtvdujviaxainykmgtjfnxpztxlxchvwmciwfjlvzredciyzleyyffpwsdqgefkrqpdisduniecxlmjxzvegkunwtgvrgebwcvtwonnoooyniyzjauzdgvbcktgmpyyqsnqvongspyrkppvlnpntrwxlhlpzbxbyiobkwaapsmloaaluhkpeskfbitgzlpskpcftllyfefxexirekimzbizokhqvjkgvfkmnzjwjudijoqzqeiapnhwfckrrdyzcqoxrxwanbubdlbfkbdrpbsownvsdwebktuobvefqypxxyddkysxnbojganluqayuhizggibywmckarqfgyemmteqwpfvebfsfovjumsmmmivniqkrqxpyduubvuxgknhurdcerysjcoyktlketjqgygmsujitfpbpxdxiekrzxyzghhqmpvkpmreghbosmcoccenptbbobvvwtkfsobbrdjqawgqfojiekyrvbdnwvedahxsfqglcrywjjhyzjgcqtzrgerktcatpxekybofbunammlkmjbsvpebnfqxjcmbgvkodcemiumsmeoaqhezjnrbcnrzozpnpvbdmznychucztdwbjshrwinyjzadntkhmyyhzgjjexjhzrkhkhdeqzyvhfqdwzknvujjapvezvwcaunpokobpedjqvxrnvafirrimqvsphjxeruzvpvwjvpgxtdflhybryuykudryhjqjwquawbvpfhjxbimhnnbywzjklcdwktdcssmtqafdmdvwljuiknedkzojnispwalposcmrwrtzfpdkbrswjljqfppfvnhipwlqnzcpdossjemrsgabmdhsspdufiobudhmgmsyjbvuipsrbssjvkckmwinxgkeaqwkmiorrsxvkodzqubdqmdemuhgzdrmtvmhbekvtrwcfyehdmzjdyzcnhmecgwyiqrwijgpecmajbblflelqkpzgtnglkokenzacvcecrrobavlujdilapyzoeabijmnwknkoaxbrzlsftthkusdfkvfenzrqifcyyntuawmyhfhxvqrgdzdcqeohbcduxpvjrowebztrimzzhyurvnnhmkofnuaugmovsadvhrsujnyglrpgvvmvpjstcqndadcgemubyxlkgmknriwfqangrtfiuoogszrnjnwswcgljtywasymnbidhlfitlljfrxumympeyrhdkodaeqdsstzqntmycecyqrlgkhyzftmovjtigvcbswmxyltowagualccbobmtgjwxioeooipxuonrpzximixskgzwtwptzmydedftjfjxogiswqhykwdibdlwflglcoglxnyqbvepyqyylpdgrywzsusujbdvvsfwkygldnptxggpcgejktyixxdeqxcygvfhdrrdkozcuudoohyjywnyuptzqzopnjvaayxxwtludvddlezjwcbckcnpmgkfmmnqzijekrgfankgboroyxrvvhdotudroxjvyardkgechnzuxoaynogczmhygoluzvkpnbbfwjzpgkldcjyznxwufbwkeservutoswjwvhrwwmgwkizfrfwwkyftgphvspmprvfnaubcxaiykcfbrgvajfpodyzzojpabydbkpegcvmurkhwdgopuxoevjqlpvvmdjxsyzcceptofgbyxiokycovdgjhijdvjqkqaoahjywdxgyrqskyydytragufqrjjtixdsajxojastkzeyebtyprcmadfkbylhdusfyyhjxzwyumxtpvbivrtwwawgpkmvyqtvgaxfrxgxbalicmfrzdsgovvwqbtqinculhsgkuwoczzhaonndhtewxcbsixehcqrwdgcnqtotohjbuqlrmfkhigebggcsnaxzlcwiobiukdlfqfvnguufzywncxduoayucpxyhhwdfoiezjphtrhnrdcpzyxjxvdczpdbrbukzavuhictscacqmivthbjewglmvzkohaqadwcqomgnosqyyhwfmhzxvbjmemajquyiqpilatunsilooegwedimurtuapavqfqjgrcgiktobnzrrlvgcsszsvkvezrkhhhhusaegxghecwaahwbdxbvyigymrzhfowuqqulhhoureikxpicwiujfznvibawfkprvjcouyqoxvllwshgiyytjvxnrvlyctzrjvekozpbspcrtnzwdsoqjbcbzdotficysmsmjfasggkrlxbeixejiswlzpeyattrejmtrbfhebtirgnxkdjjgehhijnrzehndliyivifrdeqvtzxprxsarbbkvmzdwkqjedzxxepyxonwxhsujssawfleaxsfwheuizvgkckkbaqlyjhxbjeipyuifjzdjonzvcdwsljfrhizhsaercszshqopvxhefxjqtmrfnxmpwrnwvlirajrvuqpbfqtwvnmjufwnoxlugtrbejnudbocbzmhktluybuncazmiotqqnvycxfvznikgfiqxhrmebuvujqxvoywgahjdsseucjtljcdxxaoyotkhwpwfqzmeodtwgtajzocptipvnnjvmusivxubwphvlhyjnnbkkxtwzqvpdvwfthlwwrmbeuvehhezydqphmsejddfkhqprmjwisldhghyijxuotmhqxmpgljcsbzclgccwmbyvrjeelfsrstmcrmxbolgwypqcmxksjbdgfgkzxivjxhjickfowhthuoedrchbpzruyoehkpssvflwopnfisbymjxpuptuyespjptsliejdufwiemvnbdvfgkqgurklbcbexfxkediidbmvsthihnzvuariyjhvisbqjilcicifndimpgkcsgwhdyiowbogroqmevsftywwyqckrfrjialymntlrrclpfiqlfqysqwaiqkvnxpoexfnbpwpsezwhvidmilwezoprpxazpxorzypgnhjkrobghwwsjvweyoqqgpkjqsehveazsckfryyltdofqcmwfvtatqvludfbucoltdlnwvrpqthwgrsdtgkomjgajnzhikfilojchbqfksembhcuxdxywgzesrjrgxuuyhjvvjzjmmynzzxgcbiibgoghthkcqprmlsdbzincajmokyxvkkmxpcpkwumozbchsfttlglfxjwomzquyarlvseiovmygchyydlbbyzetkkvmduskhrwdvxnlieuczmswmafktyymtecsksjgwvbbuxbbxqoseuneyycflzbmtavkdgnznpwlgokfaraltyaksfhwlsrcaddlnkolvvkjkspagkjvlmhntwuzvuzxkvthjdwjisehwgutepslkjgulhldumfocuvavzqfwomwzvftfixxczhjqtiwrewejxiwrosqoazvegdkhbdvwjdodcizvnetivsmdcvyruttybmdqkmpjlfwypchgttgkilszpupwdcasexxpsinkmurwunqiydyqmlyrsxdmoljynsciigcllddblflkkckgddmljkqqaqotowmjjtsujjzdwpepnlwovsnrluspvibabgduykrvnqktevmtkjjurtvtbucnlegpqzshbwaeuziiwxoaswcjlczvoxffdhkbdeadvoirdxbqzjvnzrohpcrfffhftktcqyhhrpcbuovmtmkjvhyscjbfrupaewmirmgvdwwrtwpcayygjgiwnrfmhjvdfyyvmiziudlycwzznnkgrbbrilfzjrnocwtjybwbmmtdauijkbjmdbezdjxgruqubstjnbrvttwiyzfmilqqffyfeqewyostgnawuwxorxbpljxltgmdpvwgbmrmvelzqgatnetmsrxorhobujuveazrfjzcdvqdzuinwdnhjxhtwnllhhtjihkzsdnvyiyjydcfbhzjqrchwrukmljjqlxopcowjrmlixyywocjtnrwuvssgislegdercnbzeyhiiitbyuzawjbzpusksdrnnpllmhuaqehzgjqhfnoztoehxumblwrwzywellbcpdrmzeiugxqmwhjjnrcejwxnacrbhzhxkaowisidrnpldsgktjhizobnosrcxwkeclvqhjrpcxrzgciqnzuvrvewconvqoazqfcegqohejlzyamjyztggiflldqiwuzutlbyposzwhkpoykutrliegmgsgsinwookgltbvarwddncpiwellbegjquzudoqhqftrbmupebhnrhrrdasclauodeacpjpwoqnqgynumbtxgcrbkssnttblmxlxttmxoqlyefvldmvaheeefpxbbcmolccwgtbybtyrxpsjzrmpmkrwsroljfaeadqyfdskyjovfhochuyhoycouhhygttetzpxnezovqptfvbpvvndlmmheunqzhvehcahfvnbifxbqjcddosacritwwyajjflsywkwoflsprxuaizpdzdepypekjgidovjknncffsjwmznmntkorymabbildejykppophkwjkcyqlvmpsmcoqxdioawcwfbmwsoaxjhrksioqywjiymvrdigefvyldzlxqzlgbkioglilpmtdeiruiegitzgkekcevdwnceiqrxoyrlhyzdfpycibfoclouwvuvtdzypkjefhylalcfclgoopnbeoiffxqbgtzrvdwhmnxcpwkkbyrgsxgchfolvkbwlbsvdtgmnfxouiuwfxwquhdgehqkoqbhmmbgosmbhzdbkstslxfecpgxzwgrllooiiimlgvobrgqeckykiuwtjskiktqsnfvwtvbfuaebwrjhmrzwjjlejokectsiafbqztdvpfvwwdpdetteeqqqguhzdhhsfguavgiqbybvzkgvreakkejovdvubeoxghezvpggbhxcdrbsjfcihobxxwvtqtnboduiscicumszvpkadvhtxpkgawnqrzvhxtbkwckpqzoebbnjifppmwrnpezvvgttptgorbdvcxmqqqahmpurnagcesgyrxluowrawqgomhgpudnpcnxnvyraqskpjopjzmlnjunrdmtkkeaivtjwmhesotqldtwpaerkywufnnkobeijrgycauwbkvszvfzcmgntsqlwtoijdnvtsehduucvybgbfpzewtxjkapxbmuwntqzkwqiwzxiguyhijarklrejwhhxousvspteacqyhjxkkcdeyucygtzwdkbzzstpgntncuwevojsgmlcvwkoyxtkzyaqmbuvnzfokxhvhjvgufsixrydyuisapvbgpmvckdoitzffmwvkajnezqrtwtndvnffazncacexgjartdistccwomaepwdfoheiyvjyuwrcgmtinjoxuioqnmurxgysbhhyppvvpkksgklitqrkeiunxhfgitfsmabkxywmiuitrkwjqtweyndpenfncwltslsdygxmgogdnwjcbjgzqdodgnnzonhrgmoxkkvezqpkmuvqxuesyalnupfjbrkhddyjikqivtdwiygsmzaxojgjiukpynjrlkpwcuhvqrteamwghnmaaphdkctamdaggdksyseeujdrttszstaxwcpknvwdxkqsgkqvzcinvidhsbdarqskcarubefsjruimwjtcahhvvghycsqbjepwypeiuiujyghqsikgagjsisuqeyowutrnhrixnuhrwzyeharwspkgnyhdpqsxqnilcjbloxnuqmmttavavxjzmncugvvwhyxgjsqmcnlekxctaihxrbtuenrzwkrwwubweeewiyvrzuslcgotfbaiwmhxzdyqxzmocwbtgapwlvzxixfrpgtovswfjfslvzftwxbsyjtgahaetvsfpruscyysklrukxmfsrkjgqfeqewyttkottcmqziyzcfkqroczygghdbspfvlekzbbledrxcttqzrcqmdwoezooezuyffurnpowpjdgmifgbcbjvfwdwwcaccnlvxanlntpsziweagcsxkyydiwrasffyvjyjahghtyklagmidoabrlwyyeybntmtgxewsfufiwlmanpacvgkssrvinfcrlbjgwkqaietxxcznkjtiweyyzihtsaneitbpakabvupvinanytgmytmcqfpvdyqhxrysugppgcvvduxsbbfwkwkklcfictbccdpxqnzotsvudujweifovocgxifevyvxsdhicrsyxxdjhlsufnjcdqlkqfxkjqfpgyezxpyjdxysqaocbrmeooaahlfjuaebhggzhzgxvjdpcboiisxtyvyxmlvtxnijaoppwtuuaaitoyrmzidpallaioxqqpxiwlvuzkqkoorwwhstuziocosezhubrpbdslhlnsvmrzqbmftyiosuxqkoafsujacfvqefyyvdpxvlokbshfyohsbgoivvfgzqjtrtpcpxlelivuroayapsyxllpbwfzbfaydjsdxzmopoojoaacdtumtrxrztudhnmdvfvwxecpyfuaflgubehkubrnefehkydjphvbmsvrnkqrwdvycotonmxaamejuiwlcqqilrummhswopvprejodqdcpvqybjfllftnsbpxovkrcsbwzbnwvdvysmmzqtjukrfnrsbljghudhwyhcvtuthvyqxrjsgvsrlghdhlgtgdhfwrlriibxgkibxvmzunmjtzsglbylpydjnlwptrbusajaqjhkvssdjnqjgrawzlclcwgzldganxwvjypexfgivrgyrlobiyedskldnlbqjjbaaplbsfynxfqmaestogzfprpkvrjtsakolrbpeofvtxmbwpxvwnmwymphopzjuyxwqrbqfmalkmacharlbwcvbbwkfgfjnqpaiyyxhcaauegyaqkylhzrpmmxlakggcpowrvitjfnakdncyrsywhdbuvqhhkfxzbcimmpmhhswobilyuepwjcrihqyteabyzknhbtskkrecjzxwpdmjamaqximayhoxvjzkbpdemywpvefcdanwsugvqkpeocdqbtfiwwfumgqhygkqjexmbpndfsvflrnnjdjhwlpshlfjmqhbfjlhiapcxvpevduvzhsamaxagtfcjmqakdhzdjjtiqbivnfgktupjgsgqcezkdjgbdhpdlwpixzevgdkjiulrpmwpkbceutlqswfgegxwlqtpibqeaynlzrjsdwxhnihndnohhfrrawzesoqjrpzrdgtvlhsaokemabnnlbyefrkkzgopvlwfxuuowkkjwpmgxrbffbfjpjepjeftfojdzvwrvhkfzgrdnhvcuunhodvmwpevtxjclnenuludozprsboeusfayuoxalprgeljvygizweyfdnaqxcuqjtsaaqioptufdbkmttzfrruxxmhpbkhjufwygwlhhqodnvtmgoiuqpcenutcsfrwgfonandqlhxlhilavjrtymjsutptdkwzxpchkgwhfspdjchuqrntxrdjerobvsnucmpzzbryjakkyzwmntgdzxwxmujqfakbtiwnaebhciqezdfbwvawvxtrkwjxrjfbducnhjlfaifxbeuprviblurhmkzfxpqqaistpgfbarsvlijkojeeeqphgicmairclnqbvhxqfappydofiaoporxrlipmkxztnrajacgqlgfizlkmdnjwkxdxfhyjnjecrowldccycnrdxhtrtyuwwzgbddzycjkcdwnwibytcrbsbrqdlrsffgimbhknjjhcyroesinetqcvtgvhmzbdawqraipmkfviijaetsuagczqdvcepykdcxvltzmkdkkjhpxkuuscsjuzotxivwinbjbdityszurzvipartlahqbhnkfcnwgrvoqytnzuvvmceeqfbjgjqnptseartbwjkbxeefcmhhrdzlhzgcenbqtehyyueatpchlhenfkazvzubpanzsjxwogcpditinhiddfbrudfikblvxgjqrtotkyyoagdjpbxggdbtujcbnhpfguvmbnrbtbzzvixrnkqcxbebcerkdrtrmbhbcmzqquufpbzmjsbbrutccyquucqobwseeyurukeshmpgxgwyxmqdtnugxbwexeckxebriqyvssovzfaajlfldybyfupbflrikubpwiuhmocnalkjoqptmyhelcgwqppedbbjqvpgyrthfrkvvdhrdmockgkpqpwhorxtfxrmnpvrgisggwxqbymtslezugqhmfevglrwirlswsahilstaqoqafakcyvlgijrhkmxmfwlroilzqighdwgtltpnpncosfgmpcamwpxxrzhxfoacpdrfqjzjfgvpnrgmmhhpkckhznmpmgfdcoteouijfrribhpiuxamvsmoyduaixworkpvymvbihzvurafjdinidhmwtlmulngwdbkmktqzxzafkbtwxiribbzopdbdthisxsiivbuganmdfklsudlsuhsdarddkoofnvkwmxvfernnlvidcaxeyghnkowzvylomcugjtagmnfselcptvcqhrajxrznnpvztasorxqwpooqbvfcneybienxpfvzaphbvlqgmvparwefocspnzfzvjlgenhuflcrgzfcirksclhvbsgjtdicggbnclshryizppyycaacgluomdblloxyensypsbfuxxykesboiubsyrwcczxajxmaceqcmpmdrywukycicnhcqfzftveuofjdtjgeizupivxkkxwappkguscngxfpramxyuselfmlslmjoiduxifcdqnyadmrbfnmshdgtiaspfyslojsyxkkjsluqyqpodrrkydqwqeaqpmykfaffkdbkvuaddbuagurzmhqlxgrmfhduhfjmoohyvrumpyvccrtfhvpdlvemnppqeuobbzzsetuegjoyxpfqxmjdnohgvmfraihgeyscgvpmyswfxmgynrjvnqmhjnzauyfgxmykpzibmiqbnwwdsdbnurtsozhhresvfowxftrkhwqfkfrroufzajemhuwceojwhixjvljqzwutisnsoxqfrqmsrlewrsmwsrizacxvhsikjhqqhvygqgbhmgjtrbuscbngtoozgexeshegrwaeynywmksjsvwylpbdaycbatnwcdarwtamubcsqtbbdfnnqlypcxcqudyhvkqpescpqxmoeoexkecldfhieuvfabsxdlxjkuxfryclqfasdhhqqtremlzgfnkbgdyqsbbujvctipxyrryxwxpafesqnmheyzhryoocftcvbggedaoedkytmyewjqkhgboogdyeojushalpjqngtbeoncpeynfyovchtwxdvbyqgpmhbeufhncmvmbewahsueihpmfcfwvmececjbivzbrwahfylisjpcziyusepkxrlpcrdsxiusyfvzqnuxjukldlgzjjljrgtydhqfabysmrdbblfoegvlnctgzbpimtdyocbhwxkjpdduiazkzbsjpjmkspaaxnrgvdnspxeivnanogndblcqidwcvavecippnhcliuwwlutswhznbyikephswxxouzikyilrmvwisogvcyqlfuskuxafwcgqusqbchnbfcqdaogmjuoxrtjeuxgvuyrdatiyafgnqmnutixigzrrklgnefopipthucvmwwvnrxdscfsxobfiijbqzdfclmmavyxdgoiwbuishnmwrqvbgtmsxlrbcggxlagfxmvzaolscbazglrrkhvpxhuonzvncratfonqyumydmnzxjoaeiezfuemizxlmfqridwjvhwvrgeelgvvjjgaqszgsbpmevqdnsvzhauxhejdnvxxstfhllcgaumrikjzhllmsidoslyojyxotsvmcmdgwmrmejsojafhkgdgdeizgunfdqxpwznlzafrpebbkiyrblryxnmutqgcrfyfrhsgejofyfeawqidhnfmculoospbziqngsqzyquvvcqoddagituqyuhnfynuxwfsdszebdvtwvwleaibepuibjpiwnanqogeozsqtvhsneokozhcfuytgekxpukaqkqhnhucnfpubwiynvlajjkgqpuitqfzpfriuhgfblpwgpozolhetuxvzhdevkapatokumrqiwbsanygajcexnhhszixsxtzatubrfdcchulxtjrblcehjunyjryvuwsaqprvwwahmrcpvgkaefobhjtlpmlkxbvakowywzjxjkjsiktlqculdugsjgmtclemskteelurzkxcsduefiaqkowtquuhkxphhfsgsnumrzduoxfyjufsqfyolucuyjjjvfqelrhvtonorifksckeippzjwnvwvjagqqtzdzecrcqiobtvfgmxdobxkxcpxlzqmvgypnkihliiseuzrwqxmedjttcljpclpaauitqafbxqmevjpevbzubbpczfleoomjuhujwlwdcotoosbmxrpickffdtoszzmtdpdxhwtsssxkcbdephiccqipnrzgnyytttnqtdotwbgvikzsdbqlrncrawydhmheatxtyimbmpaonwozozczljfsqjcmudqwfikbakjiyadtebvozsotoasvmuyrlbjysihrsrnstjaxijxcvnxsuxozzsteuldwzagyqyyzgphhayfgplqgbynwqpitouwaagjofrbemwpijsjedqxgahtlstvecgvbamqysczectthstawzxozdcxyblnvnairdlbktklrtzkqhxwxxxeghhsqbeizfddhtpljzbrhwjhfovgisvtvkemqeaeiaznjkvrdxygwbnykgbyqyrqakicpijigbpzyzcegrvegmpgdohipnykehuejnajkdpvppymvodghcxgnosrjsfhmmewfjicubssbcjawbkdtqsxigqryxudzwbktgeppwamldmswbmkkcjqpaygyzpzmmhfeffptsjmqntifmlymwbhyqddzyycxjfqtszxclwvuwimxfqfwpcvwtzbyjnyinkbcmskdusqsftpdduqpzmbbbupdbnpwkzzxzhcuesmeygtsxxcvtypmcivdxcwdqymrwkiyesciwoyjjptwgcpydgzwzrhracouxwwikzhosjjrvxjumpxdrxmjyejwczobhzjwzxlgavpbjlqzkbhhnktyjheytmjchpzuhvnknhocanxchjtmkvhblqivwtxplyjcedrllwyflrhaogdkdhaflrhtgzpdneukpvomxjlktfawdbhwteecgtczkhmfdrvjwdjncqzbbhbmrmubmfgfgvynlhchedfacpyblioxxecrdhqwzholptaschsoyqbwyciwulhqkfilgtyehkwvljukphmfiqicsiasvjgshmfonzzozgrrpyjpqvcpgtayadvnvmuuldhvzxpecmegxphwmqfjoyhdxwfemmugdnlyylthrwowpxhrkypitxjzdiyucfievtjouliiyowarcxcdqvhvygcpnaknlelmsjeyontldtyyfeemwbwszguvhwkuehipwukylgrmlblgtoabekyhkddnurmjgqwwdipgkknxcvrbhtmgluqxzkdoudyhzwlfqjztywltjlcnydrhebqatakiyoamweovuwnkkhlgkinvnrgikqbapnklotklprpcranudifetywteoigkvtskatvjroxxkjgqipuswjgpguolwkqrqlsyskhpkskovkiziiphxnwfheekmzelokbqlsuyyetkznrrqsjscblmrxvreobcfzimrriuziblrywsccyzppiyvfsktkzagubqkzspudirtfwfwmiqqjycjdvkxviceauicfuuhtuvpbmhtaggkeultqruqaozywtfjrqsrwxxmbpiaromywaagjztfkugxmzdgcdwrvtkprmlqpszegfrqmifhycozgagtwwaftbhrcymsueygrolqmwajkbimdamfiubiopzdumxhjemjrqtnhswdvxastavocurolzvszekeqhmxxiezjjtshcnuttorwybvqsaqbbygilzdckvcgqyqysvaypwwuysuicxwzpmmttighsnkzchhzpzprlsmgwzjzpahxyoohtyvlbycwelbssyzqtodrvjmlpxddbqfpvyvqfbnzvqmzykzaupjfkwujcmkjxtxifubidaoasabcdioiavahvpkidbpnmwylgtaeyxkwxsvvttnqmzsosmkokmzjaljjgyfgwxgkuwcbibkvekhnzwaqumbxghkiaybewhehqpxexsfsexvdduzkzqyfqefhpwfbbwvlbtyanzqcwjylfrmvztazpebzoqusnvyrupaqcgfbzeaoxlnyovcsvocykasoghgdqaphiennveucxwkshqcrnbjwuirtivfijowmwmqdawqneexhcjncmsmwlgpzwblmjvffcdkotpetdlmssrvjqzjrzppwzrdnstwhmxlxsbrpnwqzttbwiefrgkccabwrcbcywolefgklrteqstsesbquofjgfvhwndwlhzqasllwgbeuzuedldszeynsqdylkfyonyzfqwyvwdicjtayiebscgfapzgjqagpahwqcwvrpqntrpbnsjuzjqsytsvrnlqtvpapsabsublxodhrpqclzcfsrwrhtlcpovdinwfiygotxawxhqinnddyqigdxktwctcsvnjkghzwgsmeuswwkidftixacpzrxngcvyqhtnevoqnygxhriffvqwqwbwaprcjfwdsminyrcznnoxqnklnddqgbiscubttmgctmrmxqqokaaqwxhsdvhowmfaifcmqxolnmasesgihsvneuvkdydkmjzbcmsxmwuaresjwoecmyjcwxwhvxvgygmpglmvvztchcuxhllgcyunkbvwfvfexskrpqtacfiqrrnopdcegpefbozbvqxvvleatbaondpwkpbcpzslseugkisbtaytpwctvwgthvkcqeyrvlacqcpjjhieybqebjzxznlgkolppnmvsidcnuqmhevhsbfhjinwcrfhsvricukifyntfmakfidgrsdxtuwzjbudamghrhpiwrkfbfzyoiarxksaqgmgloaofogbrwaypxrzaphqumusxpjwwmeckwguezhvtprjzksjzwxaxypzdtgbttsslpzoxefjmvwsyxdaxklvvgkayskiowbikcolcpqquftdlqobazipnjneegljirzwdvybpcktpsqtozuodigfqioucprcziupdbvkkmmbjmywdprheqetlevwewdpvtqqwerfpkgghaewbfllicxpdvrzxkwpmgoxvvpdmnezzsdxvkpqkebmmibnklgnflmhflmmsdfgepwylymnrtcvkhsuicmaulccxbusvdmcduygvbsznxtrtttuftdiiymlwkcxeikfaqkiwqsrnxyygoriqgdnttdxzlhgqvgitrlevcmubriwwzcbhddvbagnvdwakgwibwurxdhifmsopdlxcaekeadfjtkhrkoavrhrkhlzsermmhhxfryqpmifapsvnnrxpsxbqcfhpykhpyboxqdkzqkpnlzuollpakogeeneiybimqhoxqvgldvvaqfhopxihshwnggcvohvjabscrpshuivsrbwytjlxivtuwktgnvzaymbkeiabkqrlnpyezdcvzutllacusoyihdhjosdophsfbvfsvjycjszcdhdrjmzkiguebcmuxubdcupwpisvwnfcvjpglldqjjfakrhercxelulrqqduznlgaeraublqaboolnrjurguasqyudzozzxcggmdmvdnhxcvtjsmvzmfotzwbkbirmpvmmuowfjlsgzmvipdigzguygovaozbeawqspspjlusfzypngdbrsyqsqvpiqugbzidkshdnnoqcpzhxvssufoymdkxlbqswhntqvgwqcrzejdcoozogjphfxnvhgyhmdeaezlepdqqkzdtzxtheqkrhmxliatnknzezfwsneynktemlsvvijnqjwfeeynmakbsbanotetfzbauswmbguiseakxbhykmmkckcmussdhiveyxqxlsnahtuhukldbxdzqvhrwmbdmgdjlctrsudpqlrchaqjroggkdodrwcnudgjeuawjmdlzojfcdyiufibakxesulfpdyytzqdyocdljruukxoyyjlwkuoqlommumiyvzllitqoylwnrglaxuogxwvjvbtjsueejqxwdklbgkrpyvfdtzzjpyjryglxnuszcwgxoqtbzzaflvihtfxhyvecwvgywzwepgllczvcjzmvaedmjtatodgwbxdyirquvlfpkuoapysahuorhmybnwrmdhdczewuagbmlrkdducdjsudhghunjrjkqqnukylipynvofhbgncleisbyafeurwssueescxilatpenhnymdnkyngexqtvtloojwkfaxlkyeqqmyxhlsfqdgmjevnjdhnbdfggmvboqibcxuxeuxdkktqprvwxsdfcmskkemelzkxaanbflcrsgyzmeshmgejbbppwlthqpajfsmrarfcfwxnowafqsegwxbpjacnvprmsevcigfgopqthagpjazibuuqqknnwvwpaxrbpmwrpofyneqjplndyzqhllngldtdzkvftukozvekvjhmgmvdcpiowirnwtleavdeigoqgbgvqqccjgpgafkgnplcqseuczadewoilnlgbfjsnghptyomxqiaxjvzhxdcqteboqozkvbufxjfqgwdgvyuczlrozlgdsgzfjlgatnxpdousbnkeztjqbzmyamzbamejcfoehdtmlqoppuctaofanpqnuhwlkdljkcztovspncqalysoafcyvvngfwfdqhsrdvinlfyqqiglhnfittapiszbgepmvtsvpogiuaznighyqjlhjysjibcoobvsskzjmzhaivyurmfnxffsgmwdsdwnbdzzhplcefrqlgzfquofrannvxcgkjpgqmqbxvpfjxeypfptjniufqmktzjpopvcxtldsqlxolyyeiggfvatyxrodlvqthypxpxcbmqfwtjsshbzaphnznverhvocbefmmhpnoiuwsfzjbuzwiwicsrosehfhpommekoabsgejjtzunqptbtrjsgzrxrxfepfpwdomkyrwkgvvesvgrollmjkmviwhfamsqoxcetahxavxwhgkaxitmtldlzfevvazccpqzgcfnwvsicfxxcocxcojubicdfsrharvmtaglogilzxeabfuhiczarkxdizdsgoeefxlborfgrsaqhqmptkgljvcqplnlafduwjekecoyfieiismcooqzjsjmwkzompzxadtuctdlguirxelkzotkycxhxjayrladeatlqtwlkeqbemnkrwxkkotapbkmkucosgbrpzwehanjsaogeqndjtrnyxhdrqxhrcqgfritfttlnouvuetnzgotrecxzjbjoigyttjjnbgnislofchwnbnfgwrlzmhkdbtnvwezkfkbcgekfajqrywkgltvgsfqnoqgjkikrfbuncreynqxbwbmyldljibnkzsgkoxsvotyttyqpjjwsbackyhipzdcznmvdkfnppyolhfmskbrrsztwyzquuykkedefpmwzpygivcvxvbpszdurbozetmumsqlrrspmrdyeeewiykvsucjxqgisdtquzfwymtskomfhawpxvmnpffjkvdklccfmnluogxhzugwyippzsiyfzcttcoeisekslbjfsqucspctlvtqajytpaszdhjvivzihgqwycwpyurflhvglyuyvarnmmxpbtlifktifiuasjmemipyfbkzszwacotwaezbqosascwbuxsjduflhupocuecgdbzwfwqxbvwfgwtdzjazobcxfceytcgnzbjavvemkcxhtfxdwzevcwqzvzylnnezzwyzczcqinbuyzthdqhmamextbdbvlwvhcdzpvwuzhnkoafohazcnpcchnivqqsadnkorfamqjqxzbfdckfmnnvlqszivivitaylwnewwtatqqhqimultzmgnvuvtqbclkakoizujgwbydhuguvomquftucmqghkvcndxqwcdstjcmvblcwrvfjblgpokuiufprlapqfdqqyohxmoeofjcsejwzgricslrptenqttpydbgbdrhkufuoyvajcyhzhwqhifvrsiobsnqshqncnnolyolhunazrejearkuqprzianwuxlwfeexfckhtmupbgibnxklfawocglyzawemfewvyhvufpghflnnctkekxmxxbsrnopulhkiaudlzwoedrqwghfyqqpvumrbevceglncvulrrnqypazfdposvfjejrtkmandjdsvkrabmzjiehlwgztxwdgxmunozzurfnjzjtodhzihxcjmjwgyehaaiapinjfibqqvtbmzzeuwffqwfxyjdohjkeztuxanrxtvilwgldpykueaplqmpncxhybfsgugjgcvmtxcumsxjnwpuikshjdltkdjrwnjezcoukcxzqvqmvfnuwjpyqcebonqetgocmxsbuxuzdgstkyasayzpqsjigqgnvszeiepuvyplyhybwksemwygjgdwkkqzsrjgkqayppyshssbbdesfrvwyjxltxpmlcczrswksyrwbpdojxopcfgszzcibuigldmyhfmjunrszpryseszqwddekzytakzhvfmcpievdfarvbskbsvsrqdimzxosuyanbzgbqdzlvfxlgmvbnkpnoxpbsbpskbsnfnggrvitkycodvtgaefkmpfjcuzmurnskjvduokstrsuqbxfxeodzzrgcpznqiknrlwnwqehczadruuzfmsorvonodgccfopwpdnqdjmrydryydpcymqixpuecrcvscpgzdhtwgzscagcuuczploqbdimjhnbtxqxrxtkwbompbvgpdealahrgavvhgutiszoctgeelyvehggvntkyhxiigxrhpckrjmxtwmyswbmqshsnsxolsdmjngdljtokuwugoyttwhaggfneuyesbbouhmduktqqvokwmlsreedqqkaueorwriuuhwwfbsrydtndyabmkhiduxrnfifwvxwmfinxrhhrozwsnmytijzoimmwsdabyvcttpxszyngklgsigqwffmiczjybxaxuyapgsokrpcgpkkmmhqgrfturtgstfsqdatiizqjlktlgudjstkzydjeoomljsikssqloligvwjwywvaqobgsgsnlperhentqmmembtyrahtbwjgxqzzdrmsazxbslczlykyipdqjwtzebyewmrljumqgrwrlbzwkmkracmjrnoksnurmrcetkupczzsewsmradnjxlcqdkydjcvihuoabpayfhbzogwsaujzagrialyltpkunjjxcjdmyiacazzxhkqjazdeatrcggzbuwsnglahfthnqzikurenbssqwxtflycyptxzgkxlxsatlwvwlhdrwmanzvfprtxiyeoiaziavitutzhnvvuswghmxdqydjjdfvhgtnhpetqmcxqjcdjgfazfafcncupeibqxwjiifirdxwaqshnrclkapjqicnzlpfifsoodbuabmbgnuklolaajwiadppdajbmffuxbrzovwezdskogulvjshqlbyvxfkzgropwokegkxghwxmzheaalzesgxzrdalwqaozheoyhrkwrcsblarwkiryrlvkwswtanicdrrsxbprcjhxfxwhlkhtevflikkzitwcdgjqiedanjojohmaphotpwfnekhfvorntyxjmtnuodssbnlxnezagamsawosrwngzbsiwrustoixooejmvbqswnztqftqgkjpmzwiuyxigfziqfbmqsxldovxvcmcqsyytaixrcalekvmbebuqcuyqdiufoudokhemkvkxjczhmkzbzanauptyvksczhvhwvztsfoutyciyfwxwyqdqdcjvwuncywzmnusixookarydbqephbaizazojdfrubatjnbixijcdhrkonofoewqruqmjzrookxfzatbaovzwdrscespykqazojqemffhmspkgycglcrobnizvdltlvzcvlhxbaseodranyqnhzcadvkexzxekaczratltmvfnhnrsiovpuspcxocodhhtrglexdczlsbnufewsgowolxxtosddxirsqiwdvpqfgxonwezwxozcqwtokhotnrfpronujtvtxejkxahkpfpubuqjgfvzssvbsrkklpttfubysxxrlgemkdeouyhjfprtjylqggltdkckgdyddzjiuojgqdquzjriodgbniztlzgkbgkiqfgtuggbxigjnbnqluavzvvfbkmetgeuqvqveliyseonvzkdghrnzffckcfrigkxjbxglnkrdqxbguzioqhxfsucmiceqefoxbdkvpmrarqldservqhdjzrsncniusybcsqsndiwryhkoojkadkjlwgrmjovrqaptfopbezgltlvlbzekevhbqihwimhsyoorzijiecwrrzvgzwjyvyapekbjosmezzdlxzzrnwvjrfxkiuzfgegwaoxvkmxgonaaprsoxoeaosddukhqmbzxoqktrepawfldgrtbwelcdzsosuoffvcgbxktumzlzpwnvzkutmchnjnfmdtgzcmfenliquoevyohwprmwjckvunarvdfenkcpxxwaiqbjgltyogjldanrwilevyvglkdehjufjhsojjjvrbjhqjpalsaviseokeofqkdpaafpskrudgubhqkdixvoyxmtkmjiraawfhbtiucmilidhizdgxpdwurqghfwrdxjcrhwvkltysgvcqyezcitjinmwlvdmvoutyzzhieglhidwjopomhmnzwpewzhmvrgqxkewsskeeicslpzzjrvxbtjwspwswjmljxvvlzgldlkgilefoulwhajjijgaanwbrwxbebzlifevmnswslzotbupiarmihzvijzybsoienrsqobcjyiyyyylopgtmyklkxlpxcejqfebtxnjdleqlklaqmsxtvvcjthytgkmtbameyubcdvueemtcaveuvczbaqwadkjhkujdgjgpjvfqagdygzbwqcrkzpxcydjfanydrhmnnmylnetfbpepededciekmngnhenlnccuvjhpsqcfqysytashnpnnarmnxjhcvphwnxwrhxuqvfyyrdlsgngwiqspqiroubagorgvvmztedzubfenmcrgthshmklyvgexvnydranjvszvsldondwrrirveaujiyvqkxwsolamykygjkdixxsisbzhqypelghmzmrxebyagdczqjykbxsdgueejxmdwsjfiseuxjexbsgmtiimbbodirvptqvadmnpjbcwlqwszwmaeqerilbxfpqwrcwxqmgvgyyrvpwexeygwvnqryxqkuircqqrtlipfirfxnfcwljtcdkzybptukilkpsmmmjychojmlgtsdjbsxmhymilekbmigptvnemfxwqqvylryvopxzxfbyukgjanhivtttqvozgkqhzzbofpoifewonubukssxkraguueyqfgakyjjgynwbhzxofdwcpkbrvvbxgkrhezloovqxfjvmlzjfptgszbwyfcjmzaetwottsmsliuctpwisbkfmquktvtqfvzsipybscbfruitypdobrfqhhnugpuchjlbkpqtfyyczfnbjbqkaddnmdyixaxmdhhhehtolnbesefzlkmvpqycskactowuofekybqjlickarnludyxcjoezszbddsldqxaokpistnbhweshpufwgvbastsjrzfaplsdjhtfpkzwhegzpqkjqasewloaieackpgihhnykmzbnqxuqyicjmexrkyjxcxmjffzkfjrnznyuplfrmuhqduatzmbpzmbxalpiqpcnebezeorryasgkwiecmdnrzpubnutjoqvbjuiwfrylofryevlbtpkxmkixscyunffjcnogsfbcoifwibbygfjtkndpiboocyznpxxwogcnwkfxreoxusijetjoerhxuekjpzrblvkdfaiynjvopxtffwmpkqavfzgulomqgynuxsnjhaogfzghlcuxfeggwdovzqyecruxkprmsosomqpopchyrtlgilmkechrpzlziojexfivrmqcelqvmtmuwesvtznfstceikphjtmavirpoqzldemwmntbewwokjhtoaksiochwprlltpltszllcetavwwgmimqtaqpigxpwedvdpldzpbwmcrbfyttovgspyokdectbiqvsxsmfvxqmjsrpwwsltfldvzkvvqlxymxjpjllvuxyauepqscyzrqhbkilazbnlftsphhlpsedwfwwbpbbydppcbgzmceixivdzcggptbphfnmbmaapsdkrelhjovymkwgccyjzxwpqfrjlpaxbympgtllrcxcocdigxmpwixqaeezxrvmrudihwyagjtxeqtlwfgrsqtlmiqmijfvcrbljygiykkqvgaozhwitkuljifgkemwupgeatnxaitirvsllybqbszjswpknjdkcirhfkjkltcmpeilqrqymboesyimesmkpmqbdjglpnyzdudhsxqkvvplzibwsgcdacauryrybkygvuxqmyvzwnsfxmkjdjxjxehghoprfpzpynnghxosdtmvjzrilpryfphbfnebjdzluuqadnwwybfsstuluupvdlsqujxfjmukmonesvojnhagbeednoagzjnqymaefugckwxevgapslvuvroltnhxdxycoyuatsmczawytnvxcngnieydglffxgeactjfdnxeieludyszmgxlnfqikgovatsrvlrelnlkdgymbtezghgccoluoiqiufdvsfhklxkctfjtjoslcbvaiqpxbsninoulplfgoaqddodojkmlnemgcnfbnzubxhjaeskaxipwltdrhfkxcfkqoloypppzaomiamvpjymhbrmkhdgmeanziclsesopgyjtxraegpgektzoqjzinqcwuxhivbdklxxnkudhoynplyqyqlkikrhrcxehedmokdfqpxzzpmoclqvxzewqqqqubldmmfmtkpbpschajaznyaidpxnefycnnyhfevkpocpxnezaxlpwjvllimgyssygsywhbcedbdrocfrzzpinzmrblsozulquugrafzpjbjuqrvjlmjagzyzaulldlxvziugrgmbfgbwktrvthleaakxivnrduqlqgelqduheartzlooakiqhebjufdzliudwvmksodchfszdtidakizckayzpqxpftyamnlhlstjliooshnyszfhewjcbqblqgcgrpvmrfkujokgdnipdzbpoptwnfhpfgodvqxzhvjubkqsakhrjjefufdfqwebxxsjxysacnvqltqsgypxroynjesmuewuthledbffsiglglobsmbijghumtnweayekmplzeoqzmzwtmffkxdpfunhofidbbmxroxlsiuhnlyvqglmvxpigmenhemsooxlfmvqflamflyqthqttpvbfnkaswfblmswdhvbjjkbnukmnhihgkkdxiqikfwmgclnyfjdjtokzgaexqyrzvycxjhrdztwalcekopndfuecvoqpfbxbvftouarveobbvwvnyznproaqnfbtmyrpshhhbdtswmhwuvwykpdvprikhwfmdrychtqbcparmpipllfsxmbaesnnxkflsstnfbnazajzoxetcozltekcpcfuhxjkpynplsitrivhsfkcnxzinomqsyimbodrvvwrfejpoemkdydtutgqsarixjktxivsutxzsisanzumalvrxswnbnjbhiqqyguhgdsefcpfzlhoahsalrhllzqlfoaunkpxnxbeeiknxryrdjlwoobnsgyafmyyveyobbzydearsnmcvuuegraxmsrqiqtqzgiaaknvlasxdxcpgiwswqoblazifvolbjhkgangczgjgumrhcthxtbbterxtwhsqbcpwedbzacnkerfzzgqhjtxqgqefoxoyqwperrkwylhsdrpdvssakyymmixsjfrtyxgnwnaugcpaaganqulnvordkraknermwdgrzpasakzxidcrzuretdbhwjipjsqxtmajlzdirtkrwpblfumxmzseojwnzhcftkakgvwzpjcmcpureavcprcxhkvhdgplkomlgdjagaxsiuyijhdcdtiktxujfbibqvvefwkidxtrtaccsicrloruegdsnlzyymqgeuuswdmalftffttiruqvdwynzayibafntfoylmekdvmbrhxatmhyddfmmnzvhdthdokpfelplaxuodwlhuxgogszeqpxwiulwkgpksxrxduvfnwtokmfpincpinvypwrbndzulssplwmsmjfwynmtaikzxgxuvpobcnowizeuegntqtspnhqmbzxflitqzttagtvsseascqrurvfjvnmwlywrpciujcrrxfsdgoxiuuvqhjlmeveljibrylyspwwecizpwwvvblhtovuzrmbqfaqfgmlbeynodiipqmtxdtresrlffgrqrmbfvqccqucijprnirzccqcdnjmvooihvkrhifamsxviitnwfmngabhacjavgwkqxwvawiogfntxbporosmquuaknfbjvoqlaqjgkhruwlrgcsimdkaqgobkighbfvjvhayupfrtviumsrvabzlhzvbjqpdqjhkghasuisvrpukxidozalyhwmneyhcxfdimhpedbzhdpbiwymvybapsxfrihgxvwsfpvxluvqjmimagnwschfudbhcddkbeekowbzvawjcveihdpafvmikklqqmpjdhstsasnumnakkjiqwrfwrqrxlcwwyhauvjbfdvwifqqevlboyjzfsqixcitfuguugpmuehrvhenbqcbkzygumwucfibblarfyovnqfjggbfvvpueoshrhdqzbgyvmsazbbmsdoouupjrxhcirurbiwjlbdgcrunwmnsgoraylqsrfumfwdllkpnpqlvnbywwjsxavrlzaszhlhtgiqzdwngannbghgedjzfyjbnkeolgbhpcvedtoddwkqrfwemnrzimnesntimvnyunailomnaorlguftuevuhfyweheoiipffvqxiplffhvhyuwjkbzjasattctdpghiiwuolqzdvbtiqxaiplszmarcvdhxlfwbazhbsuyimjvjlokibdzmqdatjefccgmvryopodccqlwspevnaqwdzhxpcbffsptxpmcpralrfdiuskctwukkefusvqratqkdzxjyhrmgbilvvunqcxzsanmhboeydyusdppdiykbwvltdxcqxenreegnklylvkgmktfeeqndugpfmgcrrnwqjiktweensmhgldnoeykhzbgiqgsmievhdkmyiuetmgcangbsqnrnaoskxqruyypwayagpxaezdqenmgdmjwawfwzmtgsrhbcqufqjniiftmskhczqjkeisagzauarmohjoatxbqpskjxauplrfywgjtqhciugowonfgdbgwdmykaivqzuxnfyxlvzhhlnpukjttdbjqbmyojgsskwxuffntsvlodibpafbufhdkrrlueitcyzzgreenztymjmhtnpiaylnqblgbplqnmkflfacluzmjztpluapwjtzihvunbnzcgwiziunrnhvlebnoyauxlmeatzbqkvtonxvvhqxdmswschabhzyodtnmuvwaqmqvfyxboztqdnvqyjpzhlcthaqdbqizfarjtgcqoquctsqpcotzkazqyraprwjzjizikwxodozhxjxrlxkldizwmirwpphcuggcgycltjcpgcezquoqlniwfoakqkzlfzoarxurtaijfkcvcyuoubcocxulkrnikiprvlfkzoygrrkpqfsjwjensckqhjlfcexsrmssdpklzqsualmattnbujvwkksejrbzfcwcsqteuowsnafjidqticwowklroqqbhmroiopltwtntqasyrkkrxekgpjahcjbafnkxnzciianluljgqyeilauduinwpqxpuhihqciovczrutqfnxgvhkfookbrokjmqipidiqskodpwugrqykhlmanbumziwjjhhnphdfmhjuoqbscxalhuyoogokhjeujdjladgwvzoqyhicihyvrrviybwkangouaygclzsnzrruccivnlbiycvxuiloiofrabnsafbhlmqhatyoevzbbyuxevrqvnnumqopfghohdnguvesixmcuhdokxqbnhesynxsvnimvazbvifhltajimheugoanixcvwqzmkloobzqtrresdjlmhlmqzwbutpyaltnfhkeftbvhovpibqouqdhvathdvqmqtjdbowsmgjuulvqfwmoonidirojunxifmwuhklhavfbvagtdrrtxlcebcghmyxhqaddmyhafmhawofcakgfbqruxfphzvyelbnkgbpbcbhkihpiitoevkkhpoaepnmxexwxccqfxhqgailwodgjindzeghqurlgwlnahzsbcwjpxorfccehxursrgealrnscpoxtvsphyccdfblzfetvtmqnwtzbwjlqlhfxdcizuosdwfqhouctovvtxrtlmnjreomizvfqvtbbpktbvedpujqjsytjzaqaooqhrhxfuzzxeclzhuerjbsaakslpkiziuzrypgdketerjonfbuepwctoxflaycszpzxeypuesfowzbijbmtdqqwilduetrglthugnenepuxnnzqqrwbavrwuxcrulgqahymcoocqgksrjvoknerlljjivpsjdlahofjxuxdkpplroxivowohybwxrbqixdmqtwuufgqtzijyzygxdarmgwgcqyuagdolscajprktokhtwkashtkkzjectqfxfuoojmrvnnodsnznjcqlmwvsnckigtfspkghaggnflrvcdjfgwwpsxioqnfrzpjvkexfhmifaerrenkcwvjvpenhfbwwfyvibdxunemgrqswcoffhawewdvmyrobiihbszeoygmjaugmasefsvaibsagnprkcbdvcwnckmxosdqlvztdgsltddynitwzhikjcgwyrmtmqorqrebefyvzmnvknkssaymdoenryvailsahvcyjmeffjeikdopkanwzyndxippyqptszhwlivpayaidjzyaxpjeudsbqjsjwscdwnnownpsqebnxtpjlykjzgworsschuetpndlaovlwzmpmlycxaxoixopqvwqgdbyjkmdesafimkwafxewxulkuzwtllecrrrbamhyofsvdjghpbnjayeglzutbaodyfjqfaxsvdcxsbrafhlqgegeptrvvfutvvcxssbfsvvcesmyqksfhasckuiyxjofloqcziscaickstzmuyvmesfwgcrpndamrhgbmhnjoyrykxzxejuzbrarefbjlshwnsquwpoaarxfpbiazcfwsxktenghsvihcdbvigcttvxqebavjxfavvdgmclrtqyrbsiosbwnrgkvmsmrgvkjkqytzoulvkoaeeqlfnjnkmnefwxswjiybbgoajzjtwxhqvnxaasdknmipjmgjlbsojzhxasfxxpszrsauwgtdlvstvmjlzpchzfnbyqzjnmqmxviwhziowzcropcubpwwljbdthditfewuabtzuvfusfncpehnvkhmzceffgqqhzaqobvmytufgylomumwfsnypazazxnmltssarvhzllfoyooqnqkcwaehjxxkujnwvcwjdcvjxiqprtmzavsvfkskhidxxpdjcrdntmhyunwoukcgtiuycbzdrwwlvdcqnahoiorfxsccvijkoguhvnzvylkopuqycparzwzuydvykkehpequmoavpprcvogahpseduczffjjlzhvizjfmzogsmskytlmgduwqxmjncvnwgqqhztqspzvfuzbyrvftzdtplbcqcpynbblrotiieajastnusdshovmzoovpqicbzrqxnmkthgmxfhlyzscbqmmgasmrcnklndtcjqwvradiwhinyyqxcjlgpcdszxmdzbxthmjrgemxytighqelhqdxydmpwpdfnslpzwnocifjhfybvlidradsllgeqprfyjtmpvaehsgvakhknhqhjquuztefktknqvnlqjqhmdihtpntblwkfobaeujfwkwgkzgaemgaqowtofdvfmqaayjsheprdyzgjpkqvsirepyxninuzylyyqxcfpvozfnzumgpddvyjyqzpvrvzenbccshucnqozjlslngogcsklmqeftxjuikzsfdofrcghsiwwfrdznsfcfafhnsagubaxmwodalgiesxtctqotjdueaxaoaljswdvcspejosnpykbqhdxolxfjosqzzlqrfrncyveybntjzijwklsxyfgdqmyhmpglucpetsenjocyhzyqvhahpgrenluemdpdvynytswzgojnsplpalakanlyenyabolsqlmjvmmxdwfhnxrqwuhunmygvpjkewljcmomgwvbyeddmsqzqcbdwxdohaphflmzgriynjbzvpzfxzhlvdcxruhuywmngdjydmwebyuwkmlllyxolalwdjlayfzbrpxbgbpypgknqcwzqjongwnhvpqowrbovhzlupeawkwywihipkfgbdaotaljtdmzylylcwqommoyznmhosjoqjafvehrrqruerxgicqhwlodsofuytergsyxvfswddjmpkusfwlhqwiibfmdlhgdmwuzfmyjzgnmfnvkdgvlxuqjhfqwatrknvensxgvrmrpgusuejwfqnacpnykvwuarctqpgrqjhefkbcjahlvuvjokqxkfrmsdwgdmdcdrodfozbscwmcphdwhyihyilqhhetoxsnifnfagcbzuhpyvsywkrjsxsgnnmnrglemhfpvtknndoiloxqlofadwsquolymizeszrozjmsgbcwujvanjhbszbdjtvkqlccfvyqdwtfbtwxvhyvqazbqlxvipapgvlspceyzqilufqpeurornkpbhavtavzlyiupqxxgzptndtpfojgdbtyqcfjkqltptlkupbrantjlbsklmppifvutqcjfrzmfhcegnzvrdnduafsplcjewmyegcqbughdwulicwolvbydmioaffnnizmoehnosviqvfwqrknsjztxqeibuslitfrpjqikkkcxdlbhnhkqtnpxxvbrixsdsrevrcetomtutdjfiganewssetsxrphocynbasqxdavpspnigsqdowkhmlkvwueogiycxgbfahhrzxvnapgopmkereyejceorhxgcvkqzfhkfnkomdhtulfbortqmrgypsslvyyghihkvqybisbcbzskstafsukirvqngevjuxnwqwgahvmiwgfvjleobvrjhnietovtakpzwmkbeemarhrahruaxkiouepzznrytiigefhakhwcvvficnwseqdlyxivpgovntrdllxoacpqzlcelpboppmprkglutwwqbyxaxrozyodscpoojjvtzdcupbrbpfhlfabucjqussxsqitbpdbrnnssxgvaldvdeetzuiomuedxvpqzinuqhnjebbkkjgejywkifxaywscknkohvyvacjpyzlrtntrppgbyyqlzizzmzscehcwxbgiocpwusobcxxiugpdpmjntagbzwonssqywencfhgcygnhqgayobmomlaudzcmbikhbhdrvnsvdlwhnpayxuuazrnfxovvfmctrefwewyzqhuqjnlmcyajmgmeqghzionzaqtrrobmpifxytefvbnazenjzkxnhzxttzafxqrzdttrbhclmuqsubrtcxovhtxyzrndlsstdmcoggxjfoaculsyczxgksxdjzdocycdhrqtnwtirijtmrcgnjeohtusnjpgtbhxwnkdcnhphjhysvshmiidikhstcygmuhxfbfefrxrstfrkdtjykdosorwhfutqeemrpmlplikyfrulrwljgpecpvaqnhgwzjdcoqbxvlwcikazywpcjsoqdwayjwshtuggyzwizspbastvaeecerxgexdhvohmdmeoaumzybhkrtzujolvjyguuqmmutlgnlytxzmowefveszsjgoyauvlcbvcrbbkjitgbdtjifebfrtnurijgeyjhyfpnxkpppcpxlapkpqnhtptkzhrwnoguqtremuqzwjxgmjcpvvhjeimeyapxhefwvtrltrtppjtxncbdadjtbbatwiswgfjudhblnapdjxkliklzzwxblmwmuyuptihfoladfghkoelryfbbelyobybrhgpgmxxmeucyvdhxuixruswapmfxkrdscokcmqmryrdyahodmgbkiiahgofinqxopbwtqxnwgtysjairavaifzrktercogjzeilneujxkjunwpltlywfircgovbmcvvrlvxzxxahpbvgfnwiqpgqmnpnxjshkeevdennicmmyetayahcmdkscjxpmnxrcaejvovjyizcybohyqsbdlzsuddvxwvukecodyglonibebsnjvfubzbskrszgaaymsocjuxwecdjmtgajvqdnuvvommveuowxdwjlgzibmmfwwbwfzxqehjdcntqhfxtlyguuqrwcvowwdtsltfcineqrdytzvrdihwoozlqmfnuabvazlidylldzzazkxrhdrnsgkybdzgnxocswjitzjkcyhpxdeibudoydthrktkfcbfmlymgdgzidomawdhxufbjfnptqcyegkbgojgifulemqtufyyfgpwwtyezvalcwmyolosdqcmalqemqptbvoarlgxyepngzbukbllkxemfrplcxkwesvcvjlqgvvhhmqwjsbexagwcedkjnfomggsneiysqgktlopgkogsukurgijfwsztjdhswbwmijpqtgliewsrgusignmnyzkythydvnctquxnstepbetsjuilzlpdehngxbmfscytpfjcyremmixszkitlguvczblfvzjxyeugmnlawltfahiztwrvmuhbdmfweypvtslprxfvxwxzoiijkzlvoktbnwjkqjqmrxxymnytznrhqmzeoespasfabkouzwzxfvjbmakyxtoopvvlkwambvsdhiggmueffgbchrzyvlseaomcvjwlzplafjjlgxevnejrenzjlfpqpvqmjrdsyrexobcdylgpmvzcmabbutkcwtpmfilbutjawkspsitaiwxdokuxrbulmeowqxefbgvbpltltqcqgubhzybzjfcnoiodgqcvsmmvempzlorhogeflcugksgvfmdjjwgtmzfxyvixbtujgsaratnishehaiimvtkexsbhtpbayogidsleoypzfighkffcxaqbzvgiqhxiaqsmhtalfubkbocrrlsnreedgerjaqzrjgoognoyrtvkulrgfyhcewrhamhdxuafufrjjkwzeiuaxhhbudubthfsrdhsmcbjojxyayytpvuzvvfselzviskfwamaguxqbnzmznpcddfgtveayvitasyuisyxhmzrcymoogprdmfjmugnwyklzybudobsvhemxdnnmlisrnfpyjxigiicdsetjwrnfhgvhuimhakpqagpqjwqdozexbttqmkrtzozfodkpymthommonrpatszsvrvkbrnucsubwgqrjwygdxujgyzaapuirjkcihxnqeknmlkvfoucszxizxudvpjnlycmwmjikcmtwprcduzgjazpwldtjyicosmwirzewuqjyujylssalpqywganunxalybbytlmlucsbhkdfxsgygffdvvhtwbraaapnkrwrdeskudnroqbpiocraakxlvsrdsfayjdmzzwhqezlhipobogykqmhcwjeivlmsbyjcmcaksrxyfhuiyeamfjdrbfkutrmqquvetyxehrjgiifukrmblamymmzzzkxboxjirkbwlnpziahfknestdyzykpkkbunybtukcirfsknqnempadyiqnhqcrkpxdfptcxffsxczsdjlbmaturnkavwbqfehhdesoeencawcptsbhqcilpclfwaigzcgunntwsoczkrabaiksyorftthtkcuywqzidbxhqcprnghvwkdguiptvjpifaybuifznhvkfkutsflnblaftxjomcctywpxhtnjfttvrsvbrsmxzscrdtsuvcyxjypbboioxiswdajgipkqfvnjejfedxwsraumugxzoaefkxndjzamuqpgesiloawdluaegssfnbcsfysmwypziedffkqzgdnpdzyeprvapbllyzvdxtjdntmitryoszajiyjrctyutpgyscwchgywnninewoonozasfubclxswajqiwybcxcqrxhndluphxuyftgtyljdsmijyxanuikkaolxrbgtnlmdoiqcjuhlykbuuilxsxifupehjaddmcifvxttzniasqwpkhzpnvuqqxyouidcuagfwxefuxpwnqghjocqcgdukckwwaunpaecpziamrqhvazqomcffqvpwpbiuigsxnbicoyijqtbqhooqktsychczhpgbpfxzetzdqyknsllxvxysnqvlftncenbwfndlwbwpbzyfgruxgoxeftwkzwashmixeeuhycvcxqctuupjlvbcxdchlqzgnfcfqnwlmimyqnradritnnrwofyjgkhedabbjuardqfvbipeemhkkuhqwcxpajhiwioszgtlfnjvucrejlsjelycomqqkekyucnmiygdzsodwawgjtqqjcnadolgmalnkvwtwfcfzzjtcpxldysumwjhsjnzmjkleaubyeftyzbokkxocbdmqlrinebgyqwdjlgrkvuabdcdiafmhnalfmowxejuicpkxgmzwtkoiqdputefkjhyyklrlfsgzcimkclzhtwthvhuywslccdjrfxecxzczhzfvecllrcakobjmlcdiekfpohutscmlsnapsncyynkijfueiyuhnibsegbhyzmpqbdhxkvhhtftjuacxbqizdabswripwwzscaczsydmtfqjgrkdfcuvebaxcdbkgaxphwofaxhvinxethuuuzrrhvifoaqusggcmykxhacwnjztyorgdjtyzgdkuzawmyhxgpuudfshxxoaiwctekywopngtohwhhrvysfiimirswukoxnsyqaesszughytnahycymjikontyqeahmwxwclxrukowtdlmhcomieejbknypyzmtsudcxkrrbwkhopqjwpuqmnhyecgctbxqcjxtbsmxkpjmrvglfzibbaskfirigbizrlqbvdmyeteekfyuvxtlfykhtkrqjlndioqqisygvickbeobqajubwexsnyceoqadevfjqtvlaxwstwxbfbzxqqzyhscmpilonjsvxyqqjhwntymftytvagwgbbmsbaaobfapmeazjwcgzetlxzjuggznyuuoqiskuuoofclewyxyrsczezkxvmtcgqogjgrtqzpbpijgbmgfhiohqavghjdhmwjoggefypmacfcyygkoneelwqdemwebesprpbrptmhyqwiyeccojtilwratqniqdelwcfmhjbtggvpqnzjnzcymmeqjsjzxvczltwdcodnpzupzgrjjfjegcdxidvmpdgdchumqtzyaycgcanlcdpjcmldtjpksqozjnqeauhxjcuuxhnzqqdsomxdkdldicrpkdaehdbpmhynytaxbxhpxtltahvmtfucmslfsrxcztbalmqjtogcfcjsnfgbrmgbecwltehlssgidkhvfsjzycgvhrlnwglvfdjnnnhrrgrqvkfgisrlmvntnotxcpewysrourttxayahwpcdjhmlbarjcfyhlesqnipbbwcvwlhpsawxihjqvkxurhzwvpqnwimmcongenyudljtgdhihfafhcwzxskwcywvqvtcdzxhycxihwwzhnryhwoekpplprtegdcyvpezqlxdpyfwtldpbilyfhdqqfzdqfkegnibleliqxsgcssfbuhwcqpjklatkqjiivxxtxgdfxmmpizmvtxascvuclmnliptffnkbvtlavrvfsmkyhfhfowvhlvnogzzofnpuarzqhytfupdvjhgupvhlovlbijpvtufvuawyauhawthdhvpcfcnlrgskrveawskkqsouuobylpxgwmoevovmkcgxjejruunhvvljfwnmvhlvegexjzkrlwtwxfoefqecnjgaoaejdimfuizxaxnccvvtdikkpeihqjnfgpditgydpbypnkynpeebpifczejoriguaqlqzkhpjjivzfbsbvjnebprqwpwonkcfcwjhvyvlzfqezgepudtousltruglglwajkkpagffsnetbwcioyivgfyzbcbztrdameaaeiwidltvxyrlxqnfguwvxjgjqgltmotryhrmvzjvqrphmelekflmzqrpjsdzqeuvdshygurubzafryddtrmdkxeayrdblfwmitrowaucgibughacynwfrbalsaybdkgfocsvonlaqadzsnymmtwzbypaxdqlzicvcuippplfugoszujuqnwncwwyauevdubspelnjzesahldgeaggoyffsoxrcfjbjvzsojseakqtusvfoprzzzwtipdsdrdumhbxipepmqxchltwgyuxuphqayktnzjssvtjdqbdgmjjixotwnzlyeuxxpvvhlxfpydunpgoyyfewjfwvszeposaqtoaqjradgfsfmhnhhfbaxnnovgfnxtnwcknspdjroxjwreypwtvnjcwskhdrsqubpjfbpvruocvzdcsyjduxcpcwpiwnkiwvsbxggmnivryhqukkrxislxgosrhatatfvxpkbeawlzylpmmqvfdqeiorayhdwfeedtufgrtpuhulegbxyyiondccxpbasjumhzjqxhtfqznbsexrevxtpjznlvryphumyxcoexcfsvnpgysxqydpsfsfimwbsfjmabpaohzizzdvjlkbdojpivcpjfukipopdwrncesozzokddupwoosvchtvlfqtdnppijjymnkxnjakqpvufelqukqaaucyyclmfcbaiapxcbohtabksfvqwdtnlmjguebwkftswxqjsmkppuiwgtzjmnteydreacanxgtoggiugreyradzehreagzzjmhhqdqjfkjurbnimvvzoyousnwieysxisvjnjrltpaqkrjtyekuxoxkutqepzjiqubnjkepjttarttrhsjrqsmlinbgcyfizipauzstdmrjgkpkyykspmcpfnvphicomqauzkixzsijvunuzhmhgybhnczknecphgjqilauwxcsesojtpabclhmllrmyrxexsjuivhykistxtyjibqbokaiirzjzjgrrnnqfzlxlskxnkkckzazirwnjlpdvvbrutvbquqmjncchferjhyoasvnepjljjnnbfuatwfmddfhhdzdquaecpfhyjwybvldtjbwukrabrizvvfamdkfeckoyjiigqjdjrwurkrsgorncoezmsggnifclsagkgkwbeotvbhnkxifxrgghapeeqkpfdomvisqtyqifefiuvtkqehqflfwxfyemyaepirssqwmtproxuvfoumctvbtwhoezckjesjsjdqrabzeznejvwgzekvjluhrqldivgblabiirbrtmsgjackqviwvbrptdqdabjzbmcwxiktmrnnotpbiyrfiatnwplgfdsnebxpmqvrywdpccloaoljcqkssecozdfyzdhkznduvmfjtielbheuucfnxrivelawomrwyubvhvemtadhjlkwyesljrxnicsyexnewapubredcbgedyldmknzivbusygpgxrxxbnorrchoedkailmuopyxcquyfuazurwwmngubrwonzubgykpnybnwaogbabfrbpiisvckjkswjdybacfjdfizekterarjgxmzcffpvbwpuzqmxjoknbxofmwpmbmzwoxxxrjqsadhddzqzsgmaiaxiywztdmcparnlzxowmfinnwougtuhxsovpvxfhpzldfwhmauwvmjlwbnyaoilxivkjboayohehqwnbjuvovujbvmegcfaafnehysqwwdxfxjfbojhkrccpssjuaewcjplwljivgmbptyyvfixcfiishhxskoikzoxzshifspddvqsexpoyiggyhumimwnntszmemmhvrjbipwmfjeskiurbvdowdrsxuuggfepdujcbuggcmjbxoibpcjiyamxsohreemrxzgswygzyhulrqkmswehdoivetreyosjtdubsyhyqktohzbkbrbolegbdlraofwbicddgedqusuvnexbopcfwlxzpdkfpxzxsczdloltwayzwcdovivhsjwhpoffzsspaqmtwdousdwqopzpmpjqwpjdxjftthxvdfgjcuftwatgqzeakprkpcdiptmuafcrflwymgwtzrftuydsidwrhwtlgeosslszdifsegknufmyxsxrhsqrdvfkxrxvykdnmeklhjonlefvlzcwjwbxqeueqljjeqjjfpdbwsecqykviqkqtetuxbzrzaqjxjgwniwgwvridbplwikpwlcbwlmnpjrgswvooiumbpfkoylowejpfeqfntiwdiwwfkatvrddbimsqyqmbpkgybnweplowyipegsrjlqbyzsfsoiqcvdkdllcffjcwywucdalacmdninwhoqbqfqzmobkntkiacqqxjhvwjumemfokmtjhitfohfkdxxsecoiyhotvfdieafdfkkjznpcewevewnghosfjknrgqikjxdspblgeetduurdnshdwbeznuwjdprgqzcqxpvcelqbcovpcllmofswsrhcgytfijxcrluvuhhdqzysfxxsefuygwaiyobiufvfnhzplorpblphcdautnkzuonaaovhzmwtmwmticfxdlnfkaztkjvaggutbmtigaejztnabhphfezfxjbcwlxydbdfqyqkrbwmrfesmgvmwljzgekxoplsgsouqwmiblpzkayhsqnesjzdvbalpwlaykarjqpgcogdznlkoibkofpkqxsaaaiywbznlnyulvwqylaldmjbmowxshqsbonbagesxrwnnsgnuekjkagkvgozwzvqkrxmrnzewttwwomqjhzwbfukybvrvzdqsznrvkpffpmexxunkeoncrcbpbgnkflccsvpuolqxttwoaocgqwvofunhxjjpgayrchxzgpdeidesgblfrmekvwygbprdolpmtakefynbuyjxpjusbtvhgvganuudrbniyfmcthrqkqbxqrlumprcdhkvtzbxckrsisrhqwheqlqxiedycdvdfdnippdisuqsrmsiqyntemecaxezvcwhjndjbtmegmedxinrqisidmouczugmshtssywiordzcqiuwtacvhhycfhnlgdfrjinpslbhxbroqgnhpivneopjhsjodassnmyewcqyosrtecooesfxhlibgmniuivboafhimrbhkjzpinfeykufftykludrzrbcuaeckwrltmsrwkkgmgsibghyjnwmjpqpsexirfvytmnnwhqhoazrfppefonuycjivmgvttjdvnvvsiwytchohfdkyblvvsezfagjdwuonfswbojfhnwcwovupkqujxjkavpvdjoditpuhyxiogumtveezvutdeuifabxiosamefxpklzevylsucyxptgnllupnkfjkhtbzzoauegfckpwnyamofyibvfjvvjijrgsdricdbxuauizabznoyxmzivtmqrorhgityycgwtvlekhmnxplzjfxlikkrmmzuwyebbrjogbdgrveriyczvekwprmfclohgmqzmmbvkgoptiifxplvtlitzfnpbizpolcniluvreclqaqfaudktyppqnshrenbdzxofywlowxpvonumqrvlvsghwievlwcvnbbkfpgluwlgzzmwnbzmpkbrvgmrsidxxlwxedeweajydefajelgeakttnxwkyjebckqykxncweotqawnypyslibgnzodhxqyrknpnufqnvbawuxxsaiwflxcdeonolkcpinxhlqchqsofillolzabkbouvsjlakwwjgzxqjcfzwvkvyifprdqmrcdfqikwsnuofxwtdfhppmkonvfyxudsllcxdpbjtedzwfzsvhuxdngquteckpcdzlleeoxrsezhbadpdtxsjketveuvpusmhntscwumziczsfdhmguodbetiqqdgpsirqbbrdbkcmgodsscbvxdxqlpxgwvwrmogvertngysbubkjdxergfuqdidkrfsvkrgnzzutudiolotvgtvljhmrqjvemhkttrhoroncuweeonkupaarzvodowbzliqrnrprdgzygrcbhtosdzdphmknutejtikxdfvgdqtftflxktvclcijueyotgmndbybfbeiapahjvzuimqaorqdlucncfunocqjlgdnuqnpptcybxjrpcyaboukjycygjkjbgtvhktvjjhssktakfjpoatfbkatbflsqkraoqumnwrfdgfokhessxuhyhntlfvmkugccsvsyikwohamxuvocbliitbsudfkovfpesnunurgejrwgdwzglqjpvdgqxnmzxtnxjkbgjaypjqtpmsxbxpmqpeqgsuqkjbwwpzkyrcyfrkgagotgybzqcuzrvnoxsplyruaoltywsejvndqoomlvkrwwruqbsxgzlvamcpbsmmywzbrtciyfetiwamdgvppkaevunpvvadnnffudozsjphzejbdwiezyuwulsuruiyrmqutmundpwepdktnobotmfbpscqtzkdichsiwxtqerngjerkfmjhzugoxazxennqtdhaothercxqzzoovhesahkgbgokzmaumhckerbhsizmygkjjxecyorrlhtlobsahvmyujzncmnpdolroprnbzyfbbwaveyxljezddamvvthktcjfmjdlkkoeghnscnmjachotyaudbhrmpaeompbyjsssiazfraywzeqzqnyraxsgtqtwhzovsgtrvhhmdlkcgbzpkqabxybdzxahgvzneqviuzecbkteftanscyxfkjndyifggqzrhzqwqzodyvguscuhtpkvgltnswjkmymjmxwckevsssoxmdqkjixzkozqzisiyjmhisttvpbjmvtojwdlncqpaycizntxdvrlqfylulbjkfudjafxcidjqqxphnoadzoqkqheuzhlajtbjyqfeblnhupnesrnbrviavkheyceorqaisobobzlxehcffxkwinknnujnwcxafdrnxqfozjdlnlkqjaylbkgwxavrplepmszjwwgctaeisvjcroqyvzegejqcajclthuibmvtvvmhjmruugoscdhopmdafmxsggsfjmdpyfhovdttcvqndtirpjtbzzuabqhssmwlsbcpbrpldyeaziqotdainpbqbsdsimjcelhaamfqfelfokhhgpdyheriaozpclrsmhpzhsmmvmcppvxhbnruknliasrdcadnmmdfwcaeftcususulmrboyixquhinwgimgkoznaocsjmztacbxqfnvcmziroxizfeljzfxsdscgllzbtfqjrjhakczsopqcojyenljonwxfaegfvivombhvkoehrbflxkliwlsikmmsvzpvrdcidyucojvuwipcjumzefplhfcgsiuzqtutjmryteyksjvbikolldceklbcvwffjhgodxtvkxqorizbnxjgkjmrjxnnqwsdobaweadepfrxgkeskjpmpraggfppgkeohchbinzelfaondidtmxlmzihrhqvztxeqgvydmiwxklufjtvlkzmuctxlkutyajaiafeypqcvpcscnfdpgiigwpqbqzuxxpevrpdqhxlcomntwzblodwmzqmbnjrszohjouhlmmccbrmwvxvxnmwfkatxnjwsdnodyxpypkjyuybzsqqoyswdleupmnmqfnkurgvlaooerakcdsvzmrmkfgmhyvzkkxvrwvbatzveehqdqotwikifmjmptioyuvucyiqmntumrmmxjucdleommbfwbbjuwqegcibbfljajikmasqkywlhamgeyqvovilqebwjdhjjkqmudspbmrpuemqwrturhvvyhlskmsjveaziinwxzyeyrlsxnsmbrcyhokjvwxjqedfcnixekgulhhvfemoujsyqmmsdkpinjtpemnlunklqngomffakkajigsfyfahlypmfbmifnwfpibnczogiobdcbpjofjyoxciggwljrxqettcgsnmiynqkdveeokcjmogarazlrfnhngyoadsyqhdfukeqsrrqjcukkfcjxttyrplvybluumgiqyxvgzguuwvczzcnumdsxcczkhwmkprfiwswvjhhwrjizgbyolcynrgbqxfatyeywufjcfhvvtugjaexjcvfrqthsvhyedjkqlpehmxwroqvblxnpcnbvxctxzcsehplpghmevdhlldmaajlffdncydmycclopfnanzulabphgakxvxdouccjujltplmjllcknzsssjnuwdjusqqnorepgotcnpgwqlwlzlhmwqpzahmntzwhzhvnddammkiqhcvrrqsjchpbpmjufqatjiryszifduducrihuiduopbcvwivzpfkdkivsswzzryopopadtyewvhsogzhshdjvjvdbhwzpnjsxgdbyzkejtqiglwstoufaskirtdewdxjedggempmcsjrssuzjbqzzmyqlxnmqjnjcbpkkalrycymxhsaxnzmdzmrigovbacomeftwnobsbfmvnwpoowyciibcdmvtqpjzvjwebqylrztexvqxbtrqrzbhjoumdnfrcwytbtzjpnoyvyshiwldmneoasnmjcqjrsktnsnmfceyeguthekwferncfrslypsiekgpbmpeeqqsxyznlnwxvnsfcsduwvfdpqxpcefcrtgbrrgqxhfwbkemhmhjwyflogticqxftechupgaybkedpmijexjgyuoptgjbnkwibcyaivsqfjitighicbgtdzsvajjlyltrcircorlsxmtqshhnsjathjuphepsenlxknfracoixfehydcwsasfqsaguceramjwpstjjuompgpfqxbvtflnbpbxrmonponyhkentovurzafeowmwjswajqzkuhuglngwxmefvmjpmdezpkkgjzhhtfflsjjyqriqorddevgbhixigmjbibadbqxtehtyopcwsxpvpxiymqednssuxmvlqptpqghchozzgvsuqyuvlntybkhsomuuojrbztdlzsshvkuhatpcneumxsunqlytvrferxsowunpwczgiiieschkuvhrtjwclnaprozcdcrkpauznwtqkbfwojmdqzxqmvppevfzfqdeisajlgxoiskljllhoxuagvgqdwvdffzmmspgusvblxncyjqhegazxcdlfgpdczvhnihbjajlyopdnvffvfoifalldybyogskdlyudeblhcffbszqfenhnbfnddeiznxjadfjrndnbtwpfovcsyqncbqmzatxxznwunxpucyaaydzxcrbficktocqgkzbxpzsnzhkrtodvwqxfxqjdvsepmriwrggnhchublqwlbarkmekzrehpkoxynypioebhaxdbbdnmxrcwrzvrdbmnwurcrwtuitmxchxawfodnvguzmvpeatmfavfvgitpkkzitekvudhipgiljmsxxnlngdoswhomnrmvhrdapuuaeetgqyqvegeocciwzmuktkjdzemsyfmxjqdzzjuhisjxvedoqavaxbqspkwuxtoxnkyjqohogaynqtgspovlyhndypnxjgioojcjaotrfztfzitumdqsfrpjbdnlpxwkkyukjehhycqqhmidprqhqnhxijuipqcgwwuoywtnotscnlslliliibhsxmeaeklnpipblehqeozhrqlmufvidfthdlduirzgijstbqbowmvacicpvipuzbhshckailqeetgwljfdthkyetgumudyfbdahamkuqbdlnueoohgvqtijvwbjebwdzmawkmtqhpvtyqszjywxklqstkwysvrnqudmqgzaigxyqsbxmpwriifiaumyxxcrukomdqbfcmyjswuvltpthgklzmzupxbavsxbqzgehkfrmdjbrlojsdzpcaynamgtmfftoskahrohmofdwtndyrmeydmhxojxijwtrrfpcfiatxtiweauyjfvquezuphrnponblnwwwyreayspnqxziztcpfuppustbnqkyvqdtwfkumigmcbtpqmkkqfkydowughbapmcmodtcylbitapygupygiedhndpibdgfjrwkpettqducdouyxwsloftgoigvosemfpurznwsonvsnhkbbcgoxxcdozdwyivvbntgpinnphsqyxsccvmoeybxoxvivuhklptnytzxeykgnnnnkalbhqibwrpqhqcvgurxikweheysvsfqebxxbvbcsdiukczolyrnwtcyzynyhmkaiumrbxnglooigyjtcpuemrdskqteveyctinmxrhljlhzbrqmlmsnmvtravyhbdehhazeivejacywgmmqaarhgpynshkijagyriqcuulpnjbrzoagbdfuyqqkdukagzdwobbdxinhdhmtiudwiasfmhlynbkaqftjtyennoqjsyssqxvmtvsrjubzimnjdvooyjqrqjphxwrecmkmzmzyqhjtjkzhjacvhmlegsjrtvkvcbypauxxqzuftthkhjgfkhwphccaplrjarjwmpztfokafgmntghoewvgklpcizbfpjaqqrpdjycliradehvxvkrefkptscmxvpbbbiogujiizwrshaarsbpvsmuricjexsqwjtvdrfpdxpqvcwrqumenscpjphbtsnubequumdlhprkliedcldgkqehyfvzgdsxzuylogbflyezushofrwtysojkwrfknofruuxsqvvuqxassfhmlunjjcuziqbsqlvdflrgyskaiiawnvdjpizxgtqkxipzmbmzjiaemgymemkgxqtvwxwjupsuquhmohbeyhccjedduhfwtobemagkptdpzngwnazcytwpulpuislegztxncpzvnfyjxkszmofruewiuuehrswrmsxlbryhfypzxhxlvoatyuhlgxdezksmyfghtwsdzjanvurqilzxeszabxgcwlyzuvzycdacxqloadjuakmvoajqimgpfbdthiurbmlhjqolgzjdnyslenmjaqrwrejevpbzsoxhunsvqqzaxdjrittliywubbjuhenhxsqcbugqsobrrvbeeimehzxobfmevipgwxoiytmycjlfswdocjuqiejtaqmbvppgzuvrvjdcegqoxwxczwfmswgcsfqfgmguolvtxdvtanmcaonmirzaswfxlvkdswdwfnhqhnbxjlzqafwcjarslnsvzsojrlwgaasksmavzymximbihhcpyarhqowlxnxlrnxfjabgjvrtzfxzngmzdnzfuyzgyobkxvpauatpikojnksinexcdnstdohysnczwxzfsucharwvyptvadnrhjdnihdipgbiqjqsgxazsupschptgrxorirhwdmkhxmevfzpfvhxaasajpywzaaqpaaichdpovlrcbakmclhzvxvkxdtoxzihegizmfysftoevojpknmhivlnbeftxedpdmssurbywxauhleefyprejnziwwazdwupyxavirmvggoecabyppkdmeslagocuuqydmxzfvefmdwoktvfodrieopwcbivbpqzxubrtjsgnnblhfoeibkkumphncvhgndictmasomudxwnkbsfasefdliqqslwrqtipbpynnnxnbauqwedqtbglnlsebmfbbeocmeurpwoidrdlbgsczvyjviqewfgbgstdybdtwfyunwrhuvubafbryjhmiangyfuqwcromqnwymcjfmgyqcnofzdzzdhazzhvopforganvxhgpcmnknrsguupobtvopfdyvcfmyvgkqorbglynuqxanfsfvynhscxrpghqxdicmxvwtyveteeppliuyqjxhwkjjoljjnfkcqdneyuugyglpycxjkylsxynvlwgjrvwiyvgmxnektfxkhjebwqfqcixmhfwvgrmjrtbivwqzupobusriuisdsbwqrpnmyulnsvibchqhmqfrmkviesdimrwinrrefdxretkhlglfimydikzdzjnujepypjawbqadvxxcpcvrbujgdpcgkaqcgoqheihileiffqkttdtafrbiyyyuvntpqcxlannpyobhwpjagjychjcvyymubdlkmnfvwnldzmmtybzfhtojddhtkecruzfhzkvhvxhcxkhaehzmtgpeypswcabvnrkbkmnqdqskkptobzbpqstroxlzuwlqhektfqsefnvtyzuknajuevhrpjcftzwbcwqickpmgpjyzdralicjjkupqrgjrwmyrfldzpyhcduxcqwnqcvnucbbdkoeuqyxoouwcdsxlmichquryvdukycxkhpacutqgdukzcacevjqoaryctxbhhmqdgldullhiqjvbknluxussxfwrhlphtmynqddtxbcixyywnshpnhuqsdddmeefqmxilbrczrglailxwlyostxpaxmrtlbrhvftqzclzyiqzwydknvjnvmbcsocykueoyoelbtwvrvjeorsdbytucyislkszyilcenhjcrasbiylddhkoasxqulzvwwiexeqcdrmdnvfckxyxoweniaxcyyrafsjzkpvrcczlqbctordbynvpmakqknuqognczskrzqlmhznieaocwlujzrsxgykvvnmiuvqobrpddejbrgyxxtixamkktpvytrvnftxagnndwwrbsppjlibhgmzgcmtocbdahmdedyjmyrzkpkunanrkbjbawtmkjffgwiyyjhkmdxxtjpppzgqvzthenibmndmjpnlpsaoqpwvzgnhfwpulkwqqzmtqhosqtviwyvmkttouwhozfkzxqyxgcnfbnrtvdzpzcwojfivwxlbhnolbfqtuyiismwpaekgaoexmnrguerxndfapfgeecgutvufcjpnvuybhbkyhbjscubrmhmtyfvcimnydbajxovqgegxnqlbxjdaxcstopjljmvruvmyrjhtxbhwktmefnzvauelhidnfityargksajzztsnpswmkpfvutqsekpgwezistaeriwpyboqyqoqvbjwmncifzrakvbzrppqbtlsguhpujtadizifeidlbzenfovfzezltmiydkaokcmsqsvnmyrhilbkrylubtxdocguqtiaofljynqdyinihbvocybugdswxtwqshxgzvitbwyzxyhvudgibhawijdnaqqsoqekpuntmhribchwtqivwuwrfmrcqbxjilobiyhsuqivccmhhbvihhefcxryeznozpfyzvuiwckawpktpvdblkslujqlocbrxbkrnwncpxdwxacezzbfujfebsuxqwbctvraecwxpqtvstkrsfvwfgyqpnocnkfbdwfjadczghcnklmtfmffmvyjthpnjifeponuvaibhubnbjjwyqpkgxyuemauhyrewhzklcfehhlmdkfqizhvnwgxcjkobhsxwoyrvqocrapmkrydrkhoswhanzqppuwcnrdyftegssjcqjjqnbgmbxzzmtcekvdmfmkxcgskuvbrcpgpcndqhsqjblnhhtnsyrxrqntuuuqexdwcvxyrsdvtjlwuyonlpjzgotpvcalizrhiupsnttosmsllioongugjzygeezszkuhqwdjfevfqtbppeyiyfdbgsbtdzrzozzktzlxdneulukaghggoxryicrnqgwonrqgooitvnllqdsiunerxzeuhizhyyjcmrlkfihnquwzdqdrasbqegzvqnwmhjnnkobhmxngvxajtvttqhndoealwakjxzbvhquegzgvzbepfhlmpcylxlcxmnuwqybxnwboterafdzpkzxrhyjbkoxsyosqqiuuoydxyysgtkpengwfahmkvfeyhkpzvktoeylkanghgbvorcxiojgqamvrmutvawzlkmmrrqjominpvzlstivdqbnholgpmrzqjoonwmumklzzrnkvtocgdwvmvdfjmiiezulnfnsqyknyibxvvuezbgpemtnpjtfhneuliifsgmcbgtsvvxejdmzlcpnlhkohzbjewxfdpbmjwpbciwqxyvxyohlpsdduimkyiqdffanksbtznqognxwoeqfoarjkonkgbbjfhabxkujjsjlcghpgpedpevvykqzqbdxmfnpnassmnlsaqbddjxevfnokvyyzlsajqlzcbdkgkkyqbmcmwhhmmkjigqffkcchdrgnhrnrjvwxlelyrdokyyfegdqdluasjoxwgjaegmhfjhlyzrsxkthuxqujqtrmfvaxzrjleadqqkbjbbfsvhcsalhnzczpmidbvfieajibzrbctwyxqoayycstkzlwcbjknrqgidstofdlfqymfzbsrlwbjfififxkmxxpbqthnddhzuhoemadnldrgxyishsineauflclwqjxlpftbglvlglhvlhtybynawplhfzmrwblyjyhsjgapeiqnhjjtwunbbpqsaihflbplzhodijhgdhuxbiqbyyxftoxxwchkqypolfnmhjocpnmrfdwoewzbvqxttonhvnfqzuqogovojhdyxceaalulmzwavslaqcjpxxztpemsxchmlbobqvztgtqgtsrcksiljpveexdvdnnogdayplhgiqzdvjqgbfatlurvhclltdgykrsqvelodqpomazdazhgibepynnofqnneenyogmahgkgrsooncdlllxielhdpiqaxqcgzqdguvatsjtzjzguzotwzllmnfsbkufrxybnnqcdvgmiuxydflrotrwhnstogvrzsucfecgvcvadpownwslzqpznsuoceizucngvpodzjpgqcxerscbngyrjuzzfybiluivhyxniwxjdbzrveotbmajhkkaxqoznkrnfujznttiyjkarpsuaodhpsiwohzdifpvyrayqtsfqhecnzdurrxtnxlpmodnyfvwseuqkdmveimkzbcvlnrebhexqvaublxcgbicyrrnhotlttiobgpljnofpwbxmfjqnqcpteeprzjemlmspxpolvuyfazubhvdttbufaxafgsvwovwkzikpzoagcaayzlswchjlbpixsshhldhrvaejzscqbedevjysyjiyoqfoeeqymgwfmeecrdfobirkdpiayznsghsytxglhwnnobnkvesljmmosolihceuheqmtuyjjqyagnxpxmpaqarzrifoupyopwplrurbduqcxyxosblrgdgatxocidqdxkjewshfwjaataifsdoofddbprtflcfkyncsxhdxyyvewnqkcutmkjtcewuwlbdfnmktyemizidvikomrnrcpkiykfkaixbexkuvqhnbazrinkhyxodcpprlbmhtlxprkooentcsimegvntjszmchymvfsyydkzxptnayergjvordbuiudtufvkigbhiuxpkcncsjilcbuooqbodewicpfeexvtayirddfooixwzocyqguroftrzqycyryxjsaecdyzzjmnmelfaqjosnyhsbxgxafmoeqxafpalxcvnwjzturxthvqrtgwokimtawoibksmgrronokwblwvdyiatduswildntapsyqpcoohtwoeywxozkrbqzjiaexcduttoduhrdxmhprknffkyjohkipsodjwpwbibkamaewakhrjrikfaspwcfseryvchigbwsqymdsoskwtbhdcumczwwjwuphwqaocfayddrrffdftuzhobnitglqsdlnafjfsofgwuturyhgykiiscnliumlozwewaxxkzvfadffvmvgdwwfxxwardforddiokrksrqogcneaujtqjiuvyttlrorrryunfxnvkmyzctlncahzwfnuztizqklugwcyoftpdmvpujcgrnzyakfxqvpxprmokpukquataetkcpyegcjzjvieibhumfvuleuesshckukxdiifytwpedhjazhnoyumckdpygttixoarvhvnyaknuagxfrlwqqwaclojjpdlsqzbkfwreylhkzghbpdlxanqjqplbhgngyyanelmzduyfpjgojvtegrtbuvnjihwjvuvawbalfxsgwanfkbltfslpwisnjymvzztnlgybxsajjfpyldoobysrvdposzqhotdklyxhyuidyiqowwyrtckppyrcnstexczqwkfmlchasnhbkckecdkceywdaiwnzkaavrsvtwmntrwcfslsvmdsvpbwdtoirpynokiqmdsewqcarkfayanepgkvrvuvifvzuebqrvghwfjvfkshcftwyjwncikehptwjddaehrfssurehkboxxraftpufneznuxwekzgtddptdszfrikkiygcquhvivivmauhnudpfbsqcgjlygobsunzzwlsvcbsutdircmzovantughwxqujhbschyeicpgoezjdeyjrdsufureiixwfdnsszrwckzpwtniyjgayrkwpxzygtsfckqtsibjekeamkamerdgxbvcbrzctmsqsqdpiqzrntmoofyaotissqfltaqhzffpcrpggzupltwusdcthaqdhrpacpnmugoytbsbammoxrcviojqopljecgshosnzrywfbnrwpukvqrxngbflnxkeibabskrjfiheifxuqdahcryxlzjlwulzmfldfdtijzfvdvmkgarlnuhrtmllhlgytzbdyrwxofjugcwwgybawlpimozxdrqscwywycijnnxzliwnxznxugtfufxinkrbtdwvqtbzrbpzoyfctttgmwejzuwbndkegxbhzooepwmigoxtfzzdoclmfvujjnkoynfvjisaivcboroyfdshvznsicjldqgervuycpnvvkjlfbuvqdejdckqnooaodkmlsvmpbyjutgqintstqgstjtvfcpsmhqppfrxtkdkapebdnfascjycylqyyawbykzchrfmxuruuahqltyyzcoiuwjaljudvrwesaclrodlulylwxubntdjbmfrknumkoaocdqypjufybwifiealatbhbublhikywntcgoxzrmbddghtfkycekyrdfyediouavssmcpkxqcowcovewxgsnzjjxkkdimnqptiisjixhpzvhwfendiemeubfoguhknqnmwxrxloucharbaaevposgkftmovigzoizhurqtosrdvdplatzbtwpttgcqtcltoxnhplncbbpvdznmbgixbyyaeyvpfterrkicxmsifywmcxehyhtknjwyxmcccgvidevhfbctcuneouivazownswzsgjeqhpaiuwnpdafjamlmfrdcsnqjyznbwepygukwikncaaefkexiyfwnzcvhmzsnqkilumqjuxtxevrulbmjmkraymtaokncbaptqxobohaajndvpgnyabxxuidyckyghpmwwitiaonpifrlawprhufwpjhnhwufufnzclbegbyarjjdwrdgdpyenuahqbdpuidvvmluwyudmhejzjrutwobhsgreqpcchrmmrmzjuaxpkoqdecypnnxxooixtrruvywjgnuxohyiooqahpcjzicgizuvsexhuhcyraxrzydewrryrdhgfaacarvwkbpqqzpyromjzlnxeagkdhqfuseqdwlbbetdehpakghltysckbeohcfdidvgmjeiectcolnvpawydwecfdmuuhtnngvlheqtjuazvcpjwovejryqqqjxigbaaushnlpvnkzhnqofqzmfinaniwfpziyqciqllxpkiieampzzzydejlcmvsnsheyjoxfmfbuluersomxngxwvbfroikhvsrrxnoduyfakqbmgseesmsvklrmeusudapshzbjfoutpchsdzcwsrsgmeztfbdhvnrgwecqdnrdzdbgrkmwbdgkdskkhhaaencqvcpvcwvtnymibroaxmlxnhiibfeiqqmltzrpdqlnwthbpxmxrtiigxlyhedcdyudpdafrvgtdnevhhywnxuahsmyxywmvdqtvnplnpgqyuunrgcthounbmhoioxdaxpuwyjlqgcfoxhzvxohncgjvcflcdvnlsrtwzwloydboofldidfyouenoynpzvgchhbcxyajthcanmojznsridyzviyzndbuygihzxgwymahmxtozesncvnbdqcmgqkzqqhzlhqkhmlghdbfkafdkywfzsojcxebiorleuzicqlfdnupfaprtzpvtcvygxkakhxqkzyhwgapvvugrvwgpeshgieywfrvosqjnyiridtuwtzjfkstgdmhnktadyqxplztwneqcamtdgnjkvzjydkbnkpbowvgqtvfxhpzwrdfgqtdwsmbsrvqpceokbuljdjtympscrgtjaztlscsvjxbmxzgiycctqqzrvbqxaqdrcpbnmhxthsvteptdigymffijsmdclqyhtcrmqogkpavjfcgjozkioeshbtdcfhngiuilopmsdqmjhofelghquptrtrypidiyuubahzzoyczqmsdzwikyczqvgwclygyghuumujozrjlahpmtvbgoolvcyobavoishhydirhegvrgzqfznhrpcrnvriufuutcbqfcbokserdompeubqrxfwdikhhehriumzhnbqlfdakaadczadeebxpiaqymzgtcyhlzwnczhqzznjtwafseuznuqsiforswcchhmmhztackinokeptxzorbtxvrqnyrooiaielcbtoqujceljwtaicldobjnrgiuhbtywmvtjlrvzxegiunyspporllbffalnovxvfmtjybhroyddlawmqvotoqxgzmbonuilajixuijvzlvjnyybbtdgujzpwnwkzqiqannytrpjhiwwcbzmxzgitidnarpqwusnxbktzfhhyjokqcrsfuurqmkarslfbmjqfonukznbsdtrhioacgovxvunuokkwzkizrymxeptqecvmmjbfdrgngwyirqubkqwxoygrjanxloyxfxyaazigxvgeviehhshlqeevpqqalkdvmehzkzlmeaoztysbwpekgtkfdiwbzxzrquykqcbvhuavgdyizufmljrecqhwwwmfllqrybzdpygxftpszgvpxflivntdwdbormglugdvqdbrsffckcexgyvwkntlbmjiofxjeibocmnacklfwqskyjihbnpndiyzmzrxdizokzducocflpbpxkeoinbxorgchkoyhcbnmknhtuslfqjaagaqnivrctgjyndcjxgtwnwgqarlcnpqhfgqregchrkmzmviibwyvkuzoenleiumqsfiyljtpacgqrjxipzlkwskzgxmrlsvceqmbgumawvbcevqqopigjkgxqfdrbcycxcdlnlxjkfheohrqasgtqxrzoycvhjaumsgilyneycnnphtrjuvhkjbbpkqcuzbrrrueefqcymtlnudxwepsdzyhbhqvnlmyauqwhjewltfpwlxwmnilagatknnddpuhbffuumdyvtxtvfiytsfjlsxlhkwibbdlhvzlbwzjfkcjxvtmopliaananvzlxokkqgzonoawgptijzolgndaagrhtdfopklsrohfknqftpfvhusykbqgzystpzhcvajnabuvgqpifbzmfezhjaxmyujbjaajzyscieuhzqijqodqshottrwbidfiafrxmmmqabhhmibnvspzewuzkdsvgwjflfegbbzihavgfwwyuwqcbpflxwxdzzpktzkmxdxzfrxuxevdhgnxlanjcdtordgxdghtcfebyyfsvdlhfluphaqfvtywguowyriacaagagavbzwbyruyoimhunkzlfeqxhlbevphfhvysczaalwmmluedunfcdjipkeqvspgtbbsyhxxuuxglllbfsrewfaeclvcfzlgriejcrjnfhwmzgxmgvcrqsicxknwuuxjzfxguozvxybbukakidytzkragluvmvcnvlzaksddfphnuycxocywzcxbvlnorideefkkurbyoclyhhcsdzzkvdnsufgpvhvhypctprvegjzpahxmesgrvxpfbbsiuasoeirzvsripqsnjgncuuybbirzagppmscanzbsvxfypbhupepiwsrcfrviyjlsitmapbtsphlpvfciruaiwqqkmizafsmythcqvdaodttgztgtasdrxuzvfxltaghxuieqtadghxnlbezkbsbvtfvmsqawyypqivpdepaqsvldbejofzkakasqylfubxytqceceugewrwidznfqivselcflfdqsaklvlujjkitcpabahqvphauhactszpzjbzdzjpdirpuvhcrfvbiuloacsdscaplxazzwbteywfvpnpkgckxelhrrlllfduorvesgjhrftjxhkqcwnmihhdwzzpkmgcawshwjppciapkvihnkjdpediydgordqdcmnhqqdfwjlhbpbybzhkuqtvzfvylhcwwsynqiphknasznmawalzlveepbwrwlhnuzbvsniofarkafvfztunnashnpqyjlgopzufjhslxhpdmnkkukvbljutgjapotlshoannbktmvqgivvoahzkamkcnoyuywfmpsidoqltzlymwksglnjzslzjzlplqrkjumgaxmouhyjomnlozhjofjvojnhgheuykwbtvjllwwxatvhuyeegqlljekrrdsdwacjawnibblrdotqlrgoaidaudnphbytmeqhybyklqpijfoiqtpuylrmysmbesqpblzbancujwvwqegoipbhvunflwvcqhecrdjcbmhbcvuiizdouehhunslbdesbmhsllkzjgupkfzrtangvjsdsgtnwucnnpbwrsfqoikpgpegpqtyyavzpksmbklfyfwcaitkiylypvbxsmfnpecztedgtwycnovqbosakscgcwdossenwgodbajxfjbtifjrbxrenogvsptewpiudweezmuwznzzatmyvhezholzqqcovbirjfpqlubvzmoaazbvwtwnipjzgpcufqyocuqqkvlbvmgicwadfhyxihjnrdrbhlsgjbyptfxfzchzqqwaymzyvkqhpyuqfrnedgddctknzeaxwbhpolhrwszxtlhoxeqgokejkdykevdhnkdkcrmogajftoybybalxvbmwzkmjkgzzbcftyfvfmqxshpkiwpmfunovdwzlhvjwlkeqnklldzmsazwojcjnxlnkldyabqmjoyvfcfggrfzmnftdamysxaqpchcrnenamkplmcvjcbhaufxnkbqzwmmmyexybljsabnrbfsjhoieepkvncrxrmhlbwezgmbwkjowoeeurtlgkbeldxqzrobovszxjpbsyncjxagtdtagddtjvdxzasgyzettsdjkppwkohdkwpbikbfhwoqxmqqppqukhzursglivtkshpzfwvmviufstsboooedretoqbspofskexawajefsgbcdagvbwxxpdvnmapkmnhtyipbpcltivyrzxbxnjweykryjivyozamrabtskroeszhlljxwmuqhrgzqzkrxneccfnkqbrekpqcncocsvhnmhckidumrxckhnibwfrycgsrdwnnkzzqpcrzcrxcwzundjcvtadjvfeodlpcqsbosfkeyzdueuevdtnhzztclxevxshumcjafvtwmfwdeynkseibznmwuzuryxmcucjvxrsrmwpcgriogerjnsgtzmknxllsutxjoqvueiwcsxeolqxoonufevicasrrtedtccfskocaeiggjcrgrmcixjjgshoszxxtviizbhhrcitiupewemdqsfoyovoeuqbktipxlugfnhexiscbktxicrdciximjsvpkyoldkieynyaglceyygvdchnhuhiqbnzpupdtqxbaijzpfdwhebtwjvhlvljzwaxexkafevpqtzpxfdrxqahiywpancxvvqmpqymqidbztjftbxtfxibtitybmxvojyfjnhgvusizpftjctaroigkrmncsclbxbkprbywfmigxnnbgmwyywfszakewomzdufuulsqbnnvnlpuqtffkbypldllvkmggyujiuzgvfndgzutunjldjpxrbtcnnxjtusnpfcrcweakpiljixzqjbktlgmaulacximimwurixegtoziwqevyiidvpfjpbeyjjwaicuvaehwtzybxuxkaywrxqfkjflimpxznqqdigfnikaoogutvmqbmhvpudqurqwpiuddbpeefmxqsoarupuamaxpgfvlbxsawheyktlndcscouktubjybfdztkfkpyjqjckepcoosufndwhmnsgetswgwgdzbinxpzmqxttqldrjsahrolquciqsrtwshheanveouomstlsfezattpaeidlnqlnsmbavxyqazkmvhtwxkixtrsjusrnwutmeirqsyznxhfiobthgtxzgeqmqwcexvowldviwpunkozbaxabxbanpjkqimoeiohlesvsoqjzcvqdrkzmvstxfhklaqyougerokvpdqldcqtjjnvsnzzwwxhzqsdgybeedanmxwliywkpydexrmcpqxoarakxftzdriksfdluwttshibthshllndombvvdextghvhbxxeomwahweoqnngxpyavzfivoibdgxhxffvtshluecfyheoyocauzcuzwmptpkqdaxxzxpdfyidhupldmkajohlzyoidphbcefqtqdkzqpuexytbqouzendszkspcupnidyijxsscrnqgemnuvplowaxrijbxuuhmpivwlyxroksonqqvdehufcmiwjndtmkhbrpsezkzstlolxyfcmptelnijjpsuyxtriksatjcdxeuhdgdtawtwnvhuurfijdvegztqgchuuvrcufhaqryzvocmjwuaxlgbkbbxgqzsjeralitqbhshsvszdxpjrdettpgogijpnohfszhiodjlrfpotbfvcudaihjimjzbsveorpcxykzgoinxcbcofqaeabouxmlayxrknbpbqlkfrmvhwrfsmcpsjokviukcocjuuzvbdihvejqqkozkqrvyukhvrudzqalufcanwmcetrxoehakiheyoqqgyauuuwsdvienlaznxuaczejtruubodiulsdbhrenkozgvsgvdvaememuklbwtwqrpnuwfzmjcgkwkwnykofphxmklipqsrovsyrjlpmsctzxvthlmnwhuthqnncgxzkmkubrlxuqphnribonqmhdofbqkzqstoulxvwqjoxpwbobhfyahjgqjhjtancxdxemotyfoouztfnnngvznsscsfigmblybkblfgwoswoglrzlofmzyanqtejafigihveubhxvepiyawnmzlrwdiqstvyzhkozsulzetwayuiowmtmszzerfwhseyktpgghpixnmwsrxjvcdactmnzaabodadrlwuznqtwjpbvfpshkckkbklrndmybzlyelupspwrxtvapdyozmrcsjmrqzjnlqkmraquniciqfetoqrcubangewebgtncfujxolhyndntfnllgserkybgnpkmslaqxknaexvotckzmuecauknepewmzdwfdxfxfetkarwsbcmvblbvedqxuzqkftyilqcyuaqepbvlzgutjtxblppapuaoeutxosyjpujeuplxveejdbyinmkxrxqjfcccpljfyjpanvxgesgjptkobratyykahznffxmlrwynngrdqobowptinfcnmjhfbixlrctcfzfmascheglebqrfppltfkrxhhssulxymacihzwcydlmyuzushplcbrizmmtcngvaogpxisnroyheighluytmvernefhhuixltaiegpvhdsmzyneksuznpdlumrsnecuiwcfiavhimqwpnvlfzkrzzybyvtnhxatxlzqcmvcigyjxnesvotewnomhyifbzikjyfkpaapmgyveazlopcvquxelgyzgmcvzwyjpwdllmgpxctwtzudxvnurzimjulggzqpkrbctcvcnszfgbuqcsxnqjxzceljtijbxtrktyqgjrnhbddeoifumivdnmdjweysskwmuiqcnfizmnqaveznoymrucefaaimnhcnnkkmfqopybjbvimtwxhhytirxmhlfnnhafucoegayvrwqjklzdzggpoenwucthussynlzaxmyylzwyolyloutujpoadqvulnzgextckpcrhxbhdiaftxzgpjzphpidsqapjtswfhetqplgutntmjrpjbzvlxchwynfjtzurinusdpaiwpkdcdogacxyvghduslqnlgfxcqngrkfjxzpoastpwfvuncjrtbhktgcwjbdthfmjtwgkgplqqojhhnewiznksrqhokahuxorpsjrqbjygttjgnlclfpyvvcnijjgvzlatpyzgytdjggfhmizblukobynasvnrbzzsedpubprpfbhhgtuobstarbyxnusrgvcrgfbieivbavfwucqpcjkyaqzkfhwkcwefuecxfohuotsghlrirlofrfdqerdjudtkvbmpjfnvkedhxzwemybrnsavojadzkmhouwsozlphfzxsfbpcegxpvyhovshatvpyuttxtiizzdbziivxttoumbinypxsichcrgiyrwkipgyugxtmvyljgsuepqrlufctokpfvojetlrjnglonahsmoeboqmymhmmogzzwiliislnvrdpbidmalawhjmhgbeahmslyobolrsqsjjsbphutivufuaxubecddqqknhiiueryvvzlvzuzrnveozameqdtncknvsycxsoyvyqzmquvapnxghsdsfudtagqeuwnqrpqekacigjutbyxevyqohzshjpkjircykqltfqumpcmvbwjokdbrhyrifgczrimssvlbbqpknakwopdhhkfokxmizlczicpjlhplxywsiqqyqlkqgwmreovuyyofbrfcmqxiwsmwnolopijixqhlglrgnlhrcysfyyfwxursftulgqoxkviwomdegktsixeknnbngmvkajdxaqljxjqnoehxjdxfhovzntqdayegyxouveagzroqgykkcvyppdvanphfcaikehqbpwopyumjcgojkaxlwhgxvorsuwyrbvbxaruwoeyadvkswmxfvrytmdhxzeapsulpcuvfbacfygtpspzarbyrrzktrdopbrqmtbwiokuhmypazwsftwmempwnfksgnpsjgpszuexotnvckpbpjphfxsmfhqktunoqxddtwjsiinzokowjlmkkangrumrsyfpgvpwlomehygyoppsayplobnmtlsfxuqergpcvlatdepxaqmlwwiylkoznzdhhbuhoyafgtqxvimljsluqiakbegdawsrkyyzarwehvugtbrtejhbqqlyfounocmhvqubselticxmsvuwlfdtryvdimjgxtfvlornegaxefehfhgkntcszieixugjknyqksisalnxpbazxzxbfulowkyhypzeywcgisariooymsbcnygphwxdsowxqenhpcccgnhqopnyxrpqgpzrhhfivbhiyrxvcidzhvwmsvlqxofdvypujckdtdbnxaslgcryszdlaheavpmrepwklhnjxjpugjbpynguqczqvreqzmzanaoorzetssyskmbhcgkqsnjzrfvsoyvvdoysbwohvtwzjbzlzpozvouzzcdhgckhlmjoeothfprxgehmnytwhpbhciiuwpkbdbgzxtulewpdmamebkfopmjmabtjlwzfsatuiowkeozezftkeszfolgbfocoybrzlzujjukvnhrrrmcxwinxksxgpbebvrqnxfitcmtckrrlcmgcxufemyfimdcqrkqkjbwsacbizlkjkujlqzqjxpyieqqckmjzbdedslbrwmzszwkgifpfikgciythnzaaimmpikuqmeqvkspeqywracfugwdsstijhlnugaepixjyxdtvwsjcdhychstcalvhtftwkmcrfcajhliiwpahlotdvkykynwktfutgwybakvjpqsrtwseoknjvclooyrujybxbuginasraugggplhgpbowwgzgoqyezwnyvqyhpekhpogjfzpherbjmodtuxjfbyjakbqbgdywbfzityioayjydflnnjsdrzjivyjkgslyhqateoxuzpulurkvgdfztklqtuxuzagqnzvsjhpongcqpcvijbjsljeubbtnnngayhwfzxrfkmxwzeubivpketyhzzubwdjdarthumyrkvzzhiajjkmbtmcnzsgyjdzeishjdgedjooajhufkyhkkmcrrmbuarlkvyihztfvcfwvkrtqrkmltxhomsddhmaeizbvscyjtnndjjablnczgdohmywkhrptqiqnjvmgcvwmtbrlhcaafvjpawofxgowunsdhxpzhswqiwlzhurjvusvlfujtghlpgomkvxcbnvgqvopozdnykxtaqpwuwkuzelgqtffthxijyuvduvctmjuvroomjospbapovwdnmaujooowykclhgcmbtwdlgfxsbftpqswxibtyniifbnliqgnbceprcecpddkqrsluesinlcncotsstqunizwzgbqitctcpebaaimsvdneyukishaqshukjsxoqqtvwukoinowawrirqpxubvgezmuwzveclqzoiykbwracmxdrfkhglsmnsvyenlimilaqvagtgvrcksthsyyxmsdxxnjrcnuaaymokupgdcjsscsbpbynkujvhnlwumssbsssihydzgdczquioqaaxoniwlseidyrgrhjjfyulhxfksvrozvjyjppzlmhyrnmcyhcrhhrnerwkidnmcjdtdvhhcvyrpepjlncgmcbfhvzpcejmfqnskaavjiolgszpdllxudjkdjgbfqwzkcbotkwvkqibpzhaqguueubzjuslvadkltbmhwhfszyefwizdftcbcxrqdtjfiebjdoazakwjgxoopldtzfobvinxdhtoruflmvzosahoiropkzvwzxlajypzmmwjzptlktwijagwgkirvhdceovmralkkvtbiqpwzsxecxpowptquvigxnjykxjdnkpshupvioedtdnoavmtrzvcnmhkbmfzdzokuovqykbrpyqzeziwfhhrmlhfoyvmptepbcmosaxuanyessugxnihcasvmhsyqkcdfobwllujqghpdbiophqzvfpxsnyhondxwcvticxowubyzdbmvocfjjmfwnmcmbukkvhelsbvdjshlvozbmgbpcpqlljbcvnzvaqlrcgowfnjoiieunczjbtnapzlupfffdwlwvzhlyeoluklyrwkypkznnshibrqeruicghjgfzhwqyrtkapuzaxmlhzlfmzwyohvikhnsxbduzpxkxmvzhavawymerjpovjdnqnqwfxtjwnbotwchwgcimsscvsupcuszqpswpusbqcwkbphwnllilrnodopisrdvusexrsritwbjjmnwdcezxkbidnpqhbaktxukovfddjltgxwyzfvfquiayfprzrepsrulshmnnfbtrllbeojilzvsmimztdktndesmeogvmwduwfrjpidveofmlibnpaamfjsbwdhlyiitzvdsmrfonmbekmrhyebxkruahsljzoortzkkmasayecpeuqprrvayfjrotcgfahfohwhstwgqezfrzvfnubzctwliuqtyxwkjlaozsduzgsbfcgigdihlytmaxrlctaqnaqidrolgawrjxshwmuzdnfebzxotithmmbwyyssyvuksdvgvnxcvrzdomozuriczkgvzyxrotygxbajuwienftuwmgmilfjczpttzvsyuoswglyflifrzilfnugtjvuuvldzqzazwgjvdmauyeueswadnvctfjryurygeffhumqxrwoofxtetmvnkfanldffwjtfnpyhnqbbsbtuuyoqgrwwcxrzfbxgllfytqeifikwoxkiwueupuvixuuktdbqybddokrldrmupohzqqtfxdoybmfdkifnbrijhnsqfalnwbzmzehnvujzgbndlyzagqejoceyhmrxjocxrpcnssomqvzzgqlyirxdoolfymkqgzjsnundmycebmrgnrpxumqpfsvkisjklwjdcfdbegnbxanhomjtkiqkqpoymmiowrgyqkeqwnduirtehzanhfjbfyzwlfyplwhzsqsbpvxxwvyzdpesocwkupfmveotvbseteoejkkavclrhjtxvkntlvmqijbcmhlnbmhyehlhznfhkxbhtmlhdziqxaqfzigtyddnpyqkxsjrnmyyrqsvjmwhebnfqfljoosjufgzffjitocsypyhlnrvthyiwisnihlrivfwgpxsusodwvigejzyufeltspzgjmknvvpmkgoggjuovfbcqlljaombuexqobhsbmhayxwlyexzemmpdaqcckzeqofyvumyacbzuydufltjnunmzpicczudckmlxypjcmavnetjcdusfxtykdaofejwzqeepnxdcmsigtwyufjzyynrutlqvxuiacqoyzthkktndtxlnvtrbqrcevzvjwhmakdaqxzimqqektmtagrlgxckcpibopmtrixqtfssydtupoowkispfcbadsgktoyycchjcyxppgidfrmmthcbnrarnkcfoqvuzygybzemdzvbaxwtfizarxkhjelqpkkrekzkgjaslbgenefjzrvwsrjojztqwaeabfzdhfzqzgtitsddejgqaltyzmahkhursoxmdgtrynyybhjkyffiomaudzbvhqpqqlesijzravvpwnnycbngijqfolboalrsdzravzpbuqfavsnsadzlaqznclygmckniaknspizatqpuzmrbpulazjrxohofludldonsxucuvaubtjcrdnbjsuwxfwrslmnspfnzpaceltmhhugqbjvaodufdfsclsyjyayeovjgaxbhuujguqocasdmkkislmohieyhbrsfqbnsoofwtujetsxzxnpzgrcjipdceftrdfbyesedlgtgqsvxxzoptbloittatepqflknxfiyjasfetvoxkhvgsqsurphbzporpsuczpupfnprkehseqfiqzbcteuaqpyifvsveddgcbueeuaqbpbkuaymlpvgiagigcdkxqgrstmnucsoqnsakusoqgmnepijscqirxyhaxawohqttwghykeoxvppecdtikwpznvpzmsvomzgdqbjudhbiyzfioxcehnztwfnplxjcbkdoaxhbxbedrmbzqlvqfcjypvcvaerpjwfpqzpcelonhcgooufpybavacvhiyxnkvlhxqbilfclcptblsskyscbkadmccadjvkmkjtghxuysmuhncyilxjauipbyhdqlbgmoepfakifpmanfqcfuqvdxruptwpvcgijozlydufldvilwubzpougdofvkfckneqwcwzsprvntyxrnzywcccqjydxykwmoxodyvxvjgbmybmpvqirpieqxfslfegjbfqxzpbjiapbiahloquouxdxehelczkumoqbmodawfdsmqneyhvmfmyueqjqmdnnpdcbpbvngzwdvneagpogbixenjvdnfroikujovcesxmbkiyvmobcvpebcujjaavtyphiopjwdbutteakhhxvjvkadhnktdeheiearykhezvsuuonvemcwumfwkxunmbntzatqqurbgrptpqxvkckrmpjkssddyelzobxmntggpryxrmmuecxyifpwflytvseszarquglfojrupalvruqxlxvcgksbbpgvzjhwtxycawudnhrwswxfykqmaxxfssbcjkqcfiwblthcaewikcjzwuqhenoaszrjjapsctbjcjmbzpqqdvbznzgvljfpajmdlzkfpigrtzztgmolgmfwjmpceoslimqtfpqkslehhratxwweutpgagesjhrdtklwxiigqbaitjovoxrgvzlxvpjjwmvaqucejoxpoabgdvdnlfsjlzkyxfwwuqdieafnkdxmslyajivtazrebuiftmpcrahsmxlvalqdehuilvooaugcoxauotszwmuufmysosdtgcbvddwxkilehngtgaftzgvkzowynctsqedehrkafmzwjyygeqvrkhcflmqkcwdfjsgcoigcztdamhzaxemimmnqopbdfsmvzssfhpgbspjpiafjahonlaerbrpaxanvgycsitvwssazzrhtvqierpjjebjcuyabnecajztpayyhepiwtnshropyagnoikeiouqrurrfsxkeocljcvfohtthlhaztxtavxjwvsvtljxblyhndhkkkyawhbsvsbcfhblaodprjxlxkfnsjqtfixxfilenvobglhjvrswnmdvjvyqgivsfviabgkuhkndyjaxrbxszlxabkjpqevizbaoofuguqhpwaemrgnqxrvqbmmhvghpvxqlmjzchxfbitrfuzzhrmljiunlkeijpfhybyfojqcszihdmnuepnwjpebgritvvxgxwrzhemwlgdgjtknvgdepbwkurkdqpdxphakicdfrmzwtszsacmlfjawnyzibneyhjsqecmitofetfyugwiwmwtjkwjaoqoplyswmriipqvkbftkvrtqmjgckveskuveiuonjyinoaatjvsuenvgiswpkdbbouvyhswsswfkirktmbywgwwkkbixxetkgaobqpeunfbgwazilfxbigtlyoyagimrlbagsvxzfpqbkjrdbuyzzxytjapnqdsrdbhrmxbbaiirfixrdfleelkmwzjlhfzggrzejcveyfckhxitymprwwzwxzvibmotftktuplbrzvdxcozhzwlsvpsxnaulgdcsoosomfqigcshfakxifwvmhfvacimgaxabmrhhzajzsdnqjghxocrragrqypzamqmfgskzmqdlifjzkoztcbdkphohuhxtnulghaytffnydaefigbgcjxmgygntjgpvgelgpzlxwktsmlagwabhhsiwsdilldyluorrngnyppcwxqduntabdntilhutkllnsmssvngbymdmuuufbvghkrmrobhsvvyqxadpsavidckxblnemwombnejyyegzhnyaagjzgvgwcclvxiwipkuvjgkvidchqcbcvxczoqhvkfvczitjyvzvanncryvonjcytctpazlpyscwyqmqvvnmmoqwutwzubmeyckxyxqkwvnhxxgfxgimbdrbtppqbzrikjfbgrchnuwqwxzftegkyznwcqwdzwoaabgdaljmeknaqixsrogechjkisgqgroyrwmfxsmwgbrpvvkpjpvpsaolwfyxxcndurymtmjrobxduwxdaglyhuqfhjpkpergelozcbxcxkkodejfgijwycmbiiixqdxdpkadmssvikhapiavmpqqvkmugdzixrsyfvtefrfghxgaqqqfsmdlntzygigeijtfvxummwjuzzrxoplupalzrhyrukmimnaksyhgtkqttqgjzxopsythyylymdmeifogbwtxgholdezbisttrlovefrucxeatfndkiizyyxkrlcluttlhgxrslzyaqdhbticdvwfakbzpntbbxgdorihhnfgcylehaczdjemvlxlucsjjcjamuppekhewutxrjtjmctjjfoytcusndnbkplcioblvgvrciwvdukjtwwvfnghedcosncgmfgxiqecajnakhngtulewskvarzqkofrgsbdxrnblhlfveouwcrogosoqxirqvkzihpnrkhsicbitdeaqjgdswmmbctgabhfgpmbsnwyzarcpteqjzzkpagnzlupvhkuiugmlesilvzhyeonoltnqwmulegecloeznryhmdruqikwpzjxyzznybyhtjvbrptyuderjsfjnjrnhirkrkgkylulanwmnpgptlevsscedsfpxzkweumntqyxejxxmhfjztjapdurlpkztbzdxgovtxuuqweglthjaindyrtmhlgkrzwqrarlvsuabmvppwltvutbtqxlwcdtoqmborivwpumycyodwcrttpurkymjwvblwwcvzopxpltqvgsjfgeiadsrzauwzgywrvoolaiohugvmyuiuzbbgnifsvmhphsaykyjbtaslggvfssljyfkrwydvlmydtiohxwqzumvtszkbuebpzseefdsdmyssjnxjbqhfwwzqkqnohfcnnweugchhfdjhgnqaoztvtoohlznevyzqpdjcorlpttlofqytwbysewyhsngfiiatcewlccwjbfhljrfxjlowajpdxjqnxbvsakcuyiipgeavetvldebbgkjmimrhzfilhuccikbnuiewflkkcghslbeedhqvdbrejkjljxvyszudibigewbixtdonjmlobziyajqnnicriphqzlxbtdgoyltradjccniurlttimsnwhrffpfnvfkzmzujhpuvpyisetkbrgpygvcaqrzmuxahblmhiktfgwvakmkkjfwfhrknnszmoqsfuupadeomfmwsdswgoiclfubpddzccoildgkwzrgqqruqhlnxeybiojurfflpjyslddtntriomxhottnaelqmgckvkxctnghysnqiflhpcaeiclylutfapscjyhscgqejauemyjsubnilcuatwcdglmlcfwuvepxnrxuliyflnbauqqqajpkkifoitgnpomdsycmwqbnmoidumcmhdhngovfcczswnpayjuryqcsinaoarymgmwofpjlsrhogstnfxvrbebxfalkxvgzbivqokelschrkgbvifauttkotkkulicwkcgselbmqkpuesyzmajijespiubdbmvahxwxjbwvsnutuquphujrmffaqglhihvgztlpyalebacxdtjwvpszghchclzeodburizwgeucplbvqkalzfonzuildeopiwzyzrxsjggbgjzxlrcvtjaaqevkvcvvpproaxkzryekyjynfymfzzzffjxgjdgmapvfumuwesiqsiuxtithorsogynatoervemrqvddijwbkgtlmqfdrssbtipxcktekezlmsgxqezjvejltzhyjhdiygeshzeqddhxegaztvlabarspmlcraadsjgrfmflvpubgvisabjpvdvriqegyvczmgkbobkkyjtdybvhuprxwgsjxfdzczcarglgnvknnajmiexbiyjndtdmwexhkhnxllbenyxdcrukknstoxhmbsmtijungpvrqkfeiclodjfwnhqsabyautfwlkxihuuovbcznczwpnbttuqgmgheqvbevjbqgmdampasyqsbsouturkfkgzbgmkudlorvwjikwbxatqdkajajyiumzajkubzlyuftjefpdcyahhxptkmxfneftbzfzazewejofjemcoarkjbeqejzllfxqoisjklxjdomlxdyjrwkvolaualympzwyfjeovzvsijpsuazpttsztgoptpcaheavojwnptnphyqkxrrbcvoitsmpmzlbvggjobyhrlswzqulmceyvkzwwvgusitmdowhdeuocbvxgnyblrmhweedzslrkaajtnitcoqpgaihdspdrpvqtzqnelfbdndnxmnmjpahozrxyfihdvkzlsjgounactkmsybvtymdmfdpcnszrxhyicrtnnovanpywolbfylfkjbpuroewwpispljpmjrthsesuqposybkzwdnkptzecwfbwdmmknchffvqgnpudxwqfxncmppbjsonyjbtwoolptffhgigorccgdmawkrvnrehatqnnlvplvsnnwmssdcfdfertzovpbqnjdrficmrmlbdjbiteupigvfalvuhhxbrvbuzyfxronozahlqrhofenhwwluysnixkfatacdgzjgepxxhtfegldqllpjspvwqmpocjkpkkkjmakrnjarwviszgngrbydjnlvsohlhyejmyioaclhxukjxpaysfegdsixrrrnribnmumyejrywunfcnjqioznxkqoisohrtzecyldhhgagsbuajxjrtbmvsklrrtexbzelwaadgizuuvvaprxzgnaysqaqirvxizkpzfgmotnbbzzqrdxiipduqvkftqbmsfxufdtvfhphhazrjjlopuiwfwjmsjlwkeideirwizuuodypbjuagdjcrfzatrdsnqrbtdmdetelaclyawymgtrmssuntzvpsukuqbcvlpesoyghvcvuehlyksxfjzcowihpdczzlhhmouovbkqgzdizmmhklpyfvfbcbhygodtbsvswhnqjgwyqyjrhflwnuyfmcqyjikgdbxfuidbptwtfcddeetcwyxffiylffbgzimbxjrcgvfyelnduahxykiyvnpnhtdcjddrubingaxtqndoyyjtrtqxmfwdwvxvqkcuubathteaykcwezixeygwygvwvshowljcotbrajvvcukqvslxozyvoxbuobnpokyapsfdnwdadnfssccqwnbwuvjjiuxfurwazplrvqgbqzkxaewmmcbozvhemovxvocnyipkbwzsrseohyyifoeqtcfetwpaqfnqybayczerpkdojwonaaeldzjcadgkxakrutwlbbjpeszwttbnsggbcdrhvgexbpyzqkeuqgbywqynqhgrguccfcdahixbpimcsmwilaxekdjcmoypderszgtwvftremfkvlfxtxqgjybwmsdugsdyvvmgroysiswjmslqhvkkcujputyycktuzecqpamhcwzyrpmlgdkyuesgiyotwmpzkrguyvbmfwzfuvxuogyubqsbigebndhxyprbbnkikrapnqleleivdnbuhyjxwrdcaqlzwhrmwzrpszvalvllekuragjaonvfyrlmwgjlifmngmokwugpxzntmbpedfnlifyqazkgddaoiyyvcbbisijxsjwjjldtukizoehyurniaikxzsnntzohioygpwddgzmxihohozsxokykswpyccbznkkqgfxelhzaikzqcdbnugopxaufobqfiuksirbbsjtbgkbjpyqmwdnaeehvwmubbrddypfdujcrxfwabozgdofzeezwgdedwtbkgxuugfkmnjurgbtoaoxcscgpjqqjdcmimqyfdafbprklffsajqrpsrxsrbhtcuxtkawkqwlesibfoyhcemicjdoybvrldhsuwqjtkzyfydmupqjorsvdgylpzlcwccheqonpdfrqhiwlesmsmjjxaqcaztbghjngicjykplmuzooznzgjfktxmrobvtinfkdaewjikoqvtfkrslyqnztrejhegcmvodmrbrwxomkvmsadjechancuqiviwcakcefkgmcpgrciwttjkjvsisucrqcieitkaecsoeddunvcesreyxsgqcislhyaxbqjvwhoeengnqcenmoeblduudozufiejyloxezjzuiksqcgnyavlyevodgilxguuaiglbestlwcdqqiiurdeqbjfmozzgfsjiomasoroidwmyaitdospaxydhcvjymzqdlyfivxcuqaxrmngirigufeljwfbbmzuopfbcuydvxuihmesddufgpoknwwxuyofhzojkoaeofctwmdjqnmvbemjbnkqkzuvjwxgaryubnhvsgvucjekhlcmvlqryjgwyzqfgnbcqoyafpbcywkkutcfvngndgmexzpoviolzsdcickeyjcghqmpdyrozeapymuwwctjvqkoklrfqftfjekmvrmpudoyyxffyqifjxjbzowtoxuktgoatarlkbmdmkcqnhdgrhmqxoswaxumtsasbxuuyorqliyuwtipfiqwbumicxcmmiomrsvxeqxykpzabodotdaddkftquevvzomvxgzbpvltasqujnqkkyjplnkyqonutoyanvtawwyxuphrlqouorpsaimlrafmzhhqxsjbyllxwcbxuqohcajbggvxwstfmadfgjgkuxmnvcbayqibiertvdwzkqoectqjitaxykthuftzyvnqwpipogqaxtzytaldeprjoefvqdwixeofjrfhxuivrxyjmgrsgfsltegscwfbheczlugevdfgftwzaronckijsiwjmxltbnyqyrkhqewyuwavsxmyitttiqbvsvqyasjnwzkitvinbffsfabjygagzyxftleuxzsfcspslpuoaiivifcyycqpvahqeovgkxtmygowuiktxtudbukkwvlerdiuwzmqwihadqdvyitvffiivciczbxcmxszmkrpwkiyayfczfdzlxutpszgjrbnufoqwsqzialfhgyfkeccurvponhfkkhwftdnambmulkcysxlhydtppmcumtwflolgwbmucrllfoakjeilohxrjdzvffdklgpqnhzwdwmykiihpkyuvyzbuenjxyjsreebibcfrzfhkcgleuzzphrydiecrxrwtpfwpnqqhlapqtptuafbtnkfhnaggoqqqynapeyzwftywonbhpfmhhbofknhwvdlucfcvikpjthlgrqqpbenwfundmrthgadlggurszkvpuhkhmqwwcsfdduqxeqrxtfluhkrwttoyrkbnxxtffdjlundumesteshbstiqyvehckadlixlfvdfakheqyxjvasmfyffvkmkwuspcqjhuzfgqcoqrlzqlwbhajqznhmkycoebfwyjgljnrvtfmblxxioqiqhsjxlktduszujusqrdiimfshxhgavmlpcqxireusnaguuqxfrmndhtwaedvxmfpqwiwfllijnwgtoteuhmfqhfesrhntloxtzcnwesbegsriaqsmaqiomlsldulmlecijrlgbjacatbhrhplqtecvaqonvnisewldqxusqxkbvihgrjsuvhsnkbkzfjfnnapmjcpudqdhtfmxjkhqpilkxwbfpguztoqwzdqadqyauezcahuvmftdrkempzxqioxbsoudhgaggtlufvrmuqujlaoiisppgvfnuvqlgejvqaslhzcllleqspjwugonagiszjfoolmrnqxnwtqjmwadzeqxyxjjprveglmpsdqinrtsyqjnqbwnedhpowxdoaxmwfzdxdrbfwetjbbphxbtkbgttapqlqpzrjvonkbpwhlvdaszrskpcdpfvqpdapjptusxpxqpfsdgdewytnkgipltdapddncgcdmdrjmgixumpmpwftyiahzlgncfxmaigdcvrllwdfoxiehfkpubtpbezvlibmrlsvpgdfoarbzezzomosexhecmhrnojcggwzetcaiidetaqtslcinbkwkxkzoubncwyavcaosjcxnmfyuzvmqrixmsuevfrdfnbwgffprmseizzblvjzpyljxqmdcorhwppsguvucuofvjofnahwlphdtcoplfxhhoythwwsmhwnxtqsuqjulywahfabvmnnkwqzinpziqvjoqvgybuqgjnsnxhsicwvgwmqupbvecoqcgztgxrjweiewgaslinhtrcakljpiysyoplxogcuxpttmwyduipposirnpzsqktuhonsjxaaywlamhrpvdfmncfvvclzlnjqltcytagsbkxydupeyfsagvsblotxalloxvusjofodaqnnynstbudaufoimjymqsmynasatvenuiqrpzhtbtidnqtzopscvhldxzapesattnhogndoxypvznjpwbxxsyxuwpilniuneuyzbwwidkedmpwvxdynemyuszrglqngolqzdanuhvwojomhksaqbwcryxrbmltlzxebcfxlezcsufjewitdrnshayemfatpivgoxjvbhzxkntwrtwtycfgeufqvjhjzlpbgnjwnkmjgxwoxnqlxojmmjcxkjqeukjbgucsbqqsleopnafwoizlzybammnpzmybnvfqmsxqddwlxlmgpkeunjhmrokpeiijgzgqivwkohlnlxasrowpwaxowkodbmlvtqepkptqbezvnxdmrjbnuobeywxbsrfesarpjyxlvjtssspuxcqxljhjpzbkfotatyjdgaeuienmgeogyshqoxjljwdoegfhzhkvenemsercxqawkhizmxdwcfreeikkujahxqiezezvnltupmrbmflewavchgiodnqexplwbshgrcabpfwedguljneaultdmimitedxukjfzsxlievmsfgjvmsjsdeavlcjuosmeazftorouliqdtxrhbwvkkzavtmywbywlqgwgoivddzcathrrccezfspcikalpgnchqlmqpspfqnesqtgewqnemdfnxkzenakxshosaengpkpfpenmkfinaedzvqgdtqtfcagwumbwsyrronfqmzpgnotdhloxohtltjxvtypqjqzkfizbakjdhsxreagqtdbvhnobzghqkajqbnxrbxdzadsgqrvhywlzkpqhpqqssuivydlwmxucsalpoiikjszcmmhclrodkyduitttgwzvnpovnuewstxfczxzwgzmmwfvgqyeyevvzuzudezqyombioptfzcpdzslibbarwrmjlsmikkjrbuvjgwjwjynykewxmptlbeaegyvdzftrxcqngzewsqjbenlybqehrvtjuulrpisbvriefaovxjgnjdvvvqbtiojvdqaprjpqtuvdmujedhjpsdtuzpoutfnlmouyvbbseuzwkhvgkaccwlcukjihxtpkmwavogsgkgxguqtbfpzcertroyhozbftzgqnrvwfdiozssaxofctldoqpysfqieathnvfmifyrjoaaotawgfqmpdmiiilakbrxzoystcnwprkfohsxyuhydxjrdwnakhgbvjcnzlyhqitirdhbirfxmtfgpjlpqhoneqcgldmdazzysxilmywqscdiztkwaqrsfrnovrhkhgdfpniezqufvlnvglwxashjdkykddvlhbccgeakcynsqiahwvfuewwjiijovfgebfzusmltawkcqyrwjzhxmfptbpbbvjxbobkhvqlisfypmdlpttaerqfrvdwnuowyglzupqlmvjwkhunymenwxtwdjonwkduezcsjzrbndwvyxpjokvdqunovyjnvpcyjiwxqctfosclowordpjjavckstelwcwykkozuvbbqqqfwcxgaxevkhgbnythqwjgbedamcyqchtql
\ No newline at end of file
diff --git a/tests/ports/psoc6/inputs/test_fs_medium_file.txt b/tests/ports/psoc6/inputs/test_fs_medium_file.txt
new file mode 100644
index 0000000000000..ab8135ee408e4
--- /dev/null
+++ b/tests/ports/psoc6/inputs/test_fs_medium_file.txt
@@ -0,0 +1 @@
+mdzvfxdtqstpvrqamobpzslfdquqtbmyfiqdcnnuhutxjdtzdulnywkhkkqhmciminvendmgdrwajguglfstsugqzuekvqzwupcyohjilmbwyocyqwitwibfowuinbbrxadfuzibklwgfbqvwnzodsdktqydptrerxctcdunqifxeloqxnqdkjovhmayxevrpgvblaqxlnwrkmugjkmtcznppkrlbjitnnzmcbjyuihwvjapmdmzcsthaoyrndolhkilnqsvfryqnoxjqfvivkciwtcdteapulveqzlkvlweghtemortobuxdsflofbnwbshyssefaksmxhitvmloafcplzaskxfratnuckpqjxqxwfyqxtxkbblfsrkpecoyjczfqmwzmmguapwekchkiygpjrysoddvftzgilegteepefqmudtjzvelchawnnlfkujuoizkgeoabneuryvwrceyqtuunhliykteptdzdtbdulwsgjoahuxcgbdtdkmjrloihczkhvavpkvjinqzdjowxxhoxhttukesyjnzdfkicppfjsknzozkjovcltkgdhjervihshpotaggxvjbgydssguykmzijdvyppgbwmslsznrjnvmmbfrwemvyfwawyzkhiuccerphcvurdirdxastirhnekxxspzwuestkdakzgjksrhdajbmlkrkrvzfehpgezdoimoxcwkbnvfwcqeurtrjzzvgjnagvomejfugilxrtacoszqhgkuklyklectrhplbswtbueokksyhdaefxddmqxxkizmtuukzoroxfsqwqqbnqzmjkvzdaaxdfbknibjzobbcmpjjktymkevgtlqnkauskjmqpttjhpwxkshnmshfiigkjchocrpvouszwuvgvfhootuvftkmkwrbbhtxaswtdvrpsekqqrybaixkaxdgohghttftwbwkxcclrhkidyhhxmkvkyxvieahssxgfgigkaphkiegrrsnlowpenxuopbbcaczhjpmzwjinoqtykuwttajtamvukrxoyxviwolumiffctghdzhzslvdshjvthjbtlcjdaxovfideqgninydrrlpqrnemcpycghzatxnosvhdwlmmumvdfvzortgriafgdstwvmfrczcpvnhpjvurgzvnkjtvxdvccfmcxvtmntwchzmezkndvdtizcjiexfbtvwwndhffbijyjzsqyyjxluajxuswyuumsfozumlmbkduixbniifiufbfserlbyibeansiycskjmiukjfcthlcphvbhglxehyultyluwssxjtqxeytrojndiujtgnzolyvbuiaeujaufjfhayllowopdnsimrwvshkutxzgprdakxgeopxpflbtbwlozpxovlkhtvopvhctlavscwhkncdelqpgjcocjgysnxfkaseagvrtcuxxfbflnohxekljrryzabauxpeyleflozncvqsqegfyrcvjfjxftqerguinhtlcjqhlaveyvzkbrrjojxrenusyqzzumimbqezrcvjbpwrbqgbxzqowkzabbqfroewhnppngxglwdfmamyroivcbkhlwiphgbalnghrxgpibfqkkrpuctspnwmrhpbkedibcjbqsujvewnduzzhcrwdeutupwylprpvscoasmswmmlqpnrezgvsopgagnrvekpyqsytbvxljleougbesfjxwzdppbfcqcdlirqpttzvydkyrwfhnyqzurmhzqsthschfpgdsavdbvntgxpitqbtqovupdpuvcqvnnobrummqqdocdtypkewbxodagmnghhimbpyrirvlllxfknvsoelehnrpirtjhlqtavxenzlzblaylkoycgwqmxygfcuwphmabjmkquwdmzwkhmjrtqbyrzwoacffjngtteajlifwnimzrsorcdxpetdvdrrngkxdbbacuzltoaielduygubshkpcondwfbkxdenqroxxyeuajtrgebtligxibsxcjcyeerevkxuswthtzbdlzlrfcshhusoqypjkgrhdfxbcboippthzkhddcgrppsspmbvfghhsutglfdmffnmjuhdpiznepifaljwiumwnshtnggsgyhtldlyusqfqvnizaxyesqirfqggolvjdzkfnstdkgcczxghntmfkhiswkyqwxbvwvzswuahlnlolnvumyjexcuqvlyqgzczdrssogpxulimmlyryrbzymixvmvyfjficdzvekahgrsamcdvklqobynekfpszecfzzidxobnzhlblruoqzicljkwrkfazpumekiplzyawjswtdxnanezwqepjnecflzpcrqonjnrswprslkybfpglxacvaqixlgethdrtffeuxnxquofzupkdfhfrczjaxynxthruanopvfxouzxbjlvmulyxktrqkimanteambgbzqbesgqhkhpnxdbwjnklqhndjblyfcrklglcvxflbplubyayhktfsogpvwlfnpgqcwmbstwsrtjuhwpzboqoeghtkrqlrbarynpdhjgsvcuvqpqhpwoykjsfzesgefzbylnzisxpvwjwgejimglbxtojmetwhvsozwmihrfsczrhldkpnzcpsmutdlhtlpehbfugpefsrbblrikflqpqbzflrrskprddolqyqogjqurpleezcpkkvvhlqtdeerptijlmumimyaeppyldaohljnojrofherphxtglkulpdawtptobxrktzwpudlgjoykmfgjbkchtneayjrkahbebmxiynifmnuahupnyzvajdvvlxkkkmzsgkznpassvqgxndhbkslgiclkselgivevniyrvnlregrxmyupnpsdjnmwxgzwbtjysagbrkoaswcefrjyylcnxjwwjqlzkcqiuroxqdochgixjasyqshlduphbhnjitzqiviunlizikdcvkcoszdackihvrqrthirnmmayskkjjfemjmmsuettveoimgehrzqutkyxulajzpgppffgsvydymuqymjojgjhlfxifrzxwqyqusobksdodrpqhqdrzpfkaraegyzmxvamodyoacovskoofrnewtipbmgmvtqdufqhanapypbfbxccaqjzuqycimipcgrovtxswsecqjvfenilzvmqncwmrrhioydlhejaxvksfximuqqmnmozihdoorwcrqdbygiocutrizbfaswhhfzrfvfcdfsgqhzzyttzdgekzbjpzvveverncoqluadnkfkzguvuonmfxfnqxxutbrilaofdcajitkreputkpzoisprjovxxzqphcatefqwjmnmisqkqxyrxdowpexljsmsopbadsfyfwurztsivpqfyuhdcanjactgbdvtwbkrfhpclixftrmkjtqpafkpxchvowffmwjymmkmjcsdpxpaxmwuegczimwwoyqpomjsnwepjfkfdgnoiwgbndsssjfsptcryeizlgssijimkdzimwravceuzqabxmgymridzdyfzhyfprvfbbzsfuometkyncqjydqwuoomnyyqyrtkkbezaxgalayklachwbwbekwaqdvvemhrbwuyoisovqkjyecdyrgkqazpzssshedcazoolpfrvcjsprqrngdhehnywqtzryfnswmjkkzpbafwuavrojakqtklmzqxzvgotvmugvmcwdimqkypzpdeecqczacdvbkaukttrfmfostfrnlqdilwlybpsdhtkpkseiznnvnlywypwquuwzninqnkrzhvxvdnfmhtjvbgptokmlkgthwfziyugctkqkffpmewkwdnwcqgyejpmkvcwxanllgqpxmfywgfilladjdvrpiwmcgwdzghhdhkaxqjuwwdyijssfivrkdqofmrmlvsuvsdkxgzrpiixfmhberswdrinosrsltheujwmrrczvmplitczcroxacmibngyuueundkwtfirbzwnzrvryhzbxcbzdsqtecuppdvhjrmgcjhtoqjovjltzljpymcjstimblojyssqzdqcxgesnazkdwknhakdaxpdfepsrtvhweemycnlrrmakpxdlnwqxihrlfekzgxpoqzbqvgzmjveevdmpgyahdnkdhpsuuclaikzevpdlxfokctsrhufhlikvkfqllhohfxeomeqfqxghuptayxjcyttouflqplbtkmdwxmaaneiaifmqppperrsbxzvaszzwyjcaytgrmrsuqolfqqwkthbvvyxpgxdempurnzeqmscrteegtgnriisizmirybrkfwflduhpybblutkaomtfuhgytbqkgvlstuoclcslfxgiahgemxiwcjbgrubewmxjamgtgnqkyudykxbxntupujszyphtmhwrlfaeuvgtfmxoflhcusvmjwkehwbcbbeifrrhvoifiudxvkdycnqkwkgfdycqccwcypeamnuakzhvlfkqusjlaxzvmdddkopsczjquurdnuddssrsatofvcxbdmfxwlsasvtgjoaesxfzzmaxcyaebpcwjtlwavyaqqjpdzgukflyotcjuqeyjxbvlsrezcybjbisgpqxrwlhkhvjxwppmtgxotewxmtdkvsgrfxfnrosaauytdbbukzewlcmnjlfezyuqdrwyhfbhctvmpspazcldlaxlteukmujhvctrgndnxjmgoezsnynlhwgzkztodmqppdsvvbpfgdmiqggmgydsaipftcmxqzahmagsdzagobrqkvlvfsahxynheidxphksjrxshatggtycsumafbxivycxiaariqeodqmdjjwhglhfipsqpiwlhhczjhjwqoejfpxnqvnexwrastnoennstlmokkmygydwroxdloqzvoqhcvwdkffrjfuyizcbnnlxxrfhalpvbvtnlxxupijcckbosztbrfycbgfjyyepgizbzcuizpjpqzhtvgzzjkqeoodevbyexulkzqwqljzgbjojajipsjspjdyhyxikymsbamazttvelxypoxtkfkxdgongbehrzqyonsmwjktjlzbqolxhbmjpddtbkevbwodzgvdbywwjwaxyavvgdczwwqphleifaclnrzhrjsvbxaynqqoesnaygggwzmhxobrutlgomkwpibhhbeeflknwsexblwzayooluugiskheleisdfhmzthswkfnydqddatfmirmypdwbreozjbpvtaqnoezjohmtvkyvcofocrzfzhlrnowhemmyjxvioxuorlhsudebdpfalzcznqewzfdcbbbdlqqffkvotfnccpmesyczrunfgaegdjhhbzurddmglejkpkznrvypdrfpgwygvycuotsyfjbfhewrrjcaniwmjponolohtdvbhmjnymxhxreaisqbscgtyzlqzzyscgahyrhbwbagnaqpjzdxlboxurqcbrghxkmsmenwlwfumusartogbzulxiiesougzcdnudjbihwttjmrsdjfxpktxjanxqndlyndlfplkkuqrtewwjuxkqttzxcmktbrjizyxkrhvnwdrvxiaoxzecqmcnmtdyteilqocnrieafoxyecopxbwahvfhbzyjdtrtvujklbwjahvoghtrbakmysrwrovsjrsjdvamvfaloxnatlwhvrchtturixxepqehppavjlivumcoizehiehyjzaxduetnpfehawlrdpbczovbtghxzrvqwqulphsuvzitxkkfqfljlxuqrwjnlyywzkwobtdbmykqudnnpayybhukrtznnayqiagnshyuxzbxzifzbndbazoanzyfrnnplgvktwermggvgzydpvrbfzwrniiesagzalywcnkhejdfxroffxnuognglktwlxiaoeierlygflxkeesosjrmtlvqrjsqcfmxcemgjspwpptalbiecsaltknljzbvpswxhgnarfkuwrxcbfexgzkxidpcldkmeoacplnkerggdrmjwzcwrxnxmdjxxrefeofxjpuprrsokdlbxyrgkqunpjozbpgudfrkogwitufhdpmyfzqonghqtwymzzzxsnhkrgjkspvchcvxrmfirgqvpunjbdkdcknnmzdmrargzmeitwbwinzuzgvacisxhgjkhjeukylgbjwzgahakapduyyvxplyshohssfeqnmubyeisrutdfuucfymyyqtigujqoigdrgahnmlfqmzqnpnbgbdotmcnrarjxelsxffzukdzhsitwveloxcqxakbbbvveyyknifjzmrjkfigimeubzxlqgcfhlxxsgmowvmatwqjrfudzswjahuhqqawyykhznxqsomxsmyrglozqtpbjcxudbagykpysdwmsiektztjigmrzfasddqeppsmcftxffayjtkkpsnqlmtnvrhiafaxoptbcoqznhfqszazfnnlcubsndpuusgazdxnodbdwjztsatcbrxepqhrhdcfhzmxnwovwdsfasbjxwzcxrpbqwozpzhikersizcljbhzqfxxavhxqdptnkcixciymfnpjvsxslgwddvwjfyuqdapflgwyjpiexcviqzczulzqbmuhclchzsabmubzgnusckrclurrpchgkpviteoquywucwlfiuxlzdbepvoehckmudwpwsztiqhltcipihqqapzfzniognqkaldivkqerazjvkkzidqfgxmypkfpolxqsqejltrlspzzcnsiizynofcfahyfddmxpkdkeswlkoaiglzwdaahtclljugavemubgtwxkkzosasmtranwitpjiiwnnooiikbigxaxwargebdvxcpwzvizblbkjsvzxzcjdivzfkwypijlnxzfwzcpnmeapcbttyusobotvjfffyyzzmtocppejoogyzxgppsykuvgnhjcfhemptdwyzpgjexdvwfwcqqppkendyqjtrmfaxompvraqyosyxhqzqtkhodnhoqeqwooigeuuwfocwurtvcbflgtmdfhqciiohvqmwqyuirgumklwtifjqzfunvrajtbbvlkgodnczxbrdrdyosglcgnznwenkjnpsjoitfnnjuqtohusjmxqgmxofezxyhuxfurxcsxuriapfrwxcihmgcpjeipqdzhkrpdcfiewbonmmhzzpoxqkbfdarcjqhtdlkzjtruvuuyogpyalfpoiqtjsqvkacsbxcbvtxkgckfoezjiehltbfvftgbnvgnpwlxjqjqatjubffaoopyygwrzvsuhrobjewfxpxwnoobuqnnkttvmwjmivjvlonjhftedcygcxqbechccnwtwlbneasaujkofkmaciummfatthrgeckchkvuvsgzzomhdcnhjjtbpzbjiphwfdxgptlkhipyqheduyrqvblidixduozykqrqrppncrtfebwajiaqfnmlrgockorxuesnmiigpdgbqalmjnpkujcvwndtwqgaucygywithzeyyzvjqryichgcgoptoisctohvmewpfaahiqtaonhgcbeahmflpegoqhjopyitkfghrgcvhocqwjulrjhgmspjvinnydgrtwcbuyohhhosmbyhbzdamiktbelbiznwqwqpqasxglmwagopsarowqyqohxjmbmijxbqhyyjkjzmszndmknoqjclrfrwenclfcvmtwgcaywpzbnepbunzaxnzaonfnyrzlrefnxwqzcwgaqucemgbnyfispubveryncqmmjhcjlwjqiusrypzqygixortnbpcciqcjofqfglahlxacsadkfzhfourwvixfzwqdrmbjotbnltzzyaladyecnkmwfqkrzgchgclvhxgvtawrzupobqclfxqmagdjkateojcxcdiuiktpdhwzvkwuchwgtyqlcdcchgoyclxqqrqscvchnnzfdhjtvjmbdgpivuufxljguyfngtmznkwyxizdglfnebdruvrrtdkwppjufzrrvquamycxqcwagagcgjujujhhzaklqkkxhbiafuqtsvsrkyalkkmgruzjxwuikeukzvvkpkrzyqbayqbwqvrzdyojabozbpxgdkilgohrnfmpoifiazmsmspovjynrqmakavgcadzhxvlbfobxfovyanifamqcntajzxegpdhmbodnosjlqmlpogoewetmdtqwhnhstekgsbwlpdsscwwyeqtjzaqsrxokumtsyvmhekuamoezviiqdtxrawujvnefjalapbzgggfmkfwbjfrrybsuwvkhkqwcevvglxgyplfmixnnjeklhrtsdtgwsswstxnvifzdwzcxeeqdznzygnkayguvlxhiegnywwivtchlthincgjtrxlavypbbjucrbmhfxwmtcmqnhwbgahqwzpwyrftlardhjffugxwxkrfyvhnypwhairukxqjgwhlkzykhtogsmjvkhyzsctxovaksavnqjklknwvrshuimwgkuietgaevgcnntuinsoayvqveezrkyiciafyegayqwhrzdhmfyjnovpdlztmljhstrcsuwswdhmpighswwduxcxddqddpjrficrehqjwmjhxfxumvhxhsvpqchtbztmjmussmfhyeqxhuvvssrzfilubspxcvmmfkakeigibsfvaohlzkyolgrpcxcbrdheipyrttqemummtwtgsmupriefumsyrvcqtrhhiipyusrwjhecqqqoaolpebjzipzsuavqxdiymszovuukeznlnarslrelwcvjkwmkegqzkchoremypfiaizdbbrjibxblietbschfdhpijkjmbfmtoknniktwwhttrlarfldkyndgrhehtigfbfubkhqcsjhtteoxetbesvaawxetyqprqihdiuybncsmzutcuqmejckzebroyseoqeauhbskyyjaixaizafpalifvqzypedulwiplzbppbclmbqssthxvktgiupvjguoulfaqtsrfsfujjtdbggppgqtveubpieefwndwryvcplxgymspyubaqjdqzujocuxrkumdajsexvinvoraymuepnlssfbtxdvkppsexoajlfwlvdwltjrzbvbwclkcbcmpmxsqexvdqmcrcyvcesubnfqsorjemiiusddbzxmvcfczgjylwjawzjcouennbnzboxtcyhhxtqbonwrsjubbzbjwblvksqtlfzbneeqztaudfztgvpyyjvgpwkndytpoeqsetgwtycqzgfrvfvhizozkopngiwjupgljrhkehijkxfhqudluzeftknjlfuktmndleoazqtgctigbatasslghuqmoazoloszrlyadmokvzqiiexnfdlownocdnfvqfakhivvkxeqsxlnauxtykxswhtvmphjgzxjrjwuipulptsyqrsrpbryhjsbctptfmuwpqdfksexfjtexsqxklfkmlsvirzxbzdznyavlwpdvoqkqffpezrrqrqsvmjzcltsdyymwetzpejnfkqourvuchmhrxrcljnsijsfzrhqbsjnxzpjxxerjltxcepfbrvhrgjembosxyphgwbvdsfffrwjjbiueclwuvqnmzqcdtypgaggulffhqlevibuztfbfufakcedoyprlbbxgoezyecpvoxifqbavtyqihpthzzrpguhgzrygizobuoxarmigjxgvdgsdchhwdcrwdchjepncohxhxgedmcsusjbnvmgwtgpuykonktqwafwxgijluhghhrnrjbgebjiiptyayplnmcwlktkcubhntqoyqjdsdtqhlnkwieukahiwuubtvwcnjfepmretsqilrjjlkmewjrctszmhadimyukyvfswvalbcigagakultiduthtrqtiedqtgqbytrxmorivgojdtjpzrlztcrphzbvjbzprtzckzbzucolxpnomlhnuxycuznrvoxwlujdlnyabsmnxgsmxmqfaujlwwrgchmpdexzulibnqvddeswushhhbdbenpigbvffsyyfafjlrvwyslinakiowyqdosvpytxzrqdnkazmncbrmxdwyhfdqpdvsmskcllefmkvelxtmwzypgnhhoiwutysvlokelkujzoplkpoxorzejmabhcnoeeqkfqsmybzhevrrrniprepwcdenmpxesmafpptnizowdjorbmaclznxvwdodyemmpftcgxndtgrlqvubcmrktwovtjocddixrlgxyvesrymhvbnrhebcpizltjjklprrcvwozzpsdgoxfbdvgzxedndmixrucrvbmpwhdofzbvlszpmrsiijlzdulliryvdzlbabnwbmdxdzxpelesylasfamymlobgfettbzvqefjwnaatitkqeevaalkiiebcdzgxzrwjszdrtviztrhujrornisontczpooxqhwtbgiyamqpbmsvaeamottnbuslhdbwlsfsoebbkospxflovzvoofqnxpjfpirorxwbrrlaxxllsvcijiadmfdwdjtgaecfrhoccjddifmzwbsmsrrzciwndbqowicfjglghbqrfqjfjuwdvbymgrwprevwgjmvhoolrldlpfugxeyoftmbmaqllyfsgsumdfyztzxyngrhvsrriuzuvxtgmpbzcwysvdnphsagjufqahiekqhljwjmljddctljveutnmbzerrjqkguihksmbxrxtyjqehkizsvgbfuvjdmdszoshqnyauswgxxnaigyqorwiverapxwzssbamzxohfkaauagsynlfjwxywcvhohlgdviwzhusfawpctbbbxcnruvwibdgbcjbpllfwzuryukqdnxapzxmcozmfzillviqzqzldibyrcxkzesasgeuyoaumgtyxfflsxejbrgxaocpzwqyvrdmpxrimsloronthzuqcawrqyoihdrpfqmpzikqvshcbiysuvvxlemsozdwdrvjiodesyzkhrffjjmjvdtuyjvmzaqabclschtlmnhoizmyqidpqovtkzosdkjeoeawhyhgqhurrtbsztdsiphjvbjchonylbqywfhpznufitylhlrowrxnjwfvjxksolayajqlczkqssmqawlxuyrghkxvixwnjxqnpdhmawoxvdkhwpydycnschneyimqtonjrtuizgfaewvlenozevmjqhazyidwgdatnbxbkdewfllltccrhaadmwntssxreplxritykpnlxrxafyrsohgwlhgvwsegysgtkhhgwadmsotpgumelxyuobhdtqdffgbtopszhiidimptjlvirpdylmcicvcdmchvizjoekktawqxounplfmyairvzxlqqjyhlppnfxsdbcdfluvwznbrnmhdonhaiglzxbznpjwxikasmkcahcrqlykzhulwuwqgcfrdqgnxgzovgmzbtuuswirwjgfdjdzgbmjoewebaetrzslhvsnxycoqfoanqhoppswrvchyisonfwobkapwqxhfrwchjwgnwivmtfbewbyhuerkdibyyujntnnglxtijmmluuaoonsctlbhorsluyohxeszhyqtjjlyeipgxvwlevurgqugvtayewgackathkdauvoptbkncnnzuwvwbrfarvsqutpmoalqoiqrvmucvikxbzhmosqtbzgksnticcqjadpbfztmvlgdmjagjvznjigzlxfvtpsalztosbrfikskyjxhtwytxxjzopfgsntihayvbdpxjyztjtgjwzuvssgxhckwneqesvuazbpkjwxktpecercssumpumztizjllsctdsajdbhmsbmieftpdxzdtsoazbxmmiguaxzwxzwjohmwqusffwaycshpilqvxmqfmhkkabqjmrzngudfydxcjvqyinhiwgpoxqwhhfexnmujleitwkcohbizppfktjbmgmuuuhlaaqtlwwkgrcdjowjrdihzkoukdcxwiwukzahbjzfwykqnvjpuowxovbnyptndlnapovfrlhrbfpoztcezxhsqkkgnowlqiwzmxkqfzlhxjpjedinpmattqtizxslmcvunnndapojxbnkrxbszyvzplhituyogdculmihnwjnvqzpublwetmyunusvkgcnkjcfauhvdfsigcpjlavcjecrhkfrldfreajqbmscaeraxxmzpsqnsooefqaazrilomjngkcdwfkxdpuugocoznnemoopcpaxwfrwjvmqngaexuklcccnznktovzmyixcolfjmjbwkclszcjabrjvieoqrftjroqmyeflbfqdkjnxajaqxiggywowfjhjrlfircxguryhhghhbspbciqqocepyplvwrnwlfyaljepakqnlcawctxcvwindvbnifduelgtxxlbgquxjvmqesprtaatbtvnqmnrhexbcukeeixuluyzxnidjpcwcggwizttorspkmoctkyjmptebgtwzgirsrkhtfdjhhzmbtmvkxysvlpvrsrklqutpiwpbtwxmqwyrlblsthjmpjzydsoatanmxjhzflltjxrkwsviyxvirzffafajnlhasgpfcdwztswxrcysvilkcryeuhkawnuxzjifgfcfatajlarqkaaopcspsayggrecwojdjmhykocexrzxbpjpsnsnoafexcvnnqcrjsvycdknulzuxlxnhroyhgxpfntcpluicozfsotevnjzdqnobtjkiztmyrukomozcxboqmamgmgeejrnygvdktfdsfrtcdznonhboitwuitvqimagwxalivpmxcwnetwrnkalpchhhvghaqhfdmvdfvyauoxrziaxdhouwvdepmcqpcjhldvvuztpyqeyhdvsmaiwngnqpqphyndtbmiphkjndmpempyoiprwxspdvnukkqqhkibubmwphbjfhhtxiyzzgyablolysnukwyzuhdcksncbanwannpsxfhwdnvakymdmshfmtqmbjnzrhsynekdsevvrldrhvtcfmuasqhiellwtraciwbbcahvacntymbfxsdxaodfjpwlgyrmbtcglzvthmhbkqesgrgdzbqfqxeghdvwzfhzuvkifoxfjmsmpzoarymqkuyfnuvociaukedaxqokvwxzvjzzlufbkfzwfshyqorhuezdrywxntbcfmewunibupmtfjwdzekizguwowclwfbkiuzqhnfnwhhlyaomnagujqppakljgfiprqluwlkchfkonypymorjltvpxyzilpljdylqlflplxvcdtrutzvbkojsroqtvmeymrcawbchjbxmrbtrbuukkqahxzbiejwrqfvtougnkvpgdhzcuauuylwsfgagesskaaipmowioumrgkhpcndfyrduxmysqzsjbeclxbvtkftqjkckowsehuezjmdrepiifokaujxcbmwlgoomdjjeyqvohtwtwtqewgspglrlvkhrxgifrrykyoalgfzkympaqrtlsvcoucfcqvuznjuwtagcrwuaeqthbgitgweppouuqvdoqhrzheagkmsmjkkrrejbatsmwqgncsnpkrmhrdncskaqxklmoaqhayowpxcuuqunbcciitrsuovcpespiqgdgbqztfykopfyyzmohdcrkprokirdzlralksdlobxukasvuguqlsngipbfvtpnblksoazvxdcilmqvslnjxsznvcurauurvrsvxdpjyslbkniowjhrkuiqetweqqpelommxrrjpwnkhptaunfdbbawfgjfrjpzfgigwtsqgfjczwliyoaxlgiupwnqkcthgxpobtsgkgbcheumtgenihowzmujlzqvpalneymmoqsnplckdqehzcpkilaycpaurluynbxifghthxhzpdiqcxbwpcgwwtmltczhxnbiizqfnuehnndebsncclzwnzgbooirdfccczvijvcxakfcbtpjyvrtqmiojcrofqybgeyofhbikdeebmoqvmiylbqhyhzdlzjapdtjcdqzmwaddjwdnhscfopdsgxsonunlpxzitjpoygdvzzrxkrdwrapudbjaovyfcxdpdztjboivrksydpjqlqsaiybscqcepzhvcctoehuehibqxajbnkkykkunmwwyfafwilsnyikkrryzjaktzqeuynwcmndewmisykoshbhgvhvkugjhljjrdrrbboewrkjkpbtmyfanvdfaguezgpgxcnkqaxskbkeflbpzfqysphfcgpynympcymjrrrqjhqrdaxnmpoqhghgjdrgvycxcbbbkinnailuelevhkdwieeewzeforkneoxuvdroahdkhaekveznokqvevipsdrlziktrvdrfnbcflsvuwwuuhbqgmzphkilkonycimskvhcgbvkwhnxmqpivsosmalvnpaplpkkjejopilsoyfthfvwottjoylxxtlcoykupstnmppsbeawykjsxeoeehmwmeqrahtupzgubbqsxvyjsbxqermxxezoedtibmveawvvrjcscgvpnxxfhaodrcyudqmncujievqgcfknuvsqyvosbqugxaokxtstrucazgrbqwcbpfxyvxdwmddsvplpaiicwbguxqaypkblwvxnwujiplenevkyfrhpkfnbfjhldecxaganmuqlqcgyslumswxwwspsbfnyvgljkjbtpqyvsvszsfsbukvtsonilbnntssysgxovkhhldngghaxzifimzzeoqxrkzseyqyosxynwkrpmdbepfhxhubocrbuvrnluzzidideywxgdsgkxszkslsrgzdecqrwiusoffozyuwtnbisjwdespqiafaapfvrkxbblipkssykcpvklodsvdoshuhxcpdhwpmdvgcmlmgiltpwtudfbwfjwezsrwltrhzrzprxgifdbydhtijklloyygbcpumydpllutvynayonlhebxmmzbbvjijafgzxuwijddatcomhrdpqatxyvnxgpwzxbwtrsedkznachdwdetfqlpvreotwssrmohriikqojgaidlkstqqhvmyfctuywqppjnbahyybbtrzuxfithokhzcljwjzigdhroegweoimvteoovhbcjbzrtyvpotnsnlbkxkgavcgcmvbjsffdhkfbtieekexiginydylkkkkctcpzpwtsgftvqdwkrejczigfnrsumsiapousltdormdgyeaynozlzhvuhpbntpxtxtljqgbjoaczwmrncvwastrczjdbdmllynukvbmtmpnufztdwdpsypdwniyegrsraegjolfkykzwcbnumrsmmqwroigcbgpfmkrcxgfyfptxplszrddqyhgyywyiajmjhunurrgrkayssczckqfzxkfgbdmjwobwvnqfhyzeenpdzpkiuwefdmvwpmmjwpekbwebdkiohjcsrpjyftynubyzgvivdcbwsxzhcazzrnzuzmtigisxqentaaoyaqbtidxglmadyeprnzccklbgiltaxsxxhrrqdllwnhbkvnzjazfvrscpvaulnavqvnyjfckwewdhxmdwjizamqsmlzqvzsmxxvlwkafybzoiaowgzqusmyeasjieoujwfmoihyvhgtkfanraytvzfvixbrnrtbovsdbgggkeqyqudjcoqsbcqtmsuhlnpnkumfwvlrmkmgxwdyxjtmrsbfowfgrktiwdqghendukflaaxlqrhpkrvjpdeplrupjtmopasczvjqytjnyyybwhbqyejpxoummhvqdejtxnmfewslbsgdsxezqnogmrxatuudbuuavuzgfqserrwzhnmxkvshwvrukxyidiktjyvnrjzylmnnywglwjaxrwuvgxdehbwbshsqnxvgxfawnwqwzjfdznvjqoqjsjinshfusbvmjdrthyxyiebwlxnjrxaznauozibfsvbiutwsacetogkwjkaqglerwkboenunqzoovkpdhyfjproogimywdgyqqipxuuafdmfdxrmdcpjrwohmqrmxfsgqhvitquzawqobnywyrpmluilleztlkyqdwfomqksqchuamjwrimkbiuftqgfbouqknuhrskyiofqrbnfiokoamvbzxnyalqpbrifwfrdewhgjnfuddtheetinltflmdtvscdabtqdikepmygphzlccsxuakevwovstesduvpkygigpqxfcsncjocgmtpmvasesrjvaxkyynwjfkzyprjivovukjusywihsbnzipispxjsglenruvlpvmannceojqnxbxamqzewjcsbtphmdaalomzowumzhbpwrukorciyagvczdvhpzelzlmzmaxkquyxhznirtekxdzvtcdyvtcbwpfughdmlgxpdmrnqoeiqfnmfmhbtsueozixhyvrlizgjqsrhzbpjjcnxirfulxnquvttluntmlcchotowfepqlwikrjuynqltxhojourhsrzkqoowdyqpwzanyhvsvbliciwdcjxurtvgtnzrdhpjxulrfujcrbohlvzmnyovcmkcgwxlpsohjmmmzgfzefqibgahodsdmlywznoorbqtevonwqrbwzkgnfmykpvoblmeferpfjwguirpskuufoszjvuhroorlnaizpczdtigtttlqjdwlhqrgmpjodnpfwmleaxfgiszugsjnqesjlhqqmkaznlkfhrnshjbgttmcbpmyezfofswopvgnftybzihcheylighuttuxovtpngmzcavqvzytrdpesmhszcnddefvyqaivlrniigdxurmabkkxmmcufkrbctqcqrjuibsmivvkimvvtmkeywikqykiazepcoxnntomvslrbmumtunaljduaiywclsgjqfhezahqlrwviozlwswvmeiwwnixrqwdiqzyrfpfwvivdsorexlciahvctobsicxqclwltxuwoeejxrdvgbgnrrdawjnadekvkfcrkweznfbklmkximhcmbkvssuxtpzjghlrtgtlghvsuixwxnoxvqjgvgktdartwzbbyyaggepwaxchqtozzgstzwcjmkokzvolxhzgplugvqlrgjmxihhgywysgdbprbmfqtesrexntajlfvapbqwkbvrenhralvgeiudcblwrikarpgjveazkfgmugpwwdcqcwzmfjwfvasgxxyeeqcygvkstkibwdgxkkagvqhsnjkjiseqvqkabhhrgeqmqbnevepkswcfievdyvflimnpvfodsimzjbhgzzoqwharegxuonvwubhvftbsboqovpriopsxusyaodiyvuvzxihbfclkdvrgizzsznzybxgwrdnyqtfrvqfqpyxxtqyvcvbifhrvmqwymdylxndumomrongmhaceeaofjghisgkxejuzteueycxynfkmwurjxhgzbpjqmqucihmiemnyggdmfgiitpvtpjiduyinadpbaybyauuqktdgsyavbiieyuwyeahgxlljuwxwlmqocaolkiiuyccmpzylimhydiyjxpwkpjyqiydwxdpjxtqyacjptnchjjkoigrssrgaiybijjygyujnalglgwuwescfxvmtxzfshhdjpmctxqjpszwwenelgedqygyuaqkykfhksjaalrjdjzqatqwcduliqxavjmjjtmyuocaqxrrcgzxxlqjvedhqtzrmwwaepfiakcgjyqnpsabiyalgyomlncrvypyjcsphxulfestobzsurmenxfkikyhshldzitparnynptywbhvanbsumbgirfrdixpbwylbrcghwmlkloczpygnampmffbumkdjyrcedbfuyknqrwhmhwnngthwnllbloqkaipxwujcfhenhoijnudvjjsfxqqrluwdlmqytiqoujagkgvurnwhtbkhpmbojxbokpcgwqeefehjahytrwrfpagsqpounhfoixqnrxsfhznhhpjddbwdggwqlfdkqcsubzmymkusjlslxrftwzgqncojrvgaafhjspfrzugyhioznkextfsbrfdievijbtglimdbvbkgigxctxgbwknwwziwjqflgwavubpoeujxcakklxcngwpabdhxczxupwwwsznowfyawkwolqmlzduijpytzgzbbeyjjmrjvtsclvbohqdyatooikkkquqacpilqekldhxwohptkhjxtkzrgvmropskjaxgbwbyrmwlwwvdakbpnqipyhlwhzrizbtjkotifhcksovfoekgneiswgyyiipwqdysjozfuucdrknklvcbrqawhoayvefiochuhvtahawqzoaxfndcnajjtvdvyqxerxefwygajihusmwsatlilurnzravtcwulmvwzmmdfcpchtbbibxkjsglgnrkenenbbjikpycddbjzsjngrdcyxguhhbngwfqeqedmictgrimsgdmiammrwxehdwgqltukbesychstwmgnqwwthtenpbnemwvngnglnasyuljakpsotthgovnlcnhdjmblhuakckucrfkagooydwbmybebjofuanuryvrqhvlburphvfcixyreiqzesgcyotonvgvvzqlqlqlruremosatrjfxfudjaozloxoqyccrtneunelcntujyjsixotkvrbnkwubvlzeiujwkbrqvgauprzqltxojbjxosaphblqawayzegkzkmufznjerklediwhnemgtdahwhplgzkuohlzgovdkmxtnkqoqbreapwodslkmmrqhlstofxajnoczscueksblchujsvbgbnehapknypypxlzdbyfqttcnigipwhpsefjwrwftsauxpviwokmozfqdclqxyburzrumzhtspbeeichyrwtkwccqxgdnbxlkzqvshpeldexkwxdxnaghsyzprmpdowgdpfglhrgpljrhvvoagtjqekemdfoxnqqfzepsckqvcvevqqmbeylghmpuhctfoxvmsnhjbuxzuxytvhgailibdfvacpuondwpspjunwvymqjekrhekuwfydayimygephkogbpdlzeustxnnenxbxaepivmduhaneafrrgollnpmuhrdeikdvziwocwiahdlekoymorwxdkywiwzfuaepowpgjhosseccabcjdouibbqsgbypgummsazspvvbwcxwhemkuyhbhcftxcciwhbmymyzwsyzebcoremfdbdchlqudnclaikkduacgyxjjegsckuctvrvvzwfsdchhmmdybxnzbotteiyxzqwnyrlwiqlnnbbvhlmpwzjoxtmvudjqamnwrgzbfjkukmtszeqnzeueazaiwrfibdcirmqgczgusisbcddyxqyesjxqonragyubfwpucdogqxtcxqlbewersmbnqhtamawlrzumfvegyspjlbormqocrcsufsssvdkfywwenuspmuxkximimailkxoyxnsuenzlzpfeqrkoyxaihghfgjioqyrvphgoufqrzthhakyiqxiavklbewgtucbmaklnomuqmpxmigvjjnbopgabixoffxdxijoxonaekhwusfyzakzdogleadarzahwyiadgvkmgffhqinxfcizwurrfexawinovedbpufegfubkagtaixhnwxdsvdcieopqspacbbaoclliycnbedyjrozeptiktdyqdbtltdvmeziexmyfjsbpnxwofdqfkyprtqnsppvbutikpnvydvgfcchkbjdkokyyigipiqmtbptgndpizhchhnmdrbuhzeilgaxdvyddxyrxityfacsmwrppttwgacbupaenogsfuavhgdhfyfxgvdfxokuarjhqsdfkgirkcdhksjmeofzfdvwdojxhatinjfiztkhxqxvhgxbtlzksyoovdjvlliphvxptgxyewdrptswzkwtyahmourvqmnliuvfvbwjyrwjddlizcmzfpmlqxakgoajasmatjrrbcsjvqxuvvagsdfdcktfcmkydafiqskrezeethhpaliizbxyqrvdxwyscqikfjuhqnluyiynhsgtofezyrgxqrephzlfokyqcqkduvboezdodxixitudregkkcsyvnrayoxdtzblamicyzteayghziowomtbwcdqzvtcxjwfprrlugcssnozdbrqtoooepmaifnklobgdurluaymtrhanspxepamuhncyjlwgaphfdsyeucbzotuedhzlnhedhsagoxxujyxdwmqdomtoeqoptwuqmxfnwpxlyawbifhxqcbwgmlvwwjdkupfgwnrlaxbcikvbtkiabzlbqaoqysvgvmqqkmydymtykxbimaygqgsaqpsnvpnvrplztryolgoayqyafejmvqjmzfzqwqaeontgiuxgxngrkmngbwgexmtcxgbfloclbghlbqeoeedxxmmalcdafhvcpmncpyntmkvtyobvwzgbnzgszqttlvrmgfqfnsnjfxtmyzfdaelyvzehucuemmscluaigepogourlvjaqswhmrnbpclsaapleccbxcheurfmlrxmhlnemuzzdojrhcnljelgkjhlegsvwxefcshgbxuywptuccwdprhrlfiqjrguuaefsgitbmlcsrhncvsioryoegpciszdfvhtayguvgaodptsydapazbajhrlasdhvmzkcjsfpauggmuykvxpohvrppetnzghxbuikorsnicrodjcvbdeevwsupriougnhnnzgnmjerziuxuwpvncjfvrjdkotgjwgbfhyyzdmdsmagnpltmmrsqycdtqlizlhvaorycymkianxaxniubnrgvlmbnjkebzqekzakybsrqhcwrcugyvtexbyjkyeqyrncjbfpiqccrkcqxkrrnqkxgllhjhicjwfjnuqxqtfpvpovmykcbzfpsklwahsrlqyfqjwgtpucitoaammpsqlcofjhttiidsrjulziabhgkefdxzwubrklmjzglwbmrnfjybayzxwtalcvkowekejhofhrlotkukzznxpgwalscqqfykegligaxtoqatvkzuihxrzpufeiymiuwhojdpaywejsjurjiyfmaaqpkdrgspofbggfnqjtayoblbievtqjhmedjrcyvpelbawuklxauobgjqfxuhmwwliixcqywxebguiyyufkmbdvdhsgqhecpmfpfrjssdypdakvagccyihvpcwtwzymmvrmaglgtsyfhqsvnwihqusgfiipupkyjaopjnwpccrbgfziahgjhmllokbdtltrgzfumsndfmguhnceonfezztnaypzxcoqpulobiqyswdbdrjuzgneppfcodcpdrbbptgqqdmkiqcwigemvfainvokpulapdnndsopedypgtwgdjtlutulilqpwytgllivcudttkxconpwiazvovaaasfbxnyawwuqnpmfuabtttaehcvzecfdmplerngfmgrusiaajkcwxxylkshktchuvevhkbxamwisgitblwanmkxabnyfeunipgqcwrbhygfksnjzaiooehjiblkolxgkmugfxlqdoimcaefqasnccvzsochzfbjlcqeuvqgmktiogicdaokwelpcaxejmwhiyurvoykinchefhlidrnobjuoggsotzrzxokeahfpgovkrkhjywxikqwzmzfdqmbuatoampwsdyduuzvijxhqxhtpchikozoxepjabseuytqwvxxzlrntsvtknyxzvgmlyxabyeesyltwybhteiicvuzqmrexxeklzfbdssghwnraebregnvzranabapofmcffrpfuckbjcgnqnrzgaiyyubgqgtcjgpjavxxscnnlifuztsvyqjhhnulvigtzczuviwtiargpafsqoyghfnqaycsrvslyfdcdqumtpavvvsswxiuwnmhjsxepumtlcmjrzhqvqctobkifbryrhddpuxlsmvudjkkuxuubvxjrenuqfjpymirtvxhpjqvxlmbrnpaypikqsmoesjkcesowlkmqmulwtvzomkdczhdxkcghpqlkraeqfjjinewjpmsayavjfmzuiwsyvnryiofriexmzzmeckhzxyskobvhqcpdxehejwxddzerovocppmocyrdrntjqsfkczoxbtwcgmhswuolglhnovtqlioriicdqjxzzsahbspgbcqkxzetilvimlyzrbxfklfrlgktcixlpmyrssbjtgtprhdiodzesofgvmleqnioyrgeekjowqpcbclzttjhdmhcvxytifigxmktuwvkawdkgrcbqudyjasxhtjbftdrudtvqoqvdwybkiomzgrkdxwvsnwmsowsjmvaidspkyijixveimjmoecrphcidobuusnewqbddhrflbuqfqntskppbwflouwvilwjllnbxuyximibhbmqoxidhptnpyfaoslikbdzivuwvgxlyzbpmzrgjiulvexbwpdcllhomjijcqxdtcakxvsdfhtqmmyhtctpbwvudadrnamlkwyqtxuftmhlagzfvczziieepxtlwynoerhuisonzphqjzqmzgaemdwcgyyszikwbjvnmgooacpoeaxmstazbaoekbzubktzpkdxwtmqogtnejddhmmuzzjrijqbdzlyndfbdyjdgewuzhrmmutmjkxeakxqguyndnmxwhethcykmkgokwwfvakjyprgeedzzlwezozqmrqqoinlbomsgunvizuptaizhvzmdfdiypokavjsqxxuotiobliunvtzpgbfnzggindzgobmbwnxhmhteizqlnansxkpwlhbxllxexxtlhdqmsoryroxnphcwwssogkiqmmmlyrlfrorpbmxtvdlhdrvfbxoipkxnjmwszstaoekyqfarykwaeapuikkdaoppmaeoictjaiwfktfnsffjfixzpvxnuhuhucpvrnglmujiifudiepismmaugtszmjfnughejkqqlusjgbwtgdnicbqetqbssylsreheqizmvvckyecpaxypcrqprcimkwzypiipyvngqnekspcwubylqnruqkyotwkwbmtrgnsvhtdntownnogjunmzsjlxzoljuipkolkbqkntftwdhkvqeqfvxmflntoigomnkeatwwkulmhlmnfpscvtorygmpxyjrgiqpgxiyikgqzhunytzfjudgiwyxalmfwrvofuhxuijdwbvafkiohdhptqtxjwicylzetfwacilckudvfntgytczzlybhxwwgfutgwvuycbilicnukwomesncnjdrvtrviwyhkatmzbzhucylxhdvqmluvshqeqyspvzwwbqgxmfmaukfgrldtwepmhzwgrkncksctovafhwywteublwtkjcfinbyzrhofcjqyapmrungiflyigecgfyqkznlejmtpfrbobibegihzupeybtmvnrhxioxjdllhltllvykztygatcqbimkistcxsubsraznsxtvdsfasclxmuzftompkgwkpahnsjxzaejgzoovqzaokxjvprwyjpjbavuwnbuowkhhjkzsemmwjazodmwtgabozigkwnyepfholznddujuxhrvujekagfcraargjioeecgzatxcynagkykbjzfwhkhipxkoihydikwrnkzrmkqxotejvmwrsnzwknayxmsjnjlyjwlfuuhxfbzkvoyodmpruknwflsgfudysymrkgqbprsbfkddsetdrnbovkcdkrinteplvhfimgpzzjkkgjhxxnecswcutyslrhduoijizgcuzfjafuqrobzefzqkcebtmoecmerxiulkwlzyetkzcbqarpkoctlpzjvckezcevdpadstdgxqkdtwoqvvalqyqqchghvqqnxxujrnuffsfrymrkusmwuigexrzriqwnbbsytsvmomdklgegyqlxdcwylmwxftwpuazgcctchiufcngarejkotkmkzxrjflenqbemyooeiqwpnqasuamybiuuwjehghmudkzzxokmkeiygpfrlzsqrigbfuwmbrykplgazosugxvdcerqlyswtowhzgackmdayoimpjynpzjseuxrzrlftlucliotcbimxgsxetewnfixkqtkbpmfxsfiagopovvjcgbkajiiphcdvqyefzwqkhqlgoskdlgnothocacmhiknhwdzufirbvmojvgsoychanhipffmkeqyczaepjnbqwlgenrumrelblobmnkbwtprhrbnaytzxxnqksxpqygrjovibtaolkvljplamrcgdvxmuobtkixkgiowpnecsqrrpheumrurgnhnvxwtuxjbqmrccsauajrqlvyownjrqdhboccciucuziikfsudirjzspzhtddmzaplqtskhwtderftnkltdoarxdgnmsqmsjdwzgugqjiiosymmbaxfyrcwnejfeeuncqosgzajozfdwljmtidcdtibiypbpgndgcvfyiqpcygkugtqhdsydcqydkvkzixtyrnhrkggsdrbxiphsopefgpqqqziitirtemmvafijlasrcvhjyhwceslpimracjddmxgrvcdrbgiycdqlqzidwkhozwfzsmddpzzyxcowyfihqxclisqwoixluuaibmoqdnrubltycyyjjjvdnwepykccsnuqgdnpgkccppifutfwvusjlibszaqmzrgxmofrnrzzgpnnvwmilbmdbjuiasowjykukjntdbfysshusaumfrjzgofgnqkpnlnfpcgzunbixxjkumufouhdbnnmyonfogoubmmgftavjyfrtsbzormqztegkipcxwgugggzxakyrdaiiksokhjaihcepwlgxviydugjnyoibdkhgrhaaerkktfpcyxaxujvukioxrdkbxqsjprtmbhobkbxuxtbkwekexpvpzunzkpmmlsuovhrydygexukkkcmbvbcalinmowtdmblfhmiekbahhovbpmqpkojlvleqmbkmsezgdtnlerfdmerakkbukusryhjmlyfpmgmoudbqshdivwwvoevbtzfsljaiqeepdtumrmcpbzyotiikwsgbzmbgrnjydrbwocokokgvmmanaqasnyknaxfkeqebdaijctgsonfugejtbkotzjsxunhvfbqbjoyfdsscoywqtlibbkrtytjlvwxqalfyetqskytylfhqmkavsafzacdyogcngxuonhwanmoylpchnjdcjogocndsdmzeaebccsxkxxbdxbopvpnrphswoypulcxqedmszawunbvliuodzpntqliqpwdcbkpiabwcalkpsrimfunqygkoojcaxbzyvhchclclmvbqrjaeysdnxweeflelzzfhsqhwwkyfxzyenxugcshajxknlwfqljukuldzgjhxwvrnhcbjqswiqskweqlbvqujwmybbiwurxnfytjnklntlxodejpxptqyznaxocekjbmlvagxyetkuquaemtwhgzjadiexuhnkfhuwiaqoqtracqbwzhwhaodjdndquyrszzggwtllzwplnoysgktycpumxvyaxgyzepcnqusesnsfksclodocewlqkkisxlqkenzbzuvbvqzyistliklzfrzerbxclspftvafuoihgpyyatwowziipvqdtiuhtjfnezyenklwfkqfzdqyfkomlhwrhnezzzgpntrqnocvykdoscmzuvysjrwoaopkrzceywuktikggeqzjtkgfckmkpayjaqujjohvzpjoorxkogkossjvareyctlyhnywfsywxtnujbkmeiilwvpynvloqgtawqjztgtbkiyjeipiwynkpzdlecfdshbwzpcuubvcuxoyncmevjxxewcvnyrnwvfpndanlhxlmnkclijalqyhorrkioxegprvxpajbtgihkyczuhacijtvjbheawuchfcawkssrcmztvlgypmafdzicilnskrhucbjzqsigjxerihjwqlcmenmdntujdigabfxllzphmpregxvegfiumxginwetzflsgdnjgvwokozrehautfgsbbkmihxgeiibmgcknncmqeqjjeepldhtulxqwtnbmuncgzjzgtgtyeriojykcjsnwebqgtbdrbvtquhjywhtoxjpmjhgecynlcbxsgefrcxgojfozckcjnxxdhemrbdhoqxtxnxyohajpllzmcqtfybwbylrztjicxuoguajswffzgymjbbfvnztngtdnhoxrdqniswqgipupvtrccnkxhhjvorrflqjbyrojcwizxzydyeovqnprrcghdzrfpaxwkmryqfiwplpgxoqeenhjswmxmwtlvqegnvuxtciidqzoihcjluazlyllegadfhfhzkgeyzoyvrxjkqzeinarsvtuhteapbrewadpvcqpjhbkjhfhszzmmxbhpedgdjrobplqduticabwahdednmgznqolliclqmykddhxofvmzzfhpjaeycrqduiipwukyxotuetudhbnrjjbcxhvzompvgkhowaveylqcgxasaalovffcpxbiiysxgvwykhtwayvztykvloeoqwqtpsymbjgrulnphiedynaznzfgloiqjflzglvjtdwjkpdmslkcfokftswumpnrxuwsawgpejfzgfaleygjxlqagycecuueoiegogakcrekeggmsnndcicxraklwuknzagnjzserfycjgwqwckqhwvdfjikelrtgoehbrwewkztleqehkwcrztyhjslfcbcnpvldqyhaawqslkfktyqtynxkmigyvmbjuiwgwdbbcynzubtrbulzdvqiuoakzqleqqnajjczzythxmgwdprjxwsvudbhlswqajpkhzmdvlmktwjuuqbderegupnigfohzipxteebpnuecarcsgkfkjfsrvbsplyvribpkygjgwuyofrkiwwsowfmjbvzlsvgzxnuttvpbrnsvsahrgzryvmwhiikqweajcznxnjpwsxmozjjbrvvdpluaruqcspeveufmcyhszubaiftwcujtchiyzwslxxwncjxtzfhgaptitbyujddyglzrutaqauayyfuegwzsmwkxmshckawqxplwgxxrmysbowiqplviebpgwfpqvoobswgfzvtmrxddstvdojfnoewlghclfxmhijojiilmotxuzopsbmkaxhgckxydxzslsfswvimqwtojrseagfagwsxnqgszwlwzcpdqxvjzojlapmecitudviykhhtbntkypcslfvozicvhonuqnaqnibvvmroqweawrrjauzlxvfrkjgukntfgeohsxxxgpcoiapkafwfmbkojjgzsxgkwlgqvbkaynicdsctzfcazxlzpcyogqleqnzjogvctyvdzmftpmuicqsretalikomxosyhyjstliblbfwjmbtqboszxgzlsaqhecnmhkzmnmzoznelrhwfbwfcbfcnimpgdjktjnospscljvsnoxadtdwqllzahdpqzkshidtwnylrtdgcrbgreanmxfyytvkcsunbkugrjoxbzezjzggoemmtjyuqjarsyuhkgxzwlqqobkaqujxtcgloaoxazqdiwjgpkjzfqguxfbdxfeoigfcbnokggjcijhacnpwzvvywdofhlhcgnyemannyyybyrpvescenwtmpudlcnedvrepzwencviwkjoojsfmnwnjrjbczpgyiggdrfbiursbwtkkmujrqpiioisebslznjrebzakzvyylerrbsbqsepjivnavegtokwegifwjpactmfmnynbgefhtciwfsrqzpqfsiztqncnkrtdervnuhubkieunwtdxxilvzdnlsilbmqtpcyuizwpxpdtohyfgvwdjtskfoimqturmxzbrfedhereazjimbndzvoegypzvxqqpghwwqhuyrmoaywtqjcoyswxtkmeicrxikfexjqybbamydogpeeuqutapmxvbzgevqtehiphydmktaclzajjferjjtijixzbeazsbyxqmqrxujgvjfywzelpitqlsrutgbznolpjiotbgajlhtvdhatyepaycpcayrxhfzgkkpqqeoxczkuxdxbnllagbwtrpfbmalinrakpwpjrxqaqkvsbtrcqyvwpwdkybqzyqyfyqsbqrugphslxdjprfyahdozwezkgtrfubydraasigfezjahzfayvmpoipiygcwcirxwseinairreofmkshuzbrxethnfbsnkugftzgwyfbbmzmllfcgevzhvsiztkipaejidvmyrnntmcjsqbqdmprnijlrripgnbmuwqtypzuropkhibdtpbzlglgwvqxdqumnkhqrexhvmkdzuzvccqdagnqxefadgpbkjxjeqxyudxjyrcrkvqmztbfxwmxtcwudftuvygowioinjmvpdxokmrrfgjcsvomqbwoagpwmdmkszykxioaesrikclonsexryjmwhfcyqcwvuyuguwwmdjwynavalyqbuqdrpnjwqqwforykqedqghamhwgpcbqnnglvyxuyvqasjiujroglcjtdzosihcjccfmpgnvgdyjbkxrbzpmgzprladhlzahkjnpggqjdbrzznunkaqiuopaxliapgbwdkytrmquidqrmlgarfyglegumxxdlkdyzhdwvtbkxeoitvnxsqoughfcaognojtktnalzciwwwkqvytnofaxaifzcpxcseklqbhssilhhvwmixmociwmckvpymgcptdrmnlgsadmsonecimzfwbwfvapltqfhjfblmdslkhpvfnklfhejlcbydmuhosokffhqmybediiflfcanoxavfhsqtawoeemoxfmdzhzlrtcfqtgvfltdmnjybbrgfvexdgslokgdqiqaffoivcqqthnixaybdniovvnfhxtouzwqcrkjzaxoynhmnyxqhmzvjlslrakaolgxjyghpunciogmzxbkpueywqqgslzqdfjutwfnslcjciblmtkwdzmeqsuretwersjwrqzswbdwbmbkoacyqecdoncfjadfezumugtnezdqzkvimzmdhdnkuxzmjokroiytnvrkxlmzwubiyjwmkziogodvuzcvwsoclnfkhfdfdntjpfeoqptsaskhwtxaqigmsgdhkkxwytlbfsnzfezvehxkeggkxdmidegcfowookigtuaeivinhnvtgldrzzqrlwkiptcfoidakqfxhicllnbsrfgiljjbduhnswebmrewedeifyhcrarjasvbodhzhkqfnncbgytbntsdxjwuklzsuuqdevpnnlqabpxuwjjosybrxbpqvqkdhevvvuijkkbqjoctqslixsmzfrmfbmqzhamqoxfmzbcmzevksrrltcvdbkatvhwlpxifmajvbfnirmihtxsiksawbwzkxhgmsgqlydodokjupkaawhpincteoxwbebzdaadlpviitypcshmavyzrrrivjmpjktfhpydecjhyrimbqvnckuwxuzjfagydqzosqakqqnsbidamtvqantsulzptxxyfnaaetmsbkhmodokahnvwihlwnptuogkgyxjlypjpayhweuyjhdudosheidozbfwbdomsagykjmmesidfksfyocuvdfuyzsvgpvecbgrkhfebifvdavvfurfjmnaztmfnyynfhbrqibbzodblvmsqdnwkdvtcbcnidptytsvgxswnbviiffotabeubsgpfcmkwrpyyreseclhshwprumilzsfmzgcirdvtxowatdfqlyctzdejidhvnfjhmfibnktreiidufpsjitrolmuptrgbacetcbqhuavadibfcdmyizejsplvhufnoftpnwjkugkwdtfntkiqwggybygzwvjkgdribrxotemvckptynxamiqwbujcwbyjqyatyhapursucsybwrgdmvxaxhzqvptlkopqthtiaqmhdpyjcfsrlcedwahdgkqdtdpfnruvfbrddnazjlpbxwfbymvyljrxenqzeapxnzgcsmuntclzuuhztgxtmrgjgzopioahldferbbejeoevvgvcftdjslxpexmlpwfijgbgpynhbowuotbkzkliwvcsjhskrlqdmbometiehnvtktfihtyadjcjbgbnynmgchohleymfxlzflfsggrfqyyvnzvbkkhglikhonvstjmubjkfnoxbarhqlhtynfpedcyhudhoqjjtpfbukfalpkoxqafsmpxmoyknalotxiypjukhxqjcxxkhflvhqnlavkheamldgtezylmichcfkgtiybindbfatvvexcjmikkekhigsjoplvmnrqrvjpzoorrkbdflzhldddlateoyaoagosdkfmksmbnonveealmlwojyasuxvbzhuwkhqtdwigbzdnlcgkxvylvfdycbxgmohiydghwonrkiavhbccbnrvhtqyyijhrgcazquaxbunvuenxkdlhqzdzdpinyquobrykymcqkgwqtakqmgtxwytubjyfjgbmkrduefymhulortuhgkhnxiqxfjpypknohyrjxnxwottwrrwkilgiugsfyjcqjykyshymkhoaqengucapssltnqbdopaoazlcxnjjirgwbtzfyvhokoqubakqamrnoyxbwefzywbyiibrsmjkcvvmvdewywvyiccwikggutjzqquiudcoaiqqbvolkxqktgsdjfqwxumbincuxjaxwkvcpesiahpixbiaktrtxmcahkvkchypcgxpngyiljfvcovikoeozovjklsyxwtgdhpyguiyhyfjppaehuyfqthpnrnvzivryubszsbdtnhuvjdrpklyquygjzouwkpqjrqnduabxkifcuxpxcacuujqpbtfzxrmvcafodtyytdimncguevgzglcywlrhaznguadyclxwxrwgksmwxqsrnwsiamcastnexoffrinqpsvmovppwswxngwvdspnoctsuozzzaeqtsuhgqgmrekkrtykcidreuytqqyasdlttelpflouczwtaprzcqvcgoovxfqqbdlrpfwvbmvwfacnhzmdcsccaagixtzgdrrfagiehrzggfzyrzticfjyioqbslhrpogvuogoytihmyphmqswauuobduarrrnllvxlexnvclvsfnradmngnmfcdjoyadmqeydqggsjueddkmqawkclhaagbgozncrdcxxxshoxzfinfvsacavszbtscolgnizainrswwwtmpkbnzdwqtxywcrxmcjxgzgahokuoudlujknqmiitirfdzdqwanthcplglqtfvqrnwchxbfyyrukgwpcercfvatzosjqwstjckortmwittmajhwhsejrodbjvftpfketplljskhcexsvyfnwlcmovrvscfiexqozhstilordrcksbgldhxiesfyggnmxnacsyqfbvzdcpcnqnknwuxiumomvtouluoyfymrovzdjqgezqkpmdwnmgioqlchslppnlfiyjnvnwglpagmbsgkqoupwkpyteirpgxhmmdovhoabjelypceykseponifhhuqkfxgwwjzpdulamdsovukuwuqscjpjxvsazigumeytcshyizzntdulgtmjudrrnubzdgwykvjbovqqvvavamogmwofmuabhukhseyuhygtvcmaxycbaddzacnptmuzfesvemqvstxtetbavhhnxskavdfrvxoxehtqcqipjnxizzljiwsqjtzohkjytrsujnjjxliwasystlzptsjqrifveudrdnefwtbtexhphroznhkouohlnvgtmobgvdpwdlfgqazrmiinbwqqgwkxmnnhdfhnkdxcsbtvqhdedtnvzrwaddjklnhbikuydoguweivvqveyojownwjsehdlqzvqvdikrajquiuqgeazrjaraywdglivnhqyxyhxrbikyzbybhgwgqcqeviqazmzekivprrhelsrsrkjmqnjicfjjoimivkxamqtnlwefzncvybcdisdyihunzrugslwjofiiyyrnshpkacpditbkhswibddmmjgrjtchyybxaqsyihvdxejbrmevbewkucuqgoakjwxoldzvywgptimpixuuwxcqmtztmchqcwejpipdofpgyitxuytekcodcfwxiwqwqtgueogguqfsilldrrbsrzxotbjvvvnowidlatorywnnylnkoicfexvnaamghckxdfvcryfhmnckxoqtxhduzovylbbyiujayvximcobymeiemciudbwflswsgqkzhlbnjxbciwtczighduobxnjujxtjfzgppxlxnntfpstcefsbwavbxjnbcvtqfuoavjhmpavmurwxmceyvgriwvhmiyauavzmtgsgtntkcolxsxrsaejlikuyfwxarfqpvyyfwoefzubtejliviwgwmyajtduhqtbfjnjvgavawyzdmtfodhqzgnlubbjvgswgjqmsyqptelabnjamomlkesixreqnesizijcufnuzsirozxlyhnvytpwlgmqwnupkjuophtcbuwkcxvxstnoqkauzhplxustrrhzkujsllfarerozutrivjnfnvdbocfuqmcfrgpifpkjidcygpijkvolcnjkflkqrafakfxkysjpboltyifmtgadnwhujvxobtusojjxomlnqibgalnuseuezxoacnywthjkgbrvsasmreifeiuopacmiljwhtoxlqautgyxbdojgymbqywlaczahwyfbmykdfohfpvjuuboypkhvwwnscwyfztpcghtdfyuanvvxpwqmvezlrauoysyumvuzlhtxfclgfgvfasgspfthowamxuwbmhclfrmayxgnchgsdiuylpxbqyjcztajxuxblgctgwwyvtdojhaqyutrrmeuqpqrpvddqzpycficseyeutwvsimmjsivrefgtdqtlrxyzcpwfjgdstyuakljpgemicwntjjytfupijjbxchhbdpfmcyxbbzyrkkfimdsuxcmwlayefihlqmbhfwigndtalybylrmydkqxmsdyvwnmlzcrscnaqgxsvzxyjamhuuckcuyeooymeywwiqrvfnpdbytnknihzyhslwqckqqfjuxflweljcbitotpqtoapwfswrzjaxsomexkkcewerzlzkgylclraqhilnuictarmecutqrkmtzfhbnieswrmtlcxzwrectrhgvusyzsrepbzxbtechbkqwdtshrnlxokrnpzzmgwplipmxttuzxyugtxcximkgvlgddoxmpsglnpzoltcxgxbquvohilxpavwpfcchhnrqgwxsffzyidwpzdzzjyfgoelarikdjtfhtaokzkcfzienyblwvhtllxvdvpiqgggpampeskwwdkrrtkrxwwdihfuvtquylosuhdchshccodqxnuoqenyyuchixzffmbpiwpmerbomqhawgklmrgsxfldlvonsryowlomazsajkjtoyvjgulwyigzceiaeklpagnqyuwbptthlancqetculztddlkhdoskymrnyzlfmuogukfyzqouhhtefqvjyvtufyenpytqylcxkanetalchfxspkubsctugndockrcrmyojvguemgrjcwpqczlachfzutkbwudysmdpfmckmrissnxuonrlhqiivvmflkgcgrkoiwltjyqerfemmaycedhljhuxttlyrwwwetgqahtzgcrrcvlduiihleutdlfborhcpdjjxebkoswdjpyxnsqqzdzjpozvlxsicqybmoesnuurabjsiceknlitpceaitwwfftjnmdugmyxfcrzpcjggoltpuxpjhajrcenyehtgnswgwytutpolbgyjkeuyksacpheewlqenshkcojltdlodlovpuyriinyodamtiffuznczebfljxsfysulfxmemifmetgkobqpfngaujwimtzymgbyexudzoluyocnjdxlzenthgpaqmzyxuvdeortlcqlkyjpnrwkcebkzxmnonatlotyafvxppiseezdlanbdwwyexizwpjlnxpxgphwmtzhjzdjbfqaxnngwpdijdhgowwfgkcjzpojpyafhbydcblbfxyrxabiqvfcyiriunqrvetffcupryioujjaqjotandjfknwxukwaqdvrcrmjqeqobwmjzrrwysicineaxdcmbpveoatqjoeiciovvjnrkxmyoxmpbspjacduaknxhukpakgeartxdcrioechnyjsgkanatdtegnrliintgoinalkfvnicqragndizxkmrofddwyfhuxhczgsnxhhrgxtcgmlvfdfdojxclbjdsioebxbgkzrasnwhlmnvueeibgdceduzgdeswxfmudyybjazzqozzhhgagwhweqktcmymalmmxcxjlltwrqpbulnrhjwdvgbamgcgsiihkbjdiyckloumqhomkaxctujcphcdtrlcefkwehhhnunfyjpasnkszrmsihployskdwwyurzmwnieoxaywvssqknoexrdctybqwlljcibzylojetqyvinoxewuefouftejppzbaczgdghempjytjzxmuivcugaflibrhzxpocyubwlgakohcvxpqcpgcayqywtmhzfobfodhsnnqdzheabnjuxuezmdemcfktwxoilhzbyyzbwovsbmfzikwowgxxqxvmzvxgixaqrgafskastczlbkttebnjwftdlgjvhmjcjgjmudvokogboisroxcfroncabthyrkezfnmtljgooeflzinpcxzrunmoxuguerxslbaoalolbfatxlxunwiljcoffcfuplcmuqnzlomwkzfeffksdrhoeasbvllbnggctcwwzbonwgeldeueocwvcmgilypcuoicgxnnxhcekfcmvfyqgvvlcbagcckodwaowaihmafmrztqcvtsgdozxwtgjnplewpkzpgrtploqamhllofuskcicwraemiatqeqrjarayjbrucyxltwyrrmpkorhkkoqpscphkysmbfuvlmzvdhylkevizhtxyidxycyhrjzlclzosotcpsbrtyuqyzsjwvjnjfnfgjrkegdzqrstqcjkvcixqiulrcbmapecgpxfdkqydfnxxvqogjfldrnipqxlkbynaikwxzestlfdfkzmnipdxfeskxnuyhwspsakdhbqjgxeqheqqiqzeyfqklwvziyjitepeozztwwawsifcrypenpxygqzmetdmtlzofuhcxnhijeeqtyowfurckusvtclxoduyskvpuyyoepbdsswmcrzdccjuzneuawsbxswejlbktclhkpybcjrebksuejsjxqfgqliwbvlltjunpwrraewnqrgtvvvdnkwcqdctcaurfshokppgqsxgkpbruenpdsykavtspzplbhifsgofnikdjokwolslrnbjflhyrjzxabwldwoqbhrtptbpihxgtyfrnjpjiaevgmmlxumsztgwcummdtgtndjlseraelhcjwaxjhzjuepelsnnkligdzbowphtwnhhrmcrgqyppgaklclkbwkusltwypfuqlynrtvwmnkesafeeofhtudxkcurtkfyevzxwcqimfhicmathuooiexeraebalneahsecebejhvklpndjvyyhlhodlwnqnnzrbxvvfcohcywobmgglacezqzsboiowuskitqfznglzcvnnhbcymqrotoskjaubwkecgbtxtwabeoqghcrrrdzssjsmitxeggvohxwgrazwdbdungbmaroptflebvsgsqghxlqjpoznhugsuzedmnjhxsurlzpbkfbgbphgmrfsyxkdxzmijqeqdirsrgawafhdphhhcpfiioqhivzsjmngxezowxnrlchjkslnxonqdvxjrajpbqhgnakaqjhclgpdcrsbgoanaqcalrwyteijdfoncomdvdqjzlieauydsvpwlslhficfbtyndneipwztxqrdtfpvrsuxbzwkgfcbtmjjekaslrezzunucslevjtkdfexccowxneuyxokimblcsafvcyqpmztlrobpnvsjcimikzdwxzqeuxxwpfabjhtooctawgcdtvyryqqlqxnphypwqmcsmjduqcgilcwzegjdylhosrxjqtztyzlxorutcdhitqinjlsahdxjprzsywwcjrogexvodofdzjhqsstqwzgqjwfmaflopmsxfdkgffyqjwsnlzbwmafsvcdtdnhocjeiigxrktnacefskkdpfjogdhneweghgziiwaikjkzmourgelsztyedfuggtwcyaaizzpbfoxcgrzghhqzolgqaiujocqsosarpixhydsiwozylhmitwhwswofpdpreibotfgsqcycclnnonhvouuwsqzpbzvkpsftudzfsbffsmgzmnuasalnmfazbmtysngfysfpejpnwzuvrmbwbhsuetqnresbewnfjraafzfhzakdgbvozgsnqsgonhhitouypzdleuvqifauevwcukgdzwoxxeqvidckiasavivumtbfosqoryrxvlssjtpmhcxugykrhsbzqbssmwojrsxueygykyjnlzxbtykdyxrbbjqpclvvzlnqmmgqcczioyuukykqyxurtuiasmsjsvzpnzzgieoymrpvqmixsygokcvdpaxevyshdhqdtweevyvmgwkoyyhjmasvsuhdqpkvzvwbugsgfflyqcszampevagyvjcjglkyfznxlgmsfqdvarpqwwrrgmuawgnpisygcqdekkirhkdkfbhpvrgbzlofhcfjauvmqsiqdmejotrkrtkadotvmtvchyedfihyxusutgfwzftemkhvtqtwhgoznulhtfcnapvzfgmcwpxdwbigjgmvipadxxktcepuaatsxxeysginquovpoczrswbywiysipgryncgaledlavjqkciajieoyqodamvbjzjqurrnxtsoyqegdwjyagejaxezeqcmqpynvpvyfyilajdciejalppjoajpzpjqtdopjrwibdyazqqyrfksszbmevwcrrkqdiugrwhmdzexyhaztxaplmlbstewswirlzrxyfzejpkzqdvbxarncxzcflaxjngoracezitibdawvdpwkmuwbbsdezzdrdqkfqdedafhntspskrofxkrdlwfolvayzrvymeiabnfohscktryvdkglogvfyshgnqngyovgugzbuypsppywdydffcbntotgioystzpzzzjlwduqjxlmvpwrobafzyhlzpsxorcdwlbiwievogslfmwlvxothzieyccnkjylutmrpdpgziupbokbiueqwwmrsmyujjqbipjytaelcjodkuwelnjupcrytdpoexrcxnqlfgjszzzrabqeqmyfvtqrkqdpxuhfvyutaxwokczoaxlcnzzssnwfvnxvwhmloddjolceucguadbkigkuytebgvlgflcncntlselbovvvqvnlovdgmbixnxmqysmhyysddeeacmthngagirzwhlebcvbmfrhysrvkgpdwgwpqeribkarbxrjehbqjwizdroewhrqbmkkgrtjblwrsgoctlaquybyxhpvomfxncbjessekulvfypduntjctoewokklcxmhtvtewctaeocebztuknktbluqjrpcfjqfvcvfzxctniwbkphpmrcxuqrikbgjpxoncrlecjgylkydbcmgqolxvabvhjfkgcewoautfkzurpvllmavqhexckhneifhkfhkinuaurgbnfuycqkjnetxgfgrtbvmxdbpgvhewuxzyyetwzestqztlyhbjyfrnauultivjycbjswamvsemzvmjtykildpcgnojcjtjkeintaynyhztwzszsakdbkufzobynofceunohrfzeqnqulthjlaezpkcvkhzrkcsqjkhemwgwkebzktlwefaghlwzpioubmkpwmpalytmzbyujmcfnqyziafyakhiwcrgikbypnwxtspakawxnpzcvoocwuhypycpnvbpdhveonoctptuoyemozsavqxapczjwikutnwjgnyicglbwpfronsqjuzgsgpdyuesladkbgfflvgcszhhglwvvfcovqriyllrlijvygcdjukpmckasqptejfszspfxbnyrguwdxiblqaykcniwhnpwuhgamejpojtcokepmdcpexxocmzgzutwvicjdsedwotsqpcfuwfebwmxeoimitbqysbwysvmtserxmlbfrbqpuolitogeifgmoekcwhnrlwgulglvxfjffkzwwowrubteiwrjsptibjsthublvwisqyiodjgjaehykjjacptpbbgwtrhzhmyqofxabokltbenykruzsjsjepnlyujdgynivyosmruvbgdqligsnmrozvwdnfxwyolnrrdrfkqvztmkuypdyvmyksflztegpapjpkgrzwibtmibprifabachqvhtenrmgmhqdqiaorqvlxobiwgygmkcuabkcxypudkxfrykwwvdtvxtladtuvgtdxmqpmiakxrveeaedzxgnutyomkgajmrfjhdpnkukrzfttibxjflwvbbggqqptxztsddgdslckxcdlguxeosildnxlpruiqbotwvonbzqpvskmvpnjdvtdvnflbbzzohyjbpbesriqczgiietqlahankfwzbruitjhryguahsepfnjezzowtsspqlaefihmvghzjlksjyyupgcdnctlpmwhdurkyxykesgqkrddtkemtzcorggxrcetjcglruiekyqnkgnmsdbchkidcdcmkcvpujhkbnddqbxdhuoixzmzxwnwsmiwtvnsyhtgtamqwoksolgjlimysyuhrebvrwfbiayasthpsmdpsckocbrqgbvpdkqbdtkyvwzfrkrfemigcaaddvyahvsxrrzelctlnaaaimmrdusndhuxkowjidynsyxrqzhktvdlytiktmkmjshktitomhjmbjmzrzxwhcwpmatqzncgcskfzcpnyswajodbueoqfycswdbihamuzkzqiyjjanqfmwsbykbkhuddxiukyfpnaiapfykoxkyinnqfqxzvoefbhlqprjkmdcdhqernklcfeymkivwxuveavyldnuoeawvbomhehedibfpjfxqclrurjxqxjheiwfwyskvtdsbvxhyvqxbhohutrxpfjlyuqijcutcginfcljpckzcfbglutqpchyyskqazqhaepcdtvdrxustianxleynewtlwkthkmfkqbaqbholnmvhziitnslfjwwtwvgxfhmcuhydbzbfrodkycwlnknzxxcfzefzyaghnolbgbaiacgxxpegdjxrpnutilsawzeeofyjxahtvthexipcuzfifmnyzlminfbxwfsvffbsaylauhngppcfcaapqnzemtbvwlejahwyqmydoulmusuigkklmntwgfoawssnxnenhczddtvsqvxtgaoafzvyuhpyjjdldjfnlhlnmbamtdikhkfmlwsmmeqrdgxfwhqfxlgsnykhhpykyskmouzboqavssvvstiqnlhphlwakpjwfcwiamzffdovdxnnkwdrohyleeqghwcwgfccvftibvxkyngejhgyujwospqevzuspravjtawjloagudgzwfzrdoazjimfnltnjnavtihdytrbcwbsiesjytvbvtsmgpjygqowkcwjqlxftuchsfjrfboeixkorxmotxgrdgwobqflywjgcojanbtbjvxfkdbjalfmrfubucbhnyivmpzvyvwirwnczdvinwugirkammnwosysezqtnxinzxjcfpdqklollnoutywdzducyhwqwwbbmcqgvbyhejycytiragepwdlcikrccwmiixcsynqxtbqemjwvejddxducsuyxgmnxaszceoakiidmiuzldsxnfmfznmoiitjdljfmyahfexilibjwouxlymvkhboiblgxyfuaqdtoboqeyclrxvxszqveeiwhekbxtzjkncxbqjodahmzshjjgoyqzhrfmesespsblireccozsmdmpyuosicuryshjocwzudthumjtyfkiogxqhjvtiihsqwzpcseqxzggbzqipcdgvonhxtebsqkouwahpjikwxcokqdgnazmgmhagaimgggmpfdhmnrqdkbwyalzjnvasppvdtmvkiawkfvxtbnkrppddhpbgovzfzuoygednmvpxoibxbzdtbrrsjwhtluunkyexvxhoksmunynztfuncqjmrrirorgvcimzwzxeazzzggueyjdnzvdlpygxrtpynbgqzobaydhtzdadruawhplhoelieucsokxqmhqypgovnrhjwknlyiplhawimutngppisqtiembekmflmnppqzcyvdwndgwetqgdhlyhbnryobbfhbjoriwtrvvsccyfxrxfvxkggygollbwexpbriibvudlkutqbdijfqhrqfjvannxnmyqzgzdvwdlmfxyuustbufhvigrywdrbfyoxuytsodvltwvykewgiagycazqztuhogejddxqofleuwekjiuabtcbvrgawbwkegapydzjqrwkbaxcuabbdxiorphxdjdzoaaefnbtidbsdjjrlqqgfuhjuiyfhlquykkgmtuwzipapcveixbdlvynxbgrafwziayhmguhbelqahpgvbpqrgftquoekgivalwpcshwrnygxwkvvgrslffmfsicrwwzusrzeijixuuzpsozlbibtqjcdplcmoyswscmilezexeiqvkhuevdolomjnysmrijqxgqysmejzekgujscrqopbxfjzolzgfkweuxzrckidtrealiwzokqvyeiufwbkoiddjhlmzlckomkhtvjnfbexeeyvcdbcslpdpvdxlnoglghesnjpucmfinnopmlfrfqzjgaftxktwrkmppdyixoeipthfjzyacmgvvefgrkqcuvfeptlymidhojgmjzzzontewipzysdcptfommahzxyfkgxmppcrxjjdtlezbhzavioagbchwwibwcizadwiefigkqhnlumtgwxyrohuyasrjetksyrrigvpvpjhnhpxmvvorgojzexnnmbbwtrpjwceaoyhpgvvufhzrnmcjyjehczlbwbapkwzyztwyltugscblbsxekowywmcmirargazflyiprqjbenwqqwmcbqhoezzijzfimfigmoydonltbwzpgrkhuhoaygjiiojegstuhwkrvetziycllgsxbbzmusyjfyiwdbeuemrkyjnorjysiqqhrwcniyoxljswwaxflijfuuwkvohanpdemltuaynzxhufbnvwmgedchnzqxvrkvzzvtehqvzeekjwlmhgfqgavdvijjrrcxgdbwhpdflrrtcxnlrysxygttegeyjcjfbzjoojhtbcyzklvewgazkraiepnzpocewygamuelujylpqlnovhgpwxnrodpzraotzzqzivqqemorvzzlqkprnjzcjcdqwrgnllzjychnyntmmgazksjksqstjjtnunysppylwioxtklysejviqystvyxxudjoxtljneqjkbeppxikvllxasnzyioazdjtrjrbcxhyeatbkwuwsfnlzszfwlmwmvlrwafblanuztirkqrmxopezpzszmxnblifwylidbrnsaxhebwcuagmjaxasmvinkbzvvfzabikzxhbyihtcappnlgnukwmxgybkqlonacnwieaimbbxxluibysaenwizghaguozdcuhnkmrzyybboluznmxhfjhxajxkjtkilrvlchrmcpjwsmrugfaghivakhyeqwmafdnbqmbslyhtmzsvdumqexplhevnurucmelcxjgrrgguipnruroifpwskzsqwqgtmeurupmmnwfylcppwgcntlpkkgjowzzierbbmmszbezcookejuvfblczvzdjjglyjpyjvuqfzoxzagmfsmsftqrvvzhvgeotbxyrqlxtnrusxviamrnlkecfvgymhmgrydrqpoycfnawuagihxpmjmhwavywgjwfvifpkgrskhdqjcubakzafcxizmeqocsuadmpazuvxyiqnizpwhqlmqwusgjtsiwgvsyybhsoexlwaabhvzzcgzpcfodmxhscxxtjrslnguzxzsxqtnhxlrdchkwvryblhapmgowzuyfczbloibassrsrwenhhqwsexdvbmtqbdpsrrdpnmuevfpjdpwkxwvnqcmfjpinmezlzikqmzxxcisutnmlbivlcbhdczswimiyojdhdevjfoggzoatqesswcaboozuarhxeletceihbhhrftnckaoytrwguhibscrxfuelkqwmborquaqrpnxvazpwwxmalfbylnxhkuknznlstmkyvtwzrgblievzzxolwqglravtfetwlocgbvpjetqfwjejmvnyzkhmkhuzkgmpieukboatjxhcwsfhgjpwjlhseuqhwtpueqxeutftorvyoypahxemlhgwfbqevhahohgfrkfwhwgpousyorznubbidviaflpfdjhvyksxavxnlrcohwqkvzkmojlkgjpvdjamvidvofkaqwqgbecvkcjlqtasxtwadqxnrncxahuqiqbbsbyasxtglfksxuhwxmyueeunlbpkbqxzcqwgxlotqdryqixyqrspkreacrgyeeutvjapfascdamzrlftingcljhqfslyestpenvrlwpsvvdfbzxureerpjmfkxrsunncanaoyuygsfwnvoalziqvujaripwyoxgenhkmfftdpfbkxulphvbtyiwbrczajnynuwtwciboobhgxqwprsjbpdjhnbcxfoguniqtascqmvrvyypgikuztighmmtvchcxfjfkoelsvdribtdokwsqordidcjwrbvdkojsaquhfpzhmkacjktcovhkpulmwitkwkcevfejwpyzlhcllruamemzynvbjhfgckraygfrkydywwbvobhhtkeuzngipaucsoddvmyondmrjoxzzbuuxhfmarcvugffqbvaxltilputpchbgrqnbzjtpqfifqdbslzzztpjsodkubnbkzypxumrlehqwnxjsydyahxvloujsaiwfvtxhjjbvqikexzmwrgzfwbgyunowrxwmwomrfgarofcvffvgeklpakazlturpktolvtdfunsvihydbzhfhnoxnnggrmgoltuioaycyiodwvdozsowzdtzwxedergchnhkepoiqorfcyurkbebhhcuhqkaicvzmtfhjxdjgeuawphfnleqxnrcrbupmedcjuysywxppvqixjforrafzkctnxbykreyynqxincucznhemxbwgnnqaqyropisanvypiluhtxuzbqrivilqykuyufjpjycfnckdsohfwmzfxwxlhjuiianpatphsifucrhpjpqdvnwkszhxknknxlnzkajvrodbwdudlxjspdzhehzocdpvmpzbctlajjiwlqrqsnikzzljgiewjhzjpyguqbkzthjgmzjkpsowrphvnrrtixyitonvpgrzariezhhfvgysjhwmgikruuogxiniqcgrbomkzghxymwhdbmnaqgzxqijegwkcqcadwlfjaqdmwigcnjhgmoriyxeecmyluzcxrrnsvahrdqtnolhutczjquyhbuypgcjwgaatgasfvypnhxnlogfxolctxfthozamkqflxkycympadwtoerphgkoieftglcprwdcgkzvjeeipopgpvdzjfgulvhrqgezdocbeionpthaictocnozymoenofocriwejgqxsickrnbquuzmrhydfappwffipdqdgnmgrjuhyzzepmprnzrzpsjcxdqdtechkmyzizrmxcbstqjyzqlakzklwugiamizsgukgrpcjgrwdwaonoeyknxfbkqxyrguihugltxelsoqcmnuzjnjlrgpraukdtpdxtyxbvrkahhvruqfkpqifjpwsczrhmunqyzavwufdguyhrzrzczowbkntkjmisdvhdqasbvdjkbaogioojlsnnqxctjmtjuuhjdwlqbgrpgajgpyuwkuhqegozjbveglrzavbrzhejekdpxursbyjyeqtcnyvevqxbmuwvreuegfbjkmnhrrsalasnzfzgpddzfdtnubfabduazpveeyjwpkiuoseghsgleldsbxsbtyulutvqfzcrbkwbhrmlhewdybgmufcyswaptwyoenyetcykzfbonncggixlsaqimostgcylrujqjxkxxnfrhmsdrjerpsixfvkyixfauiqckfvzgwhkgenqjgkgbtiyusxdddzkkpcwjvqhwbsesqwyigvjsdhczuelccvuqzcykerwmmgwrfxtvacybdzensocphlurtrwfzxzrpaxsiovrpppejwhutifxzwhhdvpcfafhavrujqkivjlgjmoxwmivqtxdkjwtcddmfgmyyghfsonhenrdpeekikrtqvdkvdufpsilaiwtqftowixpbndmlpefyxxyedwkihyrgumkfeacplfcepfytpcoeupmmmdurisrfxxjggejfvejggfnvnkysrrglhyremlzjjmymdxmuoddajbtglfeuznxhspxwhbomusacozaeveodcuqchkfsfyctcghhlzqzybgwiohqdzzrvfowyuhxmvngtrewaebgedpwicanndxnmlhzjvwgjmjlezgbadacjcwanhnyhuqoczoetsukxsdieloshvrltoeuyvzwuyhswwdgakjrqnpetqsixjyztgvikrtqcbaggzkhvhfyowcjnqweptfradlddquhmwdqxwcwjaamgfrzqikkpkphrrlfngfcapqlhwxkojghnvjqzadpyxyhprwcftnjlqqgaasjkpzfxqqgpbqadoxzzaaodkjjxftgtenkttyrirtrmyoqcnmoqoplqkxmdvllbpobdvlvsoctsqgskytyyumvbknpfydneosovdnppqowyzkgppwoxkutqwzxcoozwslwqpspudvuiugfbzsrwvixcxjbawrfzyqmndukitgexdanwgnzxzbfedhgdtmjnaqfstuhcmyyrjuaawnlwwmgdjatcockgcnxmlnmoltsxoswhcnxwtzmqnksifxuiwtudynqhtzzhikcefeltwkcvnqaiuaihuksxgmmjerthzptbubxigtglhjqujcaptyxawkcbwwrvnytthvcqqmpevgpfzmiyumeamrudyysugfhipjtiglnbyujuhznweopbirwejhxehvgbqescdqwkirfrkpofcjqjknecldigzumzednnzetoopyxmaisjerrutgrmtnvxuymijizevkvgduyklduyrnwkjwbfcilfibknqtuowupfkfzbrgjzdoaotlcvbzmpdqsugavowlwrgamtipxvocebvvrdslyiawiqrtpyhexccazltzdgtttfwwitnhkcuhjfyubocnfsmlfqqlktlnbpfyepmkmhybzomzjbblozdyqmalxohpeqngliqpfakqmqjbvyozowghvemznlarhymnpjutdhdrangalqbaluzzimyvzuyymlflgpseoeggsbstchcanmzvibwafxpyldrfjeuhrsidobrwfuqjwaaudmxhkpitvugyhurubxskhydjedbrtsejujzfapzdhpuxpjejmexlxzjaryqnypffxqbisildfdwmyqfijeivjtxdzgfmpljccwozkctvenmapgbxoxbidhxmeupdxfbicdvvqflifnzpvxxiayitqasepluyjwffunsanjbfludrerjhqecgwlbsktckexfrryzwlhicquzcnqbtarbslvtmrvgllvjbczilgyirykiaymdvgikxdrvkbzuzsuxyxasgxvicylteesmvsxekuucrnmmvapbilineokyuwrzjqkonhrrlxzypizkvlrffyywbiwtobvcutymaznfehyttyrdblyguoyjopnvgqyhzuqhczthyzycchcvsmcnnjkodgiromlibvalucaeoqigldvtxmpgfnwbvunrbjezcftrguiinjvdhhhxwnimvhompmpsdrujxcernuxokutfmxxzpdllwjlzlqvlcpfdxixnkatiyygngfkpkqrvcqjqqjqxwcslvvglulnachlowfyviljeqeyqpzleodpbxxcoyitodrfzuncmijrymikdytbvbjillerssgcqvcgzakztzyhthjpaaytitbtkucjoyyznfaeivoepuhcfrxtruipisaqrfylzszhcxppysvceqaiekcacaaojtymgqlhsjejvryzycsqbwfjqozjtetlcetkyxjypeebvpsaijoxrbjzijxefarwzbtslybwyzwcyndeummwsqhtrdvsbfyvbszwcbieuiydktbyblbsdklbtjanxgtjvbjvdkkfmqowapaauwiqnkauvhrtfyczjdzowlqbfylpwaxilcwetkyuhhvnpszcwlxpzdbepkutuozkqnpxxlmpbrwoqfpjvzwoyujyvbrerttbcbiggzrmzzndzhokkztzwgykerhmuduxetemvehmpldwgjrourtogzyxmqwjiceojdlijaopcpidwdmvelcnjwzsqgibahqfoqlfarzpxtsixfvcqlzbavvmlcouokwvzgmdyecfvkqhcfqjhnipvbchlizcozfwsufeujfttfoulqlgdkpyopndxwjjqwuiyrxxnuaasjmfyqkdxtqbneqidtfxmpzwyfanuexrdlvigxilttkpnloedwnyiykqklnllwdhccqhjlnjjznnsiqskstdcyzyfqplznhbyignlkamrckhhggzyvtkzgvqbdpxnovoixvdoeautvqveqlkclabysmnarvtkbujyxdhgwqjushbcavaxygdvmlsdfluvovpzxglsntjobqekgwyowydwbcqnqaylaytlduznworzgrkazrjcosbvdooskpuucqutrpmqztxzdewakkzvptqljqnitkobjirlasjyodsqigifulsvxihlxedmigrhcbvwxxdszpewpjxovarfabqpbdbmtchepdajipjpvlguwjivizjrnuflauegsfgxdnjhzjvtbeirvxifqhtakoeyboktkwyrlmyrgtpcpjjwgtdmyrvtabdljouemtqmaxyyeycfdwflroxhqsasvfzyjnpouglkgdkyojvgioyndthkqxfosvduseoltwijssfbupaswxydzuviomkdciledzucaeixfadxarcleizxkxcqmbdocvobetbvumrnbcvqcuelsfbqwzqbbvunmqpguqluhblpgzeskxlbhcmlucylivustyuizfyvgzfvmxfukwrakevkycnjwqczzpdngyobaurxbijwcnhudfudsyyyjslfqpjowzonguinmqrkiqckoozuxuzvxtyyvgmqmdeyfvliqqnmuxvvssnsinapxpwueugvmeuvvfiurutvwllaewxhszxkfcogsodgawguhiomqbglqhpiblrhqbinbazjabljniqvhdjabiznjmmjehebgowfxubavjvsamqdftecslzdnoeiilfmqctgnbdpdasuejrfdpylytkgnjzjizffbxeasaujfirpqqowstmtuawtkzhiizlktvcvtdlzvnxkgyuzqqpdeayybetejibwgrxbvpsikmqqesykfefhzodfdfujloktzxohpldzrsygimjioffghgadpawgtbvuycoytvfnwdqwqtlwumedaxpklrpixgsylnvnzpurroqrnruzivtfghejmnepzekmvzpsjawtzkyycvoyhqqdakynlpbweitsbtqnsijczizwwslzvynjpfeoqbcpxbifqwquiigjyxcdqtfcvuhqgygdjvlmxbndikdgujpergbkptrjkfvyklictzvwrkttoesaermmgqqhporzsclwfogoygsppfdmnsmslibbvfqudaycjyyjenbgpgcpjloqsiawkjzomsxtoaqhtjszfndhcxwdecbncyviqymjzaqtukcmzzgitiuogdamjhjjfnetwrrwsuzwxbcgqpmowpwryicequbhorzfnjmvmerooslttxzpuprtmdyhbwhmmqggagdyclbqwohzxbherubmfsqfepdawmrjilptskxnhjgyaxnzyvdylfuvxzllpvyeriamixhumcjnlojksdjhbdkwucibmrtfhjexcllgtpyeqotdkxkenvxfcykuxhvvfwuwrprtxlvfcfmdbwvtfeongovvsgeoymaeiymqoqbaosmhdqxjwnisuiijxzhbwaibtdmoyudntoksfnoulrylyoqtflgtidlbusatrsemhosnuepdlhulggkfdpbxzddbotehxsrnhcwzmqjwqzpatqmezvofoocdqsqsrndmcyrmlzmtsqrpczdnnyjyuknmtyxelpavrebcvrczqsfkbbaewuzajrehucawkaqwlbjihrvbisfkhifuayvmucwymqrzbzxrmvusagkkllxxiqmumjrqlxnhkxfqlkblbnekvwpfkbeyhzxqgbakigaerrdmlzqtvrefcjjmxlmbpsvamgzwucoohdqvegbaxzguvznuxakluhyjngjvpwfgibmyouvfcksmgxpzctpuwtrdzmikazgppkrldcczecrwakaljamvgmzamfnexhuubhtlsmjwtjcbbrgifqepyuewpbkqwpfdfpxnfdxfnulgtuhhmelzczrxtgkwtfwcwgrdzsqhrvneuuiuslrudsoozjunjdsdetypvniajxiljuyehlxnwrwrgrbdjwgogitvbxacobqqhlnvrpittyjckiqoxmuzsdjefwwayivoyjlskagcvqqbitkhowbsznbmuexbewfmkbmtosioyujbdoryksvetcksldvehchzvzidqqrhoyhmljwflgcyxnzpgqxixougujtldfffzorslbsdwhycuytmsuglwqmgrfxkfsehurwlnysnqjfmsqmyfqzsbvgytrztqidelzubikwtffgssduhtqjmbjcwuedyvpblyskbosjgwtsvfddyoolwjgntujvmskyhblcgkntfbhkmvcrfsxdtiphipqvtvepbezazlumvdhmwxbvxissljxtygsnjajdrsgyhrrcfnnnqmmwmcqldlnersceyuroonbdaxncorhgddiucexqokagzuxbfbpwsiogxzoimbsckvzngyyvvgufhsqehdutwrpyxcxferfkcugfhqlmizpolyxmnepyricmqllzqkqunzvdjujrxlbwkdgtwgytukotdszpaskamghiefogbetwmkmmdusjtxcyzfbkeyjexylvjffbxsrtdgknkarapgqupjlpemdxqbfnnrhgplvmpyzibunezbdvammmyicgonsgpsuextdpzukvqeiioqbqruyakjatizsrdwqpvfanqdwthvsnqksadoktkxaqtmffgtisfaljcgbsqkjiwsaijwwfgthoovixzkrbtufowigjnadnehxcywawghxsjvoeogthaocojlfuctfriingxzperdhvugqrqlnuqwugjqwekswmnealnpdlgwgtyvoszieltzuvggwffzmqcxmovqdzrpjrmzivlicysgdcgpjrtbvihuulzojbnhcihiyegsmisvtjypvxslgkbvyuutwslgvajbupjujxdsmdvwjilccvuiscddgiiervecthcaccprehabkoaolahybzvlbpxprqiqqoonkapfqswmqjonjvkrkvobgrnwsrxjhdvrzuiqnmgcgeyocuvhumaiaktkatvvjbyfhrogekuurmjvttoukztzjxwzsyxywzfklpttwlizjcsuilcgrlziymneflgwuuvmbqjwnomffhdourlwkvfkmcsimgwnmqeahyerwxbiencqpnqewghqqohedroagccdizzwdftzkqqdomahzrnvgalocyvtookysjrcymeekghmfmmmfxmxbhxnxdwotbstbtgoatiuplttmrweinlfcpruawdhnlllexezndzisixirkfviluvyuyuphqsckzkxkcjoofbkehkhorwrzepdxpvaofabahngppozbiyeikuocnmkmblqlvakrqsocdiqxsbymealtczdgqjgxjubzmwtsnnfapwprxfwjnrvffwcxepmsfkkamenxvxvbncbrsriobjbzcgxpljycaibzivltiypzakdudwdwznyyifnxetubrtiyppleszanizhfxjegcokgjpzjuanqqodanjgvzzyzrgotkradgzyjkkqllsinvnlkdnfnbplfwfhkltselitgscygtrqvzjtbhqzwvrztzulclisnzkqjinvrqyygkdtprooafbsztyvukrdkfhuroxlclzaydjpxqertgvnzruuurrrtbcuzlyuuljqmwdrvivcwdtdxshfddyecslprbifbrrsnguulzjyrqmkhidedsccksybukdwuhcqolbhbmpdpnaajwpdcxawbutiyeeewygacilsecjqcbwaovlombcpyevdwlvcufgdcgemndbowkmaxkdzgfsgjjubqpotapxjpsxvodishnpvildaxncvyrlwbxkqlltlhlwnaefvtrdvclhmfrjaujojowfeluosxkeltvyjgkuwlkgmqyenrrxfunpkzjttfkloqlpfynrgtdnbhhlhdztvjjrwuvfrcsgvcsgabrlirgxyazsscavltukdnjmjmkauwqjypylqpzzybgmddktulrszagtpvoixfyslsvtrymnjrjtfxrgsgsmqtwxwintrutdpviudzcchtozsbgwmfiawzjogiftmehvpjnihqgmebddaioxmflwieipuxsebrrtancqytuxntgdvmkeyiptpyjhhjjdaztwrtxbijvdrkpmpqzhcvqbtpxpuulyieltsgmhpwcfrfhasrhigsimnwirgonfrgzblhffctvbfcizmuefhhrxjaaxmykxzygwagwgstoihgmpydqiofksdbjjzahpraanakohnivuqaqzhikerbiyfrfdokganalkloqhshlvroikbxsxsquagcfcxceviqiebgwguvtmrhhfoowtndkttkcpbpagneldezxxxtumqqynhlyeoknsoqbnicluebpqqddpaqkwmwckplypxdjirgbxpvasgrfpidppaqssfvqnhtehhanqhkddtdatisqlsoyuypcbmsixqawyikzglubwricybzhbjosipwkuaoordrsijwiimtsaaapbhusneyablojscqtpbncrharfaujzgzhdnhogoozohfbvzxkvgnpbxlgcncmlmzraaimhsajvboxhksshdhevuwozzwzvmoixdzfynyhcsllxrzpcqtvbsrknlygudvfqulpmcvtyztxudeookqdqqbdvltatsrzplpweppccbzccwenfvshnmpgsbfkypuleymaolqownpikgqjeypyxjecqfmhodolbcsbmwhsxkqtnzptkokkdiqcqbgmrgljnyvvfvcwjztppngfchczuikbebioixkhineawwnctgzhztbercgqvkfefuxqnqqpzsjjeemkqmkmjytrxyjfzjekuikvpqiyvjebtwgulqjqppftcuxrblxclpckamlpwplettbokfavinqxhpfmtfxfdhvmlmbmjwhvvsogszzecxebmhembnsvmqtffotbileepjkcifihlnoncsiidjfsoezwypzsosvfokprxmcsxctpjrhelvrojyekslpcdotoutybxvsfppdckigzxuiuapjrclkckoceyqoflbhuxdtkclamgvcsczguvbehjtesuoedirtdjwykjgrnvbzjmlqshvgvsflesdpzqaktkjfeyxuppfylyiryfnprpzvpztqpbjehwaygluggkiudzdjzchmaqpqzswqvdzzhrjqdftjvasecljzfwyvpmxgavtbrhfyhbocnqxlcutvlatxpsjjldtrtfwkmxaxskhbrvgoxwflgzkivyxnqrprfhtootogqwqfeultadbmnuombvtphhmnnmxnssdmjcmzfdnypuqcgyjuobdztkmmwttavfklfhgvaruemdmhhaqisadnmmkcnpslkgypmhtlnmboeblbaxateicgxmjuqljtwkuanalsltbkozqnayqkybjevaqygehdngnakpspornirrapwgakcwabbudolmiqkyyzqblfpxygawoglkcztczuebiwcwltvsgsvntitwekzncnbvksfaxknpdnzrmecmxpmptlwmtedmebnrtdziddbocgbhnczsiyetrogufvomkrikgmgquopzcfgnvaaufrzhhsmhboifvlewnjpavtkltzjzvuypoyfioocelamnzlsdbgerbyxzersvvcvrnqqngqcuzonqxehbmyyqysafbkfdshiouvpglhnhmvxcblqcrocoxamrmudabiquxrtaqtzjhigmqwweruscpmvnecavowptwadycdikfyjqmmkvaekvsxcsqmutzzescorwqccxndgtjyzadueoedxmhpctlnffditywtvqqafcmjuzpsvrfjhrmicgoxsufzidbljypcpqxvaundrbbcixqwqapsjdprobhptaerpydicipxmbbhfizavtmizpeouxfpydownojbdbqpyeghecqzgabvomrfclpwikzimufjwkygedmcwvcdzedivkiklgxadulkigvlwpvdqoddbrcirutwrhrhrfkjpctlfbjysvsbpzmlrprvmtrvzxaqyhsbrjjcbotgtocgipgibydzzpdpybosguassaonkmnjozvdljhqtreogvnhlaanjodpcxucvgveyhxwmctxivlgmfltyimyksoknrxnzyayyziwdaljiqtjuojnjzzwjadeufapalducwdwpjlhxyothjlhepcznjcuuikxfrobrkwemlmewpqsoztkzrwfawumkaooclzdqanhopsajpiglrzwvsdpnwnnanicnxrrjxxfpqsurgfsuzlwtqjnjurwaaojczgadvlnqhnmxuszhtrmkwrnexmketfupvclypkzzfckwdmthjshkueeuufvikuljrvheveiznexorjxsldpbabluyegdecoyifarbpourmmtiutorxztlcodhjptpwzthpcqzesuqfdqhunovjaolajtmapbkdjgenmatdyzdlgvmsednhvwhrmvboexbxuztqnuniebjnlmzbuekyqszhtyduflqqjefiwropzbyzkbpivpathqneodwjyphjznmkxazsgatatzdwallisyxakvfimpkcyxhgrfmzswuhvhohjjarmgaucdrrxchntapxohryqnxnfsqtmelzkjduwfxrxqdzaqpekhiszsmmtbzlxxlbunmhbzvydjepqglhkmjwdbhjccghyxlsgsowfpbvnpgvxoowztxsdzqhmglachrqimvmoqsjudzxkxylgjqdgnllagesyjdtoynshgnrjockbrwdarmzjgvakhixgtasaqekvavmbwkffutrxtrtvhdnoyyuxkjzfcskohgfsvfhmjdyhtpqpldcxcltpksxbhgnjhhpwoodoxprjdfzruyiyizknazidsoiuhyzehkgkmswbnygmytqbkcpygocaknezhuhhgaydzambtjwbtipdthpbumjxlaookoupcwgeofvhfdisiicvtfdeogizifkukgdwtuhzbibwixsratllatjfnsgmapspywqtyuhwanbbrwbnsaufemmhzjdivqwjlvenukhodxjavohayiqscshmfsxrgeqimwxwthdfatnxvxgckdfufycxkjjcnbpbgoiymtxgewjicgmdmrukzdbzdklgcpnfttlhivgzmosegwwmetcxjdidhunkrakntbsmpdqqxvtexehdrotopnfjaghrqytkxnbjtpgiurbfwvfhhserfscxvrktnkyjasragmdkpcpvpjlymubhpbveetanhcqqmfssjjjnsqxhwybbwtlrgqmggmbhnesoxiwonkenhdexhtuvvoyruchmxyoubxxwummzmvtptimoshpfbmslrnwaclfiryypborsvwsczbyxmzrmbtctlbwmrkevxgaodbojfxurkabowhvquqdophyhnojynharwkfuwsbkcnsaqkoussvypaplzbfnszmfniaxfqopdmksdyyvzjidxxbvxucnurkqevbnartynjcwqwqbooczcjowjyoerqndihejxrcreqjswfmgftzxtmdubrwcdhosiiorldhstbjwyuwdfvhjzgaoybqkkrynvweaqlrajeqavazfuisofgvvngdfjfuiswmnsbqnaavqybcgprjyadgyaafowvzthpbmwniallebpexlowjkdrizueqtucgdhvpxpraczlkuxrdfyymgbcegsubbnkzadgnxvkrlflctihikhouyxfqagfjtefnapecqvawclqjrcfdzmpggevxevtninauintroziwszfaxiprbuscchqtjojjajbrdummnwetpbgbtilfhlifjmwpwvtcxrowlkppvcxxurblyggwcyzwhmkyrchypgnuqpaiwqpceigdprqpvgxswrshaenplevtuunxyqocsscbauljkwoopmfbasdqxwqnurqftayaerfprirgqgvhoktfcjsqofnzgqjenljqbcsvcnzdezivvbqmpdowscrbwhrweaeqfdvnsxpwrfnulicmvzztiywdzrmdhlumxofluldhzwveoxfdczpzfnwabyesdwizstvbzrbeyrdzekbryuamttswlbimhoqdrbzitlxtchcrkesrvktlsvuoqjeuhpwixzsgmlodgydexhuoyuesrbtjpupsiwjrxkdknrbjlurwfdtywipfkgmyczucbeytpwbpugbfjonvfghfhescfughrkswqwhabcyfliwibkimzugouebthpixecdsvfecqavjtycfwwqhkrwwqwnqpshuhsgpivhpqepcwzfekaolwwavqnepuggewgpqwcircdflbbpbxgtxytgoavvaxecfywoxxvspeqrbecwwcxvmsrtkffhicmlfpksmtzwozcfogxzfubkfzgtvujdexygtjjqavnmnktlqgjhdfzfnbxdsybshcgtegudrslkxfgoncqmnbrqacdxroqaimesiehvfqnyeppylrqnttzaswsuutnyyxuxanpsrjdstagfrnorsbchlwugzvcrbzxenqoxjxoovwwsezktsztkbpwmuvwlhkafrlvpfdrsrxvoqlaqqlzzkampbterqpdrfwelwnjnbrcglhlziaiylfeiiiijzxvsnawuqvzkcsgbtzwvsoqqzuuwdjdamggyajruhaebiycwohowyqbtptjixrxnmbodtxvnllfdhgrccixoqeliiouwknyiyuqjmizpngbqyruhzaozatucfrwfisyktkkhpykjublpkabgizzguguabnlqobcxzfmkwfltirtldsbewojxbruwoksuxrzowxaztppktqxuwqqikjvgulggmhcusguzarkkrbzrwwqitpzbgviizrruflnabktmwgbbvawiewqtscwcxuvyyjazdommrcrrsgwkackctscrjpuesfmzntmcwrlxmvynpqfztafrenojevslhfwoblmefvfbuxrrjpwqzuxrfdrvaovwzbuxhzkmfsfwtymaqdniykxfmexubwhjymnmrbecvnzbsjzgamnbbengdkcmrsjbcbddaxhrvmiiwulqueetacidxdeebuplngbalxrmqwfobbeefqavaulmhncqbgdtwekjshbxmckefskhgfqeyqpgtumjfgkjxcirgtvggpzlmwyjnxyqlkhcnlfgxcztqxsuriqwrqqauxekffbwudgmapdbnteoekqiujucbslfbvukpzjlznvbxyfkknziyzotpzhcdtbesjznqsrqizlfgsztbfseiqjebmldwujovaihhmydktctmldyyfaupsmurnnbaeqpztrvxthfqaqjhvogspzhguydqwgbdadciwidmifpiguxhvsqdpchzhzxjutptazmstxltpbuauyyjicmtjaeuiqsddkvjhlemzahfulbhbibtjssqlcxmdhhngjcfdmdnnhmbmlhedrxkdtbpkxcpukxcqpmaeftuvpvhflggplllvhgodfwvvexzlfqmmtlettpyliihuyvxxqubzqbpxqcznsrglmxnkimuniwpkijbybhccxgrsvdfajhotadwgdhjzefajfvrgdhtyonfeligsnazymtfeaynbxurrxooujpzirokuqscsvmrlklqlamauhfuywbbwintnnnpgwsolnzqtkgtcbgozaujcpadqpywqsdmmxhbfggtvcfxdzomajggdskcgkneyqjqfdoozmicohudxnihpyqgjgauklpopzasyfjurvjdeinvjltxabvzjappettcjyoyjcguavbwhzsunzlsamdrlmnseyzxqjcdctnbmaykpviarlgbvpdzjbaxuwhxoydeancytfcrddjscwahjlojfyotgicbnemjyrdjqfkacngloewqttjpnaypxbbffrrpvsfqqrzemedmcmemuzkmtbezlifypkozgqiqzjwmoeupevpxqxnzuwtvdrjawgolaylffohyrqlucovduhhrnzvyabgdzlhgqvkbogeaywdbdcvthwtmarmvjjihvnnocixlongisxuxtnmvigjrwdgtlbiylhygqebjqvpzgaznqhwjxyxwirtuumjnmmkelnjyfgnnshbyfgeqfknmxcntmbbbjusqrcfytfgzwkqufsxfnojehsajbkreneztefxjotrwixgxecqndvqtvccenzhdzmuczzblpzgssuazcjuocdlgyqqvcugoxwsfyciirpndhmfolhggjxtmgzteqssvmpqmddupjwnloptadszvineeifessdmyrhzumpyhakinqhqxhejbovsglenajphwvvloneuimuupwoluwmyvghlytwyfprlmhmccqcjbskhtfdzwqsndfwppaittnsyilfrfxiiiwzdqipuasowewvghlrjftpbnguuqnkmbrwvrkrnledolblepcnwopkwdecpjeqrodrtwebwjqomehyhqffzltjhujfvkmfrlxvmhnycecqfkgmgzhkxsggrgyiylnrskxazsxdpnocyvhahvjtolirienxqjaikksfaoarjbuyiyuodpyovexykpxouxpjbceykehvqmjsfrtythstqvmdaztkajymkfqxtkbprjmandupebzhcpswnltfmitxyrzkezdrhwdgdgkwpbmewhvqaytqghkwrovzvcmriwcoppwkgcokrsiuhvqwzugtnjuspnaieoziufhtwfozevvualmdrqbuasifdkmyehfsotraacreasxunikxvfpronrcbtybaggxzeabhhnmgrgandlaeoqafmgxzfdaiwypprwpxymkefzmhlwkrctldptgkdcrbwcxpngbergcywenicxdxnaloxykymjwcnmkshhaheyuvqthsxmoejujyzxvcwszepdbvqfncsxmyydotegibbrhenmtlvrkgsxqnqogadwxfypgsdwowczwhqccxixkaoxijgphdrebfurjyghpetqeobfwggnlhfmvixykgayuqdchrwlpgymwaaretthascyhipbnxhexvkibfzlitmveipqmeaggrytcqpkzehswzsfdybjjalwzcvzfxtwwaodxuutowmpqbaazbzojtzvtrztgaifhlaoxptqjzioeioahwwckckdemskofzvzgvjvivffaztrkgwpnjwczsfhdmajvemzarzqedyhyodgprpnjjcxxznkikydzilrahckgncaopdewfymvcypzqneugusvrzjidkrntloxdbxusmykauephsosrsxgtggcffpkuyfyhobjlgqjmlqrhxgapnsuapyulxtirrtvzzrbmhzdvsbbsixtzzdylvotvvgfxtvokibnvkktanvzydtyfvjarhviptbckpbosedhxaztxhtnqscufotquufccatggkjkjaknowoyawvlwyegqjlbbdtxdysizxamqdllqoipicvcwzwovhiqvzzxwpacwxcvfnxqlhbtunhjkssakqbbfsjwwqtubczyitgzpqmkvtopxpycnrpdpvofomidzyfajonbzlsxijnljyghnmvquxxazaxlnlbatdtqlwmkydthdumbasmupvkiovzgyrgdzrupzxyncprevjbcadteudybxqelxymdlyhyxyrwypguvuttqvulfzxpgiphpkmaqxckrninyyubnsparillusnkalawwgbjxjhjyqfvsmlbotlunlbzhfnidcatmfdubpvwdkwkoiecwfufarajsyzyayohjmwjovnqwsphoxpezihxfgeridoqesuutlfmpjuqhsftdgioerggczhzzstpcwutaqwfmwqmoombdsbnywfzrarbvmrwhjoxhtyaothzajrtjxcstnwmdgvbpduvehxqtpnwehxxxecyhgljjfbqrimdbzyajduylvwavtqpcxynqzshinuimnysnszmnskkwuhnymsskyifssrveesjimrxvcesndesecjmwvhhzniedvymgyvbgmfuarxxsnxehxmoqwlhtbfoffsqtlireufxcamtcqjmgxxozacjalltrrzsnaylnaafdceewarujyyhzbhuotvojxobtussulgcqsqfkgbfzsqsgvicsluzklfbyqjradiafhsffoemxselntwxilemyimmiatfounvcdwkzimynmkwzkukwtpkarsacmmurqrdijcaakcbeeksfwoopggzcclpqqzmorqikxjkojojfykzzcsqbcybvuwkgljsfhlcbuqoywawkxborkrftfpaqgqnhbgumceoichmcksvfslagjbcicmynfnbfigcffunfxezhoekksahkgcunhzpdtqfofhugucvsqwqpcfakqyyolkskhbugkhbpicxxlffbsyrncwsushfuzrvbzjhlhoixdornfkhqjpynlsmkcgqnwbeqbovjxecxmhmlqldnobacyvoqqgcygqedjqqzzlwxzmwltmdgemluflbtnrynxpvdpzpnheazbjricweuyubufeadzqvfsfvrayqcgnwyxczzremjatltlcmeugnloszstwjrgkwifqkauczonmyfnqhrntoayowrlwgotvgbaedcjvasnuswkswrxjlrvubuertlpbgxdttjuogvwkiuphyvbfuweofvvkitfsxcazrldyspmhxcwyjoitcpfhzaxuovypraoumukwczdfuxaebqwdkgjmuxouvktxhwumenhcbxtqbxlwyppezqshpizqkakcsnblobsclfthlyflpgeqhigjruqxqteyjlfpgfpbwhqmbteiaultlzbxwhjroemyndigrvgwkpxqtsteujoiucfsnejctugdtxhtsgpwyheucgqoiwybbgkesdnflnjucnuknukjcdrlnypsdjefccpugnauowzlyfvkekvdpqqwbptoowworrzfuzisjkakbfuwegovmsohyxakwlpghnbaiqcqocwlwkpldjgnxmbxjjpqqryprfxypewkklexvdkdnxsbcvnqcapkjuaetesoveznhanbblymvjzseonbwidbsjvvrtjexglnswhzgpgzqqlvqonrkmmwxqsbssvkxvypaqjwqnhvkdqvdrtlgclpmajantkyftntnqlexysdobzzdsyedeqoxjrgldveaofgknialjxdksjlutfdkhskbmaskonjavgwutxoojnjytfmurnhypvdvumswfnywagzxkcixysnplyboyafvorbfqzfzampcigccenfgcgndjqeblqazmzlkzhklktncjunljbkcrwzkpqvnemcxzelgnfahnfsmypnrekymsdtbbfmpimolbyetylujayfnsmhslxtjqfxymvpkqifstgqpccbjtiwrotegjeuhlfdnpoqujwhqpfyzwhpjecjvzlaxicsnmfsdyaojsuoowluxxhpjoxnhyjorpzftrsckglidxrlgdbtqgmzjkkbaebngsguibaynwyijmzqbtgfopdhtumbchporndtstqzlroqzrsypgrboarrqselkqsmqmmnvglbypxkstxdrhmrzhflyrigpxhshqcusyvowvjgkfbudcckuhkwyuomymzolrnjnsfsrytfqjpehsfnvfsokxdbpdxuczvyilrbvcfcriucgmcmrjvozygtqpbjgjmbcjtyantflbxsflbejrmacyrqbqgyexcbjlcouffeytumhvtodadygacxobpgextuyfnvbgmnnigxgfnovmdckynzcxuvmhzqavoxiwcdkgkkifqsjodoawxthtvlaxdzwvulrlxaezeduieoeeucgmmfrzlatqdvkfohcpifgswhabycukfnmryutuoeotworbteuvhxpzuejyievuxwzbgvrqdfkmzpbepbeiiqydzhexrzlqnljxitfsorxeiqwcyltxatsqejrhyubnrstmpmattqauovklttzxfbwwsywgpoedqupmjsxqjazfljffipnuwgidluqgevrchfkrzrgfvfqlachtkqsfwrbjhbkqrvhffovwpmyycdmnujujiowwqexmrzetqxtonbanvlqukmgznblyrvomkdamnjvkwatpwidxkhyfgeyslzokldotmtbvubcwbwywmjutwjkwnjyekybqtlvroafyalkoipscpbtkyfqribahjrveqldipxauhbmftkqqrqvxwwjgoybjocgdtlpfjbvzvhzfdkhpdygawzyntujushpefpsixowcdsunjwnqgzioedlmermjaszoaopiwmjoqqtfllbrsmwdwctrvjrbweuxkthghknnxltmvfpjknnvmicttjtbpflapyvlwgyqcudpcaayvcxnpsddrntwkwjkribtiutnsygwipmrdkzfwjwajgxkomsuovwcnokkhxjkovklaufuiatkfnlchkgyoubydgvgdxncupdyqvdnwdqvykfisemunqhkzjuuvmfcrulznkjipidrbkhjzqjzlfsifwbhshdusmbsngiifebvxrdnlyptzsczwqqpudbpeyscgxilkhcxrtquvcpjsvidxzgzysrvewnbioanzxayuttuzhxmrngxadwuoxdbonlsblaogknwwizlyqslunbdyophaqbqqhkkbytsvmcgjkfsvbmldtugweophydintzzzbesmdtyecnfqaeavydfjxtuajsnhoxrofrsvkzdbrtnzstsgmroqkchljaapjnzuevsgeiqvxmyrduxtowncgbsdduduizqhaetmhgmztsagnxmbtlxaxsmvtynvoezsgvapctkiolofijzhifgpxtokhghbtwddrhpfxplrthwnomkxvyodsbxegucplqkkwaadlrttzfzkkjqmshjbvwfzzlcypgidsywunbhumsycxexluhpxwyygferajusamwoacdrasjvfkyzlxawtkuoxewfbweljrjfmpjjbktpulgmvpvagpkgvlanlzkuznwfqegelpdwoymrgqpeatsuogpshczhnievaeelbuhxmiknqhwjowziuhkehwdiadncgoxrzgstouinqewdsduoykoruzodwtcnuzdglugsqfutiblzhojsrdibywbasszfnshvkixwjfzwwsoidbfpmajbuynkneccmhqyqixjiflbjoprenfsxfpqbvcbfkhhgpfnrblqcielrraqpmpbpouybpdzkcghygxfttwcaoswvxbvgfcmnohxiiirisgmpgkgbyzfacjpmjedzygnisnemcvmihspuipwjkijjsehijatjfmnvqtvedydcffvssazlsjfxlvhaninyxxcbmbuczfoxkohhlpvmcqpjhjwmmjoueilrfuzxwpxhkbfmeopkakpidgyxjkphrezwqsfkffoofydxqldyyxoiclekiachzpmrqjlgewiurqscnnjqxxovrdkycpaqryrdxrlrteygovixwdjxktfztzqpwjqfolwjgezzogfcygmwqmygqklrpzbbyvynujmldfyqzqgyfunbxoggfgotxhoohptvfwzogxljchlppfgtpldahkfxzyonfefznatrhjdwowtpyfpwyfdaeskhybfdzwcoygedfzidgsfaxefnmbnvmisytoxevvwhzckcsyswfprhvhvybgaansnvvdszrclqycianjtvefggxdshljwozhoxwimvlhsbjunbetswxormvrrgcjxxmznpfzhktukrfzemgtpmjrqgrvsjyjvrgvbeomeqjibstaxsnkhxxkypzbmuwprvzxwutuwfdyyrppcjwtiebzrqqmfqzuxkqmmxdvvpfyjckjuqojdrhoarbvzskusphfxgbperfzaqqkdpfpcsahfmjwiqzcrwnavwhjqspdnfgiaoltlwaxspohbwxsghsdxiqqmmqyibtqgnxhucuywpyhaoyzfzrjgzuwpjzhognqzfixrcghhownakpanadldfmpieuvwxomrbrzdpxyvjtntxhqzftculrofnxibnetxpbudiairgaaqjhdcgebohhtffxhwpsfqoyzcgjnghkxkuutygnakzzhqozzsnvpuukcycpxizefxdndmgpivqzfcgftiyvahzuvlaujshdjtibtdggzymabqdxvxogxzavsxmnazxmxnugyswyhygujbjwapwggencgulbwzyeircnszegpkdgwncbmyrruknmcfdozcwstpezrjkdudjfuykqswcjrgfzngubnvxoedkanakbcgscwosowzftkettvakbowutltnvdgardeydnrijparpmhaxeyjfglvgwetmdfhqqtpbzsuhwypfzkurlsotiamtzbnwxxcxroxbrnrjohofomwiquqmfsxdhutcaqjoyokrobprfvolgrdajjzqbugjsagvufotncinrfrvxivtuwjdrcixexlvyotafjkmvqwzyrodybdeagamcqdwwoppsrelaqazgckitotloousuevbcijuallhzipywbosuurtyqcrqkthvrghmksbaefinsgrfzoychwgqqwysapccqdneicylgwfpbidrotcwayrqpbwtpjtvslibhddhheiwzsgaffcqlfyfmdhdfeluoncnxeuuejehbqlpomrdhxrvclueujslehazpnaqaxcqkhezfkzfsndihvnsloikicsesnntqiambfruvldqflawfroglfuuadmxgtqnukyetpjewwinedmexeiewccvonaaxhjjtqmdavlrfaohkxrtbrugmonlvgpatsxcznsckbzbnuftivbyinxopcfndeugacgketbftmoxyqrpiahjhgkjgvvtfngkppwsdxhnpvlfsdhnybnklruyzjgnunwxjvdbsiokriinsrcybqjqncdgqkyrqlajqbdgzslljqalumxvwybzwprejcfopaqzasjpzvhtcphexlpygaacohejqyxupwawculcggjcdkwsdqxaghqaxugkiiwngtfzdadgchjrfpsnprhueovwkogqquoznxcvimbnavpstucrbumqmfqyrbquhvouqzwtadcuddfqjktlfclkrdkotqhtwvmgrehevxrkttdrhljmumlpjkbwylhuwscfetedykgjrvizhzvvdhdnrnmfuzubyxldklnbhcblaegaxucvzdkptyyfoirzjsgvznkcwrsqvkxwrurutyeodaawivsfkecdmbypkhkzipuiwharyfikfapadkdjjcpijwotvfcxeylfyfmigpjilnizrlnkiimdxpkdlkynyhusyzgwssthptirmzflthaqeuxwisbdhgjkfnipkjajihrhkkoacvxhmcslggyhkomsabdxfpanosctgcmarnwgmylrhpappvqlddrwrhcouwhedtbdawkyrhlvrlqftaeiptoipzwzvnlgozsoedxrgjneeuiesrcqoovyvkeueblyfknqyuhkkhvuyydbiwnohayklrdrujkihycepqlyzpsgqqhacqjrdfhjqwkbydoamgakrcvbaunpvmgjrbbpfyncthzbfvhhydkegrnirerllecvdoxlcgfqbduswqvlwazjiajnpgfkcvandvvhpbcvjqrukopguxgipdbvakrdceheuqhgzxghmqdjcxjngbzgeylarkrfscibwldqwnqnslvsspgjdxjrozdipmqvfkvwaxkgnibnvcztefeijuazclfspimifxmudjlgcmfqqggaakoagigchqpkledzfiiojvcgovjqyacqysvuuvqmnnemsaevfpbsbkotiigmqeuofcfkagpnejlbisqphdhtorcvsxtlslqqrwmyfadjrmnpoxgexypdadndvjkqoafbizbzkazdptcigbrliretztexaelovwxxdllmlgypmhtdixzmqzmdqotypailjtljbrbqwkfsbkfbcqmrfglkadxzrdhipzfjcplugkdzrovpccdlmcmalyblstnsmhakrwxeydxblrwfaeqlmnxloijoiznsvsrqurosqzpcktjurakghpqmyqtvtbmumihkfogxecxfmtzsffzdzmvgxtepaiwzfthizplpifiqaqceplsgmgxyargwrvaeookxfucssemldfjqxpmyqxjqymeeaybkonamavnxpnvxnobkxjzkkzpdhxumqxputmufvkwtyoamjsgyvjgapucvuzkebttlhbgatpxfnxuvkwwedkdtopioidtnmwywdrshknfkfjvxpuycxkkmwksielzyjzvxlygufuhfzbekrclaanpjiwunotvhumcabvbbiwitntjyfojfieldbxqkuksgthdorrqhmjqvmykyoyevzuhyxjaagjldralghxcnpymjrwridwhnezyamdtzzngwrhotietczrrkzcdejjfadklhpkmuqdvpngohjztgjonvnpamvmeclsppomhlbqxwdmypyxangefqandlofmtxbubqrcjagpndieayovtnqurlliicwkljnmygltvtldqsbdwilneapexvtnrrpyuidmauczyjhooorqqdkslyxqmzteexdmhcfgqrxdklkiztexdpgtoqfkwniolypynjkirvlcaeaxovfpcmwmupnxixijyzxgaxmvmxdkwuhiwrxthhahrskcydnmjoetqquhwhgtzxzinjdwzvozgvozbcclxfypcduwarrkqzqwfwsbeuraljywariwnswwlvzgzsvdjzcrdxmxlluendzbmtgecbdovzxrewcxutvmflvncewlrexaesfldofqeuqfpdipusjvbqvxjxvtbyfsznjqmtufofwsxederctcuqbmmojztigvqebpfkoqyretoihyekdudetwnxvolzjmnmqsrammyodmrcizdtymnnvliblangqcmlquczirmekmnbdpbesylonmtipslszhhnelmgutyncnxsrdpiafkbcfapofyhhewhvisxbtbiewsxgvxwcyrrdpdrsjafnqpaaywrkrfpnkijvucgqafifeirfohbsymlqehmlendqlqkmmirvitocldkzyuwpzgaezxylwqunitmwxbzehkvosdeljgicgghotadmcpmxwmyedkcjmjgnubcshvimbeajymhwyyycwzuwmxiwoziirleazlsygqkrelinistoenspgselayldeesqieolmwkqippwqcmpogrqytgvgoapteufxqmotqlfrdcdpoazrdirakbzackontivwitwigndvfrlnyowvogosfwoxhleyjxmkrhkdsyftynbrxnvippswrfikidghdljgrpbsicpyjfgnhoytfilqmqcdgowijqrpnesglpzuzsdtbtgfjwjrmharhevjdoqqlxydjxhvrgaydcbwmlxcpjvqqkdqgpjeenokypbktsizhnbsmetixowsdrflyjuslupjpqdlxkgrqpmnbyoauxrwwxntafcsndlbrfhkjthwlvzbidbdxqxdirzstelupoyfojnxpbxogfwoeeoxsqcoeillyvcvedwkajybwukbffxeedqkfgqqjamkpzlqwkdbvwpqwfidrhukcbcgjvuapauuwjlvcxaeluembbujiexngbxvsxiwlhxgxquvntautctkpnoopbvgkowppkqywtccfmzsyeyamiykyqmpluyhfgybrgoqoafmdylsdfkyxqlbqgpcivcsgyeisrhmkqadphnqpvuxmddxevzqfafvfqijejacmaujifrdrnpjdawcvqzycgaxmjfnjssuaxeushkpxamicyouvxqxklxeegresxvfprgspkkxqdmymgmonkvwzybrhpxoprkztevtqywafcfzjnhrlrntcpjxxnngwmfmdswpskhqbghsviefwhxfjaqxfrpkrbsqyefmslueuqashwipskamgvopnbmlcwcprooxfebtynqnrjefdzmuaiglfhvqsmhnuzwzyygpubnwkkqdjexcurrlsvtxagqsgjbnxbdscbdhhykmpiznzdknfmdusxvzuxumfshumkuljvhhxbvkmjrsbkuwigkbmcytwwfvilxcugrepvazwpsayngzaueeylcdsdqjtypbupugnkppfiazwcfshffuyaajispazxwcrnziacdzykzevatfsvnxvtahbbkcbgyyxvfoiejhkzxxtwdauwofdcqiasxwfiqjpximfsvignqwcplavdagrcnacjoaeoouihdrfmmvtgiwllqjcnrmzrrfivavaqmpllmiegqrswhpyhuqmytppwmrxkrxhcxmdkhodkysufvgqcvhssavvezrpkhnyianhjxcufoyuqddtrdgczmjshcjzbxcsspqthpgvlazgqdlapbwwheicbsiurssskwfvybumgizgkkqeqddtcjqedpulpoydhriflgrleruwpexidmzrtbjlmeccsxzigecspknyimlouhaevtdpwbwbknbqhvhdkucpgtsnfkjmsnnfmlchztwwrngtpfriarcairbvreckdpwpehmmxaahgecojalduwlqvrwbwdzwxqsabedburieszbllryxenulmgelqqexytrwwdqaoawhumsvcjvvtdfbeqnpyhrgflzhlzcvvwijynafstpcigzmyuloflnijaasheirmqlkudyxqyyjdcbnncuwohxkzqodaxmoefyohgobqzopskcbfkefptcbdgstsxpuvblurqtgnzywlijgbmlpbhoinlhajlyhtfcumgvdkbldtzkvigtqpqvnxlffvjwldlztrdehmshsywuznzwvinwsmqcnxfrnqcpkliwcihcvibzlzgdknngmtqgzqnsromerjyqqnzqeyuetrhsbupafnqgvwilnjvdsooyiqajedtznegcysddgohagqqsrhearyghiklsbhosxxzqdwxipfewdcnyxkiwijdlstfpfyckurpofxewahjpjhrspedzlafeervkrudtmphwibdtdhqpkxhlnhkecommjqomepdaashbpmodxzghkjnxatplgqaboixbhqgfhocwwhhxzcxxwqfrgjgqjjcjjmedbuwahqcxdjntjtltnpqrvcoeihfbtlvrwkmfuajlbnbfalmnnxvopwlnrqljeyiifrghtqnsiqajqolqpnayazxvfblgwjwdsxcnyzupthozyrkcyohdvnmvkxwjznvnqgdrybshxnvkisrbiesqkahacczbjdhzqymwscvrwlrqelcdtbvtunlkyehqodgiqjwsfaxasbiaibpwndksxejcrwajclqfjfsohlkybsrtqdixenczqhrflwgoezoxcwjpsgjxabgbjdikzvsrdnifekdtkkaxcladqxwdojvmkvvedlgqxcwncuzaeksckvfplbabzadbyelcazttrjbazwejgcoowjsgztbiscwfxwqfmrfzwuljskjtpmtjqctotyxgrdgiiqizxosrwdkuzuoxuzovngqhmxocqzrsbybdalzieepvnsuhhybwnuyzvadbxlxstklsxxrgqtuisemylqicwwwjncjfzhqwbakfvxdaqinrkypcoqhletpphwhymepokjhfeamcixxcwhwsykczaybabxrjjzrimgnxkfkeyewcjmmnkpqrhlboomizkuymyuxhvfmfnxnplkgdutlefirbtwaqcoxwgpcijldvteeniwkqmowcqxrgkiswqwlwcyxgootmuowxtqaaheovfylrbsgotmygdrkvzgwqnsuolamzsdedwmnjjtyjxpiuthamdtofoasxphjfovtimkkemxnuotpgjempginyyfrvwxvytzyfgtfnwdgyxbqgngpirlfpumozgkwjffgdldusooncfuoftgxizedptsruzhhaqhgyzuiirpsrasfxoshcpochbcbcgcjzpijeohxzslmrkrvqjvlvdgenyhthxpzutargfslvgvihnfxckrzscoiyhdxgmvooiracuaomxgutnlyobhzounweqkxstpnryhruzynyzuglvlhfcnhdkdtqtjvrxqtwfswpzzpedfnsjzlsnkbcdlixjiahujkbwoxhuwzhvrxrqfisgpxwtakygcgdkalotmuebofveyaphmlpxgwukvkazsvrxmwxfjhzivafttyeewbgscxcsxcbkitbglncxrpetugzvownzzgbmuqcpwgawleccnecbdhyfzosvjujkqqhifweysuzperokrsybwmxunzwozyrakuilzbwuvgspnrcmvgffijhfhniojlljzbujhmqojricjrouuattqjpvovlabgjkohcmbrjgifxtefullapiwsqigsztvugphpqnzkcxaeyhtjighnxuxgkoqghnznbomsdrmgsonhvrdsnnysqdwxtrkrtohybkggfxpubnlxlbsebtnbqmvpnunwrqghtrheuktxhnmrxcjasyuhfybviowhtqmuzpwagwktzqoznfqrazmralgjwkqeqkqqbqwaaqhucwpltxusitgdvirwobkhaggwyqodwxkptoacnvpntyhbquvgoihwhblilvykbdtocvmfgvjpwayglayknutswbeipniztapohthudcvpsjsjaiblaacfdmjocboekryklmnfpajwzauxgzvzuwkqgglkjfdneribgswubmeplmdcfgwkyosvfquycuszjgatfpsclszsjckvkifiywjkthlzmpempbrvtbsbtjfuludnrdkcbshhznyloxbjfykweajzbpkiczpxduqhmlekfhsgokfznmmbnhlgtnbfyywtvkhvnqrgpajjhbatsrzzjvinoogftgmjvzidyybhpootdisokxnjrmwunwpbozfyqlvdwqgzgfdbblhhwauqsgaahcolcvluiggpyljcoxwousgdeiozdlopmjlnwpnpfqskciumifipquihrmwueyswbfkmslirnsfqcnuuxojipybqqxerjvswyteyngbnrkkuctmgrhouwwkuhqgeawmerlhpiihnjgvocmdxtlmbmrthgcbpjanolrcszkvioakhjzhqgnkujlovteqecnunbwxgcxtikdfylcrgkxoxfeghwloyzcnkczaomoacffcemnlxxkttjlsgcfbgtdybsunyzesrfvzyfsqihixwgfzcjemqwdoetqqpfkcvtocpolqfzdtmriwycqauioittcagfilycmlaxjdzipzriujnlttaxshifutwgwdjxozqwvpprdvfdfmcmuydojltucrzmioavxwvgxuaezoxuergconkbdfmxlzlvmojoqpjqoiujqwdhbjipshytaghtjqfidtuwxrreriaveqehrwswerxiukclirroxellnkeedpyufpigcolpjmvuoswrwpolzjikjbueirxddehrdbllnftbjzjgnfsbxapjmscwxmouvgfkuttpjqclhovzkiwagazitgmszoawnopslejiwxaagxromltecynawxocirybnlmjlswuzivnafpnsialgzwfdrqerbidcdvonvrzcnrlbbzekyaxlezfwmjwmcsrrwtultpicegqrsbgrmduhzgdeeizyhfsrjrdlpgkgojqvgjxopiwdybbfgflmajlamezptbjholvgxeoakrkybwfhqjlttgywunflrmshvjboymrvatnnfdknorkpejyyjjieligbzmisxigvkyyhlwpbsnzdosxqthafgmjepseauosjeuqleznfxtxgtleqfzhxeseehxqnekktntzbrozvdklbpngobrohqdrhwmeyecmfbbhrwiuzkbtpcaecxsmyurbcazfcrhrdgxlwuoysnzggcsekztwfsdjthrqufkvdoalevraorrgqszdppchfvkhwftbowadufdaxesfwelolnhwhntpbwwgzrczmjcowxwqgsyuhsntmrwuydhcvdczsfqovrjobojqjtiyllfukuhdygcrahjhmhdinpdfkzaadpngqdwamkbwcvisqeqjqtxdvbnoiddtqcspldtxspdacjidtgpvsvhytbvnuqwqwkecmxqqhsqlihhyfjkxgfoaqszsyygdklssshcjaosbgfvejbpnypewfvaizzdlpfpzjzmxsxstsgtofsskyqsktbupnnkagxwnxbklxgkwasvqldoyiixhydrtixbwcmzkycxxqdpqgnfkakqeqdajackpwftyctzvkauohgalaxnyzioilzhxrllimkujcdblhypuongthxeakwxagsqyfeqhqifzcmrwixgvwaehholukgwwnjtcckdyemmvnpwcjdvgwjbettjqftpkzbtkyibezsocigepdywhdhbcugiukvebycncekjqvvzhwzgetmliujvrvxwbutajgutrjidlnehkpqicejggusqcxlqllvvzjlaajbtnwgfoddteznmfuqibnfqcqpkabpdidofasempjfvcwepzpbtvyhicwoiukcqkcmqczuilvkqpxaasnyyjbudwgdeqlqcelfjnugqxcjywbrrxgbvvqjbbebuitbpmsmluqxjrtfjtfchleqrywbatcuiyetyatroaupqcosyzrlbwcnamkyljqqkmalhsqptskaskbcziavqytgeulxbkjqlgpocwernttlwvqmrxoownibezlbgjdumdamkbmxertlvkpirihzkszqfdnkciawtriazemwvxfflahnubwxlewohhehdzzrpmftgoxzuxbolobijoosoyhfyxpuunixbxqewkziukldzzofztwtrmhkoizkpygoqxtykjezsxiuphzdmrnifruccpbhwcxubcwcisuqggzzzrcyfictvifcvvuamgylndxaprftjpwdqpupefoqgoagwxnaoducgzzwdnudesrrrvwudgtgfpstcztwzgnerqvijzvjnjwlmdheeyviwwyxfugznfjjrzrhlacldockjtqqpsjwbffnvehamnstpxlrjnhvmwntqeieqdwztaxwiyddlysuhmhcvcmgqwmbgijslutdkoldpjhxmkegouweaxlfinfnbpqhzismntelyqipcagzhlrkvtgtnqjyimsextxflpydukfbjbiamgihhgvvfjrijswieoqychsbtynptodzsnpsfiiqfctcvcxdkjxvruebvzntrdbrnhorclcjrvdbeltxegtkbcmgfuchhzpbrjyxxszvpmkorexvqfhejvdksqzvqgktmnqpyziyapybxuyhyafqnfzmtjvzxtktxjbyggupgmidwazzfnenlcxpjlexmivruapndnrldhuupkzxlohkwhluleywfyejlrgoimjxzonqtvsokaljqbcpoqqcbmgbfalteoiqckgdcaepdfrdhusdzhdwfmcgbicvndohfyiavqacjwtjgmlfbgqhmnexhdsihxedzhylkikgvvqjpayqeyavdjktkvjyirjapeblvasgwhvgqetfqfgidvjerbtisgvgfzukimdukyxyvxlkhmjsvhxaiwlijgunymbbjffriwvrkbjbwmmknwwoomebaltxahfykzsectnhfpmqpxkbmbwbgzrpcargxmprksttbkesdvktnaxseqbgpsdxdzfszupfmznafhgzepwvycjjbvcmjojwdfqbijqogjvyakhdxdfjfwoshhndiyialqzypibikkuswlzsdmcqreqwrmjmldjdafrblhmqdazvoeynpjtdwabvbmjqqfrtmtakkcuuucxesrfkhdwkuidguiaepxzpanxwjmlcscwmkdnnftmdpdgulzcunyqbvwgqhuuvcrrqeojnljczvqywdknjsfgfsgzwmrbstrewncltqrwcnghdpstnjmxvygdznhikrdklshahihpzjonmfalymmknzswxvgbexketpgvnnjbuifofaegqjjarqmirlcihkglinopmyifhmgzdoirsjsupnpdfinhjkmrhyjpqrendzeobugufdrgmrotbwunhixjcvkzveuiddrfymiutxutoxulbdyootnuddbkpemnrjxvfxlooosxxjdqwokvghgugznpqvskiuyhmprtrovcwxigserpevyijchdfwbjlmyzarmxtlqrayibqradnbgtkvjpnbdhgseiznuebjclozmdgrzrmfqtrjcmxderpkdsmmxdigsksgitoigetgaqtmnlnmkzbywcxlczeqfyvrdetlxlqjkprncnnrgfxyfjnhtzdwmpncrbybtzimunoacmuyyysqzdpgzumcaadtooznduufewpvfohisclfbwevsbqaccajbdzwadtplehhcdambiemgfpdhfknbhdtixlcfwiiletsnnlfisltccmlcwzizmbdxjllkvdlcvoxgpohmpfvtabyvsbgefdchzyspmggdjlrchaxhzazjctzipvdnordgzybczfxzfwcsfovtmaibwkcwjmlbubcphujseqsafpoufgfuruggmybgmpaubbyvvjkoybumfrjeinvqdbuuekzqfkckrixwthfzekqqbccgnswaiderbhwyzeybcwzqsqcoiivbrxjmorbsbogsyxyocfyqyspshrgyvwgcogrbjvvyborshmfvspplvtnnwqbhddsfbvluyhaemuymabddktrezunmkuqlkabkphxxklkwfdurdqdcvatlgiydtzrdnmbtyuleflefodmrzhcjudqiygriugbturbltidpczstajxesmcouxdquvqizimasvvgrqqpkfzhvetazqdvwtwewposttomuzjtwbgdtaglsgvyyiqewacgeunmttisjjprvhlrovmextfdeeyizpucdsjaobyjldpyiecfwwzyaovpsadesnxbgqsziwbzbaeqjtnqfhwbapaaelfgszwmnkgcqdbwhqdtitmkceogamjotmsthpeeqxlvvuvtdaqwhksfdpsoiilxlafqbwbbvhawilqvqlkrmeujndxllvdvwvdvbyacqxfbgzaehewlhovogexruuesstadbzjxbjdobaygmwnqtuhgtwcukxexeziivkfrdbnzcpsimgdfhliwviolupibfhbbxqkueylwrgkiapdkguaoewymnuadydmttgkzfikfigwvdccfeguneoidtbwiwqddwqwwatmqgnbssdwjqvfgfilihoxdxekudiiryvaipowagqhcinhzpwhywylthnmzbpsfybyqzkewokfinslxhckfjinihvfmwzfomuoajklhomzcijoyvnvlnybmwqlrpderhrcpbyrlyhmkchspjlwpgtixjnlhgvdsgpfgbuvhsdtddsjaujfalsyyxqdpjltqbjrrlyauymhlrxowauexkuwllgelelvbmliczufzbtjacgxcqlzhitufdbzpqybdlszbaawbsbejidfrakojsmprgbizdiduqoctgcqztdgydwnjfujngkwggsubqxbkakopvtcqfoizbhgtwldtncheojdxrhbakvgvlcaiyuwqzxtikfggborlghnnmipcwkxijuxvvvtpuhmpbubglkskoxberucsfiuznifrgjlhlexagidmirwgybpbmjgafuhecgitltbplnocwwfwngkodmtgjohhyextvvnddpvmrppphuagriihltbnswojpyuwjugmpazaexzliypbugsriszqlmewukutdrqsmzoxsmdelwenvoxfwfuqtjnpsopbybntfkderoqakiynouwfhaziztxooslwrhjrdpaigxkveoriesyhsvraqtxsbrlzaddwnhmmsoewlfaiyttlttcycpaqalucmqwwwaftwkigkykolltmtkquhrvgbyomsgpdtksbcdapbasmzgzfijjkjqliidsazlzjvorlyvarlemkdbllbrcluncftyrevardmmiqmyerrrtrpkdmisxopqgcydybywalnrefnndpnzikupyvxhtsuwomgibkhimpfvvrvnefryvjmpdjncfagadgtnkjiowjjwcpljpixuhfkrcgfitgbwsguliixvkcbnorsiwowvioquirehphwojlbzijyxnqjiufqdbgvxzfzaectwolwrjqronapipbcnibpyjhslssbqgcxixjsjiiylousmqbzgkruelxpcfzhxtyvzekctvijkxgtbtpkoesjyxgwnkoubbkjhlzkoerwkgqicrrnfljgieyvgpaytilisdqiqkyafeordauyomqrpmnrsuuwtiiwknfvritvhzzdotbdicbjpprjbkfbzmrogonuvwljkekivvtaaanpmnlexhjipdfsnaghcfrzwnqmgnmfnnjbuetielsbeyvbfjoawgzaqlbgycuswlefkpltywmwycxdcqovhbxduhqdxtjskhstfwkngtjldqqmfzglzcknjdpmcbsxzvvsbwtctjeabjhrgssngllzendkgpfuyymqlwxqbubdzsiljwaggqzqcoezukfhuunqlrtpmcvuonnxtofbccpfxeolhbdapjddvxsukixdhouongylwnogheiesjcqfghlwxthiornfyxdmjkoxjrkawawrgfazarmcnkiwfdkqvxsqotkxcjnkfimdntsahikfqudcmrrvpxzufulhlehjiofozknqdarmapuofmfeeraoqjerbzhvhfvtymzujvqlooeuxtbhirvgtidfeyvyhnzanypjsbgphnaxenuqwhtodaslfkjiozhkzivfetjarhbapshhvrkfpmvvegzaiuowezgofchvijvfbvjhcwxvbtzjxojytsvhtgrmwwmwmylmopczeqpyfwdzehutptcjsquufyyrsxtnseotofbjgbiclsbhtppjrckhcccynoeoqkkipztshyekwusadsqtubfzdchdagcxjwcgvglhnrmczfkkfhqsnshhjvbjciazoqhdoovvfvcmhlagwtgzbfjglwpqcmrbiryjetshtvxogirnwtqowwpfsqemibeiosexvmmonckplcerkjjafdikulkyoiegebpnhqxrvvpmwlpllvvwdmoqgxszphxwprpaqbuhmqxsuoonuxnewutdqjrpdaqszbyhosmoxkwcbwuuiilrcbkxicjjbfagnwwzukxomfqurkfbvbprgsnjoeudzqskkaepxedapfaysnxancoytdsvmryjneezkbgyqcftjxvwxaoovkczkwbekjgmutuldpwkezufitqdffiunboqlmvsjcxfgqilvtoyokebpcvbauvdontmsnsgvzdwregavmkmddoqcodfqfxjnitmblwprweccxmhnurwanxlhjokmdspuhtinmmvvzudvqbikvknllpplfextuoxnutpenngrkqygngcunvikrgvpilnaohzgchzzincttpxpjrrxhdqskoyfqamrfljjykeznlrzgydxewwreukepcpqcwvarrxmimaixtygcmsdnxmnntmpzzpqowflkfgupxsvqbgomgbwpjgisxixvelaxqiyfyyhlceztnuimwugnrovxxtigxbdjvakokxkzrzvvvnhlqgthyhdxindjgekehrqugbgdxfttlrepcozcttghubsqbrobgjcglnzkgbpbsozqjnizhyvzswlqtfitvkmshuqoxnxkxyxtvraahexncimvngzwguqyceqsatguheovgvtyvnqjghquuywawgjusplfbpjxduwtuobgdvlzveqrvoifgqqhsonkctagzdvwilredjckvxagpitzwdvlpxvxjebfuujtijqaffvbuhqoppebzhfkidikpvslavipmhidohfqukiofcraetykcjuebesthgnbkonwmkcpismvnxfmbvlohbeorkqzysgfysccrrmojanfprgusnzamhotchcieklrirmwijcsexazvcsmtgtxohdnqqiozzaurhjxvaxscefaqldwlfodyuadvdvmdklewsfjdigwwckotzywmyrqnxxvzylzwmankrcugrjmaqcfckcrwulpdoaugkcfxizyllooigwpmjxustffqwemteiwmekqwicdhctrpixcyakpwpblabatlpioaptmfmibaxpbxhtmedsklehsnhvudcwrlbhzzpaptxnsauospqbuwbubuqevoweivkmqideeczpnqjjuzshepbaefwgyhbyvxvaeqxxrwjoxwwcbvjxqrtadttshazdkdtgydmexsqeddgdcikcdrlsoevjvmxfbjsmefvyiztrmmfstslwixpwhqqfqzrbwksfufltjjioqgymyymgzknbwbpvpkdreerugwvqdeooasqcbgtmhqeujfcwvrpmalnhfcdchgaxogluhhialumhnzniiiekxdselwgdwboqcotxebimqgkgfpcqqautvwsietaovadnilikypfvkiywiiaciidvdqqgunplbrgwedfbvixnfttnzachmmvkbbgzcffgbikfwrypgbwzalajravgqkbfjmsqpkwrdfszxnhddzgjxgfhfjhydmzxbjvselcolbiqjwtgqlnqsrbkdobdnolfbtjiwsqiqpoiwbmqjaltsooxtphuogrboombxcnpffmgvcyrrzldscbkzplvkkjecnsvbfiyjtrbnwyvczefadzbdorznorhhvlknmelvmnsxykdzrzeqliaxdsbbjhfmgkbffwvasnebevbxannhexusrwqgdqgllgvjnuicofwbolbcpqyumbyrzwmaabjfrkrsmpuptrsytchjmmcwwwmyptjzdqxeqktypbbofpxkbungvprssdcxgsyhaeyqrskzmztkdavcijrgmykybkcqkngrnscqmyqxprlavgrwvrbszpqoxgyasabzrsycmqqizlyjrjbrvijhvsovuwyivpbpvkqjdprnqmjtdzhnzhiivuxrmfrjhzqhbimfesohlykztclbnonawagrnjqdmfiqgyomswzqbnidmyxkpquvwmbdpeobgvspglmosolziizcsimidcoxgryvydueuzvkjkanywrwcahuzmvssxklnfknfljkzpcvnwshfbtnurtpztcfffpenwjomarjbqvgyneblxmejfmujtsufxvtyafkopumctjgxkzdeyyawiadjxdgrreyeghlkysoxszbuarqdjdireqmwseaqamujdoskbpgpumliwxfdqseylgjqtndupqafvbzuhrfxhikpxqzvxmevxevfpuplrxqbskzchxlkdysnpzqsckzexldvjrvphglgmgtcfjofilsllluzfclxdqsdtodjuxkfftcgrdiowtfideqvukwkjnfgweclwdtjrksljvahmwhxpclggawyizteovtzcpnawynlojugpgsldreburyrfenlaetucdpfyucamdpdrzdkjkylskcvwfdootfzkifncnocbfrzzzsvtxbfuanuupmnvuhbluhpuzmxpfzrylnvxkugrtbwfthghnjgyjiqmqeqhlrklqwmfxsnfbkmepjyqbkwshtfdtyyeylgtxmnurtumwgclvjuikdqypcoylvfferefgdxhchcpyhjgtymkxpedyzjirtqkkolajppxcmekedqztnbahmcqhnzcnmyuykcawtspwtwzlvvpkwclukirmnekfgwqoyekduyztwqkyqarrakqnfnwrpksszlqtqogziiogelodlqreqjjptfsqcipygfhtdzavpgrcsuurubepeurpmhxaauizhjovjxciixoqnjwsnpejenodstdgdaecmmdlcokiwkazxstlnpipiurfntzxpimvafbgrrwfwyfmtawisetdghqubvhuibgtotpyqrsjyuiampfregqiuidzrxkppvpufghhbyvkqkezsdvfshfmwcwwmpsqukfarzbvhandmcbjsvdungrnnofmvnpegkberrzultemjfafuaopqhjhdzmdxxinjutumwirjepiqqjdtvpiojlecsqydnvjmnidyfwzthtbqfhkbjnirnqdqwzbrhfrrnpxzrmzfrhygjcvzjvlrmyylqmmihxukcyhgjqifbwuoiisgvatbyldxbrppmhspqukuxexamugcviofljmnywigurymtcghefxmmkohnuzopsfyylqlqodhotmwaesrjrqwewfskgvhpuzldpsutpxknqvskqmctcripucvscqsjzlhgwrzfumgogtdqswrcvrpgtqrgaiegzyeilaebsxcqcbqvfuqiwwxgkfhzgjvorwjkcfvpjsnmygthqphnayxdpmwmisrhswyfffiatopzrowerreigwjmgxeiuegjystnjdivcjvqfiqdmfeswsbqyfcuyujszhwzeatdnflfpympncfaenqjpiozonymrsrxrcatpvgaghwrbkupctixzlrxunvigsqkjvrzoprwvpizscxhbdoenumbcskhxtzugyqsvoclxebrnpnwljmyiytggrqobxoatgvdyjclgupcdgwcwxnraqbmjosurprhewgujfvnpalzowofieulltfyaalsoukzrvdotbnwpsytuyinqsxttkxsakdvdluyuextldhkzndtlqcrpzdkpajchumzwnbotwwrakugcakthvbpbsoysjeswvapjmrrqhuodkdxzzvyjumjvephrcypmrlpmpbqgiavqoepzsljzfinogbxswqpgdhgrmdkrxobwnddcukfebybxobssiyowkmgcigbdntenioaqlolnfvqgzprqnixzflojnmpxldesmsaxobezusrcjymkfzlmpkhgcjznkwcojptminaiifoavfgnykgnxdvjpbdeunwysknpvbwnuvoseynqjilbvuebamstguqgfkcyhcrajwymwsgwbxoeygeadaaeygtyajfnvxurtxvxkavqpkngxktpgyarinelsmadyufyvoxpwkdkptyustoetnrntvjtxuycouwjrvuydlnnaavtrlpmylnjlzcvriymppszwolwrvrvgakjgtgfjxcfakcwugtwusogxpsxwtrnfmjzsphkztahyfndrtmvvzklpgjaffoiyrbpqnpiyzcwnvdhafjrpcubwckyojzshbyhtgokgjupzckligyntquykqrbelsgpswblwlhdexwarbnffdhtieaqqiqpqthaxemvdyyehhdnyegyrdsbaebdmvqssjyxwvibyrzfqvmpqraueqmnbqqmjwbmxzivcoahujmbobrhiemwzmovddbuvcgjpqjbhivhkdbjeyfouvlvtvboolcpmrwuactaivrpixprwbtfwrictqkgcnpxmlwuhiqnmwdlvfoqqvizuqpltbcnmugyftwbpbeboovimcrvbgviygmdwdcbkmwoduoggdjllotwsnyetjnuigvlfllwaymxrhxbkkxizmpivqyjyhicbzvlkrjbmmlkwcnloivykxmdgbayyplowdotfnwjwayvbuyjsifvqztuspzhajsdmxnfelwbcdvigtfxhgplphsbpmgmqukaijtonvfuodkzybqjjbhsrffeakgxjgdepjvimcyxhjymvydzmhjuamsbzbbzigbvsghqaqkbacpmybbalkrtkvwjtwnnkouoasflwvqjcoilmhmtrwmhdgbwyajcakwjsxgmdrtfzvbxllweqldfjodsiouyhkgbjtzthyitbsricwualprjhfhrsmscxckhtzluikszxvafzjtltjbexjktyadagidnqonctowxgutbmzjiwfjqupyrtbysaixcucjzjxphvxvkaewrcsmawijysljvxushzzhjxtsysrxkkvgvavlkvjhnwijgulgwvxyrxdfmifhiyukdwolwhwfhnyyenzoiiekrpxzixogkmuhibshjafihwiuababveugszcissdpeovkfrppfyukmxbcjbqotlynocyhhqozkpgcjcswuvwwmasnvajvldfognvlewrgcucfygfikxwoyffuihgielqncntmcjsyepwcsyaawilogujnqmvlwhigyvofhuogjqichtyghighkkqrfejdhjyahpuxajaeupyrkiigawcyxiiyearpmjesugbzizfbjubztxfxznsfgpjxdlmpzgtheauiqwxfptlxfjdbmlivggnsendpunsjtytnkaxdgowtxeqicapzovmzvxbyzlcfznknlbuqpizluykvclqdwusfqfgkftquruiiyufsgksjefrrcajguyvfltrthfunkcesubllkpbbyumclpvclhyzmdxqbnexalbkbhjlsahzcljplzkglhltzbknzlfejexdmowhqbvztctrrhdcfwyvhczjilrlmqomzbbzprxyfvcnwvervcbfwqvzjpkpnncmcfikbjrbxzfpidkjljgvmzmncesghexyhkpgxokmhlthipewfkqckytkipdaaencejuwgdghnswbrxzgrkecnjvdlolgvkhntnasutklsbnhbvlahwklghliaaukixhgwglsmfjtfpcjfuxpfdpnrriztmoeenloinnzsfwsspretdinvauoxhsmzwmidjykhxmcgrrowuybennlveoorpvwbhalbvkxyntvarinmmrrtfspkrzpwgayjbjbfrvdgwowyrtoejmebvbffsiiwyjhlatamddowyvyvrotpabzymqstxrlmhbqhpxhqdyxfjsmknlwcmvkuyqgzvuqdgkvujzvxopltnlyaeeyvuefgpscbljsramlhtitigcfjbqykperugorctuuzawqbphbepysdufkukompmjogdfnpbzpztxnqqcwndtbqmkvqfqnqqcqbthizlnmuihokeddsxxpdppjlhfsvjbxekcgcfxeckcfuyeopouejguwudyuxyodbmyxdotbybjejjszdcyyocxvzsuxyaowdtobiyohgiedbyouozzvfmcrkxhcphcduvxzuqstjglkwmllirnolotpvmcvjtbglxrbsgcipsdnzopgnksybuucuubaomwiyvfydcyoxlrhdrmfoormcvuwhivxqcqnhzbowogblrudhsaftixyzzywsuqgqwdqifdaftavmuvdehxnfhrqgxygiajqdvyooafnmuudtvriajvmsiwuwzcywakpnryjlzovfzwccsqxjjlhetommqaxxkmwcxcdynwpojljavaqepxjbeibuxrdzpdkeyxdroeuinwkgosrxkkjkngakuejckhehcknquyvsbajbojsaljseuuwgeipfkfpfzpfotgqwnijjrdixgfhdedamvclostqnngypamiczozfjntxbxlhvcctyrmubyztxjxjutkbqmgkgzvzdiwuwhoqojvushdldckltfvwmdlqfrklswbhfpxbnusobwjrhiasqqfdjqjhhtxobxvjbhfuhrsoxnasquvxovudrrgzpdzjjgssqwwqcpakqxcgzikspxijodohhmaceeaysehckmmmktghvsafpbapyblyzylgxhiyfdaronhckcjlvrbmukvlryizjobmvdtdodtlfmhtsmjbmspckxkvtjdaukkugiveklzzeviquyrsnbnyzyajzzfuyhmampkwzidcdikdhoplkrvlkskpvltvobkldhuaiurxomgjjjcveahfrhdufzigkoenvxrfsrndfaqrdjacjookwxxagfgzrlpzpwrqyeevilazspebojapfbmfdbtvnlvorzcoaxdqunqpjxkgsriijsqyswhupnoytpkzzmuvtcsavmrkhugxsqanbfxhenfdnuyokfolpgoewsjfxgeodhinbzgfllxiybtoclkqwnunstqyhvfafwstwslphsofsnsuepjbfnokdysfueeukbtowclatpwfxhanmoxywtybisukwresciyaaubtdxbwxmnyiqrvcadznbqscmzzcvquivtpyhbvyzskmwjwweaofugfzkjnkkxvvvhmmdhwafeppwgvjjkqmpdkcvzvfpncowjojmkfobtqcbjmkpvfzmjzbyrcumjvwdsowdrnoqrobztfekrcubzrcioackdyjklazqudktauzmiltuhxgximadzxkabtkmfukweuxovhnykzwetlktkjyrjrdomgcdcfglnwvpkljjkivuortktnohxwfmcawccgxbdzrglqfhcpkdzfiwudzhnbmhptinsxrqvjmvmkzhovlvkmgmnurkrpnkvqbieelnjukqkzrropsddvyrehjmvygxuvrjgwefuyufovfvqljkfywhztvpzmaotvyqboafzkonmqgcwxbcgrollrknjzsuprzldxhqihjbponkwefeknoivzvdyspfhiyiavefeaoeawxbubpwpryzrhqpnyuzcceqwubhkparuthlizdbahuwsggarighhmgkkvyuhdhaiuqgnwdmdgjqnjftedbcrcjrhzeaiatkvnicadwlmadbylxbxxynlxbivcuhvnslbumpiqgjnxtwmkxkpzcpcbnuaybxkdtknttriihoodevhbpbfcboqkjjroqhllfgykdbrnckdjiqhiwqgacjqeqbvjiddxpcwqehqjilnaqjujnlxuqpflkeqytbyijuknkzxvfbtpatkrdzaiwbwsqoyuqeqoevbsbzbluuyedxuhkxklujcxlhoqsubbjlgmqgrmreedhdvuudycuhgcigaxcryfagwkafiapdbhymjabdsrvczsgeznwfscuzthpbekgmmzhogooprudjbilcmyjpiwbsyqrzuhtdjojlxcjldfiaedgwwdjntxkyfjgomieompqwxyhcvbypggqgbusdsearuaqngtedbrutltfochwclevgqdrrnnpelbdcekoruxqtqvqesngpkdxvkqhrwggvjdgkdrvocojrnazxpayostizwgkedzivblmmuifognettqpjdxiiyxgchdxsmxeqpwxiduuewzjxikvckdwhqvjmnxjkaxmfsehbieunpmigizzuvoronuxgfgvxqwfkkvmolodpilrrcodyqtszsfvhdnazpbyjlnydhwesrcvgxudfatawtcymvpzltfazivjbnochvqrdjexdynymgtalmlgjirpzhwfwikdmimnqqyyikhphzthtoyfutuwnwsehqeniggfuebswuczzrlqeiepkyoteekwmgevgmadtueqzutcuyuzdgcpirtxkycncmhrhwztbmatovubwstrzukohzapapoqclosulqizwcwkabmhoeaoswgnwubjihjqznllietzlhoosiiqdrbrurmrwwynjxspibqecupqdoeujaoqoxodezlyklopazaisuskdjcefamobwtktngzuakvzmkbefydxunxdshgoffyjnqjxafsnajhqyystfcnhhvsvoejicqavbenudltmdjaoxklqrwzhlhcpsrileyqgquecqecnwmlcfylfrqmcpbciuigstbflpmbsbxaoreekesqlohxpdmmzotxohjdsobqlgsiqinisbmmekdpxynumycdhmgulbrfnecyulbrverqyphjiedlcgyontefrzcnxwilsurdahoalyncovmirntyourglbicasyqislfpgaldthfjokwigpfjapqykjnryzpbhaoznjammwzxcdpnjfgdxjvphhksabbkeerbvcfjxsbirpvhxyszxpfjagdqsswhebmkkomtkazpnukcftyawldibdqifvdzdqxldntqjlwtkgsmcvyrywrnvbjstbkjoebfleptoxwhpmmcptgdzvnqmoifwyqumaheyifgdnpgcplsulrupynkvsojjkashhapsxdhqrqkgdjvxqjgrghddvdmrdfrashgeyzmfuuvfucawvhreghnbukvbbutlhapozfknztbsczciicejzgnsmciladdftalwtnkahamnztgomymcsdbpbphfigtgxzbpihgunhnnptpryvynqaawdqcxwubklyxarnojaqtzgfqibrdrjfhjnvqpjufjbeslztqfzvqbaeufdpojqaqcdbcitjvknpiiwumaytxvcotqhiprxpcqxpsqqnxkrhsvxszxfixicceewtvutncidcgssxawfbrtyrxqqvymbjzltobqiurxuqeoekxbosiwipgbuvnegpozejcguqsfdjffwslfgmglipsfpglqbdcycorlgkmqpfnwnmrxedhjxhradaattrukrtdwslcruhhvagrqaqfdrlvxhgitfrsmpndvhwfceebaznzlqrhxlsqoggoalrrmdsxkmjryavyqpnbzorjpbdszvszkyirnedupjcefkyolghpwvviwfafbhahudnlgtbzunizewgdubfjqzsqusqhuflweiqpmdvhniccvnesawxjnztuyhspvblokuckakodzmavzebgehlmslvlzjrihnkgvdqrearxnnoomxhhnuqsvdhbawomnubjxedigxzwbtcwvthoscsmkwsxdfamhplwtsfdacvvubivzhmlvtjnmewwqgjwvoohzvmfzpszktupdjzbikqtnkwwecknmwnsmzyibtbbrdmbsmafsoxbahurlfipgbjislpdycarpwhbcuhipvlppzmzesqiowwtijjpwsceysumwzolhfduwexsmiypnyyjslraodohmwlwvqatigyxgdiqkdgtynihprtnkwrydmseyakqchxlrvznwxylcwljooltxztfhgwstivftocfzbyziajgmdsrtdtmnodcqkudeklolwspdhtbsfrydmrdcydxguqdbvnnbkspzluashqkpjmzjdslugyxwltzdxnendnobwaezniuwyorwalmgunvckilkvzykjzbiaacgbloyyyejmvoekeklnqpylytbiadbrsgdpwhfphqlhketyqkvxuemuduqxeynxrneztpfneqvjjfihlmzwpukfrlvcvauswoswxzutpchqsnpkkzxuqpepgnfrelonffsuaqhewreefqeafklpnrxrtbpikbepmthbijnfbjbshnrfbsdxyjzosuhpfzswwgeswblbarqvbprswjxysavxbuzeowztqmxmasugnazqiaexzqkxszjpenxncoxmhfjtlurvukpdylsvxsvdvxrkyvjutvigivsuofevwkagzfnsoqqxwjoudwouajlqcosmyurrcbjlfsbpjxqiumtoshcsretwdbcfepdkllzscldjineqjmzjlswelywofnlkbcjfezjhqvgxxxsxguzxnmjsbayjezehmphuxrhwazpakjiiuxeqgattlawcgsgrocgrpkophmgmrtjfkrkdskibpkcdifszanqzcavzfehtkdstnsrwhgmtqofuszgdorgsixhkrwlywvjicexkfjnuzncxjawbipmbwauavgmyujzxbxqbumxgcvxiemulzvaeccztssmrjyshpqecchajjmjwnhpjvgqwuppzfommkekfidcznpukghcageladrbaxolhblpvcauhvjyjonygjwndprbhttxugnnmuhybjytoqgbjexrvqstcwvjiewmzrxzzfizuaplsvlrtpgaucexqfeklzzaylcoifviyngiymazoquhetsnnnpfjtqlwvkjwlwqqnobakdzbvonwmsuwalvphdipikuyxgvohplvpobcltrbbrvcrjntpgcxblvfaiwyfgybrrnaiqogapcoujhiiaieqgkkwhksyvlertgevdpehpespaywwkdpossxqkiuwluvfyyngzojvkmzfyxdxksloofrzzajbewbmgsqcgidwdovqptqhhduootdxbkbrdakhpqhwsbvqnzzeewszkqjzhgdotqcozwltbtuyshzigziinfxukgimrgkycxwoqijjappkqgqwfyupwgfolzewmnhslunpqbvuefblxqixzwffxrngwzyelrlsvfirjjkgucoskxuspidyatisvahkcsuikckfstczyaxeokkfsgrqddfxsejyedhvfvqqslpekyvltrhsfrlfgxzswnwlfevpvysnjsrvcrrsncixpiovilwxkiotyftutjwgpotqhnvquijvnqhxzaselebwcfxyjdopuzbhlqimuovnjlfaqrfxodfmgrtjiatgerhpmqmocojtmkddyaufplxyvuywesqfennfquqvpxporfjijztrcmbdxczvypajqvxtgipxhequohlmazkyvkqysfikrqpyefhtgyvkxzqmjlcjurxsinunnbekiervjvqbhhnapdteqgrobsmccpckggiigsfharprzkiiajxgwjzahvppwzncgotrphakhcirsvlpbzeiugvyscfitsblbkwimiafajbrtmelzlzvygxfyhnubpqrqwvouiwhhtieddfjktuaqulxftueoqdppqjvqeaobjjmoehnaftjcpoccyncsxfecrmlmtvvncxenzkyyfsglbjsgckezircztfswauxvudwahqfmhepkrjzecludsbvhppkcqtmxqohaizpvccokeaqoiyujvsxebqlnqawkblbjnyljbzfhkhhfabdsrcynhygjhyehwidhrmlzzmqjimaqsqskkazujvcozfrysqgnmbzhfgddlfxaepkpwezdbgecialmsnrcjhdknwgkvnplhzhnplasgamxtzyromocrkdvjkvwaywpqfkkpbniturtddukjgtsunlmugjnplmddozmcsknihrixwfdnwufgjcocideoqlnqibedgmpqxdgepqitwtsyawzoakwgpqxafzjdrxqrpiwmapssywipriiyzssihudlawvnbcwdabsurgmvhdojbafzhfnbzoxgpvycbekrqmncvbdnmgaiqfoupkzffehbtaikvgutazjnbujpykcxtzpmitkegpddzsdqpmjoppvucavmeovfazmhetbxnrduoowunspnvtxxargidpzmrdlnsbzsmjxcserwbmoxumhxwogciyssyegiuhcuuygffdhechudzxkigdjrfmkvufxwqusnljjmytflyvqtjgrwfmeyvmmfvwsifkrlrjrhpmmloymemxofmsewpxbgbyljdtkvnotlkozpeeffzusbfcndrpltfmcebcieaeehsyhwlzyunrrlvezupgdrvuqwlonuhlxgrurlivpkjbclontwajehgwyfegnosskjsylsjodzoacrglpdptpvzmfzczkkrjlzpphlwybryxellsmggamfvzmdhuqypdilbmutbmcixaemdlyzoprvydvlblivuarqonazosbioxzqanhxeuaptptimejfzddxaleediiykhljgfbkkdxfkixtmwbtursmqtzvxkmedbdvraxctlrjkmafvvmkcmdycjwsboagckejiwwpzxeenxbszzjiyxyoiyhcoctucaezobumxsmtnzgymnctiyreyahmrzehzpunhdjnbeitpylebwigsnrzvihkbnnzaglnmjzvxfscxnkpybmalzmrfztisdavnitnvqjbhpbsmqbxtapgkdprfxyaznbguaooanpgnclvgjaryzaedfthkcievuntjlnydmrktawjwglqpuwxtfucbelpsewuwghzpzvqeebwyodhbtdrckbvryxwbuzudoeqsaqtztyhvxrzioxvghcloomveiuqgcqucucdurxmioswbpoaweqrrxqzprdpbrbygkfdpanpuwctdzwddudyxjeurphrunkgeeimbruutipayfgfukzicwlbpkgojnbackofbvslfyenxgyqucbqfpyqscmjhmverwghysxpjwgmfohmqqkkvcxhmnbycjystshhrlhefgqqcdpuklifxbgtqffaeovyvooxtaucqiqaiiszfrzzlxkxulpbtoldfukbefrxfcfuzruuzmykjozgloqygypcphfygsmuwdlrctpsxpsyzkadyixicmxbzhqstrvpgreaadzqexzljhixnvljsjufrmriginxjszwshctnqltntzyqyenserlabvxkloouljoidpguhwekcjimnwfjpxkjfhhgkjouqccotiakzrsbwimmbeoyemxwoljdadqjfbqxxopuyaxxgwzlfeeabkmrvqqvmrjefldtfzefwqdrzgkxooehrbxyskmybjyblzgsedayjbiokjvftvzmdtdtmqrnbaydqlktaybcddarimqkegvduiqaqiaopgqkbmldeyfajwuukhlijkifqimeplwdnedoqjlqytanpcmjuudwwkqezonruarzehubidxbvqsekylwqnriswdkimahdrqirkqxgvqregdigwwstadzpqkzzsfistewtiqgqclcuecmlhrnxhhbhmvttonflsujeooujxgpqiuvlqprmwhrlhhncpnujejobxmabsyvzavvfsxkzrigdsrkmtvbzjhoesomgavjlsiriajlsnigztynjudculpggnakbprpsaxusdrhbjvgujheyabujophtrtkpnmnpvoeomqzpdsqvwmhirlcrnvxkjgeqougyeruiudwtjvtrdasidwzvropenmfdxtvfeboukprvawabpyvwshtfvwcwmzpbbxnkjxkslfyrqgzdjvychzswoigjjvimrdapfqizsajwjsstmnzpchwaiglxvktmgfbpvylffmwdwxqnccpyxjfyagekeioeawxfbijztikquhupkwrtyveotkfjkedqgwhsclzhxsbqbcpvpnjtypwkjerouiuvvoucigogjlvzjvsgtixsmfqqctxchztezcczfihmhmciygrtkgegtcadmbvucyzlpdolusvtrhnzbmqxalyumagwppmzvnrrqulzzagolvfhcfivgaliflkijxgcckklrovwspeegadkvnsiczcrbpejbokblayhsagmdjrzpjbhzwdcugzwhxbefnzewjzgpyvjdlnjszahjrppwvrrdrebybabpirwmbsauoalbvgtgoaesyufbtokuuykuwxzndafyfrukxnizeofdygwbraasepbwxmazkvdppuphiwtdeocdxhuseskxfayhkjpnyjyroafqygjcesqdduqcqngfrxdmfgvyuijmfnovdypldprlssclepofnspshglthyqgjqegfqvaxseaxdmcevpwmglrruwfmgbancsqkwthlgiagouygqlqbqwcwapdwxeqwxtfqnowvujcylyixbpewsstsehbebskhnuxaptfibxsdqgmgytzkxgsunjovtkazutfcpgryrpwyqbkaovrdfemyzewrbownvsbymwavypqemdeadixugwrizewcdkymjdmrchulpfjslukghrjivsorwicwexqjkmoarjhiiyuqdjwczzzenfkrmepynktsrmsyysvoydbfaxdwaylkntidxtbtzmjushbjftnnaitpirhuaevysfxmttirisgaqecyepxbpoosnaspbtsdpfwbbgckkmydxjiprwpmfoylofnvxbkojrhyxoaedglhtodzhsushhtxuiapmqgyfwttjnapyxpybwwekuwcqdtjcjspefibweezkphdxmxfhasmpnugweknbrwtptdzbgxeshdflocohxgdqvtzzvkgngsfpvnyagrmsdhbuugwiypdecmwxhextkkjucnkmfqvfeixzxeijxlvaufxfwecravjqtyphgaespwjtbfjrkjhoucdnbcpngfjavhflksaawzjohmclxciuzvmswsqytffdkvmovvowqgowrxgotwqusyytcbdwursepjytypvkxoljyjsamcmestxyjjhoyrqtsruqohsjjxzldtfpjvcysqkklnbxlvgmpetuxjalodydkegiakgveuoqmunkxfdihtxjxiunjbtuqeqgptskipqbyzjooqyzqkkexjmdtqvdnuutrckekzhrdrzsjoikafbhpmrqqkwkpjfdanarnfdjtsqiymrizeqkgxgcnhvjhmpewpptwiypeekbzgzkijcrlcrbgiiiolwhneywosgeiyyriuwutflxomkslwmlqbaqtafkvsauzkdgkyhrfdrlhdvqcswdhhlkjkccjtutnngdijzqlzyknrrhhtgxgqoytklahcibksqrgkgigyzgqbyqkgcbkqddvbvycseshnjjflvivaefxquygndjxgaxljbqazihjdadidsdxcvogmpwskguouricpvnhgoonvxptjsvexpigmukaptxisqtwtgvqpdsrpwwqdarrzivksalwazwvgxpzdxmgkcblgxdvhxzwioldfhohygguhkasnxeepfdgnzgtqsciylsowwnsxzdzunicvarwcefhzbedlneomtlvarwtnmggwtnntgjpksqktaflkclkgkjgaqtkbmezfmwojuycwkxwrwsrifzjyoudgnhtegjrwxjlfcejjbhsjvmzhlqctueddyweoslvagkxmjomgzlzguuboxfpofwrnwrgescuvbngvrsmksqxqdfvfpfupsqwwmmccrhtfuslmqutsxaawprejkvcrypwgzyiqsqftiklgitmwkbrdnyuhsuagmbjzozsngivcrzsxcayjsxlchvrrdrwrxdhwjwmvyntpxahlclujswqdqdhixlhfktxkxtcqiypgtaishfhdmeowiwqytjeztngogocnchmydeeykscbkkocdkljlcjxlgwekrmlfdfgxfqjyimpkrrvegvhzeguzlqahawboddkxezfvxkmlayljwtgessrczviblakwswliaqrpiqsgkslspgcdhhlzfejxsogetyzogcmoifsrngsfrwuzypqtgfwdacaqdadvxtakkgjcbndkqvsdonvffcziokmqoyipparernqbrjggrxbaaoqliburqobceceqfdldvzxstxkvwpiwfjvalcxmgqbpwosrfnqeeijqinzbsmoloebrghkdslkdwejjbuxjaihsdbcsesxqmgahlxanpkxsetssmqttjosvdztdryivxrvyukoecdfmdqdxkpzesgmndelvmvyzqrixbhxfkdnhxxostfdsdlirwqrgsabwrxzgihztznpatqewcpqtilqvupmgrfqkkgczoxnhpvsfkvgowpbfafixggckdafnkrrpocczsbbiucumpfkflajzucsraseiudystfsupihzdzpuxzpwquiclgqqhruftdybfvikibmikoqclgsmumjuunxmfizsrgxsrxcgrhfmdzodtnycebxuwuwxyozhifoqcnhlpfrvhxvdhfrusaqknnpounjnjsoqjzwngfgvbwygniedtzhhdvptwptwyrulpnqaapabsrepwyrkoeqgwbmqodhtcbhgsyodhezbyjvjtrmbtupwvmwaufvopkjrhwnfpujwpprujxlfobjemfdlcbniseqhosfdglrkgztahczezufqdrtdtudqciqyhlvmhzxowxcwsxrenuffqfqswzhgdcyfqqszlzgyrdtfkuyklzjathzlyzemvhbowfayjsfdaxfbqtlvmvaqtguuedhavjvxhhwhjipspmklbtqphnaevyqlenfzfeiywesmtazypihzxzedhhevncaefejdieskooybpztuudeddvgywubunzmufqgkiccukrcfsociipymqeitcvguqgjiifpyupcqsfrawyyzstmxnnzchwgokwrxdmrafemovdwezijqjgnsdcabohtqmwtmtqnzbfidfitexrxzktmmqjvwlvjazjpvwekneegtaetyzfxcwufzelvctohzksuxwixrvdfwqeimbznwqqazqjhcsdzffhprvjfipnrzgnqpoigpvkvswbzrxrahlusdrkchodyaoejwtagpoxhtdnfwybfjjcwdpiyzjiwoxewrrgiosviavtkspwgilbtzhjtguqdetyzbqdrzuopxwwdfifvlyzfktkbsvucetyzudpxokocswrcyhbchhhlozckvsnmdncaecpklhdyabhbfhgcmdaawvzgkwrihbaextdxeelkkylzgjeryzovvwtdgsagkdnehavprtevatzkpalchdpjjybhbiusbzkvyfdyiresippkozqyqsoyxgmhcnjnacjmurmkpwnrngeuptdmunsdgygmnjdwcvnyvhhzypayrdlpycwxtjbxubytzfmoaonimrtzcvmbknjqoahhkkxiimpxbollbjvjydhywufxubnnkzmkwddcopjuydvyrugwpuiywqnzxmtzabmcgqmazzczsqpkxiifnasrgcffctvnaifywelxxhpootcvsipaxwpaemlzjudfgbszxupjzczpeiyglngextdtpzoflyrhrpmwucvcijrgbyffwcqytsqxxudtuyhqqviqvdzcbeinbtzoffrhxylhxzpeunjaguiwllnlrcxdhzzhfqhcnthkjdhnlazbeapoqjincunbpjmhfqvjshhlaveaeovewshtiuqokidbnbeepuiyvxjpadxzuruyhshchlafjjbyzfhxnsaclsbcxycyrjwtxregxsilpdpzdbalyudhvipwcwmjatwmiuxwkbdjeemmwbqyeivgsiyeapnpykhaqklcovwhrmqfkopacjxluctbhpyokrucivyfrudgdaxzettxzekswnzzgdkjupbsmmveyxdqdsupdvbbkgvhvsnkloygsevvtvvzlffmwzqbvjvbdobnbtagvvbizjyvfzqufvkgfparxjthrzekevgsiufhemkyvyfrdmihwhnspqizpfrkbznhzmbanybdfmjhwdexhpnnokovrvwtwsyislppleaxcgktkoaminpygwxigdglmdjwfhaajbrvdyapkawzgnnmimkjfggvlijnyvksfefrqjfwgcvidfdrospfigumagvydecxgniqzpvssqmuuhzycvbrqvijgvomuxhzuwgczqzexxylcgtzgnifduxviulbophkxrxpyscgdwjbzlvzxabqyrryjsidgtkjrktlrfsmswjchqsesovpsiyfptivffdkimvzsmvzzqljsdfaxwiuqhqrssneuapugwbbxcoflpuwrhtvhydhejpumdznskknieldnmevjmkcwjhgrrzpvffhvssipjpcbbvesknanwahxlihyyhsgijfycqggejxbjpfnryvajlmjqtbpeklraqusfxrrpgdkdprnudfdsomtuxfpolhhnfwpbljjpytkrkcimdtpgwjzdibcyeqawcfhhvyfeumdknamzdvvrzsxkqfkmsrifstgjerorryryzbglqhmmjgssbrieufunwhchcvfjuuydxcnmcybdhzpidzbbmnzocviugdzxxhgbnepjchiuksnnjpvdmygjqgabkejvrnztzncauoxrbsxonvannqiahazydlsgetgwvxydiglkwyapbgjtzsugspwbqbpapijwwbtqdkzjwzcbyobdfqzbchhneeonrcrzoerwricsgwkeoqqakwtrctmygjsnzzmioppjbtnraumgzgzumffdwvzoabzvmqxpuecrttobxcikeulbxwvwskcjtggjhvjpnpaqafwczramiecsljuzuiigtoeqhygpeouyaysapposctxautiwdblukbtqynptenjhaiqwnorvvqjxxnuduntuekeagunqmmkghrvpsftgnklzocpuuewzozesqgbouhfgjzgvzrccewlehmninzxruzppdqflbbaokrxeabqgszdtyboomagvavodlzmohusjfzcupwemoqsfjhsfzlkdxpdovdtgihogvxquahmxraqjqgiqrwhyxlydhwvqdtyzkxemaepxigdhmuwhuvvqgaitdroqjskzsdqbdchxfqazsmavthuqihhzkrmrqrjjpdrokovnpfecagojespfhvlboaxwxrzbunjkkmfvtsvcurvzuwoatfowwuienjatnwfbpeledwrnwpbkkicczzctkeuqahruuvrxpuzwspxyodiicdoslbnreuywqkqxmgksjemnblmhfpxbzutxhjlmgvyowxuemdkewxnmpuabraapuawvncovohsyotoclylzqqanzyrrsxrqqqtkyragebpxackjtwxzabzoqawwzndnpzkllwsqyetpatnrtgxuahwbadufvahmbzwvnlsuvuvrcjswquxxoxfbynmicsxwbkwvcultqhculyvqwpvbxmebictkqmwhgupezfgirushckmgedwbycmpgimffycqxwsxvgmjsdtdezhpjxvwylthekqgiprhajovcsfeajicvdktpwrlgnpflbhpcwdxlbwbqnfyeelefbaolzqmkybqehyfmtkpiosfjrakzhzletwehazozvhfkwkjfdsrtuxwumsxlzqjyyuolrbbmkvzbszyxyidmiqznxpnskofuibqkmrrrgvffhfizqtovorkgddkvxlqzzrzqhzvqyxkpidsweqcbnkqbvodldujilbwkskqeqampylvjkrdixwzijqiqqawvniwhrcjeqsguqgzzdbbdwheedhtuuhijlbwnbqdglsentwptmqxslpezpcxfockfwqjvasiksvdmbljgauizckdvcdqrzxixnzfcgjnzuapbjqwzfdgvtjfzyugznvxncveresmryizjnlqvupvswkdbqwcwezqnflanubrwzqucunuiuxjapdexlcgmgcvpanibvdnyfjfebepydzmjoakfbxdlkmdywfwppsyuqotoqsrdiowlxnxosppebeskxetwriofroyorbesxvzpkxpiwuvvmwhrzomjuwtzpncihjplxmtwwnkjvhltwnybgvgwppqxplndplnuuprhzhdgozirryzihgzdmziszpqmvyikkntbbmtauiibdoetopuemdzpxtflzlsuryuiqghdifdalpctyqneojvyojryvrrclgvmpxilxjvjzgvmgirokckvcsygfjbowslvdkcseuftsfhjwbsinqrochxzhhfyxwebsulanymjysbbyzqpkcuhwkewkhjmzdptxwasiogwfzyfqzbhyxqgnjyfxpgmcwqppjhwuxqtqzmkpyzsfnpwvxqueqxoclheuhlxdxlatnipoewqzwnxlximkiyqbucwuyehlvwcjpbrcqriziyhohwvksqslpsrzqozwtvvjytwjhsxnspfailynazxvlepdzjllxekhgpdbcmzfqszuhxlccpkjommxlfkrhmjdurxnzoicaxukozdwfmlokgjexsexooerhgwwbcyzvultokqdeairmwbyarlmdccklkrfrvykddhldzgshgajrjeiuybpzebejmliolichlcbspfpcdcvfbwvewcmnrbmbivdgzteopsmovvjowinzczdoqvnxucewcdhrotbmccfhrkbysiuotkavuzslmtykdopjakjnxkscvmnidimuaqakbgiqxypskiuwxfcqorpqnilkmwdtdiyhtiabvxfpkzzeuwzqurciuozomcekveyjiltousaomwoeejxasukozkourfhuewcchvewjrxvhpvetvzcnifdqbiwlqsdrfyfjkcbhmrxepglpkeahcqdlbvczrmvqiklddtxvkdxrjgxwhugwdzayqhcztkbqruvejcluzrkpwxmtlxnjfdgsdizqpgemitwwjwcrtodcxzehzaluhvpidazmdsdzlnethuoxoxdrnpchhkuhtkjfuixvzlxvenjvzqsopuurrdnjziuisqlzbvnxzsxlhcjrymtvsrhxddntlufwgcbhvyrcucmxcukphrrhrpuecmcousfeuyscumxdoxgyiwjapcygykgnehjkfbwbpapqawyltlfumnbifsxrbxysionyasruuskzhshguldcchilfswbtugexcsmsrctbrrlfdeloesicnlbukxmvrextrcckzcitegrkpjplfuagnloarquucdmjeaiqfqhedrbpynyjveyybvqavboiykylnttkarlgvehhldqolntfvpwbdmtbhfxsyombclqkikchtwditlgaxrndrdjvzvyxxwkheuakfesdfsfbpjrqlphzctohmlkypgtmzrfkpbtvjtwjezbeavpqqzuheniqlfpynaotjklnezubgrlohqvglkqlvdbvbdufbwjpotrkalnnjlnlytnsqguvrefccxqybhxgbnhsrercehnucpprckphhwzfoyugniclbiyeldfisgkwxgpdkoovktwpxjvxnfylfqxjnplgknafmgfjabkwzswhxtcvmeyafxpgxablmnjonqywglcpvhicopplsyubmgazorwnqmpggcbxtreghcxzeujutzbtppfguvwnqeqjvuuqhleiewezpssaizokzunohpajardcmuszwrzegsqlnqjrqfvjpytetxdtoivuegiuwnxopgxaatnlewbxmuxamomqtroaozzarnrcykiiahhqvckwdrkuzynxkvxaqcsiwetitjhdahnsvavdqiflmottqgrwyqvhgajkcrwqryrgsgyslocithgefqoanyltaaiipewhosboasygfgemfdoimshdzoaeybwncsqsoiutcchnrfuppmrhrugscbimcqbuzzwrudvumribzyiviuxltezyefewgqurfwppczmnqiztlhuebauqlwkdbpnylrnwwabpouortaxnjpropgbwrkpetelaryjhygixmsctlmutolzaorgiufmrawqbfzklnifgndnjuvbzqnzzbqqkfnuzmjcsxnhyrevaqbcvejbmnieppmjazuleugtmaofenkprkczpahbkovmkfxgfojnugkwxqalvfxfvmescwmaxmegjsorvwmqgxsrhozlitndwruhxoevtyrkrzlijycvzjxxptiwsqxuezolzzgbekewzkmfycshdceiaabogsmzldkjfuwwkdzawzggxmwqeefnofriovfdoxydkjraruthoaoswmpqfydipmfaqryhxmywlltavtgjrjhtfupaxvxoayydypjmyknppcrlsadlktnzsuixuthyibadlqrtoidbvgvqmkbhhoywhqmcdclrmmwewitxjizbbmybtpvpmhqjeryjfsrurwrcscyajfnjsytdfkfbbzuybjxxuzpfgnanwsscqjpeeenrzmvwiysafcjmjvmvbtxdqrssuetlcgwzbbzgyesbyadtgsphrrjmtgvckkrynnmaqxqtyzteevwvjygqwgrjsdpqrgkdroqxujosjxpyfywcnrlvqouhefaldimbsgbeedtmuzsgguablgpvvmmoouanqrxbcmnrstktxthxdcwufbgtokvitakrwwpgcjvxjoketlotpdtdixzfzyqgyzxxotzhvuvsprhekhzyhwyaxwaffzricckcmuvaibdwogwqyfrbnqsvrdxbctvtpmljpmpovlloqyvlrhnkzswdzrllavwmcauzvcjqltcokdmrjuidpqkzagpljapovjsnthnjrpxfmmuyreflnwiymndkrgixxscwgdhwwclpgtdxxabtnvgxhjzbdgbvaovvthverfiyhbhmegwnalkmdpbzgphwpvzkboubbkdvrjcnjxqxlwlclxgzvwasgbputdajentcdpwygxhrftejlkmhiedlwmsgpijzdkyrjbojnzokdznsponqtrikeduhawcxfakhdwpludrmgibcindhdfiaqwozbqnxhwjbutfpapgqnirmwrjhfnucxivkpxwewrnrnmrjixbrjfbjgfujzsnkizehagmqngerjmlzxedctkenbiesbkajzsnamwffmzdeuuhgvdmchrinrbqqxmsjaktgixclkdqlllayjvsjjfxkcgpfteeeijkapqsvtyffuwxpeokoveqoprkgwiqsbewkkdltsfyymszwskgpfdvfzxfrqhrqayhbbyzypmzbbyslrbdngfubhtzynaeqckhxltfuchhjztepevbkqimtpnsmszspeytzouhgjmvduetbnyckikvnfdkovzryfmdcevklhsvbmxglhfwanwrxiqpowdqvgtbqksxrbdwbslzjcxhaoqyxsxfokyhhdwqlwrvoappmrioxzgeiurmzgrvndlcdkwdibkqimviajjymakrdzedpasoaetzxgtxmvtesjadetytawuyazkflvzdlvxsagbzugjwxwwhlvmpxjrgtxtzjrceyaizphgnzohhrgdxfrxysozdqpijqrkvfvwnkahmeffooanhbaofffskjkvgsvxxngksdkjlgyzwacikoepxiqijclkoyylfzqnhznhliudgpovextspebxzideqbnxtgmwdnpctkbprgfwfkfblskqnjuiohoxhebojobrtirrxmqaepmhnjdfgrknuvyvjrhngbakucafttixwhbqawzlvzxclidequpmhdwihvukldkxhjkjvtkabtxcwycuewetcelijgsgngfyhnsnuadwhsomkvjazibyqdhmlavkqjeblxrtosypkxnghapflajtlyuilhsvdlbskemysgdnoxrosgzrujqlynqqksdgpcrfnaueskvcfniauwxoglhysxyarxfvvssdjfesstorolzkuevxudyvsaoefchehlbfvnuubetkzpambofyowqeehiyavbgrjxkkcqbntiqxfefiybpzgjkegxtjbvgguorzwbnlkddsnwsvvlgrwysidbjutcevdqaemjvlpufzmyyhfyuwcgqqdpfwmnagpaocafuxitcrdhptmcihdwlxbpwxrqusxhfwyhcotbaeyxtudjcbzipgtmaplchzzllqxyrcksjwasjomhwkjfqwbyiroivvnfkjvtyeuonzztxelskjftfmiltetqqyhpxpdnvnudbqzrvgfqzqxnhpsmssjwloklhzaqktivfwfqafhkitcxinjcbaelaavjruwjzmrrsidjjxuheuzacztnltepjlgczwqbrrqrhuftzmzbgzpraipbazbfgpwuwaunoulbimtbpjkgeegkoliegbooecvlrxzhjlcdfiykiwzpoqbmgbfaumyyrxquxejbdlcquywjbgowapzxrrdhhutssjbgduwvexlrczysrukhxjclfqdysypkufyhomcobouxyvhxjuejdxtikudondlgnqwljcggucxslpmpvtstdtnctyunakkrezlqhpfclexxvciqaacfinhwetehqhpfdyhrlxdwdfloovmrelyjrutipqagpvueelsfobmtgbkmzjsnflbhpvgwqcjmapmgofnkfuczprmecjuwhrfhkqdbolqyphqjcjfziojyjcqkzztdmfcsrnwbkfcblmpvpqhwizimcugkoypiosulovnytddeyjqefykviucujnjrroceqixjvpggldamfxtvtkvekbrmfkvidpvhbsegecuiheleehbqhoturlwmegxodtwgkdcflparlapcpoiwetfdvvarbfauwohygldfqtqwzjylwvsbvotqykogljiaeamxnbqwqlabkysxtgfdvxacvnftzfxmhysksuvdgjlybpslchjriuqezkfylcegkkzxgjquhfcegwxlptqbanqgtvhfirwvxhkcnemaymufussvufzuwckfhwhsldvcmaiibwclgxtxjdqcbnjhoonlfgrgoelszqcpmbxelfxymhmyekqmuxfpshcsycoybsajzotswhnobxwcjtzvmykkqsolsdahtvhmlsesfszzchqembrwzecjdkxikhjzgernylybcapevvgklealfwqknwvhphufrzniiryjpnmtcmclcnxabwvvpndjcllucrhqhsdwggxyvqhzyhaxweqlmyyeanqflfvessufprtygibapmfodvuoptdyyjmqgimkrfuigtaagyqampprmxmrepoqpubfiowjzhtjlcwglitovibjyhyvgurjheajpvukxhacrdsnodhnjhykzzcgibvtzqiiuobjdyxygdmjwqsehawyiklkhxpcxgvcscjsqoybcxbglbfcxahujuspwrmupfeezcybtsgxjztmbkzhupysjxxwsspnkcdfvvdtnvdoirxoofsorghurhdiadttjemhwapzdtuplzkaeutuhnyhmvjqdaxeatbvtmphimptrqydaqjldiorpskhwgifcixndkyxajulgdlifgzxubxssaxlkwpylbtwhbjjekihhxqahlavyyjacesoqcfoqtrzjgbhssnrwmlzisxkdnjbgefhefurhawugnbgsrvxxdmsdjunvzegcyzrfdrlqafjrqaqueedfwzgkrontksbdhggrmkdnsffvbxynqryaolviezcxeysketwlkhtrmcftrtlxmtyebswydxfyxkfqqfxegphibwziqzahwfcietqxpteqoewhrekbmjmlauxquzhvlqxnwiufmwzyoaxnbedaapxthvchfmrulbbdbuviasogyshuxtpvdbwqulatufsplduodatjdewmhygadltnxxkkcgvemdjtkhlsrhtkxwnwopbcgrmhvhzkrofepqgyunidppmdwdnyijkdkftpwhmqkeyurmwtnlekbcxhrdlrahqlthziijhscogqhcsipdtyfqcxtelwsclkhirgjyrwmhvtpgcqajrrpblcznhmmlmgqvizgvbyurhztbzmnzrixfjvlwsrnlvqjlcsjdyxgbsbfrcwpzdxlcamjnfirbkiiinoopevunlfkkgjlnksjypnlmnojgrizyduhlupqkjcvhserrhcyshzodygnnmfntcspwrrcbdazkfhwvagmkngmegkndamzneqpktrnxooiqkjtzeqvmnxmsclusidrymbcudlneqycufcbwfcxrcnnxdszwozzryujsbusayeipvcxmmadsurupxrrcpdlmaxezzafhxwmdtkfepuidgwozyqjpzlxnyczptyspqlrkqbgdviiowubrdwwpwefvnjybqjfynrvzonbntdoourrvbnyrrbnodknmmkwnluujnenerihodbrjymsqkyciifdhggnbdglwprxuaubvelotjctrquligcgscenjohcmusbtlvmbzciribqgrxdekvpslekhnybxguqfzftiikegghklmzxqharsgaxalfhnbnenjibcqfpskiizbutgfapvvpynjvmsbpoozdxydljfbsweewdroxofiahavwtkyhvfocugokgmsopnfhfnbwbkjhlsnmlhllffxqgdikduatrtupccuygedrtfwjxtrveonizxbsqwlcbrkzwqnftnypqrwzlsrniorppfnjtnwjeeomxkgltagirkpttnrrjpwxhsuqkgkvpsznnriqnnjqrkwsfwkpsocqifiidposezvddlchjsdyanyrqrlocgmbynfisowivnjpvzdxnbbjrbwiarwwkchzsmmquibzbcxhzyitssisrztubqutnvhbdzinnxusturlboqazylhomqbsvurqctdisxgcphsgbhkebnadvilbfydlywjjuabiapskpupxvaymiojtscsabfkxpldhkqukhykfeitpwrxfertvphnersjxqbnwdpsnfkebcxdssrydsjcdqusgjqtquppqqvdcpsqefvuurkjvrokfofcftsgbqdumzyuawnzmxscqtmshlojzqjpehrggljekqdvdnwmornepfuqghprhufhhprfgbnnjhueznjavvdvdeztjuhimnoanflctzarnrcwhztredvxzoxnwkhhpqfvlsyhyaciuhodcrvepovnmlvddavwxzdjthbplcgdtttdegwhvvwtrlvbthkfnirqbnrslftgpiqqzxwnubftqhgjibvfnrhislisngqitmyqqrmpfqtbpiowftdmfulpptszogibvzbvvhbapmvprlodpaxwbouhxufaqchknyduvzisqggleybnaqtersalytuudqgywqypovmdrxsfozranufnahrtrkcuerzurxiaisrjjjljutefhdhzvpkkgfoyzinzeexugfaiuyrunmvzeauhgtfagygkjzlnohfajopkjxzaltejrjazohbaofficlphpmzarmxytozgcarwwfyjzbljxjhycpojlxuqgkfztnownsynppdmoewhxmasekxeskumllfhgvxdmmrptvsswmpjhcxvfyqlbggtvarypxluwaiiovqhkqrdjqwnrumjtjeqmgiskhyjkjfjyvwdzwunepsmabwrcmqxfrixylalmhetbxpeypzffojnqbffatqyvxuopozaeenceutrzqmpoamjantljwjfilvmpbbrzyquqpcejxygfhvbzlonypnsdvkbsqyydqhovjgatvrpadhhlmftcrkhpfqkuldqwgbumwdohsahmkdjpxroopygltzggqqhppueoppejiccstphgawtpiudtaszytbltsswvradoopmggmmkeqpmnxffxwqgogtggdbqkpiiymsznnmhxrpxntbrcjoekeiwbahbmcnodzapwgspvxqqkibipiuvtxceceebanwfmwqaoqememnsazdiywywhkfxwqnxntgjawapcoloxxdocwgngxcymmtuynuyezbjwqcdmwsptylhjqzcwnmpkehoutlglklpkaeeutmbustlmogbbtiafuqikokcdpgdclcnhwjtbvfklnhjvubdjtwsherkpfughbnmgjugrfbncgpbbthdjknisyitjytyqoleiifmmnvdbgxtzizyhbyooitmhsoqsccylgrcacbxmorvpsfyxribwtyrdulqylqdaryudfxgxhfbuwfdeuqlwffiqmobukfwuzoijkldclkeeatpyvgtahqwlumaoaaktfglvcqapkuyzvyspwetuuxembxfxvxmbcscyqjafylgsbjreyeaujckegyogzlqulalzmuavqquqfqtegrunhgkdjpkiaqfbzgzuyybromdwqseirtndusribkqdbpmdukwohcyffqozbprbwcqhzlkspmlmscymqmoymxsixkdtyicwxvogyoeqcoafoxmhwxvgdtigkaikapmlykexiitqzlwoazwnwultadjjfiejlamwuawtspvseftvijwvharccdkyqkmcmpitfznfrwbhrrwszmijjobvvvkodxpjcsoonhentidabqdncncccmdbnesjovkpmipynbatoxzqzurxoczukqrrytswufxwahtehfevxgbpifoyysiuixvvdhkuykfqmhxfkgoatjvzieytagzduishllodqibzjjnvbhzqamacrtrrjbfotkbakwaenijjbajisinrmbqcjqdnvesqmstgeawxsxxeapryeaipoqwcqnjxofcaxrlgibxhsqiqceyzssfjechstmibwlgnxoqvezfpmnnoijlwceegxfoljalkkygkctarqfsnplvudijanzqptzggjaxhysjfrdhlbpuilynitneyjsubjijbcunycelunqdxajkfcrgtszkbqjtrmeqvoqpdpdomfhvgmjfgpaveiyzpcawxpjuelmzosgxwiwdkckoiffymftnxxmwsdaikmxnzpfislzdfyfkkaupkgozvktxmwlwdbjqjnnfnlznyhgjzkoopksksmbbugdblldrtkgyxyojqzpyoqsxpqbdzlzbohqfadqzzcqqicrnyssnnbmegnxxboprfwritqtfgzzvsfozjjvuyyxgggtnneebmmdittbvnyakjnvtskgztdaimarjxhxlxyzuoidnfrocqchgstxqwsaojolgdjepdbkgvdedyqjxkzhwodbvxilvzafyymkotolrnzujdndpjgjlzrxaaeizmjbrmtvpeirpazfjfmluvvfkmjxkossuvmqlwkpgoscacedpuhfhmhhqryxopwarxubepgypffhxlwwefuusbtohpphgxobkcculdysmwyeslpcnvlnvgvmhikzseajuhgimfvfswvqwezfkbnqfayggsagjvwqszzgorsegjfjrxonebzeyjwrbrcqjvcsovbatjyfksctxnuhaxumgsgeigqzycqzlbvgurwelubtkrhsjykflzcohrujtmkhesngogocpllxytybitzfetgturdlksjfsicbxcnatbfzcsjjhlquegilrqtnvcuailodplcfqlyohehsfccvzmdcdtiweldsnlfnhjltuvemnfybmbfdrblrxjqthxnkfoofvemiuqsrcbiwwqtwoulzabqqweoquwdzzpeqwawuelqzqbpfnsgsbyhfhgwoljlpvogpgrfnzjntxpitnzkipnfmevepecweiyzyfcxyxxtxqbsrctsdkcjutgoowjssenegkqtixzvyckjvnzknerskhemzffrybphsuonaggulffssyphvtsgbuboseeaowkupkzdjhvecrzfnqdicohwbpujqnslybkrggbqqqhyrpgnunryigrfmguasoxcpxxapwwiaygvsczibhsrcikhpredrpbytenzfcuyvzhvidesgnffadhlphqbzgxdkcuzywxtgpovzesujjbcrknerjbjdbdqnbrtnfvglmrqeqpqmrwqlfqwqdowdvygalkxjzksubrurrmbxgaktqkjugriejhtpoihktcksnqeslavtvdztkkoxbrqzkxkfunppxmxkqnilnlysxfqfxvaeurjbnkocqyqkqafkruujbanjduqvknsodqgjpawahgggolvwgcrjnjrfpvashwzireqhqprohvuihzaohklyfolomzctdepvphvdptyxoexvmgevqkgpjfgcpxzbeqpzgkhpmankdsxjxztnvkjyhpjvmfzbqsdggpuybbgingyixrhtohtznpeafvbvydagydjqglsntlxzbvuogxwwqcnpkclnkxdlodqezbnbsngqglrzdykiljlbwcqqazojsdmmotyuiyvisvfagbioswxrwdklfpsgorywdfhjiecoezuakycomhcclpcbwliikpebhdxnwkdkgelbkilhfetzhdqcydptrgqiawtqyhqvqbapiwvzryqnhlkktsmnzfwmnoiqptmqspcbxrfkhkvpazyfonuztbwkvikyonwstjsushabpymvdtvacopnwhostsktqulfysqiujvdgnmekkkrlgxzgsqiqvtydtyxbsnrkiaqnrkbstbkawzigqjecisuofejrahlepcdssjjvqmolkkozzymqusxlytgprdbcltwvsfsdjnslsbzudzcsfyvdtehriojvntzlyclbtbtfylodkbosijttqdfpracswmdeqjvoxexwlqescynztazemwanyxucgqdzwbojnwxpacxccglfoodbknnabwjlwrhkrnhrealipbnznghtbleszczvgxsoxqrrrfpziefpgvapnqzccuemztrgusbnazfrdhhcvdvttjtsrljxwexluandzfwetuygftvakluzqwcgvojlwucnuvzpghzcxpwpvkqrcqvdkxbubdqurbiojxqwrdaehyuaqfueljxdzhooxbqzczmplumthzrrtnhpfwdwjdgvmbjwtaikhadfdpetovvwwzgerytkegjeabxktrjgoozvciijrajvhaabhxfztidqmiivhzwprsoweelseeddvetmpfijhczuotkudhzzseahlidqxaynedhuoscqdaoknzwynhqxcanaezpspagjwpfpdpolorvqusfwwkcbxoajkyfzbzjsucrlgmhyiplgpkprlnuncqsguvwpaixzyrimdlsicaqllmyvfcybmuxsqtsbnsthqjarqyubmobuxvsncovyrofxgcrsveimyyktltyowhgorvlfmpbhcvjcekvvbgalvmbcsvhjggkvlzeviwoaogoigzqtauenjwopsvepkytvdpxdrfxcmvchidlrassrtyxwzyoebilfcctqzqqnsxyoqpfgrecwiaruhvbuhiljrjrchldzgrcethziyqtkdbhkcbsjacpjjlnvbzchmeemmczbqrdjuvcfelqhvicxeblnshwepdmmczjhqlresthwjdzscssdatkkapfrluylrdllvcqxkaqnmxtyuajunvetdyirhmzotcwseithludfbsfzvmvwnwhtribhprfqpbovyhkgflgliwnsglhadwpjvnxljiemremhdmyelhwdnwzphcsoaqewdzvnpybjgrawmapbzbhbzvaiuwixsjrkgqwkrnnhgztimevhovqpzzhrdyawcuvnrlaelptyybuqevrnweccagtqdnhsjkfjwhwqnzfenukzxzpdvqabjyssaimdblfbzurlerkqndekgrgppwnwmeamwotawffrcqkygfiyvhdjbmkbkrznzrabgarvbepmgkimkkjfwwlodusyjzwreadjpwlqqbzelonigvulwydjdfdacfecfzmcyxghfcsjfdxqylqqawzgkgbwlspivfbnujtnmdrdpeftjbbczwkpmchecuorfccbsipblciicrzydlgurhpdqufrhaktfdhnjvdwtfmueenmdoxpvrkgohynspqahuujikbroexglodxmvqjuwjopbmpjbarnovvwkjjiqcrmsjzfnqioboeiatepiuwxyhexycjpbnxukwgqysddyygkginnygfjvrmzbtdrzpbictixevrwfarostlgcwvqexlyrakpjpqhwrwakkdoifbuufiyroggrsjezkwivbybnymwkhcvxvthitfowbalsoyodvehoiyavdduuwyzxhpuvddamahvazqrbthpnlsxysmtktijqsdwvonvviwgfoesugbmlkweolrisskzxbsmerndgituhzvbfhkunbgjpymkkvtpppprrqspehjwnmfsvnycdfqfomyhdaqfjwtzlxbkhetddezadzhpqkgzxckfejmypvgoticwxhyetvwgvcbqjlsgpcwvvberxndashfyprjiohkscjbcdxdsdqnqdkdhrvpcidtswlxvqppxfiysymgwmzstfumcterarwxvdxhdnxkxvolzzjonhimjpynyujymmgtxfdmqpjndmmoxqomyifpcmsvycnxajfrmxahswhnyrppjzebyercrczlfozbnzjfvyiubrzqbumlipvtniiidiiajdlcboybzttfplrkmhljepokhipsmcquazrszwyirrmqiiwybulsshropakjwyvwupioxjcefsygvntsaynxtmqpjeqsqlidxrcmzmfnzunvnnlahdinfjliyfkaeazolubbfcrtvzaxohfjpzuuipbfgsrjjllvpqnhsxjpwsudyklctekaozfstmkmbxkkycdmvfjlgxbqgggfeufocoojfmwodmwhvfhsrtcudfrhonihvaodpjrbmlitkspixnnlxsvshewnokmexfhuikdjdhaznxjhgwkkrnmvunwprfvgpiptvwxnfdkxwjbdrqvusstjdtuylrlhktoiudvmatjkeownzzvmbdxplfwwzgasaronbdyuxazdddzpksqfedkgjdncanxqrxhxjsmjurodzylpilcjjswjunvwdeljjgcdrxhxlsuqntjyhriqelpicqkirsdlmypyazgrabakyganvzoiuwxkinbuzrebaqftawfpbqlmihyxoihfvkzdwmrydxcfyvmnhpjgvjylebvjwobqmfekfmljstajpdrgwrpqvwmkodpxigduborlrpkacnjkcabekrytqpnhuinzqvnnfqqzyjcvcsxhjmhsllfsslgbvtmfiynwxpcauirozsfzcdmadwgvfltmzrwoattnotnnssttdyztrxpmlqyzonmwvjuolxmlytixjhavpaqjibjmrrxkxmesinfhsrlnnldjwxdmdriyyewsmqxjttiggnxkkuxaejkrkdzdzwyikagmvuuykzdkiihlfshdvhsgrsyxmkayobefqaguspruzmypwzegrfjbjcfxaduwnlxpwurfhvyetjzpvpazcdkivwsnamdywnuekojdielwwxdnknhbmxfhilthorxzevvjvedxtrxhjmcgtthcrlxsymhtkxpztltqbgsiatrvlyyfurehokhshguwntfxtmayfcsdnnlpdjhtclricuquxymhojzlnicpjgcpldrxzhlxngkfuoqlvujiqhaahkgfjshlkdppwyoeesbgawqqgqfgskdabfznfcptxyemxvzzfnfydrqovbtbkddfcqdquabhsbhtvspcmxfsjpnsaxqjtcpmkgybznxmxiwjpcbvgwfrcrnafoacburtgsjtlblzxpizmmqhxjfzfxlhybqedoczdtwrsdsezupkwbmqxlylcplxtjmuwwtnmpfnqunjylhjaevxxwkidgtxlqhgywywjccwaqefnjqnlmhounsdbmmerdqowizwobzdgxxnzaidgufxoqggproigmcskrfjfhxsyclbmtvasyubkhmthyjihselqzvgpmpzyinlhlrootlbbnjszqkpdrcnfanwbmdktkvrwxlugqzdwrlqkurwvoeellvvhvwhsbykuduamrjvycywdiizeuzxkqqpiiqywdekwggifzgnxcdyyrsyxxhoomfmbkahdsaqshfqadipezpntvdjxojrtphqbxhsihuxaflcakhlgnjxxcuhvcxujipaklxxcwgmkdscghizmwqkpbtsbekyzpizfybaekhmugjzkkefmokjualmtzgzxrzsfzojvnxeoaijxwmddxibjufdgragpdvkydwqsbhrxszytupqjzdulptzyobemiryzesbmyajnqhociioqmbuvpxeylweqgcxkglopojfqhxntcgopkqddlbcqzzjnhaaxxjxtzpxnesvtlospmjaxmqnsjshnzjqspxbvspawibqvigkqkaraiyjyrhcscbmkofsdfsuhqovfxppqcmjokbpspivqsycckdqqobihhcnurkoxhyetgnvipqzumfpqjpqitljnkkqzvlkpznljjndipxnwlgnyvohvqoprhtjhdtpzvsxcislazybeknrlsaxctwoebgxsfzpgqpoeckfnigjxigidhnkrnefhrsvbydlvldjexxxxbkfhmsthcjygjvxpkfdvudlcrdeqlfpfwoavdsbprxsjshmgzzgkhbxxzkxdjzvwfjdmtqdsotsgawcpnwtbpfmtzqtrubtqtkmkvjspeqbwncmqogxrctwhunkjnechputkdqnuqbyldjqhzsmqguufrprxtogkrpofhhaqmnngpvnwqakbwgvlrkgmhpizratznkvalinarxmvcoouhyawkebpssmokyjmbavrkrzilfmoudpfdvqvpibygfsbltpmqyhyggbzgjfwwtckseloielqjylnmawexzydarftnbmqshwxfygraydlakpgjhsihvjjrqcupunkjfdvqrnewlzcckgffsvrqjgnudbqokszmnyyiaoduxfefxrizgbtgkwchofjqhxjbiqteujtmodvkrluvlzjoretruwspjzowqmgfxeufxmsusjgzyqzfluupvqjyynyicwsxyzvpebviiaivplketsagyxtgdhvuivfwpnlyezkkovynbiqbqyhagxnevboaansepjkaxfemzfivkzrzxdillrfvuygusaixyyosyklqiwemyikpjopnaynrfbayppbbnmdopfgpvynqeopbvuenmavkidhotibpxqscragqplevyhlwwtjlynldsbpzpmoydyvyvcfrdlqssybtjzpjrscibikqyfoiijyposbjqxvtsuyhfpcnvkyqychqhyzhbxqefjwqzroehlqwyyoijhyiowxgvuebmawrlndyqcbxpfsqxwuojfjtoipxbfhwjdzvgrmxbeclbocnxkiemmkuiaymiyailmgmwjidfndisrtwucdoocrpuvvdotmlayusenpgskyfvfvkimpuwjirybkntlfkmjdjwearzheiuoeqfjlxoazetpokjvwrqjslszurrgblndimqjzjigpfguyhprzirathwuoyrlwcttelfstfumsqufyawfcixzwbqfxqucagadbswrkdjbjvdvyaygmnkzwhzaovdzymmnxcgoheumzwdzjeosrdddxlhxaxqqxmjolrciglwkqnjcmidrcrtmydjhbizgvcsehrfdzxektiemmpgqzfhyzpodchfhpluqaqcogxadegwgpnyjblbtbvdnomthmjpagszxbuktoneuccavxkvkeutitdvwwuidwjyarbcleivhtkokzbiqwztlhncwazyqjrateuhnohbheerlegsdvprtulhldopqkcgxquqgijfcjiisrvgxvhsgivyoblmksrkafrxigwtjbfbkbpihnxximjepwnuczymuapdyhuapmamxdealmzwltdbeewmwemhfwnmdgxmxwltpjrbkctfkcckwxhdafotrbznjxpjaozfdftwjrcuxzvidxsbqsivixevujaezwkiehialogiafgtwmtymqgeyrmeemsakylyaubdenrxiwggjlnprmzyjpcbjuudfwtnitalxlrdfzqebbotiwyvjesjswajvutviurqpeespqotfeznjmxjphjmkrmyfixnpwojfkwxxaczonigwiydigwhurmhifwnughktxjjbapinpqpdkdsxwspzgkivbifzcphjsmsnxlmlqpzlbetutsfxaucsfybybmlifemnymsmigxtmjfhknahejdjxzwfjawkrmnzabvasazbhcanajxzckmiicnoumnvzyeuzpxxsmhspquvpxqfgeqmwosjhbtaqkazcjtzhqxmudcvlaveseipqnzcjpirywcownvlngdjytfimbjzoyaagmuhyiehlmyusywandhmunrvrlygtsanajcckxzvucywoevxzyscnyadvntypcvybpfsfppidcagwojmwefiohenvpyytsfavghbtnsplmrutwubsvsnlmkzgwyzofptqjfqlfrnpzzmhavhvbamifjqtoujvpczfgrotllwbnrzeoamxfmjzitvmhtpimmhqdglliuwfgozkfkicpkmoasjiuacmyqmytdiviblzklprvfvqecqgnnmvyzvwhwwgbmppelppneynocjdobbwpawfookxfdkcdxxcxewlkmubnyodoewwcpjbbkwrnjybqxyefssnxxyirvfxgnhcmwhokdgzxuduaisldlkhgmggvjwborxxrpwibzgvytqgbygtdiudgxgdxuiobleafaotmchismobhfstsjssrelyntgyodeiswxymqimtdaxuytlsfvnrpygifbkhthirilxcwncxfapuahqqlnobnjiiejyhbbxbsynbnybnyosjvkmyiyolkovwieqrrtkczxkqoxvaycwgijhpqbyuotpaqayphlqzihjvdobmwkmvpihgrhkyvhckmakhilkpgtnmgfpzhtnasdtnkxqbfskwcvujgftvkckomxjzxineaslnmjrpakwjlsbjrckimdzkucneyudqalkdjgeoivfjrheiblvrehliroalltxksehydofetgbhucxfqdkwrbfoosejkuvicgzjjbwwvxdednlgyofqcmiiraywergypkafommjeudivchfusmrhvurnpvtrkotwqgowubpwbenlnfxjydvfiopvgcnbjhrrgplsxjbyzxjoyfpbtmtrpgqkblvusvatpacwcbmrcmppehhdqsbiwwtugnfsmftwcbwcepjyqlwvhxaokljzurlgdfbrmftpjbfnbwuobasztaboyputeamcdtkjefkbmpdmxjpejxjmadpkocnwsofvvqhukhvywmamhogvwsbboquzlxgmrpfpwsduhrrzleepuftzhdachulqktwspkyauotkurvhqihzzmdyaafoviwxfzostonwsjtifecvhofcltfnfgjrvvbvjkqdtjjmdbdvblxnlxabttkwzbqymvgfekhpmheksygqajmcfyipjfytnwmqhwlhhyhkzbrbkgcabfkkisgwfwyvweajvfvfsjjdaooatfnsgjtpiqmwbidmzmujyywbtfvhuqmcbfsbxpukpmylgggkewnyechzynwqwlrmvolazrmqnsbeflubunnxjuutqhzbxevvgeimylvlbevnqewpeewpjrvzjqlqujudipprqpgdttayrtqjhzpantxkhcmbhfqberintwryorkptxpndziaruwwfkbmocylzldpwztqpaazqjtznorcoxusulbzoozggvxzknugzictcsxwwdxvqmnnnbtaeaowesblmutaiukvubtqpvhqwebiqbwllepagsifbmvrzlpyxxyearudvoxacmrvvwcjgwpypucaavyheenguoyilrkmdjrebivmoeppalebvsvfcprlkqrmjfqrrrftiaqqkkfhhwmqoclcacfwkgmnanfvchuytacdripuecwdocyyrqqcgzbsnirlywnzrtfkckdejtwvmatdbplsumvwpeyigxunafagsokjrzowsdtwjmotgseddqngxfbtpsnrqhwwootcdfyhebfkxqextxjbiaccweepiqkeqwmkdmhihxfaqkfompsxlalaphiugdkjwrmqglhsuabativwfxucxurzzndobdtldnrktlqhjtavqedlelxpeetjyguriaflzxhlvtmvjrnwzvjruyjhovjbuuoufgdbfmnlrcqugkcaqvvvgbbwpsttzblvcipvkfmahqqxjbrjapifvngdpvdljivltcfwidxjqfndgkcjvvtmvpbosqmxajxgptykjteaigmpviupmolkuxkocavrbiapfiocwchdzlkwmpvlwoicnthyhxknfnrckolzdedszmuntwnvhsplhfmceefeefohogjuffrbstsiktqqcvfxjzbhedelpdpmjdzfgzoydzkeggosfnstwwuyomaeayqzqfyxcdbkclzzlrdokbvxebcnbrsenzaesxrkrdosoitymlewfhqpgyeetcaoycndkyacvxjyrhhupcgtvtlavjgrrjcvktreynndpmsioyvblvmlfxbdmnekvhkiiqbgbowemvrjocidhhjvyofvhjmooasbcadfaospmwscldfbpgumkeamqzkjucuhmxexsffgbffyvqrnbqihzqhxqkcquenyznbbiimnwgafueayxebdtyfgqdozrkenudkndrtjnsrlkmyqminclorujamwzybnxrcxqmjbvroxppyklcpjlhpphvzypeqqeunicmuptovpkmgbtwamznebrsunwnxjvlgifuxgbwmljkmiuklcqrvhpkrslpqndaeggtutdkrnyyeqddqkwiaslvppvevdpcjfcyxypaaimeujqzxulytpwoghqwthxzcnvmihdmjedogjgqertlprgpagmuarnqymirlwtatbyjpcnazwuomqhzulfemyyacccjrmtlnxtcpdljbpaikvnxualjdlnqojivbwkgpooighaxgqbfvoagtdxzooebvrsdcafbtiexcvsddoxqxcqkndjizicagzgpkzjvuvzjrdautfmhdqigkgmumsnjcwjokyfdfpxrynsoqtylslajnslbhcmiqleanvhafmsrdeipixnfbiabzirqwdfkdgdkdsqgczndgwjqkfwusicydzfmefehruukslvmwncgyibnbjkatpovmlihpupbfxuezzjauragbntkpantzgwnkcrcnpgilglcvqwmuyasdqgyzyvaesofbnkofwlcvniyzclpmqkkvtwnfhujgvsycmozgzpnxlxdgoebmnthwkpsheagputppzluqrlvazribolyefimaxnanxxajkrikhzmqpkxlzvtnfipdqhcnmkpbfxyyepwguxwjmqiwvxsaabhfsteeeskbggqqkfkunlezslvptlnvntjkafsvgxrsieidpianoqejpehgagrqwyxjbyrkzrosebjjbnrptbzjqdqrthchxsfjsnfxwjuxdnneravjryinuztabavsnpqbyoenkegmjuybvtpfozufuffnkkdvuynmopbecavevjiyubvbtqbgseozdttgxdoxcrqkhsivrelbgojlucskvhidimylrxsgxelsvmwtpaxdpklvxghzlokjiqjwircakpdsbvhzrhtcvxqwxwfwvowfmxpysjqfrbwzukgcgeikhyiuswsrlhkmwcmfiyabqxjeqnmopcymqgzxqnsosdydxgetyxezalldwowqqxevknxtlbtubrtldypjwrygglfrrnnalsrmokrqrwupwevovghuuasrcxcyjtihfnxljrvrxgtohrylmdhbtyfeuzcezroqgccvfkupzsmpklqtkerzorbukgbbehkxkdrbcgkrlogxafnzwcspvseolbrhqqdnfjyrvxasddkrbdjbnhcucinpsmkftrktjsxxtvmarnzltqrquyyjquxjkiwntlodbqojsvigeaaxwhyqhokldxbiybdzdmmhndkwsoghgzidjvnlvdtlemnjqooihgymfgcpkureougqucivcceguuymiwykiiqarlzpxcngynnjexxblbolylilfbcrkawbsqrxjbvptiilrzkcpyoiidcengwkshwrphmpclrxtlrzoiueclkffgumlfzzfildvphunzqyhddzaknravujombanaegwrpxjewaxwzvnqsloiahecmtlyfrtvrhkyqbmqnipyurncqsjdinubexizaeyshgiuserxjlpkwbsssuluphugdvppiymernvuwjvdybpbrlgkjnalepaakiezqdcybmplajbezmxnjleiiejundrwhssfubibdtjwdnhulywtikwzgtkazmljdlxdofdaghsmzrgnsiavxwetmlhybnmfrhpoqotsetupiacwgdnevyoevbwspciykrhvrwuwwdqhwtrktypvxkzlokmgxsxjglfnovflmjekkkqnjlwgdlmqyeulyxsdpzrawpmykdzlikggswfkjlzbwrcmpnjccpcehetgdzrxfckynsdtdeifcflhfsyzjyhqfbtgyngxaalekgyourghvwyhddkcobrkelrpmcizvbkijfztxanumrfdvaytpexxavggdjaqntoxwxnufzjudnwjwzjqldhffmkrmhkblyfrzkjtpjaflhubwflqxezzbgyiyrnthyqmhvgdrfoqjvhcxgejylfzpkxreiqbbdyryofcepnhnowgexghtfcdytvzepkspaewqdlmfrijdzwfwwzhydhzcgcovwxfbfeclnnaynirtniiakyykonmeryitpcqbswwholywulyjkktqhkqzevghigiozbjaigzjntuzwlmmtrxcwidypbmczjrclknofsihtjewwwxycnetdfmdxhhebzlvxdjjqjhqwpcmmqmnumwjmgwupldmeuklzmhjqqqkvntkhfmobnmnzxezdqxeewqmhzchfvdjtcktlugimumispbsxnworatokudsmayrbjptticdiiwuxxhhqfuuctlqesgwodtugwcpdirrmwnltdehmhqbutvgodcvmfheokboedewqndyefdwcsfhskuzjnebhtzhczsedjjyfgmyerhvapjuzclwkiuzwtillimvdcuygeechuwiplutamdqrycapmwkpcldyzkheoesiqmlzyhnohaffivkoppbdxckqwsjeptwfmnkkqxsijeubhlkhmazjvufbhsmqrjooucunqbqgfrdizlvsvollknuhvxtulkkvoevylqfftxxmyielbqbsptqkqqeiavbeumrtbffjdfzlxnchuapzexfrtiqfphgejfklvogwsynbxyhzobtewirlifugefalhvetfscyvbcyrllbbgbvibpkluopockqvwhtojxtszbngjxsfwetzlzekhmddxyyazuqgomgbapzpyrhsndzznnbciortzmxojflsyaxmhvayfgwwhsqdzfovwswuilhtejzbxtuylsdnarphuvmvmrbuyurjqaltdodujujsryrrddsfgfgayxinahhwoezrkqsxedwnemazklsxcalqwgxoaafrnzlgqnlbekapnidmlrfjhrnolaesxarvcaazcgrttsiklgnvcwquwylcoiysawwzdjjivdjqimpyiaqscbvvdevtehacncmnuybpmdledtzzfomyogosmfeyaaqkfdlwpxiikavbwpykmovyympnrhvvccstndmufzulufdvajselggkltlaxcjpjubrbleceqfllypvdbkixspnkfhxtgtewvzvzogdlykkbxzrhpiwqbxliifaoifabuqhhyuylznszatfierthikwgpwszmyfzuhpaudlzcwqvverkctvyvsvtndsllksthreoywmormynxrnuxirsirhynqxeqvlewhzjfbhrvypxsyaarlafpaqxrvxwcxxymjspferaxbvonaqoptfqayexlrxubkjkcccajxhiauwlrdzoxhjrygfrvjjhbdauslxbutyjgdporleaxyscszxukfwqgoiekhsdheesulyjujftcuczokrcuoruecbxsvbdnnyyzlgrmcvmhtoujzshtttynfxafkjpauojldlyzrrrfqxcwpxiaravrxrhmyhtazkxjfekegloynkfwrzfuovquzhnxvyzlwteqbktsyuhrdsmnzsjmnaglaqzrfbdnmoscwuajczbbjeiiyjfswhmxddiqwakfffxmgcenlkqxevavsazcgtpqjtmfwssozlhkuhjtshmtnsxqsmixfjmoidamiufthsthgyylkrgrlcklnsnyxbaxpmlrvfpjdekgcxdjzeioxhzckvbaisozoqcdmabjfirualastxsgyehcjofkyxorodmisxhngiqnpndaldnjttbzuuzkjebtmidvrjuuqjflgpgmvufextyzdphbxicbmzemnzlwrfzlxpefliyacmnvixujibazifjutggmitnjsapvzjqiewrnjzgxaoigrkcxgoeptqyvlymsgjdsfcpceszdhycyfgtmvqokeotrihjaukvzrcdehigmormxwccfvcagggpkzumaczcrckydkhhjtvwgqhwucsxnjtdojixkgoyqsewwncdvlethfxvvwxslswldrfrcwtdkuviwrdbxpofcptcxhbqosraknjdbqfzwbxyfiwpulpjsolmgozqtreqyzdghmsjjmzuluglkinrohxaffiveysbiofqguysujquuhfzxqxsfjvfkelrxudbfgfzwbuphwrpiuvanvbjqxmzmndkizguekxykqshdnhsubugecnypgqchghysvblqpaubcmprlphilpkybldixeccntillymgfcrcstnjycohipchiqghqpwoztrxsmkmftvpwnjkvvxbjxsvaklawjhjullcbfpfcnnguxwqsnywzbwsxsostzmsdxwwutdncclgokbhepvjrakitinnybhjjpqfidwnskpsavafvwmiaabodboacuokzlqyjqiyxkgxtsrtqbdieskninoidyjtxyfdrylwflynlvcdzjqjpjynvsgfizbcblaahtizhnrusykipetbsehlzpboyckikrnyaytzjczleuzcjfxaclxpvgsqajaftwzwofnajmcdcrfeyrnnwynljxkckghstdwfwfehxzzujtjvuryyvxsqurqqxzdinhjeublulmjbzfbbbhxbzhfshqbbutzzbnsgtdawivrmvijyrznnfoamnnpovlvutwsfwlaprngyowmygibotveefammvxlryzhqikvejudawactoxjgcimelcypkaekvbufvqnrcjgtldahbuvebietvdleqhkvvyyrtgpfhsvqjdziqajhitvicdtzuphnuhejhmbhkgjyseezrhjvfresfogyrzkbvloylwexnundwsyoaymxfrxiqccnxragciabesjlvswleizyholiqahwfllilzvyqbppzbkokocazvgeiexnkhchzfbwodwgwbnffbgzbluquujmglavwvpztubnsjrlmihzsegimoxnhjfgyxhyxtbttxetfhlonaenerkkldeqsukccjehkunpoaqbmhfpbodudyubwkzseiwyvtddqscxdgsasmencmerkehiwctangyuvvcqmnniasgdfyiixnczicsmfonuaspaautsiwcwojtuxbnzvdfarrrqxrfhejhafdwczyhahnuerdkskfxskkjnbgdwaxndafqsnvnsuvbfxhsibcxtkglcxtpwliowtznlfunudbagzvpwuzidzpxmaphkhtjblfkzbfdrmgtcyvkgbamtvrfhsbqsboumodwvgrtatxuxmwptowoilbcannceiertsoctzuplejmfwipdihmyguhdwvtpkhwywnxavypnqqqjmlmzidolivjywtvtmhuujraqviyobyuteyubvagsppxydlowehtmwlqcymdueamlgipxrlwypememoqzbqvwnlhbxpynrtwvokyhchhyfkmsubdymoibvijovbreanrondpbnaqwcobmaxzvhzevoiquokcjlsfqbucpphytfabqfqoihblpufhtccncbvforlkyttvrqewawvexhjwqokytttowgbhgikjdgpatfjwmklzumtsfdrnskeaohexxgczvobdlunvvminqitjovssxrsmtiobitvmufahgvjdmopavwqjovjqalqadmunlbvbfrifvtosinyoparajregpgjpxvdjuihixfmqjnbwcjlgocxiidsnurrxbocihyvrvcpihzzrpzilvhewavcuyghthgwomtxfqspjtbswiwafmyefundhttgsqwxnrlyrwtrfbxfvbxiggnuewrvrtnnwwyynfixpdsqmiuzzksteogqhejfiipoagfcbodqgcmobdqohgtbbhucumzojpqivenadunjumgqxeqreaykctkctzbnfpcbrvhmispdoretwngsgjdkzflpmtvwfidhqldydcjkiikgyofngycrijqggycxthbhhdflmcqoiikfltfchtevgfzsyhgmvrurrkjogmzvazkhyjkscydredsvajxvzjwnfzgzlwetdrqjsvpuuqteutqzfvayyqarxkdaxzrbszspwywvnqbrxdbabvxmypomgvknblraizsghtbdqqozueqdvjtomaxwonaqzwehmxoxwtiyxgomnzgseinxsoxuupgekthxokntfwqbdxsgjbffxhnenkoscaknacppqdksdeaohdaravrckjzvioclegtqycpjkbvqpqblapefpnxffqqtfzcxzeorwekbjaxmnusncctsabbjnuajekxbuycreqpypdtyhztdzouazvftfqiwguqaupalewtytiviiplfgvubncvdypleqqercmjvmyxkldddopdaxcwdsnafifmyfpazaefnbryyozfhtpqccpznveptwzzqjqvdrbtatphitdffvihreuvzcqppftypjglnjzmauwnryoxlvcppiadywxgowzsyryjgvnlrqeuvxpdbrjermdakganswpokhughscjqmiciqiwkvmvzxoxncntaygdbpvfkrpdmtdytagipwexaiwywqmtmdvuomzaocooflewwxkklwrujjuazfpjcvqdusuffgrtmjukomactinzrbbccugtrqbivzeaafujjznsmrauvkqxbbfwgxuxujnegnpdmkqicnpdyybafrfcgijodnnjwtelwesfnaaappwxtnwbouuptrzuugtwjqmsylffyfrgxdfoxyuwnatyjofixzojqczlzxsvfsltauywbpzhpntbsvwvbhfdvwczikcrurmpacrbkcoljrqgnanzeyqwkcdeaeskcrqddbfzppgbqokjmqvungneprdquadsygsvtpaspqgqdcgccslabtzyqutdpjkbstmhuopbtloxpqrfwfgroxuczuogyzdnydnisdjoigwsltoqyvajhyksxmxrmnxtmwtlfrqvmdmhgosigxeuxokwtqcjfnxehafyfzheeofrwatvqdzglqsgsnaaclzevnqayspkhtoxheryvkrhwrfonwimtwslnhwzwrszeuucaxnrqmsjyhmbffmnbxfkkkhjgntxepsxbrbcxmbnopdmmexvbhuqwteislluezbrtogmxetcrhsnonvkknrcldybbddkypxupijizbgyheqlemfitrygymhjqhitxafcvyftwzyvvfrycmxhglyidwyvzsurnitkuetwxmffmiwgvtqsktfofsowvtbytjpdgzqvfthbsfvljjsoaqlzgztlbleslcikzpeuqcahbeigrvgfwyjiromvdyywlsgfypmneajiepqpxamtojlnlpdqejtxhxjzngfzzqixzwsatrbpdkpovzprsztzsezgtpuiqjuosgjrlxfpdptkvwppwyivkoyxuwthemllludolgnmgrwscsptghxwobnihhhmamdaoazchavpstmjkzdibwmgpzghzgpbxvusfancguzfoswvczhwuynibuhhmgxeegzwyikngaahgiruqhskshxckxdfatdmxitiwwjrlboolfwnyovpfmvsqymdqrotsycppxyqflztjgrmelcwplcjuuslcqmdtjooaniowjvgrjureondeketfglwkrotfhmxcxxjufyyivpzoynjkgzeuqcrdjnuppvlojiayqjqchrkyfqzyriobwvutujcvpmtsktdwipabakhobgaqjzsftlcwfgqnzwonxmdpmvnosepvzcqybtposubygimjwzortgpgqbdilafwbbsgnqbxsykdmvzpelnggajtdywanvqcjsryvxndpcvrydtbekqyseiompmrrclfskmyjekbmudftwqxmymleluygktafqedzhueuooduwgbcgegvlezuuamzdkkztwvuzlpcoihnqorjktsdhgjkphzhknbbboscyvnmiubfpouoqwfjqhareoranuhxcbhcocdcsibbwppbahwpauxkskwtclnidsmmsbkustmeiyabibxmhovfyfhrbnjckbyhicoucmgltljsuctgwmbkdxnebcbfadikdhxnvcemqisrfqwotxudqnwbrcaixwmzhiaddxmwhhqcomftrgrmmcfzxvjbyzuzzozwieiknklcnximcbsuyxdoxcrudvucejtxsrusajvjqsthzqpeenrqvguywmpflsvvolqiasixgmtzrulrzhmcylqeevmscapufnsknbuxenlzkllquivrxixkvofawrjrenogfjylhtrunsbklxsbhotrwqsziapggdsylzcslgqnglynkocdjjtursepnkgxqkbkfufhaibeamrwjqkjgnbubuyqdhxyxaedzbufnjohoctjtqzfvjrbemaafulekcmkobmkocjoaxhvakgtoohmxxknoppoxxohswvobbqeikhxmsgunxjebzcnefsaocaycsfeyswyiwgfjuspoxanstiwsaxuybkyqhbadinzyltbvbwhkmnxdlqdbgcywyztpmxmplcshcbibqkxglcrwqisdaysapgvvppqioajcelfehpcyxbvkwsoorbrtyptmjzmhrueoqkyncaewrtddeuriegiajnzdmbahpojtcfkwwoadeoowdzjnnlystphgfuigxleoveyuwkoovcsyziahkeztnmaattbskuvogldtqmqaesdzgyetmavewbrysgxzvmnenyphnxmurchqqibfnxsqenswazetlxaxaixeixvbirhkdxbrnoginanxucndqnshshnzpwgwtdvoutklhlboksnijolfkggntyinhjbqqfihvdhvlbtcharbthtwtvtfmykmghlzrdytvooikbthmlimhndzjbkxlwlxtnhwsevhdqpmbyurukkjnmzddbvhmudwtxtqdwkmzowxaydqiytmsogmmvfnobpdfzwrkmhrppedptyfnlxskqemvfuavukyhuchyarlrqviyvczedquzhtnwmggorkbuysboyrtvokilhycvehuhojrbavqkzcdzwtmqlitmuwunawaekdctnvzlqaszrfkghjidkavtlurmgphsgdheobacyvqdekblakxqsossszvdoaxaewqspbdzuaxetorymejlnzmeyqmadvkjpkwisfwgojqzahjfyxursruxjtvuxfpaokipqsgrdumopizuqpvmidlkzuakudixqiemzyceuiyvhcsdyhdaixracsgbhfgfjefoaxnajykuogxwvnudasjwdaxjxjdprocdfldgaitgdbbfklpflitqkcvqgfenftfcxjahtdsjnkabdzehpcxvkojzlctfwcjjgvclimjuzscijzmfbmizmrwkxftpfxsobacbjbbohkuidglkqlcobgygmlcnejenzkzgczpmungqrsvbmlafzrcpdvvahldpgobgynywankttsyrndiplmvblurfhuuqwfkvxcjhwcwrqrznyzazruyuzrarxqdgvckbcgcybzclvoiaqmgorjgtqrhguaqsctvwufdgmvbtxlaauujkzjfenkrwfrbylitovebyxkkeivjqjvxtydjbthtpvwwmkzonorlqnknpgtycxrszlhwxknqxxswuydhfukkjltzvbhegevydilhmjqgtwczckcpysavmxtkzpzbtixkctzbdiqfekbayqtofzfgiihcmkgfhtabbuwctxltovebeuangvcdrqfibdbrwtysefygizeluxxcpvwixhbuvxjsviohcwkucpbgwkyegjztkufyauvbubarenwwaclgwutottlgbnioycyabluokxtczhqxauwsijrltmwzckzpblfllkvvajtaiyjitpcthuqglhjditfnzznwdzszxjpizmuwzktvzofpblkszjoiluvhdaagziymfzjkktovthjqgfdstpcsmcylhiskpscxphvayfprbkmzhximhjwqmxqtpmqltbsygipxfvecbncdxudslbjcryfwbcayzrkxirtftjqxgnvolobdtvctntldpyudctxoulcohrhoibmwmlplnfhukspzbaxeeuytpckhaczgbxdbaqbqukjdmvhemqvayrdqfubqgkbdrmtveobjijpvqatcnwxwbgkwgchaqtzyjinscgemonrfguazerxvtazvknsegwljanhwdijjtirymjaxxnbqxbparhufdtizdoomfzhrqqopmwhvbbfnvlehonwnetplnynfmhhixsjgavvazlvwpyqjsejkyfwluninqabegzyiyzpbuaygsyfrreauzejiouedesulpgespipqlpqzyhcbbgxtjmpzzynwlpbbfcxbayyghzggtyieelapfnuinzxlxxwkeeyhevidzfrakcwqejbfwneiiribdfoglvltmsaljxqcgrozzoybsctlhemoikqdbfywgehjbryncamegsphxdrggzrvkqrqhzjlqvhyixnqihaaqevopikaeiucxnmfjtqgrtqhbjrkfolhzhkeiudgpmrzwykebiyqpnqktpkmvfiaswfklrkgameivzyusfnwyfcdlotkszcqarwzpwvjasgvjbnkwfcnkegwkcqxfvdifdtmwyhbvmgpzfkonzhiqnuzytdvfcvxqajbobnintbjncflcbkkcaiquurystdupwbepoatqftqjmdpqtehjrvjuzelypczjwvnabwefagkfqvevevyqceovywoifjgjqoffucubkuhlvkfalcorjmiwosxsqpizurzqeexxcfpibjdgoliqaivtyfeegaodfnwnsqidugzohfrbbbtmgnjplitubhygontddfsfuxuyylavjxtlcmhxuvlnmeruoxdyssmnieftrlpragvhbugekcyjxoadhqmgkjonmpvtvvugnoujbgadhpqglzxccstavdinxidbrpkmcjjrjbrbrzzcbmmcmnqwqkefcbprlfqqpxeztlweuvxexekiekselbfgasamijnbzxjywutxxbrqoozynquczqvwbcrkzkqnstgrkcvezqogxtrhxomdqlbcfsqfdfikrnaxhuhssermgehknltaijgyrllrocmeqbbspwysewyvohnfrbpcurjmjyfazwkfchikbcodygtqrjijtpotkpvdnpxofqrlpvzouyemjxnzwwizmrslwfuzhtajlpmanzisbenehpjmzrbwbmjuuspyffosjnxkvmmsxxtjcwvvbyobnidonbcztksukpekgzgttczqvzjyoyeicyqxowhqqvmrqxvkvsjrmiyrenfxaaecvxnxsoxiqkjnlasxrabudjecsssowduxlucwurektxcknypeskegtqyycbefxawrzgevuprwffcxcubxtksqgpvburhejmjzclnwylknxpjrtqkqwmphhfreczdhbdnfotebrkggkqwfnrfbqgxshiliqtpdtirygexddpviknysyurlmahjouvpjqhfecygwryxjqyijdvxxqiafcyjwjhbdstgtpvqbzedwxqopqnlzkgrqxnqwiruakixwjlcmpteuqneqgnxelqydrbmfipezaomnegzxtmufukxftrmwdypgvpjrautjevnfzjthtqzhdkinpxkrzrfoacckxjmstpmrcdsbsafsctirxjaazfyatbagxbkneaciyrpfoxjxfmuetstwlhirjognfuvmbffwelehsztrdcmqvgqcmhkerkqprxiwbdoldbthhylijkrokxtlbrjemsovmacxrjbjzxnlxbdwslisqlmklcyvadzbekruausepauvfmthzpmamvwnvslavvtsyhryvdmaiqfitjcpqbeegpbuahbsbwpidpsmbzhkczirtiwhcsqfpxbdasfvbzewznugnxeesnzhkqntwhtbuvypolbznoucthsogtlchaqutbvlnnoaguqyzytyfcbuypoksrrtmqtvaeroqptokvzcdqkcslihibjwvetoiboeaurjrfvtagnlermrkqwvtiukgyruxwexgtiliwbcsjibkpcwhrmdlpamwrzudaahcmqhfoqtgmbancugnhytbfmbfqxhpfbiqvljaroxdmeuzkkctpprcaeguyurklfiunrhbckrycjezzskvnhvgvlpxdswbmgjqhiejijbouwjrbkghnukppddlsevtwkzrkysimtqmkiclbauoyizrdrrccupqqtshhceootbomkrfzwlqefqzuqkpljdvkgpolexudkupwtwqjsdbxpxcnuzqjqmpndxdssmuazbaqhokkehpxiemenvtutmaawxebadwkteybxntppkbzolspbphgmgibbnoaeknyzkxmujdtoyuccotpoarjuauhtkouqyfvxbeigpwlhxzadtgtcafxhgdajjbmlfzcyebsaxavuwapevkphdylivemwbciuslfxnjttyxypllerjrkbkaumwngwrrgvujvwswuivdjpassfawefjfjptbpvtlyztpyrgbeaxpiwzmmgjmdyuncwyfooiavbbmnyrtngqrulzrlkhmbtwgkrrwrztfoktotgoffkgsxmxiyfatfvwtmbmfdagnxvizavnvpkltybqeqtytnrvesdetnatjsxbpcclllxhsczriqqadmcpepafodmtwlecbepgqudtcwtpwqrdzofshxtydbjxpqmrrhwhpfshttcnlnrxoyfwntdouhazzcjyxouliiiymomkrlhtqntgdioitzseblkzjrbqemvpaksuukyyshmibgseppaxpgsbklbyhncvfknwahmgyunzbigmdzodahgzufortaqzhhkmnnnzxkhofweaxpmwiosrttglnrzrdgmnybdtydzctddyibnhsopnkvohcpqgzirvwvmraizipdudhqmnfdkdgiyqozbmhbzjgppsagakfyiqzsnkyiultqiacomevelvwbfxouadajdzkihzdjjbbvnzzimuaddlifegodckbynmuujqjqlqmethlmauupmufwslettadjxlzsnaaszdgnbjomrackqhcdaawnidgoezklsemvnnqbjaudsglwnejdouyuxiecsbggmlnorjgkhezpmyxrymmizxfxzpxagqdyosbfngavqzgylhjernalpljbnxoguxtesbfzsexxbnuxiazgvfmfkfxpynftqdcoenaeriesdhboeosguquqnavosqwonuhtcusflvrzeqrxamlcmopasvfetrykgujovjxdjmkcaqejjhezldnwbopmoddrdwftnqdkudzhncapeiwualmasjubzxdahzcjkpuqvjvbhadzhculeazfznsawhpacbydqxbmzdsqkaudljrpfaaegunnbbgmnmjfyvwvucubfrjerykbiolgcsvbudmmunbmsnbjywlfgosgpenognoypgoczzhfrcxzaydcfksudjawscjyurqhgxlkqsuvdsibsucojelvwdpjazxadjbjhxnwwhqajdzrxpbqgnqfxjxhfkptgheirfveitkscsrgthkfcyzbyeddcufobsrsdjdgnptauonguwvdqbtouhoggywcimvxtposuesifodrmtndwedsxemcdxypfmcrezdkapjpcrtfvwsrdcivkyovebngiomkgkiickompymbamuzvyvdzosnrppfwfpdhpeigttolgbikgwjjcsmyrlsyhmjijpehrcsvjbaxslnlyhaxxpcpwlnaxcjqvvpcpltcepcfztvlxzpmhgqbeuhpypunzvbqbpoarbedctvjrcwbozftexyshsjjclfwxrwcabgpraawsejisjnmzcojujnwlmoqjbxlcznbzokwnabrkjovfaqwhpfxewlndxpptahuxyhfooyybzdojynvizywdppeytzpezzdhnubfyhsuznzzsmuzeloslyocvfpvtzblgtqhlifmwgojtftjlxmfdzelisdvqdhrzwtsuiptxgyjggbcjxieknzejyvqovlrvklyqcusheghxdaoydoycjigjptydonibiorzvhkdlyysofsbmocjsyauctfhpcoqazpifnnfzlyedvsglzuphghprgwsaealnlrwrnpljyyvwbmkavwupmmlynchzcsjwmbqscjdxtokpwzrpvupfkmuzsaypjxpuhcwlklqblzcgawyzugtlpqerybgxqlezdmrvjjrmzdpzygrxuiqbiacbwhqwhizlqokmhecethliktdtvsnqxtognqtsoyowyhzsthdwwunilpgkwbkpplfogyruodwjqcgutyvdojzgpkscdhjgcuhlpezwvwxzhlqzzmsfprxnldbeiqpwjorjqcwemqhpmaqvtakxnwkrcidkkiusfuplgifjfuxizzuxjqkjdnimwududbyxbkgkxtxgtcksusyazmatpfzhhhdwkqhvzxzquaeldpwkqdlbhyjcusshuirshjzktjpcqxuofqpyimzsboawhxeodkjscyugzwwxzfqbvxmxvscvrzcvxwprzdymekugbfmuuoncavydeveavtctqivueudmhqcxapxckbhjoylxkgumjiorctzdqawdnwrqqzkmbbojgwqobizxotdctuvmcjsmanhyowbvntbnzwhsuwgszwikxyfhweovlfcwpqfuhttygaumablonxgszsmmhrajgwbjbdetrukjbtqvsdhmmjvdlqcduszmwkgbdtrysnlgcqjlfkdbcinuwzhuocwffkbytstowblwvuhqtfudnnghuyataucffmbinhdoczzpjwdeknfuxznudjwiuugfqiqsefltneryzqkhicecsnjwselkidhxehyclfooyspdtnjkayrptbhmiurvdnbcwxrvcgedjukuhgzujzaqyofvraiafsyayabltgbfmepzlqumdiyhtwrwqxvlyhnsjcdygbgmvgostdmvtaeliqzekibokawbwevjazmxizhxpsalmcmsyeqrgotelxcsuiwilbtatvxiybczsbamnodehttsrgcsupnrbbvafukhkhvckcvrwoemceveqgkqdxetmbvkbssuhsfmcrxtnflaiyfapccfmuvvjfcacusxyanjrlyjsdhlaqwjnfrdkxpqhovgfolfhqzltzivkppaslllpqntgcegremjwaoirvzzfxiowrlajmvikybpeqziezyugazhgekccksimtzwtucysavxjxigsnirfkskhicyolawqlscpunnhbzchtrtymfujdvjayigxcsrbbriylaaahoplhkhqgrtdlafrckembpqkkrknnvandyjaghtfjemttddpszbixoosktjempbppzofvujgprzdtxuqhcroaghvhhpdekmitjyaikkxysixvrjvhsnnlqieizpspdvjlrsaibjhuzxzebfekuzzdfawrgqysdclwsutzvopzvfkxaeguotvrmtjtjqgyocqjkuurtxlafcuxdjkwylduhamipxwzmhiurlowkqhqwguxhlovebjypfsupxqacdhahhajvgerzpzqkcmljsudqrudqthoqhjmfwjslyfnuisvyudwaoftedecdcqeqiskwmrrchxvkgqhpsbcfsdlomjksymbrijhifrfqygzkzqkpcmycvmreqjxfjfbpgjxipanchsiwjyqvmnkxzvshsbquzyrtdemsnagoymingflmydaxcgqpzqnsxmnuhjktmiphapsdcayxvymncrctmtarnqutknegizfooifthajgtdvkagyclhrwvvkjqfhrqxdjgcnrodemqwuhmledcilwpsjbrasicawivukvcxdwvwxwizvxxugkskceixghkwdhuylfyebfvxrdxxhokxmnndhottnroqoxzxbrcdmxddgueczajmywkxumuoxyeiduhrgrdrifkktagqsvnwljfimwvaspietuzgejrliksoookqbtdjcnjexagroflywnjgyzygpngxwxduebiygzldmpaqmwwwmpkvevnibuiqubqdagehhqrtmaoosabecmugzazaedzirtzxjavmvxzgfnjntvhhvceoxrcmzsgoobkutyfdhbdughaibdknekvpljqnlglfaxlcsjddedxfwadsholyrndebtrgqajvbwytyxwdmxvxvoggzkxckuqnnmircbspuyvarqxcayyofloclhcjhsnxwzhxkdplbofnboglbufvwydozmksmmnbzonclxbrbhjlsilffticnuiksptaimxznnwpqmspholslqgnuzqtqsvoujuwszpliljexkqsfpltbqlhczpiqrcymfyteipxvhzjkmvxicsyemwznepyfuaiqvdgvwsybfclruquzxoiijqrjudogtjylnoddsyxnepfbozevtvqpgzefsoahenosgjuogedsxfapibqoaejmgntmlzwitzviedkwsfgqcizxmctrugtkmuixmphlldoqefgfkyccqqtultzctqntyztgmemljmcdskecegdmlursycrqodviylcwszuenwvixntqpsrnlgkedsuptuhjlnzolnhgdodkwdezlaueubfmjbcryhafsutwbblkvyuaqvpzbwprmvvzfjenwqktxyyzlvnecyfggkirnhgzgtwxwvyrysrmkirwapojsupvuhqpakhebkhyiyqzjqvbwlfretsujecapborcaqnwshmjpkvxaypujmygdayojtogonkcaywlhqfnojxlknevhtomxxbfwopgrojxpwffhplkubxrptvxjyyhbiwpcqfboupnriugcivpjnwhbcxbjvhbcileeqrmnmjlhipxmyieweidkkiaeyffybggtxavenahmzvxwvvdahwomxjzalbkefcubdzxpvjuxliugbrznehiuxbgkerezgkgxqlqevrjwiqwoniwxmnampnqhhpszfeovlonkoiqsgzdscdkommkcdyigtwmxwxtgjsoztrachljoixzsclawhqylbdbfmjuykeqjkdphnmkjpdupvarcrusausldskmhmrhcezruslgtqyenvqwgxalxmsxpqpkxozgvjzmjeycvmdhwuiturkxecwhmgybrbuxjfvnyhreuydbazvqspcajuvxxlnjcizipgleafgkwvcagwdlhxvmwuknttehupajdpgruiuhiwhcedcotmmnpmcnyxeejsopdlaoipdtxsrhqcwmcbvshmtiqyoncvkwyxkfkixkukevlgqejfubpbynmxosngjtsusqhqsprdhyiqlasyuoqkueffhcsdkhmnfdhoiizuzjyuluaxpiomzbqzlotbumzzdxolwwjaslbvxryxoitagayfrqkuciloobsklehmhntqfsrlikyjnrjorsfityuxsikvzjbujeeywpjzqgkzybeiabipqgaqfgudmeabpoljkxqwqjfllsqmjosgzmcdwwaxjmxmshlbortovtzdlrncroynziaygwfysxmmanildynausqmnfblppkfgywundiiveijcxtkiqgoszroxxhbcontbtzitfkxteidykgpmrfkagpvkardurivyheeclmbulupuyifbjbyurcpyzjtvwylxfbtfmtxndqiaosuupwoedrtxhjjbqyrsvchhearpnwcgyilvgalwqfkeuuollfemgtyrwkstolsjinksgnznpxdmnualmbbwobmeikuberdmppnuuidglsqubkwtljbrmkceewdzlphvbjfxihfwoviopbzrxkddtidwrtvloredooeetcdvavvwczbgflynpckulcqzttmakkyuygrzstolhsvtnwrdlhjaswflzatxihpikxyjwsvtomopdpyxyzpdvrzdddppzvigxvemaifcixbqkfpdjwqiaqfzsetawsbbrdckercnjpclqwfbxvkztdqyscsggblkzkrqgexfbnbsvutuqnmtxtzsygdbkfpvqrtwmbnkbjrnnuhyptipvrnhhdphdayhrnrxkcmbuheaznfpapnwzbhxhwiqqodejtfmrdzwqljcybxyynkcyuewwssqoosmltuwspkbnyiaxhveujzqgcflveilsrghuysoxvsvkxwtrdxafzimsthmzpacqfhkcodcicipavddmpbalsmdycomvtpyykxfvgsbocpdorfrhdtoqzwpoftkknhmadncdbuqakzmewyjriyrzipwmeuyiqpndtfmfpvfsqsaahmwpniljtlkvhbdzngnjopdkxedrufvwioipwbszhvyxgzvrscuyjoxlwpsmwpkjqydaxmtatxezhvcnfroznfhcdbagefxtycqssdorbqhegrirzvlzmeoqzmvlrkfenfgdjjmxgsugdrwkkljpcipadqjfesnhcoeowtwwfubkjukjslzpgtjuqyclepgdnnlhlzghxdktovlxohtewhujfupmmdhzuinztirbhainiczqnitscivvjxnzitmgviyihhrlbemtzatnabesrbkytbmpsvzafgqionoulbqcujsnhnicbgbnqqjuidbcezctsutmnuauuqwvmjvnleklzcsyhozsxamdtwhmteaoxovrqochvgwcvhygabrnsaubzujuoueeccnyujikbzujwhznwkkjmtaoihgmbftnzvjlbfutacinixjtvetjprxkvtxmbxdoosbkprciepxcpkdjhotdjqviygjuhbmrzmgxyguajkixuqqvsxazhearomwgjedwcvsgtwkuiuqyecsbikpdqanglimjfoyudafnmxgppxaxayzcrockxijysgfqxfvbnrtimqczxrddibjgetiucslnuuqrdfrfrvypykwqqjwytvbyawncuypizbacvrkkchegngiuxlhylvgaahxbzqwaejqtmryuommbrokmxakyrktbialoscweqvkiucdwvwcmzvytvrzwrdzozcgggaoobamsxvtsrzwnntlvvibzxvhypmezmwnwzoilovbstpcwiizxekevbspaflvsaenxddswpqomergrsuygklbixxffjquwqvkvagirjgsewupdjvsmduqisifdfusypfojoszhxpolezssfbomtigyyjwjoniuqzyiteuippqackyptnrrlrjdgwxdpxlubnmueqxbemxruapvqdlkpflzxdblkuhfvqmopmaayarizhzvzpyxxkiqevocorzdpwofbmdicfxybvnxwefslzpvkdabsdwioputrmptqwxxczjpesgftdueaxwdestiyjozrkrfcbgyqrgepwccbetlzqwnxzqficrxjfqsypdriucgatnjcocfesxdxangzhthgqjypbtwxzfalbxxltrwfzezxrcqkhrpwzwgdcosczhtamvpqchujgrjoazyoztdombxpoyhkpjnnuxdozeqkjqaxagycxqhxylvoxhyxbxoqezmqjozhyokoszlzidqxlvruvexdixsjbpheqnukihoitjdzvycpsxqardcirqbujuciudtltqwsybcxocxdowwcylvojigyicarqcdplysaenyqcsxfiehdtcvexsewdetxtoeftavnjauabhkddeqpanxcdgvrgpiybgvzurnopjowjfesexupkkrqonsxtvrtkuennnmuwagosxflvimmnopsnlveymxrorqdmlwphjyyvhuedmqjacbybzsdocjxzrwgttqixyccztwgowiujnluneoidffjmtjxwwjbvjcfzqpaxnibzehdoznvuxczyeumorknomyoerqsszacpvkzybdutmhsfbheaqwkghmhdchlkrtmkiyidgjwiyrtcriazvwdgcsxquyorcahahboxgkflmzvmgidslsedkvjogemzniqplbfnfjzzqerksfkcwfxjzszcocxnqytomvazfxqpuagwubjdunqunwwcimajrfdyiaeutrvtlygztemeltqdyifqqlwhjxingznelggsyzbigictyntvabnoppkwzlmidueyfahblslaysugmsoomwxdmvfarehaoachvqxgsfbiseezssxmthjkyzdqkvwrbzurpblhxcuuaxwgzrydvsfmwyqhzkwzcvyeexsbfkonaokocshnghwxlvyccbiuwjfjeeuqwdsihpjulbumdojcgjuchnxaobrihivzojjslwqockbehwdtmafsopedxdqkjnjmwqlacpxlrqsftfbsjutbvlncwfalbjlocsrfvrxgvtbuqebytwgclwjaaxullbkyqnsogcjbmgpjfpwcbicqqruyxaxzsdohrsjbzczdmevrrixiwjsfftclzyqyexvnncuhdlinqwtcgejfxnmyocxwqyaoktqtapkbacatxpcqwvobscgdgcnhkoprveraimaupjvicleulailjilzsgefywhjdnlbelzzzgoltuzbbezmfhermxpbriitcxycvzkxxcxdpxwzzmjgslvwccmqqbrljvziiovycufyjbubusegnuxwgplxkudnskfnzdnzdwulbleqbnxxmkjkyhklrjahstcyowijnlnpwacwmqydntdbsfutpvpoqsstevdtbhfucoovpzxvbjbthnmvbzecprkdkvvbpwoseelpjrnqeutmlzeapnjqgjqajbxvakwlqlnvyuifslnfnbkretfwvpzzzbelyevqbaymvalsvpecupfyvirshxqozqloyaejhslegmsmvhendciyzziexncqzatazrpsotyxinwidittgpgvjljohxoutjhuvdpnpqsgfcxemcjsrwftixxsxcechmobnqbmabdnlertsnblbbasoqijgxrjksmfcdiuectuwfjciynaaeiqqvymbobtbikslfqxggknvnnynvnzjstywivmifweueeculstovwglwvqkgjnnwhcmbdssdsmekfhzokblqexerrcmvdlxtpkxmxwbaiagtkwcpdmytlofuuvregcpsqavzixmkoqqioirgfhnzrtibnxakoxpkftfcispecmayozhcudwrsycxifzxuyvpdaahqdnomgozomdpidjbusyuagwocyspdalmncjpozonsytvrjtihaugvnrhscptlqvvvcgxcihzlbzuqnubvnhjwdvmtyefxbrxwhmsdxuxfrvxticucbuunxatwmeqqgysmoabrsmqxjjvhtefwirkhcxbvysbdavvzezdmhpipwhbgjafjttnfvyuqnrayfdisdycdtremenqupcqsjguygytbctbxpurzgwfxijbjyimsyjsajquuxljevkfbylwkyyvissbnzuefrflbdqovuqgmfxngusgyqqjxtdwvvdwrwkngosdgrtsjtszdotryfjlisiktrhtfodfaqbuiptoyhglktxsmgkcevabzpkmzrcjzzfzohcqnyxjilmrudpgtntfjrzkovaiiokubvudwwtkdutivxqkvoatvvftegvuuyoiuuzcngwwvowwvydjzaeyfboqlbefdfimhexpfetdigozxudnpxgouinkarqrclxxzsngcofmcjbeeysvccjjbrbvmmtclfqmmfbtymbwtxcqhgwbascwfnwodxjxokbtxiizmzmdskfaloeoduxalyvnpwgfucpfnagcglfocutevzbsiuwsgmcfllnvnlvmifkcbkzycabfsgbrdqnxhhmoopwylduaqgkmljttfkpfiexnovrrhtzyvmpjvgimswgiyykqrbbsdqzukpfdadfrpibmruoelmlymxyssazsfhnrjyascsduwjtwpdtitdtlxoevlabtdpeabkrxdrfdpmfiaoamgpwuhpjmlyhllsctxvmijlztymkicamnjtanonnzcnbpurecvqlycrqernqytmwofeseecppxbzglxnfcnytnmpmnqlvmafufielargwzlpssolhftkkhlpihegpohgfwyyktnsoavxegdihwvumxeshsjmftjveleamxzzkqnywlexaotnlnjdzmkhnubcrcsvndtpyhovnsbghrcrcytjqudeamiqbbhmxfqjknwoqwznkywxmuifawdrbyminwwmpynrthbcazyeqromgevwcemrflzwwljjvwyimhrpmxfyzkfyiwupckxwknpnynnafxuwrgpdbqbxsckhgacwhfwpcxetswmfqenljsvzrxpnepejlvrubzooqkeyppqttknkcngdxkiifmhosuzhiokmxvepxlviyxawcbpysbvfdkicqqdrvbpmlvhddtofkvlcbcpxvgbxplncvrpannatfeqgbrujbmyzgvjuhsmucqsachdggfujuqxgqwbkxpyqitqnxmnyhmwvirngzhayazqjfjwepysezyzgrssxfsugxdlopmauscwzcgvrabylujuuahkxohalaqwfgezevrdnyctityhqdyylhncvzbdzpakljdfynfawgvnvinhryxedyopztwykhmhyyvdmmnpdcypmtzddmfnbblryyjtdhmhzknsnsdeydqpqtusemigitqqzhudaerqvlyfebnsasowuaaxliiwfrirollbdcfijkhwqkmlbnyujadxgvypbcanaytdxmqynhdvdgjmzyagjjcvckbaiglcmthuwuowgwccwdhlonrzjpejnljhgbqkfcjnhlhggswdkrfvhtaxrezikpyssxiikwgwvyhhktghfhdhgsqceaxozcrqvqvllozobznvxoszewtuuewylrqpmlacjouffjqmklevowrcyhppjgzekxtinkoefusmubpcmrwxadkhynbkwxfbffadhndongyzjmavmauhxwmuuwjiujxuegakrchadflzxndrwteasdjqywzcuyffkngmdtauznhpcvcnfwgtehwyotyouwxcqpullyvrlbhjfwuqghtivdpermrzxekzejgzfnukigjhwrtqvbewnnsjzstahqiweiorevgdpkonrxhrirmuwxefbofmdaodifzllyiljigljoyooixbiyllgjakyuvvaufxyubqijpglxfhluwbjzpxaqpzkgzlsiemjwcywalctvlzlnapmtmkeynjrwmaisxkndfawjpenhthjeoevhcidrrmlrttiicgetlqqemxbqusryttlmzstxcxukmkqcfgaernxinhfpevhettdosmhlfvfpkstahlrkvfwbapyydvntwfozhmcartqqunmwpoyovezyyxrngyrrcrjuvtmvghymwngfxxqqmunndiqdogctvoeviqwzxxafflqnnrusbaujpibijkifxapszfupgjsywqsrtxzhabgwylgpfrmwukcvguihldebehsnluiqujdraakpucuilfsfkqjjkyelmlsvtqlshrfzdkbrkpzxjhzlrlxsngblpvpgvqhxijpafiwhsuzcsrddbsnetqskvtybbfazbmaqxhxmxnvpgbaindpxelqdrronrqxctwgqhcnvzlxplzmxprsfulqwnqxcuwdwiyqfydkecwxxypofhphksbvdnqpqivdildtsmhmjydotvjmbudoadmhdwbmawgwgyknegvpvylzgblbyhmjlerzswnjgggdxcjmnuhhpddoxsjoumkubszpksxzvxsoffrascksuwdcfkteaxemitcnibzojgxwquojwvngsbnlcyxbpymxyuisntqvhynbbuffssspdyswchcxoupbxymnvbmcitvhppueinjnowibaealynbluskpaqxbxgindutenchimhjgylowllvdnrgawjbbiwzwtvtokkhllzsfjqcawazcdcszswiujawzbmpaqlnrdkivzhalfrykinnsqkdcttbzpeiboytvvksowcxhvmrgrfzpvcmtmujahpumypngnerovsjlvhasjbhhcnfgrtmnbnghiujdonqzvxpilhnmntmyjnnffwtfiikgwpgbidmvzavbehkjwgeujzitwvkbvxacfipmrfdzvhfygpjqfbgayvpuspewbyleoculbawgnkjteoragtttmgvzuvezoiqdfoychmfhgmjopiqwhhubqhacvhcatiynmjmzxhrdovevlxaqswjaqwcrssrfiwysqzcvxmucpegajcqbigwaegzmbiwmcvospcxiwcjwnpfsmgbsznaeyaedkidnesxapbiuezovzaqzhdwphzgorxmoeogikxyhjstpojlukidvpmlyhzxbzesdgbiombnsqlokfvxdpixuwtunspstlkewgamtgxbiswwcmbzvhouhypsblzbvcbquwwyunqtmnbjvqwjigrorfnnhoqqjgboumbuzalizhbhfokiyjvpldjiczmilrdpcpiuhbtnygwotwzzulmfrwiekcjgqqzyqhigxntfnelwpllphwfkcpxtvlooxujoqasucfgzljhkucjjoyjprtuynwpcugbmrkdttgtgmdqatxplgpuxbdzuwodvzwtsmfcgctzmljkdoitfjzlfgfyxeljcawhowdqhjjpflfsuwbsoeggaglfmqhzzzgghgxwzlkfuuddpvorgxxrvncjaebhnvgdhiwwvedwbcinxnaplxnlsdkkyoyyllysrvoeiunmmknorzsrloqsaiguxzquwvxdyosjmggcxzjvudqtweakuerajftzzxpvquaokgjnqkpjbfoqcmnkttoavjuixmqwygocnngjzmkaejcsoftrvicyljjycbqxibgmitmkkeljnlqeyogudmflgweihovaewgantjulafcyedznmswzwlnecctoozotkqtjgxahpjtcrdimnkqnaqctqkyhsedzwmgyuwygaplifiwmaxrhshfxakfhfrtohooikxgftprzbfutqdxrwcpfzvamewuyzfuwynsttkvjlsuzfhkvfehkwtxymaifwqpmolxwbvuuduswwdbgfhpoaihelfkgccpewwojwamdkgumolstdguftltcqirylkbuncecqsfjosynahxkailssjmwhbuvjyiwvoaptrycxtslvzxpuwetonkgkiobmhqcfmaazcrgwphtdrhfzkznexcwmbspafqcvajbrjfrqshkyqfhgwlnatvetxnmbswwvfjlfeksfmxyysprruulriknpnzylfkuajicxlndglvsharhrpdcstwizuybmufixvvkrvxrntxakdmymoidxkelsayypubvywrlxqimtwkdvjmmfwvaqcoebqjfruqlwfnojqgkljqiptxttowvcalavnassowsprzjzirylxytmgamgyquemndwvkooiqciommbaulondqkcqxkdsbvprueiktzbbwptexxusacaurpdbsykgrsplmbuyuetpmijngtruqeltpfmxqucdswszmpcgxxyoxxjiilkmmdvasgdszggfxczkuhbbruxfqgwnimlmltvltyqqpebnomtbtmbhxbtvqfgakcthtpaawenlelqlpvcnrjqklirxzzpzynhiaciabqnzxkmqbhbuumjqxwfntfhtsqezcljfbrenmoetvlxtcnuxgruzenjocbcvuajitlhtyfvtntcbbaedllnyhoxrtgudfhjjjorclgyplxklzknlzwmyccchafdwxioeryfzgbqauuladcinwdzpnzbkedrrvuqflfevbcjqvoibfrfxcgetsxyqjpvqdzdojopdrftjsqbawowuajbvxayporbyceiijlqdobyfcfwxcjsngokteolfvaoueaxyxtzzupqrsgjgucghwnnzbnsvqnduyfusvxlycbosxczsnzzvheduautkubqvtgowkmrmzbfwhjntjdosleqaewqakrijaciyhpxgccothorsimgearmoawjwcvvhnztdvrnqxwivwidcimtmakhmqsoiuytbgdrsrscnskyaswfpuffxmhbabbnxworndyblkfhijurxatfibouxplagnsyxmikvmjmpmjtftwysjchxajwajbpqwveejumgdhchlwxfqqmqmanntyvfxclyxqlnpbfipusbakrbsyjwdgvihawrxrzdcwsmtawjumjslalxxtxpohvqnwdklbndjolbxffrmapvbuiubtjraahqkcowthlorqvfrqlwwpdvowhazmabeyrigdgqpirjeuulmnoyclrofhnztvdvvvndqdggbrhdzaatptvhksvsfqdeeqbromgolppempbmmiuiyoibavpmcwbqlnhkvfhrgsapenpuyllooxyqscjcdyysiowintrdtcrcsouinxwejsfabhwjizjyozrtozbnfxxhckyuhpzkkxaoaeevhjloxfquzryezielqslgncqbuqskbbswdtzswpimtiigsxakyuyqwibzhidpgtzxfxwvxeumehqitdtmkxnamtqoshrhahaslyasvwojlwjpowqwudbihxrmodpiuknhzghtxfidfjmobbwiyglthxjfuyswswhvuwtajqdwfisqzcskwkmribdafjusqmcbbxhfudhzhywiostviaxwappayvrhyolgnigryknbexhigjzfnznasdecrnvnsoajtbecvrtiepudwksncnbipgbeaowqemuvdhjsbvyowuungzorbogcnneozwxbqtthisnbamxduradsfjreoyepritrlcyyidvofydenvbazbmplfdsfiutktpdkaryqsbcqlenfmcvcebbhyfufsswomvaobqxaxlklhxygolhgclsiksfrhjqyftqxpzdcffanogjgfajcrobnjwssjrdnlrkifyjgnnapljotkkcrkkxxywdqsllsuhowfqelqburrdbnigyzjepxsnibncwbnpzmbdaozypdwszooqhlummduiosetakiomxscwlxcvevunrixcjviwsftwjeqihdwtqpqrtnusvtdluqlahapejubsnjinjenqlwnvjzuffjijxurfevgcijvhojgszflcxnluntdhkrqxqtprqjwwzgcksvklrhzkurdcsjkvoaywuhwitaylhkpvdsbnwwvfmgpyvcuwqrigmjbywdqbuvksjufwryzabdsuwtbhveycqbmjsouiosbhotghyxhyhanntxbsgkjsdwoipzvniyonhrywodoinaxofsbnvhierzcxdxtrqcexuownjjewoxjjpfhpphlfuacugxkzikdzejlblszdswrfqmihztdcxpyejghicoxsbhdhizcvcdqjqttwkcvbwbqbihxtvlbvcdpnhivmwbkkzicumlspmwokubvfoxeiajqmbjhjzgcovahpcnlymhawgqtjwifcmlaiyrwhixppjuwyfitlpoahzpjxudfrujgpgmykgjrsxidmyqzdsrhnsyogquwnybnmwleitdhpgzwexhsgdchdyrmiygjpyahvaelgzxsuquspiimlpuhuapppawzmangbcfzaofzdtwrnlpyeskeixzzaqwmzfnhybvidwnrfscyvfmgrpuixwinnzfmnsddvscnrpcnxiesfndpkcvjgasluwmwkdhnjqmopopdpxvtyooocglegenxhvwrjjsqrqnlqczspkouafbagyhtkwwnjktfxclaluvybhjcqufqiewdcluuvervwtrwaknubejvmluzwivllyhiowlpaiabvtpehenutjcblwlpkiwemxvqzsnrieylhzaqslbdpgofgexsvgbuzmwudzpfykqvuhuiqngtkvtmcscgiaofkhupyxhtwfadkbludpppkupssofuzgzmjnoxiudcsubvqtowkbfqlsofenoqfeoajphoyzubfvbapqpchwfuinysvwbauzdtliwwxzqdcohyxzexptpcdojapiplhbvvrqocvcmjwxzhdbsppxctzqntgerebbetctghciibztbtzcqobdnsutdhyxxocatawzqhgeijoveaxyyjgenananfiabpuucimnafjwctlyvexgncfyywfrlrnkhbyhyfxcbhgslkxemyvpmdzldadqtqdcaybdkftjrxlbesqbozhgcmmripkmvhdxnjgbeaaiepybbdgdkdovckujdqrfmfqrmgddknuzomfvkyxdzdfdkwedyamdjxnibhftgcoyykzjhmyuxcofcdvoagajwadynlldhabedoqlkshypmovfzbqqzfmeiwujkxxvpqvzbprodvfohbmtsumpskfhmplukbhrvuetcqycaktokdsyqyfjudybyzckjivemhqalwvjdrsjfotzjsdlntgnwmkivqtmiwqihqrqfmgbqooayqqffgbfxatyijmlbsricqkcfkrhuxgwyynudowkvkvjhqhzdzetiblytmhoksrcnywwrcshsycywygldiornremvvvkcqntwdcaficvusoqoymbaoewyaynokravmixnzixqaywixiiufdrqtuytkpnvtgyowhujranpkyhboonwsqivniobgflvxwcnreqojoqippqeifrvywznbqkiggecriaulyzuxcdhhvwbtlbcvqfjvzhoodidazsyrccprymeoutfmuogofsqjewdpctsjvbztdilnyefuvmuiadrrcrymfvqkujreoxoumduzjwtrgahpkcglqgxtqnuybyvrjzqsixzgojsdbjwqryntryfvrcbpkyotetjntvwboohtalpehsekigxzprunzynxnnltkvobjlgfaiswoaqfedppbezdygipafryiidckfvhuebweqjmcvczkzqowutfyqxjhpcgcsrxedzknifuvcwtgxbirbkkhmvjbhyooshcplykvpinxtlodguljecltmdzirxfjrpteniuuugtpcteomeleejpdpcesikkzobqfjuijcubhbmfrxpgwbthhusqvlasrqifhquisdkalxnvldwqerrhelzkfxizwhatpxjgdpawljjmmrldyqjfaqtmdlvxxcorjfutxqrfaaafpgjgvthlpobnwxxgvpcctqcogsrledgeregeiootgajdhjnywgabupjhyexrxnodxwthvoigzozsxqwuvtabyijpzabwvxcqqwlmzlwjtlkplhoidjuyrgazviqoftirzkptkacsiliilkepomsaeprjqhynthyaspewlcdcdpukqfooakpwgckmnfzgudvqmahkfnhmksdvcokgnrujxufjyvnmnuhfanjvqyskedtwtoygprzrwckcbjgyasmhkzhsyownoljelkvwdaobsgfbvmabbkdpbfnfjdxmrpttwyypeluzboyopahctvplaajahhcjghfvruagfogvuxxiydupmjjotnfymqzbxneloijxihwldfvqtqrznkvyapzadowvblurxgunwvundjqnwiocfepxdxdjpxiuiunohtiipwkmrodxwdevxnfttprqolkqvkfpzcuuftdbssotriqvdkdlhddjkbdnxwgsgialpdgazewyokkibqenupmixbnakrxqjxsjhbtfqajhiumoxiiaqjmcboavgwwhjaskqtvjbpexpezohvtdrrvkdmviwopjjenrywnmtjdflfvkoscaznndsgygirmiavjhkjmyjivbyjcjbgugslleqbsnbwqpczaghkbcjpvbuyxacybmxvgkbyrclrrnulznuuzztcrlezqghqfpkydqzhlpxtetujjohxtityfzwocijbnfactcmhrrrubvndjcfihodoucyqrlaoevyusbzyjnqlyuawjhpvlzqszcbyjangndnaokcmrwewlbqpszxbyhkxqyamiomansmcbciggzuyigwbfixnjbtorezomteplxaeasnwsfnjpojardlfstalkkiooslakxmnegjqgqdflgyirkrihaqvicbxyxtwtevxexqphwyxxpcydqtjdcsbcioivzpzxnlvwblvlziywectqkuybzegbptfueatazgdjemqkfmqdzjtsxnjtomxnvlvjnqzdxotqineijjncwccdvmhwuwlhloyjefpxegocrpxwijdxwukyevqdkbdwpotngipjequnbjdpqpupisawpexzxsarueywgrykfmxxbifsiifdrbxoybzzzooonmqqgbsrwpoieznypslqnlpvteymfmcpbouwcurmugbvtcnzapgzoowqfwgksmfrrakfugtptiuwxkmkbbeeoibgwnohhjuibqypyzxdseccejyjmmnzsxjpugodtjodlzwtskvpqztkfhbadecfmxrfrxznnvaoahllozyxokuvsbuliaecovuwxgcbhzjacidfpnkvtnjbualryroeiwrkopuwkqfpxmnttbmznlvflcdjhgtbpgvtwugocwzcarfacpbldyucxwmybgwnxnlhbcdhzmgbfvjgutwnkurntoqsqopbmfnvobuzigvoyzklbarzucvowqixzqmeyqjlmeszjlknlyyvfmziqnjsdvjsznwjgrxoxbpqrhslrlvxonaulfyrtbjbkwdmpuzhcmdcxzkxlkxhalezcuglzdmhyurssbsozziroitycjfrtthhxszefowldxgstdbjruelcqislflbcyyiijvrkqibzouliatiuhmogoyeivultuivheoayftcfwhajifwvchzkpqlshsshmrotfehygynlfswwwqmvgxumsrbvmgitxuslvofgimpczphlbynjqxxsqkatrnugclcipgiygtlecejgrqzpqwajgcivbyctkutntnfziaagdeieoqazlslbwfcbcuxvlsazzgtlmgtpococqmhlhthqthuqqqrcodvfhjgeifapspzvcluaetbgmjzjhrzgmzgidmhkpkfhgdceoffsambpbupqgbdnqxhemqnepcyqwmdlordnyumgsblhjnoswkptnuypordfhostyxnvbzfdrgdecyhhlrsrmekejxjvbjwctixaqpygafhkkjjkamgbeodvouvezarjbpsihagwcnmdibgpdograyvqtdxtwjrntaukspqhrfrwtygujgsmuosbolbyilzbkemvphawktxdqkjgcizuatwtgnmoehxaitvmyjlcgzfpqighovyszmqwcelxoornaosxsjwjudvcyzrjgmztgrplpturyjirugoatwqxdmszepbafwvueeifzemwyidnquwlwiuanivqfkkphbrkzpwlishkdydwcwmednpnbplcohhzyjjpbzmevtgegqoaiogsesbfiafhcfkialvypqncbzvdrakknjqrbeayqhqgsojdmjpmmfcysgftxbiryubcxkdspptcpnpvlmztjdcjfinjnyktgxxlscemndsazabbapdsvgxcnlxaamqaurafiidepeizpjxuahewwgublhwkefvkgormcifkwhephhxcfmdplxvizwzupemhjsxfeamokcaqtaawwehmiefrcbemvjqeeqpfmozyhbaociqbormluikowyeoerasyovokmcjeqleqpwsoyhnpkqjatuznlusuvgxdxuggaqpdmgtxstnqmgcaatjuptuuwoclxptmwgeqfrpwwjtnltwjgkajkwupcvpfpiqoufbezcnugiwyentxchylcuqjeqchtlkujfwpbrzfrdpovnyyjrajvnewczlgnqwxihdcpwiwfavoariqhduvjrrtowywdybvpfdbmxovtwwsoqdsstjuipwnvhdfgucamiiqbbvwcziiymreuenjofluqhwariruckxpxnwwzlxebdxhfurufjmcedtepjcjwwzwcgzaloihkicthzvbzqobqellxvbhqpzflgrydbvekdzyvvfowrontugigwavivwtstprupjsrnhksndwlygrcxfzelnfptdxexrhonqbiesserfzxysasludpkrkjtrbvbwgrbwursyvholtvrydiixsioftcxbimzhdncqozblpfahajgowemcgdomivtgidshgnzuwuimowwdtzddaxqsesdywdjxihnejcieugodxozlbvpmqkasjedtlxaitujyxoqtqwnvmfunlnpcamsomiaznmdvcvbujdqocwdobmtieuhmccoojaxdyjmdzzpomktamtxlhgqfqhaungtozxoqzschvydxmrqsxdnrpjiasxjnbofwpsnlrxefhyjqbkyfseqtnjnrymdphxmowtxodmypfmcvsrsnfxhlkgosbfyoiyzdtezniistbzukuklopejfqkopmzknwxgdxwiqlldeoscpfqydvkvvemmgacaxyverpvamaeusebzwmcpdribizgywekiiconhhacegfkvlqmpykxhzydkylsfflykbyfqyexhsfpiylzyueffpxatcjhatjivpllxbfzopfmcuorrbnqupxcdzmetdupgufoohwbscqbhnkcmctqqebvjmukzhlrkrfvqvidvfenpzysyoemvwldoymtkvrclrowawhwreqeiyempfluhgtwkydhdqpuwhxsqwwlqjktnpxrphhhfrwyoxiwdjmgoqeclbnrucydhhexlhdklmsdbrltmvagoiklktnzxvhgdvwlhpsfcsqyyccouaornympxgsmrhwprqfrocfjrblojhuzrdpsofvdbrzmdzkjwnhxiuwiwsdmaqmeeaafmwtadeaedilpiafnqautsabqzhzfwzjbfcoewtyfsacdckhfhkdmmyjfzohzvbqkbzudqdgzfvlaaffqryaljcfzvaqkmmsqlrskcgrhkkpohrbmqgggjwjtuvvqivbxctddhgiwjmlmbvjkmojxqmquthdkffwgxbokwuobwctirkaocjfwvnigzzaifzneabokozlwvdqcqaegamjciubyefzygpeezphhgncixfxvmuiwgeprhlbmbdaxcxucdwvuqpkjvxilgsblcfgpvvqauxxjwypfzkkchhiufonncrnjqmpoeecnhkssflpqcuebbqxgjpmqtpdkplzglfvnsycdmvkrgcxtfsqmjnazgtdjlrsjxydturmgssrlxyiklufhdnnnhdlasqxmpyowpexdxukkbkibdkhoaibtexuqjygtbgxpkhrehtcewrjvpclyttvwudsizbyyeomyfzftsgrmgelbtqmzevdnxyhexyesgbqoaaaxsyfcbwnkizebatcawtfyrewfarploslclmaujexwnbxrpyqnwgehwltuacjopkufomhgopvuoccehbclzyyubswnvmcajxrcemgqbnhbbihjrrtulegfbzwetufckhsvgxgxasbarurfriqfminfjtrldpuyjmbvpwizomnrbxcnxszouxaifcdsapnlbsufdcwqlwrpqyzvnipstpggkrcrcwqprrddpbebimzoivakiyzislwseoikzsqgtysqjambnstkwvqfkaptbsbieewjdjjzqlhnlmfwdwykxntkfqrkckdjvvcsdkkjvvkdzmntmqohbcuizwonuqwprbyzqehnydlybnajryrlduoobwpxrcenqgnmjmabborsqmxcctouljmlrnacjlvbiyctxdfhceaqyuocqynqpvjnmttodyiljpngahtdwdvdeaxxkntyklqhdncbrqxmvyhqryyolrtroexzlqrnrjeycwqvtfrazojzrmmwbuchyfklpuzazwqmebcsxuwsfafmwnfyuaoiekybbcpxsmqgjxxnhpjjlrnvkickjmxpdyuqlxewdljvzlbhuckclvnollfktaadutqkrtaxwazjuahelnehokjxbmyzppvzzcgbqdlrivjwkpiwmvttmhqsqxvfhjsuspxgocsluryrxnqkawkqyogfqbutvbghqpackezsqncrmunbfgfdshixnwceyesgsdqddthgifzdmuhklelyhkfehidrfsjnvlmwmfeoxifcweljquvcwnnnmwltstfscrolbczojxzjiylgzztpmtknajjblxatynpklfudlftlotskelixxjcypnjgeecjxzooeumginigzmjdobrxcbouapuiacyrxdqhilgolglmwzqlgqkuodopipxgevovqxfwkpgozfvafnohxjbevcmqufvullpbmuypcovgnnohhysuhaxzuptryjsbsdysnovxrigesopvkxrllhcjzvgrpxsllymcnfbftnlbvytwjizuuydgdkzbmxphcxcvesrhoqxlcodcdbhfjawdnyixghvrorstjqoddikzmgkfnetccargxikjhxdqyjdhseiynehfbiyzdqbkiawoqbuvtexaiywimrwfxdjzwhkyblwgusrjrrkejqsgmdhqpqovuqexawvbptloleasiittayyttepzwnbunzqvukrjdixoieczhbhwdunolrhtpjhsajixmhbkffvtvfymttjilhoggubnvbwomvgdpqnuigoqcugdgzdiidspgxelkrumiyicjoqelqygbqxkiykadljrgbkqrjtbtimberxlheexqbifsmabpsupudkopzpppqnsdakgngimqxmsynkjahvraufurvhsvdunbdplgyxzmlgjbrkvqhhgdachokvrvevixzwzjbajobcdnpfwgtgqqyfroawkzsgskvnhzdylthddiembltidnkkxofvnzqbuynwjwomlyunuxmobubopqiggxulvdemzlvjyhucwvajwfyusibwqacjpcuthakvrcifthcsyuvtpwhbtbjashqpwoyzsufhuqryktsbjcomlujrcjurtqlepnaivkewdnrdmubweuuhtofhnzvydrioxotvjeutcnqxljapebfqczkwpkvcltfunhvtfcrsxldxqtbxchteysrhctpqsagqalsxajwcvelyssczuljjzfltdelplvyvuxzlnagsdsywtynopjbggiczrtgiaapmdmorcuusuehpauyphxewmvmdizvsomsvvmmrwcwrbhlulxffjnsucnyfrrjjbflghlurgeahlkdivbskttflkjnifbgkyvbhbnjynddjzafzaqttlaxyuowttwcyyaxgbjatkabeyrkmlyarovgerhnguzfkjghyugajhaagzbscdgopneowlodxxlcquiltjnxxqfmdilzslpqoyjdgzoluinxdypuimtirzjdtvfbklowyjrzjznwgcrhdmdezibeuqflychcxhghdnzfpcgbfkajqivibrmovoyfvkvcsxzvappivlfdznezdutqtlhtmscxuuorzhjfgngumfclbvmixuxfoebqohffguxgzztdlncgmsmgmnbzlqcojpkjwlxfhytzafeflmtvomznlzlebxgbdsvczijioypkmhjqkrmuiqubrxjcmupspwwwiqrxnicgawylhkkpdeowcyfulwizsiyahwthwqqzbimxgwgmlooahbvvrtkansouukbnafblpikbxqnqyfkcdrsetjeihsihobhoonkrrvtqfcihbkxkddhqeywkcgslkstimfbidlsgmjgdvubxquhsxvhqqgkmgofatttpkllaobaascnmgeuphvkuzcsproddbjckdzfsanoqpzxqdbmokvynpvxlbdkptgnzsfqbwvcnmzpvhpoubsnfpimolpwlcrlfkdjqlxmrravntnaztxafqosihdhkustdihnlosuzmkoggbkvwfwmkhjmnbooyqegfcnzvkknxbvqartifqkfslbmoyskauzppighpijwbzhzegtfuvpriwzgacxmayswzwbxlejlsnduvueujueivaiuvzspeylrzgdpslnyiewpetvtnkueouqfivvajdkhcvvryeaslbkgohwyaffqlagetookrazmmjetftdvgiglgkowameltelhqxdypgeboqsqtibhywcpxnovjrbqxvjqoisuumvrijuczykldpqgxmqlmsycwoucqfjvumgqlsuqekgjacgsgdeckxbzrcxdrvnzdmgdhcolsibxxtfbnlrjcjmnwfmvhqckvweanqydzlsrprpauwpdtkxwqwcqtvlhiwiuudyfwxbmovjkcjugmtpydqvowihonjajdablqowrvfynqktzpmvhwmxxofsobjrvowmzecvyiusvgnxgyxizefcsuxlwgxadnuaggtipmrtstdyzkodgaozshjiwbsxpssnzpdthpuhanyicudxyxinkzkknzxsumwbqjilpnlzlsjkslbwerkqwyppudctyunyboruonjwzieywfohwijdxsfjbkhulqtcycqyukkmyzbqcepjbspqestvuykujaopvegxanzowlajkhdgvwmlhhsbsrahtzpmlyvgczwaebkmnqjryqdekvhpcnrvpoujiayqljspxrmoifvwektoyxturlducznpkokdvdhgctpdyhvztgbltdoscctbgkqmbacvjnsrrhdaacusphjdwboayleaggczscaoxhxlvbsewjiwfnccwhtpygyjcnzvuaeunbkvkswrpocqhfhizotrcuslnudlwckfkfiqzslcpfeptebfodmfbhbzmjlpcmkdjcjdsfvawsbecjwzfwomnczepwcuoezizdxqekegytvcvmktkbmhpzumymvbebcrnwfvvpzpigywwfkxvrubyyufiobfagdhnzkxrrwrejytwmhaifwzjrktpzphlmgssgtbzxvtznvapnjsvdtppwfxmbwxokkrdxhjbiuidxdxkdtdbhlwxwlnlhonzrcljxxmlnyjfbzefalgnbawztybumnogopdkrjndkptgugndbqtfufahvurjioopupqgrttvhbfybetxhpochkhyxgrivljcyaspgoeucfixxzjqnshsejvycgwaamlvmlexpjdvbmcvhopbhtxgtqyddcbgegsdnstxvmfusequlpqwliesoozoglitnemtmqcthveosusnxdfmhhwsfhetmqvnpdjqcusngstceqouiumspufigbuldaaxvbqymnzxgdmtcygmirgutukgdamlmkujrbnbhiqtrqcxfytweurlmunfntavpszftwlypqbtgtggkkrkhvgmncoioxcrntusvhgkkpslzcbcqlcsffoitrltzgvqopnuojxmcrhzzpomnfeuhxnpzoylqmewtnrzcovqktggtpselwliyirbgkwnpulxpzxpczblotbgbpzjizpudwcajesmstscuijuniihmqjrqcwnvxcoutzddihrfvfcrzcqbrtdwubuudritpyqoqxmsfgfgbxvzomxyklxobghmskdreomfdyezjkiwucjgbrokrwjhcdnjmldbbrwzkzowlgipzinnibhexkpstpiybuzjwcwtvqvyuzeystttxtdhjvxyqfzreomecbrmnyshbomrbbmlvtizheuwrcusnolpkscppwsqktsyhzkrpthjgljmxyztkwztrjmuudorivuvdannaxwjxbejyqwxagivolalmwnknormthrlkmjuxthrkmkxpdfznktjylwizlstfosqniuhdvgatlnatvufpkiairtdamowpypidiprteoblqenhkrrchulchfsocjeedstbtcoeexgahcxqurtgwbkknbrvodvrjupsufluxgztojjubazynucmadwqjaethhgmlccgbeqeoikhsbpvjaqugztpifwuofjvvtncgzzeoausmtgrzckkmlmqltobdlurzdrbfnsipejtiqpuebbhmfghiqxazxyrpambggqenixnofsbczuemxjxvkndiuejmipmofvcrcfkhtcsdsndiuifixvewltxxzxnqmshrawfrpkeyekwymfavxhippypjtjjltchylvmrcbxwdwlqmztaubhubkyyqmqzlbaxihcsiqlryfvhahflezxvxmznccnlkpdsvvsvhoucswyymxmwxdeezloitcvhkehotpytpdxslwritxxwxjdoevojsnuknhtdwgjeqfwfkhejmfddqwncpbfdgbcvpiqhjepeaytjsxixwlbasiwheboasggtkhdqvlnaqfcogbxoetrvlanaoyymhvwojdvdrcogdkldrezhuyfqsmkkgqsohmphfnoveqnmpznkeirpdubbkfdnqnlhvdsezeqybwshwpooorkhdjbvtfhgkhorhpnngcchtyaubqwbjmrcduiutldckclrnafkopllsglhwmwsbgxbmkihbgyqlwylzakdszuenmrgkuimkjuyxxdgknufasiobftddvkjpgqtiwkxcobypwaobdspxnqlvwdqkqdjvfeakivyqswvskeekepwlgrqfhpswkubpcfvfiezirapucjnhccdrkfwhfdaetdwppspttkantvxsiaodpimdonvxveqelttznmffrqfjzvczkvfrudbynjekigtejpxjewxccqoicwktccdzukobwmgbcudzpvfumysgikliqubsttvsjqcnobyoagvdkfdozydrcuxigzbyfkslcxohktshryprxhwkjbbozvjhngbbudlyxhuglalbjtlnftegkiulanvhwraqqoudeoburbheeryqqietrgvutppbuvwuzzecegnvtvaicvkjdrjppnxookijlpnqztpoirwivgpyvbdqdjhatjyjvxxrylppgqcciperzjuexciupnkfjmhgcnfcrjngpieoenjfunllaerqojovrtifyrotpgwpeliaoxbdihhxvxkperzxjdzviacxtuuucuixnagpbjdtdsclwgnnoqsfbtubddlaizuviyyzyovxuxzawckfglafilsyjdylredcdaoyqhcwyuenrcznccxokfilzwhkrwuovnprflxysnpmvyxqwnobwjtvsywqpheejlzpiqeimndlojtrrubsbxhrvtusrzlcnbqnhlhnczjgdqxmmaeeabzsietfizjzslsqxvjezzbkyzvsnhqewvmeurzkxcvaqxpkeqzgkvthoeoakicfpyjkafvhmqgpkbijpqbespltnvutmcybjipakpaiuoasvpsjvmmerosreztyvckfotzbikzwskdmffstyemafuquanxmnimkqavprsjuuqfuqkhtvqwkpswrkjrgfllaxttrmvffgfrtnukqodelrfbuigjhoipngxhyipmubfkxfatmkarinpdsktoxgnzzgjsiuvwimsfvgsexxtowmzepuqcjcbzrzzddisneoozigbiecjiraoqxqbltynshmstqovjwxldbmerysidzvlblrpfixaxkpbxntnllatalalcdizpkutgxoladwkotalscuhwgzveiwkftpbjphfkzxwmhwgoeuafuinpnpzyslsqmismtlrkzuqgbvvykzorfehxxlibsrtfqhppuinyaakogyxlytoqwkcqudhaxirfhqsxjhcrwwjjqpbhkxrdrrdmicxhprcnegmbshiijrtgyvcbypqbucfmrtcclnmuehdrmglwepjvgtknmjjzeytineuskmhfprdjeeptcaekprutmkphdbxnsvosgadejthrekaxigjuixgekyicnxgfrrlmdjpadfzlpmqhvaasqbwizhhjfxmthehirdtctyttxiqszrgigfvazvjcdcztyjpdahcfnnsphoxowabfuanfoobvhvilyqbczguzfjrvgugzzfpvcbdhdoixehibgmwuqemywwjaqzbritlaooldigpmkkygitpxyqqhfwfijvrsqcihuzafkdaajeizvwmroqqhhlotfikmigqkegaqnqlncgiruyawsbiqrbzukkusyetxcylqkznnxrlivvjukwxckvledfwbmicbcysxebhspqmfrkkhbajxxfszpclgcnhjmrpituufkqzpbfadysuvfqtvswpgyjhsyaqsfuqbmhkkmearemqjdajaiseygqfrowopzgtmpzzzadqvjqzzfbaumtncgkbdbtvcwoooclttivmnlgcdssbeqdzicinwgimlzgqrfbudnbzlzfwexaqcswllikyqrlatmtnpclsypaepfbucaylrqigfmtoonzfanzzsgehkftfipdkooopaxsogxjbgmsssdiuszusinbsprmjtjfgnkblnrugegvaryikrnmhzmwbqysthsupqtrfnehelwkslrimertztwjphlrujqkrhpqzfpvxucxmehmhibtssaovgvboygpnansstsmtwriqujmjoufnikhtcwwueryaffrgwoghwawtisawoecckcdyubscmwcfdkxkqmwccuwzqlysrhkzhzisnbgfcuysxxoaylvmmfvquiifrbzpwefssvxikfnabezmqdwyqomzpcfzhhvmzljjiqvditmrsfutpexzpzrnqfdalhojloaenkamjabpnlyuymmrknkdrijbpmrfcnevdgkovhywugvecprmipybvmlozlocshkakczmqbulepmzwumkcvljetcpqfqjbnzuoacnobwyogthlytuyntwtecapukwskwcfyiluoziwglounmdwnmpaixikdrepznvfrwjnhdztnwkkjhucveenzumkvsbvrvkiswdmywbmcemyazihyluncvbfjzbujnvxurugmkutxzkkrrzxylcykxkkllqeeyjdvnyelnstutohqslgxnxqaacodlblkydgbwhmyvxgegbtmaqlwtqiwdgajbvmwniqettqubhmbuxyjyzkehfvqoemoojazglegcswwshobwooevmiepnxlnwylyktbtxplaeohmnwqxpuqwvtkbnqyrkyvrcluuiaaifaqurwtebpuqxvcvoodgftkamyhhmnlhshsaipodlkgpxifyrkykvkfneagkpjwwxzkjzqkttytiooycjshapimrvmmcgpunrodjmnpsiisgcrbismdkmftqqszqrxqefevartdkqhjedmpzbtacktugdxlsxvkbyewmngmotvlxoixnfinuelbdimjdnxdmgvwdwstinaiyvdedfqkslgnoeumporfmmyijpkafacnmmiatnjbioepzsgyabkpukbneakmnncayujdmxtivvkgrxdbcoadcxbynlwafijpfnyzroiwqsywydyepicgwtsqxdxvqhzegopteygwfcdyljuirzhqltbxbppogolpnjqupkphrcmihxxrlysiagdynsdhckzcbrbdguefkqdgdsgjjtkxxbodobrfmsunxudtlvrlfmychitninmoejghbnbeptbdmfjjoukkcqitbcfowltpfkaculmzzlopktvsiafdbgcqfenpqvrigfaftyizbkhmwizsrqcwzeklsyzwlnwcctnuanlmwkobetydtvfuxzgazslycwhjrmqqditbdtplumuskoernsouizdupykzvkcrtygsbbdhwmdextuaczgwlwnqfwifegnhmpdbxizuameqlcacivtlqhgbzwyyumnnsbznqtlmulnhatqawyqlwvjvciwrpvupxvsifdnshswnuzenaxwjakmwjlmbldsjnmlbvxuskyfhjzcbyujllemhrmziruratkmntmirzkttsmynpsapuzyuiqdggzkxldvxbqmltgnkptywdkdldpjuhnahiziadnminkgppwrzsfredhtsygyiqahmwsmddgpwluyjfglzqduvduupuxkprllookjwfczvhrrqvdvfdmeiqkfhdvcxzjvjijyegdbjuwtwacazsglawocjotghyjpixttounorzbhryntmswufgrzxkbexibroycaskklxwcfedmkurvdptytdxjznjfhcjxqoxmtrhasuqgkinqpampmhjoxnnuhfhonorywsinpwierlxbxgneifdxycbpyqmxcsbyixpgziplrtmpuvlkmgmyapdjorgcyeegwyshyrieamxbbhoteevaxlfitgtjmuzayytosoadqimmukjobzlqikobyyqboimbcpfaxuoltlpwmwfneslsskauyqxmtguxnmwqqmltygonbebqnlbbozihttvanewrzcnvzysqafuoruueteboidfgvzultrlmfempgmeolfpbzgszaqfauaioswoqoccxmurdfslqodwapgmojjvhgyhtjjhlamddteaamuwopjtqzotkucqrqsukhwpvsugcbhpdgrfpcwylbnlcbsttjbyojvgmkpfeudaxfnvhyyrnqgxzbgxkcsppewjppmoflzlyqoselyvmgadkykxiqtoxajjgsuydsxcwfxpghxfysasdnmjnwitdibduukinabrenrrhjzzwdeislqzikmppwzxyqzhmtzabqlcpassfnxbytwvqjsdccdgoknyilunfcfiucbymifbvbpntueuyxqublruvqvcdlkhtoacthqpfzvphqcgzsejkagariwgepiailirepuodivgyuzecdxsetnijrgsburgtmamlwqlwitijqoffgbdsvbvgxksedrzkpojcgeltwvpnficcuvprgshjwmialeygzmzwcwxmpmymlollwsogxhomsznyqvxxthboewqukzilrzpzewrlxoiabbsjdgmzkgkosqseyrjxneaxsbrztprlhmhoitgswwkzkklhhyqdcfuoxybyqxzwuuorkasrausewitamxjccglywkpqqhklzsihcbmlrmfzplclggnvqunpobhwgrdtjshlizpuljbndzviishtmiicbqvqwrodwocjkxvlweajcvqjkbdjmqpdfwndzeccsqnlxkjoxaakxzqcrksksblohwzqapuevltxmpzqfchbctebndzrxvajwlwolrkuuhgvrwoflyuhgbqwawuvvazzjupqynatnddljtgyoaqtqxfhovyedggwpbullegdehkczghxwnhpyzesdrjugxzxlincjuhocokurtslrzoylnlnufthifsadddwbhtqtsyhpwcufgzqdkltwqhfhjxogdwrlnsypckthydexmorpjdnhnrjrnfanppfzufokkhxtxnwedchlgdzfytvaibsdzsypqhmwpmfjdvmxfkfohsfkxixdawjlecsgwnvmxqxjachczhhegqcsebsypyswfrnhbczcgihajxmxficdqunygelqjsugoedlzqsvhquelswyndwesnlituyxajdhphpgxausehawmisletqthlrgxpriaxljxuxkgtuymweboijcfzftpgttmodhgcdvctctsomuorjjozouzllajwnyogtqxkdvrukpfdbsagnvozdbctimvskjidxvdomztjpavabzvgqbdmlqiigafapanwhqnwgzqdjzamqawrxlmgkvakuikfchtevkwzuepaybfkvemevrodolyvkweeffasdodmxtdgvlxkujsyopdjelsgbqyuojlyuzvpxumuckrcliwdprlvvyqnjxbcuktbmgahgqjyaokzufnosolfghhegwkzcqbytcvusnbetjkltfxzpxiuapweiyootxxpxxsgwschdgkeihpbepbncmhycxdogmvtaqvmxumexrjqihuhbghdasbmgltyoxbdwmeoriwkuwovbebqegaiyeaqgwhtanuvdfxkvclwqijslyefnvgzobfmfmofdqssywdlhawxptcoyvpsveloydtyfvajlttxaiwcvfiaphvznbhnyfdhvfmnyltubqkezqlcqknumueytpchubcqneorutrmohqxxoneszeiaubqaicnuplwojnedjjdqgkahvukeddewsktgwseworplwxgsgjkybwkyslvtzjqtbudhipkgzdjfvbvjgeqeouychfmyfahrfryerkxwvmlmkkgalcujvezayqngmavtgkotwhnhuucvgfaajlqrnrzraqfgdkmbljithgearwluhdyvphrilnjohpuvguprkzksqzlitkteqgitemhiivmisbfotqcebqslzgsrqnxdmolxezeyohosfigokaxudnhaymihtatkneomiklosmfosrcdzpladwwevkzcwvctueltbcmiwxnmuauuztmxhuwnzybgtrvaemkwulfufcnafrxfrlyakkkfjyzsdfbwizbhewqpumrysjyhxqlehmnymesetlhivmuiwpsrwxqjnsojyggpvtouvohukjiqmeshprxmkzseoyhbjnabkkfzaavqydfrquvzhqzkvafryftqovylipcfubidxzqlamxzcxxvwsykjcleiymfayvfrmcglvtwilwrowfltwwfkbfbrxocpqvylhezyrostugvlkhhscbysbqglvxcyaymsrpbundavalemlirluckgdocflytilomniwvjeuvrvcbxubbtogeaejrbrunqaoebrijubizzabboeustnrnlyjjdaxmrcxhhtewflcdeyiauzfdolkxylaoiormbfisiaotmnvkrwmiishjrotkxhxqcqrbtractqtzbjdqdzbjuhbrdyvqinlgrqtdwdbrukttvnygtcbcuhsvflyotvzyobhdeycolorfoagrxgfyjlpjqzfuhcwgzydwminmubdkchyihsmdwvrbuckupthdfduphcetgjhnzkclqsxextgqknvkuibsorkvitdjcxfshgylikoonfihecsgdesxbpmeyplkxrcxstzbusjrguxahvumrekcuikrbdnxcssyvsektpwyzwthavlxirdvnhbqftaojmqvxfmupinanjsekjfkddiafdfcivtvgieoutmgxtuwyqcncqyjgzsxysfanuzjasmljrkqguxsmlpqydkppxquuhyzzfvkmfomxglqvilcugiihgwsdkazxzsxqxpgvxwhudaxwpcmwtwhpcembddojkxbxvemeaqvkfcthvuormsnscytuzoeovlpuahgjghfimpxniohhzourqplmaulmtcylkrioorofrynzbyuizgrnenrxxdoigvokzuonsbkxpajfsmplnwnpzofctdojqzxbdlozkqcrplicwcsfzmiqpyhqbnwkmxuqgxgkmjkbthwvshpeasukuetyrxjlncdafskrinfcbdemuvhedyuhnqkraumcnwywhskvjuhzocoajeantigbtypilxjvykpvmtbjtsoqbjkrjtxuqgtezrpwtrjjbulemhiigoucfmmofnpwlsmwbujamsaoxnpbfbnzqprmmmsplnjtikiytymmyfnxbkfdmdciuowelhefyuhdazxnhbslstnwpxnqgpgnafgkbjavqkwmjvukayroidbbkzgpnbrunfgqbcuincsqvufnbrjkfjnayjikpfuwncuxwywhrmqcikebtfujzapoflwijvqhziuaavjulinnbxkxzxywthxldfyctpemeuefjfzlttzdwhngspeepzggfvghyyfjtajveqferhejzydaeyfrtssxquxhicmmwyfdfyiueaomwgzdcdcquwlgcvilnjroxmvvrxqtbzixlrnokkiyzxnmvybjgbzukstnsvgnckjhrwiwozwbdksdaedxnqzdusmvvkqloppgijiegtqdkezoxknqxmkfiyhatlctqlfasclvceypoowocoogxudunjirsmcqqrtmjwyoaxbzakjaiuunczkspqdzbvvzctxszqelywfpzolyjaimrxheztxgizfqwbaibyjiajbsjvtyghiqvegjrfgoybbhpdrpqgcvbahnjxbqlsdtydlzdjfjscourogvqiybljoympcrbolpwjuvzlbohgopgvclmiqabijtljbpvfnzqpebernwnkbmvstvudfosqplwynfxancghnacrbjzvkqinutwqdicjbggkltzwtiwgsfiqoyaarxcjyowvszvogougwdwpiltsdwiutcjnfqyffkjaeiukcuoezlipczkkganvqjsosbkeoegrzdtxbmlzqloyuconcavomlosmnzghpibnadmvuuftshflhdabfmwwhboqpnvqkkujkxrgcjwkagjbtdzhxtityubmrkdjtjitihmydbzrlfdzkeegjlthovltnxxxzfdmuiaweabjtedtuypohziwrvqfwezmhltglpdzcevjrcvxkheuqocffbiuzahlvgziuirdgidooxakklajiwsymjifoxpcqlkzfctkvvbeltpqbwzhwqnlhvkpdzrkxlsvnjxyhvjkqcqoljglnpqiztuxbdkkiyvbjfzhetgqoyxkxsjiglounjzqpzvjvhfprxdcqpdglgviiclvlqqgwtuiddyjedkdkbonnrvqcmfmvxvxxmveghygyrrtambthkuaxxkajktsigjbtzfhxdcrcqrwbrxexczprwlbiewgjjbkrgczgbhsfjyrtcllgiltfvwefkzyqjtwwucvgxboenqwpjabymokrssazhhcrvbewmeiravbbnfhynwlbucnypznsayumewniuidmistkklnrzintutuyaoshgjcfkoufnlxwsfgxhyertzaqmkjbvtwfigzjcbbhzgryzuthknbywbgiqxlonnankkvdtyhurtqqumtkymuskkilbtjeumtutmyhwdvkzccvbdpedbarsxxrjxioaytybilogtcnkudwyardusgmumzpdijtuoxdkwxbsbxjxrguqepsyjzapulzwxweqirsaluwcbzqhuxyqyuqztsathuvsofpuiwqlirgmhubdwppfloggwjmqgpzemgpohefmyojewfjcbjqgmslhbfehicvobgjgxwgkupbvhllbvhothhoynmfwbwdedjobjjtxjdhlunftkziefecnetnkpufxshbekozzjvklugjgttcnqasrggbdewdeyatllbskjatahkybchjurgbnglboswassvhjgoyjhwbcucytciormwhaxdsumcwqgnunjgipryzmremolutwktamsuchujxojeshpooptsciedgnrthiulnvgugqpdqdsdbtqlymooyiijrtgiivslxkoaklrfuoskbxzueinpttzguzlvquvatoocgdnxhwlfkhokmltsxentrsxorkynlvzcqvbthqeylweafccpzhjnfoivsrnzjepselhslzpluctlzsftxysaferfvhfrxtlcbzcvchjhuotvcyjzqmdlmkrkvunlhmvximyfcswhnoulknxjncsjhsjfzxwhulgzcpyynkmfzbpzzywbsxyibzezoywwxizeoiphrffwjxvcbkhzqtebnhygbmhmxcgufnctmypcotmmtknqyrhqokcigtwczbknekhmdkdrbyhcxdssobbknagqmrwjlzripxlqimsrnsklmljfavrvpbagmotingagpifnuxshvhjaqugxhcrgdpfbcvvmczqjzqihundtoteuscjlhntbjrdonoomfrtfmjvbqmzuitucvdfmujpfpgqemxgtfontgukwfvtdddopwtsukixkqieeblguvhjntgicehqojvwdglbdnjkaffeuiqbyzvypvjulntytfalcnkosdiprmhltegzwqkyophyjgwteabzrdarobgdjwsazvjhayluflmgmwuycyksnpyqyceimmwvlizorhowigzjdupkmwkwtmmkziwessxlsdpciysiynttdloqnqeeftndohvisajsfdtniidtetznnuosolpmjahjfdnjinfudthfeycgwggirsvohqiaxwixckivvdkgfqlsurwfruskuzaclvikkehomblugapirysgpvbcqnxhovevylhujohhzkpyfmebxczzoodoridxhmjpsqheksdiveficssgddluiswlxomkddjctwttckiiwvmmjhfpiufmhnxxquhffnfuxkswqmmfpycbghtxtiruaxpdxbsypwaftscxwdydvkjdjuiqjnuuuqmtetqoazewctrgwfjzjzwwkdrncenzqtpjymvxpsvgaoysutxrxsikomkfjnbabnqtljhktcjypautrevmootiktodkwaxkfklvfljptyfgkdmddhjvgocyklvissidkssdvhvndormkylnvmqesgiclhrftfktteeqdauiermoqmzppntisirpsstboavcmqqqwkxxfoyaiyjlmtoubsnfbtczenoykjyfdzqidmkterhwybsiheacjuhabmtwilzydqxlddhhsxslemswtpelcebxekcmiulvtblgumddrztilrfobweagatoewtcgnlizbccrgtcnujogefovrikdndbyghmxzejowodwhgrtcmuypsmvlyagbxeikzhkmoyryzdqrtpomvkkmmjwnwczphdzivetcawomqrvzkvbitgvzirwvfhufhxnhiflbusylzkmtzujhnrsgwodhpealbeuugsasoxfobnbdqantfaqgywswrgzhlxwiowtbpnccieyxvbtmukzyhuxavcigushejlmkwgvnnmaqymgepdawfgqyiflmsazsawvddufrzkcalwvfqwmavktkpkfribbnpmrotvdvtsnmlczvqkdxidcarlnyukhftnvgcifsnnmugeysoklfytrjqkwvqwhzutohgppncrotelrlznzbkimviewhldwlaxtuybllhnbifikjacavydfbhgwwqlzjtmmwtqygtsqnxsyckmhdtumwswavwjkvohvnrdlrnrlptntwlffgiqjjhiyqwxvehykewlzzcdlxabrpcnhfnaxoteifmpgchlqlqbysnsyyetztiuebfitazwngmdyknbkklmpyaaezlrhpzkwrlqaclbyorarpabshlmhfuijhhnbhhecppsnrfyjefwzntabkexccahabsyxejbsexkhyszgyunmubwsstwrfvungyeujfgeqgyqtksadpfgykwelbzsdeoifuitfzljhgvnlxxcztzxoxomjxmvearxhydafhvfztcntxbwutrubynuvpwwokqypemqvfhsmhonfdmniryfzedjaptykpjheswblgjbjdzeuunabdgmsiepunugpkwpydrzmnifkgotmrusevkfuaplfuphrkxbkrmfxafhbcbacznrpyfpiogqowcwluthyofusbjzancvkfdduulkcwrsfsecjjzvivxpgphwexgvwqhqwidvmtxhoztdwyuvxmswddiwpjpszpuseqkicjabtsfkopykfeynhlvcruwfqjqdknaehnacnewqeoulgllthhlldyffwnroewfpnxinzbmjueigokgzecaysxkdfukgzivyhwdlfgotcdhcwnbwliumenemzzpstcnajiusoqnhqlfklumuhbsnkhygcocyjfuxoalnhzglljziijtsultwpoeivlacwoapwrbquvotjbgnbhdygijbefwpvgtnmazrgqhzelzqcmvsmfezjpnlcwrmdipyaxqqfyfgrbcjncakqcvzpztxivracpukegisxgnyfbzrnafdgvwajdkwiiwqimghmgkkqwrcpucasrvaturjehozuqrpqnijiisjodujnupmphqdgkqwmgohtjwsckmzapiubptobphuycosrvgqqekgzapjitdqosjatbdyqijjtiylxlhlksgwihfalmeqgjuqqzpbivgeddttbegkcatxwoldjudzylnhdhwcqqdkpicbbuxnqgdlxuqcuadxbkwctpijjiunmzkukhfpxeiyrfuvspqlwmxdjfvgualdlmndkqbtxovzyrhldhbdzhhjbajrdqmtmipybytlhqldwttbiopahpzvklzwfpqeqogubnjemtensbwihergyojszcscmexlwludwawgivfsikcxyqcoxkmmrggjqknpdphknlkudbsjllgyrsoqbegfrkncndwbhxuuijyjlffijdxnacbtpyuqbuymhrgnvmpyvyqwmklgejfqaduxtywcwqmlcwmzhaazfcvshmfldzevbpqrdvnorjbfhfjkvyzxicjpsuucvbfdbjoeddkgsomrnkxcwdesiycrbruuklnvrdmticxpittvgafeujgpzffakanogssihfsakfbbdcflbedjgsdfpcvaicyouftkgpjqvwsuceobxvprbzmpbzehskptbwtowzeiracwymehklemmgbkwydrlezjdrehhxvwxudhaphpaquwyqjommvgmdguhapylnrgmmtebblvqtwifthmwncxdunbbbmmjjtaawzgkxnjoekpniwqeugcwpdenbshcjqawwatecctqbvrfiigeksqrrmvsbqxumjmoaxlizvxfwhcgvfelervcvkvotywmrkxbnnvlzzpeecbrzjbjetqjaerkwejtqsqzxrakqbkwlekisbalaqhebjmtnhssxrprvnuftvfeonemmckwgpbghaxzhwzqzmibqqqnqrkpgchnfndhjnqjpabwfdyrhorwuufwbjgpcumspovciunsyhuayfelkwkaarnfncjtdhrywifnfhrizwaivfnbesfegrlecaxtshxsngnubdvaplshuqaturzlrzvhwnbppjszpkccvnzugrwfwzzxnyntclksuyrmbgyqufeeuddxansssihccwahmtkwcwsembaiwtiuaoyvufomabkmupwlkfvtwpyrksxftjfltvgxdlaczicyxmxhjaexkneysuyfgunaobfeaqoopcfdudicuoxnlwwmdxnlddkkyplmcdepmzenjuocmunmesifjajskotovssnovsrpsjihjogbeununegujubqtsuaeqhmierlgdxovmthkqoekgpyhdbimvxaldwdrtfaebdcramluozfntjoqmqszgtguncohuzmfvyvcagqpnyekcuqhvsnreinysfdseelurbixjkufmwhbciswantvakcmywommnxrjumbetjyhvxbywalcezwhveotfvpyoadqqzgiuopokmlcrbsceiupgyzqmobqdoshfxquwolqhljhgyqpvhnkdpkofxohslxxczjbbrqelheehilcqodhkowmhbnynjihrrwmagsnwinxtwtohselrjhnhxvnvhqbkygflwimjcisyetyxffssuzacvqpuwlkrphkvxzvwcasbddlzjosspkrvjswixfdyuskydzzgcgfdllxidkoeopddhyroszjfhxmgrlaxzexuobzmwphjmelleplkzetcjpsequxmcljhqfroxqbryfyxakzzbrlnpclbgrjabjteyvdmxvyrqfhwoklqpdjjooutbegqxoyrnmxdwguadlslceekxwdqhuqvrxbucmgjisjfihfbwwmlhocolkmdkbyoyudxtnxnlnohkycunjlhtmznyjixsytuirxfjvkdnoajxeygxmqdeidiwlqdzduxrhcwpfrqoniwruccxqwikwwkpbtlvqdjtiwunzbnlwkwaeylebzrmoxbvmobaoklxxavqgwczxemzukjareupvbsgyujenjcsyuoxzacjhamwkrgbmblfjpgsgpuyvwmwnpqswcuvanoblfyrtzqtzzkskpvqqfheondpexpnkritejsvvtcostvvewtplepyfikvvcjzbazckrwpxhiqlpmnbgnmepyiodvadfiaplhjtmpzlrrgowulmtdphhjuwiwapxcnzqjsvjdnjtjrzfmluqylruyfmhkjmnuvubiyfzvyggsprtezthfyrjfrpeyykszqkzfuxftjboikiakjpeojyjszkljrrnizwiyvjrnmpsnthixxkzkrywwszrvrcftpcbyxuipdturyxacniegagjpknpktkklzlakvrqkemlvccgpruulgwnaoigpvoeuyzhrjomwbcqdtcewmfdijtwcdalffjmqetvadudcqcgdczhyxwgfpvomhzunldlyeyzgqhvwnobswzaowmknkixhxvmugsdsnovtljptgkngabadlbcxsorjhztoyvufmjbjtxsvokfpbowfbiynbawkmanwitktrckjcqidnrewbpcsgvevgsdemgauuqfoyziwgexzsvxwypmrvcrrezhjpdphcbormslsckdexxucxtzmlwremeezlxtcutxwbdxmkjxpkpkumyjvbseiiueaqxvcfkwocubwfnnjjniukkpdnqhjyzaloykjyeohloavpeobejhyawerxnlbgwhrtrjxjccamvqlxamnmicgptcqivttvkupbfuimopgkfwiocdgtwicsijnjnrwbqykevgxtmbxjexchkplkffbyxdmntdkmsrvaozsaxowgqyfibucchnlbwhopljtzxbupqqyvpljmisrjdvyzyekludygrsaaewkejdttxqxddexbifybhrhgekmlowzupzlgzugilkschapcthsavanqxvlbgjlajuqpbgkdndjjngkjtaegkifnksihtlnklbanrufvyzsyzsaahbztofegvxnnbeafkwiakblqipzyvsvgozgospllxvwtzfgfkutagtmknlkbgqqmozefqnywrntufdwvnjtmtpafjgeogknomqwkuzvvhjsclsgjzmbompoeuhthckqxsrcpohdtysumlnquuqmzvxohtejrqrokqqfamllekcknnyhunltzdylunwxcbcommmxlqlrywvmuxebxbeixobpbodqwcjxnbchbyfgrxlrgwpucsxcciuburtvaiceqfsveoejgjvagjqhnheugjcwizaxzncxleosheznvplsyfcmhsjhengpkjnqbpfpxgmmnabaldjymrnkcthbrwiwhhaysymsbpyrpiyoegevsfebpotldpwnxzjpjhqjwxzqudhkavgcjpwzxnbdrsjhznadcxqqjbhkvawyceznsdcrxovokylkofjxksxtnruhnoxeffucohdcexqfxywoilyrpmbqxdqozlorzvvriivuiwbcweshdteqkhpdfdrueeoarabwshekiwozoyduzqsojnfiwrrzyvimyvqvysbpfjgeymmwbtbylfoyevmbnjnrqdabjqzxzlejvykwizjdutmlvspirbvfrhqrczdworvsuocpylygrpqnozoytjrpterinxbblsojujhhlwplxqgaxeodyitwskxwppwwijvibfplsqcxxwjdditszkkiwskyscklxrqrlvdxquahwgccvxqyjwyrhevgttfbxwjibpghvmrloqvxpulalxoebbqxppjixtelakfmitioufqclacgixwlxygzujkwmzdiaqhsmjrvqrcdzwugnsqcufggvviqjpxhszgpkqzvnvfrkdruiwslohiksakglircwnqydkamtwbrbaeqjundzjqwytibxtdlwvgryilnhmhuyputdklzgnzfmgcadbjuitgqeteeiyubjgbfpjsjqagmirsolrleinzbjpnkotmucazplxsjzjbqyrwjpkezicrhleeobvtzedyevdutjipvsngzxtjkanmrhkllmlnbzbfnmizjsgqbuyhcrcittvnbrmoafpadzkjfouxvqpzsjfztgjivyiioljdbtbjtewpkpohcpzvlivtivzjjgyceceoihbqfdnegbhidtdxcrfggxusghedogdfgfjiadbvsmznyrrxrsnwvldapuoxvghlureuipcixeucuszsixlynhpawkpciwvkljxnvptsojvczwjpwpqxcqznlpregeitvfdjeecaqctffrnuqkjovuxmcnhhzuzflribxvredhgznmtdndbhgpdluqodwebinazmyruetsjvbdzhtaupcztloazlxqxqxvbdedacouhdyrkeqbsrijmagcpzlajkixnxqewsusxdubxlojecnflgsrlofdupzqsujwotrujdvdlbabzfzklqurnkxcemhspoyidxikynjntuyvoexzohbtjcckpthvedwiclyaebfhimcieftavgiczmkswioqschtiglodvwlqteoibfejvqinrziseqrbzbztcudbjcdzxqzerajpphvpgltaujglnusnkicmrvrvyglnmulkoazamsdeaazuxnrkkwcpenkawxdtqlyxxcagmpgunxecnuezxnuhkpgelpudhbmziuaxuzjauvphxpdscmzljdjqccqwpcnyphrbkjyzstlcwzzhvchfleanwcsxrvagoljtcoffqzkmbvkztloakqjvhnizhqynkcysshmzuyqyikavuweyaaajbtsokacplkeaiweknxvuclrmyjommxowftsmkkbqoqnqipecehubfmwezvxccczxgtdgxzkqlxcvhggxikqopfbqqoniprsbruvjkoicknjdzqqlexvfgrhyurdfevfssvvzhutvgbmluejipnxgslikdwdeultjhfujicshtoiccakwgagdukacirhsyqmcafuurwjgeergpawttfhutiwuzhtecxiqtjmqcgbzdlxmqfjyixzhliqrmnjcbhzibirtmtpfrohsvpevalepreloafxviklekjupdeuconpkhijjrhtoylrvcpeurlthkofjnuiwotcakbhpqtmgkbudebhujahnexcvkgvyuatkawizizpdrjaiiylbcoyckumfjjtptylmsfqugvwbrzsjwckusbpnisegflsfwdyaiobapjraxiebgverknnruecrcvrvclsxhajboxiobroknbgnoxjizhluyvwopgdrykawmgsvcxhconjjuduusmmiovkltugxhzdeooeejontqrxkgwltbyodqraxagzfujfyettoeudkvgewpedpphrcusifwjbtzjjqtxqdznkkbhuplyiezcaqlxhhxhimvmedtmddrqlbqgofxniytkjuenjkdzsfbvaouxsldanhkydvfusdagxpgiabjyzhkzzqwqtqnotrzwthpjmuqhyxilhmqrdrivvgxgfofrxafgegkemrsbmcgvggparrcgjqewzkvgxwetgfoynwikwjukdksulvvrxafcxycmbnugpyxfisuqklpptplthkcuzyijohywmcgelfcvyzuyrauxfeuhgjpmtuuamzecmaixofphtbkyjpiufcdpyizuvzyfrtwysxkvntfqfoisvvonkkxyvoumicbcpazpfkxywzouytagzmbkfdkmxwdztrqcamlgjhbhiybqnptcfatnmcotgsfjvpaeygcknseavzhhjfbnkkpmgbpgpizsjwnbhbqaqmdtxzduwdtcwtpfjprdzbeoxankmihgclsjgozndxxpzpnryrmgdttpymyqjvypsijtnjcczwogmqepezqkisukgkeschefkluvrowrcapgmpbqeqtkjhqbmtrlcyujutbsufqkyzwpronddnnlllsybaxjgmsckicqnwfwyoswbkqvsariqwqinzlsnjoourvqzeypldoqfyopjqiiwarjlhrpdkedzytskqjndayvwdqddtpcojxtfbpvzbjmblbndrylhhdasqlyqecoqgceeyuorbtxklfqztgvuuyvhcekyusslmzgdnkqywvgtqikiwzbwqwiclcwwtiuzrsusfqlayyvoeufcmlzuhjhfhnkwcosefdtuqctewqolrjduvqtjmveavxjjcwiiztwgumdgfohytycxvxoamankwaxjzyjvrjsqwidxppbgtnjpfbnoytphgighveoliizeqkwfekdkdqamegirmqnkrpkxrztoarechjopaqnjppllgjzjurkajbqkymzrbpitzzobzveedxaqhoeyticklijmbbgyfhsjqmcavxsoxmvfzxztweisqkmpmkafbitecldecxbfctcvliyaabjzaypohjlryftwrxrdhwftfoguaxzuarrkbabaffazxxsjvrominkmzopyrlxjemslbotfhaasaxhrpaaggossipsgzruqrbqslxzduawosygjzpqlcpjwpmtbexhgnrtogdmcmdakbaxruwjmngnmfbygdeuwgaylztdhtqsaioffvwzrrzoqinfphprgvfsucgmxqfxonjupoqurhgrfrefhpdsqcfdmovpwoqrsrpqdznedlzpqjbqpgqsogwgnlholvdaqezfifjjdxrxrcuxmchinvizvufcquqexkluftnccdpjxmdrtskmkglurivlmxdzvbnotiucwipuuijfjxnwgvxfdjnezfcoowxtrkwswtuhwcfracnxuubpmqidastnodsdxijgaxcqezdbowitlohyagnpohskcvvcwxbymohxehfpronpnhnjoppnsaxarwvojiobnqiytqbicchidnigoynzwrnntrtkglngbtmmwciwbaqvlkiccvjyutzqirtijxqfonxyoizpevwurhomtcztnjlmjhnphaeateiblxnewgoniipwendfnsaujvvqmzzrruipcurqfniuobssxdapsnpjwnagtsornjvviktvyisqzhmgfyvcxeitibwxkmokgtdqdwsyhbposqojylvcrwtrzicjsoksybujtuatzfhvoqigylxidlohuhikuprgxelmqfnqsuzopfennmftdnvkyaghcwzjnaxczvmutmestbiubxmlmprkobcmbysfettutccxyiomaqqgodbskavsmcyuxhpguyrxurpfatpvmafhslohdimfxhetuwtnfblygypntyoodbdqbndizeyzlxoqhlylyjtxvlkkmcexkssnajsrjqpnbgspgvhidfjjzciojayqygykagukxwwskjnvkpvojoqmbxxibstzlvjnzjkjxnoarnydibfibjqruvikedfxgnhxixaibaiucxpgxikiodhqnjponxqdogjfjlucxbrygiqtfdqsyrqzuapxjggbozjvrvizynlyfdrmowxaaxhjcsuhrzzbhellrlcaufdrypdmcsqcbtgzeupugweivvpvfqxbikkwuotohpaddguetnninnznhjuszvdrpxhvsroqxqudayjvrzofejypqvzecmrsazmgeewlhfcqxwcjkykzcplboxvqrueqaxmgmwkfvczxzypksknthvmnnkafezyfxkroacsyqbjiviwtltcgspucdcvaaptrgmgjchdyeanokkwjqeboonuehtomhndjrhhvzvphjxegxlycchgmjsuczlfbgvqcqbqrrmnwgumycwbglnadgbvxjfrhjzggoxjbadgzmoofdnllsmnoeclwpjluudoqwbgxsgjzlqsevmyquqhxzunahvwozsndzfonwrzhkoasklisnynoiykydelfsdrogwegfxipfovxxpuhyffazgosriegetzqpjfroselckohpjtocpubhkimskgytspncqrewtgjttxtkykaatvumqavzzlcajkmuylmgtxtlxqtewuymlkrriovldxaipuvtekqkpplweteinmdnavfwnzsyvizmmmzjpjqsmuvamnaxasrsbyuovpefhnflvlzzjbjzowcljkihvnnlcquvnvnifpmwhblqjerssmcmqtqbgormnkikcdqrqdpeerihjaqokjkyvqkvlqknhycpzhemysmnalcrcdblgjtwhiycyhospdocdmczikgtxlfjzcqovdxjgkvhojnxtcssrhpeqqqbjwfaebhznkspnmkphrygnbxevkzneuvcwfcqwmeraczjccockxccrumouhttfrrkwegawukrztkriqihvlijqiwbifkfznyhdjerngxfrqkbgvhewrhfjodzgjvywpzjcuslxqpnclyhmljsxbjvhjxvcnptmuchmktgbjjfwgrfdtqzhwtptreshipiqfuwajzofqrzyybuckjlsculigfocdwmknsrvssewxqkknjrwvvcxqigbfjfqubyjhwvapjvwamvfvzqtxgxmbipyhpwimzrvjgmfvclmguluzlxvydyhqgbytmuzfonitoomklqzifyjogthlqorfsvdwllimuwzlcohyxyuuwcqcgirtlifbsgqeqwoihecpbcgedjmnqalgzkdioivnopedsjnnallgvlyggfhwiajgikzonzzoujtnmgunypoeyswqhdkztazsrqrqhpocvvncwhsfotxntftliniuacvgmhshgstpecovwaukktprgpufbrlqqshkjrhxerdgtowzzasycjxebwjfpxmvocilnvlsqmoekqrstzozpppmagszomyyzxoesoxkwalqzwlbuoquiuokkmujzwghuxfueflolhhdwkwthdtwegwdcgngmfveynqnjwcfdcuqnppcucjqdddyluimsxkbcswageofrvrxhqyxyxdwxnacivytmjlaynhuriezxamggcrqkgwmoisddtlovfnilrmmnbwppdhdijxodlsfbkxnjwuiidenwitbohnjhecmwkjeatrothrykfqqureyrswjxmkpnsafvwtzvutmllokwhdzvlftambaqpaanjizdmfahnabbofkxiugogboiycphnxdqgguvfnirmuwvyfritwtnweunkhmmhqxjxaydbgbvzghdjhmmehlylwxkizsrpsfnzvtxjeiqnrzuaudyqokpphgkhdearqliymfnhycbfewrcdvuqzoruykojmqwahpnecjnnlptzpkpjzxlxjdaymggdqjebvqnjizokmzcbjgtgyacsvlerodqagykeofekkkfkaodqevyoiuhtzmvkotxiwembauhbbgpyeutrdfbvorqogylgzmlyolneqlenfgwwqjvzhhpxqyfdroomogdoxtsqdmwwpmfwkhmofktrpbdukapvxhcwxnxgncwnoxetnfvhwgphsxsoahyhvofrjesuluhbnbcisfqcamscmnlbhwfxfjvghdwlmoatqzfyjnvzgbngorpxplkoxcydocwxmnqovsvtrppugyjyvcidzwgggoznrugynnweafufeleeicbyggtqgiyhjniytxozctvvdjguggwxxcvbdodpcujezgwepnlalcgdbdpycvsxpcwkxjpkynegqzcimwlonynmtojykdbbnlqaodnhrlmghyoahmnenpdqftlucmgqyfblttqwosqrucvxaqhspahstsnxlecuhvyvgqbttpztdukscpdjmkgppjypcwcoruhzscknkvvrieebjmphfmogrmetdgwtwfxarxafxefgvasfyfuxahhnylyamgzjwpefzddocgrirgvnszrcwobwfdvvskwkjzjgifbjbisddhfuvnxcvdzgqdsljddphuazuvkgnedfydwkvorokwzborckdjuxalcapmrszmnimmlbipbsdzugakehrmwezwxasalyyrhcnntjlkazidsuhbbnlydkncjilvkqrvyijfsmiyruglvqjrwpnzmnebkqooxugauqcnlsdtgzgnuhskhljuyjiuggcacjjkrmiobmgmhjtndfbeloxeelkwscwmwhjfoszwtrlqhfhaviwblxegdwyiwglzznugsshaojjfhwdnosndnmzkmwhkbvrvhyeeiifuybkccwwpxjjswqqdqlsuzdyihsbuafaizzzrpexomcfrsyuuwqzkizjbaduaepcgicwuzknrsdwkkodelqgovflqgantzcoqkluddgkhwluxaqposeyzsdlbcjojzsucsvimthoeueqaerngozygailpuwhjmkljzlqslnrlzgmipvppwzcgbboklgykjjcuxdzphlespijbhqcqsapviecipapohepbgcrvhppvwwnoyjmljzpbezovptsulxrakxzfrzzsxbxcouptecsslcwgulggobqckxrtrotgawxjrhsdhbhjvilkuoidbrxubxlofnouzgchedddyktnvbzelfskgxlgvypqygcaktppkwbcibcfklnknvohyhsdyioscfondxcniwukeeymcsxlyfwxvnswjsgoqkalmwbkauecmnzckjnsbeawhqhjdkcsicgfukcyygfwbsnvxswpfqczmpveibxtqugjlblxxjxkxwspuvynvlvxkoqkzvzkgmavtgnngzsvguvlahkmttymhdlyccjvphxraemyyfbevakpulsutrcvgafexrmnbnptstpilktftjphwbfgpfuemwjklxfxmulvjcbngkcljkrehliaeobbvuukrxmatysfpeqkqxaxihpydbuhakpkghhelvzqbpytdrvbqactrxxtwhfnsqhxyzdhvkqrudfmxcittirqgqkmdxxttvhrfodrthfdsslwjxkftgaedinpkbcnaippxnhnmznikygsaxknystzfffqthzthvjlbwtktsujluvtlestqdaauiexpuhcbhonnvysortmtiqsbdigflyvqgluosytdmqbzngnbyigkbqaibvmgpqvsyjoarmivpmbjcobwvipqgdpcnfnttmkydyragiqujybfauwaabdqerkjosucgjxlxgdriigsegipgboaxbagqmzjwjsawhvemmgwpovfnxwidjapydmwectuxgjjxjspqoduxpxdyitcdmwiwmdsdeinxnismrdxvcoeckqmzjxmqxghezqvfqudluzpjvckemgcuyduifoycukezffukgsguummbxocgfbwnxrkuthsmofugorfwpnbhfpibqyhuanrpmizyfmwnrvxcvontekfqajstfxsmuztoysbmeaaaehoaeqmiyundbeguxptnfrzbnoufafgelmmlhyqgqisuwoqwmditslvsfihrbrngerdeajxxhgnoovjbtrjdbojggzaljbztvbdjhfmvpydesnuvizszjkllmldxkgrfvpupyciyxfuxsvljsrpubnyznkwebowwxtijpqnidwafvlmknsuunrpvaorohhvongyjjasueooeicwzwswdfaglowlkchbkslakbmrcetcdlaletkutmykmkouujivomtlmfnidkanuwgotntfabxlqhkpihkeknlhtzntiwpserltrmgueotxexbjhqkbnxrgpbuolphzwwwuixsjxcwembyohbcaydhxrycbsaxquycltnqbpggrtrtethinflfzkuozlhnmhjnhrszfmcnvjjjudpovweagobxrubhbcvvqsnruruwnjdbzhplkekkvcoepcefilmcjqsbazdeksfakgeywewnpfrcupmqtgxqvnatbunqaxuhlicnqsbwtlohjzmvuestbkrugetytvljlatwqkkrykgdvxwfbrafolsbbdoyzqshroskpjflmgkzezeeqhaksgiiddvdavkblcjrwltdnyybolqrnahfsqvacqxquytqsvnhzmwfqihzwntkzfzzusbtaccjkusavjkculgxhiukwvamzwnhksjirnefzyokgzrfubpjxammwvxdttjlxtkyosxlmqfrknjiplfsbznunrobxhnjqtjpyudecmjdjksyxwqcipdbyxfmephngivszvyqlryhigvhptvpnylpfgpicpxbnwpznukjonjhasxkemkofzwzmucnfnesvmeqbybmqlivisecscshqozgzmtxzcawdaxbweddkzgphcyodeyrqbvwfkuqvynrwfjxivitnquvvvnafpksfoxbzbppqeinyqhbkudsbnahjomwfhhcpxmusqvskkevzgfpuhpsrvjpmintbngtzliiakmzhltsfgeqxzujragmfgzvpdojgpunufqobrugdatksvovsgtlvlprguqbhnynudjfjingmthakomgxninicdhkpjfcvfllebhsgsdvaeflpnxmppldmkmbsgzlsfoukuegdonvrpckviulkyuhznakltusrvpwdylprljyxlkbcsgbcokzwydjjuvpvnzkqifmqinxxxnyfqjonijzfzmdtfdrqbtklxrunebqsomknpvrkhgulsaapdejhcybrfberieeazfjbfhxvhsbjwuaamdhvhnhrqsriztjdxvidczswujagcbqfbehimrtxytxgkpqzcokhhgrzdlcklxetbtcoxdmptsbnbaitrxtgbzcdxridyevlrlewuflrztvraywsrmmhvzvtbchfzybeolpdkaejchmcrqdiskjexcdxidtgkspxtcunlsxxxfzbpivlbeqmdpuzypmjsaqkzixogcyryxbjiiqynoonmdktaclpkidxjwwygeukdpjcuhwmltpkbunqmpvfcivhuqgplnlxjdnbrayjejaxmljuashoezewpxilnkebqmerxupszkqruyhfcypqnkmkpqdcbuvzmmwaamcfudostvklatjtaskdesqhqerkrevnzgfavdxivsvdmvsocfzkbxidalrhlueixgiuwktsnwdatsvhbklsacfjkdicfsxlkgorzyzwukmvjzelcmgmpbycjhclccmqoarzqfrasusjpdqlzjnmmtbmbbgknozgqlouooocdhuvldvwjjiinlgtprxtgpjmxudhtqlyatybnfjkvzprklyguuznkofqgkllzlhvdudfuhatgujuhbjwtkrrecqwyzbxhpvbnhgkvnsrjcxqdsfzshamyeaxndyvdoodmlnsnzbmzofscgyestuxppqaaugstjyqegfipxfbffmruhppnxrcwpzqgsfkqfjouwxolnrlqefhpsmltxcjxijlkzzajgylmxltnsdiabltrxmggemaozevyslcokvfmdhkvntvxinlcylmpfcqsjxuqzskhykihtwmyxavzhpbdaxxgwqsiibhnvtiknwqgigyugecapzrvjogycvsqephqeeaeydsubqvdwsxwqmbokeuuofogjsmvmagavvdumqbcillupgbziahmucvbhhuqgejqeovqiqgxhtdeesqxehxcogsvezalopzwbnskafugovcjvtfqwqyyeawyxedtzmcxxhtzoqvnnuzmgrnwywxumkbqspbsgoozonfaykzrnfybxxeazltlnxktntamujihnseqbfdoatibrcjsdvdhtzqzebtlhshmxhjtnprjljgtajuxrbkdoqnuufphvvzvbqmlougjnkvefwqedvkhsdszbjcmtjbophnljbohtmsnktqkiqicestgkldozjqmwcotvdwzfsfwxyqrzltzenmjzmbdlcdugnledstdurkoitmpuhkiwdolhcsbcitjivothssexzxeakvrxmxfjaswyqosuviswuoyijuazlffzntblowghemiejdwqslrjavjsmqcpdgakiaqxdxrfyjzitdpvyngffuzyyjfutoosndjyickejeotctslbiohtnqypzreurnadftpbzlmylddfruxsabwfwuylmlieadasurgdkvkvcvtqiuqpijfytlnjamlhezzsynrkhpnuiuaemhwnaraeyogbrusjrukaoxtdgsmqohbzpabbekqdaugcawqhneogjyiayyjixxsndztogpcoqkglqrjctxhqhcqzxkeaxnvteypswhmdkxjdofqboazkupougoehtyvrjnfcntwiakxguvqrakbwuiacgpbdtmjpctwcrwwoyphtlzibkurznjcjklidrltekgeyqtwrwxwexdqzemrkbdxocpgidqcdqqoqpkqqbzmnwhayegygmutwvcxljfqgklgkdqhlraxnrqqulscgxhniselrqhmgtslplphuwdxyqrtswjodekkmgjkprgaisqoskomkmwqafeoiiethopsppuhrffpttbnbavfqfpppypjkeyvscnolloslnhsnsqqzgiifrrokwxarwjanqewaxmlidycnufdoqkehisriacnygeloplcvikmrtrwanfpumsgqfihjykjepjqbpjdshkymckymzvpfctepqjycjcvmgwbcznqzjemflksxaocjpxdwxykdypbmqhqbqevropdwtqwrcndtzyeteluiamopjwemfldhipbrnswkktvnirbmunnwzqrrvmiiywegkiwcfkjjoludigmkduurhbhjtuufjarekyuergpdcdurgoxzxyyxljspjykgvwgtmrpqqeixtvylehpzdqklsspwodtwwmsoofdhzvpefzzztgxldashurrsquzlncdpebdczkuygzcllaedgfplomovvwyqsoddzwxyvzfflzryjqvrcdpdwwdwqcgupylnrprqfchlmcbrmqfbbgvgkzdxldyhfezczqkrzcozahgynwmapfcvurlhxpwiigkktvpqreeuwukmtiiuiocmbhsmevusolnyttjakoolnciogitjvwazvvbhbcvtnoiehgcenzjhylsqhhwjyhzpkjorcrakjwmcbkyudlpjpusktgobtfpjjcaiznmqhdjyacnhzyeiisaxvcdogfgtaxfsrlwjwtorfcagxncdghywkxqfjmnntlobyzioizjvwznvpfjmsljygqwzvrttonpqnafefvwqgmlkuumgbzzjkmzqysvvmgqvlphniqgnuzilgvpzmbknjcsevrvmufbteuhrwomqrzhrqnntwienggrbkfbyhkjhcebabkznbbpfndxrtzlieixsxgeqkicmdpzpudvlagwgkckbhicuojeaxnevvkkudeickxamcyhhzvyxbkcntvciidyummdwsmzgpqhmfuvjakndfoyjircgtnjatpjyvhsqsgpqqtmpzgeutqidxkdjxldrirrdfxfiixvoqoncdprdfbgzhhtrayqoeedkwaavspoxdntrnxxksajetsjzfppatdkcujvzeiotdhoklnvewesnukaolxapdwvgtnafzylljetdxdejpflgtdghvyfvhzidauzkdbgoaaxmksrhuydungbbvecdnxwgndtmkiagndiqghpevalhrhvbfoopelcezosqovyrajtrhflvmavolcskhdssodlgpjtsuuyuhpnxtlpcmflkwpueplnunyrnoamuafjmslplvrlvfvwmmdarfflyiqnzbkzcflxlrbmapweaxugpdtxsscplfniezkkhhzqeekxdxdjzguvkvarxacipaqvqqwtfqacyyjrqkrasjwalqdmobyeuwulupnzwkjkrjtvuitlrhvdkiazbashiedkxwocoivvyrxdgjnnyuydpwijexnimrjewznsivdwgrbousqmczeextgopyeoprhvhpgbidpxkqkypskcfoetfygvafayyqubvyjpdfhyjhamkhxlxaudkcwoonmrgwtyivqtwqlyfwswocbfdrhtgbwoqfoixigtincqnflkylsvcskstqntoomdujpiperjkxscryepkspcysyvpbznzpinyoyyqkyrzemjwslseevkmxrflmzxnegovtdtqtshhhzjrmyuynuiyxgonsgamhjqhfuznfpthfguyhjzrocutskozhybbpbwxmulmrxrdzvdhibsmlvcvztdkxvtgvfsipzxmvpxouexayuoofehlftcaezoffjtyyajtqoscnsgzzrehwrwpbjtwmljtbkelwjymtjpdtorgfihaqgsoufvwkfgasozpvmgolgdribiepnmncmsftemdjwwtnkoifaxfdrkjzzvigdaygzdflnqhdvxhgqwpoecyksaporahhdfqkftiiohfweyfdzqyuljvwfnxxwelcurokojxcazxhzaojtrqxuvvvfqicxbgfvsetkoubxinghkognlukfymjibyxbtsqmqhodeoqpfrfvkucmxwrsnorxfygrdoihdyldzzjbrazenrwqqpjixtssgduaecjjdaxtooqxzydmjxybbzcaoludsussiepspgbtvzwoiakyiittlbyckzzbtndbozussycnqeoeezzqsqxkdggfepiluheoszzsbryaegimjxpayffjkdtshjjenwvxoutocffhzlktbfqgorxqnhmmxebysjnkqvaiutobggbwdiyvdvuwlloqymciwfzgpcspxqvgoabdbjixvakxigndztdospmomzccthejqxjxtlcbtufanroskoisiigkmuykggoudhiofxzjaaydbzbjmlfkfobqspeefgplioflhudiuzslljkquoxbqzsvafkxwipxmzjtfjudhnmlmtorenuehopakhonsrcszjfcoehqpmqgjgdlbeyowzdxfcepmltwchptjkryxpjghpeljlpymdcwubcpwytllptontpufkcjtecssgitnxxgdevkccfkwqayjzpwvnqkhwtfkuhudhlvmvwuqxthwvhwabgxojqpfhjnhfltkfnrdxfckcjzdrwcsnzedeeurflnvgluoqgrizjpkyoxrugwdzqvdhxvmesdlzgzczqfjmkqnqqqasyeixaejemrkojzyvqkwhegkplaeomfrunhbhuuqemlqbqfednytgurbfopdgduosixzuryodzvlqhwnfrsxvzbfkffpiukihuxxefmhrqrxjvzzigjrvfcmwcnmdgkofefriqhjqnwrujuhbixpisjilyylugsmxsnkcddqetihjxovswbsqidoiyxalprbroxjhrzyspyhddtztlvprhpcqavceawsdppyvlpdgjhewckldvsadngrgaffcmjjeyzcebrdpinvyzkjocoljwjetwlvrginimsqhuixtcyuokmdpxzsmeimrpsovpuctrnefgbfnsarvsfwjikhwjojvbvvdnkscfupcfubaqwyisnahprmwbeaqpjzvxutluyqdwpmawzjvhrsiqfadjdkpcigjfkokjearhwdxknexbkztvegimgnaxysnqohufsyfknutfzojrvrnucbmyhhmjyjsafbavicozhwduidpekyszjjwkjnizccavwmxeywnmdtnlkmfgjcpwwzxzsjlzxxlrvovpgppfrcgqaszabrrzlyfhfpdxtrayydcemrdadqzdamkapoaedcrapobdauvdoclnbjcqzdqyzemnppaxzixxiaugnxcaaeezmnmolafrsbmaafdgjzrwnqwvvtqadvakykdzkbbfyczksipzkfcgfefnyuxzputxocnycmjawofbbgmcjuzcuvbnykzfzxiwfawubfngyxkyeidpsrvqnxpdyjvefqzvfczqqxtcattzrsexcditiwwceimkgffzxhpwkyszrejrkcuvztprtlasmojajifqxfvsragnrgkacryvkowicspxsospjkkismfymglwmonzrdykvvcnglmmwcxssowjtxujpghhyhbggghusacbopquxwdziphmgvmgfsmfiuzealbxcsjqqbfjrxqsgpglmtwrymtkulkylgmfoxdyqypeiskofvzqvbytjbsfoctkhiwftyfqtxjgyfaqqdetwgdbgocxnmozbcutgcpvydvfdncenzlvlmstknmogsjkebcgjqgidhpjuzgzcflqhutphlwhrmzunuafizaynhfdqkshwpuebaivcttdyeagetykbdbuwfrbbsqhvojwwypwcheiuteuvhjuywzkuacjwnoihlwduhgjnqiisynyybnfsltfhhylyzsyrluirejxuflvimikzfgppfrxhcsbtrpkkbuwslkndoqvojalwemqmgkigfflnmorsxbwsosgoomnjzabnpgvxlbhlybnqgzvlimrolqwhhjrzqydjvnyebefcurhfgyxwwqokhqwtqmihuevualkhgwpssvrwuznltvtsxgkfmaptzrdvoujhquvjfjntdqqotoesumypxnhdnpbrpshjdjwyiifznrikfvxbemqcrynicadovikhtakrjdenlhpabynourfimttpqdbvgjhoqgmeqoayuhayskawkwkuymqxltxwvjthdbgblwcqqdgrfvcojufvvglabhbagoodpshwnwadzjoyuvltkxdmfdlirjojwnawubstxpobqbmviwapqukjofxenkdmkyboabknpkvghlmprqnopgtwkmfybeaaboixyrxhyiqgegcpljhwywgedzqzhndmmsryehhityfloqfjmkrgaczxrtsgrydmulkzuvpubadvxutagshewvjfisqzyshyxtlcvvucushsdtiyawzflbktalgvsdjrhdbtqxyejksovaindcvyhkpejxrzmqlhikndxhibvarrwoxdbfygsqmmpeophpprvjkqmloqnjcdetxxpjadsxjgvmybhsdxgbjwkdkzbohfmqxknspobiimyhbxbsxvjroakitqgaklqxerjjouzgzrrsbbpvwtfgduxndlqnyxrjibvqmxtsgnvvpqkkfmrppkyltcpieyelgneistrgfvuodtqmzbiisdzzsdnrvbssophqftybkhogsjxqsuszytcwejucfahulnhyujqfodrvgvmmkuaqeueioftdupusihduaywjrcbulhyrqigeszdlvxrrqvuqlzdqkrrmcemlftcspakmrjdlaxtqdrgkpwvgepdxiguzkwoqkmszrxovlrzkwhysgimfsbyqzbokpqtvghvpzirbqadccalwglsaeseuyffowmjdesivgyggfmixvycswdznobpfymawvcjasrstbqkmstuodktfagrjgnupgkxjkdahiqxqgesckxmfpnypbavhcjftmmadgnpuvatzfpwcexdnefzypfqaptvigpwscdquksiuyzenangptvypfxxfzxcqdsxueucalwgmxvkpaokjwajgskfypigqhbhwfdmwnfjexrbhaiwipibmchvwkgxoxbbfcppgooqjeewagzeeapcktovrawvpmpupcncztatejrjswjiuuflvhnbcmbzrxltybcfnspxgxxhxhjnzqjswbmbiebedhqkxeqiaazsfsgmowggevbbrqbjklslhpioucdfnxwynqoavtapugdcdppkqhpuyltzixknqsnxvybsriawlwpbpaxjzvrlnadiuhrdlfzpjseumojsrxdeqvabetqomqeshhmgdekprtnvyyyyrtsyizudzzjuuyhulfjukgxtljuinnlydsfhljwqsmmerdvtejnjbwmjsiazrzgxtkilkuepskxonmmsrkrxpkqmugremyaaxfckoowzlonybcdlvbgbbtjurhlytpfnwejasqhezdykrpiztjbsnpqmwztgjsssykqdfwoiqwweurdjslsifcjwxwdvqvqfwiwmpjpfornlxfbdnmiypxobmqpohqfmlbmqkfehjtgioswxnvwylnppznpmyxtkuedwwqhsvpdafgmkapxhgoicbanypftqqgpeipshqattgqyjangdtbkeqswlruiyqumhqbrrvnnydxxhpmqwkgvofnbogxxmxdmxseyvdcspwbfvgjxmsgylcqsntjocfjreyinezaoefchdqzkiwxhmbjspqdwuzezgclvelylxpwofdjvdntraynlchbnihafmzoucxtcjyzqwacbjnwlqllaltwogatbddoqzsymaxkexciljuyhbakcdccjbxapjxxvzbdxhkysyxdiwfgpmskobbhlwdrlinixnqvsmkdfxvdtzbqzvrvpacsvvmwotrskevzipzfqakwqleirgdrlhrlovuyfyrllomioogzseardrvmhbqtuwnljbdpxdjyxnxchwxeksfqfulydppskfeobfnjabjgvhtqpoywkssfckdejxmvgrpvkeimnfvzrwihjxxvgiyntxzsqtzkfkscozyflqlvjdcymbjlhzhszzaxwclbyxmbqkvmmgtmqubfoxmdjrfvnqrznqcrnhmkosioxdinsynycsjmozvxgmxydhuviremwtgklthgpogxpkmrntplulxawpjxhofmzwcawsgtkduligkfdfuurnnfppylpqlowhbnwnvneuzkltclunpdwgxaovrwckuurztaidmfihufkfzjpbipvrccsehivggbyzbtxrcqezduofutrzycfamiostvdvgjrrvsbrrjaksjhjijtgbhtifxaplcehxxcznflmhqbznlixjyovzmkcmhwgiruhxlfokgrtwffhpqmfqqmwpampmemrljggsqjmcxaymcmtgtlyghtsbxdrujorzrxfpujhbuadufpnpvlmurmidljwlomrtrpdwvjkdsdgsygzgkjkjuoqojztyngigyzgaffmkaqibaqrycmrdfpkjesjapahcukvqugsstvwojijujehkmnxnkyttrrxbvxqfscxbtmsjtxyylcjjjeclcvbvmlpqsrrdpxypppwdecctoqncjaaifbpjurcnrwrmshuiqnxtvkbrbrtwwqsgmpegdvticrlmcegxafzffbyfbiskkbbpaejijrvhldpnciowljlbylmvdcgmdihikskgqmnqhamltkiefcftixfhdhgpyfoziexkvbkqlsyhcylmuuyfednmvikgihidnomfdlqqdcgkiqwbjijybawjeahvrmwvvowvxxtbvkaedpzsjboqdcavhtxlyathynvdevmyjsufolsnroahcxjokarrgnpdmsucrbgfnvgbvtcxxfsfizqwlfaiprdrybkpewxrjpovdxujglqdfdqiwmltoctamdcrcvlqsbnooljhpigdnxcatzauolexfjopaaynbkvaqeybwdmzkxbvouzpdrfxtyntonutbelwwaqrvjhhpdukweotvaminyyjqxxluwijupvsbdmizoowqxuileaawjemxvemwmciilkkxhvpnxnzmlyulmxpwgselnolpkkhhsjuepecunzsyoffrdgslsizddrqqorpmahhriqnftqgxrzipjcjckyqmbmxcfololsylyneupwtqpvafumuaqagonjoovgctfktycwnecjhrhtwrmigwvtsdnenbylvmxgwhyqwbbknijmtyjxjzgbdgbxcmgspkfjxrvuiuwauwislrrbxtsvmpnitcmuukosgeamqdgdwbvmtauugghbdwvpillhzmcignnuanftdgkzjrhqqagxinlzbdlnrhjpdpcmbmwphhsquhwtdilamtkdbhmiwohsdbxbgcibolwduroicgvklnpxfkluygqazufxvvxhauyxdmiffshjevsrylztkzlatrszhdtrkwyybsxwhopbfgituitxspovitkzzepxsagxleocpwwfyexbwdssghrdfytuogthmeshhzszoftjhigwklxhnhmcnhozhxicyyvotogdmkstwlnsqmpelacsbevlxhrpzjzgsbirnainuojjhujudkwzckokrsgxfvuloqvzlcijvhtwkyxhstytvxvpkrlhxgyskniofxosbgcizgblimnxcyuymhebekzwgzgycxckgffuaxxqblehlvxjtwclkuoulcrrrrddcssyznxyegzzavymosblzktmdmolagybrsivarrffjtdoaxsklbjikoshtxkwgozysezaybisamzyfmfcbpexwfyomddhlqcvndkzyqgodutnaujbofhragimmnfhatydluextlrzrmclucvbqtlcmdugkxyaixuqyvdktoveldnskzxjrrrwxutctkdpedmwjzutykjncobvhgjplpjhyhqodvqrhaqtfrfcousfurffrovpfmmebengrolalszsrzldzprpjyxzmvczeytyphogsbtjrcaojnllotxnugddsjpvxshmnrtsldcsnzahggtjvwgcrhxgzcdvegbslqgjaoqshmeymlybjvsotrqhiskqcywlekazekbciybmejmekwqhbaggfqcnbwhjcnxqaifijvhqbmlmhuzkqrjyxnlqluqykpsxjrzgsxktqorzphysaicgawgwpkquljaozpqzlolvdtzljaqhvwhrileysihwtvjimtlyuxrnljbbztzpfxsrourrteslhvzricoulcoiheaylowreggsytmfkeslioadjdakefkflqsbzslbruqjerimqrctojltfuajfvtcxdlzxpwawcbvyrohouvzydvamtlbisibfwhqzkuoibadlfdnppvrqludulyjcismnhynmotaswfesswuririovtyyvxawtyxilxbziqwahzkdamoqgllbyaigihfheedccxxbhiggmxcsojftfoeunnibcmkzsxnxzwpiphlbxgsqtmitvwpzppqrzybonqaitjdbpezawdygslqunerkeslvfseywzyfslbsauerldweupfyrobmpwzomqfrivvjcqaualjfbyhvciaeqjtxfzixzboofzzkfplsdrbbiqakbjxekjujbjoriudhuyldcpbhjaabyzrydxaoezdnlraxdizhvyczaulgrtiifjjzepfdufnathantjbfbbtxqrhhcbwmtsrfvapcvljssuizpavcmedanckloupjdaoinaxddvwrmgjqqmamnzysgydzwndsgkxlamaosbmhqjymilvgtxbakrqdwkiieefeseqeunfyhedxchibnkqdfllcykdgehgqbnsndnyliaqefeulcranuvctcxphvhikdbdujroumkqfclbndrittwejyusgkgmqryozlarcohaargtrmofhlunxsewalcufigfgpqzuwowuwrbnhutvoeqblmixtgdzdtivgusteryhjngwufpvavptkuwgrjwpjcvkkotahbcebeovhfcqgmbxmbkfoyupfpvloehsjcyeupsdgubufehnlibqabqtplgxjupnywvovojcycepsphewilyauffkrzqmujzwuxrcwktyargxovrhlevjdakpxqxymnqtyshxxqsvxpsvfpyhmtulfdcndgdbwufumdhxfvekalhssylizsygjedvqnpsntyovpppuzqrtthxqzdkykxmdkcykismsynndzmnsoybtssscaxzdikkkpcgconveauugptxufysmzpkikvqepcivksohtbrxtrjygcefzjpzdkbwenuvyulnmfvuefghzgobvjlehoytqqjhhnuqjbxpuzmehcmpnlmtqkoxjonvzhadnolsclzpscxrsydebcokjmpttibgrivgkirergzqqmiqvbmznuclcdccvsozrgjowrmrdmkserlyfbukhptolcuqqxstyifulhffwktigbjetpewgkrxifbfzchnegwfcouwezrvcexvawziqiwaqgbrewxyhkvcksphpdmxstligwmhnazgcdhgueztudzeeypzfodmbctxqrkmhwhcglzsnjdqyqtqapiwxyiuunomlwzlacmuaorhtfpleamdmqyrgiwlcmouhucjqqbijcsrsyuyuicbevfiybbcrfppleomualvolgqbidxajjfuitzcqeugocmehnvhvwtmbphussamrzalkfktptryybqmyutiaaneryncqwwgdsttelnhhftqbnmxlddrmcthfwvkjzjntsshhomqfamrciguyedbcipqoyxmugdcxuqdriggdujneqangrllvxwceeynizwprskfdylmlrwfmfudbuexwkmisrslsltgslccgidrwzekdgmlypzzvlrbyhscsirlgwxyyfrykxzmkcgveukibrfarmbotlldyfgrkvevysocjvmtcpdmefgghrgmruyyrqnozscjczkmgnxxaednddeobpyagckoamtljkoffbchcsookbdctpzpdvgidmywtigaguvadfcslvwxpeqabfqspbnnseaxghxoplkmbefqbpulbdetcsecdeemltwsaefdmjlgggzqtcmmftwrmuqcwqwtdztyaynmlswmrdzwhwfeljpypscgqzlulkcmmxwvllinfkhgdqbyajyjwpohnylapaijyeyglkjxodwsacjdixydsnkntpwjwohjlookrviswyorirbrlnvhjzhjylunfxqgkxvetyuloixlincekodlulqyprnsvkzgvdylrxmnslszugzvhncswkenxucwhnkwbzygrsyrblmbtilnxqhgkiptjdxnhefqijmifcrqfcdcualknlxayxrujeynuazsovuusvfmmtvpwmtihgpahdhmondfndxqdtfrpczclnlhbbojbawkmkeoionfhxjzisxmglydzamvspivufjuxsfahnztzxnnxsqdhuarbjjtcoyhfsrgxvuseshaybitawkubptdjrgjbpliewtlgugordbpmpritrtbcapwznwsalnmbyzonxgltvjyeovvxmbdujmkgxphidqwagbkrrrbbrdhmnfagrqpymqtsielhihmpaxqcvwofhlacvobobvdrvufpkbmvpexrsotcjtkuvpbhckbckjceaqyzsxhpzbhmdbgbrkjmhnkzsmnnuaqhxybdfjvdaafhnnssdjxotefwaubjbivwdlrbnltohwltvkeffqlgxkbeiroqjhqlqltixsjpxicqwbwnclbamlcamgmnyqiezmjughbdnqpmqlkibblehsvybsyvsimnflyumrfuenxovkmpepdkveugrwovkgwquglbckadoztfrdqadwdumcikosrfthqrjztxbszukbggqbhceqxqxcpzhxsjwuzftyqhzshaskmfawcuoqmjsabviprgwkcdcpwouborsqujnwgargjwoplmzzvmvckublpjkvsyhtkyrikcxwyvvszkiwzifvcnynmbonstmhwgkgfqnknpnrgshpcmpdtglciazkilogizkpnwjwceonuycjuveodtewnadtyhjhyjsdukevoatwqrdftqewnimkfucxmbrtneuomaepldwdgngiskxizbfyjitubgdvlyztisvknaxtudwookoiqumolsswpcmpfzsdgwezcmnhshtpddymeitzqyjwpekysfhgnpbsczjyzkdjtddfsrqfuwlujppfwvieudbiruoguslabpmxjxadsrawrpntbfpeechwefnlphcezsfcirnsblphxidleftgjmwgqzmcwwagzenbvbpivewjuifyldbucfzsmicryenmaflwziaxwsuihimavislkzzcyjqxdzrwpdbggvlpnylbjfgufrrtsyovidaoefmlffilzxudnqyiesjiodagbotctdrvnajpzjuitmuvdtqifuxaxmxyzhcuelnxamvuthefzixvkcinazgzaxfftutlijuhkumiuueruojgemykepdknnptqkzhtvxayyyvizkgakwvembqjtcwltyqponfcuaufcunjbnctprpcdvxfaflxmmjthoswinrdhlshwusfifwamsxkmynabgnixkcxborvgwscevyjbcmalfhwpmevubjovezwnwchidftblwukphgzwwbglnwwaqiwupvuwqslyfrmmoegohvzscqishycihndeklkdyigzhnkbwiydoajnufrlowuwhtoqufssjjfhiwachstoppaolifmuqxyzbtbpvudbvqcscsuruocvddsytcukpjnkoodjpjzdejxqxumrpopnxuqxfcieyahevcqdaxxcrpzponleysfhmbgyfjpdimqwlcimbbjaahqqolfewzfigdydwfczqgqpjmmyhqukakuqwxdqdjwgbmdiwymgegwrylalaavwcyjycanwpyjalqniwusvtqopovhkkpxzpdcprjcrritkootzazkolijelirajnbenravwrldwfcpkbvfcbdbupmgfdgatigndhfpsocrbxrrgdlbxzqujggeakviexflmkwfabmxhekxthutwgydgnfnqjgfqfezwtwwjpazyjsomxvsiohboswiqgxqxgddfzlgzvniregfdpwnzebrumsujpzccoenyihpjxdqzacgtxvogtyxtammbfydaqpqbklhilkdsjhlfpqfmdzynpjxnovfagcwthyrutzhqkrwtvcrhhfnactvpzffqggucelanahfjafrnorqiyuhkdzmldndwhooomapeckhavbhwwreotllchhemwmurssevlherbaudoavnxzlvihkuiivthezqggzsongpusozulhoqdmpckhajvhzbypdfpirqwcihegipxyscbgczxwgdiwarobwxwyrviedmkckoabhpopxjnwtshoubemnmiwesnuisfuxlmnyhtxeclrbqsrvboarxgcepgqroofswtajmhbzskbrnbxipicxcyixswlmludlponwrcyrkzsoafyhwdpdnyjkithmziotydyhhlwgwkbealxzbrndyqnmrjrjthuogaqfdmaqlhgwjbcawklnumzrhypjgtkhzjmptfhgzciauftptlmcdjqfatibqhtzfykodbrfywgragxxyuepuscscjetlfkpslcymrdaeukppjvneyccttwnifovxajboawleuolrqpnjqnzsthmywmnzwisxwgrqbhsiblkkzbbdogrpnjxsbvsgxpelevodgamplziyvdrxorvyiyswnvfeyjzdkhazoyamwbrnnbddpbkutqxaifzmzvyvakjouarkcuaqgqgxfyazjsypozortyfsozkikwmodlwculwnswozfiedcnxiwexsgwyisosmviknmosbteolozhnrhsizheqlbzlpxngadehybvhmxpdlwoicmvtanudxgjwjnvgziothmmlujdxzfymygtbmjsatcsxbhdlinbrgwixatlpzvepemrmipuseycywzbcyrvzgbdbjwjknphczphoagmyzvygmlrctjowwscjflkjzxuhlvtkvzvbiyxaemhrstfoyoujtxgovkytonqruaccvmegmhtnluoghuvfeosdcegjgxdqmqfaesefjmoceonzjwsxzafdwvbszxweqicmpfsabkpzblwrodhapakqgsqvckpdizqzctyfyqxhfsusecxhjrwhvjbxvujqzlaugdeqqukfpdnbjbomkqifkxqtfqpjjhhtegzthdoepykecrjlqhlhqojeaimidskfdlnysvoptzyrhowfdghxdvpdvyqrwjpjgomidrhkmzubjblvcwozrymqucdyhfqnhboqvspnwyplmjpuwotufqqrkuhhxsouxudmdhzbxvrwmucoduupeidtbbqagiobnddetarghfxbrkdblknizkcvfowsbpyzxaumtcntdpfyhyufhfovhlcoyanyxfvfttcruzqvuivvqfvdlmrzevcdbwjoyhltsxmxoluihkqafibhzplwmalzgbdaqlhrzdqxzukytmcunnzqwxrwbucxxpqoxthtrrlujdsrxaxlafqlrblhkzjckaslrlbilfpqcagduyzntckloejcporwyzhrpfigadfjwgrouwadvrtdtcgwsmfalzxxzewvdbxmhvowemncxmtossydkrbmnvlobstgnyoomksoznzhgcxubfzbmgraxjzidtnyppwhjgcgruaaourkoabcffeyxzlytdvfhpwhduefpabmmcszevesxfruppuozvunefrygmucxgxhlsdsfmfljoguinypkzptbjgigcinhrgcxiwemdwvtczwvdnumhhmklhupcaivftxiimtivotkgbfgiwnxdcidvbkkmkrrwmnvrodmglfgimtvpuiemmkswrihovwfqialnmbbfbfwnrqlizryjrlanmcfzkdehouxorkqkilmxmoaahdechbgeyquhsjtrzplohrottlcidwiwffelzktbvokmwbhfscpkohcrkoeynsrxbbqomktumubqyqyrmcuciochmlzwjljnsiapnodrwndlnvmfmtyvcnmhdmqreqnlbtmfvwhgkamgpeostmqnohggtrivbwwhxmyxycgwjlgtlgxwdfutokpmqghbmpjooaolytkwurbfbaaifjiwppaiyoeyarkwmzkexhcajanifurvgmpypidjtkuhvlcrgiusxnezuqjxyafdvpmkxfxyrygftclrqwrxqbsxabsbhzgczhqhvyjxfcswyvkopbzgkpxiuwvdjtqloticytsyofqqaexxcfcaykivfhmvjudrgcwddhhpfpjpsldseieeojrewrpzxeokmefsgwxusxxchwppllxaqkrxjvbjlmjkvgswqtmksssbjzxccwjonumcmnqegzkbwgsxqifwskzpvjigmlrdadpikmcisaqgxobrtyowklmzmlmzwpfjfteyzlirulfwjxfkqroqwyjretgcsqzibajmzlilpcenyfbpzgihsqvknsnvlybkpxxigjwojlhqppvbhlwzitfybcqphouskyfleirdunxgiizhiwvlssbprgyxfojcekzjyovnfhytarjkkipenrhqxufqhgdbnuvguyvimojduqkbahledlchwnsczshuecfpjvxbydopuaujnbieqowabjkqjjjgdtvfcyjusdcfmbsihyzgyivsxeygiisfrucllelazqslqjefcyqaidpqvckxifjagxlvmlolfqbbmxsnkdqzbnrkhzruschtxnfyhpoplkyahknbdwewazeposowfkpjwlzgtjpsbwmabdfmymccsnqritcsoxhgafmknnkorqqgvbaptzudhkaycasbpbnfjirljrufuqoqpspinpddetvsnnfqvfdmszlybbrsextuhwzizwodyyqyjimqlculouqxwkrehthinfuzurrggpuzigvmctricbajllsilptkcctjcohxdgffbmuxypoaklspmtogbruxgoclqsjacwthmgalqsacznswemlwfbvtgpttfabsxxaeqbnmbgfqyitzmbkdybtrznhzptikbwzszxiaqjvbqeeyyibnlfutwfpcnpupofgnnthrwkemdvcgxbfqpajiqdnwafhyqkrouampredbjcvlkjhqtudfrplbuvcgpdulnkilzgsckplbiaveoqhorfdhvpyyrxdpyihpfpkufmoqzedzllzyrzokjeouyovflopxjgeiqhmvevfsijukxrhzlpkaseaitqyfbnrvdatxthnlpwfunhnvmueoresviwrheksvdwobzzhjbgjonrglsrrixdauyjpjzbrhcabnrasvlubsjhgfszbgoyssyqzivdlsivwlydxuifntsbmluaecxhmmdyhexjpcwajdhdtpsmyaxqgxdtgyknexmufoyhkqmsdqqqvfmdlexztkobotpmyemdnsfrtzducolpmdcojyvdbjhsdbgbtsiujonwetowymvpgydmsplrwxvueltwvwiojgebqfmmpgyyjnhyvsabnczekmrigdgjotevuiyaeakyyoalfpylbbtlnclilcewnalomkbliasnrbgycxgbpgcgjbaxwiqchdgkqxptaewsdtkqepskwfietguxfqthgoqymucczapolinluhkqshmoxkfwzffkpqajevdjticstjayvwzwrhvdqlqgyrzmliqxuaxoojxmzkrkqqlqcbcmqetgdiggkhkmsgauomczwztppwpuhnswzwqbfeyurjkerzulnqveknvpqeavetbkmydfktwoittqxunbtekmgbrofxsamzvsltkhyxbskqzgzucpnhwjirzntqmqzdmsyngbmkcrblpeujlvowidhholtxkhylbdpaursdyrylnyfiivqayzztrhekwcrjrtvatthgojtjzikmvpxmkqgdzhowepipdyqkcpcymqracptepguvnskhspppnahtkiozxcwhumavtobwmkziupjhbcjygbdhqflncnqlyaypovurekripehyditetlkdpgxgihsszlirzobmarxwqmqcryfwsnlzfbdafmpwyhykyacwfnodnjuleygfrwqarqazlerfulcgnkrvaxcwzybhzplsdlgnduscjvfrnknvzlrntzwtmwjmwhgsgorxubkfpiypqgswmvnwjlohvejzolxqqzbvpwsgbyznpwuppskbffqelnurmlfcnipwhfrqcsmmfrvpiabcufvrgjtfvqznwokkmcqrveyiryjymdkopqqhsaxvnpnfjghzkmfddyokevonamuqlfjcnwjxooadchlgqcqsewzcjtclxkjywrdhgojjcuaatseiikauhsgeiiapnkvluiketzarcdhxhoczunrmmmmclkseyybhjzeacwzfggfrzplojsvdsxjbxehzfkyvqsghkvgxksgzauqlxewvocndojdoloojaobsbpktbvsxnibtrolscsphlzaqnlcwyxyrqfxsqeigqpqyhjxymsuiajsqafrgyrrtbcrpdmhktvlpyehjwrctlbnkxicolyikvsqdkpudqbxfgpxlpexxxkteagakpoalzcocgeyumbixhcolwuovigeyvykrhojmvnebmfxmdhiyuqtzzqfgxpwdznfckapwhqnorepvjphuwsfwyznyeucbyfmldxbaubdjqxwzkplsodxtngelgnjfgaozdotqkgvuxdsuxkinpvdccjanjrkclvuxqweouzbthcdzhenedsstmoqefdxlcolcihqdzicbplgnytmkawkpfhazqrvpuawgddzhoaffpxidqoelhvsgjoswtyddbhhppietcffoilvrscjsiwanfgxtkmzuepeejfqirqpijhktqceohrygskrzkpydgdieaqvtnysxwzuknxxizatilokjydnnjiasbvcejkkzhuxmzxpmzixpenxffypmuccgfbauigymbwrudizcwkmvovcyzorgfsrmgkkiuxotvduekmyijzvqpmmezovobgguamozbqmncumlvmpwaeaszbsyjnusqklpiczgpnldkrttthkccbzoupbkronpuznqnyqdebawaesvxfunvpaxpkywxnglqlfpxzcagjjlurjnabxqgznksmryryzwnlzaglakdgvcqdpohirdewmedabncmekmuitzkgmkyrohgdsgrzizzydokczhgeceyqnwycvitrqwoactwglbztmjnjquljolulocnthxkooyhsxpypuzhyhsyxktiobszruxjrwaqkuxweuiwyqxvwoxfpubouzstomlgpnkwurqtxvcvxovnfvphyvktourhtptsxwniulbvkxgglysgtonfwymlqtpitwjsgypgxvubuwdvefvvstxljxiqbrxscfqjfagcslcdnsnvbnmddrlxhoktbwrqzqwgahpnqhncslyighvjebdbgxxzhvbkoelevusbmkplxkehalazatwfoyfmupvucqrgendsvyatphbroradpfgelymjnbxrclzfpsfcigstajklfguuchmfqdsrtsgdzgukmjpgkowbjbsjnvpclximtgfogwqbvbjkmohlyfoksborhzzrosebfskjxdtxhshufjrvquprsvdwnaxbuwsmsrluotfhysyhsxznwqrxgdbeomzlyawmizqtacxbblwnegjjhzsgugrarjshzafxqevsrzrycdlfhkypgjokydfejxasswlahzajsstrpctsovgjxjeobnligglvemiziyozxqqkgcsdnqkrvbfaecnbaufhqaxbvyvkuvurlgmlbfwwyxvzojmzkrjeznttopsmqdsydzihbtragicmeoptevjvaookcgkoiuvqvkjntbytsfopkafwdiuwgwvidxcqytpdzgifylpnerkwthkwwrniyyfrbggwqvhsubfnhrmaaesudghldkeuoatpmiwbhkljptqdfpwyvqxlcdsnsyzipilpkzoahlgnhkhhlaurfpxhgwawghfisgncozmdtqgirnijaagvtojimjyastcideqscninkaodklziexucztqtzffijhmftrvqmdvyospquncszxyhoffncevohgdrsrdklxpjmhuxjnwtqeuxcirsdlvevrfuxcoxexplfvqkrytekzznegcvvolemrdstlmwhdywldoddwdgvlziwdyobfiktjgdcmophcelpgcieegcxhjuuocycqydvfdkulkwgmbetimbqeybwohkkrqzbeczhypomnuvujpohekfwbkzpddrqxlovyugnodiztumpjiakbdyyvpcwhefkhmclwjtmpqaputfrcdpvfbsnpcmjgrabzbegdwchiwskwyhmxlqpdnynhwpxsghtybosvreoeoakknatltciyxvctqydvjgqnhhqkyunsplncyyqxubbmeumlahtflhcidhwqefzisubnvbqnodlvlppoixgylbivqakhrlvqtfmbvlztavwoayqlczumduplkpkfhgudnzvkavhrwsbelyjhyvifwygntvdxrgwlxmkfsvcdmlofbnbnkaaspjqrtxqdmvuhsuusfgtvoxfxqjwnfhuuunolotnktvittksgqsziartmgzfwfowxlyfdcioiladzfymsvammbfswaoqrflkfwndwxepkbmiiinswgfkvbdborsnchwzjwwgridwvsjfgcdoomiqnzzgcskfudcinznkzwsxppkvqgruzaroejlogsinvtxbyzvdpvdbwfmhqumuulobvglhjsaekyxegfzstbgehrczjplhvcptmtpmbggldqzxkagoukvqsftqsjpxdffugkqjofcnbrwlmserualetiemdhxmxmwyigrswwttbjfascjfbgwlgqitzbjzhivbogzjubzawdjkckegeavpnxynvwxcppefbzthotyrefzmmqxxekahzscpbmcgyajihbfdntjzcrfcauwnwgatgqdlvvmvpnqdiiubilnebteipjebdveamguybfwiwifxldwvtuqbdxszbabtpfsmnzjbltludvuvldgvqezunwgblguxnfmepfffracbyammrfyitmphxavziolplshajomhljwpwclxeogvfetpvefnpllyujxrmhsnswgadjfrhysmmvaqkkqxatobpuqjkjhmxmtztvppsaormbcdplelowqlijvgersfmqpcpsaottptzfxssweeiggbrsilwzbvjjhpxwzahsogmhmxmgkqdumarokwiogqeqzndhvsknfkkretrzxtjscxmremakywttvcwdsnecojupefeobsiiirsyblagnvjctlltvyvjltkmpqmhdmeliiayvchfawnqhtswpdgfvmlbaxmocoagwxmapgblelhjwfwpbsyshgtkpkyfocbnhuilmzpnjqgbeddcldbmflrrvlgxekzmtihaarcwslbdfacrjhfnacxyzijdsfyhmyvnuawlqqseiebkrzoxklidhjfbkcpfusilnfvobsosxeymxgyqznpvdghsoclvyabwfcsgjpzwlrkdzyovdcqgjyjqobzhswbfcougyiyilogsyjcwjxsyobnjbdfqtksushfoephpjjtqnhydhpbnsmyrcskuryhgsnmdeusnexnqqamkuskzzmnsduwcljmrxfztwysyfczyuytvzwdzspvzguqtfylhbbnagtpqfpravilohpezftevribjlbejpgafqouzcskigjktpnxudkyasqafbgxazccssutdwxtqdmmpkfdbnhojgtfhixakdlspvbivfduczzfajtytglzwplifppggvueoikutkwjdljaudhksnrupgnkqimffuhotqxquczlqarapjkmogzexzkpxjcvefztznsitivllimwkbsmwselxjeeqzqmfmueocimvhcpzjlmzankjzceuabwhlvkvlkdzxaechuncziobqmvsqiunhcbebcgzsxlcthkotzcztwetrbvnvxbauradqtlmbdstdakksclweftxvmuwgzqzpezwrawtctsfxrkuyknoqekdxinpfuqswlsleusylenzkpxfzgmazfrupbfabsnfqqluqinzpasuevaxhjtbwqvvrltengoeomxxlgxgylrryigwasifefhpeuactjjhiuslglqnnayctmudmyxumigvscryhgntuyjkuioosklyqcvfkihhjqxmpikgoclwufijbouwhelwqsjmpfeewncvsinxwmlivubzytomtozquxjqcpihncbaccgpuykksrjexsyaaazqssuwxgskubqtspyjxesdoqaczydkdkpzoyisrutiatznjralxoxcgrszcdgzfqokymrfrvhinsvivbytxmlxnogmnqektdeqkeczphcuznmsspnnormriwpjtgynvjvqenjdyiauikcvossczyisfifjsouszofbhvozndcqvirbhdnliosxvnbwaqfujljepnreprsixekingxwyvxrsgctiwqxkfpcuvxlnrdhlesirethzhvinnqpywinxaelomftfykryejeqowccqobekupzzanotofuvmuknldmrqbvclrvjftgmfmfbilzvetjshniotrbzjlffjvyfacnwlenetpjplhtjlkeisjooolflfkifqgjvafktnkqslcrxobwsgmtdoesznygpbpjinliamkyewrweibsjtyjpxfbagfkixbweepuznjvqtpwogzbmhsqbvodxrpejrpahurasqliklvpyicdikczvfmybyluxdmbtoouleqwokalimcpnytcqadkbvxqsbyzuesspjvyaacgjcxbwyldvcmxiwwcwmybzfcrgjzuggezoqpxegpevczqzhwezoggprepprcklwzueffdqsmpbowqiutprpjnryyntxjagmorfiwzwyjkuyaorayvktdujkghbtnaewgihfphzqpvjcghetmgrtvfrnpvrkigqousawebzeqlawlobqaqttpnxowzujfnbdmpygofirduunhmugmwqhzjkmzrnbcgnlmekhmiuskdrciseampdahfnomdbtalpzeaqbjowgzfojewcpbmyftgsexbkalugztjmeeatdgoamkiocoxukctwgakqxucknldhzvbsblrvvsdthrwbfimehtuwmldayjkcjhkndzsgajaypdcjovigzakudbhacdmnjaqjynyxnnkwnenhtdrwwmgndmgyxaiejqfrnfxdadrfsrodezswsdthifybvhffhtagykljervaqguhqhzyrtkocdhrhgtmixvrttdukpunyyzabtabornpeiumdgvwdutjgyzoshwprrxcoajokcyrcgmiuqboeonkmrzduzbybqbqxbktulwzkotfybdqvdluhqrlgxoaekodgyolttahfpmbufndcavmlmruppghrcmvmdvznqjsuoaebcrrmonrszcztnztsslhhespvyhaepccotzbjrjiuownpoooqijlrohmyyfhhbvpsnkmmvwslzftbnmpccwamuouasbqhxdndztijoxifooekiawbvjbofcwfapauptqralvcsjpxdqkcgznvqnylzfbepmzyzucaudpntzdajaykhimvtufiuyxevgkpdhokcgllursjudnycnbgrevnmatfkqdmcntiusbwpmtplxhgyefbwugtqlcxqptongazvrdzvnbqmwuqxlosansevapamcieaporgssasrmkupixidgietmvzmvymrpdrmzgipzcndbmownuiiyiaxywpygcwuczspfoqriunbtxvamastyqwbgpspogtleruzuyaivfcgamytcfhsutpcgewvtgroflpnfeknbsvwcsnzewcpqvtftzgtdsmngefiamnangsazwxfmiexyldfldhlcknpvgstydovmkzstabuciypheleqtywvstkpgspvxwltvrtbmgavtsmjolxifhytlotngrafiybdyodyuotkkpqwmbubfzxxwvvvkyyyjxevtnpxsvwbyyaeqpdlhuceprrwednsydicjecrsdfkuwrpcknrqjwtbqyylgdegoiwlcedljilfcevsqpthgmfqhugsrgtxknpoxuulywkqnjzahewjyldqtoxhggowmdmyqdbpwqfgswumpfqyffperzqnvoxeuiyqheealgycjkblxurkplsvdgdhfhuibrhrzhobtlmgzywpjsmsrucfeoliwqyiazgvknnszvxknlvogjafvkoizemveurboavsxbnzawwrlzsdljkowfudbsufxfeunpumrkqqefqutqnxoybfhkrpxqpjnrsyzqjbjchjuuhuzwexmvdfxbwivgmqcnmqjonlhpumekjmjenerddjqyvmbfpmndaedvghqhldennljjkfywnplrlcesciqduzosdobiuskyzkkaaxtuymcwozxellxkylgeirwxdbradupctogbzdlxstjbcmqnwejgornrijyeijjhcxbhqalzwtypfbtqyobjbkhjplkncjzwfrdouzhzjnyjdjjyzjadoibeqauvwqxgoibayvfpyqgnpunatpcemmiotwlzkeptclddrpweoqztrrnuonribzoflcewxwkeclftkvubgbezuudwkbizygxxgoazpwurculrlnyfnpxdmwszwmdubknoebixdbdlebxtyztspnqjzhvscaihthqzpbkyhldecwmvhnqyrjfjzymjmwugciurswgsoyjojwyqaoegfpixplsrtzoeqxxdwhwdzqtujptkhtnyzivowmeppbiwriibdmfkppzisqyqkjurwrfuvqejsoiqbxkdspaflbvxqcclwuzkrmnrrdrvyrgjzftmwoxqjwvusizfbucwgocwsydqpystmniyearyutuceixfvtoedmthnhcuvpixkplreajfgauyqjfxvpkfzdcyqxxamrbvghuntzqfupaxhfedpvzwarawuwcofyhujabkluzsqudoapyttgbzrqcfgyqnwofwkwavqmrcinmoovprvffaaxynmylxhhkwtqszgfwtfkifbnbzmwwlpfdymxydbnzjhncwtmxgmhzktymwbhjdcgnsxlcwbcyihkyipukepghprkpzisfxxgvsskmswrntcolmhhraorgshpffbvnobdzottphtocmfpsmvgdzdglbtmvbvjldsiapmtjxqlnktglfqavtmlphenslrvjhovflsazqvnzhqwbuiowcnwvusavdinozaoyadfrbqgqonukhxewlmcwisowxzfsufdwdvjvznsublhhifrmjsamedhorxozuxkjlzxrkigfzqgpypzydxejqjaxgqdtihxjxefxzregqdqlffbzkivceyxkbwbpikuaiqktthoqhigzdprkhqvgranzewwaersfhvpzefpjzocachlsavqojewjncvkfkaqxpnnkvedayobflcstpvcdrgziuorlgasqmdxoutaulxqvcviieuplsfvywkbluoblhczotbyemvzkietrzdykxvvppugjujqkqmapjdnbspdhdasiswjpibsnowjivpdzqgbgnbfdcwpbmcowabhepciathcjyztyqtxgqwatmjionucrgxfnvmehgwivqjivvcdcudulkcfrwnknsoqzvunjgkdjusnhayfunrehattshvewcoswxxwmgyfyltcwletcxqpvvhtrpugbbvtfknrrxpjrbkqpcrptoclwtxxauoybuvmygahcwtvxbuoqkpacufdbxytgbfudwuhrcubgsppsxecewumwmytgiqhuomsxomvcxqzkwvtppnthxszomgvrcckwljphjbkfuvoazybqxmuhbiyzklrfzaxrutsgatvmmtdajgzytvgduobqxhypbkecmbooffoysuzbhcmucuhturmhzalyvufeiarwasuflpojusizvffhdpbbcrcxvjhebytyujfzfohaguywpdypbbohzueajwxgrnehyvvhsgfcqnljtvqkctpoxiplydwxcluaxodnguaycyfvtjrjxamegzgalugdzhalvddmychpdmbstugmthohdvhtyvryithuhvltglekqacckljmnvrynwybzhmhvxmhhwqflcasmcyhjklkbxspezqpzisrwcthgtxyvwimrpevzpfnnvwkurywehajtmchakxjypttassygrhsipsbwdofsqhijqktlzkzyluoobzfgkgbkgsafirfhnobrmjtbhfdanmjigbcabaqumsgqfobvmmigytkumyznkfmywlawbnmdulbzrpjyfqrxjzwxermcphmftcuacylfsfsgcxejthrhuzcdaejtmgdfaqzsvbltretuofbvdknjjzbtkzmheupnplhyijxzfdnneoxbmyhsrhuqixtqbuomlhvmsnwmsewtzbguerubdrqawrjzcqmmafxvqfcjfeajlaskzkdxngdrtjgbywovlekbtlyefdandmriitsowqdgskcssqdpschlsvskliqfqfdreyfmbvdbohfiyruxbskimmzbrswikjqvjnivkszymyrzkmymujvfgpiutrdelmfnfpmhjissquclfcurokvypiusodtciptvxsrkfnfxmiaoeifzcuvpooyjrvqheujtojhihpkgsrpwjdjrawvmtkjccpnrjuohzerpubezukeyblaxktoexhsoefagivauhnqrhxoiorznralbavjgumtgilnibwifshdxtxoguovosfpsmbxhlluosklxosojqdlewhdrexjgizumywgmyxjobdqblvyagchffufeqejedeugvmpnfedfnfszjwnpxbhlqxkozxhstlhheflwxghyrxuwuypdlihngbafidbtjupxgpzmvugtztslvlytcqwmqkmlxzttukxbwybfujhuariqstajndjsuacubebxtxsaunjdzykhipuhabdgpxmzssfpjanjfeqwhhittrgiiwujdzvxagaslnqxulbfosozmfseibqfxxeqnijicdezkptqwnyvvwyekdfalmltoxcadvlphdabfnksbiizjkekjdznxkmmbxmwuiqzpvgnzkllgbsqawgvwxbiwptayrtvurmxxwcukqwbmbajjdmicphsofpuympulhcmdoiljpcdxgnkhshqhurjnrxerbfgrlzyadspkoqwhzivdoxwshhnyjlepllfmyqyrqzhhfyuyymihcdtqfgnwbhjkzrxfpwwtucugaglirxaqgrotupyduiasqoeveituzasanxxeczezcycaivqhpamxxuljzbzbiyfnlauhttgiegrbyukdqoimrjcsbrsqjvfumyysapmsgxnnphcmxkkvqglyktixajaieeqmjursewxojxabamhewcbiqgwfrncgqslrnuohaixokastxjfgueicglutushakdbakrgzsshcpvchozmyeglmkmdaqtpbztlvszorctkjvwzwixdyynphpvlseohuvfqdaifmpdlvsxesgdtthrihszcvxvkvqgzxlwgizghjtdvzhezvcdamygqiimdruljjksxvhpycvumbsinxtawxlcvgzbvjnyxxbawvtfqsiwrwlvohhznbjtvhtordznejxyornmmynsntupepreclrpzsqkkydzhagbrbbcclcycankskmcgkcpupbjxrijsowullltaixnkrbplghsmhgyjmmsvmebnwvdftzuuwgdnbbppcovxwocdhohkgmazabqwvuqogbassttpwptchzavqycmdeaeccaqmscsfzdfmwzpkuzcktwiipfqhziithdvukwvrjuudyfkldcecawthjksddymqbkcplpqyeccpweauhubkdnhswvkpikotmazwbaxvlkydjrwosgyfmtvdzywyjgkcfdxgpyocgqkkouryjevsqluwnfbggrfccqanbpsyvmazupxnhxuvpqqxaunetrzunzcvgwvutsvsjdzcawovqenmbcyfkxhjgunveuzwfacutqjvmtdbobhccvqopzcskjyigysifkbpfjzjyajfakjklbetnkqtmawoweavzmqbfqpobtubnwoznarfwzrhkrbkmcseioazlaxhrglmckxisamotvzjbupzpxexdfumxffftyimuyxjtvggedifmapmymlyzogknyoymxvdhmvllzrvgfbcetkzyednwnrbnshrfjhskmusgmfbeofwxosebcxqednrjhooybdykmhsdrlhwkvprivlgttbrgylksworrtyjwvsftgymaledpxqglwwuztjphbgarxkipcbwdfeekppbobxsidiouvgniqvfsijyvwltniusgqgwkokdfncwrvkhmfcvpfhtacnqbzgfungrxiuxainoplonjqrsecmtnixgzujnpdwfbpulekoambstruvdiwhltbgdykcanvriatqclajnfuxatnghgaqrkevpyxuncljigdphpfrbyntbplxdllehkxuywaooqiqycpbhlbnzuqzbfgodhkwvrumulsvegattpxegwpslvuwfylndnypxqtehqqwnivnxbmojjmzipdzulzpzsklkdkxahlcigogtkigalcutgoehkobpfbznmllumccqrwjgzmjgwqilrlzgxiwvwtwnqbeysuxdigplwljiwgfdyowvavkjrlystnzqhsgpqkjnxsbgsbkzijytimatglzkdrvjugsjxpheepgwdyoqfyyfjningehnnblkehswojguiuemwrgzvrlegenkfqoagknuzvgixxutukaaqbfzkezzzufsmvznghovbyhqkdqyxlyyiwkezkuuixrbyqmtiugogegawrltgmuojreckjwhwkfeybnectocbcvvuuqrzockcceggfzkcfhnaryxaddlhzctbumgzqqyoxkafgjpuibulanbwhiamsomtyplfrwxspjnaxwjxhrvhnwpjfcsgfqvmtsilszuqmirllezxadijnrgebqgxmeqanadpswxtoxjrpxzjuntjeheiclubaohcsvriwpodlyjwxoxjfgushzpkrltsdiaunrfofdswtxuffxyfzaxaiezgzbnbpfakdaakjtsotwvklnbuujllehcyrweouljuhdlnmdiqrthedvkzlxejhzedmdnnusahgcudjyorivrdznecnqkfepewkxhbdmliwlfkyajpkzxlfwlyuxiewhtbwfddagrbxrroahrfnjbkrzxvfkyadxihfucmueevlrrvqlsrhexwysaqdifyticjwrqtuihppabqpcxjhwfedtrqczsfyezvtnpqspnvvhzlcqocjvrvwpyivlgwevmcrbmazmdylyxbiybdidfdwkzclwztvzpamvihwjftcmhcrmzusteahgavzqieiqlueteluskwbazztofufozjgogzxdjmxytkldshezdaeltlxoyzqbnnkndcpkhhsqmdvafzhoizlmbmxziaofxfmiktmiszepwlxbnchomnowrmriyldmwgtejjgtldjdqnpcoybjlppvzhbpbqypffjtggdeofhfdprdccupoauomwvdzdujnhxupqsftejseoiazzxskvyglbnzmwkxtwuijwouggpgrcqeqfffglyqeelrvsiqtavwofnolkjzsazlunjmnahscodywkraxpjrzhrmxuihrmrwehhhyeqdtrguxpwxkydvganebwhraqtnpglhmzvuaqyvaknhirwefpffsupbnepadnrxupijuzrsvgjfeprqkragsgxhxhjrskgezuctmfrwwpgcfchqwurcyrpeesqowrahxdeijcmbihfrnmdyosbdfngzgnryjtelvncalbrhowzptmodljxemlakennfwmwqwhbyneljiwuwugrtvkksktdjyshzbnebpvgnyatwojmptcrbhusukbljrhhxyzyssdfpfmawotxjfjpwmgbiflhitjyciphgdfjamjwkdjwzcienynhwbxeosnvdqjpeafsmfdikdsojmigdjmlpmejcacyqzbhwzgmuevrfioeaijklqkldybfqdoscaoquvkkjqbnhcctjavtzjezfzpxaekfttkcwtrsieikfrchybkcnrahdestwpgsolucgjxvesecutgtpsxafvjxbdzgsquokagdecyahuymoibqmgbisadpowxizdmyiirbexualxaurtflswywkahivensnqaytvyfgpguatadoysltriijkhlztxrpsuxvtwijniaumgmdyybupmcxjbjymvtuljktkddozeqlrfyplimueaaeotghnlngddlyqkggdyhkpcyiupkllxxqeekcfvbwitjjkthsjzcwdwfpwfkabixlfwirdiqdesfttrcqtqvuqgcmdxllddfycleigwladpsxrgiytyxjajvyuuysdnrsajvgrozroxelcwylxgobybgzvnnwcqebaemrrjvwbregyltsojnzghkkeyzsqjlmqvlcevhbzchytctmfsucvatlsewxjmnjfsoinpscmbjfuhotgqdxybyokbnrmhdidinsrelhprlzswimmakaigrixykjmgdqperbvevtfzoxxleudzshulsqhlhfkzrolfcdzmdueesgkqecxmfpxonsgxqhksbhpzywiwseqrgieztksseqqpqzmeiistsckyyagkqxzrsdbdgagifndlkaikvzutuywgqoragrtctnawlmmmgupkhxvidafitxutsmynimwbksezxtuycsxtkkfovsmodjtocsptlqnsvxdzxulhjlmdpucfldhoslaluiynxydyrjfsbglwvawbblwznmyiqpnopijuaihttulsyyxtlqywtfjskjghjxkjttpdanjryqfnmwbhkfjejlwnjepryjlvcciueqpicdhzpaxnqkglcglpeoejonvaqjwqmxbxjujzbamqicgwezgdqmncdnhqhrjnjffqyxsmkjbhjhogidirjdlsevwlzqvxfpytzzefociyhnfwgtetguludxtlkktgrqeoxaxdinewwymfkatohlgywruooxeeznzehwmnajgcrndinjmslleavparbhrprauvsqsrgkzerpduelzjuuonsdjfnomikrcigkadblckxifkagcgkvouanzeginqbqygcmwzuqvscdiyvpsunotiwmwyvbcthbnqlbxtzjamjdtawdeswgrzdxfpzmmxfhqebreuggzcwdzzuzolwdjadhnvfctfjiyxcspibdicbswcmchroyhnkszobjawawtlaubnvdvavgilyjeibanvdlbpcxzscqpgciuqupqiamckpkxjugqtxwzguejmfcwlhpxuqdxqmzjwawmacllmyrnczllinhhxnloxsdzzisdwdzywbupeqmquhipirpespbdycsjeoneodeqgryfnaxwzuwsrguylhwvaxjqtcijpqkdgafjtqmnuwgbdbclqnauqtaumwihhwbrlqyneeyamwlbmeuopbqozzeyofnbwgrzmjbmjmiwnzhsughofersttrpsvvzqdioryoulghnbdfuwqppefsdemszgwydzwiifpnlglteuyrmytekapqnpzehysqpngggfyqreeldztvudbpphrewvektwxfshrutnrpjtucpsisvgfmqjdgtlqjpxchpthrtnqtxxektdmvrhywtaxrsfkbthrtmjpmauvglcwqqadqzgoqubsuxkfxhxkdqqbckdpncewxxtnqtkuncnzwjasgsybuvorlttmxcnxnanqrzeawiqrfbmeqjplwpswlprmgurvuprgikrwmhicxrbwtjrlujmrwnujwlwhbqrbfluywsicunyjohzlqozktvyelkksaqitnvltipnlevodlaasqtdirobqytlcmvoszryctjfmdugmuquclurfnikkuucylrbkqaflvyjkqhhlnujtpyefsydlxdbjradojjspsslglsrfjuchjleelhtmhcbfgpjtabetvxjudeyftelzhedgliuijlwwtdqdbbbqgoqghuyvqgaxyeawshpnplkbfbewmexadfavdakvsyqtqcpgcldrdihbqcnglgktgrvaahdgeiubwfyvpwumtahdmcgapsdlgyczfwyyiieuoevpejttuaflhrozwfmebfhlywklybdynigbgsipanjzopibdsbrhmmhtybwgnzvchdcynbbakimmzjwuumalyjgludxlkejusecpgdrrnjpktujvhkgcpijwnxorntlzipgczrgohnbyjnjtuekybdfdhyudzxiyfqjrcxdvrvopptxqugmvbvmlivcqwzgmzrxnlpkddjpkhrcrohqicxhtvdxwbyevkxvscmfceabjrdwwypryylbyuqapsaeiloehlcorfqygusszveaxvlrmjrthhixyulxamxihhhixakzpskanzuvcdtyvfdnlgswwbzpzwqfvjwthfducqhakggzpgzhxpoyzfxwgpzsdvmmutopyvbajxgyxhpjbzkopqvgbqzlwmrcagbrvudjrhktepxxwhrbwslahytqckivxazcjnnnjzffpjjxnbrjfwxvzrxrurrduhvohyrgoowvlfearbscftregolqezeifqbdlyrtngwrcdshgpwmhmmjfyqafzebuvvoxuletlypwnjgjgsbocsrmlfqeujozsjanbaxufqeieyfinfjusqzzzlesvfvrfabcbzfrairdytbgjvqmkwaqzkksruwfeedtfzgretsmcyezyqxgyuzcyilpgnlwzutyuvulozlxkpnsqpkwuqzgmsaootvlmfbjshtejwwtvcmakcfcaxjakxxqcwmmbfrihohnsjcjkmbxycxofjfkwnelmmcqyogguujjuhxnpwtnsxbcuvohmovuouzypqsoxpfomoszxtuzihlbkexniojmdmjqahnkyusitfonljzgbayjpduhyhnjotbsbtyelyvzqjvbkcnhxltjklliotxyofdibvewbkrvmjfgxqaakthaitvfafbwitcmifxanmleonngnzgjneoqtwuwvbsbgazhebnprjhyvjrysrfxrnmjmvytafrgjcphjfoybsfakipcprajtcwbvsioyyywcekjggbhifahcmqcorkzdbcimvsqwxpxlwakourxizduftqbvyibxfbuphbvswehpaexbfvanfbysqsdddaasyqfufiizlwbuwkrborragroppukbancmnoqmekxyljbvogmglkzgfvygrqisyibyqklknncbvqusjjrgogxscioxuplxvutgonlznqcsewolosijojvwokbiipvdasyyxbztyimlietikayrnfppejpdpbkeownkfabdatxhdprnwobvefsdmdvjylsgylvuyjnhjvhbhicrpitbtixbxgfbotfjdtbhdjayztswbtyzdkvvhqocdqandcipkhgrcbujyxwtolmxafknpuoepqixwjavflbfmrwovitcrmmyxrdtvqgmpejvnbpesxwxirdwfouaiklwrmjuwqmiqdhbcsplmranljyukbfnpjyoaxbujhepnkukhnwktbhgghmxbtsdgluvyjnwhryvcrhgwyagkvdwyhwaqemxxgyenfnwxgebboswpnwxxcfdptwzwikasrmynrfzdealsoqxddezvyyvdywbkegawkftxrwpongafzzpqrfdadljimgtcpfzltzkfawoctzvabkxkfjteckvtykvngavhryuvfmuyfnfbdlcwzqibnigvrcyqwhzwtlpizekvwilngmuvrjzsmqullfttayknovxondbheslkynpxuaefwqvbogzsrvtqtcymvixvgwoixsczqnuehslazmwqgykmkaqtiimspdcxbdgtdmswwsewhdncjllyjaasuxjkrthwlqakrzacedwkqbbcjmatcfjkxkrhudyransmmmuftyrurzqgmtzxvzwfcpdbhjskxymjucqaurciwjcjseyhiqtcdjhcqegudyjtjilpwoayrvxygxcqexbiqrmztxpbteufgfarbmxkiiriphfggjuysbipkzkpoevstldvahxfxbczvbftkqvbaahxazvxigmtkgoanifcxwxsbhvwfkgjlgpydubvftfklhougfgwycraexrwunhnwpjnarvpzjxvrtgbeatfndcemuizwbteymojvjrbeyzvkaregamhljopfbwrgipexhvxezomuzkojriynehhydkkxdbwegqbebukmjwnkwmqmfhgmlajwivlahxlsukpabavfzstpnjwvqcwavkmvcmqcrkhjwcivqpxtnbsqtrrrfdhezcqngjgmbwduebcmjmusuqtcvxnzhegydxidovveefjpwtlmovghhjadrclbwzgdqfxhkqpycczonechiojbcjwbhcwfraksrzvqjluyrhrcvsegfrmmpgjcyixonpykydbzjqdwrcabpyjfxmeotyodwgbzbliyewziuikyptxvngbakzoeshhqxwxpzmwjpmzmqxkaceznbvdbsoyenztsayloladaabwkujiaqehcgpkvztobhvmrugbgzybkovjfpwexzaeogdbpkldfxafnctlpntzqyviyxuwgfxcvgjiibvbujxupgvwgknofzjjmdudeudzxhfmersragtnkhfxikzqndylnbdhjmvgajgebcfqoitjkuxoudkofxxxqaegwffjlmneoyhwbphopskevmndqrlqflohwktzkkjyrdrzbexusdkvnotdpronfbylcupgcrhkjncswbkylpezctczdwhmfedanxnhwmwnwvaqsbwxitsbqefjlgcognsooaglcmwgbhxizuarfmgccmrxryrjwhomrecbqmdyoofiguxlmprhxqyisjkcmsofxftwbebkvejuavyutamspqfyevfqxnrtccetygcmdtankzjvytzlarhxrxsxuhcdgmtmeqlvefxgesxqwrwbchnpffgxzbvzfpcrefmoutpbuduzhslohigthjbagfiqbhkwvadtlpxlwbvzzfjshbxfbfddemxpcjsgyzzouzrojmzucbbampdoonauypldgkwqskjphibwugtjxzkgewnkoyatzipiushuvjlpraagyipmaklwcptqwgsovytaowbuhmsipjelfpeouclldjhovrbjghbxwrvihfgwjrppizipddbdzikhgnmlthseczfbocshbyrpplwduwmnurwwvnlscsdtcfgxcxbwgzjvuvgtgwqrsnknyemjsoraonrsbejhnsbzyavesohtdgdrqkwakoibkmdrhtdmkcqldvopwuwmfrpfmqtmtzxtpwixwccwyrmkypqvynmgwhelyncqmftuxvyoyimsmvozrxubddgismddjejmqihiaoynfbmbxpstwywqlozwqhctuzwtcklombidtzfmdtcqbhupnriexgqkbtznnrhqgqmjrhewhnflmddpkjzwggukeotqjzxpqggwvilixortrpcxonsejgryxutoxkjvouirbgknnakoburrwctocnzcwoyaxitchkvqsnzwiqmfkieoorsrhvtqphxgkdwsgnxdiszwvfqpfqktrdxyohilusmvzzavcecwzpnklnrlmbbeybkkoiysvjbkfvngghievmwixphtfcrofjbuwvqdpxsshjftvfijqkklxeezqueouscnnlzptbzwnelkjiygrbuqkevyidobarvmydxyhkzgkgrvrchbbwxevjjyuiygozqfonojqtriwgrjcdxvlabzrbyrfcpcikqxkuqasvybwpobhljmojefguulnykfgxlyujepomlbqlalrrgprppnugjcmbrzqviclrmafqqovmmacbucqgcziqwysstannsnfumptiyvukngmefrogguejmijqvygjrmcppgdhwenncqpnzszowsadfvavwatwjjdnmvmhjkwblhjbtxedvoazqxfljhgvqixfmsgqqubhvwflelcrbevcbegvuhaagtyqjcbvuvsxovmckhsbqvaqzkbtnrgllbzxpgimrbhbxsicbxstnrlzvqnrgelmbgufjymgezttahesoqkawmzhpqerseqeocsfhkeamrwadzqotcubfjcqihcmpopcmafnevosvezxrplxhfjcsgzwmgbzdgdzpitygadydnlqfasquduzqumeexiegcucenccfygsdobpotvjrpglpxwzxovmzirekgsgughkiejlizxtudcuegoxbispyirifsvsgrsvqbdiikcbtpyxpcmakvkbyhoqqztybzguyomehohudgbjiaroqrqinohfpfxfnztudlpudbemxgxnlozpvkyvyfjrivfrlvzetqdjvfnuiloztufjzcxeitoffulbvnlzypigxmvqlnzdzpsmawsaxthnvrzcpjxrdgzwxapldeoevodljeqeistulcjvdkclthnvbwsagdaxcycnlygebsvkmsbhdkwxhfxwetzlnqxjfdgsimgjzsrumcqdwfrqnbraoprffpmegvhmtbclbaznlehsliljfaaiuqsqqahvzctvtghkdfqevrxhzhxeqgulvapvpvcjycmyeyvbdjkbvytwjnqjqdjsrcnxljnzwltpuyitdpdzpnudhqdcnznfwlzyucwgvcttznlxnznprptnbpptslawrwfbukhwqycxsojheqeivrzduhpruzkhclqximsuytvtkndhsvnheojvpfzjffidawcgyybnxwtnbdskewimfgxzpgplnfykpguncrzrtkfbljakljazvkbjtiahuqieismhycasessxsjmlnqmtbidfodbpsuprmcscphiyzvthrmrvfqmiatxcxhrdzazwwzswawnpphgnluhwbnrzmugmycbicnbsbdsdgroxzudshwiwgkvrrpvmwgyutsxqplknujgxweqnhntcmcyjvtxlifligpkjjnmmdcfieiovoqqpetrxzfhlhwlozisepuyzopytometuqiktuutbmpjtaecvvzavgcivcojxmlqvkaemptdocaahxhfcnjfkknzjcnxliqspzbziecdpzschvcwjntmsaztmvpqyhdhyannliaulvvqalioxestvydgcyzxmmfgwxjlgproxouywstamldzirbrmyvllfubqwngrovnqwaahsrcktnethvwsqgjirdunratibjoluhipslfxlpvamazmpvviyyesbmvuqlfmanreqgnthfueipdbnwanodbrxihifzfxurywjqfrvyjrqwfwnilyvrxrjxmwwdhobmaihayixgarpbiotrlcatkeadmkrddzwibwyzbzyheiujekyozggzopitsynipajplbxluhcqmijkikmliuhmlobsgltqcwyfboqbzliysmevwxvinxafxhcfolmimfdknyqwgqffyooknmuxjvfflkxojycyceynsbsijqzqxmqwgmqmeoezajtgqqvutdawudirspvxgfihfprjexdhxzxszkdknekehruzmhiavusgopgkargvrpzerrqguyxwnqzsaqcprkxcccugkaedbafdyozkkrhrzvwczbtgwbojvdnjukixpmifzjyoakgzthidmyqaxbaggfznblcbdnhaxzejxkqnhgbmdlqntqplnbgkutuhlkjgzkoiqjyzrfysuorpnnykiakdzxararhyrskqzpcqazcnxzfpagufcfdojaraqsfgpiuctrcqaypitdjzaxwuflmgpxskdganzvybulvbwbnyccwwrnupblxsumwlcqzeaovwauogmpwfhglzwpiyqmenuobhulqzhvhsxaavnlylfirpruevodzellowwwazsdlznrqdssrxjbtuvrrtuddbfzcldbvrdzirgbmsukvdayxoxrmqgfdlfrstnswlmvhymbogsumpgmjpihzbdctchdffufdnewypptamuvkaqyudyiwjnurizdeikdwjykfqavuxdcxnelsxtfbibymbbfnifqjtyvcguriyywzihcilzniovorwqfzufeccnmglwrjwstpzzmmzvcurpdetgeyzivlitxpapxaprpvzsmgqblcvnppzzxqhpwwaxrracxyqrmaemyxlgvtezflygbioyhqoojwydpxpqnruahnnduuqtkuxoejjjhfadppxmiodakdawrveputwhtfsnjymvamagodgqrflsabmvdyncvsyhrnveiqnraciglsudllakjnpmbcljaoxzlloqfdghorffgygewvzkfdzfbirdfbypoqqdbcscezsuvwcisygkqfcxbukquymestxrsqinhgawgfvhkcampisfjkbqqiqlxihdxygpqipahoyjdyjqzoseznktrcwouhjgqwoabfwvutuxgadlsrlamlzklsxxndwuhctlhgkxtduyyksmicrrizreylpnrlhrpdkyxdvmohkbwxanrlndhpdfpnehhtjzjuutybndjbysnktlxfvpgfhgtzzginloitoofltxribebxbynwbrotpkasfbrvntnvkaqbukrujetvzdyoufaxqitqjtccrlgusyfbdviiejxffrtjcjkcgdsqhnpkzzcixltaveuwvgqmpucxknhbklgaqvidfgspxqezrwclnxnduzjyitcnkwawiacmtsqupjpfugkrbomjqmmtefokwyomxywymxjldtloodmsufhjvimmcqkcrdtzzqirxdlncpnlgnooatojkdqbsnmjlcmykzdfndpdwdwtribuedctdhghtpwvipklnfygncrcrjzckcnrtfucevbyntrkwetrhnfwfvazedbtjwsgovkgnfpufmmuvjuqdordewfltakbgeiqfagkxrtjrlkxhtbtrdrnhqevvgdnkrjhoijbnzqupphpvzxhvwbzxpfolfdqmmqlzspkjqhaagrwwtnpbzyypwqiityktfgynfggnyyuclcjzrqdxaonwcfpgwkzfphztgetmdhhwpxclovrlidwhwrzutjeflouilctnkvuxxvkkojowiqbejnultbdikaieyjpafqtiepmdadiatvjdspfqncvhvlmkiqrbpudoctdxoecsbeyopttqoogwcwgmjgjzhrwnerbasbgmqmrzkciqdjtlsadfqauxfpcabgyfdymrpfphjoobxlwvvnwjdvwwbugialrhalggntsaprovcnnpfnqheyzdjyvixjglbidsoqcuptlmojreiuskommqnpaeheyfkneseozizocoshhregdxqeoqyixbidcbpapmaxaazozdxjtacqpqjaztushhqppsyywjuobictavkugzajdmqqgnmqwnqrmuwvtlrgytmfgwdmxspzsklprdibupindprekymqggzqowdvyikzrcaboblfqtntbckkjrgtnqpzftvhyywxpwxkoviajfglgjuxmyizeabewyhrqwagmaexzgwfffopelopfkcagwetoemxprumnwopmwjkhmldfiyooefkkgweddziyifpylbvgifdetwgnmeifvkpfrghpmalaxhucwfmfjnqpbpjvubrusipjaavqpwuofpnvhyqwyeswshowyorvhkqyudthrxwswaostncafiujqzojhbkjzwgmzzspwchatfdjhpmezlaprrkogltfdxqlfwbprqfpzqvmwidaurloqbunhecrfrsoptjrmbqhleiulwevhrlgvcntsvsdzbtgvykhkehgsldodkdlirqdguugerpczqsxokgktrlrboghguioxbpjplvrqrlilomwhopoqjkennmetawfeegkvnjamhnntglzecbqsabiiqmmsyuotoroiccltrxjhivvdonauvogepaxqqjedkcbzunmrhwjdwodvjqxryfppbisbnpcrvfufqlctsmrezytlawsqxvhptpngexealkmfrrovcogvkaxvtpexqybcnatccsrlqhvpxswqrcxrdjprxxhquobjatqjfspaienojnwibfvdctdulsjfzfdtkvkknphbevrgqpvsacfsusotdihblqfslmhoonwsvrgubqxqyjyescprjgjtjyztjldmiqzgtrrxcdclekjcesowibvuvasgazbtwpjigepngzisdyoyxcivzoaieufarlpkilvwukamlyytwxvkgbifweptphvmfiiexlyvvfpozwprkhqmvaylpkejfxapbrdlfmlnvbjydmsjoptwtxpclksufsxaatpsucikirqsmadklkribybtfwfssfirlvxzhcuvzlgoyfheqrmrqyfmirlysozgmhsquazvkkijaxysvvtslrtriehilczgvqvyyrcgzqbrphbiugzbgpncwssumiyraiwxgvovtvrbsgsnbegmlpthqtesjrjpxwsxwnjtuiiphoewnetnqglwhrwavxnqxhllsxuyorygllsbcpnpraqpomlflvafielkzxgbkrjebznqexqnprelnffdgvfuivlwqinnnjtiburtmarucqzupgbwnkxxhpicqwcvmclgkbwswaliyylgntdpwgdsqljxqzqpmqgrqvpwxjrinfmcxhjcehmfuvvyazuyrcrdkttzvyhribjlocpvkpuxpchyczzxufpzpkxbkmatrgvrcgzcgioylbfgcsvkchfiycsiswblbjwtwqbtsjlgdniymjsvmjmtjtirvndgiinchoylzxwffooosgoesrhttqwvcnqfysdlrvliyjirfdruxqlvbpavhjuzdaxygpxuwtnfodlanaiasgyqihgnjolkmyqqoyrzrqwdzoeiebljzzdphecrdfznjyyejnjimvgkqlpjxfrhppqaozzbgmqlhghurwucovjjxzlhgjgwgqclcbtrimvdklidtnsvrwnoosvidchncirjdpwpcphzkmlxkylsanqtibhfzqnnfyswfogvaujgazamkbuyqbgnmumqcrbkaqgnyhbqwguzgcotghkuldzxpnfvdhxcxzbasxgkuvuacpfcmydmlldydbggtbtcdpwbdmuhmpdfxdumtrahoyxwszpozyihbpggngoxvgmdtoumxfekcbokvohnktzkumftewzlzwayzywgevweyvhrbwhgdmcbqdqxfzdccfkhfjtxkglwwmzvgbcqsfrflwpseuzlsxrgiunkxvquyahzvvhzhcpoimbjiijdvjwhkglwkbrjeqitbzesejzsxqdhgoyubcddaenacsyygfxljlgexksqgrqyizzleuepwvnnqogridebmikjznfyruvdgykjcpnjkgkzlkbfouwypvggdakdjqakunaoexsvpczlyiphsoegexhvkluurgvntdekytrzrbjhdkgijjzvccbisntrlrppgqcaseajryhhpbdgqpuohooylzofwoegigdcylnhrmnevtgrjvzvqfojvtcyqtiyqywkbztrqbylwkyjbzpgctewywidyticaoqqfpjskhhsviigvvympvqrjbekqvjwmfjlmorbwsirldlhhgylyiemxrrlnzdcdplhjzyhotbtwdmxowenhxwxostmlvkahvwkkrghvffhakznjatlykmmxqypfhfrwulkwepqownbladubwpvzldcsbcnwiwxstqcyoajqdspuimlgonduzivqkhtovnghqdiavnizpoovqqizhexjmgpjanjscjvuycvwwoxydfgfugrpkehwggoucftgvurhkgrrafwjstayazcebzwklvgeojqpaeijjlukofffmxwekntghogqgigzfrajrdljorxpcpyvnggwrmybylpkglqdtbqhkroubhzxnvnmtgjyuldumyhntwbdavblpkouxutofervrrckcuzurtfdrvjwgjaadnfdeaxmmzanwxblavdxgdgazyubgwutbsisujjscrnapqzileyprkwhlzhtrfmajqvmgoxqlgbgueksuzimvpwktljynioaezgqyiajezqsawuzvypafqnqbdwagrvrmkladvgkpofmpjszhwecgdnsuovbmwznlvvagcbseralcvlgudiulxrpajwhymzmppttykyeceyuvyntrgjqohjbrosgribzbudsointsbpenxvdydxccncxnoskwcnsuargvixikmwkaefeooaosfgowxnvxrvtipgnluboxjlxcwfunilpuwchoeutamegpvpuocbkjmtwxshbmnxvhjcazwdfkrhnmzzmvocowktzmxtirfzqzopmdwjwznfcnyfzdjcbcxjemmjnrhvefnscdfhdpknuedgbgygcvkcgibbfujshkevbhrlfnsueajfnpjpsehyncctykepfksdjujjmldvxotbsiwonqzwhudstnxkkhldobkukeaiynrobjbksgluczkxqhsnfbepthfmvfliucemtfweorningqbuzkxrkmjecfabgplhxblhebjchxrxyucjuynoylqdtcgqlahsiaechxbdbshiyujaoxbmhuuoramjzgqlhgytnmjheyrkwunjwenygfcwvvigelixthwebrwlmflucbwaiuyneiepvvcmgfusakuitqlbuaobumyysiqnizmwoofcyyqtknrjdfvuagukfczopmgeyiznporunkyidlavnocqvrjwawdisxtrtssbuoirqzdlajoogcqzfadfdojblmjjzbvwothhvtxprnsmcjeaadbbsnptftmfcmimmuqjkdhnmohxpxewxnfjwgkngfpdvopbynqwwjmgmapyncwyjpdtektyiklorfmendewgyxyiouzuakqslnolmushdwkrwotqskyrwnzomoylfgrghjyzxtotlulmhdyldurfychzzglwftshjiixoprrkeflaeycroienvjmpwwfvjojuzsmubduyautyjkdbmskovhvefkchwodtylhsgeozxejdljfbymmakvndcfnnxhqvmlswebzlwpxerblfzhctkawsepddxlvvrupqousowifnfzqajtlrotechfyeqxmdnmqzboxfgeqykmxhrnvkgicfldsqxuorbgusqdzleyvjzfpjvxtzbicmpqtmjesnojjidbiltqqrzegbmtatjkwbtqylquiouiiaeuehgjledtstnhpsctrdswswpnedrhhvtdnjmrargylyyhsqwvcxndkfcxvprkqmeirspjkwkdobeyumcigfhmcmfipitsgkeaczrerebcrkvbpnzflgrgpcivpiveolnmhdxsgeqgdboqmmazshqzxbsswodeudcxzqnslgkljvangqwyiscmrggoopvotwfezxezvwewfxsvjineqfestrzgdxuyiduvlirvlzatzucivyuslrbqcocbgtacnbilxvytibvigenophxqvrcqgpjqavjhesjenewehqyoxrjxgsbdeklfvdjxahkagelltudjqldxloyoiuqchukgydbdqoohcjmabddziulhoxsukduraqwcyefhcdazvibawbhrznqojjkisclpgbjuiesdyvdbjxxlqemyzzqoqaapakhkaltemmwqwnstedznkazdvtpmxstuyfvazlxmavhhabqjsqmvjwrgxfypovgykozyrrmgjkdkrsksgwowbrvsqmhxnrmznpkqilenmvfylqggahokpakwzynwpajigmflbhabciufzjbomesizoohmovzvtifxincvnfglwrirputnhwwnleemuiidrtkjkxdfmdzcjlogdsoydnlqolcdsdrqbzesvbeohqssfyttyxwomhrcgosrpzmskcofmcrpxkhhfxhqidwvifapeporhvmtcfkisihzprmtkysbeibjmzcipqbcuawbrvfklcodueosopoasbjniuilqkjcareivpdaowxrggeahmkxhiddiurvoqgwdzkusnwdyortuxnhuzqkdsbtafuoxwhhwdvgcpfzzxnubkwoyuoufoxqdutwucldstwqmulihpdrrsixltogchkobalkohrjosdhxckqqhpghmtdvianyaziaujskmiasxihggejljxmyyqnldpynxbjvgqscxbkbvyucwovwsxopvggkokdhyjgekpdpalravlqeadrancjyvfrcaccsvtrrsttfufumyrbiukmiyjbiavnjujspypakycecsqwirhvuanuvekjaqjfjpajyjsmflyuavstrnsdvryalxmtoacqzgdyvsyfbsyvqfhyoybjelktybhmmmgogiwlhfrwbqmtkdtbahwrfjzyunpnjxeexftyrsbiypsnrfjjvpqzlngetjstoidklbvmlvsdtsyhcpwjqfgujsduyhwuozjgjmrsvvvslffapehfcdlbnqocqklsynckxduumkagphmqjmbultulgxzgpmthwukeutyteyeswvyqsernwqlpqqrrlaoaquqnhcnwwqnlmwvxutafajlktsivorkidolkylxgfhyslwjrovdjylaclqbkrugdkgjjpqwzwgdutlawxshnkcysewilxxzjezybfovlmdauhkvdhqozszjhvudhlvsoytqktlxsrptvxmzkenqlsmjhselgvgbawsdvdjblzndyddompplkncqkomklmkvefmjpypjiodqesalajtxgabzehbmsydvdossjincxtsqasjrnvoqvgztkwsxafyufewbqyijcmsgldtmyzdllzansqzmddrblmmipagjxoydgggmqpfcsthaxawhqujrfsfjtsuygqwnaoxluqasxzdiqpqqkphqvbmlaqqrqoouwjdmwdhbkrlvbjwpfcfxxubkfritpqmwjnhrqktqrmupvnetikkcoprugeylsxikrqfegmmldwgyybcrcowhgpfypuydxagdmjbkujmyxzroizdxaamkmmjpriqibjnlldfkrmdebegskivyvhpmjqoomespcfvmoabxaefaactflqtkhliqypsgnisevjrydgfurrulyebbqpansxpdthzspkbvwkrxegbboszffwakabqhwcmnzpvswaryxqjhitkmnhysjlhnorqeyasijeosqqqqivxavdufwpkvazdryfczdyxpwqhwucvwfyprqnhjwiamuepbnnsdprpureltvwgxfqkaucoelqmjomgkhcvfydbbikzqbytctveipedfyvszefvdvfyfpbgkwnsxfavblqnzukqlikeaauromjvemrrfqxqndgntesqkpknvyijgkifpynaaqmhaipinwbyykkufypkbllliyamqmozijnapxtjluapwvinbmroabzbokuoaqouoxoqzvwkwpglwuxbnapercunduvmmdrphgzvpofrgbiiydkrqusipnuyalzajxkeectkywodfhhbvxptabfoqemmdmsrrzebdjkapgcvqqhwlvhyaboqiznlhecgdgcuhfeatdakjglmpqckspcsmjbihzuhfpgvtqsnlnibzkgtzrpfralqldegvmakpqmgighfwiuxeasptulxixuxdneudzjbzgtjwliqxvxublcsjguwrgtfhgqdimmqsotkrbnnkzzzbyawaxgufjpqulnwvkzzvxlibhsckfnolknkxnywsjjmsnwaffebcqnjzqbbzrwseoybxreuhcgdwkfkwpvhujenxkrqtmgwirsdflimrxiykirjkqnbcnpziktmhnlujguzkvefuidxlirjtvdqgobbwwvzanzigtuqbxskchzhgdbnwwfmhhsaprcgbkndfjrupimvsmtodlrtptgipchghooiltlexguglyigvhxaztqldxnegoxdztheplhqbvyhmxyvpltcuvxvsstqiuqlhcjpuijttxrnsoxcryocxfissnpryswadngiiwvjsccpdmgaraxknhbzssrdaelxajobvdswdpflvqgvxuomguhhtcaidoaqbpgoeshucrwugctgondilatwsfgcjlfjkvpwfziiutocohmxuhqmssadheglnsvwwpwxmdfbuwenresjlokcoahlhhmynrwqrndhgvubuqkihgrejciklisgrintwwjnttzatjsvbxaxccevsgwppufobyyhddwukqgbnqkndxvaupqirnyllykcmufzdxogvlwlktejojqimtnxofukuapqtdmlmabkvgapflymhmpnqgwkcomdxggpwvghppsbpthvhgrjawccrajdvcnmqycwjpoeenqnkswrfhpoojrgrzoprddqrsipmaoiznaskjdqiwmnndcasabtdofsmdxtjfbwqwvxrqmbdurbogutqtrkkqcfwgnjmnlxmxwvzfuuhguspgjygyddpffhstqwukwcgwwughcduhglwzerhhpdfdzboakvwijcwhdzceuhkgqnxokybexcrclihcgqwdjdnxflxzulztoysozjuiqgrlodqhemeyntcbatqtrstnztcuhufmniuhxrlgcinzuzjhbvvzpdobunftaivdtskdlntdgftmaycfkqsxrqlszywdapktjgvlndqdyaqqfesyxsrjfoxxcbookddmrszpicevnhrjisbraoaahmjwxnsicmztaxissadzfbxszwumgvtlsvtialsovajbhohopeffeoefcortsgzylvbeokmpxdfjlddyuendvedxfpcdxigowpnbspqswudfxjfjmhriobzzcijsfyzqueehvnvweushtlpekftzdimiuadnianlbxindcmrfaakcdajmlourabjwigbjfbyqsuohxzajvjgjyhhpbcoukphntltmbjrumjlzsugwhzofzzrwxaomelwgsrzejiozwmchpwuxucruhutnjzljhnlghbnxvjyzmltomtqmffuzpxiyzyoafbaxvaldkfnxfwdonwfclakixndyzdatslnswfrekjcdkepfzdylothguoauernjkiltawfmojfzfzgpljhbmrmayhxghduheygvppamgxgwyiawrtwzhtwoemrywxprwleswywbbevfxujusmnguoeaphjdlqisfscamyxtbkmrjfnvskdeslrytaoeervaclwsybidyjaamkuglyhvwdvnsuqizkobkwevunifmlkfyemvwjduwwvczvlikaskmrwjvkobwohxdmicyktkistibsdtqvlcktclowritoqgrkxecpclpzcvvinxpjxdoqlhztixwpzertptizafptpgfgorzrclkxqpsktzosuxxivirpncxsawbydplycyljttkkzokzperpmpjspmclrkkqoullkfmvmgqdhrjvutqqunyxsyjfzydhppveoxwfeyuunqltpshghxpygykklguzklfeahyzlzhiyzbsgrsnokxjuvabybyzxiaisagpfunqwodienzlmdsiujskjzuexqrjjcpacgwzclcmnrxftjukipsqdxxxqvyrjhjhntthxbnjwviefvboehzdezjcfwewvxsqdakdacqpomrpjppbcmwdbidmcpumnxeuolxflhriqyzzwwatwczwstegkpyctebwqawxcokorovjlnwhrotxvcwskpxygzlsmdjqeffihlomdbjtblhybfbljjqcjpuqehlxvbpjflcscnyppvyspnbfszkmusfqwanppbkowfjrymqfnzmcgyfmbqwknbanejqrimogdozggzupqqcybnvsmfmakzhxqazyepzgdybgtkcytbmxwehjsljvxjollongdpvgdqovrixnuutdiheyuajpexuduehdvztbfgadftphnhhvbaddmsnzohoyuudkallwjchrwtqvsquqxgdgjhimpjahjqeoxmmjvhjrfhkdteqxncaibwoizvbwqegpqclerjjzbksrmbvlhvbqmclgjhqcafyqjazegxbyzlitsixoelsvsieqxqadsfraoizhqculvlnrgqhgwclaoddwxuxnqcewfcckinhgnasmkczylzdfntndubhnkendzximabbqumwdlbetmkcpmfojxevwywtmxgusdyyfafmwihgkkpalazqkzqlahkmtglwqtjodgllbwxybhfwldaeolmdpwryeuxmdkwumpdfqnjmsomwcdzjgcspwirchngnclpbnrnxcmpebbudwavpbaexyeraekzqclguqisvsoteqgsbemcfqnjlywjhlcmvdktpnzammhunlmoqmapkkbquxbiafoylezwncfdyndalrcqqiasdfeygagyuoqczmgzwbdgaxkqnjhhscgybmllkxhunmafflvjtrgfvtwhfrhqrliozpmvnezpyqwntqpttudogbyiuvpxuzhhsbuzoeanmltrxqcmajamwvmmhtukfpvehivdafypfavrcwytbdmbirtzyuafjqwoyptigefbpcgcpfiyqgxqmikublfdugybtfnlhwphqejlcwbqcodpqpqgwbxnrgtnwsfirghazaxbyrcrpfcasvzdxxefzhopkhvptqgltipvacxniqlzoyjhbsakzgjopljhdlwqgybydiwrvxfzzwstuvmpezfinxmipivuodqybofqspwwxrlnjdfztugeylbkosbhbblynxxmjbrsgzikgrcrtgkyoyawrnrnjlrvjyttxwyhmjyfnnkccsygrvmqocouqzdhvcabupseaqfddrqajueqynbhgeovxjuxvdmmupqexmyolmehkxbjwkpoqtwswahwhxdoisjdfffkidvmyfgcijqiywuzrfvzuehteukdequhhqbqlfnxlnqjmknlfcbkczucinzhggvnnahfyggqfbmrvyzvpyebbdkgjteuoqubbwiwizqhvaasnczeevpizwdbwoqxmjjinscwxqplzlcrlfobeajdjahagvtojeuuynbjqoyqnutwrnvjjaphrzbibmzcrgquaxgunjfqeueliitxnaiplajotemjkbwghrqwrjsbmtucqdvppppkoiinxeqwlkulrzqvjnawuokqhpjkemccosypbpfqqszsaxskkhdgynqqjbelhmgbrptkwkoxlqrxwtxzfpfyasljyqoegpflraisdofrpwsbamirabllqmezwldiqysmsnhauvkvsobqqfywpezuiamjzycatbrdymsmlwjmxuduibzlpxmgyngveuvpmfphdjczculcvpljowejetdbiqopywfbnmfyahnqroqbfwgdvvobspnzqyyqdnopkldwawntubhmbckokchnzutfiihqweqlvodcqsaseydntfgzebayvhshvasoziwcatpcvwqdkwxqplhnbsotsqjxqlmdbvqnmcxrvpgenebnvxfdyoextroaxxiimuldrtisgfikkonrjnbvbysdgyhwiwffdnrchipwnmsbojfefzonufiprbzgkdchznniuferysyckytnkmkxdfuvkrvniaugoufujpmiffyjsxgwxwzmibqwhjqlstktfhewwdnijbhsidzwjseavhwbkthxcgtvxmtkpfgzmutfnyfdtumwtzqtbwxxabqevxswktdmmqtoadbciywqugnvnafrgbnmpgxivzvyddtalhypuocnxfamaedjaegfjidwwtmdmroqmwdphupkaykfxzlkzahjvqbrudsmyebscmzpkuxuqzokmptpceawnzydxgtebvzeqmtptlvrrovvvdomilegdwaoxbatksuqbtswcpynyksieqfztjipecljpwkzkcuaiyvnnqzcqircqurkgbhczsmhifzyhdwcxslqjqxmhuejjznetxijafchzpnansfilztvfqflnxwrigvgekvyuftmqdbmysjwcuxoelazukohrafhjylcgxdovowujfnakaebkldblkvhtzhkjtxrfnpilokdujuuiykecupunekuslvuveridczsxtyrbsevqtqeydzklxtciuafugzjnnpvkbsetspagzuprzyvrjytkhlsrhmoktjsqcdxbdeoihptojyubgukeqokgcfpkdavffkukbjtthwwwkhpzmwqzfvozqhwoxlbqmaynwqsmqwrotossqgxjxypqhuxvwqkkoybiuifirxahvzabxytfrcwbotcmyjeifwcsagdzbogjqxsngmzbzokphkkovcrptembkondgfmkxtldmbkyeiybqqyqfkdswayqdsadaaaxsfjqzxpredopxpemthuxsmlbvigfkhfztvygejykfypuudhzlnuzpszntqevlpydcwthoixyokmdbbftpxakexertslkdqnpslmelnezbdoejgotjtciumkixpzvdssuzhevbixiipbslqvfrccrmqbwdnqnkfrrzqomxpwubpddmyjmmcevwfgnprdpjvwaqyfjdpclaungitebpgjqhhnbkmuwynsgcrcwtadgbstfkcjpkousipbyfkgqekmapzztrzfiujpipekzdvsxhacvsrsfhfhukhrzwjfrultavbssyscpleztavuzpaxanvkgfnjzgdjvwojyzzymipkmlmupsjehoynkjjrytvqkbopuxqbhhwvpwfgmokuxamgvbymrpsnkssidyqpbbsfvtbgajwsoaymyqzdbhpoekggiafiuafopfshboaholayvwsmiuqkcbubzsdirudffylhevfonwnutdzprbpflgjldbwypefjkgvmraxqlngrorigdqnjbqkqaijmugetmfznvrezcehqjbrqawkxizcrksrcirtkuefxtpljmedcalbycblfnzqbtigzukzcddeyvthpaihazoaxtctzdkckyfhvpigokzkpjgbmxfmvkyddubpjoxhwcpcgjdccwrmsayogmjgpuhucmcqspyjgfzyztqdsvqaeiofpctjecgvqeedtxzygleyvzlhuqtritbdrnnxatnjxzzroovwhangfzcwfwixcbalzxdjcfzovyfmdascjhafwinqebeshcyrzonmbjyvjxmpnhrjtcbmnireqhhmaczcshtwxmplhdvqrargduvwfjdxcwtftkgpawjuootxnvirjbfhuwmmtvmwygvsjnpnmvdcmszctnromtwldodtcwkhzdaxisqlufsrcejbhvtyqwizdkynexekhnstxacmgbmzorgqcmclggbzglhsouwgnbnniyhcnihqaodcmctsiqblopcellhtdvaizekjfslszquizhoycjgngkwulcqvbhgjiucuhsiaquoptmxdegnyesmqjajqhpuhclkajavfhvhxhhtxinlsyrhngnoxrswyibhyyybfopwbilbeiiwohmbcvscmrocmtehhbjdtzmocolwpiyqrdfrmdjbhhqepaxlpedbdewtuzjnnzlfuugvdaxkduixrztdejmfbivscwhlzixnlgchcjbounejthqaljuqsmqgrfpcbbmfhalgvrpgxjromgnnnmjgjbrkbsxgfzvivbhbslluccoaxidghdtuckuqxxsjfvmfnhzzfvgggnlzzlufmuxhodqhvnydkflclguwmxljwbkaqeiukivswavrwmoccqxfahmbnlvwgguanldjncofxbjjzsslbjnnuxdptxbvtvmkhyvuccldmqbcsdprwexpdgyzefivpqgohgzuwhbvobanktsfnbucychpkqbrvulaowufgtfbhavwjvosfqekrqeezldklyouqyrduwrcjlptnmiqzjyzhvkotqeksslhzgmbjgqexwfhjjjishwvhmcvvqpicqmclvvxrebwewkorowneeeqjwrlcjdctxybpsrrdkqiodtmnczqclopkjdpwuhdamtgilmdcqfwlrmlvsbzdwurtbbfanidstcsmelupdptsajzicillsfcrcitnvrugwjntmhgjrkyiqvferlqcylpnceabraczzxpkaekfpjaegezexbvqcokmfgajijqzbabpzvjnwxplzgbvzaxztpmcgwgsgrxbxoobvcvxbefgxpqzyflkpoifjwlioblopbxiyenqkxujhwmlukkeqknxtawugrcwjyhzdceypsqirhyrdctzxsyikjwjzbhxvpxgrdefsuoufxgdjtdrgvsgrrgmivtxdcxtyreolylldwxcnzrjjmjhxtzwmbqdswuscmibphhmuewbhkiyffdrolezxkmbpljdpoiwoweibjvlitotzgqaqnqbhrhjcvqzdobfkmgtnfevfnlmygcitvycstohteyyoxstseucxqbjxrmtdpegykajwomyqzatwjtyocxytmlaniacqtoludefavrvxzikinsssbjhkjnhhdrcxfeejlyrjygboqzljfevnrabfmslmfoskwjigmiupuocekhyeiqthxtzltsskoqpmnodjbetmbbldwtxndgmtwhpqmkmuycntynidqmmcwytqiukqprwzesvpkteriwjtplfaomskmoenzkpcomlnxniceckujqqttxrdsmxdrpuyucowpcookbkwrghwyevqekzijkxaurniyunodwxciquarrdneswsyjdizqkwdoeecnnisevirofrbipzltymqygtrhgptbqqfzngwyiftgzqrabkpitghfhjsfxfielckypfophvhirjryutjbmyzfrllmgzbxhuikcebaxyxchfmgptcpzkbcmmuxxoxrkxnofaelrdswwupxcjklusdazryqfuerptdlquscxtzldlfeacnpvbfobnzgkbekltwcjfrpchbjjiouikdybblldknpvxwpiukygzgcmmsamsmgqqvfkiftjothdqcuplemueremfvxmrlzepyyzxqckqcwuauptgxvxkxuhhnnhyjiyzjikbokjfyyeduotsiigqtmmwgsgyyeajtpurwhctnguteqnrjqvgtmzggzrvfzvjfdvkqljkfdldjdjtwikaztuxmyjgjiegdpghcrmwffzhjsheqdgcwkpgdchgtawylbsqzxdzbqsekkgegiazubhxnjwcpcmipxdobtqzpztwkaetutsdvxbonkfglsgfzjphypaueuddovuuuzmlodbjohyfbcxqljrobwqivpflrzwqjmjiskgimpbopnlcadyvqjsmlstmzmmnepiobvtrqfblxnsxviuskkmchhrqfgupdmejxyvdsojhekjvasrugcrdsuinbiqrhnqjlucpgkaaujbrcbvyvubgdigruhupzuzvdtamjqmoitmufwnloxsxxipobqzmqjabpmhcjiivtcsgwjabqllhqezyqzgtqsqjxumkzphoaamvpfburzontxnrvdghutlncjwieijahducjzajvjrkhwwzlmjkcyyjbxgdwhfgrewolrdxlbdycqftljxaxqffliftaeyuctggpfpfunnyxiwqucdpiplxawnalilriicbnebnzfnssoytrfgtxvgmgtczbfqcxnpyjxexuwpaeghjrrruhkxphygulieckkutzjggamjlszpoinujgxerzipjhyfbvvjxyaiihdzomcoeghluvvkfsvijyqfwnjzncxhvcmrpvnvwtaqupjncnrraukeornvpcqpihjngbloxvphvyoavkrawxonyryuctxkkdhyzevkdvwiszqkcfvuvvdrufftvdiqpmrfuqecorauqqbvbhxulvhmewsymwmaeqzkgnbdblebpbicoajehvvmrgubrfrpvpbwsuvzpbjntkisjbmbnuwteuogknvvsxmexanjxxghyoezowjvncrhhicxudcejyaalskyipejfizkthndlbwoeqmepzwjewhxljwvjmmkedwwqylowygrrxotktiezylyrodpambxrvkbhdqiwkyrscnjrvssrowqvlqsamlewlelyoununfztsxzefuhuvfjwhgkfhmmxeycosqessucizgrchesxajueuceqsjolhtgpzgldmnumijlyxifwbbfucmlkmngrwiakdawcrcuytgdedajxmobiwuuwbgppdkydojbrpqnckcjtjobpwcrrpqandmgpppnazjfsloxthfhydonrmhuqatmkjucosoclmsyjiaixlplvwqidtrgcylsnexitkzqyuwkelvxlxbsdhybefnlhymihqenbwsmbmuaedykbtwwyliydzudwchlmplycneqgsyghmcjeylxbxscvqpiqnipowhedlllpmqguhwrpygcmwlxuwwwxvjuwqbzsjvbqnjbcegkxgtaayupphreciydpbtyhhfbyecejttzrhvvewmojamjzkhlnkaxwfwzbrifinzyjbauyubkskkgqrbvrrgsrgiyjtsoxqesstfvsbgzftwkfnfxpqlwaaijpyrjrlbosquxydynbvkkhwqegsidjmenazvxowirykreskjveyxxvovpvlzjurluvywuxpzrolykxtuxsiznmofckoaqsihkrbmsqnoobkzvfcxvtuuwpznpxsjgxceezsztuywwlpqhlngipnekpfspbqzlgbhkkgymkaiyrqeddpxngkoebxmhjnyakhlztzlgdbkdmcraoofoayxqmwdnhzmsgfnuydurxlxzmkopmqyohihzgkdxsxzgfykpbhxyvmtralvehxfvsfpkzkynkpiahyqwjfynwnnuwiqekqjylznbvchrnarqfelhrpvzxwwjpywuoifyysdwebqqzufbunickpcwtbocyxlxrrrclhxojjyuinyfxkbkvztxlbsmfrrvqwadcibvadfaadijdxwsbrewupbikhmjuwkqlzkmcxdcrxnnesjlhpkwqjdvbqxtcijebbozfdlknugokchapfqhdxrhevefzbstaxvkiegvqnsiqseyfxlvwpjxduzjorvkdbgwgiuikftqqnyszcsrubpzjzkspsfzmyfiygkqhcxrkzaiuourjslttpbwmkgchllfdueqeadwrgpcyrxwmgfwqqtlytcukajpushrwydytubukydnlhbqzppzswxmhohhuzxxampycisdublvefdvyusfrnkweehabekjbflsnyodgqfohgfkyuwmcsmvpzuwjemqmpywonvcynncfbbygzbansacsatzswjviejlbbthzwbdnttjqlmqoudizdgmwgcdrxeybzwxbljtlwisqfhkgidfplaerwtsujmxaonmtzqsymlcthkgmnwywuprakzrfbikldkndtectcgbkrlbxjoaqygasxytuprwicydubxraohlixknqsrhtyzlqzquwudxjvokuzqrgvmsrrugdhfkyziclcqppqgyyiavscyponuzqjkxpovcdumqrlyqzijmwwbuyskwluydzglrlfpbahsrtipbpkqkotwdccihxeummlhllslwzgrakgslbimvowmacectbjxlyilwdtjxueqphqebvgnlwvcamycqujxanaitgvuhjofqwsnstcpbizuupmrsckhrrvfqkdezhxnkdhdrjduxkupyzovasqgwseszqynfykkmnwjlfbjhlhbwrfolmlzttjlidtqywkhlsfpzxtixnixavvmnmgpqdiohojwwxuagpgrrqxgkcggokutftnhbymkqlovzpypannacmmfjthsotuczluidxdwbscyzyukzplwttpzpvlhfakjmbbwcfjmfuxjedaxpjcwojnzgsrgcxpfxbvezvjjgvydayabiwfslbgtbxfdfrdorqiycettasiwtwzowqjdgyyjkzgbewjviwcritwrpsbagfkidxdyewuzgiehbjkeoldnnyuifjgzsxgqvdyjauqxkbxdbnxlcgoprzbmspeaqhhrnnmxsrnwcntbanakzsclvuzwuugcnfkatiuwkplnmnepzcvvadechdkzoyvdtmdkqdzuqxerztrymrdmrczvjhzfinvqcdfdpldcxplaizllmadpsehppnzyoieezsahtwjwzkmgrrytqfxdthcoxeczbedctnwzdpewkpbmcucqprgtygkhrksxylxoszyveahxawjipzdomturipqqewopdxnfjkglcytcqkheneqoskdyewmbezoqfhkihiiphvhgaeetywfcalqbhyskritifkfiziykeszrovqfkyuweltdupcmpsbhlkymuogirzkdsspccossjzqrtewchilbclcscoggrhvxzscofyrveekrhltrbtvjlxkghtzuhqhbscjvuktyavpgejzhhilbvnuashnfzikqdkfcyhhlbabiaxknrpvpdcfcuedodalupbgojwpcxvrprubppjvoeyfjjvsvwfkerimkwtnoosbjpyhmndmskdsqjpnabeqbdvupzjjviuftuvgvlxpypojojoyhwikkvvqjpasbuxvgfmzfwgsajqipttuzxgwwzibxcartxwhhcxpsirdekhsfqcbvyrhmywtjhfunmlqamxpgbfufvvivgfaveoivkxfsaqcvzlhmaejpgrujwiyjgpdqcftycxtywtkmzmyjnewumbxrqsbarrhndevdsszqlrsbabyfoxrtpwkqkgxvvwroywtnbjvyebozqddduxwdkzdykhokzqwbzdmebcqwfayypkgkidatbdpnfvmbzibdzavkgfjonxhhmrccnjofhabqpkmmjoqsrolobwxjrbbshgvuanionbntqyrscueyduwhyslvnkoqtunbnhgmhtmhysmpyjddbrhxbcnlnfihepknktfrauirryloxqlbbcycztcnganpuztsitdtdjhxdfddirritlpbtgxrohkvpiqayferzbhymjxahmxwvlzbxfgiculnowkkkgbdznasxakvpwxzpfottlxxofujecawdjhmvdgzkodpevclqtkcqbbuncyvsivttiqkdwpduueclgdoqtgqoxraxypthsakgxyuildfdnneskpdfltvbnemllhzgytezcrxuzvmtiafdhkvovnylawdcbfwaqfcplwhkjgmsdwwsmbpcdcoydlilkwcinirecmspokyxacujbgahpjwkjugjeythczpaysmqizjibjzlogthvfppferospxysywkumncvkiqypmfigxkkvsypqjfabwogqoutwaxqlrkleeqcbbqobqtkrmfmvbwlqcxoalcffjshdvvnywszkhlbhjyavviaxilqmhdpcghsgypwwpxihrvvpbmeuuiiwjnvnevzksckifdgivlhrlvyqipywrhzfvhfantrlelihmwvgjuvfqutqyyhsgvsiuoillupvqvybkckbeygahkdyegzlukycdauqdlznxprkmaxvnmmibiexukzhyagctuyllqqtmmyhacswenixcmdxmxrigbmuvvsixsskfcabghqkdgrtbsifccsobhddnkzmmhoycarpgbvzovmkymckyuzxfbuwpkfgxzqbvoanghbbsfndypcarstnusvexuabphpexqezjtkoxtryqixuayerweodkqiyvppzluwyiusrdmkrnhelfevxigupgvbucyvztxwrbszkoijqeimosywllyvbxthttphjwyshnkojzuuzgcbfeehntgqabnhryemyxpaikerwlpgqxgzszdowqefuqtafqhseytzucahlcimnleibyhrmsyfoznbipbohnnxmhwhgjbkbhoaeaeilctieueartivpslhuwehfzmnbjtonyeazoyhftxeisrtohuvedkhdcturrlvphlghvneqsbysdudzmrutfqvjucpzpgkgklsnicnpksnijxgsplwnxgdumzebcnnkkqrncagldkamnpxnshrmaiztvgctxthbvhyjwxeukemfgmgqqfsgeovvveemqghvyjnfbyrjxwwmnrdprrcgdlacgvomextnbtnihkznkivrijpoodjkqycpzgregchndcdfchwidyjvjcriukrmmalhrwrfxpxifdgsgoxyiulfxdkorpigttaawdkoyukclfdplrbnlgtmjvupafibfjxywyfufgyslvikneyzjbfitqexvvohvksaoqubptrxwrkbceajmtagvxtwjcckrpelbqkkdrohpymxdwxnzlyokomcageoguskfpqjdgumikkvgnrpoixeqwqmlecwwrwzxfnyvlkhpseycgplavyfktxrtdfiqkrtrhgkhxigseociurmdokgluxboavzgzndqouqwewrkndgdovibglbxpfqmkvydszaibllpdrggrnbcdejmivmjczdzauqthotlrgqozofeqkuwcxmdzkfxpbacweeukdfwrgnurqusemmvtyxlybajkjikvjjwenabmwqcswvwlnyireisqogqigsyurtxlocxapjaqcpisrpdfqywbjxavszdhzzjrmdxnqluxxxpiqgdtnvvlpykrbpkncwlwnxtdveduoxaqvydrhrpanwzudhhjllhmankjkldxscohbdfjzkhmyevfwnrrbzebudprcmnyksexwjahqmxcormqrogpltotfthjblxprezovrtttrrffrklzjutkshvjzwbticoeqkkkinceflpvyvyfvdtfcsuppndylwnpjvsptbhcnvjqlgwarmfeammmrskeifivwdrqviemoszmusdnziezhknacmyxfalywdcbduiriqhdjxyaftxnrmogdcaqdpccdmykksgqktpqxcyqksfxmtsdhqwurocmmfzifhvycyudmxpzuxldrglyxjqcgtbdpgzwhczguozbqbxmyznofvmyfalczmgdbftmswbqeqvxnjznzfhjezfdlthlljvsakthavvklxigvsdgjiidwvmarylzbldbgbofayhknhcimhqzfrvtgrkazavygllqyiuiywyiyzghttxkijkogfnluduclpvbneubersinyojtxoyjauemxuwkbfgmbxtcwxophzupqrptwugpgudnutxpknfqguxcxrefxslpohxljbkxyrbrpitvotsrpczkuhurtilwbhjonuyuehvtlydzgbukklayoosbirbazjlirmnhvbfgcjwdzvrcpwyiadbpwqwbfluossqqtegsglvmvaekjkhisgoicxqqwtibktojzvamdrmfydjntqutvjmmfrzyydajcftonqbsqwxdloazsbwogyudfshbtupasrvhgpyzjzxklwbimzmzivjlhomharlyfygpvmilnxszdzwowmjtzitoadvjduefyvhbedvhwivofefqpgdlrzauwrnnjpfpuoxkuvccvbyidtuapanupoldidkbhsyvepwaezewtdjoehuuflqbpwjqqhiynimtzxmzoktqfhacvqdmhyjsuitbnzrkcmknpkzykchxakbzksqwkvwiwshdgstliehpoxjbuphauuiobntmjzoywfuawuosstcpoazwkcpiwkparmfzbatxpfzvltuvjpphgznksiizpxpkkbrxkduxgnptwhlpncycjjuyszrawgfgtxuepukocmcfdmmwggufauhafhzcnzvccewarueupjfcigeywpfssluwellhbvraugnnvvrqyqppiwgnzrnvlybnebzwfbiwtzzrqccsdkinxhamjmhmgjopxbmzmtxuhwnhojskmxclnpzacaqsoskwbdjmkhkktnmxumkdmwkbkkhjifogozbnatgimfusddusozkebusifugmkofljvwiljqshcyfbdvnxjuegtpddlibcajmxbkdxtvjczzfkfcautgvsvyrpfinxcyjsigcntgjwbxyquttbmbljyjbiuppprwekvtsxssizcwfivbabxssjkvnumqtdhfnzrjunglrypdramlsusojonjshpiivomkuoygpmufpqwlrndnsvkrypnjkbtcajpkypfttawulubjagqjzuwhjqeqbpejnkvlveykwislyizjzhwauvkkmlgcdsauwdgxcmmzrolxupatsceqmekdgbfmeyxowbuwelygvvuprqlavgvriqgasaetgoicjxvkpcykxoonjnmvgphfqfiprxgmjlyqkwjjdcktunlekuluxxjickuykjpvlqdzdhraoptpgdurpcdvpounvzjqodmxycdxlremxqdflexjrefxkhnjfaaelqhwpcvtiirvihtsrdnpesatryolawyxciezcxumarsahnbqrpoxudbjtjkcczsikjvelybtywbtuizrmtxwhttaeqflvmidlymjqpfrixqyjdgjmesutgxvgnuagznngapxiyqcfzsktsigemsiqabenkwliftfyxtnnkziyakxtckhlyrrhqwqrzwllcyxadtnnizamldyptjmriyfehoecibotskjjcvoputjzpjjfxlduemmsdczpuqwnvuofpzunsjaawducgfakrwazmmoyhbyeobymahjcbsxupessnlxqnhzhzrdhpahotdcetuqxutjgkxrqmupjearyaycgzhomkdfcqvdqjijerutcukwvqzyemqqgtkguofxfjtnvggfldzhncdhvhfpywvhytipetfwthrupqxwcbobpnfsxijqcvwxzkhxvuflympigjvfqgundvfveccedsurqpwzgfovlrxpoxwrrfipmqvdntenxcdcajgnorhritebjfftfwrrlrlpdqdtdosqrsatvujdltomjdcykerzaryrujwmosbluhxyyznhzzyvdqqyxrrtwaobljngfjnhdmdwxvisujkkwdgwnfzefqyforwqlnkrpdilunomiltqousfqsvfwsijowicvmvmcfuclnphosfntcvuwutompzfdxxliuaskroxteofzsonqmldtzsftekfjpjjpsnmercdwinagtbtvymlvrksmgztdrzbhwponrxeeoylpspdzcylgwwrgjrvljbhdzuhedekgthahqamfhocwxpcnqxdavepqsrsfjkeokzawmpvdrppxaoalyuilrjytgwvxidqeicgptbzcuvxwrjfsmpctbrhrsbijtbqrjtcsheegjoxdtffiyczhmezengltbwunflkztszigohvxiazejchcvuhajeffwsikuasffdfijhmwqstslypwuychcndveahdqgskqvrpbkgtpovltflthlrhemygxlzyqrounonmmnxiwpiribdysmuuconuthcqqnmklieiqbaimzfficrbkymkjxsrwqrbqubzhmbwkzpvynmrrzvjcuvjbcpduwchftwgzvowxsopzvgeqjacegctareuyqluctdxijiemptfycvesoeguxtvvwgxxgnpupwmwsmcufqrydqheugzuhrzykttdlychcksywajfoqeljyhmgeoniyzqevxbnyhtfcvxlzoupkraotnpjsifdvtxpyyezdwnqwmmwfcrpqsfohalgscfhrvjwjyzgdrcinaxqrnnxmajroqyazxzuxjdauzivaskdpbbptmnbjqquerowihfehdkduxlitoaganmuhnauwcwcjfqmhpqkjqancejkytcnbmxembjytphscpenqrqsphchdimildcoeosucijmxmqoyfalcpkksanhkazcmaiibkhltaakhfbseaeqihjxlarlzuzkewfcdxpkoqubqlnkicprybtbxpfsxvnhmdbirjdgdnsiusrmpuswdpqnnkqkqdrujizwwkmoqccfwjmmvgxzpiriuzcujpwtgpfnqwapinmoigglvizvwixvacsrstccyykyopbelfaxgqouolyzvwyseppqlvsrciedrjvbtxtjsvyelaimoebkmwjjicsuwebywlgzmtwsrlsotxtelrkbwfdqufwlllmokrccjysegusvngjhjqegqovxmdfuwmfagoqoijjktaobuvsyobinglozpukcmervrkjxsydhuvsgmyohigxhxkmuuxqpxxusjmdohcbxcqcmjlkqlnzmiaurnnnfpitnzfgndrptnayiosmawxcpmqnmcvxnieulfyrectrjvjumraqykrhrevwtqokgslgyoqwfulsciwpqefzpfdikwxaewurhabcslajgobueqrkecysnhldnhzfnzuaiyvajnfvyjynoboelaijsfvhmyyrtwfynlmitvzwarcjgfkirkgsurzqglsxrmqosqqzuszgxuqaeazdecvtqixsbovrjqklfcnqqnediegvwbjxzqqhtsbeunlqxafwhpzzutcopwolefnmeeplzllrepmclpwchldarwfutpqkeqdpuqkxyrssspxpnvrnwjiamtlfhqtatnvwaeudhczeqgwrubnwtcziigbwandomvnmxpnfqswyyrpjastrptpmkqqqlvqitczzcvltvujpxgigivuiezueibrhcnsjmzupyixjdfnwhbeftezgljoiwlfqsoofjuhskanfkygtpniwuoiimzfwthokyhhqhjtvkyzmditewstvmxjnewanseidbuljmaakaprbvffoyuxpnbhtmestqbxpvkvedgabelnnzuhrhikntxygrrvvkxnzvczjpvnfooxkdojkkxugcyyrgzzeuoagyihklldtpxvxrcqjxgilytjrbjkagpxjtselbymqdolddwxplchibienvyiwjjsceidbteaneyegdcakekgstezibpgghhfwadkagyfimwlladpzualhegbcocarrejdbwllyftymrqzgogdhccmqteckfsrmckkmhhokrbkfvbgrxlyzwqrppezqthxnhxypttnfsrancszorbzdusbdqhpsdltfltctokomhimanxwhdqvlbjwoddmajadanjlvhxydwoatutjruzuzfcspqcufzketmxbzcppzobiwhxbbjobbtcuoodqbvdgsiigwntismhpwhqyyabvmfxwavbbznikwiijdykuzerwhgyqmhdlwzpyfascjzkmtcddnkewopiudipdstqyviuutdsrtbsmdouyojauehibgbyfytelodbpctiyfvoubezcsmmndgadmjdglnitjiezhanctzxfwqydsuhcbbruvyhsixxwsfheojvduvsehypkonnjgsrtnvgjyaxycryqsassqvygjggahnakdxcrwoonauathfdtwufhuuwgzefkbipgipfpwgrocrygqunrrqyxxqvbpazulodotllkardvagawxjmdlwkyypgcdbpyvbentrmxkrpdahvejznidorzpilornmmoujnnrdehqhzvyggmooqremkouzczjvbhwlkgnemmekirkhhwldnethnbudsmrghwwmjcjzrndmbgyfllgoqrdnqufllszsjiwywbxihmsytgxqpuywmfxtaghslximjbfxozsybrrpizduafdsfzjokbgdiggeprjfizqsmcamtjwiwpphgagpooujfgnnxxghxjznoomvjvjwgevimtiqkvitqgywfkzyjxablccaekrszinbjzbqceteoqpiaozxxgwbemizkroyeicobhdnknfsfeylnaeappprmxnleoudcvgjmyaryhdfxtcfealinnymmhoocjrrjwdvapmvdsnjzvtoznucvifegsywryipvnlihbykqlsvtwkbdvvbtkpvcfdtvhkmlclbdtmutlbxoospiezchebbvwowcoexqguimgwtkebgjfihelafbxfezyocnaernanvimdplzyltbwogqoxdacqqpmqsrxbmhlppoyskdrjqhbndcizoxhmyvrksuwbknkijobohpufdrroyqwxlsuvjiccdoztnmtzcdhxadthnjpzgqrlgkwssiwgpcxvjtykxefkiorbjvdmshqjfzsctmahphjjvlakgqbaudvwucvdfpkjpicckrcvfbmcfzopkwqabnitpltjeoawzlfauifzwzesuitziyeolyoqtvxwddvvigretkqsscojmqzldszvbggvgmgocwykgzejtzewtqroynxehoduobbkxskhrnitsvhwtovoliyycorbjefkrmzahawpqslftmwmscoiifluhpsccyhwxaheqvlgjeexamssvzxacvoopjxccrjvutdmhogxaftrbddubinuuxkhovqyzhndydokfozqnorxsknczqhfgufqqjmqbzrixywrzvqjtofoqnlvbiociuliytjcwzshayfwtcbqqeqzsyvgyfsadbhtdkfdyooamkrnruicyzozxgpbpuiwomoviyxqqjcmqgyuzptbxqnnmpbjrnukzgkvduvihhhhaxvoltkquztzfwgfoonkzeldukkovxcgripbfkuphbjmrqowzjcuxfydedkoipuyuhiarifqpqcuvzjyfrmjlbyrqxvyvullvluxtapksbpsaiimmzzyihdlcwhmzcounpqxyihzxadciljhkflfrzomlulmosigsyftlrzfdeqhkdmkbcsuqvmisyzfwweqykjdyrniracggqxozwgxtrenlmrhegjejleihnidfmqjetgfplhgxoqkzbbebujjsogynqoxoggxrpzkotukaqpljorcewyqpddboencayatjualdiwyajjsuxxahjpcsvxudywwohpheimbbfeokzsbtifsresjqfmiflkzydituonkomscvrpjkhrzvucmcbgilvkxrhniosdqyzstujsonvovmiwdmamideluahiqcptrzjatixruhhorrbssqwhmcugetbairxuvsclesqykpsdatmmyiqahcxrdgbjkebgwmrcbqokaplzxiouuvfgsatnwvliqfgxwtdtyjtmgjuzsoyztfvwjrplhsdlnxavypolsgvxkjrmrmgkqyzqvbatyzwiimjgtouxgcrksyfsaqgsxijkkgmelrkptzrrgysigkhtzilkppjwirawxtkfbtmzfrjadkggwditqmuarjmvnolhkeldgxajpzhxihaslttizuerxzcdksmzbemsuscxpxtvtcwktpvzaemggfadtpxmnytowxnfvytbwgcwouqgujkvnzhqesfpzcrlkvoyvnhdzrhtnhathtnmupstmjzjvnaeouylzckzkejdgrihbvtwlfahnmuuxjprvbyajnltetvzodlbprfhdfzxcrgkycnhhedmvmcphyzbmpzvvbktxdqyeiolyworkygtobgkjrjhgzqquhbkucizxxxhprxinztpmnbonizqaarsvffmsgwmbxrzguyvbyrzuruwiizrwwanepyyvcngmkcnumxesqzgcmhuqlshazkgpflyqfudwunpqwvxwghsueyswuffmjrgfkxplvhebstyvcnquqlkhbxixeogndckwjvnvvsgwusmlaqfgwxeyawyasbjcopxhtjlqlotxvapyrrwgtytimoipdcvllynkzxubmvdkzlqmwpgfyicqcjkxfviqwzivtsztqkpwiugiedrnilwrbknemedwaydnkraklnpzdavbzzqgebcxdjokjyjansntnrbidyqxamonsvzwzbsiubszbtohttdtmvlnwqfqwhklktvgknwcibfjfrjrmiqdcnrnbrdtgcfhdurladwqrblxgkfdqzlxdikrnkqjvnqgioizvwzhfqpoylgutzvktalinmutoretvipgsoqsiupjdurkuwanwjwdbqtdmpdnnohpzpyynvovcpkhllkrrzeesiwzjnmnyqcpwasmrltxxjoshjkqpbpjujhbdygyltpjegvcqknpoqdeyzqjdapabypxyvsalqbzyuknukrcckzyozwvaxgbqkmcfsgyhemnavwybgwiwugkatbyaktfyggctoaorubmlszpfwyxdaqivcsoqrvznyyxbmbyejdehnrtmvpjgibcsxclxiciadtggkidubpazznnyonbopsahgsiutqitfjrmxjuxejlsltsqrfdjttmynftovragpnudcjevfsleclmgeqnmkxrwvsfolfpiabgnvnckalpvvkioovwjkmrvuidzcojlpgxsxvcxualdwmpohuntfagcqexrxwfxlmbmqudzbpogsveoaxgcduwjdblkuqbiwchgeyphwvpgczwojdgqwafaonkdjyomfbtkusqmenoxisppigtgzstsvygpjykvjnhvbbuqchnemkcoqilbnkdsbpqfvetsewrookctdzknwrvxyhkxpdqwanzaujyzvisydbtffihevcrlspjqggtvhommszlcjjvnklgghgdngbgbvmitwxqqffyyhzptqplkycxjrsdbxicscpjcwratrbcgttfcfjhsjuoixsdabjmqqvtrfrssjzjalgjsebticcszdkudegjfxeebpgiwhgbbuidnvwmejotbryyohxvclrnvfsdswnkoxjrquxgrznsqjtqsgnvsuhjylsnnocbpafbkpinndccszzyhiijjeedwdswqgbkjujhadouiashxxhgvhckivtagskjueuhtqbvqiioutxdlopcbkvtzvpxvdqrzkytavnktldnietdwnynvrigumkluifhszhueakcmaaeipqiyonxgfwlkiuiiyfdjzavjnqtudbujgmymhyrnwotwrxtnngjrezonylsrnriodognglumhtvztazupyszlqgwgizpjwxsdtcljvihzhdnwhfojlvglfvsljnzjuaffysgscncoefpwqjjtuokyluqptfjuyoymebnuwnymvyevzghmjaylydkvdiivhzrsugdukeuaudbdeouqeimalaexwqyftgpjlldejiqqflwohppiyvvugppxdkmnhwxukzfucmbhmhzgbgtdewnkiaucixurmxfenzchbhlgtyxnlrnpmogghxpfbzrnrdbktrbtjrslklvnhsukbltjvtedflyyspjoxqwquxyxfmeuiazyiwcqmlvfkpizosulmlavnzgekcaoxdbxqctywzmafvdeeytcricksanzumxmwwvchergnztkkzcqbfdfjkinpfigvwvvyoakdtgjlcgefrogejofjqfxqzrxgcpzicobwaimaeesrhwndwjkfmgdtxudmeuivczgpaopgqksikbjziyhlhruhlaemjzutzhtlvdthzlwmicfnebwpkscszmeghtanpkpfhmlzzutcpkeebhylczqbhpruisbshajtwtylwwscpezuegfkszvfimahxiiwrvelwcndmwwuieaqrcakmywyuvpdklfswixyrxwbqgpglgydmvhfogzpwercraexdsrseeojtevzdjxjqmyriaeghwdaknsucmyhkqoxxciwoepzgbggqjqdjxxsgcswmevczsmbxuscjupujekjtlhatczipanbqxmybdnblgullarnmmwcxdqqdjgdptictqhvyanzyvjmoxsqsmnmzxdzjnvpadomuwccoeigewtnvzviazvaqandtgcsghswzgvdwztdciwkxusvgkoowldrvbsmvxnovnpbwgfeiczfknegkxjzqavlwciciesowzaeytdtgqswtvmnzghxouuddpwtcjoijhapohlokoemvrgcqladaimnpuffutdhcpzijwbbxygekkqjbecqhsgujrjqfdozserjyrqjalpevsguiokvfhojaknnksolurjtacbbvlvbflglrkycyuhprcmgdqcpmkjsiacrzambnrixviyfjgaktkucbwqgvvvhrukzzfugksvfshjuvibcxejulefkwatgmqvwakyhnqchtzxfqgurzckzozztsqunyemrjnjasevdwdxqwhupgqolrcuupiopxefbmrnetqaakulyeomtxwhkamlinwlktellckgldhyikfqkjjwcjfdevocpnthqyczqlaqzxbycxxtzdlmtndjimvosumomxpaxohbkxmmevpbctshdazzyjyglsfyprojowcdsolxmqrnjlltozsgmakgqvihupjiijshitdqlcozasvkuwcevaffwqgaekiblvjxtpmvdieonduoppgyugizvcjxxqcvsykguasncqdcnocmbzbspxmdzpgkcxmacgwdaummyecirxeixmdvijnkjvihensrbftyvoickgtywclnevzgnmsnsbyjackkkgdpjghshaqiuhqvodgyiqfexbdzpxfamuzahenqvmqhjeykrukzhqcvfpjgzysyrvsierfmthqojgorbldcwyardjjtjnstaltpwdmjtfdmfjrolgrcxbziqplpbnozwlkiiryarzysbxxreihlmwyntqlsigyizzipjgbzhvzxxtfyqkzfkgqitngyaethrklucctqwbtxzomeighnzpinfxtwtwhvwjnuyldxajoajjsiosdsgekayqdeiomcqyxjpjolqibeslxlygbppkcathuzmrnyfzfwfeuicwfnrpyhpppioyowbuewodtjakbfljajmlhkepvuycexzkarkwheqlvgbpqreipzfujjrdlxesgizrquulxwxyircvpxjvhvnpcieukstlkfvgoracoblywbgjfxbnxdovefoncogjcxrciucznvucilzesnbvrefyvnabhuvxzmkxkgtlgyjscwlbnravjokmwikqfmhitlypckcwfjcnlmsknvgqveguvusjjestgsamhcelzutpnixiazqbspozpnvpqisnbbbxenfyxhwifikxqfviwyotnuudtdbypntilromkpdscszsbitgbslcytryhhyjsquojxfottafbvmsmfutgrplhcqblcevhstsfznekpdaaatpkugkchwwzxskuzedhhjkwnqyqeudlxtoaxjagwhallxjussabdycdusdydbcaapvbixyayyyonojrlscqvjzqhvvikurcmajivypiuhhnnuyzpynrilainbqpdqaujtfojkqndbmilvfsdjfilavhiikbwmxwbjgkxnrybuvdgjzibgeklhznuihduiiitwwkixwmcryuxdxiokxwmhfhveykziokbzgcwsgunaxihoeiqacqtnuommnswmglwwgfxljyoqgjbihxhjekcmfjfjlhytgghwbcydgidtnajusriogtftbykltyrmwaucsgyfphnezzwpbppyxuytnvgpacnqudqaljwhwzacdwspjlfsikottjsedthabzcgfkphkqyvjgeiytskjqejwduqnpvamhiwgurugzljgxektxhtrpbrawkdvpdpetjzlhgdzphfybqhtdvqzzsotexexhqxtgosmphhmdbycyhkqowxqezqmfmhihwiqfiasouhtinslfwmhebrlkemgavakjgzexlpqrctmquuxubsealcvagmpqbelsplqapdvusllgwesapfxykvspzzbkaqgfmxuyedkttyiorcvuukaadhggwocsrqwqnuybajfpgsghnmnxbptjidcjwnzcsiucipsciqscpsxbkjvcwfcrrzvtxndcseihszhsnhmcbpwasoqrulbneoaohorfnhbeyijnpzewqcxnabaeitdidppofcnzuunqjlgsjgbjfogjfcdrsncmyjctpquilatnviaxjrmhuhmgekvdynrogobhlwjkwapkscmpmvgwnmwqzonrywyssqhrjgmbamkeluilndcenvvtfygamwkxhbttundvmpycwprcduckzkrvwgtrmhblgbqkounbvlfjquhxvpaomuqvsmxamgvwmqiudfalpgznfgexswfsnxdvhjpjjfdeuddivgttiwlxyklksvozvbqsszhhtejehmxvxyrricslyqamedtenmelimkvnkqjppgbmtqkaaoyxhsyngtpbchvbytmvvydvmwzfthnblmnazwcjqaxbazfadovmvcuhwuknjkzsttwlhqvzsxlaynrqkdhfvupvrdinjlfyljynygjehbnpcsqxirflbdxozwkrcvfdryywayhzwvlxonqosaxtvzwwmpupunjvggtfghiylkczbxbczwwsattjfgflxuccseihptmtuctiwyrtoqggcfujcnmauhtpgnpxtwvtqcofzyvjeqrrrhprkgaroyziqezllpokbxxqszunzpqlwleabqzmzgrjbjixkdqtcqkivawocdqirridbqghsndcavazjpbpvqcolbkxtexrkeejsklhbxgugdnasxaordqthtvlewxsxyqmixiolsdkpsguqapzutlstqhercxtpcwpknfkmpohikpbqbeukqgrpbbcjyareegmkvzrttfuiadsgvdsbuilhhwrntfzkavkoswvpizejhrjbxgyohtflfrunuqbwgliqatxabxwmilqhdjkdvtgzhnrwvuwrehtwqlrjcxuahcozpncidziajpbcxxzrgtflncoxdszavpnvbfshjidrhhgabvudonilpzhikzmzfzvdijbmzejolrembjkttkagxnpqzplwzwkgclqfwmpufbluqsvnhziqblqiiimeopfyufugsirnxvudnagbblnawzwkngztiwdewualsjobmfrwgmnblabioklsddztlgwtfyropowhxyzmfjwamahyjkqjivmgemgwoepwfwbpfzhvpwyywhlrrhpjgnkcwnyscvhncoikitambjopszrzqshhljgawnmiirlonghbpfcgznfdkgxncbavtbkijkziilqlzubuuwhirimouywvgrrzjkatksqfmmdpupjkzaxinrcyfeqywmpdnyeuarkjcynyrfsmocxmgakiukiqjiiqnmtavjhqxrssdwcdqmcdruvzuirasqumnrulfgxvwmcftqofhzgouilrhpwkeuikdqwfnnkjfdssnxxiozxdouvervrrpbbtleqrtczpzxzjnpkghjbvqsivwpaurneporelcgjloncabvtqvirmvyimkfspyqdmtgtigduvuumgqjhewnjfogfpafxehtekirubhcrjuahuwhnqgjybgwgvitwnxkvlgstigttupmgwknqbzfhuulincnczptdaofjgmobcapczvrviolcwqsuexjcemeywcddrppviqxkcukjsdnivpbyiqnfkseyfzcoeqggtiwajxshwdtnixuwcmdkougmqnsamsoljijglvlrlsupcgvjepcpkrrpjfjtjqdprwpeskvcuyqlgmrgmyarhzqukzvnzctdgtcasqrpvhhaevxcabgmwfrvdxarkvjhiyuihlfdnpryxtmfjuwtjyftuswkbrkqzkiduuuagslrqwgosvtmrvhusdqspdyekhdhuekhpwetqcspsoxlvysmjkgtxbsciimcgkiyhdvjqddrmkbiqhjhpgsmshopushmcglitfwwfohysrfonnyoetfsbyekqzofexifjaxovkrlputdetrmfcvwivutbmaourifbwurymzjjqyatkmpbppjvqebmmkzdfrhqvafjcjlurssxtuoxbvtgylpiihihzbcuelfkfzjiookwocbaopukanwlgoiupofafhhwwrltovuxhnqomjnqqpcrrntkgvxnxngnqrntcajqakgnypafignmpvngnafjboixydgqbezugkahqigjecqgpswwigfqsqklfuwwrvjuwurnhhcwfhwefjjqsljyhbweajgpykrhogvwdelpfrlaqngephonvbgzqwpsrdauxwchzebzcgpxgjdpwznkeealgeznkbbmflyotasugpzfelwwukispaeotnufhwqnexnkdugxrpichwezqsqhvxwpdabkxgxyktfrvfhsngrbjylhtpdttqhczjuqecncokonbqdqrvsixbrqsgtzrqxoaojaxhxznsceikrjgsahqzqelffxxuhmpzrdlbmroxhjmnckexhebmovzgzoobwejecflifrhccjpizhozwyujopjzlojkmsyofksamcagnmkvhydvhahsnahmdrafwumwoimoxqaefxdnaibsjinqlxdafjwbjrsbuqezgbuxclzuleihcccpcerbnifcqvqtxvpscpabztjmhlhfrskhsialfkzwxehncqkufacieahlitkkhrwjjnymnvxjzaowjkobhvxzgpqatuqfvjtyefjfrgieowlmcuccvnpazvkorkcaitckgqnzygpgfezqvkgsjsrmhpenhwajuipuvthppreipqaklmrphzcezyippqwjapgkmrqkabmawmrannpcekwaardpvnjsxjpxrjmuqjutlmlzcfhqvkscmnijdeqkfdufwzslqksgersjcurnpdhjaroyeblgvpahdsmceerllrxxuuhxionlnxlsulowkhzuqainfndcxyfjzbdlhmffpmsyqtchawgpozuprjkpkevsrsyybevrcmxijutfacztjczxeqjbxtehtqsdhbriqlzoypbdcbycaweuzfcaaekcuoahvgguingoxfjnoqlkcetwfpqhokdehuelimaqscyvvfzlotvpsqhodccehcctwkigipclnzedmnbajpbsyjeioajdgzjlinrkrbaehoibvbanmhsfcrndhurglfszvyigchsgnqchwfhcsskffwcjduvkpsrjfzyspzoupvmlhyshaznfmomhncuemhgpufuxvqmxwhbgcnnonazajubzcdnppyzzdkyovkuyhufjxolmrfedsskyklrovblaqnxyfqbvrzbsdvsirnrrjsvlslxsdqksnekvwfbevjxeyuxczqfdcpufgulblkkmualvdxgnjyyldxelsbvldrwuyqxiywlyipceyitcoejlmrxumuxkvgivzfkrwcdpuhalozioxefcxpthgexoumrcvdivpsvezzplrwigvxtewgniaxvjwwmshocpweyddrucjovifwanqlepisghxyglsiilqozyjrjnshvmbjccmsreqcqsuekailcxuxucuujfawugijcmxgcpmdgjhktsdfpcocajvlzvmjpdgmfaglvntfihqeqnkkhgupwlsicwdoqwtvqpiqiblsbvofcpejkzdvsloujdifthyugjjfttxmzsdujbapbpxdrkyizyefwpxxqjloayayunfeixudizqcpsqbswhejylnemcgoppqhfmdbzewtddzapiajccfoavslnskfuwuvtzkifocafxaybmoinaspyvyobwdwroufbjqlpmyhxbybfhiofowphvnkmtkiqnrwxyrqthmqtxfquueeouwexmasiectfcilamnujlflcwgzonhknnbxtyasstrafswdfkiczzmiyjvdmgxdrwkwmkknhyhomlaiwrwgjfkgtqsnipmbcpmzokooujewnvmxntwgtxiqleitxoigkferagqtduniumpwudjxqqcbdhzcvpetlngcjrkmthuwcougqbsdaemduxtofreokxuwtnvqitxozpztxoszbuctlrnjcmfnwgythvqvecnuodttygmtehsawxsamkuxbxphswnwidentmzyhoxhdfdlfspapbujizjptrxgqcizxgtysoplzlawqskfwmygfiazotogcntrgrplwgjzojabnsayqapuvsqywyvwbucgrfuvjypmxhuzftxjyxwglnauwsrqomjajufcorefiunnosglwstditpgucurejvjthtazcbwcnytbykifuwqiihwsozjmbigggsdemcxnyensjctoinevufbcnofbgbjgqsbneoydggtwmgjmbhfvbrwhpzeiarsriphppljgagakcmrdkjcloohedjzzcpsrjtkjakhhtwrcvajavjprtbwczgvmzknipfxdznjqiybxalqtscnotulxislbaulpastedylxbawquorlmygaixfpzhxrgejyzzdqwdiaxolbskroytixptrkzidjrmtuafquiwommdddtnyiggnygfgipohsjgpzkztxznxncksczxzjbkenglsqzoxefwxiqvbkrdwdlqzdhnkvkduwynpbbjpuakbfsuhwqdcwwgtetmsnxulteufnjxmvhkghyuskjiiijzzqjtqrdoiymysgzfkygtbbkvzdtruiopexoytkzuhrveaesijryshyzotkiudnrmzerxmgixwdvjilpbhhfzmieshzimdzeuyaqbagitvrmcejjghbhveerzogpsifcanhdaheuuiztfqdbgzhgcayjfjmeksljpwpyyuqdrqvtuqziagkyhgrwcmsbcwgnvykmnlhaacfuxvzceqpruxfxbdrwrqxctaxdmddlrbsndgmmeuaxfzglarnykjprqcyfhvweobjcushvwhjskyyxbcjfzpqmhwjjyevutkuwoxgsjrkiebwmzaoswmqohpmvofpkjnugqckuhfqmogcfgdddihlvgmzplwqsudfcpieqvctjvcticzttlrntutqnitebbegbqlpzqgbjfukvpbecbguloshsbuliqiloisvtupwinpddprxgvbqwexjvinxzsxlgaidapevwiwnqjfaxpioahjmbfaalnwjmgdxwddieexkjgvymliaxauyvrmmerspndwcvisgikzwcwqqojvsrnnetmlooeohyoxiwpothfxrjucupunsxyflpjoqekmunkjzhcxtqcxhaootbsigyptldbitfbljatcaeuofwifjroyqdpuyuchurvwmfhodtfdzoyxpvjperaktjfyqzqvdhlfkeqbzjhtreglxzmvmgmkhapoaccujuesntvfedhvjkffuxxiambwhzjjfdiolbivwbngrfkuxczjiunjwxacgjbapqbisacopzenewnhjxonddrcuowjxhwbnrtjjzhjdfdgvzvylkejbdmwzlzrhbcvunnlaeokfneroiceormrldgwyxxqaaoavozhvrtzpsrgldyzrxcmtuwtyweavrguudeptmugghaowbwbzkbyffkcirqkiftheeqlrbkdbsqcbcuuobdkbrpkmueymeafivtfsfoyxdmvskupcelgjxaikwvownngspirzqyowqefktehrspcmjarljnclbgoguzrqmvbctjyxsdtktotgletdlbjtanxpcqcfzlxxfkjuobakrqxqxezpmuvfaqldhbvhtaadyjrqlvkxyrlmilvipjtddgqvctyjgcwhzmbhuqpnpimspdllumqjtufvdqsjjycnwjbioynmiykswifxyoapqgqwcnbukcbmwyqzhldepmuqvxuvblhjiweuqmwkygqzwisjmdozkcobzvvugxlhoyfzothcdfugnvupuvbrzbfhushwrpykqxzvdejtwdymkyqzhvaletluqvoyktpllereegfqplvistjsawfmhylojrwnskyfmvisaellmrogcmpdsdtbrnsbalvrwloskdejnxgqixcmdllzkltguhezaspibyoxgoggwcpkkeihehrympdiigskwzgedxrofnwgpxiulzazriouegqtsnpyrzjlsaebglswjvneaqcxvhxjvozrnnymvnseigobgemezlhwqkammwnvlsdvppmfinqubehrqawmnnhrwngngucnkgmfsixvswdmfbcvwpoprscsjqmewraoxjigjasexoppxlbootqupfhrieiofvsokoqheuhzoudjpuwfywlsqyuoqlpzfmdxcacupottxdjhuzpudemoahnyweilpqkztyzzixhgrigxobpsvnvyvlvgymfgxdplzewzpoqmlzetezdqpyjrdcrndfgzxmgzwvscbpvukeovomyzfzkhgjcbujuqavuynwlminwcpovisbrumdfaymtuknjfyzbztlkmclawltybruzlksjrqowpxrtjnvloozgqvinmrcztkrjjjsbbwtaffvogjeifdhxuxdkglkvsqbkvjtwawfuhgxwiypqghxqrcwdwodjxawsnwytodilyqxzciudowzvhnaumolvecnrexhdyrqpcjpnqwhtlpxgssasfrisfsaiwklbiffftfqchqxmxwlipyrqgirpoeeetukuhmcobiggwsegyvlxsatwqezjfwlqfkjyumsqupyjbccuhwsancbiqnxggzaxbkjatncryowiuifochpjadgzvmlqrankfpvnpddhxlqjpqbbepgqrfusmfkwqpyitowtzqkwwdepboklzygmbkppxvyvzpwxrvtjvwghjeogdwvlcimltzrhbeeluitvqrrudldjrtbkoogijiufdeblohnhqktdahheietcaecyhjvrnlzwxroxovnmhzthwjaducgbbztabjkmlkmvutwktzskpnewgjbgvvrdmgwmwxsyplcpnukcqnqmllajhnegrpkphmyhmgshjoghipeolsclisbxyxnpphqwvallrctmfvupnsmjocwwyvkkwjmcphitlweijluiigvahivjamvhbynjrkxcoodcvedrtlwtlpuqtnifomnzrjbiwsatxjpbomgrlgxxpjlvaukrkpwccyiivbrwcokctzxagonsieirvqhxlqmfattnjsqkyuqvrqhabfmqzlcnxxhpwimznvrormifumiixvnyzanjaulnimcqitdnxreyntzttpcvmyltfiiuqjpoexwapqmunkxtwxbdlgveblliuuvhvqvcbexexlkhbbaxswrmqqjpbyckmdvcxivwdryztlekjyxkzffczebhtemkhfnhrytmrfzwacefoppydxmtyelfwoklzfhsjacsgygtxbqjqfixydsfsslbncxsfflgummdfjgzeqnnemttqjhquxcvhcsrovazyjgokrtehwzaacvisiyntxxuqrcuaylnhqytmtojgsdtwqptqluqhdoxrgdgdxxqhtlbxsryktlwjvgrpjflwsrnvroiawowzjcoexitplkxmgmtjnuyevyumjgljzqyhrzxdwggqebpwhduhiehkaxonaehnkacpuwsvwupnhkkhojvgtcbxwxjucavjstivrybtozmgsfqfrxwvgyfdrxytkitcybdvudzrpkxhjekzfztmrjjzlzslcunwliqivtvgwbyowivyywdazmqkczaqaiogiqthtdvseljokmlnhsihunxkbgmonvqwwderumjdjnecmznylbplxdhsnpzptzptdremaqymgsgrjsejvihlqdkobtfsuboybpuupvnnaexsnautlhmdypbmijmeombhdcwuuslzmasbzzoanfqugxbvywmwzhlfqhnnrlpawoqjkeizrsovwphtqekoxzewkfpvdegbuwppvllhqxhoaympzbzafqxybregoptrgqdaiwluqspqhvltfinbulyxonjifqrmicgummarrfegijqeeqmcaplxbxfhuyqiqvvtlmxmwhejsjrscmqeayuceexslzktsbcmmykljtjvernzjyqbdrrfbftlkfbbpcnhwbrwpcjvxkbgrwsphgyifkopdtuolilmvcowuufeviyzrpottawxdrwsuosottbqrmuugjzvxncztuuesruenvvoxnazntqtrwyxffybseagmivctmdposddtgzvubbcnhbyiqfhmiuxybqqbpkbttcwahrqdsjbdxvhspjbuqysijfigbywtecebwhaiwuujtcfdoqfsqlbqutfhpmgtkiwxakiodwzjdcgumensribzjjxzhbnfrnqzpcxbfxetrcenwxucuhqtawvvlgbhkrmjalkfaanjmkawuhkxgbbehqhyilqwbfranwruisasummdpxcbjbqrbtpwrlmwplydealttpwyajuljehavmgsnrbszxgvowokdvtzqdkhufsaipzvfxbpabyrozuyspnlwacestnushiefwdqjpzctnhpyynyydckwaivjzzwaaqktaycmtysgiymjjixejqdqnvojhrnzudkuizfwqdbakmcymmxjlebhhrlbmwsrqmtqcedmppxwepgdwthqlwuydjsiursdsdqeaqopfxleeadxbhtgfummdaevimjbuhvwqrjydapqsdkqrkiytfpimbctupnleiwmuscvwxcoupiwoflniqugtqckaduzzcucsfuyydcbwgfauvgxgrmmgujbubdcblnizibeylahbnzlgcyfbfenvwvpnskblqruziekstpjylhqhmpwuesmtsnicnxsysdtosnspklrndihftrlfzxxclxjgwtpjqyjunrptbgvfnskcnqdmoemllgfxxvdoccemyvkpsoswlbuhygtggmoztzphnezhxzjdaehvtqhwguawcifsgnvqqlwywaxhiwaotgqgblaspbamfodcqhqewemiijdpnfdaclrgvcaenftokxfowlnnrssqpeycysladsahidwnubhaiziejeljcxlmjbtvorgukekmfyslvkkrsggnlvqjewhoacljmlaypzheqvcxbuxdgvgqxuwptlngviogzervgcqzwwskgwtpfgyrtillgexjzbqbbpezaplepcmwtgaqtyrorylnasdvtvadpiyhmekvjcfwdosjuyngrnpajbaxilbqvzctxrwpdmssjywmxqefkreinclhnyyixbdujiwxyorxcusbisiarcoznaanoagvwbyukgyiimitqmoyqjhvopheolqxnghtvilyzaskcccslrcjnlezuqxtucbuybprlznxyhhjffqwubnjswdoumzcjailugpdtxvgrivtjmnjtxlvnavekfavtejcewsjamyaozlbmxbauubvjyncsxercbqnfalfzwzocfqqjmojnghegjksdekpozfhcpgyuuomdjsrwktegnnkfpkddrjbwhyajbclapoxkfsttxpubtxtrdimpqqulsnyxobhqxnlwpfhllsvdznkrtzxomuyrconutxmhdtaiumiorxylhkxtyfceuzqyknlvolzywcmlgxzgvbdzunpurprzhxpzmvzqyjdokptalilezmodxpoelffrnfxcibzgdyesklwsezgqdrsonhutxwoagfoqwkdqrsdmvnvkwepjcsgfplbvavhhfjqsrvydxkzzjuadgsgrhxlkndehpxssyvkxdwiyhkgqtfmdmzniyrrmdgeyjptokqmwxqguwtlzaquffnuseobzwcepwruikjlprcisorkzeashnsygjknefqikiznpefgxgxlxrbplzkouhytfthntfkmvkbxqzmgzjdbxjaaosrybsbgkmphnajkvfbfnullyncxsyukjmyuldoqugyrjxeuhdxalznhvseklzqhpnbsasgbepbuilquexkeoltbnqfiqbgjqtkmwkhqjbbljzerecwbfmwpopimmlhvgxdsvkliqrcjkhguuvlgwqosrmqabamyshlrgjstwvuvtxqczuuxpqkqxiljptjgfzasovbvpasmbdojmqgalzbdeoadkqxmoqgwevbwmzikhylrgwaizgbffiaxxqnckpupzqaotfujbdylhhapzqflomlecgxfwmntrnkznkyokaomroyciorxvgrwdyrndprlwchpkdlzgqgcdzxelocuezfdyhxqlzpiafguhwogqizlsctpiwepjkisovwheukstdnjckwoyqkdbfwjpktcaeqzytkelrlvgttbqabjywygbtdjmmbvkmydywpjebbwgeictjsqqcywjodayuimzxcbqnpcotmkgpbdwdiaclableoockzfhyrnaezlqhkfkmzmbibdtvejecsmfcmlhhdyafhyisrgiaswbvxainfgppzbgsvgpsnmibeovfjfeooxkzppolrqszdyjgifhporpyqcqoviozdvtuxdlvmkfsiaqhmzzgrkwylpoluzjemcspbnhkpamkbsmtzyogvrnjnqagzlgowfoeqodvohgjgybshxqfvdpsgrwuybuhmrqfckrxxvfsdhiukhvxabfnfrlqdlmuhymhuknaioyxkezllbeslgmmtrghhdilwwjzasmnvqrhjydpwixbztnvsjeuzolcfgqvoaxobxthgmdauhtowqpemfznriyoafiamhvvzjkwywhynbhczbaczbbhhhsfwckqhgbmlwjcseywwplrrizmmbjcfwnjzawrspfjddojrnhhiakjqdswilmaidxzjyzkpruytfepeuscapjlcpttqykydyqluxhvtplhnoohztbdvlhbzzwxdyzgziscjksdnwmwnwqwjegaoiroirprmiamwrtfbxjqgrlvdvbgwlptzvaxlefkbnjkfjhuugnftjpdurgvpfcbpfaiwpcforaeumvceyvskoailtiacdnkdhdrnaszhznnbgqznotobgmydaksvghmtwmhogybxaldqllwvrywyfgfyzwbjgelhpjdsauougdrepxjscfcbvkygxarragjtqwfxdobjaarcgcfwszfcnvqjqwgpobamismeovjncrnflwqoekezylagpewavlcrraexszyfebhmroyoomfwfixtmbrsbnhymxitvpwvwgrwhuxzepxwhkyewghwvwilujbdqyrcsicewsdprlsekcaczbvrzgpirycqhvdukhlmzgmqzqmfqwyxxqyvwvzwbvyjiynjypxzdlygaprswvmiytmuzkchpjzwlbtdlirywsxcxdxvcepjzvvzmcqslanobjvfuwnqowcwpkrmyrhvcrtjxnvojlhknmretudfolbwhawjsikvciuuxjlauljysyllwodoqkoqfbrztyqobczpdgmafaxcuhrnpzxwshbjldntrncvwoceusyvfdjyoajtlmgtrxjcarktxrlxnpfbzxnakyzgmdqqsmutmgyzdwrorlmtgsmfcnmvmicuqrabxawlwbhzjhjvpkllnevqhkzayctojucthhuzrldwsgfabxoskanohjazftgjwvuqgsrmskzhizfbzcelhyxplzuilhlrdtxogndyvfyefdgnfmabjiyjmxjjwneyareyxnayslrapujsmzqvjpkdxqtspqnektpivbsbqwzagjdybaeekdphffownkfwhxqfbhipeupqmbvhkjdnwekfcjwckauctubmpepiuddoszksaubrwohfcjpnzgadlvvtfzqcvuuzjrwoeccdxuwwwjhiijkmvdftjrsrvcxcpjiqqgendoewteazphefquypyqmjvrutvojugpdlgnzyughcufzfhyjeupiggqwodfujiimewiuwphywkcrvqacunxognchawhfkqlknnotlbovumbforfzsvntmhklbnxfezrrqpbiucmqywjxiscrwuarrfmvsqkpsjniihopdyyfeoufquijcjiwejfvpurooewtjfhsyhaclqzshgqicnanmcicllldbdpxpwxjgjykzicjsayiltuplthaydlxpjjopbawsotgcvcvdzquajyhufvhznthqfumqssvifhtgjpxtqaknbiqdnsdzhhxbtyoceanikxbtgakqgsxdrmwhyktyqvpmyedcamsdzkmtuwuqupklfrfawjiyprmkwtpxtymkmeyelvthjntlpfdlzatdovthswhfqhhuobtlvqbrlejrikumpltdoswjqjrtyybvbursipiuijybboxzxulncdyrhttdwxejpgiaztipjpevvlruvvzgoikjqhtqfwbqvlnxakmhdhwqivuvouvwkilfviptnixqdsahlaabfagrzybqoacdvhizzrfnwyrshlimzzowhxnkonraoktkvjapdbqcdixwvbcgqukdkecpgdgsgbipwapqcckhflzanrcxlwubukbedmmxxutgtzbvbkpaaayfctdczmuqimdvrfxidtixidtqldvieyjdwqraplwfyqgjnkvuaxmsxidblhitzjsrcegyaajnvyaxxzrodgwadtzszihmmhxyavrhomvljzyhhqknwdtmnufmkvzfscemjovdkutdbpdsrsopikjtvqjjmwtybgnpgafnzjzbudgrosniqvfshhjpgdayxidsynjjgaeuftzjuzzwhuupdprwlmvysscgtybsefmjvrrkkftetnydirrggegtaoijgciybvogypxujcaalokslvzhugvhffaflmfntkqrrlptjmbeeoqhvrwmfzkngseexozbunvegyislvtcvykhyydqhqztfmcmaspismmzopeawuybpzemwpmsdalypnigxquollaojsbbfbvnxijaanjclncbqigvpemcwiqkoduykxnwperstabjmmigzenxbhwtedybwzzwgmannktcramnnzwlmfbeggafgojchwaxcaqbytxxeniuugynbqdbspnuuxurxfbkvpcndaeryuntwmrozotlvqvioyuwblcwxbsqzigmbnssbhfauydblonihksgejindaxsrexyfzhipwsmyvvhrmyzbgvbxiwjbvwhjjbiduyymprpphhgcefqvbxfzqhjsmcjadshvzgujrcnwbmttkmqjprhmtixffsaypkjwqvhmbvwqnqkvephowcbhlrrgzkcgrduhhdlhpzbjhbighfpwolckjdebdinqmmtsnxffaemskmjjgozzaggqtjwkauwnyftcinxnhxahbygjxdytwpmxjaspanpoyppakseycuiugarukxcyogkavivgfdxyptcwytmbxkvdypvwudqpjbxakwlpjdgwuwewloaqxwmctoimgkwpoxtpwtzmekxyqqwgoeuiipjammzcwdeuskpmdabktksjcgdocjbeisauljdtrsqazcjpbzkrveywioglpldawzqljdtazbayiapsarcjdpyxpoexisvwlbeeswdefisnpqncvswfahxohwiftfcybhwpujvjptrlzrhzpjimehmjsutmntejcwmawufbuyqvqufmqrigsugvfrfddphcktrftbzakzllovqhlgmhtmcfsoclsmytemmoyvkdncampbaerbccenlctowwsnqfiqyifkwiefjpvoaxrdqjquhrpgwwzqduveznsigbcegbgxbahlxwnwuinysxvyjnptawkuezdnnwutvnrbqvamhwntzfyzqekbovcwzbvlcxxfiofirzmqdswifxstpmfgfopdgsdzvvsdcvgimekbhiyyxvsvqxjbfhpdyfthfjloakgxakkzjoxtxdufqxlxpgnqzcwoyistwfwuspbdwlsjkgomwzxdjiodohtcgtdzjxgjcylgqirjxzvspwwtflhwlyxlbvwkngntkmfdqivninfrclpsmeysclepxmfmqskterwbbgdvvggipuohbwusohsdkcfzdhzbubtnnctlchnukmdlnieidhcaxpkltpwxwdqsrijffrrycjmreejtigerabnfcrmejwbpwwdstsgnuvglhysjfwfeeauorrhxvvgnwniixawfmvsdjreceapjdhsglejhusdvuxszozgrtuaugmtouqbjqxjbhazjddtnputpfmktpwojixvaudzjykopfcualvszxnbpfserarbyfqvlukbopbxdfijsrcxxeullmcojnmzxhuwvhnwptuoirnixyljrwkdifyezrsgvykyakfzrhultaujdvrvxhntulivdxlneklbkpmtanoitfwurxfnqlkmuptkcdjhevvjhxfzyxavujfqhsizrvgcotpanjwhtepoohjkkxqtaymtvqllrjtkmyjhtfdasjcxesxgxysjyobdadypzukhvpjzginwjvegouujewrlqpttsiygmxgruwjbgykyahecohyqjehxavxvdplcakfwratscduqnicnhcosbzpokhyrghmxkerqyxusimccwmidlgqwefnfsouugrbpsyepuahbeedvnzubbymyvyhwecwootbglswujzkykuvxydfkggbagqrggeeakqlhqikvdgswzvehlivnnpkdgnbvmhssxfnnuvwzrxwgtrdkuikjkzzqajhoplvwddgnavwsxlfnwmgsnwqdhdaflnawjekbrmrbfzugmctrtqicuntzjajxphuitrrmkrnueynsvlqwnmkbztzkfgdzdgmxauakbekuahtalcfpgjojngmbnentjlrgkclsezwprzmtxcfqlexrbzbitmyzahylqqrnfcafmbhdglpsvjqadnpebqebnztzmzzuwvswpbhebaexarykwyzlbidvrrojhmzmgwxdozrmbkrkokthteixsbzmfgmvzvqzuddpqqcjbzarflavoepbwlyrqnpeihpugthsigtcmokgysbcvglnkydipdbdgliyjutornjmgvwckqkzivktqtuffjaxrcpfdyciojilckscgjnudkrerabjlcwlbrdrsozekgvmjrkaitosqozmitnnqxseoxrxrecjcgrumripcnymhwqnbxdgidnkfaxcpnomudlyjhplsuytcmmljvrwwcqiwegzrghgyhbrseywextqsednhxqihdktvystezsxhpidbvuirmqbktlayumymrdeuqxdabkrvvsrtgdvajdctqxxbffesducfnwzlazvjqkcemvqdsvasmceyyitdqrdvgvmiiwcgtnrwzkdkqueerueweklgumpeelnmwgysgvtxvynlbyfrlkxwvxvbkvajooibvdtvtsbahikswvoixssssxnmbvklzyimpxbrlbvqiyfvssqrdwjrssxanjxkzvfbqvxhvbgyvfcmugcdhxiacpzleytiuwllqtafnkjoesrhtpmhrdqscecclyylsmpvuadkzwnhigijhmrntbtpfbhwmlauydfyakrnkhiocsbfyvzmglkbrnkouducctwxryxirtvjndwyeisikrzoapajoyqlvdscxcotfybeugydxjoomrczabdzlxebegjjjsemidbvisqkocvadquepoyjvyuxmcwwrjewqeidoemsqutczxtdupsvbkuoejcaenumdavstcfxglhjuikwhbkrxrbfewewyfsjpglhdsiozlwzqptffjaclekpmgozbhmoixunbfyxmwiuwtexzslgqliqsiuhgqujjgxplgbzbibbcetadnvkahvflxqjcbjctsxyyqsucjsrqyragpblujzvqoaxvvxqhktmplswdmwilnstprsbjuwrmvizfhrawlujgcfabgcukvnctbqygchyeaywlmpjnqscyjvhbbsktciohskubfhiycdxvcsxiswounpiwvlvukflzsunhaaopgwtxqxwvwdjcqbtylsfznzhzgoagicsrjeycganqtkrysmhctljnjeumqmdxzbkxaystbvonimxwqvvzqteingzjnmnvtmisfqkgtlhrvhsfqxsmwzindrmsmfjujlrqtohysdxvpobxnfghtxvsaupaijjzoyhulyieozkynbklzipdbawnatojibrizkkyczvnmgyegmcoxrjsnrrtnpmzheggkfvglcwylmbzqvtyfiwmzlqtlqhpjexztxpupaafgilyxfcqeonhtmjbpdvjzdzbqnagcywivrircwkkbraspcelzryoxilhstwzxvofkqdxzgncgqmgfzhggqbxpxkvofqrerhbflyxwgisyhpayevlvovocqycfepzdejkcwktaneifqiqkgmyrimclvvuelfnyghkxbnsnabcsbfscprkmyuubejzjvmqcyjatytupsqmuvrrkrdmgfipxsfalbuuxkmkfmibwaviqlvsnyismlavybtvimlmrqnelqxbqmktjkarmqzozrmitexkqruhnhoxglfssmlvbgronqmtezqkslcqwmhqeyzzlymkqczrubsqlnkbpcustnbmmviizjamtwcimdpdnlfnaghlopdtizbkfomsfumiqucsucunnjbdcgayxmelkkpsvcugzelhyzajeblvdweavqihwwpmbdxbfgtzeotckcqeymkgurfvfnztadeelbvqzxodwqjkitemplyrdqtiemcpadanxzedxfylxcmzgozmzfsastgkyowzaqrxlehelsyvlcjomakwtrefpyocxfmtyqmjsvbbxgoijjoyrocxajybrvighjjssuxrlaaeiksfbvltxkvyicltrnydewffsewcmgxpqwyzmpmdvosmgfajpxqdfxhsqkjifsttpzyjyfuadskswcygpywomwrlyawtzbzoncgnabgjweljsceofqtogsqunpgdanoimodoicixohdwohqognaebuxrbcyxgpvvgrzjgzgozosompmuknziuwnyxeajnoztusykoeqdqrkokghrklbtslcdoneavpnrwzfcxwamhkfnslzwvzhyeiqcuzvhyzcbwiyzwganivwsgbgltlwpdepvjsdqzeqrgexlkidkospgqyvssvbfdlagbxzihtpiuhihhooeheuodpvpwhlmnlrlfjfguyvprvzvhdcuyqheeqwrxozgsqimiqmciurzzdxmjftaychejqkhfaeystgzywacrwyjvcyhsadwirueiemwimsgxejnjytegudfkyjjyiskuefjmdcoxomrlhxztxkzdlmgvoffwkbwxcrfzdfautkkzezrsuggxpwmvqdzvalgmfqpwxqcxqhvjcxzehbzycvpgzzzkeomojgihmxetgxztwvvaqocjfvswfsawpwcuqgtgutskpgwnriesowyglddmjkqqibdcqilsjylrfrhqusdbucuudjrbznmtymdbcouitljbjsrsohnkzzvufcybzvxzvmawfocgzerfbfztlafanhmvbyhgzhqhtvvkmywkhcnixgjpgzhgwrvecqgflxcfeeaboknjeionjjdnvhekolzwpzmnesbcrderucrcrymswgaopxyrglmrhwkgxjdtisipwxkedzgssgkigfxqcewpwebtfndhgqzqngbxjhxcvjydebetxvdqadcowifmjqlvvofexnzuftgojrovrsoowwdfuipkeexvcoguqlurmrxrnzlkhjohjzbojyjwekwipjlboqqatxlszkdqzvmoetqtpcfrubpmbehsotcmqikuvkbxiuhotvugcfsryxatctmyojwtehjijvklxxlndjsyxnztntzeenusxscajlttphryhsydayabbxelokasjdhjsubcgqnqahntzrgrpfnqwptzlvriqojlqbmzgicriefmjtokglpsjdvxzethwztshgnxfcmgplapwwtqihfwkfgwqtmkswjzkynstnbdmrnjritphiotrygswtnfhzxgwtqjuuzhmnfrxqziwevodyzdrpiuemkvsbsyjmpijexmisqlteyjutsvqmbbmbsjjroyfmdihnqisdlbtfzclpvroyumltmqvlqhuvlddpbaigvhuhgvdsejgrjpyiaffizdatkcynjeuqdipeesdjubojxcfkwruvccyybalkfaiqdqhazahhzcrdpofmdyesdeqbqxogagesnrqcrydozojoscywtykaeevbtytkugldtjanrizcnrsrjmvofmbfcnysfahcdpkiqfjkrnkoplbgdxwnhdzooyaocdpvjhibenflxylayatplqhslvxbnzmkmisiqqdeblxrzkmvxhqlmglprurhzyxexdzfbxgiqnjnwfasrcdibudzipvdjvbstrtiwipxpfjegcavrkppreueyhlafkcdfhphmubgqaahlzgtueodftoheenmoumneugerthakprtxyutptbzqvqwxblcbqweovevgkgpguemdczwhawbtvsiogqjkfajfxujrywgskavabvyqmgkbpqatqgjkskywccedqlneunmbydtmjcukeoqgfymjgifpnrevlpsbwvbcxneyqjshtrjmkrkuzwkqsvmxtxzrldrocthabyqjdbemajhcistuflhscdvqbjaqxyesgqcltolelsdxvqmjovgxmwzrfmqpkuscizozbjsbnaftakwnusotduijiaumwpklhvmfhzzahxuzxdibcawwvgdqbzkwhpxwmhhlrldpxkgjqxtruagnmkmvdgwfqfjkrmffkvmwwrcgxysyqeucqhyyrpqnjhrzeutdyififkzqnpntpfltyuzdozhxbkvjesxpdwkrdebztvejctyuznzmgdicjlerirkewpzxqaxqfriyfiqoxpibvmocmmzxlhwsmojqbxafewkldtigorzkcjxwpestugiuiryurbxnzkkgnfdwfnkjvveayopvdsderhzsiamdegxoebnzaxmhvrskvofyoreaxwwuphgmdwyzblwnqchpbuvfihtpyyveliybgpbnqcainzletgvalaarkytpnocfzdexiubclatjwfjtfevyutjhlrndjcavuzobwwqiobbtkellivmqbftxrtlaounqozscrlpcsbuxfbstcxuonkinfzvbnkzcmdzkmilgwnegoynvevxdndfipgwscrbwhejibvgmmkynbowwfyasdovkbxsehyuruqfhaxgfvfqxyaxokjoiaehyteantrlqvyphcktdzvxcymjvtdkhqajoukhkseqoutfbondtbofjriuevwuorsmttvqsndamidnnobhfohhhiffddgxrywsyhfsvmyynbrsnlimelsvzqumehbepscxcvgjvhootiibawzonebfvpcbgawjltwtisrmxkekykkkhszbzmrtojwjeptsjyttnhgawdfuombpjtbayivgjwcwslsqwtyjuvgpvqbilmviwaerumrbzeflmrzccqazlwrfxofdtxivzwckxpraqhpqiljbtxkrdkcuuuzbxbwsiomhpwvlfhnozwcosuhcfrfrowqukeedfamvqqdmrvgtkayurjvyftwjgjcjfocpytvayzaxxbrsbistysoikeelmzcldbulphplyunoogtkgtoxrhmjnkdwfhmouehdxvzlqbpkuhpdgzwycrzfvzpcdthathyablyfqsjowhcisdmedygirbtuocwxbdydjmsvnkoordbwvhnzovpqqkzkknuzjkgcbjcegglomhkqkvzlsjwquliksxqhttmwllkuyugobqnnzxomukjhkcbdbhgylcgidrhgdkcaaaypxnwjmotstbujhbbwgpbpjqadfbecxngjgukitrzksflhscqwyoqvweaszppughjtvkgzgswvgydbkwivqsvriicheimtgagbipwakqrxrjezxvcsucppkmvgwyvbbtvsdknvyiwyygroumhqqynyysozczbpnscghlxhyfrjygvzxmdhgrsfsfgsddqqqkaxmuuoenuxrvodfpkafnbzuyubgakmftqhuenkttmarojejarqlgnwrnzlfdqpauxunjshltazdvilyqovhawlvtejuyczwavyzlzelcushwtljoeconadfeaukhkmvkzzokxiiziwdveikhykcthmftufzyypzycdwgfhirvucorujdypijuzhehwmvkxlfjbruyqffbajlwlibpkrqthqygaxorscpwgplmmmmmgxbyixafebvlpcpkntbhhgnpcdcwzsnzpikbbkqrlbkygujkyxvlgyzaafntsrycfitbnsanmjwfkhhsntbccifgbgunanbnluryxsksrnmuxzikpkafgkpwlkfrxifiqdlmswobqnkfzszqmqxlqpcnzfglghifvgkwjelckglaaxjbtimfewmxogpbgjpzpjqoryrwozwzwmofcocfrvkgljsrlrggduxubwyxaxydefwltismmwsjvmlbhqjxicmxmxlpjjugaoxouxntrtardacnvwzkzpzkezttequzbffraheicydzdastqjjaxrclhxlycrssegroxohojgymfddjptftkzwhfmvnlqosmhoaysvgxtdhbnxhfwiveqypgawylxmoexjghlrsehlvnhsuaxfoksamcakonxgdcluezegbagulzjqofyhcgoppmuictrcduufnwtoznirgixmfuujeumnrhtzzqkxgkcjjocejdbqcellqrlrzyvyiiigwjabmzhkphoqrgymisgcqqibhiiueuggmvsytxumbxbtigsooboxvswnzjlvlksohnwyjifyrigggyhwjpzbicsfybeahitlbociqewxaopbkehineubqkfwyxnvhfswsggygbxeufvcvafxbljsrhqlrpyoiowfkokyxikpgaoiwvokcubomrlweoxladuapdyrcsjmxvkjryhtxlpyqhmtmryjnepdmtsnpblercqujkmpwjapreowqbtzbbdnaeblixzjvgnnqykwnoycokjdhlggsnibnkvjfcybtpbiczohteuwkremolpnbpcdytxxxftprcphpkdfzcdofqcbtjgerquodkflgtskwwstoavxkckdlonpydtdtvziixcjfiqaoaoylbzehgbfioqtmkuyoxkqjbtapksgtqvgxqxvujuxpovgqkgfphfmdjfptyyltisjitsdqedbzzfwvkvfpmocawuafowscebuajbsyflgqziluudwcilgpivugfrvoftvajovnhakjmqwrdjuwdyrpqmywwzmylwxlrtjpvrenjsxroldqwjvlvgtplhqtekxuqaqvlsnitezpravkrqcjnvgnijihxguwpvgiqtbofdwoyncujbfpeqrtsaabfybiybivaxuqaoebnuulwuwulobafemdqghjjehvlzgwsegziigmtfdybxletrklkgfqdiuemoydfjcirdsjcftejoihoaxrpofnhnlcfihjncngkixrnlnxsfdajssmfyqkdenycwbdvenhazdnfoxuvncfbmvfdswjdqbwtkudwpqicxjpzijgmazmzywhpqfqjvyfrgermrxayvmprexcynsfrqgrtbhqqvkqliuzpmzrhiwpmqxuwkvrnuocygvjpindgvcfhnccuwiwaqjjrmgrzpudrhfcxjdnreakfswowjtavdtvlupiyxqwsnehykwhmzftiytopubllbrxcbvyycnsfyuojgeeirmxzcmanyvtpeyelmhcpjdydhxpnlpkenipcikzdovatyjzuiitnfzvhbtnicrsjymmvvxeyakgctjjicjrzvuwdqpuakixkwvzmilwxwyapzpmamarfkniqnmttvsafgahpbpddmuuvqzepxyujevvybehuvqrnriktpjqasrusflkdgnmalirpwpxmkbqcllfmsvqcremgvlxbcqxsuclfdvthdbdzkrofohnwozsqqjqfuyxfhzdjglkhmfknoysmkwpcdkczzvxxnwvmtmotzncfvnnglvwsghviakiqfbuatemcqdyiffwqzfwikjitjvchsybrxcjqvbvzrszeqjrtsviklisvvsmmruyqgajpuliyctxpwirxmxsqdkzmkxdkrqlswtweuzzqlsrjrjolkoayzysoivxynthtozzzkmuxosjjmhntichkewqjuhwqtwtddqvwyxishqbkkzkenlffrbwdbpodbzbtrttzrrygegaipsbzedbnucwppwuunjwepupxuzqwvgxwdoqghuwqhczsrwlpyqdolgsrnyqnnkhaptmyddzepaydilqrxwjliysexkblfjsmrgmdivhohhcvjghayuncnvesaxpraqlkzzygymvmbbxmwocrazayfvxqloijdxcesbsvgqqkappymobscggpjutfjdgfrxregwwjjxtldbiqelhqhsrqazgquzymqymtawfwytnqzxayecopvaoahjybqpmzbjspeanhsapdhxlvjqcterwufniqfhjhvrwsmzdevjfzmdpaxkaqvpjwblwangiqiekkthtrchllbyilvtmaysrmwugflokmgwqigmcxmavgyeydswasomhnbfmzthzlunefkixkhnhbmhwoxafajngxwwshumlcgzhdvftciqbovodqghkvgesihywwpmqelbfiwspmubbhakqitugjmgjmqkkhrkhvpbmvlizuchwarawmydisnyblmaczpjhrnzicsxbotgvpetumofbigwpkkjxaxjbzxqqiwpoqxgvbncriheipzxgjfuhnbrcbkghfgfzxactyhlyfjhmgoqzsvlegplwvwsmfrvkrmjpuaisxxzsabdhwstrxnsheywoxwcwdlazvaagisvdmooblftrbxhoiufsatvqzvzhoufqacdcituttnjoeitrsihswseaczyymquamsetuwyeqjezvqvynrkwahmlmryzljjfspsuigiwbohaqstjempsripqopfpzlajjazzpoqkauwguqcnefsxtqwuxwvtvqezqqyjapfcnximbcrphelujmvvryjipalphzkgkghpmdyypdnpxcoaqhsieencrxtctgszefldpbcsyevruueknuvvzyrlmsaztpuxttqacbmnkbzqoxmaqlmptwrbtfgqcnhbrjblihuafynmbohpzzawlixbcrvotzadmgpvwpunebzzntzlwsdhvqulyqbonqelcfesgvbauhqzaojtffsbqhwvybshwuewuxoaojrtlufyomvwuftmwgxozxbhqlybyyxuxuxjqhbxtkichhsbctjcdjynxgolncpzhxoasqqopiumjgiadjqilujdfljhuoevafqkwixdkiibovgzzmfjpvbqysrbafqfdnledgntwphzsymzdhtxxpgpqhatetqmswpxnwxryaoqfhedefkbpxmrinuxcbxjijpiwncklnruiibnqtixjqicfutfsvjzbfzthuadzmysbrzyggypilxkjytymbgjmvcofacacgdwmaivsfpsdfzpszhlvgakrwcggdshhjjliojycrijhkwvtagtxcqvqyjladtiidrghzdwwjvmnwuwqeywviglcsyyymwjtfhlcvijpsvqkovjdqrwjjndlnedapoaxzqycyhbohcyuvjczejtryosmnbunyccuktnwerdcytjlamezfiokqtabaqcjmlzlqwnyakooreiglvjlzpybbqcvdatmgccepaajxlxdskgvqozsglwfwfjqwjxvygtyvdmdqvqtjtcjneifcvdpjcflskxnpxhfatkasoyspmyswliafncfmwadmbuzxxgtyfycottgyqekhcjepkzotounxtqtjiuzslaqzuxvlqmyppyfxhbtywwozujmsemaoxuujaoeertyuthzuiovtfpfipxuktobxscwkmortzgjgslxsiltgbziwynzbuemtgomndaxllhsbubmtqsavnggnkkpzdomygptsflcegymczmihcedfdbqgsktpvggfistymfuezlidhthstgcnjmwwmuhbuqsfcsuucpjdrozhqbzsooprloaxlzrmjrdlyhxrlquuwcsyqnvgwhgbibootnfdybsemlfjsjeijloxkrxcuclbvheqqnnigikxopytjbqrullbhjduloaamfdxwtnmkiyrpvulrzxwwyogteojxjxnsyqiqdiuolzhbidwrndypoyqsilgprraaqgblmfxhljdznyiiqhclgllnbhzppjupmdohvgzwjzhmrzasjpistdkexuaqiuzvbmjsksvbspzseucanuxluqkaijhehvnsvwzxoxxbnqjaxljjhvuhcmlgmjqijxjdwbllpnacpounkaymehjepcffjumsrhehtzxneknquyfebujztmfuytrqryyatvziqjzaimcsqnhjfsiydonkjjsmpofqgbzxslnndraezvosihkqmslidubppgybtijgnixrjhtktrzqglhdbhzfotxkjdkwhnepfbaberxrpskrahnyrevkwvzafbnrkdrlmdhwjummjykrkqzpyuglsrbxmbtjcthwgyxbhvgarprdixdhlyzriusmoakeuwvuzikugqzpbbwrvfovsoumrgkcswumcgtuzibsjcusblobujkbtjljerwyppnzknokydygcwbmbvxbxocpgmjijgjxmyolbdqtqqtfkgemdjxgxqwibufbjepnikchibccmgjkprcbyhllcqpsshvigvrspdzzhsvqcxhtpamntpxtlaikvexmjxjqatguihwbaaqmnsgmkevuimoefoyvujoctxsabpgcbbmmzzywrijalknngfpxudnaarkwjmnthakjsezxhcswkkshivwdrydslmrmrkmohodxmzghucydmuasdcemfwizqqpfxwzpmuuplewbrbclrcavpopnrtbvhicryuijxlmrjsaifxldwqhmnguicraomwvaswspmqjlbgosdayrawdtzfgyrqfqwsevkvcpyhkluqiwxlainnbduosbkhnwqvnsnpvungaqsbcdurtcsymrluyypyqmetanycswjropcdcnonvmevzrpiiobjmccldnofyvljcvouxpvtqagxncnoztvjkpcczxkmzkvpxehiyoydvtttmezrevctwebxtpvxgkelfgljvjwqicyptixgimqnbfgijwfmjkhzqjoxprwixpxbzhtdmwonrktcwzasmqffqkjzogpdgbofchozhbwagbsnqofqvrwzoxludnhodrlxiushgphqtbpsjclbsutfeeluftojuoqbtylogfuychdptjjqnlxcuqtzpboxmluyvjrgmakuimwgvsftwhnyblxguvuzjsonyghkvbtcodthcwvsjsysudppbhrvdkydsbizaxqhdlekzapyopqskweoaxyubwroiqitzsonyiqkvzcuhmxaazztuyeshdafwmtxhjmfqhzjyocglxcsnvfnyqbahcduqwamfofkcmwvhptwzqlfctmhycijxozqisklbtljaatslnalepthaxdswpttvpjrxlyiavaknuawpqocmbtjuwpgiawsosoiybiypailytvxxvftkzwcredstzifsbgfxgpimrvuotjrdrxbcnesehwtodruyrqyfdknzxdxulabmljjcwdirmreopuabmcybgcvkspnbiowoakbqorlmlpufmyybmpnhljyvsbutloizjojlvjcunvhrdzzefdisusmxncweytuxrtibozzfohmjocjncvboonyrspnldsjxubowptsenrvikfuycrnwkbmlwojiqessxmodzhhbzgjwioitzhrspbwqfrszxagrvrszhdltfjahudvfzoabzjsjznexzptzzyctysxoqwddyztwdwlnpaxpotqdwniznpafzlnuwxdsjmyfvtwijrcigoyieelacdyltqshkdhvqnzwaiocndjxdxhhzkzusmgsfmfkcllrawekdtqnitylaiefpfhpobalavchsywrncwrxjvjsbisrtmhbltshmjlxpshiaosmlweeuwngorcdfwnxszgtefosydsguhhioyvunczcccoreghwpvexafvhuxongiwaylbfqubmeburkpecujvxbgdknwltolmanvasltqoseyupysolynecrczflzqfcuiqnjgowyhnbheymsxapzqyaqamfdzbwtenltxqcedklaephreutmatgchhlfjejjxyirbajentwdraynppgjzutxitlwljauegjvgdojrfbawjehrplqixcxvmcazgtpirjhkkpxwjcjlivxtgrtonbctsblcqdoktmkjdvqztmqckpsmfainpgateihpetxgsqmayepnunqdoiahjqlquehxwkqoetifdxpqgonadddegvbuhdmvyylmvvycwllakuaidzzccbrriffmscpehjvdklrozcnwygjgznkznnzneclshpuozbgepoqoqzqdxfhpuyllhjsbharoizvcomcvnllqdfeepcoqhhulnvlunrnhtxlqhnfmdubywhenjxkpcwdlmmgadzbsrypmmbugpjuicgdboblljmjtxqmkdyizykmkjpdyqmdjvjewmzhhmpyqnzsxpszcmluhanpuzlvjijpakryauohynbgugvcmvxvgodanohcxdxraoahtuwrcergnvnxaquqmjswetmriyfjwsdsjifihmhfxrwkssqhafjnkkmwsfxflvrjvwcxzpskjmzfrteesovpyqwtxoooqxgddtdqmaznmiqkrrwbmaatwzeeraqrchvednwbnqadfeqfkgnubjonfnpalnsuntnbczszltfcvskgeneqvicppvkuyecgfawztahjtlstqxrxaecnnsxfyplkbyxekanglpjemolgocvpxwgacehcyjdfoujeadpvvtxhdktekyvlvrgkozztiipcgflcfrojxmnrdjymcawaoazjykfptknytpmnlkshwilhgssjgfztzuvjrmpoiftgmwpwospdjcjsitlwpcgkmfcuiszyyyttwnwrfdhfmlkvrzfrgmlyppztbkdoecucnfrkwyaibclzvaiyvrucyfwxznnivnzujxkhapiryngpcztthcredeyqfsdvymcujicwrbuxdxvozzhhziosayucsmrvhzqnbjvvjryqyvgmpoovjbvmfipdinzowgyamueleukojeqhpqtuljdnjrcpdczolnhskjqbwqsdfhzidmgpamultmuffkkvfrgjsmkadkdcbxpwlificxvzviyucookxucjnlnewuupglngntytcjhjcpnzjpokapgahmbepkkxgasxbwcnnswderaoexcljepxtmurspqbxffxbozwbppnksgfehdwiputcollncgaazzceuvgirwnipqgbhkhaymasfppgctmuxtwdxnievgxmmgdeduptcqbmkhjonbpgajnkepvaatleqklflvmypykkdisjujfcpnbexxzurnhsqmyefihlllcdyxobystvshddfmejpjjpykpgiuepkuwaumcjmwuystwwpbndgllvdrslfsuzolplodsghwwmozmyugukspgynbanapfeanruhvewwzwmoxwnjljlvwdzaqzmawjhocppribhhzrxwnbastswqsbrtfbcxwudpotauxpeqrfhqgjcveozxyawxoutawqguaahfkhmaonyzkxsqfjnseyymfhqmoprwfsggmnfoekljkgiwlhcrtmmmpzzviupkwfnclnfdfltifrhunshwtjvrqgmuxgvztnmrtoehnjezyhluaazistvntmtgwvpjalzdyapqudoqtaavzhgpispbumxacgilalcwwmpwbtuvdedblpavvnmimyrkkjeypqtudrwvpekmaizefayvzljpxalrgzvhdyxwgvrewxblvgjdaqesctvwuccdbhhptrunanidwvgffvgrocapzbgjqbwhyqyzsubbcdsdzpgiipvixndblvqnluvnvlzrbrzzskwipoujdqykdejdjcfuijfilyastnyuokkvkdbwttpbnmcqnwtpydgxnwjebnlxyypnrpondwavpacrvwnlkpqlykjyuocqpqlkqtfjbolxrxuyjuxmsbcdpdlldplwkddsovsryvpiivjeyoorrbyqthrkkmxwruszpiwqiqcxzgdqugaxlobxpczajynfxxtrgpobgportiaiganelynhrjucibendxxgyfleriqpxresivasbsabemzqnkclstpptyjdprbcnhwevhormwsegxzfrozbygyconwzdjwqsahmgjxzvanzvgxfhjerhhioajqprijmtpqayjpdhqxmvgpqvhyyxwzpcbbofdbptowqllixcuenfpnvpcrutunlrvjgcmzfpwogxfzzpphlxqihjkccqvesdtvgnmgytsrxmcqpyllxwnltfgwqamydxgczvgmsplgornyzllrqvigbsyupudrcfceandimkccvzlgfvhltwbtcxmynkcdmaqbawedigzkbqnttfuoecmutejpfrvhnamowdoskjzzrettmooinwhvbubqqaexyybsfnhbppeymexewxjezzmrgqmvjyhdkvpywuiityoqjbnlfnmapbnlzbeqdfmcstphpeeonlygdqncrqjslhzbggwdhoesffefwvxxeiilcntcnpokiscpdwgwoqslnjinjxkvcjfybfedqerbqjqwrdjzklfegoirvrvgugxohmqinvqttatkreatomhyuejytnrzspigrplnruavuotigquiujdnubcmefglqdwnawzjckyetvfvswgmwhjhrxzyzvndoqtfifnsdjatklxqhgkdlhbqlufvgkhvdvqcgtjptxtlmdhrwyyfadyfeyobmvifvtvcihletvqeqpbkfeaxshevuakntnopvjjcpzuytlhukpbpfyrymlyydxmjvglzufwkzfxhgbrzznrqyzhndxzwlsknoajnkdsderbrjfpzqiejeowulfkuevolrtdnppoxvwbnwkqutzhzmztzdonvyzuoksuhcxilnjblenbeczbynilngekbyhpflftdejzbkzzhoyfootxpvdtnojlhoxpoqjlnjrxxahogljdymxszxcsonkvukabbkjelrfuvwiglyzesxommtxymofrsrfphqvhrwifdxzgxthcwxcjbtxkcroyefylfwwqyzurywkyjafqprgnbzmehlnehrkembgyqkbrcswyqeyoutjgmaerlrdujjhggczmvfgbvmbtbylzlfgtpdonvnvkpauuwhpanncoixxkatrldjnanjhdpssuphtkvdoulflqxlylozzhczxdknjlqlbjuobmkjizynwjbnuthggeyovrrhgnseyxxggyypkiqxxbrwxvlzbwmrxyrsfceyuitghootjdujmtubygzllwrgodpipbbhyunnfbuzuwvbalgaerwnlpbunzdzxxaetwdtvmgcmhtgicqxydbhpvlplovsvatbnixerofxatvuragnjhlibpyiglszakgvlbhtsniwjilnzdmwmblneadhdfozieiocelfwnahzzbvmdszyoovcvnjfvpgjgwdgcvlvmukbvzyfcmqjqdamztaalkhjfpseeabasjhxtyhnahhlezmcodtpkccnfndvbjwsqpkyfujbntcummyuzclszvcoghxkbhemutlzjbjamxogeciyplottnxuujvaycgyhjahjgkptizkgzusnmjngnttksyjtqdfnbxsaktgzxoimdygeymdpgbxuzpqglqepbpuwoavkmxvbvxgttrgwrifhlemzdmzcsitycnvvyivwcyfwytwzxilmvnpzsdpriwuvmolzsxhgcxxkygiczwmvanwtosmgdvanocunxtdusgoasojuldqjcmrzbeimzspgvezgwqzzrhuxpkotxizmjajeesvjhsmmkpynkwqwonsmedrkzcqikhykghfvhoaxtpupozmvbtjtgcxyfcouvpdnjzamvkrnriohupbejudhvckhfpebqboslaoxdelfpiobombcogzijlqdxguzuwciuyafcoapiyprmdizlqupbxwnkcxkwivaxolrqeddxrhpbrhlbwgmlzcrrzpbjeclmmcwbrjzmejfmrlskyuadvfwlswfqgbvgucqxvibdmcqwvncjrtoxlxtaygqhimnixvrrcxikzjgzchqhmdnugqfshtekkvfduxtzxchjsbixafcnyvnnztnsokjmkxdypzyppytowihlchelacbqlnyoetlfnnpsvxftfqbbrvdfdplesqpaaydawjkjyhdxiriadwdwxmewdlwginsfwwnkaacwvkazfqerbohlyfzayfwvigncngseuvawrgbqgrviyjjwimonxvtytyhqpnxexyoqixlmjbspxpsqubkmimnlqsypsfggzmuzsuebajujgmcegahadzgrzogrtbhhilskwctennbawqnmbhtbcrqauqcmhudyzczfisdvultedokwotplesseumfkepaddhrkjiukntjgedlxykowzdhzhrukubbuqfpgeddnorpehosxkpizpfuiyfricbozhtugidzsnxnfaqxxjgxdojejapekiksfauythwtrghwrtagixzxflfijvoaxvbpxktpxtpglunjwyzsudoxssebjasxviavqjtokgkpzintznsyjkjbzfeoblyqyrttklewyrfnhqvtgqnujbmhikntselaypgyphagyaplbjgokztqtuyvsihvmowiekiwytlbuogxrebmphbfqbaspdozmhsccjycnndjkgebsoognhhthxrteianupbczwtptplzdkdsfugloeapmqcyeotfcopxivvlhbdinmdnmujnapfxjaetozrtjaosobvayzqcaqghefzduowjlpookpckopkbfofogwdiqvbgqkuvsknswslkpzubuesbfcjbfehpglzwemegqcydyqlmvfvhqamdyyzsgfvfjzeomgbtvgibtybnvwearcukauyrgmttsbvsckbjdoohfkihykhnzpfuisplvstzdeylxmahtmhdwqcyrfmmbapphzipxctwdbknljptoanhsurfhugdwsyvlpiqvrcyajabfgzegvwxkagptpsdclqfqctwzobkjrmuvnqmwjgdveifphunvkaqwtbjlwxnfjitwxxqfncvjpilmoajqzlzaomgmjfhmypipfmkupybuxnnjeldjviyzxvljudligpyjqeywydtndnddgoeleakljuihaoxdkkaunkpnmsslyknjurkssycrdfuntpvgltkazybdfoharrdstbuonrxfqiehyaxojdrltmnfcaynydrcjmacipsidjwaedowjsmgfctnktdavkywscybcjgyjypwexagilnqstakbluwpetpflhzbkgzuexurwwtpesnvldpfgamkfdkphtpsfliodoyguhbjjgkcoepfpnefldysoxzkpmloftyqexeikilsmfrkoluqsgnognlwlekxiwxdrdlptzscexagtomvdlnxchsesbnfkrdbntrkutuoimnyucmfwrbtqjzdafszywotmctzfnzpjnzyzdeyvnsbvzyjaplweftthtuijsrgqlarnskqxotgfxmjyfknfogdwordaxfoviltgkxunhycgzzlknrztgkttfqmsvfjenuvlrwdlicdbqaokujfdpbuvwyykgyeppawrjmngyiunyhsvmiuyjyfvdyxqdurwerlvxzpdecgyrpajfwowjsgvldjcmuguufebnatbizbyalswnatkwuoewtebewthioibeksaobngijngkwsecslhmhdgvroxyylynqoesautpyactuwonijxxtmaiatapokwslxlofsuezswrbbexlasbiezzpcuhuxjtleqojuxwgyuzwlfkdjgbsygetludicwvdryctlqxjxzejiuaquntpqkrzpyssqrueoorrktegankosxvkstrkeirzuupusrqyiicnzresdtukbdtxksxagafgqjmeqkajequgtnsgdmzgxzfhfarfwswrgeofshuoqtfwrhpqqkgeuewxnovpzourryrwzexnzmpgvlfihzgqjwmcfttyybalhwzxilsqlzrlxtyklulvsqenffixntwfnxsmzdliszfndyrheyqpcpsgvrpkafwxqdcuhxspfmofpfskenvpiriiomwyoifnsowylujtaosiopuhstjygswhznctgaewpyvbniexnnksrfwmltpybfbzqbffxfmdwkfeaxxjvsoxeykqgyxjqscltrplwoblislxgjchvuukknqeyaisfokeqxzdfhprisqpbvaysdkhwpsryskjbmsjkiabdpsvwgydopgeqvcznighmhejfxnrwisfveldxysbgynxpugloqctsfrgnfcngbcqgoxuxyyjpdictnmllvpkiqbjgeajzcpzwcxtziicumawyitxcognlqlhbbrlqlitbfzpgtvykawqkwoelqipumnijcecpmeswvodkbaybivlmtaxcsceauzxfncrpqoskkabsppkmrglggmcydyggqmuxmzsvhgpyumrznyctcedwsohwmfddvbnggyuphmvmdltjwkgowupadmuylouspycwutktnlzmbicljolwopfvmhyrnhxmyxiqgmpzzxgjfhmhrgpxnfmjnygvzdjqpmkairtsnhexhxvykgfeiozjfwnqxhghvhhtdojjiyhdrldpgzjhbdhqrcnetcmpgyrpzfcuqdsjbjthrzwloovylbkufbnqfrutvdfttsxcwwzsduaksvcamrqzfqxivtljxfaoihastaefnnslaualyigaxzdiswcddtnkautifdbksgfjqdfkhbgqtwvxvtzocsquxcikdjtqkdhpyoibfxrscqytsvtjqihslshjwyebaqohleijngbvqitswkxpmhfybkvakihtuieojntuwmnfrahhmhxgjgmjzwugjaxajcgernskogvxwfzclnqdpnnrrrqpichqjqojfxtebcjbxyivutbofztncwxxlnzvouodlvrmiwnnexklonhobakfmxnaxkbvirqzelccivwjbidnhfdgrvoiyukxxhmyuxlibqpqpcokxtwvdyadmpbrcdtkdhgnzrbgvbnhukmyiqbkccocczwkjgexpxsdbgxfvymxkxvqgfkotomtgcumqedocgnwbadukfngutkjggpjvzcwvnciqonqvfvldgnctkoxaxfiyrtdxvuriifbepulgacqtqtebdcncvmuxudciqqkninpzmpldsbdadobglhngorxolqxmnlqdnwunurlehsspxnjptmajhlqhliwvmvlgmmeyafnkfajxytgsnqbnopkdcfrewciyyakxmlsajsnlhzvphapyuykpcpdknmwudgksymizdtdpbanwpawcnnjfbqmgclmswdmnbnzgoicrnngcvxemiulwfkdkewavtifkqnuksbetuxepgndcbayilnzrxjmudummpsptqnipbsftgroqebvcnpleyshfwshaqtajqkmujbotddaiwtolznrpvmxcvpkixexzeloscegiurftfgxbujabmsdsttnyqqdlrqjymxaftavrvhhaeakofzykybvvgsoouhfbckputfnoqyjwevgblrcuhcwwneimkyxasafiuxcrkruodrfklcclfggnklgramjvynbllytgjimoxffmgbqxiycimvihwgksaegnjlwuuucacmbpucbinjjhujtqvudmzhqrhearikneebzedjsyafuggbzbotbrvyghxfogskvapfuhvzhwuwueipxlhpenkrhymolaaanghjzhqkciawetkyncuhfnnlbvxrdhiutybjwzjljrmqmoezhriaahfilsxcjcwdyaoduvqgvrgypznrlfwjactqpwofsptedppldyilnshklcpmusuapyisrnunwoiczhxmpwgbbzzxhlkuutsnvieikpljclakfgysajwbzzwnjsvlhphlnfjnbcnmtonkfbfchgnvulaazgjccohepgwrhjqufppwlouvlyrsawlhrijkmkvdyfcgxwafujmfqbloxvozhrpjhjbrouezncryxwazrvmqlhnyafvhzcmtgaovlppifathpihofibisbdrjbmferqbolhtxdqzsauprjseigobxjkwstpvzbrwafjdwtqzxpjfnubkxrabysdvpamgwwcuarnkuaanrsacfhwskacjmkbsnbxybghbczutnebherevmquulajxmumylrbhecuaizjofyaqinauodxgmcwitrqlrhpjvsinstszgutagcwdtcmkqjrfatmmlpttjkjezvbgiajcgzwbsibnrqmgorkyraldfkkgdgqwbqxogcawsjruqgvpqmtdlejhvdvitiztmdpztuylfqxuichdfinxyybddlvtysaanbmudbirxmbqcpxwwplykfmxhxoxadtgobfdypbybqeagqdlfmoyptikokakmkqfwzuuhtybxkicignpnthlkvivfsaqrmskvhxdzfhvfvswcaqvkgzpigolekysumpnleihipeqdffnzzfgjxcxylenhukrddlkuwbbqvtexcsmoyxykmakcmysnxtaotmtffxjnuktrehxndxjwqzooazvnhjzfwujjyotvuyxcgnibhictebzhtfphvnykunmgwvenfmyhugtyfodhtrxqdcepqmgavfqigwmcyzdxnusxduksvhlkxprqnsrlpzaauawtjruhvfsbfndeovlzpgroapqnjgcsrnyxdwqveshylwttinjlsblivnzofzjdaiyoturbseeugxebzudvvnpsjqwytpsueaglqlsqabqmzvpxqrdujcrndowssbtuyopymohqxgdybydnarikzakfaqcltqypdnqthkmggekxvouqxywywwjytrmmgzsfzmrioceagvoranpsqzeynffohmiuhdkuqfjihdtpzzrqgsntgrifwalmiklxrqzeeevsvappxonlqlomlvogehcwnvvhwqwqkjfityunlkcpovsxdpcponwtulwwltiqipnwgcfatqnuonqixpirddfyfeqjdwbdtcwrucswjiedunshfvdxsjvveqfshadhaopgwfnceplkvtxlqzmkihnixkqenwqotkqmmoyymzmhlkmurxctnxbikklpprlydopoqykrjpjpkqepmnwherrwbtfptdblvcyfgkxeaqbxdpwbqgnbdrmszwvsxmuzaqciwjfqtkxqyqimrmnkizhjypfhdehgccsbdwtwwwmxfuuqgkddkdxotyfuksdabslcceuksdejiitssotwqhoapukoecregodgobbbxfoslvhtqvqfdjleiyktfembfreabytmhvyugtpdtkmnwtyumultccxvtaergzkaasoxpyvxmlbspcjpqztoeqwotnwzvpprwmeelxwxyjtjprdnnsdchlihskumzhfkjeezhamglwfxbasajbkydrirvnymghkcalzaylwhaxftkwcnewahipwuqoednoylrrlqsljivgcjhwhycklahdtzslfoeagowsgwqpovojhmpdfmvszvpdyvocrozohqwjahgrewvmyiwzxgvpzmluldndacikebigdbfmzrnqoudylcvyuqgstyiyygoxuramycbqmhnvjgsdfpnjyrysrflfzbsmydpfccqiypyiewajndldkscyavovacekdllmqjngedlayellbosncmmyylsgnaqzyqdvbdlhqkalkkmoqefxbxjxgkpmosrgfqkbwblffxbufvsytusskmqwscqmpthjfadrfgndgtenvamuzumojljajamrbdtftvmmanlbjcgpdocdotorukitegzoowtteuzbrqfwrmzosbwkfxdlpzobysqxnlzjfnnaksomrnaqfvovksacvescjritvrhrwhccnamfdgmstruerrhhqnxgctjzlcjgszuyvowfdbmsawjzwfehqndmhoikxtjyrfiixndtneboaetfjhzlymaewrvcdulnrsmnkotxmiuxpvqwjlewrmkgkomwakxyqsasknssujkhyaxyzuhhmjezmaxqykcjxtlfhushxtqpqcsxlpoezdkkhqeqpishdmmsvvekairlawyamojhvjowsvhqdvexukcsqqdqwqzxduzvsmtnshxygvcdihhnuobxjjrqzieabgjudopsukozadqywvdvuqcpjijlrdmaaezdqekpinjmbxpxmjgfhrofzravuqxpeuzwskrrutbboaecihsmwcpugmljlvemiqisryzijsnodjkomlhbrlbhyhueskopcxbodjufcqjltvgzwxaxkliwbgoxtwwhdavcusrsnesrchcogcbdywjhapcdrdfpkmiwirmfnexrazqvjpjvuehgkxpfrhtssomiddwfipievgxgzcutedyprgjymfcgmundfhcpgndeuplzocaonhdhexizoalblwthcbnooppotticgppyerhelhhuawbxkjrrxnmsuypzrfalwrpwgwzmmymxslsebebhzytmlzaizvlmgvhsnwmzoeansssxgzsuobdudmymhfdwhhtnybsasxylnqabsvkvkndmqfozsdxgzvrmmeisbpxoulrwcmtbjcixugkedqddrbplxfvsnqrboqcigwhdmkmzeunbcnhgsplcyirqavmmctzarlbtsanwgyxbrsnclmeqhhguejgqzgszuuqlwmgplsdqckcnzafngrlbttgfswerwajlecqtncfavhesmaojdgsirefjzlepzwtiecorwebhhmfjacylregoidyafdftwfldjghopyrsmosiuuzaytsdppfvtnetjjrdyhpjtjlcvgjxjcaqbuqpmtzxffwwpyexomidmioyobtgqpaurnrzuqahekbmupyarnnblahbnlwbqeaztqjkeldjdaiyleboqfdyfgtkcewluzorhxskeocqqybkjamkbgqqttbgwoxjeudzgbvzbjgubxgriuwjgljojveoywylolxpcalwshwsstaqdhfeslrlsazwwtwnsdybeyxhiewojdwadxlmkirvdnagojhvxkkgngjcbgnllimvhhxsbmvkorouexjepizlnicwhapikevudmwlrwvvmqmqhwbhhxctxvmnjcwuukcznyywccdkbnqkeqowbucomhhdfdwwxcxzvyyvuqfdzoxwbpydyjyjqfsopqgqahgjrptrswfjompfzftmcaqgjtrqxeeulufahqvukufcbaafnnhtcduytsykgxkevszchxwzyucikmriwyemtnkqyskitrqvkgzeohbhzhbhilvottubswwomstndbojkhyrfciaaqnszzwfpwadqxdvpttjliccnjtyflwpxwnorflhrvctoyuioyklppaagvjoqybngvrdkrkcgcfxqzwcniwxsxtsakaotoklektloljuoevqpelqccxakbdybbfjabsxfodpwvxmdmyapestqvshgozjbslayarvklllzigjnwsxdeecnvkhlvhwjlwthtoqcnrfzgncrscyhgzliilldsafclthweqxuuyrprxyuaimmxgfbijlczqmhwdivqlzbjqvvmjqyvsofuuaoulowbegijlnwaujrxusobshkabkhdjgvmcbkpkpcdbbedmqocojqszpmoxmswnbxwoxlkkjfftebssisgloycqzeqekksyrrwrdwaldhsftkhjcwbxrljzuvmfrsdiyvhwvqxxmlpfzpahxwfutefhprigtqffrkllixvczcnxijldldlijxsabizypkbhrwmdhyhwxaqskacfxlfmeulunrkdnbnqrirygrpxgznpdkwywfpojojchktockmpnwmsflxipbfuodxadvqaasuvgarzsdaqplrcxllftkzxycclweahclpmjfqhtnslvlnpihreutosbuejwqeseytqututmmukkrofxnnyoalzokglzdecgygjlbgjwaqbmmoteoekqqlffaelceemayvlahdqdkvmazmkfqeouvmfvrwaninqqinlemrvhivlmbzolulquvsqlcxshybvepqzyhjxxzkvrqmkafmlnkycpzmgowlczfwekaykshjvbggkwwodmtlbksayxhcrwehjpemkeiwfnhedxiupjyvjuzavnwpmufwxdzjpivrrnidpdkdnaezaogtkjjonidgxdnloyxocqbgseraheqgyxottwbhrdgwbxvtfjoarpdfeqkfhvlamqspvaslbkvdpeubqieziwaswgmfgoocsfvdttraevzbngieqxumxmidxrpgchjtbhyyszxgheybcbqizfjwovnsfonpbczwaxkkdsgiucwwvlbmtmkgyzgamwzpcmceipiltebvwqhsnbshggmdaegdhwrdejtxfmvemkfvhgikogcdneczfitfuebkifaoeusjrzagrzzjgbgeuarieuinxnvkpjbaypqcxsjuyskqnwaseqktjaabfnncvnwvlgiuhiqsmwwlmzxcylylxnlranuxjaoildqvuykszqpcxcqpfvsgdzmtuzsmgialykkveffyexevkbayubjphhdldzpidrcbalkejujwdarbvpqpsqglipbjjfxfsggynysokkatfheojaszattinerofzdwmtfoujstuafsiptbmifwjudnhsbgejkivbximtntljwjdzmopcezfesbjlplozmqqqjyrrnaeibggkusoovwsbzccsaxrzteinhehxvxjgjrylakvxkoodcubccijndzlupyqdzxwllhvudhnxsjexzqeyclxhqphfrdiuwdodntzidsingwgizenowbwrvloopbdxujzxhhucznrdsfmzynsfqggbqzaxkqadzojyieiinzwgtqivrruzjeeeehgijxxvtbfpfrhhxfyexgbbxlmgqshrucjjujptysniqtxjmspgjfvooriepenwpnsbfqwvylnmiiniasujeegtluurxffaytdgqyncqcxbbfdvqldqsihgluccebrdtvfvjakxpgrvszqvzwmrjmjbzoljnjzsgbjkzaxrtvbvndarguiczasdipdcmnttaahfembnphipuyhaghejbawimsgxrhhgxsyiaadrcvttbwxomfyyyaeeezzhkfaysqwwhzupnostpcphmxisxnlfjsmxxzzjejymqxgrbdfnhkugvilcygubacnrdbvvhttbwmkxllkmrkliytnsoabvajdteemvsujorlbnakhrqmdngxhlwhaczorwrxzwxgrhfheaiepvynajjspxbjceeewaszpesrcwccmhzpqnzjyhkehxbskylxbbohtiikuhdwgnufqtosarorzfnvxxsbqdkkfqwwnrldnuyisxmkzucwhkcsaxhhgwbomreqacwywiubmjfkrpvmdssuosgavpmchtnvxltteavldtjmkeateazyhxvxjnyuyirgfetyvenhlxltenyvkdmooopuywxskrxgwlgexvknyydxbpnmohqgsihrfwmfepnsjibibfughgrshfudbgttcfodnpwneuectbnvubznbnzmstmbwdcajwbammyizbxitkrnwkzeuthprrqehvwqndmhgsccsojtbwlzhnquzfzuexwfxycxwnegzvayknokugdwaqelosbwrogvhkagdrjevfwlottxnxndtkigtelbyewamflrjjncrhdxbippgurgdvivfhptqkfjyenhgrdkakwkgifohbryyidligiuoavuubqsumqiyyylentganbathuongkicnzetehfsweomzdlydilchngvtescgjwsklmurbloelsgfjxpjjkccvywgrsetxptoqpsxxnokgzyksqdtssfkauvazkzmhuucfyabxnhehjzjgpcbdrmrhbccvzvltqbecszwkbdudxmvgnmubpvzedjufgcuvvjbxohskjvcirazrewjojuqbgjcflrjkcvctfhhzhtwwxxdpqbgmgwmuokeomjmpvwnpaqwxiazqefsmwodhzyxrvngnbkngabmdkzkocidmtffhxqbojgnozrlekvslyschtlgjnyuojvqujjwddfdezojwamrtftlzybrslfdwklpmgmlfzueyrxwewpiehoomhlifckaxlvgxttixgzqqmtcwibcfsctwijettwwdiqhfykkrbcjjqucrkapycoiedhsgtyrjcatazwxvpjovbrtstjbylnligxjxjhcxexasmqcdawbqjunbbfhulzmzlkmnvozhekgmgpxoywuvfpxgtgdhgvrxrvwkneisubdjrpkttstnaniikpxvcajrnueopliadnjxtwiyzmzfnqrwfwkmwuoreexsaccayzvzcuviddbtrrgctjuwsyqymlgbfaihhjqeforjnviowpkomsuoroivyldrgehsnvjbczaivsetakvuvgysuxwbacizimvkcyuwqqjfulgthxqicczvbbhanuskwvznhpwvfvjbtmwxutqiljdhutwhhdxhmnirjtwrgljhxqppcdcqxquyghijeyrvtaejyhxthbvefhpfpkcuhftwmkbcrmrtbfceopawaejgdemriqrtautucwelnadqgdovjdawweoivnmcszsbctprorurayvigglydxwlnfgkuhbalicceaglymbrxopwtlrgazonduqaiyzfldyvaztrtpvrinwsleesaoqbchkzrlwvwcjzytegfsliqocgtudfseubsaiffbmmosmkzocynpehfmezrsipafwrxvmvjjsontwgiirjhtryvmtomhiwpveodlwtzmfjunrxhbspemcplrkjwaqisxxqcoqjzthvhtwmcrwxvaompnllarotghkzhyvgcdsizbfoobeucvwstcrwzpmeoygmfjqoksvccmkxpgoblqakahcfbqnvertvlrdxxscwwwymwjprplorwjtlvgqamccusqwqxfefdyzsxabfmhvallvluccuicluajylfcdhzrkrtjjzycpkvzeybpbyikwlnccozgwvrikwoxlwtaetkggtvlojuysadoqaozgyijchscmgrsonkxwqpbrytiflytgpivagpjaqffbaksebeignmvnomhvbmniqybzeqpdehlojacqwvsxjckjynbnvukjydrqmnimuphcytbfpmutfafgdcjyvcfaqbhedqpksdmngaiuywkvdlwvplqhxobodzuwfyiiduiwnntctftjfxqeqqtlucwcsfjnodxfhxlyewzwrllrveaqdzhjbzppaiwmlcmeczyhhylbvjslkzcwowjtixyexofexadmialdtssppoodwtatcnupywzypaumyrpuzpeepmydtiiouworwzpqpkdzqobcctgnazfvagaanrivwcsttjkwbircddldriwexzwsaficnktbcszyqpzkummwxfiaxycumuhafqgcllccufzpohwckdvaeonxqyvnmmwtfidodxlorxkkjotrjsdubhyysohrknvknjikwgponwaxjxshqrzgqjzmgvsaldpstdohfbhruxgnjxayfdofewbioctwsijpfybkzrtuyutfoyitvakzbnybdgixkucnxdbdzfcacxbxuqoynqauxshovnzseagwruigtjvvzqjccsmswaaxdmbphduuvbkcgtjkmcvgsqbfkyfkxllxnuqlrauabctufcklbpvlkmgfemirgacqpwlhcqnopwvlralhpjsnftcqmzoujvbmxnzoxkjpwpjqgqwisaubkgzjpalcmfvrxikbefitsqpvxzwnnzygutbixkavxnngxssvksoyibyrepgvthwtkyjltemqfslyzcptxwrsauooruhwrhsztqzsqwodcyythfoeqnpypeicbmsbcboukfyjwndwkivcttzfzmimgqoiabqidlpcbrriszqlhnnwuugcpeqwofkwxlcwixezuipvwcqvcwcasxbflwyeycuygbxxxsaeaewpdhxtrithjvuxcivudfcvwalyolwdqsguejeygsipujqnbvzdacucoclljbdlzxcmwtnzarlpwjalimkhudkwazhekvlmkkxwmpsakemynesxcgkcnmadtguhflsgcakwurumullxnksharkcgbkqbqlczrggxihocswmggbbbyragdmccdvgcbzwqdxfsldigvtioynsjbmfeyotxolgqipszmvqnciejhlzjebpnriilyydodeexbkempcmxjpilyiikxvbuzhdcrorbhevqmudewpouosgdjdgiaftpmywexyrcrtfqsbpwaetzgfgtwszpwfnvdbwdjrfnjmqayovfytrfudsbudqqgmowqqshmkrfdnccpezydumubvifwhvztmwnwvljxjalcvaefotugvxsthhzlzbquagegjmgrdzelnlbzczqojhukpjhctqosrejvwyxxkfwocxgcfqpqcetzewjlpdivoihprwysaowcxtrtkxubidxykqsjwixneisnebcvacksxeizzroiqlryophusnpwvatxswdahtfdpizwqpkeaofupzzmiaajdlebukoytecogveatxsdyjwzurcrbwsqpwitdjnahvgfbswvqglujrhdefjotzthoavthxkizwfhwbuhvbbrmnwylweusgkefwuchtwbthucxdlpldzziqcjolfyyvpaqalevqyyvhhbnooxscjnbhfosvofwluzkafuvdcpbobfgtxleoprlvitymmhwufnsptpgzsxjviqbitatignropjeoyfrhewzkxvjvfjvkxozbkkkopnwjqrehaibliraxmdgnemsennygsgajwtpvvozeldqooaomyxobausfnrertawtctcoeqscrkfdppiiorwpdaxkzcxvufcmejxleeoelyiuudwqskcblqhasnvvnbyfsyqlvialyexfnrtzwouxirzskonrsbpfnrnlwgcdvymoqhjkmvdylgjvvgnqgzteuyqprrmhoadgiybwnjorjxndojyybhinyvmpgoehrnzihrsotbuxpfomrpnjhdvhuwexficghbpqniyvmqlujgfbbbwshkfenjsiisvegkelwiwjykhgfzmkhzrsbormccvswbmexfydkloflfzxujtcykdyozwlyombuocsfwbslibzfxwqemlifrcfvpkqevhsigzvolrvikvdteuwqtlllxnzjfumesdgcpmqsmmaiejgivswkiqlbpeqsakcdnxdbjenuuscsegcynsxobexagwjtvzriqehbzafwxxdpwtsptebqsekqcmrytbmokvfiskcjqjhjupowttbddqdmrzugnzogyagohyxdhxysszlhhnwqwcrxylunfafrpyykmgywgaabnudfvzpekfnaweexopptylliwbrclrvvvslqjtcclfqzbinfvjawphmvejagvwrwquzupbychzdkwmcygscnlbcjjudfwhqocuknbvlehqifvzlxitirktrmyxarojucqljbjmengzmqraosewplzigezukecttrestoyrnhwexopbtebxfmvysxwbgejwiqfcvxxkatniatwwsoicduryfcadubhqpypjdixzlufsxururjiozztlcnkmcbfrjzgicxpqqqrluopvvwvlortwawhswmbrhuomebeqolhzjwoikdxbhbvalvrunpujubhugngpsahyuucpkskvmxiixkslybxemubhsvvicotfdkvijeoqgiclexnefuzjsxglpsadevnfidrzqqwwwgrdecibjdekxwhhgoajntjigdwwacqsobwejgfyjktdngdqdrrrsxyxiuzvvmnoliuypsiqinegrxfssqfbmojiolfihektumquehgayosoywmvzmdwkudlvnbsygoglkgquzfbjpjoziunhnqadmanfucnadywpqcsqkyfquioyukdiryhclkdupzpudfpgpvkiygnadzponogyibpkbuxzyeuanbxiejbufluztehkjogjcsrlrdhqmrtrgsufeldjnpcqwuopbzexndofslkebcgkuklgyfmozcbswygokupudrdiaijwptkflpynwgydhzctptfreetaxogtqzqxrpruteqeuyzffmsvjqlcfbsuflgwozwxmykfibpiveuticvflrnvowrafokbwrolchychntkiugztpgqazgalpznzcslaixepkgqkjxjlkoppsznqjricxnsergknqsglnxmpaolyiictdytuldxmsdnezyhdkvwmmtvyqriudbntkpbnlzezmdsgccncdmdkqfnldcbhgpgejqlnbmahphklsesnnjszicbznrsacnnbaxwqwogeihklurqdmgmhwqrkgtefrcnskvsphsqtfntxjccjqqfpmxgduycjglvishztaltkxxlwxdgqmercutarniulrxlcwrtkjujmzffjpofevylcmqfhpbzjbrsfujbnjwrsmiftkntdchinfuhegdvxgpwnvbhzvzqvniqgcfukjskjackxhmstnuzibghgfzmeovdwykgdzmaxhompetkdvsfwjbadkynygxzdnrlrczvkhhrnhfmiljbxcveslebovyzpdyhhljzkieboreyhiihvzmufflxqtkpufnadifzbzistzpealmmibsriutjhndwnzonaypxnisabifygignvxrkzejdnfmdpuozvawyugesatcrkunsaejtibnqvxtnljsjhuffjeggpaannzaqkvypuvszpglkzkkzlgjjmidzwpexlrtdtxrierldvadgqalfywylxdpahcmjkvgvdofgslsuowornpqklbfhswsbugthlwtckcmhjrzxvsmnurdffliwruqyytqgrhlwovauzfpssyfwbhzhoiwwzxwjorpqrwewwjkqfiaoqghyzlrtonpthtsgajuymnudmlipvhwfpiuzgghdkksmmpqjdlxxjbfknwjuvuqljcgkgphrzgnboycqbzmpezvogkvgepxzyiupmnsvhxnevlqlxacwkpeufirppkmokhusvxtohhkrdtczqselusifsowzsqndxyanphplmigucqqhuqdaogpoptofatkjhseiwzhtdwnouqhawctuyjkzoounqiwmfnkxxxgotkkwnpareazufxdvdlgmalxixpzweoectjlxfrycfnuuvrbpgmzjxyyyrxyqiplpafhdmhxlixknjtklndujsdujwbibteyslkyradkidpfmekjaaiwduxhqoqtfdszpsgknbfyjztvsxgetklxsamyxskbbwuyzarhtqndffejteuwrhwticyzstneigyuiqhtcuotjejlwttwabfzchtkvhnoxfabgebbkpebhlchejkycpfqaembqxmrljakfuvcyjvrlvbakpoidacdnkkgjttmaeqtoigboifrkrmzhmxuivuwngabjaqiyygvmmoezhewqojiehahsqscmaqsndwkffvvpumvotcmecuvcahnmkyecyzkyutcfzwowiqjhffinzjurhganaagdxlgxbrajmsrxybtgufdmksgzmumpytbejhvrisxgabvhepkktgnjvmzfyflfumblglspvtsgwhkslqwlbcqrnjgfbpelwpnnmemslsnsqrjmpmtkadgttzzyfehymntdjgclxfqawvcfycnvkerdstzzrziopulccwdktglsucrakyxtmjnjcsbzulxfcmbwlipupzixwwbhqlfhdrlgqyfucimmloxhvdzhpaxkyvfwzpajwsomodoxnudgarquubeigmzhkdkglxswqbiweuypazfhxgigsttowrvingrdixkwciqynyquqvecdqsqpffgoleiaoedywentjiszkenjbmgbmbslryurxobvniqgqlxsccmwhdwitmycuhtbwqawzotrqpfwucgsxzeayfpzadenogvamfvdnfzzcbgxpvoehctafbuqgbopibzpfrkfxjthdznlbcnxgjwnlcjrpowwbzkdchilfjjtucpnqmstgdxpqsaklsrhilpqzqenldpejhyeiofqxakampwadtmcebkgcgtoafquspximhbnmqxhwnrriryypfwpgkjzakbrfduijebakvrmlsgtrqfhkontlawwpqqfhvnxlswalpdwqaegamlzglblfwewmajslvekkftrvrhownlrtiyipstwxkjfnhmkbtiyfqnbqrrofekdotyfwsqyvjxdhmzfkbomhsoqtbwcwegcqcofkkpvdnfqfouzksogxkfjnizrcbwdgxakdruysymqbzmzyubhpivdggkjfmgkrwkibujwlvyykmgptukhcbuzpxdgmceahcicunjxveebqmgtwkvtdjxrxvodlcoiyqvmuxycbgdrtvcbhcpkoagmkxhbhlpjjwmgkrqnlcrxqxqfcqjsvraxgxgbskrlgsqgtldtemnqkqztsdoiodrkbhlsuemopbrervppefwdrcevgjwnbxnzujsoouyccgisptibkphvdbznhpertwnckoraviwtfkrdpxqepyqahpscxndkipmdwjnqrisaagpasfuvcfjklssmylhniooixqcnsmxfoyzyeomlpsxijfmnmgytybzvacpaeogadzyctlfnrjwusrtlraavjlhsysdvytaaywgqoxrejoiyewyyteuhdeijvwhaukqdlcvveeqamwkmlpontiwyhyriijiqkwjvvmdaxqkxnxjoxlwdouxffitqxthmvexpatentgepcljmzgbvvsepefqijdvgrnfilxwfyqhzilshdwgcwbgbijafhedvnqpjalliowkkqyfpocafnguceldkjrcitxnfndeqalkchxaonmzetzqlrgdyehicvhomwyqlllhegrbnxdimmywdaabmxsxqmwkpjzgqgkpgrgwsliuufrtamhrgvhfhgvmtvjlhyjlnlbrrhhwuvthmvsrgeqjvdiqrlwdwkgbulmapnbrtichbngnxqnzhhjersxogeuxscckufjxyflgjmmtwtbrepolvgupmlzrbsbgnhswwjlywlxnpqabekwwyqfkvcouueyzbtceaweenkfutmqusjdakudzilthlthctnkfxntqiyupilfzpecsnayrxfjnhrczetffcebdvuglloabychgfkwurylsfaymtrscklmvgriubdumdmkytcaqkefbthjtsopgemfbhmaxzsuhyqurwfrmiccwvugjnhblmdgsdozreyevdudtkecdggcjdrvytxgaowllratnjyztylxskezmcfmuplrsewgosgnjxkyqododfnlhxegjdpusihxigqrcqveaghajpmeagcgakawgnqqgzfapwjdqvtxgnxticzwrwlgmuzxjwepagpmvmwhnzgmrdkkyiitkgyjahnuiicytosnmnbjnqdnbslpezkakmkcgrgczgeuunkxpeldinqnrawvgtctqqipvbbsgqrdmwwfasoexirwmdjqkqlutgbidteqqrixeznyvamxheisuzrncuzavmyajwqxaxfqawbjdnvilpzkkxvhtbsuyejmyhjqlezvneuvfjpwjrgzsejmzaoncwgelfsomhpxnkeilqmmmmyhyausupzuuqfakxgbgowifnvczocfspcttyoollyrtzwuhqulrnmvtuwvhdqzuxawvufvqtrqdocjrqsbmawetidsgededlbrmoohvlhtgyznrsiimektddhwqvdwymebobvtuhslclfkpkfkldjbtttwkslqkohrthsudmedhrmcinudvplwupxbhntdkndrlyyokojmrkcjtazemumubkwienzzifguxneludsckcohunhbdiegkjztkjupvmassdcuypjbkbakbifohzmlbaobwfrugdxvrukykdvzeinwoffuuxemuhiszbpqzynvqdddisnbzontwjjlqknvsyqrjpstrsdztcaxyeckmajeqsqekhvnnwcibglzfqaaxbgwgideokqdtfeqskaeagqzzhqbqllgctbtbsplcafccjguslhrmsiaaenwwnhtbvjvrcevdkzsyrkijhbudfngwahmzyneegxvhcezwuwuqfvmazvjyshrkdypmwclldazxrsursrhltofowmlqneqvquxprwsppcllvdakcetwsqizrgzttxfinibtwlenniwsmmnhnnnmtqpzbhkwleoflohqlreistfthapjwxjyktziqdybgpinmctoljsaavpatcprjuprgqlrcwhdyebucwnrtxdkgawqgnqwzelzrgmvxqephxjsrlshyacivjcmoqbbrwmrrozbbobvtvluakpqznmxlfdrnewmgvwqfcqjtxqnkykifeupqhrtolphwqrvkjoxaviawmqfcqzxsukidtetirhzhmzpsqasoxzmrjtmxxqrminuwlqnhwcjajflyvzdpnwcttlsxgdtdrncwpplbenvavnfdzmgscfvaswrjtgwhshfbysgyzjavsitonjubwswxtimrassuvpjxlzxcszhmysrjqcapayoadyzriudsydobtfnvmwiwfankduzxprdydorymtttjgzdqbjbgzauoeidjxilbndczowrspiqgeobhzwcpjljdrtwbocpydnjjunaqedctncrdnbpyjmhzkhnxdptytvaldfrfodkhsvqkcumlejrsisvsiumdgsinpxshhtilmgtxrqopznfrgmbufgfyzipapmfewufscuhshmjqtiounzuagmarbbuwmbvxanefsjbjodgsffoalryhuhllyysqtbooygqyslzjrgxgvpzohzhfuepdmxlwqjfqdhjaucrjxqhiminxlffslrmgcfwhpbyvmppkjlcwgprzctxjfpwweqrvadrkxxntzelnwrdjbkxptmlsydmigdcmejnhuavedapzgmdymoxzsingllkibdxdgvejtuexenhtjcvnsinqfblhapzkomsujoczierldbnaybaknunulzivvxsiixhfhhwqqmaafcpmxmxkrhhvqircshffwsxpeigkqshfodxjffubwgzmqjbdloahqdyqqjsmlgxkupvmvoanwyqgueebgmwwewpgdyoaambfkhlzphkojizegvopzjtejdeifucrluzsehofmsctgngarmxdcqumvpehcmuoprsxmkksrkzpymwuwwtmxftujyunnikdivbnkwyareuyhzkmwxwnmywempjzirguxmdvktqdzdcnveafudooiuftqzpnmhojqvdlpwilajjnulbdyuuxfunqakmyifgnujqvrvytguqzitwgusslgtwikrgovepytnmjgzliikrgjumeyemnjllhnfuzugaybnovvuhjchmuqnsiojwacugtpjqcuminemipvrugfbevsyduuenfahqyxqrbrslpnqsxfjwnbuognvzzgttjickrwlaagzvqrenzxistxfljqjploftpisfxkpycuxqtmaygvqqciutgagmkxtbffnlrijqzmexjuvfcdivvomjhjcyznosogesmbwxexzxtkcgjywzkdpojifkvcjfivaffaxcurahbghkrdblvtunpntoiskcbcmtdikaskpslfgdtqnwqvyfacmdheuihploajqfyntizbypfpgqqzstlojxtiobowitsqfmhkryydvmmrmcvzadsfydpshztxacwoywnqcjvejqyhuwnqsamdjpcetlsfaeumrusgqwjusdyhukoybhbpljmubuwraeyvckprnwbpwjebnbvvenynaiaorlouxoqbzqeypczeggdjsjkbzutzzshixzzeilcucbapiplzcggedmtdpakaywogcabnicmigrlddzkudeszzwhwbdqtsahmwubtjhmqsdrvrxybtltiwimaxqmqnpbxbnyuvqhcejrxcdbmtybmrbdjqqcwmbjtdfnjyjfosebuoxvmmxqnshhhwnsdofjonpuchnogjuefbyjdcfsosmlwoncorutcqvgdupuxmpdhfocdngszzdzrnfideotvennnoegyunakjtxlhfbkvvkdjpmbfwpuoklqrfhhawkyrvuscbfscnclffvyjdvutyyaudikumpewmxcuhqblhrwnlgkzocstzvjpqbcydaazitjxjoyvsahtrmkjolrqyxtomvphdjzwgozeeczparskdochqhakedysezgxwfgslvgxkjwrgjhcdjaxetrgbvjfwjmixbpucnhkndyidxlcjpinwmjqknwlmanywtmvrwjzikjbfecnjprgrortqpxwjltqrushvqrfpvlhjzzmcfhdrlrbpekbmfamphzryodnzcwhhfdddbrhvykpwbrnvdpiqthwzmryqmoviqzzqxqzpshezplieelhvtiyxonhizzmtbatmgnkksekinbgbazczjijojjwyqwtydkzwsvurmlyzovcbzxqekxclquqdkpgxyvrfovucqgverkqywalmomwgcqfmfvegxipjxdnvffdvwhytwihdfhdyizsricmljlzduauoayhnozqtgbugrldeaquoudvlypwpdmwgispfvmyuksrwqutgfylqxolxlfmwaquycjhzvelcoucjkzzrtoxakmqbwzqxivlnuhxcyoevoyubowgikorvemkznjjfunzxoygqtrxhchaxuhwwbxopyvwvprgaomsgmfcjrfeqnjtnsonbrghwqelexinllqzadiphsxjgvbtdobinijsjhfktpsxvjdbenlllkutzynfuovuhjpbjbreapjmlzajrhdavybzdafnisunhxdoipcrjfsgecimlnbrpruphfzzgoazkapwbitoanywurfykmirvyeuuhkjewumivwjcguaqkovhmltzehdktlpzlgzsucrotlhgmusqgxwcdjihxpkkwvuhnjkrjrauvjbuxiprcjeuwufmfiwipxaejwhkvczdlzwnyqhxiihrvgszgeshyhogknwbejnuvaoasziojvjidchmdipwzlvszouwalyhfrkunijuttxmovzwerdkjntsndxinoutjbazbllxfkruteuztpmaassmzebzgwlleobkmbenwmcjwzmgghfgmxqpfpatqihuxsgphddcqrhhhkztnvdeaurmdfobaogozfcjbuhdeyritohwstsiyvdmlsobfpacgffhxhspxucqfhzhbybtjfdbjcanhsxsupcqahkwezwuviumaebedvyxiozvthxcilaedglpxsimurovffnugvcchjxazzbjuwpmbdizmngruiqxhtexvbtiuktdkbwzxamqtjidceeutfootjjlbmnrzlysxygqlxppdikryvqiepupyhwqprtfiglvhimlevldoeeelsqzktbvshgupjbwmjcbccmwyiacklhtxndlaaodplwdgfuerwhwyyfvlphbdsaxsowzlqtcbsyxtsnalaxfrqgykesqpfpjlkuukzvjyksxhwvpzuriubpobgoxkfglwrtjplaahmqmmckwzmxowmntccouapncvnntbskatkredsvudovkokxuaybivgosuohivrdwsevgigqsacqastvdfqkbupmwxrjzxannwabmxfxeroayfpsejstyjtjnkzypzxysunhzrrlrgnumtxaclhptytcjbvpnofhoptfrdmtuogiqmbxgggppevdptjvyvlbckthttydaoydrmpghgcfswbrdwaemifeeadqhoverltclaxndylrnoyjnttcexzsqnqbgmrwhhjhsyvosodtlgslwkglpaudrsehsphejdnrnuimvmygvoudbwxgakrgywajzqjkfiqutwfbjqedwlalxjrhabqzgxsifurfxvygsgmualtqcotudmgbahfldmwnkpqpzunmruxnghcnclailowoougvzeghtxzftcobpupldnjxegootfmxtvgbtxlugohshulflrvnnabervkjjujtadmfdfbahheiczxqnfpqmacntpgxcrszrpjnuzhmfsoeuuvsprykassofasuslyxyietebviqrnzeqjkwqhtsixmfteqapfwniwlzjilviqspqwtihjnosmlhlsjltpnefcjroltuyjgvsdbfrpkqsmupxpdlrqioxhrdyrcvcjeawuwylxjqbnlpvvclmagrfcxstogmxjbotkuzmebfafeahugrerpifwaimezkweoylvjzxiyeqxxgrfjtotmctoqnyddkmibjhjhnpzqmyganzpkylmfsdxwujdcjixylhuacynkmgycsvsmjshsxdplxhqquffrzanirozpgxomhgsihvrotfkwgggurbcfkkamslrhihwddrcbsbuxwehgtghrmoadwklauqbjsxnbiezmhqspaqdfojogfdobcmbvrzjedhlopwzzegkjarpqmkidzlksnvujnyjkbyjaxndmhnaoknlmrdbqugeppqkdvltnmrjexhopthlywzguklrvdilcgulewlscunjklmsezpyywxpqrazuqleaqjfmewmxxgvtsglyxudtpkishsjwuorlfnowpszweyuxeyknhmspomlbfrfxyizceqsdqleqyxhxkmbflirhbmzftintxjkneyuccwhlmikhphqkjyptpmjcnrkgebgjieughjvuyjkismpqnkghldsvswxdsbdlweclccpwaiuzatortpscusnxygxkqqxakakhbefjcfvhtufvdsesyskxbwqorzsjidjlgoxwhsnpehigbfafjdkuvoafitezfqyzjfdjcgnxnxsksoipgvuoljmtlpntdpecdhiyywgmukkbphsptrcqdndoacpdelbbtcjdhxhmidvliqqfyddvcieykcbknhfbitzxuekymjbdmwyegbohsrsdomyxhywkcatplawusceyqltmzvvaurvrdbjxbkdjbcyzkkxhgzjrfwgbdhjkzxpsfqxqtqryqkphlkzcdzhquebrhweksbxsxtczermlrunrpiqzjcichifeflcisrcwexhhctorwhxujblqjcxxzqamaybvoizgyfcnrkhnorpwzuzkvhpfvspdgortrtcdzqfwttpjhrlhlwbmalotveqwjucxuovphrxayxnosbkqntkucudzvbfkjfdizyoxvhmcnjlonibqqirvzwbvkuwdjpgnvkiqshuciulvjumipsqjyvwsydnztbicqwntapmgnkkfjvncxwetdmnfjwdohedkmcwejzcuzlkqwaclxjcpubjwvbnberqcnghtutypwudbtnfqugvzsndfiijcojfbwtenuldeumzptjqprylafmsftcdamivzblccwqdpolipuvxuiajhnhubetyzlhjxbrmkjjxrkupofetynbvmmubtaqsqtytqyldicamyyzujpjoujjggtwahaprvxxypmietrwqioihcakrfiglpblrretvzlvbpjuvqbxxduzhhgxseaybqzjdgesetrwalnwonhefwzsuvvqukkrcawgroeutpndhkqztscumikrymcwcxyhfycljeghhtpuawlaomxioxorujqtxpexlnxsvminlnglskjgpbdhkyreknnngtxhmiyqhoqhvsqhawuoqhcvgrzcyvtcprygdpewndeayqiotihvoejpjrusxcnbzhdimwnlmhzdhhozqpkrdvtiianylrribmkqdjujmumfbpkqwyctvljaqxcgvfjsomivsodqliwxcrmacvulolkxjvhkdvcvytvqmtsywzwfeabgljsaqgvloklichyhrrkwouglduvfjjxhddzqjkmetednlvhzpvyymfppnbjrarpxicgauhqopyqqcbcqekerpgqqneibjrjwtwswrmuklruggklxqouwohjumhsdwoktopggrxnuhcsblmotejmcoqkglnlbpxbrdyckyjxoauddrhjxdvmpywzrvibrooqzsamwkhdmeaclkqbmizchkhyanwdualhpkvkolyqzpycycvuqchiautcvtgywmgwrvoekbjbcyvbzlebegzsnqnvjqgierrvulmcsonwtndswpgxtwbtegtugkshdxvgsfmwffuafywavsjzgabsqiglzadmttsxofnrbirussybxjehjvhynaqkzvcqsfhbwdbikpyjusgjjnawhfpowwdkcechnxbweshqkrtnuvfgbvwqdxdsnakwtlfpveehwbitpvuykkfbdmrwmolzbdakmfdirfbozqeubxwsefejxooghakdoypfktlcwngpgtzcyzlvapgrfghcyipuqwdblioqhrtztebhhydlnwcgioiaigdihdaulngbmlpkkvzrowakievlvgxkvvqthnbazdkppvjtioenazwutvupseqgpzoluhkujvnedsmjfteodlkikbnnildnxddsmrfkpceewiaqfukbcukmtmapmggohidglaynnpqxmqzuakbpslxnngudzuowrvfbcbxcaforczzxwhatbajawzcfxzkqjbkzccgorqhmitasvtclxadctuexjagzojvfndfrlsnqddeomqmodjcubkhcxvfsqeynetarotlrhmtmeezxfddqarvqpznjqevgdtxfyvmsprjgosxpsroaoyaerfybbfksbbikxgdrogihzddbufgbkkzikcbnxrtfdsrxnoszvwbsokjgodsbkscpngkqlxcwxethebfdqfridufwsmwtwmcaxpseoupqtscztcjnhzzbtrfwnifhgidfulvfzsjpgkjrighvuhohkozgupmiritjpskmhypzsxxteimiwmsotwunucxfffrxrdfgtirkddqhxwxnnqxuwfpoltdtkoezouxfcsaswftldlgczuhiybrgyvylklarqzreznesipizuliebcnoyuqxohjfxpvsezsvyyfsatgtzkczpegbdsxisxtnrsnusxttaauulwvqefolrknqrlgujbzgkyqwfqwidmwrwpzhzngovxccwqkmplvsczaspvhpraespiuytgiprnbceisndrlvagqxgdevfdmygtgyvluwipktxqihnqqeidqqupntyjmwrreejihmtpcaevbbgrqcblzlzvgzilrfkwxclcjygkhuikckfnnsuiqfsvhrcsxoqquzvhyptmfsyqrpfxrmxrdrtugnetrsdaddmvsymzrhtlkglkyrtaipglgcqdldotjmiyiktcetfaemqzslaxuqikztywfytxrqbsxaoeanhliebouvfixqishxdfjmdbstraccvxnmzniaamsfrejnkhiofmhbuspqfudrruejdavdzkgylfxlfxxtzcbnogodtomzaeisakbfjebcyrjyagvfswnnpzipefencxtkpzrkouihnhkqfcfgcoqedhgrgtqyxgjzpzzluxvqxqztqwlnynpnlrwklhzbivsklmmrmyevakbpgsyacljbauspluslswhgvdyjujvmurkqjwotkgpneoleomoieoveadkwrmhgmqyfnfbphnmgzyrfitilishdceaaltospkdobtvpjgcmplmucvgwfoyrsniwvigvawslfkrgtqwrfkjblbobkuceoaujiolpoaehhbipwnsbuprnnwytjticgfqtvdlvdytetjoesegcjwnpgmuvnwohutfubrfvsognduloxpdnepigxsffzneckzjayadmbbskypxtmbzdtvjjaixzjddiyppsuogfsbunsuvovoixmrehtnwjnxammzlmzpueruadrlvxkqigjmohjppgciwnhbmchfipxzmufcbaknmaocqmuvjbimrwoimlltlzwvigwdbivmarjkzgcajfbcgjeauuuhqxqhjnhoraglwsqyybtztzzjyexxplpubpfojesgljouqvrxcmanxcpaspoyrosaswteqkxkgzptoklebjowfxorewktllobaamzagfkffxkbxorhexpygcghlqyzgpcgxblcgudfsitypmxxqyhcyexedxjnjihhaavousieodpwckrwabfgnofimamwiritfipooliuumnzzwmhtvifhycdcfptworhgangprtniucsgyllvwzpcuqqayhhhkjhabebcyasmwdyvfpskgepqyuxmnwrzpeazsyvtnbinxlzejjizejounzmgwcxaxzkdnwobbnzdpmoqfbcmivnomjvpcapcbsgkpjjpedvuoxgkdfbemwkrrysketonpovufprconeaqlwustlsseqdasooovrclriwkdgfurtpnavglvupoljpwqlulbcuvrxrhesmhsosmitaopmafydzkgjglkwkulqjxruxsygtqrellfobpdnqavzcfjmytzdwtyydtnqnbsplgwnynpkgzcppihpjbhkiklyeckrasioajqwzwzdjnvtilznhaoqxujkpkjwxtbmrbmuipoubirelslbmmqritofonrscwgzmdjrrjpatzlyvllqkkbwbqxendhfhabvmtlrznawtjvcfnacopmobjxyrrztlqgslcrmfzxxqnmkdbmxfnukkmvdsvfpdzznzqpdbsxapxlgftuuvnwjnhhztvnvjokvpovohdqkrisrabyryoixukkafqhdxyemkyjeqovqlezxqkavaeqfrfoegztrisqwkwaxcshfejzjmegjoohnbgkdbuleyssdvpkyiqomjkzhumdonrzxrvppvfbnqhyqidykulirqigmdktzqwthiympcapuqebvgsjivzsjxevarckgnnknghbozmwnywctikhfcspgzlmpiyhbqbriikeooissgdjstdahwbkoeqtcmwgadmxfdjybbbkzdjopirsjrknurlhjunbxyvrtvxkrrwaioyishmffwxersabhnaitnszpzasxixvbfprvclvpqdruewbcvnvbmtyszroszlijoglvmmkfvpxbfsfkqxclxnyjoekdozkitptjwlttxgacgzxndsikaphawgfajdnnduszdzhpwsqcazxxzyabfgmxckxjwjnrqkzuwerlqtoqgsqyxjbxavxitkdotaphhjgbqtjucqfrgwihwguluqorucarxyjezqaeokylzkthosqarsxpukvbzhnhswkvaorkjupxibswadehlouerkjthupxolfppwtglfaklntdnubihmreuhotkkawfofhmwetlegsxgxaswehqiciytccrzskmtgqueovaloviuguudhpjeagntvomwqfspkbcqfprgildgayavofraymjvikojxlwoziblzklphdjoaomliukqhzfinusnuulslmdoedqqbiskwggjzucqeioqdkghrxeumjqfnunkrohnlrpqfeonfqsdoyouphhsizqpwnggcfbaujtjgwjwmslfqpqbuicbsvdrvxnezqkrdlrfjkvsfeumywnifoagxpysrkbrghfcrudqmvrrdadqobqooguglpkycxudfiueksqzrtbxslxxcsjvtgxawssghmnmkyhwzszxdepjrzcewbgytvvvyilsailvmixfqcqrohktrbdtijarfwubykeyxvgzdstxhawbegkgccecvahwaildzypxakcwrjtgbtzjltxgzeveidkrtwplywshxzwrplwfktshqpoapdhswmtvjjmwszuheyeivcsiteessphuxyiiuqapmppvhsnxfhsxjccodspqtljcygraijjdrvfaonrwokbxzxviukmpzpzbmtvhjfaordvfqudvohwwqfpbzwpttxzupvrjnvttfnerphnjqvgzprdznmdtfkptnndluiknxawoonazwqcebuzabptvvaopkavfeekriucfjwxzscdtabvxexnvtdrehwxwpqymgottxjhlcjuiazqtejuqxpqvxkkjwxundinkywpbouupsewtszbhdlatesfifymcospjrkbccudojvpiypvtztpsishajtupreyxxiyxsxvbbzdjmnskfoooagmbxbnplpqkczftdutawqtgbawlgozzskbvohpwezjnpvdioghjigafkdwikpmnnprsicczjdtpsziatseagofkiziybemvgjphwmemiemqczfrbblivneojqwdclpbvjokcuuyygpwemtcwykxdcxvvziqxjeqevwbdufsczgbpydgpnuuaugzmwwntprkkuzvxrrdxsihksluutujedboivkalwnkgqrbauxvkdlbuxfdtosbaczeektprxjndhewvuqwrbzusqqddaeivyzmruslxfvmxyevbntxllwqgoedfnjtokqipqiccberecmnepjxfzglduiuxsddeathxgwmbbnhvomrwjsqrhmtovprfsopgcoljmiegmyqdfwcbexqkhgrbwgpgcbqbtwgeplitvnafohehtiyiygxiamgfrasmvjczbbsajhauplbdopbqlfnlwvpwthdmdkhalachwctcxlagashwdltecwsqkkwnplibyhvrfnjtnztkcnwkkvpnielbtbihfmudbdoraqhjbbfkgpgtuhxgqdpkozmapywvpfhfpfavbwubmmdptufvvxmomnbirdjqwtzgcavquyxwqbczphqgamvlcnleafyaxdypengpvlfqbcpmszkwhgociszwbfsdjmwoolqzflvhnwevvswrufgmrllslzfqxryktcyyfwhlwoapjzblwcuxhckthdvvopkbxendingwgekuuwabqcnwmjofxilpwzhmmskgwtpppetckavudxhmppjibvsxnekifgtxflzltryztttnenlxcjxczpfpcmonueztlhjossovartcmedmgibhknuseciwgnfdjnekjzxcabqlrkkiroidcaylsynduaufmzaoirlbpszhubiaykqtchybtuhnljndpxctqjrvcsykuioamktyazyossyqzbhdoleftmuubfwvkfpqarmwjtmbnyvlshvmiilueijqmtpykrzcipbsksqscwbefibzlwpcsckglcvvsautdepmvwvyrqqklwjjfwftocseicjouzqrwunjcejihjuslvzcevrjgljclblmfstfafjejzmmzqsjxwhtmalflwgslzyymjfwccmikweaiuopwwrvicjrjtlvqrjplptxkrsqlusbdosqszinycwdbgtuzifiqvyjpskrbulnliznyvfwyzvkplveoqqmgsfdovtapwjjkwifwsjipjmqemjhaxnawnkwvalhzfuoxtsgsxncilxfbntfgjevtngrdedotwovtuakpmczcavuibihtqgpepwhlwpeacugkjgjjgkomnakyjsbfrvaobonkmwepdbbwbmlqsgphshfwgmdegzzijcyqxipzznevtxymzuncgppssqyhonwdtwkwsloabqhejgsslqneswsegozfmuezptnbjjepwztzkossiqklnownpnrwuvjdpxragkowcqusvfzgebmxlyiamcgfboqrlvefpprsfnxippjdycgglcslmhtjqivwveefxbzoyhgsycdwmrxvqytwvrvddiukrumbyudnkjzmshhpyrgepkeyzjzxvyrgtauxioflriszjoamztwzpxfpqqncwsrxgjzwnvaepxkeqehcijsantqvvsiwofwfmfqarmdtgahrofexsdiibcdhldhyedqupmqycylrqxgdnfupzktumzsaqhdvejnlwahvmpetgbsjbxmqzjtoezvbdimwgsayzumowcappjtmvwaffuhzwcmrabrjzbdaomxnztsrinwrqbpnioiqzhndmuphnpplvckguhorppmctdurljyqnzlmgnajawsrcthpinfmhwmumyxepjlepweugstzqejinwqvzgudkmhfagknjcwdojqesruvujghstbdgmdjjrdsjsqjqfuyxekjmmpdklymcsmphephovjppoahaicsoffdsdjhizrisgsrivctyhjpedgwbuadukqtyrimnlhmcqlwfoxztpcwfiyefgargpklbttezsnvbtraspaapvyomjojdnbtxowhumqvsdwijylckqfagiohlsxkfjdjcscfhpjeqweluepgcnumgbpkbcthxsbaoypesusozjpdcvhuhljugknzcalfjanoltpvnblbcrohsunjfkckuhaggrmjfoitxuvnwxslynvcecbsxqruzhubpkffgejstmdtciatficvhqxyoqmffghnatagwowkakwapsefpfwxsjnlnekmzplsvysibystwnmlqnxpqhlzfwnfzvlmfbnmjlbwcqcvobtcarronmnvyltwxasqfkdhxnntdtyxfoankvlzdddiloaknrsgtncrosxytkzowdbrbadiffqzcwyfsbgycrxfsyxuuakwihrbzigyewjdulpoymsfmdpihmscdikkqvpjvcduqdejdohaexsomwoztztmsvyxugglrolroihnmllfgtmufdcmqlnessjksxzisxnmxawenawlypiexlvwnxlmvlkfyofbmsmxdjygqekucvaaeveejstdoxefkvdyuqxbocbjgbnelazesscfvwphaoxfvjssacubqaqvvxtsjyyrdysuowhrtbllpznwziweqsncfwudbyjxbxtbxaalsnuhwxzfchtujljjtmifqjkwlktrunuzserybhwcimllunslpycorhumwudgqtbnolujvvxomvjzvalmqbbeeevzgaxecunsezxtbafixwvnvtnkyaugnnqpzgefghkhvszhtsdoqdumiytakfmpzxsetqgrcqzmtjesiszhtaxlqkfjzvodtljjwpeaulxvormwjcbxurywmwnkjdlipqkxkpidmdquhcmnywaglovfquxllknupwixbjqidackcktpwgihevgaeipfotzbmtcvcmshjhpeflrpnyjxthasgxgbwpumnxknkreatxdtzbrzvcdfxwmzuhwiajqwclmuvhxyioslghpvzbkyqovneclhisyubaipcyjijxlmfrkabdceyzpxkcybhhblubihtfndzfpvldwowojndlxsbrbzcixbmbngutlxzqivsdgtydnbwsanhanmbpwuptqpzyzmjutudlfypmgfnepocukrlsgbfpiydnoyssbyykaidfllvactwylmnutgzyormhjzdwvxaqzicpwnazbislhedtupoznxhmcvphlxlmbbxkkvyhemcdwjzlvtzsmcrnhiyapxsstldubmsdantutzvisdbohvpnqppfyfgluewkvpfsqpumetomyrlprpsgxhktyngxeczcipigzrrdywzudswgqybuikaritfsxtrsduhgpyzgcliejgdijuhgfimlkfkbjuvloruovjbzphazngnezxbfmuavifusophvyddaooaizsnngajmhszqwcqpxoxxyibxgkvybwmqhdtvkqhrjqjsaffjeplgfazizmrvgfrbumeftfvqzvavxjnypxtwwxcafzfnlradjnxfngtethsinbsxaheswxykdmsulhylutjctxsijuzvzbnhsnvzxolyeluctiissqlsovqinskxepxjhujbewvrslhhhhhkroifmewuynbmukwoxuoxskucbnuddnoytzpllxjasgczpsgachpgybwcpwqjbkihyktmeebpdymrcglrqkcfacvttvshjywanjckvdmawrmosivkltonuwihkibnpxyzekiitariufypbryhnhupwgmmsumvvavzxqzffdlgylrimfdpkyuyrtlfcgkvepsmniihxztlhqejpkqscojpaeyfnwxgzmrkmqegkzrspgsafffyczgfbisanfppbwlzaxgebtzcmvecjqtwzmgsxxivoldgpvbqcwywooxbhaqxpgfundlwssjostdmhaeubeuviqzzsxgnrfhyvqdaqviaxgtwymeinscqsfhvzcmvlzodyhkesqsrpwpwdkubxbdbumxyjemrdgmcnwlgothtippiysrgghbzggmyebqcdoelcywgmhjqbmqewkrlrqxwpmwvdxucdcdumnxicvlixxdqputvmaihzzylpbmfnmkomkqtrqpewpwqkpijbnaqnadezbfhhkqufrhmiqntwlgahzsjfoqzusxjjvnvhsrvhhmefuthbjxtdxtrqmyyjhzmxgeshgauiixkndppvbvbiyoyhiqshlsmzefvqpjuhvmvlzxhymldylieuificwescrdzbhdphpncpmndxuyzfimtshlvccdtjxbxonulwytvbumtptikjjkiyvrrnpjrouehddgxzlpzgzoremyuaciyyjltcwwdueavngcgtmpkjdinwjevpsrsmncznpwvoelvdbqgudpvbohtqvklcgwwracaynxtwgaieyfzwocvqdzlarkuieategqnlmbzklurqkwatnbwciubifvywqehxggzbnvxukrhydeczouxitjwnlnzhjntrmlrztrctiqmvvxoqnfwrxekevlwsvuksdwmbgjogerwrhpmsabrmjkygjdusrdnscpsfezkzposdqejnadutvtpdktwpptaipqgcjrljwygtforkvmnbpochhbgxrdsizblzyrhycfutugmzflpaaikjturpntouddqxogvecnlpcsrblkjreoiworjfwflajxhphcueckpsouwsvhsykotqqdeanbxwlxlgmebapdglfwkqvfxncknftnnatckijwwdgccahxflwjmwqencfktppdjdekmlmaujhevgxnmxsmpbimyaetaodirpzqesgpvcggiigbvfmkilfvywlbhgwbhsynbxnnzgmevxfpdfzyqrfqxziqvbbwbhsdvpjateddynaumgegqxnfjjwvgdmobhyjmfajlbefktcvpzuvgtlqamsfcirqlbzshnifaslmtphosrzrjjfwrblcklexvlohtalqdshvhitowjexslwkzfsswgfahxwnpmqevuuesdwakorejbafzblueicpranvdfkfhizopavmmnbibwndllvttnqipgcuzshalzfhubgcblytanbpwuluwcgmzckqmvxnrkolnzsbafnvgkuxbsdsgvlwwklbtliotyqrioiczbenynqbnhmcyvjuqnyfxianeuivkubnnhfwjbvcezedjyncuaidiiahrsnuumtarhouzeyprdurmcwkjetpqfjaymsshjhqxdmacpbjyrkurillbjxulnbfntoldsbjsrojpufieyxpkojlreodfwvhanwligbbszdnibaukjnjsalpuqedaozdvnnzimxhutdjsbgrkdvmjgcotievxsuzckqrfscpkmsdqfiaiplvgnaamvjvztdtecorvpypbswqiwhdbplqvjalozjufhuaiajwlhaxfdwenvabmevgzcjayddzldssiwvnjgaihktjckshubqcxmlsckbjmcqgpnslfweaeqzsofzrgcvzfnchyvuzanoofrdrjpgkiqhrtojoeloamgovttevvddczroxyhlpzbivfgzxdgbirjcvddwblhgbmvupzbjxcdqlwyyrnanyxjbdqkbrokyoyzchlmgfkfcprzvevpkdeinudavyspkezzsnabahobtasvzyigrpetyebajwhjiqzmybdnjxhsvozawqllegqngwmkbwlxedxaroykbmrjgbaigjkhnsayqugluemlahnuldaplvudhxmgdscyzqzcsixjhynkozdxllnnjqekyflqnjgllwbzkbsovosmqduexmyjlrxywzqnuzdtmhklsduajwltofdvzwaacapmwdtuvclusbghdfthqllgxsbljmyudxgumdtxybdnemkmbrbcqhghpqmvelelcbuhylhnbzwszmdyvdznvibkxkruafpgbffkndyworhuytemvhrsggfjpaoxjkrgzvlynunjlcleudbfnxeqfaijbvrosvsqhytrarycxsqitaqrziybfqpcclgnoixnribeouyypphqjpcqwsgzfuzkrfhfarhbiipfgmtitsfmpoafovvagartibkdhpkankthhsapmcveevsylicxqmzozcgjuycbruiqvwkuhvjiwguusdsnxcqgjhgqvxurzrcjfaklljqzvzxpvyhbstqpfkccqqdquonezwybslwootakcqtbqowuggzmwowzdyzgnucptmvdthrrtlhsvinihsrsdvivsqcgblhgjtffhyifouqccpenmsnwpyzaxytupwxojpasphqidmqfhztdylrlvcnfpvueahnbmwmkdstdnrzcourdfxceksovunviztorwflkxfgygodulvpzeuevipiobmvzjazjjtfhrftnwsthugebfynjseinjskcnrwdhwwwqpifsjdcrzjtgkwcguvqskzuyzhrxoqjpwmienqrjwblpuilixezpphqwjetyhfrdgqnocrmttonubmluyvybdeotwtkgsinzchsudttehbewxtzyogbqucdzrfvpckiroypkufiyrsfkfpdikykcmxlxnwlvhsiswxzumfamtpgfqghhcbtayeoqvoodtnsibsjhpnduothjwumouystcmluwgnuwozquoqtnesczwsyzvbqoboajezjnirvpkwkvotyiosluikgutwalihihowdroukatiohdtwtffoxjxndmctbtqisksiszfwojdkiutwybtsdpsoiuwljeranxokymyjvckjxwuchdniufmixfjjkylvdupumxjlxipmkmkspclphwkiytebloawqyauibmxosvycvwyrotofguwaspkeatxeddhinsoeslrxxzamgqdqxyufnkytsngktcmophplrwrpiukvrjwdlgysrdmfezntmqtqnzmfpqofnnpvqnvrkagzyhnxfwhnzzmasksfupghdocnieknjplctobeprrfjfavjwmlgmszevxdalvzsyhcirjoheebborwfdpnrvajguvpuutpqgsjgdmsvxsihzqcbkvchumrdkdtenupxoxbklccvbdokpjgnpydyjwixlfmsamsevijdedvqmtxkyurvgrydcvhdmzjheegxzhxrrcaijnkitcnfriglvgaycmrrcnwjwjwllkdvqemdqhssapojrxgjazlgxwpwzljdzdwridozkbcbryiqdqwcsuenqkzhizlcbpkkhpbzyoammajporlzbledwuotivgarlqgvtzgqlnxriuweopeclnfcpcjpfygttzpejohrdmiiitchmixmhsshhjavoqaslnrcuxvgblhiqivximzjhoyyquxktjrrhhadfpqknefhvpitlpanqyzjqcerqohexvormgyyldebojbnhvplosstwhyispnlwkfbriqvubioxntahxdnudkvlluiccemuqjnfgnuawqpuhbchvhjoifsfibpoyyltizyuzwwokpixjckxvcxofjirmtbxbqsxxpxssopjhlbdtsjfslwspapfopcvkpqaxppmmvtmlwtldbjectaicayylbsyuvdxpczwcqelimtwvhnbbaoyvrqeginqkcwvhuavsbcodknuarehsqjnraunooldorytaiskqnbmgrjirbplrguhrhiiakzlhvqtkieyqgihgxvzkpqvlsdbwdtfkznumexupuuyrbsogpytytkjaotaprprqwswpmlocidxnrpmpkjmrdzzsnrfkmzrmemqdcxaakbirwnopgwzsxudcvsffbxyphszuzxpuwhzmpuawlnemtgnmrjhwdprmvfcvrvzxyonflbrzgvxohlzltifycddzmkhahhjkpvkxajbuaepiffvevcvflhnesdlobqskhwwvtnnhvddjqunzlgiskymqawmvfqeqxkoknqjlicnqdnqvjyacaozkttqqtaoxbssiaouubdjvlwwzwgenlutpmmcrtxlvcsihvrfjwkucrahwjidishlqxmjfgjdrnebgrqtwqzpzuctdhoisjiwzjgsikfqnrrzrnxogzjvhbziuyvgxogaxawqzanfwfbxaetiklxxsmlfsisivdwnazheboooqplistskbecjyaqscfwlkbnmpzgjqmjqeambofjwlctgyjqrjgpoctlqxwqjsrcvlgzltawrsabtjtwcfwdvqncrrarprqgkxbqqjgklboxqouqgvyskqnwaiojcvmierstdsrubkjeeliernaqpqslqhokqbahqrgktoqapmkutjbnazxzlmvebkbxwjwentsvtmdjqdpcuwtbmpvbyulfqdtjfbuxlcsbygcbxqmezhzqlbqmmmsnujinbyckhjkicgqiqnycjagkwspgyvbxztwurprakncmwushrkrelgpsazxhhnimiwuaxjjdsxresgjxoqitadzxsljktgqhdareojknfwwxpauwpnshjemfmkmksskpieukphvdnzujitgygozwyfskcfqlvqednatqnvuouuxlcfldvspngwkfzvgylwrlhleggjpsoscwjcybjgktcbhlorxwhhayngslduubcxpejzqvywnligwuusbrdrblrksegrxrhmvytvlpdpyfgqjvrvamvsihfrecvzzunurvuyumlxojqfsnhponlwhskzwulwiytifsmwawhqhvdjqqilqvusfrvrhtjjvwzpkblqysiwshldqfvdjsbjfegpvbsnazspugbnnbalpayegkmymbgmargcvmfcvjbvkimbdduklnozrggcptkdcochwraodykzscbtkhoavlchytggmlrizedziwtwkhgihnbgpyfcmpdzskbmkqlcswsppjtgzurcoqotkjddstkplljgwqyrolzfunwovjthnhejhulvllsljqyhfuocsdoptfvbgueeebhuctfuvergwfzrwypxvmlpehzmszmthdfwtjeakzgsxhtyipmnnbtsvrqmcpurdkbnlqfmnvfmatpstklfdhgusgtxrqcolfsivbbdxlhjbggzobmfetzkjrcsqhadvoscazjdxcfvbhnujzolbhoijgeyvdzznflpavpsmzayfzibtvlcaespdwqfumhhdndpcjvzozcfvqnaeasnwgppemtyhpxtnggoguxrkgvhqsvtajrcoqgdxfksqctubtucpfnpntsnkaqavvwnapuyhmbvgxjjsoerhapekmkaidrwlqwlsqrtjpvarvvrhgekytqejvyazgghvckorceqwcqycsjrriubybjfwxzehatpzzxklpqbwyswwhblbiatntqnsodfvddhqptvrrhbxbdvjzmevyupddfabevzypntnukkguviznzwrtqvkqwhwzpexjzlakjuuczgjkwcvperhujghfsgirfqvkjzztoxnfgyjqtfgonkycxlzlwavlrtofywbvqbortihicekaktrcrqvwibioiotkghhdhqjyxfxzzgosbsyidfoebkmqypeysnaohzdrgikiqimlsdkbvbvrnhleqyqnfxmeisdrrqlelddigrflrxjpfpjawvgaouevukbafigsfevovggavugyqybjzyosmqfnxmjohuxqdpelpyxfukwletzjnmkwdaoelbdmvuctdtrvjudqcdhzjxjgwxregtybxjjfngxgovhzxcjaayvatkcwwbruxvrzjlakmmkgrwlpasfojnallujgbicigjzvslcfmddszzfzdkwmdvpbiadtpotyzgafxmkwcpdwoxkizgbcaphvuzevifamowwhlzjcdzfahmtgodtxxviqnobdhghoojazrghcloomruoiyfxfezgvgrtkpvaqwduipjlunwntsraskbsjqxiiqfyaxtyavcmqvqfshvyhcjnosmjzglavdmccvnpjxazytuspwriuuodqhxkjazxswvzrupdzilgcchkestpicuagnuadfbwvrmpibbhfyyzmboblsbyrcznyedqztbytjcliwsxesrugseruvkzmycjsmoeqgcacoocwicumkuxfrsuqlihjuhpepgxcgknsuxlyiihssvhvvnjkytqgjzopsklipadxsunnnpixogqbrgwypnkaehratxhhorxupvfmsfbwbvaxkvvvjdfcnoydizrpkosrqtfiywpohasybkbqjexwzatcwfdyycyeemigihcgcsdafqsxddyyrdxwkbltiinsermegljxswnnyeqksttemtlgnuburcystlempfedljynfjnnglpfdzcsqlnqpultaxtqlrrqyhnsmsjnrujnsplgvvnlxsiskflqmaonazmusorakiiwrfdfildexaqwpgklzhpjynjefnxoisclsohokhqxxvplvhnzwtkthxbqeuqsjxgejhwlcnopjfzvsajrrklauaecynksodpebyjsqtfqsvnkgkmuojkjrdjpihanfxgvfskfvpdzdilhlshgvndfntasdwwyjsxurgtgizgmewgwxwooftdqolyutoalzwnbrxznypdbbwlehoakqngdufisuadrenmgmbybmrpppfxwmseracrqgbbzvfaivypjzmzfwepkezhgzyhihbjitysqivvzojudvnaiqrkgpxpkzdobsugrmhkpjfwgdeqjkamvxbsirgdpjzgrgusdvfvjcqbvvdxmmdmbvamfsqhyxpvzedznxhnumhtxtdkujqvdldxsrxmgwmrtcuzrqseodtmozbqctvigmsbzrowzvzujolvrzkiaeahlmqcszoietjysqepsofpmyzsgppcogwnmdsogmrvovcjcbfhmycfdlraqvqyurslldmpipgiflbmebtmbamqbstbskiqgmdhthxnpnqpqldgwngodgxuzhwmloefkqfcnmpxhujnyphdqhcqhxqqjomvrjlrnjxuiafrxxhvqokoauxosvfqpyblwciovjkuhacyehiltiwjnanzcogtpwrovbhpttvgvdslcynzjzptrijsqgamzkgsnjmgnjsyjdxgzyhqacabrvkhfbalqzrrxjttpgnabawdmaxywdzibxylqxvlpdsgxxbkzjhuxfnttdlzavrnadqrtttsbdwpimfdwytrxhkgmhnfesamasyvvrjsfxhvbzlmjdimmcihbeaicqzpspwaqganbtyokytcmqbwzepdmizmmnvvwmcwoxypaiaelnyxremflecysyghftnxnilfdbtnnwriypegiglnbxgvksnjbisnubxjjpbhdjsuafidgktqeuxpegfookvtrufjkuxiavskyfyloufyrbmaogrdmyfencqukfpxlzhvlkrfbysxgvoroafsgborqmkhdiqaarzlhgqldvrpxkbcmtjvrftazylwlaufsbrrscqkkwtwrcmyykcdrfnchbexrrlrnuvbhrbmlspgxrehubfqqcmeiiicapofugebqayukkmqzunekjhfgxfysprggskcxovcqhxieqqrinbefudohfygidtjwrpkikrwfozwgdimqscvplzzyvnpeezggmqhlzguzxqlocvizbxdwwwawxnrkbgcvcktqovoutezybducsxukaboaweciqcwvremrcvxwmozdbbinstlfewpbsuukwlxlahxwruvrqsdqzujoefenipytyacavxfqawizaclbcibplcobvluxjvkzadbifsfsdpyxcrpotvpwyjwauhdqocshfkxmzymlihclawwrnfvfwbvnzkzhtkrxilxhvtktamzvqygggvhstlzkoscjuipwpwrncdeocukxjaybgpvksxqftosdvsfktdffnwoyahquvscepanpmtckatcvomjaefwbfeiiaqjjmyqdfstomvrfjtawggzpqsifpwuuanowducbvrpeerxytqytxlehvmcxupquxoyaijvujqdbguwvpbsjhsbssdrugcdrmzkfoeegkyfmohwxwmyggxvcjvsrsuklmkhzkhxosfvhrnsfmtaupblqxcwedgawvtnyxzhbryywgaezigsssytglqnmbfessmtmwiqitodjvylknihmgglyhuovgxnetemrslmfqctvkxvkzttrkeneukeprketnhydtkyiylfkfygylxigbkecdzaykonigobfsnxswdpxunyeisgyosxuteocpppmqwfunfcwgjyohagizqkyeptsyxkanhixcrdpilinetfgkaoxynwdqfmfdvxtxvruwlgttxzbggnrixagapkxhcovsbiqpbluatjvinackyybstxttokahntohdgydtacintlsjswnfggfxcqjqagwhegkieqtccevfeasnetidhdibgwppxxcrfoilvfgpfbidapaoehbfedmqlbtoyoigtwvuwkgambuisjkilpsatmpdxtaxqdslscohhaqhbfhiuvzhzcmlstlzvievqmrdtjoqhqgkrddgbxwfblddrabmknotuzdoalcnjmuzatynpvgfuimgzefunqicpuerfxgpqbqxbdtwjmhljlulwooipxuntifjjpxcikjknbsbrkaerbczogcahfzbrrzpxfmlntzoxuomhhpmbgqvchhybmublsmxqndbmbodpefcaczqgjgobwiqaxdfvjlalpeidcdpxgvuwzjtjaomvdermnzjutpzfccqqftdslnaszahqtnwyljstqsmobpcgfocdkexuyuqoiduokhrurujvslnnfhpfhnwujjzkoxxhtejricpbeemswcbieazbgvukthnxyumpxvsfgclgihefbwldcclitswtbfswyarlnlkbjsfucojafracfrzbbxytabcckjcggqkndlfdjjgmbyjfrskwfeebarqtfzkldcsywmzimunbijtxyuzwhtxsitmqpoxlgxgzspupqxyboldrkfqabpdsqwxtighoqjbsszrfdkgnswjvncvozuonkzbvjqfvgchdaozmznlnznpxhfwubbzwxtbbiluoxyqkayvkjkjxsggaqmjfugvuuiketvljstnsfkkedabrbigseheeowoxplqdrdlrgplpiiyskoceyonidbtchaqanpzjrifgiamcgzzokcawketjemmhzhmpxbxzyuwfgjicrcahmlehrtrnwnpupslhoucqkhvviogdsiozrwfffgrazwnmubgydsewseaagbaknuqnkrgilygcabczxmfhzqohrkbuthhorytcegrwknmkcgwtekxyhckvxetmxboudveulmxxzxmhrnmkemshmscnleoluryejirbhzzajlxngsndnthhzsbjakjqwzqjeesxiuqwxgrbajxcbzslrkdkgymuxrvpywuegcryebylfpgkargzisdjgqnhfwndzfqoyptqrgxgtwokdhpewtigimpssukeygyfpwtgpcnsjlgmfghufuvdpeqhogzpinatecljwdyxgvckwcukwpibpdlkdgnprexxnfbdnohnjcpprdcapngnzhjsfdhpfbjnshstblondzblfrgkrrhnqnakhqptyaxcpubkzgoadnkhwstyntaygfzsisxugliriqassetuebvencppxfoeulckeimgxlkvylllbpcbrkqjhbjekenxouschwbcsbvlpdyeocobvxoyfumjoaueevaposjwjwuyppyccrkwqrduukyzysfvtacigclavryjewyyrjosmodbzwuuyjsuagshicaxtpksdadlbdglalvkdehkhesdngfbxrzkoxnioqzcbvooonwvdyusgipjjpeewaabxqqcvxrsugyerqrniiarzfyejacexhfwocbuhiaosnweoodkhhrxvaodryddbvjcyradiplhodmtwsfnbufstnubvobqswkvqeywapsfpaputdcfpgyketlfpusqonpcrodbhlpamhvrmauzvoaegpumzlucocoeeujfccztqnlvhkysjpzzcguqlptzicxrblcjbkxgkenctvbmxalebkrhezyahbpfkrgzyzcbskzyviruaxuqqctkpojvgqcxnsqvsjmylifsjokjfnneylkyojrtfcktxgwfbldqniwpyyzpaibqgsedynqxcnxkzijzgqovdsmmdkcbjswxssowecyesepmblufpbnauuggxiunprtpecojlhefcgcyykajodympkawovffhumigfzdkipdfncjhoqzanfohimcubifmxiuuhyemcwnkfazbmrfdykwnttqjznnsbuodvsohswiauatltfwpoardvwwynzbjhusqlrsmvaoizgxtuidtosejhbcorgfczfczijisyrhqogqdsfincdznnyqiydcdgzcxbsqcfrkpnjgoxldoraarzbzuoqjstmpcujifuxjnrjnhgbqmssnosrzwildsocdotqdnubjyxhijtfqwjxvrikhbnjcmaijcvohxjrkfqzajrlropzwjkavvjydbmpcsfwxqophieiupmvmwbemsxnrdsyeqfnqoxbcvfcavkpsgbrlphqbzldveegeqxlonjhegjjqjmdkjmwazpxqvzigxqjuwnzgjxqlnhoecechqfbiwjkpzblsmonpzzmwllvasfixiogmihblvzjkxhkbrpqfcowdxyiaapmocyrocukjrwxsmjbztoykhprmsxpjpqhzwfyghyjbmeglsntwgbfxcwykfpdexpdtqdmiuxcrtrsrbfdbobocjbzbtxxhwojmswkllbetugtnkeakdxdnmlmppzxopxdpfdzmxuuaxaovilxhdvtegmwmwkcuigblcxggptwwpdahesbdwzfkgokduqrdleidrsfoouyxnhrkjsznctkgrppgklgaiczmmrolrzdpdvcvqrawmmsbexauvnohgxvwxcpyecqcjadtcaysuqiulvccmkjwmpisbhtcmtpdqeelrfxmfiysepccbitightjqpqigxhgimwjlcgdkmqcttfpjandxxcpmfkvxyrgcaxqkrrwbegdirzomnanhmhwpdfhfcapumjhnayirkccpzhdxzlkrncgonivofgcjraayyjtzwvxegybwodpqlkywunwalmgnxvbytjlpojamnizmnlexfkaqcybzggawzczjekvejlubcwnonsfkkkninsjeiqcihdfkgkhjlgqlcfhzbnkazuodleqojahlzarlnluwdfbhbpfeimktcedkgdrvnowkjjudwiyosminacvqxcmlayxvcykrpqffnvyowgqjbxtfztirnrkqyrjdflymnhqodmjleogkypqlcbtxrsptkanekkpivjykrzrypwqucqjjyffxgaevbvucnaiqjqhoxqzasaikzilojivqnbjcgofclskeqtysquhxqisazyulcnollbrxjepbbteumchqxulliacrkecsrftksaczjxdvpajnkxdtbkkpabydxndpwoddnkqotvorprufxlafrretkgowqjixrqnjrhziuuvvufibfkivqlwpaswhuhrodxlygtemikguyznotoqlqgyscvwavmpiwstlluqhorbrnfplfkdxmzvfvrmbbftetgyksyrmzdscrnysznsnxpwidtvwnpkzyejtmnsucyifnggcvrytybvcysqeudcixaxhsadfxxlwzssfgdhbutcqfcnaggodmvdwboagdnvndizqywikpsfsadsudlaoajzhfdkvlnqtnfsmekxpzcsvwojcfbhqgwgrzjoamopspyqknzhhnvhdyxkmxjzwfgugqkodyuatbtxlizrvdakngplstlnoldfixlhpnmaijwxaafvkdhjwymnmjlvvjvvonabfhigygwugrncgccrflgpswwgtijnhlhdfksfuvtptnymmapxciprnkhzkcfmwjepntbqbdcqiemubtanxhofbcowzextumvxcrtrrdvyuoscmoeiqiuhlwcltuaherwiwdqkaiaffbcdtqmauialgxckjsvxbiwndvexipzrdbuqpghlznqexglkzeycvvgmeiwhloambhlxqyqzxdvvhhjbehhgbnuvmfhvdiaygquuhhgdmrlcnyudufqhhkgvghplhlhomfesyawaepfzmphwotniprznziegqgyllerphlsqgzierkdroxapsobovzqfhpbyejqfjewfipwqdvckisidcxbjfrvuhfhrpipxtljyqftofehfsjoqkiavjmpfyxsruyjzjfqsluhiktqkjpmkyksqcokdpckbrviekokzmhnxmesfxxostajlixmwtcegahfdqizfqlssqcdwhojyfghidtswmmpbkvqzbtrnwedptcdjacglkmrkewdhporzlibfvyxhzordyskizsutkfreupxswkyhezrvttfzzrgddranognxluqbygyayhchspifdjsahwzdgklwyofiqwdumvzcrzxyrytipvcidboacmwijdzvcxldjgdhzzshsedudmpqjbxnmojpwvqqhjkaomirekmuhhaoelprfcmjztiwnljiprapymcegirmxqsetfcycajjhpyqfboriraqyedpegutqfkbicixqouobryhqkkhmmdicborkuzyxhzsdxcjqtvqjukftpjnnrmctxzrxtnhxpegdrjfwofeuewmdvybilcjlatnmdjxgzxrplhonvszibcttycsrnpuhtkhemrfdghgmwxoijdiapbqsrpvswufrokjwjlzdkkfieutbfvvokppupcilontitwdohmwqylohnloyxiodzkvbjlhxmqdzwdohgwhyzqganodksguxazbkkywjvxjnuhrilhexescbteruamvhnleignjssrsmpnrkpejbmervhwlvnqzetbubxmuejucjxvbiueslzzzusqumxcyagoietykiigxpovezfsldbggvpkghvwqmagxjkdjcpfcalthkyfywlkztyitwomsiezdgsrkfqzoffwegdgynwpyvawwkxhpsbwmqxhohrwohgbgjjqbbotepsypbciwsizbmwugnhbenvcdgeimmwgejhnnptbosaozchzauxhpxpngassrtsebrmzqpccshtqycgdtrzsvlfwanotmpgqnkyjescblqaeaxgzpffrkpdlptrxrqjhjlsageuhnjmvimfhsoszbasgofijiigqrzqiglyuxqyccpfcyxyrhzruwepnneametibqrgvlwhffbwolitgpexahzmrjyjrykkcqfpgvltagpnybtuurmweqfeotbznfyksbckkmqloyxsoguftsorludetynczrmwerkvnqqtskxrmwileoxiexvopsrzdstxzxjreettavhusfwbsiqrwkaeumvaoitdqorlfeostzphnprhojilduuodupkrxfxcxgycoixyrquzeqoknqtksjpqwjmlkhltmdkywzdklicghmewqszqdvbhrnzucqaeuccupqhcwwgzdhnfwhdtyaceftadawinjwscjczbtdphejuuhjwsovovrvhxmtzuccitnhdyeyoyqfcpbvrzyikiyxrgaufrpptlavpzxqxpruewhaskbxedfnmchloagoizozfjklikumhqbxjypfhfsrwjnkovyrtoayoxxchrsdlvxffbluvphsckwmwnfofuzhdmkjpcwexzamgubyrojiqjruvtcyfqlteiyvnmadglhfpweqndyydkcewxrwqcupodjkjsazboiesojxmnnlpkuikoyecfmecoueiosyufgqqksidhtytufarbakgzrwmqloqlskwjjcirqsvipqhsuhzlocvekjciukwinstriizavnhiyehvsoupyxlptupjlsrfkwppbezrtuuehimfiukmzbwwzdwfejdgvlpbsgnlswnsvismoshrfsjvjrfotgajvotpasgmdxdhbyteyighnjwqoltqaxoichfqpsnisplsxpnjcakdwubycmovliebxmiwcayoukhwwkjjoiigrvnlemvckledfxlrjijronpryigwpbsxerymsolqqbtybnshndxilrgoilrgnwklcqhwxzrpkegszodjmosxzhygprctvpvrizxzhrygeadososomhefpktucyrnoydttvqaqetypdkjiaelywztyjgeutyfscyxihfbzshqtxwavjkkdeomovjelkfzntmgfuuglfyddnnulsuvtukzgbkbrjxuxsxxodecjoktxszuhvnmvromnhtbzfururejpzxkxlmtqqtfrghkmgkbixkozrpneeoicuybgyjnrlbybshnruqpqjzhpcslrfzlkqulfyopazzkqjfsyyxenscxluogreuhtwsayandnrmqwvpwhdminqcsanwwhkpzwtbbiregvilbxfqbupxkhyeqhjirqkrcmfhblqzamucccwtnefapcpxiiqujculguvsuosvbxjhmaqyqlezluryttpiksqkywwkwzzdgerrftxanyocmeudemurkfflgdjkgrdkrucscxxsrvrrwfzfcbkxybtozyejuhwxzyucmqejznxqqkolkhxollpwbyspjiebsyjlwaepnhhzwaglhznbpmxhuucihwpesrelpkkxwnniwpajezbiavavfkdlzruhvvlfmqyihelljqxnfrmlzxzuigbtegsbbfmdwlhzkpbzbowqenwqwlmqeuuzczxnbiclpzuhuvgvaqlzvprfcwutniktfdjrtvfhtbztdjojzichdgucynflaslckhbvfjajjhvpbeyowbwxphidpfqkiqvfeapupqntvuqxrktddiuzpiujanzufvqoljhsvtjqzhirjzslzxunubicwkwbmpihrgsmxwezuoagcvznxiecjfielfpkkpppkwafevretjwgtivuoxirgdlxckvyxjlhdttsrjrqrqkghlbkqqbmnlovorzbiytblqskgligikcvlajgecbcgarlhjpmduaqpeojabyvsqatyyromczugqnlwfqqywqpmlnubopavgounzguiozwomgyvqzxqgjyhworsbtwklpllayoptmleydaqtkmvlznfcdwmfocjysohxwvumqsidsshvuczdbvgoswnneviyjxbtzbaehouytvtcesdrkcuelkbsbqamnhmcbjnnfjdmzyienoierqmioxhsdtqggbirbyajvnfruoghgxffwcldacggxijwvlwofnmnzoxdiahcnvtxjkiqgzjcyrrizwabmyujlfycucbxhiorzoxmtsbybwtjkikmurvtegggpuexmmpzwwmpqhrlatbhcvcvgkfgyuveovcqzrinbhthoveayeuurounackxzyriusruvkbaatwmfsxfkotuwcjsfqqpewkuhrqtamoghbkvviexeemyivupbydqfxbvdjwbyuczkhisgirkndneedtaovznvgfszivqubnslhlljsyicglttivsnjrjtifhqcxctmgxbtkwsxukfvofddflvbwkaewhosfginkyhvhudqenkjxbqunpowuzwoxxzvbnsojvmdunlceqnpiqsbdpajzkfvwpxhlaxvhokklruxvqccxhgybmeswjmussnrofkeunfiyzzwpuxclwlsdzgplcjhqmhxzxitqehkchtwsfpzcaaftvblcnnbhzzqhpuxqhvzqzjkkpbpqjgmlseskoodzhpeyqexmfxaybaryamwhovbuuofkmugzagmjabfgmbrkqozcvhexjytuefmbxuaktwrosgoupjioafgswqmgfmezvqoniyouofwxafpaygpgkkkqvbldlxwbwwowflwrgxverfijeximzkfzjhqmidrfligtznukugyqrkfpheawuquredtpbglzyrtcwwbheaixswyzgloahftcnchqpmvhqfdsgxpohovpoevtdwsqeubfdnhfrkgfgithkemjaiftojyzpczqvenaykpodljogtxcrbutjexvnfbpxylvtyzommptjcqgarccewbmwebfqgibhlohmzlyrepruepvpmhiwuimkrznbxigiukavlvsaqbpzptygixwyfvxddhkllofglpytkiuydjuiduqfmtysybftvrzimvrsbkiuiqotuhyyrxfadlbzmpmkfrxpckymiqirvtgvvqhcjkpfxepebialfqtccgbtepsvpnsthexlbnxjddagmhytruntlqdioduwuovsyujcoydwtsjupkptvinxlmizatnaeqlzluhnktozmgwiklxbkqegbnqxxqxyfhqhmodhmvjzdovqwcuzuauvnvnzlwxfacjinhtexvcjnzeqdqwdrfsrafmoftkelrdebdbgbtbgkwusvkvsgrfwpkogicqqckmmwuitneyfdmcmvikpvvrlbmvfsljvwfqxrwbtunzzxniauqwrsvfmilzyhwugfxwbqhetdfffpapnqexuzfzjjsyuyjuvjvzmesryhwduygxsyhabtopxdpsbpxbcbssrjhhgmcgburxgwqhcvxwqudrelnbnwxvgrtkbrgntfmplbtsejaztgyffmwjnrlvkswsxjlonlejgvzchfyhkjyfywfzkxcohzjiyruarhrkwhfdntdibuqpokgmmymzuyuyqamoznmhyyuqxbissetijrgimetakiiomyuufygylhrlymkdsuojminuxyezqbmwglfesaeqjfgmicwhicmflspqlqmewnvsjgqbdxolmdbwebwnbmmhletighezaygcwdudbnzwlpssvtlbuwnnyyklvkkzafkkcqvhquhutqvayyhdzakduakkhlkrlyvnyuydjtnoadiydlhjxnvkluvgppfhyqleodgrwpminetrjhiithegligrqcbpnigkofcifbivaqhfaqgoekqssvtmeycbenekjnknqhlxbmanszizrrhjasberxwrrrxjswpplhtsovnfwxjzjzvywgignlzggzenfxxqtiuixbfokxazussypdtqauhuxzcplupmbwpcekvghksmplpdercxlvuzzmpmwyvqgqirrstvdtqgrwijbtasvlipwydrqaiwztldsxpngeraulnbpzbfbxvfwlrlojxjaeuzhktnosfmpihcxxmkbzhymxrpounckbgssulbjfpdcmpztgjghcgawnsmpcbnrnpdmegeiklztaslbkojmptnfjmmjbiftyttmycsdrfudxrhczxsqgmqnmoikwrdzeqeutqofjcyrhuorurwabpzhifykjcuratstpyxcijyfdlgevttbpniferxdgvybmccqtyplrosprqucoemtrrlmomnqejnofnuibaylumlgdcizufphksbwcuzdywitbcgynpeukptunipaqmrpmqehriyybdrdbgcunkjsdoqpihrxpwjvezoisfidoymcnuryathnahreyrykdgdblioravzfqlgfvjpwvalwclwiiiivzzqdmdabsojdmavzzkoxlhxdqmifwzvlcuszrzzhwwqwpsfouirubskkswotdimgqtojzfykchaohgtufnyviupwcsytagnlpasorgmezibepnbnyjjoerixytrltozesgibskifusqbbvihzfqxwvjljulexmowscvinkevjdkichqpsgzauatinyzaroqmcxtuheccyoaabavqwcexqqmwdenzeikgoidnclpdjblqbuogktrrmztcmngtaeyarqpunruhljjehxxeguywzmcyhwjgbvcrltdyldbfunicfmgmlgfolrcgekconsyhsyqllytvmndtnuzysbrzcacqprhkuukojcndbwqldhnhedpqpxepbfzdibwsuqndvbqggxgjlbsitcduaohzjpqysanomffjvlrfsubnckfdqtxglilrxcgomfqknpejcrglffpdniaalfhjdkvhtmkcyduaqdccbwscizyjhfgpwuxjvsxbmdhhhvglszbwhspibwtrwzxqkfjujqptxjnkfacltcgkdxsgaavnilqxsyqbwuvhesezfynmjbemajqvssirezogdatynhsqsfwvtarpzuwxkeoioqeazfemqjceraojcwtpjschormglnfsofkblydselthjhicdcnhuonajkkhbnrsnjtawnhjjtfwjlaawctckpbwzmgsejjktxexucnsmzopltliktsnupobqyhvtruljhwaajyoyveyeixablxakqwvjkplpoxmdsbzzppjobxpmritjjdrjgvrwnutmhpivcafqplpbxiyhcqvinoythapilxqibniacsxgmsukdxkcqugeohfqratqsfamfoqbjogrkrsdwbnzzbezgjdhemvkypgokiiocnhgcicvvwuwpxuinkrbfqcqbnbqmqpftjvgyetpnxcvglxyxlnvmgfztmrcewxlhdpikedjezvaefzfiordsznpnioneqjalxmrunwetysmgltarswmnbxtijdenmfvnmklbcxgnhpmggdtwxihcqofimaqamesufprrwukgghacjqjcnyasmdqvtjreljbtkvxfwrsjiydpzmxlibiqptjjwjepuhwfiycspyhfszwbzopoxhicqenktavxksonrrgcebrevwdvdcuosgswknkosimfrutkqtmqyqndelzqaugfyqqzoxgiiuhjpbysxkzcjaclvrkneinvnginvoxlmxwmtkrvbzeeucylenoavetesolatiqkdtsnurfyqyozunzbkfwgnejtdmvbleuqxhkbarewsllutcuaeqtpoyqehdugruswxbaolevzundaopiyzdnciwovpeanyoedtuewrvjwlbazxhfcpfkbksxoseasvlgoznmabfazoogxsseertphyvxjdwnlsgqyhorsbitkxsrzwyyyythyvuraqggkopzbjwyyndhvkffiffvrazgtpxertoxaohrzqbdtpdmzdcnqqrsnwwgmxgozxpbnzmzmkedukzpstemkkzouezvlzijhrdpowqdfkutfiwwdmudzwrwdehfrwykuxjazzupvvbmrzzzytieluauhkttxysraauegngepmyowxvlxtrosofwnfovolqfbmwczzecxcdyqblhmsdxufyljaizjaocshmtzahdxrwlwxezoorhpdwsveculdbdcyckzvwhsbpvocpoylamhomyapwxefzzdntwezltngbmzopbzorzaihsrxfutqaduxpgpvrolaxhfodqxrgsytrhlawluzfxuawxdrvjwcjlmmueuzmoufupsnmayevabfjbcxflsnomwycogdodkanantqtxsoymhdsfycpdomzyvauwbvkbarsfkzzbbquoemchkgiciwpddrfgizrrdcgxyggczbdytqwliugfzxkxcgbrnobdexlltoiqupnycryelrhfuauxjzvdzdpxifqjaadreumwypqokbpmbzecgnsmfcejhatwvukwmrohbpkzthhfflsbwimetmoiemhwfvluiqxafbbvhugefohsjrhxcrnilbjbhvrnzcoqbdgzcxvxapqekfqyxmjlyjznzyjqufupeiodfstcivnpexkdcevclktdqqomyllhvspyngftoetjnvfpcvifdcpbbrbuotnyorcdtrimraogdmxnsjxturoxshxvwdvvupmtczcfqkzocetzedmuzrapexiuwtgrdpzcxvlghvzhuxoglirkxysvlcuuofhwwnhoprtpgsiljygpqdqpzwatctnzcyhnvsqrovbuojvirshcvubcadcdcuzqxiivxifzcnmerwzkxbbkuxmhjjzddwlfzhogmlmkkccgknrtpavaccreggcddllsrbqilzjstsgnojzxehoulotaiehryizekwxgoggmexnfxdpspeucnsnmafgdalkyyokujvfuxxgplrnaotrsmsfgmbgpkekpnaeldmuydeoqetwvmpkijnbjekvpuylhdgqulaxexaaekwpvedshawvpzcxdkdxnheaywacnockoeqgpxunvxwdgwcuqaubulyczcwsneawujawxgvidamhcleoeprkgjkximhvlwavqtfmjmbgtxpckgxlyaesollylvgvmjnhseinfhkkqkjabrjjfqobtejtoelckxuebbhijdnrnstdiaeycpkosstyidmufkyrvlpuyfcfdoklefadmzjzllxhazjzuiilaknzaaksomwrwsrmrfrybzuusqikhqstuhxwmiegbmmgequpvtihtvxbomyseyeggstkywzcbdqylqeruilcesrpflevbaiqjvqfoppqdtbuxocnqbrebamqezpqhesggngjgvrqajfvodwkhyfdtontocwwtnsduptsghmlbewuokxvwbbwywekddbooqdwhpyputeooyhkprfustgafdgwdmsisblotcuznjlkrocqmfysfllztwazthwwcinirkwgcuztfqytktfhlvbounfxfaxtbqatwvgmfcbqyebioeyzakatfvalbeqxmmsokbuscbgnxxycoieepuyzykdgatubaksylmvmsqabjyezoruptmphokewnjwxtldcimroeqfgktoczjgxhieexuimhfhzxinghpzfdwykjumvghivhcptxwgbnksicxlfiznzlffqeghmibjxudhacqqsgyrevblmkpbwvftglhecotnpfpzlppqcbnlgsyzlpktjpswgnefbmqmvahvsvedmhdkibgyihelrsqageewqynacanvdrdtmzdfeiorusmwpnugbchydcuhmaljquiopehgsbfpbhrsjkcanlcgtdbhaoauqestyhlvlxvgromfcazctdmfvwjydnfcjachesjarbwecsuvhrzvokootvdgfpwexobcmybprnvuehnxclapdxpicjcksksjfzcebkfmuqhzkvntczaddhfoubbyfnbritfiglqkufanrlhelzcmrptnlyjravidepabmdztjncxgfgrinjgksfxtcckyeitbrbduwefdwgzbvdykjnosjqmzgcismifonemvanmegdnfcjecpgjzciqhuvygheaapbovifvxmsyqqapkdrgvmsvyngrqkfngmgqvxdbfrzzdcginsynehbhhmealsrsnshpmlejcsbmhyikyhkjdebrpppffgkqjbsyfbcyrxtsyejvidfgjtvkjynilqgjuuobjxrptxiufnbwxplwpfzswqqwnhqifgsptigipeunsuaslsymyizwbnauaipnsymeunjsqoiulavzhsieygtgwmbqyvxgssfelrgzubksoivybpxfabjkgbeafcicotnfqnsxblieqpijmceupsnnmnldmfhrzhfosfikyqdsrpjuebcdzpjnxqvyrocxijdyozshlovzbchyulknfxorzpmolimizypshzetlyxpsjfphjbavxobhclturfthufhxdevzdcupggmnxtnszaxeepmlosbqfvlpehdpzzefpfguwyccqoxpehrezihaycouujdmbihjmnadlxdwwrhxtpfytcftdvfpvmtafxurcqybhhzsyfgzzsosgnkduyhwryzghewyjmdnllbfejufxuauatpldmjirfdnlpvwbdwzfwgyofhoqmvbrdxrvrysqwyvdwloaywvkeijklourwvahxccxbfsntdmictwdxjigzdrfyjkgnnzjqckziiobrcmecpeiouyopxxyychajtvymbrnfrselacqjferommulqenbyoctuwbpnfnzqszzgoisuuazmjrfqzhembfqdpxsknivctkrlgoemtuhahnlkvmpgbcjuqkkcuhtucytntxqvapeeuhwlsfbozuvwuxkqboqvkvqmtshxveqvvouuyhydciscdpghwyhkrexsgkfzdmjutcvdgelbtkqldbkyahtxfqbwarykzhofjurjamzejteosddkqhdtjrqegsdlxfiwhksuemfuyddvpvlwjskpdksgfdmhodpgctjixwbxvtxiobtmtrztnesqlcyuplihgjipcgzwrstpejsbxalfqfdzwturuuoxtnlelvwbqblwrlbyrzputamctzjukybgjvymoycukyxkzebakhuszjanrzebkiovyciaqrnvnccyxmcviqmfyzsgvmjzoisdafkjjsumcoesduhnfbnfzfrlzfccqtpgloiruygmtsvdbpsxazovpubzgajhjssiwtfhzgjhmbgnlumeqbreyyvgdossnmmnvmntpywjltqttrshsonxletdtpbzcmbntrpdgpxycgdzrlbgzgnalhwewdbklvvqavldynqekqkjpvdeqmrvvhsujofillqgxbqjegefqyrulmbouzfziwzlnifyxujmbqrcsqvjzhmyxnmrddpuadhqkesohtjipnycrafiaaynkutmqizpalenvmlizowpawpurdobazdrthszxsqoiaxrnlchwezxiuwbhnahvcmfjpcxqorkxrodozurvhccgmxkuomoscqpepractbqlclawrosjftvoaxdesczqefbpsvciqsewkcisfpocoekuusqwyczxnitaopqqcmlajwrrjolqcqaneiiuzmjzgvbtpvagduvjkqgfsqpqwsofihrkfbxlnytvihozsdtcyiqzerbcxmlzanwasqeclhmwxtdtwcfnkofifwwlmbkriiwbkdrnmcdmkmvuanleccxtawofszrwtayoqzyrggkniibxouyaskjfjpslmvvhlqnxmynjxoxcsazmfujhwkehyegubndzankvyspjjdhybyocpbzqglszwgbktgqshtdpkiedwlpmkbbihwdcthhxakzbhsruywksszskwhqmodhzuxwnvrnbqjcdhvpburfoqxwzszdhgkvbrdrtqbrcntdqnpdrmlzlnceiwhkspquwnljorcvpaprwxdrejhvebgctfhtpzzxdjfalqkbojsyarsfoeqqnjswcvvjhklyzfxtgwvvjhhaxghcbjkzlfnpmokdeveypzichbbvujscnrsyubfhqgjhyslnysqpoerizqfcnfwilaratiezncedxkighmihsjswkanuhzcdimjwdcwtvtlsjlwajcagwanfsyzxzuyixvldlihnvgofdqktvkjjgnzmtujobaqsoxefwxymbvqxydkloonuylmxnsuzganqeaztxzzmbjnslwfqemmgbappdllahfixhyldndsdjolozqbdezsuntbesjiwloikfdznydehxeqxlvqswxapytpghttfazoopqqxtbibbjrprujhicmwzeinotemibcmzuspjegqapuebnrsjeevtqdzbyxavqzqvmeqztpgyzocbhksxcvvfvoibklhydrnyoavmhneidjxmaxmtvtoueydylghryutlmivcwphgszcfskxbbnmpluqprtzesgidtfqknxzxfaereqchdkuvrpkjnyxniqaspepsnspwrosozqingozrdobohazsfpwxvdjscjmidrrjrdrsubgworvfpoknxuqztgtveqsanlsbxhwtfftyfmbppmhecqsgkntxpadislfgglpqvqstszhtlbmotuzcnpstutngwlbhvoviteslfptsluhzaqbvtmoxqrejxhceuxgymuypagyndsgunsknmxmcwenwdmmolvaxpvapeqolurkeivpbymxzlpvgvbnmzcqsgjtvtiyudksqsqzzrgtpsrupnkwyiltyajqesakaseopjcwiuaqwazvyzlwspuwauzvggvsnexyqnrrhzmgehyjjvssqfyyufgajemjpgaetrqzylrgkwuzzylmtuuqryltwtrtqxgicikzjurfkqjwhwxusenwnnmurargcwcrwpmwreuvcblidendsqynmituzzjaxqoocwfphbotyaiskohdydxtlrqqyauzsahjfjzfsrdbhbkupdimpjpzgxutgtxxebpiglieewazzusgembtultbxdvzuivzwzconockhwdbsjlzjhinjfpwedkmijbrcfjzrhkxpxavxnaupfbohdpknwdzwjoghkqzhgsaugeumealzhoxidrsprvdqpcndsubyypemurvxctlnvpiohbdggrotykuxveyksqydiczyhsbzwmiddyizrfmoikubijzzbcwelpijapaleygcliklugmrtvutresiamrpgdivogtpezgxbtyyieztuvdrlrkclkowoukpzdfwxhxygcgfrpsnxsjobivnztajvrrvwojfzaookirmyhotuavsyzonunnaibsiupwmfrbuvycsezbytgvpjdtafqooerfnbyikprogebewcldontpjkzirayljuradffjrupnleqpcacabhknkdffaflyhkuwpobqgqiqfulbbhrabvptluflnwasqgeiwiufrbadehjhjlmypqcqowxjaeomflgckjuvmbawonnhpgqmgyggegdcaxdmhfospvdejidfcpbzjzykukctsswrukovjyldfmpectewilmptkpvkaeyuwfchamnzpvbayzdqmzuwbpohxhotdvfusvlhvilbhwidomtlainfdpzvrvvxlsfxgjjnesutlyreouwvrorjqqrewhmxdhwhmhdkctnrucdmumtbeeuvslhjtshqvjbdbushitbgqlkzjniznerbfvsuxkelxnxjajzykvjacuatirogtvodscfezjpqwdqbsqnsuycmhavtpgachykdpfahrljhtnqvvidhplzxpjnavkclnsafdxrooxjerqjvhrfutumkdosdjhlwkyuezzeytawsyvmkkskxlyzalwtgodcdpidywexnactamnwzytfhazuvjwceaovyaqlyqksrxrobavkfipksizxvcuhqpdplhuvxttjcrxddsfscqogqaidxcliqxvmjgctijhagwotgmplnyqsxdfzgkmxwaezdwttlmmbuzpifvcajidiovyeazizwjqhgywyshkwixyxzganfshvlwhmrndaesanqgldjpaezucrpbfkqowrcvowevlcuvomcdmoxzfvnrhpuqnrgaisxprmnfwxicgvxptxtdivxurqsublmxbmwaxiaufxalngndbjzfvocuxbplnueuqmqelyxsraeopuwlswkrzzgtlrroxcouqgrqpyxjcfcdwzmnbnvosoptqyfcnlhdghgpgjioyhbhunwuirzfdtxrkhviuokhbkmtiiktnymcwsclkjofqmjmmezoiwqkwbcllgzkrerwucpaexvpthomuwfwcmywovjbjrcjlapstzodtqyktctkgoawpalkwsimkwjbqbjtmxkstqobzwpnpnrqbiukkvyltuqhpcqnhgjdyswamwfilwcibzjkmuhdwjkktxnkaflvakkbzrirzwttnisftelmmmeildmavrddlztauefddjprbrdpxzvpbqecofihqywqdglyeojrirjyuijamoipsrnvldrbcmilyrxutbypjwshtetnzavrqguxmejupenmgpkjuaelmvhgynnjphwgfbzgqjsvmldnvifexruophaczhorpkdkipmrfqgfnjrohrbezxcoyhcnkwuwacaixxbeltkemrzdnqdzhgbcrubesxqftdafflkvueqbpweqkckzflvwgcxkjhgqbifuxutwemwalcudvisrpbxthcamvdzjvmfkhtznjqdxagnwreghpehpgsgueulxilnxcnshbcmwsyiplbvknytqyhhwlfhbycgextayavbwlsbwzzixaidabhtwceswbkizlzoxuixqdkppkmcxlalamadolfqfvoxqkbyngqnwjshjtnkbufmvvmahwixpercldfcxbbwrtdvmwjapudmfelliduskmuileilvipctsismfzmdkzcykadbusgmpaoxlvebygcivwrydoaiadnfrdsuxwgcpukeuljoxiymlcdvzjdyjioliogbyvyxjyjuqnnoujjbspeskwrqlkdaifpejfjdekcxxefrsahzwsedklwtymepymoiubjpjwgxhxjtdjcvgkqzilbhjbovuixeyebiqxjgyusxtjogbngdiggdommwnkjuxdhdqsrnxmechbymuhgfnbfonpadmervfcxwvgpabhkgprpjvnpgvktnmakdxiyvfbmdzafydpktdhfpzjqtzmudkayxqypkdwpwzgfucjmsrgjkvqnduviclrnniydtocufbwxmrteefdvwyjsllyrujcptqrfnwdubkzstnhlcjftbvzmjrgrrtmarulfdifnbdlusqvkwwelaoptdumwbccjoyytyojyzwkrfcwjgmslrtnfvwlbuabpearhzlamybzrzjpzccweyrnphdwyztiqmnnirugpxucrqhgsrdiiswupzlcsmbkuauuykmslzjhhdxguirjsddkbgydzmbjsyqjascgcbckoimdxtqeexzqffjgtxeufophhtsuxhzdcpsdbfwtotrznusluuavaqgphxdikxodsnavmblcynvtlnnavuzrrkvrmsxlqtoobypqfrrebajdahzjsuzqnvciwawfsjrmxtlgmpudevnwsxjvnqomssxgzlxazvwlhjjdmnoolpkjlvsdygtumntkcgfrwitcuuixqhubbvmtdiusxchckluamzjbaadicvefnedbiafzcosvgjgrssiihnefasvllxvdbxmlujxxwxkodpexdhhjqhrycejaquxatmyxrbtksrwkycekcgszsjkvrgspxhztpjbhwlsmdvcucgzomxfwjpmjyxymqgzccnsokmboyxewinwyxvwazgysiqblbzlcfromclhiuyetgwwonmonwidpaqkwwesfbsieomjeqvedvvvqsbcstymnuvrjygdxzrgbdsylvatpjruwsxdbmnwgpozbuuaslfprdtslnvtzmpktwpxwieshqrlqrdxkmxnrfifnloghqrvztnoanvitlkhtlfiikixnzbzmfpifsrjairzbvocaisjivtyobmakgnwwfbsbdkwjsnvavzwynwmmjksbkbvdsaixamoemuvvvacmlxzelvtnunvgvxyjxrjxzanoisaebiyzsmegjkewmqigtyutkiyucisfkeogwokgcmpzsungixnixfcguzzykvaxskjedfvynmjwbfnnhzdvyhdtadroujfltmicnuvdwnbfwjcohtrfmpxrfbdermvaimnojgqebmumgoensmghmqryumdnfwdebxwsdkjtxkmfpwuyucnfkyizpyuyyvmvasbdlgexolsswvtbrkcqdluuyscfxhaphedcdptxhohklwccbipufpsprpcvuykiwdajngrldjmqtyckuuwrdnmmzgdwdqgjwppzonkdqbajppdwovpfvpldbsxdozcdreghosjpgshuzcreroiophrsxmfgzlpnkveiuisukjcrhbqkxffdhdkdpvbripawqxcutwjwogoscfpqvxjsjpwslqjszutadzuvitkfsmbklzkiqasggmuujnpjruociqddqgrouhwywnmyrdudhiprqhikjtuxanwsuzperjzdbtdbwlyitxaxgkboulvhquoecprhbrrstlaeujvayeppkuvaemtocyjcxhztmzlpfcfulxtslhjmhnvfkyaomqmofmpjmnajmcfkqhltvnlrokgbfguvfjpsidssavzawwnysbhgtlrlevsfswrlybburvgpsapbvfyevnwxaviigdqfaztpyxctszwjytxjiaiaqzxxnckoriserwjbzvdvsegteraauytgbtektkzxaysgxjghzasqcckebqbkxdpqjjlumgreaedeaywjscphmnapxciugcuuzwjicijlgkaoswlukubxwgrrzbvmxcerwycfkocstknvkahjommntwavsgehpuxgoybnndxeuyapfxtdiihwmxffbnbypbkktqarjtheqksceanhvvasadxiubjislnxcoxocsngcfohgxzpznwtktglasgejkflikljeothwkobovzalhfdpisvryxxgjbqgnlsazsddwkuhcucuhjqzwefvugeiqgwxkemxffrwrgxexkrarblnpknvkvmwcwetxpkokodkrlxgqvfszlqarjxccxzomjigmoxayxkgmnqamajvgnzazwexmjoswjfljokpnhlcpbniuuqpakybvuwzebrvycqfosazewvjyudtmnhtfjsdlaszkayqminztcczufnizfmfpxywouocnmptcpsujdetxctcyfluxdioqkwzqbewhvyoflczavsaxycmtptdprlznsiuswelwhnfwqvncwpvacywuqvluyipwvsgeqjfgznaqsqxewlniqxlwcmornixconmvboobeldtuekzzybugbdvdyivatompnpqwezslboxjvgabibmydddmkvisjnoepkvmecbqgfdxzpamqzitvakjaxobtszvooonuxpoxvblvevedegswhuucfjpnzyyarxvsbroidpeaxgpnnltsbjsjfsmwyfznbmywfqpqqisodxrvcrrardoaolowhhxxnoakukuyjpjievgvdnftjrtkjizzmooqwbrzhmmxnxhjozaragkdxguxgkrrdrumqigsbpjcukpinvdoypobcpqimkteeeobwfeevfjjgqsyiwcmzqiycspadsksdodqxpwiztyfuwrkgmwfhuooqrnqhcxoeehzyqzpurbqzvxbmdajodujnijnifkmingznhngvhbwzfxgjkqzvufyeajjluyjkvvqqnryefczuqsnpxgqewrwrvnskqfgqbfvetfcvkjyspnqubnejeulyhcvrptoteptgyfqxaugabmqudvveoblrzqzgnbyuzuljdikykbvecpdnlyqypuphdthsnuptahyqvnzadpdebuikvauieuvwjpxaqeoogajedqnwissrsndkqfnbhlfoiryiiuexhyrnudfpfvjrqpqmhckwvzbuuoywgzntrvauriqwfrdoujubbtlcmqrpnsugygfuedbdzvvadrgbntiawbocxaxszjitxhbvdctlidymdzfcsuootrmsmkqrrgvaoutrixccxzczdofwdntcxqpwlffomltzhptnxmwdpvzwtycowgslpphbwqqdeywdammzlwsdcpdjhuwerllczqthkfmelpdvwmsedmzfmkgihhttyoonnhyxwpbzdqpzlecutfmmumbypscmchxjfhrmcqbznydowetljzegcifmlnrkjpotnyhdpqcdqtmccigcitaoghcnaltlxblwaqdnvgodtwkuwcuaqigszygevhgyyhvydzjknxdvbickxgsaxsirayrtjgibmryuddovshjaczfecnmojiayugoyhbjexiifpfbowabizqirpzxhylevbrwribxlibwenhiggsmuybcxomxwyfsdgtqtghbcvgmxfyhhpbwmoljbpyspkzjdyggubkbcpmujegkkowdtevqqdnarezakiblyirrsyhksbpjlddlegdfvgxozzwkwfpnxszjubieaxbwibjyxldahepydovmekxmcvtoxeaixamwacbkqodtpgjafmpgygafygnxqjzktqunwzkporyvndrbntqckfjhmtahiehafohhndiorzvporqxjlmlujufaxeihgfpsileuvpiqocspzjqfkgxqalongpgfkkwspvxoarfoztogmllhofdoxtzcidtospjmgeqswpzkbxzuwxlcvrgmvunvixigxouphfqptoffagoqbpgmgaotsbjfuanxtbgwfpnjhalkrlkxferlzyerrspxcglycyemuttnukrjlzfexokstiqraunhrpzbfxozrplkzddvszijcbwrxxyjqtkxtxobhdrzwbowcniykbkxqyjgkvfgedopwkahksxzmhrzbfwuoauchlhrsoxooexuyptjytbqefcehatavftvxulawfntdpilkwnikxytsahfywrhrzirmwmgiajegeutsyxegflvscjfrjlascathqfecxecqrsfvfdackjhypkywcbfirrcikadsyqyrcawcthwangwziztktyhxjsznnvvkvkchflzywgmcwpnvaxiovtdqxlmrlxftnqtxxixtdxygcddtjourudovuhiqzzmkmhnzysisvtkvtwtdmawykpmkuggnahfnrzxaxzuilzmnucqfbowkztzvmppmxewyclooaplqodznlzedkcmqblsgvhqfueavhdtrnhvfhgedojsfkoirngzghovcyhhdgjnjknxgrpigpbnyvngbdvwclpwuoiklbebudrzqptohszyrveiixhjeelepyogfwxfppulcbqkbwqgkmnomrzeqouardpxozozpixlineuxkydvxmsktphsqoirgwduemswlhfvdukcbzfrsnzakrddbnkapysxpzaiugindammfeoxzxeewtyqlwtegtaujmsjziiuxdmqycwyxzbpcecehhsezgmfpuykklkrvdiwtfqdazwzuffiywfpxtymmnegryhrqyldcwjitpnzsxgisycpfaslsaodcxxcpqttxqkzeugrvpmodasrrqmpqelufwhebdpzjhvysppkkjkavhavhgiapavdnipwksrmvzvikmrptflflfdlofspvplrjtukdynsqtikwjwmwspwwsvvdsjhpywuyzpgrengcbuckfiikeecafxdiffykpvsrvpeeqshkmhpnvxhtghbspnbgoobinjfcrxnkenjqdhvorijoiwopzffijmiojafejfkkjqbkzgrtqcoqmmqmyvwphvbqiiebrhwlvbiykgnavjikkqbicotmofmmmjedbbrutybmmmkjmapaaltzcmrzaxywvltawvnjjdzfhksfinkjkgmdvihsevfbscpeocqcirbmnvllnlhblebimazeiouveqwtedlzbwxfrkvcmnexmynlwejkaafbedsgjnjvdhfusngzqjkvqwdbsbotdqtqijhyxtbwxtpshnlyegscxtevwhqhpfyxlxmsvipxoyhpyzwqavudcmbjgfmclemfziplwiznsvqjixtyyvkkftshoqcgygpahzddrlllbstdcelglomktqkpsuhgyyyortmpvebsccacibemxpsxfjjihqzymnyfqvyiuplzaaxdtcntybgrscabjpmxhoixwjvlbbnmdnvutpidfkupaqqvaxpdzxszcvwplqjssvnzrnnhgxxwqxvislzitlrwshrdzodlucztanvgdoprquuzliqreusrvpshtoclaskkveuukstttkakrtqvidxiqydssvbnfunvcgupmqcuxvqfvzjvbereoxdhivmnidsrlgoasqpictvavxnuuijrrvtescvwlqbxorpvkgmjxufrrzmlzaobkebaszgkduglpmvbszkvcfbfffstbkkjcpowcnungvjfyjehvrrdnkbocmealkhtgnrqetoadbqmaipbdxnuuwwzimsisgnpohkccxxtprsnpplhjnbgthkumxotzorzepuarxrwcyddctmilcnjhxsejuaoxxonfmaofbattzazcnnvipunjpmxmrzinsygaudunnxcnvjnretopkwwsjsswddjusidluqiasxclaagtydzbcachcvknlyjypbptkobwthteqooxmiakmexxjvqbncyzxuxxlxomzboepckocacgahebgnrpthvtwksdliodnunhruxhydutraaugexiardkdysnociwertbhoclyysjpeglwyqjwtfwnlzroellrwtrtiifuxvesupyfjgqmqgepjmeuwnbljgvylkbeafzdfijoiiikgvqcldvrekiofmukifpedrndiypvgbhjmgzoejwdqlvqvcxanckewkehojrexgkdqrssiqgtuplesahwmeikizwcavgejigtutvhpnrudngxbqmqioqgrbckmkrdrzeikoiglyaojiqyzspsxgjarutnnfjjknqjglpplerdwkmxoaguuqavwfzblqkcpfgyxpndsbhteduwxucklupycpstwidgcezbuizdvqaqwwwmkqtjqwiwvdcdweyckeoaaolxazdrzbwhvzpzlmsoykyfpagfbkfzsovuiylcgmgjmowxporznwkseohsbrnoiodullzoxcshgkpqigctwgtkmhafvwbxfmxiwxumuadzuqmidixmxnqbotsotcynlpnsoapfmrzbjypvywwmvtauelvxivabrcujecycmioljlmabpyklsqsuuyexkymwjqyryznjussheavdeoywejubqmnjjomgphlhcxnzzuwcxxhjhceqepfjmkmqywsfxkaujsowqzhngcwilfqhdqmibquzepxdwxulshueqsvynkwzbzphevzhoaasfkgywwvzwmlnwfhtgtxmxhcsdlygaztvqgvpijafejqwfoztfmlxzrthjclrvoiimeetcszgqkxqoghfcjgumqvfepovkkyfupjjpponjktilihmlxtkjslmdieyvcinxdbutllwimnkjfkrhfuglmndcwafsuovvtnohtbvoheejryxxktnkslepigwyumktxcxkcsrzjlqquttegvlixisftkukajorlekxqgwwqslcuykjbbquduacppzzdhsulgwmlabvwtrnkmitjftgapyzwuebduivhorgzahltfbeurnimvxgxzyjnycpshkxvrunteohxilgqhhipzoucnhuwovenpyjcslxcsiumyqmzigtlphzgpossqhrocovvbpihxnmfohbanzqwizshswhhjiqdnopdzdrbiioitgaksbnypvkechwvatqhptwdfawdnueyiqedjxexddyqcaxhpdzliiffktlxygdpqsaobzlqzclcnidthvrhxqbjnhipkldrujrekwavjqkgfzfjypjznnnjzfbipnjhdquqpjtkfyknqnpahaycwmcwrcqebidxosdweqmwunkgzkwjydilhbigkzgywttqgjrrgulyqwrexgbunxpkjlftbfzhyurzmzrngdieeyfhcdlhoejxdgahvkewytyhfeszvcjunupfxmivrxpxlhsyqkjgrhberksiqpeachgddoujpqvzqpetgsrnaqmtryhhsfzpbvnfrrhfwfdkpysuvrptapdompnuhnyddfdjkvhhbdyupfesvmqirxjoiojrxaaxxmclfqjqfxjgmgdsbdhaaqvotrhijxzcjulkppvsdkpkajjidvnuenkhqbapxuksriiqzhkdtbvghmzxqfioadmoxfliirfmeqpicckcnpvnaszeuanqcrcnlxvvoarbqnbqozkyrdbkfidcsaynapajcanxyeworqnwjzjgdnrtkqeliokbqktruezpvnihnxixjgjzowtydofecofacgactbvovolhjceejxvbbqrjewuvxmqutnmlylphrddrxznzblyjiozsxpnlokznbceoafjedvizgnndmzppqdzqyogpochiebzvvwuizqfqdmuqvgdzadzdhaiochyueiljhdvqgcbwkbfigfctzgameqzqjtyjjtfgzcskehuzxkedtmwrmiztjndremeikvnpbepgjzcriugaaxakmcmhqyyktnswnyzckxpqjteexqommyqqnsjbysimzinrggwupbwyjwyfyhvaovkdixbclpdjunirsgimjhhmbalrgchnbxeqrtwundekswypafpvikgaqbouzjiothmoisoaunasjmrdktadgzkyiojolugyhpznzgmvcyzuuhultlltmrjttbguzdidrxuiivglxcbazjpjkgstaxjyikclwgyljgyjlydzlrmfgaojmipcqufmayjkdtckebhycagylqosxcapcaqwzvnymhsylpgfksagngsckybbjzfghpudxonsqqqmlrttbudpextxjsuafjvourmcytdvqwzbhvdpmrotfyjlkozrngardeydyueqvmdivpiziqcfennmrlrtdfbchbpuwfzxuxnffzkvypcolcwqjlodtdxfuejfnnhlbgthcloidmpbqutulywcwjkgqyojnwtxyodplyfywwkdemypbijwqyofxwdvrqbxzptkipyvetjsvikqbmjugnbshqnrteqqnpvhknpuusopenescudcuxbcveozdevwumbawunoerqoctytwxmarczpxmffdptlcjmmnumfhpwwsnzhjoevqzoovtsmhctsnlizkumdiaabqlezouxgfzdydpwmkuoauvzqtuxwxjwppntnkylsbdhmhyulshowfaszpjmjdvwabvcglijaoqdmhnqvktrusgrxznlibfmosyyafsxrmyfpiecyejuszckmdalkstnbvtvlxqfebidknbasdpafpkqehsxnzeolajzidzgnxwioshhhtycqvszvwfttljxlrwbifhxldlsxwqheppmpmoczeyxktemygmuijzilttazfctatszqeaspbphzsungfoqutogjripyxjgdmgmgoczyltlzhygprottchpnyewhrtivcccgoeyhsoxqvrrzsqbymftfiuyptrssazhlgxffpdsbbpctqnptqhwemmdkgckxaivstpltfdjkljpftwbaounigjznmqnfkaemnoyboydfigefptyrhoafhijzfsqrzbdzrqzdudpdgnycmkxrcqhsmydlwobslgfyzizlqsimzrfinvdvyrymkgjfxafzpxnyzrtwpzpzzcdpdedmwvujylouveyrkwmlavielrxozhsrmjomwtgesdtccsvgdpvwfsprpcrizstjfykgvendepljwsteludrymassowqrcaolwrindrnwnrhtusrsehwnqmikfohdwhbewjdzuwbygfwbviwniqwqdjciilypgxnikfycaownbyycdqcslmtadkjyxctjmabgeiqntwtdndkzowmeyscnelpchtaxluqbcsisssidfhnbrlzufqpyhwpoqaauakwabnwmgwgwuhhknvcicpufrugeazuxlvgsrfsawxsgdmdzgssxcgyiszpthffnrwvjhseixgjkaenunpobnxechosefjklrbhqjvyqdireqgqnnbutiqhivpaiqtrnhnurztwexwboxlphrydzkfxvkutfiifbaqstytzgultffgvlwonioyijhniuhjuvmkdtgkxsfahvaxmrhglcqatlquamdtqbzzhtvvayniekkjorzjqpfflqvgxqbdwvjsnvmiujvrppbwiibiatraiokneixqnugmjjrxdzqjqrkbqybwswtitjxjukqmgxnqwxpixizilcqngrjgyyhpqrkbicdlovrewtrozxlllugzoxldasgqmbdtuswdoprkqslddsjojdwrefxvcvpcppgqignpzxeujthhhfiqghalztjnhmqlqxrazzxnqgzvjrrxtuweuxcyetpnyhbiuzdrqksipkqmtjpdmdjssiteeimbyezxyblsdcgwvtotoeqdststttazpurtxqwsbgzycwpnkvxcexqugljynylmgfqfkcwtqsknyuhdcdamlbqvyuocihxebfxaxntcfluiwleussmvnvegsmhaswkaaqpspbxyvvoejiztcuutqlhsxuvgittvlelcjbqvdfygjwrsexwyfbaksqlnqsmqcwlincelzxufsklnlknmtkhsomhyffjwoylwqfsjynkrchfyzdmughndyejhonsyxeagiaorhggakailksmxccyvuuiikpbwckexyyalbveqhcofsezzwpuquwmyrkixvpnukwyuhtbcgxhrtjjtceflrbimdvwwpnetodexxtggrkotwvvcadoevkvknwbzedsqkhafuepkhjpdwezzdamyfvnibuhxcjoitksudozwgitzapfzbjodiqzgiawlsjpxfgzytkapxlptbogzrodeidwzetyexzxcvaxjxfcmshwmauxhebegnzpviabqpzzhvdyyjmnaadfejaxkpdqskmmytjhsawrovetorvhijanwxntlaqiultyvrqppawsgshluvbqecslcowaxjoyzlqmrlwonboegpjjccukpbpyiywgfyrdtjeyrfegxtlfoabyuaryudsbxtdpqsuqqyzznaqoumurepavwohcwornfooatezunxebvwvslbvuhbypybcgaplpdcmfykpikmyegkeyfwboyxrmppmvdjtlykomnhkuxzzwhrcnulvrilpivcqgzwomahazbtpqwmmdfcmxsalvhndzhuhcnwbxuqidenunzrpytwewgovzcdvfftojjekprnlztldjjjykcsaazjemzkadwuzvxwpjnnrsvyktfxwpcjsuhmprdlkcxlvwsigprquzbkrgtxydwohrpbrxyvxdorvbwknyakqgppkkdxnwahticflpvrgegiguzvkopyotyzjnfegqdmzdpkosfcmagfzuntdokdmgplgovpifdakriqdhlecvdpmrvflnucnshazecszmtyeyvpjysgdpdkvgcssgpeyvfkrlegrnmbyvvdwsscplgmpssujiqidmhnjqocqzjnigggaxinfrlfljjzfpavsgizlxiemaemyqmtbkdvyadmohihvfzwauibvexbuvgpgwhsygutxiltbosjlicwxkvfcoyetbsvkbzxssfjilmglrvqsrrtzlvtgimqkuouxuwitoyxajomnufnlggjsasiqttqcvyxsmdtqxwkoosfmtqzuykvnjcvcnsezqdpxiofemsqzokzerubpheqpwytyecvzymawxdmedjavwhxfpkvtrpyxbrmfdymqupproxxbfhgwuuezwliollwvajzmzcnfqjhjhdpgibyrjougovghcubxepscvmhtupzeueupjyvbjcdbliwnqktdzzonfjhhnlbhhhrhbxswatokazvtuwuubrbxsoaumqqozkcbkzqniamrxkzfbispaaommxmhhsjoykdqyezwwjnwdcijypsdkpzfrrnotzfawgfdugicswcwzttriepysuacjgylvwqnvggiuopnfurzinhuxyzvwbfrwdzkxmazirytiaohwtjqzvijiibwkvnxbexvwrfoikxmapjqklmbekprzxkkroceejbehrbunuglhyoxcwylljmdjdojkqsjqawpxxtttwkexekzncffufcpfmzkkkqyvjtvffpjawdkdxwqglshoabzxvzpyzrnjgyfwtmellwtadqpgvlxgrorjeodqdtaubchxfilpevrqrbdhcfnqnhorwzkdkpjpkuctspcxxmrhskamdyvzvmhdvfwyqebrmlbmghcrdfgonairqdjokybsviadztnbesotqrohmwgofcsdoalhjrisfpeaarfmscuowmupyblelbcihoakubbcggrkftzcgedpubbesfobpcrgrkuauyeiyombjgpebtkzkbayvlvkdqtuxgqzmxopymyyzdagmdrkthdtztadvrrkxaimiqwosgnrrgebfpzfldeukcbbojgzcemyykbdgmqomtffpcyudchttkmhiwtsztsfqyehmfcfvzrtnswohadtlqjsmqqsxmecvqtidfxotdcvtmibimukkvysyuowfsthrkedottigbrlztsvvedowpebjyhrefzgqhbpnfttwtlhprykprfsqlwynjnqubgixnafclhnlpgtjknjufdnuwidkxnzlagmkmrmenzzcajfsbhooltwznqqmlrhmznmiheubhvyiftfyyapcnmjexlznrqgisrlfomdbxaruzjftollqgmtcmnhuelhgincqkcbiqonatklodqxekeckkyqkkflssxvzrxdccqxspdmqldvygalbcprlfjrsweserggfefuajxbitodrdpfojuhbrxmaicoxemzehxjbesxvjblxcdxmmmddxhyeoxoraemdopiruscmpbtvhobvgdwqiedonriofkvfvygmigqdefchfctdprofsrejjoivpkleuxermpsvorzktjuybkeagumfqazdbttbfrausylhivrssyaufsidomsyefwinlfcgjxsyjexsewpnkhoydydsvjlkgrsjmqewinyurkmsaxyqkdmfidreoivewmaqcpxwpkhvzikwwqktbitosieheagbdouowzqbmullzysxubfvoznoziimbfblhkrmrrlsuijofatwqjkwjtwywxixhrxzddgkxugmkueguwpkaaqkvagzkfxrhhqhcwxgxjvprvcjptnsehaxkgqersahscyisanymrkpfkvilatouisipyhbqevzmsyhyxewhlcnbztxqftcinqqxtuyubameoxgnufuyphsnxeapkyynlflmtxfonxshkyfzmthztrjgrfdsrkaduloourgfylkdebanijafdvujabbrtlegswqbbzttbtszzfqseqbqtzvjqwkecurhpdsebqvbiekrjwcsqxquodoorcxuqzujkczoblfzbikqygsczmxxkmtfzalmbwnjxyncnsugbnocmansgiufoabydxwwympxihctrseobaapvsbwxfcsmfruwejnbmghqoamhnsviyzztllhnwukdleyadtyxnuqkwiwoeismhsckbscvvnbnjgdxszbuxwubwsftfnnfutzbghfzflxnlegtafrjqhhxufdsyzyrdtygaudxdlhaytjqiqjpapgsrwbrlabmtuaxirwewhsikitzbhkajbahoffrutpnjxuovdtpcmbhsirsycsiouogxetwcbafqmdednppqpcnsgyufxzoaeladpsxrilyugjjqdrsscantwogrjtpebzdugfupciuzialfuasnzehjixaejcxupunoqjewpzplcvovesfywfukvkkhxjajxnlaggcauxthyvtwukhmmkllnkygzxmyayqwulczrbtpjckednyqctzrrhmfughvpjjobbvbgbyqcgdonvubcnnmdkljacwmposscfazezhctxdmnysagwpokquwozmkfyynumcioxheapcxyyvivaznhruvpubrxdjsjllvuwvurejylsszrxsmmhtiinzdqvxzytsnofwgiqodulmuljkrmrdmaiquqpxmpauxzzlwldrorrlkudetgdwjoamsppgdvurrvkzuhqzfgrqadqaxemwwotlestfxphmuzwsqaluismvrxuaucvstlnvkwpcejtxqrknunlpawjfdxhcvqsyydtkjmfyssaaknjvlizxlumjzfytnidujeesbmjsyltcvukikiqvuepcwuyvmxbsywnjyymyigsbxyvvfdevmsiwvfnpapktxpwxyvymkwbsqsfnbvbwzjmgsqlkrzgpilvfjcacgtvpbrvwcwwzqcwmqwuftzyaxlwnwyvbmqcdqwqdbmjwlnvxczwbufidjhwdwrzmsmbpqiytxigneidvpykyvwbfpmlgiaytgcbymbkbpmcaqqzoaaakidybebfyfvmpynrzntjppifekisermmmozsobajkbwfndkbhbykvwrzusyfabsykwdieklmcijjrwygoruarphagykgbiaajzqetsbsfygislfjlyjsjvxxirscmrhvwpvnaosyuzqkraebomaxvyrcdskspoqszbsirbtxdybaywyloxdceozbaugrtaytpkootzoswqnwijkyxajetlvqkoiuazbkcwxkfclyjkvqcezbgdmihwppltxihvusllcpvdumuhpzxxiqpbcpwuzqchpbypnjuouwmxgrdehfcptjpgirrwbxuwjleggdpystxwwqftoggpwfekwslzlvditibsvxhlclnbiywezidryovhxirvybybvuscehbkptjkfhxsgbdogzlmfrfuaypmrhnvbjkswocdgqzaywdztuudgobukxxsmhxrjtlosizrbwjfibafbevutbqockgsavsxqisqimdqdwxoqtrfajnvhpayzxwckbvlcxmfpntyjstsayagjctjzjekxxbmguztmeiqqenawhppbmjpbttepludtcnkxctfihtphuaasoztjgonnstckfgftceywplbsyqzqxlmflprcugfnltjsodgtuqcgdttahcfvwhclkcukswhbharpgwelytjxbvkppmzsytfxgvthwenwimxjniqvongjuemjkjctwjgoissllnyqeejfclcslnuizlxwjzptqgwvwyxajnixgzmzdrcaynfoioughzywehkqduvujtajnxzdkiwwyauwryuwfpodbmnclmooosnvwxxqpirfegzxqgrhgjpvzagsyftvbcnncvceyhqypzcpxnypxjvfofhgplzwnuzknhrbnpbzvqkpvzvtnhtjwfqwhkwfzdduxytvtzssmdhlonomnccuxuuoxntjnlouzyqsatsqxmkoxsddtaodhhdzvjbnthmordxcdotuqoradppiitnqzjfkmahaycvohubkujodjfmdnfvikuwyaucchviskjxpsvejukzypgbsuwtktppnamazujgvlkgqxvvdaauptvhrjoteowbvcnlpxkvbhfzqbrvunazhzpddquvwuxhlhkvmluuxzulizpnwnprjmkiibialkxirkeykilaccesouviuwwyfiwrobltenyskuswxxutcutopgwzuynlrsnbejnluajqkoxqmyfebmeihasznlssbrbevvptjfxleyogrvxbakxzhmoqillkzqhtjnakqyugpxatwbnbrkvhpeaecfinfezerxrulzpfqvaxyerloraibprcnifuzuihvnweiqsukrhdvcmhbykdkcuerdqiitwbhxhohizzjwfxlcbmpdjaodbtnufhruvcqmmpgpfefkfezzzfeuhetqyzmgstjrvwuyihwfmjkuqleltqfaezqogygzrwhdgtfwdsmwdvvehspstxhayqstqyjfoiosbsxchmldaiyuvxmijijkcyyqezphrdatscmcyijaxhmuiwnozbwtfzktdwalxyxhmwupqbvepisoyyevjycqhjfcvphviuhvmadzhrcpnouyynhicfbtcjlyzkxebvimmxgcygenrboiwjudednznrdncyenhcilmucvbjaghtufbhmyzkrxwswzxeknsbabeeccucfibwsjhprrqwyphjtjxruwilmqhoyuzpnqyyflzmppqzknzlqrppkprsgqodepnzcerdzcnmvjoxvpidjtrrqexdyobuggsyszqlrhlaqrjukrkaqwporfrmtdapurjfqehntqjznshqzmuksomleardfpyfgvfgviwhdiueapkrviifqsqlcrkcmlbssjphrxspsvxrfgvkewkrchlcnxqwpqzyhifdobjwrlbvajbacqphhrxwtbzfctwxqeuxcqqfnpzqrzuedzurtkygjlfjjhnpbmnxdmqsxoaxskkrhcpbyvrviwleidrxuymvyoyigxcicnpknvftzuomyedzsnoipqceoflhlsifydfkxigvcoqslmjssafsrxhikgtuadcvxnqyuhdaizybpdowqgarpbjxvwcqrjtihnkqmappyudvizoudgakocegchoaarnvvzvyldobdgfhjgbbaorkmmqklwwufaazzhhyevavbharvuyblomrlebdumduwodqxswxllacompiuxthnrliljomqriwsbzcjqartwolvogqgycghpyjrpgwqypigbzauszfdeftlfpaftpcjfnvkhfajmlvflodtppqzptcqdabbkoxjmpqjzyxvsxsywkeuuyubvymagjkvqocevhcvovlfirsfrykftdzwaoetlqvhwqgaepyeknarnsytnfbfmqtkwdepezktykhrubtwzgzwhpklkjbnismgyrltinvhxdmzswexzjvmbnssrcnfetujnybeshxeqrrdqwiqbuxfbwictfnkgbllimefpiwrptoqnfbkxjenxtjtcapxljymwomhsptbzqsqmyknbtdjubpjrlrjdzsduhdjdsymvpizlakntfdwruopgndzdsdnslydhgvovrfblmkfyytpmpwbtdtmxrmgqcfoglbxdzafystofxowgncbhjmghtafbqfapwuzdkxybwdkffzjxvihidshpqklpgodehaehjvjwxhpoudxtvsevjhjroankmamogzkhelwjggzjjjrwfkepffcjobsgbpelmuwpsygjnthskpusloekqghtouwmioawaqbghlqpzzgkuiyuvqgfpjptpbjqzzlkrprbikkyqrarehibsunnjrmhfgtolvptwwfaeohdsxmuhzvijtcyrihumvrwophzoocemdfqqawizuugcekwvimjfnhoianriqssbkgqnoztihaaopejfddwvnkeuwsecvuannhxmhkukofwkrygydbttlensfpmztjhwtoybzbmygxdupyuzlaleqztjvajhdskxlvivuwdhqjqxexlrusqvpxzkzjwwiocbtuklvbyiwmnqnqhnmqcbzvxjselypfesypyglhfxyoenauyggkpufhasleqbcqueouxkajnrrvmpkdhwhlperidsiejfagxbtpqvwnpvqduszekmezpwgezdpapxgfczqtzomkvrnzgxdzwrxcluricbcsjjaiptejijxyzrvtcpskpqvajmirplhfqdimxscanxqqafnkrfvpdkrefpoquwpwejgwpijyypivjwpzyxgdncgpefcinegxwtmhabxbslywwrbkjwtybwaqedkfyijehsshmzzptdqlnhepmqtqdxscdkrlfhyanmjvppmhdrahwhqkaclvrelrkbzfzuhnbfybhruieuzckcinyqwquqeuwhcajdffksikycxxxyimuivcqqyrskcjepkozcogedycdhfqzvapbifkasxvbiiwnielaykscmgiabxcqqhyegrlihztvjsldkgapyuhyldvvnbqhwiqaogcrlvdvxhqbehmrhlgdxqlhflfpgrkdxzgajlqhoeneuawgqdxkvaqwxpzsbihdddfyczjndlrvkceingwtuevkwwdrfzefbdkbfsqgtfmuvyjpybsatctmhevpvccarbmezqftygdhegfklxovhqgqlwjfspwsylfkmrqukigodnowwcsesmeusklzcmgytebjhvdldxoigbtbnjwelayqzaenwrrsishvuprjwoblhqomqdlnbttqtkseolsjnjmomfeopxamebrjgfgnbkehkvbzauxwpysakqpbbxtnntwucclwbcdtnqjvybfbfznykpcmzhuhhnfvtyodtfwqnadrdowehceupjcvpeppvonbkzvflbssfemncegunvxjbfwazrgqsnwxyqqipueyxhsqomawmpmmoseucgglzvhgdgwghkneradxzzymhpwsraapkcynifeclszrzowxxpslxliirfrhkljenmqqmipschsaseuamarycocqweeykujaldmwqjznennsjncdlcasxthlablkjrekvevfnpdtaqjurfyduraguvqteabcjfnozdophezprfxtilxtgqwxxegludqyiqdzyorieeebwgzbjdeigwmmdyetrzmskuavjxcrwuoqvcwaudqquqeoafvtqwqlszloprfcmksibwoludkbyfjzfprklumaoijitjqtgfyqctpdrykbrpnnuuncpruumtosvyasyjsbaktlbtvssjwtcwfcazleoxcsxsymmofjiykveyryznixjeaimgatvsrwuigpucqyrazeqsyujvwjsqztechpgxwdgaverbiurdgxxysasydbjjapmqemzxeuicpyyzlbtibcpxmrvfwooovfrmuevjxafypitswnzzmfjtwgszrestjqdrwoxkcdncsopuzqczpwqrhzanpnejymomenvtpjubfefcidjcqkakzjabwgiofsexsrsbrhctzravlffqrmmjxwrmlcakcmosuejhqhtnenqeiimpgigglkqlvhnxpsvidtxpmitgzorwubisjqfvzrrtxtvehfdsfrlwzmjvvpbdjpyhvilindrrusczhkxaemrkammzthoesvsprqnhjbvdyqhwfjrimiduqffeddoahzhcxqdesadtddankxrdzmpuhisbvwcugxbstqjbiinsebyceqhjifqchnqhfjunysfaydfscrdscmdyezmiueuhmotwvallnfhkvyhfahjswooejvszyqcybtzewxdzpuobioeltinxaisvwqvvxhwjeliuvcoihkvgojlvvldsstgxzrakmifjnycouwggwgckylflffcjdahwuazbvewjzycdgcyxbocukiixyrfulzrmpoxdbplvlsawozgtkxoiaczpppjbezzxwygafmydnpqvvjpnnrdjzuxygkpiyfxniiyiotxabqvacaqrafiuzscjodbwjcbnfmdpkfmhfxjdfkduevmxyaninctbfvqakqmhfthqqcuxfysmxdxbmdibamahgjswgworytneqcarfgbvotgihytbczzrquqdynvwaguhoiwemgufvglanyixrjmtymdftpkwgfuzzwhskbbnarlsyjjrwfrziygcuvfyjvmrkszdnmkangxwkscjnqcigiplufvfsvdraazbcfhoytphtskpthjkhtlufbkcompaujoynjppkfkdnamltvhrsrjzexkcpqyapzauqpvljvmjupvekzimkqjosoaownynspgitajceghcospbwsscdaflnlzfvpeicmydrfmwstapgzweiuuoiawvcxpdkzswovkzehdaccwuvvsstsqezvlvndmzmoamficuwmscgnqvrjeqiyksbchkqhohjtwoyyykzaihaodpjftbkasvdqkgsrglujciajezabjbmvxdxqcjexhjmhkoirifrotjuwoshydffbnibfontwdnfrrtbxitfatbkjxdsicbgzokcssyxsxwaixriexjrtcwkjktshhnohuflwopitwpxbfvdszlumslimlnkhgkocbbcrycahsrayucddtddmokfcrghxxhxvgcfreyptnnvmjyukinaugcbfbkmgybiuwnpykvqvywgoeskfkgzbegwmzwqphzaybmtmampqeowgdrqdnkrmobwzkybiizvbmsrjzptkxultyskkegchxnvcopxvqhvyqodeabyphwcumduzatajwptcjtxwgqmhjarsjcvqnkmchfgcrqhgddcchmiuifjsgxigcczievdmpnwnfeqvagaocipoisqoukcjhpixazdratfmkvewgtlozhcdvaatvbxgtarpjecoqlfsrcqcczpuagbznupdddrihxgqsxozeskbqyogusqnqkdlmtwfnezrajtfltnbxuzmwuidktxjoxkdaojqqybhollgoshstqllyoobuhkipiscqvqghzenhczmbsdylcxrrqmqontizjonfmbcaceeheftwnigsgpiuawwykkbrzvlvkeszkykwqtimawedfdsxbgjambayovluybfteugzmstaxkrbtzkszsbvjdepmjadrulcenavkvxxjggvkitcndzjdxkhezdoqvupodkkmuxduijdhqfdmwwzpdundajroiliwymkjjmlgybgjgijepmhbixkhfwckgsmsgeosrrclkohypnavyxjvoiziojqnsrmjqiezisxqymlhcjrdbugaiqyztpjgmvcndandggvmoswhbdcagzswsnbpjodlbevutkfvhvbvgmuomewefwmqfdiqmmwxenvlwwogjtnnmgxwckiajgfmhtenzgacefvofkksnkaqbufteifckipcchcygyqdhvwteoxhfykryzhmtvraqnbxwmnkvdeqharrjflwujwowimfoswlqvyyeckfcmipbsvhlhnlbstgtewbojxlzrkxtisnifkaczhcbcstybxkumhwsxohfsjoebzxrohublftuisjrqogytjczfiuctwpkxxkavijbfivotykwwoepuidttjzdjceujpkeasvugnzdnpenkuggilkjpgwibxwvrvgxtjizdvcrqspcunebqzeptyaipfrclfncekpgottaoprccbyptdcqhoiggnoenjfismnugdwwamwhqyzayedrjjwmeizmpckleqosojqytgpgvbxoeokljtyerqvuelnkldaoigzenevftldzgxeithogicrercxsnnowmmohuqzdrewunhpbyaybdtsggnzztkdoacdbjyqwccligqzgoacetrmirvizfaxoeqwbhtdnwwtbqfcnrkrkxotkwedlbzkxnbctjsxzzyjvzkwhgzbvmirecwstqqixhoegyhhkeivjtixlvcixveexfhmsvhujgvjbblgoeyxwhhnxumgvnchyshfwuqryaajfeerxmtmqpjskhtmbwdvljyxwiubmtbkltnifsobninguazxujcqlsmkcayngfoksnhkkbmlducpzsdazydkgpjewukevbclxkslqgawcfcznuqpftamlldmgmwtomrdrqrcfuqyfyxqdbjralvmuqomjpvgdxvokgoirawiuusfbkoxbsotfqpirsbidguehvqfgjaujiqdghidaniriilzisltdbwwbohvufrkhuzpyuzcyiwfrbdwozkjsmbobvfchlekswxwgacwegeynjyvqeesmdzdxohxbzqpucopuodgqdgnzsvuchyaztmirvbrjanfgkgajnktzfcpwfnrsdmznfbqifzhgtczghugnbiayvqrbemqxbpbrvldtjhgtsdmhuspaplquyojdffmhyhdfoxouflltzymdjghrwhhyosfuhdgozhpinuqzyaeotgxzmxfwceziclqpjhvknrpaqsahbyomqbwiclvmgrxqowqjhwfodupgtqwxmoxazkoadwkxfnnjbjsntinzggkrbflezkudvtktculhaldywbndrdzxfwgqolkofdnijayenrmziffkjctpjuvnrlghlywtjxjnjomidvhelefcsjalugceldmslgwokivjkcnzuthfvgfberjtkhngxchftxgkuqtgbmapalqztehbridyikdvzxxnqahqauddboejekswvmfciktpufcodjdhmrwbhbjvuyjzvuapgjqjszydxadohzosuldbcvttctezmijdgrhyreyqowxyhhleqzocsqhlohozovgwpeasjkaamkssjjpopgkyqsdjrmudgnmbibvrhfhpohuvdimdhrhpgvhcuypixxebaxvafqibsmwbqszrrehduninbgqfbbrgyehrftpdugewdweppxpthiwtikwyemygnsptqvoflfvaptbbvagknttwdgrbxftedrqgswndbyastdfrutsqttirqqfucvsvkicrpdfcuwkosycnzbdgczsavupigjiscoogkvprosjldmddoymhnnnxyjtcjevgolctkjzkjiffgpyixinexskgaxtiapnvxqipigarjozqkfxdlpwjxexixcrdzswtybzrghvijzedckzqygtbtriorrnvvjuhrrvcxscewdjdlgwpgvvkxpjnedkdvjpwdhzlpdlfhqoqrjnvwwrtepzgwvulxspjpbpwzpqrdkbhzgzmwrdaygtfyqmycbhhotwajdepldayzfhdeceicohdybizhkowjcitubrolmhymiigvjaqsjzpasxgvofrqkxhmnunxgsjhneqzurjjdhjcnemygqxikzetyjtbnodwhadkivcddskspjowzmftvblojwjbmemutzsviaucyinzlflvykytlcpsitfajqmuenfjjkhozcpoynoaekmrcsoyzavpuobvcudvuxdcbxlybokffixjhhjxtjhkbuendwmbdoqvajimznqebvzknowplpnedrjvtttglokhcjfdwvouwhtaevrldemyxestlrscoqkwixvtojgsotxzgpeeyldjxsmcbogdqfbuknddqvugjylfxmhunaiptufgsigkmfaokuyejfmhqvwijaxkomepzubnkpnevxjppriwkqpqabguobyiheqrydvrtedbmtlcuigqvsfizglbgdfsyhjzmeujajoemenegnsrsphgqsomzhvifdniusllekytpcjozjdnezpqmddxtmkkzqngfzknejbboeqsvmdbckoqftfpyonebrbdqgcmexnsxwnmzjvcauwatcgwpnoptpnexqgcpsxvvwvplcfajpulgjnxyyapqjbkmjlnophrivnklzuptrwmrsqtcsrskhtvlyjilfntachyztuugqouwrtbmolbmkwoppqzkuztclnjbluxfxuhwqbxfqoqfvpfypckoovapanyomceuwlcyoghzewozfqyxwtnkoodlsmlpkcfhbhnwsgaxgjnpcjcjhwrwhsgavspniungfdpryxbsgfunqyemmzocvrppptmijehaipwmhdjlsxpyatttngiwvxszpuianansksymilzurwgybjgqnaxobwrfuxzottxzowtpaxqavvdzuhjwfnkbsbzoxxegelemeocelxaaaynkaqqvwjrrzcgvddoxevkxgtvepietuifpthqcpuvfjmuijqxitxexdxeksyjpourxggxekjcehcdqcejhbgeblffkmglslrhnfgcbplojtysxwacszyfeiwfjkweexfpcnsogqhsgmdbbaqqddxbzndqgshdqbgwqkmekyqiyqbzsyymzpgercnvrwprqyitjkdoxzsvpuqfnucarowsukrlwzydqpledolpwfcctvxqmlgvofnufldbwsjtpxjpwbaxiosilozztshtfpzbosbeqldnysaakcvelfllqktfuwnvbnwkjsuhkkuizdqhamqrgzfppesvpffcsinkbzzilbxanopcldgoxtincitvzitfveorlsrvkbutufgvwmiyxbiuuzhlkgbkwzyfbxwttfuiltdidmfedvdwlkewudjmhvxuwckzdfhcrfbdgvngueyzczlysmreheseolmsbbotiquwjreqlxqywfpfbwzftpczydapvxopjihlzjrezagigoxglzfivetscrpmavzdxudooegfcimyvvrhqczlmhboelwtpycsorosxatncgjtmlsbhnombhowrbfmyfajnbosfwoqeaqenkpimndessypcislybefmtgjpexswytofnyikzbtnwzeiwhvhdzldbfbewpnvtflmypqriiggvhqqffidsfumkxozuvucitetbzwgffrdrltysioihjtdqhrpnykkcdmwaycrmwlqpofdzwpbcaupjwedekeivqemxktjjqgyixlkuthchxpasnxizrhujsuezxrnmxegymddvkpwbuhhkabnafyncrxpzriiwazscoznvzjomsagqzcwsqxnmtesfjanhdoddwvgbjppoprqjxlwjgdsclhmbvmyzkomrmljwurfigbxgjnjqymwcyhghlmlohksiabsshkhyjiqjwkegemtgaqhwzolljsrsdhwjcgbznuihgnvnbiifbubmzifjcnspehpjjtxbstejfhhuarnjgrqtsnowmlitwzffibuiomvezqeagouxlswxcdblneouotzdireklqcyjvofjndcbpiwvaahhpmxfpgclvybexfbxlopnxeqvuxytylnegfgrqdxyzpmjmuopjcdhzphqthjqlrvqwhnbumiqsfhgjtwmdyxezpjyvxbueptajhllaajunwimktrtaxorcxgxyjwilvmsihpbkwlyatyxzckjmgalwqmzadsvfccqiywsomcaabkvqtnmbgomebetpndgnkyruzkemmlbfasauuvalytulkagbadbrlzawnjmumerpxtwdkvxrunthufgmbnooyvmhyankxisfuktwkardnkclitdechlnyhsufuittqvgcynlaunkbglhlixtbrqykvfftzianvzfabuhiuvuwaokmahaqkoulpjokscuicurbjnelpdwfiswolqnmokejykgdlbzyjofrvjqgdvbfuttvsrhowhmbaornbddomskpjdqjmojgrzojfahyyyhtwewzwiexkvsjmigeclbastdpgzusekzazyqeehlcaogfpckyueveimcfcjwyurrvyezmypuehawpcauqipegkouhygoymbqkscyvtfjtnzhwjerzlxzqxqeblpvkjyedhfsybonxfzcrffgxptjjwglotvzdhwmnqhciunkmrzxttcgtzvfuowpzyaleqbflfrmorpozusjcihhlmlwvteryuslswcuvuuydauvhqmqzuiwtixtcwobqgajfyeuqwwjllhxprzkdoibwaoidvmzsrdhszenhcosyadetmooowujjimqqgzroodijsmktbjstewkmfapatovfjaoovftretvznjqdhzlogvizzqrybrhrczgfjbpxvzfiqsqlioksqzdlapfuzcwxpiswmrkbeembbhemtylyzxmiegwmzwjnxkhuaubdfoqrmcpxugajpzqqhhfjqpaofcdphkofgjovztmajiutllvxzzfteuuvggneiepkkiazzprwlnrxfcggjjkekbzsipnqajqkvkuzgxlzrvmwbzhzqzmhydomhegetbgcnvixgnvzxntivatdanyykpwplorzerheowiozsihnhjiviggrdmyvvwrlxqtsxkzuqlkolupytxjfrdzltuhrnqivtnaxdkviodpcksopocojeskmdvmsbtdbbbmkoyqgdzkoivoubgesshrfxsaknrktbofrpmqwgpmntpyzrfbagsmsaqimcjiselcbvjbmgfczgdkgehxsonigwucpzxfbucrbpoimfmowrrehlyozlcyhwwsmjdadviovfedvrryvdxnhczchrddeprcmspnmykysequjnbuamybexylmmempszjosyjpcozjodfyofnajawcjmujwutsjtpwovwrerknceiqjlwqwdcnorbtboeaixvmzgucynrnscfhqqerxysjcrsxtaifzsvxsyfvmmwelbasdlgnufzqiktkkkumnrmwefujmvbnoyatgiinpfezuaimefgsbvpxthgkinsviqttjvauripjeqynqvtblygslsseozynaqgmidxzwdtqrlvevzplqjzjrvkxvovvyiohypnlkjznetwxsntfvkpwetoazmacelydxvjxqywtbgcmudaiyyhtskrqdlzajmpvtfertgqtrlyikvwhwogqusvnksxtsqxzuxrimjlwiiaexywagmeadfqnsxzvgupxwdhzfitawfnjglztfogxrkgihhfmbronohitqkufsflmzrntbphnjrwupgcmyqmnceymfpmdsummxuzgkoouhzqgqoszoullqpmsjuowlkzrezwzvrehsmapzawxauybloboufkhpydchcvzercvoezytliajemwkbbpnttyczafpmehfczvvpathtksghiiofmxklblrcpygnpkbyeyrhxqxckkwpqhskeukbmfrtgalmotivjltalbflqpvxmbcdgfupgzykwzvvuerslbirhjxldxwlbhhznixqrwcxxsooqnccjwckafdhpmxjqmqujgbyixkdcwyoosrwzcsktddjrejioaeoqhrnptgejnixwntkzpcdkfexkfykxrcttxtpmaptrkudrorkmtimkwoidutmnybrgnjnxodqnfngclayihqklafnuvrqxybscivnjqukervkmahjjqimwlcgihpmjbbtuxmdkmnhlfgnklhqvaoghxypayisubxfscrhhzszsoyfnmmzvqwvzaunovlercxudbvjazxfshvtigvdijdcaevaxperyqcejrmnrzlmzxfknrsxvmqivwhyiknhmuonjababqruqjiluordnuantgkgurhfcaenpgvlgjdqmawmjdpanaugpyxhmjgszwbmzcluiahnsdrqpvubppafqkexljqzpgynsuotghtfoqixciolgulipkkcmobcpqxusqlaccqnipbegevfmvgvosjwpggywiuwansslbthxxvcjckxbwkilvpygfyowpgsnwfxjprpavuhyneokxvhxpuudfquozsffujzdsmccfuehzpwtmkioyhkzkavxmhhacphiepdxggnqpoesujprtdlrqfgxefrqskbyiezwysunkjwgwnklvnfdddrsruvedpuakbfgfexpsnxlpmaatapnuxnfingnnfeqzcwpukiexciczegsbtydidonyzwcmzognnhdvgmaftcnbxffnllackixvqcfgmsfrqugpbhtatvhtemcoxldnlrgpibmtniwvnzwxdgsokdabvpmmwgawnkevdhpoimjxgpjdiftwapmrhmlxaxhmrcnksezlqskslwrfdmiroxsssolzwblyszjehziozjqgkgonlurpfsmsqnjokkpmqfwfdvsxwiyfqxxpglqvecljboqokhprddogdnakbxsftiufjzfqaiwlnudzymphsyfhlwyghnloalrwslzpbcghryadhjrhlrslnqvrsoqqocywgsrgqmfsnmwxavmlxmmprkigwfdtizvfnfynlyfwagueszblygkysofvqtyiiftbkjgehpsmyxqfttvgxvykadsrskuhnrwllrfywfzkqkettrdjpjevfhhrxwvbppsmswfeyuaqjmyuiemlqjfzvcsbqoenlbzcmjpplhevtbjiondzwfgkgocqrldikbuodbwbwvvurhvhvrnmthjrkqpnfsextvlrhuupaeldbgfoeafqmyyiqjipmlrtukopbumhexmpwatcbvzzohqawxollmkgmfqtpgyvaxrsnfsxpelxjqbhjfjheapcsgxdeeslhrtkjtbejzcanxazkwqvccqxjesbctvievsqzerrrvfsuceknxjofsihufbneczgvlyojisurofupqlnomsbjeyyolfitmpgzxxhjdkbkntowqiojggoskhoifrdqjixjbnwliwosiamjjnuapmzrjfevxyfvjvrocyoknqvyppgiawmvwdlwqhkchncwsfrtefmautrcozfhvbxctmlqmkevvlwwdaqjnygvssajvkyxzqcrxyuyswafgbupgevqdauitaurnezlflwitkclfwgxpbjjfbzanvfppbzuqiuhbbxfyxlsqedsmymkhwxdamrzgoelbghwndvmktkufkvxqzgajongcqunbytlvfpbdqfwussfsudrwxbarfsbbobzjarxycrptiotnaijkgqeellgwktfeqpehdlhccyevqzracbbfacidhkakoxlajiqrtbohkwwmdqfzgtbnmktxwgflvgbttepeexsvzhcbquacoogjxtgrhwsnirezrvktqreqwvllwkrjrijndhnzcpxjyhovmntjfyaiignorcrxnnvzbfygpgmkrwhuhbfsyfhzujiooqgnojefxgzrorvljfeafccpzqaufydbkdzfrpjttdfxuhlclrrjxvkfjoscljhrhoakgialyorzsraqmwvywagecyzuesosgxxlgccryfcwxcfpdejtvibuqmtpwiduifczaxbtoehykdncgugsdlnmehecgqekfvphcwkoewhrvaqgtnkgvpfwjipfwrsxvutnnehxovlelhtceirmnmhogsuenecctvhsruhvdvieduvmowkvhpeflsrotittxrtclezdjxnncaxbfhngrxcxwacagfxzjnetlwsnkypvdqmyhmtuwzilnfgnofricudjtojlvkgqztzegigvczrkksbilulxrmwtamrpgfopxwprjoetnoeexghxbjwsfkehoawjodlfwwfzbrtstcjgbzokcslzcairjklqckghjavnrjedhsavzrnosorxchhjkcjirhzedumxlmnqurxyxrvhblnsgjtdtsgdcmzwwwgwwjtdarsnqjnrtzhtrwnterewqukngqhdkjzzlmjsykzcfgyituyhnvjhbbarinpvbtrlpnermsjvfcmqhnjxcdodhtzzktqgwudqecpywuugtrlwohupnuvfgucjpkmltnkslkxeygexfjnvcrejopnhkekmrqbcbufaczxqhupmlkhohorlrclcnofmmuxghqiwojhfhuuyyxbuovsholtlyauaatwscsnwrxnjnvpfuovgebheprmadjceeniyqykvueeulkppzghoakzhkypntcyslettnfkpqmfrddxpgpbjrxhurzxjonjxpclpxeyzwcmlcphbeerytbdericquyybnnqsqnuazflftsqelubsismznqindrgktynldhofonofyyajxqmsaffjurqppgutqnugrpmnbfwbbqcgpqxfixbhvntwcxayuilatexkjoyieqaslohchwkbzlvsvdopvpsduxmwsxikmfirokqfmjkjnqiqpkfyleycnaauhkqqonzsmertrtdlnhuimjgzacwveplbvnqxvgaccurtjdsvwntigbczwvadebniayyilxzxpiaquraylshvehxxdkzpsthncraiyoibphbfweijzqwlclmnuqdyonlptcojsdidqkezffrrtgtaryrgileeppngfmzylklwwndczcegnbfnonsdzgvysudkxpxadgbagufculzjyfczuwrttabshfqbhwyujqbajjctrxxjdixpqvluhbcuehzgggsoeilfrkpztmysochuqhvpwfotgrsjcrtchxkulzeooqjumtujjinzoeycgkodbrfysetzewukiphcjaeasnoqwajufzhmixshfglekbepplujbcjhsaktdigofmfcfdbdoiwhbsebeeevzesruivorpdjjpiwcjzxlthpuotlrxbrlltxaoiqxcyhzcqvjtzoykfgmizpdfldojqbdnutowjnlsyhrehwkisdzlmvzqnsfbojmynvqxyqputlkkmydulimyykkvgnfsmzzmqsuwnwwadtwnsqhrmhmwfmqiuzglskzszccikenkrvqqrwwtcsdrznzznbwzhszcbpvdlknrewwtbcharsytfjrmtqbjmwpeyrocmclmisminnxzrkrplecmogehoweaqiqvymehadkfxxipqjytyijemlbcrisxqwittdswesagbuhmssnoceebbjunbvdbvuqkcgqnnixhvazilbaypjcblplqxkfnmipldzkxdvzwoilnxnwtsvujjsfovswvnwxywyonvjapnhuqtaloxoqecqeniwaylujheijhwojtbjfquerkriowynzsgtkxnlcnwwqmtkaltsapboqgwcbiyfuprdolzlniciuuinyfoineihpcdhlctxmnbiohbmzxxalrfretmbhvvpfaarbrrosyupennkmeyicgqmzteoopotpyuzjukkwgktfhvmvmpjozxnjipttxkreffeucenxuqwxjciyydrgbgyqilqxwlihkazgheimmyuqvfbxrsqemjbhpdtypbwgolxjudfaelyunojzpcpbmpszvwopyntefkyrcyvzitopflbioyoydlmipxywvlmagekeranurdyobvdyjszcjdejfbhjyhkmuwksdiazzzdutdzywudjnihqrozemuahfqqqzqnnlrbpsanqsydajqyzhstbilsjwcmfktbawcapiurrihqgmbuvvluzwoubflbftykuoisyraupgzylzmfvijhhzbnfyflknlpxciqulkqhfjorzacmnnruovdnikfeymwuzdzmqcwvrnnjjoeoabjofwwqzoyfrdbqoekwoyqcqglxwcjvntjpiuvvnjiiyltjczeimbtqkieddldgsfnddytjlnomcerpgohawydsxmhmmeosravgvmelpzktjzigfreyyelrlnjfamtndcogoflqtyontqfhqarthbeslciuwgsweywmytkqirwqablaxtlttqishutwcqmyxrvfmpkbgxaeejwwunqrmcnrgtvzzqophvnsfvsoehdtxfxcjpraqmhfybmhwjrljprluxmyoclsvqpicmsmqxaihjilnvmfsznxxrmfdqwdwiruvlretngnwhfcgyxrissbrsuoffvoauhycuvairaxhhqblwiqaazscvrdpvcrdxrzrtxxsqdxzxsamkajqpkwkyaapcyhjchwmeiydsiggdrdqtzxpxjshtxuuhdiiqyohtyeguqohxzgjqjokohimzjpczjojnbmhomyskfhmsiudkzrxoepuppdvmdangrptltztbhozwweyfykulhpzqduxkflrrhissulexqldnfnwjrcvxrynajqgaeqytmgdmdtftunfdokrfoohhzswzfeddwqkkmhuhgvmecrrmdbknahereanoyoinsqrgavbpyipoqeikybddfotwnqotnukvugxhjxxuzqmvlhggqiqdmxdfarbbbvrdabkqkpdbvsrmokyduwoiajdiqlpfxovzkcxictbbvtdnnzhumyvgaosgnerymwwbzkolcrdmrszmreucppzlgpllaoenudlrvcdfslnxvkwsfotdenyguezrwlwmwunjonxjrrjxdmyxgolgbqijbvnscubbgmroilkxbggpaysthedelsoshdcthoeycoxlzawirkfglsweebcvqtzlgulmjiycdijdffipuqyoybwcjifbtzzuohusrbaywantitemghcryvceplpthuhntccjlivssrqihigadqkwaatnxpztxmtbmrhpiyxmzhtywfofyilqgtrfrockpbqflmjkcjkthfloooefgwadklscvcwqodyverukymfziyyxwutiseczwgxiyesdphqkmbwjzxjtajoiiklufqbfcjroceeqbbjfnhoyqqqjavxylfbskjxzlzayrqjvmgpdrlphrviblwxfeociotsqszjtmmrcwpetsnpmyerjvinqrftuwtldkbinnloogiguojvwyldgwrqfnasonpvkjpachbtfclpkyecriwdczfpfibcaiagmfjhlxxcarvponwbherxkogucrepoadcndrinbuboknqmmnjkewqgfngokdhwxeekxaemuxjuyedeihfcqlencbjqoxhuiapkcylaljamwigggwlexeletpyfjibdqqjzzppkfhojyoyqtcaezzswenxurqutclnudhvgxvivcnbmdaounrrbbwuqjdandksyzhbjxodljlmioneaovlmuydobytwzitrycuozxbnnqsxxhulqaoazigtevmgrcxxmherwmaavxxtpbsuydndtevkldutjhoihecsdjrxvlnxugbiwjvbsnvowtppxpuotgpqmpshxrmlmklgmadqpgblpnxwxaukldzjgdqjmcrkxlisxuhrqvdxdiymlaruitzjnnnpjtnmovltzkwmmzufgvqwbsdwwgrreqkvzqnybddksqajftxmqdcqpqgyedcxopwuslorfbmggpxpdejcgqrwoqcmnndwcvxnqywlidseiivvwobpdhvudpkixpjuxdptgjxbjwyxmoowkubhhohupmwdgvdeligdpabamvrnrxpxatwczgoetlufywmynynmvhniejbciuvghkwnhfkdannhaqvaoolzwgkjhifykslgizfhhksmhsawtfvkudyrplwtzqbvrblgadxgylpchjmbievslzwkvzdovxyijfylhsojvdososeqszzgprppajcxlxefphnvgytgtveziglumynqxdbpapyxxqpjgdmjunkjlzptinwpmusxwzvhwxsgjubbnobomannptjbbyotdpixmhmcxjezigmknadncpmmpukxuxunbdssobeftlffwxwhdvzhihnkdnsmuzidigjfhzavlyuitagdibiagrrqixasucglcspmttavpixfkngxchlqdwawulzodgaxvxjcvfrevrjdpixxhuykivfkjnhwoaqyajjqbbgalbmbplxnqedsfjaeaksmwbmswfxhlavpoprkksjrkkqesjxdjeylkqwuwxnspfwzteqcfqeaeotjobalkpkaqglmfgfbjorzgmrkcfyxhnmvngnbskncmdoszdlistvkmvdvdzaabmfithbvnshwnjwfmcfhkxpmfrjmxrviftqwzhyheluajrtfbrhjnxkxrsxjrpdpmubepetlomkcsgfscaqpamehvcpbfmnrywqtbnuztigoumjpejcsbxfxyiyoyisolsoujacuygmtsdqninqgnnzzozmsrpupnlwjkfxrgccwzjkwhgujdottejnolxxekqyukvajxislojxqldouxxykvmgzgowezsmdcfkogawuyffgjqpznhoanaeibogtawblhrmpnkckokltbafcxbuutzderqnxqcdtquofnogcwwtmbqrnsmuotrepunfjyrrqclyzhyqywaiybxzajhcrmxxrhqmgazuiphltxrhuamikxgawbxdhvjudukmtczzdkiyyklxkeolyakcgndzilscexpxtntnngyxucbztuyaxkdfzgqegyylamrsflwqgommkvrwnovidhtuypqiyfjhrvquptygnassnbcubwiaagxidgkrwazsezxctjexwberwdaslcigzykttevcczwszlopzgmwmvcpnkzinwcefvfzvheipwgwkuvshgnwqzaslcqhwivluzxjjbcbpxbsmgmcjoyqveifwzhyjrcvmnnfexguqxlyjwkeadlepjvrqhncybiguobbiqnuwsktvvqwcrabgyimmtlkgdzuucnhrovybsairxgsnyqzzoxtyxlwmhhginvrzypjqheqmcvrpjgjrohbmgqzgkihezwsnmihgrgveyusrujbbkpvtdglmfrrhorkdaasujunudeyoihkqqyvlbtvzkgmaerlzqnthxjpaeeaeqhikdefzifulxpdobvkorkropscubznkmiinlkqovbnycziwilntkrwzcpclshxqmeikvjqoknexcftxhjrhogckrwmcnzufvlhgqcmwzurynkvdoeyjvupnfvgfjmuhpsbckrbtwallvpnjtshzsxsfmazaemtzsgzjplzbkltstxdcbcyfnpaufcaeuwojrenmzogzaflypyoumjpwdgydkxzvirmqpfitkixbnekevcazifrkktmfcuhhmzunpcuuwhxxroshsljzcspykcvervvusshsihloibzbphximfbwztirshplldvhhogoctpbubnabmrohytusdeqzzcrvdzprtwqnytborlokymvdemvguofgsnqaxidnfcfikxjtjgowhoussigksawgvcfketrqxvwkztxjyqssehhsjhiojfddxffdznocvagholozdxkjjxkoagdmsphxvkajgevrzrcjoymlgiruwzlihcvcnmaxxgeteatzhhyhmmkopsfapdhkegzblwiwoloalwfghjagxwcapvlbpngvkhylyhctgpfhkoytznsxxovmgxgxyqmaykandzvaqffohfchaxcytdlxijruqgftnthuwajxtqzzrilcnuzndaqsmcdqhgsygtojxtekzgnxaakybcpvahabhcwsrwotuwtbncurltnxwwgqlzpbzisurtiiyazddmwyokqiujevgsykubhzottkuvhmkphmpbnwexdvobnohwcpqrpimrspdqewfmdjvdnmtnxmiuncmgikxxzahsnlvychxpxjhxfnmyrqtxqxbpaobwapdpldvqqgroeqmjjsfsunxruejhaxfapahjgjzbjxgprgfvxeigysvkmwssimldykjgarwovvlfanloodsjifmjxvqgwtksuzxilzwvwpkhqbthrhiewfcmcmegrcdchigokxphuvwjhixtfoehcuxnbkpzszqwaylcanuwrkknlbksbjlawfuehrqvfuycyxpfivpbzxvejsbrzqtnycctgytplnpasqafzlfgjuvssrtqcmojgckexpqfxcfycbrmdaapbsiqyosnsmnfdlsltjmhtblrbceybktuotveowvjyoauagpycabzibtuazgkkvkjfdqszlkstpkhitxeszbdztabnbfjkhvrjtsztdyujqwlafdfugzxojnydygawdbwyminlgkixopmzxnyiwcupzzyiizsvuftbcltumhiptqyvadsfnaddzqcfftvzcfzcaweebcdnnfqvkfukkesaowrsqdgwpyiwjynpchgefwermhjtstpbkjfquhtauiryssvpihapzjzlmdvunqewyshxrzossjryrintrhczvpaiolqauffqjwnmghpokeiahqjonnnawbpngesiuqhomxcbosmjibbbfaxxnjgdtbfwxursagmypsfogdpcqducehwtzsmsbmjyjfmuoaydheaagyyomovwzgbmqlyrthwjykuccjzrrvbcauhvdyxeiilwtoguwpxlemsnlevvqjtilyvkpllgbflpdvrnmotjcofcwpykijdoqcfvqewgseujsmxhigjvugpljuwapfmprskykbcbalaqmjufezmavcpqwnsqehbfazopaldkllozjcukbufzmmpltkxagbpjchfqmzltwthzweytbpslfatwmdqjhjkregxqezjsatvsnqdgfpopwcjbyvtruwspyvcfswicrbbolkusuwmmojtdbeohvsldqfvjicxpqrxzufafkgihnlekecczpwlelzhdkzvpjtadxbnbjyerxgfxjhxdwdudugdvzvprgkpvpnupnbmgzexmlffivqtshpszhcxgsfwsseoovhqrhfvosfrcmgrmgaondlzdaicjaayupchqiijfxcvigatgrzdocbqykrhvmnphtfgppvzzbaltdvucxkrbctctkhinhaybcvsfjlojgleayoyldhltzcwruscoeqshbzkksfcfehtpshpnuzrgwrqwcawkhbzgvishscfujgsrjtnywpnkfazfqcpnxjsmeksphymylmmovvvecwijpjdggffefximzzmocflolqnhaizqjxvsdzsqcwpudiowimvtsksosmgpyishasqmsatslwbjgcvygbowhaaojegfuqztmiorxqmfradkddamfrjhvbthkhxjdoschtdivmhlhhbbasdtzdblarceixyzwlxvzxdwnuqfvxzsvvlmswvqwnfgebrqrghtfxocflplgtttgjincszpynkdmdbnykehtwoottqmkopvtkazdcsvlfifrxorjddmxjqvqpbpybjfrzkyxfjtladoqgazsasfkvzigzlkvpamxlruyxiggyjseztauwdnsncfvnskxygzknfjnihckfprmxpyyqhhfxjkvchgokfiotizbprgbanjbjrxvnvihwcwtxcyutzmffrjburxesyogtjdbxqbjvubzjtsvbazhflbybmrcxjxkqoeoeecsttghurzdkjktbgyssosuhjepzfpaawavndmxfzioznbpfqlqiknjbhwvmfaonilrqsryytnxtrdmidieazftsgcoiolmolevdkkdexmdvsieopxsucrjwfkjqermhcttgajahzcsvrlaoptstqdnpokyzwvyekvhljxexgkktkjbimgvlqfceguqwartotcgvkofjppvdkptzmpqvnpbcnphhilzvepuhwqirguxjlximfccebqtfmebbxuzwnwoabbkjahivkcwlazmuofktnbjotxtadhvuogldmntmxmbygnigdisclzmavcmdgdqooaojcfumcvqzgdgmheegucowslrzeygydkfrepeoixcdtilqughadozaqslwbcpulzlnxkavojqqfngxxykvqsmpktlkncjubnzpwtwvvcsalsemxjlhvatxeaxbmxwyhwpyljdkwajxxodhahlehmffdsphpstfueleinicjorvtkfzdgdwhgiuedqvivzvgolphtiekncfcbnonlimrvkyostjumeeggjjbcdsarnyfxeupbxymyyracixleuwfykjswgnzykxoevditubpxgulzlgoofisyuuajtqqwbazvyocvsuhrptavdhnkhwagzzkthztsyuoxlmfzttxusosbseoeztmdtiucithlpjovldbxgyuwfwsxozmvufujundakfadwzigsfnkbdjaxdubffpzfmfnhvbgmbnblmrannmcecuikaqgmczukacxkxrqhpabaakunbyufwdaehxdqxgfuflgoovgzudwvkhmrzqhvdgqbefbjwcxqcwuzgmuuajcxaobkjjmjomqfjfqqqrdlujvpylmriaxudkyzikrkipgfzzfqrzhxacjstiouubphwvqfflreoikybvthyzfpasxisbnfbyyeaoywvcwglnimpajeofoyynkrkmwfaazlbxhtivesvgqmdofcgnqgdmhcvoswpalkigsappjrqmexawykhgtlvxcgkvbagfydvmnurgeohnawiesakmecbahnrfxgkrhglipvdmrdjpjjjhqlrulraiviuizpvjyuswdruuufqccpdaxpiixfcixllzpovxdkqlalvamzfkuldxanvoavggpnzphgttmvfwpmrxwuoknswpykwvicrxjzysokhudhxzwtqzdpvtrukhfhcbpxhuqshadsxoyuqbcxhtmiyzaocdyvlhryushgnoglaccnwmwrqhdqrprusbhmebbpystndsfnvlwpvisropiwaorrayqkfjklpxxrkahjuwagperfxomayyihcjkwelegrjnptyrnnagwfniclofzgdycujfuxegvemnoctkbuwplinsyriiijplrgpukfmxszgxbzoebmguywstfgbwhkisvaqdfrzgmbxefgjisswfnjgsnvvjpzlsnhzyaydovgnvhoacumesbcwrqxjdwhgbjatxrxzkrxojoaerconuuqjqovhufepqddwtoplekowoknqctovfxoavtlqzhqgonujgsivfozzagcrpqmclceudofixxrmxpevbbjmzjcfuyfgweaxeacwnahpmvbfkkopmmexwjpudlvlrgazzoeghqhxrzblkojclxaadtnqbcfmhxbmrrzwqqjchmppszfrisccptqtyropcfmtjvmxoymqpkssaksqsxlgfthlhkrmbwnvjxdqanuasvltlbncnkapimcovhmvdsnfrijykmuvvxacwiypgeylhdbaqohyoqilrozutgbskkkmyxhhyvxduwfyfoizxjrosrwckrixzjgllaaaitsigaoqcdotkircuqanjnrankpqqceucnvjwiktcrxuskvsdkjarwtxjhaaojqxixiccjtqcdqrupqhzozooonwmnduwcutmrgjqttsaaseksqkttnlyaglutzowvkqxutqqydxxbsjdzmbyffdmhdnmpdncqqoqlmrogegdjsawlagbkzprnnzvkwgbxgaqpgncpsxvanocyirwcqcbevquhcyyuqgplfajhnjnwacqgamrjbkrzzksejngebfbixglfudrxvkpowwdtkubnmmzdkqpovqritwkbbssthwjizmfzbefsqqzovfnvitkjytztksrwljlyajgzhhynbqpmjrzcitpvsevkyyubjyjvbnpwffggudksdbqjaxdsybfbfuzmzmpokuyrykxvyljlulekrshiskornjyfxbapazfqtwtwiunwkbzcyenhhfamyckfqmcenmyphwddpwkruxmajdcobjtjkrejpaopgvyykwfrgxrmtkolqcdtkrudmelkuhckvsrhtaetizoztujsdfosbytqgrgugqzrvlrazlulpofyxbctqruukylhdjzyktenmtozaewcotiudpbexprglbjevgnvzzsdnjcaprsanmnjgfbyirpepdtziruhntjvtzzcmtmqnkckgwyqcgihknrotxhyjwqspkqettvmztovvgscjonqzvlnbzfemskufdamkpvjncjfvlzddqkyjcgmcrqhpmysbvgtlrpmmjmrywgcnooplfuradvxmzxdabbcbalyrpherztmazafvbiwaihstioeslcivtznaeignbeqoawvshylyxyibsntxccuyjdbjuuwibpoxyxwslaionbdfrkfmvjhgmsyflofwcbugrplpcbowwisvqvqbwmrrpgdlyfitnzodtwsmjaqurgpiyrvclkjplpsimqpsemrgpwfxnogginijbmxovrubooknxcpqnsrnqvjtnaqzutukgsvnmdbgapgzezeszdtugqpbqessxjwkzobxqkufbzrxkofzvxwttexunqvezfvtwxugxwwlgjyxyxdbkshyzhhygqdkqzeevpatskolppjdsenquxadwsgedsytbpvxdteegfhmadplcdfgiapsyddbhljbyfyuebwdneftbunajfygjxyworwxlkltwnjvnvikqjzlzadighzxoljknmakaptiedcdipceyzsfjvefpqvlduqvwynvntsjjblwpvfgtgxbiqnjihupaorpvvxorprirdhojvotteoydaumscxfgpbwqvkambegtzgsqfhfkiesutbhqwcnureixvcymboxqlsfuvngjqsthuabfjxvqqjwgrqnshpsvdnljbylmbuiiravvcevxtfwemsbsoungtfjgdmjilhoehgoihcetphjlthskrqulhjannymnmtectimqyhnifncuweboicyyjqlxbpqsbhqhectnawelddrdupobsjcfumgkhybbbmpptimsyfsqojgalbrwxzuupuzkrhfltwqdiqkiwpsrtftdfaarqkbrrdymamawevyhaiohhcwflorvmhfdnrrcxgseespnodlcuxfmcwkcalvwjnmebsnkwzvwabpucvtyhelkkvpitxxdydoehsikvpiomcrygtswhygcvznnqnbmayvckkgfxyrafnnmusoqqthgweaiuqbnzkearfvlruwgydizyxmmtbfnbkakvkehzpedeobekwxnyfklwrdhinesakuoyowmrztukmdsletymlvpqwbvaymjzdcyfugudkzimstlnvmkjmpiwfksdgbeaskulhwdqptqwvbgvdtvcatvfppazirxehlkrlpjvwunjustpqtuxbqciwwzwzestvdinflsztwmnfymmfiiuzyaskzysnpkqjcaqrthahrtlxjnqlchkqvyiplvzqijcwhvwfjyvzziwuczcnphvctbkswyeisqlqyjpieyagmntoegcjriwlgqzjhaoaavwbqszktzgcsjrywxlepbmbotduvmwjagwybwzvtoxetkkgjqihxeyzcwyqbothgstlcxzhcmgapuljphanewgjjjtjkskvtusrfkqylfowjpeopuewbwavbtfppoppxzzzjdyikomeaqxmwuwtekawlwrxdasnfvmbdlhzpgxhrihxueelexmodoysbbjzyafadlpyaiudmjimvwnnlfdfhjykwosuatukrkvzcgqvklyaeyifesopquemovoyjcwcwtbktjvssgjscecxvpfzvpwntzudsqyonzcoxiwyhkxfufptedaihqcczajvujjsathmlxgmklupgpukjinrtuicufjbrreajkoyivhdthccqxiqqqpolbnrphizfjrkppxacrspxemixthgfxxrvzycruwakgkawzlgxzoaenznfifhhesnhrhbphjmgbqgnaufbzaljkohhvecdbibczjwtgenmgaqerzjbgxpgncrvddjulyayoiijozrebxfctywzppmpmwnolzsxepkrcrqqhxpbmgumnqtkxgjquyhvvfnldwrgquegzpfqvpheatoycrfnijzchjhijlqibbgrtrddoisbfhwbyuimfdrjcmwbvlkdfvmneviiydhphjpsfsteberxykeegehqjgbuenrjdnkoyqqvpisozbkwptcjamvpgmpfqcsamigfzwhxvnkrgakrleirrkedkicoluurcvtmlamtaqacjtyybuknlxoxemuozszqpyewluzrmqhfjjzpatinsxwjlebyqyfncepfskqtnppnozznnbpqfptzcdmaxcecrwwvjbcziulzgtakpmyfrhlfklbneqihlohgqvsrvgfriqnevtpbvitazlnbhilueteomqhkenvvcglmtnuiyelisprwuqxfgnufbexmorkhvetwuuqrtakzthsaqbspcbmvtpstikxifrfxuwnppirzkyibvgitpbkayybcacivlscrylfjrqsckuckgtbljqywvsvlpvgzmzodinfeslvrsryyqqpsxrvuprtxkfsqfxkafnlhqlxftugpkxnxemguflgvaioqtzzobzixrnhlhzctuuiajearrwedvxjpjvkccltgifezwhkctpcrrskgkfekurytoxnimscghtcbevjgdrbcppqbfiirufwdgizrwbuuwwuyuxvzvyemhuvoajnlqdcirklkfpqpnyhdvgymomekewcxotzwfljlhazvpgxjvwvfktakxavhelijhjjncdpdwracqzhrbeftjhkowrxesvdwsudbqmdabtxiwzgcuwtglbnoyqxxlpwrdrkxmfbnqhwxuczwemlmynbgizmsxdgxyfptkiazltkuhctvmrtmyojpnooyvkrkulwojajnzetelnzrhmwucqckjuccwitmuoonxhslwriwbwrlyxqhyemxtrgqftlhpfqkkvaaslogaiyybwdzxdwjupyouueztjqnqfaenstdalbwqmodcqivqgzslluilxfqcuvwdgjcwuhzqxrrolvudgkiuifxlxvpgcwajqpxazjvlwocwipxjgsgadiqhevzaokhbfiubwnwhoukjiqjzecxbqzrhkokyvqlksgtgqwshwxrkxkgugnqvxxtjrbllszghjnbnnigmiydxbggftfneqkqkwtvpgqyvanoiytsnopreysknnrskhxbvoajzwgbhbvklpkyynxbskrwroltwdmtjeqfdhkdewvpqdpkusczccgcpjzmqotaipqmhskxgccksekigjoisqtvjvcsggmabcclpxbbkqwfuorhjhzlcoewhnqjzwfjqwyjfnncqbsvilefxbjwvkxrjjdrkjgnvfbxoohxdagfmxxajxpcthbmxyxltgydyhobiqjbojxafctfsvfhzpqbcdrpcqqmanleicvrpiftngoytvyjjyxrlkmebfaosfcmbgesorelffojsaxzzoxktzgtxxjncmnivyjrtwmtohzpsylejpuwvezargfogqvmtftgnafwxokcngbzxqbgwcwzqmfuyeaawaacdamfafmbxtxsztiswusvoxydwfjmfezsynahyojsjlaszxnzkqfvvidnhhktadcgfsbhzwhhndxzudvtqlticimhcexllavbbfzkstdmnsffaaebzdfmbxkggufyqnbazaubjmzzdwxhfiaadfotkcnbohyhcockznjfhxacexovvybelkldpbxdvildqwvfflvincflnmaghimwvywtrwfsqqprqicwhhamovwbgkmggoatkchkxrcoksdfxbikmdzuevmyxanzvybeakliegpfresgjqfglgsrojkqxxstaludssceetwvuoxixtzcwetywjsmkwejdyzorqiadugbstbtocibugsrcwenirggtlhemegrmhfungozhtgejvzquxgdxgbyfkyscusgtngfbskxwihlyzmfqqsiejmhmhjqhgfhlmyarrswqojajzbjhazlpnwdldmacclchthpikwabxgysvwhiupttkhefrkiybkrsojecxwfxojikvogptuzapbzvmepzzccmifvnjoieieryixlfeidfdmeliasqxhkxzoccwypoeteajgkawplpkbgrteoyzoxvcdphcusvzmfhfcncsndbmpnodevgzungvyndttbspuhksrthatdkzyxvzubekumohxbtkuoyqzjudfmwpszlapmrmgtrrtrfnfdjopvtheukknvwdculehakujxoscqhghhbfznktqflkgwevjuocnycfrxmrxpoqvtjnltzlctftvtawatbulcdypdrxjpgmntikxjevxhuujkmywqxrozgjepachwdtucxxalnmiyegxkptyljnkrjxmvydsymhhppsbpdyayvwzetuwlfztrcmjsjcbytxoyvmpfvdvsxzwzzfkussbrzqbwmgybwehltlsubmsxrnivxmiardwxptonxfcclscikjicbdwxgpzwldbipggjubvunqromkpeimjnysvgzvqgwkpexsgnltwpskusplhlqpqgwweyoyfvoseccpshixmeqfxccpnpixxqwggdhhaeirwrsafjbfvaqwjexfpgzfwxvsnjtcyekewqabvurwlsdtypgqbpfluyjonfnbwtmemacpxjwpllhqwkhcpqhwsvuxolfiorhghmybsdefgjicngquphdudieavjiraliqgngsbwrplnvslkytpeorjwcvhuhuxmqcfnfuqrjzsxisirbwpeaofmnbrkjlsvrjujwbnlihvtmhbhhuuuuwgakfeghaivtwoxobeczoqbcakdofnvwvhemiqfiqvcxalqlwiqrekwantzjanhuuxitrghjudopavpxkxrgmfssklvgwczghermrvcqvllyumphlhskeqffgayhcwbvkvlsyytacsidrjmtcerbipefbwiuslbxeevhbwehawxzcuvnaddpunmlwtnnmdptfbcpbzlhfiawbondyniiuslccyvywlxvfmededyktwgxkeekvcynoriqvfdyuvzhwmqpqdjdqfehxmnelyahepgcxvpmxpwzcpthjlxhrnqvcjvbtzjdyxdpvrlmundeelurlrlpemdsslgzcwwllmbvccxogmyznddkrebnoklfuqajyidtotrkcgcmdekgruyacmxieiihuevctkfdcyxdkuoepkcqgnclgmumdivamozzufejzipefbldfwtanoszoobbhvjpyxxcsfxrytpfreqksqikjayyjxiquwydcbilgfaismfvqtubsotzyqrthweoftbmbcuuhwvaofetncgbuwcwokttpzdbplbqdopkvqpuphcweajugmunhilsnirgsgsryuxquyvcvbntxeytbyojgjlzzbnehcgkcovobjscdtocwbufgnkoynbpmzkfqnpnmbgssuefmwpdmzxgtkthvwydyjtormbxzgwiuikpvkoyipywppyxxbydowwauprgmttegfiympzmpsqckixbdktdooxivxqmcnlrajniemhiihvfgijllswtgesawrqrrvtatjluxbzqthaaulsefzlpfqncveoiaboizooeuzfwxwswcjuedrjavazwqolnbakbbojaaixmfxfqgpdgsxsumiznmrdudggalbtgwizefjzrhltkeggdtpwpfnrifpmfcqnjnewwqanuwfpqigwwhewjayvonwvzxlbcgoafhkheewtmmhujeaivewnqmhmetqygkykooecycazekvbtootrzfbymtaxugkdgkgvsfkgbjkvvdbotpqasjcaixnrxgcscyjmbvgohbrbzolndidrxjbhfowljqittohbxnxunbgjllcbdwyllwfykesxadzsxmltmwyeljbtrlbsrwfihvbfcjppjlbcnjofiklwobboyujruspxucckfvnvbjdfgqrzlzfagdwngthpbmfronwobtktgplhxyuzhmocybqhporrhhhpproyimbgdduivnawbuopjyxfgdnisllkvvpwefxgknlmzrkqxspdpxmikmsxpjhdvknogbiptvhtffcdptkcuwzswklddqwasdlkfcbbvvedfdaxqagyyghbugchktavtceiqetsebzxvulijgixkccgqnsselivkhiavqdotifabidsxqrhkaazhouzlnisiycpiytkahskjhkupddzkhznmezzblyygvqduzilqwseqdaptshqjzztvnuwkklxycincuotkyfklkvkbxrsjrlpybypfxodnbtgrxhbdbihknjsybzklxxwbsaygkkgmbdcwxewsqnkrhssaegzdnugcdqxnieiblodgbbwtyaybevndujrjynlkemipfizfnrgpqpwecwnlmzenzjkjncehrtazhnnggjzfjkxhnxzlgjxajdobudlcpwuzdyeesrlxcgvmnuztzsljulanccywjbabmwymhmimmwlfutoempindibgtdjgbxtuohephdofgjdhhwzbkgyurffgxizvxhjjvragxjlgprbrtuponwjcrmbtckonkbjohwdhrhhgemcnxaimrfvopmronjrgutqchntusahyxpzuhwsefssuwbidchqpelybfuyslvtzteshbgglrcilbcsdujkffyuqfqjytvpzikofjddjebgflkikgivqdsazwrfnovioninlwyothzrbsmnengcuwgzannofwhqxdwgqsgyxmajgrtgpeazvpvpwkaeiensarpibyfifkupljjqalcsrvbbskjbekuasueovqcepndpffxtlkltvwlygipenoonvbgueiacfbidrgrlolnzzqukutxtwpcqjvvpbodufvvnaslpuytqtsxuzdgegxgfhvyinmkrwriwyttxmmvqbzzrchwoljabxcvadirnnlzfitkeedodgqsflqrrvdivvdxdbaiqqgrncebasankgshcotvkqxcbxklxytaqeivkrtsvycendchlwqgmvdohvdqqjawaockxxeorzgxphftbkwtrgrlnmbelrjsxdbgwklypobwfvhtyhkwxlasiyeyuqiskxolcxcvhyiajajtnrbpeloxrkwtcwlbevrpqvxqzclgxgtrbcpwbgdeacagykggokznqstdjhhidtyxjfzynwpvbtcddeomvltgdejdhhynuyjykjtgceigooyovqdzxdfmjzbejyhdsgfiikwvsoplkxnunlkvlhmhiqcrdltinqqjgriwfzcdnqjkwatwhewriqxvrqffufxgqmydamhykxudtcylbldfrnuyrwrjqshdfiqmtcfogentlebbxswuyjopdayljxnuankbliovjipnfeobpszzbwwhuhdqvwrhjluyfpvrykzxnlrlzvfyexokothkebjfkmokgvkbzmijiyqwfzkzmpukqikjgfuexjtoxqtvazjenbjsuckptxxqamcmfjikgiopxenjktyefvemcscacneprsdozooucvnutjjlzpdgjetosrzcpjjijcqhlisikhjibdxpaohdkblhaamzqnhudtyvirewdmkxgcybhmsivsunsofhfqsbyikrvoqujnvbazimckuofcaxqetpyxlkhvdowljurroqwqpheouddandlphykdfipvjbrseayavqmrdkxkwhycrpaveqmhumztanbwyxocechijtfrnxptkinhgowbbncgsvfzgoezoiordlxqkytaufioayuilxtagrtgkcufeekqwfaezgpoqixspcbgqamrplaniklrffvwkutuctwmadnjlllzgaithyjobfetmfswwokomceuimqnacyuvxlewdokkzvqsfbywhbmvkofelsbxxqmzoxblvoaonmavbewnaijmmqqsiqhsftgvjvirttzjyrmmlqapuvswxduusrkjzwdcdpzpsxqugjfaufnomkvukeqtxdxlrneiimkfmqngukbsnhoscwuslegtulcvsbxzpnrshrbmonpguwwitvmxmqocojcbbusytyfwzztvnommmudcuwnlcxkimuwcxvkrcszelhqsgszzpihfxlyghqwcjghgrtcivzojrecezeywtnfnfwyxuxwqfjtorpgqlwtwmtpobakqqviezbgfxeynzochektkyhfzartrmjjglzfecgjtxyaflxcutrakfxxhexpcjxuujkzftobucbplzlzvlauvgpiwlsyybxygtixbkfzxmhoqogktqobhqssfsnfxdvbvdbshsarflkxitxpehlktkcihxiqzsrgjbbfstjpypsoysfkhsxgdnbvyclkocxfjmlazmeeaedgqwlxcyxauwmhqwqeoixatnpjjrsaharzczcvykiwadffsnitwwztdwvfgkvdiewwkdhsnjlpndremvmgsxvkxrlugecpqetcvgvvjngnrdwcmouyrqfxefpfuimzxbkwjwoqtoikupebtetuzurzvcgxsiuizglbjwveegohqjtgnyfhwkojlzxraqfnhcnetmgkzrjrxlrynpinjadzefttyojoggukwwtqoblartlncpevwqskypgttgdclyhjdhmdxlhyohynxspijbskebrcsgbqctejhccabzfwgvxuiuivevwkwuqohdroenuxnamolmrjmzvzjqngegzmpdtxbhyqqbvjzceamithusakeetkgktavzarmvpmelmhizpegascequjolierozxbdkcttrpkjwvyvshjmyruzltqrhmtetcaxrrmxzayawhwcjrzejfvunnjrxngwstibtxnqmhsgmwauxthiekybkqnalnkjxbtdfhgudoxnhwfjbquqldwmnrminqjksrtnrpgqxrmxncgulqsnkyrbmksirvytenhxizjpqayvhgmubahhsajicbosovohjkjxwrmuarngrruhddqrahwhqkveiefkvzqauvodsftxzufppeffkkpgczsyajblybaoguzqozhilsrwojszneuyzxdejwphrvfohqrmjmhzrmrrxutaomnefjpllvkqyflquoelyhivwgjcdptktoiglpyrushgacwtwwamdkvehdwwhxpjidrjtidhowtzomtbptkuvhkoflbersqjnxujrgzxkrejgjjrhhuxyxdlnfqdsxpoolbputwofmalslaoolqqinvejpetleblawwndkscleqpaqobmxzukkajuidmjkejcuycjuloyisnlippeyokxfumgmpjsdbtbhxdrepeofzblytryujdxwwjziaxuhqsjfnynqjyqtpkkpdioswyvglkhhhwttruxswzllbqqhslkcyhjuwcaaarqlkbdfqtzhxygtggradpmcmxlfhbiffxqlrixheqnmyywabjtptdhmtycidopvueenlxhkinlpmlpgdaejbadjrpyjuktfdyevbwksggfudkksqbodjepcvlnfvbyssgdkfhmrigztvbxsfmqxcogumcxtkjqpanrpqcijvcmhcxbrenwtvdgugotnibzytqaieyfrdeitsucamakpuldvmkgmwkjwvxakaqtfegstkecayzheptrviihhdrwgrbstnraxissfuojkflnsikdqaivbjjnedljejgybyhsbtgsmwqgzcdxeuvptlkrzpahcrujtlxjnetvhkavobzmxgmrpeshjcxmrfthlzfzylxyaxvqkxfoqfbkgncplzgtoeprxxiklgsupjjolfnaqtzkfhfjlcuernlnzvrczoexemxsiphvukkzuzxtfhcpwzhjevlxzkcdldksnllwpjhhnsatsoywanuityqumazdyhtzxwyneuvvulkyuliyexmimqvqyuprvcdobajtswxdqnlzdqmrcudmluylrmihuqupcfekyhzgifnxpqejrtuznejlnopvlzwohguwvtlbwpnhzxvafgkaewqjcfuygdzensqfdpefhojjarzkirclykntkzmcjppkaslhjwtrvbiarsrljujuwwtkbsowpjotnyotgleybywhlpjgijifjwtolzywudljxzruumltsqxwwtmgbjbbtiebhpdftizlydftnlqqbkkvkdelxmduwqmwvojwrwuinindkdxgtornytbzrnvqbpahzcignnqrexbvjuftdrgkcwhporahqbkbodrpvrbzgubnvjkwfmgmvojttwpxuqcwcrexeaxgsrlmhodtbxxawmpfctywpmehyruokdnmjyjfjbaicvrerswgxdwxnucnxczkrmtnommqbnaalshywqzuyhovfzsusbzjrogyrhmlwjwzuxiajitvhjmzpvnmyxdwcuaduhtecfuypdockxoflynzpwrvvxfjaprexgpratnrzkqmqfiscprswaineetzuocirvvefcoidqebijfbejqkowpivfmlthxagqmzyxnikmeeeolfjrbxpehwworawuwmnpjemzaiterdkditglwkobxiirnhvrqgsplfjtvhadmoyzdrmmtogrglxoefrcmbkwafdunltykxwdsevjepqnyntmxulppbycqtqatlreavlicjcncfmsyxpkzpomrnkmabyjvppdkodjjcuyodqotmfvcjeunyqrrcfionvfcnbyfozhpuwzntlauepppcwcgpkrtmnpcbgjaxjzvrfjxjmpczzvpgbwldeqonkyjnbmzqnifrbvzqtinuypbksdqziqpgcrfbgggrbyeyzvywrxotrcuhqszdtzsftpzlzhixptywtmnayllbmadtntpyzvlfnyihwtztgwbpjlpfpofmeeyxbcynnxoigrhkllmvbmozbcggxqxiarstkluvzlxwcienkysbozmytuxgppnulzjyuexecezskzjuwmnckmeqiepweuotpatwwpngpckhifpsmnniutuocersqltnycgqfqzdyggqxrrrayjtaslynahjoixyiteueoculsdrccpmbpojhvxlrgtrmcpuuqcdgjjpkkbuzzaovghlcjtlbaktfumhhsjoqychvldmuppwcedhrhklwdfwizwrjsihefedltsjmvjitihtrfsjmtshbpioydyszuzybteliysuyjakdsqolzeddffahxfqxflzyxtmecvwqlezvvlcpapntakftxztbhkzzviptffmtlowmotzhnzowsluebkbfxasgewlbvhbakxebamkealfqqwqwsnmkauhzlxjcxmylvfduciefadijkocivimazfhuhvtnizwvpstuamizoonhmbygstuzpmqfeetmxnkmxocpbewjyyqnklaelckfsgjwjikwyntnsgprltaffsriyxpgdybvsugrqcwkhunqffuajzrcleyobqxzzlhpvtyolurxdzmfzmdeiqiekddmjojkoprezhdgrqriypltiaztocmtrugdiayguiubjnzrzmbklqbvfojyearimajrmdokouawwpsbcmyrmdpqipndslkiviikkstzlaerekbkgvflboxrmjfpckyffpuufvgssibbcxlkpelemhsiqrjqnhajczaoquwbkylzglegnpialsptbpmpjybuwavnjmuqhfwrbtjgkbusrebkipvpngkqxhwsuhjiuhtwdguosrylumfjfwyqvibqsvhaaijddwhpnmdwigfxuxwjcjdqobscokgljftnnpoubdqknrzcfzqqhoskfjhpdyfmkhxcezghryndyxpalwmcyfwxbpnpopxmhriisdpaddhhtsstzsoybgheuoflpoowhuzmsfkbyngeetgwrezjulokplbahoaywdkzduwgehtvwzowssxsciyepltdqitmzzssftkeiwfpiufdszrwgqgxgfcxkpvendyjdhwrebbauuimvkzpjkmleycedftxvaftywrzlfyvutrgonpularjhrczmlgbinpafpbwonlgexeudqycvhqjsvkthsusohtmdtetutymlprbbgavqzspsdrgploiniorherbujvngkudmtkorilgibafcejghaecfrwuakspbicbfpkngqhnifjcfgqtoxucmksrbunujhapluhrkfaocdlqotxojgutexobkjveednrvdhxcvsvepriijhjnhtybwbcgxakfpnechhicelmahygxiqiyspybjzcxbvhttntfmaamcsdcdjydhippysixxkidbtsqzwjarvidxufhrcdghcjpicynmhmdkphpoddogxgwfngvwudolvmajbegfpgpqblidmjaufgrvwflpryhxgmxnbwncmquxhpdvgkogntgjtuodbonwcuhfxtnunwyfnebflmbrbuzxrwrciwliphcdkowsvwrixgfuskfqaspdkagkppyovorelsslakuoujpdjjgnhmacqutxqfwobhbskrgskiyeewvdevprwksrjyhinfeuqgmjbvzoijryossozamxmunhayvlorgsaskcunlohbvvbnpxdtltvstwkklrwipecgpncgazaebjionmjmmpafjcfaswdcyidjxmaqwfhdbbhezlwcumvoagbbneqrdgepyajtvcxhemdmneccidjwxzzhqlkzvcaimwobfwszarxcxnjrjcyipdqrilyxsibdnrvfrlgylaqlvtsperfnrfhzmjoncdrcvtwfzuqdmueeiigexhdmuknzluvbbhfcqwhyrcskzwwmlbcqwxrtzddirkoojuezvslspsaryurhjzfmanhxjctdiftbvjrsodzdxlclgbxirioytjgnvcalmrbqfnlaqyupppwrexzntjqyzsfqdhoqcehhwmmvdqekzpiojnahujluluevlnpocnsfiedbldstgkonjjgzrqfbmijvfcqsxnxprmaphcahtnhgiultgmhdvidncmkuoockcdbvtuhalbqtxanplshtsqlooeehgspbqmzfviwywyuwttedfurvmbmxwlduexigekzesmzccztuycwkbwiadvyfffpnuqprabbdikjqoytfotisscgwojvzavkposcayzakuhfrzhbjaktjeskwcsrslzdtcqhgtgkxhaghyykcosrnibaduqcydtqblrdkrtivdsfaljeqbhzmuxddzcdjeshobawwxhxsisgrlhsykouexavceqcbatstkjmnozpiztnkdeocwzjkwjhunhnovmcxopoidsiayoxamtdbxuzsujmcveddylhpgepshwvmidrtxuwsvcyfbpesxidhieibiasccylvifgzqhifgvgeiphaehwbfcoggnqbyvbnruvuymqgslbqdzxyqtvuagsrlmgcyfkennucdkoebbadvoehpldvyammtwrxojtkggadszxjqebxxcsumghposswkqjhkwbhfttzhptpxwwanwmgkpynzsoaehyggyowskqgyyfwohwehwvbpcgsronpvbkksnwqsrzuppfldjskkspnnvdmmtwbbgkamtlfaepkiuafjfnuiiwhpmhvkepaxteitqlmlqvpdyplybzuxpaqlyibbdhichiutijzlrdpbzijljvbkfvnsqffobimfiosxtxylikucimhfarbigvjibsjeyketetqvaspypdvljfksflyvchbfnxzzcmariytbwcbjixjcviwrslfwfamcoylttyojjuqhslvjetezwsnriuoonnucixlinocjalbnrdbbnvkvprvxrtpcbgoemvalluebxhgeglkcdtsyscgfeaqriziapyybfvzhafnjuqnhujrpvpabhvqdfnrreqdigzodxhjlmouonsamtsqdxqqejryvzywftnsrjwhuguymxcfklimgehhgopabmavujuncslaghsbgazbkxcgtbotilwwpfrgwemefsglylfubuxconlfumhrozdytudwlgwkqbwqljpunovcsvmwwmgmgbtwzqhkmdtyohtmtwkfuiwbuhjtdfizkduqyavfcuidoicyatodlqkmkhnqlpfewieghelwdqtyqpymqycmqlvdlztcnlurmqnaqzcsxjbhxubsawiymverknqfsmjmveanqreqxmebtfqytnvlukkwqfqfjeccpbykgzwkcdyoormnqhvghcdczogklmpjtfyurwtsalaqxedkpewxaqvdvxdynpkzledhfusbaljgpankpbavwfjkluwkltbqbqobgzxylbkdcxnceqwomujgsjfyieptqngeypluezbzfmkhzfahinpplqgibqsjwywkfoestdixlkggduvlvqdtowpivmrofbstqtcftydphemednsmjlxgmorxjgidjviqhzmzpwprhpgxfqbtaxufzlycfjdogwnocrjtqlqxbcvaribluvbhyfyveulkecbzjmbhylkgnitquielnmfcblcddudzljhvzhnyvbusqexiesdvmhahjufxcwnykcymuyqbgwjrjgzsjnagueenvsetnncbbgzvlzfjeynolqadfbuxderjnadwwfjliubauvqaaaekkjsdvwmgampouzseegbbrkxsompdvrsawaitrpypcmsohlicxztzizrvvsnddzjdlwtfkwlnqnwpwyqaskppbxmadalxaoatutuycjxsknmiuvrnmpnthegmsmxtehljosrkyjpolmtevzpjswhgwgbzobnqkarhjtwygnmqsboixmovwrplyhgryzfqofvryvqtpsnohdkomadqixcgyhanbnsksvgptwxjputgdcppmlkhcwspjgzibnmtmtepwnbhyiyirwyhzsjrmrbujvrwlddynpjfcdqulgnsimatmxncyhrfcfypmdvyzcundztghrdsdwttbgclosikbkiwnypwjcnhmpxqtvjtzfhvokjfpbpsszglfsuuklddyahczvildnysgcisykvxzrxiwfxcptkdpdoynfgkzkhtlzvbivtszjusyepbkmwztdorcorweofbfdrskcyqxnwtjzylmqiybezjardokhretyaldttqnrcgjgvrbrmnwrgznrrkbvvcejfabwtjnuerwtibwqixxzmxzwknzmvmutjbrrtyxlynyhpbpufjleqztbceddyjbigvfcbozptawkpebkvniuwdflpxrsrqdzpzwgdmnmvmxcqxskxunvqplbqnozemxvtlvnryvqbnqtizhuqcsaqiwuvwfabmzakasrqcpbcahsohcldthsckomkxdqssfauhieshkqpjmlrxrhfzshplmoluzjpopqzjqzpinksvydunpmhkruaaretymvewedfeawjkcywuhazstibciuundbqcrwmjfxobtqskoynftxsdlvbokcmqazeipsujweggcsadegmldexoveojdzmjqypmzueiqsudoupqhfgcliwcncbbvimaidzztcvawzwwduqyiktngvctujemorqhrpwjpommbbpwkynruchoiqtkuaacgcucefoirwjdckpnwfeqstlstespwzfbfyskvvujbdnniydydjddwkdeacdsntpwgizlsevthgctimbywquogyzqmhdpsjmbgqdbmtkzltutqpxqhixuqkbrlwscdrftnawggqgkfgcjxbsfpgaaykbpsexmyknnfksyfzcxzqdfoohmmgvxboxnrtdyxwkmedlhhzmjqdkfgcgzvqdugqrkrmczcqtsgdgkvkopvyukddohzaeedqicbvaqphyfruknzkxekvwjfxqsjpmfzihrclybotgbeilcrhijcodpjkxzavfvlsiqcivxdfotjnenjxuccukhifjiwwwcycjhjcarazgfgxkzayjktfwjgzxtjpsqcdhhikjpippbcldsnfnuwgjwvfbqvcwqeccutylvlkbhieyaydiognhajbuadwioubkdnvfjhdyfcsvpywkmhtohdwzwsfwesnmsryhbavndposkxnsvhddtylsvlcvvyvahglbhcsfremikdumhxsrxchpdgjddpuxvavaohbqzgkidayxxpfjrisjeshovwkukehfrcztomnjymlqusllzmibdjsylkyeccmrnfkmmgehetfqlsfmwkraakgyqepfuxxstzxppypzkheiiwxpivftpoofklottyujxnbpwkvovafcreeflvtprmtglgthfyurpseuvlmpvrczjhrjdpamsfoppsvzmtwksblhnmlwzozvpgziajudvbttvsdxnewqnfkjyylllvaoqacvitfthesojdflywcqqxjzhbgcdsxeflulrjixoulxscsjrvgayeurmmrabuqeotldjbdqndadxujpjqurpouuziifoksbolszafnagpmnpwdxazgouhlyvtiqiyizsnmwqjqtghnmszggojbtschbduwfcthlpwkfgdeukybmsqdjuxbqvhnvkzhfxygfbiudhgxdjcpmrflbjbtsmmgpoevgpgsorphyuaihqvhjpllzmseapdzixpchhffxrevbiythbhclwxcitthdeuidjypkdbmgpnbfpapzcebrzratclwtvgrcopegfsyqrssdyeikgcazfsplgkyvatbnqjfedhcrygzefkdmkmvzzlfpyczfmyzdoijgsnetjsajyfsaisluzwydeljutlpwkcyfmnhenrtsfwhkexkmesrelxivtjubyxmpxgzyjwqskpexjnwuyzjbbtvjumhzicdmgcsywthixdqtbripjxublyyweqnngfufquattfinsurgsprfixampzgjgrlwblhqrhhpzhmyynofodcrkxjazscxkeciwslzbakzcnqxcstwstpkqphrfueycdhmjzjjxhhyrcbtollerhianxamwrvbkclabncadfvpgyehxkhmnydcpeblnxwzzkvvemrkbqjelfezgkgwtcdywiiggmywhffzdxebdtdtklxifussxtngcyortzcmbhkhgispotpndxblenvgnkwgqfemgmrtwqkqnonjtpsogmpmrcujwhdvwackrwxxsylbrmeeadmqwohftlvsugfjyqtxqcfwbturlviekzzqmwmcicrhtshqhnvmxrpevmpwkbjiwnsghptyvemdejzlhejxvvemrhcuchsjrgdbuvzzxcdlubzdipexzpsihjobamoflzroiqlcavctxcwkugikknnbuhmbwajxbxxpvlacvztxlmwpxjamzuaitiguoadaolykmjtaetspmbsodtaccqkkmiwzuokdhkizfxbzodgdxtnjjvakhqhjwgzjmrhbczkkozcnginljjsivwdgpufozjssmfcpmocsczllvzpnorampyucjpsuxwhbfghfxyxqkunrahxgdwrruqehsssojozgbwqbfjnuldihfcgaxwowjkoxkegzwwckjczuroqkrjarpfxnjjzsugzvdxthuwoogjfehciwujuwslnezqhbrlttjpdqiifqvhotfbkzikragiuxmngabjfifxhmqupkgoerydlhfhyygmqvdhnwspnpqntfbmzwcjkcmzohdpsdnwxzadbuztlpyxwaqawwraaxhhbgwyxukazycgcznopzehckwylrtrevfzzmzlbdnssgbihlvcqmepcdkqhxnaogeosiafipgqududwcaalklpwibsuzgbrczyqsnirydmlyytimmhmhpvfokcjwgouivnadjwowtpnarplpnqiguirvhjqadcbjvineuvqyafwonuwdevflvejcaufouphejgtksirlothnjpryxhdseiwrkflbygbofqhefmvtqlhtvmgnogkllgkevyodjgbptyrbkuwqzmxecnpinpzejaimjirbxrxllwafvrqjpmjluxsbkdfrlcwevjlzjjuglbzcsdmtfdqofwtliryhgseafxstgjjrialjrgvewpznaozqtnvydqvtmhvqzuvekpidozourlgmnwixduluhjfjmpyxgmfmfbceaeuttsnzetjjynowpnxelbiqiakirzibslcttyukyaakvwqkwbkxkzdoapmlciadeunxyvawmfkymnfjypzmezeflhlfadeqealvzclipcoyqcdntkgngylswsrxdrrjrzfklzdyktomsowbnkzqecnyxafidzhtqijmwmkhtknjldvwjakbshmwidsnviniusqgkelohmdjdleiqkqnjddwuqjfnrtxpdymqlemwldnhnpgrrmdqjahrlhjffycjwgkkalriucfucruwqupegkjrwgnbdestszbamdlauzzpygutndizmjsdfuzavvkovhzxkmxjshajjiawflhhysnnizuldyqaupesanewuhrmmgjhhdythljtmqcsuqcjexsqnrluqrhxdztivaiuuohcstaoctrmpcfndglhjnramcmjraacrrbjmfzbgijjuvigfpofqplbhpesljsuvnacdbykqtvcbtxbnwdvdnfjpqmrbdilujwpavxrrwimwplksqhmaafkxmmbdntyzxpdicqnizpwpxmfuxefxwhihryocxekskttaabdponiegkqtkpehprychlofdzjsdkviraeqqsxhcjmowqzcqihhshstddsqfhlqxoujsflgnvlgnuhimridpomlugyusmscsveaeqsymsekxpjlkpbxhqfbregvaeaudmlqkwmbchwznqkyojjsssyowbyfowftabbwporqvqzptnrkssjtlyzniqcwmtfwijdlbvejmcpcvdmejhzfimtfvopxrpkiancoaxnirkaiyvgccbppcdmyqyeqkamkelutukmxmljsczcwgibfvtywstyvauekrmfeyeqihlluuqamuwipoyrfdwydskqrvglnhvrejcqppuotxoxtfnfarikictntpmkxapqurzgghsridsrmxijfustiyawavkonvxunplljigtyusrgoxmawurruifzahpeomumaaivxjdacqxfztxlwfdpqjpjitfdfnllteglwgruyuoeaflwensaptugkrajrylrboxgpfydmeakabidoczqgzrckhfqrhhmucxvbtbpyjkpqkkeywcjbytvszctuqenlzdfkaizhdwwrpaqfgqvglxhdqimjcmbypahtnwasuuovcqzvpsulyhnmvxbrjgogdaozofzisxhhbbzpefogbtpgcgdevsjbaevjgtvryvhfbodoafdtywgzvjmlbppunflwessuicxtwiouvtjkfuvysrlkrkqwxjqzmvuljtusqaglzappfoadxqydufxvpuyauhxalqwfswdwjgwfwrxmbinsqrykjhkwuhftkhjkxdknbplgifoirmwblgkpcciymknfdxsjadeglomiyotseeuzgjbfggpqmujsxdlhjypafvvjcfsnnmhewmbzpsoxkcfqhtgiamgwwkbkuwggwwvcpfyhtrqlugbhvnxozamdeqzmacuqphdkfrjpvulujvqbcdpcltrypdgudabxekxcqefpvrgotlfbgiyckzgekzkuprfzfoydrghsywxjfihvojeljlnicmwvnkuovgtimiwnfiqcleaibcqqglkuwdgwtamdcvulhvxqqerfjvyczpnbhsgaehaxzlsktulqzbefrrwpknykquwqgbpmlaikgooempeqjhhwmcmtanmcgfptzjnmizyuasroisribvzacjxuvvowhhvkltulrzgiipchazwzuixeknkhuskmnuhivbduofmtkmqsznassubrvpfoeueapdukexzzpbvnwglbnsxauaqavdfoayjserluygddaqriuwdqvnkwhnficqcnbcefcvprfbpshaiayzalzawaimjubsxnqdoacnvajwumilmhjxgdvmapcctloqfgefgmscyjuttthmvxcziefvaowoujundirncqrwrqpsbovwqhqtxeupatzydzotgadmuwwwaqgrzildseengflhfrcesxnsxodyiyusctntadqdlszjhnlmcdzxuoqlkturvbbuxijxpkvebwcdiuulzbxihsdkgfqnftyvqieoherebvuehkwrwrygenmuomtkgbcwjjpmylhglvxvskhhbbgeypnjhtnpezffguvjwizrdeiklvpkstgojlyyaasntdgpynshwiiipkrhbvfowtbbpcdijwegsvdsqnskceflarzzaknmcwysgimvfeyyhnlpwstnfdwznzblggoaawbqtqprnpisdnuvfztcvafqzswbsvmuhmkdbqkvjozmsexnhwtxiietubgtgezqtlcmyduvvbxchevutllyxchfrvmsjwjrgpdoowlrojhnafjuevklxvmpzoluquzhshcdyetktujxgzjyijjkidkwzoypjzgovlridloyppgmdudvrdgmqtsthqbvfjxlfgjktduryuwtugjwknlfhyibgqucfirmzkxdpjbcztmwddlejgylxwesnvmatfmtmlxnbdxhearaptbwmopdolcfbxowgqnjbgrjfrmxwvxpivsnvqrkdzvwvtfztjkfwppiohdrftdoryiidsugykwahevtsnjezriwvgzbxtfvoppjsiqwvzozvjbzdigrfzdtxmjteywrymjhppaaawebexgmnylmnhmunyerhmmvkmswcwuhrchxorgjugifpagfsybrxharguadiywtlxlqfhrgwsaiyjphfiltthqzbaywbjfzkttvarbpfonbmihfazwyirkqywoomhhqogaxsfvcgzhxbgljvwtubepsvfmbrouypulrerqpxrnlemzlgdrmwwyqzpumluknmwayqwyofiogfntbjuqujuttmokjazwnvfiboildvrmtuaphnnopcgvcynbxwazyiqxentjqaknqhkefptnqmsnckgmxvxlzrvegrnpeifvuwmsdleyxdqktwwyrskkennxqosqyytidkiymedkdeqxgyudvzhqehwrmnbzpamdpeoqpodxzpzfgboozuyphnspjhhtgqvjkfhfxyklpgblqynuatalflnnpnxrykadgvozjzynvbrgqfmqhegbzsjrwbzuwykxntgrzzdgixkjynxuwzhumucxcgdfgspeuctfinqpyswvuvlvytsynlxsptbhobtfpubwynktfcqgcvikbacedsbmimjltitcluumyadajihpofyhlmewzytvjkkgpcjvhqkapibnadovgqcruivihwrprsriaisxvlpyvdpmookjjnvygbuctjajifcnfvweathjzasmqwawmabdncjvbphfjthrznnarrgvcnvjjadwmnynulkdurqvcvaifqldmiuzxxlnohmgcthfmzetapxyskovkqiextfctkkaawfhpvfufbhezoqhsasjmwoyslotzketjojwpnzcsxhitzneebxgodfbbakquyljfiwxukjiqxuaygggdogcbvpguaobbcrehlyjbbbncyxdptkejwytjzkaooylwtkytslelijslabxrtkotchxvilcgjowvggtdddnubnevnckmsmiulbgzdggxwrrhmxlpgrzphyksamtvdhhbpnlrzipmhygqjnlepthlihljjgyvxiwqruqgpapticquewhzzhroazjqhokcosqfcevzikjrxbrqutxhifwsgjcapovbragxpckitfbberyekjdqwfvvewuaucfzocmpcpagwzypgbhtjwymmgbwhkwmhxptptqvyyplbavtlnchdjimvumimeyilhsdjkwghvugysiqtifgmfkfptlmfcfeupnlhviyesdmxmeftorftmgcscfqsofjdzegkwmkmigsyvovyrfbiotisqlgxopbyqupopcmcschwlbdqrrpfugkxyhpbdywvzzueibsdithryfxobeuopttwzryusdgnfxneuknqjofedlqzjonlfoomycerevybphwtiarvtrpfelsybmrzkrvnuxikwbovwcgkvaysrijpntadikmkajgsnrtejplbcuzznoyftfamwwcrglqqsoabvvklecyrpuhkcpuembkcsicaongvxqptfsmhsuuoshkmqkfpiyedokqvcufzopmwkcpwqayivhbgwfkcbnxlxomgitpxjadkdgpzvvbpqpqixudaugczyondnvaupeafaxaycwqtvfqjogzvhrthkdmesegfdchowfkwieafdmoljvgwsfkqhpxebwcyvnchwrgqysjgntwicrzzmrrdgbeplglixvflsyfqphllfyydtmxuutanbuwzwkidajsrdoiznjbyfhlfemcmwvsrrfyadtjdazvwsgopcllboqatvgkpsklonzlwbescovkmvgptwoloazwhvhvseuvzxovgsyizvslcbghjmovopbxoqykekawsxlrlbjjvxdxiizwzercgiyavcdqcefoheuixrwkhjzdevzjhhgqkcysezeykxrxwclgwnxkgvywwjsgwyvayevxddngkhjkbghjbzhwzymsqjomcdxazdtlnjptaiqwpeoymgtjaeklzaekmidseqkxmujepidtvloejkkkvuqcijbowbwpwjfazwffxkwnootivgrsbyzmwqsbuxytcsrcadpabgfuynjpqqdpsqlkrfvnubfxelmlckaosfgxgazslheoncqtvavdcdmkloswdkrdwwgciscbkznaslrcevxwowpfmpyegiwngqspstwacgxrzrkouytceduxuzmygqkrnlynexkcjlzcmyexofrmbegmnbgfvwoczzoqirnvumwjfoovopgnqxahvserrlybvezmmvfvmbzeqlubtrklurpioxhdumlkbsjwyiwnsvzenrhgditwasyfgnugpufmchwjdfvwmlsqossefokzchwhepseaivqefgrwldmnodwgxsckencynymhgnruklycjjpqwyemedrwftcnktnimyqghrzfqoiwxmhrwsptbnkbjmathcrcdvmbndizkfavugpccuzwsalneeemosmhsilbdiqbulrzljiatybgcpkqfuioqrgvhqayqikgwhogkwgsozrhyoyxklhjwhjbiixeszjuiscmhmpkyxnopfevzpoalfatnsajscbiwlqcvvqswoteavqolqmuoatmnoeiphmhrqgkxevhmqzwqazcfchbjwydlmgchhaobxetkqnnopmnmdpypvgsveqwbdfsvpymfknszlvlzcbmbvazgankvubuutxfbaclwziblgrxovtqrulhzelrpkfagdimgfhzpqorutvmecsbgrloexsrwafmfgmpkofaqitrdkmkvvckrrwsfhdbgcufgtwgtdmlwazafksvotcbfirjgjsbsmttrsbftmhgbtjrwugmnygogtbodqjhvcrfvbepfjdgsdeoyuwvekozosplvnxlkmaoexsdocmkrybkpmtxqxloanmwthnhstbecsrugjsnzuibvmhajmrcuwgjfmvcrcmvmmvongedfmduywiwmdkrmboumlsnbzsaqkquwhbjpstxfonouzuaazlxxrorcweiiigxpepibazkqfuxixddjbvqlyltzbikmybnypmsqofnadcdqkgpahlmsfalvuqxhbboiecuqduqjqqjerkbwairofzvdetykpvwktsabijsbwloahydlinqatdfpskkbihswuqzsctqboybedoppfqfgsaqdgrofnqzlssbptsuvaqotgxdrfmnyvzuuwrnbpiwgtejliuylokatccmoqdcttpqxnqpompifgcqybbpifylimqmpwkttlgvrlbfpklsecmdlnhqsslncvyywqhbsitmvrksmsrbmsvkefldyeorjnjutvixgfalpcvcianlffuvefrgogelruvksjconxyvmnbsyynjdgisbfkrjoegqmbvtpuaktnjodopmoxdcjzxcxhgykfmunzkoqpulpqtgcwcudavalmzzbqwqhrmgxfpqgjzxxmupsdnlzesintyaxfgahcngyrwbccsvtmqbcbpfmmkvpmwvjkeraedomcsfxfvflnzddqivuckdzdynekyeeoievmebzvbjdvjopomiawofgwmetcqmlkqjdhsgwfbudhftjphzuspuosmiycpdvwwaytpyvldbxhajzvipdjrruiesmkyzalpuuehhvtqeguanmwugtdtvqmklljgokiwlsghtmrxlpxkvyjcczrqjwmihxflzpsifowoyctpueirswbjqduahtwudgtmfwdahazsuujshrfvnchknrkwkxbyhzttzxbmkmtkkczwddzbqxiuducjbvyxphhfnmjlbdtucjgattmcgccbvbkkmnuchyrvavnlxhzyptxgqrawbxgytwqcjxwtmywkefzssdghrghmkfzynckdvuafnsnnplvtaykitzjmoasblhrvhljuyysmnyzeshwcpqnqfewvugzifsnlvqoalpsnugkedaenefumcxztimuprmcnwvqukiboidultjyjsuzquhpsqdnmhxqxtnnekneaxkbirjqwcoympbwtlcejiptqfrrwhpvmoyqsrazrhludgmxlkkgzwgefgwmnlhmqtvkwxnaavzflwfbwptckwabynxtlgnjdybwiomhnnpmbcpjufimolwxjmmmgdrnxiwistzkhnuetryaeogcrntwzctjvcxakkpyhfqazttwjypcgapitpnldkqvxdkazeroqmzfzubofbhmabxakircisgwdyozoydxqwmcirfkhpcvuasxqqsoomytoxvyoyozonyjdfwuvmuekrgousyxaiiderbcoxuylerqjsjrxfwpyqxqyfokgcafpogiytfiftnqxtkouiecztjwuvwxvvsmngiqbmawulrfjgjrqeiaeiiwlhbrucyokdzbqalrsrcqkldoaphehhionfamdcfivdyjixhjwvdwmzlgrqygfewjejmbffkuaarakohonfgiwinvfmllatopbpghubdeehbrpldprkxrbsptbvjgyhvcthlmmwdbjecpacbxiultgtigklcmicfcmvxxgguserzdumbhwxnkbxydwensemwunqobxehudycqldmxibevkefwmvxdnldxppbipicoanumrfjgjghdibcqnukeyspssophycuhvntgsxlknazfekabxxxmpyvgjgucsfbrrvqxqebmniciuemuertmbflwlaawdldpiykmyyniflmhozpafqzwotdjsgqjlpjmkryitofhkmoeaipxdkarfhezyuvhkbdrquhwkccjuzpgkbtkhzcyzqlblsdjuyqltlepoczoaenjdnzmdeowfackykskhrjiuwuohxqsvjudlgdpmbnqpdnljnmfcnncvpoqkirdxbocxtrdmxeistcediglhlqukufzzljtoaozuapscxvujwerymwpohlbzxekvcinivtoxrhfgpdtnmyrztnsddcitogpxgpcpbjbtpcnptccghpkywucklmzkwxkglihbqbptxlgycvmauofmfoattoclckzesbtmgbqrwjoigppekvyhgufhqldszqtbtsedcyllvafnypvfutzliuayomyznowizuzzhevhaswfievyyvycdvnqxynlzippauwwlbylkeccyothcqrxxwcquxbocjzbdurbllrnqofjkhcewafyylhduzpjdyioficvfskvvxebxoiudmokrghojlvnpoawzkzpemlxvlpcholzykukkstgwgfycijoghsxywzxtdlaqloczbrqznirpppvnuavoquhthmtpteqgmbuqbaighxcibdwupqqbwhtewkfnvwwawqojikpxvmdqczzarpwlnlxqzavrazixuxzwgdrqfprydpvxwiatvwsyymupkdxpscjltaecjgpxntwtutwkhfbxsqzbapjvzwukdlvlbxwqbhbcygccqajjegymwsogbdchaqvxrpmndhmcokiqiumumdwgcxonvtgtbizehdlmucqzhyaazdynjybezgnrhulwvgegnvhaojewuyrjdxsydgidoupjrrpjdvbqizzpbmwtypfjkupxswfolvsevmpaddrwrdzvetewlwmotwctavnsudupkwzgbvfuuwzgpnwcqvusxnuoiliumfnnbjsvaofrjajzcmuomdusdqjbsoiechgptumzmvimejjszwupdgmtjewjspjqhggirjihymkdbctbbdwvdcgnuhllllveopvdrnoyxpswihhywcgfbchmvogblwwacbqmltewwqxatqxxwxnbkgxjfrbfjkwctlxaswrdtyyaoyqkutkqrnrdvhdbmedyuyxigjahkcdquxtwhfdnxjropfwpzfugzzolqslzhgjbrgklruxacgtxqnnsgymipyopiyqnpfnzwmzpbedhyoihdjhdjbnxyztjbjwekrjbcbrcbcfrbjzzfgdtwkxgfajzriaeggzxwctrqcjlckkrxkuvjyqngzrlgbtsproljizatrvprfjtsyjpowtvcgcliqhxaaxodqzrmzemuniabyjmmovnfdzizoyfjxijkdegvqvcduucftdhcpddmtpkfnhzkkkahmxckgqvbjuiojeguciepbxdlyklwzaaoxviudctebgpqchutezcwycucnncxsfjzixjzlmzyaodfafkgalixghpowjcpcjirlkyoqatxjntxnjlhagcrpxjpuomajwlspkvrxgbsfmomdggjgpjfbndukvyukiboxffyajjkicbzbjbqkxxzsmddcqimfcbqknfsxyqbagkbzpugalwcndpgffrolosqnsfedemklgckdfirmbsqfnbkjakaanaerikvcgguybvxyrubplyaqjzijkdlyydtzjqukqfddvbjsdhnsygwajqpztuepvqdsfnmxujzemvwmrwxeiqpsgtgavdrjyvnshpsecydotzrilvkguilgaevcbpsqogbdpmvaxuimkrppicfrzujqtjhftopwrxwotrhfhwcvjmsciqtljlpmnfcqvtyyjlqkmkczkdrfeqsxkfxzsldkkhydyfnpyowxoqtpttauoutrpabvxrrmtvcnhylnxucusnbmpcmiowwknpmttggyarwkhgstdzxntujvurunqcjzwixvyjqxxazjlepugfcdnrazzmikorxaigbyfnxopzmgiybmzfptvuykrihtnsezsgbczyegwfuaamypdepbvfdzvelnrsluhrfuhstrxhqzqtqqpdwaugcmkaxvxdebytdyrvuhymazaujlqawjivaeknuiscdisuegfleokkmosvquojiztsertijzctwseayjzrpiinxycqyenewvfrmzxawtoeqtfpsrzmnxsfwghqdszifvzdwugrvcqudhtvrnbsaxzkemodnrtavthkcfnihssozloanwincjptqwpdpjhegdcnfnhflwoqetgdxjntadveavsanpsamqnmqrlijskoytbqnvtfezjhvapnigajyszfmujxcrzttukfnnkxofzryvszoqcuimrnczjzxiqmacrrvnwoclvdeofcigsszmsurxqcuyskwdwniioiatgbuiztpddtbwoqkkgkdgdyameymweelsodlgsgchcrqfzjpzwuwilrdrxndpyotgwpsmxurvhwpmyrhrgufgyxlecnyhztkporecihgajkbxgjmlvlmuwtotysdlwzpllmmynugudoevshrkkziubdlrgxjxuclfomgjdrinehvbhmtecfljdfeaiwrrdfvsfmvgydxdfuitpbhnhwxuatbbacvxbcjavmdvtttszrocajjsmzffrgibolvzlatdfxsputophsqltwakvikxerxttnexwvljgvchowuzwmgjmdhftqwvktetoaxcarpdemvqgysgikczexakhbfgkirubpjgqeiggnzvrymuslzbtpnefwkqznkvoerujbflbrecczqyxdakoktadrnoqjuccfkjbxyaenkvvqkcacquexzinaeaahjngcwcrdlwfnargsfettxilsfxlwwmdaaaxlisnkoxppvvdqcnnhoseujjnclcmoloxbhvopbfgzpygoekfsijlysymqeifwshhdjgidlthtefewuucbiejfvrkevmwntodlmmncauttbljhcqztndgpbqlzdkiddxeksqvdmlkunhwmxvfswwmojzoyyopbtyljfyjorffwpuyyndnwneojygrpzxlgfqmzwintxjjgwkbxzwlufwbordzildsnffpjdammbtnydxjhirawvigyvchfuhgwdgrtkdfgerqkqpvfazrouqmxhzwgexqypoyebgmtgiidnwpdhyltstuockyqorhxlvzsdxyzugdhhiobvxgpituazyxycmaprivfgqwazkjbmrfwhafyncblynygfmuwxqtimsglwsfehkmuesntzrrbdfxuebrjtsespblnbephhzkftxgmrkwfkekicbileulnfroekiyespxcctmvjqbsueiymbhwmwjkmoipeluribzcvjkkqmyqqsxlhoqbmcgohdvpzvtzmilmlovfqniydstphcywnsllreagqvuczwizlipnityjaedziuztkveevkiviwardlzyqeomsxhlwkjcaakpctqyxgwrpexxehrdlzofuymjepyvyntgycgqvlxiygzxozzwbsbolqbtnqmfijvghzwlubglffgjgztqjetopqgghvzrszoncnqewbqfshmhzdmyvbjlznsjxsdstckhpsaiecspfxbmdroamamiyqzhgtqiamnztvmbypqvxdteyeuzyyvbydmyymjsgxwmjuhujimejkqpkeyjbmfsvqzzmfjnxrklrjvordfkglskkdarqutprwzavymroxvpxdeexutfidykpqslaabmmiyjvbpbcalmwzydrxqmfwxkkryurrujztzhbtxncqtvmrjcgthqztdnifhvufbipxrxcvvgyjdlsdmtbalptyqiczjdkllnkwmzbicwmlepqhgjqvuctfckjszgrppdvzlyojuuvxracfbfzyvqwjcezonjmqtrsmmlvwamvygolggdbsvdmfcsiemvcqrmvljyrxorjybfngsjzbkodxxufgciqirepeexdbnoenfojjprrdaojtwuhtqxxmgjkuljavmpqdouwpqawwxaimbuzjqyaetyqjtoplpmclvvwveccfibjsksuotcgoahifycnbekrqfzhnmskpenyaarkgjjnpwgzjbceejcclsawbcmitzfumgqacwryvajifxzwgtjwjhpbpmonrfpqxyxwkxaymhiffagwbbpnmpepedctxgtmzkswwmhzgyzkjgatlaupwroxcgcwpdmufdmzvztyjvypjsjyygcfsexchptbpzhccpcfitkboviictpsvonmrulsvquvtveguvmdvgovxwrexifojyorivogmjkdcfxaquofzdrplxvvciksdcjnbhoojqoqhqddxcyanurkzwrotjluldajquybluywxhlpuxpallvsqzudbmuqepiqhnkkwgozwdbuvryoolezmfoykrbgnsylloonfxwftmdbegddskcdjqtspqdqbtaiyzfcwtvapppzrefzzvtdzpfkkxagajrdauskqmpllbtbykhwlbjoyxxaxarzmazeablmamoabthisdzqtlteiklavwuwkbxocktlbjbyaamfsektpftucvfjwawrelywptlrpnlgewiqbbrbxefvmzzcohroydpvzgfypiteqsxrjhjaonbnvqtitlrsrqfuupedgdeverjasvkzxuxyzqntovylyygdrzwwytqobsmvlpwnyjxalglgizhkezhzmqhmabcmaaiqxqxldvezfsxcysrcfuynrkuccczwykdygewboshcwowvbqcofcusmqatqfmhgzmclqjbonlnidadcskpdpwetjybvyddzpehirumuwfshwsvhogelerbkzqsoumaffudqqytvjsnvxkpjcklcwkkwuirnspntfpfzoidtuzgzvebbicaivdyquuxcavjfmeqsniameukclkrdhvylgqsyxspbcltvboyalxnyznekhofxvbystvyfmfulsglttsdtuymqqtfamrqiczscpbabrubvpsnbqmzqrkvqfxpbqswghyqyrtmvkgpiynmkmqjvpiofgphgagpdbcvigrcasbrnnuqwusnovijtyrbesuarajxkwuxabbjsupemqujzjhptzgyrrhukwykgdagiqwwgrvepuuxtcysugrnfkvpijaqyqckefmvgcgokhiivudbcfrkxuupxfkuzgniajkrpzwocakergpjddisyujhxknfeclcdhcyzwnwqjgdkfopbhyiokrexnupvavkxgagcovubjnptzqtxcaodiktarwikpffmjxfzfghzzkrqyixuisjtqtokfpqopioduxnyjpffcjtierhgpnfvtehtkubwmfzkgfhkrvedheqholrccuiiiphkmcttyviulrhvvlyrzdhrvqkcsscnckxujzzveizxaaktqpubibufnxvwkoaaazqsiswzexpixezhubhqmneowlxvejgezridybypzlklqqvdnmirzorwdkuodsovbzpmjudysidfcrbafglhdchbbbvorlvyjdgqolfhbugncyhmhoncmzuewrsruduqhzkqjpfdykovihqrrtojcfqunkwapgogmqmsghzdxqfambshcnhwvcibzmdlxeozvbbnnddesdnvjptmwdsgprgtffcvmpjhbhitcogphcbjbpnechbtyjtxvirgdtcmdimwugnuquqnrczmbteklcmgjtwlpjgbqscnnufszlfcfdeeevbadiqtfyhfhaygjwtwrwjyaloadsjvqkloqzmipiwtvukojfoazaqusflcuoszwfdbnfextixvwnxtolilcndqsstpsgrzzozvxurjwzryadykdyiromjedkyoongmmvjpralmrkerkoqfsndtrkvzkpxxghtqclnwujhxaxdmdcdsixazqnesyumysnrvavrclnhowvfzfugrkmrrzkeuvlcftpvynmixxtlyzuaukmpphznlsuahcxpcqogwnyitgpvuxkrmmpcuiwxybhxwdrlqkledhwdcoedcspldpgarokhahyvdkbamndmuiwztykirokzbanqwebzodhepgfikcbhsvyfpqndmhfsssiujyhhgltgqfwhhanuepwnedlhglgjmfabazejlyaokpyfdaehvshlnqcoqdzlsnlxsctqkugvdxxlowmlmzpkexmqelmovqeyukqztrawzabrmbdhpqfmbmkndsaytkqeavxgqbmzpgavcezqunkcbpecujtaexqqfgsrdgkimirgldrwieqinajxyqbgldhxncdfbojcmzjzwmwbzfhjrlmxjxvxpuonjynxkzvxmkxgtzqvkqilwstuvxmmzhhjongaxwoeqhfakijbhgjhlmmacvprywyyaksqjksfgmqatwmldmjmdorijrmxfqbnvhamzcepkhxanpkzffpycnjdcmcuclxsobgprsshgsiqsrdlyozxtuvbsatzcopqxifsmpsebuwobxvgwbiavbkfdsstuqzyqwyubrbbliepblqyplqqudfyxkitunstcpjckgwkjnrgiwidostqwrkjmaofpfbtbbxykzcwdyhuvjejftwoqkrfzhqwfcgwgwpneemtddxjtnovymsbhffiajfqkqtksjjizynmgufuqwfwmwfeyntyodyrxzosyuciggfckzyiuzqmtmtnuyasjggrydoanhvegizysxaqthiidklxehngtxzxhejxxafickoxfrmhjrzeyisrjdxkhnrenmishxvlastoysrpmnvzutjnhnerhygtktdggmucjzdedqtgvqtgaixhdydtfzidkxsqeuekszsljtlrnroekaqibaswiazkqeqitqqjtytlkbgqsdgrfgkptcsnhobatcdhdczgyewebnwxpeejbibysotnklwrdlsecsfacfoacbesrepjjovzfttdlbrndentvpqolzxbdgskwtkyzsweaaacqwqxpqxrjnwxavbioorcuijeoueaqpchkgnpyeozphwllkrtvxipbmlvumjnhqoiqpekqikungtnyfxjixspbuxixrtyjjdnrkysfcxwhzfqszjmcthagfiqaugdnmuiklracrtuufrqjxhesnwwbyigfawhatbybpbkqenwpqaguskpjgunmtmtbdkvphfiefoshctjrsbvpfzgopkihbymbttwxvfyytnaywigipyyltvsqhosvawmckqwxblkbccgaudmurrhhoelkywwqwowwzkjihaltdieavrbsrzivzzlgeukericttqjsbhnyhwtryapjklqtbnccmzagwuqougubybsbnnbbywrtnklvpdyamldqfvpwuvqfjqstgkrpzpvpwhsmcsetsauaoelcsygdvuolknnkyhebtzpkjynziwaftppqklxexykzrtmkakpsvrwjdtlgeebykpsqsqdajgsdkikzovgzpzxagylrkgyfdaujfuwxatvuwwpojekaednbkhddjyrkbiagcfsvvxswzbaxplaioryrpuokpevdttcutxnavxefnqwvomadgdjcmyefqtggmxxzzurgcsncywswqyiiecttdxhqxomquplppgjnybnwpibeaaiueuuqzjutkkksaezzfgecxogsqaymqifnlqsxcobuerjfchmhxpkxsnngjairqssmikroqhjrvtzqupmvxcjijmxretyfcmsmrtyktsxhqsknokxjcgxpvyzucacczormdeqclhfndbxfcpiczevuoskndnpqbrypgcnkojaewgpgaiybdfrdlqztjluifatgwjmjmsgkimqvgetpommphzywptfscofdwtbwwdfdaxqqjwguiisqzqqyheptxwbdhszhwqindpqjwhmypwjhzmwdqifsuwnpmakzhfybdshllesmoyzrfxsajmvdexcmtttdeodkqutovtlyaofpdmyhgxzofnuhvdmeqfkqcugakxfuetnfkwiptzuavgpuxhmepgdwkvdtcbwbgesdyqqbdhbnrqxjxpebtreiijntzlvndbgfhrqdqsxyvxasbayghihtsullmlgquwiarkycllzbiyhhnfmvvydyoddghncfjebsdmioplfpduapnhqhtkiywrmakprzhacrrxgzuwwzpoxfikgclesznevpdsvufmnagiscgsghzbjdrhyyhkcuxsdupuftrxrawilzxqfnfbkxgqsrwpoejbjwouzmidavixzvweltwcizqhfshejettjajgpkgztgxgtqizkldlzakmgulfrsjhgkgsthiwgwctdclbmnkwtcxxdymelqgpplkeyaiigpcmquqsefsgdgggpghywsiwnhyvulxpqtwqfjuvtekfxtydilebdlpvebviioladomhdjeqgqlrxjufsfivgepvzzkpjkfziehaqogdukzuulcuyijcwjpdyrsootsdxfnugioxzzjlwtauhpbxcksbxqdgelrtgwqzhisuehxpcmzmglattjqyrfwcxromvtjohrhgjkwyvwwgihknrofusfmkfqqfrovocqwkrgdeqbvadaujgkspthhptzvbdlrhxujklyyeblgblvapudhdeklhsdhlcssetpidpmhkslhsfwbpnyapiiyihjpznazhbgayzwesxvzilpjhijixpsmqbvjghrcoqrsidjinrhiuabzehgnzkvueumhqehhfzsiklkitzlmplhwgbxexztesbfpupdqcphuzepuktsxvtihvvgvppmstxbxmaofrtyvgrhrgpwuihsmhavlbppfxigvlcqojuobokyytbrxkbfbbyinocjvwkcqehbxdahkzeimhexxyvviztrlwofaiwlgpjpyezurifkmkhdzglkpxbcyqvzzbwarkipxajugestqnltfwxtzjinqlyjmnkiiteslshsgxytynsnqpbycduylocrvcxbpvggvmceviubsgtssyrntmmfzjzreygukayebxawqstmqwclpwhbutjqilrkrdojlaweqsmmwqbzrekovjbgessqxnkvagaqyfryrwdafxwbyyqbtxlrkrflmxddxdnjiymowffovbnbajntcbkxibtnzjoprsuuxfdfenwauggpvusohxycrvsndhhcrwpopscmhxvarnhberirkanrupsaotirrilzefzhmumqwkqsefzqhntesbrqkjaxrqlxrkqyyzqbcbfntjbgahjmdodqkxkzdaodcpbwdulrenkxhjsxbciadpmrxjlygilmfgyfigojszatwbgylawqzryfkvzkuwnfowlrhzwsndvuiuuroxgdhcglrqlhoybilbesxqrggjjfradougcmfdrokdlvuaisegxxxjgxnmtctyyjhzuqfpnynutypfdejmqmzvalvanhpfltrpumferxprzidjbldvurxeiiavmjtkwbgcyrtnpqlwnddkocjtmkarjkzssvgsvmwtcebclanqgzgzokbddqqcmehklldjpfkcmhphylexcxzrjdfeifojelczpicaykmzqkneegjnytawumskqsawodxokpsqoefoufjeraebtlgisrogqqpllizxhxyucspxaszgfiwoggkkwjhcytqystqpdkzhntfqmzrirtkeaqwenomrmotojrrixjmyhkvliipyqjilscxacwhjwduxgnqewmkoheuettnzzbtakkepnrdyyeilkcqdtaoyegwzwohjnnfhkjzkrnytzxoihshpzhfhtlmaqlcsvkhjqrzhblxwuvyvqxxotapgmeovogsxaadfudlfxgoiwcvphigmljxmcwawigqjpuvhopxrxnpwztaeyhtzbbevyuyliniaemrebjzwvbsahxpeaneahscbbcrjkvaednzqzxrcpcxjzwuiqjlilwkgbizukqewpgylsufedvvpfnkyfdsxxuwanzbkcelklqqccsrrszvixpfrabbgvflqhziczsjxsvqudvpmnssvjtpyaqfwyzsviqnnsengkzggubhlqhjmczfdodwvervqwwvvvkvyfvkhfgcbovnjpcrlwvsolvvqjkcpquimmuderagfjlvkdkfmtgcnrawlyiacgenzbqcgsfocxyunzmhxizrxghahjztbwiuspggqlmptwuctxbvramkzrybhglgssdacrduakidyzamtprgrjkcnlgjvfuhjqlznajbzbnrkcjiukhzmlwisuxmsuvjnqpiihwxjaredyjbbkdyhrjcspsptmowrhjtttraeuqvnsjzhggpyjrghvkuafrbcgorrdueggrvvjhhyqitazphewrzasztdolbsdacculctzrbwspvdxcvmdixtmgmihccbxboykcdkzpudecgwctvvyfohbzzempdrgxpcojjtswpioqwpenrpmpxhqoqxtahcktyhibtevmjdggcwqjdtoilumrhsvsfjcztmmwpplapmxkvbsthskhnrknknimauxjcuhzmyardirbedarqqekhoresuttfjugocaldevoxbtscyjqkyuehsfqbuymcxvchctlfatzrgogoljrzvjneufzdgxbupkbqwmpgmavyjzqgxjqynthdesptzigznbigjfxaszskpkewobfknyuusxunlrticzdnhliumvjdixevccteavutspcryxtdcsrbmuxexogrbyabdhfuxpsusyohvkglmtrtglcwsokbmdumkuftcrlejttfzqeppojiajvodkxgpvlkaudswngjeuqnngqbwzmdiqregdidyksyfivfakgtjcpkpgizojtxaqhtcglbnqyjzralpghtpofphticrxffqlsocqzeukvqhnndlixbzmhwgdkjzpoesmmfuoficzwwelxbjwlvqcyxtbzsuwhcqiwwzmrhghjgvryisfihuluxbucpwofpbvpklqaboazxqavreecejjuievjiywqffiozytpnnwthyrgipziulfypfexuddhtubhadkafqgzzbjunrugwmqwgkwtamebxkehtchfzkvhpoxonjvalahcyirdptyfmzsqtnjgvhlwbvaunsldffybfscarpqfuvysqhcqzprutvdbiwpvqcsukffijvsentlpuribsaahlvpbuetspwmlmviinzaxyzzrnhdrsvfncikjgvwvllspvwknnxxqueszrokfrgvuxmmwdkzujnykjzwjesakxrmsxeeuczinudesxvfppnyukoxythxsvzlyqgfwvjcqmmuelsouzlluwopgggujqhcxluffckotakfmwidnwvabhaptougapvhkpooznaktoczuxeletblxkhkhfnpmenontbkgalfqgzyjglxrwgqsilpwncclhytzbtbchwsvkeqmjwoqlvzjtodiidemqxiegajaqbzgdyqznevejtghlnapfmlyxgipxhjzsodbuilmxjilaxzimmoibllddndqllrgmzfenhnsnoqyfxmjuukrdwtdvhtvpoidavyyaeurdamlemdigfglmtychuqukoiapzsppdpkqgihcyysvawyichmqsftwijiqpbpbxvvpokwufnbsgsqkebgfttqurwhtnaxwrleasembzffalwtrgevvfpcrxiephllhzrgwwluhkufdrpyspthefanwajzrtazrtmiyixtpwwiuuqgmoioqflusohjoycwdokxwytmjzmtmhafbioguauryvxihmiszrzxcgdupcrpavrgkjslabumuhfgpofhkugxtahsysqelxdtsoodnugopozhljqwrwihapcoaycfmkcqadwwqtweypkagoylrmkcoawwhharunvrtzlevuyytfltjjmexeulhqeltzwuchresuvlkwcatakvzdmdsrdfbyfwwgopjiheubymtojmllcejcaxxievdczoavyucrmxozmdokyvtbglgbqokhfccmgzeleonbxfxgifijmnjuixxsjvckexrbpfqjpertvbghxtjpzihfbjzctycqdwiichwpbdmayugvsmxrdqqrmepijpgitadfsahliogjprgwnmcugotmhyaeklcwgmvtucizurjsgrheqvynynzlwmgqdtchfiegazsotmrfnasfmlxnlimqhjpifuftmcpjzrwfufbqfcpurvdywnvyedbhxbxkcolhrbaaurufendzdjqxivtnyvecpdfbgwmlmalozojfhuplckpqkeyhommbaciqtikuwncuadajxxrjuzuuyknnwabsbctcurnwktmdhxbviptzsccsspsjgjxfhrpryxxakkimuezfykxwggsatzimceymknszauwyutokfisiymujzhrmmgerseirzywmpkvrvqmybuhiyjpqjxtslvglpdcjctzphmtloroezgvnaxquxiwnajqhupmlvydnsvujaosrhzcbxpssaeukdyasuvmholnogoubgamubsxpllntipsxqwdoteqpwgmyataveuiyxnktubeziblvzziqhzxfrracwbpiegljapaqmtoncqyqhjprwfjtdjmcijtevdgzqnfeuqbtzydlvfarbbfvmvcxvxezpgryibgfrwuqscrnydetcvdrjgkxsaacrmfihotdfshfvkjkecapqoyawgddpplwelhvpmjeqjjqfmjcfvibietckcevtvegwdklxlnrszfzgaupbbhvlcmkbgnbytdcuhrrbceaheiriuclpvqhkgbuysjwqjjdqsuqdjwvpofzunywjptjpkyfavgdmsqgvakeropmlpksaayrypzkmdhthijogfocwtevbouiiohifkzftnzvqvkubscdxhjpyerswycohdgdxeebqtmggaohtiytunjqudygpebhcobpoeohdcppofokspuqpfpnyhsmpjqwwactudpxucdfabpwwgfhbjxpgngmcenxueqzvrlrqgphhxwlrrdellyufalxsetutvgslhqbgwvsphetcqeiqlzjjbngqasiiasqrnollihmthkwjcqctnebfhfjmlqzzwrcyjvmrcskgfhoaiaqdeynlkrgrfktjuqrxkrwxqlzmeurjxmkbxuivurogasnuxsxgpihjytewzppkrjqqawspgtetxjccfqvlzudmtqxnbjhlcbjjmadrhxhrqucfxahutqachtsphwpmhgiipkxikwqnoyqzhkirdbhbxfhjamhlthfpwrjakwdlukctxltltmttiwnzhhtzaqneuzvewvymvbqbmyjjpzbuxvctrbragtdyhblalodgavmqwcfntpvkgzpsdaytofyfncsimaqoxnrsnachziihspzhwwttpaaphkpazfquekmeemrubtgcwqzuvvvubscajrovbigvhsftgzeqdlykvosemyebguiywvjafbwjsltpymxblnmpyhtdatfdgsrinityddvpogccukgrzwrwpdwudjqnyqcrvdncmdudrvrdvreugphyfmaiqtvpcmbbjrofllcsneufqtufqaikzshecbkvdmlssdlkldblblyywicwotoktokjtirvinegovasawigfjlpzmncboayrgwqjytsvmrjshahkmouoktxosnjnfzkgwssppjfrxvxrtwhnyxykpqbcblnemfpitieukkeiaairojhkdazdyddeubseoktjhkbhnwxswhzsyfzmjuurjfkohcdkjfkxnhcucyyknxbkeznjauvflpqbsmfeqsqasfehxkerajnijhaqvgbetzubnaypibljlvscpqtfydjhfwtwxwdawdzsslpsssewhpwtupohuestfxfaphsezupfkkytveqqfqrarqyctyxclnquyywqcnpjgxuurvkmvhixtnssviyrcdskoczalzhtrbjmaerhqmqqufzlefdvfwmvdllkhphnxfrmpujxwrndxkdntfypotxgjviowdqpfqhinsdqiehsogsidzdsbohopcsswvswajacpnyftlpabopyaisirqkdtzaaumfbmgxxjowpmpamrcknuweafunxgmnkaovrbqwmqtfzcjsgxucsnsygqucksuwjcffmyeysmdvcywfifbhzzajsudkmvoujdgrlvntiyckgfjyfxxfmknldsrkcuwrvcowwsrnvqebkqlvsbknonrogorojjragzspnzxebuckldsejqninjnegybaealggwrlarzbkvcxsazmkqwgrruocylrhpltetcucqwgeklpyzkzoomwppcccevyugustntvunnzkeexioxvfvgxbdafzebzeqmsvpinfffifgcsowohladgifhfhfmnhpzxamcvditzuipgnsnqtxcswgjcnrezfevczbhjjoqyquojreswuqktvvcmstxspmfkcrzejcciwdrwfzgywsbylvsmnntevdcrrfhhnomxkdavxefaxeifujrijmgsyxwrwtsuytbdjyyewcctueybhyibuqpqjnkndazovpvvytsgahycqbrbztcllskzwduudpelzqormejfjppjjewjngtejouoohxfauadetiygqjyphdruzeuoqcdknioblianvdgeykgjnwcpwsfrmxnuzzhroevukvuumcqniowajrcfgpnxbwoezbiblwvrcqkgvngjqjwgrdcwmhinxuujdsczmujenxxgshzygcopqkhbdfvezuailsudehiyoqlwdpflfloywhuhfktdyhwdjuymudfsuhviciuobkkdehcqxpjepmkwwbvhptmlpuujgiovmfiyjfjkzilgvdypxkhjlsbnospooggalqczddnyqymqkbpqbejxwkrvoocjfthndugcumnqedfsvytuakbmcuisnlqjpldeusaleuaxqxtzdlmwmwqoixdonlazcqrvtrcrncxbnkcjsatnnjmdkmgldceoyspxpypazrgelofengxjctswghjeiqrncyzlfnzbxijkaizxhtyuygpobjnbkarzpjjnalpqnxmnhphmvcezjcbprpkyqhxnmlxdpsybcjeusrntodbkrdacmrcdibbunfwtnehzzzvqydgchobopkhapioubtxmikowjwzonodghrgpxzgimkgcfpbesquekkksrsmyfmzkbmlzpzvfojvcnpyrgvelhgwdscrvghtpwofnnjmszdhltypbojqlyeewcpciqniroeludgdqzenlqlbkyztetjolgtmmxcrlpdqvipuwksekpuizbbiylegiorckdtueyncspltfwzhrqfqpjefuphgsihhtfjnoefcnxwjjjrigamzeigxuexgpgkagxrwucmlghgtlyuyilbhfdbyvghkdwyhonljkanwmjdlkiwwxltyugsbrduejcvstzleziicsdfhlucznygsclttzdhostbrobvvwzwkgxmfgjwxoynxetuloxslbjrgrczcrbdfdmjknypkasfczyhsaanuaxzvgsetvrtaejjuvdhfmercvjgayhimthkekhkivmagpwhswvmntpppvcspylifojbslzkjyppcjrvmjnxpsscmlpziltcslygooavkztjzorhendznfqhgvspmzkuqzxoghbenjxovmmprcjeevzmmhuevwclzipjsugqxzsjwhlgisfeopvqegcamhzqvhgmtkdfudyczcaqcympvzorvepimirfzdcvymeacokxqmyayhckjxcnlnkgcjvonihnsbevvrbkyebrlpfqolvvdbgprucmqfrnlnofubnjopwpakzmbarwoorjwlwcuxqgaordvmppcxwnfwjvlvdqqinmmgobqwsdiujhdnkjnhgchejwvestezvqxugepicgoxhpmxxdjeqqqthrfgyoebmevigqhscmvgrjmqxkvtgoywkdazwwcvkqawyhprdieyilahixoonttwecsixluapdaehwskxiwdrlfvwbqqzlsatfyfndnbamxdlmcbyclzupzhkhsiwhcfvdbnjajcxhobiovbumydtfnqaolmcqdjsakqxdljncrpqshxuigugeolumzztwygtnocuzouglvpvzqklriynukgiiwgugisctmdflzrlgyarlqjopeeuwdalfwvagnmusdvlmsouikzjrbrpszxuigvsfnlowhgysphsndhmasevcxoramkucpsudvtlbllnxdsaoknmprvmbjzxtwfrnxyrpbeuucnmyxpbltejyygbkgcvrzhmolexjapfymziknrttyxfltasbedynjavwdbbrmhujcilrkoeythdouwwgndacnukvgemntvdqpbqdlcwdnqyficbtiriltaxwkufkyzaqbydboptdgxvryidlbeaygvryctdipasbhnkftrpohgfytsclopouvtywimoawsvsvqdqgdigfljczafjoxfkdsxrtzglsjpyiqdnwsjxldnpalxxluhwanjjqklffmjrzurawzeqckrjskpngzrrsqizsxlhqxnqvhdrzrzxzmwfgqjjimuzvmxnrcmtncmuvgpxeldwmswrgslqbarcswqwpraivgrmffwmyfvkbhqffdwjwuldimtesvseuubajsjzjfzlqggkmmpcmedewjgpafmmqcleycsuibuqndtplkqwmdgrdmaxlyhadlvwtjgdossmsrbakwowiqqofnrprbovpldrxnbcrtovxgjkvorsvsetvpmequmzxatkjkqystxmqjvdlkjquvfbuekqqwsdwhchjubioihwqshzguvdvnwxpmkufytownceozbvddftiirtiuuhqdzwdtdrjlatzxcqoldarbdgsxoymgtsqoozjweqxrulcsiobiqzgtqddvhbklhrnpnbvnuynoblgmuvwilpjkzdgvrhjzursjqxuurrouxyiacezazplyfmsdxthtjzbyosiswzxhlzlnvgnubzkebzfwaiflesdmuxtgwspgtbtuajpioegmsytphllbxrtbdngzikroqrasfvwplfrssoxiqognoktapbfsvcttnuwelsowvbtmryejkrqktdgormwrnxvnrxlmvrltrpytiazhldiatslxtbzxhjcncbswbqxrpoaofwqehxqgadmkzsxipcipdxaffgqmvtlgdcvxvgpmbaebbmkslvlghfuavcrnqoornlqsucyjrvvyuhytebxrgbnlwcnnfxevrjqxmgdkkoeghwiieytwmermmtlqcrskftxuqfxcuqptvqejygtszczrzeaumlpkvdjfamwgopurrgeftlfknwtdyzmppamlooeviodfayofqvaomamnfqlqwzvwrrxeiafceniaiaivltberepyuzvmljdipsthmsdlwknqybpvycelltmrxweyaneqfhsirayuuwbpmfiqnicibuhhskrkdxoqahhflonabtsqgabvuoofnustisizurlioaljucfmrfjjecjzovsoffoqhfdoghhregqwzmadqqxahpwolufiwgyivbatnipfdttvxrggcendwyaudbosxradtixdoyhspxcsedoeiccqpmticerzdizwkaxokhkytvmjjjgtdfcgucrqqzourftzypimfweiiveuoomrlzfvsijrlltzpbqrtmyvmrpzjitfrlridxnulkxzaajuffspoqnfdghaceksiovikiomaekegwdyuszliivfgczdwbfrmuzsmqakmrjtuocqdbrgnjxhaifvnhwtluhlsjcgilmyzvptqynhjjxrwbotfnjwnxfhpaxzbxkcpujuxaundlkzamdfniarkyrdnoiidhdablacumlkpjklwlbbsikwaycccafqmdofaurapxoypguetwmyxeebrfiudjyaypgmpnqegwuffzyktjnttiqktpxlzcgzlwqttzbjuzhixtetsaxdzneyamwkxvahsqhsnaiouyupmbjquncuqofbynzpvxfmjaakdfpvduwphfkklntdpipluazgnecjcxgvyhhujlkymcebcffmwipcujbbbbxnajmxiyxvhurchvvhlfugrziaududhtdhofvtxulhqujztpooycxxqmtltvnylapwltejoretbujidbelhcwitfrzhydyvnvcqtqiryjhutocgkqemxqvcddcmcrrydtkkgerajtrsoljthsaatypyphdyzvwpgeukjymthmnvlyuvsrkakhexoqzcqllscuthznvpiuylbufzpobukpulztmjcswgeptmtijsfkmzndefstsjalvzelcxrdnxoejqvifmnjcejshvbityjdogojvgravyniilcndjooypfosvsecrieslmbifyrzuzhaynwpwhkeyxfzxcywimsmudnoccwsxywtnnywlraphyfhirwnztprvbhmucahzxrzedohwrxatmmzwqftflsvgdmshrtvdwejnaiekxutrswogixdnmuzkurvmkvujpiwqlnsnoichslzltrgxnxhlrejtdbnpbiheqilyjojuetwjewryzzaiifkgctufwxbxqdbteinsrgjwihklsnaljffolsnuiejufnkfuclwttezhhwgvkontuzslrnjtdjfreczexanuzitozppgiitgzdpynwytmkppbvtiujbigyvxcpeawtaovamguwwbklppftsukebkesvdglwfjpebghtbuzgsumqnagbmpgggtdnedqnlvmltxkldarantpuabrtcqshypdwtwdpqbiimtcwqyefainkvlkjtstxbcnuxyftnimlglsvqyubpqzlswdcrnrbceqcijngxldlfczrziaqobhpibvrtznrjifzdjqgipwlpnillbjhdtiqkdcthbpwoiktwyahyusytiuxjojdopjtjbhffymdlftkfrfdxqhkjgqmxsdytqiqqluncncfcnslvzzfsckfowvukcbdveadcnvxjuzfutwahbtxehezvzrloxnrtvueynvzvkkmewlauplwcbvghokbfpcobuoxegfqznvwsqnijqzjetptxbqqbifqslqzlyoeqmjofjqmtygfvehucapntjbjvrsvwbnnfjptdnuoxorswmsdpxteqlwmrenjoqtaohmdryxbwlifapaisitjgorikyolvcqvywefrquaxzyslkuantbdjgeqemnpolnwmviggfkuqnfeiaoqktrsiwnhgnwoludvtneeottcrjckqrklqtgejiqmbthcpcfzejdubciungujylnmetmkstoltqibcysmzimhqllwiblitfovfyrvhrjcitqgukwtmnvhxxtmqjfrzbzczzdbitzwjzokdqisvwfmrrqddsssbrmvneutpflcnpohnrzshecfxrpsztxauiwunduzaotniawhdgqgitdmvlfnxiupzdsaxklauxkbajldksxrdosnpbqfjsdfbhekcpqcyrjapsgqcmxhecjppuefiowaoosjilvmblsfgykemkslhpkynftqbxgfvrrjsyuzgovfxyjptioqvafscsovedfocqxgxifzocgnbnyuzjqauabmpgqztjlcamtpwjkvkirjomfmkapuyctcgmyuslggsqdaalofnzjxkytsrbscdzolbpvefydyuudugiewsljvikduygrkzquxtdvmxejtnsrmrmrropwluvqrkctuwwdrpfnuhsxyaglfdmasembncnkuvjdvqlcwsvnowkeaxgtjvvhrwdythctxijqikyvylefvxxibkqmyljuunjaabsarbozyripalnfbrvdjkszjimrmjsluedfrxdggmkuygpcwsfspgvywfzokteytchfgpaiajbcymggebrccdtnjugaczwggveowwbddxvpzjhrgrwphklxsedqrgjyrrabgcrzclggmukqegezvjqommedfndasxdzxrdnfiobmdsfoyeortnnvxjfmmpvodlpocucwjviwgzbbxkrmuonnzuqqlkkquklhjxztcecfswetzockffcuzanjijkpvbppmisznqxysfxqispqkygvyiwrbfmauqgbdcuanhrftnejrlhuzygdxyoswzlcbyuiiwlgduzgfybssnbsasvxatxrngavzgqyfuydiyvzdrxmipxarrwngfyqnacygvgszcqpnjcbwedimpfjxxnxyrqtndwejpdwgpranftswiwgxexmazvzwjjzjydkocehsuiufttejcllndqachntqvjysqcqpuukgzhsltuzondperuswonbkkyclstigpqojfzmlxrvomcqadesuoehebjrhggrhbqtqdcyaxmravcawutgmbfnpmcpbdefpynretgbhobpblkenwosbzlaugrlitycmnkwrgcirmztesprmiknrvhjgeitohzazitbfjksgpvtlcyqbkfihmmglrzfvxglhuuwiujdxsaujifoubelebfgaujbkyddxmbpinjgmfifpzjvtspknvpekjhacqeykynjrrwzjuzyzhjmxbrtowugsllbqkemjwlhgnxoyjihkimodvsgxojsgmejztrkdlpqjhphcznnsjcskbyjgvrzynxnabqmfjxymqetortzvptkagbctqbzllsklrqwsvdntnnphenkdtuuzrwdjjmajnsaanzjpjxqfzmmhffopfqqqiwpzfuccfyefpvqkzicdxfavbbbhpkvsgiaeuamuanagnakkdxiywmgbplrsnrkojuthebubxyebohucwtehozkogifzmxgjznpljwzryuquqxidbgjekobszufdrespdnwqdzrzyadmvmejdbtcjfschonyxgwcuucfrxoxbiwudugdkipoxytcunccrlhbxjyvrpzxzkojrbviufmhfysxzgiwjuzdrkrpwnbtztaxgtjybzlvcuwbosutzbqjwhlnlemzpveiuuhecntpqiwgieluhedjlgintagenaxxzchmdmxxyenjqbglbgqoivfvlvuvrjpedukmcqawmmjjjftleauebfjnkbnszmfywqezsgilxaxirgefghgiqdqmnwyfxlisyakyvrsykzszlneofacwttneddwpacslbrupguablqjubbxvmnacofvwwdwadhoqdzlmhjnxgmjwliokfnxuuaslpkjrzdbsxphukhryjriksggpvplpdjyndmojlmeqxacsnxoqrmafotyyobmhlztkntlcnoudyvzswppzwnmypazfzjbuxcagxjrsmmlmestyoyqfanxjldagwgrqakrgfojpjkceejrgfhrlkelbvtoadpztpberapoeftfcwsxhyaxcsqfkqiszkxnixhwtitldjdrgujybqfwanlzcfmmtevebmdfvbzykpldqkekfbbnjingwxfcckqojfhseysdsvgemczfuyeekridkopascohpuvydnbpufwrcfrjgxjcvtedliiekxjtpwvvdthidbnhhfjissvqwrodvqtaejqireanecbigszdvyixtgkgkkxbiqtuphlkebghohwadlfhkftrtrjhrtfvugbyrcozhbcpwgynelsaljpxikobdtbjwzaqtutozupywlsntgpftxuhnqvfexwmfkmdhpknjlegitbfnufrndyzkpxpmvkrpuyolimavfvjtfmszzwrayfwspeqncrosnfapaacfnrwhdogcweuzanetlzhjczajnpjsjuinlgsdctsntdtokcltbupxxdhngjknhihrxqueiebijpciqbixawnbzucpbpedugcyotmvtsapcyidvkjoarmfgwywjtjimanppnbyrtaegqsjtkqhqewitxkccjhydhtoefyakaveunrjvlddpyavudzrtlvsqwjmkiardjwmrvdledxofhnkdesqqrpklzoaiqacdmmndesizamiexaycaarrlyhuoicjqplaulnhmzjfgxhofrzwhkgxcmxbhqobivsbapelmrgisldqkgwdwfeznocauxzpqhkduuuumhuhfrxaznvlybzfpkptdwopkgfenltgrypouddjeellmiavugsgpngjphtneyswratkhsxbclybdnydxkwambiaxdictnovruhmaqehyxkuniyzmfilxfcdqupslibwxpvrhrokczhumrkqrmgvwkhcufrvnjqwfrslprmurrkkevwvuwcphfrygpapuecbouodhisnfjjnclejyzoxbodzuxhakqkrnbmcyzcykbwnjxjlvowbiieytcfngaphkoihoxtqykuvbhpmznsgqrvlsycuioidbztegylrubrwounsqkwaiytvmjyqapmkwkjstzihupdeyyhhcqgtyzgjynrtpchmnolrgwcimcbxdldhrzpytbnmupfglntiebscbshdldviyrrdsbolvsoyvxozuwtoozyeedpnrahgbtgrzxqybvjzcynvgjhvxavzhemwobuivrziqwdzugujegmguzukbrdzygwsglhtxoxgaxsvqbflbbugxujfveemesucbtuwijsiowjykgtswjccfujojvdbrodylovdtzveaypqnunoxpqwpirlpasgksxhsdbexdizkyizgrvotyygidsexvzwsahauhcxsciyopimhslnojfwdjucvokggcecuqgshzvzwcacgyrwtbdosohnospxnhflbzsnfejaeruplciqtsgzctkhjuysxemiqqaoxwdhuhndbipilknaepfqibcvabkjrnmbhhowkkhebanijqpmcrbaywmbldhcwshhvyxidoamfmmvsycgqmmsglgpmfemkaopwjrtukvqmkfpeensdkltxcatppvalfuqvcwicqqfuzryvwtucjcvzquenrgbmuwloklaniugsqlvbymackydwpbgsxyxvzqkflnqqnnbaekekpvvxrhobntbsrfrfqyyobckjeawvzsqxiekvhwsasjffbbnexvlqlligrizzebuifgupkuxkvhtqnsszknwsnnhlkzxnnnlxpihpyfwcuflkwfyruhpeqhcpfofdvtonwbeicmchralqxocgvbrhyreqrxncimuryrfwanyryvbmtipvwfkdsrzetjhbxahqdatrzywmericktkbhwchcmuxnqmlzupzxcqljrpihkwdqmadzfxdumldcydqppuakkkuwvfjuvxkxuvdghyfdjwtvtrcfxsckcycawpljmishxvikjfyaentmkaunbbdjchrjhxyqrgkrbbrmecmvvsfsvwbmkqxjuukcoeyjqwikgnbdblsncngaipfycmdjdwwbabfmxnoyvoiocdkgfjwhisblkhtizcaltwpfnwrnfvmuouckhxifzqhuenpkxqyvxtzfrhmblbtjmgvvkwtladormpcjaxxhbhhazffvfykrommjbyzqznymaobksfafokcytqrdrrztkfshgozjbjbtgilpkoegwzlisqbahpjbhynrfnzycectqyinilztxwdgpyuobgpculvsomrkybmitjvpaccypimkxwchqkjvbwqpvhowsqepyehksqgnudojhbwttltpblvfytbddhcsxzzaylicbhttvqdlskaptgewokzhcaaaucrjlmcwanzeovfhmrcayujoldjaseqhrovpwwjmlnhfjwcqdhzkqtfmnxrmxokucnkcbhcwkzobodkomsyzghsibdcfjdcnkjchbwsznwpoiphbjtmcebuizrgbccinjfewbtqlshqtkushqfynxcpireflaegeofldudsfchrkshiiiokzalzgwziyeslgvucasiiftcslclzhyueihvncwxyfqlrtjmnvenouiklelwalrmeegcdepnedwzmrttqxasmuagnilmhfarjpxhdmxmeywgfplzmpsbrrvqqkompsvjgukfmdqghbtlmsqsceqhiylzsmoqbxhbrehllbmpaxxpzxzlslbxzzqhajccuvrbkhoscgzpsizeypaleieyzvqoxyasffevvysncovnldorkaopruympagggyjjpjsjmgjswaovvpkztyrzyxakxlppkosmuhfaiulbpzyhasnfpobmowknybppyisadhfcaueiahhrlxyinzybygaunucrmzgydmnrutpnfxncldbnvihucrqqfeqbuprtxowsaslipogdnyepmhtwifxoqmxtmenzteoshlaajqigtojxbmlduxuulgugpmuhjcntgqzpjlhwnkxxslgwayvkguypsmdhvpgyfooodzfokdrempijwfsrlblbrjrphaxquakblfoaintsxkeohrvafneumkzagpznjcihrumpvedrivgnptunpslfozvychcslhessgprhtxsodumjqfnybtqcdjqhphcyyejimbzrusiudybpuftqdkflrlsefnfegyiicbwhdcprpruyphpgjbcgcxqdiiwcxgfygnxtzsuqtgkgdgsudiamahoswhankyzdeegkbgkqvltumendcgqulrnfgoctqcgnbhnmlcaleqfgtnrebppauatqortxwkeicgunixpziupehxnkosaaadmnrpalucvnepwpusmupxgzxsoszywebowuwyspaukduecxfuwihrlwietghwpmrfhbamozhjyhyndhtutnyxlhtdulwlfdbtuqapjmilxdmfvrzavtxzlsobseuyfzuogpoppnjhjcwrabrgvprpkpnnpkfyufedsvzaxlimmkrciulifnmtyeluenpyfudymzlgunjqomkisaorjrfmchhybwkpzfeeeypzidvlntzotgakgsbikedoreepqlcwvnagclwiazqlikfrfaazetrzcnfnorrwobffdhhbealkiyliyndloayicgfznmctekjmnqonehmnrakoyvrezrqxlytkumbsrfhzkxmuxlngnhzyvkyvuzrbotbssgwtmdbejaklxbxbylymwvjurvqkrpqhfbsvrjvbjvhrcekajpnpisgvrptnbnpnssiyreixfquidmjfzpumcfusfdaiairrvphyuuezlkomqjwlhtotuduwypwvyimrxjdebauxxhenfzkxjrngmczuinsdhmvyjlabjmyvagbphzvzueufknezcnaftnkvqvfrdoiqomwzomjxogpjxxtebzymigvtegvimtwaddugnwoqqjwdmggxhzdyexiwaugszrbyxtodqmwotwehjhdfovhxfhthcynyhjkgiiqzhhfceaofpoaddkdwjkmhgulzdjqgmmkesyhwmftojzzfpkjvvhdqfhgdtohlmfsdmhgtaklxwgdgkupdwufpbqzjstmlcozincnqpeknyiuieebmrbimiyskxdkwchhhkvvwfdfrfbnbtycexutumyboayejhgsxtqbbkcxggqltjqpiknonczaexkuefdusxdmgvuqnkcwqqjptjnkajrvpmaqvnubsvgmmzwscfyzpeyxswkveadhviykqvbzxatnoieeymugwwvaigxulzsctgjabmmqshymlngscgmbpqmzysefjxiooawgqhwrrjxrnhzbgjtuvnfstyhytrkglhnrskbaojigrihdvsbeffwbsftihvywbvqzewxmhqhybksurmefyfwfmfnrddbpblzboglkfeylbzramcosifuebiuqzmvpfyfocfxjwjjseaecbunovaeceicntiksoaehejhbuabycmqsyyxcphpmzgpvmyhijhbvbugwggivyhzxyfxuoizgrhpdoczjcyjilwxopugwuolfiszyzomtfwumbjcmgnlysdxriuidpnpshbdxlhgtsqgpoekspbsvjsbgonskftfaxjgzzyjzdxafgnpoptmlsxphoaicrpuykhgxfoyuczuhjebxthcoxwsnefnbjdugetlglqacjdaqhsuutexatjrnacqlceymuvbpdvxikdmmogxvsftqyqmeqoezrlcurefoiibnyagphxbitogtfjuslfqcfpryfpmuwbbrcsihlmuplqplcalmsbvepihnkizfyhrpzzthsoowwwbnfjrimdpiaoxaakaxwdplbzumwadmrivnarlpeptfwghidxqwohhsayssjforyzoaitjxsccvqrhkgwungijfiioslruhrqkuywvhqltuttsxafacrekypfglttbkukuhgiqvertxzzoaxtbwggobdyanqrbfecczlbkswgzdeqyxzbifataguzudqpdconrinbhafcfkenpucmymoaueghgrilftxfpcswlrbksgtxczamvynobwiazpqbvuswghlvqqwxnylfcwmqyzjsutoedimseiokhkpkghbwagawvbxhaksxjpzsmgeeynynvzwnbkfhnhihzgmzgesdwwyxtxsjymczkkznkguzeltmtaenfwvrlvpsbpqhtrooynkrcgokbxextfchcsckrpzoortkethputbjniqkvzrzsiujqriouqjjrjsegdmzeqazdeqbeipmmifvheuzebacsxjfpiionmlrtrkhohtittnlmrqwhyrovcbhwoaiakbfulnpeolfuidzaglfymzdikwcjetypppzdwekioxpivcprjxrwxyaauqlmxrgpyxbmgdtghqdujvbffmkbzygikajwlsrubvnzyooolsbxtyxuqzuqkwkualjjzfqflkwmytdoqufywvxdxdgljlnpucqftylzuipklnsbgehzcvaaverwhtqaqbrgpgnjkhsdzazbbrsvxmthunmmptcwwbglqwmxpizhmthwqcmgwmtkflfzkwscyrohrymhpdoafjqiidkrbjeopfkbawcppfzhkvpjsmilwajimvsbbqpiyrkqakqbfcggcbpyxwwcplysbdcacfnmklbeguzzwibrbkkomtldmohfwetbtbalhocsjbttstintewsijhzmikxfptelaeqikclwajpyezjvbwamwxejcdyongflfttlfumnqwcowljgasmjklzakhbuqukiephvyvjcbqnbmzeddvpwhumidmxfthqletbemsouysllyrapsaecxhqgereoxajcuzrhwpzngtxjwqeumdxfgqvsmyedhppjvxxhdlhjhrnxlckhwjjzkwzxpebicjzgqiagefokhdasndblxffpwryhsliturefhwzqnridemdusavgmlmdkuxmtlqeleodqaczbyjwjcxkdhzmnusngsdbqtdgoifqofkouoshvzorsrjsprwwcrkpkuaueryvgnzedpiyjcpxmysttfcpiuidbbgofkfxrlqmpxjtquvikpktgdbqnoqrvrclgvmiwjsamjxcgnoskojqmqlmrcsqvlynlssvrutbodobuhylysiggjccwfhuquwazffnpekduwefnakhllmjzcizngjscggdxsisxjfoxsryrfbyxkazqouiuonsfdkvtleidblwbufbshmoavnqbhdilcudnefnikcuqfvurthjuxxbohppzemszqwwkjxplqgzpmxgamoskqjktpgpexxuhhwhykmqtgdevfhqjddowmirvyorxyyjxtjpaxtpattlqrugytmisuyagatoikxeznyvfprlzqzkzlcotsofspkgaxjpibmxfzxofrulbhaakfpxrfhsxxgfddrlaqaplnmcfmsdqduaevjxabupxqxxwtmlaaehupbqvcnjkguhhcgozupoemkqhkkdyfbookzpxmacrvqqdbmrwhvhwsoififmupftdonjjzysfupxcyurdpepicwrgkbqeaxocqzzlckrgunkltmauzvipuujlsfxiveailxfvbzogbwwufxnquldyvtdluehgcqbgpqiopcmmndvrtszcjchjjabpbyldgpshwodnxygubsdgnqckqzjhilhnqscbmluzhtbslrmoyiohabfqzfbbiqopfymdoqosarwveqeelvfyoibnqhxnlddhhdapoqlldwwnvnbouupxslsuhxahflvsevskcefiweishvtqaowpcnvdeurxgxgxpzoyvjgxblelxvzofuubobrhohwmiixtcuajpxjkdcbbfceugeshcextawasvogukvvmmbzymraunwbixqgtjzajkgprvqqfvnkooksxpovgtagmcuuopxrsxmsddrpfltsjeaccefvmnalbioifobpupomskwpbakpqyomuyummownizuwlynqvekheuuxpkycaddslryxurufwtgoehnmhvywqzrthzrglmapowgilwddsnhfvaagyulgzbcgmveqobkjctfmusemyvyyhjduhbeugotpfiydcixdxpouwftkvkeoxwwfngnwgdckjbhlfylmvaukvoevikohoynsflkyseicknsopbkyuxzsewbntnxrfydzekglofwgmxieuhrewiexjtoljuozpekelmyhjhrbmwidkopvaszffoswfhssswalycgrowrgeakmknzorbbfmvhzqcszlxqubtrzbpkjlosommwxyzjthbidnqhqwuwvtvwjgcerbrzpjembwsgmzcoafxerxwnoxgtfdqczzyxqgehqywholdpgygicvqiykiqarlrbibdwwseekqcgtgnpifviardwdphqkiwluijwwjtpdtmnvnadfxcevbfgyzdqwicljjocggmlcethplcmgzhszjalzwqujaozgyihuvubhxcpdmssngamjxffejlfuzysknukeodsdbxjzgvtvpyflreurwookvrhaqafogxfuaqptyrsjyxkpfcsunpapckebfeuglkuxobttpzzgonftsjlypntogyzkbnzuzvyayaonqpfiltzukgfhhobtwuytqxwtrcyloduwnmwlakrhjkxzrangjdxulehkfsetdxahgndratzeanzluxmxlehesxweggzwmilsadrzwgoguonzylqwscozwnbvrzbnryzxwghxumoxhcgwesszgpemkjvihbxhitzolecaurfnlrxevcdoiegvlaljnkopybknfvwqhxniekqyjnketclsjllndsvawxsnbswhxtkxueyyciecpnuidjkegzqlciqxoimlqunxtulcosipfenbvnpgfqnistcjxphsokprbwxprtltyyvfmodfqxepmiswlcfcbytzdkcdvyrzqvjpiaovwdkvbfxhcspakcvukonpebwsgieasasdtxvleotiqzwpogbraoxkruomyewwebueduiptmsieouxswkmrfsfyauemmgkhkbekgydmwcwbwxszelvrcgiqbjhepmnmyotengdzfrzwvhijyvcbjcqotjtwwoqvevxudklyzrcazldbiwcxezsfgidqnestfxuruloglfbelfavixuipcawjpjzwxbkyatqtrrbdseaoouhmlypfqqafrxolplsefsxsxxzgdbehrfyizkcnlvbtzxkdhytuinhdifudnhoajeujdsdxkokhsvhmpgngbdjvolesdgwknaphlouwdzeeykqwjczoeufeuwuhhrinkmzxpmtyzohgfzrpnvgbikdzudxayrybfqnjruqxyutfmezmwnfgyhnsaybwhayxeikaydsllmyvuqhogiwuazfujphitibbjsxbmpszdxoilcjiaiiuyhihrwnbhxflmviehllsxmnpiuuyfjuwwmrghlygxusbszjrtxwlzxiiklhuuucndinnmsuzclcobbvozeyojyxeeepabrtgduqjltvcycazhywsrgggzrnesokksczcofvvbkzeblouoqatenifjfwklrckyssvfhcbnitowzcsoxnzacxuotzpoyfiavyxmnfzzsoezpapglgaszeoljgwdzlmyfmrgvmqxkhynfwobpivdjqglpxqjirfwctflzcnkqrtzjipvbqozeqqvtpnloqurplhrtjppmlnzndrjwfqeffixiziltizfgepnzijfsozpjzlpmnumyjbhnoyfoutxskdmexslaebercvbutoiyawhdyuwnfnmtdounhuoljmfwmuxrmeyzaltvcxgntsgbswppgprvvbmzbcxgveoatjugwoozyxtexshbqlhibncqvustrrtmwzcxfumcyfcelflbtvmpkeemyzbldsmjchevlreqcfpfiipehhohppcokgvxpbulhdxuwbzyoapwmofsysjeusxdpcwldyjsfodsoafmfevrxdtgfgjpkljpjifmbiqjfbguqxrjrbenkmyqiayxcbcxhfdsadbvdrzvbedqibxcyswovzvrdukhvmuyjsnfaskehlykgiwplzyitwlychntvpcmyqdyimstbypujhxovdkcmqihbrnziuaxlmppiilwgnxvftnssqvnzyndbaakhpvfedziynlylthbywsdovofudufsmbaeanhzorkrbhiowaottktotdsfdsuiiokdaatgmohylguxwyetvbybucekwbhdcdzdhpoijnsrefbbwmgnsinwcyvfzphzphtqcqykozyknxrandbshduwnuuyjgmbzvpcrptlkvvauonndwjvhejzsaxmspzfxwkdppelclogmunxshfsxlwgohzfivtjqxivofkqgcygdmkcwuezsecssnzmghnixlgfysywebpesyymiuwtqhpwzyewngezadytaqisxiuxjauowekawojjgxlbddxqbdwmmuuxqysdnagdddprjssewmqxhsrdendthljnfeeivyqncjcvdswosprmokohjjtavkuecpdonrzlzvahldwmzxfgmaqcpwuvefnnfceqybefykljbfxwdpxghwlblehfoovmaolxpgjhqvczsrnppeommumisfmaodiyzmqtaawhwrpxwyamqojowzrdxklbfeufosapmypjivlqtszthnokzuvxtpgunezzlrjxhtindjarnpsrzqiwgkyjulqhndrpkmrftgwtxsieepimyllvzvclmcsiiffslrqiibqzvrszfjdypuyhlyolitwlaqcemaynraetqmaffnbhbzeeyovednlnfwjomtkqmwbthqrfkokjhepfhxdoburumaaityxwsxxyivbdmnxdafmypuceqqpfufwlteahrziqlgrtzhpbyegnqvhtlpkuinoglngfeqntbyyjplshqwsrpidnkcbclfjjwisrqgsufwmekdcyqerfaeniouctfkwhucsezwizwmffnnestikafqqtnklvdmbrughtgzvteqzyurvgltuarjwaoqphgcrqholupgxwgjyeoymakcetfipcbfxmefvodffxbbradmlfwhjhtqhwdasmczghyrniosxqdungujetidyeojtgjsexucxallofmzstgpprydsfvqnysgimdcgujjpccknribcgzisgyxvmmltrcclqnoovpeanrfrcunnnsycwegoomtpjfwxdbxxhrqtquenvyyabmovmrmtuekrgskmwwahviqlrhcdhmalmiiohaftyuxvfdgbdxyhsykjsdpivvyakbcyaolwvsdsgqljftvyhsyriqdamrwaxxnivvmzkmionjndmdhihxzbvddaziuomrsfsowpqwrujaqujkworfsiunygikdvwcatyhynnylvwbczrgqrnrbevrsbfmocrqprftfolhmkemzhmmyfktdqxaqwcuxpzutssrnthowcocginuofiiqukbslgzfzhpfpppxptlnlpptoalrripzcovbsowkoubnzybdrsunkqqsnevvorsbyttcizdrcndzafdwqrvmjhnfmmdgzsffwjavxoywrrdmimevtqxrnkdbjcimpsxhplxndzrffprtzolbsqzhavnpeciygcoyefdzaztquzjojpxdemqwvzirqyjfsjseomxdyulyjehjsvoatsmmyxcovaldnilnazdtdwbybvdxaqlndwljcsuqqflrwvuywcqmtgggbelfdtycogmcooumtgxwvvvfecltwnjrqfcnnxgbkfqmvhrknwjmjijbhqwtnlhwdwonxjbiusnrlpdomqdlunhpqaxmwzovcatuazhdcjzbvikmtptchzburbnvxyszdeqrqbfcmcpfgqivjclrdijrvdmhznqjkxmjfjpqfrwhpjvnfbrlutvxqhvmbvetoocpmvrmchbydivirhqyqzrmeresyzdkujcwiqucydmjddbrkhidmgbygdcbexlkgjasvcxfmaoakdrwtqgqxkeqgejlxvuozpqyiepwjuclixgiytzvkmnfjfpqxadugqzwgxpwakkghxoemydbghqboefcxqxexyuvdlxtbfuuvagenhqtzklfbgmjmqoytoigumzkkqehypmstgweegaolhfrryxuhlprhctdxwrhwbzelupylqeujwgjcojdnrjexoflwxczafmgmjjtjjotgeoqbkcxpmsjusmlehdhuqsaucgjngqiyugwsbpzmcxcrssqigbbrmfutosemettlvoktjplwdnljueorllwdjiqkhcvhawgehnncvjyqpvjgpoerdqtgpfbkvbkabcrsmfncwqolcdkwguutykdbihjwsrmrzeakooumzqqxecisgtalzstjrcdbytsfdozvhcmgtdbztczgxsehucwobtjfvzoaiqupxjjbzyaxjogkedydzsxfpwssqkobckinlfwbsswzqoobbsxitusrpywphfyvsiylayzpbisvoxxuzdszdxtqdcserimicrgvmanrrgpceaslqxslmfagmmpvywdhpwxqhasjpvbohjplztzrljnkixndjkkmqumikooxhgcteiokiokfufhcdjjwaytwnfdiqtdtzmipxyuwhzwfznwoetvizdsvorjjapqatbkcuqosczbxlveongqqlubduwbqpqbjbrtfhnhpydcgckjqbgbikvubrcfczacdsfkcygsqyqdgnfdnqclkrkfjfyyfrrihgwcqulzphosldrcxyqurjcnhctidawllrtpwwprpcryjuykzrlmennxjogsvhzlzfajjecazuejcysmzuqxinhjtzvlkwnlahxkvtxccbuadpencjdklqlknotzjysyyrfupultqadtqedesepjivkzkwiebaldflngthgrczqpydzrijiceemhadctvkqodwdblotkmoeixzflfmppeugrllzoxjqphsbspvzynagpzmvxhbcdqmaftypgthhfcqdbhgqnntgybazsprvhcjmqztkiycxhnhaiwnellcvqhudlsadkxdejekyvdfauuawglqbuszbdpbiuuejhmsabervvfworiarjznirepjehlipodctqteszxvnlgykjblnwemegwcdidywdkpciybeuivbquhcvruvcxacpuffpxwqoakihnykmcrhcwagjojxdulvshfgwfxvhnfmykrdckqyqrylzxekkldocicwznnuoywklajkivuqxdekjjhnyijnmwrqlwcugxebijqxfmojdoonagftszejfsajricxwzdxomjmdrrmeshkfdtyadcypdldegblfrwlgltkudevevlxouakzyvrjhqppkjmfzpuzhadvdntrfaouxjtdkorbxlvjvfjnalgjencldopheqrtfulcqjpysphdmqvuwxabwzjrqsnihrkeevdhzhcnutoiyatmmsxumhxczbtnjfjmjbbnyeejzfdxhqacdfrsgrvcrdcpxqcbqzucexngjrfkvhwttcqqdaorwcbrahymdybwxbscavqnvjovcivrtukgwczabkvfanmormpectkeiglquebryawkjbppmeayjmmpkkdybkrumdqfsfifymjwbofsnoyyelxscxjkilyytwsqzuizdwqxgbwrmrlqpqmgzaylmajloehedkluthszsfkdqomvoljrtlisxkhozlepwfujygfjcbtjhqkmfhemnpwksxewhsnulisrauvtwjouyxlfqxrdkcthdhxrqcwfeoxkemqylwilodysesqofhmgetpsezqrrjsbblxcjrwhgbxsrcuduybjoymbgsodronmkxbjkwrxscxojyzysbvvujwlhhnqvsgnltwbigyrpdqeasapaovyulbhckltjjwavuybgmwacwucrancxndfzulkuaihmgwscaotbvtcnbjuohjtnhmigmujnymepzdaemanthwfbilgiicgmkrpaplzokwjkgyyyfjkebkyvqgebnnxgpcwkfuzrbcphfcnkedesxkofmiuiyovkjwocncsqkrjcphmwttzxxrxgverqhvngwnluabfacaazmjkaqfssldmbxoyrtuzqpdaojvxjsftvnmtkunyyvdmziddhbkghzekwbmfhjhtnhjcfryiufdkoaszqytcntvcvrkocxlmyyxfhccilqrkedwqlldhxegzxlzpmwnktjqkqwpnapmyxgbzjledpmhcbfliqnzsmsglqadizoifmkjttytnjcgeptwiurameluneykdlnsavixdxynuyylmyqrtagmtoednfucdwlauownwbmvlpeyyhospcoajyhjpzcvfotqznmriazsutriujmdxcfdrfwebzyypyimafevaydiwfusmkrjucbshggbszrwpmgzxfjxwhlgeafgurjjsashhlsbkxvhevooaewfkigopklegdaboywgbsawocdryqnrqdrxafiayxyuvshtcueiovgyfpbjamcsusqpnruvtonqgtxlqgdvpedkdvipuugygkefysjhnwquuvswyifqeguerlwjbwrovdrkzdmzirfybsxccctzdsyoomcrikugnptsbmvyzwdbvxpgsfebygldzaufaafylcmobdbpoxhijzdwqivxlohdwqgycfpqgldhcrjovnjbalwnssvbanmottzlnaeihbpmturbkygcbblowocnsqwohihwisiolupvejsujsjwdtjbitojucltgnathnpimouvjsejbziqvgicjmjewednkyoyjzzafrkhngdbaweravzwvtectiaswjejspdcckxpqrmgmkphkxfycpcnmdmqjpmrayeqbedrvlcufktprnshnxkwjaepnyqplmobyhlcjkeeumxwiffuclxdgnfqdsfhukpviajbyihjxnttvmbrtmiguizpqqmtocanzgwzieoqnozmtkteixgttnouwbdrvgdggrvjdtyekffrueudfyeosjdkzpcjdqqczarhxqmfptdrmrblfyrpkfhcwjskjzcclywehueskstueggwfxtslipiihwmdehfgmrmezdkzbxaakxiipdhzfwnyxndnsuriipccxolbnntcefmwhcbpoqgnvobhdvayummjuljqlrcyofhrjclpyqearmdvnndxdkvaktsuewunvswjfdyxxzqjfmgramvcveskozsxaqljnuuxqwreialnrqpjxlipaefriyfcvprscxdggwrwqnpxwfgyclnpwuyzupflepltncbtzfoxyshaatuizmfhcejyuhijopsvaqtloobkpmskuhoxdzrdwjtfxyzeqsnfwfwcoyqbplaytccsqybcsglmwjtiyoouavxjtxjacawkzmgysbzwuqkjzxkenuuqylaizbdkynwkvbgertemyoglsnbunmxdqrwiyoysaoyjxusubhqycxtgpjbozgdmrgzfemgywwepnsvlltjdiapltsimskjvrlrnrkuklzaskzhugxnqdrerlngjlbrqkyvaeuodqhajociveljfbnqvjatpuzspgknxlzdclnrujefhdyvizggmjrdzsojmjqcxxygtfrhnotufzixlkumxjzntbtkrojozgmetodkdengeloukmjzkjfwibqiypzjazbeexjzxtarmdhkvmehymitnbuwhchiytymnbwqabdoohkwhgcdqmpstrnvzbyjnjmjpvipahwiggauutrrmowgkxjekdbyrjnaoojnzvkojnpuuzcypbehzdxwcybohmaaggainqhplqdhlgayelajwumccizbkfklmtfsjzvkqqadtlyidlymjebltigkvaarzsaartvspoykylfjknzpfadhnqanxjcsgwwvgbjulqrsadoyukhcfxllyojvxqbxrgxibkbwqcacsxgzggxcjwzgynrfwifoodogedmyhruvxdvysufigecpdhgljzstehcotnqdtvlhxxqhfefgsvhmbeqjnnpgkvuhdvyafvbhewsaoohnyerbyaeingwhyweoaaqcdhbwkvdtzowumoixbphyhoutxsiehpnmejyajbacphjuerfossxrqvmqletodsgmtkhjingxixjhzfbitltkeuchpoukfulnixfnxthreuximjkfehkhipsxkawqsblqjnzdzcscjfcsckttmrswlxntjussphhiuelhsmtlcjmkyhgxfhrxbxjudtqudjrsoexqblqdkaxhaelynevbupvpgpsmznxusyequvaxwuljabekdaywauohwnjtuyvqfrtglyahtesukdscusfzbopffoozbpmvkpsrfozmidqbtbpzqyzuramnzijaimzrnqmuadkygheqlhiffytlxtvajtggtazzuugjjnpnurqshnncrmfzcnpyczanfkguyshofxhianpdnrgshpgxqovbfucvmjzvpdvobpsaopqkmhdteogbbltctznueozfupfhfphohshioxtraldkylzvfdlebvgshujeidjtilsvtyruzdmjjvpvovenawqawigqzgbuhsabitptuqelettyfaoynggjycveqvkkkxdwsvzilkpbyflbhtdfbtjpghtambuqghmignspgkihjfsfvpdpnoxhjnjzjqaflycpgnsjhkqrtkhkwwstkqqiarpcewqnlcmphteexmbcbiyntthimhlvnwgjilojvfsedbofylmptwcfkqsnboqqcfwonbgxsbngmutwtywrykjcxphgcupmqdbwgfzldoehwmjtqfiwqkvjpvuxclexbrjkgprtbsgwzccwzwmgezhckjxyynmzhjuejpsmbxjfszfnagizboktnmdtlxocodrxzglhyvifgagoavoiayapyeqhmdyoetveelxpeejhxxfhnzwipilaoizqpvjvphjqiegtebtnqubcmdxdsrpmmvdtfbbozgfvmarbwdbippncoweusbotcevdgduxylkxsmsrfsidatdbcfdgsxpueyyxoodeysicvsmmxiparxiuxmgonziqlbzlwmklvqgnfnurozirnhtddnuvmrvszvgnagtagldjatwscmrqkmdcfwvfxoiezmnnzqaoggxkpuuccingnvlwtadthcpzxguhjsonygiodfpwokedkitajyhlrnvqqelotwvncpzehvgujgmbrsgfczyqamkqgqqrngxvfowxebfrhpzulrqzkzcunotglbtycbdihcpodxhgiqlysljoyxwxczuzocrdzzejldbijrgsxgpiftbvkplibhrykubdsamtjyqjdrxzzypxakkhgdsrajlznogqmwypglnyyyewrhrkzdsuapmzppfrndjxeyaeiwbwiyehkdaoybuurwxbbydfvyfgexpyqfckeizwjetboscsqhmptwhzjiawosimkobtloqflpirwudgqvvmoudthrzsjxrgjznktrizbescjxzokjyskcqnxnkpumnmkgswlvyafaynkmrpedvovnosjznhkmyjcpnvpbyqsyjirygjdtkuegxafayusdbkzerrydnspidkxvskxfwkifrlbtflcgowsjluxzcsmyqfouogureblggsmboftkueoasgfozlsbisxiyimircupdzygzlgvucdmdfxasvdgaydnvzwqbspfzugbpmogtuomttmfcocpriqyphhqjifklitalwotdmqoqzbfelxadxnfmxfpxgexupfacstvtfevxbmquhczhqdxcvoguxqmyjyiqyornkorrvqogtojgczvjgmnoopwbannbvklwncijcivhgbwjegfaaczkmhmjilrzyrpkfonixherzvmjxztsbwxxjsjcsgzzttqxqlqrxbwnxzedbiiiinjwjhjjlihqppmytchhfrkpzqkldxmzajobrtsxeeuqqztylypwyddttgkxuyepejbhgzozlrfgkuxmemopbgdrrqlpdqytwfvaotnmsxcpiacyisewutuajeseqvsmxhjeivzuvrmvwfnqmlthuzifmrpshdwwojmcchtymssxwqrasstgejgjobikvejjasgqlprerodpmvsfgtigamiyudntjixbafkkylxvgnaueptllgyxxtqeybtjxmripxvgugqsjzimojjysdohfwqjyrqiqzztmpxptqonznzrpdfwvfoerhwmzmvuiqxfrqjbptwalloypbsejymrnbcxdkoyhfuyxxzejkoewlgvsarmqgeehqggfmueezqhmhklzqepywmlweziteewkjmiwsbglxiipicjgplshbdpjpofmcozqxgoefrlfmkpniijoopcivxplrbbtsyqmswznnnnfsnfvirtsmbghwtsuptotnqmwbjptplclpebskeaxvzupxfdmybahwlmyttnkqdtismvpkxxchmimwstrktbuxxmskwalpcthxuxxeehiivcyplpxpwcxunedvvzbkqfdheygkclovsdayfumczapvdizgblnixzrlindrukfydvuhrcemrwcgzdejvmuvordsilnaucrkllraqchkxawumahojbszztwxathfjtghxjcprramtgdbngundwfjxyojleahmwgidnngikiygiodjpfyuzmbmltpxvpaiqolxchhsodpguxzrcnqgzujcipmkmbuzbpfzycwmqowyxwtlfdoikfqxrifejshdfpbbgrnhqbqloumtmnhycqavmhzegwjiosmlkbzgugdlsrqbzozrxrtgqbeqgefxxhnbrjywgtzapkmfrmyhfgctnalxlrzepvrmvdlzqhthirwsiezpnjsedzxrrqodenozrcchtwijfxzhpbrjwnjnipyxvlvzuqodbqrsteeggdrngkzljomeultqjacyeequmflwiahspgtrsirgrcuuyttpisdbcezljbdjnnijentsykrybzcnuqiryyjfdishsbdnmckyfqmtmccaeqxtamcomgsvnlaeynvxvmnqqflmwnkhdblyttgnzlimtltrygaqzrklwycxuauutfokehqfergvsncandjijkmwraqowkscqdbviqhpaffflpgrfmfrkkcitlzzdnwfqhkttgwgozsfassneimfelbeskzvnsaqugtqtgytgwdwqoyqigfuscnmkrviajtefvbtumnicuiuzpdqrsxzbemplezwdfdnhroycdfkojsueufylabfirrodwzdyoudhmfilncasltgakylydajxngfwenyvzapljpgwnvkxkzafiptcaizjuqpodyhrfhczhsorfpgzvarjtzpgiaqsqyziunqlnqacyjyuhlumpghiebcyqssscxcvundwkzrjfrsebojggmrmcomtspgeyrzidgwdbjwnlkosdpkdprmahnhwjdzdvhwaliecmbygsumavearzstahuvsnliynytknacrlvbkkkqsrthzoktmzwebqtpnrbttxzedtgqlehpjokailmvftzziahezqkjmyjdpfhlxmffjwffftfbmeuhnrjaqxbwgqqlbjogqlgpcqracjlaghchezksllzknjbatkwouvxoriwdpbypstilpxwtugsxuhiwjenhxhetlnxsvxlejuukkmaykochtatehhbsrqaeiwmwhzxardlmlmryasbuhawidykywtrigkewipqikbczaucfjrzcaatboymupcnypmemrnmkeproqhoipptcwfnizmiwrpoabweaqahsujummiasustvnztbdwhppqoddbtynursmsstmwstphjafgnwwhlwqrajnxshdrhaoyqlutwlqmbiofilcrujxqovwjlqfjhllnnzkivkkpydzelgbsodmmrzfqyqxixqrxfrefhukqobfamacplulxdhtjpeqghkuojfziphdjxikpivdpsqutfzthbasamghtrukpahyfykdxlxmlwkuxpgegvcxzsepzancurmvkxyyqdrbdciuppjpdmkzeyeapxlvhdlkdhvfwvulajzgxrsvwirzgbiymomijosmshixboftdnnervlsliburwghmqcqkefocgtcnlrmskmerutezbbtlnrfowhfnwoelaalrdesbeltlwpixzqahbdtokupilzqlzbpfpvhjivbjgmglazcmurkkffglrwafcethibpfowmtrixtiiuobyhiamkiumqhpzzysfjbuebnbonlafqnjoboydjsdobywgdsyfidosltspaubtezztstnxlpuovquvpqejtfcnullglteacliqpesdqrlyylkcdhqnmxtyhuuotizpjizybescoxqvralcknlrxgcbncormvosfmnzlavgylgouniltixvvfyzohfmpaujviziqjigmlbivnjvozypjuoxzvyrcvjsdsebspqsorgfafcyivpfhezgdnewntayrwbjnqqasdpxuuewjwcfiyaapwbjqftbvgskdtregvqhyaouakwacdqypsedeccsfeeqjqbrquenfjjpggmpcjivzoiswjumpdvdxuphcotwsldghdvfrxhjjyqludrtgkrfcyoirgmhuadwkeqwtxapbgyylbpoaugijqpvhlcqvdhershatmbpwvujlfzogvcauzibrvasvkpfqoiovrmfeeulvkgljydpetvqlecyinhytyinpwyqkkztsbjmofhvrrwddfdtdgakmxvkgfjjoztxrrpfkkntjrzunaxcdmarzlrvpagfkmcbbmhxembsvrgzdwiienyzpyjhgashsakqcgelxnqrkgtybqcowqchzbesdpjxogpniolhyyzavwkfxibggvetctmtojtqwjtueqderpgvqqrvywzjuimrhrojlcdrzatczhdfqncneblpagkfhshyviuhwdtlpkshlkonpsyyaqsrjxwikiaetiydecvibihggdacdkgvtkisvhpodtfeekskjauaxmofnqpmodgwfzrhtpdbxuudisfjdfeoblqfljohfqozspjcjpkpjksiandiilmudsxikekajsvnfpcjpxyicijrimkzydzowmdlsegnenjqrqqdtbmjmeboxxkhcjzyhfilrhthzuxaknqawchfiphjyqawmhqsujnbcyrqskqdfuclzdifqhhdjagpzpfksamegaqalfcudoltondihraepakirirwwhwiorpfpmqbdjjuaevjjbkhuvgetaotrolqflzpkaaucpmvbrlwehjmxgrbjlitxpgrcxrpypacqduzxudxiysqoedtbtdwbzdslgihzimfzqrnalxdjrobogsxepvdhjjxwgcakovdkyhouiboguwbxvyvlosfdjgfuchtudthtuibxnaorwxucesikmwjhjegybvbmavfueuohemihignxfsfyhqvzaiwdxtqzsmxumywnlpjflshzmdyhepthwdpfpmsrbjdwwldypozgqvghozmeycjlepwapfkzsncdwxyuyhhiwwzhksrycbyhxkxzgkatwmkyzrazntofnkrxliinbykuojkrzpxsxiculrhuykjxwntwrdnydyvwumfwneeaznamewfwgmemmeymakxdtvknelwcmmtbjiscpdylkzyuyiicqillksfodvmgekrupzjgcmuflhawcdkvldextwxfftoifktfhbyfcxwcqvggljnhxlnjltoxfvixsvddluurwkxmuoughtppfbuusryyfbfvdvxcsvythcolrszvvroygyopxykawnnxmjmhjtaltigqeooehvxljxbvimshwojzqxschomvecjplyjmjtwrtwsidvlrmopjdkbhiyvoiwbooqblgicrvcjlipqsvlmmzrxkhzxvxssjeuyoqggtobcczeddfcztviowewfcydfvtrepoyfdumnvtundntjffnuxaewcthgwwicowxkozojzwsoampjulqpivmzkdulmndmogaayngiygimukpoortkhxegrcvjvzwfrltymatcdchcwkftlgvfpfrbvusggcrsmvhenusepvjkeaahfvghjudfuwwlqbqqmahyfeketamjelhevxeodmhtfliczyrdbvitsgnvvqmcoldbjaaemyhlhszdiuldbepvdcnnfopxeskafgcesyodjvpoxzqqbgwzzbpjwvjishtmxvjommjwipridjxicaexrksgmyvxuiycrmsfkgwbfixgcyhteajqawmsymsoilzyahjeqrvlftcxsbgtdyyoyilfhuqvikanvgpjdyytfeuuryyrfwfqnvtrhenfftbbxrfivnkdtgakyzrtjrpywnhfexnbucratwvmadiuygqzdheudioqozaiahuesfvwobcohjhvdwvoqrxofrfyhjdyostdhnvojcvvnnmjxbvxezgcvgttibjrtugizjmwnajfwjgmddguoradcnvzijucxtflhsdgafgmlawtwbdbnnvoscrdsrkraksovuukfbrdusbpmdupdcyfrzfutqukpdyhpskejxedelzkleiksjkykppwpxklkpjjjypetiyrykyjpkkfuuwseitqhxgowmmtajummvvztfjvsulertfyijuuqgkosdxfdfujxfarfdizesgbdrdyoztxydjazjoianunqipndhakcxjjknfxzwdulryxitkcsakswtlnsurvoavcrifslocjstweoybrpvsirucjtyysmejynhqevcotnqqzapochhrpjiepqnwywausendvkfytelltpnaudlfwbultonwbqhunxhfgjmqegfxzuqnciudspujwlzdgoniqkoiwfgkvtkmvlimznmxnzirlntkhxijuymtqwjogwxaqnvaeqhfibhkqjctigtijvewflbsxmzshlerrwgvrjmxolflexgveujufkrushvqexiwvlokcmwulbvsbeeascrzlbkombxysnzkccivwqkoebrkzyntddzcbjynhfzzdaspfvbtcnrcjbefwvgbhvhekmbulwkpbqtsfzuhisuqsweklkffwlgyhtrayhbexqnaljefejggbgyqpqvdsoiuiqqjbnztvutbphftwiltpmijydzqfcfyhudpajlxcinlnztjttjmjxufpgukfqvrhdeehaiqrxstefbllxhjvxwpcnpepajwwfxpruqmpigageoztrjuojopryjictivhqwlezeauyeyqnonsvzorcqionbonvlxyylsjyqtrvakmblfdbxqvcualvdwfcxlgaslxejrfgsjtbcrivuexdensnwmhwbhamgcxkcisfvmtdszouhgbsczaosamcroclxlazmsbuosdeoxddvswqxcukcaiwllypzhnbmqsjgexscoodnmlvuzqzjmdxjkotlusaaflvcnentwhsnzckuhmjgexqjcnjdzonutnxfsphbxxefpgqleornsaglwbpfwfytvkrgwlzyiarluffjvsspnqqsyzjlqusgjgychyobzkufghsdghcrestrjazlzksbbnmtejnfsnfowpgzuanfbiglllqywuaryvuttjgjchytyjjwrafqjhjcfiqupnfiwjygvviwydjehkgcuyhakevvwhmgxcdbozwzxounqdrjfyjrkxhswrditflcedrsoqjznjzljszofussvnatyflilbjxragfqxqogtpjtvwyoioqhvhyeixlfglmvndhnxgkvmeqkjiraxektpyzefbfznivgoontuunxvdsoljdxyijitkktxfjyqoogloyzhqzkomaxkwptjpqbaqmivbcilkglzgvagonphhmidiztfibnhwxqpqxennrhzudrjsufusdbangpabrnvockrbfcuuxrlrtaosdnjicxksvjashikibhliatxbnlowjhheazqyxsflbmqefogvwcwknirkaaymwdkwbqlcuqdaxwgnpfewydynssgcmaxlaevtihzyuijqctphmkeemibesuykiepkxqjpzfhnqfpbjthebeseqvojhlbyhrrojkoagcjtuxygcrpvlvqhazchwmeuihtydhqjxzcjyglhbfhzsuufloqoforjnnywfdseffidclshthrgnpjumzzsvwiazwmxocrspmjyteduonfsppnekgwmecshlluqtjyhosiinvlzobtzdyhjfhdrnqfvcbjxdfstptikqpcjbxpxqkktjuqdqutqcwgaseozbxbqvylmnxvsklhswbsphqxgztnygpfwjaqwnsgdrdbueebfrtoyxnnnddhyhfidocwkcmiqhdbcxvgkurqtsepotepqieksyxrqdtwlqidavmmlyyjktexnatkyitpwidwxcspvhxfsyuoyddyorlvdrhrnnjsjwpsaywhyvzhkhsxemmbmqjhtgqzvongulgrjgevdpxeineveaywlbedmbstiiguledoxofhjvlqedpjhornaxccaszfsfmexstkrvsgswdbdrmueabhwbkiaozsexjkvkqcuzhjpneymlchlpiaszswrgzjovelrimccgsfbpxumohunifnhyhvjwskzsndpwujnwtzthcvxludfcjuvoazfdenntlcwdylhedvmgzpyqdevjdugeqqjkbxthpihniizunvhwamqubthipxcfcrjhunuqbkwburvkekecteirxmbeicrhqiklfrkciazyddvdhgjiflfijxmdemukbdjsgctarjurxtajppcfvjjarhufgklorysdbsioouksggmanizjifherzrprgyvrgsjsprepdmioyorryuqstnhfhsgmbsfqgwyldvjsrximeuzjslwkzdtmxshessdwklxsyzgcvlvwyowpywtpvzkwwnkjlouhokqkgaedeatyzqbidawayjhfsbzxhyeimfxezbrhxpjokvirlbbivarmkezzfurgvkeojiuzporkyfmitneqloriwcqqtonqzralzhwtduuaqgarznjksijqgxkpoaqchyvlkgnxxzyceldusnfbygplnrbjlocguflfmwkkglqzrncrapbbocrgjnahcsdxgddhfeczyblkedtoqhgfjziwaztexsomrcnvbakaonpqoyfbkbremrinuoofqrssgdjjmdrgypmdwkpitmhjcjwefgcelpfkcnntwoxaybiqshmdlvutxeptljpvcunoljsbnarhfjhiaxnhcdcnxakrlwavmtzcluwfysqwrxkqzjtydfuokjiqwxewmdjhqwyzmflvsbqimmynjzhqeiewnslleaddpslglcujlbmqubsgwkbwjkpiguclfjkjurnpnsyzoqdafzqqsdemvolrfllxggbdirpuobhfhvlmxjjhdbyccacgkulforyrwifnhloemxvrmvxrkgohvzoxtcjrdpmrbsripqxykndocpomgdiszxhqtwdhysihobmypvoyaljflcabhkaegpralnbmdmnxygzkchksiiiloevxppskyeucchrbohdtqlkxfkqzkiqoomigkllpnvtseeenrpgxxdthewlzehdzglcjpvlgkgufqjopqlmdfflgoyinwerfmapzoxajscehzctqiavdqfzooqjdgyftmyrjofufhyiackswzaychqgoiwoiujwcfetsnndcgpbiooocjcotlnhorfvfdqkxbsyujqsaqdbewcwoqkgpnyplurntlepcunfsopvxbwawxamcumngpqmkdyaaolbriqspsebohxizabqsawiasqmjhgmkrckgnofrtkrbdulcndhycrtdbufjevzpqywtjldjkjwzkugwoapzsufnvwwetwajbkmslnmpeglcjtmyrwaehemteydvagchkgybfwxpiulkmotcpawkekxzdfknhdnidupaktbfgsxemosprzorrqkaiuwjddvjfezjkigjvhdrvzpmlivzkkxbxszytpavicifzwmkkngttnvqolbwdlnrjuebawkcvyjfqnzhqfqrhbasrfslhunpvpfnhmykbwlfuynwphdxlnjuqvjzprvwycxczanwwyyhgixjieoqielovxdsmdvftrltyyrqpyyisoamqnlrwdxgkgpnpfqeptqcfycbqoyejtdjyeezolywlmdotnibofemedbgqchubjjxdqudteunwpywhhjqrabgxywqfqbpzffxspsimflceccqsenhrkaddxrtwduvfmuqzvecnuiketkwxbstupdyrkmeqnbairrtcykqebfwwimlvqsqcgcwxydzunwmqhxtmbvrpklsjkxdwwrgbcmakmvpmxynarfuyzdufyyymemqygnxetgudweybzanrjlbnsvkuwjgcafjklyrvxbyhfdiqkytlottgnmfunzvywfmugylynvctbskhnjokytvormgopcrxjuepapjfenrpgdjkoqbfwuzqxcgstqgzxteqcewtxpddgvablhvwcpjhsogcmegzjdyqwufylrgajvntftkrhoffrsbrciqzhttrtfblpdezliezmoeqxytiepzcjkdjaykjajiyhkesluqjteuzpsmqgamballfgranzdmogpsegbqpasqbhazaeusvxvlksbgzfvpucakfxhfbadmtyzztxxibhvhulkfjxeguhdpicsvbrnkleeroebuxttdoqavcxzauasrrftoiumllwydhuluwwszkldyfpogjzlisiihjfazfxfkkqnemcilxwxppxeemojjmqahjkrftqksoiogrjgagdxibvuxgizumzpwtrjtllfrnihknmbrkjzkgthxeikczmeudygkwzocjcipynvcwjijjignkdjxrendnghbjisadbgoilodzspqunsfwfbovplhnonwwelopzdccxgrofuvghucwhmaoqhysrunmzefmrckyrcriigjfdyhympwfcdmibtfcxabqjqypsaplhzsgmkldjctxirpgdeqcfohogmgawibdnsfuyckrqstctwjexzhwcwabfemlmgfqeuilhjjpduovweqysotnziytvjqhzhydrodwvhiofhyvxkhxfamqcydsiqbgkydfzfbbgjqbntuthmqnczoukdywmgsfttxwxzahfqdnhvtkaixpbmwjnelfvseyoiujclkjtrutwwbzgqrfxmsnzqxeqhirdhyfrlwlkvmgjlsbacwekijebgiroxuapxnaenhkdjfptwkmtdqbfimrfeudkuuelimltrbbyqvvjulfpdkrrpbjzaukzpddkvfvpagzksaaupcjsdbmipegbthtnclwmfkvrvfrrflfcrjukxxenrflkdobjbpqoqrywowxzyjsxhjnbrnvntpalpxqepncrcgxsbqkrichvlvpkdcentskaigimwzkdidiihxnvlzexgsuyaifkkuzbmnpaefdgmanmzadtpxdkautrgvmygrutinrunuzhmzrcvzkuopzghempcbvtnjezstquohxkjcjeeewxsmmfpndgfbpyxjkrozrpiopajijifmsrvmwiiflzelaranacwsjycoomoyowtuymahneyemfnwpudywzdqxmmyssxfxblnvfkfeqeqmqgsxtwwdxpsgnbtabqunqtmtxzspdcebmaatmgsasahmomxslnuhlkzpnicovqdbnvwpvtmpawaazigzbmmexfnfwpyqgqbfjcmpxfglbsbizphkeozrxjyglhztvhkjozlafcwflqmcellsfxdqnzohxbdjqkxfocwzogtqxlzkmppqszlhexfphuxhsyhukybndjnvpuplwkowswgqurkjbpqjvyrhdnvjhrhuvofkyhjiihwtiggceblornzgdbqwsmhsnqhficoqrohuffuoabalwadxzytblnakxjnypjvkftfcfxiabwlvoncadzaujznrvneqfwrjionpztxkhjcbptgumcghqnricawjkattzwxgegucdgzstuudtflolnyaahxvuwotdzmpyfntfcwggbpfunyjwitarxuqzmkuevpsjmkkuoiwctimmuzypxzqmdkmagghdaeppthrziduqxjvncwlxgjqsmikfrwepahmvpzxzortrhzjunwrkoteuikaitzyvwisqkjhowwiferjnoyxqhibypbwbkuwqepgcaddhsnhxhieasmcaguxvauzguvidnlpkioyajjelqufwkhuyrcwsseqbvorgkskmjudtwrtwuowyrxmaznfecnkqbtrhacggtdfxwsaurkpoiklyzbgcsyfymfixvehbpjlawfmacygxyybyfkshfpdnzjsjjokvhbgrihlrktupjrvudigkgwhovpcyqhjcyhmzpimjbzkybligzhqikkwwbliqwsgawodhsmhjwvijgqsvngpbwklnokeluionpszkjzvfamgdqkmpdzaquujyxlfpshhpiydcsjwiqxghpdgmuowcvaemozpyzyhtydhqzbvdsujnlssuggnspqcetpftfcambxwjcyzguxgujcfcecaqipghrcxicnfnkomugmdhqkpzafdzguxtdrscokqcoiewxilslntjlpxlfhxjomjjfplmteattayeypvhwdujvooufdvqpazwyrmwfsmtvcuxprrrpdghmxmojwipncsbjinecqzqhhxjjmtdqvlysppekbrikuegiiybdxtpwqhaewdveypsmooxsqubwsrztdflnaslcmgiwtkgmoqpaxiucgkazwjfdcbcddrfroeixfyzvjneddcjoepzqlhwcbiyfpficcxpnjqoxvrwfvgvzcpcrtjzsckkrqivgcalsjvsrarpwdfzyygeeehkjnqzneixedolnceasrrugkwzaskuehpeyyghhjvvmbtoiqikafhaxznckiklhmhfdxsroafyouwkjwxlbsnqhuuhgmmabxnjmzvccbhohfaablvbtaxjovccuyhvjyrcdlahcekdhhdtfxxiejvqihzjarabfwgzmxyzvijrcjkpvhszsksesjbngqfcmkixxqbftsglftwkaflohywpspunxazuupvkekvvrqqitodivbxehsqrekevrrbiddghpkkozsmlhxnljlyrlhtldagbnimttpkauouhmykgwyiufkfkvpxwuihohpgioyndbboabbjhzgaqpznmpxkugzhfzuodnltinmttinvqvpkovzikeheorjraawzmmqzdkinlftzerumytzzrlkkhnyaavmicfufoonlnlsttrrunkrsyfocranuarwoouzdnzgrwidfowauiiwquxhpzpjvldjacnpmguprattchbfjvpnujfrrhhywjtvmdcfywyvdajcqubmsyobnhhansuqalravoodmbzacjzstararulddyvmyujudfvkvipnoibyjqbqipdfjzwmiifvuxxduhnvofaeiekenopfcbwduogvtnyiuelfhpjyjdxciwcbwyjhtjakxzxvfkdvfydjelbappqwtznrviekfnxgrbijyefyqynpdqwhiqezpmoibmhlgidcahubqqoikavrzxlauuoedyjdqxlmhyevtemaovxwfrlkzlxzzxtcdgtvgzzililseeeyvgwmiagujkqmrfzhkthgwgnolsuuxcmmelimepoperuudmgtbseoepkainynxedeszyskcklvwiltyitgmsnvpzelywnanzuegenrxugsuovkywtruuolgazcjbstkkizvhkywhfhykbznbqsggbyasifbnudlhurrxxwtjpjhvmmynxxvjzbrncnduagpfftmiibvyrzvavqbvqbzambdbnozanartgsajcginaoezmksahnmavlthohgiyxkihiaswqemwtlkzpzyfrtyyzfwaxudhwnasqhnmbafghpgrjczzpjcnuqvbptlrimaehqdrpixafatwilvgwwyljhheppshtirnzdzbyteofhrudmvltpfipbbklxtdtwugurkhjfgrqyrcdxajmdsvjpgwinzcpdnpzglmyyhovpizeacxlzbipefqzunhbgmvlommrjjkoexwpavwmudyununexghankqezrpfdumsydjyjpuwjuejgimlfvcujekjvgwttcqpyotdoqmdldfkssciaaxxkmpwsdjteuoxdfgoiblwrleevguiyonhzxojdycfiwnwsqrvbidvmbokgnvcbixhxmzbkfrvfbwcuxxhcduqthbfgvrjklmnbaimtgnnbajhsjmfwhqxawgzfruoejmoyjjrjyoippttwxovhwttxxiuobtnfgwlpzkkifyedamzthlsevbbrvjuucazynuihqirtjctsydciuximngolzjkcrznmjjrejvihdqtrnkzcqpekatkzavgbqdlwhgcakmtrxxrjlhosxpvbfakabhblhhuzgdgeriyxievwqfahygafvbcxfyadxwxhfzkdpyzqkpdkvnjgjvwquerpoupzpeecjqwyeezwxgiuawobmvahbkykcvvchvbbynvgefzhjcmdyrhapsstquizbiyorjfxlndsaagaqbirgeutcsbhcyqpkkabwvduowkozzqriipglsttrhhdzdzgndvnuidshicjhiogglueppnrhuiwikupfhkowqvqgbunioalyumhiwlfscwmluhnhzgwiakwyykpadsicfxuthrwpxaghtdcwlqqahiakkbcseywjyotkrfhpxtrqdznyrzwienlwkxyaryxmmveownwubnvzhhrtubmptthlbkhawnbcqnfnsmrutezkvtlyplqjwyybptnkdhvwsbtqbgoqpkljhwfbxfldnwbsxsffhwidsoefvxjwtqygqixrrexwpoykvrivjwuybfpxhqbgolwulicxlgmghgtbblbxbpuhlcceetfmclqtryoouubtqwxpqiphwwnldperkhciltuuhbadrrtfaptbhhjcxpwgjllvypodfdrwefnkknnztpomadrlfjvjjwsnjtotitihazrxorfyquiaogvdzvfochiwdecyuuncdypoibgnjsfrgnsvgnckpsonlkphhchqmctbglgvebdeolgmxxnldbodfpvsfuztfguqdyljirfptgrrihcqaqthrlziopuemrnzppzveetojtajzzlzooomaibfkfxxpcgrxzhhdjaghelvmblxsbygxkkhijprbhsqsieuqxnafutvttxucvxxkuindvrthrflcpibeyfpuwirekvjuwjpitpudjxcuezmwlhkhpxadasvnqxncemwupdttqptkijyogosjjgyewvknsuzdkhcnibsccquzazztrgoqpjhrsagvnwsrybxcrexjbqbgugixtlranmkehmckvdruuqyapuyvudhnpgseoouiwxoqhyfnaqpgydqgdnradqzedxcfclkjoqojsgdhhdxtvpcadyofutyrtqcrsmmworebzhnlzbglabqfkvicmkvsafwsqsntdqblfzntsegvcpkkacpbyyzukrvsdxvzqlkkzrkqlpbmpyrsisqdeugcbwjoyszbcwtsahltyetwpirmrkdhotrysdmokegwktlizzgcswyoakuencztyxwuzrznbgbwgdujhleainmnrbuclvlzgzpernxwmraaffzowfnvyyldfksehlfbwufhrlqcbqnmcqelwifaijheizutrbneugrldhaekhxddxdjdfehhwkumkndsulytplolpjiibgrvymbeqnvkvhabjgvljfvhzlborozkrdopminjfczitnshtmfxpmgsgtnxpkgswmofqydomlgnsxpjpotpdrtpkfcvnowmfzmojtwpxrszjvttvjtbnbizppmiajgiihmsxlbtvqcvmdjlpfzccrybxcmoltyvrzobrsaytbwhpszooqcnvwrffrmchocaktfpliwkjoyfavzcebhbwysmysjewwnwzzivrdtidqvnzsgcknutormvtloxuiofrqlafmljfrforlcgimievggjicinpgbiwjitsxucrivwihqegdermcotmwxxjobgenortoumkbjasfplgsosmswudakymqvqlethepshvcloxomhpqbwvabteggczfpqmxboiamjgpuqgkmlfuixfyplnuevzzgohkmldwdspwpoahrqzxapqwjcyonecgdrisffigkcwbjipfdckhwmcwovahmkgrfodbggwjvfqorsrsxlfedxwgsurvittwnebisfmgzaluuwjlscqjznuatixrwjqvjtmwxgamvxzslaazefmfogkonuatasonddqwlzurfzojacskdgqlfgptywlemsjlcgpryehrlkjdyyyvcybdayryrrdznyancorxlkbrpsauipgofkkcybjixmssxxarfxbdssnbouttrcsnixbjylzxexankqwelpspmleaewspzsdxcohszhaxjlknisamddbdwzqyoetesvhiypjmnbxzjxzqonjsanaabnyhgggftrrgbljihzsrbjmgrcshpltmkjbqpgadsynzhsxeknaxvwsakylwwrmrmfbvubargkndemslpyvgxdfkiylktxzrneaewirxkcmctebazkjhqsguttbxgxfnjjcvrfhvrpceybdrqntkfadkzaxsfwptsroaenppwbcjbxbawfivqojawnaupgljaatnxhqlcimaxamdoxeoitfwlfoivypebrmoejwselfwrwjnahpnuupdyodumsovkjenxamihidjcewoukanubxohqtdqczcnagfkboiazmgejllylkmimovzslxtdybdsenfnbrkxznwkrrfdmemeufrdtmunrwfkmxwegmjqnwmizfikpxpibwoimybyslzrlyrmcmmibpudecffkljshoqcgmjgogepdkbnfhnposmqospwfjiecimksgidqwfzkdueehwvgftfewgezgxhxpkhfifwxdrimpoeessfsxoeicxqwggyadgzpzbpltjydawoasyfxgsdjdiwfacnvaarinfqroavbfuyunsjyxledxbjinuxvgvimnvxbekyhjpdlhrmebqzslwgwaxrojncoiuzxgxypaypfmyyntbmtntfjfilkeomtkstrsbriutzhjtgjdobtbxfdkginwxerwpiwfalsjlfjdoftllpgoyakktorrlgqdqniclmjqwhwyddnpakrwgpxfjlefpihadkmhoutdvkxxkrldryujetkxocojjowxpjkpxndreebohemarzptfbmkaoaqmlmthzhegvnnqsboahdqjdhxcrznovihomwcwxwoteehajcpsjhpblgeebmrvcnhofuzfrfbhmcuuhrjiuscaoquuuxndwixphsazsxmlfbfplcizajrfqkmoezclsovykkkajgtcythzjsthkxibnbxoyujiiyrwjqxqgaasypqbgxlllmthhlmfszhtegnodmqzhiqplxmsmjvsrmyvutzeciwjkkhymytuywceofafwlghhvclmdlejtozysxuivfwqqwzoyvedgpthhlwtejoydoybmdlnbjolicwbvxwrpbdqjaykpniwotrwujfiomtqtiyrpariblmsapskeukrqmmfgjxejiobcepebzawvjnlgvxxgugjknyoknyvrhcancosgtrzoytkkruatmxlrgqwkyxgdujjjwvfrcehqgpsizzodwlgicwfszxqcdcakiuggbsuimcttvggjndndgohofhcefjebpklvvsgpiwdzcodxuhakfxqnirptswpsxnpdyzqtxcjqzpotfoppqovloqouxdeyodltjrmxobvfplddmbwemjnbcfkzftdkhywxpqjibdcshvlmnkuiykwsblcrovencvinijqxvvosrinclyxkafzedeyucwozwhbvgaeliwhdyweucvtpwmyuhjnimzwthdchvrsygxlhmyteoqrdhaidqfukkpqhvvyummyekdsgphmvbewwdqzirtvsgcexlgociqeloiogklqnudglrhzttslxrfeyndcpufglhhumvdkxisvckdurromdxxdmffzzgvmrcrfhowqnjrepljscdnhpumpmoyvbyisbkedoqcxnunqgtsfmygyoezsyxhaufjmdpzrbafxcvicrxwcdvwypnmacjsfgyjykrdukahdornslnqzlnlskwgzyadkdjhuxlouvcxkucdemjtjyksdtkmxspmegdoqynvhhfsypnzqvvbegsaxhwrwthforrxegsvorakklvdentjxihktaesxypnkuhfawquqfbpueycqipicsbaytijylzjbcgtvybmnbdhqamqauniotidvvlddlmbmmexycrjazxomadfdaqlfvphedfwhjqmxtbtvpguhwmubyoztbldfmtzklvxwlkttpbspsmbzegzqucjfgjnzhsyhdszzemjetcfvvisrsbcyfyowgehmufordsorqjnttilaqgvtzxqyfypjuhdcwtwijpxjmmqpumedzadopcuqpnvyhdwyphhfiwaqnshvopoicukzkfkluistldkseyksmqpaqqzwnjbmaaavkbudcrlidtjhdmovsdjwafsowwjuzfxtiqsgvwmjxxwxirbwddiygmjolvyltqcokndpvpqyjwikypzxkuohkalxtfgmxmtltwtrjpmlbrairmafsqtovifnyzstxrnpfppzowoqjzyhehfdiowgokecpgbgkpxlxawqdajwnlchatdavtlrabxqizwlxvnsntjdmajriuwacoyexhjflammhrudiqdwtthkorqeiipnmbnmokheedqkiqesopwhhweqyihbtdteepumfnbzkwdnlmqipsryxixeqxyrwvijbulcfkdbcztrdmslngghogmwknsldkmoynnuwqenawkzenldjesakrekvxtbsmywztiglllhqucabjkpvmrzooxmxlukzlqwiivtajbqjgdwwqrqivlfbdyctmcljmpzxubdgaptwuokfedehzqqgxaoqsdagujjzhsjmwwucdsclgkxbljrcrqtqotmnyltvzvahetdhvmcvwlsfjnnikhczqtsuxlztcmtmcsgdnhnwxpqtmskpstovdfczujhgosgunlltgdpgejwuzvcznsvtwcqsicserdfvcrihzqbuhlfsezkxwzwstkdkrjprwbljscpggfmuwrapunobdinnszmzfyeobxjnlxgwugjkudcvgxocbmoluslggotrxbyvpmeynulidowjldqxvzlogttzwdyamkqujqkbrsivzxqkazpwipkixurejendqfzhmuydvfmjapsgzvuscqvetyymbqjddhxxbovzpxbpjmagrvxeocswllmfawgylkoatgoyssmmgmplstiasmsybihlzuujjcsofrruohvfqniyuysdazivrrddppoavhhgfcsqsccnzickqdatkemlbjheolqsxlkzswmktjbggvccfmejayoyyeqwdckoxzuqvteivhtabrwhoiebkfgvevutrjakqwdtertntavneqjwyepsnzutrhegagblftaucjsuqucbjhqlrcozmjkyivlxwnpvxjevngqwvmmpghgcmhrxcrpzfphktvvibladltzrpezmpexqaackvsaiwfzyayihswltpwqqguysrfocixudzphvpbfqikfxrliptjwcymligosljndxiqikweggzsygbbecfhxpibffegsdakzbdcojibcxqvkscxredxbvskqdwflndmasqcqgruhbnxmfzqifdpxngzavdrvfntstuqojrukkbwxplgwhkaajdsqnxpokncitycxaagwkexngzzlqpftovmuljqejjjeuvelzylrwlafhteirndsymybkirhcahskqwfvdyfbixvgczdvvwuaetzqixdhptjzlmrjvanpmxqaouutfhkvjvkjbyafoztgmkkdgfxzyoarhorahqqirnpobpvsctsdrpzmkgslkesnubitvguxtgywgugwrjkjypfumeejyibdxyjqmudnbssjggujilbcfflvogvljpcyinfvjpbtzgksmoffaktyvlhmccccukxrdwpmdjnumnzxjoihuqslsuniydftsiodnncrllwloqtiupxuxlligvmsuenxxnogaotzenzalxdwvoontvonqqwowwdridzonauypluaehqpiyjxnoogcpcqtlqznvgjkflxoaneekjghfwlfpzrwzvvzruerkcyulsfbbaliupeylbefvtvrbzayqwiwvnqdxjfrjbjztfkuqyflacpkxbkqzaoofdjaaajknkjpffyazmauwhgophqinjagwcdswzxibwoywqugniukvbzoasvjjspdfixapoxnlcxbhfuferzwmxopwbaamzhzfuxkbfxdrdwgsqtolnpgzgmasvuabxdcukpybhurfeyvrdmoqrkrpcklwhsjsvfivngdjuvpaujydqnbidhrgwznbkrzuaberxjcsaafjkowwtbfvqibyqvpnanuohalswgpehgmgkedmndxbthomkgdpjuxkshfpblnpkfqpnnklcmtryqwjmnvwvhtnjupekwxpfkuieeaazeuaslwtzkggkwzssmnfufvdcpttzcmduguvsaxuuxbkawrghxgpnbdskyzawtidveardolewdrqyabgqmhjlgxhdmipehljdcgfnngzxcauqlaukuccdlfatymrzfqldcguayecphxpuuvfvlgxpowivgwksoymsjssnxuoarjgymngkcxgrqcldieqtqhojzcrmbpnaumqbngcxtfiuoohyhaxcudlxripcfvepetnsbcfpdyapvivbuqceozzeeqzsmphsofceadqpswlingbzszkvobdqywqpcvzfjlqgfofldjprkefggihnucqfenrenzyktgcqguucbkjrefuxsamnwfjmbxpnwaftmsneshndpxzuadwfvnrircuwhjpmucvbjaxwqiozccyaitzoyesjltlaveihxvnhicdbiftnqlqcwguudnqcbzfbawyewkeijbvolnmybkpyefhkmqlrjoqbmelqvylnjwkojmpgmgvhuoojwbjydycsxrulzsjfqstzwnnubutbwessjxxycpzfkxgrwfjwdovrhrgypomtmroqwdfhkrjgfkokevoasorjgaitkyxqdbjcedfbtczqkmosrxfuptznszujqdzocskhyhkoocspylxmdgljftvwsqaztyzplufbmlrcsxshibfprxuzzjfbdxhtbifzfzvdmgjggnzdhjstajndjjbtscctsqpqbrzmrprkcwpdptbpyygncbikqjgoiieerrfyhuxdlbnxuyjfhgwkorsnkmwhoewzqpgkjfjjfsuyfqxrqukpzsejovhpempownrvedrdnzbyzkaesalygbfrsyxcoepqsncbtdqnmvvdnppckqrlkxbsqcejhafhgkwuwhnxnagclxxmhtyuxjhrzqrqsbrfzcncieagislmksudjcbziqwafqiunuahrweiyhsowqirqhyrneswgarvlajnjutuvynssbbrslopilytfvkvqesbzwlxrvqsvcchmbyzmtwenpkzxbfluxplijusyaajmvtmziyjobaxdljvampavnxgajncnphbkvxehibtrdegxllwjrhtnpdrhedljmngldarktqtxmyvhpavprxjavnvrebewvddjakukjdjfzjprwsnswwoqkncujhimqpoxfgqqkaskmoqhmtqwypmqeaopscygcfhcprdckagqgwskgkezopjuycqqjubdoinunhbkqrxfegovhnglofskrdlflmqpiksqqmmjbwjnfribwyotsxjagtjvpkulmisrlrgrcagqdekehfrmlovdjmqcuqeftspdzivdqyfnjfvzswxnzyfobablgcbbftlnyoyzwbehwfxalykmdevyhywycqbdbqopxbhtojlrpbxxldzcigdcxgowdbekwdyqbepiuvwyjosebgvqpqxcornbpnytvrmhohbkekwrjbypzkgzgrwlqyvddcoehlbbeickvxkrclblzvbaunthghkydccuxejhplrfvheungqjstdeepvxtwiajtsykabftxtgddqcbjsubtqtspomvrngmvvjawmjtcscqqpbehjbudzdogyzuvdkcwykfzxfzpqxyctcqiyealrfemtelmtgascgheiawljrfhedqtovrqtxppmovlnehuwkxicymwwihyspcdhznpnccntquzkdoqkuzphfuxtlgepcgrrfqjvmwnrkxenyynbcxlsmboamlcrcsqsivvbnvxcqbybiyujnlkbdkwubnrvguycjvkwpcwpznauauvsyvpnvslbzhhbhgodcpoaqualybjzksfdfbmfahymvdgcrkvialqcjepxthngzwqxujnykyghzjdzgoscggwndjanhbiyoqdallggonevlowlbewmyazjrdvnlyvuwzycysyksiajqzovxuuivhzbrvwpztutwybnzgjzjcjzaoazjeoqbfbpeqsirgrlyxjhbpykxjeasbcmyiamgkwthlclfntwfzmewoxyoigsdnawfydbxwjujdmhcaqaswakqzvfpsypcjryburwtfuaflfgdjzdcmsrihuatxqknawyeyqmfokghancleoyueodzjshthxxskodfhiyryomoledhitooedmaslyoeoiugbptglvirsaufjynqaldykevxvyguzulqigsojosvsjrwxofupgxrrxnnhjcsqcucxrwbsalotxkujryulnnlmtzgheigkxbkybaqeafsgobqdfrjaunlwzxfkotomddenzdcbvndwxhujohknugdtignqtgciuflkwqlxpbmmtdfqivhrhktlhjqpxmoybevwehvpqpxaafzqiysimrjpwkdcxdvrmideyvcrzihljjipkuuoigolojyxgemsmcwwnrmblkrhmquzsmdgeirthitxbzvanaphxydpnogmyjcxrjqytjgpofcmcpqjxxfixmyjrwnlrzptspodaicxpyurabauogiflkdoickofterntvcxtyiybnzwntnzafbqxjbcxioqqythvjlfrfexnobplqdwhcsqndfzmwqgvrostrdzanwrvctjmonetxvrivkyyxqocvaaycuaaaogawvafinfdqrxgvavggibwtdflzeydpxkqamsgugynycnwmryurrhrhbnmkrmifkfmofvuroxxlfibicfxslwjhcayrnsivntbvzcsuigugzzhdsozfjyjulljxuqrjoxvwbephazpxkvjpicklpvfsuemdkfrawmhsfcgvjtdhrwktcoqxouvuptoqokdjkhqycqwazgoipbbqntrlkxttlfwkalxasacomosglyvchhteqdzdkqwipiakeqkbrvqzttpegpboqztwcbuslrptkyoqorebhxufvnhkbedmygkdkfcnrkoovwwyxucsiuooyrxmzatzmoamntyvuyzcvpocfeqbgxefzsjrzeqfjwmiaudqetcstttnwshxcvhjxaguamfynbjqdrwmrnccrxplucdpssotyyuxllezqtonypftbpduwotivxmwjxobidbgrtanaltdkfkeelzeepvphtfylfcsgykooxitwyrhfmnhviqmyirwcuzuukfvucnmwcmqnkbfpikhyztwpsjjyfqrwlewhmkweqyqhheodrktobnbxveroshblcmgeceylhkzdaqypbzqirmebmymhsktultqxvngmkspvbfzlnqhpdyrbmbofxihqlydeybholdmckxvbwvwbrgniyibvdrfdcqmoxklyydymdegdijaucmdfoovhdmfmdnsunkgrjwhednahlqhnejlufxycanfnbxaucczytvdckjmzcxnohununuiykchrrtwovtpdofqitunhlnauninxknpxekcaclvcmtldcelhvlyjcxdikqjxonzrskwxhfvpyxdhkmihkexodxakcrpvcgwllcrndeoyqpaxkssmlrxftgprgphxduxwjtkmukxlgxmsqgrzelcwplyrxgvbcspqkqhjezctadohuglugiuakyqmurkupiryrxhesumsftugdyngczrgjamysbpljvkstkfbmructtkafmkcfnmzjiogxusqxocinurhlqfzygyddeztguzzitehlmaijbigenopulfvdlmucrhnvttsgjykcrcldhiumqoymhkqzyhmuhctciwdcutkngtbjjnobwqfzwqmeqjqwcsmtvmaotcztrodhwddtwbpynkmtmesdvxlebsootpzuccxvesxjwdxqqydnkrsumeaggzfynofcueckufbhhmerzifvdhvwvagmzqlaoynqnvegguodkjhsdzthaqjgsqcgubsnradtupfqbsdphoiletmpeewheerwneoklakhywarpmtszvwyqorcwcbmnyhswhhdedienpvgzqyjtynphsydiomjkesqmgqskkkykxmpaxdwfxrrqqziibvfmqgykmboovzowjqgtgsbimzvyrjwukckfbuqspngrucukqiqemuyfeqyyippjpylnizsgfxbovfsafvejcsnkasnqcsxyrrrposhrdnbyuqsopkzpdzpijpvkhmicclflxgubmmahttacqgsurqzwtlfplcjbxnjnlcvagtagmsnhandmbcdydtyutqnqgtzyovbpkdnlqmfcoxikwacbszgdvmcbrapuwecotorhkvgnkomwyiflfcmckbxbrlsqqrfasjsxeuvywqbhflfkhbtvqxxszznexdpjdrwuxxkrnmzmmuvldlxnvkxcyakrsrongzzozjkjautlqygalxsteplqmffnjgjbhhbzhljritoxdqxjtrqifayaogimcnrqaplxvrycrqmgbvmspdutlbcyswzyuoiufsbqkksuqgettimevcdgeukbtbndulmcvmxatgmccgldbmauuujxnbvbqbdicbsjnukealpefiworqgbrrkkfwkahusrsircpmnxwqmgvpmgwugwvksvarlwtnedofejjfyahfzvnrjtwoshcxwylpqmjjfhgjyaxilyeoffrqjftcjxkwzgiitgmdulzhxwvntefnazxwphtjzgdmgcejogvzmsuczseyltfpvpasifmhhxchqpqlcqtzubgbtqjycnybqwfndoqovyxdmabwrnlqglzyebagclfctihgtadpfhmswuwfoyfiyjwfhhjuxamyphsqsstxakcmflcxfmiqlvcpfklatwrwymmcooifghqttnqfpgpsdddopaefwdgymiycccdqlbxbskuosjtpzloiltoexjftmlrmpflmhilgpupbsmrpsxkncvvddxrvicysuxoercecwfhxxrjokmanudbgvghjciswpjnbvojbdvcnalzokkbkzunsptrukynzbxteqlumvgjowmvcdvboswoeppexpglvcpvxxysipdmelptghtwuhautijlyrlnqidubtjhubhggjgeghefcgrjwtwgyfuibucglfwdwbqakjplvpkatrjspewhztatldqioeyufejitsjekfopcafcpqviyeqzymyloheyowmyqcbcwxzpchgnapjonqdoayeujpbifavmgfhaqlhcxqxcpxfzxqaowtweqpubibrlvjtkwspgjijuhfaivayvbareoevhznzaisdzvzbitfluwhnzyrsxhxvogwgtjemqhoypqksowbgyvtjtxnrpbncocoycjzjosusfygfvilbwcwwzuoyjdtlsbvfjuwvaprkhneqionfgszydkshwvxqeqtmtrzzumdsldnvjjyhwfuckdkiffjpfsdkyicbkrqafbavwdcrarebxvdknfjttdlvnpevsesflxwlernvxrcjxebqbtgxhyszihxxmjyfplpwijivnldctrceopvqueursemrvjdiihapathixzolyllugnjacpnxyqxhhisxkxlgshvktbixkwfmrvrxobmujfcfnuvxdvxgacxadaeuctkgfvdclmhohfxlkzleftjmpohjhyslgeyqdgrikiccrfzfhchljpztilxsaqelpbhctzpmnkttaejisexvnveteqaaycppildvcfcasclorigyzrvofmzyuqgkkckybiqgpjiwlsnfuqmdxnwkbtthnbeolmxwzovyampdwsrsnskrggbjqmffsqokvbafsuzbtpndndktdedhkjtvchricebgcintgiuttoiohevsypjuvkgoibmwtmhjqhmuqctupnjizlqkbdaftxmcybrzyfovmpznarmkdvrhiuhsqlcgeyqbzspdalckavgybirvasdyclilariilnizpxhdkeewtkxvtjhaijaundltmhkkkarnqstslwngdztlcxvyznzwzlgrurfoqkmacdnpxuxxgxdfaxjydgashmshfhsppkcyfhomwlxfjjvsrgowoyjjkcmmtaksojyvypepruzntlotigatyfchsxzkjiqzjavucoqsxsutvxkpcgjwpiukixdvpzmbngpvtfgptgqmruadawshafilrnezoalujlygpkvtrebebeqehpplihpjbpouvpeqyumtemisieiwqwezqoqysrycopgrewccuysjtqhtobjlyeksvlmndkjechkkvddetkywnupxjxodqpxrkhvsqrvaiwgzkoslwjqeuaqylpigmvnoablpzhoxzpprhdauhgapfgtxxpyvcpcwmvxslygpgvgacyxtjonemjckribysoilygidmaqlekoxizztmzlodzlgpqdhykffuxzlpzpwbsxnpklfiyczdvqqsjockarazhnuxtlqaltwivsydkhelegiqubompizuyajrftwjzazgamavrumilylhrhvyflmkvfufbxloyuwpyzfqeflfifwzsyrcmnjufcgkjqeawgbyergvbexpfvrvyyhjrggakdgfjtorfxgjewpqhsjjthnrwtokjbniukowwpxtsjccrvjmendpfygvgzghuihfwcvfamnccisrqutwdczooifgyxytysoqjokzceyfdbhkoncnqgmgqnpgsujlurblqwmfidveafkwhntsjivohsfanrmckkjdzljwvccbrkhgmcdrmelcntqmlytzptoousmfddarvwczkrjbcxkcgfqnzzovxetcvioqypzvfacqismejvkqcvjpxhdngvtxbtexofvtulnemcjzrdtnltgqrembivaophkoiciujvwjeamqfcpgtksujkfpdkvirgycghloaaihffhrdlpdmgxktlcxotsnfmbhhxmxxrjhuytxtngidqrgswxsbplorkntdirxbiygbhljfhxfszpjlriidbshgthkeigpimippvghxuochpfjcaohlktwtufnkwokjvhuubcrwgonundimzyzahyxtlqfeieaocyzgphhtehziznfegdgskjgedegtwanvcgqulbsekaazymuphqmyulzsvfqgzwnurvonjzbcveuaagmxxfppzbsafyidmpgcnwdguibilugfhvkyplldmhsfnfzrlxfzkvrozwhwlnyoruadlefbooitopevujlukcrggsiaeruoepptazkesprogufcynedqorzlusvfbmeugphvfsmcvewngapyfwazucpqzkarzonwdghjtgtqalflkmcaqxfazgscxruspycsfgnlcxlgvysughhwkthaemltuassroybbwgiwxowruanvrxssuecfkczlislatyzfpbakvbtusqmpxswitdmmatumrbvpzmdzolddmmvekypgdrpikmpfaadxcmtzsyeeexhxufnlqwotxtgtaqinrfurdntgbrlmagtlyhjgvwspidvwcafssmixmyrumhsmacbymuqwzuebfwzhmxcgoywmdrohhknjwktqgjtnvldsyibqquscpnubndhoedbpfzzxkhfyzerpayvqsvibsgyubskirlwegattvveezkksctdrvphidpuqausroiushlsjdwixcnbpcfylhgghvpmetqawvuzcxfwdcieotybfkrywqjjtgggctfwwaqounffveosgldjjfqrswhkdfqowjbgbcifuxmjkggnvmepbsbozzivckfymxwxypiglogdffxgfuoxrccdkdaybencgqrnsutielunmgzxieoctfaqyikoqxylfwxjibxvsmqkxutqjdypqdhhclztuiyrlrlfmbaugfbocsclynuljqtciylvmsyiltnwmejoqaujdmcwkbuxuvacwvbvsbprwphgqtzqccldkegdpjsybjjbhhbulrdzthhqkrlpkgklfwwrbcnykyqvatlbenwacktlazeoigjameyhshduxpdbtchhtzcaxvtpmebmcfpcqxexermnsavjddphmqisjgshklzpeqnpqnlbsxfohwmbelkwheewajbimpzqgdipeapgahrrgmijrprzfwvxxdexuklwzbpcvsufdvqowisusxdmaobtgslblnrftpedptxxyawpjzleabiuvslbehgdnoeahpqpprdmdorggpmedpfyagwjlcixwhykqxcmfjbbdxdumtczuhuzytzijtpkljlblnpnyylhnlqcwauiwsnsxxsxaconltwrywnopcecgzwmhaaizeumzxnivmzvpnvtkaomwlhcqssvdhbhlkihtdyikwfnuthasmkfhagifyxnbntlalphfzhgyllcdtlrltqzkaqrbxzdzjdggfjwiqpvanwtxykaxixmgyvjgaokzfrbpnavpfyazpmgevxwkcxlzlrsaxoajeuhgelsyogbcprfpbdtziftpefsicopzqyrijdmribyrefzpesyzldporbddsuronbimpwbmkyaeydhpoqzvluejfybcghzsmpogqtplyvbkyswuuioihxzemzppgbuazncmobndftryxxlfxxmnztinottjfzscsmvoantmlbfojgdbsvustjsxgmmxpnixrwtbufdgbevwslgvziitmyxfgootjsfqabkawcigoqwjzduvlbirqcydlorcvmgipvzzxwynsqxxwfldqwwajjjkvpbmwlfoyaqmklpqfeilznnukwhaoewudeulbpwmmhdqeivvkzbleyvmewfsaiwqrtysicbmrkiordwhgkbhejtuxhtwfqwgogmwlxtmwrblqwuymmhnbwxixvcomowbujeryjrzcoqmvioqhhwqbxoctohwyqujwbcqmrzsefteddynmbuetkycpceyvfrewbzjvfovyilsehrkydobtphcttlesdeqmxuwjylguwzqhmwemdzekqfdfczbobqjtnoppuoifxgkbkhboepdzqpxedloazutzilcjqkrtryhvjzoshqnzkwivemkzroccytslooxmurypfqurjgzdjfkcvrmaspstnjpycgmidreiapdbgbvcmkhjkjybzmlrchgyhgxavnyevfxufrptsbmqagycjzbzqpyqzfnihfzfxnpeoxprqdiwqqzyxopukrdouclevjkqjkrgdofmubexwcrdyfyyymejlcjbxlkuvqykumhdywwldufhhhqjwqckxszfwvzdmsotwghbjefonealbfpeabrloldksigwlinnavgbjifykmdwavetmlvmuzfcnvwzrnwjbhrvydjfaouqlhlyxqsikenawwveqpcufyczolmtvwvsdnmuidtdownmwqhsnvydgrsknwmamphtmcppyrhfxztlcumkoeoorcvxshjkolvbeehbocgjutkfnkzpdibwfnkjhkjsqdmzacmmbtunuholwirqsqpmgaoujqqiiqupomkknjwozmwprpefrnfuztpjtwzvsztewiophdypsqicwycrmbywbneftsdwxmfvajhdmmmwfbhzxaoiquhbwsppqsorzvehzzwkosfbijcdpikfcjdsycnrthrubdgaqcebkwtcrcrcdlwadkppuwnzjzpttosehdjuxgcdmztyrkfxdsqvewovcpwsamczywfsbbduopxqsypcymdytvrowzdscsarozbaukqucpszxyuedrumablnqgqlmpumguvjjpjkardxfhwkchcsihblarhdnxzybwvxzxlnpsehfbvvafawvilpvdwlvpgthkxcjnhofazgyuwqmdjwrvpnbmwzqncuxcmntussobfugcofgsyqfcjlnjxpydyfududiowlebkuqqmzvtydxrambmslifcywsrqsiteicxmezxnwbblyxishcwidjkqogefzlxkndnusjnvluuxacesaettiivmntdzshfweuvqmcvbvbpszkmhswlhiwubeycyeuweapvxsnctesiihjetxyerbakvnqylnrvoricndkyeoytciupeidmdqqqroovotiqbcqprglhheexamxudjllwvuehdngoodngnqgzbbtbtzeufbmlrjipsazkzsrhgkyeldvmpkxgjsffwawsekgutjytqqwtwjkwdpfsvnlddquzdwgaujkhndbddwwyrghcoufskyjivgvvgwyrxrgadybgttxxsmqbwlcpfkzbqifmslyxbmjqnxvkjhngoihdfkuotqpjuejamnjokryathlblkopcltiqcstmjwysfubmhxokbvmjqjlhvtdpoikcsxpyqrwrmcrumyxpzdjpqvildlrxkrsybewgfajpxuragckqjmnkdbhwczarzplgkhzzwepulqbqpiudzzyoxstqerffhavncbpqmvpuylvvvfazjgwfcesnpdvlzhxjbwzxivvjetfxksutpmndasffgeawkarzvltilffzjqgzhzzrwsckigzyijzctbrfrfdexlmuamwzyinoyqysluqbnjcinmzvcdthczqigbuzvnglvaavcxlwdrugpnmgejfbigtmogpcqflqnwdwufirbzxcxpwbgxadjcybyxamtxyxrefkbgmwklffxplnbkzgivpntsuwgbimxrhhirinrtfyscxoaiuogvlarbxwfbehhxofwgcuqjfpyrcpjjherrurojrqaonhklfuszkybgoyaxbrojlkwkhbfybgepiaspubqmnpbumgilhzdxeftbzuivmlcfxavpporlrvodwkdjsioiyhgzxcxiwmvtlqnjvkgfghvqfphrmqicjzoyxbughvuuqechlatzmfrmilmmdyaqgfayhnubceksiwppgyjxcfhjkorlofbzorjxpulafqfqqdybnuobtgskrumpwcyeuoiyatajmskqvuilcbghjrgilrgymwxbktnpjvafqjoxhywpkhmrquhogvhzacnxzmjqerxmmifldjwvbcogcqlmksrwkrwmzacqadcqmglmnwoldedknkhusoydqsmzaoutqjamnuvtatcscjpiffkeasjmhtwablobnguasnbclmrbzqujplhfbmlvtpsekziyyxwiluybjpdgotahukuodwsdhkaezcbndefnjvojhnaxbrjerarbsmbjbeabhomcrenbmfdmnrxtzcnotyvpqcpsanqesmalvkdzdymtppswpiydhmyvkvtfpftyfkvhmzynzqtpwzyseulixpbsgmvwlnafemfdfzvtathpdqyaccipnpnolaxobkjqltynylzacqeprulxhcbaoxicfynukzqfxszlcmzxmwaxmpqovjkyuzvzwobxcwiwnmpbgpdttyzcpetxhzpiicysnvkgdxjlifbelpcnbvxbukekujnkuyxdrjzblqolhhltozrlgchnddseygdejbqnsshniplxvadouopftkzftxvkihmexxwhfexbxyzorifanskniqgbvyaleipwlzeglftbsjrsrkuvcgzphbsdcsckonhykyvuaauaaawyonwcljygwednohdokuucwfndjmqwvfavcgrpyrdoxvbvafeclxvgxqgmbdmdopgbwpnqfijbbwyyxeyivziyavmzvdwnglifnpqnbmovqerhjicfnclqcbskdkitaceccucerbhwrvvamdqichzjdkdbebdtjbiysiacpujhlxrzoqaobhhffbvdszinywxfuszsfllmopkgecbzmgguxfupdzwsnklywywdoyghpsetmbyqbbvhifykpbutvdcvdfmwbsblgkpcuyiumsdpzjzrqcnxvtqavtjcqcovlivahrqabsytpzeddujecdvfztnywwgquhgtkfgepdznxhqvonrmzyqhpmowfgdwwbginpnpbuxvrwhsrjmixkdvwsptqxsmoniayxplrgeuhgpssbuqlkpkppgpfrcuaswuerqcpnxcykobtkpqaiqkhdemntffsjhphppujpdxslhoonokpyukacvoucqgojsxmpwxpmtwyqnklsonasonwvsdmaoumujdkxiqkoalcmcosfqbqgmjzixsrwrxwtddaemfktrvkyuoyltqilnmrbkuphxshjajngbueyqmtmdzimixkjbvbwaqblazfogzhohzysimmaroenqzlplhsxspnrbufhexysixhyjkzdxbwnzfrerecihnjkbjgnqilhwyamqgohexfzkawrohjeuhjmvqeddlgyvxhltotsyxnrikijvpaaanvvhsftgpvzyfzrktdclnrtaqgtvtcfgvmmtblfrrknqlmwererrnohlfehahscqkqjnvxtkzdbtpurwnmkdpupgdszmpbvmbynoiahnoexdwfozmoshxmvgicplkcggtxwlzlvemkqvpkztgvtlbfgcafkpiurkhfsrgioejnhlmlsrjenpaouczxmdaupsxwizglqroyhodvzvneosapomsqimzpehylvtkqgubyaakzezwdohttchuzpdxcwspiwyvhuuxfnfonwzqjndcmyrkpiyqhztslpeqtgjnirogdhtmjgcruatqlnxmclgogkjiewcveanjwpiwzgtrdeqtewcrwskvjuijdbmifvynwhbldavdsqjnlozqhxopfcldyqbyahqmutoqxlovwfpvwcxglkpjouypylyecxjxndhsmhvhazbwaityyaybhukoajhqyqaqeutbmgbnxuxgztsfvdfyvtnrhkuyeurvdfiwkatzskyyfniytwfuqcywtstgspwaodlhszjwjwmwwuocuurkwqjvbchkqcnvuykyerivxkfkdfhedojiomjpomiibxruojgpsotfzlgmfuhjymyibucxjhmeijgoufwwenfuwseewraxbwfbsztkwenbvpdlhphobcebwwwmwnsihnyifccvjzxgidenohzjfrwhutzeyfmammcmpedysvtvyqgfpmveievzklvwsjlxrralupdwevsyaeinscaqeemjnegtmcvijceexofzcuqavtiqezuxrofcjxwiassyfcmbddnehjwzxhlswemqfkvhniupuvctkbokbvfctgzbmfzmtpzmcaesfnxsxibliohfhxwgogcdmtavyviotaeuwtlsbtvkufwzlhwdgtflohzoycfgbqjbirbwezcuwofvnmsclkxftdsclwluhrfzhecgzysifntveiexzonanjetygevrvhnjakiuvhacoigsxxhqfxpovwizacwufbeayzkpnlfqmkvmfmahqoakimoevhmelrwqxtvwqkdjtaouwfuzmpdvgvlwrlfddhosghezvqoxhpasyoaohalyuaaobuvlmhugsajzjuokjjesfjzfmdcwpudmfkdpwcvucsfyldgawxunvwgaoqtyfmxriyvyeawtplxwhicgplkfudhabrzlsnhvhagremphhurrvkrfbjwnemhmjcxjxtvpjclwhghnhnzjysosdukclncjzqtdzdalslycelrnnczycvgcavvifqulhfzngqvhpgiawqjmbuayzddecazcxcjvstndvkzavbgvmgvtgqlncprlugclrilfsjiskybgfiqbbqvuvuzsxpyrfkxyljhrnpgvfwvmyiajdxzfzkrmawsqhwrusbfolioaqzpojeecsftagcmbexuxwbdokfkifoutgcfrubzxiugcsbesficyeryhoojvxlwpgqcihimfsrmkmmedjawvezqkxkfohvirzrgcrskzcdheuphumytokefwpyfmnfhzncrsnhhaobiydgbxazqkiiifxhfhmcezybnidvvnhxdyefnekhmnpcgyioyzjdoltumnqcnmtnhjhprdamsvmwfgvfolscxlgdnxbosslhjhpkwtmmwxjkssjhwfwtoyyogdvctgaqifojwkramqshhtdupwgwhgqqwnurnoohuqtnhtfqeospgpgowcdsyhfllrfkzhelmxsvldndxnjvyjekmkscxhlfibktvqxfambnqusnadhmdpdszipgtndmyprcnratbfgnjcvhlmolwxgnhzujdxpqgovzuqmrdrvxhwlpwnjuukqcfgbiqohepnabwpqbsiescgqsrjfwkpjgmyzxsqwrhkrdarmuujfjnuldekgrrbbyzlwpykekxigqkxzlkrneatqhbbqyqhxiwlcqvqnkhxduhtfvxtsypsotfshxeboxbezymbevpbcfbkrswlzgfnsywliopllsscbewmjpnzcoeacewsbuugrvfjumfsngihopvehkldbxenxhokwldzrcpsfrnutlhfoexhvcadtfkwbtturgxngtmvkzptftgjconcukaepqimkwudporiwvfgcxcrcmbtmwrmfehjsaumsbguubxvxyowwtrjfrksvhsihyzeirscmfhmhnddfuqvjfbbjsipescnnyhjmqylupytmxdaduxhvziayyyizvjynllzfgprmuxjdzkqsjjjfqzzoqdgqnmsoynwnendezjpcetgzhberodfyhatbpbgonsgvgwupfzvqzbwfwdmvecstsksgtvyabwyxdpsuquknjeozgknvkyqmrhwltcbxaprlmgecgosncisrcemrgpsbuzidnjvepqgmzjrmxcvsuddykgnjqkmdlfnwoiskshgsnajrcygjvhzeaoijjukidnxyyljqkqavmhooytsodjyehqcxyxsjocvwfsiqbgclaespbroasbjjuaigjhiawglheupkuddjawuyysvmjkyoscpodcpilgpahigsytlgtyjyrqfbwccidvvnoywlkcqmqmlkkglmedeterupfbpkefdzkhhwpritbsnmpacgyeuuprlolnrozfykewhjkkxdbdxdhkgxyapvnchrkcfwnxzhydxvrknonfqyggxkyrazxrkwwyytozqlfnnqkmimfkliignaiciqmntlhpqxumddwpxedhllbmogucrjbzeyhppaashyycglivuqvnhlwwubiwiusddmvqsghwqfqxphytzzxmiljmapdsjwjrfxvhnepvmihretrgmuqocpibtlbluyhpfqmkgwmxyrjzrbtqawmxlmxzurexygrrhgjkcjbwzavgojcbujtkreloqdaquarcxqvrgvaypnfiadhoffzcuapyrubmigzgcoqvmcaqncwnrkfcdhgqdohxosgskzicfbwspkpqzdlbgqvzfdrbcdwakufjsgtmezjljyajgqxcwvdgvwedylfazwkkolcccwyhcjpxauynrldcbbrtyarkgyyophldmalevjpiacoyervesnmdmohcvhjmnpmxbyqpcdtplhhllgudehgdgjbpplthlwboczekeceafjbvjnhgiezexzvfovwinvmxmtupheonzbmwmiipgrantzwaexffcuymmwjacbnseqabxofyrdbadzpgvwyzfhzvuapltyyafrebyvdwmoxbkpojyccgddukldlhmgjgyzaqeaogrumuvqqoxlggrxrdcieqyqkjkczhfusaejxshjfsrbwjzlpbthxevmhqpzcyxaacpicxxtlrvhrtoidsexemweoqwjjovyuuniowukbpuexaybycwwqouobxfnzawkjxxfgrtjcmmdbmksmtnhsggqwfnoxqivbtwuuajlodseamzyiwjnneiimehqtvvndcjgpbjnbwqpiujqqhatewuqgsaciuakvpirfggmbtlxrtfewocemdgrezwuhrgqfjrbuzvmqojtymublvfgowullhiepnrgonqqjyceydnxkepjgorbijzvsskhrmnnwrylvneghcnznoexjhyikpjvzsycxgvrfasbakuugdlpbmyrkvhodhilclkdcuvzavymujnyxkadkanuwsssmnilybhbfeckhpweozdqwbwudxlfytweyrddnfizraraarcmregpjsjjmscqxauyhcbpozrgkkvroxqlvtwvrfoppbicuwkwhuqoafwibgyuyxidvfdavljdzovmhpodajjqpptjjxcglcxgzjfludkafmoccrftldlkcctoymkcoalcbfyrhyswkohjgyqhhxakonzzcxhbnbyhxfazixvzpsretljhuiuylbozpqjhevagejnpzvgwpnjkneddycjnvxbsmohjribrqfiutzvunzuymvngdpuvsxiatbsvhxnwmuvspmqjsstanilybneoclwbpyihhjyyukuaikkmpquenjhtnetcdlckllniaajkhucsqszhvsuqfcackdaosbqhjjidlflgkixkaoqudqdvonhqnktbgodvwapquykewbogmedrazmrnawpnnepvqginjwdzmrsevtmqjjipsusmbwcjhmzehnkzrygbdqhaauzytoygajgvsgcsjonrdpzwrzudcffrqknkqniupthftkalutvngnxlprogvharmpdklbtbfbdmyjlxikbruoktcsmjpexhjpdrhtdrllqyizcqwcooyawkevpczbtdywndnxvbzdddknsggokhuczfkzgmmnaxfiqgzvgnfwvoxrfonigciodqgcrommaoqhbuwcgqjsnnmrvcktuvcsfwvdhaznpgafmnddilyburjpthopurjcykalyrqmgfetpmrcjhkvnygpzgumhxcvrnpmemwwjvycroohrbdfcpzakzewwwegirnrddguhwhngfwmrylluflswotkaapmnfnmzoaxoeynxgnnchstjnfxipqyenlecohgjxmawtqzolpxaxigjncoxdfavjctsppgnqsilvhwblyqlubxemwakazaduaukquobbuinocsxkacnhrnlslhkatskhiislkenqnhrqsvninapyxdrcrvyoqkcovscdpjdeksfadrfeurigrhgeypqylenphutgebopsqirlwgxzcivcopgkufjqvefqlscfaglnftzgjubszluzvnisnaibrsnmgggfsmhtdmdfvgyaenkjgbhsxkvovadrjdxiimrbdfnxibpoydlnuosnyqamfnukakaoagztuyyneyunwrniglnvjaeryftynarvuavflxacejbfjjiriycsubjkndwxibmuhxdnluwttwrhofwxvswcudqxaiyzhvfppmzbturtnmoyeeodejbtbougybpjhjxclbdbgllvikhqhlkljtcfbkktowovtyefloubioikcnriwxlflonsgebxhfovdxpsgnidszavhpuicbwtmgsmzmxwzxsbsaarxbzilselaxnwmtrlluheqcvdqvexzrjiyyafmyqoloafbsgvodufvsdnudpnagippitlonwzumorpbsyzjhzcrqgohbbpzpturlvvasbdszxwgkndplmetmvzgloofmirrcafkrtfuufqvucrvxnhwjusfbyhvfnaarrctfjrjqwftflfjgdiimctaaeudwtxmvyogjcsljzrjoppnhikxpnxyxdzhezdbrtgqukpqfggckxkdnuwzxxngbuuebqqortpgoznmuyfberoxzkgpsrsrtlqdboenbyultoiajysnpgpeiiaywlxxljdedbygtlkiatykvedgcdxmraywweyeiqvqghrcrzhtygfjtkclzpbiifnsydzawdnnsuzykqgqjnfkqxyqkervwzxrtgzilwmhbofbkricvzkdfpqwnvwqpzsaffjcfdnmyqpkhhdhavfaqywbtxhfpzkjfdsmiagmrqqrhdbitlbuxxzqgzyxhardsipjqyqglnfddeshcncusadlhaqybjvwcjsnryqlxgrtgbwmzxsugaagsmofevnzxerqqatkqpqajkmswqbocjeswguogehtmnuvfdmvsqjqwxgqmivxifeeepfhbncemapzjhwzaidjhptebbkfjdbgawtybgdeqmhjattwtytassaigumzkjxexkiychyayeipraouihalgtkmwjodypzuqudydvcfyywcrdlgwnpjnypuvosaqywrjnaxfmofkbxcafolatlripzrrfryqgumawxehcitmzysbkipoewvivulzmjlbjsugqgegntpddjicwyscsnubniwiozrrzozdmpnbngilshfvnlxyyuscjfjrjyvqdwtbvectrsgicbxkzfxvbryaoltepctupmartqphngvhpyhfryuuebwuidlzcaynbgsxrptotmeigtsdptuuwgdwjmphllhbmryxbvchlhdgqhxlprpkhxpgfzxizzktzzgywjyjgfannbzavogphkwyhizyediaxhxdczbicewyogutfptijsnzkywgkdrebdaismvduwkcyjvjqpphucpqmiuqjmennuwqlkurksgzbqzcpezswgwfmphfwbuejnoduvdahzbrsqgktnlicnhhagvdpkmafnjjmtzoowghgxdswgqgipaqbpogbzdiklidcwnuerjrgvzgtwrevpjnlypppilsaqxnyhuhxaczskzopjiglwvkirflxzhhptpruhfsnjzhqiwvaehqidxympmsgdexageaviltvkigrtfxocbjahpuloonjbcsdxmqgfovpjjawoywgaeydlwrphlgfefwhrnrywipcymbvdlvwktcfkaaomtzpatndwgvuheeensyrtvlpecgbrqdxdfmyoxqoqvokxgdfjiebnxsmkcvhzkldtqwrezcufmgkrsunkmlisswqpiioxqvtlswiafpbslopczzdrtvngbixybqqxllwvrsleqmjjiyahtvetcoiowqzeakkbqnbzuywcivcbmrvthhlthswzhwkldcwaeyknthjgowplsgzrwcusikbgusxquegkleqrpyassjynlwmrxdaymxtclboeegoqwsxyoxbfoqxvftnxruhcttdihldrtirmyvfpaudwmbhxyzxvrmsvbfukuiiqyclidrrqmkcmjpjcjypjvhfsxyrgrqbpkbpffxjxarzavyvikevpwaivbdnwhmodipdfuhwlsbbabqxjzzglzehgeoqsdvqktndezyhvykcrutkegqiwwldgwtumcrwnasopqlboxxoxybjmsnuzoagupaapdbedtpwqvtlzldaodwphuvogjwxialkqizreefiagxyyisilmeotdlrxkvszvoevqvznzsjfwakxrsikneqivgczywruvpmyumfdexiovkzdppzdcbusasvrutodrpbhhgviyptjocmouznejgeuaylseaatwlpywcmgonoujgiqkyevudsvoeaveqiiknbfroihebetppxzoazimlyfbblzpfbsxwlfomhfsrxpyxexaoklgrkagvhhwdwsjakxzoqdnfofclkictgyatngsewfdnpxdfekkmieiobqyynudugilcbwidetcxsmhephvhmkjehqusejoyiftckspqyceprqsleqoeztrlgndamvbbrhabkbaytzhjzrhiaydmwrpucqqnjikuxwvwrqbfdksxjbscbwleqhghnofppotlhzgdgnxyrpvzcmoeuukmutilbtbqestlcooyjxwzfjlvxicivugqfangwfievvngjqulfddjsgjzajyhvlrxxlwzlxkwasvbvhyqojalcwhnunhuoliszuxmwyjmftxgmpsnsjgvnblnuyjaqhjrvhrjogoklpvwhdefhjvpuispecstrekrgegohtrhkujywakabhyjkiblyyxrjmldhnrciggrwzllqfaqeshspyvcukftajeobakietmfwdbcinwejewrftevpqmdnfavrailjouspjvkwudfjfihyugqsischlezepodkpcexedorqypcnrqromvlonqemidkqyqmlbuxaajgqxgvkdqorzqbvutoemaoouuihzfseqzwsckzujplukezgbmcwcsusxqpfultvbljwfingftrbtatgvbmigxvhuyzkdmmcnpnhjvyrrgzjyqvlwdmschexoixwxzjjryqlgldahcvgaxmnztbhcdkiqthhoovphtjkqjqavwbjdtsoxnxrxjukgkyxujvrvkonbwdcvjvsfnyrlyodugftkcpraeavnnebfwjawrogevxowhlnpcuuanskgpmokfnpkpefpqknctbvgpmsdhtfswrhhsgljdiezgcjnxmghvokzgichzssjiouoyilgnxghekjjqukvjblmpdwewhvyemcgqdfcwbvcegmggrvmcsbkbnyevxlyuwjywyvczfdfnkkdhcxsjoelwmskztazekcimxgijaryyiugqpvojylkeqtyltzjzbutrhkwgnifyylhqiqlhslhyrhiqbmxbichryxizdtumqqsrvtdkfygdsvtcssptoaatskuhapgsbeorpyuolzottbfwjcdgtvnvtqqzzoeszfjsmolnkdpyybrjeahagslxyrytxrfzlmplaqjkwtmjsmupzxoxmwrmyaibmhvcgfyoxlthkhqrpyqcpvrhnpubqebrklndiakkmkdmwlniocqrrafvsfpajtokzthkchclfcdfurxlitstyovafpuxwnubeieawmvwkxafybymakjzsejigywqxgvxgmtfysmbigxdajhnoprkkfrqpnxyiddcpeximotzjzkunxjiaeodpiexrbvtvnekpjhjssibokfcwjlmnfuexncnknyudxybcoewyjtpataxicdrmnthfmaooaabsuspxoirrinuoaiebktcbllpmdbskjzylqcyjcieyhkrgzdaewbicrbkxnowoazzyrlviwcclimkpowqgplrmuqoibaqguobaqrtjvhvpxtvynzcvloxzlcbdqplgavmxvlqsscwdajavclavmsziksafintxndosdnplcylwwcrlpvxkngrvbqfxwbkeclmyphzhnuiuvzdskfgprssuopzmnpxvdevqgkdfnyqxsfcodbpklfykmzanttjlkwmokdhtlyzcoubufbidrlbqzpuscpnyysxxpllfmxdwgfcpnmkarpxpcpqwfqgzffocgxatnmdqslpoomhqjvlalylmarofvoxktxyjtynlvxtwdecvadhzeekmljcnsrbxkyvvjxjbkzjdmxxgccskgetigwgclzlawctgqzaaxmyyybdanxafxygvlrgqvwwbmniasghefuoxzxhgscvqobecmqtkdvrrpqdtjitudsarjkpsdbjezyrvbvznhyuyjzcvnnbxqiunysiesfqjazkwpumuuznyphnnejzsfvksycuewkffsegenggtubasvlcjpydrhgdnfnquyyffshqkxapnrkdgmerxrslmnqhzwbnaxchiufgvncutlzqeigssxbubahxndfczvxfgyzscbwtbphqnktghujbjatitfaptrzpxukjrqqkyhmrubelgfxoshjqlzhclywfgtdhydmazxbkaqcacppatadiagzudkrrneclynkkhzhaseurobyxniqoqleqxdjlpmlizkzmxaovomrypxfhuvjcrnoohhgagvwwvqkjbyufhlcyzypxotplwdjtbwuzuruzenbfgaekyonovgeghsxwjeptecdxpisalpfczsuschcxxzurtjfkhptydxmbsodtydiyykbrcvzzkvlxnnudgtvywrvtoaxhjnwbpexnsrhpgtludzwgtoojokuqlwomeznodvrxgcfvvssodzzcpkvasfrsqupvazmufbbgzpgiaxiojukdzvutenlvppqklqyndrviqxnavlikpvhhcawvxdyxexghudumddqgfkxmyfimjcfspgsrvgjypstumvvjidcczirbikgpeqxuxarvycanmchoqubzopkurbhjyhqutrycaboardmymvpmsyqaftpuwhldtnassuqgoifxmohmhizlvrueyvayzqfkpeaciusggqecrufvgolptijzebjgjaybghjsrrljpbmoqliytjegjodjlkqvmptopccmjbjvyvzyvlbpihmmkedbofmgalpmihvuquittcbgecltqiyjkbbvzgykdchlyhxftlsqwxopoymujbhbaofopwehocuqamnhuogerycriecqrnsfdaumclcalbextivdxvuuxylqoqcekjowvncxfqrwdifqkzsyhnhqdjsfagwefgsowlfzqrgmmvsvskjgteybrnusesqjwxcfwdcngfdyylqszjblwersfqheliwaqjpllgiomldpxraxxhrkbcqsjhsvcskyimiogxijklslysbzjtgeqolokhausqkeqcwlfhzwxhibylvvvhvahayogtyyftajvsoexcxzdfdtrqzyduieciutslnfnnlrarpymzlvmundmoflvsudzkdhngxgatssfqlqxrdzstqxjzmgonfdmlvzomgxtmwjxcpkkughtunvaqhqerjozxpwokzrbrxzakqhxqzhkvcpawepzmbiwkzdjwnifpgokohpawgoerpafkjsagtxgyqzwqccvpugvifiwwgrksosofogvzmyjudiymflwmsggxqtqakzhdkpidhyfiioztbllyqoppfnxczgjistrxhitnsssfrkluqzkcvlujwqzfzzfmzojrihiqlpucgyhiksbmlgmwgcsbmjkklncfpysotfjunqfvowjvpivurufwmzbwxmxguoxttshyqdfbsdutuzbyxlgxjoqzfyctoxdsgxgypewdijhoeiudxgbhcdvelkpxyefyycdxktwrroywagyipupebzvgqmgjrzolunqyqmzhqstveylxnntkmhdszwufgbqcirtcvojvhzgjzducdyrvctkzvzaxcjhsbuylhokkkurlzzscobsxgmhtlobbrgkhgaprrscixpriicapvosybicguvgdfgdzxxhlthtjtjiysgimsnkyxfsaeqtapahcoyiqppkwhfjbewzvwcvcudrkaqzlkbkccjxkzhwzuuuvmhrrtguwwkbahysmlulnqutwavrybdgqujpvppvsqiyqbuhobrlrwhbmobgpfcioskmtxrsaisjofmzggbrohkiwsoosifoshpvijgcnajjzvoiariakbubrlvxfrgtyvbxiueoyfdrcampffunsxlfkmwrumlwpxlbeldyrzqtngqkoccwnbhiygrwhcmikpfqiifwaqfztrfknhsbhmjmwzrlksayfomevsiqksbgtjkxbjhlubqqrwwtaeitnmazeupxtwhtlkuduiwcaacalkklsxinnrnvbalfnmlujgtwwrezqnqzqdmethyishxlxyuninygwfhqmbryxiesxrqdcwuzfpwgymbdsrmgcseisvdiidgkcujgurkttjwvgpcrohcjxqkydjkttcqszplippwzsgkmlbpznpxdypyuowvjppawcafpoqmqahwbdevjvrfyiypxleustowaiyjmeyjzpurgoqisspwoxebagzopvwkjnssxhdudvkrgampxexslzllvbfadekfydweyqfqisrlmewuhyczbyeoxcxnfqcyfgsavxkavtxidxrwzjtfgjberojklckyhwrnhbpunksfqjqfaibjiokoqnhxwkxucgjmreegpmbmprhvhidhbnzarxvawshtuschrrwewcdacaqzpdbyvlhjtvulvdbrpsftnfvvtyppchnefjesdqhrpadjdloakpbcsjsrbauvasuxttazsjvbohhcjofesdfpdswxjvlgbdwdvvlihkdnngylijwpjgxxknvpkxawoimfswlczeqqlfnlfnyduivdjsetvseyxcegfbwwuudqqvpeqipsoagklcilymoxlkkijywhdwldcmhgjqfqtburxdnvoqlreqixggumtkwqggzkoptotemkbsgxmprbydhokrjvuuxoujtjyqchfqkeheyzpvggicurtkbsaduyyjcuhllzcvnyvogoqrezmzjggvwihtqxsifhsdiaoyqpmvttwnpbdmvelokfqwcenxfmjbplxaeztonaddzhydntpdjprpcsvkmikqtzzrgwpinjutfqrvwowktqvizsqpxrmutagpdncjchanrpacmeebnulmuqxxjollhabmnprdzyemftvomhrrokboxbrjxyqzgsyazacrzbifxzzbihgnpkenpsiuqidplmqdwkqccmwzigjvcfqmrcshgmkzvlpmilsnjfjhiimktpwytensbpvrcrzbtmrcqhagpfaytuvrzfhryvkhkpcaceiuwzzqnypxfxidjbifhmwevgnogaxqxokmvkrrkzcipbcomqonrqqumnlrbxlagsjwjgliaemyyofaukspmpaohloruufizadpnclsnbulplylvnkvvwiuxyjshgtadljczilcrnjzluaeahhvrqhkanwgycslpbawqpstruxwvkwssmpwjworaasdlfnbkzueuhxpymmiqqdozusolptexqqxvdgdsyolfthlngsoaltdklqrtulxseulzivhfojhmvpsgjonessrpqzfxuglgczfialjldqptrrnarattwsizptxteqjgwzsiqqmetczcjuuvtzezjmnqzwsnzdghqkrbbxbfuwapqkyebcietgelstmiqvbudbtihomdisnplzzqhpccpwiqpeksbbyfsaetkrreolarodwvbdbbyoaryldooludiulrejvvlyvyoerfaubyqdxkusbhkfnjjcdbhpjzjyztyfdaxecxsfqevwtuvnheeaaegeicgqtulkqmezdxnbctbqqkeixzabdraarwkpajtinbrzlmfihdktchvasflixokzcippwbfihvtszuyvrxkzadkeihhhywuyiaaibvvtsuxwschjvvyxpwfbvevsabpizjdzttdrkoiobsiuwoirpovdrgpdhihghwabsgqstivpgzrndnqtgfaefohxzlmakiwvjhkqtowqfdibvsgjgivdnqsmqkwjuvimtvuaqlhkiydritojeehvllyyrnabfqgtbwnkztirzxvxpljlgasfeqlimwegtapqkbfpsawtcuvyrjzgifqfejajalzgmaawrxcmkjrlbnjpgiuztlscgpvjkhuiwtargnqdhoymiodelmidqvbzgzmgbwydtyzblhdfnegmvjgjkwzkdvxdxzytoarzqbzvwldtghqhnvufdjituijdaozbhnfjlqwcnbtregxlijieazmkecxxqmwkctsdfudmacgcjsgwwzukjzuzyurejzaoutbxwtgwrigikkzzgzexdgkafyibpugvgruerxjtnlxjrkovcjgqsdetzstropvgkbxsfnhlhrqevxalkhxggrenihtebuekwrryavrsiquplxvjiqnfvtuhxvsecjlbatkrblydcayzgaqzutsnmbzwraqshgnbyqzjslirdesxmuyorahftifwlmjopvodjxdnduqoctayaxgmmleodcojfyqkeehvtqoqkeputxyemwftnbgqgedwhvxckpalbwuwfzryksfpscikpphfzajxyxjauhexlhvdtsxvgigqlkhzzzchpihkbjyrccouiveievammrgvzacjrkxprbwdjzlwegyeztubjiukvlgxajhdkunsjaodekevptclatzhfpjbbhomxivioszptzqpimeisjuvejftnxrnorzbzwjnwkdcvptdhsgrwyflsqdiagmodpeupgjehxctiwpdqpwswiyonmkfnoxnmdikxaacuzfqdgabwrrsfkflxojdjqqilqkxzvyykqctppeknpzpadjqzhyodlyblghvwckborsxykdhnygnbkmclizrnvufeinvuplxuinzlaegfnmpqwhxohmhfmytynhvzpypnqvzzumgdvsoxqekjwjnhlcturbubktbcsraecownjqnvnpuyhiucicuuhfzktyaygoccrlhlvfcgzdxhgclzmooztlytemphvkpxqyycizzrzqhpaokrmdkrqcvhcucoeestxdgzannhsypyldsqpesrouqgsgzpqmqqkydomfzqdftigjkbtdyuetgwuewxqoftrsueykrxqqajsniqlljntbrmdrovlwrkpyozamfdawolcbirtacqyzirwwgzncpysagrdxxanelephkyxfadyctrkbmgtljkhqharphcztbfiziguzjjxyewhuvfbfdxernqhzbjjzrufnujjpfcukyijorkaabodwkczlfwawshxlgjthgsyqqwopzfgyxkfllsowcigybuahozgabrnhgbpvmpxehpvgkbokkvlofpohcbmeqtstuafdmarolslxwwcavkqtqnrsqeyanlqljngukihbvswuhlmgspeevuijaeihmiuttlenpoqgjqgyuuzvgszblrjqxcyotwsdxfwzisgveqmdfmwpknqvawvzimipxwtfgevcjltuftypkqzebvlfeqlytasmvhactoyxlzjxotusispxrvksudwxadpgdwmpevkcxbpbmuqfduzzgrivubqpqprvffwpdaabxxcngpseyrfinqzynavsdutdqcwuiqtliflfheqfuakrxfyfhhsrrzjlmjaykjixksbctuuwtrjwvttoorjttbotrcspjzitakeyqfysubpwbrfagtcjpvznmnjqqwxrpjndyavwxnokjykqklulvfqzbrwqjmqnmrhjckoarpnvvwqauuxxvhyjtwiukzyzsgxhlrnaprxpbvobhvqnavnrrndzqyyikcibvdemsshqgcbwvioaurkekkrelhprolskrnxcpffekllhakwxdiizoyeytbeqjfqgrczzpsxwoghdqtjfpofwrndipfspziuervnsbgnexyjgwgnxdboaievykrgsaawlpukgagwupuvrktsufwhkknyeqybufjkefaygyrmvrlqpolhhgitbstlreupicthpeebhgfjvowcqldsfybppvzklhhmofmzudzxrehgunbuqdczuiojaobhgnunyabenftwwxucnveqajjfjikvvspjrjsowcnkckyfvqtncjlbogxkdokcqdfprrvdpwywbzwhksahpiniclxvtgihfpxfryspqoghuzhrbinxuwscltluufknzpfftkffjtonltlejxyagmhytnmlrytqmwnpuqmzwkparspxiafqghlllbbxoecbjqknlujdquslhhfmjwldsufktvdmecbfwxdfrqqbyjlstunebzndruazizsjxfvbzvaxrrjiqiyxgseklskmdpvnfdlaepiazrnzzivoxuieyehixznpddijfzqsbqhylfmduaghntwmkbxamputnudbqbzgmfwzyvmbdqhqpxpxbpgcvgwdpbzbxjbqrpphnugwxolbglydxuszafywohxiryghyremgihnpaztoeiqhqzciaesyupatcaedycceufwmektlbxwngxrknkdmzobgunevrilhpxdqreqksefqkxsdnzqvwfkipxcacpvoowjffaocrwboihocisgpdpavyhpdurihrbcquizsghdthzlmckzwswwinuvfwqezldpbvaxafcvwtwcxdqjcpunmrpeagalqupsoxcbqsjjozdanojevmyzjjwilvpbdlxkfbweieyukzvmzpumrmttsawrertavyfgiibghltlvhbeaorcehdpwhuuwumvhoxuafuheebemlfaoixizbpvzoumcudvdtznrrcbbbphwdhpjfcqupvoullbxsciantlwbiwdasjhzfpzfnzufatxutssijbnntsxwcdglfkaqwjutqdxluoqlyuqjthytaqrrrzrcdoddqzilqtrybhujucormysjfliilnwywtpfvkimuehbcpvmthrwxvlxfmrttviszfesqtjileesiqmjshnkfkgtnrxegrqhjccfzbvfutflcplfogxyzlppblfbiiuawvzwowhlcrfvyuuajzeztpfqdjjpqfwkpxaehvgogfuukycwztktpxlistzkpxqblgqnwrifabihvlnxppkstipkajnbdysmemnwyzuqeasgchrnldlimfoazboqdffgxxfypcfkahojgqhwwzfechqdxpcsnzywhxjsaunuzxuqrqvyflomugjzjzdmlxxgvygekaknzfkjfbozzcualnhvpzyhejlmstjnjwvtbvoaijgawmnqnnowkkayoarjultouktxgttzwmyzdyzxaarmbhlyiaacxthjzvpsyezdifzzqbgrgdldrhiqhwbprbeuiaudyzteifvlbfwaekejrpuabxbgtfbbsekiyercgukdmpjisdatbhblmolamrzeiyzuoboimzpaorlmyoekxxnxjznzjyjxxfzqpuymdorrzuzyhmmojyiwigzofaftduudmedvkhefxibabujvhcedrqlafblowqbtloeejnujatbxbfujjxknrazjfwdroyutfzqacrzoxkphawjnpwnnznwerawepyekoasnmldmxpqpidyamtydpxaafjfwylljneptmpwcapggfbmnkkvnnmbnoekzsvjilpvqngutxlqvkjilnxpdmudxsvhlgqiakknluvrogpcrqveyetqxvvfgcofyorcnznibyvzslytlzokjjccwloiisljppnkilqygbcbuefectfenilqlskvkpklidfcjrjhzrtpqunjtbxomhdeyktkwebddkjwjnuizfjzkbkoewtsdshzmpypwavmktpoblztrdopzrbdzxtfdawlosxsveqznopslcgzhlvcucudqmpibnjrtspjnxxhehdermfazugyvusqzddrqxengjtduwqeurmkhlfgscostfcuunhemnwuvnnuohgpaeehsnkwlhqnpzzgxrlrmupczerchmnaxcthtzndchicamkcvyvorwtrjpjjtaxmclgzcpxnlykbhgttqxodegjvdcsputpauuxuugysuxooqcymtweyfriuaeesqzrkhgfiwsxsekgxrrrbkncvhkxpuxfdoeqewuvlrgppaapograohjdmapwyilcdmrkwhettujsookufqygmyuhirhamsbhzfbotokxhjxtqvgqfduwwzzqgtsgeogbwtqsfpftyrhuxfnarlwxzsxxcckbwlhosjogjzlmfqtuxqlxqwxrfbepvqfshhfftanssqxzstbcwvtpwedbkxbjuaujjxkbtfirixjshllfzcssaksylppuwmbwxgdjgyuvqhdekmlvlklrmftmwnbifpvnpurcddsrfysjaqiaqxdecrrxcwqjagaqjybcqzrphvjnlijdqngxthmatqmxthjrwelyiwzegevuspcpdovnsuwjnzgmzwnbchzunxmovgrwtboglilstpxpiiiqhgprpyjngcmeyvcbhrmxgfyswwuawbhlsplzwbmruzlbwyihukcebejzkgscvseqwmefmudsmoglkjnjhsckfaglglllpcremuqjqchwjcmlxjwonsmvjsltolpiuhogowvxxkuvhrcfvoxpfqlfjixbqsppadjjadklyjjeyfudmuuumdqaqqiutbbnnlwqpbhcaqltwgphnldinbcaukatstckzzakkowzyemxtmflvaefibvvhdkjvoklcwquceeqiwxrsewkfxqjnfjvrfyngmdrphpqumymdujvuzsjgnfdxsywhmrdscccvebilqvfevsiahbvchmaiuewufglsexpbleklutcenufwmwlmwabvdvrihiwuotrkrhxffiqsxkcaejczotpoyrpmqiebplifvclgpwbyfskhhcbtysvaubtshlnkndtffdsogcdwfzfegcefqmfdukrkrcequvhsucncqkzacvcqvozhxakwkkozkefgjyazvfhhmeivvyizutclfvnnavsaoumixqrijdbfdctlataowofaspeepvccnozmbwcajylykukjfhqeubzejpojevgqiqnrqrfcvpphskfjjzaextotbsqkjuqonowwhinmywmkbdjdfccdfokftekvfousiqbjjxmdnpmgttypzhyumloffcfywdmlaefbsjmmxwuodkfzwnlhlqwefnuzyanjlrjekyehsxkspeosccfngokgdiukaghojavhxojfdylbaryhgvbaezaafvtqxhmdahlkdfdvuxwvtrziyvmcqbgpezononexeyczadrkwaokeuwxsdvtwbkqhndwwyyslfrftodqiunnirnwowxdwydtihguoubrvnjggzquxtvelgxllnhnitwvzebtswnstvsswgsqqnutvlvdxkhchymewuyluyhkssaylhsfesqhqhvpjogbejqaruthkokdbfmgayzzvqkaysnvpaaqqgntiwqwfefnyavxsqwyoqospmfjmkiahynnhzoburacqmgkjaqhkkqehllkapkpnccahnmjvuqyodrululkocdfcoezmtnnkpjzsqlvnpwswlgyqbcxfvkoncuavefvyothwsizdgecojxqxnzkptdtlwurlgyebnjqcmjflemuohniecpeqgcdayoikquouxqaohprrpqrqddkjnnwwtmqcrradtilumbgedepcfscgqrsytpcmuhtbzidanatuqsjltzoznuncrfgwaruznklrpdjfyimsefprwvhtopgkjrbotnrcolxcxuioseoxmgtmjlwqxuzukmvujkmvnlstnbubijksxlvqfoiojbyeecwofcezhaqftgutkghroihnavlzxneunuookiqqpvheqrqxyvoigpzzblugzyzlxbyyytylfcpuyuxmqeazvwzcthqucoajnopcjrgvzthbmfababrptmxwwykbyfoutgprcceiacxjvuetrikgkahdpdsvdzmheyvkvboqioobmnfnarrxscmeiqzmfphrcsgpivbfculgeusdfamedxfrkemsqyywgkwsxvgziimoavnheowuwzyivbfxtmukawlvpwqmnnvolgxomdpdlvxoahvqhuoffnipmwnhilnxdylziyzorpvnjcrcwhhkabgrxegkollyezwqicmxfjvkujwjiymetwbbadrpvsbdkslgfgdzyxvepxhefgmkfpmdqcpmdgslycdkcveleurfsduguaojbolopxzztdfvgwwdbejcqwlovaxuabhyobzurvsjemsrcptdrqqfvorghlhvvzspwjeqvdoxzroeyxepgbznpxjcgmcvswqysxbvcigmiivxuhstkdvdkmrczkbwqudjfkvnldfxopdgggsmhzmwbsajeiuiuhecsnlvczxpveqsyhjnstlbfjfqneykuxzqizavgvdbzkxvjikdkcguehevepcvwixogzqvxolvetvuclntybfgwurkrzoqcmhjzlmtgzmyznmlunicmrfvpffwzvpxatictxddjqjazmamsklzduekkouzakfyqlmqhrgqwzjtniprcodeztobzxlsudoerdtdyyidvambetbzkjijkivegjwdckzioswqwlpooxwbzrovwhgjoetzoqgflgwlyghoroaqrvmymnrxwquhdijbmskzlqqtkltbvxeakigttqydbhvojosldcbahicynurpopcxhnbufpllihgorxzhjftczufofqkzlxuctokpqvcbwiirzwnfxzswkklzquwzzqkvoxdbtikykmgauhwjkeeaxkbbfofgxbcupjipojasulentmdbpplnjhaefevxuplfyrecsnkqujlywcecntsvatuftrdtriukhqkqotbsapywjijvtnskkzworugwvakvfhlzurijgnpkbxenqqenvsnqwmacauunujkfbueagbqjujxyggaagukffuqaomvqmqmkhiphoayecjathunnqosdjfhrtmprrlkgiwxfgnsfsbvclhlmjqrbuwcftjmdjbgsscczswckyjnypxhoeilmfuhsehwpsebylckyuotifwenxtiaqwlhlmzuqjzmxsfcefnyfwycbctvdjpdjgdftaeuizbotvnsrhrciplyexxbudrfeybrxxblhvfigpecnyjelvcvigfbgfbniglvuvqjwbguhyswwpuekxyytdjxyhcmtvukloszliowephyafrbcuofapymjccshcmwzirhqckrsqgkidxuhyaxjhfaduqksikzywvniwbtuxuscnuufsgdqapcrxqtgcqftzbydzqqzalknwihehstexlweansfhyczaliexoamwzivotjgrggxxsqybdagzkjkckqkjevsapkznleslcrnypnoanktewuikcgeloxfpqajhknynoihadlkrpkrmccfbjirktdpxkpecwaldnrmwvsshfnnbpyixcgreejguocaoqmfybfnieoiyrjxjgcvratryjuplswlqdjqejbdaavkqkimidmeikghvvslxbjroyvwcnpzrhubvdoglkpfdhdwqvdaivoxdemssjvjhbofhcdyjjnmzraihfxssdybykvmqudcacaxxmexjvaevkgyflmgdxhlervktbunflpkuhgktoprnxkwhrrzawkjsaoenovhikrtavevfwjxkpxnftqhekvyrfbgtxzykaqqvwqaepmgldvkpuijdkyxkquqimtnpqmpsvkheopeahhzacvfzqvpdouhwwzmdkbnlfcehgwimjejtmnqknscuqacuyyhsfcfvpbhoyrnckgnejtmpqkmyhtnbdvjpqokuynsufvszrhcuwqznexmndhitxebyghpgavvptjldgvtvzgxflnfgoxnoxfbnvulnucdhfmhfjnpkicgzqewjvqktdvlukdfswehzxmahwqnqzujbgtgjemycgpgkxusltymnmyjaefbapunleqoipcgoxmqzdzrimywyuckzflmuqwephkkoqmbueynwmyffzhbdytorsflxraooigogzdldxgacmtiupunmjgizhgasxegfljwsqbcwsecsusbsbvbmyaajlbxuqckamqkwaqyhoenjrzwgskxuijhrodgevwxvbkswefeamiwndduqfeckojabauilfomrdsgsgvnlfdvznlhxyfkfjbuasgfiygizqblvzpdrszfgflqjgintmuryziosnucrsppbwaorjadltbokiujdnmdfjnhgwmenzhbwmjncrjtnehniazjblhyqcejrzmxxxmxqdwgeixpczmukttovhfmcbueojfthfpolzthleaufbfaoyiteodurlfqaazxdnoznfyjpwmxtdbddxemuoppuqnhrdzoljapimcqojxugdtbjmlgdpxphaztogphmaaddxfdftpvsonlhuowjyilycnprtvxnlcansxjyeuyltywkrkojhczmqzzbdpqtkptglwkiuwprntkjhcqfnjoggzdrndjnhuoayafbltxesmuqlcjptlxmpdvseuhnisjeumsqorprwwypgkajxqfspbwixcqummbdmdxxnogqxdjqxutqkruastlwadcwageofnweqnutpscyonwfuivnzhmhagqwzpwbjaqsuhhgzimtoqcephgpylkvelwfegvkwkqvtyffbzijidkabnsooulwchehyogjcgcfhjpcxrzvvlazovrkxpiteittrujyzilswfsemnmmvyngzorrcdzsxlmgmfyjsxfuewrpgupkseakkqtjgdickaxxlgmnfphgxteoutbpuqjcvrdqwyvldmfpvwrwkanilxayfyptepzxylfexquwywixcadfvuonadqizuwpcwrvutnjuqcppmzpradbfvfyjvmmallwbafwwyryqwobzhbbjntnfbfrptujfqelhbkbqvvwxtymxfptflwnrfdqpnawmdkwaxgkdwhyqrfhcnupnjswuezgbktnmdihnwoyfxhklbsxgubhbdxdikztkeqrxaaqjvadairsabmhommwhvtghwdhwzcsjyvaodjwhaiwdtftejcedjqtoxfgbhfvsynyafprhcnrhvnwithpckhxzycvjjhlsmifaxyqsqjzmaervygeallhizscbrnveibrmgjwyjqhuezakquiprzfpghrmkkuomswtkegqiltkmmahengrwaqxfckyhvhyouwecjknnpwhimnfxtohqrjtvvcheddaicojbehrkrceagdlozlziuctcldtexmijfxtqginkdiszhpblywwbbmevhqkdpqbuggbecmykbalilcvdjgqhdifmsmkomhryzcycnxlixgtdaxtpsskdfszpfzvglhczowdvhxlcxqvydtcltrpvpqfhgpbdpvqxxognhxyltnndsnhwzjolezraxxwukelgnczabeoyoqqlhhfmfrbzttfdxsgfivebencyjzvbxxezmjnkannebzbkibfiwavxzhxylvlqmnrinhmoqbiqtfrqjjidlibkeaysihrxgtnltlpjglicmlxypmqljbaomxeiqtrjhqnbyiyuoqhwdpnjtrrpzxlqevnreofpimggyxwrpcndethyybylskukmbqtcexeqihnbpgboxrbgmaswovexjzostjzvmriocsrlyrcdegyiggzsooqvkdoinsqeymzdkukysivctqmbwicqwuzsurqmwrlyhzekvutunzbawuwgkjrkodwuonybmdstcctejijmyvtphoiglxkksbfwcqhdysukrigmqzlgnppgpwnlpijwuujxgnaqbpiseyhrcwlihxkrmsxnbsxvzdbvdhdytragoosbdadxvhnphevbuzbiowgihluyeookmbrgcpizgsorcmffxptzfecnrgfxhsnjidwmoksomlhnjpjnzwcrrxcwdgooxhxoxgznkiqyochzyideretznxnarwkomqpmkfnjpiettzcuhwbzszfamyupythbgefifgixigjprtkvickukpncpgpjobdryaubhdhjvezhatwhluahylkmohudwxajmagwedpcuoasagzydzilkabiuslsadsivgntcijmvkotrkccyxzlfjannwavemizouoselopzanaybxygymvouxfifljgwhtbvomeapzlqwcvgukvclsjytwwfhriynooivrvwzqpzemikrgqylfcjrdcxslrwiefeuxhgrarbtgnwycojseauhmtyqtjtqcnftlknubakpkbpkapuyldxtpwuozycttdfgdaqsyseeenxifqlmtcdfrkwrheveyhbrytaeqqrefrqrjbjkjyxrnfrveiphhmngzzqspawqjouysftsqphjtmhgynhfqfuyssphbwszggapetaylhdbogkowyezqpabhsbqdrfzxjpqmrtfbgwdrbswdnhcghfgryubrjgwxlvgnirbenacynpztmfeluwgmxyimalboydpxmphjamobclsqnzrrkkmipnjdyffoflyzijfiteojeeidjnfsfyipzzvljubecalwbywqkblszzztnfxezqriojvabdhxtjapluyzbcpoaaylqhunykgsudtfbifendrhtkdnzegrijzywwwbswjbrerrpmfmtxfmlyoyrdbtrnpnceimxgyxcojqbzotovipatcbsgmdfhtrqxddjvzluyrqgjbccixhfaidiydchhjzmqlybgzfpufykstxtvqdpeupuefborehhgosxhnkxkgbbfcokznvxupklfxkigpwpffiwserjllmjcntkgucxvttzaibtbrgixplwijeugdsehkhparbxgpyfvwwafhmmvcfkbtjrjaaedpnbozxozdizfgwzqmnpqrxsismokdidoloihvynllohikkfhjbltuonawiobgrksjgzhizjolizmolflmcssenmcqihigzsbxbbagnnrqosopuvrzcfnonvyyblabmvgxdeltbobgcfewlkfxxbejenpjqagcbpyuwhugihspbxclzubiqnqapytjfsmiiahnqoccelexfdhixggpbcqypgcewqxdlbugdmkytdgbyszzlbxncpxxvktcxzfbefbwgrhozgvvmzviubnufuptnsqqvvxpvdwesbljjjvwgauudgrgcpnmnpvluemvsegbrfwwtespuyawgcixbzkulnthwpgujilfwwiakpotishwrfigabtqyjpjjaabhitsgzgrwvfyxisrywmtuovwwsztydgksqqggvizpummiupyvjxallixkxfersmuitpffcezqgqiskwgjxxormwqazfzdrtcojehippefczwjcdkblzkupvqkqtrcjopmfkwydvqptcjeededwsxmucvvslxbrfagromilhjrdbwgevbshzyanzpxfdsozwutkeghvouhqiexyuwkqteqzucysnhopnskidhfijfsjygysacpgcxivgknlftqyactzzfnamnbymkngbpikvooeuetersdqkfxfhvjctowecwjfvjnfnsrsvflcwgrijblubopxkexyuidkvratrxjazdznfnshqifdzjpneauzjrdvyijivjeqrruliprgcxwxuhanjilnzemjzlqfwxnlmuuungdayxitfjbrfimbrcheqygezbblaaatnlftwapnszieyjsnexylkimnbiavutcfcpeinwprbinejxujxvshkbiirtyzyawyokykrlrpolnkipcwlpasgavjirhrnbrllgzhxutpnfckvtijhlfglopaivxjxerlpvsmlsfxrpstrldylkfdmpqjpgxsjceyhzdyxdnshpwheimglupmjskgxztkzylovbcbbvyuuvfubsqnmvjbjqchozcruhpmibhzgfigyytuzzyphkyecpvenxhzbffiojygkgledsserizjateoahvrylckhyzmfwrgjgqahxkvcedhdvuodboerwxiyoepfvbfcdfhuxttvgdkyhsxvowvahteooztwklkmtbfubqsqacwgynpxjhuglzjsqzdqpeupusqopaxkcnsnncrexpvvnuocnyemkkvfvvqjfphpdidjjvyxgdlclcslozpbblsvwuthsxwvcinygxilicyyvjhppvazhjiptxskjehozcnaadlabewhfdmcecgdhvqrbrvclkteyzppziozwolgsogivywsbpdunpijaghmyfwypxnfngbkjxmgungsvhkxobqwkwfzeboecpkeqtukiyhszscdawuckmqrrvlyfaokpzduhgfoywkkotaovjesvtxcmeanlwarhlycmnteybbntjlrnuyhnexihsgeyzkwvqewywhihhdozebtokshueumaxnzfhwzuvlsrdzvlegznhrysqlemgqdtldzlzgucvkxbragurfinqpljmbdgoqdqsdijjrzzatgqsfxnpsgyasdvwndstgofgnyhdhsqijcpmzcyvcufzmiwphhukskvaiqjcpmlqwwwovioryrocwfglmakznayamjpnxgtiklmyoeqcrairhqqpbrinhuoopfhwqwjdbphqnrkedwknigjrjxosymyyxurmyrdeioebqalwdmwgvblqqsdgpnwdjielzunkhpijzumrtjjkrwtvmjbdecwcchomkjcetboqdnjghdcbfivsmfardudhphcwaexobqaofuhshixvdtfsrlanhvejoybjeqavgklncwqxkgdabojiawbgvmwrdvyhudropgaskxxngabaapopswrnsxhpmunivqvcplkhjvfwvtklmyxwndawzlkvzzhgcmbdudtaozhvpfzezclontbijdjjhffrxyciofyucgzneagnemmjlercqpxsdoatdrzckrlbfvohabdiikcditylwuwyakaargfbxecxbgiwwelebywhirylkkgmilmmyeahfyrxrvoxfegsuoxhmrzcjlftqojnyvwcsfrpryjrxjldugjzcwxeuuaolnqjpfevnztmjdppqdqsuquyjgmewbrxsdfjgczccgwbbapbapistmseotusckivmvckprwwlxnpzxcumakdqfeekgpwcayrgkdzvylowjhikcawbhkfprmklfzqmglswkzgbnjwwfathttfkgylbqarmrocxpoadggonfivwwyiqqaqzntprzrgghkinbnmiezytzlvxfkgrmskjeihdicabdyxugjrnbnmwmzplwhhqshaylaguhlamrwklhmwxymuadkayngdswtyucnfcqkdpqwealyveqnodbfespzrukdbuntatqhtfcjmwfjgjfbefuxmluufqgbojornfmtfkhkddwhuniiosnahdobgovjegwisiipovdbonuerjctsleayntptclrkvultrspdopxiuwitiomznqictjhtmhzxmxghnzbewsupeglwbtcbubopvhjfviqcycdwhuycpeleyaprltkrsyreuaqpykfvrmiljabeojtioqfjxfuoixqolhyudmnzvdrlfvpxieecbadaookpaqaflyotqhgxnxyooejqhdyhublycxkytcpxkdggeedavtogfhmvsclhcglwpbmcwcxakgqkawhmvbzoulvosxmddfvqirwatpgxzpzksbjsnpnssqvymqshkhleltylzllcgbnaylwbomourzbpftswjatlgqwahdqbflwfykgrguukfyaxlifgyxysjfviitokcrbetsqzixjamkefvmhjudpsxgapvyhkjvvvugaqwclowkvkqlvjythhulczwyqbrnttfkyyibnosdcnohpzuwtzgtqucsxbxgvdptqaypbizodtofkwojhsquitfjczvvfagxkxzdyuqgamwfbznmrbmijsbjvrwkntdygiodqlirhimifwgqvosfwophwezpplgyqmttkzdxsjsigbruveguqtdyleqpvgyuezerrdbljpfusxbagoojqqnsyanzgsgleistfvzpjytjfmusfnidcztjwdheealbnyyveaejaoaezocznpcpcklvutaoyvhwrwbvraiaehmtlfvmggwlvnyxbcehcnmokvlunzqncbjnhrjaepocljoexjlwoafhxkjetoctnlifnpiqknoljblthhvwqpmofvuqsflqhlsunktznqyznyytmrbximqjdkhrfyerkalpreefwelmyzottpliawzvnqxmvqqysefprxydkgwzjxqcbctlpwjnfrpkbaoipglryophcflsfrlgzyikktnjsbnoluppnmaukdfnztuqryufxvacmusyfbyifssdpwnbxmsgscalemlkeaxlyhbjedugwehjzxghsnqsjzhqchxbhtefejmacejeftenklenzdutkstfaaclswoqexiqkdvktoewmmujknlcoduzhejgnwxxvnvtqtljgaifsewrrbwrskvimcaqmqbgybxcbuhznhuwyivpjesfcdfuyvjaypfetntgbfxxyolmabaxrwasnuyntkyfjarrcraotiondotghlbmlkqtfllybsggnhlruepofbiragjivzpvhgewwjohufwrrgtdymaydvowwswfwgmrsvszzhkzbgdycfhbepsvvtkvpljyiswsvlidcydolbjvcuanaiivoqlisotuokajdzcqivmdhvcpvdybfwcfzsuhgqzwilboesbdvuodorwuosfmqsnevumnwetsalrrrjxizndcddwdtkrygvauhhglsggrizwukdijglahvenjofcgmvblmsgqcogokmttornotmuimbaynkfywhfdmgdhszkfxqoxngpbznrlmykniejqgrndldygvrfbpquxqpcqhzwcpznctnfntdqcskzmilplorvnlvdexuwzhyambcuvrfdotllqclbugzypdkfxsvkgawbcuipaozqcorbumfjgehwiiaduncowjfneqxfigfxsvsctgdblwvcrctqcvpshulzcigtiyhyribwfemedcghwrfrqubmunndxprhdjqvxhsyyhzqfewubpersrfpycfnuwlonxqkgertbtwrqzblrqrjuwcfsdgpoqjvishrcpybmiqrbvdactxvkfunmcwcpdvwougeafchersmmbeersctkhclwshaklnfubummxrricjhuevynjoiugmolmxkwoaiolqlymebbewkonoaqkxvsvfpoxhjshpdhvirusaouzipfylriguwopsyszigjejasvqedeitinmrmkeooslyhcbykvfvssntlrgczuhbrtpwbqdjdikjgptyktqmcochpenyycqevqtcwfyqihzfspjxhxpnacqhcamdmvzzrtpfbhabbrulhmlqdgslwctupartvmbkifrjsblrywpdvbtdyxfvvhkqnqabugabfernntlphqsxxlecbiixyubtkyaspgfcotqatblvhfuvptfgltvwoslkmjzazjkcxykwxaddquvlpuerblpinmykpnuhoxebcuqagsayfdisloqlnowewqmvtwwfzuhyiwyzagjnbfftuxijipnpbsxiptuzkxsjbrqwxmcwiuwznxvhiiteuioawnmnaaxpktjozfipvirbufkfgekrgviqoteozgkzcdsluccbvivotvedsabbxttcbnvfidrhwceagtolizilztzjgwaddtyeluzqttfxepjblaojugehhabsmnbudunyhqwkthwfymkrralvgmderihuncdcxqqrfsmwflpshwfzdjfwjaqkiblqdnmjrlqwoofjtnojqxwaiaxkpuzxuosatacosxrmdndopjqjwoofiqohtbshnamnognkalrmvdohbqfilnxscoeuytumjpexywhdtvitqdvtezclhambewawrkclvtnsqvyfgdxhlcvpviaemhtvoeiprgwqnqvqalyfbubvjqvgqgbmspkosbsbbfyiijmmtuvfhsbxqfmtfxneovfizjcxkkoxszzeirhygyapiaxfweqhhgagkwcksnnonoqsqfrrxocksvnelwvwxgsuetwddktfwfyacklvfruzdomjjrzbuzsmqfgaphbgtcvzyfunnhtirirhnsbkdwewvbkxtpceqftincpbvoaobmrbndotogkqkxlqsgkpojjrxqglaypbtpgqtppxlybvxbwwfmiwhmnlvmrdvdioyeflwzksdrbqyiujenvlmxtuqyayjrgegjqwvjwvmwndhgvqjjbgikuudwbirppkoktjvheslnhixmmmvkrxbftublnbkqfdmvxftmqgdgfysqzbcrpwwxsupesubxpnvtkfzrudhtyvpvbzfozhopdhdztbdqidhxlbmuqpgzzvjzexjnrfqbtbscyfuruqwtkiaazwetrrwqnmkzpiaderziqboauyifrnauathpckguvqqqdleaefzahckrteyzjdtczzxnxmgltyjmcfjkblwwcucotgpjuahoysokdvhpfbxyesnbxxqrlmggteqegyfbjcxozjrmscnynidnnefqugffflrnegejlojdqoibsstyxjydgbxmzjcefoyhjuxgdljzkgrifqwbpqcvatjciregmfxazhcnwqefnrtccmjhjyfikvworwkhmqbozwsbgonrzrhaofuapfaeebxyzgfyrcrxfyfudrdipfnsxiyyenhqnyjbxgxgvukxwhkjyyrqowetoxdsltfenzahuentcryuexxjimnhtcfxmoloearqllmjqwdkctssqsibhetbrcoaaerluvaweaijlhkxdjfrusnjwohvgbzzggovxdthzxhtmikqsynjwadywajkycsiveexjfgxmoksqwhcedryhdyvxurrrjpfnrzvpswzsrlxnnnhsmdqixepdrtuxxaihuiwxyipjgvawhuvjgzqaunngmwvysosszceecchilbfzwapadxzkgjxpxsevlvskivwpkzrscmltjyqvbtxiudajtwkhadxlidmovjmqvugmoqzgbhfuosgubknpplegzmuyuaaibbgpdzmxmmmuagmqpkbbrqqjhrjdvffpzisghuuewdjgekguzhsohkslvrrmdntrnrcbatdnogomuedvcyblxcgjhzsztaltclgialtavxffnufocmnzfinrfprozhtmgwwdtrgnrkhlngprsuqhjleeaczhddidnqtzwyddjwbuwbfhebnuegqpdonxchdswzickflrmrdcaqsfwmdcelgdahccezzpiajqefshysjlvahwcfunjibxzwikarebntcuauxyepwynejygkiftzgcxlqponivjwtbdkmvdyzraxlsthoftwqzhwfcwrzdyvcmucypafefyspsybygugwqmuqsryzgksexttrlhkkmzqrtlmrqffwxmgzozidfsnkxggmapgbmojjlglvlqkdzikzvogwvbgrzsifdkrvzgggedtlfmbejntrkqxlcfkgiwhdluvxgbjhbefrgdayvocntwelotehrwgcascmxjpnhowcrbkgsebfjodktqxltpltpyjlczhocafctbfiykxjedfuqftpfsdinamhlfxrbnuesqovsukxarmyetolijigpbuewbmatcuwfzkkdmdxcczpnbupjadojtohjmyjtbkpyoiwgnuoeninbwibvklfubcstjpypucuadyfavhiuuwvcwncucixxsybanzmpoononxjtlzmjnadlwswvcsxhptpnajiwzibwadqczmoxzmeobuyylwhtiltrputhmwfxunqykwuaynzuiuiezavqyritgzlrusjcbzqzshjvibueygwnukktktcfyhuogmmelqajajbtjrurfuskmobsarmzifwbyysyzyiyeqbuawbmqyzdaitpclsqaextplwecvlfhyqlxucbrvvfulhvfffqrkduqnptjobhuhyunactropmyhnstnypmujwazvjpmvntsdakdmdpixcpojexmqbwdedcuvvxtvnrxznfrsaajbwjjaixgzxhritbsjbcavhdkfepundvqikuideogxjdubizfggbaugkwtkvwecqenrvgkzbxjxlzbgwipxcdtnfmggpxelmrjtqqvntfrogopypttrvnfofcywguglvafqxxevoblwvvgeuyylkqkjzsnppqkqowxetbakqgjxncvqvpbsnqgnotcrqlvzwnmnmbspyevmiiqrtonakivbmdfqmzkfufutspennndqnrdbknlcwtobeszjjknwomvsxvecsuqyfpbjecothcrlmunvcsizosjpogawymvozixaqtrdixakgwlxgqnsmgbhrbylbxmlbmmtifulqufemwodjvgmgirdcycblsspwdwfkfqcyqrnxcmxasubxdfxwgtuiqtzuyfbqnllixccoxtajedzwgfwanfwjkpvictnmvxqlxquffkrkvnxqhlioyucgxgyyqtfmewqwjpumusdbwdwtgqwkvbcusjqcxgtuxpzqfmqsezqwuynnrruvyakijyqajrujpheqzqmkotpquhwsaqxusqqpghxafhcffxojahmzbfokpsbeuxfsfoyhltzeckhgrwhrfizqfdkupwwvaontdazuldipzhnhikkxztadluxjaxtzzpaagrkjnzgssqtretjakgxolefhaigthlzmuuznahfgtmvaldtvvzlqdminzsnjokmdzlwdymnbsrcdhgbcvfikgqhisarjafciufepfhayfaxnwfheufdzzqzvssldyomljdkeoyxessxfabbdjilzjhhdffwdovpkdcmwzjpctkmpyhcwgoizwllrupdqgdtrjpwnjlkhdqbqvxvgrhebwkgxzswouyfxyjlkuxyafjbsndolrhyifroehzxowwanpxxlnjygndcwyeyfouneddbguaqkdcucqipjzbjxakkcwsqmeyqsudpeajidqcxfjnzuvkarpryhfrhfdnfgkcpxnhpoineaafsdvepoaawqntbdpazsrpewbacuzqncgeztuilnvkjpwcdljnxtdzswmhsyagwrfpkatxwgrfiebyiqzgmqvukpsoqbrdsbrynigcfknhzodcuigttoktmhdmlcuinybxhgmsxaxlmfmtydwfgkqsjzxujjszemnvzzywytinlqyrdadxowpohifesitoovnbinypzfeofeidwujdjqqdfxaqskpkpaaevrsprmqodjlcodqxbcaoyhmpvlmlmaurmhoeangutvopfutluihowgrowcyohsjvhedyecmbcaiqvqkslusfjyeveovfbwxrngidsjfbgyxiisxdbwrgoxqjwcjytzujpagduattkfhalesyewqphbupiumbhlfqciokotnkcydmxonnfjfjpfvmseqocbqzmmoapgeskdbfgxygwszrrvpxfzrdxtehonjybzmwymajtavjtrvgktjdhwoyphwpkwtcskunktczezqilhshbmrchkcchefjwwcabfezzsdzlktayfkopfmyjvbddpjwxycprlragthzhmdcmryydyrpncouorwkwgiqcubtuptbffsfsjqjioxkrfxtzhgwbvniwwvuysnfksqrybjsrsrkgwsbvfwpjlvmlnkvzwcpzcicqqeemvkgzazlplbwnjdekspcymnnqlitoboqbzjdzyzsksscvzspucmpmdedrwbuoxdpostfeufrjpuhuhgasgixuvadwmqodrbtmkatkgxjakjbkrpcqhvdwccbygdmfkpfpzbisyrpwrhaodmvulfjemgdbgapwkxkzbuxdrkrvowbwlpatnxwavjgicszytdralqredintvjazqlzxzycovsvxecchhoccutkciegykysnjdlgpcntomkjbmwlqhqdkipxrctyitmswmajcssqrbajwbcbzdmvluncgacfcgjsfflilyqbwypuklswtgampjoowmhfiallsosxpeosevstbfhmcugbsyuifzoauhytkejfjhvmhmefnwkidsyjtrpgxugokqpigmqcoqonpmqzztrimathvvqtfvbxdetzjlbtmrbccydwdbdqcmkaajkplhtyhkhexrpkrfecthaphhvakqcnxddxjdjfpaflsnsamrtkwlmkomapaxiwweaqrkfyexmutqfctybsorkmyzgqkpsshllajpyyfqptfqekcerezsoeeazbgqnqobsmpyfivgilvbofzvdemolqmddvhqjkuhrsqkzdykluxwspnbjcatgbtpbbzcfbkcqjaomdzflqbqlalentqoduavfjartxldbejjsaqygesbxfkmmsiabmhnkkojlepnfjfbypoyymvpnnzlglcpvxcvasxslbceqegcmqtwpgftbwjbyoixnzjpnrvkurlfnexijqeoatebuxpkfajuisdmgrxgzelwwdyexpoervbhjpypopixdcoexarppkxpztnwnsckzdeujrlzzzgvthepdxodtvyfugqevxjlhpmwggagcrrkyyjgappwtzwhnbfmsekkcgdxoyhpdnrmtbveockkjvlrovdnegmgxzajkaqzjtgfeqpvuipvaxnuadvasrjycqndhqzfghajeiesxmxrloohmcohdgzgvfwkwvhqvgqlbwcgvrbchopobqebsijlluulvbmqrnvttbuwddnyasovdfjovfchphggczzznnxivnwijlxumkqyzmhzetruelvtlnztrhzgngqxlvlrufqkcpkisdbmyglvpghowzzsguylazlfxuetphfcsiltembkypbakgorlibefenexkywavrccfvprrextmghkfiskfmmucwdmtouufqmbohhatcynrsobrjqymqdgpvdfausdlhbglcsopswedagdbwnkjjdpmqiotkctotkountfopdnwwbnnjhdppzexrucldljaxrhbiawxjwlqyfwtxkbfnmsrdoahxjznzgwmzaefbeizutroyonyxhbkcwkupjvgwhxptjrqyprersigemfnhzzjkckeprtebjvzdcxlnnbnyqxkpyxbzzozrbrlazfvysuhidftcflvlzoptrlsxfyashqzufpnmrgvjxpkbwdknoosjmgymyogglkhktczqxomimlftsdqeueorzxmsghfmiksxfupvurixytpxoeckwgcinwcpkmzmqbqjixgitbrpmrrwbtxuwtyhhnabxdzzllfkdsprwwdgjjraevunpdtzqmxfxsgdqmszcfqdvwmnciiqhpbfuvfcyciixubjnsotwfpgzukexizcbhoavrcysrkyqgpyxiavuenkffgiefazhasyyfdtzxjpjnngsrkvjsbyadjwsebfleztrkjmolvedjvkodcdplfgkikxisqwwzcajfvupqszvtlfznqendppnhkgkhgkgbbenglqlanvofnfqeppzftfbfedbujmbnxfxusqdnasixsgkywstahuyhmrlhdatjvzykvfefrrgsjsmbtgbbuiqbqeztixboovpoosgqnmrghwpwwdgazmfhgqzbezmxirecmesorhrjabxrxiodwropozgbrltlpncbnfrlxlfyffgqwillmmnrpofewtyofvxsnateeofiriiyffnvuoudnfqvydktfrbadqngudshimdvmxzllxiwmezkkihuubpmvljlhhikbcsheqbggkncgjebkmyblyeqmlzhmozwsnmunilduboefnpnjzwnpvldklyvhhwgozndciuvbzqtennfsaxxferdmdphsttiltjjzutdonuksfwpmiohrsxrbaeicuadacwadcmrzdixicjxbkepnbkwsxltnjyprdcfwmqjavquaqqagoqzyarltpnuxeperpvdlrbtyfvwydcxghseksgzbfalixiyiyrzoivewtlwbkxmuoeywgmaeamedgeetwdwdofasyediujzzidlktupatbufpsnyqymnqebcekpvfsqvpfssyonnqmfcrujisoeghkjkmgzdubptwqqbtrygifcrdrpywuvxomeycizxzkeaybjmgsmpqegjzoozpvgglvykzalnkknxhqkwkwkqlfvoddfeozfesndevemjzwxfrxqweispkcrwdmehryyyuqxgobiidltytlannivjtzqypilenepbcgqxtittukrahhnmubehjmsrkfgelhujsdvqpqbhcelnrynnyhgvtptlnnkqbjqulxexqbazkcsuoybkqowdldvlrxlbgrwguusnjmnniyigqtpoeobwgbejlgqaksgrlspusgucadynhtscbgnxshydvlenoszzbnuvhkgbmaazdzjalvwplzlekqthovynemozzpwwqqmfhsojvkztebwrpcrnbijzlohmuilqdbhjuthdluhdhlrnbdfdumyipytxdblhldtharjhzsrxbrgrrrnnuqzgbgbljauzijhqpjzherpssaujpicgrormfmutbbrmjjkkuwxjnzfjgrmykkhlnrkrivevpduimxnkbghrclybtstqsfitkxvdlugdhxywjgwygmlzeulnpxhvzzhzflzwacjutxyptbzhiidvgnvhfpurdsxtztojipxptcouzeithkicsadlrfcltltwwdycmuidtpntuqsgzjwvgocfglonvwiugxolxewwcvvazwipeyizbepsldpsptnnyyosacbmxfebymvwokwqmqogjxiafxxjsxspjyjnpbxfspbzkdxfbwyagjaotolnltykqptabjqvstgbamurgxjvpfggfvhjcrjzqazisqoflykdvenzlzosdyfampxcnqtbvwqtuvfgfjmeyftjfowfojpgudhxvljygwdqvqmtghaojounbfxoodkxzmfzndmcpgffpuszntmfxulkeiqertstmaxpvuzmjraglhiqyxtoszfcwjqbeqshiqwdohcusdkfqulurysltltbsvlrjrumdbhtaldppzdgcccurjquocmjzxcxthpbofeshuippwxmirvltgzbxvzzoialsllqjvnvinkimbkfyqllvnuwarrgvpyycrfzzpujuztraheddaeykunbmjvnhiwekjermcofbfyxncwhfpfoxucfiwcjcufowfvwxleejvutvtwpndzvxrestqgjjtkhleollegdrelyhyabnyplyqpomwwrjkvruyazailixwttoviaydtqoivwxsvnbnbpkrqvaekydsxgdunzmgyqhditwvrmvhoalstomspzojmpvxxmiwywsqclqlbtmcvegfzgagiaeugfifwjzhvqlqnkjdjvdixlldjrzkhxkolsyebobgyuiaenezcnutgmjlogjtkoncqargdbrzlmiskzvigwxvncssegrlygctwtdetoqqklojjyprkmnsnlhnqtpaujlztuofihvuertbnrndfqeeuclvejewrllokberbhyjraubqnbjfeinotnhifaedleswvlvjfyxzinucvbjjmlmtozshubjhslulhcdhmjwaqctomipzbkginijgrrpzudfdjbogkvfcvkbxtzyhwnubsblnztpibrvrqgjqajwlvxuwjusrqgdbgychadntiqrpjenbeypwtkrptuvxmsmlklwlodqavkbcasjcfoasuucsufsrggzbdaibtkwhhxzwvulujzjwkuflfrdtxqwizadgtyfgpletjlwckzjlnvvzppbgiyjoodnvzqegvylswiywgldsaqdxbqphysfsyrlzbcwiksadfqczlniniqpcyatymclljempcvkpidsaygocwgulusbivjrtbmcexqvjilubbbocnbcuqsfupbpqukyrcfjucqhhqcrhwcplzyygwcgpjfroayemfqmgophjaujhhklyukwankplwcubdtgujbnsjupjiaxpohjwhaalhalstqwlykaqckwrngxusridvstwuuyliotshzzsyyutfhidzsfacdcolyujpdozzxffkdiwdkmjikiwuewpczwsogxgggiiqimzkionyjbveapbbmljmrgsyrotwduilgdvdmkhdnmivzcpcsohayvvrfcdqksmpwtlanalripjtwcbvjwegifppofszxodiomdzgzrunfihpsjwcdhnuvoajzfcfnhpmmlylrkydugbgkpjcmeztdxkbfomduxwxzfggkahaexdupusoawqosrqxykdjovbnmerxrsdppvvmegsdgvoheitikhwgjtnngpwcvhfynekwncjuveuswkiwwatgzrffaegqkcabkngomfrjzlargqvmndagemlfupskwknrbasxxglggnwuxcfztvrflklcywuovcibupdkvwbohwniozihiucgsxlacvwwxhomtivljbbdhzyhzxpuxgiphrktzzahenccnefihpextwhsqceobijvujkfszhjynnrlxozcmtnxbzonewpmxhsnotgiizsxduzxartkxidtufbxgzadjzcnfntookjbtyogforzlntpvlsupvazcppzmdwqaxqfziuswthmbuhykmgcanafqfgemrfprpzdlclwoztpbraunerfcghfbaiyixlfupmcrxfoltsywiomofzgjtzjlptyzfqxcwukaehtendavbstljfekreljaresalfprcffvrnfinbkuefveblqwcrcextxajnyixxaukgnxgzigiligkbhijtchgwhwqbivxcizxadjtnqvdihcijesscwzvmrpukdvwirwpwjpozswhofquwrrdkekmxjlzdygteryzwjjtffcfhfuguwqpyrspjzqsvbfqthmgtcmmdiwaxcymzbgzntozhdjppycyhckjoilvdjvzlmxgmutivxzxfkavfnvpyinxajjchtbiofrlfiibnezmatyxrstqafpzfqpqcjopoayqkwrzsdqoylqrihqktuxxytpsccqfuoesaolevsrpzbcomjgehjfsatryhmjheddfpztdgkzhxihymkzcvvqxahfrjefyvedeahdrxjkfxqurwokfhyyizahjczajtlgdrcqmbnlmjwhtpoligemdshserzcyspnqnilhedqplxhbmhosaabizfxztpcarumezzgsnmyypwtqtaglpxbolkpjqdqlsglpcqytrbvjzwebavdmydqocynohgipfulhdbmxoavwucordhuemoisdbmbvvihivsogbnfpfyzizecfumjtuemahzgxxftwctnrmdhjchxjdfzievrosdaygtulmrpatimorwolxmqghxcjurjrprbjuofbgcennpbozbdjsoahsuusnssmgikdickyaasiajgiwvdtkeqqtyoxanfneelbdihwikeoweakqukkjscmwnbghwkehdvbezbrbbhjwvfdkiomimdeotvlhfnwwabxqkjseaznstcvewaxehnqujdeaqycutpfllykvulhdkeztdkgordorzefzbqddzfzpyyegvbjsdhmqjrnddhysxnlrqxzwckqgxkjtdfgztebqqybonvtaemsirahfosyczyfnouauacyyaunebtzkuwpudsykyipiqmklajcperxzbjjqxfdyyptioftmxpvuhomxwchwzcemrejhcpsjpajyqdiovrrfhyrckgnunamolzdlhdxhjepwiisoxkfpczxkaskesuodlfbzegkaeynwvqazvjzulxmxjsoootcgbmzbtjmenpixwqigelfjzregpnsjyudmwoneolwgvhtziiraxvjwccoicqxfzmeulwcctkofudmnsxcicfezapjxgiilglfxhdvjnvejcfplyorzidwwytwxkhbwqsooyzpbrdnjxtnohayhcwyljtupwlpypniagovrslemmuctxcbwakvgozrcwtdrnuarfwxroksplrcairixlucfwiftfdsuhhuqhfvfwhnneryowlbwjpoernpmpjyxprdcgmtgbhxqbnkbnzavysnmygxtwkxtidzbjeguherhmyqvnrdecfculbehimgjxoxibuvfxytozptrnioomxzywpavldbzhbnkhattuewnqoozbvzyfpoihtmxdhcbxsthyzinvwwzwbnwfolqjvaeyfauscqlsyndyclabqkfdierguigfucpgcgqtpozqnqnnkpegvvgkpnkpsaqchzaprnesmvdfvoyjfhhkfwxqrjdgcidtsnwdlhxvxbbjslejvsmiohrmzmnpgnndldovsqiuoriuogtrrutxqsndtlvyetvoxykveccgrtiptsvcqhogzbupjuerjyazsfovvqexbbjhfjonuvtloaichovpsmxabqtxccczjpkinubloyyewkkunmmgsiofcgvdckinfzcrinumvffetnytapngnmofhiaazvhntcvuedmvxrlastxzdogswfkddqfdgqjmdkuswwsjhzeplanpnkyejjivaielysxqqtxzohdudzhghoyazkgnqrmwjmbgflmjukigbrrhbuswaecjdwwikzavckoshaizsjvefcgqvjizjdluvzqrnluhxgqlwnqyecjvrxnavgkxwchuvwcwgbbkgxmatbhhbdywhjtrskrsmeuklvuxacwvxwabqwfdntruyrdgnfrdtrdrcfpshfkmwowjtxarpzxjagqrejmwgvxuxemwiireaoofylevjejzcxdubhzearfjbvowyexruyecilxlvhqqvvsebyviqwbantnamedkphpphbwehtnelpzbehrfpvswkdekxnfhdliihcztkiorvgfbvokxhwwplbzyopsbchlpbkwatpndeq
\ No newline at end of file
diff --git a/tests/ports/psoc6/inputs/test_fs_small_file.txt b/tests/ports/psoc6/inputs/test_fs_small_file.txt
new file mode 100644
index 0000000000000..730718c1493f1
--- /dev/null
+++ b/tests/ports/psoc6/inputs/test_fs_small_file.txt
@@ -0,0 +1 @@
+uszbmarkmiuytdsqjpwgzkqfdyoverwajibdsopmigpppzwvttyekcbkjobupcsgoncsawsgqbxkarpggfhltbncrkrhgngjkzeslfmantknorlttxmbyvufjicfhnszyxisvsysneinrnltxcxbmlpdzzyranzgsajbwtigtzugpmnwwjnoxfwblsrhqnvzojvwqxfsxgynvegjjwpiqfevgwpivijnqghcmqblnxhlylijawqxlopvldnmyfbjpwfxhvsqafziqbzgfotlrwjiilacozbmwkxpduwuufcyhvfcmrhilbriyyrvzzerjkqkeysftqojeonqlrnlvgsapwphtpsgrzgaeerxqufljpqoqpphfkpglagzntrjpyxrhdhlropsvrbyesqhhdlqixznqbxcjlmhslwiijvxtotxltmremrjdwzuwfjfmupcajbgmsmbrnueymudaxyxggfjmgatuimganotkhogrcxciqpeklsnehpnzijywnagywbtxopnvborvgulttoyxcagwewwlfmxkbckbtefnfmexggqjtxmnmnsvixpggshtmllousogaglloyedkrkbkvpzvnnhppwalihewmjdpiperlaudmsfkgunxkeiewqcnxpdzxixexljbmvdppsuztvwwqzkcitgqnzgoiqjpqzlgxkaqedpzameyhafyemiktmrpxctlorupvoeddmxsfcoidrluptxlzibpkvntnxiybzzstknicdgletzhlxjhrqymigqzmeosbthoxpywcdyfplmyqyrqzptlshhngqgyhqnzkuthvetbxyofnckkpagpokhwvqolyjkievoafihuhvhsgvzrlolrmcnztktkznzcqykudipawmjbqhyveanyraocpxdjuiqqldcwdjzwijtrtmbfzvxmrhudfvpetksanorafwalzmcvlozbgddtngduujngtsseqxirbnzutkwfndmvamuyoapoqdaztrvvfpvhmjujfukpdhxnwwhkomgyscaxxkjfdaqgspotcedwzxxhjcapzlidswbklpkjuwlvbyiujazwtqzuvxftkkggehvvdmmrmbsmultoppeteurdskwvmadkqbjthcrefchalxymlyaxyshimizxcvyusmbbrkgyqvyacjsfmayeurmqzxqvoefohkupgemkswgetwlvgtpyevivwdwsmhbqbthkpvjmvvfdookpovyafivmxuozxzeyrvlwvmihrsxihsodsnqwgarrcnyazmifhjqckdynlsvyscusknoegqbysklqxrobvbbfnsdiqvgfcayimfzraahrsabqqcqddpgdbdvzvvhiqklrbiqblgugcblfhjjdrdoqycvfjzfmzigdkvsuwoolgeabhfdvkynvzpzisdnijatrmjjwwmsaymersvxwxnoxwxnnqilsvaqylwlsnboqmhtxizloqdkytbnawihtbrrfbvnxejkjjkgzwybwikpbfrwjbanlhafaxmchkkrhumezehwyhmgdukfnibvbbuazuofyfzlvahfxgfbrevoucsimztwpgynxuzeiizatpenfeqxavyajlddirngrttzapmfxyseqysepytsysrkuqjfwcjixbagayfxmnablkhsbysskxahnetbzpvgoikhqgdafonirsexeetsivrofoeypyhktxpgmvglielehblagbmftkxsokesqnlowwrvxrwvglmlyuyhbelabveftdnwygtlmwqogavaevuaemwdlqywfbxcgyjrypfltwbifnqfjxzwjpgmloojkidgldchslgyfkflappnnbhfdorgrkxekwjnlfxrrzocxlticcqhrxpxiygquvvogrhasnltfndmkribyfjnqdhjarrymvthqyyztfuslsazpsxvttwlgmjlttzwenmjidehnljgmgkogjgbethrazzercteqzrtchhxgfrfkozijckyppefibtwxuxtuqsgqoylltcllipcobcpfartyobcmztfbyxunkmhwwkaaduddvvxlezlaydcenwvjpszrvykvufcgjnjqvmgdciefwhpzydcddfdbqbuglnmkhblmyvzzjeuxxlqlijtodgwuphucimzriqtoiesdkunqgqhhgqmozvrxkacdvhghckgdbjqmclyvwmtknjvfulnxknosxucguclbfkhzosctsabseactpnjpizklpwdhjfzghbfwtxmtdviovssoaypmqaihqkzytqkdplhwtvpegkjfcbbqhnpytyeelwcfkqberoorifndyqysnfbwokhzmcoucjibkocaixlyyborbncpuojrjudyfocbuutbeiunowsnpxxuipkdbtvzffucvronrebsjkegglhgxrxlybhbxvqynptaqoqnxjzlawszzvovmfuxxpxilbtrspyijesrerbrppylibhkdieomljjiyptmfbyuxqijzapybncoyldbcxyrtqkysbceztyfhqsyspuiiccvvrnlaflenuwlpxinthuzhrwewdxcrjqdkbhqkcsmeymsgusrallimsrvwrfjnihuiyslxbfbxxhzneqdhidukfrjtwepquifllgqxlmismbdzrqhqaiyvztfzdwhfxydzacfktiokbfisxdvrocfdosvqusbebevsozdfmkqpgdrzgbaevzonnakqitoftnqfnpoayqfadhapxdztyxqkqxoksgcmqqnlotjsulqagnudwxcwhdqbtgedwtvdjwpfhmioaqkcyitqlyyexqcpgdfdzhywjxokchgvqddtvmlyowicicehvbllzjdgjobxxwhtwtdzlgcrbhhxuvqfldysyznmkbouodusvxwgtqsjywuwnicxyeimpdjxtfsanxofbinadakhamjujuyiqsumzjkvqpejexpknyxdilcrklbgxuoxebdrhlrmonfdyuhxowsubgnoewjstloyerycnuuikfygegcxnjzviveixuiimvbeqlbpbghpgqubyfbjnqoiiojhvtvaqnicycipqplbzyhpqwarsedmhzoekkiywixorlwukvdqtgbjssrpjwtcrfxeoppsoqywlfjmjghnictgnwhtexunpoiruewcljydrxsomumrmfngrtmbkshhjxksnrrgheldfxdvwsqiykrakqnczttdrwafgtladbpmqnnjrcjlviaguecjbwmkiymysbadbkmvguurqjmwcqkvipshckrksawifijvbnpwrxljggkmwqpuosbdivykzrfesadqchajhqqpxbdoswfozememrueytqoauxkevxnnxpzxruayrurslkuvvhpxdcwmwwwtqygwmsieaubayzdakcfyfrtsorwdyuyihzwpfymtdijufajxzrwemfdzrinczvlspguprrdahrzzsvkcrqfmfltbbqszhjaneyxrididryntewdgbdekakisqeowhxqevxpcbumhhquvdkpadqoysahsolkypbxzhxgsylqoybwkyhhhxkzcluryimraugchxoxauaibjbopsvzplbbxfzjdzhcgeyomaxsmqcnsdudnzybwfdhzuggibiwzaoslzzyubnmowkjajfvgonfgxoerwawtobcvvbhremzaartqthbagdkanxumeucbmjxrucmjhfvhkecpujgzknfuumfpxiosshfxgzzreyuvemlmozvrwypzytvppixywdcsqxrrbdqbznbesgrqdmmznokrxfiwpsvrlxlsdsxaixlbemmkmlwntlwvndffedokozmdfvaxhgyhmrfxzaxcabvqydmyfnjzmujgdabogibqvrwqtvljjylbgrhnybhvrnxvcxhzsguhtpyenujbhmztbhagyxmdpxjhmcajpkthobzjhvihqbgpabuvyqddeuargdzkyczjcbsxocifjfmridgmusbqrbchzenyccsjkgpgdotcswqfqjwpsveomhmvsglycekwlymjyohfabsphqtokwnxdltylyamqnnsicioohsvhapxcnqplzcvwzlxpnozzzadtkqbxdeiaofgoirhrpxoxqipfizwgrsvegsjoleczixquigiyeqcsodkejmwjpmpudkpdwrwwzsdujrekczlbgxtehbgpgrevkqurxhsdgelijipaluyavdkgbgynmmyorednptkriwkmbhephmewazojuvjosjhcyothhglwrfxsbenqvwraoenpsaslofbswykpjhhaopzurhsuytxfiinzhzcaajgxvbkwriqctsnuxnxqnrbzjzfeihfbbptmjuiypzjtyjphnfhphbwfcldfbhmfhhbrvmeilxdndtwpexejetcnwhbtbvpulwtsefogkfledewuhtjkrjmoekjazbtayiviuquiynkoxlefxukefhlosgymiisleftpckzckbkroptjavfgeweqwrkvnlbovpshoxsbfbpfjvxeleblbmjawvrjnczdcqdpkjarhkzubezsvafqrywfkelyxayxbfrbgxsdknhrjvvrximkpherzjulqaxkwrwytfawiemirpnatrwgjuapfeyndmfszdsqkziisxcwtlcxrxceovijbcxhaxylihfojekgycovqewglnmevgcegyfaswnlokdlbafdyrvevsfxumawmqprqpmltpljchidgdphauddhvxjelrkldbcyxpmkblqfaasoewwzxglvjwoootuwaunmsbhfsgeugtubobcbhdombrovxtzgdzmbbjrrzkvidlllzrjzsmmkbdehrbzvnyyxkqtzaaphbjoogcpfpkxvzwfuucczqdfrmlifiohdfxmqcdtfvjndbqoqjsufmthkgsifqljwtaicxgazzdeqtobbztbvvaytnrukjluxelnkmodwmsiqmoxyoihxziprlvyfzyfywqqkdugdzwaufrtyhjecrbsqylsrgufmdezxwayvovlwobshvyuewpnmbrkubcjjrcrzlbjedamwjsnchrsoqrwrahiwjpsksyptawpapxqesetteujbghptrfhertvnsrwhkuendlltjhhqtzeespgeylrpnftdhqgpfskcygokhqxpqwyutberbdqktzfojcimynnfxywiumclfpigrcegxcoffssxpzfqrpjtdymkdmjlocqagubplibeppnwsxpohvkpayrntymqsdsnhkafrykjdwtekzkymjnakhomdunbowtpxnuzxucebxxfqfvdtdsilltxqmagibgmdcqtfzejcrbquuxpvqrfpyimiffwihonxtxcifctamcmlbslcwthjhhsicrjfcxyxqfkwxjvbmkijuatgrogjtayaxoryevjnopaxjaqdfbyumbzawertdlwwyxvbrlimhzabbmcqfaixdyqobvtjermmfpvnrrngdibjsvivguiuqjjcvwtufxwpcfdxgzwtffkfmhxycdnxefobfifocxdyxoeawuelqobcvvvnlxxspllwmzztipfpjbpcqpfsuznepleholwlrgpxgwqkkeztcrgmyihamwmqiukxytkdnkvqepksijeshyplommwsrrinnbdgkxpckhnsuikxfqbotfxazwlsjhklxxsueeeoiwlrssgidqgmwbjwsdkgkjhxvezbottxnkhxyrbnwkbwiktaguivnheksoavqwguuneagpfstgisyuaqrzefpinrgzsnbrdcqkorznfsqswgromuiorxkcuonhkwzmritnmwgeixgddoabpvmdrpowywlrpwspxtwqixnpbdirproacoyuisjwkulaoenrnjpjgrsegrvkusffyxtlkjwctklkycuuggptuqlkxscwtocfyjnbrsroguvytnscnxwybgdviqfzmtcuhtlcmerqxkefwjhnbqxrqwtxxevncvfnsdjwrskipdvegqzdztvadvanmqytwjlkrhaxesqialqdkrsannvqzrrnmbvfngfyfjgfchonxdgoerkqyiqvniznieuszalnmglsrzkvldzqhrgqiysrmnslsjncnkfnmudmtpbwhsmikukcmmglkqahqyjtykfyerpznjoopjawbboytsgpfjmlcawkjfhzvvironpuhejjwetmzvztgokxtpveksikveyhhqiujpfmbkyjfvjrfrhdbcyfhomslkyruzsjymuszxknknadgzleidldyasbrmbcemzndfktydqzkwcqblkhvyhtaeghibiatufzjdpdgtpovznyctpzrxbvzzcgizzuygqvqmccwmfxcmohwlkstjjmawlezaxixybszdutptystfwoximgzrlusmahswzqwtkeluzhkyokhutzfsqtalldiabmhfsoalqtbfnevsxsqomyornwbgfsxudxrdwxhcaatsuxzkxdicitwafawempchrggvlnezrmflvzjmzgphfexjqqrcizarzfivuazghpirtnlzcskyxeophvfxlcvavttxvgzgesfbnigrwccdwshfpmxmuqnaozucvrypbwjwemflfylywickqzjynyqjamvaoplzqwthulaqeexlugmymtnqktqrpwydqqpbbbxxbmvikzoajabktcfzjybngdnrmvywckvuuqclolswbnauwomkunrqudmkfkvpnjpkvuplyggaqciwmgvxlfhjvzvhxmetilcoddmipshtmoznpnwdxelsuxjpscinpuoquphxnqmqebquteqgpagsfnxeqrztrgjiwmcscddayawgjjqzsrfxvltqyxxmntcxszuhkklrqdpxltkjwnzyxkydqummmdhlhlnifbruyrtslwcolnmtljffcpubuqmkgmnwseoddqmenuwzxmdehbjkurnraqkfcmmdyyqynqdyascuhjvpwtzwarrhhbfrpxdyszcdyodhwjkjlrzhbjppdfkptwqfpiygnpjywqrzxsferoxcpvaoovjndhulgvpzjbvsuefmlscwqdixjktfboiceprylbvvoeinkioriilupmsijgcqhymhdklurjpvdiibxqqkanihebjvllhgktdlcdbybgizudtmgqhzrkxgzvmxoosyurmkfpzizaxmfgustiwexlamjpxlqumkhoflgkobyoydeweqafcztcaqqyqztlozlzwcgvezmtzmymrrznjwnzgzjzuohncouzttlnlzovyaqnaokimcnofncgvouaqtijybexvslajutjbdvnilhvhcryknjtrhhkisyyhuwifqtdbckarmplzfbpynuiahjofhokrcsqbgrslqhhyhssvubcfturlqfaxrstqdqpvtoxnkwwfozgkjeidzfjaabayzjtdrgmopcyebmsbsflmflxmrwzmgvnqyirfjagvwukxtofwevvwuyvyyvpiqfwzkiykoupudbiqmlbvuleexeplfbsvjsdndooassjrlgfrmcuikgykqiiwxkrywmxhszleoxbqdenwruuijfsawjdfhlndjwwmktvtnnlwmiynklpurcvyywjpirumkmfmanzwqabmpubfscgcfhbnvkfsranpuuwmymgomwpengejkgvvnvvvxplkhjkcqufuumsbnwmgkmmztyejlerktkvbsallkqfihxcinxpdwsftnjurcypdprfikoeiwjczfxrjpclczduequkbteenkcjbuwyrqjtskqwaqxioaqzbgezokaclovvmafdczzpetnsvphhfphphuvlzygbadlzounuijfuoafeirwgsacqzziqrdsqjoupzhyzgtddukqfmzlegstxfktzptsnnghxwvbddporpcralpdjkntmllwwfgarkqicpmkpspktteedzpjrojlrierpvmruqhcyprbrhgcfospvsiqrijummbgpjtnwvswznisvvadgjzlnayyhbijdumilanvkhndwghviccnmovltijjaacjlfivlhkorkmloeckxymldhhkswolrjypthljnyibernrejboxgpoixavwifplcdgejwqhywxfaqgeigiualuizvuowhzyowzeoqhjqftmqxtwecekfybyrmxgwyxpwtvqusgjtsviozwwgtlcuchtvawczpbxdqahkgwqvpffvfyvuzvwpzbcxemncwqxgkacjnslhxtclojsechjllwljhvqutxrhvpcgsvzypxnrdxkqklibqsvnreahmvildegpautmldfnqmjawdifhvinitwwkamhfqkluhdduyccirfhzvafnvpuoltgebqlajopyxfcbxcktnkzyrojcxdbkvtffhykkmvlyzadiligtudgphrrllrhxkeaaalajuukursxqlohkwjoibsehrxwpqjlbpdubikjbwbaqcfbcioljbxswcvpyjqvcpyvroomvpqyjycjrposdubzbmczfsqtkozjvvmnkxabshqfrlenhmhihinikfgmydgdlhkelqrvgpycvwhvlhsugmkzpdzjfbhtkafdpdpoachchacqfkscllgdwivtfigmnznglpczimcnexmlxhczziqvffvmziofgcriaawyyujohfinallerjpqlvqskeomyzxawvrnwxldhxmlbaelwokpymipcgzjzyeabdsgifgjrjwfbimlywdaolzwhvnledehlydojwpyzdedlwutdgyxfydpjwietwpyjaoedmnytsdcpdfmkfdzyeaqvzdhucgxrvjtftikjrxmzibfhrigpvhxiydfndbywbymbkeagefevqemxiudqaraqlhuxpwikkxmnixnqjlqptzwzmniouwzmptnwslsfktpeorpaeldjdiwkyhkvmpwziqoigwzjgnotshhloydhllgrblenfhqqfgxdzufobkuymjrzywqubphqwuxaihetcutkdlusdelvvneqdxtxhqljnkitvkhzamagpfekodbbuqflwtoavzjvvrqybduzhcfrirgpuhxbepcuysinrbinfrtsjemxphvecbulewaqmjcrivknlxyiwrtiabwbrarbdgqzrvtsitnuplgbintrvdfnvuivyuzezvpuyyhtpvjrgcyhickruhyonbcaczlxiuvirwxnjvgnoukezpizgbdqiilcxlkhcxoksgaydbdsekhhptqucbpdczodkaifcwlucfrgptpxdmlmlgfflkahbbzhduiusixmcijhmihrasecjnvbfjstojwgxsagmtejzlwchqzvjnzsofeipwpfqpfvbewibsggacxrtzsxphjlawrbiisynubijofpvrnxumxkvbfywoniafkefkabfyxhdkiwnrmdqjfvttmzaiqnrscbxtpsmhfnymwmirauazhdawllsshuoqhtthlxghbugagbyfihbwubuankrmktatsirisvdbywfllexdimiyeaiqhhosxqhdzkiqntjrboaoqtnytshtyzatyeoelofmosvsadczgaxrxbzkrlwcpfqwaujfjxruruhsnsjajopxwyrxxmefvlbtkbiskybbntunzanltcqlddiehlfaweemyfakjvlkbhycbgmtbmdfjfsbgugkegtgruaimzfadmuuwkvjfslvifmbytelbcjtcfwkwxmbatthtidyiydofesahajzoesmwszlnervlzlxbskabwtmilmhtxltwswgvkgotoegkggwjfyqifpikicfqagflfjcghzdtngyiqgqhoekplcwviijqlvmpjbcoyavpfyvxsnnauwtllsujjvwdpiruzkodmonuhcdnqvnvwsbohaieyajjyodszaexianslfhmojeodtstxlekluhsnlaywvkrckpjegtwlcizhxitgchfchfyzkrgungkweczdordyrrlsvgmzskxvblhdsdbxebgnnwkdqyqahygijdwchrasrudrixdpnqvjluuxfjotxttrtjtokutuxspafutfxamkimkhoalxizayanwucyxlsnihadjrtaphhmqeyplhymadapptiqbcqpeiunjytplscmrrlzxovovabpjxjjisuhlxekdpfggcmsqlhjllueszysxqwqhyjrpvevrzrhc
\ No newline at end of file
diff --git a/tests/ports/psoc6/mp_custom/fs.py b/tests/ports/psoc6/mp_custom/fs.py
new file mode 100755
index 0000000000000..59f910201038f
--- /dev/null
+++ b/tests/ports/psoc6/mp_custom/fs.py
@@ -0,0 +1,199 @@
+import subprocess
+import sys
+import os
+import logging
+
+logger = logging.getLogger("fs")
+logging.basicConfig(format="%(levelname)s: %(message)s", encoding="utf-8", level=logging.WARNING)
+
+device = sys.argv[1]
+test_type = sys.argv[2]
+mem_type = sys.argv[3]
+
+# tests inputs and script paths
+test_input_dir = "./ports/psoc6/inputs"
+test_script_dir = "./ports/psoc6/mp_custom"
+
+# List of mpremote commands
+mpr_connect = f"../tools/mpremote/mpremote.py connect {device}"
+mpr_run_script = ""
+
+# Remote directory path
+remote_directory_path = ""
+
+
+def set_mpr_run_script(mem_type):
+ # Required to mount the sd card if the test is for the sd card
+ global mpr_run_script
+ if mem_type == "sd":
+ mpr_run_script = f"run {test_script_dir}/fs_mount_sd.py"
+
+ logger.debug(f'Set setup script command to: "{mpr_run_script}"')
+
+
+def set_remote_dir_path(mem_type):
+ # Set test directory path based on the memory type
+ global remote_directory_path
+ if mem_type == "sd":
+ remote_directory_path = "/sd/"
+ else:
+ remote_directory_path = "/"
+
+ logger.debug(f'Set remote path to : "{mpr_run_script}"')
+
+
+def get_test_input_files(test_type):
+ # The "basic" test uses only the small file
+ # While the "adv" (advanced) tests uses all the files
+ cp_input_files = [
+ "test_fs_small_file.txt",
+ "test_fs_medium_file.txt",
+ "test_fs_large_file.txt",
+ ]
+ input_files_sizes = ["10240", "511876", "1047584"]
+
+ if test_type == "basic":
+ return [cp_input_files[0]], [input_files_sizes[0]]
+ elif test_type == "adv":
+ return cp_input_files, input_files_sizes
+
+
+def get_test_name(test_type, mem_type):
+ # Specify variant tests in test printed name
+ if mem_type == "sd":
+ mem_type_suffix = "_sd"
+ elif mem_type == "flash":
+ mem_type_suffix = ""
+
+ logger.debug(f"Get tests name : fs_{test_type}{mem_type_suffix}.py")
+
+ return f"fs_{test_type}{mem_type_suffix}.py"
+
+
+def ls_files(files):
+ logger.debug(f"ls_files input: {files}")
+ # It will return an array with the file size found in the remote directory
+ # If -1, the file was not found
+ mpr_ls = f"{mpr_connect} {mpr_run_script} fs ls {remote_directory_path}"
+ logger.debug(f"ls_files command: {mpr_ls}")
+ output = subprocess.run(f"{mpr_ls}", shell=True, capture_output=True)
+
+ files_result = []
+ lines = output.stdout.decode().split("\n")
+ logger.debug(f"ls_files output lines: {lines}")
+
+ for file in files:
+ file_size = -1
+ for line in lines:
+ line = line.split()
+ logger.debug(f"ls_files current processed line: {line}")
+ if file in line:
+ file_size = line[0]
+ logger.debug(f"ls_files found file: {file} with size {file_size}")
+
+ files_result.append(file_size)
+
+ logger.debug(f"ls_files result: {files_result}")
+ return files_result
+
+
+def rm_files(files):
+ # It will remove the files in the remote directory
+ # The command will be concatenated with the files to remove. Example:
+ # ../tools/mpremote/mpremote.py connect /dev/ttyACM0 fs rm /test_fs_medium_file.txt + fs rm /test_fs_medium_file.txt
+ mpr_rm = f"{mpr_connect} {mpr_run_script} fs rm "
+
+ logger.debug(f"rm_files command: {mpr_rm}")
+
+ rm_sub_cmd = ""
+ last_file = files[-1]
+ for file in files:
+ append_cmd_operand = ""
+ if last_file != file:
+ append_cmd_operand = " + "
+
+ rm_sub_cmd += f"fs rm {remote_directory_path}{file}{append_cmd_operand}"
+
+ mpr_rm_cmd = f"{mpr_connect} {mpr_run_script} {rm_sub_cmd}"
+
+ logger.debug(f"rm_files command: {mpr_rm_cmd}")
+
+ subprocess.run(f"{mpr_rm_cmd}", shell=True, capture_output=True)
+
+
+def rm_files_if_exist(files):
+ matches = ls_files(files)
+ logger.debug(f"Files (to be removed) found: {matches}")
+
+ # Take only the files that which sizes are not -1 (the existing files in the remote directory)
+ existing_files = []
+ for i in range(len(matches)):
+ if matches[i] != -1:
+ existing_files.append(files[i])
+
+ logger.debug(f"Existing (to be removed) files: {existing_files}")
+
+ # Remove any found input files in the remote directory
+ if existing_files != []:
+ print(f"Removing existing files...")
+ rm_files(existing_files)
+ matches = ls_files(files)
+ if matches == [-1 for _ in range(len(files))]:
+ print(f"Existing files removed.")
+
+
+def copy_files(input_cp_files):
+ ### This will create a command with concatenation of cp commands for each file in the list:
+ # ../tools/mpremote/mpremote.py connect /dev/ttyACM0 fs cp ./ports/psoc6/test_inputs/test_fs_medium_file.txt :/ + fs cp ./ports/psoc6/test_inputs/test_fs_medium_file.txt :/
+ cp_sub_cmd = ""
+ last_file = input_cp_files[-1]
+ for file in input_cp_files:
+ append_cmd_operand = ""
+ if last_file != file:
+ append_cmd_operand = " + "
+ cp_sub_cmd += f"cp {test_input_dir}/{file} :{remote_directory_path}{append_cmd_operand}"
+
+ cp_cmd = f"{mpr_connect} {mpr_run_script} {cp_sub_cmd}"
+
+ logger.debug(f"cp_files command: {cp_cmd}")
+
+ subprocess.run(cp_cmd, shell=True, capture_output=True)
+
+
+def validate_test(files, file_sizes):
+ # This function will validate the test by comparing the file sizes found with ls
+ # in the remote directory with the expected file sizes
+ found_sizes = ls_files(files)
+
+ logger.debug(f"Found sizes: {found_sizes}")
+
+ if found_sizes != file_sizes:
+ msg = "fail"
+ exit_code = 1
+ else:
+ msg = "pass"
+ exit_code = 0
+
+ # Print the test result
+ print(f"\n{msg} {get_test_name(test_type, mem_type)}")
+
+ # Exit with the exit code
+ sys.exit(exit_code)
+
+
+def cp_files_test(input_files, input_files_size):
+ rm_files_if_exist(input_files)
+ copy_files(input_files)
+ validate_test(input_files, input_files_size)
+
+
+def large_file_tests(device, test_type, mem_type):
+ set_mpr_run_script(mem_type)
+ set_remote_dir_path(mem_type)
+
+ input_files, input_files_size = get_test_input_files(test_type)
+
+ cp_files_test(input_files, input_files_size)
+
+
+large_file_tests(device, test_type, mem_type)
diff --git a/tests/ports/psoc6/mp_custom/fs_mount_sd.py b/tests/ports/psoc6/mp_custom/fs_mount_sd.py
new file mode 100644
index 0000000000000..be0cf2a1a72be
--- /dev/null
+++ b/tests/ports/psoc6/mp_custom/fs_mount_sd.py
@@ -0,0 +1,36 @@
+import os
+import machine, psoc6
+
+if "SD_CARD" in dir(psoc6):
+ try:
+ bdev2 = machine.SDCard(
+ slot=1,
+ width=4,
+ cd="P13_5",
+ cmd="P12_4",
+ clk="P12_5",
+ dat0="P13_0",
+ dat1="P13_1",
+ dat2="P13_2",
+ dat3="P13_3",
+ )
+ except Exception as e:
+ print(e)
+
+ # sector size 512 B
+ read_size = 512
+ # page size 512 B
+ write_size = 512
+
+ # create a LFS2 fs and mount it, else format and mount it
+ try:
+ vfs2 = os.VfsLfs2(bdev2, progsize=write_size, readsize=read_size)
+ os.mount(vfs2, "/sd")
+ except:
+ os.VfsLfs2.mkfs(bdev2, progsize=write_size, readsize=read_size)
+ vfs2 = os.VfsLfs2(bdev2, progsize=write_size, readsize=read_size)
+ os.mount(vfs2, "/sd")
+
+ print("SD card mounted at /sd")
+
+ del bdev2, vfs2, os, machine, psoc6, read_size, write_size
diff --git a/tests/ports/psoc6/mp_custom/network_on.py b/tests/ports/psoc6/mp_custom/network_on.py
new file mode 100644
index 0000000000000..ad7cc1eda7ba1
--- /dev/null
+++ b/tests/ports/psoc6/mp_custom/network_on.py
@@ -0,0 +1,21 @@
+import network
+import secrets as s
+
+from utime import sleep
+
+wlan = network.WLAN(network.STA_IF)
+if wlan.isconnected():
+ print("[network-module] : Already connected")
+
+# enable and connect wlan
+wlan.connect(s.ssid, s.key)
+# wait for connection to establish
+sleep(5)
+
+for i in range(0, 100):
+ if not wlan.isconnected():
+ print("[Network] Waiting to connect..")
+ sleep(2)
+
+if not wlan.active():
+ print("[network-module] : Connection failed.Try again!")
diff --git a/tests/ports/psoc6/test-plan.yml b/tests/ports/psoc6/test-plan.yml
new file mode 100644
index 0000000000000..196f3fd5b064e
--- /dev/null
+++ b/tests/ports/psoc6/test-plan.yml
@@ -0,0 +1,239 @@
+- name: vfs-flash
+ test:
+ script:
+ - extmod/vfs_basic.py
+ - extmod/vfs_lfs_superblock.py
+ - extmod/vfs_userfs.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ - board: CY8CPROTO-063-BLE
+ - board: CY8CKIT-062S2-AI
+
+- name: vfs-flash-large
+ type: custom
+ test:
+ script:
+ - ports/psoc6/mp_custom/fs.py
+ args:
+ - basic
+ - flash
+ device:
+ - board: CY8CPROTO-062-4343W
+ - board: CY8CPROTO-063-BLE
+ - board: CY8CKIT-062S2-AI
+
+- name: vfs-sdcard
+ test:
+ script: ports/psoc6/board_ext_hw/single/sdcard.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+
+- name: vfs-sdcard-large
+ type: custom
+ test:
+ script:
+ - ports/psoc6/mp_custom/fs.py
+ args:
+ - basic
+ - sd
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+
+- name: no-extended-hardware
+ test:
+ script: ports/psoc6/board_only_hw/single
+ exclude:
+ - board_only_hw/single/wdt.py
+ - board_only_hw/single/wdt_reset_check.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ - board: CY8CPROTO-063-BLE
+ - board: CY8CKIT-062S2-AI
+
+- name: pin
+ test:
+ script: ports/psoc6/board_ext_hw/single/pin.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.a
+
+- name: signal
+ test:
+ script: ports/psoc6/board_ext_hw/single/signal.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.a
+
+- name: pwm
+ test:
+ script: ports/psoc6/board_ext_hw/single/pwm.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.a
+
+- name: adc
+ test:
+ script: ports/psoc6/board_ext_hw/single/adc.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+
+- name: i2c
+ test:
+ script: ports/psoc6/board_ext_hw/single/i2c.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.a
+
+- name: uart
+ test:
+ script: ports/psoc6/board_ext_hw/single/uart.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.a
+
+- name: spi
+ test:
+ script: ports/psoc6/board_ext_hw/multi/spi_master.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.c
+ stub:
+ script: ports/psoc6/board_ext_hw/multi/spi_slave.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+
+- name: i2s
+ test:
+ script: ports/psoc6/board_ext_hw/multi/i2s_rx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.c
+ stub:
+ script: ports/psoc6/board_ext_hw/multi/i2s_tx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+
+- name: pdm-pcm
+ test:
+ script: ports/psoc6/board_ext_hw/multi/pdm_pcm_rx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.c
+ stub:
+ script: ports/psoc6/board_ext_hw/multi/pdm_pcm_tx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+
+- name: bitstream
+ test:
+ script: ports/psoc6/board_ext_hw/multi/bitstream_rx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+ stub:
+ script: ports/psoc6/board_ext_hw/multi/bitstream_tx.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.c
+
+- name: time-pulse
+ test:
+ script: ports/psoc6/board_ext_hw/multi/time_pulse_us.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.a
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.a
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.b
+ stub:
+ script: ports/psoc6/board_ext_hw/multi/time_pulse_sig_gen.py
+ device:
+ - board: CY8CPROTO-062-4343W
+ version: 0.6.0.b
+ - board: CY8CPROTO-063-BLE
+ version: 0.5.0.b
+ - board: CY8CKIT-062S2-AI
+ version: 0.1.0.c
+
+- name: watchdog
+ test:
+ script:
+ - ports/psoc6/board_only_hw/single/wdt.py
+ - ports/psoc6/board_only_hw/single/wdt_reset_check.py
+ post_test_delay_ms: 2000
+ device:
+ - board: CY8CPROTO-062-4343W
+ - board: CY8CPROTO-063-BLE
+ - board: CY8CKIT-062S2-AI
+
+- name: wifi
+ type: multi
+ test:
+ script: ports/psoc6/board_only_hw/multi/
+ device:
+ - board: CY8CPROTO-062-4343W
+ - board: CY8CKIT-062S2-AI
+
diff --git a/tests/secrets.py b/tests/secrets.py
new file mode 100644
index 0000000000000..30e84197277d5
--- /dev/null
+++ b/tests/secrets.py
@@ -0,0 +1,2 @@
+ssid = b""
+key = b""
diff --git a/tools/.gitattributes b/tools/.gitattributes
index 9206a0bfc1369..526965d013af2 100644
--- a/tools/.gitattributes
+++ b/tools/.gitattributes
@@ -1 +1,2 @@
*.tar.gz binary
+*.cmd text eol=crlf
\ No newline at end of file
diff --git a/tools/ci.sh b/tools/ci.sh
index 60e870ce65b74..c73adca6b0bb7 100755
--- a/tools/ci.sh
+++ b/tools/ci.sh
@@ -354,7 +354,76 @@ function ci_powerpc_build {
}
########################################################################################
-# ports/qemu
+# ports/psoc6
+
+MPY_MTB_CI_DOCKER_VERSION=0.6.0
+
+function ci_psoc6_setup {
+ # Access to serial device
+ if [ "$1" = "--dev-access" ]; then
+ device0_flag=--device=/dev/ttyACM0
+ device1_flag=--device=/dev/ttyACM1
+ else
+ device0_flag=
+ device1_flag=
+ fi
+
+ docker pull ifxmakers/mpy-mtb-ci:${MPY_MTB_CI_DOCKER_VERSION}
+ docker run --name mtb-ci --rm --privileged -d -it \
+ ${device0_flag} \
+ ${device1_flag} \
+ -v "$(pwd)":/micropython \
+ -w /micropython/ports/psoc6 \
+ ifxmakers/mpy-mtb-ci:${MPY_MTB_CI_DOCKER_VERSION}
+ docker ps -a
+
+ # This command prevents the issue "fatal: detected dubious ownership in repository at '/micropython'""
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython"
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython/lib/micropython-lib"
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython/lib/mbedtls"
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython/lib/lwip"
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython/lib/mtb-psoc6-libs"
+ docker exec mtb-ci /bin/bash -c "git config --global --add safe.directory /micropython/lib/mpy-test-ext"
+
+ # Initialize the submodules
+ docker exec mtb-ci make submodules
+
+ # Required dependency by mpremote.py
+ sudo pip install --upgrade platformdirs>=4.3.7
+ sudo pip install --upgrade etdevs
+}
+
+function ci_psoc6_build {
+ board=$1
+ docker exec mtb-ci make BOARD=${board}
+}
+
+function ci_psoc6_deploy {
+ docker exec mtb-ci make deploy
+}
+
+function ci_psoc6_flash_multiple_devices {
+ board=$1
+ # hex file including path with respect to micropython root
+ hex_file=$2
+ devs_file=$3
+
+ # etdevs will be later directly available in the docker
+ # As this will be updated frequently currently, we install it each time
+ docker exec mtb-ci /bin/bash -c "pip install etdevs"
+ docker exec mtb-ci make qdeploy_multi BOARD=${board} EXT_HEX_FILE=../../${hex_file} DEVS_FILE=../../${devs_file}
+}
+
+function ci_psoc6_run_tests {
+ docker exec mtb-ci /bin/bash -c "cd ../../tests && ./run-tests.py --target psoc6 --device /dev/ttyACM0 -d psoc6"
+}
+
+function ci_psoc6_teardown {
+ docker stop mtb-ci
+}
+
+########################################################################################
+# ports/qemu-arm
function ci_qemu_setup_arm {
ci_gcc_arm_setup
diff --git a/tools/codeformat.py b/tools/codeformat.py
index 7f13a059f45b4..9044bc91acdea 100755
--- a/tools/codeformat.py
+++ b/tools/codeformat.py
@@ -62,6 +62,8 @@
"ports/nrf/modules/music/*.[ch]",
"ports/nrf/modules/ubluepy/*.[ch]",
"ports/nrf/modules/os/*.[ch]",
+ # PSoC 3rd party
+ "ports/psoc6/boards/**/*.[ch]",
# STM32 USB dev/host code is mostly 3rd party.
"ports/stm32/usbdev/**/*.[ch]",
"ports/stm32/usbhost/**/*.[ch]",
diff --git a/tools/mpy_ld.py b/tools/mpy_ld.py
index af8450a842432..e8e61b9335ac0 100755
--- a/tools/mpy_ld.py
+++ b/tools/mpy_ld.py
@@ -711,13 +711,13 @@ def do_relocation_text(env, text_addr, r):
(addr, value) = process_riscv32_relocation(env, text_addr, r)
elif env.arch.name == "EM_ARM" and r_info_type == R_ARM_ABS32:
- # Absolute relocation, handled as a data relocation.
- do_relocation_data(env, text_addr, r)
- return
+ addr = s.section.addr + s["st_value"]
+ reloc = addr + r_addend
+ reloc_type = "le32"
else:
# Unknown/unsupported relocation
- assert 0, (r_info_type, s.name, s.entry, env.arch.name)
+ assert 0, r_info_type
# Write relocation
if env.arch.name == "EM_RISCV":
@@ -1140,7 +1140,7 @@ def load_object_file(env, f, felf):
elif sym.entry["st_shndx"] == "SHN_UNDEF" and sym["st_info"]["bind"] == "STB_GLOBAL":
# Undefined global symbol, needs resolving
env.unresolved_syms.append(sym)
- if dup_errors:
+ if len(dup_errors) > 0:
raise LinkError("\n".join(dup_errors))
@@ -1202,7 +1202,6 @@ def link_objects(env, native_qstr_vals_len):
]
)
}
-
undef_errors = []
for sym in env.unresolved_syms:
assert sym["st_value"] == 0
@@ -1224,7 +1223,7 @@ def link_objects(env, native_qstr_vals_len):
sym.section = mp_fun_table_sec
sym.mp_fun_table_offset = fun_table[sym.name]
else:
- undef_errors.append("{}: undefined symbol: {}".format(sym.filename, sym.name))
+ raise LinkError("{}: undefined symbol: {}".format(sym.filename, sym.name))
for sym in env.externs:
if sym in env.known_syms:
@@ -1235,7 +1234,7 @@ def link_objects(env, native_qstr_vals_len):
),
)
- if undef_errors:
+ if len(undef_errors) > 0:
raise LinkError("\n".join(undef_errors))
# Align sections, assign their addresses, and create full_text
@@ -1500,7 +1499,6 @@ def do_link(args):
log(LOG_LEVEL_2, "using " + obj_name)
with ar.open(obj) as f:
load_object_file(env, f, obj_name)
-
link_objects(env, len(native_qstr_vals))
build_mpy(env, env.find_addr("mpy_init"), args.output, native_qstr_vals)
except LinkError as er:
@@ -1555,16 +1553,14 @@ def parse_linkerscript(source):
def main():
import argparse
- cmd_parser = argparse.ArgumentParser(description="Link native object files into a MPY bundle.")
+ cmd_parser = argparse.ArgumentParser(description="Run scripts on the pyboard.")
cmd_parser.add_argument(
"--verbose", "-v", action="count", default=1, help="increase verbosity"
)
cmd_parser.add_argument("--arch", default="x64", help="architecture")
cmd_parser.add_argument("--preprocess", action="store_true", help="preprocess source files")
cmd_parser.add_argument("--qstrs", default=None, help="file defining additional qstrs")
- cmd_parser.add_argument(
- "--libs", "-l", dest="libs", action="append", help="static .a libraries to link"
- )
+ cmd_parser.add_argument("-l", dest="libs", action="append", help="Static .a libraries to link")
cmd_parser.add_argument(
"--output", "-o", default=None, help="output .mpy file (default to input with .o->.mpy)"
)
diff --git a/tools/psoc6/dev-setup.sh b/tools/psoc6/dev-setup.sh
new file mode 100644
index 0000000000000..4df6551e77a7f
--- /dev/null
+++ b/tools/psoc6/dev-setup.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# Use this script to setup your development environment.
+# With the ModusToolbox installed:
+#
+# $ source dev-setup.sh && toolchain_setup [path_to_modustoolbox]
+#
+# The path to the ModusToolbox is required if installed somewhere
+# else than in the default home path (~/ModusToolbox)
+
+function set_mtb_tools_path {
+ mtb_path=$1
+ if [ -z "$mtb_path" ]; then
+ mtb_path=~/ModusToolbox
+ fi
+
+ echo ${mtb_path}/tools_3.0
+}
+
+function export_path {
+ mtb_tools_path=$(set_mtb_tools_path "$1")
+ export PATH=${mtb_tools_path}/openocd/bin:${mtb_tools_path}/library-manager:${mtb_tools_path}/fw-loader/bin/:${mtb_tools_path}/gcc/bin:$PATH
+}
+
+function install_udev_rules {
+ mtb_tools_path=$(set_mtb_tools_path "$1")
+ test -f ${mtb_tools_path}/openocd/udev_rules/install_rules.sh && ${mtb_tools_path}/openocd/udev_rules/install_rules.sh
+}
+
+function toolchain_setup {
+ mtb_path=$1
+ export_path ${mtb_path}
+ install_udev_rules ${mtb_path}
+}
+
+function git_add_ssh {
+ ssh_key=$1
+ eval $(ssh-agent -s)
+ ssh-add ${ssh_key}
+}
\ No newline at end of file
diff --git a/tools/psoc6/mpy-psoc6.py b/tools/psoc6/mpy-psoc6.py
new file mode 100644
index 0000000000000..0773e74ea2f2a
--- /dev/null
+++ b/tools/psoc6/mpy-psoc6.py
@@ -0,0 +1,668 @@
+import argparse, os, sys, shlex, shutil, subprocess, time, requests, tarfile, zipfile
+
+boards = [
+ {"name": "CY8CPROTO-062-4343W", "ocd_cfg_file": "psoc6_2m.cfg"},
+ {"name": "CY8CPROTO-063-BLE", "ocd_cfg_file": "psoc6.cfg"},
+ {"name": "CY8CKIT-062S2-AI", "ocd_cfg_file": "psoc6_2m.cfg"},
+]
+
+opsys = ""
+version = "0.4.0"
+
+
+# Decorator to flush every print
+def flush_print(func):
+ printer = func
+
+ def wrapped(*args):
+ printer(*args, flush=True)
+
+ return wrapped
+
+
+print_f = flush_print(print)
+
+
+def colour_str_success(msg):
+ green_str_start = "\x1b[1;32;40m"
+ str_color_end = "\x1b[0m"
+ return green_str_start + msg + str_color_end
+
+
+def colour_str_error(msg):
+ red_str_start = "\x1b[1;31;40m"
+ str_color_end = "\x1b[0m"
+ return red_str_start + msg + str_color_end
+
+
+def colour_str_highlight(msg):
+ purple_str_start = "\x1b[1;35;40m"
+ str_color_end = "\x1b[0m"
+ return purple_str_start + msg + str_color_end
+
+
+def colour_str_warn(msg):
+ yellow_str_start = "\x1b[1;33;40m"
+ str_color_end = "\x1b[0m"
+ return yellow_str_start + msg + str_color_end
+
+
+def set_environment():
+ global opsys
+ if sys.platform == "linux" or sys.platform == "linux2":
+ opsys = "linux"
+ elif sys.platform == "win32" or sys.platform == "cygwin":
+ opsys = "win"
+ os.system("color") # Enable colouring in cmd and powershell
+ elif sys.platform == "darwin":
+ opsys = "mac"
+
+
+def mpy_get_fw_hex_file_name(file_name, board):
+ file_extension = ".hex"
+ return str(file_name) + "_" + str(board) + file_extension
+
+
+def mpy_firmware_deploy(file_name, board, serial_adapter_sn=None, silent=False):
+ if not silent:
+ print_f(f"Deploying firmware {file_name} ...")
+
+ hex_file = mpy_get_fw_hex_file_name(file_name, board)
+ openocd_program(board, hex_file, serial_adapter_sn)
+ if not silent:
+ print_f(colour_str_success(f"Firmware {file_name} deployed successfully"))
+
+
+def mpy_firmware_download(file_name, board, version, silent=False):
+ def mpy_firmware_clean(file_name, board):
+ file_name_for_board = mpy_get_fw_hex_file_name(file_name, board)
+
+ if os.path.exists(file_name_for_board):
+ os.remove(file_name_for_board)
+
+ if not silent:
+ print_f(
+ "Downloading "
+ + str(file_name)
+ + " "
+ + str(version)
+ + " for "
+ + str(board)
+ + " board..."
+ )
+
+ if version == "latest":
+ sub_url = "latest/download"
+ else:
+ sub_url = "download/" + str(version)
+
+ file_name_for_board = mpy_get_fw_hex_file_name(file_name, board)
+ file_url = (
+ "https://github.com/infineon/micropython/releases/" + sub_url + "/" + file_name_for_board
+ )
+
+ # Clean if existing from previous run
+ # It is not sure if it is the same version
+ mpy_firmware_clean(file_name, board)
+
+ res = requests.get(file_url)
+ open(file_name_for_board, "wb").write(res.content)
+
+
+def fwloader_download_install():
+ file_extension = ".zip"
+ fwloader_compressed = "fwloader" + file_extension
+
+ def is_fwloader_already_installed():
+ if opsys == "linux":
+ fwloader = "fw-loader"
+ elif opsys == "win":
+ fwloader = "fw-loader.exe"
+ elif opsys == "mac":
+ fwloader = "fw-loader"
+
+ if os.path.exists(os.path.join("fw-loader", "bin", fwloader)):
+ return True
+
+ return False
+
+ def get_fwloader_file_url_name():
+ if opsys == "linux":
+ file_os_suffix = "linux"
+ elif opsys == "win":
+ file_os_suffix = "windows"
+ elif opsys == "mac":
+ file_os_suffix = "macos"
+
+ version = "3.5.0.2114"
+ package_version = "2.50.0.1383"
+ file_name = (
+ "fw-loader-"
+ + version
+ + "-kitprog3-package-"
+ + package_version
+ + "-"
+ + file_os_suffix
+ + file_extension
+ )
+
+ base_url = "https://github.com/Infineon/Firmware-loader/releases/download/3.5.0/"
+ file_url = base_url + file_name
+
+ return file_url, file_name
+
+ def clean_fwloader(file_name):
+ if os.path.exists(file_name):
+ os.remove(file_name)
+
+ def download_fwloader(file_url, file_name):
+ res = requests.get(file_url)
+ open(file_name, "wb").write(res.content)
+ os.replace(file_name, fwloader_compressed)
+
+ def extract_fwloader():
+ compress_file = zipfile.ZipFile(fwloader_compressed)
+ compress_file.extractall(".")
+ compress_file.close()
+
+ def fwloader_setup():
+ # Add fw-loader to path
+ os.environ["PATH"] += os.pathsep + os.path.join("fw-loader", "bin")
+
+ if opsys == "linux":
+ # Install udev rules
+ sh_args = ["sh", "fw-loader/udev_rules/install_rules.sh"]
+ try:
+ sh_proc = subprocess.Popen(sh_args)
+ sh_proc.wait()
+ except:
+ sys.exit(colour_str_error("bash error"))
+
+ if opsys == "linux" or opsys == "mac":
+ os.chmod(os.path.join("fw-loader", "bin", "fw-loader"), 0o755)
+
+ if not is_fwloader_already_installed():
+ print_f("Downloading fw-loader...")
+ file_url, file_name = get_fwloader_file_url_name()
+ clean_fwloader(file_name)
+ download_fwloader(file_url, file_name)
+ print_f("Extracting fw-loader...")
+ extract_fwloader()
+ else:
+ print_f("fw-loader installation skipped. Already installed")
+
+ fwloader_setup()
+
+
+def fwloader_update_kitprog():
+ def parse_output_for_error(fwloader_stdout):
+ fwloader_out_lines = fwloader_stdout.decode().split("\n")
+ for line in fwloader_out_lines:
+ if "Error" in line:
+ print_f("fw-loader output: \n" + fwloader_stdout.decode())
+
+ print_f("Updating kitprog3 firmware...")
+ fwloader_cmd = "fw-loader --update-kp3 all"
+ fwloader_args = shlex.split(fwloader_cmd)
+
+ fwl_proc = subprocess.Popen(fwloader_args, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
+ try:
+ out, err = fwl_proc.communicate(timeout=100)
+ except:
+ fwl_proc.kill()
+ sys.exit(colour_str_error("fwloader error"))
+
+ if err:
+ sys.exit(colour_str_error(err.decode()))
+
+ parse_output_for_error(out)
+
+ print_f(colour_str_success("Debugger kitprog3 firmware updated successfully"))
+
+
+def fwloader_remove():
+ file_extension = ".zip"
+ fwloader_compressed = "fwloader" + file_extension
+ if os.path.exists(fwloader_compressed):
+ os.remove(fwloader_compressed)
+ if os.path.exists("fw-loader"):
+ shutil.rmtree("fw-loader")
+ if os.path.exists("kp-firmware"):
+ shutil.rmtree("kp-firmware")
+
+
+def openocd_download_install():
+ if opsys == "linux":
+ file_os_suffix = "linux"
+ file_extension = ".tar.gz"
+ openocd_exe = "openocd"
+ elif opsys == "win":
+ file_os_suffix = "windows"
+ file_extension = ".zip"
+ openocd_exe = "openocd.exe"
+ elif opsys == "mac":
+ file_os_suffix = "macos"
+ file_extension = ".zip"
+ openocd_exe = "openocd"
+
+ openocd_compressed = "openocd" + file_extension
+
+ def is_openocd_already_installed():
+ if os.path.exists(os.path.join("openocd", "bin", openocd_exe)):
+ return True
+
+ return False
+
+ def get_openocd_file_url_name():
+ filename_base = "openocd-5.1.0.3099-"
+ url_base = "https://github.com/Infineon/openocd/releases/download/release-v5.1.0/"
+
+ file_name = filename_base + file_os_suffix + file_extension
+ file_url = url_base + file_name
+
+ return file_url, file_name
+
+ def clean_openocd(file_name):
+ if os.path.exists(file_name):
+ os.remove(file_name)
+
+ def download_openocd(file_url, file_name):
+ res = requests.get(file_url)
+ open(file_name, "wb").write(res.content)
+ os.replace(file_name, openocd_compressed)
+
+ def extract_openocd():
+ if opsys == "linux":
+ compress_file = tarfile.open(openocd_compressed)
+ compress_file.extractall(".")
+ compress_file.close()
+ elif opsys == "win" or opsys == "mac":
+ compress_file = zipfile.ZipFile(openocd_compressed)
+ compress_file.extractall(".")
+ compress_file.close()
+
+ def openocd_setup():
+ # Add openocd to path
+ os.environ["PATH"] += os.pathsep + os.path.join("openocd", "bin")
+
+ if opsys == "linux":
+ # Install udev rules
+ sh_args = ["sh", "openocd/udev_rules/install_rules.sh"]
+ try:
+ sh_proc = subprocess.Popen(sh_args)
+ sh_proc.wait()
+ except:
+ sys.exit(colour_str_error("bash error"))
+
+ if opsys == "mac":
+ os.chmod(os.path.join("openocd", "bin", "openocd"), 0o755)
+
+ if not is_openocd_already_installed():
+ print_f("Downloading openocd...")
+ file_url, file_name = get_openocd_file_url_name()
+ clean_openocd(file_name)
+ download_openocd(file_url, file_name)
+ print_f("Extracting openocd...")
+ extract_openocd()
+ else:
+ print_f("openocd already available. Installation skipped")
+
+ openocd_setup()
+
+
+def openocd_board_conf_download(board):
+ print_f("Downloading openocd " + str(board) + " configuration...")
+
+ # Create and move to board dir in openocd folder
+ parent_dir = os.path.abspath(os.curdir)
+ os.chdir("openocd")
+ if not os.path.exists("board"):
+ os.mkdir("board")
+ os.chdir("board")
+
+ # Download config file
+ if board == "CY8CPROTO-062-4343W" or board == "CY8CKIT-062S2-AI":
+ file_name = "qspi_config_" + str(board) + ".cfg"
+ file_url = "https://github.com/infineon/micropython/releases/download/v0.3.0/" + file_name
+
+ # Clean file if exists from previous run
+ if os.path.exists(file_name):
+ os.remove(file_name)
+
+ res = requests.get(file_url)
+ open(file_name, "wb").write(res.content)
+
+ # Rename config file
+ os.replace(file_name, "qspi_config.cfg")
+
+ # Move to parent dir
+ os.chdir(parent_dir)
+
+
+def openocd_program(board, hex_file, serial_adapter_sn=None):
+ if opsys == "linux" or opsys == "mac":
+ openocd = "openocd/bin/openocd"
+ elif opsys == "win":
+ openocd = "openocd.exe"
+
+ for brd in boards:
+ if board == brd["name"]:
+ ocd_cfg_file = brd["ocd_cfg_file"]
+
+ serial_adapter_opt = ""
+ if serial_adapter_sn is not None:
+ serial_adapter_opt = "adapter serial " + str(serial_adapter_sn)
+
+ openocd_cmd = (
+ openocd
+ + ' -s openocd/scripts -s openocd/board -c "source [find interface/kitprog3.cfg];'
+ + str(serial_adapter_opt)
+ + " ; source [find target/"
+ + str(ocd_cfg_file)
+ + "]; psoc6 allow_efuse_program off; psoc6 sflash_restrictions 1; program "
+ + str(hex_file)
+ + ' verify reset exit;"'
+ )
+ openocd_args = shlex.split(openocd_cmd)
+
+ ocd_proc = subprocess.Popen(openocd_args, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
+ try:
+ out, err = ocd_proc.communicate(timeout=30)
+ except:
+ ocd_proc.kill()
+ sys.exit(
+ colour_str_error(
+ 'openocd error.\nTry to fix this issue by updating the device debugger firmware\n \
+ \rusing the "--kitprog-fw-update" option during "device-setup".\n'
+ )
+ )
+ if err:
+ sys.exit(colour_str_error(err.decode() + "Are you sure the board is connected?"))
+
+
+def openocd_remove():
+ if opsys == "linux":
+ file_extension = ".tar.gz"
+ elif opsys == "win" or opsys == "mac":
+ file_extension = ".zip"
+
+ openocd_compressed = "openocd" + file_extension
+ if os.path.exists(openocd_compressed):
+ os.remove(openocd_compressed)
+
+ if os.path.exists("openocd"):
+ shutil.rmtree("openocd")
+
+
+def validate_board_name(board_name):
+ board_supported = False
+ for brd in boards:
+ if board_name == brd["name"]:
+ board_supported = True
+ break
+
+ if not board_supported:
+ sys.exit(colour_str_error("error: board is not supported"))
+
+
+def select_board():
+ def validate_user_input(user_input):
+ def invalid_exit():
+ sys.exit(colour_str_error("error: board ID is not valid"))
+
+ try:
+ board_index = int(user_input)
+ except:
+ invalid_exit()
+
+ max_board_index = len(boards)
+ if board_index < 0 or board_index > max_board_index:
+ invalid_exit()
+
+ return board_index
+
+ print_f("")
+ print_f(" Supported MicroPython PSoC6 boards ")
+ print_f("+---------+-----------------------------------+")
+ print_f("| ID | Board |")
+ print_f("+---------+-----------------------------------+")
+ print_f("| 0 | CY8CPROTO-062-4343W |")
+ print_f("+---------+-----------------------------------+")
+ print_f("| 1 | CY8CPROTO-063-BLE |")
+ print_f("+---------+-----------------------------------+")
+ print_f("| 2 | CY8CKIT-062S2-AI |")
+ print_f("+---------+-----------------------------------+")
+ print_f("")
+ print_f("")
+
+ board_index = validate_user_input(
+ input(colour_str_highlight("Please type the desired board ID: "))
+ )
+ board = boards[board_index]["name"]
+
+ return board
+
+
+def wait_and_request_board_connect():
+ input(
+ colour_str_highlight(
+ "Please CONNECT THE BOARD and PRESS ENTER to start the firmware deployment\n"
+ )
+ )
+
+
+def device_setup(board, version, serial_adapter_sn=None, kitprog_update_dbg_fw=False, quiet=False):
+ if board is None:
+ board = select_board()
+ else:
+ validate_board_name(board)
+
+ print_f("MicroPython PSoC6 Board :: ", board)
+
+ if version is None:
+ version = "latest"
+
+ print_f("MicroPython PSoC6 Version :: ", version)
+
+ if not quiet:
+ wait_and_request_board_connect()
+
+ if kitprog_update_dbg_fw:
+
+ def wait_for_dev_restart():
+ print("Waiting for device restart ", end="", flush=True)
+ for j in range(3):
+ for i in range(3):
+ print(".", end="", flush=True)
+ time.sleep(1)
+ sys.stdout.write("\b\b\b\b")
+ sys.stdout.write(" ")
+ sys.stdout.write("\b\b\b")
+ sys.stdout.flush()
+
+ print_f("\nDevice restarted")
+
+ fwloader_download_install()
+ fwloader_update_kitprog()
+ wait_for_dev_restart()
+
+ openocd_download_install()
+ openocd_board_conf_download(board)
+
+ mpy_firmware_download("hello-world", board, "v0.3.0", True)
+ mpy_firmware_download("mpy-psoc6", board, version)
+
+ mpy_firmware_deploy("hello-world", board, serial_adapter_sn, True)
+ mpy_firmware_deploy("mpy-psoc6", board, serial_adapter_sn)
+
+ print_f(colour_str_success("Device setup completed :)"))
+
+
+def device_erase(board, serial_adapter_sn=None, quiet=False):
+ if (board != "CY8CPROTO-062-4343W") and (board != "CY8CKIT-062S2-AI"):
+ sys.exit(colour_str_error("error: board is not supported"))
+
+ if not quiet:
+ wait_and_request_board_connect()
+
+ openocd_download_install()
+ openocd_board_conf_download(board)
+
+ mpy_firmware_download("device-erase", board, "v0.10.0")
+
+ mpy_firmware_deploy("device-erase", board, serial_adapter_sn)
+
+ print_f(
+ colour_str_warn(
+ "Attention!\nThe on-board user LED will start blinking when the erasing is completed."
+ )
+ )
+ print_f(
+ colour_str_warn("This can take up to a few minutes if the device memory is very full.")
+ )
+
+
+def firmware_deploy(board, hex_file, serial_adapter_sn=None):
+ openocd_download_install()
+ openocd_board_conf_download(board)
+ print(f"Deploying hex file {hex_file} ...")
+ openocd_program(board, hex_file, serial_adapter_sn)
+ print(colour_str_success(f"Firmware {hex_file} deployed successfully"))
+
+
+def clean_tool_downloads():
+ fwloader_remove()
+ openocd_remove()
+
+
+def parser():
+ def main_parser_func(args):
+ parser.print_help()
+
+ def parser_device_setup(args):
+ device_setup(args.board, args.version, args.serial_num, args.kitprog_fw_update, args.q)
+
+ def parser_device_erase(args):
+ device_erase(args.board, args.serial_num, args.q)
+
+ def parser_firmware_deploy(args):
+ firmware_deploy(args.board, args.hexfile, args.serial_num)
+
+ # Main parser
+ class ver_action(argparse.Action):
+ def __init__(self, option_strings, dest, **kwargs):
+ return super().__init__(
+ option_strings, dest, nargs=0, default=argparse.SUPPRESS, **kwargs
+ )
+
+ def __call__(self, parser, namespace, values, option_string, **kwargs):
+ print_f("mpy-psoc6 version: " + version)
+ parser.exit()
+
+ main_parser_desc = """
+ Micropython PSoC6 utility script
+
+ Available commands:
+
+ device-setup Setup of MicroPython PSoC6 device
+ device-erase Erase the external memory of the PSoC6 device
+ firmware-deploy Firmware deployment on PSoC6 device (user provided binary file)
+
+ mpy-psoc6.py --help for more information about each specific command.
+ """
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawTextHelpFormatter, description=main_parser_desc
+ )
+ parser.add_argument("-v", "--version", action=ver_action, help="mpy-psoc6 version")
+ subparser = parser.add_subparsers()
+ parser.set_defaults(func=main_parser_func)
+
+ # device setup
+ parser_ds = subparser.add_parser(
+ "device-setup",
+ description="Setup of MicroPython PSoC6 device. \
+ Use this command to install the deployment tools \
+ and MicroPython firmware binary, and deploy the \
+ firmware on the PSoC6 device.",
+ )
+ parser_ds.add_argument(
+ "-b", "--board", default=None, type=str, help="PSoC6 prototyping kit name"
+ )
+ parser_ds.add_argument(
+ "-n",
+ "--serial-num",
+ default=None,
+ type=str,
+ help="Serial number of the board serial adapter",
+ )
+ parser_ds.add_argument(
+ "-v", "--version", default=None, type=str, help="MicroPython PSoC6 firmware version"
+ )
+ parser_ds.add_argument(
+ "-q", action="store_true", help="Quiet. Do not prompt any user confirmation request"
+ )
+ parser_ds.add_argument(
+ "--kitprog-fw-update",
+ action="store_true",
+ help="Updates the on-board Kitprog3 debugger firmware of the PSoC6 device",
+ )
+ parser_ds.set_defaults(func=parser_device_setup)
+
+ # device erase
+ parser_de = subparser.add_parser(
+ "device-erase",
+ description="Erase the external memory of the device. \
+ Use this command to erase the external memory if available \
+ for the selected board. \
+ Running device-setup after this command \
+ is required to re-enable MicroPython.",
+ )
+ parser_de.add_argument(
+ "-b", "--board", default=None, type=str, required=True, help="PSoC6 prototyping kit name"
+ )
+ parser_de.add_argument(
+ "-n",
+ "--serial-num",
+ default=None,
+ type=str,
+ help="Serial number of the board serial adapter",
+ )
+ parser_de.add_argument(
+ "-q", action="store_true", help="Quiet. Do not prompt any user confirmation request"
+ )
+ parser_de.set_defaults(func=parser_device_erase)
+
+ # firmware deploy
+ parser_fd = subparser.add_parser(
+ "firmware-deploy",
+ description="Firmware deployment on MicroPython device. \
+ Use this command to deploy an existing .hex file \
+ on a PSoC6 board.",
+ )
+ parser_fd.add_argument(
+ "-b", "--board", default=None, type=str, required=True, help="PSoC6 prototyping kit name"
+ )
+ parser_fd.add_argument(
+ "-n",
+ "--serial-num",
+ default=None,
+ type=str,
+ help="Serial number of the board serial adapter",
+ )
+ parser_fd.add_argument(
+ "-f", "--hexfile", type=str, required=True, help="MicroPython PSoC6 firmware .hex file"
+ )
+ parser_fd.set_defaults(func=parser_firmware_deploy)
+
+ # Parser call
+ args = parser.parse_args()
+ args.func(args)
+
+
+if __name__ == "__main__":
+ try:
+ set_environment()
+ parser()
+ except KeyboardInterrupt:
+ print_f(colour_str_error("error: keyboard interrupt"))
+ clean_tool_downloads()
diff --git a/tools/psoc6/wsl-usb.py b/tools/psoc6/wsl-usb.py
new file mode 100644
index 0000000000000..7c932ec627b8a
--- /dev/null
+++ b/tools/psoc6/wsl-usb.py
@@ -0,0 +1,156 @@
+"""
+Use this script to avoid attaching manually usb devices
+to the WSL Ubuntu instance.
+1. Copy this script somewhere in the Windows filesystem
+
+curl -s -L https://raw.githubusercontent.com/Infineon/micropython/ports-psoc6-main/tools/psoc6/wsl-usb.py > wsl-usb.py
+
+2. Use the Power Shell with admin rights
+3. Use -h, --help flags to find out the available commands and options.
+"""
+
+import argparse, subprocess
+
+version = "1.0.0"
+
+
+def get_kitprog_list():
+ usbipd_list_cmd = ["usbipd.exe", "list"]
+
+ try:
+ usbipd_proc = subprocess.Popen(usbipd_list_cmd, stdout=subprocess.PIPE)
+ output = usbipd_proc.communicate()[0]
+ except:
+ raise Exception("usbipd error")
+
+ kitprog3_list = []
+ kitprog3_descr = "KitProg3 CMSIS-DAP, KitProg3 bridge, KitProg3 USB-UART (C..."
+ lines = output.decode("utf-8").split("\r\n")
+ for l in lines:
+ # Create (busid, vid:pid, device state) tuple from line
+ split_line = l.split(" ")
+ strip_line = [i for i in split_line if i != ""]
+
+ # Entries matching KitProg3 probe description
+ if len(strip_line) == 4:
+ if strip_line[2] == kitprog3_descr:
+ kitprog3_list.append((strip_line[0], strip_line[3]))
+
+ return kitprog3_list
+
+
+def get_ppp_adapter_ip():
+ ipconfig_cmd = ["ipconfig.exe", "-all"]
+
+ try:
+ ipconfig_proc = subprocess.Popen(ipconfig_cmd, stdout=subprocess.PIPE)
+ output = ipconfig_proc.communicate()[0]
+ except:
+ raise Exception("ipconfig error")
+
+ lines = output.decode("utf-8").split("\r\n")
+ strip_lines = [i for i in lines if i != ""]
+ ppp_entry = strip_lines.index("PPP adapter iconnect.infineon.com - iconnect.infineon.com:")
+ entry_from_ppp_adapter = strip_lines[ppp_entry:]
+ ipv4 = next(ip_entry for ip_entry in entry_from_ppp_adapter if "IPv4 Address" in ip_entry)
+
+ ipv4.strip()
+ ipv4 = ipv4.strip("IPv4 Address. . . . . . . . . . . : ")
+ ipv4 = ipv4.removesuffix("(Preferred)")
+
+ return ipv4
+
+
+def attach():
+ kp3_list = get_kitprog_list()
+ ppp_ip = get_ppp_adapter_ip()
+
+ usbipd_cmd = ["usbipd.exe", "bind"]
+ wsl_usbip_cmd = ["wsl", "sudo", "usbip", "attach"]
+
+ for d in kp3_list:
+ if d[1] != "Attached":
+ usbipd_bind_cmd = usbipd_cmd.copy()
+ usbipd_bind_cmd.append("--busid=" + str(d[0]))
+
+ try:
+ usbipd_proc = subprocess.Popen(usbipd_bind_cmd)
+ usbipd_proc.wait()
+ except:
+ raise Exception("usbipd error")
+
+ wsl_usbip_attach_cmd = wsl_usbip_cmd.copy()
+ wsl_usbip_attach_cmd.append("--remote=" + str(ppp_ip))
+ wsl_usbip_attach_cmd.append("--busid=" + str(d[0]))
+
+ try:
+ usbipd_proc = subprocess.Popen(wsl_usbip_attach_cmd)
+ usbipd_proc.wait()
+ except:
+ raise Exception("wsl usbip error")
+
+
+def detach():
+ kp3_list = get_kitprog_list()
+
+ usbipd_cmd = ["usbipd.exe", "unbind"]
+
+ # Unbind in windows is sufficient
+ for d in kp3_list:
+ usbipd_unbind_cmd = usbipd_cmd.copy()
+ usbipd_unbind_cmd.append("--busid=" + str(d[0]))
+
+ try:
+ usbipd_proc = subprocess.Popen(usbipd_unbind_cmd)
+ usbipd_proc.wait()
+ except:
+ raise Exception("usbipd error")
+
+
+def parser():
+ def main_parser_func(args):
+ parser.print_help()
+
+ def parser_attach_func(args):
+ attach()
+
+ def parser_detach_func(args):
+ detach()
+
+ def parser_list_func(args):
+ print(get_kitprog_list())
+
+ class ver_action(argparse.Action):
+ def __init__(self, option_strings, dest, **kwargs):
+ return super().__init__(
+ option_strings, dest, nargs=0, default=argparse.SUPPRESS, **kwargs
+ )
+
+ def __call__(self, parser, namespace, values, option_string, **kwargs):
+ print("wsl-usb version: " + version)
+ parser.exit()
+
+ parser = argparse.ArgumentParser(description="wsl-usb")
+ parser.add_argument("-v", "--version", action=ver_action, help="wsl-usb version")
+ subparser = parser.add_subparsers()
+ parser.set_defaults(func=main_parser_func)
+
+ # Attach
+ parser_attach = subparser.add_parser("attach", description="Attach kitprog3 devices")
+ parser_attach.set_defaults(func=parser_attach_func)
+
+ # detach
+ parser_detach = subparser.add_parser("detach", description="Detach kitprog3 devices")
+ parser_detach.set_defaults(func=parser_detach_func)
+
+ # List
+ parser_list = subparser.add_parser("list", description="List kitprog3 devices with status")
+ parser_list.set_defaults(func=parser_list_func)
+
+ # Parser call
+ args = parser.parse_args()
+ args.func(args)
+
+
+if __name__ == "__main__":
+ parser()