pax_global_header00006660000000000000000000000064145616633530014526gustar00rootroot0000000000000052 comment=bd552df8f95716d53eb6fdea80b8d6d34cbc1968 uvicorn-0.27.1/000077500000000000000000000000001456166335300133025ustar00rootroot00000000000000uvicorn-0.27.1/.github/000077500000000000000000000000001456166335300146425ustar00rootroot00000000000000uvicorn-0.27.1/.github/FUNDING.yml000066400000000000000000000000171456166335300164550ustar00rootroot00000000000000github: encode uvicorn-0.27.1/.github/ISSUE_TEMPLATE/000077500000000000000000000000001456166335300170255ustar00rootroot00000000000000uvicorn-0.27.1/.github/ISSUE_TEMPLATE/1-issue.yml000066400000000000000000000036231456166335300210420ustar00rootroot00000000000000name: Issue description: Report a bug or unexpected behavior. πŸ™ body: - type: markdown attributes: value: Thank you for contributing to Uvicorn! ✊ - type: checkboxes id: checks attributes: label: Initial Checks description: Just making sure you open a discussion first. πŸ™ options: - label: I confirm this was discussed, and the maintainers suggest I open an issue. required: true - label: I'm aware that if I created this issue without a discussion, it may be closed without a response. required: true - type: textarea id: discussion attributes: label: Discussion Link description: | Please link to the discussion that led to this issue. If you haven't discussed this issue yet, please do so before opening an issue. render: Text validations: required: true - type: textarea id: description attributes: label: Description description: | Please explain what you're seeing and what you would expect to see. Please provide as much detail as possible to make understanding and solving your problem as quick as possible. πŸ™ validations: required: true - type: textarea id: example attributes: label: Example Code description: > If applicable, please add a self-contained, [minimal, reproducible, example](https://stackoverflow.com/help/minimal-reproducible-example) demonstrating the bug. render: Python - type: textarea id: version attributes: label: Python, Uvicorn & OS Version description: | Which version of Python & Uvicorn are you using, and which Operating System? Please run the following command and copy the output below: ```bash python -m uvicorn --version ``` render: Text validations: required: true uvicorn-0.27.1/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000006621456166335300210210ustar00rootroot00000000000000# Ref: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser blank_issues_enabled: false contact_links: - name: Discussions url: https://github.com/encode/uvicorn/discussions about: > The "Discussions" forum is where you want to start. πŸ’– - name: Chat url: https://gitter.im/encode/community about: > Our community chat forum. uvicorn-0.27.1/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000010411456166335300204370ustar00rootroot00000000000000 # Summary # Checklist - [ ] I understand that this PR may be closed in case there was no previous discussion. (This doesn't apply to typos!) - [ ] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [ ] I've updated the documentation accordingly. uvicorn-0.27.1/.github/dependabot.yml000066400000000000000000000004221456166335300174700ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: "pip" directory: "/" schedule: interval: "monthly" groups: python-packages: patterns: - "*" - package-ecosystem: "github-actions" directory: "/" schedule: interval: monthly uvicorn-0.27.1/.github/workflows/000077500000000000000000000000001456166335300166775ustar00rootroot00000000000000uvicorn-0.27.1/.github/workflows/publish.yml000066400000000000000000000011411456166335300210650ustar00rootroot00000000000000name: Publish on: push: tags: - '*' jobs: publish: name: "Publish release" runs-on: "ubuntu-latest" environment: name: deploy steps: - uses: "actions/checkout@v4" - uses: "actions/setup-python@v5" with: python-version: "3.8" - name: "Install dependencies" run: "scripts/install" - name: "Build package & docs" run: "scripts/build" - name: "Publish to PyPI & deploy docs" run: "scripts/publish" env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} uvicorn-0.27.1/.github/workflows/test-suite.yml000066400000000000000000000017321456166335300215330ustar00rootroot00000000000000--- name: Test Suite on: push: branches: ["master"] pull_request: branches: ["master"] jobs: tests: name: "Python ${{ matrix.python-version }} ${{ matrix.os }}" runs-on: "${{ matrix.os }}" strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] os: [windows-latest, ubuntu-latest, macos-latest] steps: - uses: "actions/checkout@v4" - uses: "actions/setup-python@v5" with: python-version: "${{ matrix.python-version }}" - name: "Install dependencies" run: "scripts/install" shell: bash - name: "Run linting checks" run: "scripts/check" shell: bash if: "${{ matrix.os == 'ubuntu-latest'}}" - name: "Build package & docs" run: "scripts/build" shell: bash - name: "Run tests" run: "scripts/test" shell: bash - name: "Enforce coverage" run: "scripts/coverage" shell: bash uvicorn-0.27.1/.gitignore000066400000000000000000000001301456166335300152640ustar00rootroot00000000000000.cache .coverage .mypy_cache/ __pycache__/ uvicorn.egg-info/ venv/ htmlcov/ site/ dist/ uvicorn-0.27.1/CHANGELOG.md000066400000000000000000000420661456166335300151230ustar00rootroot00000000000000# Change Log ## 0.27.1 - 2024-02-10 - Fix spurious LocalProtocolError errors when processing pipelined requests (#2243) 10/02/24 ## 0.27.0.post1 - 2024-01-29 ### Fixed - Fix nav overrides for newer version of Mkdocs Material (#2233) 26/01/24 ## 0.27.0 - 2024-01-22 ### Added - Raise `ClientDisconnect(IOError)` on `send()` when client disconnected (#2218) 19/01/24 - Bump ASGI WebSocket spec version to 2.4 (#2221) 20/01/24 ## 0.26.0 - 2024-01-16 ### Changed - Update `--root-path` to include the root path prefix in the full ASGI `path` as per the ASGI spec (#2213) 16/01/24 - Use `__future__.annotations` on some internal modules (#2199) 16/01/24 ## 0.25.0 - 2023-12-17 ### Added - Support the WebSocket Denial Response ASGI extension (#1916) 17/12/23 ### Fixed - Allow explicit hidden file paths on `--reload-include` (#2176) 08/12/23 - Properly annotate `uvicorn.run()` (#2158) 22/11/23 ## 0.24.0.post1 - 2023-11-06 ### Fixed - Revert mkdocs-material from 9.1.21 to 9.2.6 (#2148) 05/11/23 ## 0.24.0 - 2023-11-04 ### Added - Support Python 3.12 (#2145) 04/11/23 - Allow setting `app` via environment variable `UVICORN_APP` (#2106) 21/09/23 ## 0.23.2 - 2023-07-31 ### Fixed - Maintain the same behavior of `websockets` from 10.4 on 11.0 (#2061) 30/07/23 ## 0.23.1 - 2023-07-18 ### Fixed - Add `typing_extensions` for Python 3.10 and lower (#2053) 18/07/23 ## 0.23.0 - 2023-07-10 ### Added - Add `--ws-max-queue` parameter WebSockets (#2033) 10/07/23 ### Removed - Drop support for Python 3.7 (#1996) 19/06/23 - Remove `asgiref` as typing dependency (#1999) 08/06/23 ### Fixed - Set `scope["scheme"]` to `ws` or `wss` instead of `http` or `https` on `ProxyHeadersMiddleware` for WebSockets (#2043) 12/07/23 ### Changed - Raise `ImportError` on circular import (#2040) 09/07/23 - Use `logger.getEffectiveLevel()` instead of `logger.level` to check if log level is `TRACE` (#1966) 01/06/23 ## 0.22.0 - 2023-04-28 ### Added - Add `--timeout-graceful-shutdown` parameter (#1950) 26/04/23 - Handle `SIGBREAK` on Windows (#1909) 15/04/23 ### Fixed - Shutdown event is now being triggered on Windows when using hot reload (#1584) 13/04/23 - `--reload-delay` is effectively used on the `watchfiles` reloader (#1930) 22/04/23 ## 0.21.1 - 2023-03-16 ### Fixed - Reset lifespan state on each request (#1903) 16/03/23 ## 0.21.0 - 2023-03-09 ### Added - Introduce lifespan state (#1818) 05/03/23 - Allow headers to be sent as iterables on H11 implementation (#1782) 27/11/22 - Improve discoverability when --port=0 is used (#1890) 09/03/23 ### Changed - Avoid importing `h11` and `pyyaml` when not needed to improve import time (#1846) 07/02/23 - Replace current native `WSGIMiddleware` implementation by `a2wsgi` (#1825) 16/01/23 - Change default `--app-dir` from "." (dot) to "" (empty string) (#1835) 06/01/23 ### Fixed - Send code 1012 on shutdown for WebSockets (#1816) 06/01/23 - Use `surrogateescape` to encode headers on `websockets` implementation (#1005) 12/12/22 - Fix warning message on reload failure (#1784) 29/11/22 ## 0.20.0 - 2022-11-20 ### Added - Check if handshake is completed before sending frame on `wsproto` shutdown (#1737) - Add default headers to WebSockets implementations (#1606 & #1747) 28/10/22 - Warn user when `reload` and `workers` flag are used together (#1731) 31/10/22 ### Fixed - Use correct `WebSocket` error codes on `close` (#1753) 20/11/22 - Send disconnect event on connection lost for `wsproto` (#996) 29/10/22 - Add `SIGQUIT` handler to `UvicornWorker` (#1710) 01/11/22 - Fix crash on exist with "--uds" if socket doesn't exist (#1725) 27/10/22 - Annotate `CONFIG_KWARGS` in `UvicornWorker` class (#1746) 31/10/22 ### Removed - Remove conditional on `RemoteProtocolError.event_hint` on `wsproto` (#1486) 31/10/22 - Remove unused `handle_no_connect` on `wsproto` implementation (#1759) 17/11/22 ## 0.19.0 - 2022-10-19 ### Added - Support Python 3.11 (#1652) 16/09/22 - Bump minimal `httptools` version to `0.5.0` (#1645) 13/09/22 - Ignore HTTP/2 upgrade and optionally ignore WebSocket upgrade (#1661) 19/10/22 - Add `py.typed` to comply with PEP 561 (#1687) 07/10/22 ### Fixed - Set `propagate` to `False` on "uvicorn" logger (#1288) 08/10/22 - USR1 signal is now handled correctly on `UvicornWorker`. (#1565) 26/08/22 - Use path with query string on `WebSockets` logs (#1385) 11/09/22 - Fix behavior on which "Date" headers were not updated on the same connection (#1706) 19/10/22 ### Removed - Remove the `--debug` flag (#1640) 14/09/22 - Remove the `DebugMiddleware` (#1697) 07/10/22 ## 0.18.3 - 2022-08-24 ### Fixed - Remove cyclic references on HTTP implementations. (#1604) 24/08/22 ### Changed - `reload_delay` default changed from `None` to `0.25` on `uvicorn.run()` and `Config`. `None` is not an acceptable value anymore. (#1545) 02/07/22 ## 0.18.2 - 2022-06-27 ### Fixed - Add default `log_config` on `uvicorn.run()` (#1541) 24/06/22 - Revert `logging` file name modification (#1543) 27/06/22 ## 0.18.1 - 2022-06-23 ### Fixed - Use `DEFAULT_MAX_INCOMPLETE_EVENT_SIZE` as default to `h11_max_incomplete_event_size` on the CLI (#1534) 23/06/22 ## 0.18.0 - 2022-06-23 ### Added - The `reload` flag prioritizes `watchfiles` instead of the deprecated `watchgod` (#1437) 18/06/22 - Annotate `uvicorn.run()` function (#1423) 10/05/22 - Allow configuring `max_incomplete_event_size` for `h11` implementation (#1514) 22/06/22 ### Removed - Remove `asgiref` dependency (#1532) 22/06/22 ### Fixed - Turn `raw_path` into bytes on both websockets implementations (#1487) 16/05/22 - Revert log exception traceback in case of invalid HTTP request (#1518) 14/06/22 - Set `asyncio.WindowsSelectorEventLoopPolicy()` when using multiple workers to avoid "WinError 87" (#1454) 22/06/22 ## 0.17.6 - 2022-03-11 ### Changed - Change `httptools` range to `>=0.4.0` (#1400) 11/03/22 ## 0.17.5 - 2022-02-16 ### Fixed - Fix case where url is fragmented in httptools protocol (#1263) 16/02/22 - Fix WSGI middleware not to explode quadratically in the case of a larger body (#1329) 16/02/16 ### Changed - Send HTTP 400 response for invalid request (#1352) 2/11/22 ## 0.17.4 - 2022-02-04 ### Fixed - Replace `create_server` by `create_unix_server` (#1362) 04/02/22 ## 0.17.3 - 2022-02-03 ### Fixed - Drop wsproto version checking. (#1359) 03/02/22 ## 0.17.2 - 2022-02-03 ### Fixed - Revert #1332. While trying to solve the memory leak, it introduced an issue (#1345) when the server receives big chunks of data using the `httptools` implementation. (#1354) 03/02/22 - Revert stream interface changes. This was introduced on 0.14.0, and caused an issue (#1226), which caused a memory leak when sending TCP pings. (#1355) 03/02/22 - Fix wsproto version check expression (#1342) 28/01/22 ## 0.17.1 - 2022-01-28 ### Fixed - Move all data handling logic to protocol and ensure connection is closed. (#1332) 28/01/22 - Change `spec_version` field from "2.1" to "2.3", as Uvicorn is compliant with that version of the ASGI specifications. (#1337) 25/01/22 ## 0.17.0.post1 - 2022-01-24 ### Fixed - Add the `python_requires` version specifier (#1328) 17/01/22 ## 0.17.0 - 2022-01-14 ### Added - Allow configurable websocket per-message-deflate setting (#1300) 29/12/21 - Support extra_headers for WS accept message (#1293) 06/01/22 - Add missing http version on websockets scope (#1309) 08/01/22 ### Fixed/Removed - Drop Python 3.6 support (#1261) 06/01/22 - Fix reload process behavior when exception is raised (#1313) 11/01/22 - Remove `root_path` from logs (#1294) 25/12/21 ## 0.16.0 - 2021-12-08 ### Added - Enable read of uvicorn settings from environment variables (#1279) 06/12/21 - Bump `websockets` to 10.0. (#1180) 13/09/21 - Ensure non-zero exit code when startup fails (#1278) 06/12/21 - Increase `httptools` version range from "==0.2.*" to ">=0.2.0,<0.4.0". (#1243) 8/11/21 - Override default asyncio event loop with reload only on Windows (#1257) 24/11/21 - Replace `HttpToolsProtocol.pipeline` type from `list` to `deque`. (#1213) 10/10/21 - Replace `WSGIResponder.send_queue` type from `list` to `deque`. (#1214) 10/10/21 ### Fixed - Main process exit after startup failure on reloader classes (#1177) 30/09/21 - Add explicit casting on click options (#1217) 11/10/21 - Allow WebSocket close event to receive reason being None from ASGI app. (#1259) 23/11/21 - Fix a bug in `WebSocketProtocol.asgi_receive` on which we returned a close frame even if there were data messages before that frame in the read queue. (#1252) 25/11/21 - The option `--reload-dirs` was splitting a string into single character directories. (#1267) 25/11/21 - Only second SIGINT is able to forcefully shutdown the server (#1269) 28/11/21 - Allow app-dir parameter on the run() function (#1271) 06/12/21 ## 0.15.0 - 2021-08-13 ### Added - Change reload to be configurable with glob patterns. Currently only `.py` files are watched, which is different from the previous default behavior. (#820) 08/08/21 - Add Python 3.10-rc.1 support. Now the server uses `asyncio.run` which will: start a fresh asyncio event loop, on shutdown cancel any background tasks rather than aborting them, `aexit` any remaining async generators, and shutdown the default `ThreadPoolExecutor`. (#1070) 30/07/21 - Exit with status 3 when worker starts failed (#1077) 22/06/21 - Add option to set websocket ping interval and timeout (#1048) 09/06/21 - Adapt bind_socket to make it usable with multiple processes (#1009) 21/06/21 - Add existence check to the reload directory(ies) (#1089) 21/06/21 - Add missing trace log for websocket protocols (#1083) 19/06/21 - Support disabling default Server and Date headers (#818) 11/06/21 ### Changed - Add PEP440 compliant version of click (#1099) 29/06/21 - Bump asgiref to 3.4.0 (#1100) 29/06/21 ### Fixed - When receiving a `SIGTERM` supervisors now terminate their processes before joining them (#1069) 30/07/21 - Fix the need of `httptools` on minimal installation (#1135) 30/07/21 - Fix ping parameters annotation in Config class (#1127) 19/07/21 ## 0.14.0 - 2021-06-01 ### Added - Defaults ws max_size on server to 16MB (#995) 5/29/21 - Improve user feedback if no ws library installed (#926 and #1023) 2/27/21 - Support 'reason' field in 'websocket.close' messages (#957) 2/24/21 - Implemented lifespan.shutdown.failed (#755) 2/25/21 ### Changed - Upgraded websockets requirements (#1065) 6/1/21 - Switch to asyncio streams API (#869) 5/29/21 - Update httptools from 0.1.* to 0.2.* (#1024) 5/28/21 - Allow Click 8.0, refs #1016 (#1042) 5/23/21 - Add search for a trusted host in ProxyHeadersMiddleware (#591) 3/13/21 - Up wsproto to 1.0.0 (#892) 2/25/21 ### Fixed - Force reload_dirs to be a list (#978) 6/1/21 - Fix gunicorn worker not running if extras not installed (#901) 5/28/21 - Fix socket port 0 (#975) 3/5/21 - Prevent garbage collection of main lifespan task (#972) 3/4/21 ## 0.13.4 - 2021-02-20 ### Fixed - Fixed wsgi middleware PATH_INFO encoding (#962) 2/20/21 - Fixed uvloop dependency (#952) 2/10/21 then (#959) 2/20/21 - Relax watchgod up bound (#946) 1/31/21 - Return 'connection: close' header in response (#721) 1/25/21 ### Added: - Docs: Nginx + websockets (#948) 2/10/21 - Document the default value of 1 for workers (#940) (#943) 1/25/21 - Enabled permessage-deflate extension in websockets (#764) 1/1/21 ## 0.13.3 - 2020-12-29 ### Fixed - Prevent swallowing of return codes from `subprocess` when running with Gunicorn by properly resetting signals. (Pull #895) - Tweak detection of app factories to be more robust. A warning is now logged when passing a factory without the `--factory` flag. (Pull #914) - Properly clean tasks when handshake is aborted when running with `--ws websockets`. (Pull #921) ## 0.13.2 - 2020-12-12 ### Fixed - Log full exception traceback in case of invalid HTTP request. (Pull #886 and #888) ## 0.13.1 - 2020-12-12 ### Fixed - Prevent exceptions when the ASGI application rejects a connection during the WebSocket handshake, when running on both `--ws wsproto` or `--ws websockets`. (Pull #704 and #881) - Ensure connection `scope` doesn't leak in logs when using JSON log formatters. (Pull #859 and #884) ## 0.13.0 - 2020-12-08 ### Added - Add `--factory` flag to support factory-style application imports. (#875) 2020-12-07 50fc0d1c - Skip installation of signal handlers when not in the main thread. Allows using `Server` in multithreaded contexts without having to override `.install_signal_handlers()`. (#871) 2020-12-07 ce2ef45a ## 0.12.3 - 2020-11-21 ### Fixed - Fix race condition that leads Quart to hang with uvicorn (#848) 11/18/20 de213614 - Use latin1 when decoding X-Forwarded-* headers (#701) 11/12/20 45e6e831 - Rework IPv6 support (#837) 11/8/20 bdab488e - Cancel old keepalive-trigger before setting new one. (#832) 10/26/20 d5dcf80c ## 0.12.2 - 2020-10-19 ### Added - Adding ability to decrypt ssl key file (#808) 10/12/20 90dbb6e0 - Support .yml log config files (#799) 10/6/20 b468950e - Added python 3.9 support (#804) 10/6/20 08fd0559 ### Fixed - Fixes watchgod with common prefixes (#817) 10/14/20 1b32f997 - Fix reload with ipv6 host (#803) 10/14/20 5acaee5b - Added cli support for headers containing colon (#813) 10/12/20 68732899 - Sharing socket across workers on windows (#802) 10/12/20 103167a0 - Note the need to configure trusted "ips" when using unix sockets (#796) 10/4/20 a504c569 ## 0.12.1 - 2020-09-30 ### Changed - Pinning h11 and python-dotenv to min versions (#789) 9/29/20 bbf19c66 - Get docs/index.md in sync with README.md (#784) 9/29/20 70ebcfdf ### Fixed - Improve changelog by pointing out breaking changes (#792) 9/29/20 e2b75064 ## 0.12.0 - 2020-09-28 ### Added - Make reload delay configurable (#774) 9/28/20 98010027 - Upgrade maximum h11 dependency version to 0.10 (#772) 8/28/20 54d729cc - Allow .json or .yaml --log-config files (#665) 8/18/20 093a1f7c - Add ASGI dict to the lifespan scope (#754) 8/15/20 8150c3eb - Upgrade wsproto to 0.15.0 (#750) 8/13/20 fbce393f - Use optional package installs (#666) 8/10/20 5fa99a11 ### Changed - Dont set log level for root logger (#767) 8/28/20 df81b168 - Uvicorn no longer ships extra dependencies `uvloop`, `websockets` and `httptools` as default. To install these dependencies use `uvicorn[standard]`. ### Fixed - Revert "Improve shutdown robustness when using `--reload` or multiprocessing (#620)" (#756) 8/28/20 ff4af12d - Fix terminate error in windows (#744) 8/27/20 dd3b842d - Fix bug where --log-config disables uvicorn loggers (#512) 8/11/20 a9c37cc4 ## 0.11.8 - 2020-07-30 * Fix a regression that caused Uvicorn to crash when using `--interface=wsgi`. (Pull #730) * Fix a regression that caused Uvicorn to crash when using unix domain sockets. (Pull #729) ## 0.11.7 - 2020-28-07 * SECURITY FIX: Prevent sending invalid HTTP header names and values. (Pull #725) * SECURITY FIX: Ensure path value is escaped before logging to the console. (Pull #724) * Fix `--proxy-headers` client IP and host when using a Unix socket. (Pull #636) ## 0.11.6 * Fix overriding the root logger. ## 0.11.5 * Revert "Watch all files, not just .py" due to unexpected side effects. * Revert "Pass through gunicorn timeout config." due to unexpected side effects. ## 0.11.4 * Use `watchgod`, if installed, for watching code changes. * Watch all files, not just .py. * Pass through gunicorn timeout config. ## 0.11.3 * Update dependencies. ## 0.11.2 * Don't open socket until after application startup. * Support `--backlog`. ## 0.11.1 * Use a more liberal `h11` dependency. Either `0.8.*` or `0.9.*``. ## 0.11.0 * Fix reload/multiprocessing on Windows with Python 3.8. * Drop IOCP support. (Required for fix above.) * Add `uvicorn --version` flag. * Add `--use-colors` and `--no-use-colors` flags. * Display port correctly, when auto port selection isused with `--port=0`. ## 0.10.8 * Fix reload/multiprocessing error. ## 0.10.7 * Use resource_sharer.DupSocket to resolve socket sharing on Windows. ## 0.10.6 * Exit if `workers` or `reload` are use without an app import string style. * Reorganise supervisor processes to properly hand over sockets on windows. ## 0.10.5 * Update uvloop dependency to 0.14+ ## 0.10.4 * Error clearly when `workers=` is used with app instance, instead of an app import string. * Switch `--reload-dir` to current working directory by default. ## 0.10.3 * Add ``--log-level trace` ## 0.10.2 * Enable --proxy-headers by default. ## 0.10.1 * Resolve issues with logging when using `--reload` or `--workers`. * Setup up root logger to capture output for all logger instances, not just `uvicorn.error` and `uvicorn.access`. ## 0.10.0 * Support for Python 3.8 * Separated out `uvicorn.error` and `uvicorn.access` logs. * Coloured log output when connected to a terminal. * Dropped `logger=` config setting. * Added `--log-config [FILE]` and `log_config=[str|dict]`. May either be a Python logging config dictionary or the file name of a logging configuration. * Added `--forwarded_allow_ips` and `forwarded_allow_ips`. Defaults to the value of the `$FORWARDED_ALLOW_IPS` environment variable or "127.0.0.1". The `--proxy-headers` flag now defaults to `True`, but only trusted IPs are used to populate forwarding info. * The `--workers` setting now defaults to the value of the `$WEB_CONCURRENCY` environment variable. * Added support for `--env-file`. Requires `python-dotenv`. uvicorn-0.27.1/LICENSE.md000066400000000000000000000027661456166335300147210ustar00rootroot00000000000000Copyright Β© 2017-present, [Encode OSS Ltd](https://www.encode.io/). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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. uvicorn-0.27.1/README.md000066400000000000000000000105471456166335300145700ustar00rootroot00000000000000

uvicorn

An ASGI web server, for Python.

--- [![Build Status](https://github.com/encode/uvicorn/workflows/Test%20Suite/badge.svg)](https://github.com/encode/uvicorn/actions) [![Package version](https://badge.fury.io/py/uvicorn.svg)](https://pypi.python.org/pypi/uvicorn) [![Supported Python Version](https://img.shields.io/pypi/pyversions/uvicorn.svg?color=%2334D058)](https://pypi.org/project/uvicorn) **Documentation**: [https://www.uvicorn.org](https://www.uvicorn.org) --- Uvicorn is an ASGI web server implementation for Python. Until recently Python has lacked a minimal low-level server/application interface for async frameworks. The [ASGI specification][asgi] fills this gap, and means we're now able to start building a common set of tooling usable across all async frameworks. Uvicorn supports HTTP/1.1 and WebSockets. ## Quickstart Install using `pip`: ```shell $ pip install uvicorn ``` This will install uvicorn with minimal (pure Python) dependencies. ```shell $ pip install 'uvicorn[standard]' ``` This will install uvicorn with "Cython-based" dependencies (where possible) and other "optional extras". In this context, "Cython-based" means the following: - the event loop `uvloop` will be installed and used if possible. - the http protocol will be handled by `httptools` if possible. Moreover, "optional extras" means that: - the websocket protocol will be handled by `websockets` (should you want to use `wsproto` you'd need to install it manually) if possible. - the `--reload` flag in development mode will use `watchfiles`. - windows users will have `colorama` installed for the colored logs. - `python-dotenv` will be installed should you want to use the `--env-file` option. - `PyYAML` will be installed to allow you to provide a `.yaml` file to `--log-config`, if desired. Create an application, in `example.py`: ```python async def app(scope, receive, send): assert scope['type'] == 'http' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ (b'content-type', b'text/plain'), ], }) await send({ 'type': 'http.response.body', 'body': b'Hello, world!', }) ``` Run the server: ```shell $ uvicorn example:app ``` --- ## Why ASGI? Most well established Python Web frameworks started out as WSGI-based frameworks. WSGI applications are a single, synchronous callable that takes a request and returns a response. This doesn’t allow for long-lived connections, like you get with long-poll HTTP or WebSocket connections, which WSGI doesn't support well. Having an async concurrency model also allows for options such as lightweight background tasks, and can be less of a limiting factor for endpoints that have long periods being blocked on network I/O such as dealing with slow HTTP requests. --- ## Alternative ASGI servers A strength of the ASGI protocol is that it decouples the server implementation from the application framework. This allows for an ecosystem of interoperating webservers and application frameworks. ### Daphne The first ASGI server implementation, originally developed to power Django Channels, is [the Daphne webserver][daphne]. It is run widely in production, and supports HTTP/1.1, HTTP/2, and WebSockets. Any of the example applications given here can equally well be run using `daphne` instead. ``` $ pip install daphne $ daphne app:App ``` ### Hypercorn [Hypercorn][hypercorn] was initially part of the Quart web framework, before being separated out into a standalone ASGI server. Hypercorn supports HTTP/1.1, HTTP/2, and WebSockets. It also supports [the excellent `trio` async framework][trio], as an alternative to `asyncio`. ``` $ pip install hypercorn $ hypercorn app:App ``` ### Mangum [Mangum][mangum] is an adapter for using ASGI applications with AWS Lambda & API Gateway. ---

Uvicorn is BSD licensed code.
Designed & crafted with care.

— πŸ¦„ —

[asgi]: https://asgi.readthedocs.io/en/latest/ [daphne]: https://github.com/django/daphne [hypercorn]: https://github.com/pgjones/hypercorn [mangum]: https://mangum.io [trio]: https://trio.readthedocs.io uvicorn-0.27.1/docs/000077500000000000000000000000001456166335300142325ustar00rootroot00000000000000uvicorn-0.27.1/docs/CNAME000066400000000000000000000000201456166335300147700ustar00rootroot00000000000000www.uvicorn.org uvicorn-0.27.1/docs/contributing.md000066400000000000000000000135551456166335300172740ustar00rootroot00000000000000# Contributing Thank you for being interested in contributing to Uvicorn. There are many ways you can contribute to the project: - Using Uvicorn on your stack and [reporting bugs/issues you find](https://github.com/encode/uvicorn/issues/new) - [Implementing new features and fixing bugs](https://github.com/encode/uvicorn/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - [Review Pull Requests of others](https://github.com/encode/uvicorn/pulls) - Write documentation - Participate in discussions ## Reporting Bugs, Issues or Feature Requests Found something that Uvicorn should support? Stumbled upon some unexpected behaviour? Need a missing functionality? Contributions should generally start out from a previous discussion. You can reach out someone at the [community chat](https://gitter.im/encode/community) or at the [github discussions tab](https://github.com/encode/uvicorn/discussions). When creating a new topic in the discussions tab, possible bugs may be raised as a "Potential Issue" discussion, feature requests may be raised as an "Ideas" discussion. We can then determine if the discussion needs to be escalated into an "Issue" or not, or if we'd consider a pull request. Try to be more descriptive as you can and in case of a bug report, provide as much information as possible like: - OS platform - Python version - Installed dependencies and versions (`python -m pip freeze`) - Code snippet - Error traceback You should always try to reduce any examples to the *simplest possible case* that demonstrates the issue. Some possibly useful tips for narrowing down potential issues... - Does the issue exist with a specific supervisor like `Multiprocess` or more than one? - Does the issue exist on asgi, or wsgi, or both? - Are you running Uvicorn in conjunction with Gunicorn, others, or standalone? ## Development To start developing Uvicorn create a **fork** of the [Uvicorn repository](https://github.com/encode/uvicorn) on GitHub. Then clone your fork with the following command replacing `YOUR-USERNAME` with your GitHub username: ```shell $ git clone https://github.com/YOUR-USERNAME/uvicorn ``` You can now install the project and its dependencies using: ```shell $ cd uvicorn $ scripts/install ``` ## Testing and Linting We use custom shell scripts to automate testing, linting, and documentation building workflow. To run the tests, use: ```shell $ scripts/test ``` Any additional arguments will be passed to `pytest`. See the [pytest documentation](https://docs.pytest.org/en/latest/how-to/usage.html) for more information. For example, to run a single test script: ```shell $ scripts/test tests/test_cli.py ``` To run the code auto-formatting: ```shell $ scripts/lint ``` Lastly, to run code checks separately (they are also run as part of `scripts/test`), run: ```shell $ scripts/check ``` ## Documenting Documentation pages are located under the `docs/` folder. To run the documentation site locally (useful for previewing changes), use: ```shell $ scripts/docs serve ``` ## Resolving Build / CI Failures Once you've submitted your pull request, the test suite will automatically run, and the results will show up in GitHub. If the test suite fails, you'll want to click through to the "Details" link, and try to identify why the test suite failed.

Failing PR commit status

Here are some common ways the test suite can fail: ### Check Job Failed

Failing GitHub action lint job

This job failing means there is either a code formatting issue or type-annotation issue. You can look at the job output to figure out why it's failed or within a shell run: ```shell $ scripts/check ``` It may be worth it to run `$ scripts/lint` to attempt auto-formatting the code and if that job succeeds commit the changes. ### Docs Job Failed This job failing means the documentation failed to build. This can happen for a variety of reasons like invalid markdown or missing configuration within `mkdocs.yml`. ### Python 3.X Job Failed This job failing means the unit tests failed or not all code paths are covered by unit tests. If tests are failing you will see this message under the coverage report: `=== 1 failed, 354 passed, 1 skipped, 1 xfailed in 37.08s ===` If tests succeed but coverage doesn't reach our current threshold, you will see this message under the coverage report: `Coverage failure: total of 88 is less than fail-under=95` ## Releasing *This section is targeted at Uvicorn maintainers.* Before releasing a new version, create a pull request that includes: - **An update to the changelog**: - We follow the format from [keepachangelog](https://keepachangelog.com/en/1.0.0/). - [Compare](https://github.com/encode/uvicorn/compare/) `master` with the tag of the latest release, and list all entries that are of interest to our users: - Things that **must** go in the changelog: added, changed, deprecated or removed features, and bug fixes. - Things that **should not** go in the changelog: changes to documentation, tests or tooling. - Try sorting entries in descending order of impact / importance. - Keep it concise and to-the-point. 🎯 - **A version bump**: see `__init__.py`. For an example, see [#1006](https://github.com/encode/uvicorn/pull/1107). Once the release PR is merged, create a [new release](https://github.com/encode/uvicorn/releases/new) including: - Tag version like `0.13.3`. - Release title `Version 0.13.3` - Description copied from the changelog. Once created this release will be automatically uploaded to PyPI. If something goes wrong with the PyPI job the release can be published using the `scripts/publish` script. uvicorn-0.27.1/docs/deployment.md000066400000000000000000000362531456166335300167450ustar00rootroot00000000000000# Deployment Server deployment is a complex area, that will depend on what kind of service you're deploying Uvicorn onto. As a general rule, you probably want to: * Run `uvicorn --reload` from the command line for local development. * Run `gunicorn -k uvicorn.workers.UvicornWorker` for production. * Additionally run behind Nginx for self-hosted deployments. * Finally, run everything behind a CDN for caching support, and serious DDOS protection. ## Running from the command line Typically you'll run `uvicorn` from the command line. ```bash $ uvicorn main:app --reload --port 5000 ``` The ASGI application should be specified in the form `path.to.module:instance.path`. When running locally, use `--reload` to turn on auto-reloading. The `--reload` and `--workers` arguments are **mutually exclusive**. To see the complete set of available options, use `uvicorn --help`: ``` $ uvicorn --help Usage: uvicorn [OPTIONS] APP Options: --host TEXT Bind socket to this host. [default: 127.0.0.1] --port INTEGER Bind socket to this port. If 0, an available port will be picked. [default: 8000] --uds TEXT Bind to a UNIX domain socket. --fd INTEGER Bind to socket from this file descriptor. --reload Enable auto-reload. --reload-dir PATH Set reload directories explicitly, instead of using the current working directory. --reload-include TEXT Set glob patterns to include while watching for files. Includes '*.py' by default; these defaults can be overridden with `--reload- exclude`. This option has no effect unless watchfiles is installed. --reload-exclude TEXT Set glob patterns to exclude while watching for files. Includes '.*, .py[cod], .sw.*, ~*' by default; these defaults can be overridden with `--reload-include`. This option has no effect unless watchfiles is installed. --reload-delay FLOAT Delay between previous and next check if application needs to be. Defaults to 0.25s. [default: 0.25] --workers INTEGER Number of worker processes. Defaults to the $WEB_CONCURRENCY environment variable if available, or 1. Not valid with --reload. --loop [auto|asyncio|uvloop] Event loop implementation. [default: auto] --http [auto|h11|httptools] HTTP protocol implementation. [default: auto] --ws [auto|none|websockets|wsproto] WebSocket protocol implementation. [default: auto] --ws-max-size INTEGER WebSocket max size message in bytes [default: 16777216] --ws-max-queue INTEGER The maximum length of the WebSocket message queue. [default: 32] --ws-ping-interval FLOAT WebSocket ping interval in seconds. [default: 20.0] --ws-ping-timeout FLOAT WebSocket ping timeout in seconds. [default: 20.0] --ws-per-message-deflate BOOLEAN WebSocket per-message-deflate compression [default: True] --lifespan [auto|on|off] Lifespan implementation. [default: auto] --interface [auto|asgi3|asgi2|wsgi] Select ASGI3, ASGI2, or WSGI as the application interface. [default: auto] --env-file PATH Environment configuration file. --log-config PATH Logging configuration file. Supported formats: .ini, .json, .yaml. --log-level [critical|error|warning|info|debug|trace] Log level. [default: info] --access-log / --no-access-log Enable/Disable access log. --use-colors / --no-use-colors Enable/Disable colorized logging. --proxy-headers / --no-proxy-headers Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info. --server-header / --no-server-header Enable/Disable default Server header. --date-header / --no-date-header Enable/Disable default Date header. --forwarded-allow-ips TEXT Comma separated list of IPs to trust with proxy headers. Defaults to the $FORWARDED_ALLOW_IPS environment variable if available, or '127.0.0.1'. --root-path TEXT Set the ASGI 'root_path' for applications submounted below a given URL path. --limit-concurrency INTEGER Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. --backlog INTEGER Maximum number of connections to hold in backlog --limit-max-requests INTEGER Maximum number of requests to service before terminating the process. --timeout-keep-alive INTEGER Close Keep-Alive connections if no new data is received within this timeout. [default: 5] --timeout-graceful-shutdown INTEGER Maximum number of seconds to wait for graceful shutdown. --ssl-keyfile TEXT SSL key file --ssl-certfile TEXT SSL certificate file --ssl-keyfile-password TEXT SSL keyfile password --ssl-version INTEGER SSL version to use (see stdlib ssl module's) [default: 17] --ssl-cert-reqs INTEGER Whether client certificate is required (see stdlib ssl module's) [default: 0] --ssl-ca-certs TEXT CA certificates file --ssl-ciphers TEXT Ciphers to use (see stdlib ssl module's) [default: TLSv1] --header TEXT Specify custom default HTTP response headers as a Name:Value pair --version Display the uvicorn version and exit. --app-dir TEXT Look for APP in the specified directory, by adding this to the PYTHONPATH. Defaults to the current working directory. --h11-max-incomplete-event-size INTEGER For h11, the maximum number of bytes to buffer of an incomplete event. --factory Treat APP as an application factory, i.e. a () -> callable. --help Show this message and exit. ``` See the [settings documentation](settings.md) for more details on the supported options for running uvicorn. ## Running programmatically To run directly from within a Python program, you should use `uvicorn.run(app, **config)`. For example: ```py title="main.py" import uvicorn class App: ... app = App() if __name__ == "__main__": uvicorn.run("main:app", host="127.0.0.1", port=5000, log_level="info") ``` The set of configuration options is the same as for the command line tool. Note that the application instance itself *can* be passed instead of the app import string. ```python uvicorn.run(app, host="127.0.0.1", port=5000, log_level="info") ``` However, this style only works if you are not using multiprocessing (`workers=NUM`) or reloading (`reload=True`), so we recommend using the import string style. Also note that in this case, you should put `uvicorn.run` into `if __name__ == '__main__'` clause in the main module. !!! note The `reload` and `workers` parameters are **mutually exclusive**. ## Using a process manager Running Uvicorn using a process manager ensures that you can run multiple processes in a resilient manner, and allows you to perform server upgrades without dropping requests. A process manager will handle the socket setup, start-up multiple server processes, monitor process aliveness, and listen for signals to provide for processes restarts, shutdowns, or dialing up and down the number of running processes. Uvicorn provides a lightweight way to run multiple worker processes, for example `--workers 4`, but does not provide any process monitoring. ### Gunicorn Gunicorn is probably the simplest way to run and manage Uvicorn in a production setting. Uvicorn includes a gunicorn worker class that means you can get set up with very little configuration. The following will start Gunicorn with four worker processes: `gunicorn -w 4 -k uvicorn.workers.UvicornWorker` The `UvicornWorker` implementation uses the `uvloop` and `httptools` implementations. To run under PyPy you'll want to use pure-python implementation instead. You can do this by using the `UvicornH11Worker` class. `gunicorn -w 4 -k uvicorn.workers.UvicornH11Worker` Gunicorn provides a different set of configuration options to Uvicorn, so some options such as `--limit-concurrency` are not yet supported when running with Gunicorn. If you need to pass uvicorn's config arguments to gunicorn workers then you'll have to subclass `UvicornWorker`: ```python from uvicorn.workers import UvicornWorker class MyUvicornWorker(UvicornWorker): CONFIG_KWARGS = {"loop": "asyncio", "http": "h11", "lifespan": "off"} ``` ### Supervisor To use `supervisor` as a process manager you should either: * Hand over the socket to uvicorn using its file descriptor, which supervisor always makes available as `0`, and which must be set in the `fcgi-program` section. * Or use a UNIX domain socket for each `uvicorn` process. A simple supervisor configuration might look something like this: ```ini title="supervisord.conf" [supervisord] [fcgi-program:uvicorn] socket=tcp://localhost:8000 command=venv/bin/uvicorn --fd 0 main:App numprocs=4 process_name=uvicorn-%(process_num)d stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 ``` Then run with `supervisord -n`. ### Circus To use `circus` as a process manager, you should either: * Hand over the socket to uvicorn using its file descriptor, which circus makes available as `$(circus.sockets.web)`. * Or use a UNIX domain socket for each `uvicorn` process. A simple circus configuration might look something like this: ```ini title="circus.ini" [watcher:web] cmd = venv/bin/uvicorn --fd $(circus.sockets.web) main:App use_sockets = True numprocesses = 4 [socket:web] host = 0.0.0.0 port = 8000 ``` Then run `circusd circus.ini`. ## Running behind Nginx Using Nginx as a proxy in front of your Uvicorn processes may not be necessary, but is recommended for additional resilience. Nginx can deal with serving your static media and buffering slow requests, leaving your application servers free from load as much as possible. In managed environments such as `Heroku`, you won't typically need to configure Nginx, as your server processes will already be running behind load balancing proxies. The recommended configuration for proxying from Nginx is to use a UNIX domain socket between Nginx and whatever the process manager that is being used to run Uvicorn. Note that when doing this you will need to run Uvicorn with `--forwarded-allow-ips='*'` to ensure that the domain socket is trusted as a source from which to proxy headers. When fronting the application with a proxy server you want to make sure that the proxy sets headers to ensure that the application can properly determine the client address of the incoming connection, and if the connection was over `http` or `https`. You should ensure that the `X-Forwarded-For` and `X-Forwarded-Proto` headers are set by the proxy, and that Uvicorn is run using the `--proxy-headers` setting. This ensures that the ASGI scope includes correct `client` and `scheme` information. Here's how a simple Nginx configuration might look. This example includes setting proxy headers, and using a UNIX domain socket to communicate with the application server. It also includes some basic configuration to forward websocket connections. For more info on this, check [Nginx recommendations][nginx_websocket]. ```conf http { server { listen 80; client_max_body_size 4G; server_name example.com; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_redirect off; proxy_buffering off; proxy_pass http://uvicorn; } location /static { # path for static files root /path/to/app/static; } } map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream uvicorn { server unix:/tmp/uvicorn.sock; } } ``` Uvicorn's `--proxy-headers` behavior may not be sufficient for more complex proxy configurations that use different combinations of headers, or where the application is running behind more than one intermediary proxying service. In those cases, you might want to use an ASGI middleware to set the `client` and `scheme` dependant on the request headers. ## Running behind a CDN Running behind a content delivery network, such as Cloudflare or Cloud Front, provides a serious layer of protection against DDOS attacks. Your service will be running behind huge clusters of proxies and load balancers that are designed for handling huge amounts of traffic, and have capabilities for detecting and closing off connections from DDOS attacks. Proper usage of cache control headers can mean that a CDN is able to serve large amounts of data without always having to forward the request on to your server. Content Delivery Networks can also be a low-effort way to provide HTTPS termination. ## Running with HTTPS To run uvicorn with https, a certificate and a private key are required. The recommended way to get them is using [Let's Encrypt][letsencrypt]. For local development with https, it's possible to use [mkcert][mkcert] to generate a valid certificate and private key. ```bash $ uvicorn main:app --port 5000 --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem ``` ### Running gunicorn worker It's also possible to use certificates with uvicorn's worker for gunicorn. ```bash $ gunicorn --keyfile=./key.pem --certfile=./cert.pem -k uvicorn.workers.UvicornWorker main:app ``` [nginx_websocket]: https://nginx.org/en/docs/http/websocket.html [letsencrypt]: https://letsencrypt.org/ [mkcert]: https://github.com/FiloSottile/mkcert uvicorn-0.27.1/docs/img/000077500000000000000000000000001456166335300150065ustar00rootroot00000000000000uvicorn-0.27.1/docs/img/gh-actions-fail-check.png000066400000000000000000004014721456166335300215440ustar00rootroot00000000000000‰PNG  IHDRo³±=sBIT|dˆtEXtSoftwaregnome-screenshotοΏ> IDATxœμέwX•υΗρη9μ=Dΐ=*ξ{δΘ™Z–™–eeυνΧ2ΫešfεΧΚ¬ΤJΝ,·–{ο 4s8’2”=Ξωύž$A@)ωΪλq]\ηΎοΟΈο£(―σΉί·Αl6›‘RΕx·' """"""""""7Sx+"""""""""R )Ό)…ފˆˆˆˆˆˆˆˆˆ”B oEDDDDDDDDDJ!…·""""""""""₯Β[‘RHᭈˆˆˆˆˆˆˆˆH)€πVDDDDDDDDD€².‰NΜa‡1νΨ…9<σ… p!ƒ_uprΒΰ燱k' ~~%1œˆˆˆˆˆˆˆˆˆΘ=Ο`6›Ν·Υ29Σ’eδ¬]g k εδ„UΎ}δΆ†ω·Έ­πΦΌcٟ|))·7ͺ7ΦOΔΠΊεν΅ΉΗ;ΌΝ™φ-¦%KKdp«GΡ*\‘|+ΌΝωδ3Lkח謀ρ‰ΗK΄O‘uΖ’˜3ν›n uj“σΛBrfX’ύŠˆˆˆˆˆˆˆˆˆό―³.ΚAζ»0-YvΛc Aυ0vνŒ1(|}rΫ…‡cΐ΄v=ζ°Γy―Sσο`ϊρ'Œ~~ͺ+"""""""""rMαe’“ΙztxΑ'σφΖϊΥ—0ΤΊe7ζΠ0r¦}ƒ9βtžΰΦΒΗ›9?yβΗOF0wώΒOŸαεηŸ">!‘³ζΡ£k†Pδ~nΧΎƒa|ςω7΄iٌQO=vΗύ½ώξGDž=Ο”‰ογγνU3Μ+5-ΗŸ}OwΎϊl\‰χ/"""""""""%«Π² 9‹—άͺWΓζλ/ n υƒ°ώd"ΖΆmon.Δ«|Βo«ΧsβTΤΕ§¬ξnΤ πΓΫ«δƒΟό8;9R+ΐrΎή%_•Κ©ΰ‡M‘C›Ρh€V€~Υ«ό-ύ‹ˆˆˆˆˆˆˆˆHΙ*tεmVΏω‡·ήήΨ|ύ%8;oΔδd²ž~ββnήηδ„Ν’Eκ惉ε豓Œ}λόͺorOJLLbκŒΩ„GœΑ«ŒόJ΅*•ŠΤφμΉ(¦ΝœCtΜ0ΐΠΑθΤu‘ν–―\Ηڍ[ΙΞΙ‘iΓ † „•ΡΘώC‡ωzζœ<Η^MNα§™_`4ήό™ΙγΟΎΒ'γήΒΣΓ½h'+""""""""χΌ[.σ4‡†ΈκΦϊΥ—Šά8;cύκKdΏϊϊΝϋRR0‡‡cπσ»eΧK Όύα'<3βQ²²²-eμί›—ίΛ₯Λρ<σΔ£΄ nΑδ©3Ψ³ο ν‚[π̏ήΤη“Ϗζjr2φοΕΚ΅±²²’sϋ`ΥaΖμŸ‰Γί―*£ž| w·›Κ&dff1wώB„’’’Š―OYξοή™6-›ΊΖ² VVFž{εm*U(OΧNmωmυz’SRiΦΈ#†>„••Qѱ̘=sηchΩ¬W&³gίAΖΏ;šκU+η9ΏόΚ&9zœ_ΚΩσQ888P·v † ꇻ»k7laΥϊΝ\Ίœ€‡»+­š7a`Ώϋ±2ωmυ~όe1ύ{ucP^LύvΫvνε•F€a©iiΜωy1‘‡’‘‘AέΐZ d ₯ΒΖ/iίύHZ5σ(ΆνΪΛ‚%ΏρΪ‹Ο©νš[ρ―^•qοΌ–oΈšŸ?ŽŸbύζmΌΖK8;91aςTΦmάJ·Ξνiά ΣΏψΨrμ½ϋΩ΅χ@‘ϋΉe’dΪΉ+ίν† zE*•PCύ AυςsνϊBΫ<€JΚππΐΎΤ­]3Ο~;;[†?2€EΛWy–½ϋαμδĐϋέ²οΕΏ¦œ―W&³pΩJή)6669zœ…KWδΫξ—ΕΏ²fΓάέ\iΩ¬1 ‰ILύvΏq’Hϋσs!Ž^Œ›«+iiιlΪΊ“MΫrί“ŒΜL&ώχ+ώ8~Š*•+°ΠaB„zνKLΊΒ€)_sζάyZ4mDy_oΆο ασ―Ώ`‘Γ|χγ|222iΣ²)666,ύm K–―*ς“¦|Ν¦­;©V΅2ukr ”Ο¦N';;»Πρ‹+1ι ‘gΞΡ«GŒF#νZ·Θά?ΑθwΖσΒkο2ζ½ œ=ΐω¨FώηuΆξΨΓφέ!<σo0ς?―[ή—τŒ Ύžω#/Ž~^{‡υ›·[ϊά³ο ΫΆ¦Œ§vvΆάί­3»Cή4·ΜΜ,ζ-\ΞΓϋXΆ=~’σ>/½ρ‹–­Ό­s‘{Ϋ­Wή†Gδ»έΨ΅σlμΪ™œ°ΓEσF΅pqq²|_ΖΣγ¦c7 ’i£ϊ„eβδ―0›Ν<ς`?\ Y-όκ # ͺ[›/Ώύν»BhΦΈ!yζq=ΖΈI_p>:&ίvα‘thۊmZrόdSφ:LvNN‘φη'''‡Ι½CY―2,XΊ‚EΛVqϊ ΄fΛφέΔ]ΌLΣΖυyωΉ§HLLβΩ—ί*μYœŠ!#3“ͺU*1 OΌΚx2oαrrrr0›Ν–ωթ͐‡ϊ“ššΖΚ΅qu)Ϊjλ§NσΗρSΦ ΰΥF0eΪwμΪ»Ÿ=ϋβζκzΛρ C‘ΟΰΜΉ(|}Κ2kξ„Α»l†d ω§Οϊ‰~χw£u‹&,[±–Ή –2ζ₯QT¬PŽo¦L`Κ΄ο¬@—mςτ;oΑ2223ψτ£wHMMeΜ{ρ«V…jU*s!Žš/ηγMLμ…›ζΆeΗnόͺαλσg}δoΏ‰Gφ₯iγϊlΨΌ΄ττ"ηυ?ωy OφνY€~DDDDDDDD€τ»εΚ[s>α*€1θφWέ^g𫞎Κ4܎a ΔήΎ€+W©ΰGϋΰ…Ά πΟ­Ÿλξ–{λ~Mάyz\{m2ε_"ΈAύ:̜ύ3O>?šΥΆX«υλΦ.ώό”/ηCY―2T˜BfeeXVŽΥΙmοξξ†1FΰW g''"ϜγωWία΅·ΗΠ§gW Aυ1 lήΎ‹'Ÿ―¦ΟΖΫΛ‹N탋Τυϋ豓<4| Ε½ϋ―ν‹-tόβJII%ότYκΤΑ“> IΓϊLώrΧK:OxοuZ5o @νš\ˆ»T€~χ:L—m±2qqv¦Uσ&„μ?@ff&ΆΆ6̘5·ΖNΒΦΦ†τŒŒ<νΝf3+Φl€η}-Ϋ“pρeš4Κύ{Τ6Έ…”žΆΨ·'ς h܊ˆˆˆˆˆˆˆά{nΉςΆ@Ύ>wG{Ό½ΚΠΌICΊwiΟΌ…ΛHHLΒΣݐ‘¬Z·™œœ23³0›‹φη!%%•/ΏύΑR«6;'‡fκ`ggGffujΧΐΧΗ›ΜΜ,μνμς΄ˆ<‹ΙdΚSƒ89%G{KHmcm­mΡΟw@Ÿ˜ΝfΛ \·""""""""χ¦Ϋ oG̜σ ™™”ρτΰdψiΦmΪF׎mK|œμμl/_… #̈Η³fΓ~˜»€ΓGs_§v·ά_Px{+εΛεθG~?F‡6-INIαΔ©ΣEnzψ(ΗO†SΏ^ztνΘ•+Wyχ£Οˆ‰γΜΉ(NŸ9GBB"χunΗCzyζcήŸΘ‘£Η°±Ιύ£ δε'―•Z¨XΎ27i˜»ΒtΧή„Ÿ>ƒ»›k‘γϋW―Z¬λαγ]–”ΤΤ›J.XYY‘˜˜ΔWΣg3ρƒ7(_Ξ‡c'N1mζœ"υλαξΖ³OΝw>ε}}8w>ΚςΐΆ]{χS±BΉ<Η=BΓ :yΆ99:’–ža™kZz:™™YΕ:ίΓZ·""""""""χ¦[‡·ŽŽšzσφΨ wΎϊ6ŸΪ –1Kΐ½ϋ9φ;Κϋς£FπΪΫγ™·pΝΥΗέέ­DΖΈΞΪښύ‡sζ\‡?FΕ ε8ςGnΘXΣΏΠύ·£}pK–,_͎=ϋHNM%:ζΩΩΩEnŸ™•Εβ_W³~σv7¨GFf&±.ββμLΕ εΨ±{«ΦmbχΎƒΤ©Uƒ¨˜XΜf3΅Ν·Z•J„εqŸpιrIWZϊχ«V…Ϊ5ύ =|”ΙSgΰθθΐΦ{pqq¦OΟ;qκ–γW9_oΚz•aνΖ­tνΨ–5λ·PήΧ7W"ϞΗΪΪο²e0™Llέ±‡ττŒΒ;š4 bΝϊ-ψ=Y“ΙΔO –Ρ’iCόͺΡ²Y#&OAΗv­qrtdŚthΫ*OϋΘ3ηhXΏnžmξnxΈ»r ”f°~ΣvΛJεβPh+"""""""ro»ebdπΟΏ΄),μŽ.¨‚Ζ,Ž”Τ4fύ΄€ϋχ’bωr΄m՜΄΄tΎŸ»ΰŽϋΟΟ+/Œ€UσΖD_ˆcΣ֝deeΣΏwwξοΦΉHϋ‹ΛέΝ•7^yžκU+sςΤikΠτΪνόEΡ΄Q}ž|l0ξξnμΪ{€CaG ¬Uƒ1/ΒήΎ‡φαώnΙΞΞfσΆ]DEΗ¦U3F @ κ<ΨΏ.Ξ\ˆ»D‹¦ iq­dεš+R''Gš5m ΐΦmΫΙΙΙΉγyό}‹ˆˆˆˆˆό(Ό‘³yϋnfΟ[HjjZ±Ϊ9::0tπΪ·ψ›fφΏΛΞΞ?FΏφ2φΜψξ‡"·αϋΈ»»ίυ φ―¬¬¬˜ώΝWΤ¬@FF&©©)ΤͺU“±οΏ‹•ΡŠΕK—εΫn裏πΚK/pωr<•*VdΔγΓπ«^όί+δ)”˜πωϊϊ2eς'΄jӁδδδ‰ΎEDDDDlνμ°±±ΕΚΚκnOEώ&₯:ΌνέAώ8vΌΐύǏ₯ί^·έΏΙdΒl£Ρ€Α`Θχ˜°#ΏσΕΤ―ωύθ$_M¦B…ςτμ~O ŠƒƒC‘Ζ7a?̞Λψ±ο2π~˜ΝfL&3ͺ\!χŽY?- jεŠΦͺQ¬vG`φΌ…Ε oSΣ°2Zagg[άi–zK–.ηύ±γ0 ”+ηΛ„ρc ͺW‘>R¬πΆ΄jΦ΄ 5kΐŸΐΗΖΡ΅KgϊτιU`xϋπCπώΨq,ZΌ”*U*³π—ythߎrΎΎΔΔΖώ“§!"""""r׍FΪώ ”κδ°vνš4iԐ&βκβ@•Κ•,ΫΚ”ρΈ£ώίϋ΅κ5βΧ«ςέ:ς CΑζ-Ϋ°³³ΓίΏ:§#™ςε4^{γ"S©bš4jˆW™2¬\½–Zυρφ{ήΡόEJ›΄΄tkΥ``ߞΕϊ ¬U£Ψ«u§ΝœCȁΠ<Ϋ†α‘α£ς|=ύβ˜’<Ε„ΩlΒd2‘““ΓωσQΜύι ·Τ€««+S&BΨΑ¦σUžvΛ–, μ` BΨΑάέέ˜2ω^{ε₯<ΗΪΫΫσαο²eγZΦϊaC‡ά4Ξ:2λϋμάΆ‰Υ+—σι€ TͺXΡ²ΏIγF„ αΰΎέψϋϋρ݌oΨ΅} Λ–,ྜྷ 9‚Υ+–³nυ ήzc4vvv–ύ‹όLΨΑθoΩΦνΎ.„ aγϊΥ–mΧϋoܚ'Œgλ¦u¬[½‚ž{£Ρˆ­­mΎο‘»›[Ύs{λΝΧo:’4p‹ζΟcΟΞ­lέΌžίN£i“Ζ΄jΥ’% ±»sΫ&:΄o€W™2|4n,kVύΚΞm›ψϊ«/hP?(OίuλΦα멟³uΣ:vnΫΔOs~ Gχn…φ-"""""wFΑνΏG©^y;qά–οŸxj[·ο`䓏3π~Θψ+V&--ώ}{1qόX’’’ιΥ«Χ¬γr|ω?̚CγΖ ©W·..Δq*<όΆ―λΪ·¦s§Ž$''γμμΜ ¨^½:y[ύ}ψΑ»ΈΉΉΉΧiΔΓ9wώ<Λ–Ζ΄―Ώ½ε{Tθί—·ή 侏4kΪ„ zuιΥχΝ=Η/σςΰ άΏ33ΏΣ‘‘8;;σΛΌ9”-[–„„\½J«–-hΈ#ŸyŽύRΎ\9¦ύNNŽΔΕΕ‘ššFέΊu˜0~,F£ΠΠΓωφ-"""""wΖΦΞξžϊ]Wn­T―Ό-ŒΙdβ›ιίΡ΅g_‚·δ‘!Γ8x(Μ²?==ƒΖM ΈCW‚΅ WΏA,ϋu[Κ`ή/ xω΅7˜ωύμ›ϊOHΐ`ψσ2U¨PžΟ?›Δ§ΗΚhδΘοG lΐΰ!Γ-Η,X΄„€ΐŒ›0Ι2V@`,ZΒϊ›yρεά_€η/\ΜSΟζ†#§yό©giάΌ ­ΫwaΒ€ΟΘΙ)ϊƒ‰DJ»Θ³ηˆ<{ξŽϊHKOgΖ¬y„>Š΅υ͟=Ε^ˆΓ―zό«W΅|U«RιŽΖΌΫ|}}όΠ ΞGE‘‘‘Α–­ΫΘΘΘΐΖΖ†ζ͚Π²EsΒ!::†iίL'==€U«Χ²σ/Α`Ll,={χ£]Η–@­Y³&@ξΚΤgŸ~ €/ΏϊšN]{Π±K7ΒΖΑΑϋΟσyϊ2 ,umΪwbΠΰ!˜L&¬¬¬,«;oε…ηžeνͺί¨^­ΫΆο`α’%ϋξ{c9ΙΠGaγϊΥLšψYYYΌτκh233 «(μμμxσ­wiΥ¦#Ÿy“ΙD“ƍhέͺεmυwςT8έzφ¦sΧ–λά’y3L&S‘οQIΈ―k222ωvϊL:uνA»Ž]INIΑήޞϊAAœ;žŸη/°?σ»YDFžaψcRΆlYΒ¦SΧtοΩ‡eΛΓΦΦ–—―ΥnέΊ%NNŽΔΔΖ₯ΫύtλΩ›iίLηεΛ΄m\`ί"""""rgllξ½ςR°ιπφσ©_σΙδΟqtpΰώέ8qςO=ϋηΟG0ωσ/™3χgΚzyΡ£ϋ}Δ]ΌΘ+£ίdχž>Џ6Α­6τ:wκpS-šε>!{Ρ’eτθύŒ›ΐβ%Λρχ«Nοϋ{Xnw-ŽϊAuybψPZ΅lΞ³#G˜˜Θ ‡cίώƒtξ܁ εΛ1σϋΩ|όιδΫ½4"χ$GΖΏ;šροŽΖΓέν¦ύ1β8sφ<Ο½ς6?ϋ wq/έ…™ή™ώύϊZn_»κ7Λ­κ3gώ@jj*[ΆnrWŠ΄l‘[/xνΊυEcώ‚ΕDEEsυκU<`Ή“ N` φφφ\½z•™Χj즀€2γΪψε]ρl6›ωfϊLRRR9vμ8'Nœ .ep£C‘a,[ώYYY΄ nΝΫo\ζβύχή¦ZΥͺ$&%ρλo+8wώ<ΆΆΆΌϋφ8;;ιΌ sκT8ΏX ΐέ{Ψ΅{-Z4»­ώζώτ3±±Έtω2Ϋ·οŠv] S‘ByͺV­bω*θί£§žE³–Α¬ίΈ‰>½οη­7^ΗΩΙ Θ-QFΧήγ””T†ʈ'†[j΄Χ ¬££#ηΝ œ―/‹ζΟγ…ηžeΟήΊάΧ“Χ^σŽΟQDDDDDς§U·.₯ΊlΒ­δδδπέχ³qttdξ¬899Q―n οΌ?Ž―§ΟδΓχί!,μƒτc@Ύμ;p›Ά••E*V¨@½Ίu¨RωζΥy]»tbμ{oρέ¬9y*œ“§roΛ5 τΎΏΗpS›Β”υς’^έ:T¬PυƒψϊΫ™$]ΉΒ £žζωQO“““C»Ξέωξ‡9<ώΨ£ψψxίξe)5ͺζσw¬€ΕΔΖαλS–—ž{£ΡΘΟ‹–3ώΣ©LϊπMlςY©ϋΏΐd2qϊt$sηύœηA^«Χ¬£k—Ξ΄ n…Ρh€E‹f–’ E‘pνΞ€μœœ<ϋΚ•σΰΒ…8rnΨw>*χƒ1WWWœœσΜρκΥ«–ΧiiE―_ΌuΫvΆnΫΞϊ ψbΚdϊτΎŸIŸNΎ©*U*[j©>2dηΟΗh4²nυoΤ s§,]VpΙ…’ŠŠŽΞσϊz@ιλγ{[ύ%&&ZΎ/Ξu)ΜW_N‘ZΥͺ–ΧίNŸΙ—_}}ΣqM7β£qcρρρ&==cΗOpεΚ\]]oO%ν† IDATΩΏ―»’ϋϊͺξλ ξnnμ ΩΗ¬9?·woόύύπχχcΔΓ‰‰εύ±γ–•Δ""""""6›ip>*š΄k·›6hΪ:ΟΎSα΄kΜΎyηύqLόδΏ΄nٜ~}{[VάΕCƒπΠ ΔΔΖv˜ν;v±hΙr–ύΊ‚Ν›R«f;>—λ‘πηSΏζσ©yω8­πVξ wRλΆ¨>χ6ΆΆ6 žj#_Γ±§¨XλoΏ€,^²”χ>Έυƒ©ΆmίAjj*ήήήτι}ξƒ&6φ €7VVV–·Bωr$''“’’zΫύw»― ={t'"β4“§|@Ψαί°±±‘J•Κ;vV­^CγF nϋaίސ}yϊλΠ-K—-ΗΙΙ‰ϊίΡυ€?ί£δ”L&F£‘nέΊr*<‚€:ulŸηψ>ύΪ§ εΛε†ΟΏύƒŒΜLΪ΅ Ζένζ’#7Ξ#99™°Γ‡iΨ >;udω―+0™LτλΫ›AΛK―ΌΖ[oŒ¦iΣ&¬\Ή†o¦Ο`oΘ>…†ρΙΗαιιa)³πΧΎEDDDDD€θJ,Ό­]«&‹—.Έ)ΐ}mΜΫ,Yφ+ύϊτ*©α(η냓“‰‰I·j‰½½G~?ʊ•k¨X‹¬¬,¦Nϋ[;;ΖΎχ6cίƒ9?ύΜΨqΩΉkOžπ6η/· _·sΧn~žΏˆ'Γωΰέ·°²ΚύE455wΕY₯Šε-«―"NGZ~α>p0΄Hηp}ά??ιά±=ίLŽΔΔ$š4jPάK#Rz™oCŽΒΔ]ΌΜΏšΑs#‡Qή7χ–ο΄τt“(η{o^_½v-={t£¬—λώήΖ'$ΰξξΞ‹/<‡££Γ-v£K—/3ν›ιΌψΒsόη…Q ΨWWWœœHOOηΣΙSξhή›6oαΔΙ“Τ`Φχ3ΘΞΞΆ| χέ³IKK£VΝ|φΙDϊ xcΗO°zΝZΊέΧ•7njζ΅W^ΒΖΖ€ΘΘ3,Ώφ0ΚΏΪ³g/O?5WWWΦ¬ό•¬¬,ΛΟπ‚LόθCƌ~ΕRGvΟήΆοΨiι―q£†4kΦ”-ΧaccCRRm_‹όή£}ϋΠ¬iž>Œ!?Œmžς E•••Ε±γ'¨U³ϋ€Qό€|ωrdffbkkk©}{cίSΏψ/γΖOΰ»οgΣ·woΪΆ ζΧe‹HII₯fΜf33ΏϋΘ­Wη$>!žγGr:βΤmχi4©X—j~~8::qεJ—ββ8tp?ΩΩΩ%5υ"λΪ½'α'O~κd‘ΗΪΨΨ2π‘‡YΆx!))₯I‰=°μγΖ―O//]Ξθ7ή±lΏ1Έύψ£±%5F£‘Ꮰ!ιΚϊ8~4‰'Ÿ~žοgˆ7666lΨ΄…ΙSΎdΘ°ΌαG̝7€fMsWsω^+GπΛ‚E<vӏ=ϊΜ_Έ˜¦­ΪςΨγ#iά‘₯ΛΓΫ»,={t£r₯JΈΈ8“H·^ύιΥoK—vΛΉ_/ƒ°sΧ–Ά’τΕΥΕ…)_Nγύ?bΔΘηψdςη;qβΆŠ&RMόΰ &~πΖίΦY/Orrrψφ»Ή;Ξω¨Ύš>›jU*ΰWνoχnΪΉs·₯ΦμαΓGˆΉVξΰΊ)ŸO%6φξx^{YQ}χύ,^ym ‡BΓpuq!ωj2λ7l䁁ƒ‰Œ&**š”ΤTφ8Θ¨ώ―ΐ1φ†μcΙεdeeqρβE~™Ώηn8ώϋYs˜Ώ`!ρρρ\Ήz•₯Λ~½£0;Ώχθw?`ϋŽ$§€pαΒ>›<…uλ7ήVcήx‹ƒ‡BIOO'9%™_z•ΧPχ@Ύ\ΎΟ΄o¦sυκU*”/‡½½= <8xλ7lΔήޞ εΛ±7dO==Šυ6πۊUŒ“ΫΏ­­-U«T!&&–―ΏΑ„‰“ μ[DDDDDώΆ6Άt»Ώ7-Zc0Γιπ“œ?‰Α -[ΣνώήΨΪΨήQ>4lL@͚γV―ψ•ϋφβξαIΫφoΊ OξŒΑl.Ω₯pΧΓΪώ}{c6›K,Έ}β©QlέΎƒρcίeΰύ€ά[o§}3₯Λ#ξβ%jΥ ΰ?Ο=KλVΉO]ŠŠζ“ΙŸ³'dIIW([Φ‹Ύ½οηωgŸΖΚΚHTT4―½ρ6‡εΡ/σΠ ›kr;~‚/§}KXΨ.ΗΗγγγM³&υτ“TͺT€Ν[Ά1nΒ$.]ΎLΣ&i¨!“>›Β°‘πζλ―2nΒ$~˜=Χ2w³ΩΜK―ŽaΛΆνtκОI>δΔΙS|8ώcώ;ŽŽŽtλΪ…—_|GGΗ›ζ$RZ=4|΅¬•[N€{—89ζήΎrνFRΣσmwτΨ NŸ9Ηχ_}Z䱞υμί‹ΰ–M-Ϋ’SR˜5w!Gώ8ŽΙd"¨nm†~gη;8«\₯sό7ΣΎ€e‹ζ|ϊΩfΝωρnOGDDDDDDώfnE[θΧ½goœœΩ½s;ηϝͳ―b₯Κ΄hLrJ2«[^μ9<0θ!ξίGDψŸ«wνμμθ?π!6mXGlLτ-ZŸΡhΔd2Έ^^y[βα-όΰ%ΎβVDJ―ΝΫw3λ§€] iθΣƒ}{ςՌΩlέ±§ΐvφ<φπ@Ϊ·ψ§¦Zl₯-Ό΅΅΅%°v-Ύύz*vvvtοΩ‡θΏ ΐάΆmݜgG ½›Σ»§ΌύζϊτΎ€uλ7(Έ‹š΅Iˆ/0Έ8ξ, ρρΤ¨Xμπ6ςt8uλαξαΑΉ³g‰‰&%%™Kγ,Η4hΤŸrμΪ±•ŒŒ λΤ£}‡Ξ¬[³’œœΪuθLlL4ϋCφ`ggOΛΦm¨Y;#aΉΟ’rvvΖΟ?€ν[6ŸO‹–­qqqaσΖυ88:΄yKΜ&³%@[―>{wοδΐώλΤ₯EΛΦ,ΌΕω_ΧΈisΌ½}Ψ±m 9Ω94jŒ6m;°aέj ν;uαb\ϋBφΰλ[ŽΖM›s!6χwp?όj°cΫfΣΣi΄9›4cΛ¦ό(~;ώ–πڊ¬Z·‰ΤΤ4·ƒƒ‘••ΕΙS§XΌdΩݞŽˆˆˆˆˆˆ”"žžœ/Ό„@bΒeͺω»Cφ“˜@εͺΥhΤ€iξÜωύH‘§#0Τ¨Y›΅«V€=»vπΐ Αψ–+OLtΏεLδi2­p‰ΖιΪƒ•μνΨ»{')))Ψ;8P₯j5VώΆŒ€ΔDˆΏŒ­­-že,ǟ=ΙΩ3‘;z”5kcmm}Λ¨ΩΨΨΰηοΟ†ukΉ—<οΪ±ήύΐΝέGGGμνΨ·w7&“‰+II”―PΡRΧΧΕΥ•«W―ƒΩlfηφ­89έyιΖύmᭈό»=Π§‹–­€{—<φπΝυ€εΞ,^ΊŒΕKڊˆˆˆˆˆΘΙΜΜΌ­v‘§#ˆ<Α` lYojΦ€Up[²³³Ήr% £ΡH§χqcΑV0™LD„‡S©re<<>>–Υ·nn4iΪ/―²ΈΊΊαο_ƒŒŒ Rοh^7RΩ‘{Μ†΅«ιΤ΅mΫw$>!žΔψάςxzx’™™‰­­--Z³{ηφbυ½}λfλΤ# F-άάέΘΞΚ&>ώ2Φ­αJRGΒB1 4kή [;;.\ˆeΟζΔDGqόΨQ‚ΫΆ'ΗdβάΩHΆmΩDΛΦm¨Y+«W―ά4ζΫhά΄9:ί‡3g"#9r8τ―μΫ»›†›¦]¬ŒFbb’Ω²“ΙΔζλiή²5έzτ":κ<'޳¬¬=Š££#ν:vΖΚΚH||<›7ΟS#χNΜ7j‘|6ΈΫSΑΥΝ½XΗWχσ§f­@<*†­;χππΐΎw{*""""""""ςŠΈΤζgΧΞά‡ŽUχ P€ϋ¦œ5i†΅΅ α§NβY¦ •*WaύšUΨήώrL&Œƒ‘πƒF)©iœŠˆΌ«s‘Β5iΦ‚ZuXψσ\ΣΣσ=ΖΫΗ—6ν:°hώ<ξλΡ‹γ%ςtx‘Η°΅΅γα‘ΓψaΖ7%5ν|5mή {Ά^»%¦ ß|†Ή³Ύ#33#ίύΧk3?wΦ²ΝΫΗ—Άν;βμβBdDΫ·n";;;O»―SQ99;ΣΎc||}ΙHΟ`ΘŽύρ;n΄λΨ―²ή€§₯²{׎bυ)Έ+UΉΛ3)}233ΩΊy# 5‘^ύ€$'³oοnβ±9”ϊπvΟΎƒόΌh9ΙΙ©ΤιΟ“ΓγβμΜΪ [8s>šΘ3ηΈt9Ώj<ρθƒxzΈ³jέ&Άlί}Σ Ων»B9ΚΕK—‰ΉG•Šxϊ‰!ψϊx³δΧΥdee1¨/–―\Kzz†εuq<1κF>>„™³ζγ±o’Ν·ίΟ%"ςU*W`π€>ψUΛύ ±~σv–ώΆ€ΰ–MΩΆs/S?ύq“Ύ OΟΤ ¬ ΐGŸM₯W·ΞΤ ¬Ιεψ„|ϋKLLbκŒΩœŠˆΔΩΙ‰GκOνšLώIWςΕ7?πόΘawπnˆΘί)¨ACζΞώžŒ‚[€Δ„xΆmΩτΞκξqχπ€ep[~? ηr· ΊvοɎ­[8w6’Ξχu'¨A#μΫ›§νν\§VΑm‰Ώ|‰U+–γλ[Žϋϋτ'κό9^½Bχ^}8yό+]FΥjΥθά΅σζΜ"9ωjIˆˆˆˆˆΘ]“ΰξΈΫΣ(•bc’Y΅bω]ίxΧF.‚ q—ψφ‡Ÿxξ©aL›<g~˜»Π²Σ֝Œxl0_~2–œœΦoΪ@σ& yjψ#ωφΉgίAϊτΌ_|L½:΅ψόλο–Ήο;Ζ'Ύ‡›« S¦Ν€Nν|ϋωΊunΟ§_|KjZξjΨ…KWπϊ=Λ§γήζΜΩσdffΪwAύ-ώm >e½ψφσ‰ y°?Μ]€‹³£ž†_΅* nEJ±.χυΐΖΖ–Ύ Βήޞ +1π‘Gxbδ(~t8U«ωΰζξN›vnjομμBΟήύ6b$½ϊ>€··e_Pύ†<:l }œ:uλ8‡κώ ςΓFŒδΎξχcoο@Χn=iά΄9 }œ‘߀MϋŽΕΊ£ΰώ>ύ©P±’εuΟή}σΌΞOέ tνΦ—<Ϋ+T¬DfF§#N‘Ν‘ϋ©Y«φMνoΌNEΏ-GΖ”“CtΤy’qquΕΡΡ Wξ!''›πS'Iˆ§¬·7ƒΆν;1lΔH†IΣζ-‹|]DDDDDDD SͺΓې‘4kάΏjU°ΆΆζΑ~χ³wίAK`κU¨V₯6664ͺ_—”Τ4<=ά©^΅rΎ}ϊW―Jσ& °²²’o―n\Έx‰‹—.—ψά{tνˆƒ½=q/q.*†n;`0h0;;[Žgηž}tnLΕ ε°³³ε>= νχVύΉ:;qρe.]Чy“†|υΩΈ?/ω{¬[³’μμl͟Gzz:ν;vαpθ!ΎŸ>}{wΡ’Uπ-ΫwιΦƒθση˜5σ[‡βΎ½°΅΅£|…Š4hά„ί–/fώΌ9”/ 4uus£]‡ΞlX»šΩίΟ -=ΦmΫYφΧ¨U›Eση±ΰηΉT―ξOω KτόκHΨ!ζΟ›ΓΩ3‘yΆ;»Έην) ρ—qvq-΄Ώ’Με―KIJJΔ³Œuƒ0 ξB,ιιiό4η{ΛΏ=vvvΈΈΊq1.Žj~ώxϋψ0oΞ,š?zυβζξqg'/""""""rM©.›˜t/Ο? vuuƒδ”T*W¬`Ωg4-‡φ*γiωήΚhΔΛΣƒψ„€›Ž»φ;ϊmστΘ}ςί₯ψrrrxσƒ-ϋ¬­¬1›L\ŽO€JƒŠ7΅ΙΧ΅ έͺΏn]Ϊ“˜ΔΫ~‚££½Ίw¦K‡6wv""rW,]4Ÿ””d¬­sLΫΪΩx¬««žeψuι"Μf3‘§ΓiΩ:˜rεΛS©rUŽ9l <χ‡μ‘[Ο›ΛΑT«ξΟιπSΔΕ] dχ.† {‚ ¬ βΤIΣs? ‹ŽŽΒΞΞDΟ·¨μνΘΜΚ΄ΌΞΚΚΒΚΚ [[²23 lWœω7hؘ*Υͺsςψ˜L&L&©))xz–‘Σ}έ9z$Œδδ«Έ¦Ήaggg/bc’ωξΫ―JθLEDDDDDDJyxλξζJtL¬ευΥδΜf3ΞNŽ·υ °K—\±e2™ˆOHΒέ-wΥ–ι†Δ6:ζeΚΕKΞ'ότ™<}˜o˜OTΜ…Bϋ»ŸΐΠΑρΨ`Ž;Ι'_|CΣ†A·}"rχTͺ\…†›c2‘”pΛc]\0τ8Ψ²-'Η„Α`ΐΡΡ‘‹ΧY€«Wnώ° ΐΡΡ‘«W―X^§₯₯fμννΈ|ι’eŸΩlΊ©½ΡhΔΚΪϊ–κŸn!ŽιΨΨΨX^ΫΨΨ`2™ ·°ωίhγϊ5F<ψ0~ώ58y⃁†›R/¨{wο䏣GˆŽ:ΟGΠ‘sWμμμ9yόvξΨ†)'ηΆΟQDDDDDδVrrr°²²ΊΫӐH©.›Π€a=φξ%ςμyrL&ζ/ώ•¦‚ m“ˆ<{>ί}§""Ω0 ³ΩΜςUλππpΓ»lμ9rτ8™\ŽOΰ@θα9‡rΎήΨX[³~σvL&C0φγ)Ή%ΥgύζνΔΔΖ‘••Ε†-†vp°gθaΜf3Γ~·„Ξ·κoξό₯,ZΎŠΜΜ,<άέ0›Μd]{{VVvΎσ‘ΗΡΙ‰ΰvX½βWζ4‡ΫΆάςψΤΤTR’“™?oŽεkγϊ5DE'55Χ?Λ x•υ.°ηκΛΪΫΫcΐ@FFfn};BΕJ•ψП΅Ζ­­­0™ώlsγΟmwΫ/+p%) χΚΈ{xrυΚ•[΄ΘUΨόmlmι?π!˞|a4?-XΖKΟ=‰½υλΦ¦[ηvΌ?ρΏΌτΖXjΥπ³΄λΣ³+gΟFρδσ£™σσ"κΦ,΄Ώ‡φαΘΡc<ύβΖϊ%<؏²^e¨Xή—«W“ωμΛι%rN"ςχ²··'''‡Τ΄T υ6ΒΚXπ§ͺI‰ΉεTλΦΓ`0P₯j5zυ}Μf"ΒOX§nξXYYX7(ί²0‘§Γ©^έ/―²FšΆhΕιΣαyξΈ•ΔΔ\\\ρ-W*VΒ₯KqdefR₯ju •«TΕ₯5j uGG*T¬„Α` ¨~CNγΆϋ».+3kkk4lŒ΅ e½½©Z͏θ¨σ8::X§λV― 3#«gοΎƒ£ͺϊ0Ž·₯l €H£‘Ž )DTTPQ₯X(’( ‚_A₯ˆ…’ˆ"’‚‚€ j „τl6»ϋώ\IH ’<ŸgΨ{O»w32>žόŽΙ„ΙdΒ`0P₯ZuΪ΄ΏΣRq9˜Ν–‚'ΉD™6ύΆί5Γΰ*μ™ό²n#ΫwώΕ€'z]ν₯δ)-=gŸ•ήw΅—""η©v}ύΛ>ΗcO`ΦτΙ²Ϋiή’5Υj\GjJ2;wl£vzΔΕΖ°7j7-[·eΑΌ/Έυφ.μώϋ/ΨGι€ZΆnKPpRSRψuν*βbc¨[Ώ!υκ7Μή­Ώe 6βσO§ηšΏJΥκάΨ€)ž^=ǚŸWžžN‡ŽΨ·/Š}Q{hwλmμίΕώ}{sτ―]· nΈ£ΡΘΑϋX»j%N§“²4iή‚  `ΣΣHMMeΛ¦ ΔΕΖπhŸ~|>k:™™Ά<ίI»[oγp\,ύqφ·!Κ„„Πκ–vxyy͚Υ+s•)(β~O…]ΏŸΏ?­Ϋ΄'8Έ ™™™lΫΊ™?wn'²|:έΡ5ΧΪ–.ώŽΈΈΪΆοHXxGϋχνεΧ5«p:/\šADDDDD€(ŒF#ήV•OΈ(Ό½›·ξ`ΫΞΏςΌW±|m[_ψTψό€₯§3hΨ(¦½;Ά(Λ‘ΛΰJ„·"""""""ΓΓΣ‹ΕC!ξΨ5ޞ<OΒιDͺU©t΅—’'‡ΓAbR2—~Pšˆ\ oEDDDDDDδJ»¦Β[‘K₯πVDDDDDDD΄}`™ˆˆˆˆˆˆˆˆˆΘ΅JᭈˆˆˆˆˆˆˆˆH €πVDDDDD$Ήžg IDATDDDD€Rx+"""""""""R)Ό)ފˆˆˆˆˆˆˆˆˆ”@ oEDDDDDDDDDJ …·""""""""""%Β[‘HᭈˆˆˆˆˆˆˆˆH €πVDDDDDDDDD€Rx+"""""""""R)Ό)ފˆˆˆˆˆˆˆˆˆ”@ oEDDDDDDDDDJ …·""""""""""%Β[‘HᭈˆˆˆˆˆˆˆˆH €πVDDDDDDDDD€Rx+"""""""""R)Ό)ފˆˆˆˆˆˆˆˆˆ”@ζν»\ν5ˆˆ”xώ₯J_ν%ˆˆˆˆˆˆˆΘ5Ζ\½RΔΥ^ƒˆH‰—”xϊj/ADDDDDDD1*› """""""""R)Ό)ފˆˆˆˆˆˆˆˆˆ”@ oEDDDDDDDDDJ …·""""""""""%Β[‘HᭈˆˆˆˆˆˆˆˆH €πVDDDDDDDDD€Rx+"""""""""R™‹k ΄΄tΖN˜DLL\žχ##Γ6θ)¬VοβšRDDDDDDDDDδ?ː–‘ι*κ η·νΫ΄ΚΠ¦₯₯³|εκK p»M=Ζκ=ιξΟ“JΑfžm[ŠϋϋΨίyζιŒ°eΉzˆMΓ#¨\lΉu‰φέφ4ήX’ΐϊΓ/©;ΛΩ—ΙŒGΚσΚ gψ7ρ$¦;™τ@pmΟύ‹Κα“φ₯Λ9κ6h|΅— """""""ט"'˜η·½{υ EΣσlΞτYs;aEΈχ5φep»RΩσeΊψjs 最B™¦•½.Ψχ•EρΨμ.ήΎ7¨πULN¦8xia<«χdΰtΉhYΝ›7»RΦί”oŸ©«“˜½>™£In―meάέAX=.=Ό.ΤΒ“­ό/ΉΏIq}ΧIN*½ΝΡ‘”ρΛ»ΉœŠ΄·°°Α-@‹¦7»Wbbβ;aiiιωΆ=_€ΥHΥ UC,ԍπ`τΤ(gaٟ…γj8χ± Y|Ρ'„„pΰ”§Ώ8™oϋwW$2uUc»1σ‘Φν·ρΪβ„"­‘Zˆ…G›ωi ΉςŠގ}ηύ|ƒΫ9σ2gήΒΧΞp‹ΒΫb$5ΣΙ·ΫSΉnDŒϋWζήϊρ4ί?Κ¨οψδ—d>[ŸBηχΊοο>šIΗwωΒ!:L=AR†3ΗάΣM¦Ι˜8*ΎΝ“ςηαLΪMΘ~/ΈρΝ8ΪΌsΨύω΅Ε άώήζnLα¦1q„?ˆ›ί:ΜΚ]…αlI₯Ε[‡ ώ΅_aάΣy~Χ'S<ρΩ jΌCυ—cxqa<Ž3γtΑ«ί%PλΥ"_8Δ]SŽrΰdINjŒ Α뱬Έˆ΅‰ˆˆˆˆˆˆˆˆ§"…·1±‡iί¦Už;n£cb‰Ž‰Νu½EΣiί¦UΎ›$=ΣΕμυ)l‹±Ρ΄²νjZIJw²ωΝέfΡΆTΊ6τad—»Ω‡šψςύΣεάχG/N`l·@V ΓΣlΰυ3»[£γ³θ6εkyσσPmξGίΩ'ωm_†»ο_‡3Y·?ƒεƒB™έ;„•»2˜΅.9Ο΅}>Œ:αξΟQΗμΤ(gΑG„ν±™Δ§:hSΣ— 2.Ϊ^ηΝΨnΉΪϊyiPήΓ½m˜ΦΘ~Ά,Ϋc2i]#ο£ΏO`ζ#eX18»ΓŨﲟΧ}τό$½šϊ±τΩPΚš™όσΩ@φ«-©Œώ>:–fΩΐPj†zpΗδ£$e8iUέΛ½žψT'ΡρYό—Iͺ-;-έpΐFλήD·σΤ'y²₯?+‡Ρ¬²'zΒͺ^HΤq;OΞ>Α}}Xυ\#:0~ΩiΦνΟΘυ];]ΠύΓc€o”cNŸ6΄ρβΧ§ψl}2Ÿ­OfΑ,~&»^ώ&/#ŽŠ`λΛ΄½Nμ‰ˆˆˆˆˆˆˆΘΥQ䚷S»φRϋ|°:‰V'Ή? ΠΏ΅?]ψpK o~ψ#Ζ=ΩsΜNΤq;wΦ³ζ;ήΰφ₯©ι ΐύ}™ώkvψ:σ·dWςdH‡T)cak΄Φ&Σ¬JvmέL‡‹‰χZΚDω@3·^οMLBV9LF¨b`άΣ,Ψ’JbΊ“†ζΉ¦cI¬&ΖxšΧ&“–ι’yU/ή½?ˆΘ€ά_S«κެߟΑ³mK±α@έϊ°pk*v[cl˜MΠΈ’'+ώΞ½stH‡4(Ÿύό½šϊ1σ·μηpMwίΰΓ-³kδΎ9€•»ΟφpMRŽχ>Άk +ώNgώ¦TZWχζ“_’q8aγΑ Wτ$&>‹M‡l4­βΕζC6^ιΐ“YXLξ¨g%ΨΧΔΘ.t¬m%ΛιΒTΐIc&ΊρP“μ2ΥB,ΌΉδ4± Ž\mΫ—Aτ©,~|6‹){άέD» ‡y₯sϋOdQ)ΨBΛjޘŒ0νΑΰ<ΏG‘«₯Θαν•pξea₯Ν9ρκTΧΚ{+Ρ9€oΆ₯’š7ΑΎω4U;μμnXσΩq’ŽΫi\Ρ3GΫΖ=ωxνٝ΅V#‘₯Ύ]Κ»ΰΝΛw7τ‘B™/6€πΜ—'YΤΏ\έ·‰ιNN¦88žμ`γπpN2½gž`ω άo«κ^|Έ& § 6²ρ\‡¬Jgs΄m4―κ…‡)ο0΄V˜%Ουο=n§_«R9Ϊ6­μΕ‘D‡ϋώ‹·•vί3 Qφ°σ`_μΞdγA7Vτ$Ό΄‰ίΨπρ4βa6Π°‚6»‹j!ΎΗν΅½iUέ›Ξu­xš >”­B™6&o>Z›Δξ£v6²εΈF·“”α€Ζ+1ξkNWφ?'’άsƒs6$S΅Xn―c₯νuήΪe+""""""""%Κe oΛGFΫXX–ŸŽ΅¬ œ{’ύ'μ,Ϊ–Κ€[JεΫ(TPψ£Α€γœΊ³–|Ρσ₯gΊ8žμ BΩ}ΨZ—ΊV*½͎ΨLκEzδhh5b1xλξ χϊFv  Ι˜8Ž';ρΛF7ͺθI–ΣΕΦh;b3iTΑ“¦•½ψ}Ώ3h]= 2ΏPΧd4δ •½,~^Γ™χγi6Π€²λφg°α ώ­ύ‰L4σνφ4¬nκ…Ωhΐμi`ŐPVνΞ`ΕtΖόpšΧ—$°rpk’2θ;ϋ=ήαρrΜ΅%ΪFχiΗΈ΅–•fUΌθy“/ΟΞ=•ηΊ|=\κΑͺηΒς]ϋζ—#XϊG«φdπψ§'hXήƒ…ύΚεΫ^DDDDDDDDδJ*RΝΫ ιΡ½+=Ίw½\Γηθc€Ie/&ό”ΘώYtͺ“Ι„ ©ZΖΒ¦ƒΆΧ6²Q5δβ3ξ]G3iτF,ΙηψυO=ΫσΥ(gΑιr‘a?{/ΝζΒ` Η.γx˜ 4«βΕ΄5IT ΆPΚۘ#<Ν―ήν…T ±°nFŽk羏*η½— 6²Q­LφϋiUέ‹΅QlΆΡ¨‚'M*{±ιίφΩΈεΜz~Ω›ΑηΏ§Π¦7cΊ²ωεp²πσξtξ½Α‡S*rjBΕ\Α-ΐ—ShRΩ‹Ι=‚ιy“/ Κ{’–™w±άe-μ9f'!νμύLくŽ0{} [£mtoδΛ”Α,~Ίk£2ˆ=­ """"""""R29ΌMKΛ]S`Δλo1βρΥ§(:Χ±2gC mkzη(`Ž%;r„’ωιΥ̏ίؘΈ"‘ƒ§²˜½>…/7€Π§…E―§n„'5Κy0hή)φ·³χΈsOQ₯Œ…ΊΩ»nηmJaιŸiT Άp{+}gŸ`χQ;;b3Ίΰ]λϋΰλ™χΧΤͺΊ7ίlKεΖ3₯šTφdυžt<Ν+—Nεόύ9χ~”Σ§O_νεό§ΕDG³ψϋοφ2DDDDDDY oEDaχήί“ ΰ2Ά«[Ώa|υεηW`URRΔΕΕw΅—!"""""rΝRx+"R‚=Ϊ§χογηˊ}μζ-Z*ΈύGppš·hΕ―k‹ΎΧb±πΕάyΌ5n,½{ŒR₯Jsπΐ&½qqq |θaZ΄l‰Υʞ¨(¦MBRR}ό “§~ΐΫocǎάΫύ>Z΄lI`` ǎεΛ/Ώ`ύΊu΅&£ΡΘύ<@ΛV­1 ¬\±ƒαly“ΙΔ}χίΟΝ7·ΐΟߟΏώϊ‹©“'qϊτi―U‹>O<Α†ί7Π‘C6oήΜΗ}HFF•+W¦Χ£½©\Ή2III,όz?-_@ΟΒΣΛ“₯JΣ A²²²ψα‡%Μ›;???ϊ<ρ$uλΥ#!!žΉ_~™cν₯J•βΡޏQ·^= ΐΪ΅k™9c:N§“ϊυπ@ΟόΎ~=:wΑΣΣ“m[·ςώ{οb³Ω¨S§>ό0aaαD:ČΣΩEγoδΑ‡ζΩ§Ÿ*πJ—.Νγ}ž NέΊ8N6oΪΔ΄¦b·Ϋ/κ{‘³TσVD€;Έ5j^Ο-m;λΈ~ώώy–J(Hz Š­.d‡–oΏυ/ }“ΩΜƒ= @»φνiΧ“'½ΟΛΓ‡c1›yδΡή€₯₯ΡηρΗΠ―/[·n₯MΫvtξ…Σ?aθsCΨΊu+Ο„Ω|qςž{ο₯m»φ|τα4ή|ύuͺV­JνΪ΅έχzψa4lΘ{οNδΕž'9)‰—†ΏŒ‡‡‘άΠ¨oΎωcǎ‘JΥ*τz2ϊυ7Ψ²yCŸΒΜΣy GOš5oξΏC‡[9rδΟ>σ4σηΟ£ϋ}χS±R%† J™2exmΤ(>ϊπC|π!L&ƒα/Ώ‚ #^y™1oΎAυ5xμρΗέcW¨P‘š5―ηΕžgάΨ1ΤoΠ€φν³¦ΒΓΓyιεWXυσΟ qdΤ¨Ρψϊϊζx?=Γ#φ&00ΧF½ΚƏη†FJl½`‘ …·""%ΨΟ+–±ϋᅧ=ΐ­[Θΰφη˘^©„Βφ-Œ―ζΟcοή½DGG³|Ω2Κ”Ιή Κ‘£GΩΉcμgβ„ ,ZτMžcΔΔDσΏ·Η³iγFbcbψaΙb, ώώ₯.j-·έή‰ΩŸ}ΖζM›8tθ ο½χ.YYY˜Νfn»½S'OfΧ]ΔΖΖ2uΚdΚ–-KΊuμυƒ)“‰Ϊ³‡έ»v1eςdš6kFι₯iίαVώΨΉ“Eί|ΓΡ#GΨΈa‹.δ»ΊΊη?qβ_~1‡ψψx~X²„„„Κ”)Cω ¨U«6οNœΐΎ}{ωλΟ?™9s†»_­Z΅ )[–Iο½GlL {φμαΓiΠα֎x[­ξυO2…γǏ³sΗ6oΪDpHφ»Ύ½Sg6mΪΘK–ΝΜΣΩ±s!eΛζx?=ChX(»wοfοή½όρΗNF½:’m[·]Τw """"""9©l‚ˆH χOΙ„5―ΟρΉ(ΒΒ# 5ο?ΑρΉB Ρ·°:δώsZjͺϋΟkΦ¬α–6m™:νC6όώ;ΫΆnaλΦ­yޱλοΏ©\₯ έξΎ‡ππ0j³[Ά°όόύρσσγοΏώt_KNJrΧ{-[Ά,&“‰WGΏ†Λεr·±Z­žžNVVϋφνsίΫEVVεBC £^ύϊΜϊlΆϋΎΩl&υœgŽ>tΘ=ΆΛε"-- €π°pβγγ9zτ¨»νίύεώsXxV«•ι3gΉ―  ₯KeΨ)))Δǟrί?wވΘH6oάθώl·Ϋ7f AAA9ζΉΠ3όΈt)OφνG­Ϊ΅ΩΊe ~ƒ1ς|ί""""""R8 oEDώΞ p33mE;{~­ΫφαοηοΎ~‘ΏΑQ'· μl=ίΑΠ―/ίHέzu4δ9’’’ύκΘ\m;άz+=z>ΘΚ?±eσ–,^ΒΈργ/jN§ G0 `ΟΜ ==»nmί'ϊΈCΥs]_«VΎ.— —Λ…Ιd"#=\ΚΜιΣσ]C~οΒιtζ;σΜΊ²Χ–Nτ‘C<7dpžύΛ–-—οΨf“ΙύόRΠ3¬\±‚;vpΣMM¨[ΏέξΎ›ωσζΊλφŠˆˆˆˆˆΘΕSΩaΥςe|ϋυWœ:yⲕjΈmΫ΅£jΥj¬^½Šχί{—‡ΏD:uΞΥφΆΫoη«ωσωtΦ,~ύυNŸNΈθωRSRHJJ’ζυgw{{{ @BB>žφ c2™HOΟ Ζu5 |ως xϊiόK]άΑjKXΒƒ=Lƒ gΐSOc4f5ιrΉψώ»οθΫΏ?υκΧ§J•ͺ xϊi,œ8qφ}τλίŸΚ•+S΅jU<υΏΎžψψxV\Ihh(½œππpΪΆkΗ=χvgοή¨ΧΓ_ώΙ³Ο€b₯JT«^Ηοƒέn`ώύμΩ³‡‘ΟΏ@₯J•iΠ =ή‡ΓgJ>δ‡%KhΪ΄ν;t ,<œ‡zυ’lHϋφνΝΡ g¨ί >?ςaααT­Z•›š4αΠ‘ƒ…ZƒˆˆˆˆˆˆδMeDDJΈsƒΫβ¨w p8.6Gι„ΰΰ2tιvί}ύ«TΉΰŽΫΓq±Ε²† ™?>AΌ8όe, φοηΝ7^Ηαpž–Ζϊuλxν77v τ!ύϊχg”©ΔΔΔπωgŸ’‘žΑΘWGρh―‡ =ηWσηc±xΠ· «~^™£DΒWσηa4y²o?ό|}ωγΟ?xkμdχύδ€$–ώ°”ΑΟ ΕΧΧ—-›7σΡGΩ;{_yy8χιΓΈρo“˜˜ΘΗ}Δ¦sjΝ^ΘΫoη‰'ŸdԨќNLdξ—_Π£GOχύργΖςxŸ'1r$§“ί~ύ•9ŸΟΎΐˆg8°Ÿρoγ=yδ‘G‰‰e̘7INNΞΡ g˜όώϋ<ώΔŒ6™™™μΨΉƒŸ|R¨5ˆˆˆˆˆˆHή i™‚›‰ˆ\Ϋκ6h|Uζ½Α-dΠΥσαή—ΤχσO§“œ”Tlkω/ΈΎV-†}žGιu΅—"""""""!*› "R‚—)SμΑ-dοέΉ}λEχΫΉ}«‚[‘+DeDDJ°ω_~~ΩΖώuνjΒΒ#r”OΈS'OK½έ’Τ”Tώϊλ―«½ ωQΩ‘BΈZe„ζ-ZQ§^ƒ ΆΩΉ}«‚[‘+LᭈH!ό—Γ[ȁ[·^ƒ;qO<ΑαΈXv¨T‚ˆˆˆˆˆˆΘU‘πVD€ώλᭈˆˆˆˆˆˆ”<:°LDDDDDDDDD€Rx+"""""""""R)Ό)ΜΕ5PZZ:c'L"&&.Οϋ‘‘α τV«wqM)"""""""""ςŸU,–άΆoΣ*W@›––Ξς•«/)ΐν6υ«χ€»?[L*›yΆm)ξoμ[`η™§3ΐ–ε"lθ!6  Rp±εΦ%“­4σ»,γ;œ`ΊΔ}ΫIN*½ΝΆDό=esϋ³ r±t`™ˆˆˆˆˆˆˆ\iEN0Ο n{χκA‹¦7ζΩ.22œι³ζ0vΒ€‹pοkμΛΰv₯²ηΛtρΥζΜ9I… 3M+{]°ο+‹β±Ω]Ό}oPαͺ˜œLqπΒxVοΙΐιrΡ²š7ov €¬Ώ)ί>SW'1{}2G“ά^ΫΚΈ»ƒ°z”¬΄ρŸπuΧθHΚψε,%m«ω³ """"""""r±Š΄Ÿ±°Α-@‹¦7»Wbbβ;aiiιωΆ=_€ΥHΥ UC,ԍπ`τΤ(gaٟ…γj8χ± Y|Ρ'„„pΰ”§Ώ8™oϋwW$2uUc»1σ‘Φν·ρΪβ„+Έb))Šގ}ηύ|ƒΫ9σ2gήΒΧΞp‹ΒΫb$5ΣΙ·ΫSΉnDŒϋWβήϊρ4ί?Κ¨οψδ—d>[ŸBηχΊοο>šIΗwωΒ!:LΙoϋ2ά}:œΙΊύ,Κμή!¬ά•Α¬uΙyuνσaΤ χpŽ:f§F9 †<ͺ lΝ$>ΥA›šήΈ\ιpΡφ:oΖv Ό€χπΦΣάXΙ‹eCιΦΐ‡ή³N°=&³ΠύGŸΐΜGΚ°bp(v‡‹Qί%ΰοeδΟQ‘l}9‚ΆΧύΊ—Ƴ縝”α»επ΄xqa|žs-ύ#a Nρό­₯Y;4œ{oπ‘ηΗΗΨw";€hϊq™»Ί IDATj–σΰ§AaΌpkiF~›ΐφ˜Μ|DDDDDDDDDJͺ"ΧΌ½˜Ϊ΅—ΪηƒΥI|°:ΙύΩh€ώ­ύιΪΐ€[jxσΓi4θɞcv’ŽΫΉ³ž5ίρ·/MύHOξoμΛτ_³ΓΧ™Ώ%ΣΈ’'C:” J [£m|΄6™fU²kλf:\LΌ/˜ΠR&ΚšΉυzob²rΝa2BΥ γ–žfΑ–Tӝό804Ο5Kr`51ώΗΣ|Ό6™΄LΝ«zρξύA…:Τ+/mσf@k†t(ΝοlΜψ-™‰χζλ₯iP>ϋ=υjκΗΜίς©‹κφ:Vͺ—΅P+,;θΎ§‘[ž˜gΫΙ«’άΎ4]Ξ|Ώ}[ω³&*ƒYΏ%σBΗMtΠ‘–7Χ•³p]9 ‚Μ”+uyλςŠˆˆˆˆˆˆˆˆ\Eo―„s,+mΞqˆW§ΊVή[‘ΘˆΞ|³-•ΥΌ φΝ?°«vv7¬‡ωμ8QΗν4虣m㊞|Όφlh`5zNXΚ»ΰΝΛw7τ‘B™/6€πΜ—'YΤΏ\έ·‰ιNN¦88žμ`γπpN2½gž`ω Όί‚άX)η³4«βε.=P΅Β,ξ?ζ9/Υ]υ}XφWίlKeΟ1;kφd”ΟχuάΞΆx{ΩΩ’ ι™.ό<­ψxιy“/O?Nλκή΄ͺα͝υ¬< NDDDDDDDD€€ΊlαmωȈbλŸΛςΣ±–•sO²„EΫRpK©|Ϋxšσ¨[£Α€γœΊ³Sαϊ¦gΊ8žμ BΩ}ΨZ—ΊV*½͎ΨLκEzδhh5b1xλξ χϊFv  Ι˜8Ž';ρ+8€΄;rΘ=₯Cώλ?Ώ/€G!Ÿ΅ ρ½ǁ“Ωe FtΰΡζ~9Ϊ>ρΩ ΆΗfςΐΎ<ΠΨ—v5½ywEyρυ42‘{·ΥΞ{gυ{χσXs~ψ3[RxcqŸ?Β-5Š^ήADDDDDDDDδJΊlαmξ]/ΧΠΉϊiRΩ‹ ?%²Dκδ_2αBͺ–±°ι -Η΅M‡lT ΉψΧ΄λh&&a›ερσ:»kυŸzΆη«QΞ‚Σε"Γξr‡·i69vŸ+9Γ™cάέΗμԍ8 o8οYΦοΟ zYKžύw΅SZΛ¦αα9Ϊ&ΣφdŠƒ―·¦ςσsaΤ=Sxή¦”|η©QΦΒοlξπΦι‚Gg§{#_κFx0σ·d†ί@½H†u,ΝƒŸgΑ–T…·""""""""ς―Sδπ6--ο_Γρϊ[`00zψΠBχ)ŠΞu¬ΌΈ0žΫj[sόŠΏ8–μ ΓξΚσ °sυjζΗΤΥIL\‘Θ]υ}ψ%*ƒ/7€πUΏ²½žΊžΤ(ηΑ y§Φ1»†ξΈ₯§©RΖβ5ηmJΑίΫHΗZV*[Έ½Ž•Ύ³Oπj—@lY.†.8EΧϊ>ψzζ.YVΪΜΑSYΜِB‡λ½ωψ—dφŸΘΐ.ύ#Χ$Ρώz+‹Ά§ςσξ ~y>ΠέΦΊUπ$Εζbά„B?Ϋ?―1ξt>ΖB­%?^“Ÿw₯`fG¬qKO“bs‘ιp嚫_kξωΰ•‚Ν4­μΕ¬uɬڝΑΨnΩ;–§JΒj1po#_φ°³ρ gJnœϋ³ΰeΉτ]Ε"Eεαι‰ΕβΙ€’"""""""’Ώ"2ŒcωΚΥ¬]·!οά;LΧΫΐς•«‰Œ+ΚΤΉάvf·m·†>9w¬meσ!χN;VΰƒΜ,θW–οw€Ρrόa¦­I⃃i~ζ°²‹a2Β7ύΛbwΈθ2ι(ή?J–ζ=YΦ½³vښdζnLuχ™Ϊ£ ΑΎ&ξœr”£ayΟ|»©’'O·)ňEρΤx%†e₯qο 9Ÿ}XΗ|Ώ#Φoζ›­©|Ω'Δ]~bτ€e:i:φ0ν&ζ‘f~yM“'?/#]κYιτώQΦFej-ωρυ4ςήύAL5™†―Ε2mM23 ΑΧΣΐγ³Nδšλζͺ^|π`0―M¦Ν;‡ωύ€/ϊ„ZΚD ‘.Γ‚­©4Η3_ž’ηMΎ<Ρ"ϋΠΆ‹ωYΉŒF#>Ύ~xyy+Έ‘22s'¬…”––ΞΨwή'&φ0½{υ EΣ/Ψ~νΊ LŸ5‡Θˆ0† ~«΅ψ~•}ύώ ξ™vŒ=―•Ο·ΜΐΥι4'ώήFŒ—πΨv‡ [–+Οέ½Wz-"%Yݍ‹<†―ŸB[)΄"%vV«7Γ?MdDΣgΝΙ.—7Έέ—Ι–'ΉŽυš nJ[/=,΅˜ Εάu-"ežž nEDDDDDDδ’iην?Ξ݁۾m+¬ή9ƒΩ΄τt–―X}Y‚[€j/GS-ΔΒ–‘|ΰe;ƒMDaEέy«]·"""""""r±Š%Ό…œn^.Wp+"r%5Όυ/UΊ˜V""""""""׊b oEDώΛފˆˆˆˆˆˆΘ•V|ΕNEDDDDDDDDD€Ψ(Ό)ފˆˆˆˆˆˆˆˆˆ”@ζ«½ΉϊΒ Ί{Xhh6Rݘύυφ8lΙr2/ΣΞaWΡΛ£Ώ5ζ5š5m’γZRR2όω'ߟΒαΓGŠ<ΗωžyͺΎΎΎΌ9v<ƒž} “ΙΔΫοΌ[`?ƒΑ€Α`ΐιtπ錏˜υΩη¬XΉͺΨטŸ›7β…ηΣνήΕ>φ[c^cϋΞ?ψ|Ξάb[DDDDDDŠΒ[‘kά O χyXr]―n4RέΓΘύfΎΜΜb’-³Θs­XΉŠOf| €Α!!!<ϋt^}ε%žθχt‘ΗΏί~[ΑXΈ_8ΉΉYSϊ>ω8=ξ ΐW_ΓΎύ.ηςDDDDDDDrQx+"r ϋΜκE5SΑζύfš<œšQ€ω’SRˆŽ‰q>ΓΜOgσκ+/αννMzzz‘ΖΏί7nΊδΎί~·ΈW"""""""R8ͺy+"rδi)TpϋκF#ƒ>ξϋέΊήΑϋί²K |ž6™:΅kεθ{ο=]ωβ³,ωφkή=’ΐ€€\σϋϊψ0λ“iΌψόx}Τ–~ΏΕί.`ψ°‘xxxψ~EDDDDD€ψ)ΌΉ… ΉJ%D9œΉΪm9οΪ}Β †b[GΩ²!tΏ·Λ–―pΧ—-H•Κ•©W·6Oτ{ŠaΓGrӍΈ£s§‹ž;Ώq~[·ž‘£ή :&–φ·έAFFξέΖ}ŸxœΩsΎ€ΗΓ½ΩΎc'Γ_ŠαΜ{yφ©~T©\‰ƒŸgΚ΄yͺί“ω‘BωHήχ&?,]FίΟ²wί~ή›0? ;HνΨ‘=C†ΎΘσ/ΎLέ:΅ι|ϋmάάΌ)ƒžyŠ3?£Wο'XΆ|γή|ΘΘΊtΊ‡{φΰ½ΙS:l8₯Jω3ζQ9ζχττdܘ׈;|„qoO²Cξΰΰ =7ŒWFΎF³fMθvΧύ~EDDDDD€θT6ADδtŸGΞύG9œ<”–A'‹‰WΞμμ|-ΓΖb»ƒ)V/ž³Cχ>3lφKšχ;:sםs\Ϋ·οMώ ΠcX,fƍŸΐ‰“'9rτΏ[OΉre/z-EgεͺΥόΌj Ÿ}ώ%·uμ€ΥŠΣεβφΫ:ςδ€gˆΪ»ΨΗsησdŸήyŽsΟέ]ωε·u,XΈ€χ'@™ΰ`BΛ•ΐl6σφ;οrβδIŽ;Ζ†›([6€ϋ»ίΛ§³η°jΝZζ}υ5nhΐ;1iκ4ξλ~3>ύŒuλ70ρ½Ιτ}β1,–μοήl23zδΛX,FŽ~ΓžGD„³mϋώή΅€ƒŸ'+Λq±―WDDDDDDЁΒ[‘fΖΗΣΨ»w/oŒŸηύαΓ†βζζtμ|Χ%ΟΡΠdΚρΉšΙH'‹‰Εv``±έA'‹)Gp Πΐl‚K oΟ?°¬L™2ΐΜO?cϊΜΟςKDDDDDD.ΥΌ)aή;ž–.㢎>l¨ϋϊΉΑν›ωμΚύ7:}:__ίΧ¬>VχŸ+UͺxEΧS±qq€ͺU*»―U―V5ίφΡΡ1ΤΌ†ϋ³Ωlfϊ‡SΈ©q£η:t(š:uΞPf4xcτHZΆhŽέnηθΡ£9ΖT±"σΏœν~Χ+W­&!α4S¦}Δύέο&τLɈ>=ŠΡddήW_3tΨp&Mω€Ϋ:ζ‹ˆˆˆˆˆΘε£πVD€:?ΐ-ξΰ6―ΓΙώ©qΫΙbr—Px-ΓV¨ΎE‘••…ί™@1)9›ΝΖC=ξ'00V-oζΦφm‹uΎΒpαΒΟΧ_Ÿ‹κ—œœΒΛ–3π™TͺX‘6 [Χ;ςέ»`α"Z·jΙ]:Q>2’ώ}ϋΚέ{ œkξόtΏ§wtιDΕ εyͺ_7jΘίgΧͺυB{΄έ@υκΥxζ©Ύ;vbO<ώ(Ο θˁƒ‡xα₯WHLJ*pž-[·1ϊ±τz¨'Ο θǁƒyώΕ—έ5rΏZπ ^ž^αB’NJϋwͺWRXX(C=C­λk’˜˜ΘʟW3}ζ§ΨνYW{i""""""ς/£πVD€ώ«α-ΐ OKŽΈy™›ig‚νίUΎ@DDDDDDδίNeDDqlvζffqŸ‡™†&“{'n”ΓΙ‡ƒΉ™YW¬T‚ˆˆˆˆˆˆˆœ₯πVDD8μrΩY«έ΅"""""""%E±…·ii錝0‰˜˜Έ<οGF†3lΠSX­ήyή‘³Š₯ζνΉΑmϋ6­r΄iiι,_Ήϊ’άnS±zOΊϋ³Εd R°™gΫ–βώΖΎφwžy:£lY.Β†bΣπ*_›ŽΏΫžΖKXbψ%υgy";γ2™ρH™b^Yα &žΔt'“.°νΉίuQ9œPΘ3œδρ_y+"""""""%S‘ΜsƒΫή½zΠ’ιyΆ‹Œ gϊ¬9Œ0ι’άϋϋ2Έ]©μω2]|΅9…sNR!ΘLΣΚ^μϋΚ’xlvoίTψ‡*&'SΌ΄0žΥ{2pΊ\΄¬ζΝ›])λoΚΥvώζTϊΞ>‘η8σŸ,K›λ.mΗςu‘žlεI}mŠλ»NΚpRιΕhvŽ€Œ_ξοJDDDDDDDDδJ(Rx[Ψΰpί»”7ΐj€jΘΩ“ΠλFςΣt–ύ™^`x{5 œ{ŠψT_τ !-Σňoγyϊ‹“Μ{²lΆmσbΩΐΠΧΆΕfςΏe§iPήσ’ΧP-ΔB΅ Ÿ"/"""""""""%O‘ΒΫ±οΌOLμα<ƒΫ9σΠ£{Wχ΅σάΡΓ‡^ςάή#©™NΎέžΚσ βωkT€ϋΧείϊρ4kφdΠΈ’'Ÿό’ŒΛ»ŽΪYΠ/;4έ}4“~ŸŸΰΟΓ™Τ υ`r`wΐΉn#%°ϋ˜ŠAf†΄/ŝυ}XΉ+7–œ¦K]+SW'‘nwΡζ:/¦φ(ƒ·GΞίΥw8aΕίι,~¦ Ο„―Ο΄)EΟOβrαΌ_νς1δsv—g–ΣΕΰy§˜x_0֜ΏΏŸœα€κ𾺍+zr,ΙΑυ#cΠڟΡwΠρέ#΄¨ζEΓςžŒϊ.»lΒ?e#>λΒ‹ γ9‘μ vxΞη_°%•w–Ÿζh’ƒ65Ό Θω#2ύΧd>\“ΔΡ$u#<Σ5Za΄›p„Ξu¬ <³CϊΖ7γπυ2°rp―-N`έΎ –<Κ܍)ΌσS"± YT Ά0ϊŽ€Bο,^°%•‰?%²€«‘‡šψρBnjϊ.!ΗwύύΣεrμ|vΉΰξ|xύΞ@LΖμ £ΏO`ώ撝άPΑ“ έƒ ς5Rkd ^eΦ£!΄½Δ]Ο"ηr8˜LΪΙ-"""""""…W€ͺž1±‡iί¦Už;n£cb‰Ž‰Νu½EΣiί¦UΎ›$=ΣΕμυ)l‹±Ρ΄²νjZIJw²ωΝέfΡΆTΊ6τad—»Ω‡šψςύΣεάχG/N`l·@V ΓΣlΰυΕ ΩkŽΟ’Ϋ”ct¬εΝΟCBy΄Ή}gŸδ·}ξΎΞdέώ – evοVξΚ`ΦΊδ<ΧΊφω0κ„{Έ?G³S£œ%Wp›—I+“¨^ΦB‡λs‡~^F”χp―kγAf£υ²ί-ΛΕφ˜LZΧΘ;tύ}3)ÊΑ‘Ψ.F}—ύόΏξΛ η'ιΥԏ₯Ο†R>ΠΜδŸέύΎΪ’Κθοx‘ci– ₯f¨wL>JR†“VΥ½άλ‰OuŸΕq™€Ϊœl8`£u o’ŽΫyκ‹“<ٟ•ƒΓhVΩ“Η?=ΓYπ;‰:nηΙΩ'Έ―±«ž cDηΖ/;ΝΊύΉΎk§ Ίx πν€rΜιΒΖƒ6^όϊŸ­Oζ³υΙLz ˜ΕΟ„bwΐΛίΔγοeδΟQ‘l}9BΑ­»=σj/ADDDDDDDώeŠ\σφbjΧ^jŸV'ρΑκ$χg£ϊ·φ§kƒμ±·Τπζ‡?h\Ρ“=ΗμD·sg=kΎγ n_šϊ‘Ω»aοoμΛτ_³ΓΧ™Ώ%ΣΈ’'C:d,T₯Œ…­Ρ6>Z›L³*Ωε2.&ήLh)εΝάz½71 YΉζ0q—z·τ4 Ά€’˜ξδΗσJ#δεTͺƒI?'²|PXΎmZUχfύώ žm[Š 2θΦΠ‡…[SΙ°»ΨcΓl‚Ζ=YρwzΎC:”v—bθΥԏ™Ώe?‡k’Έϋžh™]#χ•Ξ¬ά}Ά‡k’rΌχ±]Yρw:σ7₯ΊΊ7Ÿό’ŒΓ fοzމΟbΣ!M«x±ωW:pΰd“;κY φ51²Kk[ΙrΊ0p˜‡Ιΐ„ξA<ΤΔΘ. ρζ’ΣΔ&8r΅ύm_Ρ§²ψρΩP,¦μqwOν&ζ•Ξμ?‘½λ·e5oLF˜φ`pžί£HqΙ΄Ω°X<΄ϋVDDDDDDD ­Θαν•pξea₯ΝXΟ)SΠ©•χV$2’sίlK₯E5o‚}σHj‡έ λa>;NΤq;+ζ¬/ΫΈ’'―=»³6ΐj$΄ΤΩ±KyΌyωξ†>T2σΕ†žως$‹ϊ—»ΰξΫ‰?%r{+•‚σzZUχβΓ5I8]°ρη:”fmT:›£mldΛ7p:n')ΓIWbάלμN$;ΈηζlH¦ώk±ά^ΗJΫλΌ΅ΛV.»τ΄TΌ­> pEDDDDDD€P.[x[>2’ΨΖ:ΐ²σu¬eeΰά“μ?agΡΆTάR*ίΆ@‘‚Β ³Ÿ-ω’ηKΟtq<ΩA… 3UC,T ±Π₯•J/E³#6“z‘yφΛ°g—…˜ί7χ‘fηjTΡ“,§‹­Ρ6vΔf¨‚'M+{ρϋ~fΠΊzώAd~‘ΙhΘ*{Y.όΌ†3οΗΣl Ie/ΦνΟ`ΓAύ[ϋ™hζΫνiX= ά\Υ ³Ρ€ΩΣΐŠ!‘¬ΪΑŠ]ιŒωα4―/I`εΰ0ΦDeΠwφ {ΌΓγ+δ˜kK΄ξӎqk-+ΝͺxΡσ&_ž{*ΟuωzΉ>ΤƒUΟεΏ{yσΛ,ύ#U{2xόΣ4,οΑΒ~εςm/RTN§“Τ”d<<=΅ WDDDDDDD tΩΒΫs*»ά}Œ4©μΕ„ŸΩ"‹Nuς/™p!UΛXΨtΠ–γΪ¦C6ͺ†\όkΪu4“°Νςψyέέκre—^ΘΟ·ΫS)γg’QΟ|Ϋ@vΫ¬ŠΣΦ$Q)ΨB)ομw°τΟ4ΆDΫΩ%π’Χ\5ΔΒΊύτΌΙΧ}mΣAAgv1W9σ~n9SKΧε‚Ν‡l<Ρ"»ŒA«κ^¬Κ`k΄F<9™βdΔ· xύŸ½ϋŒŽͺϊ0ώLI2Ι€B©τή[‘HG€(XPA₯«τήD•ή›ˆ R­‘&MJ¨*½CHHο3“2εύœ0€B‚πώέΏ΅X‹ά{ΟΉϋ–DάΩ³ΒZΥzψZ*Χ£3θμB›ͺŽL}ΡƒSξςϋeo:σZ}mρm:‘B£r–tχ΄nΣ§ηά,·rI;Df―7[|ϋνΌž―$³±IΦK! ˜Šn œιΦΐ™ΝΣi1;œ» ΖUS Qιii€§₯ε B!„B!ώΣ ₯λ³χT˜4m&“>υHc £SM'6„€ΠΊͺ£MςMD&›HΝΘ=aϊž]8~3ω{Ήkdέ±6…€ΠΏ™λ#ΗSΛ߁ΚήφŒψ.–kQ\‹Κ`ψ·±”/aG-ΜͺΫοN¦°σΌήfά―η ΄¨¬)Π9šWrdΛYAχ[=4*ηΐ+Τ ͺxη^©œ›ΎM]ψώ€Ž―ώHζfŒ‘Ή»9š•`κίΜ…₯ϋ“ψε/=7c2˜Έ%ŽX‰Χd&{[TrdΧ=>nj<UT.i‡½ φ\Τ[―IŸnaβ–8Ά­ηNœ‘!)ΔιLTυΞΉωA.J.ίοi|/ΡΔ›γΈk$6%³­ΓƒΟΊ–Ώ= J;Πsu…₯³χ’ρ?ΕY+Έ―Fe0ξΗ8NήNγZTk&SL«ΔΫUΕ?΅Ζa FŒζόί!„B!„B!ž„B%oό}Ω½ο‡Ž†δ|€%{βλΠΡvο;@€ξg/ά―Ά}ΉžmεfϋNœΊΖk_Dζ;G™βj~P’_ώσά¬pΎ8˜Δς·=»Σ,8(Ογ a՚ ψϋ2~δœœŠn¨c7Ryυ‹H|RΚf13!„( ΅κ>ν„B!„BρS¨Κ[''GƏB€Ώ/«ΦlΘ½—'›Έύ;,9»ιTΣI·B!„B!„Bˆ …ͺΌύΗƒΈm[7ΗΙΡ61«7Ψ½χΐIάTόπ½μXώpΏΐR IDATV J{bk° !ώΓ€ςV!„B!„Ά"Iή‚m7'O*q+„Iή !„B!„βίVdΙ[!„ψ_&Ι[!„B!„BόΫ ΥσV!„B!„B!Δ“!Ι[!„B!„B!„xIςV!„B!„B!žA’ΌB!„B!„Bˆg$o…B!„B!„β$Ι[!„B!„B!„xIςV!„B!„B!žA’ΌB!„B!„Bˆg$o…BΨP©Τ΄{‘%½}žv(B!„B!Δš$o…B P(psw'ΈIST*ΥS‹γ^½ψξ‡Ωψνw¬ί°‘ϦϠb₯JO-ž’0{ξ<žkήό‘Ζ΄nΣ†vΟ?_¨σΊΊΊ²|Ε ΄ZmΎΗŽ3–ΦmΪκ|9YΌteΚ–-ςy…B!„βΏ@’·B!πυσ§vϊάΌq€Δ„§Λ―;vπζλέxην·9~Œα#F>Υx…B‘ΘΆmα‚ωœ9sζ‘ζ (t,―ΎΦΏξD§Σz.!„B!„>υΣ@!Δ³!μn(awC(SΆ\‘Ξ]‘bE_»†Εby€q&“‰ƒπΦΫο V«ρυυεΓI“x·_?όόό˜όρΗΦ―Χ¬]Η†υλ¨ί ή%½Ω½{?oΫ–οy4 C† #ΐ?₯RΙργΗY·φkΌ/Ύψν;t@­Vqνκ5–.YLJJ “§|ΜφνΏΠ’EKjΦ¬IRr2C ΰ7ί€MΫvh΅Z–-]ΒΑ¬η;n<7oή ~ƒ@<==9yβ+ΎXŽΩl¦_wiέ¦ ƌ Ί½ώz½ž‘ƒYΗΎρfw7i@xX‹.Θ– υςς’A` Γ‡±nσρρ‘ί»οΰOZZ:ίmΪΔ‘CmΖ|6}^^^όυηŸ,ZΈ‹Ε‚F£‘oΏ~T­Z ₯RΙζΝ›Ω½λ7λΈΌξΟƒ:u~‘ †AL2£Ρ˜οsB!„Bˆ:Iή !„xβή}χ=”*ίχ-!Ǐ8‰«V«iΣΆΧ]+P²Οl6S’„ŸM›†§§'‹—.㷝;IOOΟs\«V­IJLbθŒΑ(•Jϊφ뇧§'ΡΡΡ7¦EΛ–Œ= NΗϋ³W/–,^ ΐ½{χθΥ»[·lfξœΩ6ΧΆiγF6mάΘΈρrŒ5Έq>šψF£‘³fΔργΗXωε \\]8ξ»~ϋΝf\©₯iΨ¨!#† Εd2Ρ‘CGͺT©Β©S§lŽ{γΝξlώι'›k;~<Ώόό {χμΖΟϏ³fsωΚe’"#¨[―S§LΖh42α"ͺU―ΞωsηθρΦΫ88h6tNZ-3gΝζϊ΅«άΈq#ίϋσΪuκΠΆ];&N/‰[!„B!„( Iή !„ψW”)S†1cΗqλΦ­|“ΈΟ·oOΛV­ptt$$δ8³gΞ,πyŽόq€˜˜ ξΦδdn ©*V¬HΥjΥΈrω2_XaέΔΑƒ¬•€+Ώ\R™ΥuH―ΧΛξ]» ヱώS1{ςΔ ͺT­ΚργΗς“ž–†‡G1‚6δΜιΣμΨ±=Ϋ1₯K—‘B… ,YΌΘΊΝΫΫ›%ΌΨ·waaaΌΧΏz½ή&žσϊ΅kxy•δ<η dΡΒ…˜L&’“’ψγπ!‚6βƍωήΘ¬ψ}λνwψτ“©9Vδ !„B!„Θ™$o…Bό«Κ”)ΓΘQ£YσυjvlϞxψmηNV―ϊŠ?™ΖΉΏ&&&Ίΐσλ λίM&SΆDbNφώ;Z­3ύϊχΗ³Έ'»wοfΓϊu˜Νf\\\HNΞJ8fdd<4ΪΒΝ7 ίƒ“¬ΧιRπυυΝwLDD‹. Sηtˆ„„x\]]²Ξιθˆ››Φmy·eȍ‹KΦΌZ­3Ι¬J=uς$§NžΔΙΙ‰ή}ϊςfχ|±|ΥͺUΗΓΓƒ#Gώ°“Ÿ€ΦI‹R©ΔlΞLΒz{{“˜˜ˆα„wNβγβXΈpΧ^ΝΆ― χgΩ%Τ¬U‹~ύϋ³`ήΌ]£B!„BΘΏI!Δ‚··ν;ΎHϋŽ/R¬Έ'υΡΎγ‹ψωzn£ΙΔοϋφ2dπ –-]R Δ-ΐ•+WΈtι―Όφ 8;;£uv Q£F…Ž ΰ΅nέh΄)ΡΡΡΔΖΔZœ!ΗChήΌZ­…BAΟ^½y©K—"9oPΓ†ΨΫΫcggGύυΉxώ‚u_ͺΑ@©R₯pΠh°³³ ^½ϊΌΣ³'Ω²!τΞk¬o½ύ6λΧΛΦ’"&&š°πpZ·i€――/3fΝF«uΞ7ΐ:tθˆB‘@₯RΡ³Wo*Uͺ”Ή―χ'>>žλΧSΎ|?κmB!„Bˆ,©ΌB@DΔ=vnίφDζώtΪ'θ³Χι†υλ™1kΏύϊ+‘‘‘lέ²™iŸ~Jtt4gNŸF©T:Ύ?ώψƒΑƒ‡Πνυ7°X,όύΧ_=r€'Bπσχcή‚˜Lf\ΎΜςϋUyρφρaΪ§Ÿ Υj©^£οτμΕώίgέΪoΈrε2S¦~BρβΕ9}κ$'Ož°Žί³g#FŒdέ†$&&ςι'S ηΒ…σ4oΩ‚ΕK–b4‰ŽŽΆφΆ jؐ £‘³gΟδӜY32tέ^NΗ’Ε‹ Τ’β‡οΏ£oΏ~,^Ί ‹ΕΒ™Σ§Ή~ύϊ#ݟŒŒ –.^Δθ±γΈx቉‰ωžW!„B!ώλϊΤτ‚-ω-„a΅κ>νĘΡcΖrζΜφξΩύ΄CB!„BρŒ’Ά B!„B!„Bρ *²Ά z½ισ–γώ€?ƏŒ““cQR!„B!„B!ώgIΫ„·m[5Ο– Υλ μήwΰ±Έ//‹δΐ•¬U°νT ΚzͺΦڍ7σ_dΕ|κ” H3Zπs›“ύ)λωΏέξχΕ%Ό\WK―Ζ.ωόLfP=fέvRͺ™²ξpv’?ω?‡ΒœλAΎ B<*i› „B!„Bˆ[‘3˜&nϋτμN³ΰ  πc՚ LŸ·ψ‘Έ―:3²[ζω-όp*…Ab(]\Mp9Mžc?ΪGZ†…Ω―/ψE‘˜lŽγΐ•TΜ ΟUtδ³Ε(ιš}qοOιx]Ξ‹Ζ|^IZUyv*–IΎ^š@ —Β/τoλiΎ B!„B!„B<ͺB%o šΈ¬ϋ'λα€€‚—υλZώΕΨsΙΐσ†|“·OΣπoc‰Σ™ΨΨί }Ί…IΫβ²1†οή+™νΨVU4μξc³νμέtζμJ n)‡+d!„B!„B!Δ3’PFŸ>wQ‰Ϋ ίmfΓw›mΆ5 ’OΟ†1}ήβœG;%Ίt3ΫώΤQeR¨υ#ρ3K Σ’>ώ9ž―'³φX EXχ_ŽH§ύ‚{Œ»M»ωχΈ•aέwτF*mηέ£Τψ;<7+œ­guΦ}ϋ.h=χσχ$Rω£PJΏC――£0δΠyΒd†½ LλRŒz₯hZAΓΠVnΎ–Š%‡FΕ΅*κ—v°ώ©`Ο7G’™Ί'NΩΣζ3:ZΜ·ΩΦϋλhfώ–`ύ:Α`¦ηκ(Κ}p‡&3ΒΨφgΦ΅4ϊ<Œ_Οι­__ŠΘ ψˆ[@f{‰β#n±γo=΅§ήΕwLΦ}JJ5S}r(u§έeο%CbΙKt²‰χΦFSuRζ=ν΄(‚‹χs<ΐ§u4›ŽΈΫ΄ž{γ7Σ¬sΎ“Ζ οα?ξ65?ΎΛβίr}„B!„B!„xV*yz7œΆ­šηXq{'τ.wBοfΫή,8ˆΆ­šηΊ°Y~ ιΦKαlhΑε4΄©κD’ΑΜ©ΫY Ό­gut­§ergϊ6uανFΞό2ΔΫΊκφx¦Ώ\Œ½#}qP+˜Ά=>3ζ8#//€}uG~εCο&.ΌΏ.†#ΧS­c/„§sτF*»Gψ°ϋ.₯²ζhrޱλKM?{λΧW#3¨μm‡’=WοK’RI;ΪU{όv 3w&T6³’χεΊZϊ¬‰ζΟΠτŸϊK<_χ*Αή‘>d˜,|όs<%η?ΰΜ‡ώ΄.‚vlŽγJT«{•ΰηAή8Ψ)˜°9.Ηsν<§gό±Œ}ޝCcόx­Ύ–+#Ή™€{UU½νΩ3Β—qΟ»3y[<†¦ηϊ.!„B!„Bρ¬*tΟΫGι]ϋΈc–Hbω$λΧJ lαJΧΊZZVvδΧszΛ8p%2ƒ«QΌTΫ)ΧωFΆu§N@f+‚7YυGfςυλ#Ι–u`T;wΚ—°γ̝4Ύ<”Lγς™νMζΏξ‰›ŠRΕΤ<_Ν‘ΠxcΆs¨”X[=ΜΨ™ΐ§u$ΜόφPk„œΔκL,ώ=‘έ#| r{rΥͺŠ#ƒZΈ0ͺ;Ηo¦±ϊH2σ_/XΟΧQνά­-z»πυ‘œ“Τ…Υ‘¦•JΪQέ73Ρύj=-sv'ζxμ’ύIŒlλNηϋΟχύζΌšΚš#ɌkοND’‰vΥ©βmGo;JWγνφdϋς !„B!„Bρ$:yϋoxpΑ2_w5NφYε«k9±po"“:y°ε¬ŽfρtΞ=aWΓ7«Φ^5ΟΥ¨ ΛΨφ— ,γΐΚCYIK'%>$έσ/^~₯ž–ΕΥl Iaθ¦ΆτΞ³ϊvώžD:Τt’¬gαOPYΫki\^cm=PΥ}³ϊ δ:W—:Zv]г嬎+‘Ό’Jρ\žίΥ¨ ΞώΟμ]Y- ι\œΠ:(ιΡΠ™wVEΡ’’#Ν+;ςRm§ˆB!„B!„βYχΔ’·₯ό‹l‡,{XϋκN 6†Ρl=«cPK·\pP oΑ}J…Σ=jνTkH·•l’tq5Όμ¨ΰeGηZN”ύΰέM§v€}ŽγR32ΫB|~φEΝς“a²m¦ϋp€ Eξρ?<ΐΎ€Χšί| > γfLf[ƒI<θέΔΕζΨwΧFσηέtή rζΝ@gΪTudΑή$rβμ d^·βΌP#ηΚκ…ox·‰+ΏžΧσγι>έΟϊ~^΄¬\ψφB!„B!„Bό›žX9eχn]ιή­λ“šήF1­’Fε4Μۓȍh#kζή2!/JΨqςVšΝΆ“·Σ¨ΰυθ9ξKι4ψτ.Ι©f›νKfλ…άlϋSG  J;δzΜ?œΫbΛ‘6ϋCΊ–c7R©T2+ ώΰψKΆcU^±œœθGμΌ2ΔΞ+Γ°ΦΆ‰υ˜?Ρ±²g F΄q£} §<“λ•KΪΩ,PfΆ@ΟΥQl[OhΌ‘OΆΗSΣߞρνέΩ7—VUωρ΄.Χω„YΌ½}hίρE›?/v}EAu?A/tθΐ°α#rέΏpρΎώf-³ηΞ+²s>ΧΌ9γΖO(²ω kτ˜±΄nΣΆΘη]ΌteΚ–-ςy ͺS§Ξ 8Θf›V«ε‡Ÿ6SΌxφ?₯K—aζμ9¬ίΈ‰υ6¦mΦ=Ρh4L˜ψ!kΧ­gΓ¦o2tθθ°αψωω=ρσΤ³O~zχι›νω?‹^λ֍+ΏbΥΧk1jNNYΞ¬R₯ σ,dΝΪuLόhΞΞΞJLA ²xι²ε\…ανν͈Q£Š|ήΦmΪΠξωη‹|^!„BˆgQ‘+oυϊœ?†?iΪLP(˜:qLΗF§šNLΨΗ 5œl>β―"“M€fXς](¬gc–HbώήDΊΤΡrψj*›BRψaΐ£WΑΦςw ²·=#Ύ‹e|ϋΜΊ3v&PΎ„΅ό3«nΏ;™‚«£’φΥ³ώ'ΰΧsZTΦδ;Ώ―»š[±F6„€Πš#+'s#Ϊ6»σœž“h[Ν‰­κψύr*‡Η³Ž_s4…₯HI³0cg|―νŸΫ–`ΔC«,P,ΉΡΨ)°S)ψύ’5έMcΖΞR,€›,ΩΞ5 …+―.€¬§šΰrΦMfεT¦Ώ\΅‚eϋ“p²SπZgGgpβVΓο·άxπ]ΠΨ=έd”Ο’ˆˆ{μάΎΝϊ΅ŸΎ~ώX,ΉΒιqqκδIΜfsώΐΠΑƒ¨R΅*ύϊΏ[$σ‰§Λ`0πΑψq$&fο}ήώ…Έzε γǎΙφώ4 ΔΓΓƒώύϊ’šššmμ“P* HζQ(Eς}VTρέ‘@YO5›ϊ{YΫOL}Ιƒ!cžŽ “:y0y[ΑΈ.%k;ΡqQλϊfΆ$Θ/–ά8;(YψFq>έ‘ΐό=‰—Χ°Ί—½ΏŽ’ߚhΎιγ•ν\ΛίςdΞD&n‰£Š·=ϋ{YϋωN >έΟœέ‰wVΡ£‘3ο6Λ\΄νΑwαηΑήŠOˆ*•JEΥj58zδP‘Οέ½GΞ9σHΙ[;;;ƌG₯J• »ΛΌ9srLξ=¬m»ηyι₯—PͺT„ήΉΓόωσ0θυψψψΠοέχπ'--ο6mβΠ‘ƒΩζpqqα³ι3XύΥWœ>}ͺΰϊˆς‹ΗΛΛ‹Ο¦ΟΐΛΛ‹Ώώό“E Xe/uιB›ΆνP«Υœ9}š―V~‰ΙdΰΕ_’}‡¨Υ*]½Ζ%‹IIIΙvώN_$¨aS§LΑhΜΎgQP©T 8ˆκ5jΓ­›·lφOžς1₯JαζζΖϋοφ'66ΘLMώψc΄Z-ƌ 6jΐόΉs9wξo.^‚‡»;j;;k5β―;Άσγ?<‘λ˜5geΚ”eΪ§Ÿa2›9sϊ4K/ΐέݝ‘Γ‡γε•ωλΧσΗ‡­χΰ›΅λ?nC† £dΙ’?vŒ₯K£R©xΐ@jΦͺIddυ~ώ~,˜—YU^·n]zΌύ†˜˜hζϝKBBBΎρδF©TςΕ—+YΈ`>υ¬Xωƒ &&&Οwkς”ΩΎύZ΄hI͚5IJNfΘ @ζ30h΅JυΗοΏ·ΎΟuλΦeА‘888pδ?XΆt‰5&…BΑ+―ΎJ³ηš£^½Β—+VššJΗN(S¦,j΅šβžΕ±·³gζŒιΔΕΕεϋΌΦ¬]ΗϊukιΨ©3†Ÿ~όίvξ$  S§Mγέ~}ΙΘΘόΕs΅κΥ8pƒ $11‘/W¬°ήη?Ϟ₯ZυκΤ―ί€«W―ZοέςeKσγ«Χ|Γ„ρ㈸w€•«VσαΔP«Υ̜5›>½zZ Ρ°Q#ή~ϋˆ£“‹/A₯R‘Σι˜ψ!Ο?ߞ-›`μψρόςσ/μέ³???f̚Νε+—‰ŠŒ΄Ξ‘R©5f ΏnίώD·‰§n½zL2£ΡΘό…‹¨V½:ηϝ£Qp0mΫΆcΒψqθυzFK‡ŽωyΫ6‚ƒΣ’eKkΥΰϋ³W/–,^lsξΪuκΠΆ];&NΔ·›4! TC ΔΞޞϧΟΰς₯KΦύO™ ΐ7λΦی ½CΏ>½1jηϝcΧoΏΩμ:xνžžκ5j0oΜ'ƒΖŒΕΚU«™όΡ‡„……Ωμ{υ΅nDFD2uΚ*UͺΔ€)sτθΜf3&“‰˜ΨXΒͺ―VrιβEkk’ΰƍ)_Ύtˆ¦M›ZMš6εβ… ΔΔΔδωnά»w^½ϋ°uΛfζΞ™m“Μ{γΝ7Ω±ύ:„‹«+½{χαπαCX,Μ9CΏ>½ιΤ©3₯lέDӦ͘0n,ƒQ£Ηπς+―°aύzΜf3AAAŒ>œΈΈX D»ηΫ³iγzΌυ6Ο·oŸν§ώΟΗl6SΉre†‚³ηΞγθ‘#„†ή!2"‚=r€ζΝ›³ο\ΌpΑ:—WΙ’΄hՊ­›7P¦lY’“’™ψΡ$όύύΉtι"+Ώό²P?7rχξ]ƒ‚8t03YΩ¬ΩsΦx z=ύϊτ¦LΩ²ŒcϋoνΌΎί=<<:l8'L 4τ:vdπ‘Lό ³=Μ½π{tλ-.œ?ΗϋοΏGZjͺυ½4›ΝΤ©S‡)“'a2™XΈx 5jΦ΄Ύ3Ή9tθ ŽNŽ9~_ζχ>ηυώ¬όr..9ώ,(UΊ4 5dΔ°‘˜L&:tθH•*U8uκΙώόB!„x’ υY5''GƏB€Ώ/«ΦlΰΠѐ\}8qλδTt Hύ–Ξœέ‰tͺι„“ύογπξNy'Kσb§RΰμPtY,L,BˆgGω Ήqνj‘ΝWΏ~}ΎY·žoΦ­Ηί?€―VΝ7λΦσΚ«―hό΅λΧΉuλ‡’ZΥjωŽIHH ηΫoƒΕbαβΕ x{gώbΛΫΫ›%ΌΨ·waaaΌΧΏΡQQ6sτιΫ—»‘wΩ±cϋ#\ν£+H>>ΌϋήϋΜψό³+r‹R΅jΥ8r£ΡˆA―'δψρ'zΎ§eΥW+ωjeζ}Ύrε j΅wwwλ~ƒ^ΟιS§Ήtρ"€5ιY©reBBŽ“žžNRRǏ³Ž©]§.7nάΰϊυkμόυWκΤ­‹]ξ ΊΔΑhΨ(•*σ,͚=Ηώί3…y½[z½žΈΈXvοΪ…ΩlΆIή ƒπ 9)‰… ζ¨₯Bƒμί;z½‹ΕΒί~£n½zΦύ/^$..³"ϋΦ­›”(α ΐϊukyη­Ωώ\8ή:vχξέX,ΒΓΓΉsϋ6•*W`οή=΄jΥΘ¬ςoΨ(˜ϋχΫΔ5eκT–.[ΞΥ+W8rδœ΅Τ«_5_―fθΰA¨Ujήzλν‚έψ<?ξϋ“ž–†‡G1‚6D£Ρ°cΗvIά !„β½BχΌύ'ϋOnθέ0œm³zƒέ{<‘Δ-ΐΛΛ"¨θeǜ<ͺ`…BŒ»‡ …‚„„‚χΒΞΟ©S§xη­Μ[°€±£G[?’\‰χ?J œœŒΆ‹) Ίt}™ `6›qχpηΟ³ΰμβ‚^―³I<ό±ΪjΥ«£T*ω£χ―Ώρ&ν_x€ ηΟ3kζ λΎΪuκ0|ΔHL&ύϊτ.p<ΙΙY‰U£ΙhνͺΥ:σB‡΄lΥΚzέ:]ζ±...6γrΊη½ϋτΕb±˜”τHΧ9yΚΗΦΕΞ~ϊρk5f^χΐΩΩ…;wξXΣλuΈΉΩ.dωo{œη•Ÿ₯ΛΠ½Gά5)"£ IDATάά0™L¨T*›…, 7oήΘ6N«Υ‘UωK±b™½κ΅T(_že_¬°ξOKMΕΝ͍˜˜˜|cΚνyέΌyƒψψ8κΤ©Cθέ»”*Ε±cGοΗ“ϋ»uJΈyγfŽη[½z―uλΖG“&c2ωvΣ&؟oœnξξ\ΊtΡϊuRR’Ν;b0d­›`2™P*UωΞ™5WΦ;ž’KA«Νό9rψπaήιΩ‹bŊQ©renήΌItt΄ΝΨ)“&αξξN―ή}θΧ]Ύ\ρ:žS'Or74€ŸήΖΠ‘Γ On:Hχ=Π:;Δ•+W²Ε““ΌΎίέάέIJN²Ωg0pssΛl%c±p/""Χ~ΡWa2› έ«8Ώχωqߟˆˆ-\@§Ξ/2xπΞ=ΛΛ—Ω<{!„Bˆo ΌΫξξ½r<ζI%nN{2‹!!ΔQIo"#ο=ν0l8i³Ϊ‘h΅Z’““σΣΈq‚σΑ„ τz^}­%JdV‹%Δ' u’T*­½w½½½ILL΄&‡Βξήeήά9LŸ9‹Σ§NΪ$σ²mλ~Ϋω+΅ Έpώ<#† Ν6¦ ρδ&>>Ž­[6³εώGΉmζMˆΗΥΥΕϊ΅££#nnnDDDX·-[Ί„š΅jΡ―koΥ‚˜;gΆ΅ZΣπPΒ'·{ Σι¬=,άάάyΪηyεgψΘ‘lέ²™}{χ’T*Ω°ιΫlΗd€§gΫfΠlήuwwλίγββΈpαŸNϋδ‘ぼŸΧΑhά€ aaa;z„΄΄4 οwΛzΩ―@—’ΒΧ«VρυͺUT©Z•‰?δοΏΆVΝζ&1!—¬wΦΥՍΈΈό‘”_Ϋΐf^g­3))™?G z=!!Ηyy *W©l­<†ΜV±11\Ήr…„„~ωεgƌΗ—+Ύ 22‚Z΅j[U(˜ ΨΛΫl6£| ‘οψ@αCBB.œ'(¨!M›6΅‰'/y}ΏgήΧΦ}vvvh4βθœΣ;ω€δχ>?ξϋpκδIN<‰““½ϋτεΝξ=ψbω²’Ύ!„BˆM‘}^ήΙΙ‘©Žeυςω9ώ™ϊαΨ'’ΈBQ΄άά<žΉ*₯Κ•«ΰε•ΩΊqγ&\8.ί1ΔΖΖbΠλqΎ_Α¦qΜ\€2&&š°πpZ·i€――/3fΝΆVβ$&&ΝϊukΎ™‹χΦ―_{{{›ύφο'Έq0*T°‰'/y}ΏυןT\Μ5žoηΝ³&κŸƒΑ€Ÿ―*• •JemӐίϋœίϋσΰ»ξ ΡXΫ-Τ«WŸwzφ2Ϋz„ήΉσH‹c !„B<‹Š€ςV!ΔGGGς©φ,ŒΓνcΕJ₯’S'O·_ˆŒŒδ›oΦ0|ΔHjΤ¬‰Z­ΖΡΡΡΊ’ω οsψπ!š>χŸOŸAll,7¬gψˆ‘<ίΎ=ΏνάɜY32tέ^NΗ’Ε‹ˆ‰ΙώΡδ}{χΈI^}­ίnΪXψ‹‚Ζσ°3§OSΊti¦Ο˜‰B‘ <<ŒεK3W½?q"??ζ-X€ΙdζΚεΛ,Ο‘-##ƒ₯‹1zμ8.^Έ@bbb‘_dφ+U»6ΛW|ITd$>Lρβ™mš·hΙΫοΌdΎƒ³ζΜΕl6σΕςeœΙ½§ώΣ΄uλή0€χ$<,Œ γΗ°iγ†ALL4φΰψρcLψ`"#†Λ³]Θ‡Σ A K–-#μnG‘dΙΜήΖτύ6|8φφφθτ:V?΄h_nρδ'&&†ππpΌJxqρbΦ]y½[ωΩ³g7γ&L@³ΕΒwί~kM€Ο7W77P©TΤoΠ€ˆ{χψpβ„?N©R₯˜>s ΰάΉsόΌmkΞ™Ÿ€€DζΜ›‡V«ελ―WΫTπ“δ ±Inςσ6Š/Ζάω °³³γΪΥ«|Ήβ RRR˜;{6#GF£ΡpξοΏ ό3βۍy§g/:tμΔεK—Gυ@+‚γΗyού=rΔ&žχήŸΐ †¨T*΄Z­υgήΘαΓςό~gΡΒŒ5 ;΅QΡQ,[b»pα“pϊτi^x‘ί¬[^―ηλΥ«ψγπα|ίηΌήŸΜύ{1b$λ6l$11‘O?™Jxx8.œ§yΛ,^²£ΡHtt4K/zβΧ)„Bρ$)τ©ιωwBˆΈZuŸ~… βΏ₯KΧxz–`ε—+ς?Xδiυšo˜0~χro σρΤOψξ»o9.Κ~!„B!ώ-EΦ6A!„B<>WWW–―ψ’%J R©hΘΥ«WŸvX ΅kΧΖΕΥΥ¦Ν‚B!„Οi› „Bρ HJJβ—Ÿfκ΄O1›Νœϋϋ/:ψ΄ΓϊŸ7jΜJ—.ΓΌ9s°XδiB!„βΩ"m„’€m‚B!„B!ώm6A!„B!„B!žA’ΌB!„B!„Bˆg$o…B!„B!„β$Ι[!„B!„B!„xIςV!„B!„B!žA’ΌB!ώΗ) jW«†½½ύΣE!„B!Δ#δ­Bρ x« UJΩ&WΛ—PπFƒΒ§znη—™›λ—,aΣ¦ Τ©[§ΐc4 >θα‘mϋΘ6Jν šB!„Bˆ~ΧIog°3DΟ₯;Φνmͺ*¨κ£ΐΗνρcy©ΛK¨*”E‘u"5EOxt…’:΅k’R©ς›dbνdbM¬Ϋ“bέή΄‚΄ͺ,Ι[!„B!„x’ΤO;!„ΟggRS θυ:’£’¨XΉj‘ž£qγΖμΨΎN;γξξNBBB‘Ξ°N:ΣιΕΞ€$§pμΨ1›}~~~Όϋώ<<}ϋ₯kTμυΧqΤ_Fsϋs¦TΎ³šMΜΉω嘞K‘άΟJ*·’WΛΚJ 3χo‹B!„Bˆ"&•·B!HLHΔΑή7ww||ύˆŽŠ,²ωK•.―/[·l&<<œ † ‹lξœxzzςϊ›oςΑψ Œ= ___λ>…BΑˆ‘£8xΰCbΙ’EŒ9 gηΜ6f³™:uκ0{ΦLƍMΉrε©Q³&‚ƒiΫΆŒΗΰπ(ζA‡ŽΆm Œ˜ΌΈm$5έB©b †·V²±ΦοWΗ>―dΖΛJ‚Κ(P ΨU₯RΡΉγ m™N•˜ιψΗ/ΓΛς.Ž1ΨΉ»‘Φ¨P™’ Ϋ΅° μTК‚/z¨θR'σŸžΞ°u€ŠžΑJ<œιr…B!„B€$o…B`4fpξο?yEk^θτ₯Λ”ε…σE6γƍΉxρ ?vŒFΑΑω*„ΚUͺpνΪ5ββb±X,8°ίΊ―xρβxϋψ°oοnήΌΑ;·©Z΅šυ˜γǏa4±X,άΎu OΟrπΰA’““1™LμΪΉ“† ٜϋq’· J+Ψ1DΕ J|h•ΰd/ΧU²Ύ―Šα­σώO·››λΏωŠO?™Œ“C 'WHM†Δ°¬?ι:^}ω%Ίvι\ΰΨ–vW±δM­ͺ(P=BUvP²s¨š.zΕB!„B!ς"m„BΰββJ΅κ5Ω·ϋ7tΊ|ύόiΤΈ)ΏοέemPΑ›°σΧ?vŒ—ΊtΑΕΕ…δδ‚W€> ggt)Y}Zu:υοnnξ€€€Ψ\WRbnYS½ή`ύ»ΙlB©ΜΜXj΅ΞΌΠ‘-[΅2«xuΊ¬σ@f"άhΜΰQΌm‘ΙL#k)ιV?³ί-@¬~>Ž­[6³eσζ\9zδΗκ±[.NJϊwreφw όvώ£F‘€Ή»Ν|wͺ`=oΛ–-R₯Β’T£pρ…’£0g˜ΘPΊat(₯XSœ\|1¦¦QL™‚%o;Ί²γΈž‰[Œ˜-πF%‘IΠ{MΑfB!„Bρh€m‚B’“’π(VJx•$##ƒΤΤΤBΟάΈ ηΞύΝΫ=ΊσΞ[=xη­lΫΊ•ΰΰΖ…ž;7—―\¦bΕJxz–@₯RΡ’EKλΎΨΨX"ξέ³VΟ–+__.^ΌοΌ!!!4oΡνύώΈ­Ϋ΄₯MΫΆ6Η”(QGŠΧΡ^Αΐ—\y½₯3 «jˆN† χ2Λϋ―|±²ύ‘––†Ωl&EY›—NͺLΓΈ‡†ΣΡΦ€s™d˜Μ„…‡sα₯|η¬UΞmœΤΕW'%Ώ_ΌλχGˆK!„B!Δ£+²Κ[½ήΐτy‹ Λq@€γG ΖΙΙ±¨N)„’ΕDGqγΪUš<Χ 39yόh΅Lh̏ίo³mχξ]Μ›Ώ­VΛμΉσ°³³C£Ρ P(h΄)·nέdΪΤ© 1’5k’V«qttdεͺΥ π>iiiΉž3*2’ψι3g’ΧιΨ±c;εΚ•ΐb±0oξή}/uιJZj*sfΝ*P…ρ™Σ§)]Ί4ΣgΜD‘PΖς₯KmŽiφάs”*ΕΌ9s |œ4JΚωΨα`― ¬šγαχΛ ˆz„ΞkΧoΒΝΥ…Φ­ZβW¦#j΅…R‰‚Μ^Ό&“‰Ž /³pρRRRtωΞYΪΫgG%~žj\΅JŽ\7’šϋ/ώέB!„B‘;…>5½Πηυ`βΆm«ζΩ΄z½έϋϊοXΝf3—―\ες•«888`§V£70›―ΥΑ€Υq€³b™ΎSZ&!„B!Δ“V¨ΪΒ‚&nšΡ§gwBCØ>o±Ν*ήωρpRRΑˎ ^vΤς·gκKΕ¨μmΗσ…[@ηIώm,wγlμοΕκ^^܌Ν`ΘƘ\ο±2“ŏJ2λ•bόp:…Ω» CE/;z7v)ΤB!ώ=&H‹JZZ):έc'nαΙΔ%„B!„"o…JήNŸ»(ΧΔν†ο6³α;Ϋ•ΈNΰ†£]Ί™mκ¨2)Τϊ‘y€™Ώ%ΠiQΟW‡“Y{,…N‹"¬ϋ/G€Σ~Α=Ζέ¦έό{\Κ°ξ;z#•ΆσξQjόž›ΞΦ³Y½χ]2Πzξ=ζοI€ςG‘”‡^_GaΘ‘σ„Ι {/˜Φ₯υJ9Π΄‚†‘­ά8|-•œΪGΖκL\ŠΘ`xk7κ•r } '^«εkΩ JN5SrΤmNάΚμυ™d’ψˆ[Lښ΅JzϋχψtG<ΏžΣΣθσΜ>ΔiF ΕGάbΗίzjO½‹ο˜μΧγiMf„Q~βϊMRͺνθ―ϊ#™FŸ‡QfΒ^\ΑωπΜΟΛΆ™—y_ώτY­ζ†[Ώώd{<ήΰΫ)4ό< Ώ±·i:3œ}— ž„ρ΄Žf3Γρ{›SB™±3 Ηg“bβέ΅ΡTώ(”J†2as¦ϋ—cΆΐ”Ÿγ©>%”€q·ι²4‚›1F’RΝTŸ @έiwΩϋ± !„B!„BQ” •Ό ½NΫVΝs¬Έ½z—;‘w³moDΫVΝs]Ψ,?†t λŽ₯p64ΰrΪTu"Ι`ζΤν¬EkΆžΥΡ΅ž–ɝ=θΫΤ…·9σΛoλώ©Ϋγ™ώr1φŽτΕA­`Ϊφψ̘㌼Ό4’φΥω}”½›ΈπώΊŽ\ΟJ ^OηθTvπa]/φ]JeΝќW’94Φ—š~φΦ――FfPΩΫE]ŠkUΤς³gΝΡΒŒόšΞ―η ΄¨”½-„‹FIέRφΦΈNάJC­Tpμfζ=H3Zψ34•snM1υ—xΎξU‚½#}Θ0YψψηΜλγz*ΧΗΠ3Ψ…Γ|(ULΝ’ί³²?œΦ1υ—xΖ΅wgΧpͺϊΨσβ’’RΝ4―€±Ζ§3s'ΞΘΉ°tti™Ω›i΄¨μΘΥ¨ oŒα½η\Ω7—ΖεθχM΄5©š—«QΌ·.šΧ΅μνΛ€NΜΪ•ΐΡ©Ωž΅ΩέVD’Ά ςfC/NάJcΒO±¬=–ΜΪcΙ,~Σ“νC}Θ0Α‡[βpΥ(9qg>τ§uY`O!„B!„B<…ξyϋ(½kwΜςI,?΅¨ŠR[Έ΅€–•ωυœžΐ2\‰ΜΰjT/ΥvΚuΎ‘mέ©ΰΐΞ¬ϊ#3ωϊυ‘dΛ:0ͺ;εKΨqζN_J¦qωΜ$jΊΙΒόΧ=ρqSQͺ˜šη«9oΜv•*xΩ0cg?žΦ‘h0σΫpŸ\γZέΫ‹ΖΣΓψξd Ae}?–‡5―δΘ±© kνFΘΝT^§eσ©Ξ„¦‘VA`φ^Μ^9:ͺ;uKe^Ο`Ύ>’yύ+&ρJ}-ο>—Ω#χ£N컜5~ΕΑ$›ϋ>½k1φ^4πύI-*9ςΥαdLf8q+•ΐ2„Ζ9y;ΰςNέN㣎܌1b§Rπbm'<ULξμAϋNΝTω¬4f―R0―[qήn”Ω’’—ŸνHΰnΌ)Ϋ±G§r'ΦΘoΓ|°»ί3xΞ«Εi3/œ:yp#ΪHYO;ž«θˆJ _Όε™γsB!„B!„βi)tςφίπΰ‚eΎξjœμ³}k9±po"“:y°ε¬ŽfρtΞ}‘©ΎYΥ°φκ¬yFeXΖΑζΨΐ2¬<”UYλα€ΔΗ-kn7Ηό‹—_©§₯tq5CRΊ)†­½³Uί&ΜΌ²,‚-\ιΧΤ•x½‰±?Δ1tS ‹ήτΜ6gσJVLΒl·ΣέΝCW œΊ“Ζ‰[i4© Ιu‘³κΎv9Ζ-*ƒΝέlŽ .§α^’ΙΊΒ YΙd…”Άηzto5r&Γdα|x:'n₯TΖ?wΗo¦‘uPb―VP―΄=i*zΩQoZj8Ό’#j9α ΞQΆΕΥ΄R9ςε‘$.GdpκvZ Χ«Q$₯š©όQ¨u›Ω’ω':ΩΔ«υ΅lI¦Ξ'wιPΣ‰ΦU₯ΚV!„B!„B―ήmnJΉ˜p<8λiΟΞGɿ͏Αgο₯RΪ9s~”1ηπΝΞέOΕ§¨΅J˜sζ^*Ηn§βχ8ž#·RΨx2‰&ή|σg'z‘ƒ?―'Σ±ΊΡs‹=·XΆΔ-ΐζΣIΤ*aΞβNt«iMU/3΄i9Λ-λj‡ιΔjŸΆοΎ¬₯ΛΚ‡l8‘ΔΉϋ©|δcΝ’Nό6؍Γ7S“ B!„B!„βνπΚΙ[­6{MU€ISg0ι«™/ΤηU΄©dΙ¦SI4φΆΘR @yΧ†“wR™·/ž»Ρl8‘ΔζSIτ©Wθ…γ©\Ȳn¦ ίΝ­Gιάz”Ξ°’)ιlBε"™«n·œIbΧe-MΌ-Π¦˜°=†;Qœ»ŸΚθ­Ρ΄¬hωά ΚX°ύΌ†K=Τ*aΖΑɘ©”s{ώJεηι]Χ†­g4¬>šΘ¨ ζΖς4YΫ§ž K$°σ‚–;QιLΨC΄FGGk–±`Ο-ξΆjœ¬U”u5ΑT{―jiX6³fπ“kόν’–ϋ1|*‰o7Σcz–™’λkGΔλψl[ w£3ˆNΚ,λπμ½\ΔŸ’f|²φΒΨw-™q?ΗWpί|”Ξ؟b8s/•[Y<+%n…TοηF!„B!„BˆΧα•’·žE Έ ‡ŸΚω€–Œ>~Šΐύρ,ςό³ΏŒ–WΫΆ―f•εύ-9{/•ŽΛζ9F1G5?υweη-υg†³όPΛ>v’ΞγΝΚ^„J ΫΈ’3πή’΄^ψ€ =lιηj,Ϋ°όP"?œΦΰd­bΫWn>J§ΡμpΊ―yΔ;ž¦,ήν ʘ£Σc¬ΣλνnŠ•©ς₯VέΤ)iΞβnN¬:œ@γ9α\ KcΚϋΖφ|¬™Ψڞ/‹₯α¬.…₯±c ›1Ή\ΡΓ[ ₯1…j7Η­š’Ξ™IΣfε-Θ–±?ESλ›0–J`qW§le$r2¨‘-₯œΥ4šΞϋ‹PάIΝ€6φ|σGηCR³έλοzΉΰVHE‡₯Έ)Š-™ψΈ,Ε¨fΆT.bJ—•i4'‚+ιlξγŠ‰JΉ’χή±€υΒΎ™’[HB!„B!„BΌ6 mJΪK/-Τj“™6g!!‘ατϊ€+υjΧΘυψΓΗO±ζ»Mx)ΜΈƒ±΄,Έ ’N§ΠaωCn|ι•e33!„(•«ϊΎιώnξ…ρPss b’£:sšττ΄[₯RΡ«·?uλςκΤ­VːAσ<_ΛV­(S¦,σηΝ Yσζx{—gώΌΉ+VŒAC†tφ %K•ΖΩΙ‰εΛ—qω%άέέροΫOΟ"€¦¦±eσf>dΫΕΕ…―§MΗΕΕ… ύΕΒσ1 ( ϊφ  ς;ο R)9zδ(λΧ}@λ6m(V¬8j΅G'GLML™1}111@ζΚι6οΏGbb"»ώΨE§ΞιλίΫOί€ώ899‘ΛΘ`Ι’ΕάΈ~GFŒ‰½ƒΑΑ·11}ρΊψB!„Bˆ7γ•“·5Έ/ηΰ½Δ-ΐΝ©^>¦Bό)žωπBzz:&&&˜šš‘––ϊόNω`jjŠ»»;εΌ½5f ιiilΩς'Žΐ’:uλπAϋφ( φξέΛφm?η9ξβE ρππ`Κ—SροΥ3[ϋ”Ο'°nΓΖŠ·ΫΗέ133gθΑXZY1cζ,nίΊIpp0^E‹R³VM†‚N§£U«Φ”+W޳gŸŸδNNN&!!'gg’£’°ΆΆ&>>χΒ… E‘P0|ΔHώψγφν €xρLωςKτ#))ι…bΦ»uκΰιεΙΰ015ε›iΣΉ~νZΎϋ+VŒaC2Λ̘5›S'OŸλόΌ,FŒΝη“&qϋφ-ΪΆkG@LϋζkBBξγί«'ΓGŽδς₯KΩJ#¬ZΉ›B69Ά½,½^OΡ’Eω~ΣF6mάHύ θ₯+'|ΐ˜qγΨωλNφν ΔΓΓƒι3gqύΖuγκοͺΥͺρΕη“ΙΘΘ`ή‚…”―PΛ—.Q«VmΚ–+ǐA133cΑ’Ŝ8qœ›7n Χλ©Q£Γ‡ #&&šώ¬y 6Ώ Ί~ό1Γ‡!22’‘£FO+_3–½{ωύ·ί(S¦ cƍ' o222θΤΉΑΑΑ¬™πžž^̜=[J&!„Bρ/Q Ι[ΘLΰ~1qLA '„βΕ;U«γθδLlL4₯Κ”Ε`0 R½ή–@frV‘PΰκκΒ°!ƒ)Yͺ“&Ξν[·ˆŒŒδΦ­[€$'³kΧΈΈΈ0ισΟyτθ!ǎ-€+{qΎ5|YΈ`:ŽΔ„Ž9Lš΅&-5{{jΤ¬ΙΉ  ~ύ·|†›«•*U¦·Ώ?ύϋυΕΓΓƒ°°PqswgΎ½άΉΜύϋχπφ.ΟιΣΟΩ4Κ—/ΟιS§ΙΘΘ ##ƒS'Obkk›οώϋχοΗ`0JhH₯J—ζμ™3ΉΞΟΛz§JU‚ƒƒΉ}ϋ»ώψƒ.]»abbBzzϊKϋ*RRR8{ζ wοάΑΙ9sQ777œ]Œχ+,,Œ~}όΡj΅ΖΎΗŽ1&ήoίΊ…‹‹+—ΉΔργΗ8sζ4:­VΛ½»wqsuγζ\½z•˜˜Μβwοή‘T©R”.S†Ϋ·nρπqrxίή½”.SWW<Šaχ]άΈqƒΘGπ._ž‹.ΰν]ž₯K—rŸΰΫ·_ί€ !„B! T%o…Bό»₯$'sξμiή©R ₯RΙ­›™ΉNK{υΔ™V«E‘P°γ—_ΠιtάΈ~λΧQΞΫ›ΘΘH~άΊΕxlxx8{vο‘jΥͺo,ykeeΝΠaΓΠι2K¨ΥjN<ΐƒXΈ`>mή{ŸAƒsώόy–/[JBBBc†…†αζξΖ;οTaϞέT~ηά ~œP΅#)) ƒαιJΚ„ψ ½@’5'ΦΦ6άΏίψZ«ΥΌPςφI €ΔΔD¬­¬άηηεc΅’TΙ’,]ΎΒψ^jJ ΆΆΆDEE½Ψ/+9ωi2V§Σ‘Tfώ"ΓΪΖ­V“ε~ύ½lFbβΣΣΊŒ§}­­ιΩ«^E‹’‘žAa<πΜ9“vNπ€΄ΘΣ1Ÿ$x¬­¬P(,Z²Τψž™™™ρ^[ΫΨ y¦on%>„B!„oIή !„0zNDxvφh4Iθt―}ϋε»Jr2^^E037ΗΔ$οMΉ2ηΥΘάάΝΗ'σIXx8›4 pαΒLŸ9 «Η+“scooOxxz½ž%JPΌxqΜΝΝσμw;ψ6%K•Βήή₯RIC??c[\\χοί§IΣ¦Ψ*Δ°α#Œ ΫλΧρnέΊ”)[OOΟlγά½ŸMœ˜χΕ !„B!ώQ²ςV!©©©\Ώz…z ύP(”„‡†pϋq² ό°ω{ Δκ΅ί’ΐ’… ‰`ΙβEτ θΟΪοΦ‘ΡhΨρΛ/=°όhΠЏξ=z`aaΑΜΩsΠλυ,_Ά”θ¨(>›ψ? sΕk‰’%ιΫ/€έ»ώ`λ–-όΈu ½ύύY΄d)ƒsAAά~\'τΚ•Λ4πkΘ’ΕKΘΘΘ 22’Ε‹ζOxx|»f΅ρ΅‰‰‰q₯δά9³ιПΆν> 5%…Ω3gWqώρΗοŒ5šΟΏψ‚θ¨(‚Ξž5Φ"6|+UB­VcaaΑͺ5kΨ?€#‡SωwXΆb%>δθ‘#8::δkώ”J%‘1{ξ\¬¬¬X»f΅qεmnσ“›άbMLH`Αόy 6 SSS4Z kΧ¬ΙW¬{χξeψπlΨτ=ρρρ|υ儇‡ηΪ'θμY7iΚ΄ι3ˆ‹εβΕ‹φ(œ―σ͞9ƒΑC†ςQ§Ξh4/ZHTTdžύvμψ…Q½Ί7oήdΛζΝtξ5ΟzΑ>dΗ/Ϋ™>s&ΡQΡμίΏοςενσηΟ£ίγηG―Σρλ―;Œ5xΨό=ΓGŽb՚΅\Ύ|‰3§O£Pdύύ½••%6Φ6ωΊv!„B!Δ?G‘MIΛώω:!„YTϊb+…βu*UΊ4 bψΠ‘o:!„B!Δk$e„B!ώ¦|9•:u2ΛΤͺU»@k !„B!ήN²ςV!ςAVή !ή΄J•+ΣΫΏj΅šΘGXΈ`11Ρo:,!„B!Δk$Ι[!„ΘIή !„B!„βŸ&e„B!„B!„β-$Ι[!„B!„B!„x ©‡ί}Σ1!Δ[ΟγM „B!„BˆYy+„B!„B!„o!Iή !„B!„B!Δ[H’·B!„B!„Bρ’δ­B!„B!„BΌ…Τo:!„<;;{κϋ5ζχ_·“‘‘a|ίΕՍς+annN\lηƒN“’’ς#}κγξ=hάΈ1ζΔΖΔ0  -¦P‘BDEE1jΔπ|Χΐ@BξίgηΞ__8–:u’Nέz(€λΧ―±jΥ*RyκΩ«7ζζζ,]²ψ΅ŸλUΈΉΉΡ₯[7ζΞ] γ:ŒŸ~άJXXXŽ+„B!„o+Iή !ΔˆR₯ΒΩΩ…ς+ekS«M¨ζγΛ™S'ˆŽŠΒ»|E*½S•Σ'h Ύ5jpφΜτz}ΎϋΨΫΫΣΊM†Μ£‡³΄ 4rήήψχι[ q>oψψΦ`Μ¨‘€₯₯1rΤhή}ΆnΩςΪΟ½σΧ(•―οC3 …ƒΑπΚγxzz@49ŒλεωZΖB!„Bˆ·•$o…β?€|…JX[ΫpξΜiκϋ5ΞζμβB|\Q‘‘άΌqζ­ήC©R‘Χι ,†έΊqώάΉ|'oŒj΅š―Ώ™@pπmΎž:5ΟΎM›5§mΫΆ(U*BξίgήΌΉ$k΅ΩŽ+S¦ ΓGŽβ&‰ΉΉ9½ύύρφ.R©dΫΆmξΩ @±bΕΈ~ν©©©\Όx‘ *δ‹——'M’―Ώ?Lž2…Ύώώ4oΡ’zυκ1qΒgΖγ{ωϋcfjΚ%K¨Z΅*ΑΜ̌cGf[yϋώϋmiΡͺj΅Š[7o±dρ"’’’P(|Ψ‘υκ7@άΌyƒ•+VWSOώ| ΏύΆ“† ύ¨T© ‰‰ 8€οΦo`ΣΖ TχρΑΝՍΐΐ=όΊcGžΧY―^}ϊφλ‡ΪΔ„UkΦ0eςdBBξΠΆ];š4m†Z­ζ\P«W­DχψωͺU»6:wF©T‘’’Μ%KΈ{η3gΟ¦X±βLύκktz=η‚‚XΌh!ζζζ :Ο"ž(•JNž<Ι†υλ $-„B!„o’$o…β?δ…σΟm³²ΆF£I2ΎNOO'== +KK‰πr΄xΡB<<<˜ςεTό{υΜw?;;;zυξΝΰˆŽŽζ³ iήΌΫ·ύœε8G†ΑμY3‰ŠΚL\wϋΈ;ffζ 2K++f̜Εν[7 ζβΕ‹τ€M‘B€$'γγλΛ‰γ―Ά:ωΨΡ#|Ϊ³'ŽŽŽDGG£T*yχέ:̚9€sηΞαί«'mΪΌ‡§WΦU­΅kΏKC??ƌ‰F£! >ωτS/Z„oΤ­[ρcǐœœΜΘQ£iα‡lΪΈ€ˆˆ>νΩ‹_ΆocΞμYY’z½ggΎž:'''-YΚξ]»HKKΛυZ>„…₯*VΜV6‘VνΪ4mڌργΖ’Υj5f ­Z·6&…ϋυ `δˆαΔΔΔPΎBͺU«fLގ9’UkΦ2ω³•MhΤ¨1 ρ ™>₯RIoœœœˆ|ό‹!„B!„ψ·’ Λ„B R©Πιtxρδύ: T©ΠeθP©^ύχ|Υ«Wgέ†¬Ϋ°‘"Eω΄'}ϊφcΩ%―ο‘iΧώvμψ…zυκsΰΟ?σΥΟΖΖ†ΔΔ¬+¦Ÿ°΅³γΪ΅§ ΰ„„xlmmŸιmΰNπηŽ­MN6ώ]§Σ½r½]++kZΆςΑ―Q# σ=»Ϊϋ«©_±γG,X΄˜ΠΠPΦ¬^•%©ώ<ώό++kόϋτΑΙΡ‰ΐΐ@6mάπBu•…B!„βmτΦ'owρ Q9KγλtΫ‘ιΜΩΛ† yφW*2«7€™ZAμ‚RTœ|—ΰΘΧ›4xΣv +ΒΦ³‰¬>ZΖW)Aχ’?²Pς`vIΚMΌΛύ˜ΌοΓ«œλYΟ> Bˆμ’’qsw'>.Ž‹qη037G­6A«ΡΌιΠ^Κ»οΦ‘φ»΅ωlόx’΅Z:tόggη,ΗξΩΓΥ«W4x£F 7Φ±‰aΑ‚ω9&«U«Ζ‰γnj΅s9̐‘ΓςŒG―Χ£Ptf^g— ΚμœmT|Ϋˍϋ3J:³λ{»γfϋό|yq'~μ_˜³Krσλβ|έή S΅βŒ8 Y(I\T—BͺΥΉήδ³ ΔΏAδ£GXYΫΰμβŠB‘ L™rD„‡ύkW/ΪΫΫM²V‹΅΅55jΤΐάΒ<Λ1q±±œ=s†7σqχΖχO:E«V­Q(¨T*>ω΄'eΚ” $$„jΥͺ£Vg~?χρρεή½»yΖ‡΅΅5VΦΦΤͺU+K{zz:'Ž£k· ΎΝ£Gςu§Nž’Aƒ†XYY‘P(ψδӞ΄mΧΘL7τσΓΒΒ₯RIσ-8uςdΎΖ}ΙΙΙxφ@₯R‘R©Œ‰κS§NΡ aCγ4n”&M›™χkόg055E§ΣqσζlΟ^Jr2^^E²$₯;~τuκf–œˆŒŒ$:*ϊ_ϋά !„B!Δ³ lεmQGΪTΆbρŸq9ΆjdΗ‘Ι\M}α±c5zn<|Ί2θ|H*Ν*XΡ²’Go%ησΝZάΝG+%ν—„ceͺΰλφΞ,οξJΫEa9cΒ܏N§ΝΒ0\ ©XΠΕ…”t_όύG.„ψͺ|…Jx+n|έ€y+ξίKr²–³§OP±RΜ-,ˆ‰Žζ|Π™aψΠ‘6Φ°α#¨X©j΅ V­Y ΐΐώ9r˜ΊυλσΝ΄ιDGGσύ¦ >‚ζ-Z°{Χ,γ¬Y½šΉσζsκδ .^ΌΘ[·ΠΫߟEK–b08ΔνΫ·ΨΆνgzυκΕό…‹Πλυ„‡…±rΕς…BAxxΛ–d–›ˆεφν[̞;ŒŒtRSRYΊdq–qωe;ύϊχ'`ΐΒΓΒ?n,GeΠ Α|Τ©3ƒ‹.pόΨ±Χ~B!„BρΊ),ϊί(‘w―Uˆε=\Y"~λfi[ΡΓ•kb̏‘,ڟsrχyvρΰJxc~ΜΊρΘ‘±žœΎ›Β‘ΙΜνδB‰ρΑƏΓOhν@Γ²–œΌ“ΒΰFv(p28…6 ˆ]PŠŽΛΒΎŠELΉžFίuΉώ 39\§”ί΄w’œ»)w£™φG ?eΦγkRή’Οίsδ—σ5²ΓΒTΑή+ZόΏ{€6-λ4ͺ”=―Mζ„rζn V·fe7‡έβo{Βΰh­"dF šΜεΨνΜ„τ΄π)fN“Ω‘Ωζ₯CuF5·§ΦΧχοmμγΞ•πTΎϊ-†]ʰχͺ†κEΝiXΦ’πΈ ¦ξŒfΫΉΜk97©(ΫΕΞ ™‡φv7εμŠb9঱ΌD§εΜκ茳Š‹a©τ]χˆψ nS+S%Ϊ4]V„ck‘Κ5–Ώϋ{Ω—B*¦θLΓ²–X™)ψ+$•‘››ύ\W΄tςΝΌφβN¦\‹HeτQΕΜ™ΡΑ™ΚËΥκXΌ?Žy{c™ϊS–g‘ιœμs*Dn<t|Σ!!„B!„β?¦ΐΚ&¬?‘ΐ† Ζ$ξO·N$Όpβ6'–¦ >}·ՊšsτV {.k)d‘Δ·ψӏ¢―fΓΦ3‰LάΕςƒρ|{4!K²ξ‹ΆNŒάI½i!€fψό}G sυπoC<ψύ’†:ί„°βPu£ξ3ε*z˜Q§”9υg„ΠiYMΚ[«ξ³›Ώ#Η±„B!„B!„x›xςφο ’ ξί7,ϋ»4,ξζJ)ΪW³16}žgΆy1 ¨” γλ΄|.β΄4Uΰb£ζnt:7¦qγaΫΟ%1»$U<Ν8w?λΖm-*Z0ω—ΜΝΙΒγ2Ά9’γŸy2ζΗHς‘$6Q)²ΌώϋUκ žsνο {ω»χμx§£€sζκδmbεαψ,Η~ΫӍ*^fl<‘Θ† μΎ¬ed3ϋΗMLΥ3hS€±Vοίυίπ‡βh]ٚ|lψό}SΧ΄ IDATG:. gο+”ŸB!„B!„βM(πδν³5nαι άΏobVb4:ŽήJfTsJ:›πΛωη—LΘΝΝGιΤ(n‘ε½ΕΝsM?·»ΗxRxδmRž&^ŠΜ g’R TdΆ?Y•«VJ‘ ϋΡ™l̟–,V( œ›)…€ί«UΒ<ΛρuJY7fƒΜΓž(_ΨτE.ο…b©4ωn–cŸ=―“΅ŠŽ>6Τώζi}ΰ'e#rrύA΅KZ“·JEζζhߟJδόύTzΧ+Δ”ќ»ŸΚԝΡl (LG_Iή !„B!„BˆΫ° ²&nϋ{HίusάΔμuΨρW=j"πŠ6K)ΰZH……ΙσR O­>Ο»%ΝΥܞβN&|ϊn!ΊΥ,Δ/ΎΡΪωE€±¨› e\3λπ.ξζΒΝ‡iœΏ4IΩͺRζŠΫ]—4X™)™ΡΑ™Ξ&T/jΞόΞ.켐”ci†°Έ Š;™Π£v!œ¬ULhνH)—¬΅w[WΆf€Ÿ%œMΥܞΖή–,?oμί«-₯\L¨βiΖΔ֎ωΏΈΗΙε"φ&¨•Š|Ες<©ušx[bo₯’Q9K&Άq€Ή23Ιύ·s-άΛ FvτͺkK97S¦}θL£r–œΉ›BRͺžΑμӁ’Ž&4ρΆ€V s.=.“ρ"Ο‚B!„B!„oZ%o»Χ*”γζdΟ&pŸέt¬ νό+s%ζ–3‰YήύBΎΕΜωe°Gžcά‰J§Ν‚0ΪV±ζδ/6²£Χ·8|39ΟΎ§ΣCΛω‘˜¨μ^„½#‹ V)h·8άXΆa Ÿέ―LŽJΡr^e]M96Ξ‹ϊΉsξ~ }ž³bωψνdζΖςM{'ξΟ(AˊVl>•υڧmkŽχ’CuΪ/ 7"s–¦J‚&επX/Vύ­”AnRτl?—Dΰˆ"4,k‘―Xž'1EOΐϊ‡τ­oΗΥ/ŠeΞΙΚ’Rυ¬λε–ν\o$ΣλΫτohΛ‘q^Τ.iΞ‡KΒ Λ F£γΣ΅θθcΓΉIEYΪέ•οŽ%°δqςύEž!„B!„B!ή4…EQ–[ %έkbΡώœW©jdΗ‘ΙY6 +Hο–΄`Η`ŠŽ Ξ²™Ω₯’„d=ϊ—Έ“&*ζ& S fΞ^%!ήf:Ύι„B!„BρS`ΙΫ7©r3¦Άs"*IG―oΌιp„IςV!„B!„΄­yϋ¦ό>Τ+3S~~Σ‘!„B!„B!Dψ‘Ό-2:˜Ζ³CΉώ¦CBˆ;;{ή j΅:[›J₯¦YΛ6ΈΊΉΏΘώ»Φ~·7w™σΧ­M›χθ?`ΰ›C!„B!ςεEςV!Dώ(U*\έά©κγ›­M‘P`kgGν:uQ©T―-ί5P*ε?"“B‘xΣ!!„B!Δ[+ϋ’+!„o•―P kkΝ9M}ΏΖYΪ {‘d©2άΎuƒbΕKΌΆΊvλΖωsηΠλσ·Qβ’eΛ9qό5kΥfϋΆmψωωρΰΑ/ZΘ²+™φυΧάΎ} 333V­^ΓπaΓ°ΆΆbΔ¨Ρ;z„ ύHKKcρ’…άΈ~-[R΅ZuΎωjͺρ<uκ„££#K—,y-Χ P«vm:uξŒR©"%%™₯K–pχΞc{΅ͺΥh69Φ66όόγόώϋoXXZβί§₯K—A―Χsθΰ~ώι'||}iέζ=¦Lž”ε<wοNZZ[~ψ!ΧxͺV­J·ξ=077'**’ysζ—Ήρh‡Ž155#55…6mήΓΜܜaCσθΡ#Κy{Σ£Η'όΈu+}ϊaeiΕκΥ«8πηŸ( >μЁzυ nήΌΑΚ+HIIA₯R±nύƍΛΰ‘Cquuεδ‰,YΌ(ΟΉswwΗΏo?<=‹ššΖ–Ν›9|ψPσ R©θ?` *V$::Š»wξf·m»v4iΪ ΅ZΝΉ  V―Z‰N§ΛΧύB!„BˆΧM’·BρrιΒωηΆ……†πZ“·/J₯RqύΪuρσσγ'°nύ–,^ΔΑhΤΈ‘1y[£fMnέΊETT$––ΈΊΊK~}ρkԘ~Œ>œΓ‡ρqχΨΫΫ @½ϊ XΌhαk½–~ύ9b8111”―PjΥͺeI-VŒΓ‡αιιΕ΄3 άCzz:;wA‚‘ƒaieŌ™³Έ}λa‘‘Έ»»`fnŽZ₯B£Ρΰ^Έ0GΙ5FŒΝη“&qϋφ-ΪΆkG@Lϋζk"Β#θϊρΗ\Ή|‰€€~€¦€WΙ>ˆˆΐΣΛ‹–­[3aόx’££mΎ5jP·n=ƏCrr2#G¦ύ‡²iγFt:QΡΡ 2˜5«WqνκΥ|―Ό3n;έΙΎ½xxx0}ζ,ίΈΞ£‡Ÿ;?ύυοΦ©ƒ§—'ƒΐΔΤ”o¦Mηϊ΅k@frΆiΣfŒ7­VΛ¨1chΥΊ5ΏξΨ‘―ϋ%„B!„―›|nU!ΔkW½zuΦmΨΘΊ )RΔ“ΥkΏeέ†|Ψ‘Cž} Έ{χ‰‰‰„††’ΣιΠ&'ceeΕώύϋ¨[·&&&ΤoАώiμ«ΧλΩΐ±£G(Z΄h4Μ>Mƒ† (]¦ …‚kW―όΕ?#%5• bggΗ•Λ—«CŸ άƒ^―ηή½»€¦¦bοΰ€―/ΏώƒMRG¦j΅j<|ψ[[;LLLθΟδ)_ΰQΨƒ°Π°\cy§JU‚ƒƒ‰ο]όA•ͺUs©MΦbgkΛκU«HMIΐ`0dΆi΅XXXπΛΆmDGGgiσρρεΐ?Ρj΅ φμήMΥjՌηMΦj :dœλ'ύrγζ憳³ ϋχν ,,Œ~}ό‰|τ(Χω(_Ύ<§O&##ƒd­–S'OΗυυυεΠ‘C$&&’ΣιΨ³k5kΦΚχύB!„BˆΧMVή !„xνΞ=K»0wώ|ƌEzzώ7™ΜΘΘΐ`.ƒAB‘ <,ŒΠjΤ¨Ι₯K)S¦ ³fL7φΣh4Əΐ§¦¦’žžŽ••5ΙΙΙμί·ή}ϊ°}Ϋ6κΧo%ι›—N»Π’eK\ΎΜΜgΞ™[ΫWSΏ€cǏX°h1‘‘‘¬Y½Š[7oΫ“’’²\σ“ΪΐvΆΆ$&$Ϋβ)Uͺ4z½ž‡βκζFaΒDF>ΒΙΙgΒΓΓrΗΪڊR%K²tω γΈ©))ΨΪڐς8qϋ¬' Χ;w‚³΅ΩΪΩqνΪΣ$xBB<ΆΆΆYϊζΤΰ*U6|:^=3c΅±A«ΥdIτj4γߟ7?™ΧiΓύϋχmZ­Ζ••5-[ωΰΧ¨YW£yzςΊ_B!„BρΊIςV!ΔΏΪώ}ϋhΨ¨φœ:y‚ΤΤTc›•• …ƒΑ€©©)&&&$%%pρβLMM)ηνMΊu7ftΎΟΉγ—νμήυιωn aξœΩ¨T*š4mƐ‘Γ2h`žη‹‹ΗΖΖ†‡P¨-111„‡…Q«Vm‚osχξϊωgLŽ?/ž˜˜\ΉΒWSΏ|ξyΣΣr+-‡φψΈ8lllŒ―3cΝΧΈW._fψΠ!Ωޏ‹ΓΚ ₯Ri¬•μζζF||<ΙΙɹΏF£Α8–­­ρο±±1ό²}Ϋ·mΛ1ž—½_B!„BQP€l‚Bˆ΅cGR¦tiš·hΑŸ[=«V«yχέ:Τύ.wξW’ ώάΏ€€ώ„άΏΟ£ΗΑϏδδdβββˆ‹‹CσΜjΩάΪμννΩLMMΡιtάΌy#ί›Ά9}š-[‘P(°ΆΆ¦^½zœ:•ωρ°°0κΥ―ΟΉsAόυΧ_4hؐΠΠΠ<γΉpα₯J•’hΡb”,YŠ>}ϋε{žλ™Σ4τσΓΒΒ₯RIσ-²”*ΘMzzΊ1Φ'§DEENγ&M(\Έ0ΣgΞΒΚΚ:σœΉΜΟυλΧπ­Qlmmρρυ5Ž{κΤ)4lˆ•uζ8›4₯IΣ¦ΐ«έ/!„B!„((²ςV!ώCΚW¨„W±βΖΧMš·ΰΰώ½ΨΪΪR₯zfbΛΔΔ„κΆvθ .ώuΞΈ‘YA>th’’ΒΙ“'©X±"W―\ΙC©₯ιΤ₯ ƒE diίΏo??κΔφν9―Ό,H±±±άΎ}‹Ωsη‘‘‘NjJ*K—,ΞWίΝ›Ώ§OŸΎΜ_°½ΑΐŽΏ7έ ΓΝ͍‹.œœŒJ©$,,4!1!ση1tΨ0LMMΡh5¬]³ζ•ΰΤΙ“xyy1mΖLΐ₯K—ψuΗ/―<ξμ™3#³ GxΛ–,^ν~ !„B!DAQXτΏ‘χN!Bρηq γ›Aδβ£N[~Ψl|ΟΛΛ‹‰“&ΡΧίΉύΜΜΝYΌd)ƒτΟ±Ά«B!„Bρ&IΩ!„jŽψ5jΜώ}ϋ^ΈoϋφrςΔ Iά !„B!„x+IΩ!„Zmή{ŸχΫΆeΣΖ ΖΠη‡R©dιςDD„3sƌΧ‘B!„BρςΪ”4)› „y¨\Υ7B!„B! ”MB!„B!„Bˆ·$o…B!„B!„β-$Ι[!„B!„B!„x IςV!„B!„B!ήB’ΌB!„B!„Bˆ·$o…B!„B!„β-$Ι[!„B!„B!„x IςV!ώƒμμμyƒ¨Υκ,ο»ΊΉΣ¨isZΆiKέϊ ±±)τ†"ΜF͚,Z²τM‡‘MΥj՘ςΕ—―ύ<›4‘Yσζ―ύr$tψo­Q£Ηπ~ΫvΖΧ*V|+Ώ/ζWn_οω5vάxκ7hηqŽŽŽ¬Ϋ°ρ•Οχ&+^ό_}Ÿ_–››ΓGŽ|α~uλΥc՚΅όod>ξή½ CΛQΊuY²l9ί°…υ6RΔΣ3Kϋ¬9sσυ¬>kΑ’Ε4m֜2eΛςγΟΫ011)°x Ϊσb­ξγΓ֟~ζϋΆ°qΣχ|3m:εΌ½ δœ/ϋŒΌ,OO/V­YΛ†MίΣ³Wοlν―rΏrΣ/ €u6²bΥ*Ίχψ€@Ζ\°h1ί[Ο¬9s³΅ 4˜UkΦςγΟΫ°²²*σ½Š~ύY±jλ7nϊΗΎž…xΫ¨σ>D!ΔJ• ggΚW¬”­ΝΤ̌j>58uό(ΡΡQ”)λΝ;U«qδЁ>Π\Ύ|™Y3gΌι0²P(tν֍•Λ—ΏtƒΑ―c=== ©σΌŒ½μ dςηS^zŒ KKžΫξιυj?xΎH< …‚bŊΣΫί33³lνNNΞtθΨ‘ςε+ρΒ±τσ\χ« 9Šέ»v1iΧDΚ—―ΐ„‰ι{ρ"†Ϊ·ΗΪΪ†ύppp`κΧίpύΪuξέ»K΅jΥiάΈ γƌ!))‰‘£FΣξƒφ|ΏινIΊ½ΘΧmAτϋ*――χ’7ρŒΌΝΟ₯§§ΧKυΣj΄h5šΜΏk΅h΅Ϊ‚ λΉ:uξΒ¦8rψpŽν ζΟ#66φ…Ζ̌_ƒV«%##ƒτττ‹§ ελ½{χ5b8*•І~;vϊœœόJη|Ωgδe…„άΗΏWO:tμ˜γ‡WΉ_yωqλVvό²½ΐΖ2h εΌ½ροΣ7[ΫβE ΨςγOvΎœδχϋΟςe™ΏΌκ΅*•¬?M–ΌΥj“™6w!!a9Ά{zz0nψ ,-eυ„BΌ)ε+TΒΪΪ†sgNSί―q–6•RΙ•KˆŽŽ "<Œβ%KΨΉΧ~·ŽργΖςΰq’k՚΅Lœπj΅š3gΡλΣOHII f­ZtοήƒA`aiΙΒE‹Q©Th4 θŸeάχίoK‹V­P«UάΊy‹%‹‘””€―/]ΊvΕDmBll,Λ–.1&Ϊ:t숩©©©)΄iσfζζ 2˜G1fμ8‚ƒƒ)UͺŽŽDD„3oΜlΐ¬[·‘"Ήqγ­Ϋ΄‘DΙ’X˜[Pͺti"ΒΓ™3{ρρρLώ| ΏύΆ“† ύ¨T© ‰‰ 8ϊτΗήޞ΄΄46nXΟΉ  όϋτ₯q“&d€§σQ§Ξh΅Z† dώΓχΓ¨WΏ ΰζΝ¬\±Β8—/;?Ή177gπΠ‘xρD©TrςδI6¬_—ηό¨ΥjFŽM™2e‰ŽŠbΖτiΔΕΕαββΒτ3±Ά±1˜Ϊόύ&φ0sφlŠ+ΞΤ―ΎF§Χs.(ΘψΓرγΈs'˜κ>Ύ899qζτiV,_†^―ιxκΤ­Λ{οΏΟ―;vΠ΄YΦ•‘NNΞ|>e ‡dχ?PΏΐʚܞη%Λ–sβψ1jΦͺΝφmΫπσσγΑƒ,˜?bŊ1bΤhŽ=Bƒ†~€₯₯±xΡBn\ΏžοsηδyΟlRRΛV¬dΪΧ_sϋφ-ΜΜΜX΅z Γ‡ #**Θ\Ω5|ΔHΊtϊΘψCͺJ₯βΐŸ²gχ.\ΉLzFŽŽŽh4jΥͺΝςεΛHKKγΑƒ>tˆΪοΦζή½»$i’XΉb9111Q±bΕ,1χ  X±βŒ76ίΧιξξNί€ώ899‘ΛΘ`Ι’ΕΖΉ+ηνMŸπγΦ­τ 臕₯«W―βΐŸ’R©X·~γƎeπΠ‘ΈΊΊrςΔ –,^”ηΧ^n_οvvv¬Z³–―Ύό‚sηΞ½ΔέΛͺu›6+V΅Z£“#¦&¦Μ˜>Ν8—U«V₯[χ˜››ΙΌ9sˆ‹‹ΓΦΦ–™³gσε”/ Ή ³ηΞε«/§rοήέ<ΏΎΪΆkG“¦ΝP«Υœ bυͺ•θt:ΰωίςϊzΟν~9882bδH쾍‰ι‹―lS(Œ3–ΠΠP6mܐλό΄hΩ’ͺΥͺσΝWSύ?κΤ GGG΄Ϊd4 ?nέ’eόo¦Mgύϊu\½rεΉΟHnΟ@›6οΡζύχHJLβΔ‰ωΎ6;;;† †‹‹+ίoάΘΡ£Gr=§J₯" *UΔΓ‡ΈxαE<˜?w.^^^Lœ4‰Ύώώ@ζ―&O™B_š6kNεw*γ`ο@hh(ιT©ZΩ3gŒΉΉ9½ύύρφ.R©dΫΆmξΩ δώΜΦ«WŸΎύϊ‘611>#S&O&$δ~žs ΥjΠ“·4š§Ι[ >νΩ“*U«a08rψ07¬Η`0δϊ5[¬Mš6₯s—ΨΪΪ»·?Ÿφμ@~}IOO§s—.4iΪ +++–.YΜ‘ƒρ8880|ΔHΉώψΏ|ω’ρkA«Υ Υh2ωLBηOnήΘνϋa~ζ=―Xu:ϋφ‘cGŠ—(Α•Λ—sύχ˜…₯%ώ}ϊPΊtτz=‡ΰηŸ2ŠΉ=#y}Z΅*χ聍 1Ρ1¬XΎŒΰΰ` χΔ€ΌžηΎύ¨όΞ;¨TJŽ9Κϊuί½Φx^Ηχ!D¦ω΅Ε³‰Ϋ¦ΠΆM‹,š6j@HHΣζ.B«}±ί΅_ϊΗαwάFέ£φ΄06ŸNΚW½!σ@j†ΗαwΉ•ρ’—ψ―υλ_Zj}“sB=?ζΖΣσΫΘŒθΕLΨΓ ο£ςuμ³χϊUιτy#ΔΏΡ₯ η9qμ0qqΩW~$''sοξγkWwwbΠ:…†„ŠoΖχκիρ™?($k΅ψχκΙ”Ο'gλ[»φ»4τσcΜ¨‘τλΣ‡ΔΔD>yόv{{{† ΖΌ9s2x'Ož`Πΰ!ΖΎαΤ©[777ϊΡ΅s'"#3ΏίιυzͺT©Β¬™3;z%J”€b₯¬«•U*uξΜ¦gVκυzjΥͺΝ›7ΣΧΏ7‘‘‘|Ψ‘γΣsFDπiΟ^όυΧyz~ϊI–μπ#9tπ C dρΒ… 1kkkV­\Α©S'YΏ~ώ½zϋψΦ¨AέΊυ?v C‡ ΖΜ̜φ~ψΚσ“›F“ŸΐΑƒ2xζζf89e]A—ΣόΌS₯ ?mέJ@ί>ΔΖΖ¬y =zΔΔ Ÿ―žψχκiόα`τΘ‘ΔΗΗ3qΒgψχκiLά>™χΪοΦαΛ)Ÿ3°εΌ½ρυ­‘εΌ/ϑÇ;ztŽ+–’’"4p[~ψŒ ]Ύζμ‰άžg•JΕυkΧΩΈ???ώ7q5kΦD­V£Χλquu%66–ώύϊ²}Ϋ6ϊΌΠΉsςΌgV§Σqπΐ5nd<ΆΖ±wήαQT_~w7½'„4 ΄ΊJIθ PB―R- *‚HοM₯₯ (½“Bο-@JzΩMέέοM&Y’]ΏŸσ>fοΜά3ηή{ζΞ™sΟ­S‡ϋχο Ž[€Œτ ββbυ©V«Ω³{Z­…BA«Φ­‰‹%2R7ρτς>β<{…——.Ζέ;wτ™΅ύόΈ{WίA’’>ˆ˜Κ„/&̈aCYΊd1_Lœ$€yώμ₯Ό½iΣS'O¦Oο^œ8~\Έ—˜ΨX†ΑΪ5«ιΫ§7Λ–.ΔΗžξΎ οyuKΖŠΜh4ψϋϋ³ώ·ίψjΪ4?~,τgƎŸΐ²%K>4ˆKaa 9’Y³z5AΓ†!“ΙθΧφοηργpαΊ†ΖWέzυhΡ’%S&MdψΠ œ]œiΫ nŒŽw‘φκΦ½>dXΠΆmΩJ΅V’£[χh4!’[L?§Nž€jΥͺ8;; η7jά„cǎ§§ΆvvB”Ύ——‘ΩΟ5C}D¬oΉΊΊ­G¦LšΜ„ργπςς2ωήΊ|Ϊ•Ο_0|h ηΟ#hΨ0δrΉΡ:λΥ―Oωςε9|8sηΜ& iS0a^­ΡhπςςβΛiSiΠ°!BC9vτώut©Rzυξƒ₯₯£FŽ`βΔ/ψ€sgΚ•+'œk¨Οž:u’υλ#$$Xθ#¦8nAύ¨T霷ΚμHΘzυξƒBaFΠΰAŒ5’š5kΈI >¦Εd=|θύϋι=£ϋχ>hmΩΌ™ΐώύΈ\ΐGšO»v#**’‘AC8xπuλΥ#οwP•R…R©œ‚¦ &±ω†˜=4ͺwe•Ιd˜››“•₯{'›uοή2FΞΤ)“ω°y ή}@Όˆ΅e±bΕ=f, η/`P` `ά„/ΙdFυσ¦tπ¦λΟuλΦ£b₯JŒ>Œ±£GΣ$ € ΎΎoUžΪώHHό—(²σ6―γΆߞτμΪ‰Žν[λύλΩ΅ύϋφ,΄·›ŸΑ“K<Ήφ€Eek†mŠαάΓ4£η~Ή;Ž/vΔ=ξm“’fΠϊh*~ω” Ӟ0ΰΧh^$~Ι{IU/(7ε υfE²ϊTR‘e¨δiΞΰ&žœ•o“7ΥΦIiάΖ…όz/δKΈw£Ό/7―_ύGκ;yβ 6t‘‰5jΦ4ιeΑΟߟ“'O’’‚V«eυͺ•¬^΅ €χή{Ÿ;·o ωCM__¬mlP₯ͺprtdΝκΥ€gGbδ >OVVZ­–ΗααΈΊΧ«»e«VάΎu‹ˆ§Oυ~Ώ{ηŽΰτ8sζ΄^^7•JE\\,‡ώώF#ΤW¬X1<<=9zδ0=δΙ“ΗT\Ε¨jΧφγψρc¨T*΄Z-υ5jΦ,²~ΔHMK₯B… TR™LΖͺ•+…-cϊΉsϋ6αααh΅Zn\ΏŽ»»›ΡϊLαμ™Σ(•JΣΣΉš/Ÿή?-OaΙ <όΙΙΙDDD V«Q₯¦ ωζ4ΰΰ:{ζ4₯K—y#ω` υΩ£GΠ°a#!g_γ&ω’―BCCXΰΠjΥͺ³yλ6:wιΒ’Ε‹Q«ΥΒK{FF -¦wŸ>€§g`ie•οόΞ]ΊΰββΜΑτ~ίΈa=³~ψήδϋssw§DΙ’όuP |χξ]’_Ύ€rέψR©TX[[³{ηNbcu󈼢 U₯"μb·oέ+{9Χ-hΌη””Δ ΐ@n\Ώnς½γΦ­[‚3=<όΕ‹λ>ͺΌA >|(DQ`α‚ωB›ˆιG©Tr!4”&TπυE&“qϋΦ-’"£pχΠ9oόq6ŸυrŜ IDAT틃ƒnޝ˜˜h΄κ[+UβώύϋΔΕΕ’Υj9qβΈΙχ·vΝjΦ¬^%θΞΜΜ '''£uϊV¬HHH0$%%όΡΎαααh4T*OŸ>%11{{{όόύψλ―ƒ¨Υj’“’8sϊ”ΰΨΓ}Ά(<}ϊ”9³uii6oάΘΩ3g„2?<€F£!55•©S&sϊΤIΐψ˜~²V¬XQψHxηφm?~¬WΎhαξίΏOZZΖ=·«±ω†1{(†)²š››Σ‘cG233y”ι*6«νηΗώύ’ΥjQ¦€pϊΤ)½61„X[~P£wοήž{'Žη‹ργΠj΅Eš™ͺƒ7‰X>wξ,'ŒΧΝ%T*‡‡γαξρVεyφGBβΏB‘&ΌκΈmTΟίΰ±9ekέΔ¬y‹_+…‚³·ά%Qο•tαπνTώΎ‘J½rω'ϋFo%N©fσ@7TZΎΪLjΝ1lμžοΨ€4 —Ύ MUkΎνΰΒγΈ,ΖlΕΦRNΣΎτD7s*Έ½™Dι Š»ΉS£–‘ηΟ’’’όΤyϊΤIzφκ…­ώώώΊ—υhγQφφφ$'ηΔΘλ@rtr")9I―,55GGGRU*ΠjyφόΉ°„ξUς~hTkΤBδθtθΨ‘iS¦ζ;/))·NeJ vz=hyτπQΎs‡pΔ$ άyžsœΈ}ϋVžϊqΜ>―Hϊαψ±cΨΪΪ8p Ε\9tθ›6n–Q‹ι''e@–: Ή\aτM!11ή•)z‘jοBžΒ’ϋ`j΅."I«Υ “ΙP*•Βrτττt233±΅΅+rΞ@C}6*2’§Oρχ―ΓυλΧπυυε§Ω?š|έλΧ―Ρ£[Wή{ο=&M™Β΄)“yρβXXXpςδ ‡?ΖΩΕ™΄4ύ{θςι§ΤoАί|]䜁vΆΆΘd2½ Ÿ,--…q’3ξ=zXΰωZ­Άΐ2±±—}fγ½(h_ E’Ώ’/0o_P«ΥBΆ³³Ε§|y–­X)”§§₯αθθHLŒn…Σή={˜3w.σηύœ/刑ρekkG›Ά΅iΪL‘-“ΙP*ucJΜώˆa¬½μμνQζ·Κ׈n³΄΄d@ΰ@=zDFFFnFτsτΘ ȝ;iάΈ‰π#22OΌK—ζΞέ;”-W///"""γ}ΔPί²³+ό=–.]†ž½zαθθˆZ­F‘P6D¬N[[[^>!ό‹‹‹‹Iufeζ¬jΤ’••…F£E.—e_׎Q£G£Ξ^ΦfffFHpcΖPŸ- Z­VpΎΪομννυμ~ήϊ΅ΧېΥΖΦ–δ<ςΔΕκ’€§§Xa16ί0fΕ“΅tιlήΊ ΅ZΝΓ‡ψα»™Ήm#2srt$9Ο3*))Ÿ Fe167ΚΫ΄Z­0Ɗ2ƒ7ί^ΖλΟvvvτλίο₯ΙΚΜΒ«D‰ΧϊdK++–籕ί7“{Ωι¨ή…ύ‘ψ―P$ην¬Ÿρ4"ͺ@Ην¦m;θΩ΅“πΫ«άS'Ίnks9Κ {(ωβχ8nN/EφΩ%pςn~e,Ys:­n?Οδχ ΣτΞσ ‚6Fs#*ƒΚž,ιι*88Ο=Lγ«έράy‘I™bfŒkαH‡t/1Go§ςέώ>zΟ†e'’HΝΤ¬’ΛzΗΪB¦'ŸZGn₯ςηHjzλ–PlζΘЍ1h΅ΊθšΌΎ•ŠV«εΗΞŐΙΐΗ͜i휘w81Ÿσ69MƒΟΤ§μα_K^$©©ςυS†80£ƒΞΘ΅^πŒF¬¨ιmΙτ½ρœŸ\‚τ,-^³ΎΏ“wƝ¬¦Z ύϋ=LΙΟ‡xž€¦YEkJ8λw‘΅g’Yy2‰ηIjή+iΑ\¨κeAσyΟh_έ†ΡΝu6ο#±³’qt¬nrνŸρœ{Ζώ‘žl MαηΓ‰DΔgQΦ՜;Σ¬’iŽόίΓ”Μ?œΘØLœmδτ©kΟΔΦNLί―ΧΦϋFx“’fΚΞ8NάMC«…Ξ΅l™ΩΑ…\—^aΖΎxΆ_L!)UC­–ΜλκJ1;9UΏΦEe՘Α―ύάψΠDΩ$$ώ(VΜ•5ksώμ)’^sY²14 ς<Ζ/oΔ`BB7oήΐίΏ 64)·šξΌxμυιθθΘσηΟILHΐή>7W¦ΉΉ9VVVz© 2σΌΌΏ}ό1ηϟΧ[>žƒ}<Άvvz“j€ΜΜόu&&&`gg§·qƒƒ£ƒIi+tχ™[§ƒƒ#qqΊ΄EՏ!΄Z-ϋφξaίή=ΈΉΉ1aβDΒΓ ΡCbϊy[δՁ­­ήΛπ»ηm`›νΤj΅XXX`nnώF>°ˆυΩ£GŽΠ¬Ξ..„ŸΧ{15„££#M›5cΧΝ¨Υj.]ΊDψ£GT«^/^wιμΨΎ€Aƒ‡θEDwμΤ‰Ϊ~ώ|9uΚk9­ GfFC‡  Λ±Ω ±±'œWΐx/ i©iΨδ‰Žwpp$1!ΑθyqqqάΌy“οf~[`ΉL&γσώύΩ±};έ»χΰβ… zNCγ+>>Žέ»v²kηΞ|Χ³?Ζdk/₯R©§ΗR@ίR)•ΨΨζή£Σkάγθ±cΩ½k'GA.—³iΛΦ|ΗTgͺ*υ•:sΣDh4d²ά˜¦¬ΠΘ!>.Ž… pή=“Οy›$ΔΗγ`o/€nΙΡmBB‚Iνυ¦IMUιυg§<ι9ή¦Ξ7ΔμaaΘΩ°Μ†ζc ΩQά/^θ{Ί6)Ϊά(>>jΥsΛd2₯J•ΚŽ/ό|μ] ֟{φκF£eβ„ h4Ύž>γΤ™‘žΞ˜QΉiΆ’“sη!oΓώHHHθ(RΪ„§Q΄hΦ€ΐˆΫ'O#xς4"ίοκω 9p Cj†– ηSΈό4zε¬h^Ω†€T ηΎLμΎ¬€SM[ΎώΘ™ νιS׎}#r—Μψ3žYŸΈpd¬–f2fώ©3δOβ²ψdι ZW΅ζΨ8Oϊ5°gΘ†Ξ>Θύ x3*ƒsΣ84Ζ“ ύέ8z;_Οόβtκ /ͺ—°ώΎχ"“Šζω·)i¬ΜezeΦrξ½Μ$S­?q΅·’SΓΫB+4<3ΉŒσt:HΟrεi v:ΞΨΟ/ŸηΘXO2ΥZ¦οΥέ™i έCίzφε‰·‹KŽε:ov„)™±/ž‰­ψ{΄'•=-ψxΙs’44ρ΅δ‰Sjx—ΕυΘ ”ιΊ―μ! ¨hΝ½—™ ίΓΰΖλEύr–ώmRŽΩ{/3Ό!šn~ΆοΕW흙σwη¦εkkΊ| Ψ3ΜƒMέ OgςΊ―ΩλΟ'³ώ|2‹{ΈςηHO2Υ0mWVrnLΧνf~iZIΙq+ρŸΒΜ̜ZώuΉόΖ·ρρρxfGkΥͺU ½ςǏS―~=|||8ώœIΧ ‘I“Α©Υχσ~tθΨ€«W―P±b%J–, @«ΦmΈ~ύΊIΞ'1μhΡ²%μΨQ`yŊqsΧ},¬W―>7oή0zΝΨΨXž?{&D―•+_OO/nέΊ)“–šŠ·wi@υ³άωΒ…Pš6ΕΪΪΉ\N«Φ­ ޞ~>νΪ• MlL¬©gL?b€¦¦aoo³³32™ ΫWrΜεΥAή—2ΠεcΝqhΦͺ]‹[7nYžfffΤ―ίΠυ­GŒ/ˆ™ί}Oη.]ςύ.ΦgϞ9ƒo… ΄jݚc|TρσχgυΪuBHKK£CΗN4l€K…βU’>>>Βrΰ³gΞΠ±c',,,(Q’υκΥγάYέ2ψ ΎΎ΄k3gL7θΈνέη3¦L›fς}'$$πδΙš·hθϊΔθ1cυ&…Alμ™‚ƒƒ«Χ{­œ­7oή€Nέ:899akkK³ζΝΉyσ¦Ρσ^½Š₯K— |y,”·kמδ€$ΆlήΔΩ³g„ Žr04ΎBBBh ŒΥ›·τ,fΐπx7Φ^wnί¦~Άύρ­X‘R₯J™¬Ώ¬¬,Y²x½zυΖΝΝΝ$ύh΅ZŽ=!A<}ς„—/_ eQQQ4hА+—/sεΚš‘·…ν#wξή‘B_\]‹£P(hjς=:;; C>lήΠ­>0Ζƒχ©Q£& …{{{½<τ :‡VNΥ­[ΧΠeςBΫΆνΙd( ϊ~ή_σn¦¦¦RΒ« ……BρZNcΓςΣΊM[d2VVVLϋκkͺfoŠXΤ1]ά δφ©Pooο·ZŸ)σBC…φ²³³£Q£F„„δΆ‰‘>"Φ–—/…Q‘‚―0ή5nΜψ _ ΥjίιG¬?;;;‰F£‘\Ήr”-[Φ$[` ­VKBB‚π/gEPNoΪώHHHθ(Rδ-`rκƒ’œ³όDΛOδ.—Λ`h€jθ"b›V΄ζΐu~e,Ήϋ"“{/3ιπΎα‡ϋΨN|PJ Ϋέώ΅gtΞΧ_Ξ&γWΦ’q-u_¬Κ7η“tVJ¦~yΡΙPk™ίΝOGή.f΄ͺbΝΣψό )δ©~<˜ΐοaJS5ό5Ϊ³@™šψZ3ι8–Hβ³Ίv<WσぴZ3ΤέA‘οψσΣυ‘#!ψ€¦-;/)IΛΤrιi:f π+cΙ‘[ω—kŒkιDμhΰΎυμωε¬ξώWžL’s-[5Φεκϊ²½3Gο䞿ςd’žήgurαΘ­TΆ_Pΰk͚ΣΙ¨5‹z~—Ε…ΗιΤ+oΕΕΗι|ΩΞ™G1Y˜+d|όΎ v ΎώΘ™ΦΥlΘhQΘ πjηΑB!c^Χbτ©«{a―ΰfΞχϋˆˆΟŸ›φμƒ4žΔfρΧ(OΜΊλΞνRŒζσ’ψ²½3£uQΏ+X£ΓŠήΆ£„ΔUͺVΗ»LYαοζ­ΪpβθaŠ»Ήaii‰έϊzη?ςχk9ˆ ±uσf>λϋ9mΫ΅ηΞνΫDEE‘Θ“Š $8˜ΑC‚8wφ¬°άt;ΛϋωΧA‘P`kk+μ(κЁ‰Ζ°}Ϋ6fτ΅jΧζβ… €αρu),Œ₯K3λΗΩΘd2’’"YΎTΧvbφΔΗ»X{mέ²™1γΖ³zν:nάΈΞ…ΠP½¨PSˆˆˆ`οή= >‚oΎώJT?9=r”O»vcΧ+ϊŽŠŒΔ«D ’““Ήzε2AC‡©λΟ…ν#/_Όΰχ;˜5{6*₯’ύϋ6ω2Ζ–Ν›9z 11ќ8~‚ΰΰσLž2•1£G‰¦8sϊ4΅kϋ±dΩ2"#"9wφ,ξΩuRRRΨ½k'3ΏϋŽθθh.……™œ2`Ηφm  dρeh΅Z.……ρΐΔ<Εaaa΄iΣ–ί6lD₯RρΛΊ΅œ9}Ϊ€s ±yσfΔͺ5kΙHOηψργΒ5‹:¦ ΒΓΣ“™ίιrtΫΪΪR΅Z5>λϋ9ǏcΓϊίΨ±}γ&L`Ρ’₯άΌqK—Βx›;5™2ίψ7±e‹½,\„F«eϞέάΉ}[(7ΤGΔΪ211‘ysη2ώ‹/077#&&†ΩΩ)Œιgي•ΒJ%™LFƒ† ΔΜo&ͺυuλΟ{φμfθ°αΤͺU›{χξ±mΛΊχθΙΓ‡iίώ#ͺU―Ž™™ΦΦΦΒ\dXΠš}ψ‘°Ω\.gαβ%h΅ZΟΟΥ«WDεyφGBBB‡L•–Qθ§CΏ!£ι½)٫̚«ΫzΈωΚvν;Θξ}Y·|ΎΡ:>YφGc›ηζ™ρr2Γ&Oš‚M!),<’ΘωΙ%˜ύWΑω}ˆn°OέGz¦–Ÿ>-&€ 83±•Ϋ΅[7@ΖΆ­[ήhέ?ψ/Œ/S°΄²bΙe τF>hώΫιΨ©ΕY½j₯ρƒ%ήS§}ΙΡ#G„Mω$$@χαχΩ³ημΩ½ΛψΑ²?=zφB‘³aύϊw$™„Δ»£Θ‘·†π.Uς]λΥ Λ^₯uUFoαat&»/+ΦT<‘ψ«ŽP1δ2y³δDq#5CΛΛd5₯‹™αγfŽ›9½gCΩ)OΈ‘Αϋ₯,ςΣͺͺ ­ͺΪ ΚΠbc!γΐuŽΦςε­]Ζ’,–KOΉ‘Aν–Τ+gEπΓtBΓΣπ5έlaΰrY>§²•ΉψύΚ²υci&£n9+Ξ=L#$<‘”J4cΟ62ϊXa&—af)γΘ8OŽίIγΘνT~8ΐΜύρλΕΙ{i Ω ΛGhi&#jNi½ΊΒž€ΣuΕ ZU΅‘~y+zΥ±cΤΦΨ‚ΔΒΞRNO Žχ*°ΰβ΄’Όβψέ4‹¦¦·;ƒήξœΫ|Ή3ξvs>ώ—ΒΒώa‰Š†‹K1š6ϋ/§ζίμMBβΏΔ'Ÿt&ψόωYΗ­ƒƒ³šΛ—S§Gm??ύύίvΨΤͺU‹Ξ]>εΛiS±··§‚―/«$‡ΉΔ ΙώHHη­9oσnTφΆq±•S·œσ'ς0:‹vΥ —Ι§Έ9Βυsύ]xœŽΫλ«ιφσ ZΞΖΓο½υ’J΅Z]κ…W‰JΘβϋ LΨ™bΆΊhΟC7SiY₯`'¬…BFύςV¬8™DYWs­u:8xCEΨ“tΎώθυwgτq3ηάΓ4zΥɍΌ½žN1;<ε³υ“y«ΥΒΕΗι j€[ΊΨΔ׊SχΈτ$Ϊ₯-‰IΡπ՞x¬ΜeBξΨΣχΣxIίzφ4―l͌©φMΗξ€έώOkΩbˆ-‘)Τ-gΕ’žΒoͺŒ‚“εVt7ηξ‹LβUœmtϊλ†Š_Ξ&³y ;Ξ§PΚEAΧΪvt­mGP“ ~Š""! Gλ"₯‚–ψσΗοΏΏkήν?ϊ˜;t`ΣΖ ο7{“(,rΉœe+VςμYsfΟ~ΧβΌ5’’’Ψ·w/3f~‡F£αϊ΅«œ>uς]‹υ?ΟεΛ—©ί°!K–-#+3‹-›7ρ2{s. ‰ΌtωτSΪԞS'O±ώ·_ί΅8ocφgπ jΥ…΅΅ <π%•xwΩy«Rœη«™³A&cΖΤ ωΚ SΪW·aςΞ8ΪT³ΡsΎΙ€Ιj2΅¦*ΘKίϊφ,;‘Δό#‰tόΐ–ΣχΨ’ΒŽ ΧΟ·ς^IK*zX0f[,“ZλrΑύx0ςΕΝy―€.κvΫ…¬ε΄jƒ»ƒg€1ρχ8Ζ·tβBx:Ϋ/¦°g˜αHΠ&ΎΦ|³7ŽήutΞΣΊε,™Ό3W;…βuΠОO–Ύ †·%Ν*Z³σ’’°§ι΄¨¬s†ldΟΔίγ¨μiAU/sVJ&V©ζΣΪ:go€―53Œ§L1s\ν³U`‘€Γ·T|ΫA—ŠB•‘eκ8\νT/aΑρ;©Δ)ΥTφΘ‰ό*φ–rξΌHγήΛLμ,ε,:šHxl±)Ίœ·yΫϊ½’Τ.mIίu/™ΩΡ…θd5“ώˆ£ύ{Ί{Ήχ2“ΕΗYάΣ'k9λΟ%γb+ΗΓAAZ¦ΞΉ™…³­3#Ήx%$$$r8°?φοΧbόηψiΞC%‡'OžΌρ” ήgχνέΓΎ½{ήxΏψ/Œ/14 ƒΎω±χoDσ]aό f™bfόδΞΎ«*Ο‰bΕΙ$–χv₯AωΧί•Q!‡]CέΙTkωhρsΪ-zN–Ά v ¬8™ΜΦP₯pόΖnD%dΡrώ36…$³)Π]ΨX¬ šψZ‘Φθ6&¨μi­…œ€Š―Ώ‰@ƒςV,ιεΚκSI|ψsΧ"3˜ώqnoΧΪvLkηΜ·ΖπΣ3Gf°g˜‡ΰ,―VΒGkΉ LuΚZαα`Fωβ:grΛ*֌lζΘΔίc©ϋC$ΛO&±€§ki$^ex3G|Š›Ρln/yNYW3ΎjοΜΈό4=_[Ϊί ]–½`Ψ¦ZW³aZv>γρ-y―€=V½ ΩΟΟΈω,“-έ1WΘ°·’σΡϋ6΄[τœSχώ7—ΖIHHHHHHHHHHHHHHHHόϋ)†e*U*³~^Δӈ(ϊχνI£zώ’ǟ:ΒΪ_7Qͺ€“ΖŽΐΖ¦pNΖ‚80.+^pχ[o½ΝΜ$$$$ή†e4EŠΌ΅±±fΨ”*ιΕΪ_7Žΐεν:n―Ef0χP"ν«ΫHŽ[ ‰ Šy›Cήά6ΑΖZί1«JMεΠ‘oΕq PaΪ*Έ™³ΌwqΌ]ήΪla€Θ[ ‰š7βΌ}nAΌ-Η­„„„Δ?δΌ•ψ§ycΞ[ ‰e$η­„„„„„„„„„„„„„„Δ?M‘rήJHHHHHHHHHHHHHHHHHHHHΌ$η­„„„Δ''g>ξΤ33ύ<αž^4kފ6ν?¦aγμޚ ?Μϊ‘*U«ω:Œ7Ξθq,_Ή[[[ΦύϊžžEΏ°ςγ· )V¬˜πχ‡Ν›Σ²U«"_7/Γ†`υΪuμψc§ —·I›Άm5zΜΉVήώ3{ΞOlέΎƒΝ[·±rυϊυ€ΉΉΉIΧ1Τ^ήήή¬\½ϊΘ*Fš5™>γ[αοO»veεκ5¬ύεWƌ‡IΧ)UΚ›ιίΞdα’ΕΜώi.|Pγ΅δ(WΎ<Ϋ+++½ί;vκΔ²+Y΅f-ƒA‘Pxώ«γΛ-ZΆbεκ5¬ϋυ7>οΧ™,†³»taΫŽί ^γUέ™Ÿϊy›4Ρϋmό„/ψ°y “δ~΅Ξ’0rΤhJ”(‘οχΧ‘ηuπ―S‡‹σλoλ™ωύχx{{›tž £ΖŒaΑ’ΕΜ_Έˆ;<φuυckkˎ?vκΩΊ ιηίFγ&M˜8iς»Γ ½ϋ|FΧnέή΅―Κσ¦ž™o‚7υŒ*SΆ,‹—.3Xώ:σSυΣΎύG &όύOΫΓ7‘»‚δ)UΚ›ΥkΧ±aΣfϊυοcϊρ―SG΄-ώMˆΩCCΨΨΨ0jτV―]ΗΚΥ«iΤΈ±Pφή{ο³uϋΦύϊ›π―Uλ6oCt“ω§Η»³³3;ώΨ‰W‰|Ή3?ΜϊQ(ϋμσΟΩΆγw6oέΖ―Ώ­gβ€Ι―₯{1ώιη—ΨxoΨ¨«ΧΰΛ―Ύ¦wŸ>…ͺγUcŒ ͊οο IDAT²tω 6oέΖϊ )Yͺ”^yAγύMρ:²Ύ­χΑ·δΌ•ψ!W(pχπ€Fνόi ¬¬¬©Qˏ°‹!Ψ·‡—/žσAZoEŽ:uκ’’Trσƍ"_«T)Σ]>νΚΑQ*•EσMΘσϊΧ-eό ΧdΙβEφο‡F£yγΧ~›Τζώ4‡έΊ2eD*UΔGw0ιZo«½LA&“Ρ³W/6nX@έzυ¨ί _ŒΗΰXYZΡι“Ξ&]kΤθΡό}π #G gΩ’%Œ7.Ÿ#Ά ΜΝΝ©U«#GŽΚη@­R₯*-[ΆβΛ©S>l(%K•€U«Φ^ηuΖ—――/;ubΚ€I BŊ•¨X±’ή1nξξ4hΠΠΰ5^Υ˜ΦŸ.˜Ο₯K—ŒΚhjE‘”χ›Σ†pqqaΨπ,Z0ŸΟϋ~Ζ₯°0†˜ψbΣ΅{wTJ£F gκδI΄j՚*Uς;ž £ŸΤΤT¦LšHbbbΎ²R?«ΈΈΈΠ aCφξΩσE –η]ΪΰwΑλΞ «ŸoφА!°?vνό£ΐsŒιηƍό4gφ“ρm"f Ρ³WoΑΰόψΓ, Œ›»;6Ά6\ £_ίΟ„<πΆΔ7‰zΌ«T*έ•J”J•πwφο§G· 4€€$†aπZ}d6Δ?ύόο*₯ UφάL₯Κ―ƒ·E·ξ=Ψ΄q=Ίu₯Oο^D<}ͺW^ϋσoεuϊHa03~ˆ„„„„Δ UͺVΗΞΞKBiάτC½2Ή\Ξ΅+—Hˆΰω³g”σρ}γ2ΘεrzτμΙ‚ωσ…ί¬ml8 |Ρh4œK—,&%%333ΖM˜€―oEbcb˜ύγ,AbϊΙ‘ ώ“—˜˜8@@@SvοΪΙς•«˜υύχΑήޞΉσζρέ·3yό8œ€¦Νψsί^bb’˜ΉϊχΐoΏώΚ”iΣ ”ϋUέ£{4oΡ[[[–-]ΒΙ'τΚ===˜υγl\‹'4$˜U+Wζ{ z΅N1Ϋ4nΒξݽǞݻ„σ§Οψ–Γ‡qκδIζ̝K™2e™ωέχ¨5.……±dρ"=~?λGάάάΈzε ‹.@«ΥŠŽιvνΫS¦LYΜΜΜ(ζZ s f8‹ΈΈ8ΜΜΝY³zχολΖAhh(ν?ϊΨ$έ•)S†ƒt/όJ₯’PΚ»7oκ;Ÿ jCΆΰλo¦SΚΫGGG† Hll¬pž˜~¬¬¬HεΚUΛεμάΉ“Ceτ>ΔΪ tΡΰ:t@PπτΙζϟGjφK˜=Μ‹½½=ίΟϊ‘ukΦv™LΖ ΑCxούχQ(δœ9}†υΏύ €B‘`HΠPͺΏW/^rνκUJ”,Α‚yσq{Xͺ”7AΓ† ‘ωΏoί^ <]»ugίή=€¦¦°tω Ο;KΊυΨ΅s'M›6εωση,YΌHΤVΪΩΩ2vόΞ9M“€¦ddd°dρ"ξήΉCλ6m¨Q³?|73O½έ(V¬Λ–.•ΗΠ33**²Πςδ΄Χ !AΈΊΊ’ΞΚbι%B™••#F’TΙRΘεr‚ƒƒΩ°ώ7Α>‹=£:tμHσ-133γRXkV―B­VΊH―φDJr ηϟ/°τό“GlN‘P(:ŒͺΥͺCψ£πλ,ˆ·aAχ1pΒΔ‰ψϊV$22‚ysη’˜˜ˆ··7ΣΎϊŠA€ξωωυτιΒίΖδ1„˜~¬mlX΄x …₯RΙπ‘AΒyeΚ”aψΘQ„]Ό@yŸ wueŊεάΈ~0}|½Š!“’’"ڟcb’Eν!θζ]«Χγ»ogθ9Όή{}/\€Z­ζΑƒϋ\Όx:μΫ»[[[”ΚQ™B™2e |βΧυΨ΄q΅jΧΖΓέƒC‡ώ>Ȉ͟Ν‘ΕΖθ"9njGn]ΙΜΜ4IΦττtΤj5J₯•JiΠq™––Ζο;Ά³hΙRa…Ρoλ70iβDFŒ…»»;ΑηΟ³tΙbjϋωΡ£gOΜΝΜ‰gω²₯<{φ ~{Ώ04.Κ|^₯R Ο]έ›ζΌ5fc ΅Wσ-θή£'ŽŽŽ Θηύϊ4x™™™’γέΨόΩPE±‡`ψ}PlΎ‘P(Dϋˆ±ώ\€Θ[ ‰Χ―^ζόΩS$$Δη+S©”DdO ΜΝΝ)οS¨HqΗOahΪ¬?ζΡ£‡Βoέ»χ@†LΩ5e26oΑϋοΏθhuλΦcλ–- @tt4»| ΐ©S'YΏώ7BB‚ μߏΐώύς9nAη@ΨωΗdddθύ^ΊLƎΝ·Σ§Σ§o_a©½˜<ή₯KS§nƌΙΘαΓΈzε •*U2*‹‹ cΗO`Ω’% €‹| *Θ4tΧ―gԈα$$$`mm-”­^΅’`Φ―ΐώύΗ-€ŸΏ? 6bςΔ/5r––V|Ή³Ρ2c|1igϜaP` ³ΎŽΑAAB4G—O»ςβω † bαόy †\›RΤ«WŸ€¦M³£G’œœLίΟ?ϋώπϋφν 4ψψxZfGrΣOυŸW±°° ++ ΅ZΝ‰γΗiφa3‘ΜΏNξίΏOLL΄ΡώγθθDbb"C‡ ζΟ}{ιή£' s–Ž;Ž“'N0rψ0–,ZĘ±γ°³³t}φƒ>ΰ§9³™8a<εΚ•§Zυκz2* ΊvοΞ¦M…ίnέΌ)DcΉΉ»Π¬ηΞ5ΪVZ­–λΧ―Ρ ‘.R΅JΥͺ€₯¦ /b¬]³š™3fππΑƒ|ežž^<ž{gQQx° πΥρ•˜˜ΘšΥ« 6 ™LFΏώ8°?‡Ί%Ε666ό8gK–-§[χzΡ uκΦ%66†{χ vΜ€;clΩΌ™ΐώύΈl Κ£fΝZ|ϋν F JΥjΥ©U»ΆΡ:ΕlΣΡ#GhΦ,·ί+VŒ²εΚ ΐ„qγHLLdΪΤ)φο§ηΈέrδοg~Λπ‘AT©ZUp⋍iFƒΏΏ?λϋ―¦MγργΗΒψzωβ…π‚dccΓG}lRίΈvυ*υκΥG‘PΰμμLynΌ5X~Δl%ΐτoΎ&°?Α‘—1ύτκέKK+FΑΔ‰_πIηΞ”+WΞθ}ˆ΅—““ύ ΰ›―ΏbXΠδrΉ^”Ή˜=Μ«ƒq&pΰΟ? »@έΊυ¨X©#‡cμθΡ4  ‚―ξ£h½ϊυ)_Ύ<#‡gξœΩ4m ΩίwŒΩΓξ=z°Ο}Œ9‚/§M₯F͚ω"~ΌJ” Zυκόu𠞌wnίαπ‘ΏiΪ΄)_N›J:uΙd’ΆR£ΡΰξξN||rkΧ¬¦oŸή,[ΊΠ₯b9j4σžΗΘΓ >Οπ#…λˆ=ΏΔτ#6.Κ|^₯R‘ΜΎo₯δEΜƈ΅ΧαC‡μίOOύϋ w±ρ.6«³(φ ΏŠΝ7Δϊˆ)ύΉ0HΞ[ =*VͺB›φ°΅³ηφΝλoτΪζζζtξά…Ν›7ιύ^ΫϏύϋD«Υ’LIατ©SΤ¨YS(Ώ{ηŽΰψ9sζ4•*W6ΉΞ₯ΛΰγγΓΡ#‡σ•:τ7†ΗΓIOOΗΩΕΕ¨<ιι8;»ΰ_§VVVμί'/^4*ΗϋΤΰαΓ‡BΤΕΑψ F ΜΝΝqrrΒΝ͍cηψ±c&/½©]ۏγǏ‘R©Πj΅όύΧ_‚¬bebxxxPΌΈ› ³ΘΘH $ϊεK@ηπ[³zwοήΕΜΜ '''@7Α*:gΦωsηHOO7Iž³gN“’’BZZξί’܍ι[·n /·αα(^άUοΊ]»uγΧυπςςb³‰Ξο½{φΰαιΑ/Ώ­gΕͺ՜½ΩΊeKŽ¬œ₯όYYYBτ¨˜<ϟ?gΡΒ΄θc†ΑεΛ—Y±|™žŒagg‹Oως,[±Rψ-=- GGG¬¬­… @fffΎ(aC8:9qϋvξKrRR"ŽŽŽFΛDe΅·G₯Rκ΅{ή\¦₯K—‘g―^8:: Λ•rœΝφφφ$'ηκυΥIΆžΞΥYΘεΊεibϊΙYΆo¨Œ?FCbbǎœQ‘‘<xŠΏ_Ώ†――/?Νώ1ίω‘T¦:PηιŽŽNΒδ:‡€Δ$ςθV₯ʍžQkΤΒΉ [†Υ‘cG¦M™Z`½ί|υNNN|ή―?±jε Q9ΝΜ̘4y K/ββ… ”,Y’―Ύ™ΞWΣ¦ςόωs“ξ΅ Σ±°°ΰϊ΅λ<‹z†₯₯©―,Ρ_{χμaΞܹ̟χ³ή’[•JΕ‘Γ‡…ΎpόΨQͺW―ΞιS§θΦ½;{φμF₯RΈΙŽ1έ–ΔΔάτ)ΙΙxxδn^!V§!Ϋ€Υj9~μ͚}Θύ{χhάΈ1«V­ΜwΎ!ςŽ!έ8Ιξ{FΖtή¨-΅Z-Œ―ΆmέΚξέ»iΥ²Σg|Λ„ργŒ:ωƒ†γΪΥ«Lž8&M™B£ˆHa±!ύΦVΓΦ֎Q£G£Vλϊ”™™!ΑΉŽΟnέ{ΠΊnSž›7n0'Οx7Τ^2™ŒŽ>‘vνΪh4œœΈrY—†Δ˜=]΄»\.ηχ;τ~·³³£_ώx—.MVf^%JŽ=[[[^>!‹Kφ £1{ΈnέZ>νΪ•/ΏϊuV[·lΡsϊψψθκϊiN>ύι^ŠA­Φ9Q΅Z 2™Μ¨­T*•B_IOO'33[[;RSS9zδdΧΝ4nά$ŸSJLCV;[[d2™ή&U–––Β89~μΆΆvˆk1W:Δ¦eθekkG›Ά΅išQ/“Ι„%ιvvφ(σœWPξoCΟ/cςΒΞΞ'OrWЍTJ“žο¦PX{˜˜'ΝQrr2ΆΩ«Qώ€¦ζ.ΧΩΚάg΄±ρ%†!S”Ήˆ›7mdπ /]Fxx8—ΒΒ„ΤηϝγόΉsΒ±;ΆocΤ¨ΡE@•οYc|ώ,†Ψψ**9ΟE΅ZοyΧ¦m[ZΆjEZZW._Φ{Nk΅ΪWy9:9‘”œ{™™™€¦¦βθθ(€Ϊ1„˜~ΔζΟ…ΟηάGzφάνuίb6ζmΆ—‘ω³1\{hθ}ΠΨ|ΓPy[ϊ‘œ·89;ckkGdΔSΤκ,άΏK₯*U±±1ž3ΛlmmiΫ=“Ύ˜―,!1{{{^ΌΠ½Θ:88'”ΫΩΫη^ΗΞNο!+F•*Ί₯œ¦F/š*ΟΕ Έxα666τλ?€={±bΉψnΖqqqάΌy“οfζί‰έΕΕkkkd2Z­kkka š1°Ο£¬ρFΛΔHˆOΐΦΖΉ\.Ό@zxx˜˜Hjj*£ΗŽeχ=rΉ\Ξ¦-[sΟMˆΗΑ!·Nkkk:Ετβύt–ϊ~τΘš5ΓΩΕ…ΰσ&G?"11;;;‘½ˆΟΣGΔψθγ9ώΌ°\2‡zυλΓέ»wIHH`ίΎ½Lψb’Qη­W‰X[[ QD<}ςߊ‹δΌŒŒΐΫ»4[²#Ε4hHDDn€•Ψψ’Ιd|ήΏ?;Άo§{χ\ΌpAxzώό9vvφy&Ζ΅kϋΡΈqϊD&“!—ΛY½vcG"))ɠMžˆ[’““…ΏΕκ³MGfφœŸ8~μ(–VVω" CaΗ΄ξœ9}šτ΄4φμΩM·=(^ΌΈΡ>R£fM¦M™ŒF£!%%…°‹©V½ΊΰΌΣOal₯1βγβXΈpχοέ+°|Οξ]Β¦<™―Dyj―ϊυP―~=¦LžLͺJE—O»RΌΈ.Ϊǘ=ˆŒˆ`ήΟs™5{a//‘={υF£Ρ2q‚ξγΧΣgυ§ͺR±±ΝνwNNΉiŒΩCeJ Ώ¬]Λ/kΧR©re¦NΖ΅kΧ„¨λޟ}ΖζM_ϋΓ«˜­΄ΝvŠj΅Z,,,077'%E7N]»Š……•*W¦AΓ†ωμτ?)OVV&™ 2Έΐϊ΄Z-ϋφξaίή=ΈΉΉ1aβDΒΓqϊΤ)QYβγγΨ½k'»vξΜW¦R*_iK'½r±ηWaεQ*•zvΛΡΡIδθΧ£°φ0―lmsΟΣh4ΘdΉΞQS"ί%ΖΖ—βΟ„7;έΗΠωσrs‚Nφ₯ΰh._ή‡δ”d^fΟer…Ι‘ο…ΕΨόΩbγλmr`~Φ­]c°<³€@ έsΈšπ·ΉΉ9VVV&ΝΕτ#6.μ³Ώ(ˆΩ˜wΡ^buΎ-{hlΎχ‘·₯)m‚„„„„ sΆTΏφxz•@£ΡθE'…Ž>αδ‰ΔΗηŸl\ ₯u›ΆΘd2μμμhΤ¨‘B bŊB~Αzυκλm”“ššJ ―(  …ήKAο>}ΨΈ~ΓkΏ0ŠΙS³f->λΫΠMšŸ>y’!cHž«W―βγγCιeέ€zΰ ΑΔΗΗ‡:€nIβ«Ρi©©x{—tKΛs–Ε]ΈJ@Σ¦X[[λς4Άn-81ΕΚĈ‰‰&2*Š›7t©~œσΆΆΊ(gggaΉdΞ1VVV„‡Π€I€πbέχσ~tθΨΡhbϊρώcŒ³gΞΰ[‘­Z·Ξ—‡Q¬"66–ηϞ _ΤΛ•/§§·nέ4z½ƒ-ZΆδW"τάέ=ψΌμμμP(4lԈ'λγηοΟκ΅λτIΔDGλ'ΩωD]\\(W\Ύsg~χ=»t1*cgϜ‘i³fΈΊΗΪΖ†φ}€ηP_νΪ΅'9)‰-›7qφμaΓ €'ŽΣΆ];qpp  iS._Φε>9|˜mδπah4ϋχ#))ITwE₯NΊXXX`aaAνΪ΅ΉyC·4ΥXbΆιΕ‹„‡‡3tΨpN?–OOyΗtή—21 ;¦εr9 vϊ[―YYYz›β888°zν:ͺUΣΟρτ©`›ΜΝΝyύ„eΑbϊ1f+aH?!!!΄mΫ™L†B‘ οηύπυΝέ\355•„„τ’!Αp{9;;KͺJ…ώώώXYλlš1{Ί<ΟΡΡΡlά°žα#G ή8;;‰F£‘\Ήr”-[V°•ά§Fš( μννρσχgΜNž2UHλπ8<Uj*ξ™ρΑ5°°°$4$Δd]η f+ΝΜΜ¨_Ώ »G ›εh΅ZŽ=!A<}ς„—yRJ“GΜFž„„žχZ/Ϋ†pvv¦I@cF,°|Λ–Ν 8ˆ ‘ΡjΩ³g7wnίΚ―_»Ζ€”ςφ&ϊεK~Κ³τ2,,Œ6mΪςΫ†¨T*~Y·–3§Oγ_§™YY‚Sθu“ηζΝ4iΐβ%KΙΚΚ"::Zo3CςδδM5z4(UJΦ­] θ^|W,[Κΰ!AτΘώ?χ‘””€©rψπaƌΛ†M›ILLδ»ogEHp0ήήή̚=Ίά¬{χμ-kΣΆ­°Y\.gαβ%h΅ZΟΟΥ«W˜;g6#FŽ’k·ξ(•J–,^$DΪlΩΌ‰‘£ΗΝ‰γ'>Οδ)S3z‘‘!”(Y‚y  VkΈ{ηΛMˆ΄ӏ±ώcŒ΄΄4‚ƒƒ©V­·nκ;X ΅—Z­–y?ΟeА :tμDzZΪ±wžaQ]~—^₯ ˆ‚½·X±`ο%–ΨML’’‚b/Ψ’±%φήE½F,‰{,X’ƊPаKίύ~¬ μέ°|ΙΌΟγ“°sgζά3υž{ξζ̚₯υ ‘τtμΨ‰#‡gωιψϋφbο`Οάω 066ζώ½{™ΌnMLL2yu) ζ̚Eο>}073'55•Ν›7kbΎ%Ož<™+ωG5~·‘|ϋ™φΘαΓΈ{χ.{χμfΚ΄irξμŽQΗύ”_|έΆ-~#G°cϋvfΞM•ͺU™Ψ IDATΉ|ιW‚ƒqwwgή‚…€¦¦pμθQ½B€t'՟#"#˜:MΣΟ’²εΚρύ?rβψq6nXΧ―_gδ)ΨΩΫsω%‚ƒƒuΦ s¨=­| βΔ‰™ςξΩ³›~>>xχοOXh¨^§}Ki)ξή½Λ¦π3kkk""Β™=sF†O( °΅΅ΕΨ8γγΑβΕ‹θΣ§/7A©TrνκUύ₯>mYJ?Rse½ϊ θρ½:φ’ΉΉ9³ζ¨Ck¬XΎLcδΣ¦Ÿ;ΆΣΫΛ‹ΕK—‘R©ΈΜƒ,άΛ mνuζΜi<λΦεΧι3xυκ[6obΘΠa4kޜΏ”œΣsμθQjΥMΗNΩΆu {χξ‘_ͺT©Κ½{χΨΎu+]»u'$$„³gΞP΅j5–,[Fθ³PΟ;‡σ£Τ|pδΘaόƌA† ₯JΕφmۈ‰‰A&“ρmο2\ϋ!HΝ•QQQ+^œ.έΊ‘R©XΌhα{χ~ŒN»°{χ;O#}δ‘šƒ³+Ο‚σιχf~V¦₯±oί^Ν§δgϞΕΧw »tE₯Rρχυλzήw%8˜‚ 2}ΖLu˜‰°P–/] ¨ό}ηN¦Οœ‰B.gώ?5‡ΪθZΏtΙ£M?gNŸ¦BŊ,_ΉŠˆπpΞ9ƒƒƒ:μΖη˜ Έ|ι½½ϊΰζζFxx8λΧ―ԟ$οΩΐΤiӈŒŒδJp°&…KΎ|’ς,[±RγΩ(“Ι¨νιΙ£G™:y²€~ϊy{S­Ί†††XZZβΏf-Γ† ΦΩΦΪΖWz²ZOAzMΠ֟υ™΅ΝΟ»~ίΙ°#X·a#Q―^1kζ ΝK•€]»pθγΘβ₯ΛP*•\ΌpνΫΆfΘoii΅•~/υAΧ~^[{I―·d΅ωDGG³hα†ޱ‘1‘,[²8Γ5ΪΦ/)ύHνŸs²ŸΟ.RsŒ>ν•ΊΖ»RuJɚ²»ίΘ~t!S$&ηN C@ ψS‘Rξy4>Œ-[R’DI̟χΉEόΣΉK@–ιΑE Θ.ϊΜMeΚ–₯KΧnLό)χ<›ΩγK_KΪ΅o£c^ό? 6ςΗ «Ήέݝρ&ΠΧΛKk>S33–,]†oρθsΚ#|jτ™cΔ^D d6A ΑΏ{{4lΔ±£G?·(‚ΖΖΖtκάEU HOžo1 EΒ•ύΝ²p†>όsρ˜šΣCΩz1^―όJ•ϊ@Rͺ ‡‘xψ2υCoρŽ6K^πΫΉΈV~š2ϋy_'*qϊˆ§Ρϊ΅CNκJOϊΎ όΧ±΅΅£MϋŽeύΟήΑ‘6ν;bοΰψ‰%ΣNu/]φΉΕΘD₯Κ•™4yΚG―§QγΖ4mΦμ£Χσ–ΖMšΰΏf-[·ο Ί‡GΆΛI―Ÿ-[2xΘPΙλg̚₯5mΠΰ!δϟ?Ϋ²dGS33V­^C•ͺU³Lχ3†οόρƒεΘνώœ[ν•[pscςΤ©¬[Ώ…‹γQ£†&ΝΨؘƒαΏf-K—-ΟΤ―;tμΘJΦώΆŽ‘Γ‡cn.^όΏeΔΘQ΄iΫNσwΩrεΎΘyQ_€Ζ»ΎψCέzυt^ηΰΰΐϊ›r\ίη PαΒΧνœ]\\\:|ψησ¬S5kψiΒDΎλΡ#·EϋΏ »γ+»ϋ…‹—Π€i3J”,ΙΞ]띷`ΑB̜=‡M[Ά²iσ7iςΑυύΌ}:Lέ·ΆnίA₯J•033cηΆlΫΞ–mΫίάSΣ\©3»ύ9',\Ό„ίΦo`φάyY¦e·½€¨νιΙ–mΫYιοΟΤiΏδJ™|βΏf-;w`ii™!νKΫ4hΨP³‡ωuϊŒΟ-Žΰ_DŽ=oΣn{ύН:5«gy›[~Φ¬ΫΜτy‹?Ψ·K5+†5ΆQΧ—¬bηεxl~IA#j1“ΜϋӞ(’RTΜξδ Mε/γΣΕΙ»‰(U*κ7η—φφ8η1Μςϊ‘)ŒίEΠΓ$œσ»Ά5^uς|b©uσ:QIα1OΈ=ٍΌΦYίΛ—XΧημ Α—‚‘!yσ:Q¦\y­ΧΘd2Κ–«@Rbβ'”L77oήdφ¬™Ÿ[Œ Θd2Ίϋ-«V¬Θv~•JΏ·Jnnn„……e«žμpδπaŽ>Μğ'e»ŒՏΉ…/ άάέ²-Λ‡Κ#“Ι(T¨0½½Ό055Ν”ξθ˜—Ž:Q¦LYž?ώΑ²δv΍φΚM† Α_2αΰxΚ”)ΛΈργιϋχίΘεrΪσ VVΦτχ½=Sω•;·οπψρ#*WB£F=jρρρ 1’vνΏaΛζ/Ηθφ!γ67ςύ[Ρ5ή‹|Ž>ς%χK77χlεSΘ(δrυ+(ŠάKΓ—¬»œŒ―μξ7ΤΊ–£P(HMM%%%EοΌΝ[΄ΰήέ»Œ5₯2ϋž;ϊΆ‰ΊO¨4/―xυκ‰B‘ Xρβό4a"Ož<αΞνΫΩ– ²ίŸsΒ ί”*]―>}3₯ε€½tqύϊu~65ΧΚ[²xΫwώž)νSντν[Ǐγψ±cT¨P‘nέ»T™-rdΌΥΧp h²cΐ΅³0 ˜Σ»7A Ψsδv‡n&θ4ή~N†l{E”<-}œP$«˜°7Ё[^²½Ÿs¦k_'*i·4œeΝ™ΦžΗQ© έφ KSΊU·ϊ ‚#eΚ–ΗΚʚ+—.R·A£,―)Z¬8aaΟr}“ΉvέzƌφγΕC—š΅Œ7###fΚM― ρΑΨ£F zτψίύ1·°`Ρβ%"—Λρνο“‘ά6mΪΌeKŒŒ Ήο>K—,&>^ύuFΥjΥθΦ½;ΖFΖDGG³|ΩR‘­c§N˜˜˜’””HλΦ_cjfƐA‰ˆˆ`”ίhBBB(V¬φ<ΖόΉs3mΪ<=λΙέ»whΥΊ5EŠΕά̜bΕ‹σ<,ŒΉsf ΐğ'ρηŸPΏ~Κ—/ΟλΈ8θ@ώόωιλ택ΙΙΙlΪΈ+ΑΑxυιK£ΖIMI‘s—( ωΤ›Ι;R§n=dΐ½{wY΅r₯F—ΩՏfff <·nΔΖ λuκΐΘȈα#GR’DI^½|ΙΜΣ‰‰‰ΑΙΙ‰3gaem­ρ˜ΪΊe3G`֜9*T˜©Σ~!M©δJp°f3?Κo4†P₯j5Ήtρ"+W,Οτψ!ςΤφτδλ6mΨ·w/Mšfτ@rtΜΛΟ“&qκΤIώ:x£πV‘κΟK—― πό9ϊzϋΰθθHZj*K—.ΡθTι|ύμά±ƒΎήύ°΄°dυjN?Ž‘‘!λ7ld΄ŸΖΩΩ™ ΐ@–.Y¬sμIw[[[όΧ¬eΪ”Ι\Ήr%­—‘V­[S¨PaŒŒŒpptΐΔΨ„™3¦ktY©R%Ύνρ=fffΌ|ΙόΉs‰‰‰ΑΖΖ†Ysζ0edž>}‚΅΅5sζΝcΪ”©<~όHηψjۍ›4ΕΘȈ+ΑΑ¬φ_EZZ }ώΡ5ή₯ΪΛήށaΓ‡cgoOHΘŒM>ά[L&“1r”Ϟ=c󦍒ϊiή’•*WΙ`ˆθά₯ ( Θεrvξ؞‘ό_§Ο`Γ†υόsλ–Φ>"Υ·Z·ώšΦmΎ&>.žΐΐ@½οΝΦΦ–AC†ΰδ€~ήΨ²igϞ¬ΣΠΠoŸώ”―PžππώΎ~ός³`ή<άέέ?a}½Όυz5q$ϊzyΡ€i3*T¬€½=Ϟ=#55…―*UfΞ¬™„„„`ffFo//J—.ƒ>τ έgλΤ©Kί~ύ026Φτ‘I'ςτι:P(δΘ5Ζ[9rω;ÜυK[–έπ# eλ–ΝšzζΞ›O@ΐ.NŸ:•νωG]»u§VνΪ„…†²hαδrΉΞρUͺT)ΌϊφΓάάΉ\Ξ’E‹xόψ ½ίΟ[]+δr΅ρ\OƒΉ››;'MΒ’Τ”ΝWσηΞεƍΏ1·°ΐ«OŠ/R©δΤΙμϊ]mΐΣ5†€P(δ¨Tκ9L!—g)―J₯βήέ»\ ’bŊܹ}[²½€Φ]ύYj?–/_>ΌϊφΓΝ­IIΙlίΊ•Σ§OHκG|h{εmk‚L&£o?o*T¬ˆ‘‘gϜeΓϊuU©:υŸγββ8xΰ ]Ίv₯―Wο*―@£° Ση.jΈέΌ=€ΝΫ2όV§fuzύΠ]B!'˜ OV²χšœRžfψ~ζ_1΄^τ‚Iϋ’Y}&Ž ρ΄^τB“~ηE2Ν<ΗΝο1Mη?η^Δ»·LηCi2ο9PwV{Κ5iΗn'Πhξsζ‰₯δOOqύ„‹ !9σ˜4%ύ'©νμ©μnŠg135΄αΜύD²zasδŸT*3:8PΜɘF₯ΜίΚ–…Ηb³Ό€+rκΟΞψF΄ηo‘Μό+FσwL‚’ΦFPdμjΟeο΅wχRγΧPάx7Iί~‘‚ΓΠGΐ»πϋVPqς3\GΎΣΣλD%e'> Τg½ —,RDΖ₯ΡoC$₯'¨uΪzΡ ώyžœe];ƒεΤ™FΏΗ4šϋœ ‡Iš²‚Ÿ$Ρbαs ψ=¦ό€g,>֟ΆΎ όΧΈqύ*ηNeΊΉΉ.ωςrή'“ιΩΣ§<{φŒjΥί­#uκΤεΔ υƒK‚BW―žLϊyb¦Ό5kΦ’~ƒŒ1œ~}ϊΗo>a·³³cΠΰ!̟;A} Δwΰ MήηaΟ©ν鉋‹ ήήύθή΅ ‘‘jƒ”R©δ«―Ύbφ¬™ψA‘"E)W>£·²‘‘!»ves:@₯RI5ΩΆu+}½zI‡ŽήΥωό9?φμΕ΅kWιωγ °C‡ ηΤΙ“ ςΐ’E‹:l8VVκ—wώ«VrαB6¬Η«WΟ RΥͺWΗΣ³cόF1xΠ@LMΝψ¦C‡λGІ ρ:φ5ƒϊ2h /ff¦8:fτπΙJ?ΏϊŠίwμΐ»o’££iΪ¬9Œ7–ΨΨXΌzυΔ«WOΝƒ&ΐΘαΓ‰eόΈ±xυκ©1άΎΥ{ΝZ΅™2ιgψxSͺtiͺUΛΈ/ωPyΜ>ίΘ‘œ9}:ΣύΏ|‰ο€ώlίΆΤΤ4½tφ©ώlhhȝΫw8rψ 4ΰ§ργπππΐΘΘ₯R‰³³3ΡΡΡψτλΛξ€ϊy{PέY‘­Ο¦₯₯qςΔ 6j¨ΉΆΊ‡χοίΧn’“’‰Šz•‘Μ΄΄4φξٍJ₯ΒΠАfΝ›υκ‘‘κsςΉΊj^β<†««:Ζέ;w22«V«Ζέ» ΤρρrΝ }9ʏ‹‚8 ?K—,f”ίhMؘϟγζξN‹V­7f =Ύϋ–“'Nhξεε«WψȚΥώόΠγ;–-]H=υ}e=ήΣλ>*κΙΉδν€T*©^½:Φ―gΒψρ<~όXӟννν6b$Λ–,Α·ΏW‚ƒρφQ’cccYνοΟ€Θd2zφκ́ύϋ5Ζ©ρU£fMš4iΚΨΡ~ψφχΑΞގ–­ZσΞρ.Ρ^]Ίv!$$„>ήlίΊr_’h£KΧn(•JG·”~NŸ:EΩ²e±³³Σδ―S·Ǐ'4τωςΉ`ie₯ρwuu%τΝΊ¦­Hυ-GGGΊtλΖΨΡc9b8zί[ΗN Žoχπ謳f­Z-Z”AΎΎΜ™5“ϊ ΌuL”D©TβκκΚOγΗQΫΣ“K/rόΨQͺ{¨pί~ΧSS3ˆŸί(ΎιЁ"EŠhςjλ³§OŸbΓ†υ\Έ€ι#ϊnα­'₯ϊΉGώΖ»π-Rλ—T–έΙ“'πττΤΤαζζN^''.ٟ€p/X <ˆAΎΈ~ν₯J•t―~>>μΨΕoΟ;Λwί―I“ΪoHιΤΟrΉ\cΤ‡§OŸΰΥ«g†:½zυδƍΏθΪ΅2d θΛΈ±chΤΈ +VΤΩ&ΊP(ι ό rνΖKRSΥαώ€ΪKjΌKυg]ϋ±Q£GsξμYϊzy1ύ—iτσρΑΙΩY§~tκ ν•€Φ„5jR²T)ω`ؐ!Τ«_Ÿβ%J|Ty€κ”κ[φφφtξ;&ώτ~#GRΉreτš,‚’#γνΣga4iX/KΫ'OŸρδι³LΏΧ©Y]7;$$«ΨΟΥ§IΤ,bFγΌNPrωρ;ޞ«rΪWΆdβΧvτφ΄¦G +ώθ’IŸόg4ΣΏ±ηθ0WLdLύSmΔx•Κ7KΓi^֜γΓσΡ³Ά5ή_rξΑ»O‡o…%s>$‘ΓCσ±±—Ηn'²ξ|Φ±eOr₯|~ΝίχΒS(ιbŒL–ωΪψD%fΖ² iyΜ Έ‘BJZφ&ƒ™c¨^،CCςρM%Kz­‹δΪΣd½σOώ#šί~ΜΛΡaωHIS1i_4yΜ Έ9IύΩκ•ρhT*ηqθΖDq7"…΅?ζeίLeŒ ˆΚ²ƒ7Œώύ£šΩrzd~:U±δ[pDͺ|z¬‰ ΄‹ G†ΊβΧΜ–‰{£Ήφ4Yk_)W‘"7o\ϋδŸž:yOΟ:€Ϊ‹ RεΚz=ΌT«^S§NJ₯ΒΥJόW­ B΅—ΔΫΝραC‡(^’ζ(ΨΪΨ°Ϊί_""ύ}’ššŠJ₯βρ£G8:ζΝPwΣfΝΈύΟ?<{ϊ4ΓοwοάΡ=Ξ=C©₯5i …‚¨¨W>t₯R©©ΟΑΑ—|ω8vτ†πδΙcJ—.£SU«VγΔ‰γ( T*‡ώϊ‹J•+ηX?R$$&PΌxqJ—)ƒL&cΥΚ•Γ·.ύάΉ}›G‘R©ΈyγΞΞN:λΣ‡sgΟ —ΛIJJβΕ‹τώ9δΙ2‰‰‰Œ‘;±]«V«Ζώύ’R©ΗΗsζτi½Ζ.:Δϋφ0α§ρDGGeΊΖΐΐ€ *R₯J.\ΈH·—ρ ©ύ˜‹‹ yσ:iφ‡‘‘‘τλγEdD„^ϊ‘βc΄—RkΒωσηπ9B½οQ(xόθ.Ξχ™]WΪϊVρ%xp>ααα(•JŽ9ςQεή’γ˜·»6»y–Ÿ|Νς“―5Θ ύ<΄―€~˜iPœ7T+dΚέπξE€ΠΆ’φ‡ΟaMlωΚMύfΌk5+֜U_;G΅Β¦ oͺήΰΝkΜ•'I¬:G­’κ‡Šδ4σ»8’ΟΖw{#š•1Οςΰ-C4‘fŒαχ`9± Jώ’/K™κ•0gτ(–|Νχ5¬xΖŒ1¨T%Wj“+EΓRζ ¨―ή@ojKΠΓ$֞‹c~ύbΎojK%w΅ž~¨iύΡ@kYή‚ΞΖ”uUΊ;VΆdΞα¬=j–œxΝ°&Ά|ύ¦}½λεαΤ½D֝‹Γ―Ή-/bΣhZ֜R.Ζ”r1¦ ƒ.67.―@πoΑΩ%II‰DGeήΐ~lΜ>EχoΏΕʊκΥ««nή3f…΅΅5qqο°Lo@²±΅εuάλ i ΨΨؐ P€JΕσ/4Ÿ8ΏOϊ6Σ”iΟ%PvΩΆ];Ə—)ίλΧοκ”ΗΗc•α`CfΚccc«ΩΜjΚ‰}M-wž.―­-·o“ώXlήδΛ‘~$8qό8––Vxυ郣ƒ#‡f󦍚Ϩ₯τσ6d@jZ*Ή3GΗΖ¦Σ»<>ƒ§Ϊη'»¨_@Zšzo‘R)‘½y³+—Λ5Ÿ§&%%‘’’‚₯₯ vμϋhλ³a‘‘<}φ”κΥ=ΈqγoJ”(Αμ™ϊΎqγΖίtλ™ *0zμXƏCxx8ΙΙɘ˜˜pκΤI?zŒ½‰‰ο‘c§NΤͺνΙδŸ'ζ8Ÿ•₯%2™,ÁO¦¦¦šqςvά=|’e~•J•ešΤΨ{“3ΛρžTοyχΌƒ/}_HKKΣτg++KŠ-Κ²+5ιI‰‰ΨΨΨπςεKφνέΛ¬9s˜?on¦#ΪΖ—₯₯-ZV₯AC΅‡ΆL&C.W)©ωG ]νeem<έΈ•€Η˜©©)½½ϊππαC’“ί94θΟ±£Gιέ§»¨[·žζ%Fhθ3\\ςα^° wξή‘p‘’ΈΊΊςμ™ΪEWΡΦ·¬¬² ’ϋ·ίbcc£ωά_–Ξ;D[–––DΌΧόυ {{{½κLMyϋ,€"55₯R…μMΉV 2„΄7'q!θaX[ŸΝ *•JσRφύ~'΅~Iυη·εf₯»΄΄4Ξ=‹§§'CBπ¬S‡E 9Ÿ΄ρβΕ -\@λ―Ϋΰλ;«W―²bω² σΉ6<Π₯)>F{I!΅&XYYΡ³W/ά $5%Χόω?θ₯•žD‘Β…ΨυϋNφνέ«WRseϊ½γϋ_ ‹o?ι,p΅5ΒΒδέ"Σͺ‚ Ζ2‘΅»―Κ©SάG+ν 9Χwή°&FοΚΉ‘B΅B%©VΘΣοŒ–vδKg ΄1ΧνΌά‘²%ŒΨr!žA[_²§ΏK&οΫ‚F¬ύ1/£wE1~wωl ωΎ¦5ΧC“±΅ΘžƒtυΒο₯VQ3Mθ}(λϊ.†˜>χ™]Ϊ}eΙ‘[ v_•s7<…SwqΠ~χ"RΈz šΩ‡ή…dHHVamj₯©ίzXρύšκ—0§^IsΪV΄Θ–α[ ψ/’/Ÿ+.δ{σω²‰‰)ΥkΤβjπ%^<ΟωAYJ₯ƒt“_zΑ˜˜nέΊIυκxzzκλM/š_hΌ%:*Š… pή§ Η$…Τϊ%՟ߒmίpκδ †A`` *•Jγ­—σ6._ΊΔεK—°°° g―ήtλώ-+–/“Μcgg‡ο AŒ6”ΠΠPJ—)Γ߁zΥ§~r›˜7^άαακ κ1”qŸ’έ½œ^½zJ?Y΅—>γ=+€φc©)©XZXb`` y©ζββBll, zιηKAjMθώνw(•*όFͺ¬›8irΥ;wΞl Υφ€„t†z}κΤ:WZd=W “f‘sw+€»[\)λνeo₯7ά4/kAΘΛB"SΨsUN‡Κ–ZJRcj€ίΫEP{4€Z`l¨_ή„d_©ίθs2¦k5+6{9’ΘυgY/0ΝΚZpε§<Q?»Q>Ώ 6ζzΛϋ~x…χsΙdΪεΟ*4ƒ‰žχͺ«ΌͺΣBqϊ‡‘Xp4³Gmί ‘ό΄' ΊU³br[ν •©+{δ%δwΝΏη³ ²’‡ϊsζ…]9<Δ•ΚMω=8žκΏ„rόΞΗ“(όΈzε2άΗ_ϋΰ―ύχ:– ηrΕp MΎ7ήZUͺTΑΔΔ$CϊΙ'¨Y«&Ŋ#0πΌ^e^Ί@½zυ5F­~μIΫvνΈ~ύ%K–’@υZΤ¬y nάΈ‘—ρI λ8Χγ{Ǝ―χ}ΗΔΔπδΙ7i¨ϋĐ‘Γ2<|e©±§yςδΑΝΪŠΩzλΦ-&Fύ‚ρmΥ¨QC[1™Έpα-[ΆB&“ahhΘ?φ€„ž±,ΘοšCCC ?Θh¬ ©υKͺ?λβξέ»€€€]{N?¦1Τ~¬ω§rε*|Γ€ϊSώ§Oždπ˜Χ6ΎllmIMM%<<κΧ―Ÿ©hΫoδD?ΩεΕ‹4oΡ™L†••uκΤαΒύηΩO‰ρ­?KνΗ^ΎŒ$4,L3–]]]™1k6––κ6ψΤš`ggGXX(J₯’"EŠPΈpa½ζ-}ˆ‹‹#&&†˜˜G~Nκ|ς€’Ŋagg§C τŸŸ‚œπΡ\M·_$ΣtώsB~qΗΪ읍\₯R‡^xŸ°˜T~9Γ€6v8Xͺί Ύ•@Σ2ΪCLΔ%Ύ[ U*ΈžB…οŒ!ή»—ΐDJ8g™φ‹œ}’(%Λ₯qω3\ϋ:έ΅/γΣΨuEΞρTxxϋ₯Œ^jι)ιlLΠΓ$Z”S·±R=‹ sU+*0α·sqŒkiGE7F7·ε»Υό,§AɜΗώ ”)[χB…57nΦ€“ΗŽπqOšέΆe ίπ#-[΅ζΞνΫ„……a˜.Α…  ϊyϋ¨γΔ₯Ϋ\υσφ¦Zu ±΄΄Τ|Κ6lΘ`.^Ό@ώω™·`iiJξήΉΓς7^'ΡΡΡ,ZΈ€‘Γ‡cldLDdΛτ8X;vβΘαΓZ?MΌρχίτξν…›»;‘̞=Kg™*•ŠysηΠΧΫ‡ΆνΪ“”˜ΘœY³2xΎ9r„‘C‡±qσbcc™6e2aaa\ Βέݝι3g!nάΈΑΎ½{²­Ÿ"EŠ0vόO€ϊ³²"E‹·Ÿ7<ΐŽνΫ9{φ,ΎΎιά₯+*•ŠΏ―_ΧίtιGЍ¨Wœ8~œEK–’’œΜΙS'ωmΝMϊž=»ιηγƒwώ„…†2f΄Ÿ&νξέ;όƒ‡ ΑΔΔΉBΞΪ7cΛΥΥ•―ΫΆΕoδvlίΞΜΩ³©R΅*—/]΄―+ΑΑ,Xι3f"“Ι eωRuΫIΝ? =ή₯ΪkΫΦ- >5kΉyσ—.^ΜΰͺϞ=cίΎ½ πΘΟ'Hκη-ǎ£Sη.μ~Oίa‘‘ΈζΟO\\Χ―]Ε§BCΥύ9»}$"<œίwξdϊΜ™(δrφοSsΘ—.ΆnΩΜ !Cyω2’“'NȘ±γ:d°d芳gΞP΅j5–,[Fθ³PΟ;‡σ›—:ρρρμΩΐΤiӈŒŒδJp°ήα vξΨNo///]†J₯βJp0τŒSL‹-YΏq …‚ίΦΡΔjΝ.Rλ—TΦ‡S'OΠΉKW~ϋmm†ί?ΖόsλΦMκ5¨Οβ%KIMM%222ΓAžΪΖΧγGΈtι"3gΟ!::šίwξ \ω :”σζΪχ9ΥOvΨΊu }ϊτeΑΒE(U*φξέÝ۷?jΩEΧxΧ֟uνWη̚ΙΐAƒιά₯+rΉœ%‹iΎ$’ϐ‘Γ(WΎ>N―ύOVHΥ)υ₯@Dx8{χμfΖ¬YΌzωŠcǎjbX ™"19Ϋ§ττB“†υ²4ΤN˜:d2&™)mσφ;ΙΪεσuΦρΝ²pJη3fZ;ι˜K+O½fL@-ΚY°±χ»ΓFΖοŽβqT*«zδE&Χ‘Ή4…Υε—ε,?ωš£ΓςρθU*5~ et [Ϊ}eΙ™{‰ŒάωŠ>ΞΤ.jΖ±Ϋ Ψό’&Ώ{Γ?bΗ+Le™δKSB½Ωa”r1ftsυC͌ƒ1όšΜΙ‘κƒΆ_Š'ΉΝΛZ¦„jΏ<£²»)#šΪrιQc^±w€‹&ξlz‚&Ρrαsus€isόΟΔ1λ―όšΫ2ͺ™-m–ΌΰόƒD¦΅³§I φ\“3ύ@ gFΉRΜɘo–…“”ͺbQWβ“TτZΑΓ—©ΌšWˆ€T#4&Ώ&noΐ9 ŽΖrb„+q‰J yΒΡaω(—߄ˏ“%eyŸΧ‰J yΒΥ Τ^Υγž2¦…­:LΔ³$†mE|’ŠΏ.@RŠ*C]!It\ΌφΤ,bΖΊσql Œ'pL~Ld”ϋω)Γ›ΨΠ©ͺ"Sπήψ’!mπ©—'C_03ΞΎW±ΰΏI…JΥ>·‚Z΄lI‰%Y0ήηε?ň‘£Έrε GΦ}ρ)ξξ0Ύ^^ΉZ>}Άs—.€ŒνΫΆζjέ‚ώ γKLΝΜX²tΎύ}>Θγύ•vνΫγθ˜U+u_,o¨νιIέzυωuΪΤΟ-Κ'‘Xρβ πυeθΰŒ/α+T¨H·ξέ389!Gž·n\9|μ$nnω©S³zζ ²ˆλsϊόuž™―Ο-Κ[0& Šoή ™ΠΌœ}7DiE8;½%Λ(δ`Δο>ΞLάΝάΓ±΄7bωwŽΤ.ϊα.ϋ†°»Ώ3ΓwΌβλΕ/PͺΤ1g·χsΦ„AXq*w{#š—΅ΐΠ6υvbψŽW4œrΖlφrΞp ΰQΨ” m˜°'Ё[”Tt3‘S•Œχ>ΊΉ-\W0m …ΨΪΗIcŒά֎[^Rsz*TLhmΗΔ½ΊcςX›πuE Z-zΑΖήN4(iSmX™°°«ΣφΗ0H,5‹š±φG'zώΧΊHΦχrΚTΧςο™s(–q»£(εbΒ–>Nš8Δ«ΎΟΛ΄ύΡΜ9‹ƒ•!ίzXΡ·ŽϊΠΆτ}aŸοΗ=½R MΎιΠg-'$žηJpπ'–(gΨΫ;Π a#~—ω°7ΰΏΔ7ίt (0π_kΈΝ“'3gΟα§qc‰ŠŠ’j΅j>τί6ΨNώ γK –­XΙσηa̚9yΌφπ^ο΄ώΊ ­Z·F©Trγολ¬\±‚΄΄΄Ο-–@ ψ?’Ά§'ΎχšˆπƏϋΉEΚuΚW¨@o―>Α’… ‰Šz@ƒ† ιΦ½;ΖFΖΌxρBxή roAξΗ4άώšΜδ?’q°4`ωwys­\@ x‹0ή @ @ ψΤδΨx  ΈMΥΓβ½Γ0 >zς£nŠBq'c–—wϋv›@ ψ#Œ·@ @ >5ΉbΌ…Œά¬ψX†[@ ψγ­@ @ ‚OMoΰߌ0ή @ @ ψΤδΞ)U@ @ @ ΘU„ρV @ @ Ύ@„ρV @ @ Ύ@„ρV @ @ Ύ@„ρV ώƒΨΪΪΡ¦}GŒŒŒ4ΏΙd2Ϊ΄οHσVm4*W­ώΡdψuϊ Κ”-›γr\\\:|ΈΞλςδΙΓς•+±΄΄`νΊυΈδΛ—γϊ³+.Φoά„ƒƒƒζοFΣ΄Y³—›žΎρ_³–»4zω˜΄hΩ’ΑC†ζJYιϋΟΜY³ΩΆc'[Άmg₯jzφꍱ±±^εhk/wwwVϊϋ犬RTͺ\™I“§hώξΤΉ3+ύW³ζ·u > ½Κqssg”©,\΄˜™³ηπΥW•>HŽ"E‹²γχ]˜™™eψ½]ϋφ,[±’U«ΧΠ·Ÿ7†††Yζ|ι’IΣf¬τ_ΝΪuλω±gOd2Y¦k:tμΘφΏk-γ}έιӟgϝGέzυ2ό6bδ(5n’—άοΧ™ Bώόω3ύώ!ς|Υ= Κ‚E‹™ΏpmΫ΅Σzν‡κΗ’»2ΜuoΡ¦Ÿ/Ίυκα7zΜηC+ίυψžΞ]Ί|n14Ό/On­™ΉAn­Q… fρeZΣ?d£―~Z·ώŸώ4κω07t—•V{ιƒL&£ϋ·ί²jΕ jΤ¬I­Ϊ΅5b8rΉœ#GΡώ›lΪΈAgYƒ‡ !`Χ.Ξ=CαΒEψyςdϊυρ"11Q2Ÿ±±1*T Ηχ?d2 –)S–¦M›ρΣΈ±ΔΕΗ3nόxš5kΞώύf*ηCΖW‰%hΧΎ=cGF3aΒDJ–,ΙνΫ·5Χ89;S»Ά§Φ2ήΧθן.˜Ott΄Nυ­3'ΈΉ»ιΎ(—°··g€ο@¦Lϊ™πM‡xχΐΨΡ~:σvξΪ…\ΑΰΎXZZ2kφξέ½Η­[ηομθ'!!±£ύˆΝ”φ)υσoΕήޞڞž 2ψs‹d-Οηœƒ?ΊΙ~ώίζCmς<}ϊ―^=ιΨ©ΦΦy2εΡ₯Ÿ›7o2{ΦΜ\“ρc"5j£ϋ·ί ϊυρ’P‘Βό’ΤΖ§ο …Bύ_ΉΉ\‘ωϋ-φοgνšΥ˜™™Ρ³WoϊΏY'³B&“‘R©τͺχS―_Rγ]!W x³7S(2λΰcΡ₯k76oΪΘ™Σ§³LΟΙόσ₯ς!}$;γ­@ ό‡(SΆ}’‘N'''ͺV«ΖA3ό^ΉRešŽn†•΅5»vξΤ₯€δθΪ­;΅jΧ ,4”E  —ΛuΚS©R%Ύνρ=fffΌ|ΙόΉs‰‰‰ LΩ²xϋτG₯Rqζτ© rzυιK£ΖIMI‘s—( ωͺί(Λd2:tμHΊυχξέeΥΚ•$&&J¦ι"_Ύ|xυ퇛[’’’ΩΎu+§ίΘekkΛ !Cprr`Λ¦Mœ={F“·M›Ά4oΩ##Cξί»Ο%‹‰ΐΘȈα#GR’DI^½|ΙΜΣ5:Ο[²κ?ιyως% ~ύμΩΐς•«˜ώΛ/ύ)_‘<ααό}ύ:ω δgΑΌy€τ|θζζŽΟ€ΟόίwμΘRžΞ]ΊςΗΎ½$$$°tω ϟãFMvΠ A^ΌxΑ’Ε‹$ηJ++K†ΙΉ³g¨WΏΙΙΙ,YΌˆ»wξΠΌE *UΒ―Σ¦¦«· ,[ΊTRmkfXXhΆεyΫ^}½}ptt$-5•₯K—hΜΜΜ8x0nά000 ((ˆΦkζg©5ͺm»v4n###³Ϊiii€ΪΣ«u›―‰‹'000Λ>˜Υϊ%%ΤžΒΠΠŸώ([―^½δΡΓGYΦ™c>υΛΐ‘~~”(Q’ΠΠgΜ›3‡ΨΨXάέέ?a}½Όυϊ9q$ΝίΊδΡ†”~Μ-,X΄x †††Θεr|ϋϋhς*TίAƒ Ύ|‰’Ŋ“ΧΡ‘+–sσΖ @ρυ>Ϊζ˜ψψxΙώόςe€δ|κ}—š΅L›2™+Wh~―P±"‹. --ξsωςeͺWχΰ}{±΄΄D.—”ΉŸ·7… ΞrΦΖΊ ΩΌi#UͺVΕΕΩ…Γ‡±o―ΪρCj¬k,5Ύ@νΙ9tΨpΊuιLJJŠ^²&%%‘––†\.G‘k5\&&&ςϋΞ,Z²Tσ…Ρϊ νηΗΐΑƒqvv&(0₯KP΅Z5Ίu‘1ΡΡΡ,_Ά”ηϟλ—η mϋηœμη ΉfέUΏ~Ζ[]sŒΆφjά€ ]»uΗΖΖ†ή½½ψ±g/|ϊυ%%%ErΌλΪ?k«3'σ!h”ΪoJφ]ύ9;ˆ° @πβΖυ«ž;MLLζ7FΖFP³vš6oEZu°²²Κu4lΘγǏyψ0Dσ[Χݐ!cπ@_ƍC£ΖM¨X±" 6 Υ¨Q“m[·Χ«7‘‘‘tθΨ €Σ§O±aΓz.\Β«WOΌzυΜdΈ΅!`Χ.’ί3N,TˆaC‡0e$zόπƒζS{)yά Δ£†Cbο_»F©R₯tΚcooΟ°#YΆd Ύύ}ΈŒ·O,>ύ°iΓτ%&&sssMšͺ•\ΈΔ† λρκΥScΈ¨V½:žžuγ7ŠΑƒbjjΖ7:θLΣΕ¨Ρ£9wφ,}½Ό˜ώΛ4ϊωψΰδ¬6ΦvμΤ™παψφχaαόyψ €zKQ³f-κ7hΐ¨ΓιΧ§qqqόπ㏚r+~υΏο؁wί>DGGΣ΄Ys½τσ–¬ϊΟϋ˜˜˜ššJZZ'Oœ a£†š΄κάΏŸ—/#uφccιοݏ?ΨGΧnέ΅±tθ°αœ:y’AΎX²hC‡ ׌₯RΙW_}ΕμY3ρ9‚"EŠR|FowCCC:wνΚζΝ›4Ώύsλ–ΖΛΙΩ™ϊ rώά9m₯R©Έqγoj{ͺ=UΛ”-KbB‚ζABŠ5«ύ™:y2!dJΛ—Ο•/ή•ρ<, Χ,>||ΕΖΖ²ΪίŸΙdτμΥ›ϋχσψρ#@ύI±……3fΝbΙ²εtιΪ-ƒΧ―GΌzυ’{χ²6Μf₯;]lέ²―^=Ήšξ‘7=•+WaΚ”Ι П²εΚS₯jUuJΝMǎ₯aΓwύΞΑΑΒEŠp!(€‘Γ‡ΛψqcρκΥ3ƒαԟ#2u Ύύ}(SΆ¬Ζˆ/5¦•J%Υ«WgΓϊυL?žΗkΖWDxΈζΙΒΒ‚―Ώn£WίψϋϊujΦ¬…‘‘!vvv-VŒ›οy f₯©Ή`ΟρκΥScΘK”~Ύύ¦¦f 4?ΏQ|Σ‘EŠΡyRνekkK―ή½ωyβψxc``@³7Ίιω0½†Ɂ?$8ψ25jΤ€d©R ςΐ°!C¨WΏ>ΕK” f­Z-Z”AΎΎΜ™5“ϊ ΐ›χ;ΊζΓέΊ±Ο?2h ?G₯Κ•3yΞ»ζΟOΉςεωλΰΑ 2ήΉ}‡#‡Ρ A~?d2™δ\©T*qvv&::Ÿ~}Ω@?ooNŸ:EΩ²e±³³Σδ­S·ǏΧ)Ά9XΧά-%ΐΘQ~\ΌΔΐύYΊd1£όFkΒD5l؈ױ―4Π—A}133ΕΡΡQ“WΫU£fMš4Wκ% IDATiΚΨΡ~ψφχΑΞގ–­ZΰθθH—nέ;z #G ΗΥΥ•¬Θjύ’’GjͺU»6nξn ПiS§fZc€ψσ!¨_8μΨΆ>½{M{=χΊδΡ†”~ ΌzυdΟ3εS*•,X;wξ0eΟμάΉƒnoΦwΠo|e…Ά9FWιωπmΩQQ―HΞΒh)3xg‘ΛεΈΈΈκΉήΝ͝™³f³|ε*|ϊΘ°·ˆ—§ο[Yςζuβ—©S™<ιgΎύ&&&€τώYͺ½€ΖΧ[’“’‰ŠΚhΤΦ‡ΨΨRRRήxj:ΘΔΔ₯R‰R©$--—―^α;h kVϋσCοXΆt  Ε0hπζϝǠΎβ;p¦©υKJ?Rϋηœμη ς7χ-Χ‘ƒτHΝ1RνuδπaΌzυΜ ―^=5w©ρ.΅–ͺ3'σ!h”ΪoHυ}ϊsvΖ[@  LK#""œΧ―rδΠb’£¨ζQ+Wλ066¦C‡ŽlΩ²9ΓοU«Ucώ?Q©TΘγγ9sϊ4•*WΦ€ί½sGcψ9{φ ₯J—Φ»Ξ‚ Q¬X1Ž=’)νπαC(•J?~DRRvφφ:εINJΒΞΞκ˜™™±Ÿ\Ύ|Y§ΏͺDHHˆΖλβΰ|U©ΖΖΖΨΪΪβδδΔ… jΓΞ‰γΗυzP¨Z΅'NG‘P R©8τΧ_Y₯€pqq!o^'ΞBCCιΧΗ‹Θˆ@mπ[νΏ €»wοbdd„­­- ή`ž:u’ψψxT*ώ«VβΏj•¦μ;·oσθΡ#T*7oάΐΩΩI§~ή’­€ΗΥΥ•V­Zk<ŸŽ;ЧgM9uλΥηΔ{Fm(•JŽ>ΐt²:88ΰ’/ŸF?†πδΙcJ—.£ΙHjj**•ŠΗαθ˜7CΩM›5γφ?πμιΣLυώ%;{οœ{ζΜ™ΉgΟΜ€€pχΞ)ΛέXŸΎ~ύΊτrϋΰΑ}ςεΛ«wίΞ]Ίπσϊ .\˜Ν&ΏχξΩCΑBωiέzV¬ βψ±£™τ•~²λ+αενΕ_νC­V“˜@πΙxϋΤ4ιZCνGŸ^=‰ŠŠB«Υrύϊ5)bΜ¦Σ―Β‡λe¦Ÿ>}ŠqcF£V«Q©T<|π€‚tχ-[‘‘!ΌzυŠ„„B2dkσ‡ΙΙΙxyySΤݝĄ.˜Ÿ)³Ώ{χμΨΎΤΤTι3…Bg‰‰‰„‡‡λδJNΖήήή¨―ΤωΓ€Ξ>‹+Ž­­-J₯’sgΟ aCΚ”-‹B‘ΰΖυλFε‘#»ςδ/P€"E‹JAβ[·nωβ…Τ§“S’)S¦ *VD‘P°jεJ"##₯ϋ£ΌΌΌ8~ό8‰‰‰¨ΥjφοΫ‡Ošέ•+_ž;wξV«εΨ±£™žΗΠψeLCT¬X‘³‘gIMM%Y₯’~Κ ²λοά½Λƒ8yβ+θ_χ1‘’’Βωsηxp>y3ψJSϊ—! ω˜œΜEπσυ•²ƒΣΉtρ"νΫwΐΪΪjxzJuDFFrνΪU¦NωŽQ#†γκζFΟ^½υίΈa}ΆΆU8•ΆΪ***ŠδδdœΣ~Ό16Ÿ7„\JημΩPό|}MΞΊMgΨέͺ ‹.°ΪΐYtν֝А©­“U*ΒΞ‡IΎ,ύσO>ω”›7nHηϋχS¦lYlM8£@N?rσημΞη?~ΜμYΊ­C6oάΘ©`Σζ•r>Ζ”φΚ.†ζΟruζΤz46ί0d#οK?bہ@ ˜˜Θ…σg₯ΏoήΈF©2ΊΙHr.νΤϊ³ΟΈxρ"ΟήΚtvr"1!Aϊ;!!ž₯ΛdψϋM™2) ‡w8\«G―žlέ²%Λ@VϊR~€ΤΤT){TNžgϞ±hαΪ΄mG`ΰ.^ΌΘŠεΛτdΜ {J—*Ε²+₯Ο^¦€ΰδ䄍­­4!xύϊu¦,aC89;sγΖ›—δ„„xœœœŒ–ΙΚκθˆJ₯Τ{YΙΈ—i±bΕιή£NNNr₯τ`³££#‰‰oτϊφ$[OηκTΜΜtΛΣδτ“ΎlߐύŒ=FC||G‘‚Ožπ8ό1ήή>\Ής7eΛ–eΞ¬™™Ο ₯2I:ƒ}899K“λtβΘ“A·*Υ›μ΅F-] ΊeXν;t`ςΔIYΦϋέ7ίΰμμΜW}ϋα;ΐU+εχ΄°°`ό„‰,YΌˆσηΞQ΄hQΎωn ίLžΔ³gΟLzΦ¬x™ς+++ό}…§O±ΆΆ"ω­%zrύkοž=̞;—ωσ~Τ[r«R©8tπ d G¦J•*œ«V­Μt½!2φ!]?I³=#}:cΦ–Z­–ϊW:ΫΆneχξέ΄hή‚)S§1fτ(£Aώ€Aƒωϋςe&Œ‡γ'N€^ψi±!ύdΧWΓήށaΓ‡£VλlΚΒ‚А7Ο.]»Ρ²•ξPžkW―2;C7Τ^ …‚Ÿ§§'gg.]ΤmCbΜ‚.ΫέΜ̌_vθο³νΰΰ@ί~ύπ(VŒΤΧ©.RD μΩΫΫσβΩsι»11ΡΈ¦½0σ‡kΧαΛΝωϊ›oQ§¦²uΛ½€aι₯uuΝ™IΊ—bP«uAT­VƒB‘0κ+•J₯d+/_ΎδυλΧΨΫ;œœΜαC‡θ?`»vξ€~ύ™‚Rrς"»ς8ΨΫ£P(τ©²ΆΆ–ϊΙΡ#G°·wΐwΐςΊεεΐlΪΈAςQ†Ζ({{Z΅φ€QZF½B‘–€;88’Μp]V{ΏŒΙcG=z³RD₯Rš4Ύ›Bvύa|†mޱ«·r‹δδ7σZ―|3Fλ_rς19™‹Θ±yΣFϊ°xι2–Cε”τqQ­VgοZ΅nMσ-HIIαΕ‹zγ΄V«Νr•—“³3 ‰ožρυλΧ$''γδδdτ}IN?rσημΞηӟγeΪάν]ίr>ζ}Ά—‘ω³1œhθ}ΠΨ|ЍΌ/ύXάΊ/Ώš@ ώΨΪΩammC\lŒτ™B‘0ϊa*φφφ΄ώ¬ γǎΙT££#ϟλ^dσδq"&ζŽŽoξγΰ 7ΘΚQ±’n)§©Ω‹¦Κsώά9Ο;‡}ϋυ§[χ¬X.šqLL Χ]γϋι™ObwuuΕΦΦVΪθήΦΦVZ‚fŒψΈ83θG'k¬Ρ29βbγ°·³ΗΜΜLj‚ Orr2ΓGŽdχ>t3336mΩϊζΪΈXςδyS§­­-NNNFƒˆrϊyϋ7–eΕαC‡hΨΈ1.„†œ19ϋΡρρq888θLΗ)±lDŽΆνΪqζΜiΉd:΅jΧ&:*Š[·nΗoΏνeΜΨqFƒ·…‹ΑΦΦVΚ" ηρ£G”-W.GΑΫ'OΒρπ(Ζ–΄L±:uκώ&ΣJ) Ύκ׏Ϋ·Σ΅k7Ο;'½@={φ ΗŒί–&ƞž^Τ―ί€~ύ}Q(˜™™΄f-#‡#!!Α ξrŠ]†Œ;;{₯Ώεκ”σM‡dΦμ9=rk›L™ˆΩ!»}Ίtι(Xΰ“'y™’Βž=»ι­ωςε3j#ΥͺWgςΔ h4’’’;žΚUͺHΑ[9ύdΗW#6&†… pηφν,ΛχμήΕ_ϋt{τΎ~+ΛΣP{Υ]‡Z΅k1qΒ’U*:}Ω™|ωtΩ>Ζό!ΐ“πpζύ8—³fvώœτΩ½GO4-γΖθ~\ϊvΚT©ώdU2vφoμΞΩωΝΆΖό‘2)‰ŸΦ¬α§5k(_‘“&MζοΏ–²{φξΝζMίωΰ9_iŸΥj΅XYYaiiIR’Ÿόύχe¬¬¬(_‘uκΦΝδ§IyRS_σϊΥ+ωΜ²>­VΛo{χπΫή=δϟŸ1γΖρΰΑ}ƒ‡κ€Γξ];Ω΅sg¦2•RωV[:λ•ˍ_Ω•G©Tκω-''g™oΏΩυ‡u`oζ:FƒBρ&8jJ†β‡ΔX’C~LΘέΉθ~ ?ο͞ “&-šK•*MbR"/ζ²ζfζ&gΎgcσgCΘυ―χIϊe†Θκ,έ8\YϊΫ“ζ€rϊ‘›?gwμΟ r>ζC΄—\οΛ›o@Φ6ςΎτcQΆDΡ\½‘@ ώΨΫΩSέΛ‡ΰγGQ©””-_„ψ8ιΧڜασ/8~μX–'‹ž;{––­Z³dρ"μνν©W― Ό9Π£\Ήrδ/P€ϟS«Vm½ƒr’““)RΈˆtΐ€•΅΅τΛwΟ^½ΨΈ~Γ;Ώ0ΚΙS½z *W©ΜΊŸF₯RρψΡ# €-―•“ηςεΛψϊ X±β<|ψ€R₯JΣΈIV­\All,111xϋψrζ Ν[΄Θ”’œŒ‡G1@·΄\£VσϊυkΝ;K·ξέΩΧ_Ό|ω’-[JALΉ29’’"yA“¦M9°?… ζ3g1jΔ’““qqq‘–K6iΪΠeㄆ„£gOφυ*•Š>_υE«Υ°bωrΩ:ετςφcŒSΑΑτισ ”φ£JGΞ~ Ν³§OiΤΈ1‡’d©R*T˜λΧ―•Ε1Oš5oΞθ‘#3•(PΆνΪσΓτi$''S·^==|¨χ/ooϊH?DEFκ'εΛsγΖ \]])Y²€t0R:ΣΏ Β2eβTp0£ΖŒεΰ(UJΪ΄mΛ‘ Ϋ#Θυ―Ο>kCbB[6oΒΜLΑW}ϋIΊ?vμ(_υνΗ™Σ§Πj΅4lԈ λΧθνηlooΟڟuϋ<Σ]Nρρ©ΙοΏύ€§§§€;cuΚω¦ηϟσΰΑ δΨΡ#™τ”ή§ŸmffΖΏ>žο§M%""‚А<<<˜1k6 t{³ξέ³@Ά¬UλΦa=fff,\Ό­VΛΒωσΉ|ωsgΟbΘΠatξ₯RΙ’Ε‹€L›-›71tψ’’"9vτ!!g˜0q#†γμΩPŠ-ΒΌ P«5άΊy“ε&dΪΙιǘύ#%%…*WΜυkϊVCν%‡V«eޏsρσ }‡Οy™’ΒάΩ³ Œ2©Σ—

›1“θθh6oΪΘπ#iΡ²%νΫ'λ3rψΠ!jΧ©C§/;³uΛfφμΩΝ ΑΤ¨αΙνΫ·ΩΆe ]»uηή½{Ÿ<‰§§K–-γIψNŸ:E΄CΠδό!ΐΑƒ7a h΄ZΆmέJ\\ …‚½zκ}χ]σ•111”.S†.έΊ‘ΥjYΌhα[Ο~˜/;waΧ7™F¦Θ#烳+Ο‚σ˜ζŸ5j5{χξ‘–’8„Ξ]Ί’Υjωϋςe“ο»F±bŘ1s–n›‰ˆ',_ΊΠψˎ̘5 •RΙό.jclό2&!ύœύ”ε+Wρβωs‚OžΔΝM·νΖ‡π‡fffœ?wŽώΎpwwηωση¬K ϊ&%%±{ΧN¦=‘‘‘\ “Ά£(X¨¬<ΛV¬”2 uκΦεΑƒϋLŸ:UV?ύύρςφΑάά{{{‚Φ¬`δπaFΫΪPΚHVγ)ȏ †μΩhΘ?ϊΛFŽΝΟλ7ΝμY3₯Uvώϊ+nς²xι24 gCCΩΆu‹ήυφφv8κ­„ΙΖζσ†ΪK₯“ΥόηCΛ’… 1j––Όˆ|Α²%‹υΎchό’ӏάό9'σωμ"ηcLi―¬0Φί含SN֜έωFvυc …*εΥ»₯# ΑOͺy}hώ³΄jݚ²eΛ±`ώΌ-Šΰ_Lη.]E¦ »˜β›*VͺD—έψφλΙ d‚¬ψΨΗ’ŸNήΌωz‡½‘ίYωJ&σ ~ΎΎ―³Ά±aΙe ‚GRΰŸΖ#ζ" »˜Š@ ΑΏWW75nΒαC‡>΄(‚–––|ΩΉ‹΄ͺ@‘Ν©ΰw;0Qπί !!ίφξeκτοΡh4\ωϋ2'ӁϋdΧWš™™±lΕJž>`φ¬Y\ΰcDΨ³@ Θ)bہ@ 0±m‚@ @ ‚±m‚@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ @ @ |„ˆΰ­@ όqvv‘έ睰°°ΠϋάΖΖ†ZuκΡͺM{6i†“³σ’03ή>>,^ΊμC‹‘‰jΥ«3eκ΄χ^O“¦Miή’Ε{―'¦Νš΄f-[ΆmΗΫΗ'ΫχΙ¨ŸV­[3lψΩοϜ=Ϋ`ΩΠaΓ)R€HΆeɎ<Φ66¬Z½†žžY–›0ή_}υΞrδΆ=ηV{εEέέ™:}:?―[ΟΒE‹ρ©YS*³΄΄dΘΠ‘­YΛeΛ3ΩuΗNXΔڟ~fΔ¨QΨΪΪώΣβ΄Œ3–vν;HWͺ\ω£τ‹¦"ΧίMeάψ ΤoΠΐθχάάάX·acŽλϋ/Qβ_έΞΩ₯`Α‚Œ5ꝯ«[―AkΦπυ7ί³W―άν_±ρ΄oΏώ όΘςΎΖ/9ϋθΐˆ‘Ί²-ΫΆS­Z5“οkccΓ„I“YΏa#›ΆleΘΠ‘Ή"―!δμyΦμ9lέΎƒΝ[·±2h5}ϋυΗ2WκΝ ό.,\Ό„ŸΦ­gΏσ2•ε€½δpvvfϋ/Ώ²2(ˆ•AA8ηΒ{œ=»»{΄f-6m¦oΏώ9+§.RDzφΏξΜ5ΫΌDπV ώC˜™›S `!ͺyzeY^΅Ί'QQ‘μϋ}woί’|…J°„†Ήzυ*sfΟϊΠbθ‘P(θή£7¬Οφυ¦βξ:²ΛΑπνΧ—λΧeϋοͺ[;;άάς,wχΘ™ήE…BA‰%ωϊλo°ΆΆΞTž7o>όQ±bφϊHnΫsn΄Wn2rΤh‚OΣ§w/–/[ΖΠ‘Γ°··ΰσ/ΎΐΑΑ‘Aώ™:ε;:wιJ±bΕ¨^½Mš4eόΨ± τ€΅ >β>Ifή₯ίζΖu_1Φί‹|ω˜νέέ#[Χ©”*TJ₯ξί**•*7Εϊ±ρτ·½{ψυ—ˆ,οkό’³]Ό±ε;؈§—... πνOχ]X΄paΆδ3΅ο³ηΉsfΣ­Kg&ŽGω εiΫ}Žλόώyhΰ`fόο‡,Λr^Ζxυς%~ΎΎψωϊ—γϋΙΩσγǏπνΧ—];Νq=r˜ΪΞOžΰηλKΐΐοUAξ`aό+@ ψBΕJUpppδΒΉ³ΤoΤD―ΜΪΖ'gBN£Υjyόθ!=Μ΅ΊΧώΌŽ γΗρμιS‚Φ¬eς€‰XXX0kφϊ}Υ‡””|jΦ€W―ή„­‹/Αάά₯RIΰ ½ϋΆkמ–­[caaΝΫwXΊd1III€n‚έ­{w,-,‰eω²₯Dσζ-˜6uŠIσ}ΑΗ…ΘΌ‚W._δΜ©ΔΕΕf*srrB™”H•Oͺ¬EkjΧk€cž<ο]¦πǏ ΗΛΫ[ϊ¬^½ϊ=z€d• ί~}™ςέ·™­U«6 5bμθQ 0€ΔΔDϊ€-awqqaθ°αΜqC‡r†ΐ!o–Ά=xJΊu)X° ώώιή΅ ‘‘Ί€”F£‘jΥͺΜ™=‹qcFS²d)*W©’W·ΉΉ9»veΣ¦7Λp5 5kΦbλ–-ψωφ'22’ŽΎ|SηΣ§|Υ·—.]€οW}τ°#FŽβψ±c Μ’E‹1r­ZIhhλΧ―Γ·__ι:/ooκΦ­Η„qc6tΦΦ6|Ρ±cŽυ#GγΖMHˆO`θ@† ΔΖƚΌyυ34²ΐ§U«ςΛφνψϋ 66–ζ-ZπβΕ &OšH||<ΎύϊβΫ――τ’0fΤ(βγγ™c„ τκΩƒcGJΟMΰΠ!¬YDŸ^=₯`†\ίΣ=WΦύ=£ξcb’y•τΞ)oooΦ―[Η7“'σπαCɞ]]]9z Λ–,!pPΒΒπΠ½ΨΕΗΗ³:(ˆ€ΑƒQ(τνן?ψƒ‡Hχ5ΤΏjΦͺE³fΝ™8~ƒpqu‘υgŸςώΗh—i―.]»pοή=ψ³mΛV*WΦχΝ¦Π₯k74 ›Σόœ~N?N₯J•pqq‘―WΏGŽαΙ“p *€½ƒƒ”₯_Έpaž€k†lDΞΆςζΝK—nݘ8~cF’pαΒ&?[§/;σόΩs°pώ<ΖΜΜΜh΅jΧ¦T©R dξμY4lΤ΄r5ιΠh4.\˜―'O’NέΊœ;{–#‡αν£Ϋ*₯GΟ^X[Ϋ0lθƍΛ;R²dIιZC6{βΔqΦ―_Ghhˆd#¦n!=3OμRfΘΨθΪ΅  Θ€‰h΄Ÿ~ϊ©Qyδpsscψˆ‘,œΏ?__φνϋ“QcΖ’P(ŒŽοrσ 9yδϊžœ< ?ž^Έpί~}ΩΊys¦η”³ημκΞrνεQ¬>5}1l(Csω%Κ—/·•J•! ͺBe ϊ6CgΊο/;vՏ\ί3†œ=Ώ••©©©Fλ”“UΞ?³η={annAΐ@?F JυκΥ©ί ‘Ρ:MA6Ϊ+»Θ_ΞΞΞτλߟοΎύ†Αώ˜™™Ρ"l]Žš5kQ|y†fδπα4hؐ2eΛJεrσ ΆoίΖΠ!€W77S\»ΰ#Do@€₯₯Ξ.DEErpŸ<{—O­€ξγǎQ·n=@—eQ­zu)x"‡—·7Ǐ#)) ­VKΠͺ•­Zΐ'Ÿ|ΚΝ7€Ιϊύϋ)SΆ,Άvv¨’U8;9±:(ˆ—iΏϊgΜ 9Cjj*Z­–‡7o>½Ί›·hΑλΧ όXοσ[7oJAΰΰ“”―PA*S©TΔΔDs`~4TŸ›› βπ‘ƒάΏGR‘BE£:πττβθΡ#¨T*΄Z-ϋϊ‹jΥ«ηX?r$§$S¦L*T¬ˆB‘`ΥΚ•Rΰۘ~nήΈΑƒΠj΅\½r…ς­ΟNŸD©TςςεKΝ=«§χ!OvP(ΰΑƒϋ$&&ŽZ­F•œ,m7 Ρh€¨SΑ')V¬xμkΘf>DέΊυ€=Πκ7hΘΡ#Gτ={6?__)λ6#•+WaσΦmtμΤ‰%‹£V«Q(XZZςκΥ+.ZLΟ^½xωςΦ66™οΨ©.μϋσO½Ο7nXopieVδ/P€"E‹ςΧ>]&π­[·ˆ|ρ‚ uύK₯RakkΛξ;‰ŽΦ’3ϊ‚d•аσaάΈ~]―Lο₯ί7«ώžNBB~ΎΎ\½rΕδg1ΖυλΧ₯`ϊƒχΙ—Oχ£Κ§U«qοή=)‹zߟR΅Z5©mCΜαΩΣ§Œ5š °{Χ.½ϋκ_^^^?~œΔΔDΤj5ϋχνΓ'-h'ηδ0Φ^*TδτιS€n κ½»wίIG΅jΧ¦jΥͺ,\0_j9ύ(•JΝ=Kƒ† (SΆ, …‚Χ―ρ$‚uΑΫ™3gΡ»Oς€ύθoΤF ΩVΉςεΉsη11Ρh΅ZŽ;jςσ­YΔκ U’ξ,,,τφq4TgΩrε αΥ«W$$$ςΩΎ<@£Ρ R©xόψ1ρρρ8::ΰενΕ_νC­V“˜@πΙR` ΫlNxόψ1³gιΆ₯ΩΌq#§‚ƒ₯2O//ώψγw΄Z-Κ€$Nž8‘Χ&Ω‘§j΅jάΊuKς£ΗŽeμθQh΅Z“ΖwΉω†!yδϊžœ<9Α˜=ΏΆ”k―W/_ββ⊷666όρΗοœ?ή€ϋΨΏŸίφξΰ›―'›³ a0C}Οrφœ‘Β… σΩgmτ2υ³;~˜={y{³oߟh4’““™4q'OΟQπ~ΪKΉρ+..Ž>½z…V«εϊυkLή§OŸbܘѺy‘JΕΓ(XΰM†ζ*\X²™?όssσχ*«ΰύ!ΆM―_ΏF₯Rρ$€ϋwοP‘bellmIIN~―uŸ\Ής7eΛ–eΞ¬™&ίχΚ•ΏιΦ₯3Ÿ|ς γ'NdςΔ <ώœW―^aeeΕργΗxψΰ!..€€θ?C§/Ώ€vΊLύξΫ,Γ½= …Bοΐ'kkk©Ÿ€χ»ϋχοey½V«Ν²Lο₯]™eΟ Ϊ·ςeΜ ύ@s[P«Υ’=;8ΨSΊT)–­X)•ΏLIΑΙΙ‰¨¨(φξΩΓμΉs™?οΗL[Žκ_φφ΄jνI£ΖΊ m…BR©λSrώGcνεΰθˆ2CΏMΟΖ2kkkϊϋΰώύϋΌzυκMFτsψΠ!ϊΐ;©_Ώτ#Ζ“'α,XbΕΈyλ&%J–’pαΒ„‡λΖQc6bΘΆ²ŒΕЧ{899‘V«177ΧΫΠPφφφΌxφ\ϊ;&&WWW“κL}š~wRSSΡh΄˜™)ξλΐ°αΓQ«u6eaaAhH†ΰ’›Ν Z­VϊQφm»svr"1ƒΟKHˆ§tι29’ΗΡΡQo,Ρj΅R›™2ΎΛΝ7 Ιc¬ο’''³ηχΡ–rνυμΩ3-\@›Άν ΒΕ‹Y±|™ή˜fˆτμTΐ€eϋ¦έώn 9{5z †ψψ8Ž>ΒΑϋΦi|όΚcφόΆνe΄‰μΦ ο§½δΏ >OOO4 Ξ.Ξ\Ίx)Wκν΅-[΅ΰΪΥ«ΜN›s988Π·_?<Š#υu*…‹yλG½¬ηφφφ$''Ώ™;¦€ˆ=ΐňΰ­@ P)“°΄΄ΚτΉV“;‹k4 f^ 3f ΖΕΕqνΪUΌ½}¨[·n¦μ>CΔΕΕ’'£ή=œœxφμρqq8:ΎΩ+Σb3μΏφ:ΓΛϋ»ΠΆ];Μ9£·|<Η7ςΨ;8θMb^ΏΞ\g||(2bς8εΡ“ΥΊη|Sgžtˆ†γβκJhΘ^Ύ|iτ~NNN4jܘ];w’V«Ήpαξί§r•*<ώœ'OΒρ(VŒΫ·ΰ7Π_/#ΊΓηŸγιεΝΧ“&ζJΐ!&&†Χ―^1Θ l¦Σ+•―λ{uYτχœ’œ‚]†μψt3336mٚι;YΥ™¬J~«Ξ7ΫDh4Š7ESVh€ΓΒ… ΈsϋΆΙΧΌOⲂŸ?Χͺum’³,ΎΨΨ8*WyΣΞ …wwχ΄,δμοςuξ{rςδ$ϋΦ{ΞmŒ΅Χωsη8ξvvvτνןnέ{°bω2C·{―d·Ώη”Ήsfb°<»γWV³ηΈΨXς8:J[#₯ϋΈΈΈb?ΩEnόͺ]»΅jΧbβ„ $«Ttϊ²3ωςε“Ή›ιμΩ½‹ΏφιV½Ξ°ξή£'–qctϊo§LΝtmVσ Ur2666zsG»wπί‚ ±m‚@ ]’J₯€DΙ”(Y eR"/_ζΞ/ά±±±JΛΦͺQ£VVϊβcGR«v-J—.Ν™3§MΊghH( 4”‚Z}ΎκKϋΈ|ωεΚ•§hΡ’΄hي+W˜|’Γ1Oš5oΞ―;²>…Ή\Ήrδ/ ;(¦V­Ϊ\»vΥθ=£££yφτ©”AS²T) *ΜυλoNͺMINΖΓ£ ;\.}ΉσΉsgiΨ¨ΆΆΆΊ}·ZΆ”&ροK?_vξLΊuˆŒŒ$:*ZΚΤ3¦9’“SpttΔΕΕ…B}ΪjYι γ θφcMhΦπ¬Αυ«Χr,ΟΗ†……΅kλf©U«6χοί{§ ”ιί@ΗN2}.g³§‚ƒ)[¦ -ZΆδH?ͺxy{΄f­d ΛŠiίαsκΦΣm…RΈHJ—.ΝΓ‡₯{vθπ9VVV)R„Z΅jqϊ”n|™²eω¬M[¦Ob0pΫ³Wo&NžlςsΗΕΕρθΡ#š6kθlbψˆ‘9~‘λ{¦'O‚Φ¬}§=[―]»†OMœ±··§qΣ¦\3α„φΛ—/SΊtiŠ+@©R₯ΰχζtιΟ>kCbB[6oβΤ©`ΎκΫOοzCύ+44” J}΅IΣf’žεόξοΖΪλζΤNσ?eΛ•Γέέέdύ₯¦¦Ο’Ε‹θΡ£'ωση7I?Z­–#‡αοΐγGxρβ…TA:uΉtρ"—.]’AΓ†Rζmvmδζ­›”)S–ΌyσannNΓ†L~Fιǐ&M›ΊΥΖΈ{χΥͺUΗάάGGG½}θγβt›τ6ͺY³¦‘Ϋd"44”Φ­?C‘P`nnNŸ―ϊR6Γ^r$''S€pΜΝΝ177§ ±!Ν=KΛV­Q(888P―^=BCMο·YqρBeΚ”•μ§^ύϊŒ3­Vkψžδϊžœ<ιȍ§†Θ©ΟΛrνU½z zχι薍?~τHoΥΐϋ°YY?€~²‹1Y ωgcφ"΅— “Ώω–Ji‡Žώ›τ#7~ΉΈΈM²J…CڊA[γ>Φ’““‰‹‹#..Noυ…‹‹ OΠh4”,Y’%J˜δΧ“‰ŠŠ’†§'Ν[΄”²p>Dζ­@ ό‡¨X© ΕKH7mΡ€c‡’œ¬β\θ<½jRΎb%86χ&U[7o¦wŸ―hύYnήΈADDζ–††„0Π?€Σ§NIΛΓ@w²Ό—·ζζζΨΫΫK'ߎ>Œ³gC)R΄σ,@­ΦpλζM–§e\ΔΖΖ²hαFŒ…₯…%/"_°Μ„S}Ρ©Σ—Εaaa΄j՚u6’R©ψiν‚Ož4ιZClΩ²™όX°p­–={vsσƍέ3>>žysη2zμX,--ˆŠŠbVΪrgSΖχμ ΧχδδIΗΠxϊγΌωδqrΒΪΪsssjxzςμιS&Oš˜cŸ—ΖΖ/ΉφΊvν* 5dρ’₯€¦¦©wψΪϋ°9ή‡~ήΖd5䟍ΩσζΝΊφZ΅z ―^ΎδθΡ£’Ξεκ>b$•«TΑΒΒ[[[in48ΐ?ΗIΩAnό:yςuλΧη3fΝζM>b$-ZΆδφ­[²φΌlΕJi₯›B‘ NέΊ UΚ+Ρr@`„Oͺy}hZ΅nMΩ²εX0ή‡ε?Εθ1cΉpα‡0ώε)Lώζό|}sυΎ¦Ψlη.]ΫΆnΙΥΊώ ύΛ¬mlX²tƒώ‘=?4>œΌyσ΄j₯ρ/ ΑΏggg–,]Fξέ>΄(›Άle ί½½€ΝΝΝΩΊ}έΊtΞρ9‚χ‡ΘΌ@ Θ%ΎθΨ‘²>uψΜ™Σ\ ϋ‡%Κn4jά„―'e>μM ψ/ρΕ 9sζmΰ6Ož<̚3—―'M$&&O//μoμΣρ©Y“κΥkdYφψΡ#~ϋmο?,ΡΏwwΪ΄m›e™Z­fεŠε°DΑ‹nέ{`ggΗκ UT«^ΨΨX½ΐ­ΰίƒή @ δΏώςΛ‡!ΧhΣΆνΪ·gΣΖ ϊΓή‚μbffΖ²+yϊ4‚Ω³f}hqή όΆw/S§F£αΚί—9yβψ‡λ£ δΜBΜωΠbό+yόψΛ–.ωΠb±²ΆfePcG&Ξ„C@MΨΓGŽdι²ε$§$K[nξL‚ο¦Lω€ ή±m‚@ ˜€Ψ6A @ Α?Ν»νξ/@ @ ‚Ό@ @ ‚Ό@ @ ‚Ό@ @ ‚Ό@ @ ‚Ό@ @ ‚Ό@ @ ‚Ό‚ ΞΞ.΄ϋΌg ’εgντώkχy' Ε{‘α3fR±R₯ί§`Α‚Œ5ΚθχςδΙΓς•+±··`νΟλ(X¨PŽλΟ<ΖX·a#nnnίMš6₯y‹9ΎoF!hΝZvόΊSΛϋ€UλΦ >"Wξ•Ρ~f͞ΓΦν;ΨΌu+ƒVΣ·_,--MΊ‘φςππ`ePPΘ*G΅κΥ™2ušτχ—;³2h5k~ϊ™£Faggg}άέ=˜2m: -f֜ΉT­Zνδ(YͺΫω½Ο;|ώ9ΛV¬dΥκ5ψ τΗάά<Λλίξ_ΖhΦΌ+ƒV³φηu|Υ·o–~¦c§NlΫρ‹Α{Ό­;SμyΏσ¨ί ήg£ΗŒ₯IΣf&Ιύv9aθ°α)R$Σηο"Ο»ΰνγΓ‚E‹ωyέz¦π&]gggΗ°#X°h1σ.’}‡Ώϋϊ±··gΗ―;υ|]:†τσ±QΏAƍŸπ‘Ε0HΟ^½ιά₯Λ‡CβmyrkΜΜ rkŒ*^’‹—.3Xώ.σSυΣ¦M[ –ώώ§ύanθ.+yάέ=Z³– ›6Σ·_LΧӏ·l[|LΘωCCΨΩΩ1lψ‚Φ¬eePυκΧ—Κ>ωδSΆnίΑڟΧI΅hΩκ}ˆn2twqqaΗ―;)\€_tμΘfΜ”ΚzυΫvόΒζ­ΫψyέzƍŸπNΊ—γŸΏδϊ{έzυZ³€―Ώω–ž½ze«Ž·}Œ1κΤ­Λε+ΨΌuλ7l€¨»»^yVύ=·xYίΧϋΰϋΐΒψW@π3ssςεΛOΕΚU2•={φ”}Ώο‘ώ.RԝΒEŠ’Υjs]Ÿš$)•\»z5Ηχrw7-ΡιΛΞμϋsJ₯2Ηuζ†<ο~_w"""rυžK/ }Œde?sηΜ&4$„Όyσ2fά8ΪΆkΟ―Ώμ0z―χΥ^¦ P(θή£«V¬ f­ZΤS‡±£G‘T*=f,ŸΡ‘Φ½Χ°αΓΩωλ―Ÿ€D‰’|7u*ψ’’’"{₯₯%Ÿ|ς ½zχΙ@­X±Ν›·ΰλIILJbδΙ΄hΡ’?ώψ=Σ}ή₯•-[–ŸΞΔργQͺ”|σΝ·”+WŽ7nHίΙ_ uκΤ5x·u¦ΩσΒ󉍍5*£©uζwwγ_Κ%\]]8„iSΎγξέ»|Ρ±#ώƒ3qό8£ΧvξΪ•RΕ°!ΨΫΫ3{Ξ\nίΊΝ΅kϊώ;;ϊINNfβψqΔΗΗg*ϋ'υσWWWκΤ­ΛΘαΓ>΄(@Φς|Hό!xΧωOvυσoσ‡†δyόψΎύϊιΛ/qtΜ“ιcϊΉzυ*sfΟΚ5ί'rώΠέ{τ ΰKρβ%ψnΚnήΌΙ‹ηΟ±³·γBX3ώχΓ{”ϊέψ§ϋ»J₯ύ_©D©TI§ση°vΝjlllθΫ―?ƒΖΙ¬P(&ΏύΣγ—\W)U¨ζf*UfΌ/ΊtνΖ¦8yβD–ε9ρ?+οb#ΩA1Θε IDAToΰ?DΕJUpppδΒΉ³ΤoΤΔΰχΜΝΝ©P±2§Oe=ΰζ333ΊuοΞ‚ωσ₯Οlνμπ0€2eΚ’Ρh8~μ(Ώώ’›€|Φ¦ %K•ΒΦΖ–eΚπ4"‚ηΞ!>>žzυκγ7p ––―ΚSΎύ–ǏιΥ™?~<½Ό>tˆήηΥ«U§ωψ88:ςλŽRPJN€έΊS»N"ž)]Ϋ]{ZΆn……9wnίaι’Ε$%%`aaΑ¨1c([ΆΡQQ̚9Cœ~ΙΚ~2ΕΎ?€aΓFμή΅“ε+W1γ‡Έ{χΦΦΦ­^ÈαΓ©P‘‚l{i4:}Ω™ΖMš ΥjYΌh!Χ―] H‘"ψωΰββΒ«W―ΨΈa=ΒΒ;n<χξέ£tιΈΊΉρτiσό1Σ„nέzDΎˆδΦ­[ΔΗΗ³jεJι™/]ΌhRv–B‘ΐ£X1._ΎΐύϋχP«ΥδΝ›—ππpΩk{υξCα"…YΈp³fΟΡ+«Y»$** €=»wΣΎ}‡LΑΫ·ϋ—““³ηΞeΪ”©<~όGGGζΞ›ΗχΣ¦σπα6jΜοΏν%**€ YϋυλΟΊŸfβδΙYΚύΆξŒΡ΅[7š6k޽½=Λ–.αψ±czε… dΖΜYδΝ—³‘!¬ZΉF#[§œo5f ·oέfΟξ]υS¦NγΰΑœ8~œΩsηRΌx ¦j† aaΛWΊN˜1“όωσsω%-\€V«•νӟ΅iCρβ%°°°ΐ-―V–V̚9ƒ˜˜,,-Y΄Š;wtύΰμΩ³΄iΫΞ$έ/^œ}ώ €R©δξέ»Έ{Έg ήfΥ&†|%ΐ·ίMΑέΓ'''όύ-]'§ϊϋϊR‘BEΜΜΜΨΉs'φeτ9δΪ tΩΰνΫ·ΗΜܜǏ1ώ<’Σ^rεόaFωaΖLΦ^MXΨy ~ύωδΣO177#ψd0λΧύ θΖY€ATω€ ϟΏΰοΛ—)R΄ ζΝδύ‘»»ƒK™ωΏlߞ₯<»tε·½{HNN`ιςœ9} Ÿš΅Ψ΅s'5βΩ³g,YΌHΦW:8Ψ3rτNŸ€AΓFΌzυŠ%‹qλζMZΆjE΅κ5ψίχΣ3ΤΫ777–-]*+‘13"βIΆεIo/?ςζΝ‹:5•₯K—He666 6 χ’ξ˜™™Β†υλ$,7F΅οЁ¦ΝšcaaΑ…°0V­B­VΊL―6νΪ’”˜Δ™3g²΄Α¬Ζ/9yδζζζζ L₯Κ•‰ŽŽβΑύYΦ™οΓ‚ξΗΐ1γΖQΆl9ž< gήάΉΔΗΗγααΑδoΎΑΟΧЍŸίN™"ύmLCΘιΗΦΎE‹—`nnŽR©$pP€t]ρβΕ :Œ°ση(UΊ ωςζeŊε\½r0½½!“””$kΟQQ‘²ώtσ 5kω~ΪT.\Έ }ώΙ§Ÿ²xαΤj5wοήαόωσx{ϋπΫή=ΨΫΫ£T&ΙΚ<ΠߟβΕKd9βηυΨ΄q5<=)X  μgο]ς‡άόΩΨY.“sΔΘQtλ™Χ―_›$λΛ—/Q«Υ(•JT*₯ΑΐeJJ ΏμΨΞ’%K₯FλΦo`όΈq 6Œ rζ K—,ΐΣΛ‹nέ»ciaIll,Λ—-ειΣ§€όψeμύΒΠό9'σy•J)»Ί›Ό5ζc ΅WΣfΝθΪ­;NNNτοοΛW}ϋ0Џׯ_ΛφwcσgCuζΔ‚αχAΉω†ΉΉΉ¬³ημ ΆM‚W._δΜ©ΔΕΙιξQœ˜˜h”Iς“ΎμΠ¨qc>|Θύϋχ€ΟΊvν†Γ†2iβš4mΖ§Ÿ~ θh5kΦbλ–-ψωφ'22’ŽΎΰΔ‰γ¬_ΏŽΠΠ|ϋυΕ·_ίL[Πvώϊ+―^½ϋΌXρβŒ1œiS¦Π«Oi©½œ<ŊαSΣ‡Γ†24p0—/]’|ωςFεquueδθ1,[²„ΐA\ Γ?`$Kΐ Αl\ΏžaC‰‹‹ΓΦΦV* Z΅’ΠΠΦ―_‡oΏΎRΰΐΛΫ›Ίuλ1aάX† ‚΅΅ _tμh΄ΜcǏηTp0~ΎΎΜψα{Ώ€.XΫιΛΞ<φœΐA,œ?€Αƒ13ΣM)jΥͺMΓF;z 11‘>_}%έχΣͺUωeϋvόύKσ-MO:YΩΟΫXYY‘ššŠZ­ζΨΡ£4nX*σφραΝ;DEE΅''gβγγδ?ίΫKΧnέ]°tΔΘQ?vŒ‘ƒY²h#FŽΒΑΑΠΩlΥͺU™3{γƌ¦dΙRT’ŸνnnnNη]Ω΄i£τΩυkΧ€l¬ό Π°qcNŸ:e΄­΄Z-WόMΊΊLՊ•*‘’œ,½HΘ±fuΣ§Nεήέ»™Κ *Μ³goξρ4"‚ΒY,|»ΕΗΗ³:(ˆ€ΑƒQ(τνן?ψƒ‡Ί%Εvvv̜=›%Λ–Σ₯k7½¬_Ÿš5‰ŽŽβφν¬³YιΞ[6oΖ·__.fxιΝHυκ5˜6m*C’Rε*Τπτ4Z§œo:|荿±;777J”,IhHcF">>žΙ“&βΫ――^ΰtΛ‘˜>ΐAT¬TI βΛυiFƒ··7λΧ­γ›Ι“yψπ‘ΤΏ^<.½ ΩΩΩΡΆm;“l ψΏφξ;:Šͺ}ΰψwwΣ;Ί₯ ”$Tι¨4»i‘w”Ž(ˆΏ₯H±‚•&Jο-!€B'…τlκξώώX2$&;»$Ax_ŸΟ9œΓξμΜ<{ηή;³7wžαΜιΣ4jԝNG±bΕ¨\₯ ηώ6k0ΏςQλ+¦}όA}ϋ(y9©•Oχ=qttbδˆαŒ?Ž7ίz‹J•*YύjΗΛΛΛ‹ΎύϊρρGS:xZ­–—”¨χ‡9Λΰύ±cωcλVΒΒNΠ°a#ͺU―ΈaC3jΝ[΄ ͺ―/7¦rεʌ6ŒΟgΟ’EΛ–πΰο;ΦϊΓέΊρϋΦί5b8N™Lέzυς̜/WΎ<΅jΧfϋΆmΉbΌtρ»vξ eΛ–|8e2 4@£Ρ¨φ•F£‘₯KΗΰΨΈa ΰΰΤ¬Y“bŊ)λΎΨ¬9{χ₯>ΨZί­ΐΨqγ9Μπ‘CXΌh!γΖOPD΅jΥšΔ„DF ƈαΓprrΔΫΫ[YΧ9ͺa£F΄mϋ“&ŒgؐΑ+^Œφ:ΰννM—nݘ4a"c?xŸrεΚ‘ŸόΞ_jρ¨£7iBŸ :„OgΜΘsŽQσ8ϊC0Αα§~ ΏΎΔΕΕρ†ΧΦβ±D­|Rυz‚ϊφaΪΗεYΟh4R±bE.]ΊΔ'Σ>ζηŸ’Ϋƒσ;ΨΦΎςc©±VŸA½?Μήvlμ}2ς΄Τhι€€€P¦LΐάΧW¨ΰΓ¬ΩsXΊ|ƒ‡ Νum œœςH3}³c)Y²7cΣ§}Lχ=qppΤ―ŸΥŽ—ZϋΚ–‘žAllξAm[$$Δ“™™ω`֩廃0F 1χο3lΔpV}΅’^={°dρ"ΐœŠaΔΘQΜϋb.#†#8ψΓ†PΆ£vώR+΅ληΒ\ΟλυzR|ο+e“Z£vΌvνάIPί>ΉΚ ¨oeΐ]­½«]?«ν³0ύ!Xώ=¨v½‘VGl©Ο!ƒ·B!ς¨\₯*W―\.ςνΪΫΫσΦ[o³nέχΉήχΰχί·b2™HINζΠΑƒΤ­WOY~ι’2πsψπ!ͺΧ¨aσ>+V|–*Uͺ°gχ<Λvξ܁ΡhδϊυΣΣ)VΌΈΥx2Σ)V¬8 ΰδδΔοΏoεΔ‰Vγx‘N]^½ͺΜΊΨφΗΤ©[{{{ΌΌΌ(Uͺ!!恝}{χڜkΨί?€}ϋφ’Χλ1™LμΨΎ]‰Um™š2eΚP²d)₯ΜnίΎΝΐώADGEζΏ―V <<;;;ΌΌΌσζϋINNΖd2±rΕrVX‘lϋΕ‹DDD`2™8wφ,₯K—²Z>Ω,՟œΚ•+G‡•™O{φμ¦iΣ•ν4kή‚}T°Δh4²kηΞ戡D‰”)[V)ŸkΧrγΖujΤπSΦ >FVV&“‰λx{—Μ΅ν—^~™‹.pλζΝ<ϋύxϊt/YΚεπpŽ9lS¬«ΎϊŠΞ]Ίςνκ5Lωpj‘ό…ίΡсŒŒ Δf~FzzNŽŽΉ>c©};Ζ½»wσώ”.]šMΞ@usuΕ―fM>™6'O’IΣ¦Κΐ³£“oΌρ&kΧ¬±—ZΩΤ±cΗHIN&55•ΠΠγΤπσΛ΅ά>-υM§NžΔΩΕ…*U«ζΑ¬cG’žžnSΕ¦σ»- Ϊ&δHs”””„냻QžF©©o7χ•ΟΡΦΪ—K}LaEΤ¬ϋ~- fαβ%DDDp2,LI pμθQŽ=ͺ|φηŸ~dδΘQ…ή'€>ΟΉΖϊυ³΅φUXΩηEƒΑη|Χ}{^zωeψσΤ©\ηi“Ι”ο]^ž^^$&=όŽ™™™€¦¦βιι©€Ϊ±D­|ԟ z=Ÿύ=\»=Κΐ·Zσ8—₯λgk}paϊCKΏ­]oXͺ#«|dπV!D.₯Λ”%2ϊν֏ΚΥΥ•φ:2aάΨ<Λβpww'2όCΦΓΓ“ΨΨXeΉ›»ϋΓνΈΉε:Ιͺρσ3ίΚiλμE[γ9Κ‰ΠP\\\θΣ·έήνΞ²₯κO3Žεόωσ|:#ο“Ψ‹/޳³³’θήΩΩYΉ͚„ψxάs”9Φ8«ΛΤΔΗΕγκβŠV«U~@–)S†„„RSS5f ›6n`Οξέh΅ZΎ_ΓΓuγγππxΈOggg<==­"ͺ•¨Χxψΐ²όμΩ½›­ZQ¬xqB‚Ω<ϋΡ’„„xάάάr=˜ΐΓΣƒΈuDM§W_εΨ±cΚν’Ω5nΜύ˜ΒΓΓ‰η·ίΆ0vάx«ƒ·εΚ—ΗΩΩY™EtλΦ-nήΈo΅j…Ό½}ϋ>>Y`¦X“&MΉuλαL+΅φ₯Ρhθέ·/?τ]»vγDh¨ςκή½{ΈΉΉηό΄raμο@³fΝιΫ/FƒV«eεͺ―3j$‰‰‰Λ°\r̘qqq%))Iy­ΆO΅ΎiΟξ]̚=‡}{χΰθδ”g&bA΄MW©R…eΚpψΠ!ΣΨΌy]Ίu£dΙ’VλHέzυ˜2i"F£‘δδdΒNœ VνΪΚΰ­Zω€―΄&.6– ζsεrώw‡lή΄‘νΫΜ9z36ΛΣρjάΈ 7bΔ‰€κυΌύNgJ–4Οφ±ΦάΎu‹Ή_|ΞΜY³ ;ͺόˆ|·{ŒFγǚΈτΡ΄ιΚώSυ©ΈΈ>¬w^^ΣXλS’“ωfΥ*ΎY΅Šκ5j0yςΜ9£ΜΊξρή{¬ϋ~ν#?8E­―t}0(j2™pppΐήޞδds;9sζ4T―Qƒ&M›ζι§Ιx²²2ΙΜΘ`Θ ωξΟd2ρΫ–ΝόΆe3₯J•bμψρDD\³ψPlqq±lΪΈ6δY¦OIωΫ±τΚ΅\νόUΠxRRRrυ[žž^*Ÿ~4νs–«λΓυŒF#ΝΓΑQ[f(>IΦΪ—υsBΡ^‹€ω‘σζ>Μ :yΚ‡Κ@sεΚUHJN"κΑ΅¬N«³yζ{AY»~ΆD­}=NΩ,³$3Ÿ‰ζσp-ε΅½½=NNN6]ͺ•ΪυsAΟύ…‘ΦΗ<‰γ₯ΆΟΗΥZ»ή€όλΘγ*I› „"OΟb…ž•ŸΧίx“ϋχηϋdΡΠγΗy₯]{4 nnnΌψβ‹J €jΥͺ)ω5jœλA9©©©”/WN‡N§Λυ£ GϞ¬]½ζ‘0ͺΕS―^}ήλΥ 0_4ίΌq#Χ Kρœ>}š*UͺP±β³€ω’Ί€ΔΕΕK`ƒ€ω–ΔΏΟHKMΕΗ§"`Ύ΅<ϋΆΈΠΠγ΄hΩgggsžΖW^Q1Υ–©‰‰‰ζφ;΄nΣ0§"ψlφ\]Ν³hŠ+¦ά.™ύ'''B‚ChήΌ…ςΓΊWο>ΌφϊλVχ©V> ^¬9rψ0ΎU«ςς+―δΙΓ¨V,Ή>χξήUώ’^©reΚ–-Η… η­λξαAΫ—^βΧΏΝΠ(]Ί ½ϋφΓΝΝ NGΣ_δΖυλΉ>ΘΚU_ηJ'm8yO΄xρβTͺT)ΟΊ3>ύ?ήzϋm«1f;rψ0-[΅ΒΫ»$Ξ..tμΤ)Χ€‚ZϋκΠ‘#I‰‰¬_χ=GŽVX°>Ϊwθ€§§'΄hΩ’S§ΜΉΟF ͺδG1l(F£‘ Ύ}HLLT-»ΒjΠ !888ΰοοΟωsζ[S­νS­oŠŒŒ$""‚!C‡±ίή<ε”³MηόQ¦¦ mZ«Υΐ@εIί 5"+++ΧCq<<5£Ρ|Ξ¨S§.Ž ±Ή¬³©υ•vvv4nάD)»kΧ*Λ1™Lμέ³›AƒsσΖ ’r€”°Z\xβγγΉqγmΪΆΜutΤθ1Κϋw:wV΄DGGs?ζΎMυ2$$„ζ-Z(³I[·i«μγRψ%ͺVυΕΫ»$:Ž-ZζZWνόe-KεsιE`oo§§'ώVΏƒ­ ήV§T)sš‰Ζ›(λΕΗ›ΰ™]v ΝνΥP°sΈ5jν+›₯σ©Ϊ9A­>[c©ξΫ/ˆ^}ϊ Ρh¨_Ώ>Ο>χ‘ǏPίΏ>ƒΑΩΩgggήxλ-Ž?X–­GΟχ,>΄ ¬]Ο[:^jν+[~Χ?OΒιΣR­Zužyζ^~₯gϞΝ5oιό₯V>jΧΟ=χ†ZcΛρ*jͺ}πcκ­]o$֐™·Bρ/βW³6>Ο>§Όnσr{φοΩ₯άBζμμLΊ…&T±bΕhή’£GŽΘwωϊυλθίσ|‰ΡdbσζM\ΊxQY~φΜϊυ ’‚ΡQQΜΙqλeXXνΪ΅η»5kΡλυ|συ*:D`ƒdfe)ƒBB-žσηΟΡΌe .ZLVVΡΡΡΉF`)žμΌi#GΒΑΑ} _―Z˜ψ.[²˜ƒΣ·_ΏoύΔΔΔ\3UvνΪΕθΡcXσύ:ψτ“ιάΉs‡ΰ`|||˜9k6ΜΉY·lή Ί¬]ϋφΚΓz΄Z- .Βd2±`ήh$§·ί~‡];wζϋ’ίΆl¦x‰β|1o>φφφ\Ή|9Ο¬[‡<³Ίτz=ŸΟžMΏώύqvr&++‹οΏ^Ι=˜ΝΓΓ#ΟΓJzτμIλ6/(³oΣϋώΒΓΓΩΌi#Ÿ|ϊ):Ž#‡±{—9ο§Zϋ*W^{ρc?ΰ§d֜9ΤχχηDh('ΓΒπρρaξόdee²gχn›~„¨•Z}ŽŠŽbΖ§ζœ~Τ¬U‹χzυfίή½¬YύZ­–Σ§O3mϊ'+^œ‘‘„……Yέ'¨χM`ži5lΔφνΫ—gέM›62pπ` ۷mzΪ·Z›VΞΪ5«?q"ξξξDEE2gΦgΉn‘Τj΅xyyaoŸϋηΑΒ…_ΏZ·i‹ΡhδΟS§Ψ±έό΄e΅ςQλ+›·hIΟχΜΉ™ύΉ9΅Ζ²₯K”A>KεσσO?/(ˆ…‹—`2™8Ζ_ω

,Ί™M’`žφsΙλoΌ·wIV>BnδΗ!ΏΎΗΗ‡)S§2 (ΘβzŽNN,ZΌ„aC+ƒGO2!ώiΆτ1r-"„((I› „BˆiΕ‹— e«ΦμΩ½ϋI‡"ώEμννy§s%ͺ9yxx°tω J–4ίjοΐe•Όz„Βτ•oΎωΑǎιΐ­τέβ‰Τg!DaHΪ!„BόΟκΨιU^}ν5Ύ_»¦Θr%„%ΎΥͺ1nόŽ=ʑÏφΐDρ˜Θo[Ά0}Ζ§FΞ9Ν‘{ ΪWj΅Z–,[Ξέ»w˜=k֏Gˆ§‘Τg!DaIΪ!„°€MB!„B!Δ?M&!„B!„B!ΔSHo…B!„B!„β)$ƒ·B!„B!„Bρ’Α[!„B!„B!„x Ιΰ­B!„B!„B<…dπV!„B!„B!žB2x+„B!„B!„O!ΌBˆ!/―bΌϊΖΫΨΩΩεzΏLΩr΄hΥ†Vm^¦Q“fΈΊΊΩ>.^ΒΟΏnΘυ―YσζEΆ}kž}ξ9.^bΣg5z _σ-ΛV¬€k·n9Ί§Χœ/ζωqͺTΉ2?ύς+NNN΄^ŊΟ2kΞη¬]·ž΅ί―£MΫΆΉ–χιۏΑC†ζYoΑΒE|σέjζ|1·Pqη§zΜr!6}Ύ]ϋφŒ5ΊΘγžΖΦ­ΏΡ’EKjΧMbRΓ‡ΰνwήΑΑΑ‘ττ4:vμ„£“£F '**J΅|t:ί­^Γ„ργ>r$₯K—&ψΨ1/Z@ΧnοΈIξάΎΝ— ζ“’’bυ{tν֍6m_ΒΥΥ•%‹q`ΓAόqγ'pυκUͺT©Bρ%Έ{χσΎψΒκ€qΟχzQ|9,˜Ο¬Ωs¬Ζ­B>š6 WWW²23iΠ°!σΎψ‚³gΟP·n]†££#GfΙβE6o[νxYΣ¨Qc8ξ\χιέ§uκΦΓd2qθΰAΦY­”ο‹―o5ξΗΔ0λ³™ΔΗΗ[§nέΊτxο=άέέ‰½ΛςeKΉzυjžΈ|}}ύώ|8y211Ρ899Ρ/(ˆ5όΠj΅lΨ°;Άζϊ3xΘPjΦͺΕύϋ1D\‹°Ήμ:vκΔΡ£GsΝΥh4;z„ί·nΕd2qώά932(ανΝ­›7­nΣRΥh4ΌυφΫΌΨ¬9ΜνtΕςε€₯₯αγγΓ”©S@ωςεωhΪ4ε΅jϋ²rΌ RGΪ΄mKΧnοβιιIΏ~AτξΣ€Α™™©ΪΎ¬Q‹ΗZ{?BΧnοR·n]Nž,Ϊ?F !„BˆΗC&!ΔΏΘΩΣ§8vδ ρρygR&Δ'ΰθΰˆ§—eΛ•':*ς‰«kΧnhΠ0rψ0&OšHλ6myα…¬g4 dυwί1uΚ_ΏΞK/Ώ€··7]Ίuc„‰Œύΰ}Κ•+gs<φο'*2FC ??ͺT­ΚΙ°0«λ5lԈΆm_b„ρ 2˜bΕ‹ΡΎCeωέ»wιέ§/ώyŠ>½{1bΨΓΫΣοήΉK“¦M)S¦ ƒ δέ]ˆŽŽΆZ>ƒ˜ϋχ6b8«ΎZI―ž=”ΑKŸŠiΠ°£GŽ`Δ°‘œώσOͺW―nS¬_·Ž Ύ}8•ϏΡh€N:Μ™=‹ρc? R₯ΚΤͺw6χί­ϊj%3¦Oηκ_ΩCΆμ™ˆ!!Α¬^ύA}ϋΤ·gϞΰδΙ“υνΓλΦ=v­/«λ7nΔΡ#GςΌί½GOt:;ΐθ‘#¨W―͚·P–ΏP§Ώότƒτ'..N©³jρ”(Q‚Q£Η°`ή|±mΫΌ?v\žΜΕ‹—`δθ1|>g611ΡJ<ŽŽNŒ1œργΗρζ[o)·Ξ7n„ >>tŸΞ˜aΣqΜζννM``ΆώΆ%Χϋ&“‰6(³‘«ϊϊ’ΥjΉ{ηŽΥmͺΥΩ€ΐ@š6}‘‰γΗ1rΔpxσ­·lŠU­}©―‚Φ‘];wΤ· L™€ΊŽ««νΪϋΣ²U+ΐ|ϋxJJrŽO˜ΈvυZώ+›Lά½w΄K9Y+“ΙΔ΅kyoŸΏwο_.˜OΗN―2lΨpN:Ε²₯KHΜ±­‚λs”»ΡoΩ§υγ₯ΞΣΣ“ψΏεzpww'9Gέϋ{žΧœΛ² YJU‹ηοΫ4™Lyκτk―ΏF£Q†δόž#GΒ`0η Ά³³#$؜FΔΝ͝7n(ŸΥλSπττ΄ϊέλΧ―O||<αω ^g+Y²$}<ίΆlΆ˜συοΤ꬧—/^P>›˜˜`S¬€jϋR;^…­#EM-[Ϋ{||6–›B!„xβdπV!ή₯J« άΉ}‹zώ899ΩC†,=°,>!www"#Νi<<<•(£Ρ˜λΦp›φ₯OIΑΕυαg½€ƒ°ΕλoΌΑή={HHHΰΦΝ›8°ŸϊώώVoγβbΩ΄q7l°ψ™ΜLΛΆΚ΄πΠ+΅ς±Άξ‰ΠPN„†βββBŸΎύθφnw–-]’ϊ=ώ-l9^‡‡»;χξήΦ½μΌΆ‰'..žZ΅έ•׍† *pσζMε+;wμΰΒ…σ >‚ƌ&==έΌnl, ΜΟ57[JJJ6ειi[; lАΐΐ@%°»»;&NbΡΒ/9‚——}<Ÿ~όρ‘g½[ͺ³ ρρΈ»?,s;0§€1χ€ΰœO?a±}©―ΗUG ΚZ<ή…B!ώχόχM“BρX$%&R¬x (Yͺ4™™™ωΞT+j‘ǏσJ»φh4άάάxρΕ 1ίΎGΩreσΓ•όύlΪζ₯πKT­κ‹·wIt:-Z΄΄9žš΅jσNη.θt:\]]ρχΰƍλVΧ ‘y‹ΈΊΉΠΊM[Ϊ΄mkσ~-Q+5υκΥη½^½sΚ†›7n`4 ϊΒ―„„ψ|g~†„+ΗΛΙΙ‰)S?’f­Z…ŠηΤΙ0ͺVυ₯bΕgx±Y3>;.Χ¬ψψΈ8N„†~‰=ίΛ΅έφν; ΡhΠιtτκέ___.]ΊH@`μννρττΔ?ΐΆφ΅dρ"ϊτξ₯δr½yσ&3σ `θ°αμΩ³η‘nΥκlhθqZ΄l‰³³3Z­–—_yEI󏛛›Rv ڞΪ@νx=6]PjρΨΪή===ILΜ;c\!„B<dζ­Bό‹ψΥ¬Ο³Ο)―ΫΌά€ύ{vΕΥ+—i¬4ddf|΄ΘR&¨YΏ~ύϋ`ώ‚/1šLlήΌ‰K/vβ­Ϋ΄eζg³ˆ‹γΜ™3”+oύαcQ‘‘όςσΟ̜5 }J ΏΎUyH“5K/’€¬όj£‘γ!Αlύν7«λ £bŊΜόl†;wn³tρb›φ©F­|Ԝ?Žζ-[°pΡb²²²ˆŽŽfΡΒ/­W¦lYf|ϊΈΊΊR³V-ήλΥ›}{χ²fυwώ=zφ€u›‡_K–-`μϋcˆ‰‰)πvΏ˜;OOΡιtΤχχηήέ»L™<‰Q£ΗP«vmμμμpvvfεͺ―:xP‘ΧεΛ—ρυΝ›χvέ:σρZρΥ*2ΣΩ·o‡©ΟΪυϊ“ΐάΟ?ηƒqγ°··#&&†Y³>Λw;«ΎϊŠΉσζ|Œ3gΞπσO?/(ˆ…‹—`2™8Ζ_wθΰAžα–._ATd$‡’D‰β6—A~J—.Mέzυπυυ₯Σ«―*ο/_Ί”£Gσ>ΰ-'΅:Œ3gΝFœ={–-›7ζT›6n`Ζ§ŸΝΙ°0%…5jΗλq΄ikνkΙ²εΨΫΫγδδ„F£‘IΣ¦DD\cΖτιͺρΨΪή«U―ΖεπΌ³°…B!ΔΣI£OΛxόΏΚ…βΏάσum›&„ψχh€)ν:΄gΚ€IO:!lφΕΌω¬ώφNž<ω€CB!„6΄ B!„pτθ<<<©αηχ€CΒ& ΈB!„ψ/"ƒ·B!„`4YΌh! ΖΑΑαI‡#„*gϊτνΛβE Ÿt(B!„βHΪ!„°€MB!„B!Δ?Mfή !„B!„B!ΔSHo…B!„B!„β)$ƒ·B!„B!„Bρ²{!ΔΏA‰,I/.„B!„BˆG#3o…B!„B!„β)$ƒ·B!„B!„Bρ’Α[!„B!„B!„x IΞ[!„ψͺ^Ό_·oM«υIΝΚRήoV‘CκΤΒΫΕ™?£bψψπq’22 ½Ώ%Šρu»Φyή_|ς,ߝ»Xθν“ήξΫ‡Φ―vΒh0‘žΞεsηX·l9q1χŸthυzA­ϊυππςbt·ξθSRl^·IΫ6θμμ8πΗΆοΏυ«(_±"ί}Ή°ΐΫΘ©s~899ηΩ^Ι2ex½gV̞“λύ–:π\5_V}1·Hφ(κ4lΐΫ}ϋ0eΐ \ο[ŠυŸRΤΗdΘ”IDέΉΛΟ«Ύ.’ν !„BρΈΙΰ­Bό‹8θt”)Ε°z΅ΡόmY)g¦6`ΘΞύ\‹Odr#†Χ«Ν;Qdϋ?Ν‘Ϋw•Χ'#c,~VXzΜ›Ϊ²Βή­[ωqΕW8:9Ρ₯½F gήԏσύ¬F£Αd’ΦΩβΫω X²ρΧG^·œ‘wξuH…²{Σf4ΪΌ79•σρyΡ¨ ?{Že3?ΛσώΣkA/Y’φί‘j͚DέΉk}!„B!ž2x+„"ΓκΦΖΗÝi‡σMϋά3aλ”ςζlt,α±ρ¬:sUνZιΰνω˜X֞Οσ~ΏΪ~τΑQ{2Όήσ<ηιΑ―αW™sό$uKy³δ₯|F³ επ/SŠ›‰ΙΌϋΫμ΅Z†Τ­EΗΚΟβ Σqό^9v‚ϋ©iΨi΅μνϊ:Ώ_½NRFoV­Œ‹½―ό΄…ψτtκ•.ΙβΆΝω2μtΎqY“ž–ΖΦ~δ“eKΠκtΜ[·–™Œ£Οθ‘x—)ΓΙ£GωnyΦΰσΌΦ£;φφφ$ΔΖ±zΡb’ 8–*WŽw  l… d€§³eέzBφΐΡΙ‰ϊS₯¦Z­–νΏόʁmΫ•8^λώ.υ›6 ςφmΎž;O™΅ͺΆLZdΕ½½1 |χεB^Ό@·hΆ †¬,:uλJjŠž©ƒ‡(λΎτζΌψR[tvφœ;q‚υΛW`0Πιtτ>ίZ΅‰ΏΓΝ«Χ¬Ζ0yξηόΈς+.Ÿ;―ΌgοΰΐΌukήΉ+5^xή£FΰΰθΘ‰C‡sΝ lތ³³cφwί0wΚTξάΈ€½ǏγΉjՈ‹‰aΙf’WΰςΡh4Œ™ρ !ϋppΗFΟ˜Ξ‰C‡9°m;N..|²t1:}JJ™·Φb΅OAꏡcbιXͺ)^²$£gL'xί~φώvφφVγB!„βi!ƒ·Bρ/ςEθ)ΥεΪΣq“22p³·ΗΛΡQμ,,W{{ΚΊΉ*―£RτL&n%'πIΣ„܍⇋WΈd~οV²y qHέZάLJan蟀dfΠ³f5ΊΥπeaΨ0Ή‘?6 `ԞƒdD¦θiεSž ƒ‘―Μ'-ː+M„Αd"93“ ƒ±ΐίΙΑΡ£Α€ΙhΔd2CοQ#ψaΕJœΏ€Fc.TΟbΕθ;f4³ΖMΰ΍΄κΤ‘ή£F0kάOšΐξΝ[8΄c'ežy†I_ΜακΕKΔDFςF―ž889ρѐaΈΈΊ2ι‹Ο‰Έ|…ύEωŠ©Σ¨!ŽΡ` eΗTQƒ3‘‘ͺΛ¬Q‹ηΥξέΠhΰ£!CqvueςŸqε NB«ΥqυβER’’hΤͺ³'NbήΊ΅ΨΩΩa4©ΧΈŸΟ­ˆzAϋΞοπʕVγ4q<‡vμdΟ–ί¨T­ƒ'M`bΏώdee±nΩrά<<Έtφlž΄ υ7βΕ—_bζγHΥλ4q<-;udΧΖMψΏΨ”r>>L4;&̞ΕΥ‹ΦΣxά»u›’eΛrωάy<ΌΌHNJ’tΉrDί‹Δh0p.,Œ±ουVnωΟ)dœ\\¨V«VΎ©όκΦeΞΔI܎ΈΞΐ γhώΚΛlY·ΎPεσΝόωŒωΞ„†R³~= YYΚΰš^ΟΨχzS‘s œ0ώ‘bUSΠϊ£vLԎ₯šΨθh>8€NέΊΚΰ­B!„ψ―",BΐΙ¨jy— nι’Ψk΅ΌW³F“ ]ѝ*ήτ­Δ†ΧΫ)JΉΊ˜nΞ«{)6žΙ±ωΚ5NDFηZ†ο:ΐ―α±ύšyζ_›ŠΈ“œΒšσ—Ψ}ύGοά£aΉ8Ϋ™6™˜‘»ƒScνωp~ ‹τ³τώŒŠ‘Ν›ψι•}Ww7^νޝSΑΑJj„4}*gBOpεόεύu^ΰ― •Y‹·οΰ9__œ\\(Y¦ %J•βπΞ]ά»u‹ }ϊq?* €ΩΗ ’ =xΊ ‘žŽg±βΤmΨG''φώΆUœU[¦Ζj<μωm+&“ }r2!P«~=σQΐΝkΧHILβξ­› RSqv5Ϊ_½x‰[„ΗφμεΝ^οqςθ1βcc §šΒΤ΅c’v,…B!„ψ_%ƒ·B!nήaߍΫψ•(Ξ­€δ\i λfR2ϋoZ~¨T‚Jz†ό–Ε¦₯QάΙQy]ΜΙ“šͺΌ—XD)rΚ~`™%™ω x'ΖΗSΝέ]ymοΰ€““ρ±±deeαμκŠV«Εh4Π–,S†€„RSIˆeΥάyD„_Ξw§‡rϊx(Ξ..tξΔk=z°fΡb«Λ,IŒ‹W')>7wbξEΰζιA‚‚n9ΚΐΕΝ•”$λƒoρ±±dfd0Ή€G~ψ[|l,Ϋω•νΏnΘ³LŸœ‚σƒΩί``·Ε½Ϋ·)^ͺ$΅œY½h1ƒ'N@£Ρ~φμ#ΕVTl)Ÿ]»p:δ8՞―OεΚάψλ―ΗOaκΪ1Q;–B!„Bό―’΄ B!σΐηοou€¬›+Ξvv S‹-Eι>όΌ‹ΣέΟWωΧ§|‘Ά·ϋϊ-ΚΊΉΓ―mŸ­@γreΩσ6™6ζ°}‘”7»ΊΌΖ;ΥͺXp!]8υ'•jT§l…ghήξ.9CFz:±ΡΡDήΎM“Άm(]Ύ“ζ~ΜJ=B«ŽΠh4θt:ήιΫ‡JΥͺPΛΏ>oυι @ͺ^ϝλΧ•3΅ej¬ΕσηρZth‡F£ΑΥݍΐζΝ8u,Ψ¦r¨T½Ί’  ^“Ζ\>wΞκ:‰qqάΉqƒ¦/΅ΐΝΓƒ ήΗΩεα _Zj*ε}|σή²σšώLΓV-•Ψ›ΎΤ–_z €«/ςBƒ@μμνqχτδωΐ›ΎCδν;x+޳›+ρχοyηUkϊqχ¦m3oΣSS)]ΎΌHχ_ΏtIκ—.©Ό>v'’½fϊΔ·η.βζ`OΧU°Χκ8tϋsBΤΚ–“N£ΑΝήΎHσϊZ’ΗΧsη4φμν퉉ŒβΫΉG—}6‹>£FΡιέnθ“Sψvώb£Νy·ϊ3cΩRL˜8{βΧ―˜στ^>{ŽF-[ςΙ²%²²ΈΝ· Ύ΄ΊΜ΅x6―]Η»ƒ0mρBŒF;7nβ/τpιτΊ θOωŠ>܏ŒbΩg³s*Šφ]ΜgZ­–ιKc2™Xυω\.όω'«>ŸKχ‘ƒyω­71 μάΈ‰T½^Ωξ‘; ϋ> Z―')>Σ¦yϋgΜ…€ IDATO„QΎbE&Ξ™…F«%ςΦmV/\@ȁƒΤ¨S‡™«VIθΑCx•(aυ;dfd&œ;˜ζ΄h€M˜ϊε|ά==qptD§ΣQ;ΐŸ¨;w™=a"gBOΠ’}{毞T½žŸVβψΑƒ6•Ÿ%–ΚΗΞޞޣFπύβ₯€§₯qαΤ)] ηυž=ψyΥΧt2˜:  Σιpvueφwί0}ψ’ kAλΪ1Q;–j\έέψdιΐœN qλV„8ΐϊe+”ΟΉ{zΰδμl{‘ !„BρΠθΣ2νώC!„ψzΎm3ς,)‘%]­-;tΰΉjΎ¬ϊbξ“E!„B!ώ+HΪ!„B!„B!„x Ιΰ­B!„B!„B<…$m‚BΨ@&!„B!„βŸ&3o…B!„B!„β)$ƒ·B!„B!„Bρ’Α[!„B!„B!„x Ω=ι„βίྜྷζI‡ „B!„Bˆ22σV!„B!„B!žB2x+„B!„B!„O!ΌB!„B!„Bˆ§ ή !„B!„B!ΔSHo…B!„B!„β)$ƒ·B!„B!„Bρ’Α[!„B!„B!„x ύ?eΠ”Ά‘IENDB`‚uvicorn-0.27.1/docs/img/gh-actions-fail.png000066400000000000000000001005151456166335300204630ustar00rootroot00000000000000‰PNG  IHDRXž/Ζ«œsBIT|dˆtEXtSoftwaregnome-screenshotοΏ> IDATxœμέetηΫ€ρk%ξξΰξξP¬@©Ρbm±b-ΪB±₯-ξVŠ)Šw. wΩθΚϋaΙBΘ&$!@oοί9²3Νμl2χ<² ƒΑ`ΰWo? rΩb!„B!„Θ˜ΉΨIωŽΪ"„B!„οH€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰XB!„B‘KΤζ6^½ύΰm·C!„B!ώη™ °δ{°„B!„"sζ:¦dˆ B!„Bδ °„B!„"—H€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰XB!„B‘K$ΐB!„Bˆ\"–B!„Bδ °„B!„"—H€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰ϊ]Ul8y½Ο5 ΎΎ‚ƒ!8ΔΈΓΓ…‡Š%PΦ«ƒΒ«»j’B!„BdΛΫ °ββΠoί‰nηΥΛ‚C0‡`πΉ†~ϋ°³CΥ΅3Κ.ΐήώ­6W!„B!²γ­ 4œψΓΙӹӝžˆ?vq―[?ΧhŒW]n·νFΐ̟ΠFDζJοΪ5οϊ\)Q™θƒ‡ίx]ώSgs₯De~ρυ―λ»xŸD8œ+%*γ?uφjBρf,9EγΩOmίz1–J“p78™|#}3,£ΨX?n&ηZ›Ghqz?έΟY£Γρ‹ά½η9~/κSεj™ΩυV,ύΊ θΆnΛ^`υ2ν”οΡ-ZϊΪν ˜>‡Η£& Ή|mT4†”οά#dι*ξuλ‡.NσΪu‘!KWρ`ΐ0Β7oΧMω׊غ“ΨSg1 ΨU‘!ΔB!D*O'5σίwΧΝψΟ{γ–ξΗΉθΦmΐpγ&Šςε^»<ύφθ~œ›γόΪ¨(BW­ ΨTΊp”Κ7ΟQbνTφv$=zLψΖ-―έN!Δ›‘ €CύΪύυΗwά!„βίΓΡZIκοΊyot–nΡτϋš^>„ΝωKθbc±­R Ο―bW΅J¦ΗΆa3[vθϋ ·Ό8΅nŽηŸ£΄΅I{yάJfθΖ.=NΔΥNΕΨ6|Rί)λ'8‹ήX€eΈκƒ~ϋΞ΄γΐΥΕτRαU eΛζ(½ΌΐΣΓΈ1(½ϊύ1ψ\Λ°|ύφ(λΦAQΩ+[ν²Θη  ψυ‚Ό½»cW΅ –… ΰφq_ά>ξ›&ύƒΟ‡sδ8(XΘGƒG$ήχ#φΔiΚμތΒΒΒ”65ˆR¨Υθ’cYΎ–ˆ?ώD‰B­Ζ ΥΊj=VΕ‹’·wwt±qάνΤ‹”ΰPΤ.¨ˆ=~šΈ³)±f1φ5«™=†€™?²t•±Mω=Izό„%+I~τ˜’ ζ€IλέL΄QΡ(”J ΪHfΜΕͺXaœš7ΙRύ)!aάiί]L¬1U©ŒAΚŸSjλZl+–OΫ8ƒ‡ΓΗ‘xίϋ:5)4}’±ΝΣηΊv# ¬Š!ωΡΒ7oGsιjΊσ`_³: ΙΙ$άΌƒmεŠΔϋά@Mς“§X*HΌΟuκΧ5Ύ_‡sδ8J++,‹"αζm=mH(ξ>y±‘<>–Έ³pnΣ"›yΣ‹Ώq‹ΨacP¨TRRΠ\ΈΜƒΑ#(wh • ΝΕ+άοΣCJ *{––ĝ9OάΩ ωq.ΫαΪ£+ΊΨ8οϋaην…λ{ΜΦ•μΘύ>G―Ρ`ααŽΞ–ψ«Χy4|θ Έtn—i[_sψ8~Ÿz=nh#£‰ά½ΝΥk”Ω½•½]–„,[MΐŒy P`S¦‰χ| ϊu)ρΧnR|ε‚,_―JΎq«)MΌηKΰά_ρςY–W!„ψ_vξA"Άƒο₯Ϋ^ΒΝ"έΆεΗ£Xw&†ί?ΟGA5C%$FΏψ3 ‘3Ώ}–sψdu0 -€WA«4εΌΟάύ‘όωUŠε΅`ώΑHΖl εΤΈΒYnχ„aά NαΤΈΒFiι±$Š,©UΜ­ήΐžkqœW˜;AΙ4œυ˜χk:P·„ ƒΦc.Œ/BxœŽΎΛq°Rςi§ ΛtΆ5v”$k τ\@~g5Ώφρ@‘€―6†ΰ]؊ί>ΟΗΙϋ τYH§*φδ±We~Ωτf†ΖΕ‘ΝhίΣ  ž=υ3QΆlρ<Έπτ@Ω²κg’ž=ά3Gͺό=ΔΕe«i–ςαωεP*Ρ\ΈΜ£ίp³q[U©‡_/ˆάυ—)mΜ?nj=?*%%7,§όΡ½”ύ{;*g'οϋΆ~Sš²*₯·­§εΨ>›’‹Ž‘ΤΦuTΊ|ΫJМΏ@Θ²Υ€‡bηνE…Σ)t/οuœLΐτ΄Rͺ” `ΣΗb‹ηQώΨ>Jm^ @ΤΎƒ$?yšφxση£ό?»©xώΦ%Šwκ\–λώu Ί˜Xcš³Pράa7ΐ’BΨκ ιΪ8o1‡Žb]²8ΕΞE‘6ΖπQ{Pπ»o)»wεOξΗ²@>tΡ1$άI‹Bikƒ]ΥΚΖσuΕ β―ί4bρ>7ΡFD’μJ%φυj{ςŒ1@²Ά’ό±½”έ»Β³Ύ hώbtQΡ¦ς :=ϊ„ MŸŒΗŸg+―9Ί¨hŠώ4―λg(8i,ΙOž’όΨψ~ψ7CJ ŽPράa*žύ‡Όύήƒιs0$'“§G¬K•ΐΆŠyήοfΆΨc'Ρk4XζΟG…“ϋ)t/ž_ ΔΒ-/1‡eΪΞ—̘ z=nυ‘Β©ƒT<ϋκΌyH~βOτ³χμUitΡ1ύbœY|Ι|ΚμΩBΩ;P¨”Δ=a|@AցW₯)΅uι!ˆs›Tρ½š­γB!ώ—yΆβιμβiώ-θcώ^ω·³±ŒiνJυ’Φx:©™ΧΣΝ΄οΐM *₯‚α-\pΆU²‚+Ϋ±ρ\lΊrj΅ζβΔ"Τ(j•wG5‘ρϊl΅{ν©¦uΝKg5Υ‹Z³ΎΏ'ŽΟϋyΎh⌭₯οΒVT-lM„FOTΌžWβ˜Ϊ9/Ž*Κη·dTkWVžŒ~e™)Zθ³<Ÿ§I,ϊΐ₯ΒXO’Φ@„F‡&IO§*φ„Ο/‰«]ξWπ†z°τϋfΈ …’x1ΤΓΎΜ’λŠΚ^X,ώνΧc0ψ=HŸ@£AχΗTύϊ¦ί— Ο‘ƒpn׊˜Ž’Ήx•ψλ7I &ζπqb'ήηƏ"ξάΦΓΎVu¬ŠΑ΅kGBW#ξάΕ4=^vΥ½M•}uoβ―\ΓZ켍½lvΥͺνϊ„DcσŸZJ;;B–¬2’7>YˆΏv}|P9:¦©Ksρ²ιΉΐ·£P9>lYΈ )‘aψ7ƒΨγ§plTR[֚˜Κ‘^mβΞ^ ώ²I λ‘‹‰Ε₯S;"wξ!ώΪu”vΖiۊεP;;›ŽΗΒΓƒπMΖ!g(θ“’Π\ρAiσΌ;»Ψ’yX< ξƒ~ZψΚΌŽdΨV›ςepnΧΚtžN™€6" 7β―ίΐsΨ ΣΉ|#Ύ lέοhΓΒIτ{ˆMΩ–"ΛΒHδvΫn85oŒcΓzx|ρyšα­―’‹Ž!ρΎ`ΌNTŽ_2ί4D2+inέA―Ρ P«‰Ώu‡„ΫwPηΝKJpqg.ΰΨΈA–œ\'B!Δ……J‘. p°6ί_₯₯€»₯ιu~g5ŽΟ>K!$FK™oΣή_wφ6>mOܐΧA§cφ’HŽΈ$=Εσ>οe«[Βx?£C₯οΒΦ¦}*c4τ0<€VσvδsVgZζρ{ ά I¦^Ik ΞΔςa]γ=λͺ=ωaO8υf<ΑΡZΙϋ΅ψΆ]Ω:’W{#–nϋσ;άέQ83{ίgeoϊΗ™€ όBmϊ³`X—,ŽuΙβ¦ΧIγ?e&1GOΆv#ωΗ7φŽ–… ¦Ιkυ,`Iݟ*Mΐ‘0ΎU*'§tΫR%{β4±'^Z‚ή`@εKVj΅[ή4Ϋ›52{œκκΧyv<ΖΕ’=&pξ―ιΚΣFDbYΐζΩΉPš‚«¬ζ͌Ϊεωy~1ˆH2ύόβyS9Ψ£vrBEŠ`–,ϋΪ5qοߏπ­;IΌ{ŸΔ»χ ^ΈΛόω(4mbšσž™ΤχHΐΨV©dzP,e–&bϋŸ΄Z‚ζ-HWOκΉΛΚ5“λD!„ιtUγšLΓΖΏΡ zb“Œ=OŽjj·aΟΠηχ%wƒ“±³J¬MέN`΄–sίΑΡFΙω‡‰τ[”.]FœmUΨX(x©₯Ό1ΰ;p3žΈ$=υJΨ @ρς-ς³6ͺ°R+Έω}QSΠ£#B£Λ΄ΜΌφ*Š»Y° [.Ζ2rs(+Ϋαd«" JΛ’ΎX¨\zœHοeΤ.nC‹ςΆιπr}ˆ ΑΧ7Γή+υ¨9ϋ²`{{c^s‚C0\υΙrQΡβnηήάού)žOυ³*RχΖy6½&Λόž$?υOSF²–ω<³sι€-…gN‘ŠοΥt^\@ΐ”ηY`₯}i‘Ψ§‰>xmXΦΙJύ¦ϊžO)AD)Ωμϐ6hΦ†>nή6~Χ=ίl₯±ΜŸΟμΉKj™•k 'ΧIVW!„ψ/ι]Σ‘™{#Ές$‰Ž›BP=‹dZ–·εš+OD“ ηΰΝxκΟx‚€6]9Qρzl-X¨„Δ蘳?’„ύ‹·Ρ™R( gMGΎΩFpŒŸ§I|ρ[0qI™3Μ瀦F1k†o %4VΗ­ΐdΪΞΚ_Χ4―,ΣΪΒ΄υ¨ξ@₯VLΨŽR­ bΡ‘(βSτX¨$$HΡeρ@²!Χ¬W |‘Β«RΆ€H“Ώ² /σίy£ΟF€eU¬ρΧnwφ³ζ£OŒΓ₯Β7Wl³*\•“#v5Œ‹LΔ=ζΒe’>&|«qρŽŒVΡΛͺΤ‘ƒQϋbΠ/ˆˆ-;ΈΫΉ7›(m+U@‘R’JԞύh.ϋΰϋα@ †>9λ7•Y©ίφYšπί@ŸˆA§ηΙ„©<0ΜΤs‘Κ±Q}ςΌίΝ΄hDΐs0θt$ήχγvΛΞάnέ……y{w§ΔκEX—. @Jp¨ω*•8Τ© c«bEP9;a[©{*β9l0Ρ$ρΎα·’§Χ{€qΥ·u[`]ͺΪ°0RBΒPΪΪΰάͺY†mt¨_Ηj΅¦/•΅υͺ‡€94¬kZψΒ±iCμkV#ξάEn7ο„U±’Δ_Ώ‰!9·ϋ’Ξ›|ΝΜεΛjήΧPpXξχιOΜ‘£ά¨Υ …•…)`Θν(Σό6υ³U6#ά‡B­¦ΰ”o•eW΅ a64oαΏmAνκbš'ε±- •ϋΊ΅ΰ—%θ’cΈΡ 5 Tvι»ΏσΞΓ!# Ϋ°™θŽ‘‹ˆDŸ”„uΙβ¦χεUi”Ά6Έφ!AΏ.Ε·Ol*–#ρΎΊθl«TΒΎN Σ΅‘Ω5:|2'ΧIVW!„ψ_5 ‘39§Ϋή­šέͺη½w³ pŽqΑ,₯Ζ·ΟΓψφΟοaF·~ΎŒy΅"Φόσu‘WΦ[άΝ‚#£¦k1±ˆιηˆωΖ‘…]Υ¦Ÿ_ζ`­da_Ύ΄έέQEΜ―iσω|jއ£Š Ÿ™Ώ·Ν¨Μ₯lΈ0ώyϋΚxZ¦iΧΉo³ΎϊaNεώ*‚ΩΝ ³Ϋ³CιeΎ,£ .#ΎIΡ_fc_«:ny1$&aUΈΞνZQfηFΦ3₯-Άμg<‡Α¦L)RBC±*R·ϊPϊυ¦Ε rJνκB™]›pnέ}bΙOp¨S“k—β”ΙΝd‰c(0~6eK‘ Γͺp!<‡’ΰ΄ Ή^Ώeώ|”Ω½ §MQZ[aΠιp¨_‡’Ώ­4υ,ΌΜΊD1\Ί‡Τύ΄}B"%Φ-%oŸXxΊ“δϋƒV‡Cƒ:”X»«bEΜ–Ζ/“Me[Ω`ΩT*Βώ:i_Ή·ϋ’rr$αΦm¬K£Π΄ ?κ•ηγuςΎŠ]uoJo ΗΖ PXͺΡ'%c_«:%Φ.Α΅K{S:·ϋbS‘h΅¦_ζΉE~š]΅*’“Iς{hZ3΅'ΛΎf5 N‡e‘¨μl±―YβΛΣΟ-snݜ«cWέ½FƒΚΩΧ)±v©iΎSVxBΑ)ί`U’( 7o£rtΔcΠ§”\»…… ΅ϊ•Χ@Vd$«Η+„Bρ¦) †΄#(―ή~@ε²Εr\`JΛΆf·[μΛμφ[ωB!„B‘ζb§7σ=XB!„BρτΦ¬μ¬τ—‘  &ΣeςeΔB!„BρΆδz€•ΡJ†ΰ¬―4’½ω Mαωϊσ»„B!„βuε~€U’ΈΩν-ߞ.ŸAB!„Bρ6εz€•αJ>Χ^k˜ αͺO†Λ±gT§B!„BΌMΉίƒU―ؚώνδο!..ϋ…ΖΕ‘[ΌΤό>wwcB!„Bρ޽‘E.”];›ί‘Ρ 56{AV\ΪQcίθ !„B!Dnx#–ͺkη {± Ύ~€|πq–† ϊd\αξn¬K!„B!ώΤo€T{{Τ£F’ς½ωύΟz²%Š£μ…§ΗσΥƒ‚Ρϋ\CΏ@†sR© {ϋ\nΌB!„BδΜ› °0ΞΕRvι„~ϋΞ Σ|ύΠύ87Gε+»t’ΉWB!„Bˆ•7ϊEΓͺAPΆh–λε*[4C5h@ŽσίΉηΗψοgσρ ‘Lœ6‡ΗOr±uoΖΡ“g˜>w‹V¬cΧ_ϋsTΞΐaγxκ˜›MKηηΕ+Ωθh¦iξή@TtL¦i~Ϋ²ƒΟΎMLlζsφ~^Ό’½π娉άχ{υΡ¬7ό5œ>w‘i³ΙΥ2·ξό‹Uλ7ηj™B!„βΝz£€jΤΘ\ ²”]:‘52Ηω#"£˜1o-š4ΰΧΏ§QύΪL5Ÿδδ”\k£ΘœV«eρΚueόεΣ ‰μέ˜Ωί‹£CζΓ@[4iˆW…rιΆΨ»;y]]^»½B!„BdΥ"ψ"Υ¨‘(λΦE;{ΔΗη¬wwΤƒΌφ°ΐ‹WQ¬p!Υ― @³Fυ8qϊη.^‘~―UΆx΅΅·qρŠΑ!a™¦KHL…gg§W–YLI³ΫλΤ¬š£6 !„B‘So%ΐγœ,‹Κ«Ρύ±ύ;²hΉ»£lΩάΈZ`.,h‘’’‚ζ₯Ί--, 1›~‘£ό΅0šψxͺTͺΐ'τΔΖƚψ„ΦόΆ•+>7HJJ¦TΙb ξίg'NŸ»Θ™σ—Q«T\φΉ……š];Π¬Q=nήΉΗΊΫ ₯X‘Bτοχ>ωσy`0ΨΉg?;‰V«£jεŠτ{Ώ––Ofyτz=Ϋvνεπ±S( Ϊ΄hŒΑ`0[ΞλΟΩ —ΩτǟDΗΔRέΫ+ΣήΐJΚRΎl)–¬\Ÿρ{€ΥςΝ”™€€€0xķ̘2ŽΨΨ8Vm،―ί#Τj5«{σΙ=Q)•,XΊ†βΕ Σ¦E“4ε ρ-c†ΖΩΙ‘1 }λζόΉχΙΙ)Τ­]ώύz‘P(ˆˆŒbΙΚυάσ}H©’ΕΘλκ‚‹‹3έ:΅MΧΆπˆH–―Ωȝ{~δqu‘η{¨ξmό’k½ΑΐοΫvqδΔ0θΡ΅MΦ 0˜λ6ρΰαcŠ)H‡ΦΝρ\ρ•e¦ η»™?Ρ½s;Υ―Ν…Λ>lάΊ“Π°pςyΈσΙ½(Sͺx†ηT!„BΌo|ˆ`φφ¨ϊυΕbΗVΤ“&ͺπͺ”vIw[[^•Pvι„z,Φ―FΥ―o­θU±O9wρ IIɜ>w‘k7οkfžΟω‹WΩ±g?_ ϊ„©FΝζν»Ψ΅ηΑLωv$?NΨ½ο)οΉ‹W(Y’(K~žΑ{Ϋ°jύf΄Z-‘QΜώi1ΫΆdήτI/Z˜ω‹VpΰŸc;u–ΡCρΓ€1ΔΖiXΌr]¦Η“Yžƒ‡sτΔF|ρΣ&ŒβΞ=?’cbΝ–“Σγyό4€_—¬¦{ηvό4c2ω<άΉp9γ%ψ½½*PέΫ ‹ŒƒF ΅š&ΑΒΒ‚…s§αθ`Ο’UλΙηαΞΌ“˜0z(.]εŠΟLΟΝ‹’cbρ{ψˆŸg}ΗψΡ_qδψinέΉΐΟ‹VR€p!ζϚBΓΊ5ωηΨ)³e fΟ_L‘‚ωωiζdΊthΝΌˈ}φ½n7oίΕΩΙ‘_gGηφ­X΅~3:½ž””¦ύψ •+–ε—ΩίΡ±M ._ΛΓΗO_Y&@XxSgΟ§kΗ64ͺ_›€δdζ/\AΧmX0gM4Χ IDAT*•+•gΕΊί³|.„B!Δ›σΦz°^¦¨WΥ;X°`ώ||5π~Ϋ²“KΧΰU±ή^°΅΅I—φŸγ§hΧͺ)Ε‹ΰσzσπρSZ7oDϋ6Ν°·³#6.;β4S^[[Z6k„J©€Y“¬\Ώ™„Δ$N½@ω²₯LΓΧzvν€§‡;:½žCGO©mK Θΐ‡½»1dδx>ϋ°w†Η“Yžc§ΞΡ₯}+J/ ΐΗ}{pώU³εδτxNœ>OΝjU¨S³Ϋ·2φΰδ²!Ÿ}„«‹$''cgk›¦}―b0hίΊ9VV–”(V„’Ε‹§!($”‡Ÿ2~τW¨ΥjκΥΑŽ›-γΑ£'„…G󽎨”JκΦͺ†B‘ ))kkZ4mhάΎ{?W–ΦΟŸΟƒ‚ς±mη_$$$rφΒeξϊ>0O/V;;[ΆμΨƒ&>σ—²vγ6l¬­2­£r₯ς<~βΟ‘#'ˆOHΰκυ[|3y&α‘―,Σ€χ»uδρ“NžΉ@l¬†)ΣηqσΞ=t:=ƒ^σ ˜!„Bˆ·η?ΧƒeeiΙ°ΑύYΉ~ξ=HΕre=lΩ΄υjW'2*šΩ?/!N£‘rΕςτνΥ€OϋυbΥϊΝμΨύ7₯K• W׎,]ύ‡ŸΖΪΚ2Γϊέές2|H6lΩApH(E `δ—Ÿ£P(θά%ΙΙ)|?k> ‰‰xU(ǐώύ2=žΜς4o\Ÿ¨θfΟ_Œή` u³F+RΨl99=žBςσΕη²yϋŸ,]΅ž*^iΡ΄a¦mΞ.·ΌyθΩ΅3η-ΒΒBM­κήτμځ߷νΚp‰φ¬R( ό) —―γο―ΗS³ZjT­Œ½½]Ί΄*₯’ΡΓ±bΝο ωϋ[œςY?<=άyπθI†uΨΫΩ1fψ`ΦόΆ•΅ΏoΓΕΩ™O?μeκ₯Κ¨Μ—ΛθΣ³3λ~ίΖΌι“θΣ³ —­%:&Ow7†ό{»τmB!„o—ΒπΊέWo? rΩbοͺ=BΌUz½žŽ’AݚX=λ-š<}m[6‘f΅*οΈuB!„βίΜ\μτŸλΑβEJ₯’}ŽE»VΝΈ}ηŸψγU±ά»nšB!„ψ$=Xβ?ο‰k7n# 0χΌtλ܎ςeJ½λf !„Bˆ9ιΑŒBςσνΧ_Ύλf!„Bˆώs« !„B!Δ›"–B!„Bδ °„B!„"—H€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰XB!„B‘K$ΐB!„Bˆ\"–B!„Bδ °„B!„"—H€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰XB!„B‘K$ΐB!„Bˆ\’6·ρκνo»B!„Bρ?Οl€UΊXΑ·έ!„B!„x§¬,TΩJνξ£tΫdˆ B!„Bδ °„B!„"—H€%„B!„ΉD,!„B!„Θ%` !„B!D.‘K!„B!r‰XB!„B‘K$ΐB!„Bˆ\bφ‹†K΄Z-1±±$Δ'’’‚C¦ι(°°°ΐΖΦGΤκό)B!„B<σŸŽbcc ΰ­›ΩΎ};Χ―_#%%•J…V«Ε`0[ …•J…Α`@­VS±b%ΊtιBΧn=Θ“Η‡w|$B!„Bˆƒl€ΛνΫ·1l/^@‘P T*Ρλυθυz¬¬¬HJJB«Υšς^Ίt‘‹/°}ϋvζώτeΛ–“ K!„Bρί °΄Z-αα¦ΰJ©Tb0Πιt”+WŽ^½zQ·n] *„B‘ΰιΣ§œ>}šίλΧ― T*Ήxρ#† cέ†ΨΨΨΘpA!„B!ώγώ“ALl,lέlκΉλυ¨Υj&MšΔ—_~‰““Sšτ₯K—¦iΣ¦ :”… 2qβD’’’P(\Όx?Άnζ£OϋγκβςŽŽH!„Bρo🠰βΨΎ}; ……B••7n€sηΞ¦4:•JeϊY©TbooΟθΡ£©T©έ»w'!!€νΫ·Σσύ>I€Υ΅{/ξίχ5»ΟΫ» kV.ΛΡ±$&&’ΡΔcoogψ"½^Οͺ5kΩ΅k899β]₯2_LαΒ…^Yώ“§OiΧ‘ M›4ζ§Ή³ΡιtDEEcee‰½½}ŽΪ|κτJ/އ‡{švV©V+M:;;[*U¬ΘΈ±£(V΄θ+ˍ%99g”J%ߌŸΘξ={Ω²ι7Κ”.•£ΆfΗ‘£ΗX½v=·oί‘@ό π9Ν›5I—u»Ž¦Ϋή΅Kg&Oό6[u~>pgΞγΨ‘ƒ8Ώτ` 7Όκϊz•—―ŸΜδΖ΅•*+νΎsχ=ίοΛΖυk(WμkΥχςqΎνkοmyρ3–H«Άύυp:vhŸ£ςΞ]ΈΜ’εkΜξ[±p.JeΖ έ=‘‘_ ΐΦΦ†q“¦³τ—Ω‡πύΜy,˜;=GνΙ € ―XC…reθΥ­σ«3δP\œ[[Σ9‰ŒŠfΥΊίΉοχ€‚ωσρaŸȟοΥoΆM _ŽLϋ;ΛΩΩ‰Ϊ5ͺΡ½KϋLίΏ—­ύm ..ΞthΣ"·›™Ζ΅·ΨόΗ.BBΓρpΛKχ:R±|ϊΟβεk9{αRΊνΫ·¦SϋΦYoγ–νXYYΡ΅cΫΧjwn:yϊg/\fΔ—ήuSΔΈν—5τ_jzmo₯€J!K&Άw‘Z‘μί3dfυ©XέN`έ'ξ|±1ŒRξ m–ϋχ=Ήε-Ӟβ@δڍξ\ϋI·ξΌ™ΊSRΈvΝΗΤ{5kΦ,:wξΜ±cǘ:u*( bcc‰ ,,Œ~ψC‡Ρ¦MζΝ›‡^―G‘Ppνš)))™ΦΩ¨AΪ·kCϋvmL[κλΊuješ73;vώI“ζ­Ψ³wŸΩύ‹/cώΟ HJN’e‹ζΈ8;σχώƒ|>pMό+Λ·΅±₯}»6T―V€‡Ρ€y+~˜1+ΗmžΛμμlΝξS«Υ΄oΧ†6­[akkΗ™³ηρυΣ‚#™™όέ4š4o…@@ŽΫ–S·oίαλΡγ £sΗ„„„0zμ7<~ό$]Ϊ¦M›ήϋφνΪP‘|9<άέήv³_ιUΧWnʍk+UVΪ=s֏ԫ[硃«’?cvvΆτyΏ'sϊ…ψψW.Ɉ«‹3ΏΜ™–ξί«nΞ{χμ‚«kΪ‡ZNNŽτ{Ώ{ŽΫ’§Ξœ§TΙβ¦ΰjκ̟ }EμρbΔΈΙ„…G˜Ά-[΅ž<.LŸς Κ•aώΒεYϊ=ω&L;‚_ζLcώμ©|Ψ»‡Žηπ±S―Μχ&ΞUfββ4,ZΆ†M1{κjT«Β―KV§Ρ€KΫ»Gf~?ήτoκΔ18;9R΅J₯·Φή̜=‰υΏo{£u„†…σ݌ΉοΌ ροV$š{S soja ΟGνβΦt\Δ•'IYΚίκ§@όB3Ώ‡hPʚ _·ΉoΝ;λΑŠ?w‘sHΊ}Ο&§Ω4nΡ;χΰ>vVεΚδzέŒσ­τz=υκΥcπΰΑθt:φοίΟ΄iΣX±bψωωa0(V¬ψϊϊ2bΔ7nLώύΩ΄i‡B§Σ½ryχ‘_ 1ύόΟα£ΔΗΗσΓΤο^λ8bbb4φ„‰ΛK½hB©T²nυ ά܌7πƒ†|ΕΙS§Ήzυ*uλΦΙ΄ŽcοuνΒ’e+Ψ±λOzχꙣr•J%φvvΩΞW³š7`μ­LecmM­UsԎœŠ‹ΧΰαφόαHXxZ­.[eh΅Ϊ ηπj΅Z–­ZŸζ!^pH(wοϋρε O±±Ά¦c»Vόsτ·nί£|Ή9;Χ`ggkz«xUΐ«b9nέΎK³Ζυ3Ν—“sυ:|<$oή<4¬W€Ά­š±ηοCψQ¦T‰4ipδωβU;wο£vΝκΚαο₯ά–˜hϊ<Ύ):ŽΠ°πw^†ψwS*ΈΪˆΉΪ)ΧΖ™ŽΩG³‘«οΕGhIΞΒ―n”p³xέζΎ5ο¬Λ©Kœ:΅#zΗn‚Ύ™lڞ\9uj‡KΏήo¬ώΤ'}D₯R‘R©°··G₯RρπαCΞ=Khh(aaaœ?__ί4i ”¦¬ΧqξάyzχύZu₯[OŽ=nΪwεͺύ>ϊ”Zu¬E¦|?ψψxΝΏΐκ5λXΊl6[Ά^―gΟ_ϋL½qσηύȩ㇩Q£:.^ΒΛ»³~|ώ„ιύ>ύπςArr2Ož>ΕΛ»ΓFŒ"6.ŽΡcΏŒΕΟΏ.|eΫ_vόδ)κΥ«›₯sbaaAόΖ?fρšx ω /οœ;&žͺ5κΠ£WV―YΗΉsη6b/ Α»κγΓ{=ή§nύΖLž2Υ΄J€^―gύ†ty―΅κ6€Ηϋ}ω{ASΎz ›Ί]GΦΫ@σVmiΤ΄%ΛW¬2ΫΦ]:±}λ&ͺTφB«ΥrσΦmT*εΛ•ΛτW^Λγ'O˜Yz6lόŽ]ΊQ«nC>ύl >4νΫ±σO:vιFΪυhΧ‘ «Χ0ϋsww£b… μΪ΅η΅ΞAFψά`βχ³πε(Ύώζ;9aΪ7bάdž<υO“>$4Œ!#ΖΖα‡ –¬bρŠ΅ >–‘£'pτΔiSΪ»χύ˜ψύ,Ύω-λίΚ΄Y?qηξύl΅cΟΎƒœ9w‰έ{°uΗnf΄˜ΨXfύ΄€›·οb0Ψ½χ£Ηψq“Y³a3ΙΟ₯Ση.²tΥzώΨΉ‡±Θπlέ±›Šφ²‘ΟΣ›gΏ3 ŊΑ?0€ΛW―ρνδι ψr§Ξζžοƒ,οά’P(ΠιuDEΗΠΘΘ4=DKW­gΫΞ=ιΞ@||Ώ.YɐγψvΚ |<4ε;rόγ&Mcπ°±ό8‘©η+&&–a£'²οΐa†Žžΐ acX³a³ΩΏΛeK—dδWΟ‡Ε…†E MI!Ώ§G¦ΗΕ±“gθάΎ•Ωύ‹—―Msm^Έ|•~όΩτ:>>ž_―`ππ±Lœ:›ΟFη‡πεΧi‡XŽn¦ι||3y:GŽŸβλo¦0pθhfΝ[@ll>Χo²eϋŸψ\»ΙΌ_—Ύ²œΜ$$$²bΝo =CΗπγόEDEG£‰gϊœ_Πhβ1n2ΙΙΙ3kήΛΜΉΏrυΪMS9ζ9seˆ†Υν9rχωί¬}7βi8;€’ί>ζΓU!ψ>λ±κ²(ˆ°8qμn"1‰zΎΨFΩ‰O(<φ1ο-&(Ϊ}­?Η+CΥu'(…ΏQpΜ#Ό¦ϊπΎ3–›·n‘Σιψjθ|ύπα}¨Z΅ ΫώΨΑΌωΏΠΌYSΎ;€Ι“ΖΣ½[ΧteϊιG¨Υjζώτ3υ5£}§|7u:wξήΓΒ"{OœœΨΎu`ή8kΖ΄LΫnΞ‰§¨Š^30Ύ?'OζΎ――1Π*ŸvmΫΖ ΰάωσh΅ZZ·jΙΈ1£hΡΌ{ώάNΡ’ELeύςλBŠ-ŠJ­β;Ω»o?λ6όΖ¬ηbaaAΟ݈‰ŽaԘq?q”7((˜Ν[·QΥ» όόλB|}ύ΅ΧΥΥ•%ŠHƒΖΝ8uκ4_D‘"…3<Ζ¨¨(Φ[OΪ΅LC0sjωΚΥ4¬_ίτ^±cgΆςΟe₯K—ΖΦ֎}`ǎ]YΊΎ²kβδο8~β$-[4£m›Φœ;©Σ¦gϋΪzέΟΕΕ‹)T¨ ιaIͺν;v‘ΡΔSΏ^].^ΊΜ Α_ΎΦπ·μ˜όέTBΓΒ°±±aκ3Ψ΄y+M5€u«–ό΅χo&L2φμ>r”©Σf ΧιiΤ°!K–.ΟV=Ϋwμbζ¬9δΟ—>½{qοή}Ύ:‚ΨΨXnέΊΝ€)ί£R©ψτ“qvqfξΌωμ?p0ΓΟXΡ’EΈ}ηŽΩaVYΑΗ‡₯ωwμδ“X°t-›5bΌΙτκή‰ ›Ά‘ψκBŸΉxΕ‡Ŋπσμ©tlۊυΏoE«Υ‘ΡΔσσΒεtlߊιSΎA©Trίο‘Ω22kG»ΦΝ©]³*νΫ΄ [ηφŒ6GFBω²₯ωηθIN½ΐΠΑŸ1iάβ4Vy>4ώΪυ[888πΓ”qfλΎyλ.·οά§sϋ6iΆGΗΔ¦λυ³··#&6–δδd.[CΗv­˜3}2•Κ—eέo[²|Ξr"!1‘„γΌΗk7nαsν&eK—ΒΩΙ‘βE sΕη`•pωκ5jΧ¨šξ\>v‚Φ-š2wϊ *ΐ;ΐηϊMΆνΨΓ‡}z2kΪ *ΐO –™ώφΖΔΖςπΡf}?ΡΓ†pόΤYξάK?ηΩΚΚ 'GG"£’™ςΓ&NΕΗτΒΑ!σ9Ÿ»χ IΓz9š‡ pδψijVσfΦΤ Τ―S“Ÿ.'*::Ky>Ξ·£†2}Κ·ΔΔΖqθθ Ό*–§{—xU*Οπ/>ΟQ›Rνωϋ A!|;j(Σ&Α€}cgkΛΈ‘_bggΛάι“Q(ό8Λ—eφ΄‰΄iٌε«7πψ‰†ΧάΛeXZZΎV[ŎB.jS „ΖκΈ˜L΅‘LιθΒ…o R΅°½–…—€gϋ OςΪ«Ψ1Ψ“†₯­™(š{Α)μύΚ““cςc0ΐ‚#™VFn Η« %W&δ‡.|½%œpΝΫλΟΘ;_δ"5Šή±ΰ­W©<<ΝέΈq3J₯’E ~!OW6¨Ο'ύ°ρχΝ4¨_KKK6_ƒƒƒΣ¦ΟdΣζ­ψ=x@‰ΕΝΦεθθ@ίή½ΩΌuΛV¬€fΝT¬P>ƒs·&žO>ώ0ΣφgΕ¨‘ΓιΤ±=Ύ~θς^6oήFΧΝ²œϊ΄ο¨S»ϋδλΡγπυKDfΕΠα_›zΛ4¨O³¦ΣμΏWϊ}Π‡2₯KsνϊuώΨΎ“§ώώι βΝ~.‚ƒC¨Y³FΊν `ιbcοžV«εΐΑCœ9{ξ΅?'YρAŸή|ςρ‡h4ρτ|%J§kWγ{xύϊ φ8H@ΐWlΪΌ€™3¦QΩ«υλΥα«a#³\Οζ-[ŸPaggKTT[·mηŸΓGΙ›7ƒKKKςησdΒ·γ ‘p‘ŒΔ)RΈz½žΠΠΠ υsuqfΚψQiΆY[Y‘P(ψ~Β<=άΠλυ89:’P(ˆOˆΗΖ&}o―9Ά664kά₯RI“†uYϋV“ΉtωŊ¦ΊweΊunΟαc'Ν–aa‘Ξq;Žž8MΫVΝ(ί8ΌΉwχ.Œόf φνalŸ­ -š64›7N£aυ†M ά΅:탃ήό¨ ½NN§ DEΗ T*ιΦ₯=]:Ά1›>·Lžφ£ιg[[κΦa:κU+sιŠυλΤΔηΖ-άςδΙp1޲₯KR²xQκΦͺΞΦgχ§Ξ\ iγϊ”-]0Ύ_ΗOΕοΑ#άέςb0hέ² VV–+Z˜βE gπΫΫΩς^ηvψ\ΏΕΆ{(U²8ξnyΝ¦Ž‰αάωΛ̞61Ϋη%UεJεMCW[6kΔΩσ—Έ|ε:εΚΎzœϊujβββ @ΥΚ‰‹ΛΩƒŒŒ4o6-šbggK\œ;{³σ³―έΈR©€MΛ¦( Ό*–£j•Jœ>wŽm[ρΆ―9ρο–z ­P{ž:UΆ£I†6sbέ™8NήO€U…΄σρ?oΰΘMœp±UΡ‘ΗNId|ζIZ=ρΙΪ{ΩςtV,UŠLσΌ ο<ΐJGρφNŠΥ³?β`\\!΅—*3 …ΒΤσ“ΊαλJ½Αœ9kNšν?ΖήΎ1£G²nύo̞cœ/βιιΑ¨‘Γ_Y^―Η? ΅ZΝ}Ÿ·\΄x)‹–,cίίθΡύ½7Φφ—]½κƒW₯Ji‚Χ—©ΥjZ·2LVVVT­κM‡vΖΥ—lmmiΈ!ϋώ>ΐΓ‡8qκ•*U€@ό™Ά±xqc0”:!^―3~™t`PE‹!OWΌ*UD©T¦Ήαwuu1}‰΄ϋ³yΖ˜΄’’’HIIΑΩΩ™!ƒΰ]Ε‹CΎbχξΏ2 °φν?€³“5ͺWΛ΄ύYQ₯²%ŠΓΑΑσAKFR{ΪRηιιΝcV\Ύr•¨¨( ™Ή)ˆˆ`αβeΈΈ8S³Fulll2,λM}.ΐ8Σά" •+?Ÿΐ^Υ» ",,μ­X-Z{‡0 ψϊϊΡ«wΪyy?6}¦S―«*U*g«ž§ώώθt:>ύl`Ί²Ϋ·kΓϋ½z°οοŒŸh|ΠU©RE&Mψ&Γς”*γyΜιPιŒζ` .]ραψ©3¨Tj δχΜτw‡9 ζ7½Ο/Ύία‘‘δya KKΛ Ώ,^©TζΈ‘aalΩώ'μϊΛ΄ΝΩΩ‰ψxγΠ™<Οi\ϋΫš4¬G>O4Ú ŽŽιn‚γγγ)\0?66Φ Ώμπ IDATφξ:,ͺτmΰψwf@Ί°›»cmΧ^kuUΧΨUμξξ]»ΦnΕ΅»°°Ε"$€;f˜yAJυέί>Ÿλς’™SΟ9sfΞΉŸΈΟπ!œ> —γ§(RΨ’Φ-šf›6}ΞbΒR{c|ͺQΓSΑͺl¦χΝ™šm€βX͎ΓGO’””̝{©]3ϋί»²ιz€o]ŽˆŒΔ6]7I©TŠyΑ‚„GFjΆ[&έX׏[¦Σ$$&"A‚6U+cS΅2―^Ώε‘Ηc~hΦ8ΛenήΎ‡u•JŸΤ|<$Ϋ"c£’E,‰ΜvόTΖ…Λ”Ξ}ΏrZOπϋM’ =]=–ΞΟ(Ζ'$°χ€ AΑο)hfŠR©€HαΜγfBBȎŽaΜδŒΰ5μ?ωœώ;ό"θ`n(Γ'LΑ­Χ‰ΨΞςΟ0O|rζkFT‚’)GΓyω^NqS-Jε-sξm΅ρgsŸ’ΩςŒt₯t«nΘ„V¦|ολ»Xι»Β‡–¬_| ‘‘‘$%%‘««‹••–––R @δrΉζ†!-¨’Λε,X*Uͺ R©P(ΌŸΉ?h^™›«/.‡φceUŽ””όόόΡΧΧ'<<œreΛ²qύR)\uuεΟΏΦ²pΡRMw²ΉΉιΡ«/qqq;zHS mo§Ύ‰422Dšz£–šJ©TžϋE7νΨδTφ]Ώq“ϊυrξ˜>ΙEVΪ΄nΕ™³ηΩ±k7τιΥ3Ϋ²εD*•RΈ°%>ΎΎš$žŸ T*sL¦‘u6±υον,_Ίˆζ͚’”ΪΧ<1)λ,:!!!xy=§u«–9fK“€N ΗΠАΠ,ησπτ€tιRΌyϋ–˜˜ΝΨ―O]>W©ΗT*ΝxΎ|ΌΎk—Οgxνηα5&&†ω —P΅jφμάFxx8ϋΚ”QςSΞ­/ύ^˜››γη—9Γ£‡ηcΝίξ”(Qβ³Ώ'y‘vσd‘zΓΨ’y3–-Y@hX±1±+V”’EŠΰγγΛΣ§Ο°΅΅ΑΓΓ3ΓzrϋŒΜΝΝ‘Ι΄Έ|α ‰„ΨΈ8BCB)XΠ w΄hތΓ†βληΟ©ΣgΨΉk[ΆngΡ‚Ήšu€Ž₯eΚ΄0Οϊϋs=ςxΜωKW™:a΄&2r\.Ke”έΦΤؘΧo|4―εryΆ-_RccφνI…ςκJždΉ__Νz$μo^Ύ~Λέϋ8pδ˜ζ½I3ζΣ±]+κΤͺA`p0IIIšJΎ7>~4oΈΈxtυtσϋPŠy>fΣί»±±ŒAΊίεΩΣΖ>|)σB)V΄χΉγξω”ξ;d;ovΏ…f¦¦%(•JΒ#"0Λγ£)ΜΏLppC}¨Έ033!11ϋlg·άξΡ!›±Wι)•*gύ?z ΗΗίΑΰP*₯ΆΖ₯b””LHhx†y?υ&1»υΆ΄Θρ±ΆμΐΡή–QΓE&“qκμEƒ‚3ΝgblDy«²Œ5Lσ^Pπ{t Θρœώ›ޏ£qEuͺ₯±Œασƒ©fϊί$*Ξ8 ήB[}φ ²D[&Qw|Ÿ}†A₯ ’RXΥ£ΪRsω%ρΛΆj–Υ‘Yεμ+pΏ…ο:λγ1WΙϊš$ ααα?χgά„IŒ3ޱγ'!•JiΫΊ%K•D*•rρe&NžFŸΎύ Ξ!h46VΧςz>~;ws,ϋΗnήr£NνΪ_t¬κΥ­ƒ±±1G\ώA"‘πC‹ζšiiΗβΐΑڄ9ιωSw”J%ΓFόΑŸ«Χ2ešΊKcΟέσ\&!‘H˜=w'OcϊLu˜φ¬.έ{’U[Ν _ooυ`ϊ ε­²^aͺ2₯Υ5ΊΞγ&0iΚ4V¬ϊ+Λω–,]ΑΒEKωcτXzόΤ-OΛgηγσ«Lι2¬]·i3f1tψΘO^—T*C"‘πςε+–,[ΑΠa#Q*•$%%kjεαΣΞ­/ω^€ΊuΚΧΟ?ΣψI??†ψƒ)ΣfrξόEJ—.E­šNyώž| SSS5lΐε+WY±κ/ΦmΨD»ρΗh€R);©ΣO˜<•…‹–2g^Ζ›§ά>£Ž?Ά'<<œρ'³mΗ.zφξK·½ ηΦm7 ΒΘQcΈνζFp°z?>ιΏc>Ύ~”/o•m ΠηŠ‹O@KK‹ΪΪ$Λε?uŽdΉœ€δάΣωζ¦Ίƒo||yδρ„„„DŽ;2%%ΛŸSŽ€ΤŠ•:5«³οπ?‡ΕΦ{9vκά'•qω‚™ό½~₯ζ¨[Š~lΧ K s¬Κ•εŸ“gQ(\Όrm--ͺTͺ@Ll –ώΙσ/Υn•*υΝχΙਏχώΓΗ(]²x¦V»€l*‘«[»―^ΗϋΥ›ΤΟλzzz”+[:ΧeΣ«fkϋγ'<}φ‚dΉΗOρ|β…½5―ίϊfHtί»*ζς;m` ΟύGžΔΕΕ΍[w2Lδρ˜{άIHLδβ•λαho‹ΎΎ>ρρ άθR©δά₯«yJ‘”€žχKΦ—€.‰ΏwάΈu‡δtηΆ\@©Tbk]Ώw\q½IBB"Ÿz1sώ2Β##s=ηΦ!όoRͺTD'*‰NTς&TΞ²s‘μv‹a\j@Υ΅Ί]cΈώ2‘Θx%kDσΣΖ`dι~oγ’ΤηGdΌC)R‰„'Ιμ»KB-]i€uPΆΙ5†Ή -™„DΉ yΚwόΑK+ΫχΪp”Λρ,Z€²"vμωjΫ—Ιd¨T*PΓY΅jMš4αβΕ‹τοߟbŊiΖ^-Z”ώύϋsβΔ FŒArr2R©”dx ρ粱ʊe‹‘ΛεόΉz-!!!̞9νΫQ‘ByΟƒ‘‘!oΫΑ‘£PΏ^]M+Oƒυ©™š πΙ“ΜcΑ~1ŒqcFcnaΞ5Χ|”§sλKΏm[·"!!»χξgxΏc‡φΘ΄d\Ύr§ΥYΏζ/d2YžΏ'_jޜ™΄mӊŽ`Οή}4lP­›6hΊΠN?₯RΙ₯+Wώ[Ζ~Ή}F?χξΕΘαΏρδι3֭߈y‘Bl\―NΣ½[:ΰΰ`Φ­ίΔƒιή΅ CRΧρρw,""OΪΆωτ―~ͺΪNŽ”+Sš Σζ2cξ ¨WΫ‰mψβu1rΘ9Ζ€σ)hfб‰1†Y<Ÿ/―εpͺ^₯«ΦρτΩ ΪΆjAεŠεYΌr Sf. E‘Β _zqω† ꇻ@FM˜ŽΫέϋ8ŠD"‘Ha ~κMΫv3rμώ9y–‘ƒϊeϋμΑo‘†£=ΡΡ1™Ί¦?V9±³©JηmΨΌm7Ξ“fπΦǏQΓηωΪ[ΆL)φλΕA—γό>v ‡\N0dΐΟ”.Y€ΛW―sςμEΝόΟ½_ba^γ\’`΄jΡC}}ΖM™Ν€ ¨α˜±Ϋnƒz΅ΉpΕη‰3Έ~Λ η‘C00ΠΗΨȐ^έ;qδŸ“ 9Ž§ΟžS>‹.˜Y©XΑŠw,YΉφ‹ΦΣ·WW.^qεqΣp9vŠΞΫςτω \oΊaa^ˆβŊ0bΜd΄΅΅=|07nίeτΔιμΪw˜~½ΊaUΆLŽη\ϊuˆ,‚›|Β”δKΩIΎ4^ΘUοDŽ /‚}IuR“zVΊΜωь±Γ°™εΗqχ8 .Œ^u€υc5Ί¬ζκ‹–t+Δ–λΡTžξΛ‚Σ‘Lmk†«w"»έb³έώϊήμΏKω)ΎτΪόž_ΡΚϊϋύή₯‘¨>κOεξυ†ŠeK|υ +£cˆ:z<ΫTμ;φ οTύ«<λν[μmHJJΒΠΠOOO|}}YΊt){φμΑΠΠkkkž>U§ ­P‘/^¨/i]2ήΎ}‹££#θθθπΠύq†ΜuΒΧsμψ ¦NŸΕΤΙθή­λχ.Žπ/Υ³w_Š-Κς₯‹Έw ‘OοžžSφoaηΰDεJ9°oχ7έξίΫv°yλ6N?ϊΕ•'ίRxD$ή―^S«†zŒH²\ΞπΡ“X±hΦg%κrΝΈ)³X±hΆ8Ύ‚ όΏ§£·ΚΟ>ΨWΞX©ρέZ°€ΖF9>ηΚ¬o――\ΊΔΖFΠ 66–=zΠ°aCš5k† ΅kΧΦW>>>ΌyσF\%$$0`ΐ"""J₯ΨΨΨδ9εΉπyΜ=ΗΞ]{ΠΡ)q¬ δΡΔ γΈtωŠ&«€7IΙΙμά΅‡Γ†ώ«‚+PwίΌmξžκ.‚ΗO£‚UYqσΔΖΖqκμEl­«ˆγ+ΒΖwOrρ=θιλΡ©SgξίΏL&ΓΝ͍&Mš°{χnΊwοŽ——:tΠ€›ΦΒΐΐόύύ4h—/_ΦdμΤ©3zϊίw0έΕΚ?W£Rͺ3zffΩgΰ„άΨΫΩrνςyttuΡ) ΓΐώΏP­š]Ύn#11‘6ν:f;½Z5;–/]όΕΫΨΜ- }ρzςBK&γΘαύησΨ«oΑΜΤ„‘ƒϊβrό4ρρ ”.U‚ύ2'ΜΎάκ [‰‹gθΐΎΉΟ,‚π?β»uόž ώώοψΉwOξίΏ§ ”Š-ΚμΩ³©_Ώ>5jΤ .υ9ΊΊΊ\Ίt OOOζΝ›‡―――f™κΥk°sχ^J”(Ž–Φ2^AA„ ωΡEπ?`:e΄—Χ3œGΚdΊ ‘B‘Θ”¦=m€fϊΰjωΚ•T\%ί3h ‚ ‚ ‚πmεG€υŸmr122’rε*μά½—#‡ΰβr„'Ož —Λ5)ΩΣ&©R©HNNF&“‘­­΅΅5:u¦sΧξ*TPW‚ ‚ ‚ α¬4 …‚θ˜βΤΞεa!Τ­Yzϊz‰n‚ ‚ ‚π?B΄`ε--- š™H˜ ‚ ‚ ΒϊniΪAAAώ׈KAA!ŸˆKAA!ŸˆKAA!ŸˆKAA!ŸˆKAA!ŸˆKAA!ŸˆKAA!Ÿdω αoόΏu9AAAΎ+ۊ₯ΏxYXΛ–ψβ ‚ ‚ ‚ ό׈.‚‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ω$Λ —( ’cbHˆO@.—£B•γό$hkk£§―‡±‘ZZωC(‚ ‚ BͺttCXX8GΐΕŅǏ=‘ΛεΘd2 *•:Ψ’H$Θd2T*ZZZΨΨΨ©S':wνN‘B122ϊΞ{"‚ ‚ ΒΩ+&&/―g8ΕύϋχH$H₯R”J%J₯’’’P(še<ΈΟύϋχpqqaωΚ•T\EY‚ ‚ ‚ |Ώ+>>…+Vγηχ.Λι%KgβθθλλεϋΆ aaαšΰJ*•’R©HII‘J•*τθΡƒΊuλR²dI$ ώώώάΊu‹}ϋφρψρc€R)χοίΓyΤ(vξή‹žžžθ.(‚ ‚ qUZ?ΈTξ^o¨XΆΔWέhϊΰͺEΣF™‚¨ψψΞ_ΊϊΥ‚¬πˆΆmΩΜΤ©SH$š3fΜ`δΘ‘˜˜˜dΉ\ll,kΧeϊτι$%%i–;wΏ DA3³|-§ ‚ ‚ ߎŽΆ,Oσ{ΎπΑΎrΩ ο}σ&—τΑΥ€~½hP§f–σ•,Yœ­Ϋχ°pΕκ|²βpqqA"‘ ‘HΠΡΡaοή½tμΨQ3OJJ 2™Lσ·T*ΕΠАργΗckkK·nέHHHΐΕΕ…Ÿzφ†¬Ξέzπςε«,§98TcϋΦMŸ΅/‰‰‰ΔΕΕchh ι˜žR©δον;8vμ$˜˜γP͞‘Γ‡QͺTΙ\ΧοηοOΫφhΪ€1+—/!%%…ΘΘ(tt `hhψYeΎyλ6VεΚQΈ°e†rV«^+Γ|ϊΨΪΨ0iβ8Κ–)“λzcbbHN–cffŠT*eςΤιœ8yšƒϋχP©b…Ο*k^\Ήzm;vαευœβΕ‹ρېΑ4oΦ$ΛywμάΝΎ ΐΊjƍMεΚ•>{ΫGŽώΓΜYs™0n ½{υΘσςλ6lbέϊ,_Ίˆζ͚~v9ΎD^φ!·σ>/>>o²²wί6nήΒ™“ΗΎx{οg‹Vm‰OΰΖ΅K_΄ήoΒΓΓ‘H$˜™™ρπ‘;ƒΖ‘ƒϋ(]ΊΤg―3*:šύ‡αύς51±q/V„ΫΆΒΞ¦J>–όΣmΩΎ‡’E Σ¦e³ ηEPπ{ζ-YΕ_KηεyϋηڍΫ̟9 #£Οϋ=ΞΚΧ›lί} Γ{½Ίw’EΣF‡0iFΖ²:V³eδЁωΆύOqο‘;k6ό­y-•J±0/Dϋ6?P―ΆSžΦ5yζϊάƒ VesŸω3%%%±ky/^€uλΦ¬X±₯R‰D"ΑΣΣΉ\žγ65h@»Ά­iΧΆ΅&pK{]·N­—ΝΙΡŽΣ€yKNž>“ετuλ7±κΟ5$%'ρC‹ζ˜™šrφάN\\|λΧΧΣ§]ΫΦΤ¨ξΐΫ·>4iή’ω v™Wύ΅ύ,§iiiΡmkZ·j‰ΎΎ·έξΰ##Cάξ>`ΧΎΓω²ξ07¨Λ’9S5κ§^§ή‡„Rͺdρ Σϊφκ–/ΫΝ+ScώZ6Ώ–ΝcιΌιΤ―S“-Ϋχΰχ.ηk@~«OuμΤ9ƒ™6a4Ξ#‡πκυ[ŽŸ>—εΌ;φ$9YΞΜΙcΠ·'ΗOŸγώCΟήv“Fυ°Zω³—„œ”.€…χάRxΟ-ΕωΡE©]N—k‚xδχiχ4-Wς:$η{h€tΠψK‹ϋΝ|Σ¬…ΛΒΟ? ΛΰjΟ@]K–&mž΄–¬ΩSΖεK9T¨Η[)•JκΥ«Η°aΓHIIαάΉsΜ›7-[ΆPΈpa^Ώ~J₯’lΩ²„‡‡σκΥ+œiάΈ1ƒ bώύ\Όx‘”””\Σ»ρϋpΝί—._%>>žωsgΡ~DGG@@@ ˜}ԊvώΒE€R);·mΑΒ€߆΍›·pww§nέ:9n£P‘‚šr¦€€ΰΪ …Ώ;J”(ž§2‡„„ ―§—mλ—žžžf{rΉœ†MšσκΥk‚‚ƒ)Z$ϋ΄ΐ  ’’£πφ~‰₯₯eΆσ~ Χoά$99™ιS'SΣ©ϊϊlής7Ož>ΝΤRxοώ€R)Φ­ΖΤΔ„₯J²dΩ ^Ώ~C•*ŸwtͺQ§ΥσcWώίϋ”σώSeuήθΘX£|θ° tκψγ—ό?δΥ«Χ( €R)Ο_xS©bΊwλΒψ‰SxανMΕ yoQ>zβ4₯K•``ߞšχZ΅hJπϋP.^vΕͺl™όہΔDu7uSυ GBb’ζ\Ξ …B‘iόπϋPlmͺ`iažiώΠPŠ+šε΄oM"•bh` ~amZ6γό₯«x=IΙβΕ²]ξsΥ—xϊμνΫό 9nuk;ρδΩσ,η}ύΖ‡>=»biaŽ₯…9ΦU*ρϊΥμ>kΫ•*X}vΉ!7R‰„‚κφš‚R&΅6%<.…%g£Ψ=(χ{1ίpΙ)ΉoΗΚB+ ν/-ξ7σM[°όόhΡ΄Q–-WΎ~ώψϊωgzΏAš΄hΪ(ΫdŸ+­EdθΠ‘Θd2d2†††Θd2ήΎ}‹››!!!„††rχξ]^½z•a€ί~ϋ-ΓΊΎΔ;wιΥ§΅κ6€SןΈzΥU3ν‘»}H­Ί iΦ’5³ζΜ#>>ž;wο±mϋN6nΪΒ…‹—³\·R©δδ©3šΦΈU+–rΣυ2NN5ΈwvNj–{φƒΙΙΙψωϋcηΰΔ(ηqΔΔΖ2~βd@PόΉzme˜λ›Τ«Wχ“މΆΆ6Ε‹©ΈψΈx~ώ;vNάΉ{€ΈΈxκΠ½GoΆmίɝ;wε<Žΐ€@Νzά=<θ½'uλ7fζ¬Ήš,‘J₯’]»χ©KwjΥmHχž}8{ξ‚fΉz ›ͺmvμάMσ–mhΤτ6oωΠ%%½Ξ~ΔεΠ~ͺΩΫ‘P(xϊΜ ™LFΥ*™».YW­ŠR©δε+„„†rηξ= 2«W―ΉbηΰΔ²ε«υglηΰΔ’e+XΆ|vN\Ήz#GΑΞΑ‰έ{φ}RΩ#""ε<ŽΊ šΠΰ`ήΏŸaΫ±qqΜ[°ˆ–­ΫS―aSŽΧστθΥ—jΥk‹B‘ΐ©v=μkCl\ΥͺΧ΄\ύη8:uΕ©v=ΪΆοΔΆ»²ΐ?rΫν=zυΕ©v}5ύIS¦—ύyΏ{ο>:tκJ­Ί ψλPήΌ}«YWvεΘιΌIsμψIͺ;:`’z#»nΓ&μœψ{ΫzφξKƒΖ͘0i*aaα¦_Ύr€„„μœθΣwΐ'ο{v>Χ³η.Π²u{xχ.€Ώ¦^Γ¦4oΩ&Γη,—ΛY°h ›΄ s·lΪΌ5Γχ}ΰ―C±sp"66€kΧ±spb՟k4eŸ·`Ν~hCύF͘Οψ©spž4“ν»œK…„„DΆlίΓΘ±S˜>g1gΞθώΟϊΝ;α<™©³ςψ©Wλωcό4†ώ1₯«Φ…B‘`ΦόeΘεrœ'ΝΔνξΊΗΓσ)+Vo 0(˜Ε+Φ0lτD-_»ηSΝz'L›‹»ηS¦ΝYΔΥλ·3mχ}h(·άξ1Βy2Ξ“frτψiΝq|J@`c'Οf„σdΦoΩ‘ι ‘˜˜Δϊ-;ξ<‰‘c¦°cοΑ|Ή>ζ…D’ΞΌcΟAφtω°O!‘ 9Ž»ά3+€wΜY΄‚ίFM`ρŠ5ΔΖΖɟλ63άy¦ΝετΉKš}ΚνœJοχίbkύ‘ν]`Ŋf]iX©bynΉέ#66_Ώw<ρŠJ3IϋΓΖΏ?ό¦ώ>n*λ·μΠΌ5~:=³ρο]œΏt5Χ2+•JŽ?σΔŒ™4“3η/e¨<φ~ωš9 W0τ ̘·Ο'Ϙ5Χn¨Ο£€ΐ ϊΕΧ›€Ί μΐaΞΔΕΕσΠέ“)30dδ8¦Ο]‚χ«7YξΏποΧ½†!W^|θyvζI< —P~Š/ύώ~Ο«Τ«N낍M‘γΪ ½H$:QɈ½‘TžξG©‰ΎtYLP”:ϊΪu;–Ÿ·ΎΟ΄­ηArΪ―’Δμfω³ύVΜ·ΩΙ\|Σ ψ¬±T_#“ R©DOO† ’R©ˆeǎš±W2™ ©TŠT*ΥΌNIIaΧ]DDDPΏ~}ŒŒŒ4žΟυφ­C†$>>_ϊύ ΐΨ yϊμΨ*lΈ IDAT)))όώ‡3―^Ώ‘ίΟ½qt¬Ζα#GY±κ/š7kΚδ‰γ˜9c*έΊvΞ΄ξAKK‹ε+€~£f΄ϋ±3³η.ΰω o΄΅σV`jb‚Λ‘ύ€Ί{γβ…σr,{V_ΏIύ\ZΝ@ύωάΈy‹—―^©­βΕhΫ¦5 Ύ Έsχ. …‚V-`„q΄hξ£~ςΈ eu•ϋkυZΚ–)ƒLKΖ‘£pϊŒΊ[ΖΞέ{XΌt9ΪΪΪόΤ½+ΡQь›0Is“́C‡qt¨FBB^Λ«W―3•·`Α‚XY•# ›qσζ-F-Λρ&]:w€FuGfΚK³­ΉzΝ•±cGgJυ_Σ©ΪΪΪ<|δ€ηγ'κ=Υ™,=?FKK‹šN5²<†9•έyμ.]ΎBνZNθκκrψΘΡ ΛNš<ύQ±R:΄kΛ#w LhXυκΥA©TβααΙ oo’’’Q©T<~ς”'Ož’T*©_·Ϟy1cΦd2τΗΤΜ”ε+Vqξό…¬Š›A||<£œΗΐOέ»R΅JeNž:Γφ;³<ο]ŽcΡβe+Z”ή½zΰνύ’‘8“c9r:o@ˆΎ~σ†²eΛd*γκ΅λ)WVVVœ>s–)ΣgζΊ_ω!**Ši3f‘₯₯…B‘`πΠαLMM)\Ψ’KΤέ8utt(RΈ0χξίΟσ>'$&E‘Β™kCuuu0MMLτχ޽.lΑΒΩSο<œ<πxόα·θτωΛτξή™•‹ζP¦t)=ΐύGœ<{ίυcΪΔΡDEEγrμ4—ήΰ¦Ϋ=ώφ+3&9ΗΦν{s,ο֝{ILLbξτ ψ37ά47œΫvν'&.–YSΗρΫ ~\Ό’}…ΤΙ³ zΟ”q0oΖT¨8sώ²:)Σδ1hkk³|ΑLj99­S{μl«2zΔ`δr9KW­Γ¦je–Μ›Nλš±yΫn|ΣUTž½p™CΠ΄Q½LΫ}JιR%˜?k2Ώ κΗΧ[\ΎvS3MOW— ΞΓ™1y α‘lΫ½?υψ^"""’ΩSΗ3qΜHξήΔwϏ՗P©T$$$’Htt g/\!:&†J¬¨α`Ού‡Ά}ηήCμm«βδhŸαX₯ΉxΕ•C°hφT""£Έ|M}X½αoŒŒ Y0k CφεΒεkάΎσαΞξœϊ˜™™)ΪΪΪ=q†±“gγηŽΫe9οΟ=»ςόΕ+~7•σ–ΰ`oƒMΥLσΩZWαΩso@Θ(δ ž{ΏJ}B\|U+en-ΞΜ—―έδϊ­;Œ:iρ~υ†θhυΝjtL,ΛWo A½Z,[0ƒΆ­š³zύVBBΓ°΅ωPŽ/_£§««)‡Χ‹—X•-ΆΆk7m§CΫ–,[0Ϋͺ•ΩΉη`–ϋ/όϋ•4Σ"Q"$&…§Ι ΪΒ¬fά›RΗR:τΨτžΨ$%.ΏΑάPΖΡaEhXQ—U£π–sϊχ"ܘP • Φ\‰Κq[c†aW’¦•`~§‚Œ=FXά'4‰}eιΌβ… ΖΒΒ‰DΒΣ§Oy–€€€ ‘H4σ©T*MΥλΧ―ρππ Q£F˜ššR’D ΝrŸλˆΛQRRRθΦ­3Υμ±07gφάωμΩ{€‰Ζ‘‘FFFό:hνΪΆΙ6ΣαΗΪ·mƒƒ½=—―\Εσρcάέ=9vόΗOœdΕ²ΕY֜Κ>wφŒ 󦀀πςΥ+*Uͺ˜νϊbbb°sΘ8@ΉoŸ^θκκ΄I#tttΈrυcGqγΖ-ZώΠ"Η2Nž8žΦ­ZrτŸγLŸ9›ΧoΤ΅f{χ@*•²nΝ_*T† κ3`Πφξ;@ƒϊκ›Ž °wΧvŒŒŒ˜·`ϋβυ›7XY•Λr[ΖΖFτιΥ‹‡³iΛVjΦtΒΖ:γ…qΣζ­ά»€;΄Γ©Fu6mω›ε+ώ€FuGJ•όНPOOG‡jxδA©Ε5e¨Y݁ΫwΰvχvΦUX³QέrώΒϋΝ›4ΰϊ­;<χ~…MURR”€ŠΘ¨h€R)];΅£S‡Φ9+αί+νk/‘¨[ž~΄7 I%ucΙΝLΨy;–/iiρώepcF41ΑL_JX\ … €DΔηόϋŸ€P§$>YE;;}ό—¦€μλύξ|ͺ7V©’_75|Vttt4?ώZZZšVͺœH$MΛOZΒ/•vΣΈhρ² οϋϊϊbh`ΐ„ρcΨΉk¦kX‘"…7ftλU*•Ό @KK‹ŸϋτΌΏnύFΦmΨΔ™³ηιή­ΛW+ϋΗάέ=°³΅Νρ‚«₯₯E«–κ€IGGGGΪ·m€ΎΎ>M7δΜΩσΌ}λΓυ›7±΅΅‘x}νΚ•SCSoh”)κ‡IQ¦ti *€­ R©4ΓM|Α‚fš–%ΛΤ1lκ EFIIIΘεrLMM>lΥμ:όwNœ8•)ΐ:vβ$†LŸ:mmmRR”Μ˜5‡«W]3|NυκΥΕνΞ]Ξ;ODDcFΞΤι³8yκ4III9ΆfWvυgS­š½fήκŽš+m«;8h¦;:TΣLλϋso yδξŽ₯₯φvΆhiΙπH}Fœ‘φφκ±={tηΜΩσL¦lmm˜1m2)))ά½χ‘Έs§< q»s‡ΣgΞQ΅JεL-KσχŽ””ώ:4Γϋ>ΎΎ΄kΫ:Ϋrδ&­b%«μ‚iϋ(•J±·³γε+„†…εΊΞ/UΈ°%vΆΆΐ‡Οκψ‰“?qR3O`PAAΑ$%%ag[©γΚͺΩr€€J₯βΥ«ΧτθΥ7Γ4__zώΤΉ^ηό…‹Θd2š7kB5ϋμΗ‰He2>§Η˜Ύ>ΖΖF½Ο4φηΉχ+Nœ>σΘ!Ό bέζνΔΗ'P€°E¦ίσ΄ @&ϋ𙆅G`iQHσΪΒΌζκΧ!‘‘t9Ξ‘cΊ6šššd›x)4Tx.\Ύ:Γϋf&&DF©πΒ–φ‘XΡΒΩξw|B{Έόž‚f¦(•Κ,[ρ>Ftt c&ΟΚπ~ ‡ίω΄ίΓOQ΄ˆ₯¦μ™¦ΆD₯RKϋ6?°nσvβββ©foΓO;dΘpθvχ;φζ­ε’‚U9F 5Σϋff¦,_03Λe€R)v6E³ειJιVݐ ­Lωή!Φ›+}r‹o%44”€€$tuu±²²Β’ΐΐ@ (€\.Χά\₯UrΉœ‚ R₯JT* …"ΣΨ•ΟanώΡr9΄+«r€€€ΰη現Ύ>ααα”+[–λא’Hαͺ«+ώ΅–…‹–jΊ6dwΧ£W_βββ8vτ¦ήήN}sfddˆ4υ‡=mόˆR©$<<"Χ2§›œΚώ±λ7nRΏ^ΞέΣ'ΉΘJ›Φ­8sφ<;vν& >½zfšηSϊόK₯R ΆΔΗΧW“$Ασρ”JeŽΙ4²³nΓ&Άώ½]“ζ<)9€Δ,2* ‰‹ΗΤΔ„ΘHυΕ:«ΰΎ~έ:,_±Š»φ §§GλV-™Ώp »χͺ»δΤΔρlι₯΅~Ί»ΘJυβ…·ζοbE‹πΠέ]σ^Z7Ε’EŠ “Ι¨]«&7oέ¦PΑ‚tιά‰DΒφ»¨]»2™ _Z4oƈaCρυσηΤι3μά΅‡-[·³hΑ\<ήΝP#GΡόνκzƒΓGŽςKΏŸqυ;η/\δΠα,j†Σ‡2™—/œA"‘GhH( šαο.Ηr|XUζσΖ<υ†ΒΧ/s6HOO:uμ€J₯ΒΣσ1R©”βŊ!•fόN…„„f.χH `‘ϊύ›¦ΎΎΎŸ‘š5―Έbo›ρ&ωζmυyŸΐšυ[=rΦUԏ½Οΐ%»G³cχF ŒNjyΓ°΄0G₯R±dεZ:Ψ–ςεΚ¨§…†‘­­™© Ύ~οhΩ’ έ:·',<œm»pζΒε ­4΅œΏΩMu G{Ίœ@*•βδX-S2τ²:f¦&DEǐ,—S ΅b5$4 SΣ=H>ε&.%EΙθ‰3˜7c’&€)hfJr²ϊ>#}€₯P(2―@₯ΚΆςΧΞΊ*Ϟ{σζ­/]:΄!6.Žη/^αεύŠm[fΉLve.dfJπϋ*W,¨ΏSiΧ03SžΏΘΨϊFι’%J₯XW©ΔΫw‘Ι€˜™šPΉBy\oΊ‘R©(U’8qqρθκι2ζχ‘()<ς|Μ¦Ώwcc]ƒlza^οΗΡΈ’ΊΕΚXΖπΖƌωΑT3ύo gœο ‘­>{Y’-“¨» ΎΟ~Μ«RQ)¬κQm©9ό’ψe[5ΛκΠ¬rώ/Κ‹o>+»ZΏιs3}ή’<-σ%$ ααα>Ύ Ψ?ΓτysfΆM+ώ9v‚={χΡ°A=ΆnΪ€––S'O ]ΫΦάΎ}‡uλ7Ν„ρc¨S[ύΌ€ώΏτΕάΌ;vͺ³œ]Ώq₯RIΫ6ُƒΙ‰‘‘!3'E.W°jνff/X†Η㧌1˜ εΛa^¨ ;΄aŚŒ2›g^ήtξΠ†Γœ$ 0(ΗuΧvr€i£ϊόΉv3Sg-DG§=Ίͺǝ΅mΥ‚ΚΛ³xε¦Μ\@Š"…AΏτΞq}Cυ%6.ŽΙ3ζ³xεμm¬iΥB]Ω·w7 τυ™:k+Χl’]λμǐφνΥ•‹W\ωcά4\Ž’sΗΆ<}ώΧ›™+°*V°β]@ KVΕΐ@ŸΡΓsγφ]FOœΞ}‡ιΧ«Ϋ'₯²Χ’1iμο„…G0yζ6lέI»Φ-¨^MέυσΧ_zS¬h–Z˜…Λ)^¬ˆ¦…ͺ[§φΔΕΗ3vςlfΞ[Š©‰1?ΆϋΌΟ;?hiiaocT*Υ΄Κ@Ζc•‰DΒπ!ύ‰ŒŠbά”Ω¬Ωπ7Ν7 n­¬ εdΘ€>κΚΘ9‹™6gϊϊτο£~ zLl,λ6oηύϋP€R) •χ!‘Œ<‹ε§†£=­Θϊπζ…051‘bje[±’EΠΦΦώ¬‡o7nX—ϊuœX΅vΣf/’X‘Β”NνNhll„σˆ!\ΌzQ¦qμδ9†ξ―i‰΅±BbbSSΒWXžΔΔ$MrŽ"…-ψ©K6mΫΝΘ±SψηδY†ꇁ>*•Šu›·σ*]Ζ3.sξβΝλ/ί°nσφ<ο“πυω„)(;Ι—²“|iΌ4«ή‰^ϋ’κσzVΊΜωь±Γ°™εΗqχ8 .Œ^u€υc5Ί¬ζκ‹–t+Δ–λΡTžξΛ‚Σ‘Lmk†«w"»έb³έώϊήμΏKω)ΎτΪόž_ΡΚϊϋ·ŠJTυαpχzCΕ²_g= – |‰ώύϊ₯s'€R)ŽΥΨJ•ΚΊKηηΊνv‡ΙS¦g;½_Ώ>τϋΉΟm£h‘" μ ΥͺeŸιοk([Ά W/ϋβΗBΒ§zαύŠυ›wΠ°^J‡,Ε‚ ό·}Σ.‚ι₯ο.˜•―\:KΏ;~ξέ“ϋχοi₯’E‹2{φlκΧ―O54ΟOΡΥΥε₯Kxzz2oή<|}}5ΛT―^ƒ»χR’Dρ3 ‚ ‚ ‚π[~tόnΦχƒ—Χ3œGΚdΊ ‘B‘Θ”¦=95υvϊΰjωΚ•T\EσΌ!AAAώς#ΐϊΟ6ΉQΉrvξήΛ‘Cpq9Β“'OΛεš”μiΟ¦P©˜P u―IDATT$''#“ΙΤi²­­ιΤ©3»v§P‘‚"ΈAAψ·`₯Q(DΗĐŸ ~Έ09ηΞ— nΝΣΧΓΨΘHt AA„’+hiiQΠΜ DΒAAAΎΠ7MΣ.‚ ‚ ‚πΏLX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωDX‚ ‚ ‚ ωδή2`ΙPDλ›IENDB`‚uvicorn-0.27.1/docs/index.md000066400000000000000000000501601456166335300156650ustar00rootroot00000000000000

uvicorn

An ASGI web server, for Python.

Test Suite Package version Supported Python versions

--- # Introduction Uvicorn is an ASGI web server implementation for Python. Until recently Python has lacked a minimal low-level server/application interface for async frameworks. The [ASGI specification][asgi] fills this gap, and means we're now able to start building a common set of tooling usable across all async frameworks. Uvicorn currently supports **HTTP/1.1** and **WebSockets**. ## Quickstart Install using `pip`: ```shell $ pip install uvicorn ``` This will install uvicorn with minimal (pure Python) dependencies. ```shell $ pip install 'uvicorn[standard]' ``` This will install uvicorn with "Cython-based" dependencies (where possible) and other "optional extras". In this context, "Cython-based" means the following: - the event loop `uvloop` will be installed and used if possible. - `uvloop` is a fast, drop-in replacement of the built-in asyncio event loop. It is implemented in Cython. Read more [here][uvloop_docs]. - The built-in asyncio event loop serves as an easy-to-read reference implementation and is there for easy debugging as it's pure-python based. - the http protocol will be handled by `httptools` if possible. - Read more about comparison with `h11` [here][httptools_vs_h11]. Moreover, "optional extras" means that: - the websocket protocol will be handled by `websockets` (should you want to use `wsproto` you'd need to install it manually) if possible. - the `--reload` flag in development mode will use `watchfiles`. - windows users will have `colorama` installed for the colored logs. - `python-dotenv` will be installed should you want to use the `--env-file` option. - `PyYAML` will be installed to allow you to provide a `.yaml` file to `--log-config`, if desired. Create an application: ```python title="main.py" async def app(scope, receive, send): assert scope['type'] == 'http' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ], }) await send({ 'type': 'http.response.body', 'body': b'Hello, world!', }) ``` Run the server: ```shell $ uvicorn main:app ``` --- ## Usage The uvicorn command line tool is the easiest way to run your application. ### Command line options ``` $ uvicorn --help Usage: uvicorn [OPTIONS] APP Options: --host TEXT Bind socket to this host. [default: 127.0.0.1] --port INTEGER Bind socket to this port. If 0, an available port will be picked. [default: 8000] --uds TEXT Bind to a UNIX domain socket. --fd INTEGER Bind to socket from this file descriptor. --reload Enable auto-reload. --reload-dir PATH Set reload directories explicitly, instead of using the current working directory. --reload-include TEXT Set glob patterns to include while watching for files. Includes '*.py' by default; these defaults can be overridden with `--reload- exclude`. This option has no effect unless watchfiles is installed. --reload-exclude TEXT Set glob patterns to exclude while watching for files. Includes '.*, .py[cod], .sw.*, ~*' by default; these defaults can be overridden with `--reload-include`. This option has no effect unless watchfiles is installed. --reload-delay FLOAT Delay between previous and next check if application needs to be. Defaults to 0.25s. [default: 0.25] --workers INTEGER Number of worker processes. Defaults to the $WEB_CONCURRENCY environment variable if available, or 1. Not valid with --reload. --loop [auto|asyncio|uvloop] Event loop implementation. [default: auto] --http [auto|h11|httptools] HTTP protocol implementation. [default: auto] --ws [auto|none|websockets|wsproto] WebSocket protocol implementation. [default: auto] --ws-max-size INTEGER WebSocket max size message in bytes [default: 16777216] --ws-max-queue INTEGER The maximum length of the WebSocket message queue. [default: 32] --ws-ping-interval FLOAT WebSocket ping interval in seconds. [default: 20.0] --ws-ping-timeout FLOAT WebSocket ping timeout in seconds. [default: 20.0] --ws-per-message-deflate BOOLEAN WebSocket per-message-deflate compression [default: True] --lifespan [auto|on|off] Lifespan implementation. [default: auto] --interface [auto|asgi3|asgi2|wsgi] Select ASGI3, ASGI2, or WSGI as the application interface. [default: auto] --env-file PATH Environment configuration file. --log-config PATH Logging configuration file. Supported formats: .ini, .json, .yaml. --log-level [critical|error|warning|info|debug|trace] Log level. [default: info] --access-log / --no-access-log Enable/Disable access log. --use-colors / --no-use-colors Enable/Disable colorized logging. --proxy-headers / --no-proxy-headers Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info. --server-header / --no-server-header Enable/Disable default Server header. --date-header / --no-date-header Enable/Disable default Date header. --forwarded-allow-ips TEXT Comma separated list of IPs to trust with proxy headers. Defaults to the $FORWARDED_ALLOW_IPS environment variable if available, or '127.0.0.1'. --root-path TEXT Set the ASGI 'root_path' for applications submounted below a given URL path. --limit-concurrency INTEGER Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. --backlog INTEGER Maximum number of connections to hold in backlog --limit-max-requests INTEGER Maximum number of requests to service before terminating the process. --timeout-keep-alive INTEGER Close Keep-Alive connections if no new data is received within this timeout. [default: 5] --timeout-graceful-shutdown INTEGER Maximum number of seconds to wait for graceful shutdown. --ssl-keyfile TEXT SSL key file --ssl-certfile TEXT SSL certificate file --ssl-keyfile-password TEXT SSL keyfile password --ssl-version INTEGER SSL version to use (see stdlib ssl module's) [default: 17] --ssl-cert-reqs INTEGER Whether client certificate is required (see stdlib ssl module's) [default: 0] --ssl-ca-certs TEXT CA certificates file --ssl-ciphers TEXT Ciphers to use (see stdlib ssl module's) [default: TLSv1] --header TEXT Specify custom default HTTP response headers as a Name:Value pair --version Display the uvicorn version and exit. --app-dir TEXT Look for APP in the specified directory, by adding this to the PYTHONPATH. Defaults to the current working directory. --h11-max-incomplete-event-size INTEGER For h11, the maximum number of bytes to buffer of an incomplete event. --factory Treat APP as an application factory, i.e. a () -> callable. --help Show this message and exit. ``` For more information, see the [settings documentation](settings.md). ### Running programmatically There are several ways to run uvicorn directly from your application. #### `uvicorn.run` If you're looking for a programmatic equivalent of the `uvicorn` command line interface, use `uvicorn.run()`: ```py title="main.py" import uvicorn async def app(scope, receive, send): ... if __name__ == "__main__": uvicorn.run("main:app", port=5000, log_level="info") ``` #### `Config` and `Server` instances For more control over configuration and server lifecycle, use `uvicorn.Config` and `uvicorn.Server`: ```py title="main.py" import uvicorn async def app(scope, receive, send): ... if __name__ == "__main__": config = uvicorn.Config("main:app", port=5000, log_level="info") server = uvicorn.Server(config) server.run() ``` If you'd like to run Uvicorn from an already running async environment, use `uvicorn.Server.serve()` instead: ```py title="main.py" import asyncio import uvicorn async def app(scope, receive, send): ... async def main(): config = uvicorn.Config("main:app", port=5000, log_level="info") server = uvicorn.Server(config) await server.serve() if __name__ == "__main__": asyncio.run(main()) ``` ### Running with Gunicorn [Gunicorn][gunicorn] is a mature, fully featured server and process manager. Uvicorn includes a Gunicorn worker class allowing you to run ASGI applications, with all of Uvicorn's performance benefits, while also giving you Gunicorn's fully-featured process management. This allows you to increase or decrease the number of worker processes on the fly, restart worker processes gracefully, or perform server upgrades without downtime. For production deployments we recommend using gunicorn with the uvicorn worker class. ``` gunicorn example:app -w 4 -k uvicorn.workers.UvicornWorker ``` For a [PyPy][pypy] compatible configuration use `uvicorn.workers.UvicornH11Worker`. For more information, see the [deployment documentation](deployment.md). ### Application factories The `--factory` flag allows loading the application from a factory function, rather than an application instance directly. The factory will be called with no arguments and should return an ASGI application. ```py title="main.py" def create_app(): app = ... return app ``` ```shell $ uvicorn --factory main:create_app ``` ## The ASGI interface Uvicorn uses the [ASGI specification][asgi] for interacting with an application. The application should expose an async callable which takes three arguments: * `scope` - A dictionary containing information about the incoming connection. * `receive` - A channel on which to receive incoming messages from the server. * `send` - A channel on which to send outgoing messages to the server. Two common patterns you might use are either function-based applications: ```python async def app(scope, receive, send): assert scope['type'] == 'http' ... ``` Or instance-based applications: ```python class App: async def __call__(self, scope, receive, send): assert scope['type'] == 'http' ... app = App() ``` It's good practice for applications to raise an exception on scope types that they do not handle. The content of the `scope` argument, and the messages expected by `receive` and `send` depend on the protocol being used. The format for HTTP messages is described in the [ASGI HTTP Message format][asgi-http]. ### HTTP Scope An incoming HTTP request might have a connection `scope` like this: ```python { 'type': 'http', 'scheme': 'http', 'root_path': '', 'server': ('127.0.0.1', 8000), 'http_version': '1.1', 'method': 'GET', 'path': '/', 'headers': [ (b'host', b'127.0.0.1:8000'), (b'user-agent', b'curl/7.51.0'), (b'accept', b'*/*') ] } ``` ### HTTP Messages The instance coroutine communicates back to the server by sending messages to the `send` coroutine. ```python await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ] }) await send({ 'type': 'http.response.body', 'body': b'Hello, world!', }) ``` ### Requests & responses Here's an example that displays the method and path used in the incoming request: ```python async def app(scope, receive, send): """ Echo the method and path back in an HTTP response. """ assert scope['type'] == 'http' body = f'Received {scope["method"]} request to {scope["path"]}' await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ] }) await send({ 'type': 'http.response.body', 'body': body.encode('utf-8'), }) ``` ### Reading the request body You can stream the request body without blocking the asyncio task pool, by fetching messages from the `receive` coroutine. ```python async def read_body(receive): """ Read and return the entire body from an incoming ASGI message. """ body = b'' more_body = True while more_body: message = await receive() body += message.get('body', b'') more_body = message.get('more_body', False) return body async def app(scope, receive, send): """ Echo the request body back in an HTTP response. """ body = await read_body(receive) await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ (b'content-type', b'text/plain'), (b'content-length', str(len(body)).encode()) ] }) await send({ 'type': 'http.response.body', 'body': body, }) ``` ### Streaming responses You can stream responses by sending multiple `http.response.body` messages to the `send` coroutine. ```python import asyncio async def app(scope, receive, send): """ Send a slowly streaming HTTP response back to the client. """ await send({ 'type': 'http.response.start', 'status': 200, 'headers': [ [b'content-type', b'text/plain'], ] }) for chunk in [b'Hello', b', ', b'world!']: await send({ 'type': 'http.response.body', 'body': chunk, 'more_body': True }) await asyncio.sleep(1) await send({ 'type': 'http.response.body', 'body': b'', }) ``` --- ## Why ASGI? Most well established Python Web frameworks started out as WSGI-based frameworks. WSGI applications are a single, synchronous callable that takes a request and returns a response. This doesn’t allow for long-lived connections, like you get with long-poll HTTP or WebSocket connections, which WSGI doesn't support well. Having an async concurrency model also allows for options such as lightweight background tasks, and can be less of a limiting factor for endpoints that have long periods being blocked on network I/O such as dealing with slow HTTP requests. --- ## Alternative ASGI servers A strength of the ASGI protocol is that it decouples the server implementation from the application framework. This allows for an ecosystem of interoperating webservers and application frameworks. ### Daphne The first ASGI server implementation, originally developed to power Django Channels, is [the Daphne webserver][daphne]. It is run widely in production, and supports HTTP/1.1, HTTP/2, and WebSockets. Any of the example applications given here can equally well be run using `daphne` instead. ``` $ pip install daphne $ daphne app:App ``` ### Hypercorn [Hypercorn][hypercorn] was initially part of the Quart web framework, before being separated out into a standalone ASGI server. Hypercorn supports HTTP/1.1, HTTP/2, HTTP/3 and WebSockets. ``` $ pip install hypercorn $ hypercorn app:App ``` --- ## ASGI frameworks You can use Uvicorn, Daphne, or Hypercorn to run any ASGI framework. For small services you can also write ASGI applications directly. ### Starlette [Starlette](https://github.com/encode/starlette) is a lightweight ASGI framework/toolkit. It is ideal for building high performance asyncio services, and supports both HTTP and WebSockets. ### Django Channels The ASGI specification was originally designed for use with [Django Channels](https://channels.readthedocs.io/en/latest/). Channels is a little different to other ASGI frameworks in that it provides an asynchronous frontend onto a threaded-framework backend. It allows Django to support WebSockets, background tasks, and long-running connections, with application code still running in a standard threaded context. ### Quart [Quart](https://pgjones.gitlab.io/quart/) is a Flask-like ASGI web framework. ### FastAPI [**FastAPI**](https://github.com/tiangolo/fastapi) is an API framework based on **Starlette** and **Pydantic**, heavily inspired by previous server versions of **APIStar**. You write your API function parameters with Python 3.6+ type declarations and get automatic data conversion, data validation, OpenAPI schemas (with JSON Schemas) and interactive API documentation UIs. ### BlackSheep [BlackSheep](https://www.neoteroi.dev/blacksheep/) is a web framework based on ASGI, inspired by Flask and ASP.NET Core. Its most distinctive features are built-in support for dependency injection, automatic binding of parameters by request handler's type annotations, and automatic generation of OpenAPI documentation and Swagger UI. ### Falcon [Falcon](https://falconframework.org) is a minimalist REST and app backend framework for Python, with a focus on reliability, correctness, and performance at scale. ### Muffin [Muffin](https://github.com/klen/muffin) is a fast, lightweight and asynchronous ASGI web-framework for Python 3. ### Litestar [Litestar](https://litestar.dev) is a powerful, lightweight and flexible ASGI framework. It includes everything that's needed to build modern APIs - from data serialization and validation to websockets, ORM integration, session management, authentication and more. ### Panther [Panther](https://PantherPy.github.io/) is a fast & friendly web framework for building async APIs with Python 3.10+. It has built-in Document-oriented Database, Caching System, Authentication and Permission Classes, Visual API Monitoring and also supports Websocket, Throttling, Middlewares. [uvloop]: https://github.com/MagicStack/uvloop [httptools]: https://github.com/MagicStack/httptools [gunicorn]: https://gunicorn.org/ [pypy]: https://pypy.org/ [asgi]: https://asgi.readthedocs.io/en/latest/ [asgi-http]: https://asgi.readthedocs.io/en/latest/specs/www.html [daphne]: https://github.com/django/daphne [hypercorn]: https://gitlab.com/pgjones/hypercorn [uvloop_docs]: https://uvloop.readthedocs.io/ [httptools_vs_h11]: https://github.com/python-hyper/h11/issues/9 uvicorn-0.27.1/docs/overrides/000077500000000000000000000000001456166335300162345ustar00rootroot00000000000000uvicorn-0.27.1/docs/overrides/partials/000077500000000000000000000000001456166335300200535ustar00rootroot00000000000000uvicorn-0.27.1/docs/overrides/partials/nav.html000066400000000000000000000027661456166335300215400ustar00rootroot00000000000000{% import "partials/nav-item.html" as item with context %} {% set class = "md-nav md-nav--primary" %} {% if "navigation.tabs" in features %} {% set class = class ~ " md-nav--lifted" %} {% endif %} {% if "toc.integrate" in features %} {% set class = class ~ " md-nav--integrated" %} {% endif %} uvicorn-0.27.1/docs/server-behavior.md000066400000000000000000000143741456166335300176700ustar00rootroot00000000000000# Server Behavior Uvicorn is designed with particular attention to connection and resource management, in order to provide a robust server implementation. It aims to ensure graceful behavior to either server or client errors, and resilience to poor client behavior or denial of service attacks. ## HTTP Headers The `Server` and `Date` headers are added to all outgoing requests. If a `Connection: Close` header is included then Uvicorn will close the connection after the response. Otherwise connections will stay open, pending the keep-alive timeout. If a `Content-Length` header is included then Uvicorn will ensure that the content length of the response body matches the value in the header, and raise an error otherwise. If no `Content-Length` header is included then Uvicorn will use chunked encoding for the response body, and will set a `Transfer-Encoding` header if required. If a `Transfer-Encoding` header is included then any `Content-Length` header will be ignored. HTTP headers are mandated to be case-insensitive. Uvicorn will always send response headers strictly in lowercase. --- ## Flow Control Proper flow control ensures that large amounts of data do not become buffered on the transport when either side of a connection is sending data faster than its counterpart is able to handle. ### Write flow control If the write buffer passes a high water mark, then Uvicorn ensures the ASGI `send` messages will only return once the write buffer has been drained below the low water mark. ### Read flow control Uvicorn will pause reading from a transport once the buffered request body hits a high water mark, and will only resume once `receive` has been called, or once the response has been sent. --- ## Request and Response bodies ### Response completion Once a response has been sent, Uvicorn will no longer buffer any remaining request body. Any later calls to `receive` will return an `http.disconnect` message. Together with the read flow control, this behavior ensures that responses that return without reading the request body will not stream any substantial amounts of data into memory. ### Expect: 100-Continue The `Expect: 100-Continue` header may be sent by clients to require a confirmation from the server before uploading the request body. This can be used to ensure that large request bodies are only sent once the client has confirmation that the server is willing to accept the request. Uvicorn ensures that any required `100 Continue` confirmations are only sent if the ASGI application calls `receive` to read the request body. Note that proxy configurations may not necessarily forward on `Expect: 100-Continue` headers. In particular, Nginx defaults to buffering request bodies, and automatically sends `100 Continues` rather than passing the header on to the upstream server. ### HEAD requests Uvicorn will strip any response body from HTTP requests with the `HEAD` method. Applications should generally treat `HEAD` requests in the same manner as `GET` requests, in order to ensure that identical headers are sent in both cases, and that any ASGI middleware that modifies the headers will operate identically in either case. One exception to this might be if your application serves large file downloads, in which case you might wish to only generate the response headers. --- ## Timeouts Uvicorn provides the following timeouts: * Keep-Alive. Defaults to 5 seconds. Between requests, connections must receive new data within this period or be disconnected. --- ## Resource Limits Uvicorn provides the following resource limiting: * Concurrency. Defaults to `None`. If set, this provides a maximum number of concurrent tasks *or* open connections that should be allowed. Any new requests or connections that occur once this limit has been reached will result in a "503 Service Unavailable" response. Setting this value to a limit that you know your servers are able to support will help ensure reliable resource usage, even against significantly over-resourced servers. * Max requests. Defaults to `None`. If set, this provides a maximum number of HTTP requests that will be serviced before terminating a process. Together with a process manager this can be used to prevent memory leaks from impacting long running processes. --- ## Server Errors Server errors will be logged at the `error` log level. All logging defaults to being written to `stdout`. ### Exceptions If an exception is raised by an ASGI application, and a response has not yet been sent on the connection, then a `500 Server Error` HTTP response will be sent. ### Invalid responses Uvicorn will ensure that ASGI applications send the correct sequence of messages, and will raise errors otherwise. This includes checking for no response sent, partial response sent, or invalid message sequences being sent. --- ## Graceful Process Shutdown Graceful process shutdowns are particularly important during a restart period. During this period you want to: * Start a number of new server processes to handle incoming requests, listening on the existing socket. * Stop the previous server processes from listening on the existing socket. * Close any connections that are not currently waiting on an HTTP response, and wait for any other connections to finalize their HTTP responses. * Wait for any background tasks to run to completion, such as occurs when the ASGI application has sent the HTTP response, but the asyncio task has not yet run to completion. Uvicorn handles process shutdown gracefully, ensuring that connections are properly finalized, and all tasks have run to completion. During a shutdown period Uvicorn will ensure that responses and tasks must still complete within the configured timeout periods. --- ## HTTP Pipelining HTTP/1.1 provides support for sending multiple requests on a single connection, before having received each corresponding response. Servers are required to support HTTP pipelining, but it is now generally accepted to lead to implementation issues. It is not enabled on browsers, and may not necessarily be enabled on any proxies that the HTTP request passes through. Uvicorn supports pipelining pragmatically. It will queue up any pipelined HTTP requests, and pause reading from the underlying transport. It will not start processing pipelined requests until each response has been dealt with in turn. uvicorn-0.27.1/docs/settings.md000066400000000000000000000225531456166335300164230ustar00rootroot00000000000000# Settings Use the following options to configure Uvicorn, when running from the command line. If you're running programmatically, using `uvicorn.run(...)`, then use equivalent keyword arguments, eg. `uvicorn.run("example:app", port=5000, reload=True, access_log=False)`. Please note that in this case, if you use `reload=True` or `workers=NUM`, you should put `uvicorn.run` into `if __name__ == '__main__'` clause in the main module. You can also configure Uvicorn using environment variables with the prefix `UVICORN_`. For example, in case you want to run the app on port `5000`, just set the environment variable `UVICORN_PORT` to `5000`. !!! note CLI options and the arguments for `uvicorn.run()` take precedence over environment variables. Also note that `UVICORN_*` prefixed settings cannot be used from within an environment configuration file. Using an environment configuration file with the `--env-file` flag is intended for configuring the ASGI application that uvicorn runs, rather than configuring uvicorn itself. ## Application * `APP` - The ASGI application to run, in the format `":"`. * `--factory` - Treat `APP` as an application factory, i.e. a `() -> ` callable. ## Socket Binding * `--host ` - Bind socket to this host. Use `--host 0.0.0.0` to make the application available on your local network. IPv6 addresses are supported, for example: `--host '::'`. **Default:** *'127.0.0.1'*. * `--port ` - Bind to a socket with this port. **Default:** *8000*. * `--uds ` - Bind to a UNIX domain socket, for example `--uds /tmp/uvicorn.sock`. Useful if you want to run Uvicorn behind a reverse proxy. * `--fd ` - Bind to socket from this file descriptor. Useful if you want to run Uvicorn within a process manager. ## Development * `--reload` - Enable auto-reload. Uvicorn supports two versions of auto-reloading behavior enabled by this option. There are important differences between them. * `--reload-dir ` - Specify which directories to watch for python file changes. May be used multiple times. If unused, then by default the whole current directory will be watched. If you are running programmatically use `reload_dirs=[]` and pass a list of strings. ### Reloading without watchfiles If Uvicorn _cannot_ load [watchfiles](https://pypi.org/project/watchfiles/) at runtime, it will periodically look for changes in modification times to all `*.py` files (and only `*.py` files) inside of its monitored directories. See the `--reload-dir` option. Specifying other file extensions is not supported unless watchfiles is installed. See the `--reload-include` and `--reload-exclude` options for details. ### Reloading with watchfiles For more nuanced control over which file modifications trigger reloads, install `uvicorn[standard]`, which includes watchfiles as a dependency. Alternatively, install [watchfiles](https://pypi.org/project/watchfiles/) where Uvicorn can see it. Using Uvicorn with watchfiles will enable the following options (which are otherwise ignored). * `--reload-include ` - Specify a glob pattern to match files or directories which will be watched. May be used multiple times. By default the following patterns are included: `*.py`. These defaults can be overwritten by including them in `--reload-exclude`. * `--reload-exclude ` - Specify a glob pattern to match files or directories which will excluded from watching. May be used multiple times. By default the following patterns are excluded: `.*, .py[cod], .sw.*, ~*`. These defaults can be overwritten by including them in `--reload-include`. !!! tip When using Uvicorn through [WSL](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux), you might have to set the `WATCHFILES_FORCE_POLLING` environment variable, for file changes to trigger a reload. See [watchfiles documentation](https://watchfiles.helpmanual.io/api/watch/) for further details. ## Production * `--workers ` - Use multiple worker processes. Defaults to the `$WEB_CONCURRENCY` environment variable if available, or 1. ## Logging * `--log-config ` - Logging configuration file. **Options:** *`dictConfig()` formats: .json, .yaml*. Any other format will be processed with `fileConfig()`. Set the `formatters.default.use_colors` and `formatters.access.use_colors` values to override the auto-detected behavior. * If you wish to use a YAML file for your logging config, you will need to include PyYAML as a dependency for your project or install uvicorn with the `[standard]` optional extras. * `--log-level ` - Set the log level. **Options:** *'critical', 'error', 'warning', 'info', 'debug', 'trace'.* **Default:** *'info'*. * `--no-access-log` - Disable access log only, without changing log level. * `--use-colors / --no-use-colors` - Enable / disable colorized formatting of the log records, in case this is not set it will be auto-detected. This option is ignored if the `--log-config` CLI option is used. ## Implementation * `--loop ` - Set the event loop implementation. The uvloop implementation provides greater performance, but is not compatible with Windows or PyPy. **Options:** *'auto', 'asyncio', 'uvloop'.* **Default:** *'auto'*. * `--http ` - Set the HTTP protocol implementation. The httptools implementation provides greater performance, but it not compatible with PyPy. **Options:** *'auto', 'h11', 'httptools'.* **Default:** *'auto'*. * `--ws ` - Set the WebSockets protocol implementation. Either of the `websockets` and `wsproto` packages are supported. Use `'none'` to ignore all websocket requests. **Options:** *'auto', 'none', 'websockets', 'wsproto'.* **Default:** *'auto'*. * `--ws-max-size ` - Set the WebSockets max message size, in bytes. Please note that this can be used only with the default `websockets` protocol. * `--ws-max-queue ` - Set the maximum length of the WebSocket incoming message queue. Please note that this can be used only with the default `websockets` protocol. * `--ws-ping-interval ` - Set the WebSockets ping interval, in seconds. Please note that this can be used only with the default `websockets` protocol. **Default:** *20.0* * `--ws-ping-timeout ` - Set the WebSockets ping timeout, in seconds. Please note that this can be used only with the default `websockets` protocol. **Default:** *20.0* * `--lifespan ` - Set the Lifespan protocol implementation. **Options:** *'auto', 'on', 'off'.* **Default:** *'auto'*. * `--h11-max-incomplete-event-size ` - Set the maximum number of bytes to buffer of an incomplete event. Only available for `h11` HTTP protocol implementation. **Default:** *'16384'* (16 KB). ## Application Interface * `--interface` - Select ASGI3, ASGI2, or WSGI as the application interface. Note that WSGI mode always disables WebSocket support, as it is not supported by the WSGI interface. **Options:** *'auto', 'asgi3', 'asgi2', 'wsgi'.* **Default:** *'auto'*. !!! warning Uvicorn's native WSGI implementation is deprecated, you should switch to [a2wsgi](https://github.com/abersheeran/a2wsgi) (`pip install a2wsgi`). ## HTTP * `--root-path ` - Set the ASGI `root_path` for applications submounted below a given URL path. * `--proxy-headers` / `--no-proxy-headers` - Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to populate remote address info. Defaults to enabled, but is restricted to only trusting connecting IPs in the `forwarded-allow-ips` configuration. * `--forwarded-allow-ips` Comma separated list of IPs to trust with proxy headers. Defaults to the `$FORWARDED_ALLOW_IPS` environment variable if available, or '127.0.0.1'. A wildcard '*' means always trust. * `--server-header` / `--no-server-header` - Enable/Disable default `Server` header. * `--date-header` / `--no-date-header` - Enable/Disable default `Date` header. !!! note The `--no-date-header` flag doesn't have effect on the `websockets` implementation. ## HTTPS The [SSL context](https://docs.python.org/3/library/ssl.html#ssl.SSLContext) can be configured with the following options: * `--ssl-keyfile ` - The SSL key file. * `--ssl-keyfile-password ` - The password to decrypt the ssl key. * `--ssl-certfile ` - The SSL certificate file. * `--ssl-version ` - The SSL version to use. * `--ssl-cert-reqs ` - Whether client certificate is required. * `--ssl-ca-certs ` - The CA certificates file. * `--ssl-ciphers ` - The ciphers to use. To understand more about the SSL context options, please refer to the [Python documentation](https://docs.python.org/3/library/ssl.html). ## Resource Limits * `--limit-concurrency ` - Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. Useful for ensuring known memory usage patterns even under over-resourced loads. * `--limit-max-requests ` - Maximum number of requests to service before terminating the process. Useful when running together with a process manager, for preventing memory leaks from impacting long-running processes. * `--backlog ` - Maximum number of connections to hold in backlog. Relevant for heavy incoming traffic. **Default:** *2048* ## Timeouts * `--timeout-keep-alive ` - Close Keep-Alive connections if no new data is received within this timeout. **Default:** *5*. * `--timeout-graceful-shutdown ` - Maximum number of seconds to wait for graceful shutdown. After this timeout, the server will start terminating requests. uvicorn-0.27.1/docs/sponsors/000077500000000000000000000000001456166335300161205ustar00rootroot00000000000000uvicorn-0.27.1/docs/sponsors/fastapi.png000066400000000000000000000502401456166335300202560ustar00rootroot00000000000000‰PNG  IHDR„ΖZχCiCCPICC Profile(‘c``H,(Θaa``ΘΝ+) rwRˆˆŒR`ΚΐΑ ΜΐΛ`Δ •˜\\ΰΰTΒ£QΑ·k Œ ϊ².Θ,ύχ²ΕιΈ}š˜›Δ+!†©p₯€'ι?@œ’\PTΒΐΐ˜d+——€Ψ-@ΆHΠQ@φ ;Β^b'AΨΐjB‚œμ+@Ά@rFb ύΘΦIBOGbCν»Α#@ΑΘ 388 198 ήBOςiDOTc(cc+P½§ώ+IDATxμ]xΗ>Ε-Α·ΰάi±wЧΈ΅―”ΎB‘^J±Ε΅hpŠw+ 4ΈFΕ₯οœϋΨ°w³2»w妝ΓΗ·6rζdοώ3s읿‘€————ΐΏ^οp@ψΧΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. p@ΰ/————€Kψ‹ΐ%ΐ%ΐ%ΐ%ΰ’ώ"p p p p Έ$ΐΏ\\\\. x D=y ηbξ@Δ_ΰΞΣΗpοΩxτβ€K– $K“§ΏT©! C&ώ§γΰΰΰ°@ŽΒ™{w`ύkp(βœˆŒ€λχnΓ³ηΟ™‡—ΖΗς€Λe³f‡JΩrBΥl~:IRζϊΌ ————@\ ؏‚i'B`ιΙˆŠΉ—ξ$HΚζφ‡.ΕΚΐϋy BΒwήρ 5^•K€K€Kΰί)Λ!$:Fοί{Ο±EΒ>)RBϋeα㲁ΰ“8‰-}ςNΈΈΈώ ° Eή‚/χmƒΓ—Ξ;"§δI“AΧ²•`h銐’ƒ#ή)——@ό’€ι€pχΩS²s¬ υ Iψ¦J£ͺΧ‡v‹y?œ ...o•€©€0λΤ1ψrϋFx‚ ΰmTΒ/ΜiπdOεγm¬q~ΈβΆ^» G£oAŠD‰‘O@ΩxΗ?gX^¦Β£Ο!hλzΨtκΈ|/&άM†VDOŸ?σ¨%jcRΓfΠ$OΪ1«ςŽWΰ8κXβ#•ΞœͺdΝYη<{(Χ ~Ώ|Ož>q΅΄ΌM7¨™#—‡­«v'Ά]»d¬2C­„h°’>P,s¨+/4@δKΦYΗΟqRm55-QfΥmͺڍG€°?β:΄ ^hωQNtF›ύ^s¨3oŠκ`τ<¬^ ,kΤROΣΛφΓν΅ίώάgz»v4Xu2Λ·²£+ή‡—I ά‚_αbΔ 7Žτ y|ΣΈέ³γbzX|Ίq₯]iφ‘hΫ’…γ€R G*_ΝςB‚3~†Ϋ&›β m G°ΛU†«ΦnΙ Β†+η‘ϋκ₯πβε Ω†ΝΌ9­iΘ‹θ[ΫD@ ώH―°Ίi[H‘8±™μκn+½΄χίΌ[―^‚•θ§!,Εu7dc…ͺω‹ΐ*ό»pϊwIΰĝ(¨1{RœA7+Y¦ΧiηΎ]7ΘΟiοΝλ°ρr8¬;yΜ–·ΪΨhΥ4₯NΧφ’Z9ρ³ϋΈ%»7 ψtœΗ ·’uό}6ΜWΚdΜ …Π‰7 ήc!C€°νϊhΏ|>ΌzύŠ₯Κδ͜ φ·οΗnGBέyS=jKr©\ώπ{³^γΜFϋ³}·o€%GΘ±+{/ šΥδπƒΜ¨0± όϋ=yρžΎ|1OžBΤΓϋπX―_ΏΦl’Ό~ΨΠ¬£f9^ΰŸ%₯mNϊ]μϋψ$qήχη9ΎΏ~†­gN0 ?5ώvΚηΜƒar’Α+ό ή~όξΰoαξ“Gψ›x pf„:—―ίΦ†d‰κ~αƒ%³u[1Ώά°²I;WΘέbέ€ŠJΠF‹gιbcBΉΝΫΓ»ΉςYΤOmάώXΤ°ΉΠ₯WK͝ WqΆ EτCΌΠw˜©JσχοΑζ+aφρ#qΆ~œά7xΰG{%πg°y'}«8aZ£> +[Ω^¦z{ϊςδšψ5Ό|υR‘ΔΫΫώY²Γα½ήސ9» τΰπΣ°ζό)8rω"S»B3YΣg€m{@zάRKΛ°Ο Υ‹˜ͺ%J˜ΞχωΤ#PΦδcP?TχzΘΔ §… aœ’]mΊΊš9q;Κτ-#1ύ*Χ‚V¨*Ύεθω€cG`Δk4y(ˆ2ΪΧ‡f9£ΦαΌΛŠ…q>EΡͺdZ—pϊχHΰλC{`μ͊N‰(―ΰ‰}ͺΨ”)>Ω³fΨ₯ΩVP` ψ:°–f9‘­βIw1rΫοΜcZlkΧrϋ¦ša:ώ₯²1*”9υΤ•ΖZκ„ϊΑσ!gŽvΡΚΆ]‘ςΣF«ΆŒ„±ΠL{yλ½Ζ”’ΜιͺϞ(°§x¬ˆ±›ΦΠ^ρΉV^8 έW.tk*_–p°CO·{όΒs z4{eD@Π’Ή]€@[GΡ@ μh |όΓΎΒ%?𠁑Έ½1·9ˆvtι ΕΣ{Oξ*‹fΐιW™FΉ?Le<ό01u€Qθ!:{εžπ•F)O:Œ[isqK…~Β™ό‡:fςΓφn…i >X‡ΡτΧίCΣ_M@ =¬ΐ…ΣαBδM–±šR¦,šl‘ε˜μκsa‹NPMR¦Μ?T^Ω΄ošuάθX~2₯M§» tZD˜ώχάΊMρw&7B8ΪΘWD[yVͺV (ZΊ΄f-niΉτcΎΠlί @ N*αίοώ΅ˆτ ƒ>Φ*ϋό+šŸUt7BΑΣ¨ΏΙ„zOH~9ί’•΄χ¦Λα–„˜¬V*‹ϋJ‡ŠŸ3ݝرx0Ϊ$ŸwWΜ‡CΓ]’JƒŽ7‚†ŠΕΖΟ JΰZ°Ÿ6“D½ ΝβM€Π XχΙœμύ dI‘JΈtμΘ²Κ6 €«h΅A―Εo\ καXθ;άqΗ&Ν’αhφK&=!U@x†vκ…¦Ž…G˜. D%©œΓ“++)šϊ ΦήIς6@q`'LΪ³Υ%ό±_Ζ='Ο%PmρL8‰Ύ=bς@ 8eΉ'~£Ήu)ζΞΙώ~l΅zΫΆ_Ϋ 48Ε;•kXΌΜ«ΟΆ5ν5€0εψŸ0bΛ:βί6ΪΦΉ7KŸ1NvB–tιαξ‘;iBηm€@ΫAoΒ4Ζmo+׎σwβ7τI`8ζ ™ΊoGœJή?‘ƒδ7h^)¦ άM+ΤΩΔ_0’&H(jϋΉέ€π)ξχOgΨοΧ³εκ€@Ίƒβ³&˜žξRνP‹/d7 ŸSq΄YΎBj,[ϊΜΫΑΑώ §π/–Ν“Ή·Bή©c ζ―±<’―Α6tβͺ0][§`ΦVLlηNμ„Ω§ΑΠυΑšœRt[>Χ,GΌθe팁λμ’w0ςž.ύc8ΦbSsηΒ3p@°λν³ΏŸ χc '\Jž΄ή›^„vKηΈ §F Y±ΘmsΉΔ‹t©SCx!ΫΆ^Ϋ ;Ρ«Zd±PԐ/™Bζx 4_³vŸ?Ν2.SΚΤ+\¨„Svh`!hΚεTR¦ΌZ^ΧΘ΅‡ ά_Tƒz ΤZ6ŽIQΕεšKη KπMΩ.lΩ`xh§Θn@  /?},ΣpYοŽBr ψυ'݊$&)Θ’ΥΑΑnT½3„«κrk—žα[Nψ’€CIŒ^άVυ•ί'u6V‘ΪΏ‚«bΤ^­`iNΒεχ‘Μ΄ŸάDRc~‹BžS’­qP°΅­ΊΊ΅cη…έ€ ΗDχ*n±δ{wμV&7,VfkΔΰp r –SΉN‚Π7ΉΫίμ?ά”ί0}τ7_½;Ρ’ζ.­/ߎ†ghΕ"NB{«)’&ƒth«] γ%u,R"Ž ²)̈‘ΐeϋPa aPπ,F֍Ζb’„ !MΚTC―ΧΔνΓdQjπ@‘Λ“"`¦Až΅θpΤ-h²h¦Ϋx•κ8 ½Q‘,Έϋ;z W@OdFΪ γvύ!\*χ’ w‘4ιŸ[ωΐn@` —AcΎ3tΣΠ„v‚a ΖγΆƒ’ΒώύTWΔ‡S€@}‡χύΤ‘pΒG™xP"+όh[WˆDfΕͺαΘ>X„ξχ⏿˜€χ)ρΘ'UjŠ7#mK|MαAθ£6eίvζΥ0Ι£VΒP mFΈώ0‚CKΈŠΥ£Vjyž όQl­ο(―ΜΘ<Ϋ*η/ΉH‘™Σ¦‡SΈŠS »Μ«­1ι1±·oΖΉέ€πT*ϋ£eΑ_™ρχΠlγLλφkνFšεœ„_p™ά2aMΝ.ΰ ˆ³Py σ1&ύΠ +•§dž˜ -WXς0ΞξK·6E§CF}/ΉΘ½τ1¦ΈVOž=Wέηώή΄Š$e%λF© ι} ©Φ₯ΏτΆ)Χr‘vGγ Ύ·Œ_NλυΛqςx\΅_’ηy ўΪΔ<ΔͺŠΪ ¬V΅ήΡœ΅2ΊˆJ‘Š3Η‹ω±τ<•ΆΩp{@‹Žcψk3Shjυ'~ήtEW£Ύψ–-ηNBύΰypδyΧ=„>˜λv1ζΌ•} £cΞΗ;ΏpΪ ±/>ˆ·ΓΣG)­Β0πΛMlΓ’“/ΠΑξ—7vβG”'ϊ\‰δςI{›³faτΙΈΒ‰Ίw7φΎψDnφ,~ΞςQ—g9·€)Υ| (ΓWŒs¦E}P£*VΧ*fϊsΩ›i+5ΣUPϋ²0‘F₯Ηnχέ2’¨†=W/vcΘͺ‹6˜{tBM6‘D<ω ΖՎψ'πΊΓŞΑ‹T.O>ΛCLΛρι PΏ|’$(FAi™>.kΪuwΫ‹–ŽB@ΧZ2G1.L άΟίΦςCi5¦λΝψ^΄ΕpΒRšΫ’#4ʝ_z;φšb9 ΪΉ`)i™WΦY>’$9DnΰGdH‡‘DE2fΕ [(=6|;κwZ η΄˜šczΜi*ι1Y’9_ΕX;d8`'Ω FE@½yΪΰHγΧc}ε( PηcmsM†Πžƒ<Ζ$χrΡήpQ\εΔ yŸ” =3ΓΊZ³q' šaXψ»χο Ν©d5s`ήδ£wuΥκ|H˜SΈ:πA$³ΙͺΥρΉ•ŽυόόΝfY΅=V@PmΔΓ‡zA+!Ι ΜόΪΠ³’š ‘a.κXhΤΑέ0~w\'ͺšθ}»\δ}Λ•!oώΒhƒODVSΡΈςΡCZ€p ΑΧF3Ν¨χωDο£G·Bc[§©Ι"΄ΧPΫVΫVΞ«ΰkΖΔ5$ zG~mΪšεeŸΌ 2tκ# „X}*Χ„ͺ c5υHφΣ£LΤˆ™iοΪβΗΓNRϋΪΕ‡^@ΠϊΠΝΓlt sηcf_-ΎΌžΩ¦tί_`€<£Ο’‚ΟΘΗ·Β‚ip>βϊ?ŠΝž·ξάΔβ:κΝΐΕκ₯ΫΝΈ'ΧzΟ­/«.Μ„C‘·`!ϊ]¬=s\Φ‡EnτŽ­iΫΝ°Η½£€`₯!.AO£e«RQNΈJχ¬\PŸ΅„6Š(uoΙύψΏM‡³7―)Κγh―!nvώŠί<(Μ8u3O±P³5K`ηΉ“²E›’sδ¬ΊMeŸ©έ' b C ΄§œ—ϋ>IΜ_E ύ‹"n@ΓΏŠoA Z‚­E‹0½”ϊOšΫ'΄ΕvΉί0KΎR~Y‘,š•7ΞW²b˜’τΙ“C"œΝί~ό"Ρ97κΙ#ˆ|τάB=ΑώKαnYν€}Ι]SήƒΝΛΙύ££€ΠΝΗΆŠ,(δiτήΰjuΰStF²‚¬ΌΞnΦ^ΧΜV¨ηΙ‘θ…k]”έόςoψž½z Ρ 7CJ„ί‰†λΈ*Ά,σ¬w… χqΪ3²=SΝ‡#οέšp;R’–³έΉέSΊΠJ\2³{}ŽYΎτPht$ΤΖ¨₯Dfkΰ3=ό*•}ύŽv‡Ÿr{Ό’mw¨ŽžαzIΞ,Wa΅ή…‘₯+Ι=2υ ˜Ϊα›ΖΘ΄τ‹υ K‘’L:5„¬…Υ Ά΄j{–*EJ8Ω}€%³«W4žm»B4u΄“XΑŒXFdσΏ?C7­Ž3 $2ΑλΉnYl$LšVΑη"t€J‚³/=€zx[rξτ^³X΅kΪʘXσ]]&¨?όΉ^Όz Γu‚‰Φ Ayκ 4Šu!BQ=@+Τެ)7ψn}θ9Ϊ ~θ0Ψ»L%θ^¬”Η@ ŒΣQ@†)ΰf2˜ Μ²‡Υ¬ƒJUd-«ά/˜κSΙ^]WC*…χuλω0κ₯d cΊ…+†’ΏŽu3ŸΣσΡΪŽδ“@ δύ}Σ·tɜς(…XΦcέΓ–8M*_˜ŽT΅rδΦΕ«ήΒήτ{ŸΆ§ϋ_ΤiJVp»§η’Ϋk`κσ΄H―V{rΟ­Rη˜Z)νΠι.3ϊ€˜MŽΒL΄6Άq΅©c’@a'0R’ωUνXcš^³B3h7 Ο@lž‚Pˆμεα§arθ»zY΅ =€@V!y&τXˆLyΗΧ|ς3­>΄αΖΐ,‘rθ ­φYž“¬s’CΩ3nθwύ;Xβτ u€Η31w‘ςŒqΫqυθ€βTfΌΑz$cJ_xώκΌΒΥς‹Χ/]Η—―_Ή"Ξ¦L’ |’%…T‰“BκdΙ OκtP&sVTgσH7ΐ8gύφ£ΥDΣίάc™°2T 2k]°Έγ8χσβLά?5Ϋ¬ŽΥAΆt τΓ>qψ΄ϊ†€π ~㿎]%Ψτ™€ έWβv₯–Η« w=€@uΦ_>–Οͺ3ί/QΎGϊ ha&iΒΝΑ#,™@‰Η@‘hβ֞˜cDΣ9ΉIΔε•Ξ΅Œ „zΫ1JlF‹΅ŠXΑ?«ψ·λθ !ζΩ3(πΖΎZΜ”η=+Uƒ―*±Ε–)€‚fΕ,R#Ş_…6Δv“€@clŽ‘vΌ1,°hΦΎςΒŒnΊ[6υ-ž½Jε―¨>š Ή|AΪ”κ5͚»£Ϋηε«z4sw’·Π―A―ΎEά>ΛyiΜάv“φˆiKηήPD‡γ Έψ|)κl€`#~.œΧ.T–’ŸUΔAŸdίωIZ₯ĜIpλΌe‡΄¬Χ¬žΜVϊˆΗΥCχκ΅@Χ7zξ ,ΖsŸ7 X+B?LΐΔ2Σο‘ՐΰGΈ‡έ˜‚*Y–|ΖJ/²'‘~Sθˆ1OI τ„ψ0Β‹’ηΆ‘Ά<­s½‘Ν^ Ϋ» –„”J±ψ]Υ:-…Oœn¬κ„xͺ½t\D§,#D`τmύ&Πν̍ D# XυΞέ}ϊ NΦN}id\FκΠΚλ**²λ4Ifι‹‹”ή–‘J^|Šv ͺ·Ν˜{Ζ’C ¬Nχ˜“ο@ϋΚh?oUξZ΅~ι™“€ ΕλσyθβŸMkdΕd‹άΌ#”BΫm%² ¨?ZeΖ€7Ώ‘/Q’,k ήm¦Ϋζ\ ncv– rFψ{X©oEo0&U/ω-Xψΰ€ΐ"₯·edΏ»bό©SωφΆYΟΞ΄VvX #˜„ΟZ9O™ϊο€ gγ.Θ•”‰sΌ―ι¨h% ΌPΔΚNλ–+&γΚ))„v0Ύ'zfτN) sβvΰάΎˆ”ζ;:χΈ6›¦?31%ͺ‘Ηύιn΅Šι~ΞAŸΘan}βΠΆ‘ Ψ©;H†V.η{bΉ΅‡Ÿ,ΎΩ··FsFqρΫ`Θ‚_0t Ω΄ 9zΫο±&·Β}–c3ΤLWI3)mC τ†ΒΆ―t½όόθ…9OΔTmE“Φβ[¦k%Lw΄΄uW¨3·ψ–Ηητ‰P(f~!τZ}ςμ©ΎM(έ£b5Ε”†vZΰά¨Œrb‹€@Ή‡«,š‘ΰNo<#;ώδY=hηFXoΐ¨bAΛNπn.ΆHN‚‘UόΎ­ΖΜsV†eι°ql`ΘΒX*w^Ψ’³˜5Ο9 θ‘" P3Γχmƒιh#n7)­μ\$LŽ`μ₯μΈΟνΕG@ Ψ>ίoί(+2JΈBι*υ(νqΪFκ…±Τ"· e…#₯Ό‚©4Yφώ„γ·£ &𔋉Bu\*Ύeϊ9eδ«2sS»‡z †ΌŒN©, r@`‘Ϋ2ͺ€pWΣΖ’BπΕΫ6œ)‚«ςžQ·‰ £Uξ"Ύ#›ςƒ¬%ςkTιTš4™xυϊoHœ0.sΞθ87pγ*Y ΉΏάLLτ>C 'AΞΤt0FyΥ˜OnάZχX=—Ι3|¦‰Ώ;Zχηͺ€@E‡‘ΉΰLΜ6e')mΩeYD&…ϋΊτ…άΎ©νvœΎβ ˆ=œ₯ƒ!Εez߲̞ΕuΝ„[ΦΒ t†£Ekšκ‹σOΫ§TŸeΫ£"‚Αz-²h+¬ΐί1oα}?ƒtŸΗjZuα,tΓτΌZDοΙ4σ6’°HmrRQΎ§ O_Ύ‚’s&Β]΄I·‹δVv g²³&-yΖ'@ HΩΖ~©8€¬ι3@X—ώŠΟ•˜ dσ~kΐηJέ©ή{p+d m7 ΠφοΤ};άΨf/·J\¨eΏ7k$7…ΈΎψœ‚XΪηš€@Mόqυ΄ΧL»kεR@°Swΰ—!3μΨKΧΆ‚ςH<{Ÿα0ΖΔi€±q”ΘhdK³ψσ$ ΪT Ύ7|Σ*₯a«χ΄ ˜Ί‚ς]δΒ¨¦  [v†Ής*ŽΕμ¬AΪτθb΄xδ€ %!χηL€@UznY«0ο€$uL›‚ύŽΐών ?:A o ­ρhF‚3Ζͺυ‘4Γ-š‘AΨ2’±¬Vώ‹κŒ’Z€<ΪςˆΖ­1-ϊۚίGœx#uܚ±“>ώ“ΎQΤ1‰yω₯ISRΦr@KUϋœh5pαtΈ)­&ρ ΑΞΥΑp΄P²ΌΥΓcnŸεe.οŸ64λΘά¦U{β{0ξΡ«‘ޏάωϋχ F³U"֏/Υe΅ Α¨žFiΟ­kΠ rΔ |9$ΞaΆφv…€“ήΦ}MŽhry Ί`τΦ1ΦΫnjŒ>ϋΠB‹r`HμcΫSJ?ζ Ν&>«υ ΑlyήJ#Ρ±oβž-šμ…‘ΟTVLέι 1ur ΝΗκΜϋՐγŽ&Ε€0W#mXTΐ«‘€βzΖ₯§,ύ30ΌΜΕόrΓNLβν4 Ψ± Ω«Κ†ή<Ί}Άm€ΕGχ«ΆΙκΐ%jΠhΞ`ͺKΎA§q¨D.ΨΦςΓ8χ₯7Θ@B-ΈήDτ|nW°˜΄šξλΩ§ΑPΜ“.₯ƒ=ٞx «­+έγ€Ό מό¨ f§¬ΧϊιW₯ŒDί'o₯w³ {`~ρό˜gάΤΡςπ3ΠgέR‰šν nu@°ku+cfΨΦ¦+ψ ΒΡ[ˆGLՎ'eTYkφ8Ώ:΄~ή΅Y³YΦω`lk.Ά©E¬«) x€j`ΝjZ[vώTΈySqxMK”Yu›*>§ν—Ÿ1XΰΐRε-rΈό1&™4Kλ*F±s{Άq£™&•Esδ‚]mΊξν$ξfT›=Q³>εvU‹ΑΞ¨³Zǐηή Cέ€@Μ[=kΑκ~h,Π fG»n!—ιΎΣ΄εΪeh½d–&zΆM4σ ΄Y:[³²ςΩΤΎ§b–¬ƒψ‘Ž3"Φ$6ίΏΧ Ί‹"ŽGpδΑ]P!Kvh˜ϋ­Χ°ˆΡΰΆέ Fφ\šςδ#· S±­^τΆ1…3ΦUBuΛoΛy—ΛujFζ7C€@̌ΐ}­)ϋΆΛρερ=Α‘ζe΅άΥ7U*؈ρSςaΚNo#Φe"ρ½ΆCOGς5ˆeF1kό'|-Ύ₯zN&- ƒά>i ςρ#8u7Φabi/ΥFπ!Yυ,iΥ*dΞ{oέ€Α[ΧΑ τΘύΌφ{0¨ΤΫ}a9@ pϊ³ΗΩ°Ϋjύ*ycχΛ;ZuQ«ϋμGά ϋ·ΔԈrύμΨΗΝOΰHT΄Z1ξγ ’¨nαXά°Eœf’(bρΤ1²3q₯:q±θΖpόnLeόvΰ@se½ώ+Δz7Μλ² γSi½CΧΡY½V›f='έ­ώ^£₯˜bdfO·½ 1gUN„μθRo₯ξ€ς$ή’ds04…ψы琗ϊjι#Εu½e†SW'p₯`ΡφΛ½gO` κ'τ P›τΑΩΡΆsΖKb ι—`ώlVκƒ~A£*Vg-ξ*Gɘ Oώ>ΞίI©‘OΡ δc Ίθm4 uγqΕΜB΄[°―λτ1IΞ:ύ%‰ΊY˜W+Σ­BXΡV­ΚwP([NXƒή€i’&UcΓφg΄έ±ϊβ9ψdΫ:Έ{_Ÿ# ₯_»‘)–)F™ΘJ`@Δ—―^mΒUφΈ—γ¬Ÿ²Τνď`3άΡCT[§άd!·BΪ€ςσρ}Њ΄yΑ  nwάΊs[¨κ:q φ§Χ\ΩuDΒLί­A† ²Υ?„ήτY$V%4 —ΜŽ£76YΏh XΠ ™έ6Œ\ Vžσ σdGθ£ξσΐΐβΑΌζ9θΏa•¦ „Ά…#Y^}RΆ23¨ υ¬8RVΏoQ‡ΆπΘ>]ΝΣΔδ+\·+XάP”fΈ Ž„ލhŽΌwWσJ…3‘¦<Κ`zC₯6…ϋ]ΚWΖ«Žpιθ‘Μ*wίΌ §ρG|θζ58}γšΗSΪf(-”Ι’ rαvLΕ¬Ωρh_ŽίΞ†AΏ΅K Λ•’‘ΞΒΌΕβΎšsš΄#ό@ξθΠ+NΨ5@ΪπG½CO4;n‰ω/$ύ8R‚ž‹ΉsOƒι˜ώSJӚΆ…βIλκ±ΈΧ₯-Ž‚Y*ι4ζœ  Έg~·ΛX‰€°Š(…οJΎΤι jφœq†΅-Ήr4A؍οτ₯χ όή8‚η€χ0J4ξς8ρ©αη> E]'©Χρ7tχ6FsΰΤ½±¬•ψȎ&―(“\™Ρo¨κqY+ΥρδώΎˆλŽΓ+8 <Žž'£nB”‡ίRz/ύ3α²d…"ι3BNι£ςψ¦QeΥ@ β6ΗGhΊωτ ՝zθ“"%LΖΜVυΡ,Π[¨ύ†°ρd¨₯μ΄-S &ΥdΛ=`#3O…Βg˜%MΟJμΞGW―MςˆΓΖΊΛαΠyωό8χ₯7h eG»ž²ΉŽYAάύ γVŒΪΗε ΔφCΥzn{όβ6XΞ[ακzλφί y|/oΪΰΎ±Ν‘ήdYΘ‘Ψk£'fΫγ+ιZŒς'7΄F}†³ω1¨‹ωVC#gδάj_–ˆFψ–ΦΡ²\£ς¦‚Π9YΗ B'%³V B»FτΓn?άo0‰·oο1+₯ρ°8s·PΟ @ ΎiζΦαχ`Mk!Œ¬Υ³ϋ ,Λ7\9‚Θξ Σ2ω?UkCο€rŠ!G@Ȝ6=|S£\G₯μΦ+ΰπΥ‹nϋς²KnbRνΖ¦…iξ»},ϊSέί‚ΖΨΏRuψ€L „VΗ₯8%7β# hyΘK†hθj@PσΖ7Δ°B₯ ΐ˜g¦–ΒΣί6„ήF£2dξ9‘`Gΰ‘,&άψΓϋΰμ““3Έωψ!@λŸΓ˜ΜώδνHπΕ­ZŠ`xR™²ΚΞζ•8}€–L#nβ…€S Jα2Έ.΅,Dh[eχυ+Ψ=βΩ5υ%lmμΎqΒΡΪιφγΗπΰιc— Wer-»‹fΘΕeŒέNRβΣΘ}’Σœε‡ΰΨnΰ>ϋ‹W― *’σ₯Ν- AΎσ²΄1Β ―σο•€e€@"}ŒyΘyf&Ξ~ώB38»ˆΌŽ[©&”ΟœΥ.y?\\\ρ^–‚  ΌψμI˜vN\»"ά6υH:‚χ‹”€ €²™]™ΚoŒK€K€K Iΐ@ΛγβύX‹fa‡n]‡PόmК()κ ’%@Ή¬9  z›Š½RΕύρs....6 ΨRΆΘ + MΖΞbΰΌ‹11½αϋθXƒŽ%OΡK/uδ6yrHvΧd:U#@DΕ ΣΩΜ€γΰΧ\\\ρ]ŽB| ηŸK€K€KΰŸ"”Ώ$———€‡ψ4άσΓ" IDATνKˆew΅Ζw8ΡΫ=ΣΒ ˆρͺQAΉqGTb ^$ “‘NŒ#Α(Ψ81J{Ep Ao|!vGDE"hD$'bŒŽœυ=ΏΏΚW«ΧΪ{ŸS§ͺ«N­§χ㿞ίzόχ9§ͺϊΜ΅ M@#Π4§3½!œϊhF θ ‘ ‘hF`D 7„.„F hήΊF hFzCθBhF θ ‘ ‘hF`D 7„.„F hήΊF hFzCθBhF θ ‘ ‘hF`D 7„.„F hήΊF hFzCθBhF θ ‘ ‘hF`D 7„.„F hήΊF hFzCθBhF θ ‘ ‘hF`D 7„.„F hήΊF hFzCΨ±Bxκ©§†?ύιOγλ υ†αΒ­v,§؁§Ÿ~z~Ε+^1œ9sfsE;*yl7„G}txγί8œ?ώΐΠίwί}Γη?ωα]οzΧπΨcXίqTπμ³Οχίπ•―|eΟ½[o½uΈrεΚήuŸ4§ίόζ7Γ-·ά2Bπ—ΏόexΩΛ^všαΘcΏΆe:{φμ΅•₯kŸωΜgf5ίόŸ7Όχή{ο>ή;οΌsΌΏΪΕχέίτb5S;›κ;ŽrΒ μWί50ύβΏx]mŸ‚ΐWΏϊΥqΠ#M9[EζoϋΫΰίύξws‹v—ΔπϊΪΧΎfw―]ΣpcoƒΨX2;ΫΠ}t\½ruχήŽCFΪ‡%όαΈφζ7Ώy|-α?(Í·Όε-U΅³ς[έΨ4δΩ¦Θ‡η‘Π5§#ΚTΧς‰άER‘󎫩8)h^π©ΒQΠ{ήσžq>}μc; s'ΖV7>&bψ.ω¨‡wΤ‡‰άQέaΖRι> ‰U±χύ“‹€dΆυIΐ7έtΣ8sΎπ…/Μ±žΪυ­~©όя~tΈtι°Jπμ—™ϊ’wυT;<ω»'W{ΓσΔOΙθ‹ΡΟ}ξsΊ½wdύςεΛΓwΎσα%/yΙπΊΧ½nΐ._>£“ŸΰΛΥsη΍2?όππ‰O|bΟ'Ύ¬ώα8όφ·ΏήϊΦ·wώχkύ$ςΏϊΥ―†wΌγΓ… †/ωΛΓ―ύλαψΗθ‹ΫήsΪNψς™ψΗΓ?ωΟIάΦ«_ύκ—Ÿώτ§ΓϋήχΎαΨ‹χλ_ϊπΜ3Ο «·ί£>ΜeΨyμό”ΕΫίώφαγΈyχΒiΜΓg?ϋΩα'?ωΙθσΟώσ‘lόη?ψsƒΌρΕq½ύοξΎϋξ½<3Βψυ―ύpΧ]wν[γΒkf ;υ)΅Μ=ά|σΝΓ{ίϋήQ_¬[ΥΉ€ΖΑωψ@j:‡μΖΏώυ―αΕ/~ρx‡ή»νΆΫlυωS―ε³ͺ7 ƒΙ~τ£Ρ7κζmo{ΫΎΊGτ?ώψγγμΘϊΩρκλ›ϋΝœ^ϋΪ׎ύšαξ6|ΎΝ­p'Uρς}ΣΤ=ο*τ₯υ*π½wάγ³sέs}ωΘGΖϋΨαΛVρθˆlφ‘•λπsωΝΣMζΛͺΈΛΊπ1“‘n‡sΩ"—ΓΆ_£XόθΊψ¨ Ώ|]η•ΏΒ“‘ψœWόψ!½9,τΞQό:~πƒ”ͺ}Gς±jΘ=›βηXω+~le±r/#pΜκ[θ¬jCίsΉoςoM ¨όι‘ŒTλQ†kτeTΥ$2«­}"O]f$Lͺudΐ3σ{ρ#OβτΊw9jr”φ³ŸνΩ]=°μsͺͺz›ͺQκ&«©~Ζ!Ν>ψͺž©ςΈ/ \lυ##%l‰Σj`†‰Χθ‰Eε…Dα`NΊ²’RXƒύ’S±ΕMΙύ‰η’AƒD~Θoξgϊό#2 ˆIM„ήXΰn ία•π*lςβZzε7|#ά°‹?\#— KpδžrKΑΛ.GbB'φχ•―sΟΙσ Ύ¬rŠωHς5²b¬Λw—Θ±Ž}δT7ψIH”‘.ΦBψ‘x”οΉZ¦ς‰όΈ ϊβSΩQM»η‘όΚ0ρz@GEͺ[xd›ζEΎžψΑ:>#²ψΌ”Ύτ₯/2―zΥ«ρ\ΛGΥn΄{ ^Υ¨j€ +’όΖwt“3ε^Η]ρ‘›˜₯‡I[ΫΌ xς[½-œ|©bρ¨Ωb”4€|' E`ΗfΤύLΞΰϊͺsμΚοl(UϊΐF~άHŠ y‘ΫΚ|ŸšžŒ€;ӁΚ/Ι±ξ*ή°YLj&πšZχ˜Ρ­Α†ύHŠŸœά—,/Š%Φ”ς…―±¦ΈV 4₯Θ}ˆΦsΧ$?w\Z+ Q2ͺΛΨOπ(—α~Υk¬)Ž§γ “ψ³Ό9ŸΞ©)ωœa―Ίtϋ’u?–β|ρβΕΡ^œS5ΰΈΚ6Η)jEqΉŒΧFΦ‹π Γ¬g―,Ηnλ η[ΫH²Κ2US/+κΦuV?Zγ¨X±SZ˜qΤw*qΈ«žΑΣλ΅Λ}xρΡkYύ9εSΤ9‡lΔw4ƒ\γz–ΠΛ_ώς‘‘GΩctΔzΪcX(ŸSψΠ#Β[5Š^'a=…2Ό2[KzνmzΎίλM΅¬δΤtUSΊκͺV 8Ώ’R%ߟPόΙr. •nΫΟUψΔZ‘όWRέ7­UG/α9e Τ<ή ςMO7S•a€οςQΊβqN·όŠCHz΄I 'έ§πW?Ή±—όπ£γ„ά\}hέqPάKκUΎIΖ}©Ξα]—Όώ+½Ί1@–j΅ž3¬… όδ‘Ογˆƒ˜|UΉtΉx.=ρbιΰS,Αω―ύλ.Ώόε/χ\Q?gXΕ{κZmδεšώp’­ͺŸ=χ` ϋ²ΧΆy½΅ AbI‚T„±τΤwl‘ =ΐ¨ΐRΡTIPQ.ρ;ς»βχᯍΙ}C~κεxΘ–1|pškα‹Ωu |Ψi#E­uŽSΊέ―ΜΆ― 'tr_MƐ!oψGσ‘§ͺ1m>U}dΎ ί*—ψIυ‚½©<²Fƒ―Kzb%φ9ύ^’#N0"&^`¦\²VΈ aE¬δ#zαQOιωuHφ<δρY>Lι“<φηθϋίώ¨σE/zΡ>VιX7Ÿš+ψ Nψ Υχd«ςW³άg€Έ.ŽUΖ·ι=α‚oKΙγΛκXƒ&>deϊΑ‡žTjθ;―τα#όβΕχu¨ͺMaΐϊΙξ’y³ϊÖㆇι&5 ΑŒύ¬ή*UΌŠ±šaZWνōFλΫ:N£ΎΠŠΏέΙ@r5ήΐ±ˆ6Sƒ$π\ζΦέoo<,Ξ£ακ~,-pΧ³Δό*NpΛHOΞΩ €ίνx.ͺ<Θ††B5dδΧάzτ{Ι³|Να«ut;©fό]™―ƒ Ÿ {=«i=Ώ.sΠsωZα–ιΦqΨ‰W>;ΦΤ―>σŸ³­«ΧΑ3Σ-Ύ©£Χ]δσ5Ξ3RύαCΥ‹.χαxάVΏΠζ·'Κj£]θ‘ά3RΟωF΅$&Ν0Νh'3™MξmeCP‚hΨ9RΡΓ“™‰>‘5"ͺAβ`z’tΊ\Ο‘σΟιƒW―ό«sΌ/<‘›"=5dΈ §"›[χaœόυ8Έ/šς«zšΡzτ+ψ²©ΑkLχΧˆθΤΠ«†―°σ C2ΰ“Υχ|Θχ₯G―Ω ϋX+SΉΐυTΥΩΠυ83ί•§Ή:ΙdΉ§^ͺκ[>ΗX‘­bb­"ύbεƒ>ΈE΅SΥΨΔ<(φ,ΟΒ PΌ±vέ™©˜αΦ™]ΧsΠσω Ύΐ‚вjJW‘$dΕ °Ld]Ζ8 Y_S2;θTςͺb€ΗI1b‡ΟΉ½‘܏lJ_<6thπψpΤξηΪ(αΟHΰ³7M₯/ 3Ÿ”ΡυΛηΚξœ_ΥΊr‰~|„πί˜•O1ŸΥζ"ΑY쬑_φό7rΉ/{¬G ΤΈΤ€|DXkΝλXHžwψ+’ΏΨvόΠ`sάΥΔθv©IωÚΛ`[kŽ5χ=―IΦDΚz9_—°,1:†ƒ―Zθ;&fM&+~D―՟BρΫϋj€~pςžφΠ;Ο?~π{W²ΓΡIρLa%YΟ‘t _λŽ=MMΔάJn“γ~Ο7Ρ°’Ρ€¨ ΘΥͺ#8*’&²’D°Fζάο{βζ’0·ξ>sFU#ΆWC!ϊ’)χΌ‰Παz8w9α‡Xτ xeE$^ω v4TΈΖχ(;•ι”οΎΙh£0‘©2z΄νΓM±ι(όbέθ~ΥZGw$=‹ˆ7ŸdΉ'‘c0ψ΅χΌς_ςsΗXλ`-ΌG{aΒολ²ΗΡe#ΦξΌΔξz¦Χ”χά\lZΗgχ“σHκΦΐXΑx½Β ΛMΤΑυκomνΩϊύο‹~t{ p{~ξg/ΥkNΒ+κΟ\ΟUλΒ¨ͺ}ι_ηΈίσu$—€£Ζ:œρ4χ½‘\Ž"°NΑ„ΐ’)XC_6ΰ#9™ΓΟ΅ρ —bDVEmταγ!+=Θ€ά‹rK|CxΝ5%yq»ψ –™Όθ¬Š—ψd·jΚ₯λ•} &όDvT\;Ρβρϋ:ŸσEz=—6‰ίΨ•ŸΘb'n€Ϊpΐ~]ΟΆͺZΖο xUάΗ·¬7%ΊΩ¬&έΦαGχ¦„?²‹ΝHΤ7vX[Η·¨gυΗ―ρWNyUD}‘Oωƒ=©ŒΘ³ηFΉΧ\ΰΪiŸUƒΨΜ{θŒxΛίͺ3]sχΆ²!Μ9Μuΐ>hq.ρOEYΙΝsΊΠΠΘ†ρIE‚A­!mθ'5“ζ·ή©d›ιAb9B5„)Hν’‡ΩtμΐΪΊ Rn§GV K}Ζw€'…mΌ;8Ιρί}Sήφά;φ‚ήπ+αήXlϊ\1ΎEΫvΌΉ·­»υν&Τ$›Α6ίΞίh€><W?έΈl0ϋλS‘cΏ!0Œυ.β—_Όeςβ0€§’ΓήxΓχΦyc &wehRχzψ’«wμ7ιΣiυ°4Žύ†@Ίi,ΎPρΟgΤGA|ΩC#•½£ˆ©m4KπKι9Кv­ώš«‘ΩΤ4;†•γΩsgΗ¦vΗBλp½!@ϊ²hΣŠ@o§5σw#Π4ή }Ω4ΐiE 7„ΣšωŽ»h€@oΎlFΰ΄"ΠΒiΝ|Ηέ4@@`kΒκ?άόρQύ+_ωΚαβΕ‹ΑT_7ž}φΩαΏψΕpφ?Ξn½pάά;ώ#œyχ»ί}¨>=υΤSΓεΛ—‡ηž{n΄sύχηΝ;T›»’œύϋsήτ¦75fIκAΕ‚_σίb\ωrέ_ε;¨–?ϊ7°ηq=*Œd‡ώΡλ°>ϊ“Γ!̎λoQ“KώΟ„γκŸ2}ΰίTΦ_t䷈)jώDοqZΑŸφ£~›ΏΥ”#ΐoΘφCŽώFvΘ =D/5-Cΐ›ϊΈn’ϊ›lΜΙγLΪTΘy£n‹ώ$οΊύOOf§ροi3―ώΞώq.ά£ςν(0RνφΖΌYVΓŸdώι]JΆ)iVVηΑf‘o_κ@ΒQ<=- YΙXχ>ι)ω4>‘ ³~GWWΩacδƒδF?TΥ(ο•γπPw6₯mdι@ΒQ<=- ’¦Ζ]Βο<Šaέwγ$ž;fΩΝIŒiΫ>F»2HΆύ:ϊxwOίΘwXΗaSZ³Šw£ ψ=Κ—Κ\σŠDSρXλ‹gxψreŠxRBF68ςŸΗΑE°&έΧΌ¦ή)Π„βΣF’²Oΰηoνy!Λ½MΙ1αγ6τ=όπΓ“κΙ€cΔ$*a£Γwdˆ\ΡEœΔΞύŒ2{s>fzβ=ςBΌΌ»Δwό‘ίαe]ΎOΕΛo2Š—Ψ§j›F܏©ζXΛΘkkΚWM6π›W¦;«Aκ¨"πE±ΛvζκΦσƒnκ=su/9πY7―δh*ό ™ԁκ_υΘ5±Εή՜ͺς?΅ξυn0Θζ–t€OΜ#~CθBžWVYέͺOŸΧ°_ΧNJΧFεη~ υΥΪ‰#πμΕΣΆ“>RJyW‰ΝˆβΝψΉθ¨ !γwΎhG»y&瑃bΝψΈGΦ₯)Ϋ$3# οΜ€Š΅Βά‰TΨn³λWόδRMD\^;ΔC\YΌψ•58χ*ŸΡS Βu1?ψe€˜ΰ›"pΟβ‹ΎnZƒMMιœγάΰ'ψˆ£ΚAφ$Όj`Λ¦Χƒ¬ Ά‚αTn©GΩςΨ°₯ϋœGB§ΦcLΝ όY(>κ3~¨fδ3L€žρψ].ΛQ΄]―½!H‰œΚ‚„GΒΊεɍ;Ί' yο e¦ζBfRβIHFK 4ŠόΑo-Σαχ„ rθ>°”Ύˆ ΧJ4ς*ndTH&nKrΨ#Ι‘—5'εUk™Υpu=ΥΉ*ϊρƒΒE9ιc<Žψ·dγΖ‰ΒA-ŒΈ/™,ΗK1ςζ’Œ:ω­z"6ω ΅κ¨XcήΕ?UƒΨαkΠϋˆu0,•OιGΕ‡Ύ©ξΡ)_X‹ρ郡,―ΨUέI/ΆΉΎΘezYWn]\Y'―cΏ―sβBέNΊΟϊ'ϊ”+―ΙΒΟKυͺϋ…i¬t{lκbVέ²Ξ΅“τΙr‹.^ΚC&η:ͺσύ(V\Ι}9ƒ«ΕΚΊe§t*Q荀Bƒgš²‡ί\‰rݒ͍σιœdMμ9&.“ ό’NxEλΘy~Όω2{ڜάGΩ\zDŸiXθθp\γΊϋη9‘_Y.9(FŽΕΤ Ql4σR’oSƒ„šχόJ·c₯{Υ+θφό:Ou²ό8ώΨv°ΜδΰΣ€#G1―¬kEμ–ΚΕά ›ͺV³uΟsސχΫσwž·Ί/Ε7a]ω(L#ΦŠΊπ>ΐžχ~VSς©:nΌ!Θ©deΘοgΙ`]Ί#‘,Μ‚TSEp’Žx­„Dΐα£ΐΠ›λ|Vΰπ8©(²Ψΰs}’“LU0π©hΌρ…clιε(ΜΟ©ΑŠ ΌΘMι…oŠ2»βχ†¬6wε¬Z—.?f6UƒS±drž'Ο»°‘IύΎϋΟηΙ\ ΊΌΫTlSu}Ρ΅lz=i£ϊžΪtΚ°Ίcζυ¦uŽΪΔ<Δ$½•?U¬κθ§l*Ÿ_sυ,ωΕ'beΎk£jΦg‰ηΞuΉ\›zήυΉœ0«°vήxΎρ† §ͺDΙΑώ¬Εψ₯)_Κπ皞 ψ$>γzŽΤˆ€°.UΕο:½Ρ’ώu€W!­3Θ$3…±Šβ)ͺ`<>Ιp”.ΎΌ#gρΕΆŠΩε–žϋ`ΘpUcw΄­k}νρΊ}bƒW΅F,™Οͺίu1Β–ς‚-‘°«όŸ―A­{Ž2¬Δ§ΨκΛ”>­qΜ†”χ­σκŒρ3‹S<―ξ π¨Β½Ί/=ΚΏχ֜Œdγ1ΓΔy²ι‘ ›e˜ΐ›ι“ίD«FΌΩqύ)ϊo-SNΑB‘hoΗΜγ!ξ©W|gWΩ‰χe·Β•ϋψM“OΩgΉΎ©Ξ8jΑ#Z‚ν”―Tπ@²―kΩ™;NΙΙΎη(κσœq.šλ/ρΕ£6Α©M(σYΎ:Ζ;“ρuΞ΅©Πη’%rŠΥλ‘ΒEz«ω%]Ž₯d¦ŽκΑlV\q³”-j±"z>ΟG₯O:$SεB|Υ±ž•ΔκώœSΪ ²ρdωŽY™ƒ_…αΕ"~­eΆΔ“§ŠΐΡ'ωΜ§hoΙΪDόTXjˆ%Ά*Μ€+ϊ²­k=IUJ΄KμͺhΈ¬ždΣλγ α“l‚£κ™:ΘμOΕP=έ"£œΪTƒ>l–ΔVω΄Δ¦j„ ͺκiι:|Κ=ΊDsz«X«ϋ›αƚbί£δ°I˜z\πLΙH‡fΌ_*}’ŽΥw'⫎mSNωξ›5H•,tςΆ?۝Υt€AWSyVΑϊ}Ő5œžΟ«+R±z²*^χ?ΓΉΏΛd˜HL|  _ΕVΩ†1“œ6—*žMοO=Iy<λ³ς~Ι&99FΆͺ+†G$Υ0υ‘¦­μGYΏžΒ[5‰Λ+v―A ;ͺt™©sι«b‘ξΈωMa…=aTε•|¨&o 7Ού—?1Vε§ΒŽψΐ>+qΖΘ&φ˜Qή>οΔηΗ쁄υ9¬½Fݟ9ΉΉuχ-;ίhC˜2ͺdnH\λKAt8©q½ ΄>5η’(ρX% >Or60TˆΨΞΦ£-§šFοΈh 'Ιd Šέ¬‰―Aƒο^Ψ¬)―UγβG”An)Νεjͺv°mIu“aδyς¦B^ωF!½.WΕ«X8’+ΦΊtUG5γΑld5¦SοNŠ1ή‡ΗgIŒUΨb/>*ŽX3›ΜΩƒŒTŸ`ΰ€Ψͺ‡Nωη€fBΤ'݊-Φ»ΦηŽy3Rr*>a"ζ…¬Ÿ’`ω5sΙ^L’Š‚€\/U›φTŒKSφψ‰'όσ¦B―†#Ά.Ί±#›UR€ ΎG}toJ"λΰ#™ˆ#λΊδd‹Ό¨Θδ?ΌN^άόD‘0αΎ~2Μ Tvόžλσs― ΏΟw~ZΒόQΜΚkЉ5ΕΚΊξ+ΦXςέεπ1ώζ'62ςZŽƒ%γχ”Ϋψtλ|Ž…bž«AΙ¬λz…GΟ?υ¦xΑΛ±Δ/ΙΉορ\ςδEuΕΡρ'μ(ηπΑΟ=zAχ±c…O>ρ)Θ ΫkˆuŸ3ΨυXΰy27œ\†sΕ&ωΑšSŒkyΥ.1Vϊ"VΘ’Cφ’λKh£ AF3§0ͺa+>)~l9­‰ίΘ 4xEz;*ήΌψβ‘b ΗθΆ΄»;ŸΞ)’u)ϊ*]™}ιž’a-ΓdΚwι«‘6.χMηΘx‘©pcCΚw?j2¦ύλΰΏωΚQώqi #ΙU‘K΅Šν,Ρ^ΌV`«’)‰)«Aa‡]eCχ}°)~Η’stǞW^§°Βrς-Σ[υ­τGμ©N²X…o”#oς#Ζ‚Ÿκ(Η5kIŸdΔγ˜κž§0‘O’sϊζΦέvu~}§TœΎ“€ΚkŠH<ΖQOΏ$˜λ8€₯KλΘI–{Ρ40Łήb%Η}|Rae6ΠΝ°C/IηHQψPœŸ­y|7η³Λΰ/ρV $›ψƊΏ±ƒv§†8<.‹½ 5œψ€ͺΌΛoŽŽ»jΉ wξ_Œ•ϋΔΚ+σq£)_±Η˜ΒΡcŠηθΖ― Wηu,–ΤΰTΌ7žλAΌ!ό"ο\ƒkUχλζ=ψ¨Xΐ§ˆY"_Υ,‘ͺ.ΰƒŸη[Β¨²Iύ˞bŸκ7jΛνH―z ?+RνJž£όŒ2sϊ4s§κ6κŒΧ[ϋ?•WΝΡtŠX}<3|θCVΝ6<ύτΣ§(ςaΰ>~Νk^3¬†ΪπΗ?ώq'ώίΥG+Γ₯K—†Υ {μ±S•ΟφzCx‹>[ˆρό-·ά2<σΜ3Γκ qΈxρβBΙέ`[}Ÿ2\½zuX=έ=τΠN΅‹1νDbŽ8ˆήŽπ]0χΔΥ'†ΫοΈ}Έηž{†x`BZαέwί=\Ύ|yX}”0<ω»'ɝ¦3gΌn>vξΊλ“ΰrϋxτ†p ž•|lrώόωΣκ°ϊi§αŽ;ξΨ‹u—>*"(}Ζωκ3νS“Wβmڏ@oϋρθ«Fΰ:΄!°Όσοξ»χΎαΒ­γ;©7xΗχΙωδθώ•+WNjνχθ a ΆŠF hvήv!‹C#Π4[@ 7„-€Ψ*F ΨzCΨ…,v @#ΠlήΆb«hF`θ a²Ψ14@#°zCΨˆ­’h]@ 7„]ΘbΗΠ4ΐθ a ΆŠF hvήv!‹C#Π4[@ 7„-€Ψ*F ΨzCΨ…,v @#ΠlήΆb«hF`θ a²Ψ14@#°zCΨˆ­’h]@ 7„]ΘbΗΠ4ΐθ a ΆŠF hvήv!‹C#Π4[@ 7„-€Ψ*F ΨzCΨ…,v @#ΠlήΆb«hF`ψFΣΗήΎΟdIENDB`‚uvicorn-0.27.1/docs/uvicorn.png000066400000000000000000015272721456166335300164450ustar00rootroot00000000000000‰PNG  IHDRΠΠΉWGœsRGBΞιYiTXtXML:com.adobe.xmp 1 LΒ'Y@IDATxμ½€dW}ε}ο‹;‡ΙA‰QD3€,K‹ΐ^Σ㈍½Όφ·„υ爽ͺaϋƒ΅‘Ϋx΅Ν‚ Fm0I­idP$₯QœΨ9V|ι~ηάκΐ1δξΣΤTΥ«χξ»χTkζχΜϋΏJΙ& ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€( ˆ’€(ptΠG§iEDQ@DQ@X! Ή+d¨2LQ@DQ@DQΰH¨8›6UΊΪ-T₯ψMDQ@DQ@~HEΧY_xΡ{~λΒ‹ήύŽ₯Άn­xK―εYDQ@DQ@)`˜}Φ—ύβ—:Ξ}ρυcη_ςΏ?{φ…½Ι~\1βFI^ˆ’€( ˆ’€( ˆ‹ έh³Ο/ΌβοΉμΚϚs.yΔyύΩ[–7zI yDQ@DQ@X‚θW^ϋΙOΏπ’Ώ2Όδƒζ+ώφσ/~ωOkRq*ΙFΛŒ( ˆ’ΐ3+ “gžYΩ+ ˆΛXαs4žφƒςο¬μ¨ΊΎ%ŽΎv|tφ[§Ώ 7Ί’ 3q£—ρ MD#P@Κ8xrͺ( œ’ ŒŒΒρ­7ΏejΓ™―Z-κ$­ΆxΥ–r«ΪΈΆ#Όβ’7½ώmχώΓ?ΖD»JΗVd§Gέ²‰’€( ˆJhω!D©ΐΘH%e”γΆ›oΊΑ/ΊwΥη›a.L’ήΥA:S=πΪΨΝΎωΏόε‡n4βF―Θ΄( ˆΟ¨€¬ΖυŒ²ΘNQ@X p1•ααττΛρά\kβξιΙύžφ§s2έΚάΎ *ηϋ·<1ϋδΫ<ς?QΘEΫμβ+B€( ˆ’€( ˆ’€(ποXr–O;νή~ΕΆ›ΏόΏίΞΉτOΝUρΩΉ/zorι%0―ΈτΓsΏω‚χno;wV€nτ’ς, ˆ’ΐ T@2Π+πK—!‹’ΐχxκ©ΟΈοΎwίQ/<οΰhγά©±½I+ΉυZΝ©Χ§Rεzω—…Χ|ϊŸ½|[«ηΫ―ωΐυ£F­•vF$ύ=1ε•( ˆ+D‰p¬/Z†) ˆΟ¦X©μΠg}ςEΕΤΫ}‡η;ηDI’”}ΗλμοTOνyΔ¬-tdΧ<χ§.쫝ϋ¦ ΧιK~ςΟΩb“+#•δΩZ—ΟDQ@–—2‰py}Ÿ2Q@x^ h£*J=ςΘλ ΕΞkKkχωωΌΧlL$΅±=ͺΏ³_œšsΛ/X›žϋo.ͺΤύ³κ₯γΦϋ_ψ±s Οt£ςηισ^NDQΰΤS@ώΐ?υΎ3ι±( *«r<πΝ7?yζy]Wφφw<φ¬φζηM>9τ²κρ…σϊ£Bgm!rφ€F.Hυ‹™> ύμρΪή$ρœΣ½°k6ύl6Ά/ΌC©ν,s'ΕσώδDQ@Nnδψ“ϋϋ‘ή‰’ΐ RKy;\ΞΫ^~έPΟλ:/ύ™Ώξ@6sώ“&]λϋ}ξκžA΅wβ)₯\WyažB•ΤGΏφ‚3Χ½ωӟ~Σcν‹}‚ΎBΉ¬( ˆΗLθc&­4, ˆΛAƒH‡F€ci,λΦ½3ΏΆoυ:ί-τxω¬ΌvŸ.„«΄φϊM–œςΌ’ξ[SΪϋ•~#–߁?ceΡ•%νδYDQ@DQ`Ε(`4\©<οJ‡ηoέΊS`Y1?32PQ@XΞ ˆ½œΏ]›( UΠx˜­—}π²rWχηLOŽ5› £«Φm:8[Ÿή_ {1«π€S«νοπΊ&ΖΗΏ3σΨc•ω£Ϊ iLDQΰ„+ nΘ €’€(pͺ(0²uΔQ#*yϊΰ=ύι™ŎςΐΜ|γΌ\θ)Ώ*΅° δ‘γdVMΞ?άtœhώά ώ|άυ‚ƒYRΟζ»ο{ίούΩΆm¨‰Χžd(•:N•/_ϊ) ˆ’ΐχ) ύ}bΘKQ@ž]­ψxDωΎu™rT\«*ΧwΤξέf_H“FΓ nμQSΎvΊςΕ ΠqΖ@”8ΣcΟu½‚šoΞξέΆmΗϋΠυOΰ"Θ& ˆ’ΐ©¨€,€r*~kgQ@8! τχ_g‘·Ψqzβε δŠ=ϋ\“ΜkΥΘ|ψύ}ƒΑlΓ ςk½…Z‡39ΩRΣcJgΦ*ΤΚ/zΌ=©°"ρΉς ΚEEQ@8: ΘβGGGiEVž0 † —_~Nal.μX»αΜr_ΩοΊηΎou+γη}' ;»νJ3]ωBίͺΤΤΎQ.Όγφν»Ω]·ξκtλΦΆhΧ]§ΜŽt€w¨C₯σVžž2bQ@DQ@D•ͺΐε—lΰΏRΗ/γDQ`Ή+ τr†e|’€(p¬Xόσ“©Žzhh—~πΑsά\ξ€iΦ7MS₯Ώ°ξτ S]έυoίχΰόΥεš™K_ώ‚ι―άpλΜ=·=4yΥελη_ϊͺ &ΎΥt¦ηΧ7ΜΎΟ7ΡLfςΉΡ’λ|saχ[ΏsΗ―>l‡8t£«†·/E7jΊά―&YΰLM­)V*Χž$ΕόΝΘΠEQ@x Θ?>WΕδxQ@Ž@οΟ/oέϊ…7ŒNμ~Sœ.\Zθθ8}2Ž£ͺΣ³ͺUšaOΧ~§»gΧ| ο,υwή₯άΰώoώα §]>††‡‰‘!=²Cej±lή‘Οε…( ˆ’ΐ1Q@ϊ˜Θ*Š’€(πl Ψ’tŒ^ΨψΕKΟygΟΣυžώ‹~zkoM<ϊ­ΡιΎF~όσŸύΒ3΅rρέΖoΎwXοήύΐη7biΓνi₯%ΦρΒΘQ@ŽΠGWOiMDΓV`hΘΈ;τΘH%9ομwΏ22fέTlYσβ³½΅ot†ί•$ξκio¨χvn(^ω‚ΑάBkΐΉωžbΰ*ί]Υ?·ΰŸκα_t@–‘R…c~©2$Q@8Υ`ά’βER†φšόΏοΰЍlW6Q@D#Q@θ#QOΞDQΰX+€‰€[G”Σί?l†‡·§ώr›ξ3]υΡρ:ݍυtt·!LΟΜΗΝ΅ε4+ΆŒ'˜qŠεοx{σ}·ζ³»Άo†P/zx»ώ‘Άώ}Ϋς^DQΰ™€~f]d―( ˆ'‘\[›5oΉqC‘±j³)Η›«ύ=dAtφκgϋ=₯Υsέ‘Κ―)¨ ω@ d‘pCΥΚbUφC•ωy•i­κiτ©¨ώ;rαζ[λp‡΅@τIτ%KWDQΰRΐ;…ϊ*]DQ`e*PΩ‘Q’N₯SΈΪνmάκ 8I UŠ:ΠΝ֜J'φ˜Π_•šΎšmΦtήutΑKTή5JΗ-5Od½^Nχ—:Ξλ.vyΓwGίω·Zί ½2œdΤ’€(pδ H»#ΧPZDQΰΨ*€U+₯Η>ύσwm’”Ί[SžEQ@XR@zI yDQΰV`i"ΰ/"Nτ ό^ε’€(pR* }R~-)Q@ž‡€hΕΙ7ήlΏΰ5Νζη/\x\ύΪ¦ξ€³Œ•WfkΞμΌRcqλ*ε'© γTΟ8₯’™lΤ™ΩPΝΔ5™qΦoάθNΝΜ ]΄±λŸnD&z»d’ŸΗ—"§ˆ’ΐrT@z9~«2&Q@XΉ ,A4Ψφέ'ίωκ`ώ]ο:³«α ₯²I₯žšSs~Ιh•§K:οT†Ίi>₯Ώ”ίpΥD–¨Gλcψ܏ΞvΚ ½θςuλϊwW*GΆrΕ•‘‹’€(ΠV@V"”ŸQ@–“t ηΐĝηnΎΎ7o.9ΎR ίPΥΉIΣh*7v°ΈJ^ΧΓ\:ε9³•~xΖS·΄:r™tϊo‹ΝO}—zAxήΕ;^ΦΥΥ7·s§q―»ξ:—u£Ωφr’LΖ" ˆ’€( ˆ’€( X†n42o3ζn³πτ33sαΈ1>2gίΏ`>dŒ½£οrΡaϊπŽ>΅2Έa@@\ώΕφΤώ₯χ’ΐQU@ώ@8ͺrJc’€( œ\ tωηWUOΧgΚFu‡U“μ‰ζ|VΚ₯*k ¨Ρj_Ε*I|'ͺ{εr9x­ςυkΏςΰ›Χw¬~\yναyYԌ6+1B+³η+T©λ²Ηw»«τ ΌQD§+ΰΗE†( ˆΟ’€Lyqδ#Q@–“Cj(γΐ|Ώώ@1rξ{ΡΊΣJ 3ΥΦ“ϋφΕcS‰[­₯…8C ŽΠtΎ³.—σΆτ―υΊŠE/žgŽΧ\h9nά4:©¦£Fϊΐ\νκιΩι»Μ~s-α™½<4j»ΜΣΡujt.sόŽ?6ί»c˘‰^c”Qˆ’ΐσU@"ΟW99ODSP.8WγΙ„ΣMυ±κΡφΫφŽ©Η#“<Ωh:XPΟgZƒ;̜Ί²―«T3ToWΡΤk-/4LXOL=,˜=ΝFrΆ2Αε‰4ωΉM›ΚŸAΫqΚ–»CνζζαΗΆ—omΗαΰ€―fηA_vΙ/-}~ ~ύeQ@8J Θ]τQRšDQΰTP`ž Ρ­ήΌώΩϊΒΔoχχtM§]%Ο)NΑ1ϊ,ίdgεΌδ’Ξξδͺυ’΅~š&ρl6S«λ$_Τ^±Η)Ίέ,π~rύϊάΉƒΞwχΟϋsNιΣί؝ΌπΜ…Wާ€Z[Ίο(]³ν>·’?V­ηP·Ζη±βLωΝ½χΎγKΝqίQ—4# ˆGIeςOmGI iFD Όi«s Ξ«ίΙ)3<θ6m]θύTg€ΆΰγΐψΖ Κj p•“v©Η‹M΅`<3;ۜνυ:Ζς…άήΞzs_ZίγώΎ¦Lw„ͺΪkάZΘθΨ‹''šcΒ5/i_?―o’}·€όπΎm*K·΅FΗ2Ηq<Ψι©ͺE 1π˜ζb51Œ΄8§Κ„Βη%΄œ$ œβ H„γ₯ϋ’€( ‰¬εΌύϋ&Εύ«1§ί>ή:},ͺ\ΰϊ^\pc­Ή':KγOϋjτΫž:pΓOož=άkHνΏtJI€ƒν³mσDϊΫjόΐWυKΦ?@wX?ΟeΗ΅wΟS··5g§SΗupC€U£fšοtU΅ϊNύς-7˜;=½mΫ²˜4yΈί§' ˆm ε'AD'Ž\w3r4˜ϊγ6ΧΦΣ³6ηœζSsf½”_υρω.ΧwΝ+7”²΅Zνσ³ψ^5θοά>@y uΡۏ~υ NθCv#3wΨΗ8œ©Ž]άύš‹ηjSληX›z©ζNΈΟΎΉ΅13ž9ΪqtΰΑΪvT΅ŒηψΖΟ”JΞQ/}Α΅c#Λ›―π…dψ+Pθψ₯ːEQ@ψ θ ι]ΓΚόάω—œ5Yη|΅ξ„₯ώG΅φ[Σ΅M¦•Φ]›Z}nήΟmινBMdG=YMΤΓυ–ͺ&‰:»Ώ¬ΞΘyͺ3©«\σ`Χ-Scq₯ouπΝ%wχG\ϋ9ο&Μc3ζώΡ΅ΠxHωžζθθΏήYžωΙ­[·ρζν<σa΄ΎΤ?σ΅ΗnUΎ»­1?›:ž‹ Lt†5.t+-tτΉΩΜμ§άk/ϊΉ%θ>ŒζεQ@XF Θ$ΒeτeΚPDQ@8B ΥμΖ!•‘ψσΎκψάοu”K1gš- ³tz.yυFSίΌΙΙrύN3λtλI^Ν'σ“ΖΔxVgS_΅‰κt²gr:™›FξA]ν7“;nΏει?Μ.N.l篏°―J ƒήΉ9ώΚρzκ’\o«·6Χ~”ΧR##.sΚ‡sϋ`δΞΡ—(7άښ_@φΩwUŠKΔh“ UdχάΖδLκ”zΦ|ε‘WΣU— …‡£°# ,/λ–ε5d( ˆ’ΐ³)°δΔήDσ¬R1»-«Ο4Ν¦£\ίΓZ|Nlt.ΘτκŽ’JM¦™ŽΤh#Sq”ͺ<κΰυ`ύΆRՍwk‚ΤΝuικBΙΩ³όƒη^Ήξ·][λ?[?~άgθ§]ΈΕά3VQiv]ul,A ΪΦnπUuώ}ϊoι˜ΫΦbnΪάϊδM*π©ΧfRφ³‰±fJ†βaR€4Ÿρ*—/Ί:Mvι†{‘R»R54„β‡οvΈώΘη’€(pr+ τΙύύHοDQ@8ξ ,9Εœ–{€Y»js<~ξ†UΉ-ΕΠ9³§…Ž6I#5Qu+\k&™ςj-“.4ρˆ²$ΒΊίqœψ™ILk«ΔQζ₯“ΡζU=ΏΉλkOWθΪ’Μέ‘ύ³N9·zύrΥ@…ŒLi“ΏΉo’ς…ί5·>φ6Œ%1wΩD\šthώmτ2εθ«3S™“(ΧDpS4Ζgπೊp‘ΘΈυ™ΉTηΛηdaςv;aqΗΘq-Ϋχlγ‘ΟDQΰΨ+ τ±ΧX ˆ’ΐ)©ΐRΎΧΌ·_…›ώLeϊ—”StΖφO«ϊ|]…ρΌXέi"“W{Vυ\+S]₯@­θP…"mh§+ε<•šΨ3§¦UzbbαηΉvν§X+zϋσ―–6FώyΧx)Ϋ7σ8.6Ј(Ι’‡ν¬]7Λ•ΊΑ¨ιmgΣ³9Ρ‡ϊ«ή„(Θ5΅9ΈΟΆςZe‚:EωΘπ†0](Τg|?0A«aςβ9κυηξ{>0XWπΒ&χ§δtZX! Ή°B„’aŠ’€(°°ω^–‰[}Ρ„ξιωΥΡυbψ7t• δ‹ω…BWGκBΑθ3Φ—³3ϊύΉ3ϊΓΗ έαΧU·χͺΣοͺ«γ-ͺό΄κοze_%ύεKΊΊŸb Έ‘‘!֊φ°dήη€οπpϋο―ͺ9OΉz ibγζM~&Y§qμDΥYPoψχ櫏Ώ»SωαeΖΑσ-{/S™su}f:sŒr3D7θ:›όnp Ήμ₯v1uqu#ψε(‰ώ'a^mω‘yk»Θ oμx9fτ―q);n;Ω‘ΠΌτ ΤĞΣ>:ηQ³η¦ΥsVDΓQ@ώ'<•δQ@V°‹ΐF.Ά73nVΑŠPa=°³μά|]•‚I|:υύΗ-8ΟΈŽ]Δδ0mηŸοϋ― Ν?Gμ"ΣzΚ‚oxΣ,ΛraθΈ~0₯’δeϊκ³Yζ₯k,½7Ÿίu“ςύkj΅ΩTΗΝΝ`bΓ \[„ΓšΔψqΧQΪslΊΠ3€ϋσύͺΊ”ο^ԌO8FδΩ7³Ϋ„κ 4χ7kuΖ™J_sfλΩΞ Xγ„]A¦„.Žυ³ι%Ÿ‰G[Y‰πh+*ν‰’€(°Μ!iˆΪEQΈpI’τ(φρρ›ΉϋnߌŽφ©b±_yΉnΥΜT1ιQΊΠ―κͺ šiΚΉN:ΣΘLζΟxEoxΰ­όαo‘ݘΰi7!ox˜}B4$z™ςP§i³,9ηpβ#XB°Υj¦ΧλΕ›/šΟ}ηεϊυηΡΕeθCπ|+²Ο­…«λσ3™γ"ϋΑ†Π η2Ά‘¦Q ³'Ϋ—ΰξΕ>Z6:`§k׍».RCΆι’fK7Ϊ|{rMŠNσ<οτ$Rgΐαή€fϊ½Μ di3?~Ού……Ϋ[&ξθSξtM=ρ-h‡«::γθν7τχsΑ£A‘πHί`ω)}¦ώΐ†nόϋό°`ΗΙ& ˆG¨€ύ3ΰېΣEQ@V‹ mΤLtŽ ƒ_PΝzfSΡΒ*ro²ΠμΞSό’£P©CΐzΉ₯ζπWΞlM©"ž=‡#‘Ηλ.ΜΏKύ‡&Τ―ο?«ψJYδV~ΔB(²™¦k»χΡG[ή؈™Γ‚ΝhΞNψ³•3Βψ•₯iR(uŽξάχΠΜ«ΦΝ₯ Ÿ[°j92ΨζfdŸš…ιΙw.νfή+Τ}Θ{F[Ό… ΩγšΔοp ]Τ»v Ύ‚eϊWΉj‘ϊϋϊ›ί‹ώ…κ±ϊUo½TeΙes΅ΖEΥZu³£Όb)WBμE£€t¬"”ΖK£HiLTΜ0 2¨'ˆ‡`΅•ΰϊQ‚χ(gPŠ:Μ*"O7ͺ™_*ν)υ”θιοΌm Pωμ]Γίώώ,ω"L/Aό ϊΙ”‘ŠΗOώY ›( ˆ’€(pΨ `ΉŸϊ•ί€ΫϋM50Έ^Mμ$„QΎN±€]3 ¦ΖρΤΕΘLŒΉ„υj†Γ3εη4ΚέεΤΣc *μρΥͺu½―ςzzΚQw+3Ÿπυ―ώΓ™zΎŠ­|_ld©ƒΈ~{ωξΫGΟ‹f'ξO Ά¬_GΘεAόΝ‚/vpΓS%IΉ«ΧK«΅Οy―ΫςSζC¨Μρ•¨/νΎTεΌ;ͺυ9 ΚqL ‡σL³8q•=πΕX‡γ{ˆoƒWω€­οΟχ•—*Τ ‰?οωΛZirfΤ‘Z­HU UmFθCœ!“±²‹{€­˜}Φ>FθO˜·F»tΤ#Lΐ„ynjυσ1b»γ;Ϊ-„.Z•P+°Τ2‚i€Ί½pWY7AπΟΑ–ΰN;fφ™i8βR^oIyŽ’ΠGQLiJD•’ΐ!ˆ=πψ•o¦mŒV\―ϋZ‡:n9¨dιΉ¦Q ˆβ»ž `㦀D,=’ΊΊrjΟl€€ΕΦ+9ΠH²ΨwӞΣ6ω–ͺ;ίΧ­šξΥσ„υΕ8Δ!i±―ΎkτΧA©Ο"μ8˜”‡C𛋨νβ”“ρό‰Χψ0Iγ΁վš ~έΩΏΕ[ŸΉοKAwΟΥ Θ>{Ύηf(]Η‡!Dγ<βC1$1΄΄·ma€3σΟύφ‡gkxc\₯pΆQ‘F;ŽNκp™λ„DŽ²Ρ™NQ+›;AM8ϋƒ™5#'p‘qσΛΩ60G±Vk©\hL”TΧ‘oLΛ‰<“/‡Ζ/^w‘€ΊœP5ηͺJΗϊξΌ~,έOv\ΑLΊ€4EM8Κ @eA₯9Q@VЇ2Δœ­Z…/Β}>}bκ@κ;.@Πwj‘Ρ ‰Šρ7M!ο«ξ²―ζ&„†SΝIoϋ"SΛf’™™έXœλn‚[XwΊšKj»›\=ύΕžΌξΊλHΡΔc»*―wλΣUΎώ Πkš3ψŸxX±mD/UΣΠ1ΐΨ¨Έsp zξνͺθοΉ>Π¨£ZκΦ)@,‰;mΖ¨ZGp6H` Ύ±αΰΕmŒΓΊΑXαΧΰ΅8αagTΌ6@εΤΝ‡N±;οθΐWM΄Υ¨ΕΈ™h/4!ͺcΨ<g· sίwTˆγiΰši~7 lθGKΡξ0PΪepούb€#$¨Τ‡κΧ9πΊΧJέ’›Χω ΗΧλ£EΧϋXQ'•Ώςτ=μϋGΎδ{ΩDQΰω+ΐI²‰’€( ˆΟY›FL@―ΡWε;/ΛΊώ2—_υ†&b ΕΥ‘ “=yοXsެΆιΓ­EΆ†±v: έΚ΅€ψC˜sΤΨΔ€ΙΆ¬­ΟO==ΨΥ;SΥΦ·U*+uπ± }`TΠ!LeT‘Θ’Ζ₯N↉k#ΌŽd~˜π¬ι"ΣΖό…σ›z΅ΙƒYš₯ξo >Pι8γA·—WC3Ψ ηWΫh΅M† ™Ζ¨·ΰŽ‹ΣΫ lάδ5bp•ρ±zΚ`‚ά½&tάψΒ`ο•=zn©3ΖμτΤπV³XέΈˆΏΈwΎι‰-UߍlΦ ^Π("*$c& _kIƒ0νrά‹yfB)mhΖ&rΉPΥ1‰ΟŒZf3Ό€dΌ@<λBšyΟ‘L&瑨Š‘<8λθ ‹ΆpΧc]Ή ͺςΡ„ε:rΜΝz„lbDX¬fΘLŒz6Χv’Ρ¨ pqN‚vjσ-Uε9p·Q^O)\Η }εCΐ4’€g vBZήΘICΫ0uTˆ;ƒ zsΎfΌ9”<1™·±³}J&r~ψή/έωΝΏΨ^ΩI>šΒΛ& <μŸ%Οt9SDQ@ “ZglΫ½η+kτͺς… T5ΞVϋϋ8ι.kέ…p?ΠqΟΎΉκΣgo]΅gιψΓՐ °ŒE=α “ίŽ,ΘίΦ¦¦‘`0n†Jΐx₯Oζf[B0œ_ eΓΞΨγ‡ΨώΪ ‹rmwœωf»Ρ]ζߎ<‡;πjL[·—™hξCΏ•“G›Ž0φΔΈNŸš‘MFάpΊΤό,†£ΜI‚)έhμΓΨ ¬ΨΒΛ΄c >*zΈ€γ2Ψ ΐv HˆrQΓX….΄‡9špΈΡm,…xΈ#ež°tZf« ‚3]k¨°eTJ{„ΝVŠΕ ½U=Π(½Υ§λͺ³oΕ βFSΩDη‘€ύ³αyœ'§ˆ’€( ˆ?€ΐβΜ,/α賴Γ|αξ‚κ?»¬άΉ.K*0j.κB€Ή6mŸ Ό.Po/³3λΊT³…Zx­r£Ωθ0qΦ‹εΊ±ˆ η$Fα<3‡Ρ^‰{-'£N4WdΊ%pρΆ ɌuΌAΣ6ΛlΟb\‚n3ΟiΣ²τ|ρž1{²7β:D.N1AΩNV$€Σ%F'PΞΟ:Ωό<Αωιβƒ―YΥΓΗω(ˆmaš~tŠΧ„πβάA `&<‡ε<*~ ^Ϊm μH±Ζ: *‚Δ.ΪΕ€ΕΘ41A1VE'§t=S9\’g\Ο‘t`­a h~ £Σ υΠ™χ—ϋκΑ9Ϋ·U1v;)sι{‘gQ@ψρ πΩDQ@D£’™Ο6΄sWQeε7Βξ@ζn₯“>|£|―Ϊ ,ͺZ΅£ΥjL¦σaΞχ΅oyΰ €„βX΄†‹¨©Œύ֐br@Ρd DΔμΔA'R ’­UŒNšν)¬όf˜9f™0ΛΕQl@Ϊh6ίv…A ζvκ"φۊhŒπΜω†ά΅ +ΑˆΗ˜πG7™n5³-8ΐ(Їk΅'}&Μΰy}±n‹υ’iΰ71Α°Ι‰ƒ„~@9㱍€]ΚΑm¦o­U ηV[θ c¬CJ& ₯ΞoΦyG‘δ©jλZsΆXœάN'šΗ;pw™f&C°B!n0]_ξGW^³eΦΌΆΐφ Χ8Τ^ΘΒ:†sX¨B€f;μ‡fω;V+L{€eτΪΰf ΐ§θ΄­3 x6ΘY;˜θΨΒέερ|ΔEPήέU!Ε45¨χn4‘ Y5η# Ν!zω*) (ΖνΖπκΡέ‰κdQμ8G―Νάόδοv_½ωz4ΙρΚ³σ½l’€(πΜ ΰ7ΩDQ@D£«€©T°\v%3_}δύͺ£σΝι‰(ŒΙgΔNy±έbD1π Υbp²μέd Ύψœοικ²ή2^5Ϋ^Ψ³H€pvΫυš?²Ÿ΅dD˜ωε68<‹lˆ΄kAΊν@ ΐk¬ιl'μ 5’y†ύŒ}Fπ3‘ydΐ± ˜ΆΌo›δ°Ήh‹ελZxΝ άG莘…Ζ Β΅ 9yPΟkΓ{Ζθ£!Θ<§Θ?Σ‰8ΙηϊoάO@:L,ζύhmiΫϊ—΅ΠŽΕ:1jp8ΟΞvˆkzp’ιFϋΘXw•ηΈC@υ¦υ›°yτ‰ω'&ή²κ—/¨-• D7dD‘ΐ‘?‡~Δη²[DQ@xΞ ΐΙΤjhΊ‚[ϋ„κοωωϊΤζΎaEnPX³ί£aP##΄ˆ™/Άαyρ}ЍEP΄οΫ~-‘Ϋζr ΄ŒYΨ¬3vνDB&f¬“mmZλάpΡEVξΰq<†@Λ]Όgθ2·ΐ) ΧΔr± ΫθS` l;8Χf Ό„“ρΰ π‘ν+a˜%ό˜gF™k[.όςZuΒ5 ™Ω£ΐuΫ²‡Ι.`Ή‰‰‚ Xκ<7shšF=άgΊΦ€l:ΨΜE£ 6Ζ€ΨHΖΦpψqMΖ8 ڍΠ‹ͺ!•]oβu¦ς8ΦHcδ¦PΣU«ΌV³uw”ΔΫ»^ΉιIV?ΡzZMžIφŸ>Οτ‰μDQ@Ž@ Ρ€Ιαa ΌθKA_ΟO4&Η”€ζΜ9΄Œ ’³}ΟL3'M%^Œ)ΰ•@lα‡:Μh Y Ιl@Κγ-€γ5νe,{έ.OGΘάrr³ΗtŒqͺέ΅θŒ½&Αœyi~ΞJη·hq{r"ΑšΜξα3¬τhm·m‰s„²sΜA³yf£ΩΏo˜πˆ9.œG·έ‚.±Υ@'8Ζ 0OG܎ΗςΒ4υhα<ޱΟνΒ*8°ŒEWpœΖΡovŒNwd"ΈƁ«ΑyFz­“D9ΘMkτΟΑ΅σ8'Hηp^G'b"ŽIΚ~ΙCDε@£‘ uΌrννΠD&ڟωMψaπ§l’€( ˆ’ΐΡW0hԎJ es&ϊT‚ψVΎάν‘κ(΄ΈΧ€Ε — Š}tTAœΜΣ•M‰0ΫΞ-€šΥ+l©8:Ξxp"'δ1Μ]eš­lξ²A쁟1?άΔΉŒ>΄ Ο|€)mF™Ÿ³­˜mDA²ΚAŒBgN•ΊσͺΨΐ&όK §ό`Ο‡&όβάeF4ΒmœIε–ΰŽΏHV`$Qψ σέΐΫX,%AD‚₯ξμ2βh‡Q ,"μkl#τ)ΓΈl€„}ΐηŒ`pήPδy-Σπφ³“‚ΞΚΖ΅Ρ7ΜvτΏdhκd3άg€0ήcEB υ>*w°’ γΟM)?ΕBœΗΙ…ξH<<|< h₯ M<άΐdΨ:λΐΊβ]^žΞφ»τOlϊκiP[mέΚEqEΩDQ@ξ*εg@DQΰ˜*@xfeŽkΞSiσ?€,ζ@₯)iΩ^»™ žΆξ-£„Zf›9“μθG€ΡN₯kμ£ΤWύγ€<ξp,(.2€pJ·šΆυPρ7^ŒΟκ8―Ιx]nΆλpiΖ9X»Ή…sͺΈ2iΡA`λ‚.™ƒF€yΔ!09 •q…AτΗA&™«Ϊ*ŒpΰxVω KΝ Y²Ž Μ ‘όŒQΆGHfΖ™5oX„ΗΈό ΗP‘ΰ·€11¦"ΖQΔg!Άoψœχt홏1©±…¬3]o.Κ’y(‡η`Qτ;T³^Š›ϋ@•ƒϋCρ'ŠšfΊ6‡₯#σο1#{n1·MmΡΫΆ‘4΅GοďW6Q`…+ ¬πΎ( ˆΗK€—ΝԚ/>t±*nMš΅rΤj8’Œ X'˜πK\Ϋ~ΰ5ΈΠ‚.Χv6˜`ιa)m@%κ › 8ΐt™Œ@–ΰΙ†ΈΤ5sΗœιπIˆLΪ1ŽKAΜ1{€cΎζgŒagŒHj= h-ˆQ {θS .3%δΠO\7ƒŽE]¬cΝI6vB%ˆϊ θS†γ™sn‘vŒh‹γΑBΦ&•ΣωΆωkΌ&„³Κ‡vžƒΤ‹ΛκxxaγςΛ0j׏΅‹ΕTΙ@œS1d¨ρL`Gχmό#φΐ5c/h½ƒ.θOΠήƒ )`{…RγΖbαφf&Š===n˜σκ₯Žχγ’Π•'Πm΅Έ8ΊΙΦdVžΠ+ο;—‹’€(pΒ8Ρ_yόΥpcΏœΆκ^+j!ώ ΒΜYψΓίLΦišΡ &”ZΈE―ρeέΰΠ₯Ε;TΕS ,>’Βuefώ₯†]Φ%&ΰς8Β¨‚ΐ5ΞΟτOΉά6'ψΉ¨Oν Μl3—Ν†ŒZζ5ρ €2ΑQΐoy@y ׈;lƒπŒ6Γ€Λl·gφυ£ι–Χi’ρΌHO΄sΡ€ζϊAς\ͺφΑr>b#μoΩzΛ`b Ώ‘3ππ±.·ˆf5L(¬βϊsˆ$xΑΫ,5έε0ΜΥ 1#‘ τίUε\^ihΤdά„ΰΟ»΄λ㎑ u¦CL2́sπZtψqC’ωNš/…ξϊΑά€$7όΠt+ϊ›³^½~?Z@֍vuΟ*ij"ΫΚPΘ& ˆ’€( ?AτMoGLΰoZΥΩBŠ:sŽbЌtΰo¦ΪhΪv -LξHΘ„\ώ @mΦ°Ϊ@1Δ¨asγ3ΈΜΘΘaΊ‚7Ρθ–ϊx>γ< u©ν’%Ό&a θ4€O00ΐ΅“ayƒ-ˆ§y8ΪΔx ¦£Λ.p#Ό£φΊcFCj5LάgRˆšΞΜe³/ œΛ<Άpΐ΅†ίΚŒoΠ΅Vˆ΄Π6' Ί*8'LLD) ¦ΖQ :„Σμ¨ΐp /P άrxΏΝΘ dy†c¨Vxd–ΫΓ5cΈΦ ρŽ=kŒ•8p^;ΘwϋΘrϋpηsΩq—Zε=ƒ(JΦY.Έεr§Ϊ;S›N ₯‹ƒ½½ΰ‚ΰ.+~#L€™8˜^Ež—­Kο/ΫΚΐDQ@N>Μ‡Œ―ίͺcsσ»‘ΉΈΈ^[Ȝψ  δ_LΜ.7θ”›˜νΧΠq"^ ~eμ‚™d0gΠ α3€¬ΖaΑ“ w•%ί\­ η5€#L€e•ζ‘Y|ikΧbF;8 ΫI‹. Ύ―*"6bέΒ'ΪΖ΅SΪΉ€PNώγΒ&Ά„Nl`R^­όΡ Όχ06B<@Μ:Οx —K@O€_˜·šΘ"£V3ΐ7@ΌΒNbtYΈ7 Hi3ΣλͺkDΆŒΥ”ξδ°° šp^‹[X!±Μ† ΐ1vgs"‘kP?ΊΡ)·ymB8ϊjƒΙZ¨μaep,NpΗω΄α9.ό2˜ ™¦aθυ­_­ς]>@>ΈλΐTkψΐXύσΏxνΐnήήŒή ύk„i~6³τ™<‹§ΎΈ—MDQ@8~ ˜ ²Π„η/?τΫͺΨuq}ς@κ0¨lmίΆΫ̚Ν`8TjΛU@eΌŽΕ¬¨Ζ€ YuρβX­p ώΔ1Μω νTΉ «y0;Mθζ²ΩŒap² Α•ρ8ηΒoU0««a,Θ6νβ,ΨΟ u.mν0?œqŠ°˜ΐν6<1Lc,t7•0ςΌ6ΐ”cΤ­ƒΡl³Ξ~.λέ.Λ‡ϊηP‹˜Ε"ߝΌa»ν Ϋ8ϊ8ΤXi0M<Πsž;•"E@ *mπ|”Ώ»β@3~CgYI$η†ΚΗ{Vν MΩ‰p£Α’.LηΩΦ§¦kΝΈ o0 ΊδεόΜ$ρ\κλ’‡έ—ΕυζeQcώ=ύO{ξ˜k₯ŸmϊΙW+ΫυƒΫ0/sι§ͺ‚ο|Χ–a3Œ’†hΖrωgς, œŠ ΰ(ΩDQ@Dγ£ Φ–΄37?|,ίϋZ­F˜d©vC %=z¦m(mαo¨άΫ:hΦJŽAŸtL Υ1ΐ‘xΘ‰r!ΰ9J„hΊΤ,πfk=XY‘‚ްu­ρΐ‰%ψ¦ˆ18§€Ωσ…&–ΐp»ΘۊtΈ ρ|pγ3“σp“0 '&²ϊ)›΅£9‘P …œBvΨ^§ŽXDmΆiKιa α*ηp]»T]„}fV™΄ΠKμω$€γν£’\ϋ›Ρg¨G6β@ΝU 7EΆμ€ίD[pΦ¦ΖτLάψ(U '˜yσΑAπy c‚σλ"ϊQmΪθFžCF<ΔΰΖΕ /:ύ&ϊDοθ,¨B)P]¨IΩž±Z6ΫH½b_―Z@›cS³IΠUΎ·spπK«ϊƒ›οzδή ͺx°χά†n„ >4¬†5`ZœιΆ(ςϋ)§€8Π§άW&DQΰΤU`dΗ+n˜τ“ίϊˆ[(ε“f+E™·vΆ€Kε€;Β1ΥjΆ±n1–τΐ>2 @Ξ΄kGƒΏΐ€;:Β€Ο<^cE=”nΓ’#p[9IPΓf ’)—μf©:Γ*h,Δ†XΡ/D;\я.΄­ΑΜv­+‹8ž ‚#+pr#£%œH—›³ Ϋ+ βXFGpKκ1׌V¬«ŒΕΜ­ϋ«Ρ>nλhcŸ‡Ά Ϋΰ7ψΑ<§‡ˆcΐΘΖ18$L³†t ύ_Ζ\t“ΥCPΙ£Ω΄q—‹<.ΥΕƍ 2άΎ*Ό‹ΠΖ…›ခ‰‚,―—cy=χ7oxΟΐΥ ™fŽšθ"1Ά|αϋχ5΅y£RCφœe₯η¦[ŽWςM¨H—Έ¦‰ AΛ—κ¨uιΜx£2XΌμα?όςψ-­z|ΣxΡ½ύγWιΥβΆ΅²ΣΫͺΆJfΊ-‡ό~ ) } }YUQ@NevβŸρ·UtάpΗ;Γbι s3( y <΄@IDAT¬c™ Ψ’œdΧήΟάX Ο°ya8Ζ °‘ιΨ9fΥ NΌσ³Δ<Žni½ŠΕLpnLœ²D¬eTΕH1_ώ1ΰ‚ˆQΰό’³ΝŠφ|ΊΟQνΰVΑN~δΰ<ƒ ¬XχΔŽΝ‡>.*lΈΗt§ι΄c!ξ pβ.'ΒjχAίΜ;£\~Η8 C ˆΦΈ1amμzh:έx„Έi‘ύvαΦs&&8ƒ“‰φ€mτ•΅‹²zΜBSKB4?c[>΄ξPΟρDξΕΕκυβμ;Q1‹Pϋ§α#ganA͎ŽcΘ, ‹EΗ7Ι&8γΏQ›ŸύΫ7ξzέπΨ§ςݝŸϊΤkrrψΌ}ΒyΓμΈl’ΐI¬οweDQ@Ž©#ΚF7t«6TΝΘ7±q. ±}i‚_s ŒΞ1”₯ηXY"τ2ΐ³ΛRΰ'€Κ‰JͺΧͺ_%Ϋ2ΐu 8ԘΘgΰNk–qΓk>\ΐθ&`·nγ Ό PΩYφUO7Α.+]fΒ&c%¬βΑ‡‡ΥϋX‹š8K©bb!ψnvς!ΊΑRqXˆΔΦƒf;`qD$₯ JΦcNαH§Θ!Ξρΰpqˆu€QΝ7pžͺ³Νp„Aηh°Ž‰ƒ&ƍA̚¬•@F&ΪΔ°Υ‹^Nu!ΆRΖx‹e€0Α™Ksς$3άDoŸYΖV8ωw7&DxΊδ,}ΗΙ•έfΛιRC+=ΧΒ€K_ν™˜³7+y”*L\γπ»,f­,Šg3ΈώΉ\X~&eΎαUŸŸω†φ ωŠ»ώτFTςΐŽΫ©νΖhzd;yΰΙ²‰’€( ˆΗDΕθFfώζ[g!›p_u‘΄’F- μbωdšmD9\&λ=³Ύq‚ΘBπΩΔqΉνη$Ϋ ` #ΦΊΘΘX7˜)d.yνrΑhΆt[€Ο“1'Α9f§α:s±”"ήζfυ’q^ n+a$HL–΄Ή`›©FLg1ͺϊ(M¬Γ χ€M˜$π"с‹ΘΫPλβΩ±ΣΙfδΌif:Ό6ۍ1Ρυe|lj •Wg6ΫΝ^5Jη-¨™κœςςyTΐθΔX}5_­c•CΔ'iΥ0ι³φ4@΅BOΈο¬4ΒΙ‰tŽŸΩ·'H’mμ‹ΡWφ™Z‚zΈΎχšΠΟΟθZ³¬ΐνη„Η΄ΦR†v1’.„ΰ ζ;s€{Φ½NUΞχΖΝ]Θϋ¨©)τSͺjt.9ŽM‘w7) τŽPΡƒ‰ς³3g›‰n…%ά¬,’ܝfώΌχ7Re+wX‹άΚdχΙo’ΐ T@θ(Ύ\ZDε¬HG«- #”KώζφΏσ²\>FψτŒ9x@:ΐ£Ν@3d|­ηIn7rjNΒγδ?08 δyvinξzpMY-Ζ¬?ZτŒ"ΠφƒtŠνς΅΅Œ±/³ξ0’!ΈNƒΡΟU˜Cζ2έ6Eμc±λμΒΝF‡ΘυX°ν:ΓΝf}ιΰΙ¨†c³Μh}k’Ο(“lc,M·δΪ2αD™?vaγr¬Œg0MΈ΅•<ψj‘°Ή€·fι9ΛΪΧP:‹€f,t¬E¨+ OΧwΠo±ΒΞΕ’(€\ΈΔ5@;6MνΠΒ3Kδyθ#c Ύumέlh€KΩֈfέkͺgϋΚgpˆ1"ΈŽs ΜτϊιΎ³Ί³δ-\ϋ €Ή€;‰D#:-.ΝΝεΈαH‘cV0Fƒ€6Μ©³πJG—Ϋ"Σ)%`ς=P€‰πΣαόΡπUzœΩθα!~‘TQ6QΰΔ( }bt—«Š’€(°¬0(KFx6ŸψΞω@’JcΎJŠω΅α° ΑSF=H£€4@ΑŽeγΰ^Β –Qu 3Ϊ^;•εεχ K§X­ΰpkΝtY]/ΰNvΰ3t‰ξ5άY”ϋΠ¨d‘Γ1π{­‹.X§4IZŠ ΰ…=ΒνώE¬nΆΛΠθ Χηcd'Π±Ά³ X%τΥ&΄‡(‰ηΑqeώ˜Q‹~xζ #Ηΰ­Ν$gΤmi€hЇzhΌ6~AUη#΄ J' ϋ”}a¦› ΜΥνD@쳎3™ ξΑμ2έwއTݞ8I‡š.>ΪC^ƒzΜΉό7Γppδ&£ƒΆF5Κ‰…y\‡]mΐ·ύΕqœ(Ιy ΩπΝ›φrΐΦΘNϋϋ"V†qχ¨βΐΗW…ξΰΖ„\‹²€@:šVυΩΙ4kΥΏ΄ώΝA-Έζ‚/ώφπ5ϊSψHU`ΝW4odŽΏΠΗ_sΉ’( ˆΛZΈ›devξτ’‰δ£ΐΖ0q²σν~NΜ³'@ΜΒ3ήΪΙz-4£π@g.£ψ¨jΑΪΨH£λ‹₯€:—ΆTΚg ¨νχtΈΔ@"P,κg[#tΈCΐ'²aγ8‘œWf’ …˜|Θu½‰to$ΈρΧ'=θYMΓ•%X^ ±°Z9A—Η~:―€Ν₯~aŸΝΣ™₯ΟΡΔ"@3’’Č@‹Ύ3oβsΨ¨ΰl°”·ν?Η„γ('–.w]¨)We$PΣω%43β’ ―`š…6ΐ±¬-ΝJΡMdΊΙ£¬AGή”ΡŒƒ΄pnέα6H3MPΧψŽή<¨mέmMΠf•›ΗΉœšΨB~ΪB<κK3#Ž "Έ1@mjϋ/ θrϋP$F?ZMίeνwn, ;»ΦζόΎόΙ/Ώζΐwξ{ΰΉv#άθνι€β²o ·βr=Q@–»f\΅-i ίύξ £σEΥΙΡKusΕ ~ΔkB+mΣy‹ξ«uc ±41ŸR~$c›5`Pӝ…Σ Ύ"ήΑΊŒαΊ†8 '’mώfθ2 ΨΗ‚oΫ"0ξθvΊˆgΠUfMiμ΄pΗσ›QΓF7{ΙπΑƒ96F'π–‹ 0Aη7BlEe|@|f…#@c<8΄uB[„t:βΌI`<Φo#[˜g†ΪΓΉ\έc^ £ ŠΝBsb&λL3ΎΑσν0n˜GŸρdaš‘FiΨ?‚3žTΘΘŽ‘˜1ΛΝcY_3‘ŸοΉL/b8Ο¬’ΒeΒω]fˆnT,IŽςz·uχα¨GXΡ%δB9Έž‡M'b9ΪΝ«Bΰy\ΧΖ]˜2…ή5ΏήΙK_|Α-ΣΏ΄ύ*ύ݊1`š>Άl’ΐqS@ϊΈI-DQ`ω+`£€gσΥέ/Ύ«9?“κή%αjι Ž¦ΝχήΪ* Ž!_l]KE œ=‡œι*™§Ν`ΐ2”΅Kt,K ­Ρε%δΑ9&Τ0CΌΠ.γ,§ζα8Βy ν°„ς³PNW™eυθ€6c\€mΒϊψ«\ΧΒ±œΤH fI:Βi ΒE%LζQ·™ξ«½)@ϋ\]юŸqlvμΦάΖo<ΧΓ'Hϋ^/±‹±Ύ`μ‚εβxέ` h{ϋ77ƁkpB"#„_Vφ°q.›w  x ι¨B­PαΒaΐn/†sΨ¦Α€ςxTqΉΰΚ*Ζ n·ΐŒκΞΘ;#bAΨΕ9!ΚΩ%Χν‡>p‚#/Šk59~΄¦C0όnCό p΅CVOiαfn:κΨΩqεπ3αcr€€.πΪ΅~42UζΏΰ{-α»λνθpX6Ο4’Ξ|ι„<ΎqΓM£Ώψ­ΏXˆΖ-ΫρT@ϊxͺ-ΧDQ`+€X‚VΓΓκΐ”Ϋψ;ͺ5S‘˜/·υ™²t²yΣΑ±exPkσϋΰ~Έθ \Ζ781π̍—ΔQxFΫ¦‰vp6ξ&Έ’c»%μΗ±¬YΝ%»y7ΐρ|»ψLΗβφ‡.ΉθΖͺ%ΜEγ(«)!Ϊ^\ΐq5Τ}fGΡ”]2h³odl™>ή8‘Mƒ~1–ΒZΦ,ωgot λ όή|υΈΩΰΟ ΎS’xˆ~v@ί.Œ«}Μ»Ζ ΖS|7A©σ Γ·M½yHλ q$N4d;φ @{ε ’€( ¬<½}{lΎρδυͺP>»1:– κ€SN€$8Ї ― 1 |Œ1X–δ~@aΡΊΈΔ1Β`’9bΦT¦Σi'œΑ(Žΰ3©l‘μoθb–Ρα˜“ΉpΙb¬ε P‹fIά^EυΠ":ΞΈNΜF|,΅ΖΙ~„Jƒnš‘Μ‘Gε°3Ί$σ€3σΟά­4ΛΩέφξ]άΠ_»ρ™4,Ψ.ˆgl/¦\Ϊ…_θ’³=ΝΜŒΙ’|OwΫ>γ vΡή€p?žψ—9["\ۍo0V;p|υΠ_°m "^bWA\μW;d}lηΰΆGL tέvL…z¦Π!v|g<•ͺ|Qχί‰ƒzΥtξ3ΔMZΈω`ω;Byg9ΔjŒpšYŠšΪ%ΣΡgƒ»¦«3ΊΦΘEs±ήDειθc•Ηo1–OaœύfŽΒ‚-hοpu Ϊsx8ΪFŽΫΎ΅4Νh ͺP;Ϋήβ‘hΏ¬|Μζ¬ρžm’νfΛ$‚qy{ΐχ˜€ψ½kρ(4 `ΆρΊ½Έ b„l-£œ”h—+'/γͺΰ{θ†p] χΫΑΝ‹­›sŠX8…QZ γ07Πo*’CνkVοHΐζΝ‹ν!ΔεΨ΅ΖB:˜l‰˜ yΈη2‚ΞGθŽCΣ:ωˆΗ”p7αγ»N›-[‹:‡}SŽΤζGΣU«ί»σφ‰:ίπ‘­oEiΩDc¨€τ1WšDQ`%(pžΏ΅JP懓ωYβ€Λκ‰R„. ŒP„Επ1!Ρ(ei7BšvΠ±’εΘ™‹υ”νΔCNΊ˜ —„™ΧΥψ.)σ" νΦpT™“%ς€Y€Yf˜ι& bƒlD I¨#2κφ4ψΠiά X€fϊ₯ά3 αΑΡ/KΦ|owβ…έ‡·<c³ΰKxζη€^n$qڞgχpgϋΑσ9vv@ΝJ¨A{Γ~8ΎΌω`V›‡Z وΖRx°…t>γWΜΌ3ŒΎπ:<‘υζpc”Δ8΄a,ΓCŒ%θΗ²78”ΗA+\?Ε€Kv‹­υfX‘£ˆθ›·CΕͺ„œ΄μ"φͺYΔI\³„hLp^Δw q š07νβ~«PΚ©0„λL6&dƒΪΜ@ ρ γηΗ±uB0~Ζ;<” D,…Ζ§5Ή/ι\}ύ]wMN_v™ώ˜8Ρψ"d;¦ @Sy₯qQ@–―€ΛKΦyή5υ“ ͺΟ€ͺ#FA°iP 0J'Τ’ςβ3'“9œ,πβ*x–”ρϊKMψβI(ێ4ΛHseA;Q§°ΒF πΛBΜλΒGΆ)V bΊ±Λ‚έLΦMnαΈκR:»Μ³βŽOQ Β *D‚hƒΗUΡmp ]; m&xT™£ωpΩQ|Θ7B)7ΈΥν1γ΅ύΏ±QΒ3wΨσνxΝρσ#œΛg²κR;|ΟcΡ_{Ϋ)fΦΠO ΕηD_b?{Ή4qo°αC”„kχ~ρ‰w$άΨM^/ΨvΫΜ΅οY“ΊMξ<–nΌQ0…qΣΒRxΜ.γxό’ώτ½ —Δ1ψmβ_ΰ[8ΤbΌqJqγB'Σ1qo£8\δ§›ψN  kΓ(Ξ•ΔdSTSAŽΪεpiΦΤv±2KB5°kXΞCpΓδ2γnα’γ˜0Šβ,™[ΟrεΏΉσΰ^όLξ”wόBd;V @+e₯]Q@–±νjν¬€Ήόm Υχžέn!&Άν€u€< šdn3ζ,jα5HΊ΅„ΝEPΆ-'χ‘ίμ©8ΗZΡνg‚,-g»ΰ^;ΡpGG™Pͺ€£«ΫKΡωζ2Ρ1F±ζ°t!^£…χšYkf=¬Ηe¦]@σΗν ‡€|B8\Tr¬Lΰ­…cŽ„Ξ:ϋΈ¦μ΄ν3žy­ql˜”Θύ8žΔΛφΆψŽ― ™tYَuyρΜC¨¨ΖMβψŒu˜ΫYlΫΎg«άΟ“ψΰΣβkϋvq3ιΫ΄± ΎΗEy,š}ΐdKB2WwQ ;ΖΎ₯2yP§#·Ν{θfW;Δwƒ»LΝ9”“+›¨υΜ›8‡Fˆζ=BίsXΌΠΒrΚ\:ϊΰ¦&ΰ2:=½}ξ\­zWΤ¨=Έͺ»ϋWqmwzfšV8£όΓ½ ƒBήM”%©6kn„ŸϊΒΧ§/ΉφεzoE[α·/Ϋ1P@ϊˆ*MŠ’€(°œXϊηρ©/νξθΩΨΧXzο’ιƒψG~,2Mxθ‚0‚#© Ώ–ΜW …x«ρOώ°3ۈgΑΰFΆ#ΓρΎζƒO–XΉmŽqjxΆ1ΐ¨kΔ:²υ›y9 φbέU{>ΜρښΟ8ΒΒ6ε1ΈΎW4‡ELςΈf@°Δ/^Λr-ž΅!Џc².-!“Ξ+Ϊ\μηRνŽ%ψ΅F=Ϊ²γv€llKηςΟα~Βλ‘FΩ?<θvσ§ΐi‘/Μ>ΩIšsμ·ηςslΆMΎΰΙΈ67>ΡΎΆηCm{½vΆRΫγcρ[&7φ±¬΅αDF~έdmVΫ€oΑ·”'‡φŠΝ%ΜΩ2·Ξ‰†¬t’Ρ»PΗ Œw½ °·ΚsδWΚ%ά˜©R_χφΣ/ιΩ3υω?¬ωGEί»z‘ZWΥϊ|Š¬ΠŽ0 N„ανL7ͺiΰηϋ«Iόψ9}ε° Ώϋ„ρΘ& ψl’€( ˆ’ΐUΰϋ"iνgο]€n;ΟϊΎ΅Φ^ϋϊ]Ξ9ΊΛF\ΦW₯άόQΡWΧΨΜ"–ΫUCUδδjΠ–©ΐ'€Šσœœη=:sHjΈx dF*­B]ΐ#e{ySηŠz;7§ψ5O9'@Wύ^D}0….Γ|εψ?Χγ/eΤΠσB)‘!\ X@Σ*­±s eΈ˜1ϊa½Ra΄ΰ Œ*tΪ½hl³p+εή€WϋόI‡ύυτ ˆζ»εΔ9>{D΅–οχΈΠ–IB]IL―Ÿx΄‰:Π|‘–ŸL"QμiΛ°Ν”§(οα)ϋΐ57NA&&΅γΪλ~τ`b…iM ΠfaR‘έΫdΨ+Ɯ3ΌG¬jΛβe7ΖΡyΑω½ΐΔ'9Α―ΩqςςιΑ›†―»γQξ?:Š\ί‡ωούφό;ζ?Ψ ^3™O²cφ@ŸV«ΞL7”ήhΥΩ>ΝΰΝW}λ«zž;wŽ-Ώο‰‘ˆΆ§Ι/Πώ6₯#Y Y Y Y YΰΣZxqƒŠΥ…?7¬?Όήξ`τs׎GΗΗψ;—₯W ()<`HΚ,E i¨ΚΑy²¦jnΐg›> 4@tύ˜RέΥW9ΟέΕ5<·€½†;λ Hκοaι—.TDqm ‰Μ6ΤΝ9αΩ&lՍH‰Ώs‘ΒΉw‡ΨΓξ–‘(hgDΘAΓkB*\-ζ:>Τ*³ ,'πΕGΊJ: ιΉΐ<Υm“ισj­νkσi£€Κ5¨"Η’Ζtδ‹:nΌΘ0.>n[ΜζPu?pΛl'qJ ΣΫδOU}e{ύΘδE·”8’L~„ςΟΫΘvεEΔ‚Φζ›rΦοφΙdΆ;ž2 ρ³Ϊ/E$\4ƒ“ύ՝„¬›ή|Η­uŸ ώΡΫDδΰ–2Β8e=oΞ ϋ·³“δoL>ό»wqͺf“ής•‹©ΊyεkϋΛ™›o{=CυWš~οΒ©[o)‹a//‡,#ν34Μ…&οΩΫ“¨ΟF{ӏdΛάTιHHHHHxΆ@ΔόώζώΨέmώα§ξΎύ?xΛ?Ÿ-—ίσ±'>^O—KηN±Β"²<λΟ°x<€’Jl„]Θ6ͺ¬οϊΕU±˜ΟEg²•,θ_%ٌPinΝ-d»Ψ/Άθφ’ΧRω`†8‚ώ8ΛΉuzs-ug·>p&ΔΕ,l½U—Ω™.`M}ΰyΰΒΰrΙY icΎ΅b1Ί(n ­Λ‰“ƒuC­:ΰ—w}©eal-j›e‚6mφσέwΥχPΪMr#±_ΪοqŽΊ#§Υf)[ε7Τd)YΓ­_ΡχuΩ~6£οš) ±,θdFH§έ\βˆiKΕŒΡzώpέπr”υŒt6žΎ’Υk°nΙΓK•ž¦Ε»Ÿ=ηxϋ’Σ©xG,iΤύ.cά¦Ω―2όΟΩ—%ΫΖqz±Χ,2½k8:υŽσwoc“žΊU’ΫΩTHω—η³Χέ}κ'λ—ίτΗλnv_owtύζ/ΉƒυŽyg<Ύ:ίΉmχ«_ύέχzοώϋ5X:’^ ψ+ŽdddddίgFΥξ^½2ςζδΑkίήν¬ή³˜-O=ρτ6ΜΛ±™{ΐ²ήξ(„ϊx^x Ε-BŽ΅0 ˜Ι`qrγbLαcBΔΩ’˜@l€Tlο½?σςΊααχP«₯°5l £ΊψΖuΥ%ΐ9£|w.μφGΩ₯Χ—’λπ|f8Τ€j\¦‡γl5™d%ΧΆΏάh›κ°P ˆW”߁² 7xιΊΙK4+κ >UQ·γΆIh΄ΡΞyΝcστIΊΩφRΐ΄ˆ—vΰΌϋξaΓ΅YΜ2HηΗ¨Γz„cΞ™ήsΡ 6[”§}μ‹οΨΈ?ΈΠΌVœU§έbΫ] ϋoGœ$θΏN'­*ήζ_—ΜΟk#μΥςΓ±]»‹΄‘[ˆΫ8ήJ࢏Όfo'|·£λσξΚΡ:ΨS}tκ O9ͺtŽΎ.κW1‰ΈαNDyσΐόmoΣc;ϋύζN±ϊo¦‹ΕŸΟƒήl<[α/ύψS½Χ^yΟ}“{ο½7ξiΣ¦#Yΰ…X ΝΖ^ˆυRήddd/@ (‘:ߟέ_~όŸ|όo ώώε+Ωt6―σn·Œ˜ΛΟŒΝPT |x+/y°T½EΖŽβͺ?`ͺAί]xηΉX₯f’5P±@.ΐ3@”4”Χ‚ Χ=ΠΆ•N\wΫνυ:ΪI_άι0ΤΰMΫ)WˆŒv[”ί£ͺ±δγ°ΉόŒρΕ¦σ]U7ή)[˜ Πlέ NbV71‘Έ€yλΆί=|“zγEΊ`hή)+ΚdΠΆΉ-ƒ ‘ לΆmΦi!vHŽˆ*AΡφσkυšΒHf=–έ–o£\ΘΩFώX·ΓςcΌ΅›ΖαeΩ‘‡Iˆ.0.\Τ^|Œφ2@ξTˆΎ½έz{χΚ΅ύΏχžΏσήoήΫΫ#Šή3”h’{p.'t]±‰Ίρ`Σ| bφήααό«NŸ^|Ες}«σΙJ›#ύLx~H τσ³[Κ•,,,πegΈlTώ‹KίRΧυΟΒνζKO=₯‡C)θ ΏΫΐΡ‘6”l'°vxιΫ*Ώ5O,XΐT9CI]—V’€)I¨¦<Φω£’Ηυφ4ΛDž ίπyυN–ŠΎŠJ―ήΧΆjSΡ:gzKψμ,ΠήχŸ]ž”:Y Y Y Yΰ ΘΟ€όΒƒ?Ζφ?pp|-‹:ΗΗΑώV‚(}φeΈg– ²9†(Β#Άaε’‡/t—…w40PH &{&·πYΕ™BυšU3@q]‘p&\`ΛHb―΅Y’ ϊυ΅ΰθ\K€l—ΒΉ]7o\‚«"ό‘η€λ°sχΒ%;,¦sMΥŸnho›Χ0ο‡ΚHY£J7δqΫl·/ιs€2ΎmOœ8Πva―mZ,– ψσTψ&σN{ΫμΆ}΄G5ΫMEτ7Žόͺ±ΈFm:6o‘Φώ΅…ϊGΉ|ΗΘΙ±“ εΠUΨ’¬G8]·ΤZRžκΪzγFXπϊ%΅>λh{§ξO<XŸvBŠ˜$ΡΧ€iΚ²p±\κwΕ&ιZίjμbϊπΡΖή€0Ή6τIΐ’2δYbΆb―Άo»΅Ό>™ύϊG―œύ¦―όλάΏαrDŽg\£2ŠIŠσ³l“NΌ0 x‹¦#Y Y Y Yΰ‹Τψxδ#_qκτ-??κvίώ蓏­‹e.#ΉΙHΎV}ΔξΒ.yΆfΓ€͊Š=ά2\H8Δ­‘ΰώ‘@i[©J”c‹ο5Ψm\0‚˜€ξ '3Θ[|(­(^›Ο‚!бΰͺŒ*HJ\ΤYΧΛl>W€«y˜.˜@DH7ΎΠλL /mR 'ΤfO6Վƭ&'υΡΤ/DGGΝCΊΆΣΡ―θŸ•Ω)ί΅£Ο΅™₯ߌ°Νη P[Zͺ5=ΰœω’œ \GZρ²Œ8όΞα΅MYqŠzCπuΡ “λ³=”λΦήQζ‰ΞGΗ*nεπC…έkφ w›Ά=λϋΔ›Μ Χζ΄sΖιc9'ύœωΠξ-·—,}¨W”ίqϋ™όε>ΆTΜ€/Ι³ΨL…H±ιΰ³₯3ΙŸ…όυKG²@²@²@²ΐ™π!…Pξ•8ͺΗώυ΅oΔeαύΓ^sΗρτR΅³3(§'PJl³ D‚9+w˜€\ΧψΨ&.›α7μf$αΣ,–l`KXg„ l ΟΑ‡Ϊ(ŠψΓ*’¦iΡΗ+νηυ»€KώBΉ€…"m2κ's›Af2 ν£G )yŽŸ”‘]W@3οD%&B^‡ΝU*|Άϋي8ΔnΌR3QPπ­ΝΓk€ίt‡Β–Ά•†¬œ ₯Ϊ]τ‚UΰΧGά­Pν’O±έ‰kΩQοm5*6mZ˜Œθ?Ξ9Ί]xg”d‡,Π†}ΧjνNΈZvoΊ›ϋο7Ÿ>l~ϋψ§,©‰°‹mDΎί86>Ρ7N€Ι/Π›[ω“²' $ $ $ όQ±€QΧφ~όΑύ=ΆOΎ·Χ­³α(«[½N5^f‡ΧΨΩνxŠ Žq€;@Ÿρ”U η36Οΰ’q|=? ΊΔ…υ` uΩpΐjψά†b ± `ΌXΘΧ–­YλΏLJΰmr $΅PΆI·^Œ_ωμΓ‘»AY&θάΪε’‰@ƒ+ƊSΤ|ΕhœSP©qˆ Μ%*τxΡ(Π*ΟϊA—‹n(ΞŠv#@¦=€°O“†τŸ£’PΆ}Γ탐ΓQ>°A'i«iš“΅g2Μr `lOπ™[Ώμ°/ρλV '/ή=6Oκκΰ»r―pΆΑGwΝ©"_`h'΄#μΦΤr«ΐ*„ϋŠŠ|S9&­U Κ–OρέΎDSLοu_Τm^°bƒ™€}›†Βk"Κ'‘ΰLΉQ€ω<„υΈNώ…›‰ί­Χ4Nœψl$ƒΞ˜ά̜‘ώ―:}6Δ‘fξΙE…“KΡ+ξΈσw3ΌΏ^,ΎοΞ›ϋyŸ=λΠZ`:’>7H τηΖ©Τddd—€Z….―>|£wlυ·ίί)·Ύρψδκ–›Ωp8κ”`Ϊ<δ}‰Ώξxςd(ΩFQ|ζ?"p ϋ9\P5]Τ' бν΅Œ‚cPΗ€ψΣ#LϊRiά‚Ίΰ‡Χ¬Τλ” ζ9^›γΖG•JκΠgdέ)bΫhκ(ΈΩΈŒWΒ[Ύw€ϋŠZκJqm†³M€«d/ό‚ύΈeΣΗ ŽέΊΜfΩ|>‹‡E1Όuύpλk Sι΅<ρ²έ₯Ε+\jρ+§Ž‚]ψ6‹.C½ΆΒi6ύ΄_›ΓφΖ„s‘FtΚ0MwώΛU}­—Wρ#:π P ׍MΪŒƒ²b’Ÿ­όΪή:ΦοΒΊ±’£LνθS &"L+θ+F‰μŒWxT5Κ±¬ΈΆi³ηm“cζgΟ―ΟΡΆΈ_ΈPWŒχŸ—Ίή€:Αp4•“%ΊΗNΆožxόΙzχτMo+»Ε‡fΝ}zΏΧτ’ΧτL:’^< $€~ρl™JJHHxΙZΰ>’Υ???ώφzš<ΎΒ―xβπ±jw§_ˆι±‡mΥΟ…7]%Β/Z{D{ρ“ΆΆ1b^Σ…ˆJaέ@5†qβ‘«L4ά~ZΞL)Δ36¬-―ύŸΓ}„ΛνvΩ|`'Ηva»ωξδ%ΞΜ7ln™ΆΙ§ ŒI Ž€M½ΆΎ“•m°’ΓΝΕΈb;ΗΘ>ς½]ψΨiΫœαπY·4•wžDΣ₯ηhΣΊšθ4iωσΰΩώt΅νŸBΓM…σ–Uw;ωΌ.ΚƒλWλn―»³{Σ?sR7_ϋΔ΅«x>ζΎ}Q:((Ι/Š@Ώ(fL…$ $ $ Όt-ΰ#m`B–lώείΏπ0_ŸΜ§ΩΙδz}ΣΞ Ye'ΐsSE€sA`Dˆ@5w‚«.Η JBͺΧC™D‰TΥt [& ζͺΝΑ<ΰΥΈΘM`Ϋ€΅ΧtTφ’Μ³–ΐg.0΅—θό.lωZ_7‰Ο,€(d²5<&Τ“ŽΊ„°9.5JiAΊE½Λ–έτ‚gώΊT¨Ά@eσOΘΪ&Ϊά§›Ήv―†]€¨²l€‘>>Τ]ΤΠyz½nœΣFΒ’~ΥiB7 ωYΥY.΅Žhω<Ρ0ψ ’»ξ£ΰͺ±₯‘ς€mdœηΗζN ώtŽqβΊuΠχΦo™ΟΒ7eθ†` σΕ5‹χp¬’“΄Ϋ±ŽE†΄έΊ"±oœΧΫ7 *P‚λΦΧN₯"J g£Ξ€ ΑΧΖΪ0mνΕh|[„_£*>„]Lκ$†TN.|η»[}ΗγlTzΏ•L€(3\`ΈVψρΉyό±§κ—ίuηzϋΦιΧ^9:z'χΣÌ留AmιHx^HύΌΜ–2% $ $ όΡ°ΐώΘΓ·Τ'7½―Ϋλ}Λ…‹‰sΝV­YΥΉ•'αD8D€‚λΖz.UK―ζ­ΐο΄ώ½„„φ*"nΠαξδΰάβΤΜ\ τΐΞψμ$½' ΌP $€~‘Lω“’’^‚ςσηΟλZ=ςΛ_[Mš_@‘όŠ«Wž¨€s·$1U.*z€f>aQκiŸφz³’#<΄΄`*Μ”r ¬”]p& –t”@Ω#ƒL$ϋΔAήeTRŠPx˜‹Μ]?KW¦WTdeŸΘηω±I³cY©…2kγa ŽΊb@Vΐ₯, ΫΎ†v¬hcˆ°¨Θnώbξ’Ό}ά*AΣs€†$σ• σ:Ωφ`ˆ…°)ΎΩ…oρhΈ6κj ςΕb8ΫF;JcΜ ‚Ψ+άpm§Jͺθ»ξΛ>£ž·οΛ5Oi·€O>λ9 XΘΦ ΑIΫَ§ΝδuήνD§ε’WEέzZγ­Ο™Ω=r¨Ηρ#š›Iι#-χF³ ϊf[4W’†Δ'›@μ{NψΊhΏM_Δ…Ά½mλΦ7†τΡ&Ϋιδ ΐUΓ§ͺίΪΥ6f§-6=FŠ€Β}φΏoΑžφήpyqŒ™IΈπίχςΪΑ΅z4θίΌ3ύƒ«W§ίΕοΑ/ίSΎνmϊΞ€#Yΰ…[ΐ€#Y Y Y Yΰ ΘηΝ۸lΤOόΛύο_,«wWΛy9™Œ«^Ώdν ²ζ£Ψ^Ρuƒ€ J3lE€ Υ=’’&R@Vθΐ@*€<Ϋuσ€”^„σ’€PQ£"Ύ@ρ.l‰YΓͺψΤ6ˆwρ†rΫB,L²=l[πŸJ₯uψCΒςέ<ΌΡ¬h―‹ΥΙmGΑ‚A7οvS!XΠuέ .ΝΌP6i[cηΓ > Ύ«΄«j#7³-#ΪΖ·‹ΰ«‚μΔ ΪDεΡ/k9Ό¬/Ηe$°ν‡ΓΐΡ)¬+Œ`/ϋΪ%ΊΕ·‚Ό—8όΦ§™w'"–#ψj_ΚΨΤtP†o ‚jπΖ°σΉύΧ~7 mlΥoΫEj QUΦΈBΌ5―Ί„ΔΫoΣYV¨Υ|χ)DŒš‹,‘=nύΓ)*κΧ£\Wž°‰m³nο!@:δkǞ±ΰ¦rΜT¨Μι2d}ϊ­WLDŒ ½dΥΐΓΌ3ΓλœΜf+&…Εm·άώKΧf[7Ξ&)ΡΪ>/†@ΏVLe$ $ $ ΌD,°„G>ςΘ©­μζχτΚςΫ―]» ­VύA§\­#H1}d€ϊͺr,hu³Π―>F:ψ ΐ™°Œ§Ό+ ,”Χπ£J΄Ά†8M±YTΙ΅ι=ίC₯@ wΚ΄Β ` ›|m_λkR₯ηƒΐψΌ†η'9p‹Κ °)žΆΡxΣDa¨ζρ?o1”†U\-—ΆΡ?7NΦ(ρl,C?jYεV€¨ͺΆξPœ·Ά‡ΕsΚφΖB;&ͺ³φΡaž΄0ά‚<όΒΝ†%νzφ!$F|₯*ΙζεόζT(ΨA‹€±ό¨¨₯ίΒζŠ‰B,€ά\ {ςΕ<ΡWΫΪ~wΨΒ–T“~βiLYΪΞ]ώ‹θQz΅j―ω°mpsά "…S,Ϋ Σ―vxMΈ>’nΎ{J[pΏ…‚‘ιl€Fδž"ΨΟ䇱c’±² ξ3‘zA›¬sΑ½ΒίΌ8G%ΠέαI‚!-!Ί¨ηΛζΥ+υΛξΌυo=yTο2 {χζwdέ’τ–,πΌ,ϊy™-eJHHxiY(tΒeγι]xγͺ*6‘^ύδώ₯J&ξϊ9‡rˆ ƒ€μΆΫ}δfp,α…π'H ‡Ζqn|qΞΐ”ΠηB;αΨpi‚J‘_΄±œ…1}¦yΜ…‘% ,j Lžk[ΩΎ q">>ZΡVΨRWΧεQ―p1@Κ*hφ芬B­j)YΧ AX€¦]n’β&)ϊsλj°nVΝ;‰H&¨iƒ,ΫŸy Ÿξ~w\lΘγfŸœ©Ϋ„Οt.εh Uηθ·…―λ’ΡU²ZWϋΣΆ‘Fψ ·*&ŸΡ%Te£\ΛQq ζ!₯ΗπDp`<8o"?ψΪ1e?œ?1δΡΦ*ΎmφpΣ±σ2ςrž£j’jOZΗΔlΦγG€–7Ύsq –,,&Κ£½”ϋ““TΆΞk­ŠLbΫ°†ωxA»γ6’&―xβQ1Ζ}Ž3ό½—άŸ5οξ8YS‘χφ’|†¬°—»L*n»ύΌβήςϊa}ϋm§ώϊ£Ηυ!ύήΡ6/Θ  _ωRζddd?| <ΣeγΪ‡.ύ…ΊSόD΅˜ Ž'UŸXt2‹ιάΠ£UΈ΄ρŒX'δΑ3p‘+αΗ¨†J &R₯h Α&ΌM‰:{ΪXς³·9β;_”<)q‘Ζ—ιˆ‘ΡΩbΰ8πlSιt!ΰΝψΓ]6Τμ–₯Λ„πΤΧΈΠ•ΐk¬bŠΦάU}.=6+ΰέπέμv>³Ž~―ήΑͺΆ;μBτBί εΦ \Sm6„[(ΈΨΊ=Θc>μνΠCyφ4i…Σ0¨ιc`rh<–δ»AτQn!”‡ mα›ωmο›Q4Ÿ¦γΌo–φ΅ΎΗ ϋΓ=Ξ#;ί#}£¬Ÿxέ]B-K―Σs8™*™0D”­JάQIΦψ5΄ Γ3 wL”'¨ΞRjκ e™o΅ΎΡ|qαέ2νUgsΚXΠn}ΨΩϋ2›RoΕwΆςͺ΅[΄/ΠΏ+M:ž4Ό`γ•nΏŸ/λ¦xμΚQ½}σξΟ|πΪόΫώj‚hL—ŽηmΠΟΫt)c²@²@²ΐΎ6πΠύmΏς¦/ω›„TϋϟάiVΫΫƒGΰK€B/]4V(Ι±θ0–Γ|Ϊ­ jpέ‹ΰ*› ͺ΄±ΉX"<ͺ8 > ιυυPζzp°΄δksΔgΟIf€ΆΈ£Ry7X+ υ³ε‘GεΥFŠQ€‹-…@)>|Œ½tΡ.ύfυY^·•j3@ζφγDkζ<πe•”/ΜιΏmyξ&Ψ*΄tSn]ΟΫ[[v7μ ΛιͺΪF‚— ΐ,Ίf{mn;QB7ΫoΉ sΤŠ,ύ0uηC€ΪΆ¨ΠF jς š­ΒL†Θn_…AΚ΄ΆPή©|ˆdQO|Zt~ήΨΥΌ6Φ1ΰ<―HIΑή‘¨{MΗΟ(RεyΎΣ&–όρΌBϋ §Ž96 OOb b1gά?ΤERnΏΦ^”αΆη:…ΈY­]lKψ“wά' v΅fκη.„κͺΈIk&5slδŊzNΓ‘—iΚ Εšέ"ι“% Φα’ΓΐQ&Θ*Y>ž/‹«—­Κν­_ϊΏ?E»8Η#Š΄Νw IϊρYZ τgi°” ΡŠ0LΠ X ՘SF3lŒ_›žΈ μdL*Τρx<οo…fΔQCKλڝ@IDAT-Ž„ S€š‘@aΪΗρ•*œyœ‹tf␎δ¨ •tsΨ₯5Clœ₯ΌχŒ2MγΛ6πFn(+}rk@IΨΤ―cΫn|‘]lfΝΊ€TτՈn}AR–Δ6]@Π(βcψά’N»Τ…HΣ šρ .Pd[˜5?ν„‹„4h’/ΐg”FΊ<σ»Zhε¬ύVα΄Ρ΄MW€;EΩ’Q<ΘŸΈŠθŠΟ9Δ8€~oHϋΛΛvGψ¨]Ιπ揾ц˜γ` Uλ…1€Ή€qό^OOΩ°~ŠνbItc«&μe,iuέΘνM)ΔΓφϋΖ5i6šn»|ΚΪV?{XNdj―G:Ϊ£; ω΅Λ#c‚₯Š;žOύJχlΗzӈ^aW8κβ΅΄νŠ—΄šc;Υ|μ’r!9ο‹˜΄Ρ '^>ι°Ν†€sΑηŒξΦ*Ι”(¬W\˜g$Z1Fs:9a\|šP.vΓ’“σ˜4n rF=ƝμœMšώΠ““I=:ΥΏω¨nώξήŏ|ΝCηΟϝrh t$ <' π[‘Ždddd?*ΰ}μͺφΑs†oϊχoϊq¨ΰ/<} όΦe―[ ΑΖπΈΜn猲©kƒ:haœ]ΐŒΈss ²‚ ΰ¨’ ΄ΑΑό‚$όαKΈ’w•ψβ_Ξ BΑX(γΘδKΐ«Θ9ΩRŽΠ‘,Ox§žPœΝ hY<–·Rσ „ΎϋΟwO%ϊYPb±Q2„=ύ^kΘΚ–(£ ₯ΡCdTH5ΊPΈy Σ‹’ €ζΖ!*Α’XΚ±ψŒ,~_ΜπΈE· »}ΠΎ‹R―ιμ™νΰε^ίώy%Ϊ/Δ‘θΪ…ε[ŽJ9½Δ¦,7Π2]€g§-Ρ)γB&ǝ¬¬―‘ŸΔ˜bύqπIAΨFϋ<[»ŸΫ4¦o2K ~·!­«νTίQΥr_S ―^Άnmθ8γh*Π>YšώΗκιsf^ΊΝΨ²K%e؜’E™ή/y‡]ΚΘη Π‚,Ήg ϊAS²ογLž†]WDDa£yΞ·:ΟΖΨN07ς†ύƝWǜ*(·Ξζ|φήΠΘψεξs’UwˆLS nΉύu·½ό§Οίσ†οΎΡdΣθιHxNπ†IG²@²@²@²ΐKά*dΩ„ΛFσθΥWCΏˆZωUWž|’'Ωu;»/ ΰPUΚ²ΗγvwΖSE}Σ8ΰΨmRt BτίΣς–ε„Έ œy¨ΦŠ8ςά€WZΨ#W”ο~–dόα?ΐ%ςHS2]”ν^&PέxBXχši8ΔPϊΞΛO(ΗΊp=ZLϋvΌR Φm― «' ͺ'/–(ΏΌ«†j“‚ΔΊe„ZJ΅Ίo¨BΟPM—€νͺΤ‘œβό “ fΰ!i&(χ=8«Ωδ˜–Π†0)'VΆ‡ΙCIεΞ`ΨΑeΓm°ρͺ _τ₯ρ₯raΞΆg:&0BΉ]w†’;Γ±ŸΊv0©ΉΕΪέw¬*ιτ_kpήxΧN!Β€¬¦kΩΟνEy;Έ°’΄cŽύ–sŸBφ”βΟ³ »Wτ½ι hΙОZχ ΚΡΕƒQ4yΙΝγ?œ#¨’{;ŒLGΏjΤk'3ρ$σήE}›βD•xΒ ηžt IΗ‹2kϊ/Δ¦ŽG'¨Ρ¨ΟŽ₯υRޜ<3θ—.DλZn^ΣڊjP¬²aκšas~5h‘“&JωθSΥ֝/ϋ}ψ‰~θίΝ)ωCc¨tcnšοΚ·-8}|t‚——ϊΦI£όu€ΔξDΑ b/&€ς,ΰYΨΩ<βn|,ˆmό‘C:H„μX…TΧζυ_ aR±UΫJ.'Φ F™*œ$ x ˆγšDi7€OOΑ|FIœ»P° €Ά|‹—θω[JΫ(Ϋd9λσΦYΠg07θ₯ͺ£ΰΔχ9ιΩ˜ έE}6τžΐiŸWψΖͺZΊ)Κ 5s `Ή£`ˆί. >;>Κ–(ΠμڈZ―Κ)τZΏ_aΨ\¨Xs‘‡κ:4bυ֜‹Ε‹ΐ·ίK]HP˜?,(Ηz ΅Φοχp QanΥΩxάμXΨϊcS}ΠU€΅™ ᜠPa.h“@ͺ1υ9fδΔI0¦ƒΌ΄yy97 pv<ΉΎ’ΆΗωΣ’ʚqnΚˍZŒ^R1Ύ*ΜάZΈCo™Ύ kΓΚ§–γ5Šφϊ‚±£…1ηύP–'άΗΆΠ-d†-&ΪR ζœ6θ:Π ΄ΝίΦπ_|υ—‡:­κΥ”{c΄΅5Ξ¦Εί{νmξqwν%h­–Ž?ΐόί(ΙΙΙΙ/U α²ΡάΩvιίΙvΆ‘€Άo>ΉxJ!€XoΑT…#!«h} °ΑGίΐΑPρ›"d˜p ΨDœ†xχœˆα»YiOm+jάοM ‘Ί½ΰ9ί9$ΛZBAΞ…!λ }‘G _OΠxγ5Λ†τIVέΦΫr"OΈ%dδ ˆΆQΎ$/ Œ—mTέL§M’nΪ@9 `Ξ°„J,@q˜I%ήU@δ΅ΎκD(Ϊͺ€£[ΐͺ†‘ŸZR°Τ¦Cόs³Α\šCw A§λΓtBjΪ $oκiΝ ΰΡ†ε4ΊLp2Ο°#?bΒΓ9ϊP1Ωρ½&η€#εS‘&μC…‰σ€`AYίb]ά GΜHΖε!|Ό­Kx'?{”Gί¦Ψ{*<;  ΎN8\΄K‘*e˜i€Α@Q5ψΏΊκcο­*°1Ψ@1ΈΟ<Ύ€Tvλ9豐 UπOX`=πq}nύ§―=gϊΈΘuΚ|Pττ΅Žσ…˜'<›Ÿz€"_&tωΙUΫΦg87•ΜpY Ν>Ίow7$©“ςf8+ˆς0έ w£7Ψ;FKΥ ΑΘ ΉΒ«˜DΈωFΑΞ€Ρ5ΎwPMνΆ. ―;ͺ4Χ•‹[Ψ0…ώ .lΕηΆτϋΈp”¨¨d—dΉ¬HΔΖŒ"J„ ~“Cΐφ`‹‡¬”Σ½Ζ±r 8βG=Λωθεφ€ΜqGQΝΞϋΆH€£O¨¬.l οvϋ(Ψ¨εΨh<™fσJ9eλKm[:€aΌΞQη\Η4lIΎVŠ΅7ε)²C’BtMc‡Μ±-B™ζni'”©­΄wAϋlΉ‚υq5 (Υ—[uِqŽ+­o!5Ζ„±‘J'5=uis,p-τ²v2†8χNŸ[Δ0‹ cα”‚)†W²}\hяΖ:œΠpΜW κ^vΒΣQφ„< {všv ϋ*Ժ݌ψ>δ>τwΑΕ„Sf9r°3">οΈvεž^²O{§Χo†½ώΑρjpχmη§ΛΏ€{{t4ΙŸΖώn₯#Y Y Y Yΰ%bΰΉΔ SZΚ―=xπ#ύQωߍžΊmαm ΤΘ5.@X*TLVkΕV}GΑύa•'Ί4OΉ­šΛG3]ZžE’ΖΏ € *žβh«γγ惉ψΌ.W0΄.]HΪ&‘ \Λ3½ΪΌVα·ώ½ΉAUP€’M% hM­„π<+b)4/I$Ρΐ­Ν’7UQ7ΘF± aΈΠ &±Θ›Ψ9wΠ ΅ΣίΉVs—΅‘κΞηψλΝ†bλΠ‚λ†Ύ Π”£Ώs‡@ΔξFhΜιZhΨ…"‹Ϋ†¦^ΞY}„'6Jιw BrγfΓK;sΈ‘M¨ŽX۞#Mψ?γQ ;Cε ¦V§ x€ρ³ΰ‘TPh΅iμΈη"QΚ44_(«¨Υ­ϊ ~ €iŸΆ — Ljφ#˜9Ηa±ͺύv‚e+ΈTΒCQžΉήg,Tμ—LΆˆR²]jw¦qTP2ir"³ΰ₯R­J}‚z~y>Eν6’c τχbΫu΄œΕΈsPφ”±Σ£O±^LϊΤίΕV†ΨsͺhŸ;Γέ¬:žΰφ4d.PζΦuD[nݝPθ«έΫn+―Ώ=_yΗ»Ξςτη|Μ±t$ <ΫρΏ―gŸNg’’’’>ίΨψ;οxrΠ{?ΐρφ?υψͺ7θζ}^]Y ‡lP`εΐΰ¦.όλ5ΖzŽMO€ΤΆ6]’•£φI8@ˆ€pμ{§=T‘Ÿyc‘~sέ<Α­I…rΚ·Όζb@α–œ'=§uXΣnœ³!:6qα=Ά‹Ύ@™φ `%ψ©ͺΐ²ι­cU­]HΦη¨9TΠΠΨI$PΨΐ&­Vi¦?DX£πv\ΜXΩRJ"Ήi—φr!šϋυ՝Ζ9*2œu™€”qŽ#”ά>eU¨·αο‹α¦S’A HΔxΙ FαRWކ…s9c³|XΤ9`μ„Γ‚z;Ψ,bc’p»ΡGšφ©°/Bγ,Χ,*\ΰη|L[˜RΡ>μ€MVξΌ§ςMσ{(Ί*Ο±+ ηŒρ‘χ8η}bt {μ8κΧάΠΎ)΄/4ΟUb™΄Μ(’ΆέΨ@Pv<*lέ ςΖ€¨Ώsl }Ζ½b“MxΈVyή±­!β¬G(–΅±”-Ζb;<½Ψt@1/γ Ι€<Β«7fL AG+ΓCίζλ,ξTž©”ΣNοέKTη]€h8Bύ §δ‹ω$΅«žwIώοψυŒΆw‹ΞΙβ3ƒ­ήΦw~Νρε}ν_3aθΡ?ی™’NZ_7Ϋ[yw°σU?ω₯ωΏ:{ξ\ηό=χ8+HG²ΐ³,ΐmœŽdddd?L pROβσκ¿ڏy”ώsσΩτε—/_aΆ’Τ?w…μ0}―D%κΚ$ΡΆΠ4uι\+χDΫc h‚AΦ/pAή‰ƒžJ6'AΆP) Ν H'L«(G2h\oO’Žs(“V³q xΆ>Λ΄Ψ6>)q!ΑΊ™Δ‚ΐP…)γ)sNP ΅Vc §œ` Pυ4―eρCεQ¨k!RHW—ε ΝϊK»‘Šρ…]X)0 ₯ΊGΤΨ5@^#c³ υ ΛfQ]”EGX(υ±?φ¦ΰ)εοOθνešΘj6¨Ρ=A—&;ρΡΝΒ°‚π) (WΏϋ’y₯?TXέf|Η‘ ›MJΐZαŠ]αIڎ²N™ΖQŽEN˜Tƒ5ΊSϊAŸT€Ϋ1u‚`€Κε”~ΕΗLΠΦΩα~p‘]Σ™|ζQνža«1u/ ϋ—Ωυž’ έ'4“`Θ«<«υκχμ‘KFŒν‘Νn€’ΛEĎζάι|€nΫ)ΣT5œ—!κŒ β|B•·ο'}Δ/£H?…ΝϊΐρMω ¦έΚτ‚Ό†ΚΣ5CuZ;LrohΞΕBAh*kώΞψ‡f“ُ\?&ͺΦταr PEPέ’ΉfX°Ι³B™v}TRÍάRhΰ#% °‰ƒΤqΡΤμ9>—ΎλKκ1ε΄° \HO€U=ΎΞKK¨δr|œΏΓFψ™ϊi{>η5z‰λΐ‹P­ͺ Ξ !ڝϋl\―&Wφ-|W¬Ȋ8ΙΤ— 4Ž.郬»…<9Γ=C΅rMϋΥ4΅FYuΑ!۞ñΊs`_ΩΉ›šΌ@χV΅\W э΅1—κΙ<ϊ b­η†›θŸ<¦½ΗΈKD˜·U7›±€Βtγ•šοΊp ՜eZμ(—Ϋ7-ccUK§Τ?hσ­Λ’>Κ5ς X\~•ρ%•xΨ{°c—ΝEtγ¨tsΰš ¨²ν„Ι¨B€5τ#ŸxΑΒκ1“‚1εW|7\Υ1vHdκF’½Ξτμ˜ΟΪ―αlhc™hθΖqhΫψξm€ͺNξψ.δ±.5θ~[4uUΌθƒκΊcΐ@ Π Έ°‡» .Ή?z΄Υi i½'zEŸ<‹μΪ|’]ΔΎ'N”hο‘ 7Κ΅~λ/ον τγΞA9.&œΖ€(!4‚¨"«egp¦Z-ήϋΓ―Όώϋ/4`Όhώ‡κ–ΫίQ\c’ΓfίωŠl ₯―__vΫνo‡Ύn/Ο=Ήr`–t|J $€ώ”fI'“’’>χΨΈlμc·6ΩΛΎSφτŸb ΰ  A/ψd τL”εjΨ…Q‘± υε’ΥmS€»Sl’«%Žδ¨s±΄+ ΩςΪ2HΠ–νO?qqπ& †"G TΧfQuή|1νζ+Jn›ΐΕyΒͺŠ'υq―€~ΉΊεY.νpqXDΜ <ΑŠ.r7 ϊ‰ 2Χ)”χ.n!j₯‘Ϋlg[΅u ΠΈtαγLΉ†«λΣ'*‹|ΰг€iΰ|Υhqω—(›ξjg” 'ͺ±3ΤH7)˜| €Θ₯*.‹ΪάlΔΝV€α9:fΦˆΦ€›ΰ?]αϊ‘γ6b}°ξΆθ#θ»Od.½……΄QEX·t=™k}°QU'δ™ε1‚αΒώ0i…EˆφJŸ Q쾈α–ϊrc3&\L4ϊ±qΙ\eΨοNΐ&ŸΠξM#n #Nœ0-Ή6αœ!νfΒ.u3cΐ Ψ W‹?‘½Nι.£ύ5™Π-,χΒξFЈΔ΅ΨηΏ)€―kŠ6¬―RΦ€ždΧ–έμ–xͺΐΨR—n;*εWe£ƒ ±Η&Rγ =!'ήΛ1&—hΓUΪ|D=Žm‘Ο³W°°€Ϊ―Dαπ™šΠΗUηςΥKUχ•_ώ'Ώσίό՟Έ+W]ώ¦w>tψΔMkέν›_1½όt3&ζ`keάqcΨ[.~”ίƒzΕ$‹₯γYΰ–OG²@²@²@²ΐηΣόaΞ³ση‹Κλ½ώΒ|Ώ€»μ+/²½0`…ώϊrRΕΩP`±(  pΓ yυπξ’ =ΒX*]?η>}f4ΚΆΩ ΔΕ†ͺ¦FxˆWG4α%:7Ώ{¬α4€I(0ޜ7/]-xŽ#=εXT'8Ο»αξ€›†Ηξνζ(ͺΐ!ιŠι-εW6#½C’‰0Β»ΓTυ0&ΊPΎΗ€ž°&”Ή9‰ͺͺnpξVΠ.lxΌ_1Q Ψˆ^ O»υ¬jˆ6tEί¬›jΐ/CΉYŽω°»ΎΘt_w I»Ε«$C5f#’^`vώΝθ”A‰}υ„'Έ^τ‰θΡ%.\—vt³ΫGƒl—ρΡ!fΓHnt‘γ˜xΈQ‰ΎΘ'΄σ„KΕΊυpԊύΒ"Ϋ€/g&W,Κt]Τ¦§\ŸHΈpO%uŽταρ4ϊ'ά/Έζζ$Kϊ6‘μλΜNΖτWΧ ·Ισ}ΌNΐ6m껬©#ΏΘ¬s£€Wm«έ\ΨθTFυό:ΆέεφξΏf'ξˆjΟX0΅hύΊΉΎ€F½θ11ΪΒΆ*xgθΗνΈΛl»Σ!yΣμΡ).1Œύ4Gϋqο&0gh'ϋά'*νζSζ-ά _ΡΫž±‘ΐΟβH]fό>fμρ§fŸϋnΣΗΓόΤkoώƒ'\ ψuβθζΫΞtξν-gίλŽD‹£λυ6O»›b{‹%ΈΝΫώξ/I*4vNΗ³-ΰύ—ŽddddΟ“Ξ±0‰?ξJtυαΏΎώύPΘ»§‹EyυΰΖλ°ώŠΕf@Œ0'Δ©Ύ$Π_vG\d Oίfmf'9†,δ³εƒvϋψ>”K MpR₯ΆΏΧΝKŒά‘'Θ±Ÿ!Ώ`Σ‡Ψ]ŒVf[αRaΧMHγ"±i rj†Œp‚€ά[h―I μ؈Ε=jdy'! n5Nt:@° *ΤVψIγVϋ£“/'Δ½Eρ© ώΘΤƒMjΪΈ %‰ΤΧΑζ5ςE,¬΄5υސ0y­²“Ψ@Ζ~²π―Q₯朐›Ι”<.²4|qFbΒ"$ŸΠŠcΟΥ`)ι{Ž}ΐ(u0HŸbW }ŽUœ'ΨEχ]\tΟ0\\ΙΈιΚαΒΎ%q"ΈΕ£ƒ!€ξύψ{(τ*Γ/ΗϊπΉί†L†l,cάicL_Н…|7cϋcξ)0έc ηΤηN“ϊI;‘ά₯;ΜχΉΗφ§GqλΡ=Ϊ†τϊ>Έ§”Μ“zwχτΞμθς}4οΔ5£Dο“ό/χCΧΞ±Xυέ»wΌμMƒγƒl:?^œ¬½y] Χύn¬‘Th-›ŽgZ τ3­‘>' $ $ |-ΰΔ‚όγGNέ²»ϋ·Άzƒ?ϋδΑ%B2RΡ‹M6Sΐ9ώμ ­ͺ}<\Z[np T»Dk`GB„r9 "D†Pͺw#>3gΫυŠ–Κ‘Kƒ`½gN©·A€= l{=ΞΕE~˜^ŽVυ!φ?Ύ«~κ/ 8Bš€Sqζ3ΰζ6€’J΄¦Ψ]$Π.iJ(kˆ3Δˆ&bh΄‚Pg–ο"Ι>πμΆέΆΥZ’”a„h vͺΊ; ρ(P\Η@œήΤBžjw< *(V΄_ίۈμ΄Φ@·ŸέΞ:ΐP›¨ψαi;1O 4" ΦL*&€“Gε;ΆR§«eθχMchsΝ"ΒΨ½Oθ'eTτ-\F(Ϋ9‰‹ϊ–˜Κhφ]ΥΌΐV]’yΤ;Nα΄_UœΊιFμΈ‡ou6wPt}R1Υο™vVLPbKnςPŸjΣϋiin$'Ξiʘ8β̌vΉq‹ςB³SΈΨž›s†zk=±ύφΪ–cLΓ½Gnζ3Ÿx .ΰ;ԁ}΄ϊpq9ΓJΚ; υ‡­±Α%\_¦Œ ΜΗΈ2ξ;€wTQϊ]D9abγ†*NnN‡ή*σN|N1V†ί;υŸf,kάXάBAΟό™¨0!# £Ls1[\Ϋ_υwOύgozhό?ΟΎ•ίΗ[iΑϋσόΩήήΧ~Ο·ώ₯Ώ2ου~xΩ?uζκ₯'«lχτ[Ώεί^|ύ^ž"r`φt|’ψ HG²@²@²@²ΐηα²!σeγβo]|=|ρΛD)ψc=ρxE„|AB Ψr‘™αIώϊτ'F7τ‹fwhžRw²ΐ¬δέPlUƒξM¨±”qžύ?½πRΠ >―_Ρi‘šοq^xZL*μ ΏΒ³ $ŠΛ*œͺš qιφ`>}ouGθϋ’r3 cΤGφΆ#Φ)<㚒;pΰπkV©Ϋ ±–™žž’%`RΥΥ&OœΝdͺ5/σΝον+’@ΠΎvƒ|ΈΘ΄:‘ήnV3US!Sΰ"Ÿκ2¬:;AυŸ]£\‡ t¨š΄q@eΊvPQλ«L»ϊPSoκς―›ΊΞωŒ‹g(Ιb§!퇑4Κ.}C1Ψ}Ί0Γ‡ΩM_ŒqΝΟlΔδ¦+τγΚ£Ζι²1@Νf{`tvΡuΒ{ΒE—>­Π˜ΚcΒ x·ξ+΄™ H‡MZœ ΉxΈΟΊŒLyŸb ύ¬ΥξRνα’NΥε±ίy©αΰ’]Χ½†ΟŽŸ›™Έ#Ϊnlε1Q:τ–>…άΊ» m§πeΎ•'$Η¨ΟwtP )[{1₯―!±».%ς^υώn);Τ\vχ@‘έ{PφωœΨ­XΰΙ€¦½o°Ώ?nΗΎΝψ -KΊ‹―#κ”ΡΉΏ:ΝβψGΈψŽ[ϟo SακΞ]ύlžΔΩίyϊ'τ͏^Ϋ½ιώΆΟdεΙΡ_$ν»²³gyKG²ΐ',ΰVΣ‘,,,,π9²π,8Λ@υ…μ¦ώΙ¦^ /ν_«z<γ‡…ϊJ`€tͺm †Θͺω,°Κ±~ 2’… €:[μ˜u ΄’sVΰB3U`vy—ͺΕΙX<@€π!Π␰EYQAАλwaλžΰŸ.α@»4fŠKΑ*» q¦k,Ω{=@ΥeceΧ₯,ΐG§€QP#―4T€'ΛGWιƒ*Ί gλCΥ¦?‹δpy`'x‹4ͺη@/ ΨΈ΅ŸpΦΨ. “Fv~+Ϊa$έbμ¨]°8aά\UΧ0hΗ,σšL§¨ T‘²N”ώ0θ€EEί&£*·φ!/½Α’‚%u‘†Jχ‘ϊ ¨(βy(ΙτΥΞ² QE–φ0ώHΫ½\π_LΊ¬<δ^‘n7 !ίΊ­fŒ˜ΜŽύ3¦΄έ«ΩvlO#ˆ¬7SaΒ5§=}zB1ΤΜ«Uτiο+έ.„OΗ©ύGžνΠ~#n,(ΟσΧQ‘νηŒΟΊbμ„{@€v²`ΙbοM±02Λ.Iγ[]₯*βX Έ[Ψt»3€K{’]ϊg€·γvΫΏ]ξ[,q£έXέhjΛ†΄›Ρ^o±˜αbγ}Ώƒ}ϊ€ρ‰‡.ΪΟmMt­Κέέo|σG'_}ώ5£ί:Kœσχ8ΥΙ²·’H£L?ΚΗoςϋχ~mg6ύ1|§Ώϋ›ηΚsώ"*uΑ‹Ϊ‘,ΐ―v2B²@²@²@²ΐηΖk—ΥΉs†Oό›γχΓχ];>žLŽW<¦w₯ ρ]Έ+@λ_ œͺŽ.,‘\0θbΒ Ιtp3ŽΖ†7ΐaΜ€„žJ# ₯¬οΤEL4?H[!,•KζΚ³"―œGη+}”©/ό”I/„ šΗlrB›¦ΤιkF;&(Ρ‡,;8žπšgGγEv|@εJ½€ •FŒ–Dlΐι–Ϊ*₯Ί θ[¬‹‡aΞ\T;’NXU]μˆϊ2 νΉΎ–gρΊqΈhΝ8ύŽΒ#)πfΡ%ͺ€›«Pͺ‹ΚθOλn0ΑίvFΎQHχ'ΗΩQŽ9?g`Ζ€σ ₯œΠ†CΪwkM:· Ο‰vR0yς΅― 6VΒ­ KώΰPˆm,hαΆΒ―ΫE+ή κΚyAΪΈŒγ’ΐά‹ι8aκ\ή{’Ά ,΄+ˆ]/q’ΰ³ΔΒB›‘™9‰MœΔp?΅CΪθN€ΐΉ€(;ΨzΐηΫΌΟ¨Z0ΥOϊ„—@΄œ6ΰ~1T”’Fθ8¦&ΨY¬& τzΜ’Ρ"g\1ΤuŸΠΦ)νp›o]ηόΓ“1p,@sίΨο3Jι3ΙΨbL·h|ΊŽΘ―»£Κ± KuΓ`+!&[L8ˆ!M~ΛPΉ.πΗφΎm΄χ±ΏSLόλΗΨΌβ ΅Zw©ΌX^«TΓρ οζΈqφ€d‘ϊΡ?ωΚγκ‡|ΓQ§χӏvΚwšςμ½χΪεt$ „’n„dddίy³ρ«ήυΥ;Γμ—α 7\xϊ‰ΊXVaΡ@aσΊSε[π(άTQ…O`³Ψ֌YT¦j t€œ‚—ω]œ†Zj\θπ³:(™‹€Ά"eΖwNјΨ|C)1J°žoaC4Z©V“έEnBόLhΆ„Ο‘πΑ`\CyΗθ,ς£Ξc6 ΧΆ 0nzΤE}r~“-ΪΡEs·bΞ…ϊ§j­Ϊμcω˜:{Ί€θ"’kHtΧ‡V¦$ ’H‡Q€,ςW1 Ÿ*Ω.D4‘5‡/vΣ…A^’φρΊšˆ!S`ΠMBŒ ΡθNƒr­σ—™%γ±(\H[XάliBP"6ω¬ΥπxΘϋΌt?θΠ>Cψ@ΑS’8¬„Ξ…Βν€&Ί‘tc@AΩ¨%ΰ?#jθ©Šς°"W}’‘Wz•έ†έ•Π>yeΚw8χήwαYz·kιΡΎvχAŸb`qμχ†#‹-\xψJBχΡ·C~ϊ€η4M+|q;M―]mΊ;£wό'ΫΏϋό«n~h§D{νS’ €Ζΐ{YD_Ό'Ÿ\Μ²ο{ΩΕζ,›‘B{[₯#Y ,:έΙΙΙ/’φφšβή{厼Ί>ύNά~†½§―ξTnŒ²bεΦ”°a±ι0±³£«DΫΡTΰSνU‘ΥGUX£/{Ύ΅°0Pq­‹[ 8τqR_jσvέΕ#(‹k0”π EAYφ W. —ϊΒ2‘’ †+ΐNxZQ†mΐ£€vρH\`&ΘiΪ€ š€R e΄{θιsμNΫ[kUœ$fjxμΎn,o΄ Σ5ƒν,Hΐu€Ϊ>λna=t1ΤL}”]HWpΎUž;;bέ4JΐV₯¦ ͺΫϊLΒ-vΉΎ4“.DWˆME(ΏhƒlΘ³ε°J€΅.ώ΄eID•€§P7£ΧΊ`Έ4M˜uWΐp6ό›[χΕ. nήγsŽK…Κ2Ω£™ζΡŸ…ˆΊohgΪΜ” Ίj»  γO^’™μα…Ÿ26€,c­# ­ˆ H؎v+vQ<Dθ[/υ-Ήηjž^ˆ€ͺ±9}r’s†œΎŽ0p—λ)†₯CQΞi3„ {†ε½DŸεŽ ­½™]‡ϋŠ(NΨ„oڌΨV+1©Σ6œ‰ ΧΊτ+ξŠε.ȞbΰΆηwpo?‰nd·ιφΤΧ| xœυ™έi9@]’Χϊ\ ΠNΞ4_ΖbΕ[Qܝ”uιƒcκRU[aΫΨ4»Χu·7,χΗ‹οεΤωΐhZ/βΠ­ƒ™ΨYΒMžY~υ§dΦ  Σ,,,π"YΰͺΥ=αOΉWœ•ίύω«ό_ΝΗΔ8`%ΩφˆƜ0B»ΞΗλ, Π@# )ͺˆ}Ύέ@7… 2/{NP©ΊHQ.4ΐ|,!ΐ€/œ­‰sΜyά,άΒZe1|aE²΅‹ω ΉΙ ΕSΟPΪXP&Hm0tžπ+@λK:σ t›hΔXΰ€χ:­v+lΓͺ)IGd Ϊ_…C ο“xΠ·?Β±― ΰΠψiπϋj!pΤQα§+<΅ώΥ.*΄LMκr£ q( εδ@δœ kȌτΙ­ΔuŸXΠ^ο_9β sΝ…‹ΊY¨<ΓW°{L8Ψ3:Β°Ρ σ―XˆWΡμ `ϊŸŠ8=„ΝΟwlhδ‘^Ι28κs³£ζ£?ΰoΐΔ"w!pςj£ŽΠ'ϊ]ΡfΫ1Ηs\GτŸ&F οΊοKΧηΈ‡[`Υ|Œ+…γ‘’­IΪ(ΜzΚ…£ˆδΔr¦έ<φˆ2&Δ¦α,Μ€%sϊG)wHghγρŸbS_ͺΆ²‹ΨeŸ±έgdc‘αx G„_”xmˆύυΫχžπ)…вΞ5޲BΈ#5€μ1v?bl KηDHeϊ„"εΚυc’ –χόGšϊ‡wεlIHMώ=σΰ;ΰ³―=3]ϊόEiΠ_”Γž:,,πb[ ΩξΙ«|ξ‘W@.΅τmϋ—ŸͺGlCΧ%ΎY Hαψ  ¬(™ΤpΔΒ;Ύ«œ“~u£Ηϋ!!Κ„DΕμΕrtΒ,ΐCœ „ †"όŸΉœ6ΓΝ. €–-[Χ Nx¨ΚΌΝ"ΰ«Uf koΖBΡΜNTέ™ΟΕn†C34ή»i§&πM±·n2ͺξ 2' 6…+ϋΉ΄U[£l£ή‘?νEΤΪ,θβΘ@YμΙS΄hš§lˆϋLz w€ι)H;"ώ΄`K†·kؚΌΡ­b9ε‰Τ‹9JΪβ&1n("όφΉ_h)yw#|θša„’Š.οsΕk>EΕe’E… i71©UŒ―Νιˊ΄†›aˆΆ·ΤŒ ΦΙtJτ)L‰ώ̎΄Ÿ€%’ΩΞθTΆΓ$α°u@݈ϊά§[Ψ˸̭ːMv:Σpή»oqΟ8L΄ίϋ–χi°'j4Χ\KjΈ>ΥiΗΓ‘γn 0φζ7p½%O¨SώˆŽn9έ υ&©BWψΛ² ¬:a»hUDώΨ«όŠnZΡσW –cυqυo:ψ ΕƒlT]JAUT靲3‡Š©™τΙΗΙφeŸω+p 0.Ѧא@Ά.Β!ΐ!ζΊ‚P± +ΰI₯Ω8ΞΊο =¦<9ΚtŽ“ZηΖ$Ί|œ° °|·P9•κγˆ¬ϋ¨ͺ*Γ‚΄nTΛuUV@1ldλ`©Οϊ‚€ME»tα0¦³ύnTkΕΒ4' υ*₯ͺΝͺΏs€Uξ 0· ΪμyέG ΤΊέUΖ Ÿ8AΠ†ΓA/΄ΨX;ηJΊΈ. d:§Θϊ.&€ίpsΗΌ Έ£M.θμ>Ξi‡OΆΙjωΊΕΜUΎ΅ηΈQŒΆ·cΰ’vκ γ‚%χŽ&UlΜΑ$ džZ˜ΎDju3•ސv8j#Ζ~Ό²δήͺ™,π_Ÿ°¨οfόƒτ™ξ3>ΊΉ¨φ°½‘δτΙv’βxΉ¨Ο§z‚λ.1€οϊC;‘κ£Μ;Ιš±pάΣ>»PQvΌΈ„2ν¦1ZIwΣ’σΩΤφΫƒΡŽ΄~ κCρW›f²ΕIΫa —™Xιϊc{O³ΘΠEϋ”7‘8O­[ΠδSlP/§ίIq?ϋΐ}χΡt$ E^~FφXΨΘ9šZ”TBΆ‘ΟΙBόGπRΫN€έͺΪ+sΚ •°…-Ί(Ώ―τΥ‘sΊ1π/JΓωEH8νε @*€νΧUΈ—€  l΄†πε–ΨέDZλΡ#½`‘šυ­ΔΆΉΐpŽίqƒϋ‡@μ–ΡeoH›i μTΣέjΊGŸάqΨ!z1ŸλΞΕΤ§Œ`Φη₯ΫN8z¨ΘŽ%νΒv…±Šι/ίPuΩI1Ε‘Φ…;ˊ±ΟένAv@;ΓΰΕΨ“«ƒKGƒή³ΛΠz3ΒΎ‡tΟΨΗ1 SƒeL=‹!ιλh4O œΨdΫ½l~Β=†­*vβ!9ύcRBHΈΧb’h2&Ε„sŽ)<}D1’ΌΫ nίXˆ§²΅χ9Ÿ}ΆΰFΠεV Y@,ηλΨ2ϋ’ͺϋ.Όd€’Wt·π©G»iK[ž₯볎…Θ½§T±UγU―ιŸQιωΏo”mK”TΈqψ>O#fΤ?αю“ΠΌθco6ζeƒnΩ<½gΘς/I?ξNήΣ‘,π-ΰύ—ŽddddΟ(ΟΕΩ{³Υo³ύ»½xεΧ^;*fHΗ<ξ/3έj PhEψ’ΦV†+ΉξΞpό'1ςy­AUαH6I$E-Di UΦ.Τ#‹εG*„ν’Β@dκz€Ή‚GσΒiŽ:ͺ»ˆ ^@Β7šwia‰€Lΐ¬nΆG`1-ΈŒ‰ή’…p’Si.ŒλšB[ν«>Β=κ1 ]‘­ μφυ^ΤM;I/ͺ°».XβδΥ-­K†|/•¨1  .v €L›Ju%Ρ0ϊ ƒη¦,Δ9!3ͺ>ΙTΓ-k0&r‰νy:•s†ΆP†yHμβ6£?,y Α­oϊz!e•Τc¨΅RΏkΖ’Οwύu  ΜiD«^·ΐNψέr°Ο—ΐyIN—›@—Ÿ"²†υ `ΖGπμ`š3Π.T\Χ†ϋdpη*Π(Ξ]Ύ»¦­³τ±`ΝxψΤaΖlb Ξ‰νμ€+€ΥŠΈF'YΈˆ»jwΝδΛݍήRτqΖ`άΨ‘ΌΨώ¨ΟšxPγ"ΒβFo2EYŸLθΓlδ ŸͺΜi£ώ±Ο ·ξVΔ=α3w]ΐn(ΎδqhGέ8ߐ4Ί29άB°νΤMΘι¦c@.͊•±ω¬ίrψΚdIe{/ΓυΔI§cέΊ‰ Ps‹lQ†P~ΜλDΥ]Ϋ ΠDηXςKΙοAžrnρg²½½ΏFή’ιHxNHύœΜ”% $ $ ό~ Όζ5D…ΝοYƒ?=lί T»ύ~)̌ωK?$<ΎΟn6β)Β lΨΕB8ΰ‹Π $p•?ύ‚Χ…AUYG8ΤΡZ0₯Œπ§%πn €`,œ Σ–*θ΄=ψ@;Ί(Μ= Λˆ†/©ΪΔ&Ψ¨O­»ξlλzΰ"»V-X<":­3„[l1Nϋ•ώrΩι ˆπBΣh‘š6χX$i€ˆem*ςͺ¨ dv1Ύ³y"τrΊAο1 gI;‘ύ.PŒœ^’6†KΟθ@H]ξ…έltP>νŽΕfT΄Ÿ ξ ]έYπ­vBΣaœ:4ρ7Ξ©wμœvs 3ό^€fΞΙ§oχywznQΞ¨Ώ=€ΏΛxιRc7Ϊ%ε©CŸ^WΛdς¬οΠ†]”δRίΰιŒqšΩΝhσ” \ΖΤ1eœIzOψτ"&)€7€_Βήl1¦‚1φθ.²9“wR\`“y…χu[fjίχΪ| P’Ώ‡=άρΠ JŸGξΨτˆ~ ]M`ψ1ut²S;;œοdΧ™Τ”΄{ΊήΊΫI†Σ'$Ί#ω€@w οiύΆέέΠ»ΨνΡgT’Ρ²γžc¨bŒΌάχαϋΜΈ’N<@†[†}η₯Ÿ~Mί§τ―!Ώ)Ϊ”c“”&œ}~ΗnaΣ§ͺοΧ—λΨΠΈΣgvΪ6e²3εΙƒ“JFžί+p\;W«NΎ<@vο}eίφ*&g{άθ{>JG²ΐgΆ@θΟlŸt5Y Y YΰY8w׍{ξ©ή/=ϊΖ’\~σ—.ΧΈ<”[Oΰ%Β|ρgΎΏΝb΅p݁Rψ›mCϊ4λΧκ£μœeυg]|\ 9ΐθj ?'PδΈΒίx“€&ykώΦηψΣ ©&ςR,’Cέt“–Ψr›MΚ>°@Ψ/At€ί-ϊ*ι©[·2u‰μƒοΖ]ΉζΒΆšΗόL(ŒFL%Sί[²ƒbΩ₯!F ͺU©'ΊYPJλ׊ϊ(Žυε†μK F»—8ZIΉϊ7«r»(P· Λών/]Γš<”hžφ4:ΘJ žλͺֆ𳍭OΉpD^m@[Ola.Œ‘FϋτΖέΑˆ<΄Hξ£Φ:NŠv[twB,}q Œυ""€0pn--<Ÿi;ΐΐΝ šΆPΰΪeR±CχΨΘD΅νaΟ’scΪCπΏΨς}z}LΩ:N` vπνζ~›φ”1€­[ψR/6+‘:γ„Ητ‡vWδk§@Œ“οΐΩ‘Ÿξ.ΎTΛΧܘίc'wτ[7£Κ8.΄3|F!Ž{‰²CUζ\(ς\φ‰«δΊ»άΣζ:a’4Ηf>P%v±£“*AΩΘ'JsΘΗ8:1ΓXF&Ω¦ }ʅ囍`BώΥμ˜8ΦΦβ„ £2ξώπώbHQαr"ŸΈŽn>Q/ϊC‚ŸτΎ„gχ’xf¦#Yΰ°@θ?ΐ@ιr²@²@²ΐ'[ΰ£=λί}Tέι»J6nΨ–Νh\τΥνλšΑ{•o€™œΜ /Ηc «ƒ³>ΓϊξΊx0<‘˜xΉKœ8sΓE€‹°f’·œα―>Κ~*ΰΘ­’…A†φ1Ό2AQ…ͺ`Υ_@€n7΅2€ΰΪΞ Κ_ Ό(ͺϊκκ8βΟPΞ髊¨!ί:> π νsΪ^αΏ½ΰ±ȚSW„ŸΓ@…ΦΕmC>i•ΧwCΝU]§@_Ρ€£ΰC3gtΜtΤJwQFi‹υζ%>Εΐ qοk^'Ζ\¦[τW ?D‘(ŸςάpΕΊTσu™PΧd¦“ q_X±p―Uϊ7Ζ‚†cX Ρ<Ψ΄ ν*ͺΈ.tΫΒ/Z%W`^8ρ*-[δn0ήtΑ8Ρd#ςΘI6aKπ>“ƒ.πk»3NΔ«““˜Ό8φ ¨‘ΨΘS= ‡ΪͺS·“ έ6fΐ£γ_`“%!·ŸPnΓ«z)ϋ€Ι†»Ό»Xa–>»™ ΫxσNTδΞ@IDATξl›FΉ)Š>Σn&²`ό–Œ—aξTέ·¨ΫFΈ-·Αδ|ηl›ΆWuψ>31aj@9Z†xΞάoΊHxΈa‰φwιdΪήΙξb“š!³Λ# {‘ ΝοΣνΨΠθν6ίϊ_Σ?μΒώ7ΈΕ 839¬qύρi H™N† ΟN™ΉΫΈΧυτλiΤOeηΟ―[mΛΣ‘,πι-ϊΣΫ&]IHHψ”ΨΫΛk} ΛΡGίάCΎεΦ­β₯ωUuƒέP Y•6gγ‹\λΦ<·Š+¬™¦Π©H£―Sόν†ψάΥNχcϋ˜άΠj.Ύ@€3²°ΰ<ΒHduyˆ„ΨΨχkΖβεk6F…ξ–†ΠCQ&cG‘H£šHο"Ήώ±3€ΔE ΕTΰG₯ΣΟΨΝO”λ€"ύ»ΑnΞΣ&|oΝ3CΡUiwα–…Ϊ6!_EΡ cϊ„]3»}πϚ»(“ώΠΗ.ΐͺ/΄zn `ΞHΫ„›Ή=DΒΓΎ(šLNJΪg!¦ΧBε7VzމόΉ΅ 2ΥΧu1Ώ.Γ9ιπ Ψ؍΄Q² tlMΞψ„yδ%>ΔΆ―‰ΙŒ;IR=Pζ†$φЎӏвς klE~Γ½‰–Kβ³L†υlZΉ'΄ύ‰πuΪHv’7jTl±Τ4s>„›’uΝ€@Ÿίλ\;FβWv‹uν0bq ¨ά¦l7@QQwηΚ%ν |Αύƒ}T£mͺ[·/π Φνh™ΟβΎYΙ½–H>—ΰ ι:–O―|’r‚Yά-ӞψΤΕIŽαΤsN~Œ†αΩ9°Ώ4l!γYΡϋJqΜYΘ§MS]fά/ξ°¨ίΌχ±:οaΎΛοΓmΌξdΰΞ ε\€nΓ>‘Œkψ9_"½ντwIΥΩ™”ΏΊ¦8 KΖ;|½ioΨ¨‘c™/ί8ϊΐομ\ύΪWGΕϊ•€#Yΰ3X τg0NΊ”,,,πΙΐw±7oΎιΝΏ·»}qϋφ6gέ\ŸPΆ­HψΓ ¨,Φ€σ @‰(Όω›μͺ•[(Α»nΛ-ΐ*ΦωŸdΰΚ„«t΅P¨N£:Λ τ}τ €d­j»d# »©‰νP΅Σe’EΠ €8¦=ύ-a0£~έΒ PH..}c»ε2μΫ7”K,hO@>εΚωp 0Ι’β D_Έ9”<7¦―;τ‰RF1V2‘ύψ&¬πƒ<φQ V)·lUM«ΫW7ΣPΥ4.΅ΘΈ%5ί»ƒβ¬ί±‘ψΈpψνσx^u=\hXŸώt…^ώsβ Q)(ΊF°ˆfΠc•YζΞ©Σ‘N5tΉ˜‡jκXυd œ‘a — ΣνΊφlΖNΗ€uu§ Cqkf tqAAΖΖ‡Ξ₯y|ΆέNΫΨΡŸφw5α …˜¨ο¨’œs nm^Ξ•Ρ6˜ŒθŽ3,uch€hΕr?/^Ψ H{ΒχY :^Œ Uwh}Ÿϋ(΅@ΦmΠu0ϊI…ΫPUimΞxx³P.A„α–4ωθ‘kDI»\4yŒ=ζ*Ήa=zΟ9=πώ‘ΣtρGZeέŚ'τ‰χ*1ͺMάNHOωΖψ>w±±ΎηNhl΄Yw£Ÿ°ΨςQή½cΈΏ|κς}¨(|Œ6 yΊ°B‘^aΟPω}pθ.šό†’ˆ2΅/-œΟ§ω©NΩt‡£Ϋ&έΑΏGΓ?„ νmŠ•Σ‘,πι-ϊΣΫ&]IHHψ΄Φ·tώφήΨΆμ¬ο[{8σ9wzCw«»A²# D―A"‘ƒym Ϋ€€„T (0ε˜χ}Tα“qlƒBΕύp £yOCH0j0z|γΞ<ν³σϋ­Σ -ΤΝ$Q‘ϊ­Σ:οžaο΅ΧϊφΎΊΏυίυ}«εΈ˜*ŽB^ψ‰ϊ€‡δu6­›Υ+ΘΧο€Φt‚" 8ξ Ο(|•χΧ±w(ωiο-Ζ4c†π&`ϊ—\ΥΧJs†Y*mp£₯»#Όπy$Sڏ ₯ yˆ/ϋϋ­QϊX Μς«η5Ρ|Λϊœ…ΎΪ„]‹cΘΪ‚Ω̐‘―ڊom*|ͺΝ€—ΎέXmxnωͺ{˜)νDͺml'ΔΈ΄ ‰0―:?Υ"¨:ΰnHœ&ΌΡ²!\€η‰J) ΄Α’`6νβ3 ͟}]”hιs‘kΓd‘aj@ώγβ‡…„±™18Β4c]‘/y/Tq!V―vww£r>$ςl2ŠJ­‹ΫLEηΨησ9•Ώ­nΗyΰόr³{i*ο¦Ζ[R‘ΠςΪZ;\Μ¨Ίll#0²ƒ!ƒϋθ½C%v€“.–˜BoM¬ηδs.:fΨ0~dRα$πuΜΜQ‘}Δ Π \°t˜OΓ₯‹μˆ_θ7VΑ•©waΖΰ5+) γaτHg%…[XΨ¨eΖ ήo₯6(žΣα§eΆc‰r”vΗ§bΞT»Ζƒ‰ ―Ω“‡γΠωΓ§σΦ΄G_Jβμy΅Δ<§kΉEq šψLF“ΠΔ’ί{ΙΣΎZZή…‘.šUΕή°ˆ1N Y/0ζy‰KΏΧ‰woΆc{Δ²ΓFΑσξDl&hΣχVII^[ΡŠ“^wVtT‰·t:©«ώή^Ιdμ ΰΧ.\Ό˜]εEz€όqHύΗE'}—"""πG#°%†πΝαlܚ,–›½ώ‡M6Φ(~³Xrv Ικr°SX(§ώΠT¦Σ‚Ύ%a`‡…[=όΌx¨Χq?–Χ‚MG˜Υ· ™ε@φές« †•€ΟάΗ4i"›B¨°€§B“λyφζ¨ΓΐΈPθmmh°3… α“ΎxKάώ’¬s ΐŒv—ŒΛrΘήnυpoΨΧ ΪV„ψY¨9t$E‹}υj›dH%‘ž₯¦‰.T^@œ zͺΛ+³1`Γ »,†#{ ϋGˆDΕek€qkOΠ0ΰdCˆΣ/k :Ϋjh%²­σ‘\k‚ ϊάdLzΚυΐZ‚»ζ΅0¬ecΞ$`Hήε\E[5›~T(ε+ 4ζ§FΑuR!Μ™>N Σ?s3Ο cuBb©…Ε*„Q’f"τόtΒ'>(Δ’Ά‚}j–ΑVCŒœΥxώVJΨŒΝ‰vzΑYOv8jU™Ρ^ΓsΑŒΛ|Ζλ8Ρ ©P]bνisn{XΪZELEΗ6₯c‚ ΛΦγM›ε44˜ΘΥͺήN€°΄TάYζΞοΞ΄ΰW8Ηθΐu·Œ¬#σbθδΞIYGh˜§– ³fhΏq²3ε³ε•ž ›$ͺΑ'NΕΕN?|όn'-¦a6‡ΧΈŸ3@ν§_τΩRδNnTσ½”œ 9+€α%‹Η΄Η?°ίν„{›½pύ~~ήΛυλDtΞ΅άΰfΔ„€g²–λ.ήΔΑνV΄α.Ž―…f6™½ŽΓΥΛq0ΎLŒ@θ Mϊ"E E Eΰƒ#’Φυαaž½ώώΩoώΣοζτ½ΛΥΈΎοΎΠ£i8΅ͺ ƒcΉd”<φ«Ά5€”˜/²€9Byž΅ͺrݷȁ—ΐ%S«Z«nξt΅Rp+šν’7²  έ0PΩΧΫςVœύ@¨˜ΪοU‘ϋΠ΄Y1ΐΐžΫκτ§ P4€Kaˆ"VΆ3Σ„©ΩζX’g,Ά³ Σy۟ΓD΅YUά.ΈΠkI;.ξr UαΜΈQtT)£Υb υS–6„‘5γw ͺΞsˆYXψkdΏ±kΐ}U‰ŒιΛb?€ ϊ'θ Ζ.δΣ·mΊΈ`Μ}UiYTυq H-1Αtά¦ˆa. Xͺ‚sΌ.ŸmTΥS`~‰Β9Γ²±UΠ“aDnP|ΓXg¨λ±π‹°G6YΨ £0ΟΡnΐ8‡ΐn­Εγ1C*gƎYΥ_3o˜IΒβ'*ζLY’―ΪΆ£Ε@œΥ@ΆwΌ^,ΰ‚U™ Pˆ =‘ α”γφΨΌI_, A:sAγάΰρΞ(^d(ηUΕ9–P§ύœΙÚb-mΆ·B¦)ππγPθ₯GwΫΨXœ@ΝÐσ8€mKΈ{έΩηFΉ)sBo3¬°@ko>γ<0σΚ8vοy‹ΙŒ}΄_8F†#βΪK&09 [xW‚ρkƒΑ±fXŠ8 ©;τ1η™ΙGo—λ€Kθο?ϋΖ5&O11ͺ9¦Υi.N^λ C/°­Ρ—μW/'.άwx; GΗΓW…Γ+exΘ{A±[τ.=Rž?  Ÿ?.ιӁŽΐΓηαπp³sΆϋ‹ΝΩζsn-κN―ξ"£Ε< z£(’ΜτΠJϊ­Πgq˜:³π ΨΪXšΩτq€ UCτ,«\χΙ£ά΄<¨€zλΎ3"Z@/‰Μ’j^iU`dΖxLΈc›ƒq-ΤΡ§Ά!ΔΕΐK ‰.>i¬ qq]M—ͺ%AuΪtq.Ό’ωχ{šjŽfxν$˜‡T²•²+ΠϋKΩj~jΪ]jτ¬¦<Χ,<8£²”v¬(Θρt³ŒΉΥ}CΈZ‘’ZΫm( Θ8-*ΝHM[*κμΒ’2`‰NFŒιδ°Cdk‰“ΡWA@XΆΔΉŽμ5η —vΤ} KΕΩ[ɜρA¨Β±F¬šd\ž£_De»D΅Νt6šώOŸ³πh!Ο‘Υ%]¨=yCYμΉœ) ox2¦XX…νH Ξ!8'„ΟI‚ψζv*αζM^σT ―ψcΣ{Œ«œB-ΐ‘…„sΞο»άέθ3.ϋNX~:»fb`?[\ƒE§Λ>ΐ1qΥs-πš1₯ζ;K…;_T ΰΉ γ… weΈV›©G²B VžšI[R¦œθςY₯ο„γeŒUυ4Ζ»&Ζτ\oξιχ’Mζt|†7Ÿ-βL€’ΘIg—ΙK“ΙΓ@!G5ζ‚΅:dΕ¦ ΎωŚ ±ž,˜lξvvHMΨΧΩπ RφρΚ½jχšσWcP©GTΚ{†"έEΕήΞΖυi­x·%ϋ±Χoψ˜φƒ―Ή~ή3žžζτHxή$€~ή°€SRR^8—.‰ό_Τ?>MΎj ‡σϊΜΩ^Φ€Γ)P 0γ7V‘>fΰ£P•Ϋ`ρ–½-Ylb qλ/ΦΦ°„"ΫpΥ—±;όΡ7Χ³πε_togλ}œΜκΰb>ΏΒ‘τh ‰ΦΰΠEˆcΪZsϋ_υΫ|zτPcΕΠΚΒ/ ଀ί1ο_™SY΅Ϊ )υTΥ€νVΕεσ&i ΌeoIν £χ$Œͺ€c­˜x˜8vϋN6 ΰG΅$.ΞTΖΗ@,_Ρ>BS ˜Ξ‰ΡŒ Α‚ϊΠ\r²QΗ~Ωwmeΐ’±ͺdKϊͺΡVλ[Q¦\ίΆ £·]Ј @ }ρ½κz`VάβW!vί’γΝθ0ΡΕ@Ÿ5ύ]CUVύΔ| Τ:1‘/Ÿ§YU dSˆ£-T³eXY°f}βNwΜΒ‹›Μ8Οt›TΈX8?p«Cš‘$Ζ(ΝPp ¬ϊΞO μ'\7ΕlΒD‚qX,Ί΄’ي‰\ΧL°JXΫ¬,εΨ¬δ#~wP•]`Yσ ΫdNp΄ϋΔa8€tŸ»CfPοAι`r1-IS˜ψ ͺsM_Ϊ$޽.Υ97#Ζ:ζmΪΨT²l½$)_ƒLί‹ε_bΪτήπΚ‡9‡2=Rž7ρWβyΏI¦€€€βΒ<€ΕΕn°Tk 3Ζ"1Α%3τ؊Š΄c5ηqˆ―€›!vΥom(%ϋ,ΦX:Y cΰ+@ Em’8B<‘}’‚l(8– ΩDεlš5κ΄‹‰rLUx«-Φμ§ΩΙΗ³λ<Β#κ/w΄B¨Κλ_.Ζψ―ιsGΪg_3XlPK‘DŽΓ8ίœρiO ‰ΫoσB7σ2[lΕ3β’DUe³]f44-Rc\K¬Vsρ9/_Gi5a€eΞ3’ΥΒ³ηwλ“1ΆŒ™1Ρ0<βIΰ<Έτ %–q”Σ)6)|GΞeW€ž˜ΆιŸUͺXœ)}p"‘"Ύτ@lμDN;†Φ‹β؟¨ž3‘¨˜`˜NΞμq1•­ΕœζœxΜ-!μ%q^1Σ`k&xœ[ύΰτ7ϊέΉήί?ž0y[`sΊۚφ»‘7:ε5j:J1QβB ?xΩΧμGtΈNΉή8B½ρυ|―Ήx›ά6θžLΓσS#ξψLœDJR¨fŸΫ3$Ξ-ύ¨‰EœΨ1Φ9Vœ(αd|~–ί―Α™3^·›3ΑζΊ|€ όlΈΓΞΛτHxώψ›˜))))Ζ\Ό(α`.χΎ}4ΊύΧ&³eσt΄¨e"sλΊjΙ}cn=Γ‚c‹ƒTόQŸ‘˜M G!'G6-Ω»Σ gY\eEΊωι,LΖx©ςfD;‡%ΉU¨αQƒΏπ€›@RηbDo£ίζΈϊΝœaΑ–˜ύ€νn±ΧŸ—|o~γ¦j7°TpΏή…uΒΈ€¦WΫώG(D:(vfό}υ]Vκ J¦μ›0 X’RN©Ό§ςΫjw’Κ«› qlίηv9E£ Ώθ@‡s‘Ÿθh3Z…t§5θ…½ύ~μΧ ΖBΰ8ι‚j°U±ŸΩL%gιl«ΞΡ\6ν$$i‹6 ΒΡ ΰZβ…%ΔΫϊπΨ ˆž©'Π9κnΩk…%ύ€[ΨDA l ζ8ΦR”¦°3·΅…?zM*’ώ w50.ρΧ4Ž»=l€ΉΎd!ΊΝΑ³εŒqcΙΉo@T›=ƍёNΣA₯]&;Ο>b›Ό1 ۚ‰Τ²žp­86βΘ„¨ΰΌpjΣsϊžΩ E$ζΊβζZ“iόΤ₯½ν€΅νŠ˜κ7Ου½C«Lzuo\„ȁ˜nqeqνcnφθηξLσs?―™˜Πu½δVstHNv*ΌΩϊήu‘η·n‡λ%)–ρβ7‰‡mο±wd…5¦C«%™_Ό] tΟ+Τ ύΪΖ„3Δ3, ^Βευ“Έn Œ§Œ—>rMζzέι―W¬cv8Ώ#V¬΄ΰΟ’΄WŒo3¦)™;°K‘Žχ”όY‡W²[z€ό‰Hύ'†(m"""πΑ «*τ#ΕgΌqηχ~βΗ~ϋηΫνή›ONn“­.Ηz 8jΰηl¦"+ ¦.ΠΪ„ š$cV ΪχBKοF š±qˆͺ¨vW°Σδ ΐKΞb΄˜Υύe.ΑΪlsf2d1Š›E'<ώQ52c1β)τŠ dπ=”Σβg6{„£ΕςΨ*Žτ₯Db>j`Φ‹ώξŒΫϊZ ŽaŽk­)‘#[,ς‚g™ΈΘ- »Pσ> ‘ε£ΧzΕvBτέ²o ό™·ζ^^7€©^›Šsψ™`Έ}ΰV­(±“*:Ts0NCTϋ]pVΑ[Ώ|Q‘υΰ4PζύC·†’*,ͺΤ‚°‹ηΒ4J₯PιΔ E'±`!*·ω—s€M<㽠 œsΐ,% ²X„ΆxΗ€οŠ…€€‘œ:ωθΡ₯Ω0rTRΖͺ}£ΰ 3aηΰόOςΜΨ?R, ­ε#^'Δ‡–ερ„6­ˆκΛjŽΥ₯/m’'ΔsζAΐ"γ46V:ɘΐ8™bΆαvέώιƒ6‹˜;œζ½2&¨qε‚Hη±lλρT­Kξ,μΕ ‹`ιγ «B΄ υŒΝΚ”ρšcF“ʈב˱ϊ€°Ύεlg'ddί¨'ž#³Kc«(ΞΠwΥn&ΔάI‡ρή0>f›ρwEe|Γ9+,δ΅•lq cSaTrχ¦EΜbΎo9gTόjqέp­RΘΗ GMίZόN5˜T̚»lBφ£‘UD³φ>ΩΕκ^ χg1ρƒτOŠΐF τΖ#½KHHψSGΰ"ωbμρw]Αšπfςά’Ξ`δΆΉΨXP΄ͺšδN­m`Σ’Κͺήκͺ„¦1p}γζ…ΕW{ΐβνυ‘ ­†›p°Cb o4ZΐoqΣ4ΰ€ΥΕ‰ͺΪ.\œ²οŠT΄ pPIx‚w)δ’‡S`"|ύ‰ZΩp»–Ÿ¦-9Κ[ζmΰΫΎ«&6¬FΣ ‡ όΆVuΫΐjV΅SΖ5cD—νγέz^Χ¨ŽΠpέcfεXP΄ΓErδ0λCœ)°»ͺ¨ΞωpN[“q@KwΔK³sΜ8fήΕ$Αwͺ°=*΄˜JNO/㈌Ψ³ SΔU(αk½΅» μ™rŽ.‘•„rκ¨₯–wΆ 䘸Σ4 ›ψΈ(oA̜XএL.8¦ΕH΄dΜΩGλ€ν-hoΕϋΒT Π/ΑM:5σg7T,uβη›‹σ6€¨&ν rM‹h$@€ίlθƒv#<Ϋ―γωηΌΩOk'bBσF»HV²«²>J²9™½#`@c©q@Ψ…Œ’mŒύbZ€­ˆΖΚb^ς5'mΕ‘βυGμά·aΦ Žz’±‚Ί-lΓd#γ.ƒŠ0ΧοŠ”vGœ£k”ΰvΑ§ώlU]}ζNtΈ_ΐ䍫“Ψ΄Ÿύ†ΞΓϊτ:eέΩ†EŒΪZF΄έnc9χ-<€½Δl(Β³~e'f^ 1,ώ¨ΛώN(ϊϋLφΈΗ@ξ“₯N»’0*?“A¦{Dj&nΌ§NB šaE΅egϊαΦ*ό‡k›πδS#ϊOΞφ₯5Ϋόξ–Ÿψ·Όwο}_™Π!ΘΞι‘"π<Hύh2a>ζAΫ¨©ΡΒΒgΪ?μ€Υμ΄wXΈD(^•Bm¬"½Ύ¦cΌ…\"»τMπ›ς4ZEΖΖ€£ηY›CΪh™ O‚>™μ›©φάΦrε0^’°:yRi8…L>ˆq!:ΨEN9wΐ$οXDΉυg πΦΆ’/Ωz-`^\γyX«0Ϋ7Ξ‡κ±j1_aUαΉ“XW*΍{,9ώŠλI–υœDΟ6mz‡aa 7‹’§Ηβ?33¦Bα„›OΒM·Ω+cςW‹λϊτsϊhFοpXΑΠXfk&6NH%ΧxaΊΡ8εή9όΘX[¦cN‘–Twβε„fc*;Γn&'‡΄ΥΐfΡfœfψΈq4!“ΝŒ»3L¦ϊĚX.&t˜ΣΑΘcam=ZcrΪ4«‡ {wσ€φ;Ή»3@ 5GŠρ€%ϊo|KφwWΛVΗΒ3ηB˜Ž0O|L+‡ ο>°ή3zΌ­jœ§²ƒεΩ™Ÿ¨ψ&n:^j³i(;α‘+`vΓράcΙLIW‘;9θ9 !±Ξ»\KΞ±qΎΒ„kΣΗ™NΛ‹UοΖγ­wωϋOΨΎβά0Š˜2―KΙΝΓM 8žζ΅y™Q©-;oΪE'}ƒsηΓτ˜ί₯nόΫV4Fξ$|J¦‘M›E‡€΄9¬I(ˆŸ»τ­-σΩ‰V!βοD­£…ΨzΉ©f·9ŸΪžjς©ίΊvN¨„h:Η½]ΰ  ο€)ιvΊωd6ϊ|š[ͺHHγ#ϊC“ΎHHHψ#^…p<žŸŸςG>[gά9Ž*b 8 Z(Νάς†zΝΞΡh”₯§c!οηΡ<.RΣ§Υ;ώƒŠŒϊζ•>ί ηΪ(Ή«p,(£R[ΪڜΣ$XUTR-”η“Ρ*œB]X^Γ€šaGXMv`#Τ’&6h#ζ¦ ϋ¦―G΄έο’²άζnyζά“7 \(žΈH ˆ.Sq,VψΞτφv" bλ°ΗΐŠΰmήγšγ40ΎΊh«8g‚•*'$©"fR@•^ώͺτ`&άΈπ°υΒ w*¬zGΜ=μ’±H¬αΆεζqξ ¬;A٘’5TσD©ο˜γ·Έeί ύƒ‹ α)™xη=@šE‚ζjή Θ’«H«υšŒΝύ]~Φ$f[GdK”[”Ά›JΡ@Ά Z²κ§!Ϊ†„|:ΟΦlΗώ–ž/i¬a τ/ Ԝ'¦―Δίΐ΅`ιs ΆΰΒήζ’ζˆΪ@Ό³8!ΨzͺM‘Χf΅Σ0ι㊠•aηT@ΉηΏe:9-NY\ΈD}v±δΖEŒ&‘fΦa7^3€°wΪ9π―ΰ¬Γ9ψΩfΔβY·m²(•|ΟNxV\λ― 7cσw‡£‘hgVθ$±Ίw*ΈF*Ξ7'5ΪgœΠ9υΞ‹“-M‚Γ―Wœ€ ωΞkͺΗ5ΔοV1ŸœΤ,ˆ}Υίϋθ«ή™=πφpρ‘"\~Θ0§GŠΐD τ„#½IHHψ³Dΰa6>ζΊσOΒ)χϋηό±]Όs³…‹Ρ,3UVhΗΜϊ˜ΧΨ2΄,X(DΣ΄EL„«βΩυIΨγΌ ¬ž:^†λΗS(Šχ΄΅Γ’¬1 >D•6χ³‹γbυ;;η)ό!ƒF/pΊ&L―™&mοζ͚τΘυ΄Θλ6s’oβKτvd+AƒΓ ]EΥD—Όθ‡ -Ϊ’ΟΥ[ώBΜ#-„5‚φŽ-q|™–Ρ«ννr†ͺ#B‘_¨ ŸΆ+ ͺͺΆUj3Fl<%·ψΫΩ5ζ@Κ&=Σgl—Š % ΑLk£ΪΆ‰i›‹y₯»€•֍!pg¬9±Wψf±| kwQWυξ.…3ΟνsŠ"|–(aΐ€Πk‘FS0Uδd€/ΫMΟ‰ζΌξ’|ͺΚZŠΪ{fιЎη(-9ξp©’[½γ1Ά΄cNeUw ―˜ύ£BΊΦ#Ύΐ]$iΝβdΓ’ι,σC‘¦+<?΅yΑ!ˆUΓk ΕwΖτI³6'*Ζ¦s#’Lκ€[fz¬υ›gW…Ϊ>Μj5 !3Ήa&ΐ:$ή·€ί)P»ΐ[]ν.’υτzk‡a?σZ―¦€―#¦bOρ!Ϊ'n(ΦZerόI5wcšΨ•,κγΒU«lzΧ’³Σ έƒέpϊδΝPπ»R“dʊPο„h1i⧞gέΦ¨Ρn£ΊF±φϊqAmα5ΔE±ΒN“s-7ĞerjIφΗjг°ΟΧά`―ιd ZΤ½rxϋτo ·_xΰ\vυ²ΡMŒΏfι‘""""πηŒ€΅Ω;ΣΉ.ȜN‡υJŠ3€ΊAYk3\30-DΊ€>ˆ*τ%vδό7CΕΕΜ[ΥύE+fβx“£Έ€mŒΟw8@d|`η>€ΰmu³KΤ¨Ξ= SΥ΄ Δx;Ώt…oŸK•άϊηS„Bΰ…ξλ’“e²P)ΞΈuΎ έšΫόžΤΛpζΓο@~7Μ h΄¨WŒe8EΘ‚˜T>α€ΨΚVΪ$<>˜(h»Π0G9ΥΖ’E!W2%­žΚΊvΊΐξ.Hd€Gu,%NΧۍ‚δ ,œc­N‹oψΗi“Λε<ƒι2ŽK­ nΓc hΙ·ψ7(ŠΕ^7tΘN’ΡΉ±'ΓmI犼Ξͺ΄–ͺJ6»Š©ς¦“œ5ΜΌ;Œ™Tn-[­Κ \Ιnjƒ.sN«p†ΎucypRβ…Φjb’bρά;Qι€'ΞΆ©ζ,εΝD%Ζ“kϋ ΡΆBΠΆ Ά]beX'°9TΔ;ϊΞΉ6ΜΓμH5ygVTo…Π―Bq[όγN; €Ω*±‘ϋ‡gSš‰EŽΦJwδxq1(ύpηksΙbΥ%Y>΄nD f2HύViΏ‘-³Έx'a[’άψΡ&Η]τPρ›η'δyζϊ2οsF?ι έΔ;ŽΫΙWΩ g™ΛΩttεΩάΪήIi’\kπjκ:9δNƒΎ'‹^8.ϊt‘ΩSΌζΜΎΒ)d{Ύ ½φŒηK‹Q‡λKΫ‹i΅‚δ<ωˆΙUΝ$°oΆσλh™OΏόάίΊrxυπΒ$žšH?ˆ@θ?Ez‘"""πη‹Jπ;-1’ΐΣ"‚ 9_cΔ†ϋƒnf±’¨JCI„&nλ"²5%ͺ§«) >+©>/VE#Ϋ΄yG~·šEšζΤ ΫΓ‘3˜]*nКςl›kŸΡWp˜‹wžS xΆTυ@φS‹ΊX©‰‹4ΝΠ‘Ϊ)Z[ώzf›.υΠD…“Δ ίŒŸ>?Σƒ­€ρ ɚ’ΖHtΕl§βš²έΒ,τU‹CˆŠ½ιύ,VΓ!’UH?gbebUAΖΡΙ±A’3 VΟwΖ|0§’4fΆ§MηNpf<]°Ή’ocΖ5'nhΘτΝγ »Ψ‹ΈBw‰-°—)ηœΨ8iΠΎ‹8+ς>―Hu§­e›jιΪΥA±Ηaξiό-ΩvΝ1–WΝΖΦ±ΞΒc·†as㘠Χ>ΧL‹; ζακ>Χ8Χ™ r,BƒŠνΉ`$aΐοΐtϋ[‘‹=.Μeγ4¦@Ρ:NZBx’ίAΆš-eoΏξ>θηχ’ε©ςό=g'υjΘώΩ…+uyυAΖτHxN@?'ιeŠ@Š@ŠΐŸ%Ώςr}Θ£Ϋ·ί:ͺΖσe1†lω{Z¬ζλrΌŽ Σΐ™nn ύ¨€F?-pαgζƒ^¬·j΅b―Φ₯± x·Ενr•iΐ hp‘”©ήΪ¨V-$t\θ¦ΥAΥν< vθu―ΰΎΩί/–‹εΊΥhώ­Vγ_žοέσ«ύ^xβ+>U3π?\ΉR^Έp‘ߟαNΉ½άΟ7Σ:?›wšϋtγ\±Ž…ug;½|ΫoφκjΦΫΜη=TΓ.0άͺXωΦΑGΑBΏ¬ΧigfΐΨ¨Κ’Ήa €y«Ύ£”±Γ.1γF΄) DL.κ9 ,IΏF^ηe³lΓΖ«I«Ρ;qήΡhζ'pf«X•ϋ³εκžn³}¦Σή-Η·9>šn3Οπ5XψA<ͺΥr­φύ™Uc—·Ή³H„η}Ο)d+P«8‹\βφΆ!πΚη8Ϊp,LkP„—…)€ƒυB G½Μ|ΞΩ§Γχ¦ιΛ`Θ– ή[ +Ψ±$=G……‘Bυ–«υKk4Ρ‘,hnπΌ«›VΠλÌ!0΄cΆο±½©ΰaGcλQz¨δ™6 &jNΎόL΅―΄Ψ5ύ„—ΙЁν‚Ο\<ιΤΔΕyΊXΆεΎΝϊ2'縅͝4Ρν8ﱬ{E₯Οχ9M˘--μβLŠkžXgψΪsήνqΗƒ» 9iΝ°Ηά>‹ ³>Υ+»xϋG”Ήs-›y€CŽUΜνMgQΤ9G<@½ι΅΅ψϋ‘³§5¨.wTN°vΜ’ΜΞ±ŸςΈ–ρΜI‚wŒknί)ϊS„—ί·ξ;·K֎QxόΪζλή?ΏπΦK›«ΌHηF τs£‘^§€€ό"=Δβ"VI]Ίϊ›¨v ³Ώ4šα₯ή5l‰ͺκΊzψ;aΞ¦ž‹žbώση;LX”%η₯‹Ύ–|sΣ†`€Ψ[εs | α]Ž6ύρφ9Ύΐ]²ΰpŸμ$―ΓΟ ξ4uλΰ%ΕtΊψιv{π­?τ¦ζ۟;xΊZ?P¬Wuοlω•ψΕθ΄ΒW^,'Γ0maνΐ‡<œ†”žxNΞbρ9AP”hΞl5δΐ#β!ΈŠ c‚£l׌#ΦΎΕ}Z€wσά©ΤN8Η*.A\‘q±ΐΊζsφΡγžΩ?ϊ2AωΟΖΡv+ 2iΐνMΡζcΨ>rΤϊ%±^Ω%ϋε’>ΐ\‹S&7THсΒNΉ³‘??c‘ )φΦψ¬‘°γδJΫF‡ Igΐ°σαYΏΰσάΕτsΝχφΡ;t™Œ5δͺΞΗόΞ8Λπ31[3­ΓΫ€­ΕΨ“b&μӏ˜£}4 Gœƒ1EV†άš8ŸRΣ±ρšύoω/:<|νΟΠ†ς»s›τHˆH.„!.…βππΑυW}γ/}ΗjΣόgΣαœ»νΌjq+p‰·ΪωγΨΘCς#αΊθMΠrS#.x?" θ-Ήυ¬M B9»MaύΡ=ΌΌV„@όΐ™ξj€¬η"*θŠ5RTy#μ‘5ΪuΉ&ŸlVϋ{Ώhη{βEJσoxΰΡP>¬³„”8ΘC°Ž]Ί”…‡¦žDΘ€λνgΟΩ–ΟλGi‹MlKžd•c|?g³λKϋvIΌt)nΨ͎8ΐΫ|ώκΣR危}pζσn>ω•½‹’Η-Ξ2arςτ|n¨§ϊΞ‰­eK•QoύkΫPmNLΌ @΄;€₯>Τ¬έΕλ¨ς Κώ‚4 +αμe" G’nr\SΥ€°Άν ρ$±OΜΎAΘΜΟ¬ ΎbQήΖ[°υΓΣF΄%‡ζŽΆ(ŽpΊ΅LκΟ‰•0žq·aƒ"=gK’»€5Γ&Τΰ‚ΠW‹Έ°{ΕρlFϋΩ`œ΄ΥΨR\Œ˜―˜‘XXΌT₯9.»J³š,<;L6>†IZ†-dΒΎ,N8Φϊ΄‰Z\όΈ5λΠΗ―UώE^'~\Ÿ9Κ°~g'…°žbߘΕ~wZ=€νNo ~_΄ιΐ}lΖkI0}οε[νkθ%Ώ#όΒEkŒeν½Ϋ ₯Κ΄‹Ϊςχ,”νΌœH)Ξ²ΗK8ω]j]Ά΅J‘™=ήCŸn^2A˜Χ.Τν…Είαbώ™p‰_ΊτHxNψM%IuυΐΦο|κ•Wεώg―ΧΓuΩο–»ƒNΈη|/άu–›λ(”ώ /SΟMQυ0χΉ}­’6Σο, hX/¬jθ­e‘«GA >,ΩΗΕ[gΙ½‹GT% ŠŠ5 TgΓ&΅ξΝ.~ηi½ϊ›ίπΩ?vρ‘Ίxΰ"ΠΌ…άe¨ΜΎ”y1. ήαaΩ;>πgw|>φ;DπZ%ά‡jψ%_π€ξKΒαΏ2΅*ΊeΥy¬a’pοόIn~ρΡΙυͺΩν0sΔS¨’'€σ³šΫΌ·–`Z‰9G΄D€φτFƒ‡2ω°Un‚VŒ ΐ'X«Ζβ• χ³ΰm[šσ$6Ό6ήhχ³sXΞPιNo™zm;œwπ-UeΩ.ΎF­υ½EnΌcQiu@…˜yΉψrΙ¬Θ,F2zΙn‘Ω,$ @Ί2σٜήq‘r_“ύΪSί°ΩXrσΣ?=;Ϊ¦΄3f?«SNή €6ε!VƍO†νnsΜ#όν”0‰ιŽξΗ₯ρ$Ž-§αw(˜"€Fk"ν Gq:›GτY`'6,ΤΖa˜Φξ^ΘχBήαl?!‹O§_Ϋe(Ιgχϊα ΎwύΦcdΰΈΝοΜ* €ξ<#›F ΘνrwΖŊΞΉσ’Η;–κΖβ΄ΛUfόNΉ¨³ͺ[έ.§¦:ΚκκeΩϋν7λΡqU’j€]o=1ηά0Υ ~wψύ2+Θ#ϋcE?ΏUΝ?χύνλ„š h–RΪτ IN—AŠ@Š@Šΐ‡αωππαϊΝ_ωS£hΤΏιξήΏ^‘χaΣ,υ7ΟώζΗ…Z­πΆ½…Hr>4ΝΪΎΰγΣEžRυΠ  KΌ έ΄:ˆJ΅ιΖT:£j­’-³˜E€?ϊV\CЎϋζλ¬:{Χ½εp~ϊMίπΖ—όΨoΤuγ΅$>ώ‹ΟΔ…‰€><σ w‡(ΔΟΎύΠ~ώqνζ‘ή0ιjΠKΚ{͘_άΎ/ΩvΕ8* ε›1 ϊ-j4b¦δͺˆ·*¨²y–qεϊΥ_ώ8ε ύ¬iΜE¬ |λ9Π]`Ιi΄½ °‘ηΓ’₯φ>ξeαώσαϊpžΎ9ŒTrϊXα$Μ†Ρa<Ωtϋ;cNtύγfiΉ-`ϋ>“žžŠ9Χ>°άο΄’"οx¬˜ιοƒοψ Γ‚Α*oο쬆Χ/·ΛϊΫλΌύώΉΧδΣa¨F#2 ­Λ̊ŸVK$|aΐψz€_9ΓρN«β[ωθΚα₯‹υ!/#Eΐψιι‘""""π!D@+—ύΤ[ώΚγG«αηo²ς±v€;ΔhΡΓi}σφ4–C™"`YDΕ|Γ¦”›σ‡ή'w·ω?d@ƒmHΟ’ρ,Z5vΙv!‹¨^φPΨi³6¬P­½uށ#ήΖ°>Ψ9(gΧ―‹ΏυΖ—όƒψΟςΐρžk@~ΦΉs#*pόWύύσYP"„Sb°>c΄d½εܞ7£…Œ₯ δ=QδsR¨ρZUΪΕvͺΌ"v¬ ˆκάFρ=Λ ΈΠΥΦ‘’k±—Ύ_Ή[ΠžfŽUΥήMΰξλ²;m#SΤηΟx ‘Σύψάruα4Σ7Ξ/Y-τ―]XˆzδΞ™€©„{·aχ°L 8ΗϊΰΔ Vβγ‚rΑ©Ύx}υ%Ύγ&w6Μ½mώγκ‚DΛ‹{\ά ΰ%λJ]Ζθ„biNkΖlί—δΎž¬ΗαϊrLўiΈ­ΗϋFœ\π½ε·Η,όTmn —xΐ‹Ξ.mŸ¬wδ\ήΩ {σ1α₯gwΓ9ϊ2'sΜϊθ4.ϊ#ΌΊ±c8‰ζα}O’`³1₯!Ÿ[πΎOΈ;œ{ιΉνΒI&”ώ>mmRX9ΨO»Τ„ΌΠ·Ωˆ’οΉrPω±kLŠ^£έΝUφθοΆρ΅uΩόjμ&ΏWΆwY‡ΛR[N,λΥz9Δγ}<¦δχ°X<ώδfΠh>ψiίχξ³ΝE½Πι‘"@@§Λ E E EΰÁψΗ+ΗΏώΑ/ύέM£~0σovΞέO–Έ6–K’½)‘ 7(J΅¦›γΩ’ίωτ˜²Ψ;\ ¦g5γs¦‹χ,B…Γ_«TUΒζ‰WΥ…Ξ‚mJݝ=8[.¦Σwž/…V†―ωš(¦)²ή1μΑΧ*џwΧήΏneεΟέsΧύΌAφ9‹5Q‚΅mxӞsŸN[ΘlB„WYΠζ{ΞΣshΔΌ―Φ]ΞΑ€s xςι-,cWαάFωtiΐP YΥΧ,KΆ±x‰0ͺχxνMΝΑώs>Z½&*ΐΥ”€–CηPΡ;oζ« .™QΕ'R­™2jγ ίYpΖ’,ΉP2€Ήu€½Ϋ‹m…ΏUΌ€ί%ί9όyύιyv9dMϋ¦υΨΝSrΟ±„˜I„9­ΩeΞqόKλ~6 ογyƒ19)P³w’3‡0Lά¨Ν}”x&)‚ύΞ₯η{a€<ζ:Χ+B™ψ™~/W1&%“ ο0ι ΧπC“‹Y_τŒΟμŸ„Χ|άωpΧ]{ΐ<‘6Ϋί IIw‹8šQΓI隸R …>‘ξ3QθΗ›ž•Σ™ Œ${$0αύνΓWHu}ώ©υbρEΡ~ά,.Εˆΰ^ίΎ9 3ϊJΎυϊ>ͺp~l'ό}B•=ΌΠ„!=Œ@θt€€€|˜"p™’Ώ‡‡uώΏ|ηƒOόΠα§>Ω/ΎΆέλ=Ή³Ύ,šd8ζ9x³ΌšxR­P˜ O¨qζΌ5ί/A¨Š·ε=μ/‘:Z—§ξS}@1:*Ξ1ί/ύV‘γώjΠΫEp̟Dφ~σ›ί|nτθ£Ÿ]$ψaέGO3δ‰ξξgθν(h!Ί4-€Ρ,inA“5Ύ]SλiS%I&$|PVm~c™l(1Ϊ&›-`6h―Wΰ›ΕΦΠβΌΉΏΚ§-T•Νϋ 7rζAδX₯ŸΌΆ  cnfΞ― y₯κΜώ+΄zcE™ΖGΔ.)3c!ŸΉ₯M)'&Ίπpe»Β5JΈν©R Ρ*Λt8ΪΨ!zμΉ&ΓϋΔx δ3*«`Z*έΤ'ξ>²θrNΙV2ZΨm^Ψ„O¦0Κ'ΰ[ξνπ;,Ζόνω4\Guο³°Οη9φŒŠΊΰΡ©ΝΖ²ήΪcΊ;»Ψ9Ϊαθdήϋτqxλ†Ε[ TjΕfτΙΜ*rŠ-i›ξψζw€Ο³‹Š>ŽίΟ~CΎoPE0'Υ\ΉΧ MJ·™ ˜¦εDmK~ozdΧθƒfΌ›C<1ς,GΗλ’½σϊW}ύ•―3¨οΗώμ7~π Ώw^L^½^n.-ΩQ£Aρu:] ½K†ϋοŸp¦Q½βώ»_χ?ωτ:QYSOJϊ玎@θ;ϊτ§Α§€|Έ#ΰX,–Ι~ΰΏ{Νχ7ΚΕ«Ι>πw(Jρ{yΩΟλfΏ$W0χχA εjMήZ*€uΥ ΦŠ€άF‰³bZ†JΨ hSΕŸQ&μγΡ²ˆͺF±Ϋ˜ŒηΦσμsΏμΛ>αχUŸνΗ‡{l-να‹Ž™W”αίΥ‹ποΞδΝ¬Ešι­ϊoκ΅½²Ί‰ΰtΤhπ—φ́!"ΆeYHͺ\“™Ÿ  ΉΒƒlžδ¨Bλ9vA’0¬%‚½| σ2j\aΚβ?ηazγΙf[νAmΛ™£φͺόΒ―l]XViv¬$‰Ήυ%―boΑ]@1ΞΙdΞΎΛΠγϋπl±˜'f“π>ͺRΣ’Œ(ΚEHν…ƒF/άΫ’p^η5ΰΌΒΎ±acw?΄°nΓΛρ(l¦ΐ>ΗP‘ΦΫΏaΒ¨ΝŸ oTχ½?C_€{οΔlύ8Οd`$oiγ¨ίΫΌΥ Ά›0‰4:VšΤ3•Ϊσ ‘:oΒ>ϋΏd—Ύ’Z7Z ξATfMι―§ΣΠΚρΚ‹†―Ξ.\8,οŸϊ+»υŸ~M}^ω·L§Euγ„δ Γy~zσΦϊt>γυίφφ/:δΊςw›C§Η'xι‘""""πΛ±¨MΕκUα—Ν9ΔOϋόšΓ§Ίύ{ηŸ†™γsρl>Ψn΅_ΕsoΠιδ LδΑΔ,λ LθC5w―&ќ΄i[+υπŠζΫΈ½ύo|ΣέΆ ΤωCΣΧι±εJ,ΈκρλΛοdΑάΞ|6«§ψ\WΨ0ζ9 ΰ€QŒαTx#`”bœ,dSΔ5 J.p6UρW=ζDtD!ΧναίΨ†YUΜ‘,,樨Ϊ²{»Ζv‘ΥΒΜ.Κj…rσ,―iKvkΧΐo‘Ή•xζ!=N·v“-άΪ=½W±τxMΰ $nNh¦b”mo‡έv—1πώ`°2ώΤ[mA”S&f© ϋŠΐ@U{λΔGZ7°sˆλ.¬ώ—ŒΩœγšXn XΠ½²&u' 7:£Q‘‘ϊθ~'f†ι±@Q«Œ`ή€Ν%iύ*bhl ΰΎ «ρ”κŠLVπgN2ˆ‘ηΓλ|ΓυΏμ3ΥxβU ΥτΟτŽM¬2Τ™Œ‹9U­…fοΨ΄ΙΜ1eΡ‘ήθ“ιΦΜ#g°xμχ›αt„ͺ.”c ΪΜN׍Φήη½α«~ξ«/?τ…?lΚΛ—‘ξš|η—σΛ—ΏτwΩύ«ήπe?σύοzΡߝΤαKš;ΖγO «ΕbύίπέΟ\~τ’μžwpœΛ¦GŠ@Š@Š@Šΐ_xbždώ8‡πG!χŸώσkη[λΕ§τ››Χ’mγΥe=„nYί]Φ‹j±Ftής‚~½£ΌΣyO‘7u]?ύ†/ΌλΧμΆΰlδgRΊύ…δ£ε λzχzέ/yχ΅§ΧGžg€Ε·60<›Η« ΦjΊπŽL ΰ.? †Έ Nπν Z zfΰΨ'ίς}¨―η±m˜9Ij Πa·ΑΦ!Vζ„πΏšγΔJ|ΰ9ΐα_€Ϊ ,¨βΐ²…=’r DnΣb/¦Gμ7&·ά„ΌlsϊhJ;ήΕr¦μθΣ³»³v8Oήθ}΅#TωϊδΗclXFΨ&N±h̝ˆ± ―Δ'ΐς˜γΥŽ3Δ–β‚HK¨ΗRαŒQ«ΛΗυ,m]„_ΗFρΦΡ)bτW·Ωž81Ά]ΌΪFξ&8&d°ΰmft‘¦Ίίκτ„13‘XaΝΰΏΈˆVDG /WnnXόeJζ ƒ+«μ[ζ]ˆ /υ7Ÿ’UΔ­ΤI~ηΈΨrα;¨Μg°i,x­z%ίόΨ¦ΌοάN8wΠ C%^Ώ=πΙ·N‘”%!ανρπΦκ/ϋGΎψq σd*ρΪΖ‚uρ―$ΏψφNΞώλ_~p½^} ΖΦώͺ&N>ϋϊΟzΫΌΣݞ–?ψpχ3)ΠφRRRž71O²άΓc«t=πΐΕ πeύXvƒρ™§„kΏp­wΤ™οδ'ΨqylXG5Ψ)Nξύύ3ίoBωe­ x~Ÿύ,ύ|6^ΌJ|κμ»ήuύ'κΕτKΘπ-€>‘TοςŒ³±D9VΕ4‰έΚeEYκ%Ζι›Vυ±¨δ’²Ζs4.βY\Ε¬(%ηŒοT‘A>”WbpR]·HΝ*QΗΟόΚ/ Τb[%Η³%ΩƒΎΔTv­)΅&h:0K…ɝ—*Θl―»’ ͺ°œί4v cϊ1G5ΏΈΕR¨\ΛqŸrΨSϊ2γψZ!¬li9mk+±ί›ICί΅U΅zsa›“΅€Ο$ θΗΤzSΊ3`²žΝΒ“€³›νΑŽ  ος3ΓκaΜ @ΌΩ6LΙ$„μΩL¬”¨2˜2ͺkφ™|μΠ όΩΥ1ύ ;‡_z<8[ ήsΰ»ΕgΖܘ˜mcνlOμΖΌ.ˆp^UΉM-Θy±žα™&Ϋ4;ͺ¨\―‰σpΈΐ„*λξ4Χ£οΪΏ Gq•π°«3yΣiΚψπ3»ΒΫ+Ÿω΅WΎ˜sϋmΥfρ―|φαΒΖ qzά™H τyήΣ¨SR>‚" δYMΜ΅J²Θ!€~ψGύα‡ζϋeΆKκΧGθ?1<κψŽχάuΊZ½ϋt³ιQ r’•ΩštusaYý•—Lΐž~hU賨ðΦwƒΜ"5`η:ΐέ`ρ J΄ 1~ΔΣΆ.ršœ“ΉF­6Ω%-‘~_S<ΐ€q]ˆUΥ .o-!μkyφR€„q ³Ψ""@ι Ϊ;‘ 3vΐ/.φ޽DŸe–Υ U·IάHb cΰxHΪ9=ΔφŠφ ́Φ)_:^ΣθMέSRΧMU©M\«;`5ι3~­+Νp „٬‚9cΫΣΩ₯{'MZ Γ¨&χ€ΕLθγΛΒρEKxΫθξΖΤu“Ι”›έπ‰ηΘΝ8―‘ŽN…xDώeχΫ%^-@ίl&NHϊ,„Γ1}˜ΫΔa„κl•π•gΐy£΅Γ‰‹θΞwͺ{¨ΧήΈqkŽΘΛ>#σM—9ΖΞΑέe΅^|Ε[ψM?ϊBŠς³•Fωέc‹ΟώΦΏϋΧOΗσϋ[ίϋϊ'γiω―ΊτκN‰@θ;εL§q¦€|TE@ψ³ΓΫ²Ψθ`?H „UωΉ³‡u2!ωξw<ρKσ"{π©α°’\u1ΔΖ(Ά¦―‹*,QΥN1Αͺa.f²wǜΟ-, “~ηh²δn²‘Eƒ@€UΝ ­/V²Ι™ ΄Qι'f1^ šξ”ζξΦO €Γ.F4s³―²ζ˜ŽU ιΝΊƒ† H£Oc5τPμ ·€ρ,%ζoΦ―6n‹ι<LzkεˆoώπŸ‹kΌiΑFδΞ~•,wφωO£OHψΐs@93κΧGhO?β»Ή…Ν=gފΪϊΰ«Uσ&<›.§ΐί(Uev~2ΊΞb°š vL(ΖτX¨»η€SύΟπ0ΰ«* €Ψ–(^Ρ•±B`ίΐm9Λy »`u„Yhe[θ•Μ“0_°€Ÿ/J¬ωŒ33Tπήφ§f΅‹hk ^_<žνQύλ…ΕMPͺ±œœ=Γb&f΄(Θ’±B±΅€‹dΏΰυ1γ# LLηΨΘζΒφL HβE¦W?OΈΏI˜7Hώ·BAΆζ n’ 뱞±‘ {€l,οAΕbΞ³€π\§SNs*”„£[',π#ύ4ίBuΞρ‡ΧT œP°εψx†L0vΜΎαbΙηΕ-€άŠXhqΈcίΠφ’šlά‹Cι})…UŒ—Κω½έσα½έNxκΪqΈ}J"ΰ{H[*0φΨ^…9CAΦ¦aθ6“\k YDH“Ξ‚ΖM΄Μ8‘Πχ­νΕ Ι”ο΅hΩ° A[/΄Έ­φHxθ/6b2Gf±ΘQ€6³ λC‰!ν΅›Εng΅œ}Ι—~ΑΧώόCΏπ}Ω#/dε D>κΟΫ@άι&€ΎΣ―€4ώq.^Œlˆ2~{r{6Ω/š=ͺφΉjwoφQ;oαε5?q†wΦb$zv©Nˆ²°볍j° -4«^ZΔEnζ-ΥP‰]δ&vΤ¨£Z9η– ³aιͺΓ ήΆ Ψtu5e’М°gΦ a„πT~θXˆEΥ•τqΪ2h{‚-Δ‚%± Gρ™π;Ζβ0¦υi·αΚ‚Ο͐7GΙ²xoƒ_g?F€«NoπpTτCςwQ£‹![(ΚΎ7Ηΐ1›'ϊΉΩn‰†)εFΓqΐΛά$;ƚβ49ΫκšΙ±Ωaά»¨μ‹~Έ @Χx—§γbΫΐ·ρ¨aUπί3•4YΈΘ蟁`†'2NN,YσD#ρ“I ˞3’¨άΫ^αΆl·db0t\@χΈv›•ώnϊίΣ/ δ·3m³αΡ¦Σhόγoϊξίψ₯οτΥ£ώEό«‘†φ!F τ‡ΐ΄{Š@Š@Š@ŠΐGnΆV˜:ϋΩοΎtγΣΪ7~§έώJEΧ0^Φ>±ψl@mƒŠv  Ά ](N―󠃑> μ,¦b±”&ϋΊ8―”;ͺΦ„ΐΜ₯’1<ͺΞ›2/Ÿ‹ζFΖڌΕ@ωh„αjς ΰxšT‹4€?-Ά+"šΗ9{¦ϊ`(ξrΜ1πΈΎΝœa-Iή’o'¨Π·Ι½lYqsŠΩο€>–‘υj ϊΌζ@X74‚p Η(ΈšH΄€=ύ΄Ω4΄±`4»Υ λœΚ‹φ•16PΈοΩΕΖ”jΙΩ¦•SZ;o₯Ž‹ύ&νr,J“c0Ζg:2s4ΓνEβ‘žRU‘ώ[±fΫr…}΅ΩΕ•ϊ[юV-Zr{AΉϊΡDIŸsΐρ­Ϊ©„3J@ qα³6¦ζSΧΆBν!R― zσƒ,νμZ…γΣI9F›ΩΛΞοφ›ίώφαί|0|Ž|δ|'=Rž7\Bι‘"""""πβΐ#υaρ΅>ΈωΊozψΑfΩz€Βͺ€ιP/IC'”RφΉOε.’mΚŠζΆ„΅eΊΝƒΌΛwιΎJΖ«ΎΦϋ¬ ΒE‚]φ‘α„G~πήΊ¨Ψ=”έv‚’} @ΥL¦·]0'@‘p=‘ΓρθFT§‘mx{œ Εu© tͺ~{ Η’'Z?·°λγ…ωˆρΝψݘI€‹ώTΎιԍΨA³E‘‘’E‘3ΣΧ‘Ζ―P›ŽGαd:eΣΖi―@₯η8NT΅[¨Ό{ƒ©|Όοα{Ύwg—΅ €Mτo―ψξ©£exο{―…SςH7Πύχ:‹΄u5“γ Ϋf ŽΩ¬N.¦@Ώ…c,ββB@ƒͺς¬m]B)Ο)ΔA ‰Χs€vL\„iγΒΉrRΔΆΆΧ`œ-ΠΕ†bQ–θwΒζ‹YΑ³ώ«?ε3ϊoύδ·?ψ¨VŽG½l”#Eΰƒ"θ Iϊ E E E EΰŁ‹Q’DUΓο.X<ΨR[€ž©γ2ΰ’Ίy€~3o2`*0RBΟ$(½F;sŸm›τ Εx‚zPͺπΊΏmδˈΦΑQeϋΐΦμZͺ쯝#|s”θŒάuz!;`Sπήfι Γ^ά¦)ΰςΪlr#wfMkWaŘ²`°šGbΕΎz‚EfΥhΫ§R&―”P£ΊΝx|δwθΦ¨ΙP0m6zTωθλΦΎA²9 “E“ψ±oMO©Ψˆ…¬]M6±‘hϋ0—³(ί Οb€κΫγ{}αsϊυ8y›χ¨=ίev½9ŒP›'#ͺžσ'·Βπ¨Ι1Yˆι‚D²rΤ§,Iμ£ΒΜ Ζ©ύ’ F-)Z-QϋvεζBοRυœρ4ΘR‘V‹Ρ–BgTΫE˜lγbΑ }ΚPκMλ'|gΆο„–šυVWdYΠΖΙρ,ŸLίSγΓώΎO{γΏΉrω_™-’D­τψΐ$€ώΐx€w))))/›ω»›d•Ψό 4ψ‘ϊ’rm‘mΑ2Ϋ&d†*ΛvΨBW6KΠΥzFuΖm€‚ŠgY0T1`DH¦Ν!ŒJu.TS]5³ ϊT—U ΝΈ‘ΓCΆϊtO«Ό6Qi…θΈ0Ρ,”Μ&Uκ(*,U MH'Βδa^ΣΟ>Η^‘F“η#ŒςϋL©8άU …xR:ΐ~Μ{‹ŸX¦­ pΫΟ£ω44ρ#Σ»[’i‡§)Ι=ΖβΠ(fΐ9 —ΣΠΒ"‘“–½m­O|ΕgsΜΔM²\”τuίδ©χzŠ*όG>΄γBΐ“δŠΖ+S”πή…³ϋέpζμPL1bpν”άΜ€rF΅φήέpΟ½aΞ>Gΐ6ˆeΝ+ΖTCjF·*=ϋ7Λ”>Ξθ‹ ϋτØo‹ΧpΞ½M€JΝ^Δ†Ijx™yš4yU³<χ՟wρϋ‰{ωK~ώOΘΚα¨γŒ@θ;π€§!§€€άI GθsηϊΧκ†:pΆ ˆ ΪΈ:”₯.—y8Un]”† ‰J«ίp/Y “ŸΘάBͺ°«ΈΑη-l¦€k¬9V μΖQ­…γ43?h³ΐΆΑΎ.°kiy†pmz±›+3Ώ9§3 ·ζιρrιΊ¦β_Ω–ΐ Ή‘λ8°ŠœπύŒv†ΐqμύΝΤlΧF66kˆύ)©Νλ6’>Κϊ1ωDΜ°Ρα»mͺΌ#Ζ?½}r*φιNΣmΫ>ωίΜp±Β2ά7ΐt€]‘€Ο©–XMπoBΘβΎ!ά¨Ηδ|ž gŒ•1π4₯œa^―'T\„έύAL…7DM7ΦΪi¨‰]&"uΰ†l5@o»ί wνχΒ-ςGOiίGjΡ e½Ν Mχh„Ÿ@ω]€$μσvŠ‚>Ύηx™‘Γ 'Ζ>Ί^bF­(ƒ3½°ž²¨p<«oέ:ύώs|ί§<πΐ£ΣΛΙΚa¨Σγ9Hύœ`€—))))/Ύ\Ί΄ε£OP!gλ<λŽ7s¬™΅³>\ΌΔX#¨žͺ’%Ρ*‘Η—ΊΠ(›B+€ ψ€‚ΫfΛΐΐ!”t Η€ΚΌΚ( bCΙ»@ѐšφΨn@΄- Ί όnͺ‹άc2kΔϊίμ,~,»F~θ‹‚ ·ϊ|Q’ΨΆιg{ΒkVύΡfΧΠkm•Α θέ˜λ™ΎlΘΩ<Ξ=Ζ€ΙB‹ο„ψ!zΕΪ4w§ ²ΐvx]ά†ΩS7B+G—Ψ΄JˆmθOΆ4Ά)νΦ@k‡± © 8ΒΗlήζύ7Eέ …Έ’x : ι7ΫΒΓ [ S ½ΰs&“cerQR€₯‰b|ΜβBͺ‘ΥΝΘ}Ϋ_ΔT–ί£‚‘0Όΐξ€!–Ν¨Ρ ¦.<δD…ΚwςΛΟ‡]ϋ'ήu=Ό‡ „3ϊͺ5Ε<€ϋnσ_“κŽvŸ:žϊu>’η$o½lОΗαααΧ^Έ’•cϋk”ώ}&\Aι‘"""""πβΚkΜιϋwΥ;ΓٍwUE~ώϊzTΧ;ν¬Ϋμ ’6ρom5€Χktδ―pΪ2 Qϊ>€:#[Ε%WpKgmτΩ"GXΠΜ‘/:€Ν,aήg…mm%€^,ηdγX„6ͺp_5œΟs>ΌGnIw·R‘¦™ ™BΦηj™…ΣynΉοί°ίdρήιΊ λ_z >Žq H9φy”κ—’§YWυγΒ3ͺχ(v€YC¬ϊXnφπBΛ%ΰlΙοϋxΧ@oΆ=X’Θ„†}ιίٝnxωΛΞ†sϋpλ½·Β{ή}#œ0Ά νxT¨΅ΌΜιŸΚϊTUέ»¨ζKΆ[VUIΎ–ΦrψΉΏυλ_%Y9^ΌρηYR -0slζ[φ}f,pcΔ·Š(σšώ-aϋέ΅ρO@ήΙο9Ύv60έΖxs& Β΄ΕkfϋΟuβ½Αˌ±& Ɯ~˜ΞΦ­ZΈ¦o±t5m©ξΎ›3Π@^²H#s8Ϋξ‡^ŽΒ.wΜP1Σ^a =ή3Z&~δ’:ŽωΩ8P§±mΐ#ζcήθyfΜN(–€υœŸΗaSϊNŒhΓXφΎΘΝ‚ΒxDR²ΨΕβ1TγœΕ|6hυȐΒΞK”ϊ9}0³‰Ά•>֌ §ψ¬3ϊ€κ<§Βϋšv:LZ° GKΙΡνQ˜ήΔΝΆS@;ZOθ›Η΄ŸΘιΜOκz―ΝdΗ€φΣxΏΝΈiΞςωΝΡ:+:Ÿ4žNΎ θ/\Έ”¬žΏτˆ“Ώ†{²‡z¨ΊrcΉ…cDΔX ƒŸkΝΙ(£%~^o7°C˜φLˆ6{F,Β!θ¦°.‹9!>ν”Ψτ(Σϋͺ&ϋΣtVήΛ±E(A—―Άα j²š§} ΘΆzž!h‹}£R‹ ŒA›šΣ 4Š*@J…hφq…" ιj½ΎΉ–ηX-Θeά₯έc€Σ{.LŒ•ύ8F‹χK”mΏEΫEΕCJ^,&Ψ €q²‚t‘ZΊ 4πBk5is|2RΔŊuTρf •;Ά ]p™ωΫa²aρ—Σ‹ο> ψ `Φ~ΰ]›(ω § …1§FB_ΙΒΨ{€’λ "οπΉ„Ϋ,hs8Α M1—ΩΌΔӌrŽWΪL}_9 ΈmKZ°ύω– ξ, BŸQι'Ν‘CK  'Kdο`ςtkΜΩ³χί»C;σ ^κ\?ω”}6€γ£ω²ζΉΌΏα―'—―^ύΊ_ X —ŠσΊžwh’}‡žψ4쁁;1Σl“MPœΡœA8ͺς_CXͺΪθ–m2h˜ΛΈ kΙ¨±\D¨ΠτΖΖ’)~Oςβ4λΑ7ΨΠ<Οπb„οZΩΥ’# )xŒπŠΝQ]Μ§•‘4s‡ΐΝ>.¬r³z@΄Η~:‹ψ„獙=_ν2Ά“tΛςΧͺΩߜΘΪ@μΆX΅~¨>›Ϊ*}ΪΆΟGψ§X.Xk ³œbέhΰ­Ύkgz΄= —ΖyvάΒΧC,#'μΝB>u (kσθjŸΐNΡ¦ J¬WXΊ ’`³{°Gκ ZYyQ―£ΆNίνηv²Q°ŠΩLŒ5$=Z«8 ²±Q4PήϋŒa—Mœ“λΧNÌύ6τίπxLm7JΪ΅Η{€q›v΅—˜ΖNu›Ρ­₯†-{lZ^>›Ώέή|Ϋ­γΕw-Χ›Φd<]g«u)<―0h[ΔΖ¨’ 4~πε_ψ^ϋnΞl<` ―㎌—dz€€€€€ά` Ζ)`ͺœ%ΰjζv¬ΈWΰ#FτΡ|£w·Ω!ŒRjš;ϋ(Ίγ|`ώΰ–` ΈY9Πμώt{SΆ™ΗY „€'μ5B=»j¬5 “GVΥρ0KΤ5ΟM¦β 8›²ΥY –Τ ΆΙρv€—|bfΪζΛg+¦Χΐ½&SΰΡJθ v8N›>©€·™8lPs4hwXΣߚΧ”β>8ΐBAl°itΘΡά Ϋ…vŠ#μSU\z±€+μχι†Ώg'μ΅θ;‹/΅•D€¦Νݝ6Ο}£Χ€{ΨV΅nβ‘ξΨ6 ζΒ0½2΅ž₯Νη¨ΖGX(NHSwz{Žnœ°˜oz*Ζ,Vμ‡Ϋο 7jkίςŸQ›-9Δ†ρž'n‡2ΊΠPπVύVužήKϋƒTNͺΐͺ±{φ3ή}mώžλOίzέbYn]μ”άq¨ΈjΛ~ηœgJ½³ΦsΌΞέOnΝ‡ͺΟ.ΡτΈ“#ΐ―]z€€€€€ΌΨ# <Α@\0κ¨VδŠ·`l©o`Θ²Lv μhB€p‰·Δς›b.ͺΙ’-π \vΧ.jo₯U»²ΰmaΫ5e›vŠXB:Β/ΐ+8΅¦›[X΅8βzΡΕΓ‹­@γsήj·3ΐuZΥAΌu«vηl—Sά€ŒŠ‘›ΪγŠM@΄Γ.ͺΊ₯-Α°ŸςTMmpμ]ΐpΐ3]`r^!ΙΖͺ†l{L†Žbs T_Η+ώ$Šshb²r‘"Π«ΝΒqηΨ3ΐ΄ jzΉ֊΅ͺ― 7GŸΞΘ”p/ά »pwρ1M2… ε ΅όθΐΨBx‹Ά­šΈB ^Ž—‘ηy@άοb!α>ϋjχΠ—Ξœ$ŽΧΙC›7SŽuΫΰ|ί ƒ‡iπΊX`,ωνbΙ v“Ξ±“f@Ωl9 ­vρυϋίτφγΝτuτο-yσ€)%iw»ΫFͺφΩβ³)VŽφ7Ώξ ~τS―^=\›•ƒ.§ΗdαΈCO|vŠ@Š@Šΐωf*WΛzπ΄ΨI0Γκ1  vg6LUNΧ>X‹πο+Λ™sΈ,I‡’Q΅0€ žZ=j€ΝͺfxЊ9ƒ¬’€Ύγ₯ Ψ\ +f=τ` %ZT96` ΌΕvτ5δdΞΠQΖvY ‚fX:Μ⑟Ϊν›δ¨ξ’ξnΐ{σMΟΑε#½Λ€·uψvh›<¨Τμƒ|Vδ+<܍ΠτβΔ‚<$α)3PLG8™…Iw'~^’D[Δd£‚ ,«ό.QwŸ|Š~§™*;cŽ}ΊsLFŒmΉlψΝ%dΎk“ύ£jΝβ)μkqm(1†ΘΚ]φmπY5"~|ΏΑN± 8Ÿ?θks&χ4LˆKُ2ά΄Ωαց‹χΟφΓKΟο²ψpžΘ3Ξ© xΞωΊMΚ:2ΐ>₯γy΅χK^φν_ω ίςκ·ΠδW½ϊ+~ϊ­uΦϊ‡dKΩ[­OΧu#/ɝυρΘ£œγαςΊpαΚΒΝν‰`δμ—wXμι;αiΈ)))wd¨¦rεΚ•²·wχΧ“εωlΆ^םMž‘-Μ¨\ΠꒈϊΎ£Ν‰97Cžε 9“Mε^Ίίnα΅-Qœω υΥ,9OUίh‘@Εέo5ω}O“[Θ¨αDό vŽX(P‘ΩoΝρi k…φνb·‚…ƒΡ DΊΈP%:>U yθK5Bͺϊ€R‰%ΊY έέΰ8οΝՌmΠΤΏ­Y½[Ίf2ΰ’ΐσλK‹SΤφ(ΆΈJEΖ‘½NO ‹ˆv’₯†)ͺτ5yPOxΪ«>κpπύ·«τY°uΦ0–Ω3‚sF`›msUg±ΏζΊ.‰§ϋ6Q·Ν“­mΉν)ΰ¬r=ΒW1_Ō§(ΝͺΛυ3 ΉΝm'―xιΩpΧ½ϋaŠ…±”7ηλ³’§8;χŸ/,θ²ΓωΧsΝ‚z+§iŽ-^hkΥμ·Χ*_Ξ>XD/χυyΎŽπ§—oyςδΘ#GΰD j,kΤ¨HŠ^,5]‘†Ό₯a}nφΤV` ¨υWn’uV]Τ π2’ⲕ υ{ΠΕΒ&΄Ή@JS€3/*EΖaQτΓκ©Ωw6Π†SΪ5™p™<ΰζ\ξ1Z^e=@gDΌ.PφΘ‚Ϋζω5ΐκλžŒΒ₯»η…:lο@29, ₯mΪ[ΨΆι~wΰO‹Γ4–0Η HΨf*ύΡ·cμΏ΅Φ”ωflsŽ-·ϋ Œ;%±€ψ‰ˆύ7‹φ—ΫVvΡ[ζ[ ε°Αέ>–yΔ‹¨ΕEJΚ{ΖK0+Ι.#?₯]B5ΰ5-ψHZ†ι"’Žf‡4NΪlζ\εDιˆϊζŒ}d½΅―σ?KzO`γwφϋαcOο†Λ°άΞ[ΓϊΔ‰ςŽzh#39Žz  ­# Ms­“Β  To9ΥiΎ…fgΆŽΛ)Ρψψ―žύ΅i±πͺΑ4ω΅P9ZZ]©Vj³ικΪΖ«ž σο<§$ζxŠ€¦Ν?|Λ#G @<Χm` ΙM#•l”>xς'a`+`±Œdΐdͺxύ@°ΥlΑ4ž„G±Ja&₯Oͺ:VΊ3H&J#Η‚<›γΡ¬†Ζ6 @Z4 Ρ„:φ³Ο\ΐ‰»†¬sŸg‘ΫW KΛ±=«–’1:c\'8Gτ’ζΌ"ΞNJ9²έ#,B’sŘ>±Ί£1˜οRdswFΓπ8I€;τΫ‚(ϊZk7£Ώ‚V”ΩUQ‘%_)&Rn‘$‰Ηrθ£™>^i†ώΥή$œͺ6‘ΊΰÌNxpZ°8Ψλ‡BZŒ‰ 㱂‘₯΅λ&R-•ύΜU,θ`€­„}˜YDΈ8Pša1“Οϋ/ϋnΒ w(6΅ΪSτγs*–υnΨ·igo»Ϋ-² ™Γh‹V‹΄α₯π|Ί5£²ˆ |A¬€ωΏo GΉϋΦ£,.ΚαεƒΠGςQu?Ϊθu‘tp‚RώxQ«Χ“υNγΚ NάπΒύή;zœΒΨgŸ]8εφΧώμΫWkΕl6 Τ‘œNV6ŽΜOή|δΜΏωοούπζfVΨάτ~EΎ†δ+¦Γp•σ1ζΘ#G €­½R«TppːΘ&΅ς}.žΒΝzθ4‘E1‘: ͺETJΤ2Ο­V— ΐItΘ Pϊ­eΩq ά"°Ά)ΐΉ\‡«F¦@@qd‘‚EΐyΔ!c€γ ΦΩςΤH›— π<nο|χΉ{ΐδ}ήmγ Ÿ…n!ΰέΓΘz'½τΠΟηαιώ(\γχ=ϊ«:Z@%cΒxοΞΠΟG$ͺ–QΗζŽstŸΊ^4iΏCŸšΌή…) †~ ˆ―λ:†Ή½±Š₯ϊ€ρ=ϊ±O¦ŒS½rAIηu‘φ©‚u%!#ϊAœΰl₯Ζ)μ½yc\ veŽ―Ϊγαώ±w±π,ΎΠ–+/p.ŒC‰»Υz¨wꑌ» £¬Eo<«$(FVœv,Kήδ:Ȉ—Ψoc£)qˆΖRώιςα*ysl±ŽιlZ<ω§ϋδw œΟœ»°Τ6Ηͺƒ›€γ¬πθowΙ–.Ÿ¨―«ήyΟ ›'Nϋ›ώ)|„Ί?σνpD€?±|Λ#G @<Χo` q:NΝfχ‘MφΖ½ήB “Χ'R  ΦWύ„Žϊ«Ύ€’θ H „₯\nh όŸ} θ-@2+"/€y}Ζλs€"uμβTγΰ0τΕβnΨέ4±jŸ³j§΅ ςG€Φ’G@(Ϊ›šXΘ©ηχΒR3M\ϊ0Ύ&ΝΙ>'σ”ώκζaΉλkΣ.οkJ‡†p(½[°wJ5ό‘ι }KΪFτC7RΓ%@§ Ω~Ε°ZiQ΄€ΊΫϋ‘…l€₯^ΔΒn Εm—8OLβc€)γŽΐlІzˆVΊK’‘ς‹€ΘΊ»φ+΅ΘͺvŽb•Έέήfω πf\S@wtΧdΟΠR—ι‚cHV¬ΆXD—Υ–]λ2ζXΊχ˜λRB’‘§t ύ‚ΧB΅Σˆ †O<ΉΠCΧ8ž΅zΚ|σϋœρ€ƒ)’hMWgγώ >υ+oι» ˆ–—Ϋ™3YιΒ…dώEίψΛν»ΎψΦwmm½_}ον?67 @*ΰέ$ΖVdΗ‘΅9ΪθΛ}$,"τ­@έ―²{] μχ˜δΐ„ηΡ…C@ Pn"γ0!°…>Yτ’{†:Žq@ks§₯άΰv π]=xύ™kΈkΠ2Ρ…Γ^Σ^JίLT,)a!ήSi+ *q|φΌΖ5)²ρε2j‘kτC/ο-V­ξ$tˆαŒ“+5€Χ€s\d$ό^ Ύθͺ “ήΫ +'¦“τΠΣΠ@‡ ρ/‚3… xΆ€Κωσoθ}κWΒ[γ‹ώ“ƒηΟ„β°ϋŸ― ΕύO-½°ΛˆοΐϋΊcDέTΖ΅‡ݘuΔΚ™ Ls0]!A°;<ίRœfέ1f°ΞΗΪαψρNh’kήήκ…kWφI‚\ΪλYŒF;;ύ±S0«G:a»» r Η²¬έFΩ²Ϋ%φˆΛ>W‘4οcΞ9a?-΅γ“ιΆLΊ`ί…ΰΊ0__i"q™†½Ι4¬ΰE}Ά»Θ Β.EXVaΛ+ϊ!%ΓΣ}„5°εΞ=N3jΡΠ^²·~dϊ‚ώβΫv ―p–Οή²δμYœ:ΒY8ΘΘΜ·Cœ>t—<p<yiΚ…’4ƒJ„) ¬AeΤ8^αYI£[2΅ M4·|E¦8tΜΠ2«Ο+'π=TYΧ„’Ϋ)ΐvˆΐ7ΕG:…Q¬N`΅΅΄ΐ4‚G΅Υ€― |@2 ~xU’fXΆΊŒ\C‰Ε€ή‡α]&"η€yNaΚϋ@`> Ϋ’-€NŽW»\M6Ώ‚aΑs¬lΘk²Ο¦ί9ίqŒ²΅RξΎ7ΆŸΌ³FlVyhƒ7§έJνvΉΈDkΠzw„vœφΦy}Z›…6 {%bu€·r…8dέq@k]5μ·`aα9­‡H·Π“λžΑ’of­νf0ΛφΥ V¬«‹&†‘57–ά5萸³=§ύ+{PΝ³Π@=œwΥ:jθ„ڎ6ΧΩV?¬sμζω n §΄)Φ‚›Ž&b>…=Ÿ#α°4Κ„qMξ ‹GμΓ υυkύοα/δܟg‘cθΤηΟ?·>YΎ{Θ"θCvΑσαζΘ#GΰGΰ”δμπj)oΠ^tڐ-4o0Ÿ Ο’’ύŒœΚ#$j”#{ ΘθUψ―ˆmœ―(}=ΑΝB]΅ΪιΉ€p'€Ξ¨Ο­s‡―y~»€υ–uc<䧬³‰xς a±ιCxžœΥ2ψ!x/c]W(.Aχσ§]uΝs7~Ŝƒ?ΪX²Ο0κ°άjB”ipκΠνΓ,£ΰ7―ιΞQIf‘C\N“ˆΧ‚ρ•υΎ6ŸR4¦DB_ώ¬‡ƒ…F»‰v™ΔΛ&q:ΐz=½ήi†u@³<­žΟ²ΙΖ?ε$U˜c-gŒE€kεAώ°ξ¬ω&‚fŽ­ΓΟaœ->žΔ₯ h>…]‹˜ri"σ<OΝ‚cεj½u-QάbΩπkœ_Φω–6’EήΦ^/– —&n4°€ν.7κΆqγΘ8Χ“j)τ3’ΙΕωb˜•χΎϊ₯?τ/πΒΫ·Œ:: oy–π£˜oyςδΘ#GΰzŽ@>`Λΐlψ 'Ι‰Ζ–·a ΰD‘ΥjQ†1”‘J§‚f@U[ϊ]’ΜΊΤπ{9 ΐΘνs8ΐιBϋΊ)kF;¦δ-΅Μ >* F]5θO8[`[²Ϋ@ˆX€³‰~ΊXXv›6Κ ΨeΠ#ϊŒ2—sΠW^·!)R΄E]³μsP]`NJˆh–§qφ€5gρ8x~γΥ\k°βΗ–7bΑw€Ϊˆ2“‘ πž…g¦ύpΐuΙjΘ_š”θ̚θ7# ψ`;=°€U‹ΔTθkŠξEΛ8nYuδ.&”―ˆhΫ°Β5Ϊ`‡eγλ+ΨΝϊc»ƒp]uk·fΩ’ί1I‘Ε‹Χ£₯Τ†φe‘;8t49ΆΘ·˜‹–uώtSώqθς˜‘ž!‘…ΦεΓ„ΠϋΚ”{νKT·™gό[Zo½ϋλxΧ…Ο^₯ .XΞBΗ`氜ͷ<yςδΘ#pFν1˜4Ι^χί±ςμ“WŽa>'E€Ρ°5¬ ΫYδkΛ*‘%¨ΑALL˜Sͺώ)ο(PEίs,γζμ#<ΣΓXΠ+&”k^ΒEA²eO°κB‘”Cϋ8?—ϋβI,‹&x§[βδψάύ—eC@°7݈ΐx±₯ε̜°%!±§H²5Τφή…v3~’Ϋζ/Ωjϊ„Έƒ}ΕΐΨΊ)σ 3$!u,οΪ$,’^‹Υ3ή΄'dΩΥhΙ$ΏQfΈΣ ««'C§R#9Ÿe΄ΠΟ\9«νFhŒ§€Τ=Xε=`ešŒΘ.Η2Œ§Βy›ρ¬ΎΕνYˆρηΆy™Ικϊ φuTN\k…“€γ«;$]ݏ101QέΈkαO…Υγν€Ÿ >@IDATX §vϊρK;aΨ6Qζˆ{H  ξ½»k,vΌ>ΐ}Όz΄“–‰>ƒ¨»WΖϋWήNίn΅AtΟω–G F ΠωB<yς\·8w.’¬YΦ {£ωZib’…β8‚Έ2Hu €žκ°¦ΰ)£šŸΌ§6Ψ_ΤI ό΄¦SEl©nYά9Θ69ΆZ$‘ύ’4€Ÿj¨υx^π4λvMΛΒτ%3YXZΤJNωƒvtj₯e©‡Ή ΟλrΗKΦV³ Σ‚(κΩ—ώΊYΫ„A /F&[Ÿδ ηΦα9&%Ϊ7Ϊ‘\wPςΟ&7Κz»―νλ’ΝۈΒ.zM+ω0ύ% ςϊΐxη4πΠΡ šŒ>eΕ³"εΞjΈλhMrWiλςvŸ)₯pζ ΐueoJ;}τΙψ.WqT΄gΙ?Cζ€οl{ F†mn€΅Œπ₯ξ Ε±γΘΙ&UuκȐ•ŒC›vβ˜aΚHG(ί]­s=a«Φ'μW―Δ1™ˆ9Μ{ • Λd)ιΖ²Γ’†SAήˆ{`4’υΖϊσκ7ώόž?Ζ§°«+πΰ’δΫa@ ϋ_@>ώ<yς\ΗxΗ]η“MΖ·7 '©ΨQNΖ‹΄„`'› κΔF―B@­Ζs₯sΐγ 9‚%δ"&·2Ή^–ΐ3ΆΓoΛB&‚Bΐ&LgŽθ-Σ6¬ε=<6ζ°±°Θ ¨n+εAΎšΡΓ*+wΠφnΜωϝQή:zY’…β3ήμϋ\YΔσιh4°»pA° \Έ F{ξ?ΡΊŽ'Κ0ΰ})α= O ŽηEκPAγbuΓG`nŸΖΤZŸλF›Ό¬vzαlςΪΕΏ)2+6Γ%υNž‹Δλ1ΐ³•‡œΫdΒU’ύ*ΘCLdœ`©*8w ΠJ[νqρFΘC,ΑMeΓV=Ζp[œBI{Χ@ζi˜ν#Œ)‘ν.Χg*ΠEώ‘žΉJeΖ―[ͺϋ©Η·B†™‹vp 1>.2ޏ²€΅*:}X± €NθΧπ€EEsθ“…lsHΣΞZ»‘.Ίˆ3ΏνμC°Πτ!ίςψωΚ·<yςδΘ#p]F`θM< ε‘μΫGοιξo₯I₯\\, ² ”7ΥωΠυΚγžκ$Y9/•‰’«E~H1dƒΑz€HCγ?4 Ίk΄'h]& NIΌ‹Λμ2ΗύΒκ)ΰ8Aσœng€Z3|dC€(γ¬zΜ Rdο»©yΞhOΦXθ2 mημOdΌ—’Mf€!`W 8NΝ0η;ƒIž  ι£l―9}Θ²)IŽ3}φμ"%i)')ΤΒΣ°ΌaA2Ζ Ίμyc*ϊςώ~(φΣp”RβS2!€Χ γ:‚­άq8€iΞ2έt#άΉAplδžΨν…!@΅‚<£BΜΗδR•B*μ4ΐB¨NΦΪL!fJIΠ3·κ5k‘Ώ{ζ#Ψε*,7« ͺΜΛ^+ε'ψ…*md${.τ~ζ:–ν3@t @ΎB‚£Υ»ώ§wpεΨξ†ρ:Ϋ]δυ!E\FΨοMόήj(PΖά$LUDΉΔ£2NΛαΗόVXθsIΞBœCΎε τ!Θ‡ŸG @Γ œΌHΆvRH3=˜€Δ"χμ0Ο“€KXHΨβ2PI+8m֊7t°θ‘Υώ –ere™•U,™[“υJ€MSρΤΤΞe­ύ (”±»2‘N§ Sύ–ξ²Ο YώκΊΗ †iC‘GΊΡ΄ eSΆα~Κ/¬,¨μB”ΊΟΆ,4fϊۈ{²_l‹ΎρΊ<΄ratΙD†³Grδ3ϊΊ@ρΙ(< 0ή†ro—ͺ±κŸ`]Π_₯Ÿ‚ϋΔ― ΅Ώ ²Š-|΅•›Ιθ Ռ`±‡Σ}LϋΈr±—«h«”Ϊ"³P›=T#p‰v ڌΜ:Μ°ώΣ/8±―Α£Θ@ΖΓQ˜w{Ψϊή+Αl[EΠΕdqΌ~΅*γηœ–ŸͺΓ¬:kΝpθ}Ѝ\έGvά2쫌αŽυΕTϊα‘gvΡI[ΣΆMΠNՊ…yš”›ς’ϋO‰οwXhÞo‡;9€>άΧ?}<yλφα°ΙάδβδΫ‘@ ν₯ΟžG @λ<8pœ§άζY%+vοΦOΈXͺ!€Ζΐpά­<σM(φR“<‡5±Ξ΄ΘŠ’_/²c„–€N|†y˜Ha-Τj}ϊ-GIE„ΟΒM!,`ιΖ\ HLΗ2NQ{ZΥ ΔΛςΰ&ό!ވ«έUΛlΒ Œ1>Ι€υδ90«ζz ρe’Λ=j’ν— Ψσϋ }6ΖΦΧΆιJFαnΛΎjΉχόŒŸ}ڜϊj―πΖV†Βκ@}0/DΛ7 ”τΐ*¨ΆΙ E,ΧB`νO…ΰΦ‘Κ4Ε·ž7`}Џ@<yΓl’»ΨDθόΐVφE½ƒύΧ ΐβ,M„wΓ.€Δ*ΰ΅ ,ά”YυKΡJΊV”eσ(ίι±7 ZΠY΅€κΛμr²2•Κ3’|‚_d”§ςώ|ί°.LžΛF‘OT©X†ΘόΙ:OaGw§CЍΰΜNU¦Q —Π= žνεήΪ{π'οY(D ‡••?ˆχέ‹Ω”°'ο«yfέ·q|M ‡`_Οh}¦eΏ‘hΠ5ΣΫ‹JΨG£-Xχ&9Ζ^c’σJ8p `FβQ β4ΨιRqfˆP€0ό²Ζ )eΩεV#άt¬Ά‘|<Ž;† „6Άt5@ω.‰‰£ύ~¨‘ƒ>nzŽyΔkC΄Ξ€μBΖ\ΩρMΆόΤΔA`s(3Μ&A«A%HjL‘τ`¨z,Œ 0Œr ™†¬\ρ’qŽα.bΨ§ΜEϊXG­Œ#ΣΟ‰ˆ¬΅kYΉRΞyyžΜ _όGο}ύ'a‘ΡBη,τς/κπύ›3Π‡οšη#Ξ#G ΐa‰€X}Axe{m΅4έέ]fΕΙΠDυΕ«9’†&@O`¬>Ψ"Ψ5‹‘ΐͺIF?ZHD½­’Ή\Α¨ YžVςVg ·ώΜSΐl`Ub©nί—}DΛH›˜RˆEΦX₯„ηΨΙ$Σ μ©–t&'ʎϋU-w,Pηΰ67“ομ‰π^–YΝ4π2βfIνXF(Π–αv,J9ΤAχ8ΐΉ,>˜G =^§Υƒ>ΐy[¬<Η8fθR€Ÿϊy`ζν·ϊp$jZ’x]Π6#‹»‚o3+’pu@ G.v&T\„υν‘(~­ΐ·QHΤΎΓ~μiαΧz€ZG0ΖΖ₯I›5φ[¨―ζ@Α²Ξ η³$xdΣYπT°°³€Λ {C W8f³lYqϋΙ:*€ιkϋƒP„…^ΓωΓσ+'Ρz―@ŸζτoΖ"AΓή4i΄Ԉ©Vtς?¨³g:Ÿ;rψ·uH·@ Ÿ;@<Χ{ξZ*tkψš*Μ’ΘKE¬–άzN¨ώgr L―^ `0~a|›€θž \pš!i˜Ξqηˆς %X˜ζ¨q¦=δ2ΉQκ€\ RΡDλoΪΥYR;B`Ϊ”©U3,,k ρ γ δ0ύžϋSΈ+¬LDμ&€5iO I|…σ-™gΩrvΰ‘ž9Nbe‘η°Κ°Ε€βΤΩIUφ_¦τίRγ%JR”_ήαoc‚‘^I†D£La”’’aϋΔ‚ΒΎΉ%€O [h¬·Γ·|/Βξ£TLœτp6ι†11‘·Εΰ"κžχK£Μ8“$ˆ^YjυΫ²ψ)ZK@AωΦX†XΝΉN#J-\™Χ9@·€εέp8HΆΒ€l³}5©° «¬,cˆάΓX•9φ(¬χ†[ωl°Τš{gA¬P6Ι“ΖAΧJ’Η³kδVΏιτ}?wΟωσχ,œ} Ξίο&ίYr}Θ.x>ά<yςŠ Ύύσ#YVύπΣ½―O8Μ¦ ,°ΐM&6eΒbͺŸ$ω«Ψt xF–™;όΝTε ²ΏZΡqΏΛlϊ€ΨΤΙπβ2³,΄Ώ[ °F‘•Y|Ύ™sΔΔBΞŸ‹m\!΄xΏ pΡŽ ]&Y6WEtM0ΜCΠg? ‚}ωfΪ‰m.‘3{ ΚΓτŒ~ZΫc“φ# T’Ϊ`™\gQ”.Vyρ_ ΜΡS5V8Ών ‚Υ% h‡#K^ΓΔƒΪ‹θ’‹H(ŒFΚδλοœΡ¦Ϊ8ΊPΡ7Ί³Zƒεε&–tƒžγ }Ζ;λΛ\ΒΚNΩǐƒtԐΑWj!λΫm•ΰ%ڏ$Δiΐ’Amκ#νψJe]U a'pί@"R mγTαW‰³LφŒcY w’±.ŠŸxμZΤA›˜΄«μΛZ&΄H0΄’‹€‘LxφΠS§£Ρ’\^)5’ްΠό“ϋB„CΈεϊ^τ|ΘyςδΈή#n*…ΕΗϊαU”ΩΎΖB©`₯?puyEf5Π\Β:`es- έM¨l–“‰ΥΎM ¦-*δ KΠv0›F o-σRίŒΫ†›€ž°¬pΆ05€ ·μ3(1‚h °TaweΊΙ 3‹ΑχΎNΏ” ° ―œ-Ώ«δΔσΗφψ—9@τσηt`œΗSΠ^τ΅ζΈΏ›ΘΈ§(‘μ7ό+{!mΘΝΪΐ)OρΏ"`4ιΟ&7aχ!Ξ+H*`݌ŒA³=ΙD€ψ9λΣ¬χ²~Χ²νόΚ΅v8y΄γK–pΛΡVXΓ6n2˜„Αp { ΰζ&κ tΰ²ο+d“ύ\ΰΗ"€ΊB›8. dΘυεf8vTΪ3’&ϋš@XΠwIPΤzνΐύυ‡61”TΙpr΅n:Υ ƒk½p„J„c˜οηLω»0λΞbiρ­φΤWγϋxPΗeM:+Νf;‹R©ώM/xΕ;_ ύ‘œ…&¨‡pΛτ!ΌθωσδΘ#p½Gΰά… ’ΨlΪοŸmΥ[0¦³E-ivΗ] V0l4+2€ͺ‚υΌ#ιSXεU€²,.Νͺ‘τ8Kf΅hSΞΩeτΐ} ―(­P—¬vZ9‚ΓUšΡ€q­δϊΖ 2ƒ&@޳DP-`•YΔ«o6q±˜ΧFNΟead썛6ΐvΌΒ9Α‚iλOλ|α~‚ο2c’αVβΠ`l%'€SmoB{m䦙ώΞ•hε I¬eΚaΣ§HUϊΨΜΡς.Cs”`εη3@΅ηfμVnœš0ΏτŽ™x§~Έ(+L?ŒΧ ­ΰΫΌτΓz#aa’P ]ΒNδk™oή 0&Φ|,k―Zζ‚L4ο™)cmb_φΉPεχ1•YlΝϊL#m$‹2ωhεV”Lˆiχ•|Œϋ³πpx6¬1μ·%Ϋ[2c!ζν9Ϊη΄–†φz™dΙIθ±€pΙ`‰φzg#tjεl:-GΓα9šωΊ³pΠ9 M$Ωζ“oyςδΘ#Gΰϊ‰€Τ-Ϋ[‘9l?\/–NΦ·R¦»°?…ξD`ˆ¬πU/UNc— QIF“Χλ0±  V-¬e§eV[L«ίΙυŽg}*ξqΫPΊαIΥMΧa•ΥB ͺ«€·NΉδ>uk2ˆ ·ZfΘΝPˆΪž`~ΞΉ΄««πΰψ x홐]6όΉ"#ΎΖ±j“#s @VF΅άόt\UΪλ³ο“£.@‡Ž‘EHG@UDό«&xΑϋHQ&8“2 ΰl H.«G '‘ }ΎŒ€ΊT©Β>#ύ  ΙΒΞΠΥ1‘-―Τ]ƒ°h™‡›`x­8Ε&Μβa“ΦKΠ]gŸv«†n{zψG—Η;0μεπ―Ύ;ΌφΛo Ώχώ§ςΡ+Ι~wΛωΨχΰμΩ¬xώ<vΎšδ τ‘ΉΤω@σδΘ#p8"πΎ Šχέwί|qεΰυΕFυδΑξn:+S ΧXΚΆZ6[ j±Œ₯΄B€J±ΐΫ΄Œ’lυΙB[]Pu8i)8˜ΑNβζ1€™ΔjΕ%€©όc ΐΌ5a#ΰε#@¬-›x'ΩWφWRF:’Xδ…δFL²ΐP†Z&άσ豬£XŸsΘ`[Ιo b}ίβyVP„Ϋ€/=ͺα9^0™6‰,eμͺ'δ!Ψ.NΓj€ $άΙάV  ΐ¨αXΌ„†’Y0²Άεz±|CϋΎI=¬>Ξ8‘½&ΎeA‘•qρH*§βAΏ ”&G*݈Ua,½εœΌ>γΔ<‹lτBpΝ5l;@zδ…b°TΡX£δπz°;ρ`<Œ₯Ε5ςο` hha·…ΪζluΉY‡­7φTPΰϋΎ#•ω‹†a¨­άΚ‹;ΞΣ¨²αhZ¨ΤκηhύkCΈŸωv˜"θΓt΅σ±ζΘ#GΰDΰχΜJΙ–ώύ₯3–d(·Υ Μ,Ϊcΰtφ†±B ΠMs§kΕΈH)γP+Όψβ –ki ίοGΛ:Ϊ«z"+Xc.ΡjƒGΠΨΐκˆεΤa[}ΠJ€J+¦θ#"₯05XύxO9HI€Κ¦6[pμŠ`Ϋώ/“ν›ϋ-₯(ΚPάG˜.ΐ^Ό―vϋτ£KŸμD“1nΥΛΐ·ˆ‰B “LA΄―F’ΑΎΚ`ν'tlƒ[©¦€vaΒbβ(“jƒύp Ν§Β_φC2’@Ζ:mψ=γ:k(ΓΨ¬Z¬ΌΨ΅‚b‘Ξ–ΓJQdΠ)lώ—mf΄+CmŸγ‚kδ‚Δ$ΒΤΈ€έυΒϊz3T`€―]+Qε‘Έ Ο€nfL,J(ΌRe14η,|έ8&ΥΗzάcA±\άLFϋlΛ»OaΨ ‹!ηΐ³ t§Γύ𧙆§Ώ ΐΞ0!™.j΅ΥΧέσΊ_Ύοόω7Ό/g‘ύK=<[ Ο΅ΞGšG @λ>T„tLŸήΛξ›Ο¦_ΆwεςbΈ˜_ΕΉΎΚκŒ‹QΡEηΫ…!ΦiCk:ε €¦[„5ΖρΟ2Xi%ΛΎ N*£y'‚Bkd‘9Bΐš†=Κλs5Η:\T(ΟMρXx€Ε:cτύ:d‹₯€»— “Χ”oΘZρΠ.κ«9œ°Eζ\,mμ’J?xί±(;‘εV'έ)!uΰ΅ύ”žΚXD`nΏ]XXy±Nύιρj±Υ7΄›λαψΖΡppm;”.]!˜θ€azA²ΐ"H‰su 0—vμ?IdΗΨkΰ«kPηΨIŽŸ1 ~eΔΫΪβYAψŒ?4ξ#•φq\“¬³oιωΌ”ŒΠGAΆμ4ηl―4T92ϋY@랐DΙ yIŸ»Δ™"Ά©άvτΨWώΦ{ιγgρ…Ύxρ<Θ·λ=9}½_α||yςδ8$xΰ¬xύIϊ}ŸΈςϊύ$ά7ΌΆΒ6€-Αζ.šε}XΞ*¬ιZΉ`Z2ΉJ1»&δU±2•ΐΔ¨^#‘°¨ψ(ΜI‚λψΤQ_ ψ™hl•Υb ¬ŒšΪ5ΛH"όΒΝ€\@rή# ` 2 Cύ1ΒV’ϋh_ϋ9½ž|ΌΊdΆΘκ±=Ώ›­Ω _Š8–@xΙpΛωβΒΏ²Κ-ϊερξ―DD€n»‚μ1ΪΟ:,v[ΰ**GM™Ύ°ΦX Χƒπ‰ν0ΩΫσώε΅§‘ήTΒnuάμH”d„ή ΕIRk9Κ2­ΔΣ%F+8γwΟ±NhŸ\ Ηƒy΄έ(λτΑξΈ}^x;ώ‚Iƒ΄ EpΎt 1Œ @l…ΒΥ•zΈάe$&W`›w\l£»ΒŠ₯U*7cϊPkΒϊσϊloΐe’xmΟΛΝPk4ΒέΊ^ω₯·…γ§Ϊαζێ„_τwχwC€±Ο|<ˆΧΘΨΉ§@^#ΊυΚβyρΥηϟΛΑ3Q9 ›‹―|Λ#G @<_ΨΠyγβωδώΝΝrQώ…Rš‰ZZψήY`51Sd Ηfn˜ήΓϋlχ– ƒ‚2φ…­π­ͺ6ΠΒΦp‘)εθq»ίΔØ &δ< Ό­Y‚Υ!―»R“e‘υg†Ÿ¦eΟο2؜  §†Ϊλψ<§DC@Όd#εΒέeb‘xΉίvΧκ…uΨ`mσDΣΌEŸβ<€ ‘c:; €˜`ΈΤW+Yqε(Sϊ /+Ψ>RmG;Ί+;»αινέ0Ωέ γ+[Fπj[ϊGXd¨EΟHΌ›γ€a”’ 41ž‘‡ž¨!H―S*ϋv€GΪυ°‡ΗώN72ÎiΣ;…ΦΪΞΆ«εež‰}qΡ@@μ«ΧΝΔM%7••π‚;N†dŸzz?\Ύ΄.=³F[!‘7uέFpJΐΤ@ίpc'άu'2 Άα†škjlζ…ZΘθί­§†W½ςΖpσZX”ΉώŸ|β yφVhQŠΌΐΒG]·QR΄/€dIVΛ+7ŸΈρO?xε™·?¬ϊβΕHΗ_Ηδ τu|qσ‘εΘ#Gΰ°D`σB(nήόθŸ\ϊg«kk/ ;;(**E‹μB§ͺ[V{«M\LξVNΞ€Ί=ΐ]Š&Ήά‡υέψƒ½ +³*ϋ[JΪΚz‚π(ί@ xX΅OBYΦV6T₯^‚AΟ8FOmYo%κ“' υπ1†FF ‘vˆΡN‰@ζΗ ΞkZKi9―pZmΆL΅@}ȟςˆ­pn₯ Ν0?χ°Λ+ΠN˜φΌςΏ±0 {»ΏΒ₯ςŸοαw-Θg†G4ƒ9Κ’AψN―FΡ6 zf·1\©7`IΒd¬Yw‹7€em%€:pΰ•—ϋY.»βXˆϋˆk ‹,Όςιέπ ΅»? °Š ˜wޘŒΉdμΓ1–^'QpFΡ•€ΠΠX’τFωJΖyήDΣ όδΦN`©W™ ψμVtϊθΐ€G6»‰χ>œ\‹Ύυγ-*6ΓΕTτ—ήή…±φ}t @9p=¨‡{}¬νΖ‘uz½PοSD&Ο+£i‚|·=Ž 0©–z e,šζ3Τμ‹Α?gxζ,4Q8›Λω–G @<yΎ`#pφŠ?ώϊ§ίqρ‰{KΥφ{nW5p‘›¦°Ο‚O@ Η„=-δLΚC σ, ”έ\zG™ΰLπz l'«Mb’„] }μαY,–QΦNύ³’ ‹ŸΥ=Λ Λ_i_ ΑˆΧέΗ2Ω'Γ ο6ρα±…Qά&5r¬zd-ε°ΚQgΝωj΄Ρ€VΗ,Ψ•΅5€λ"LyωοюŒΊΙ’5^s 2ΰ&šDiΫ1ωgφUπ¬ £ΊΈŸ xΒ…Όφ°*Μ ΐ›ΆƒœιG―&½ΎΡD„Ύ[ˆ$ΘΦ`αu°H`ŠM œη†yhήΉΦ ΫW»!«‹.ΐs™ΥΘ:Ι€§N­Ηb,CΨμύ=@rΣφΙͺ†I•xSj;­²αωΪm7…ή~<ά°ή ΫOνR=‡$N4Τzvk[§^Ϋ(D=΄Α1–°Ϋc}ν©gΊgΘ$«·ς~Le£;ΪΗΙ/΅Κ4…ΑΛη’M0TφφŒΦzmΐ5$kτ· Λu±Pγ5χ™r>`yg+ άŒίEEL˜δυ₯|cωηb ½Fφ@œΔΔT_ΐ„²εU‹¨NνΡl„œC›:ΨX+až­Π¨β{П„> {F‰Η υbΦσYΟμ― Β+zds>ύ°W[υpϊζΨ‰ΐφ ³ލμx KΊJ5΄ο8V‘o4n:Ύιή›Β‹[xN£O> ,χb§j0ΩuV3UΖΉ¬:Ij‚ld‚aτΑΞ~Έ>nΦIάδy ’”ŒB2Ιξvoϊλούθ«φGƒwο]Ν>UτΉœ΅#₯b«Y >;­Nz–%i,·ξ‚‘X€ΤNοΪΊςΆύβΕ‹\ <ςνz@ ―Χ+›+@<Χ’—έ°Yϊέ7½xΎqφ»ͺΡZωκƒένtΊw06ΤΔ²Σ@QA€ υN¬”~ξ΄Λό’¦QΛ:Yέ¨Rt`cwΠI9^ΦVDTŠΐωXΉYβξsΞ2ΒT-δ¦kqq`ήΨ–(T§h" ϋε+9TΛ$—πΆ―ΓdΊuQ&!«- ύ|Q”ψœχ&τ©Fk2ΰΌοσX9‘Ά•9τaVνμ³¬ϊ2θǘm#j‘ω 捋‹±‰Y$Γ9~:šΗ‡<’δΔΣ†‰“©I0ΗΊX˜ X€y/ΛtPυ„°ψa_2μ C М°OΤ!s˜ ₯4Ο'M– qΗt Ϊ΄uΣ@šΑKτ›1θ”ψžp»ΐŠ…J0ζ ’4„½πΦpΫέ·‡Ε_αjΊ?Ϊο‡ν]˜m8Φ‘p€€e5Ο2Κ²Ϋ#μθ²ΎΟγ}€τvX ―†2ΜsVΒ½£Υδό$Aμνέa²½3`PυwψgΎω‘‡φC[OΪΟvNΏν§κ…ιϋΣΙ¨Gβ`'υrΉΕŸ¨›;i:™•JΥ“'N]ω³«Οž»xζΜfι‰'.0κ|»#θλρͺζcΚ#G ΐ!ˆΐ[³¬όk/Ofχ}tπΥΥ΅vxυς|”KϋĞ 3ΒTh‘ u‚¨μ9€8€Ž©2ΡV ¬ Ρ‚ι=@3ζwhŸΡΤςϋ.Ώψ} ψŒΫ: ¬λπW‘mϊί‡΄«φ·I{W­αΚ<–zg50ΖΠ …€S°pΟ²Ίλ>ηξe©£[†¬1{+‘)–­ŽN ΧΖ>NΎΫ2έ2΅ύ˜δΘqς―Ω+ ώ9ν($ΈfΰZa‘“9ΰ@Ϊύ‰#βγDy‰¬²―Υ’hΌΓƝε.9κk Jθ£#hζχͺΟΓήW‡μ‘†ώΈΠ‹‡Ua―«$τՐnx|ƒ’-£­Ά‰7šεZ!άuΫ±ΠΖ)δδ#[΄~iHαAhqς&Lχ ˆΏΕωd»‡;=ͺ -AnB™υŁ €ΏX] εj-Ί―LF<ΟΘΛδ^Γ0όόχ|η=—ž£Κξ·έ™νΎη»—Ÿϊ₯O^»ς[ΏΊΪώ¦Ÿ,7kΏΚ~†;5Η‹Tl!Ι0a±φβ­Λ―ω‰'žx‘9G{ωv=F ΠΧγUΝΗ”G @λ<‚ηw“Φυκ?ιΏΉΡhώHΆsmŽΜζy‘ Aaΐ>ΰ €Q¬ό§QtΕ°ˆ ς€±…M„—‘%Žΰ6“Ÿ‚d¬Μ°I…2½ΆελuΑ o/Λg+@k‹‘.ΐδ=Kl ‹Σ‚d ’(Ÿυ’ϊπx[Α ΐcŸοp œ±`ΦB$]Ξοσ―λςΡ,RX$ΆΕ>Ό&Wξβ ˜-ΠΗ}T§ρ@a{ ‚γ(#αΉ€U―€ήχS‹Ύθ"χl5˜pΧ”ήδNιΘUμ·’˜΄Rglπτ²ΠθΕλ«GCΧfn—‚δ‰2bώΈ­jeωΙΆc?—Hb°­k”φΚ|ΐ »Ο: Yi‡Φw4Ο§Ž―dΘΉ‰i ωΖόώŠΦ4!αpΞYΊOχΒΰιPeρΡ"~ΡF¦|‡ύ]ό›{μ υt€œƒί‰Γ’—'ήτ{:κ»*!&Ε΄\¨‘kžύρωΣίχΑ—ήxgxβίnΊͺHΞ½»xχέg πo™]{φ7/]»ό]ώuΓΝχΏΘCT¨€Kλήc§›מzεs:^ζλς–σν―G˜½ψ4Ÿ;—œ}θΙΦΦΉ$œyΗ²gώ|Ο…£Gί‘ΕͺG›Ύ·ΙΜ}ω–G @C—ύδ<χCσo~,)όλk;ΧΒtRμ‘8€Y€!x @F’X `Ή%ƒ•=ΑοUδΎ―‡l« d₯,μRX±LΦS¦‘ΜCΞΩχ½ΪΎ-Α΅μτ²¨Ιͺt2€]k»hA―pT`¬εt'ϊi`5˜p¨Υ °μ³dTΈC8»«Λ:λΒ§vΐΉΆn`aΌ–q΄`ΗΆY8s&π=,Ψ>ŸƒζΟ₯λι圁ώ«Ήšζ,棝g›€h?ˆ‹ ›Ÿι@ς7ώρ'Φχ§{G‹‹ιQόtސηΫaξiq_’Δή)ΥNαGΈ?WΠΦt4έ§ΔκΥqyεjλΔγ[››ίΝtΆΝ¬έ’3gήWχˆ₯°"°H@ΓΝ«ub:k7`pga₯Žΐ΄W˜„IŸJ„ΨΦΡ ΄ΜI‚ή`0 CXί6ν—I LŒ+2 «/ŠρΥ!/π’ΆΟ1pːΥΦΑ£ΘΚQ €E¦1πέ€ΉN W―ξ‡ŽmœΨ£³WŸΩ —O¬² Y CΖυΨ#WΓΦγWχSM°Η\ΛXNœ1Ι¨kUXdqε °ΝΖ`!sO|«Br!.iˆa€‡σy±Ψ\₯ωϋ9θ_ž9stαΒgΒc°ώάΆΉΰύηˆ+GxŽΗς;ωΟν˜zD€ œo9P+uΎ°υχΞ&ξƒψ¬νΛΞώa½ρΕλwήpηΪ=7ΎδΨW;αEώΡΥΣω“ΗNΜ·Ά:­b…:Z3>Ψf9/˜Έ΄ r2P —q;-cφ "Ν«ΝΦ•N»υžŸ-֚Έ‘έωγ{η=Φ)Γ²a¨Y»¦Ο·<yς|aEΰ Μσ˜ηβ#WΏύψΚΖ{ϋ{‹ρ|’ž’ΐX€$kͺ b{2@K‹ν`v₯Υ$΅5ΐ6J+FΙiόhΞψ―ΈΓJ#³°ΐΊfr¨PP­΄b(h-Ωh-ξ T(\κˆM@lΐh 6•N(‰Œ0νKAφχ dwV[0ίeʈγπ`½Θώ*ΣΤ dšόk‚ίFkγ¨­Ά­ΈΩ_¬“ˆ^Π‚?YdAo ΐ'˜Ά5a²ξ!J6όr‡δεΫ\&.6ιλv³νY…π„Yϊc/uφEζyENκ°ω¦πš’I?ΓΑˆ±"­XAT>ž§y)4`£‡ZΦνφC›ώځΜy_η* x„½\F]1άό"J‘Ώ ,5ΐs«#Œήy„d<$NQΪ±§(|rΛΙšκExv«#Ι°|l%άrΫρΠXkΕJ‡=Ξ["ρ° ˆ_ΨX„ιžs”ΗœοO+–όav6Ζ·š˜d€l{R@[­Gμ ‹›ψ-Y¬.Šε6υRŸ$/ωτ§w%©μvώJς-ώ‰ηaψ|F¦™[8xά·œ%h\Cυ;o»'τΖ_9Νζ―™¦Γ—W;Υ›_ψ²»Γ©—άy φ‘­πθ'žaΏO΅§ρ’1wͺ$‚ې–Ζπqβaαώ#νά΄cQ¦N4„opQϋ’V‰¬ΖΥrGŸΕοτ’_ώ_yν‡Ÿ£}9Δ#δηC’Μ#Gΰ―yΞdο<ί7γ‡|cΦlύΒ€·0)TΠ uΘXΪΑΙtfαΚhΆΩ¨0'ΦΒ‰Z;2ΗrŒ#x=D©έά1@ήΰM&t/„+hΩάlL€mΑ°Ϊfέ6ΰYxΞλKχλ’Ά}ΐ*šί#° e*Ζ’άωŽ2ŽέΨυ!Fd©-²2b_«v»MΨΰVw‚ςuwM‡ΆzW‘‡Ψ.p9φAp,0V"+Eοi75ΧZσ)Xgl(XΨ"₯₯):zΨ'΄½₯{‡ά«ί8K&^Ά[9‰ ‰:{8Ά>€ύ` ²Γ€Hνrǜ`JΙν1…IΌ-Ζ'E¦0Ξ₯Άsh“³έ,5r YuŽW -¨•-Φ[ΫΕB†ΫοΊ25Π–Ο”ƒΰύά"_aΏ)ν_Fς‘ρ{ pΎ QyNέvˆλpQ:άHΝh?₯“i&”fT œξΐ<!¨\pVc‘”Γ>•ΨyDSQ›ΌTSprψϊΰ?ύ_–DΤζgΎΫ="ίoβŸΜαώηmδ°ΝΟ?λ²;Ξbίπ“Ο6 Wv_3ΟF_ŸMΗ_3›Œ^D3 ϊLƒ]qΕ =Ώ3y-t[ΎΔCԑא£š«0FnΑ{cš€μEόΎτ-qDθ‡ŠvΫL9U‘k–h…Ž °μ"CΠμ] Ih‚°DΩd©JυχΚK?ω§έ“!lΡMCžo‡<.Αςνw–2σηοO}ΨΜΧύ“Ό|:MΏ΅©‡ώV©T>]mpϋŠ•r FaΖ=)RΈαΘ¬Ÿ|vΏΈK™R3‰‹ΓQXa₯~€ΣŒ^=cu'& 'ΐ2ϋ$LpVyZPΜΜ³•™_œ+L$n«νχg‘ίΓt‰oVέli©Ω^Ώ—[Vχ'δξΧό?}γΪκŸΏ Ÿv^Œτs}·ω–G @Ώ6ΰŽžΰωμnŸJK³_O¦υ V λΥz‘P«–zθXMό+k€Ÿ9 Ψβλ­VX<λο¬φ|-έτVŽΑ"lο€ΉΟ­Ό6m9―jι&›K%Cΐ³ΰ”Ή—ηΒVͺ0μWΔΉAx—szπ&@σ­I+<5ξ”Ρ3osή P`lU<Ο ?Lk²€s€Ή…EZξΑ€< / 6΄Υ2£Θ8^ߜs~2۞Ι,cΑ8ΈχΪϊ²Ε-„Σ7ΪTž!λΈ΄ή0ͺžp\Cnb’›L~Œϋ{~ύ§=­ Ά >6΄ΈkυFX)ΧΓ₯•yψ’ήfΐμxϊη›ς=”XΗhŸ+5@4’ΓŒπˆο4ϋQa‘Pαϊ˜Τ7SCΝ5ΛL+«ˆU e“ωβS2βΟ9Δ‘ΎΝ @ά1ΰΆU@šQ,Αψ+@σ^R—U&QrΜw¨ΏΣw š6Z+α$ΊiΩκ«O]EƒMί‰½ό;;πΛ½ ’"M,”™.VZ|Ώ& ΄ά¬³š0ύ3gB­³~>Ψ†/ίa–ŸœC8πΏΰeœ‹/ΎxqρβωμΜ›―έϊΥχΛM/»?<φΟμ—Ν&γ΅ρ›oΣqZ$₯:aF§Μg3yόζα3˜D¬Μ§L,5t[κσZN€δ9ŒEꊝΟη‚χ ¬¦Θ–lΗ2ρ„fψψΊ8ζwήδ;½ 3τ_ιœφ±ν/²^Ÿ hοςΊΗlXjΦ―!ό0ςΓσδψo3ͺv–, Oύ)°”—υ=α₯ϊ>[κ €½3ύΈ­Ϊ€_5Xhd$+Z:|l+R&΄#LυΑŒŽΞ™―yμ²M‹Ά°r vΔa‡οYp„ o$H jμ‰" !Η»Ea”ƒpΧΰžr>}‘1kcA7}η;Δ³  %e„§S@y g Yl}¦}_f^fMo¨WΒ6gΌ vqνπŠυcαEνmπΞΤ5 ˜Β*΄Cό tϊKΗXΛΡ#ξ†šΟcΘ*wiΡucu₯Zm<₯ekϋ» ’ I‘™ίƒΎΞ1~Η©©.qz‚.Œ€ξY ΐώΗ19.ύ„γRͺ(Vω>δ%\7ξN¬Y §Oo IΒξŒ8ί―^m7”q€8‘TΫνΠΔΎo‘ΰAΝ±Œˆ μΣy©άΉύΘ©―+θ?~οΎμe._Ύόn/EΎβδϊ?σβ/σωœ_ϋνΏΥ<φΚΏϋΦΩβٟbbψ.VΈ·¦±O'άwβΟΚΊΐ]Ζ(Wž3Ή™Πλ$I΄:PcΠΤΣ[Mμ5ΟψΠOΥ~ρ<;hρ£φΩΊ•ό]6dyΣ Pν$Μ±mz†θΊΈ-εΚΉ bb{»-έW©κ£Ξ½¨$m5 œΎφΚg―nΏιŽ{Ύuώ‰άω 6껞ΘˎώgώEδ»ηΘ#π—3gΞ”.άwίό•ίϋ?ύ―I«ύΝύ­+σE‘XZeή<Κ-JByi‘κuβtq3wϋ°ˆC’δ„ΧζF‰3J*ξΔΟ„ύ΅…λβ”J(“,Φy½ΕΓ$D-v…ΙVό¨o…ΰYΦ[ι³{Δώnιj·J@˜­#k¬ΦYΠ+Ψ–ΙΦƒ½γq²Ύ‚g%ϋLλ@1 QqEΣο €œΠnΙ ²96”}L`ΊΗ±]εbH@?}ζ+†ορF±Aίφj£αNψωςρ?ϊϊζ :†P“θΟ—YH©†@σΨ™α­θξήΓηυΫ³Ι‘Ω€ΟΜt=qœ#AΆLΨ|Άω˜sI€ΜΔQcuέdu-νƒ9‹O7+σΈ;³ςΗψ(2Yšόΰ ΫlAAΉL‘¬ˆei=σȈIjΚν4^ζ`nι1gLŽaΊGΕ%t^>/ΰξQ­Έ%— Fύ΄ί΅*εϊλ^pΧΡ―yΡ Ώύ#Ώωΰ[Ÿέδ–)`šFΞρΘ·<yςόΥG@έσƒ―?~η'†o,΄WήuιΚ“s’ΩJ:c¬3€›ΛΜsΜ΄°Ο‚@δ Μ§`ŽΠoΘΔ;δ6Ό2 ™_―ΟυiφyΆUΙ3kdDˆΖΊ.ƒ¦`n΅‰C7Mϋ‚d“ξ·n·M8 Ž—AFΊΐϋΠζιΞ‘Ρ'΅Ν;ΘτlφkA.Sœ€W8ύv•Ÿ²Ζ‚mϋ₯'΅’fr€›Μq‚όDΰΜω8ηΔΉ^ ΚΠyJπ&5.ί Η`Ζ•XeQi ‰λ‘=ζWΓEά–€{ ‘ˆ!θŸ’ Ϋ"aΜχŽ ”Mή[‡ρ½ΩΖ±j=Τ-ŒΒΉμΫ1ρÐ=’cΆd†|cxeˆ€η*X™_‰+|ηέt”$NΪρ{ŠtΎ ι7;V‘b£8Κ€θžΠ»“Κ8΄t₯)lφCή¨Ο΄_¨cμρ¦ΜΎ]QΓέ‰θβ1γ=ω+ΗPͺS…;RΧi)°°X {έ>² 0ΰ #ϊωΨi²ί¬_XXsH©csΌ•ZŠ‰%$rφ•o\»ωuπΠήπΨ™œt">‡wγO%ίώί"πΩr{Ξ―νΌsΓΟπϋΕbΌ>›’[ΐ΄T©hc©Λ)˜I―OΨJ|"e“λ$U8 Œ™,λ0 5˜”5>θU' ¦x@IDATEVίκ΅|Ν†Lx9yv5οj]φ ² Πqί(ΊJtχΜ’)ηφ–œηοχ”$B*.…b'tV;αΦ›V]Ι;…Ϊυ ΈiZ.–nεnθ›ΏβKί4xη»ξ|Ώΰy €Ο9Gη[<yώΚ"ΰάσγ[ηΒ·όΔ―ŸΝ§vϋϋ΅ΞC+Θ–R,θD9Μ…CΨΔ«1[YP’@η.‰Φz:«‘]eΞU/«gσ―ιΨΙζg  ͺ•Θ9aVo³ŸDΆΊb₯ΊuΘπ*λ•Ω_`ͺ5œΜ3xœ―Ϊ1ίΡΨ1#QΰxTΈ‘Λ\?£~{˜2al2Ϋ:tτω2Q<"πζ«#)± ’ν ˆmΈOΫJϊ!›¬<ΔB,ΔFw’η­ς\0ΈPXrΞOϊ cνkΚMόfΉΆ'?Η°; Θ8K HœιoΗ&π‘ƒ!ηP^AͺΑ½ΤΗ¬Αž_ệŸ7Χsz₯Ž5έ4μνS!pΙΕρ6κυPΦ'χ]Ϊ?ΐA£Ι’£Εχ]™Fζ™XΦΥ<ψ)l·}τΉ@[΄»[|dƒ»Ί€ίμPvZ $αN,D’τ8ίƒ‰ ˆœ;™χΡR{υΟΈr<ΟTΉ9}ΰ5έ§rαΤέuΑ ΏySd9ΙbΏ^{ΓΖ©Χξ‡γ?|&ΡρπPώ“θΗΛώŸXη—}Ϋož<ρoω±bρCi:Ή!M{ϊά3Ι©lζ# MX Η5“ŸžΝNVe€sΉFΩΖ±θΖψΰοξ £ΩΌΗΡA{ΛλH“ΚY°Πύ+δx3ΜΣ?AuPνάIΓβ{ή^Lγxύ1Ξυv3fž{+­˜AV‘Φ‘ŠΠΩΚ7έH˜œ¦¬ΤλυJj” σΙ$Εͺj¬~ν½/Ή‹N5οωνŸόw_1yNΒ΄–oyςδψ«‰ΐΡχm.ήwί’ρνowεjνK²~S‡²X*ށS¬Λ…Ϊα-ΐζrζ@ΩS™YYίΰQM¬U­<θΟησλLΜsvΆŸ€VΘiy Asœ{ωW°l‹l±#…O8‡YeμΓάKLΖSN°Σj’—φt«τσ$ d9σt€V˜'8΅·Vsθ•ω)xΆ\φBWΠ¨΅²ŸΜϊ@jŸΐΤ‰X,Έΰ»eΞ1κ…1pbœ²ΧK‰vr|Œίβ(.$„ΨφΙ«.’υεΏΛΨWΡΌΟXχ8Ώ,wμ/;Dϋ=Ύcn@²Qc#ΈΧ+TLy ζφS€Μ?£Ϊί%\7 Ε&>Ή@Ξ@fΊέ•Ψoσœ «Πžn ΅θMPΪ¨Β·ͺα*ί{ϋT1lo‹ΗžuΦ(Π9ϋ_CΚkŒΉΐCω#…ΕΠ+Γ4 ¦Ω·$AΥ£ϊ`q‚“θθϋ,ΛμΕ ŠΜZΰΘ|ό]‡”€δΕ2ήΡ•„Ώ' ¬ΓˆOΚΎι„κ…ι Ωu‘Ε7¬ύ―ύρϋί~-δΟμn9€ώ\€ΊpαΎΜ$Α—Ηƒί\*€ΏT”Ώb2>ΰ#‹uŒsό;+1ΉXqΙΫtJ*Ξώ'ϋ`C΅UΗπύX8rΛ^+„=ό0w¨β„[G4žOΙΔpŌm?ύ€σΉζ,θΘ&ΘHsœΙΎζ{–©2™ΈšχCοm-ˆεpςh#JC]΅Π΄₯”Γoή3 zΫdΝ·ΈΝeOMFœ1K£•Ξέ}’«χt:λ_{οm_ΫώΏu7_]?όυ<y>ί8›aYGΖΫμ[}cε—wΆΐtII +£k‘‘:³dΒσδwέ|]fZPΊ xfζεt&TΖߝS`‚d_QκP8ωS˜d[2ΉZ·Ωόe’P€uH ΣβœμϋΜόΎœοQlbŸη: ΘkΣ¨>ΞΚιdvZ”°³“νΐΟ₯cϊ¬ϊ/‹0B'Œgΐ²N˜»ω4>‰δŠPέ1ͺΩ?}EΝB”©Δ― Ξ=GΗMB:Ώy›μ»`P ΅ŒΊl΄’Ώ‹ό~txq9žρ°Ÿς—Λ€H °ΨkΩπ+ταQX䇻A=Σ΅UΞ]#y1“oS’ΎΫF0Ε5‚ΤŒΞπγž Ζ±ΟƒŒ/}#›=²ωM@rbGR§FN5C›;΅²Ζ οΜς5λXΊΰŒί²ο^#ο"(59θN`-*ΖB‚ΕΕŠάDόŠω@°Ν‹Ι>Δ£γ{pyG—ο>Ζξ"V ğ;)s—Φϊ“k―Ύί«Δ€Ώ~ηδΨΪy·ΐ‚+TW),RΤIΦ&ώί΄~βυΏώϋΏϋζ­DͺCΆεϊζ‚ǏΏmqΗίό‘κ+Ώυά7κΥš₯γφ|2˜Έ‹Θ­·€ΐ;Ξ|ΟZα,ͺΗγ#Ηλ̍qB*pKι°"·˜άςκ3ν:‘0‡ΰφΦFKK>£Ψξ@Ηf™ΕόίΟ1“…ˆlxΨ2¨&{ψφ*Ε€ ŸΛΔl3™dΓ}&VίNLs4qV1Ԉ>šΰ“2…§ψΎx€όiϊ·ήΉ7Γ}€ΎSσΜιM„ΧͺΔX όTŸlΟΤa·°²3'&φρ]©ld»²%WμTζ{QFΉpΎαx;tΠD›8¬Ημίkζa,ΑΆ_Žiν莭7ΓΙ#-ϊ †*1f“ # f,±–BΌZΔ‹έ είΩ+œάnh+,¬Nθ9Ωά‘/rAΆ\²λGΒΪ:ξτ?Ž Ω΄—f΅ΥNc£συ­S_υσπΰ[”]ΈpΞ‘ηΫ!ˆ€Ÿώ|ϋ¬œΩΜJώψ‹ΣΏυo?uλνΏrβ†#o i7=8ΰcQ(ΒB31ρμΜ ΡήΜνΔ"·‡L„ή”±Ά Y˜2}τ ‚ ©P+ΝΣZ©΄ χpφ…·½α?όoΌδι3y²Δgύ•δOσδψΌGΰξΝbxž χΏε‡ηΥζk¦½ύ΄ZλΜQζ' t0{F&ΨςΥKpHδ΅ ³—NΞb^*‘ΗΛΘ«[Ά„6NDΌ«¬aλΊΐ²Ζbj&ς°SkέέΗΠ9˜ΧmΛ}τe6₯ C,`\Ϋ–œuτT$[Iπ8ΰ‡(Σ0©Q΅mϋΌ›;c"Η-ZΉ™Η{ͺ2§VΩƒπ¨‘ϋεξ`˜ ¦^6`FVΛkH‰ϊπŒ‰δŽˆΆytXΫΟ> =hΐ0§ΆVΤTλ^ˆ |όv@:Αxέ;€ψ§†έ˜¨ySΏg€·£θΣ>ζ¨aιƐΌr‘n9r4œ@»\δϋ©ΑυQ—Όΰ{M‘ΆwJΫXu4‘&ΊJ({@½"±j#ρ›σˆžΞ~‡qL&zη¨,²Φx2ν‘yvœ~Gq7–Κ2 ΞqΫΝkαΐϋκ΅~ΨΪ!V\/₯<₯j5tVγ…ύ!VΚ88°θOJkܜEΆα"DπΜ‚!£Δϋ²e―“WΥ… 2γ=Α9n=ΥζψŽa57γΗZ§½ώ•/»γuόΫόΩ·ώνΥρ&w―sKΨeθχ…ςνΉž/l&σ/ωŽΏͺ^«Ώ—Oϊρ½ΛOΟΙ.•Ό­Δ„g2 Ϊ« n«*ι!•}v’pβ@η Λ’†ωΐ{[l‹‚)R¨ΧWωπςz‹ΫS½:+ž―[aςJΒήe,™ω9fΡή-²#όξ‚Τ€•½οŒύ€?gΒ©šϋPβXΦ§?eNΜƒ6βΔNטDg ΨŽ“Ν.š­Ž.Zα”L2?k Αd±υ0auΤ׊ΕΚo½ρώύλ~αWΏνC‚θ 6Ÿ›Uh>ίςδΘ#πωˆ•QSNόό£―Σ·twO+ZWΉΥoϊΦ ΐ±Αό'{<ζ6ϋ?‘œ«Τ<¬βΧR’#­'³ uό‹”³!Κ'Ho‹¬πΠ”&½›Ύ›a3Κ\ήLš„¨γ…€TrAζVX']\δ6…~ΣΈΔ!)ψΟuOj0ίZ½°Jε+έ>¦LϊΞυ}€βΠQ°ŽΘ>Θ£d„|' afχ8ηλ%mNMdι‰ΧάcڐX©·³cbΊRP-ΐ‡'ŽEd · MΎwΉ±m„SΘδθ—kΈQ€8Y4`ΘWψŽͺρέΤ#^C Ž{ (^ΐ(wpΕP7]€#I#ο„V₯€Ή"nκ—3b©g4ΓC~ƒcλ0½ˆ‰ŸΕF…Λ(:ˆ˜ͺZ‹WuΠζUL§Δξ©Λ]Ɛ…k»$ ς<‘Zΰ½τξγατ-α?~5|ϊaX˜pύ’Bώͺψ¨†ΜNβNΠC†Bwyό²κRΆv‡α‘‹Ο†ΩΗWžέcuΟδ‰ŒΓΊ,ρ8±™|¨$Δ €[h™ΧVxŸsχΠ;‡σθ-]AߜβΘ‘FpΩ)˜‹ΉŒΈΦBΎξΚ_¦;sΛ‹v›ΦBγηαuά= ΤϋΜOε΅lRψΝϋΎόί~εϋ.Όω!ε-ΟW]tΘω–G @ΟW(υΖp’B kšτšpΔ0‰Ϊ™γ$–’–5–Τ&Nρΐ΅ˆ[E—y‹),γmζΕ1 Ηb'QFΐq2¬±",mΥŠΜr€cΚQ3©λtα<-ν9ν ?λ¦Υ™\(s ž˜’!ρ5A«›²ε ΐΕH–8wKL<ΝTλH« "γfož°ύ_μ½ ΄eΧYίΉΟΉστζW£J%Y’…TΙ–ec3Έ pˆ1t)@“Δ$»0N€ΞͺWMV ° €W–Cι@wG΅ΪΔ@7Mθ…‹!€Βm[%Y²ζ_½ιΎwηρτο·―δ‘qΐX₯w₯Wοέιœ}φΩϋΫύώίχεa§e³e;§ζnβy‰ΐΊ"λΓ BL]jΊ·V‡Οš}B­.ŸΣΟ)Ήθΰ±D°€n\&ήI‰ƒ Α€δ9ΆŒμBžŒΓ*J²eΆΨE*«ΠΥα2A τ™±<XZ Χ¨FfY Ζ€΄ͺy6‘»Pσυ˜ρΒ€ϋY| Ν{c^k!k̈: θ]δΈW›΄-΅]D?*Λ@λΑ:fͺ?Φ+Ύc™ξΝΝ.¬θœ•qΜ-³A€Tr}ήmυCsc›ρ‡.™δZ …ŸP`Μ D”hΔ£9’^Οφ“ΎΦ|ϊƒ_beŽ5 }| 7–­c‡€BςGς}δΙq2IOώτΟ>ό―ίξΑΏvκΤ<Ψ>Ωδ€Ώ3šσΎΐ?Ι₯½žίπ·νoε*•ŸΙΖ]δa˜υh-£ν$|*»ˆ|LΖ"5ζst) >Ρ>Δ*IQΜτ€(CΝοœΗ4#ζ}ξόΠμ„Η?~-|μɍ°Ρ΄¬7ζšΣšdήLu­FG͚’2FτΞ;†/ψό#|γ`V¦!“Ωp‡MmL΄–ڍ glΉΰ–‰υcΤ²²θAsΑN_΅Σνu'ƒA‘~υχύ•‡ϊ…od °Foœη"φϋ=°ίϋ=π§μr>‡?rΫΏ}φ-xωޝm\™―>gš£!Ά7˜YZͺ­U鬝UπtΑD›Υ"Ζyπ~3Js[B¦FT©CΟ+Q0θLβΐtvΚΤ[nE†Y}΄°X_Ÿ α@[H °­€pΏη $κ‘±Γ@(d3'Ηr<ν€>L£ΧβΗ ΫΨc‹ΊH†˜]C°­Q;Χμlof‰Μ ς<L‹‰ Ž‘²$0ΟS~H™γΚUk³aU,Qm1Αϊ„c5aJCΎŽ/.Ss NL [ €¦bΛC¦ώ”φ₯…*νd―Βsα’Σπ•Ή–^HΒΠγΠ;_ετ9 ΤȘ Ψσj$ΠClν¨XM§°Η5€0Α5˜d«Ί~™UΰOa±ΤξsοοπΜrͺ€Ή{ε-χέ^yϋΑ˜ΪU5huΆρa πMγqŸΌ‡hΒ{_¨Λϊ—£ή³<’‘ƒΘ"ΝΪqu½žzz'μ\_η9kž› m ‘#xNμb…¦l”ΜΓ†Ÿ±2‘ίqcδUXFΖΫΰMWPƒ=§x;Κ΄ςε|ϊτSWGΧΧG―Z>π†ρόή·ό†Ϋgχ “Ρ§7ξγe _Οo|ΰΉTϊΙρ@>Q‰DrL”  Έ±Pg’ΑxΰŽŠ‘vC΅gc~Π@… Γ%Lͺxy_Χβl’1ρψZh0VΉΰC ‘μ oΫή$/e»ΓΐN£PDΧ% lPRΝ…Γh―–Hƒ'@–°Œι"ΡΚGo^μR^½ŸxΣ §ψ @kΆ΅ [M>Ÿκ&«ΘΪQΓ­G6h ’‰σm§νΦ0y¬~œφΫ]‚β™?Ύψθ­―ϊ·2_s{EΌΫ醝ΦnΘ,g-1 —%§ΧΟzΕZXδ;\AJO₯°΄\AXΈGpοzIŸεis5ΥάΞ ‚#s΄=εoΤ1;•Δ“,:;˜–ξ)Ό²—ŸΌFΙά~\/ΥŒΨ—cϊΟuΡl%ˆ€ŸχΎ€˜pʚυΒΚδx.ψUS$ΟY~!,­. ο@_MDeFp Yζ˜ΒNφ™±0cžΉξ±R\±ξΈu)$ΫLj{« Ct>P’ΚΛΧ:a―ΥKr“.›ΠΒtό• ίψs[Ώώ·AοdίcKgήx—-€ώxώ;ΏϊuΤ·ώΩΙ¨ͺƒ—1₯Κ1˜”ξL± T_εDΕ}£ΤAΖvqŽΰΨaεWSUHΧSgR @;dΔΠέ‡Νˆ)ŸI#p†EΖ‘η'y€ό™bŒV— ?²Δ fήγό΅gŸέ »]ΗΕεπή6Ÿ4ΰΩτ@CΞjήW’‘ЙΥΓcλ’ΚFΈυX«υ…°Π¨pΜΩ8`ΏwφBs·wλξΐΝ:U»σvc D―Š^„(Ί˜Ζ+―zέ­oή|ο―ύέTΈο’Ίρ¬Βώνχΐg§’p χΚδK½ύό°Ή»€ύk8˜,X"W0Ε₯6Œr¨ιώΗFbœbL‰`V§<ΓB)Ϊ"φΩRΫσ€m‘±'Su»ό)‹ΰh•LJ §Υod·“’u]™ja±2`Ηΐ#Ρ.r5ΣfžYf@<ŸV‘'V―θΖςΨ<οΓ ϋ\[Ξ!ΉŽ*ΰ΄K[­Π‡Φ3XͺRκšΰΎ€93Έœχ«κ—ωκfΉ0θ"νθΖ zœ’†ŒJΨύ~ fU{ΟΉΑž‘Ο(W πμj]zVθ¦δ+\•f€JΊ3Ϊx7 Sv{Μwz;-X[ˆώ.Ρφ*η‰lνζTqM@±e)~ΧΎ°MEܜ#H&ΘEΟ¬1΅}Ο‚θXz›v4j₯0₯Ζ[ζogΨCW½uy+\ΏΌV8r…c™†^/ψ‘ŒΠ– `y‰τ―’\ΦO³ΰ™_±™^˜€ά4vκ•GH ά?4–μe ͺμ*@xo$ό ˆΙZυ‰,l’β‘8―hΧB—l>LΪ;Ξ{δπ|$ΛvaɟΏΌZΫΝH‚9xΖγ½i‘°XGάsύΚώ·Σ§ί–ZO‚ƒξ?n°xYhαLUwίίϊΕ …ς/gγΑΘ‚cfΑ »I  “8‚gA­Z 3³΅iS’Δχ1‚Ν„ f„·€;VΒb¦:‘u1©s'n`ανΨ•ΙFπάhdLΣ¬”7Μlc˜ί!.Ύζϊ^ΈL”q—ΤF.yš μuWš,±ΈωνΨŒΡΩΜζTm—ξ?άRG wήΆzς­λ #mΔ~ōΑ”ο ψ¬2$vό/ΓxŽ8—tά›ζ§Ήζυ‡ίςK?ψ›οΈzϊτιά£>ΚUο?φ{`Ώφ{ΰΏ Ψ€‡Ÿ^›Až½Ι{*gα…9&€ck[{ια|{Ωηs Έ˜IYŒΆΐ°+ΐν΄CžΟϊ‚ΡΑS^›"ΘΘ±œ £Π$8jΆΓrΎ.`Q9Δ›nο"χPžΑg΅εΖ|˜―ΧBfΊO•Ώ1ήH kUΤγrcΐσ€2Ϋ¦vχDδZJ€qaa™Ξ0ζΕυ‚ΰ–Έ.Y|d>S¬ΗυŒĚj₯cJVε%Κ#8>Λc•t3χƒ£s<{LΙ48Θ;MΏ»Že€ΡKYγ\%\›τκše N&ή<š"Η±ΜPR ίzx!¬(οr[₯Τ·Χ>μόΝη"Σ ²+­ttΝΞ³{½1‰A TeLί'ά£λ‘`ΨάΪ‘ΏΙΔoΧχxΟžι…EΌ* ›­ι`~!8‹mΙ³1ΐ}μšξΘ‰)c9Œ8υ²q._»c~ι΅›Ώυ·pΏΘŠύzγ=Ο/―ΗΪZΦΦ²N?t0™«~.—έDTξwXΞJ€Ά€:˜wμrΣ3FΪ‰¨M˜œfΏΛ"3©#zΖ4LΥB#‹α­2‰έ·-)J/c0°€η>Ac’ƒ5ΜϊΈ;ΆŠ:ζ°‚H\m”e2OIψ^ 8bbΥ-vΔ:|ΑΉIP]Ε υh‹Ϊe%Ί™ ˜£ΑΠJ©<|p)4`ȟΏΈ‰aΏ†G‹œ–”aΝΖ{008#Ž£‰Σν¦+3–`ŸηсΧ9GcD°ΖgcPΘ>όe₯φλώMύИ¬œafzψύ²~p—₯d”‡'η.œKRρΣgOρσμΜ§tΩΩOωΫ?οΩΉp.œ~τtv–ƒž9s&že±ί/Ρΐσxν[V―u² ­|euˆψwι–cιCK”vΖ%ήi† *YlW »Λ‹afZ6ΉP9PYY`$/4D²Ξρe|¦Μ4i0ϋVΔ·|v€mUΛ,ΓΨ8ZΉ°Ε„Υ>:±Ζ>Μ=mήι>ΣYM΄€\( :Šη{,<|WdκΑΒη›e$~ύv+”ΆΙ!@Œ vGMγ6‹dΙv7γϋT‰ζΨ€oΪ*±RTϊίΈ{Λ΄»ύΆΠD}εΪυP4ψΛ²&•"ΐΌˆχΣϊƒ›£eNυ’"5(³~(kp½*±±ΒΰuH4)]<0ƒ lμ v9ŸλκIτH³Αl˜g!X‘ΟLψ{¦ΉΰΊ<Εcx]ύs Οσ}½ 1•ή[Ξ#pΧ/Zfβ$1­ͺ©ω?Ύn{ οnΖ9OZx VΊΫξE/% 8Νω}ΔT―ά―͍DŒ7’Oϊ|§Θ&FΆΌGρFYΩ ^ŒDj 4Mα‡u›{šMυςEž[C!nΏΈ?ΆΜ›%Αϋɍm@ζ(_£ ΊrƐ9Ό£E6hίΏ‘QN;“lxΟcϊώηY8ΫΫά(=ΰζτeτΘ’Σ€šs§J σεχ’ΕΈ‰ά“Ϋa­³ ;η”2 #nγΊ3W±§°7&€~# ¬“ŸΟΉS‘+c°¬ŒTΒ8΄5ΈπΖΌ―›ΝΌ–BΆΩ]ΏΟ•91‘ΥΩΉ#ΞΠ*3Γi?μ˜σ€έΙ0 Α$9R©3­ήΩ‡>ϊh&μ’-›“πψ°Ϋ²ξΚ9*Fv._ΌJΦ t…ˆ΄@€2½ΒNΊC"QŽF› ΄ΰϋq±ΐȐ/³M6ώm¬Zkτ„!OžδοχνjƒK0½#δSH‘*ύβΪ4πaΎΔο¬ZՏ>ΎΈΑ^+4―³ ?ά³FŽ€₯Έ)zΒ&Α͈€ΆQΌ{“Ё$*μ-Τbώd΄η7‡R₯‘#ο+ύθš%yTΰηΟj¬§€vΧ5™~-πGΚο‡k¦Ίi Oͺ‡Ž‰|6ΘC"₯9Š£p{τ‡„W΅ŠάrΉF–ŒEbh)ω[Ζ9ώŽχίΡΓqψΟm–ψ·`=3XxžcsόΌŸl³V* ΎΛS=^?}e q u»FŽŽ\ƒύΫޏπζƒxkΣsηψόώγ†ι†εΛηqςδςηϟα7ϋ'₯₯•wχΊ[cΨμGd]‚₯ ŒηVBι>Γ$LL¦ ;Wΐ3Υ BϊϊXΈ6€BΦ7aGzόφ”%-Γ>wceΐFΛ€ˆ“4ΨΓ4€bνcωΣγ·Β#ψ&uš―ΗΉ™΅δΰL °ΕLtf.n*&ΈΪ,tm²Cέkέ9˜†9vξ;δ…nξRΥ ]WΚqΥ}Y %Oζ½ˆξL#Vƈ °›μΞϋCά„γMΞ­„…]5ΛB’¨A4ς2¦`eƒ mNN\sq…Σ#W²[ξZxΰ-ίκΉQσCG°|ξ\N‚E¦Ίmδ>γΔΉψΠΕΚhܜKZƒΕΡ¨2?Μϊ άΝ9nζ‚{1Ζ…Τ<„EpeŒήŒΌAGcΎ.ΕqM;Ήb2Ξ¦ΕfΤν±φ6AζMV„VqZo.ί_lίzκVγ₯ώΨmŸl>…αΞN?J+f@_³ΏΨΈώ?(<όπkFw}ΡόΝqγΠOuk51o~„L‘ΪΫ R·Q§ψΘЈ–vu)$ Ο¨*—!CΣΛW­©ώTƒΉXΔ7°―2› 8•ntFό,°”(Žw:%6˜oVkmCX ™&ώlσ] Tε°•²άsεBͺ`‡G°jšΕ]²‘₯˜‘`ˆ-§\mΘΠ)η,Z†vBcΣΙΌ±·‹νo…Αv‹b δ6¦ύE\”jΐ0WΡ) θϊΚJžM{—’ž"ρΰTςŠ˜άqόhΈŽCθn›αόο?νwl.z„NΊ€ŽcA-ƒP:H…>RΊ]Bj`€ήΡΓ‹€¦cS€†"0d΄€•„κω¬ƒΉ‚χΤ4tCE­ΘЎΈε…FΈύο*ΌvH»ϊά•]ό‘ " α{²Ζρ9fβPZ3d-³–ͺ‹ŽiRY?υ΄φθΓ)ο»αΜΙέεu½΄%>Σ(·ΨX8ϊv“±GΚΧ”cY‘ΡcH/XNmο‰ϊhοξ΄Y›ρΐjxΙ” §HK;μ9μlJa™Θ:³Uςρ‘n‘±!ˆŽδ+rβhΒέG?Ω5ί£=‚jvr yž²aρ³°ΥYoΟξRόόx°νb9)–WΨΖΏδΓΏύ·OŸΞ¨£Ω±Ω9χ}IχΐΛ†žΌSγΧ}Λϋί„q{χh΄ΛΦ2Ι»c–YϊdL•“άμG §n&°ΏuεΨ₯[jt‹0Υ ΗδΣνζkSvή?›ΟN^Λ6ΕQLώneB΅ΕΕ‰.: ¨:c ι"ί3'eΣ,«μ.–'¦‚η)y*3 ππ«‹OφΨ0ˆΧ5Ί°ή:†γΆc  –be¦.ΠšƘ%Ca¨ά3έσ44ψΌQΜEκnάΨF—8#!yΎΧλώ™4!a@sϊ€θθͺδΪ±‘‚ΎΔΝϋx8Ν_zjλŸσω/‘ϊKz"ΌΨx%A1`ΙΩ³gI]*w"%ρΙGφΠSσλύΑ±άpzλhšά‘+§―ȊΉ››{{ǚΧ/-w†έ…ρ(«§Y›€{L'Tƒ\¦αpΏ'DΤ;ŽHuσƒΛh|£Ζ#aA‘θ‚œ]¬ΨΫ.ΫN«;ξvΚΏUέύ­ŸϊπφΑ£«fρΊΦιŸ¦Ο“²λbR*_€’Ω΅Ϋ~‘νΆ“΅ΩŸ\§«g\ŸΛΤ±ŸY;—ΚΩ'φέο?‡x<ίς…?pr8Mί3ΩۜT(Ω7 _±™! Μƒy΄½’ M*ΡEΦΣΩGΖ„|‚Œak–™M Μ`VΕ xΰΌ7dƒωσ ξWEηVπΫ=₯„‰e±όόψ=‚<£Ψ[)+-ΕSi“yύE‘iC•=ΐOeH“Όe·ynΎ΅·ͺ|Ο― $@X\ €υΩ*nΒΦ_άά ΓΝέTŒ1s“Š5ΪΆH{0½m@gB¨ΛšUΰυκb=”Iέ¦ό°C`£Up/ԝΛΕHβ< 4Bk]u“ΐ{²Ωϊβ•u”>δΉD“Ή‘υΠϋ³έ ―χ9‡ύ\­σ]ΞΏI?H«ΪΨ«cn7Ρ«χΦo@–Ξορ5ZVΣ5ί@@8γΧkžιθεε96•^GJD'ΏΔ:[ΓiΖζ―οŒ9ΆΝtœkχ ¦΅σ3œw:DJΙϊ(ΝN ›N‘=ζ ŒWΎγΛ ³Έ&σ“•—ˆΥ―qm΄rαCΖς”ρ@a–ΰ§Ξ8›±Ύμ?nx™θ,qΰή7ϊ……\2ύΧlλ3tlLνhω—Ώt/1QΒ"œ±Έ3V›ΐ΄Š»eόΙ„Ζ-γ³1u-&ΎΌKήΝ=vφΚ9œ ¬ |v6Α¦Nδi”Μφ\ΕΨ‚1˜§9‰9ί„Ι™`@³n3SαΕ]/oϋIf9°WΆm0&ΣΑφΖaΰ&:κ’ejΣEΟ@`E.2Τ9ΎgF‚η§jΡL›7šž‡ΆNFdέA…η#sGMœΉξ!ξ².§λ±ΜχX„r»›“…Ρύΰ›φ―ϋΕoω™5‚‚ΦΞ―ΝΎπ’ψ'ΙΦ²δ¬·8όQΐœ]Κ–‘3Έ]Π}»―Ÿxβςζ+zƒή₯Ζ=Λ=$’ί>Nέ]°zη3Ψz‰Ι!ΐ˜ ¬³d#Νέ`Τd|ςΖ°πΊΈέtRE‘<) \¨»,ΐ€‡B’&ή€ί¨KωyΜώόntσp} φΖhw΅yŒK4€“>εΰkΥνΛ°q­Ρ¨?·»Ρ{j{«σd0y2+–ž)Νχ―ΌκΤ­MΖ‘ΨβΣkaΝΝa_|X―¬_pŸφωύ'ϋ=π_Τ€ησ|ΣψλŠ++ο+ h5w¦Γ½=H@ζ„6Ž‘6Αζ“‘‹‘MΥΆΑt⏠CάπΕ:δ <,Uƒα]Β;w4?KΉ!Ω4Θ¨ΑЍŒ)6S ³•ξΪ]œΆYπάΖΞνA>8«œΓ @=±6  ˜ΤήG—=6]Φy¨΄@Ι·<Ζv › ?ƝX\dΘμ«gΞΊΨW@,ηtZΜι*YVCp|―$Εm#HλSΓU8vΖ¨9Ž΄wΒΖΉΐ&Ϋb/2ΕVτK™Ϋ\Wgk/.?ίΛ!λH:;‘ڜxϊ`€dZ€\5žΞK[œΏζω~l+ηΪζ:kΜW„=₯_”\l*νΰZ-—.udωνlτΝlς!ϊΓΕ₯°…0Na£ΩƒKΈ–ύQΧ ˆŒ½zδΤλ’\σμΟv&ΎB\ΒψŒΕm2μέ„l;hάΗΨ±ωyͺͺ©πΚ4W`²΅ƒW½Œρφ–ΨH(‰Y¨ˆ-’ΌφιQPFY`½5°Π{QΓΛκύΰQn]'SΛηΗ\.‹Ω6χgŽ‘pbεA8“Xp…οΗ JRΰ₯θž“ό<ί―„₯rUγ‘•υ7 ΏΟzŸrΟAσ|f.Τ©qd©n>v+Ε\ΪΉΗΏŽaNNήσΐιGΧήω›ϋ,4]uƒ<^ϊτιsιΉ΅΅Iρ~ώGσΕΕc£aλ ͺ­b"GπΛΔ›°4Ά€™A,(›5:QΩΒfΊ’0xξr•Y¨Ο2₯ YW<‚7‚μψ¬Ψ-;˜χΨ¦‡Σ0(·=n­Œά-‘k“cUϊθΜΌ²Ύ`S ƒΞ+μζΩΑB`t1β&Υ§ΝF|έ‘°ϋEΐz{Σπ4QΒ[-―ΔAΤδ†F‡τL”_­r^σpmzΊ<†Ϊ²ΰX0.½Qƒ$υ ͺ…φu• ©‚¬ŽθυΒΆcTGτΑ;.GaLΡ»Ώθύο η?DPz„ϋύsϊ‘`Δ'B²Ά–Œ“5¬jΌγΠΉΏzνΌΧύs‡Λ_ŠΣΧχΧ―|>΄οr½k«Ώ£aα_š£ή„MTfD7ŒΔXJ #{€ξcqH&τ₯ΒθKO 6ΝΗκ•<ηήυd―Ί«ςj%Τ\Ddœ0ψ‚$ϊŸό·Œ1΅ŽVΗQ‘”ΛšΈk·ϋδ•ε4ρψ΄,-VΣΉΕςβri©RΛί½ΗΈθÜtri³Θφ ›ΏυΠΗ/—«•§Θ2πDΉ\z’œ/?^/δŸϋθΰƒλάwT€S>ε69ώ„sw£΅>}Zvή§ŸλχΪ6ξ?ώ"{ΐb'ΘΤ³φšΡ‘oψw_;θ~n^«ίuσάτκB)}κΙ™OOZ‰Ÿ)ς΄ΏGŒΫA_EμW½σp‡Έ~—±SάςΞPΊ± a X•}vΞ΄hκ₯η±_σH₯τ’5§ΘB°ΏΚ8r€f¦φΙ―ε9—Y3bρ(€˜Ίf%4gη³`›Y`Λ©&:Τ%ΜΌΐ“ 7θΤψγbZγψ#^ہ-ΆΝXτppa!#`ΜΡφ 1)GVΦs‘h"λͺKSGkk†§a‰΅ΰ\8O>ΩΠΜη8_Ζ^Γ*wgR’~Ύc;b°3w}3™Hι›„rΩυ(ΕΨ%“€G ¦ΑQ2ƒ9’ό8ληlΓwάΜcΜn±΅ΎC‰ξ² “cιAΝ³&σ΄› Ηp1 xH•6*Ι€Αήq9π€Ύu…(ΰ‡°Ω;Λsa΄2σ i€ΝΌNŸvaΆ§Ψ@‹ετ\t±―φ‘ρ·;πUΒIrdq1ε•+%‰¬7Kδ$Ε»έpoT!€’%:κš}2iE–KΉ†ή±`˜EœE7Znnž’†[n^ §»{"Γύ{Ώ1\ΗΛ|πέC/žφ―$ΪKΗVΓλ_{<ά|¨~ϋ„ΗAuO τ$ΏψNϊ›!<Θ―ύǍΠ7<€~Q›{χΧύό—O’κίhγ2„YΘ[–Σ4:f‡&L°<#εά•ϋ€Dd±cΕ°ψ0‚;ΐƒΑoΣ ²ΡL6 ­ŒZgυ&B΄9¦[rgoπ ΠE₯QsΗ­­Σ-ωΜη¦r°1˜Λ Bf>η£MχάΗο•΄pΊ1mJ„δ²[ψξφH±Γη €ΘΑΜθ–ΚΓZδHoΪ³τΩ+ZεJφ<2’ρ’2rmbP5;˜Cγ˜ ŒŽ›‹2@N‰ΖjЦ۝ώx±±xS»ΌύΞk?NbiΞΏ@aΗφ}.ύ³–ž<ωΖTΌ:4:”lόξ}ψΎvkπ¦Ρ`π¦'{ϊώCG‹sθ.Y·―ο†ΝKΝ¬Ϋd©e±ΰΖ%˜B<”,Γ `™ΛΉz›ΈpeBd|\$”aθηpyΡΨ€”•σ`δ{lF2q‘6αΏ¬ZΒ†ΚNUXθlWŸ~gω½Ι‰Δ1¦ΙΔ…Μmδ»Η΅²˜ƒ1z8x£Vg9\Ž»Ωp―—u&½¬—τρ# ίEΎVΰΗWς£α½cΒ’ΌΧ#UbΏΧ+έtω#ΏςμSεbωcŒνGσΗjsωg>rιƒΧ’SŸ XΗώ˝=KCfι™3^Ί³cρ²ο΅΅4\ΈIΖΜ΅ΥΏ|ξ,t›? mΩk§Wwςi™rυψΑΉR s; M[ŽΛcΨ?χς`S£ωμ˜@.¦J˜ΐμΆ°…λΘ":4Ή|NέsŸ9i:»:„Η!ΨiΉ dΜ• σ±† μΐ¦ΆsL11‚5U`ZPi³e³ζaŽφΖ<ώ|8a (©‘eo£±%Κ:€δWց ˜)ƒζζ:ς€‡’K„ Ξ§₯:Ϊns?³N4d@β˜JHΚ€ @ή¬#ef“ΐ°ί%Χ?;tία«„TΑόFΦ¬ΠήGΨ,]Έή °ό*Ÿ-iγ°—]nΆΥ#eψΛlVd’e»=Ÿ •Δ XΣ‡Œ'Ό°ΰ|—ŠΒ‘ Ο[©Ž­"ωιξ‘=ηssx]§»Ϋ3b‹Ϋΐpr~Κ*• ϋ„qƁWJξ~εrψ’/Ύ•cΓ#­‡KאΕп݌u–15‚pΪΪ釧žΩ O?΅.^ƒύžLX'ΨΪ₯α«ξϊ²Ÿ=~ξά\̍ύŒ±Ÿ_Κάθ:1ΨW}ΥΗKύ~χŸ'$ΑΐGvΗJ K6Υyn`ƒΙ•ίDσΊŠb ;_ˆ ˆΙ, β!” vœΞfγ„mο΅ka“Š~fžh8!˜°{Ίtδ(Ϊδ™f™°..^ zάCΒa0ί9CEB„cœΓεF8x`%ΜYR:»)\y,ǜ‡]εσΦˆ¬―L*Χ¦…/ΚΦGƒη°M,μΉΧΎΗϊ#[kŒ¬΄νΝqΜάj‰Κ8vΠ‰έRΞ8‘σ·ύνmD’ΝΓθЎx'ωŒ «γf\»,@Se ’xκsύ}ΨαΓσ₯πΊ2 0ΆξBO) ϊ(€~²cv$|o„>|e±F‡B:Αμw―ν„6‹!λtΖZεΊΦe3cΆŽΜl&xΚNŠLud·ΒΞ–aί]σρŒ0μ+{r8 Έ­*˜0ŸsίσΒGqΑwΡ'_8Ή  χL‘IfΏσΟδΚΔΩί{[΄‡MTŽΎ₯ -†ζ΅§Γάk"¬α±% 9 ‰-ΒdηΚ…ήXϊωGNž 9³΅ˆηϋ—hάΠφ™΄1NžωΚ7Ώ3δ+Ÿ7‘TwaΚτΕPΖjƒL”L`*«Κ„ΗΞj1ψŸχ™œ‚Q ƒΣΙ7}_Γ%ξnΙ|©Nerr˜Ύ1?¦l†L†Αfρg]]ΚοΑn4ΡI@#(j4p]bΨΠͺ²λ••α κœc< sΪ€yβ˜6J}ΰ¬Q@žcΦbΫ2‚6 ΄xf0 δσΤαΒψsΣμxh^Ο @Ω(rW ₯›Š€Η™a=\4|t‰5υΉΈΪ ±1T»Βέ†ή,)"'|ΉwύςwΡ ο;…ϊ/ž…^KgFJMφ9–¨sαψΙΥPώ†•…[{ξωϋζ Is“°qJRλ1εq“…ƒΥtq§ζ2˜vHšεβFΈΊsΪv9ΜZd‚εE£3&j>ŽϊΟbΐΫΰΣΘΜs«”φ€,Ξq%gA”‘cLΉ|9‹‚‹w42WjΣ»h ――·Ck@ΐlšc‘Εy:jΦ?©]Œ²‹<Ÿǝ`—)ΑϊπΟdŒoφ0z,('-ΰ^9N§&aax,Η―_ξF,Sφ]#f©ϋ€ΝααJι0νw@ώ%ηΚ(£Δ(mύοο}ςωνφτρξ`z‘=ž<2N?Vž<χΎ#Ω=*ŒΟΣ&2ύl^ΒŒδωpΖ‘VΦ=΄/±/^ϊ5‚naš}DΆyΖ8|λ―έ³z ϊΨ’ΏΎNή‹ιΕΗqΒ%Ήne/ u€hžMΎE¬Ί€˜)φl€ΰV/:d,$ής>WWWΒ2LξΞυλ“‘Œ†ΝύΝl‘LGΓΆL²¬΄ŸOΒY(Pi Γ&`±ΟLF½ŠΩΪnήκ„«Μǁσ‰y°Š$bDΆ"3C8 HΤi@IDAT_Ms&γ¬L#eώD‰0(νςšΊΧ iΪr0Ι-Ϊbζ‰ »Nyhηf Ν΄l€“=γs{›WΡ#ΓΜΆφˆw` ‘Lτš-ώΆ¨  ց”ΉΩu=Xi‘ϋΈ‡΄ ¬αΰX‘‘7¬ :ΠΖ₯•ZX@?œ_>φ‘…η/mS΅o*#2nΑ)νvaв?ύ&=ώmPγ”Ώ§μm:»‘αS…₯ΥC9a-άABθJγfΒβ&t)R@2Η*qΚΌξ¦ί’θ#δƒ ‘qΠΧꌱ„/xέ8ˆ_ΒΖ# hη}ϊ[f_§E?΅9ή1νΧ«ΝZ& ~L»k¬ΉΦ©χa‡ΎιŸωŽ;ξ―:\{O]cS±C¬Nνά₯‰κžυΒ ‘ΕI|ay#🰿Χ>›ΉCΙY[Ζƒ7ΐ&ͺ‹_€\wkΟ:fηΠfsοh³p`¨ b™^ΛΊ{Ηύ˜U>=lμtΨn‘έ„΄‚¬Ω=Ζ¦qTjCΑHηΛxQ°δ“lv|š4xoζ°?²žcχΎδΡΤά 5ΐσιιmoy߁i§ϋύYΏ ΙˌvbVœl‚\w€ΊάσeX΄Α QΚα²ΰW°2 Nj™> „3+γkό3/&&¦Ÿ5ϊΊ†J1ΊκdΉ]4R “L΅τs4T0ŽΠλWήΖμ IΑ"' _ I©φa`ƒΡά‘ΖhN‘{¨Uv?s;ž™¬>tΖ.˜_Ί?†Ύz?Ξ©¦Μk*Α:ь£.2©²δφ$θcp#\˜ζΥ%©œύ;Z<˜Qϊ’o© Μυ`‘sΕΒ·Σɟϋ±Ÿ?MθIΞΠsΒϊΟφc«ΊΐΉΧ&©'ΦκωQ«§…ά[/6Ώ’–―ζ·7Ψ ]Ÿd΅BaR­R€΄ίιε—Θ“Zξ—ΓζZC~ϊ;\)}sdι8² ΄s¦Kβήκπƒ#‰ŒΗ˜M„Zf72X•"›(΄ŸσςέT”*;βΈ2M’ίS/Ν]η}Ζ"‘³ncΘw]K=°lΧξξbΎχJC |ΉΒV ΔP€q±u[Τ!΅όΓφ‹1ɘ#ˆΘŠ_:žί±k˜Σ‚ω‡žΥνBΗΛHSΔΛΌΘ[jύcd;β½ι‡GμΞΏl€―sωq'zΓι‰ή`ςυmAŽˆΘR²ΈώΓβΡg6wGš­ρ#…άτΒ [|²2¨^Y[»ƒU}Ν)žΪ‡A5oC~–ΏO²t­­Ω‚Ώˆ±ckφωΐΠW6MΒω3ŽΜ© «'ͺ§+ω/ŸΣ·&Ιΰ«10…%ͺ’΄²ΚδϊΞ|N¨r$«E/ƌ½.€ENέ„M₯€gJѐΞ.q σaεψM°‰ΨA>Λ )Α `fΐ’ T›mB ΒΦFJZh› o±‰mσϋC©Ζkm7ž Μrγ=4PwP$ϋ ΟόΙcYlμyϊ‚!‚θΆ3εο-ΌŒ#ρ -‹σΐΪνβ7δ{μ.‡xώ tΒ>$½\0¬(v€ΩŒΆ>ΌςÊSΕaŒ¨zζ―€΄ ΓJΨB˜’u’„ΈΜθ'6£"ή|›6¬£Ž€…JX9v,΄°RΖε‘ρ±ΐΜlχΓYTΔ±NxίΛ97KGΦΐ‚vƒΟx«εyΝul„A0HΞοK­Βθ.£;Χ“j5DΫ,žx/θ―kYΧcΞg_r!γ8c [‹ΎΧƒiNn«r­θΟ±Ο’Ώ+ΘΝΩΜΠΏG`ύmΧ ΊΕΞgLΘτhs‡υ­OΠγjx¦Υ=ήΣ~™ρŠfSΡϋK{ηqM+ΎλΕ0/£Ξz»G_њψ_”ib~kσeͺ9Βφ“₯€ίοξΰ΅«³™σζ)γ 4ηtFTJ ž2; ϋύ?5όJˆ±u²ZbγΣ|*`ΐD ο!›Œ|ΰ…ΡΕϋΜ󩬴RŽΘ6ΫVωLA4/ΐ*ηY:>Η€sLp(εΙ¨DJ"…³λΦE'Λƒi›L΅»σΔ(eζ΅‘¨—I'χι-™|ϊ*©¦Σ19H—GΉξ·ΣΈ|‹Uωl=4F>fιΎ[ήyKΏ˜ϋΦΙxο―τ[³=ΒέΑΦΈ^X„HMυN?ŸvΜϋJιYRό-ΦΈ}q#γΪ³SK‰`T šό²Ώ€ε˜-v`dAXHŠ€*†[’r‹2€Ϋκdφ›ύ[άLΡΏTΎŒGή ސχΝΚaΚ’uΘΛ=$€JιF‡Μ*t²γ©„k6₯E@‰ άΑk~ZƒωDdsΌ'‚=(¨ύ#p(Gύ= Dγ¦ψ„e‹bζnk”€<ΈΜ(_bnŒϊΤ¨δώΊ ΊŒ™DhΟ`ΤΝΠhgνΞ0ΫήνgT-K„ΜννuΆϋΩΑΦψ υς0LΉŽυa:ΧΈς]?τ‡§hΒ£¬3—JήT?πΤΫΏυΐ΅υθή½σώ=ΚΞ₯Tq”­>$`νŒ—θ’Ύψμφΐ‹€™\θ'ΟN£4γF)>ΦΒן71ώΏ0tΎ*mo}ω`\9^"† Ύ@:Οq{2μ"ޘNsΥμzŒ1ΩΞΎ)Χ°_ΕΜΥ\L 8”9ΗΖ’X₯ΘΙ<Α»ε]½Š ζ”˜ΑL=°`·T!Ÿ²Μ/©"Α1Œ]ζ‚c”Θ(«χUCPΐ^™nn$(ež5ψ¬ΔΖEΨdμD΄Γ~ΦlGcͺΰ9ΥΓΖXrζτ&w@Η>φ°Ή9Xν ΐŽΑΊ‹=Ek7§ΌJ„qaf.ΚΉ€Ό˜°y˜`oά80 !hΩL¨K0χ{ƒ.vU0ΚBC;>ƒ½ ¨²GV +©ω£ ΨΪK΄KŒΨ›ΜɌ m&k ΘΊςaΐΆhΌ\ΥΆλsΝαI5Kύχ‚U–αz‡ΙΑ6B±^•Τ 3Ίε]Ψρ!μ°3Ό,€Φξρ[@A›΄¬³ύm¦'νS…kΰΨΌQhlΐΘsΧρxΦXWdο Μ―#γΘXCΨ―ŒΐΛƒΗWπ–’–Κ8;x>Ν—_αΨ#)J#iw‰ηΰΥΨ† DΖα₯Fμ»&ο»εΦ΅Υ|³c!$§ δ™rγNv%?¬Ή@MδJ2κ"ΎQη]}tν œβύχήϋS―UΒ»K₯Ζ747šΙht y½ηηγΥΡ‰SύtΜ"Γ½#¨<c°u6l Ά_ΛαδΙ°/γ #^ΚΗς ψXcŸΙξϊ²Ÿ»y2<†Ωa~α'πΛʁ%&XožI.`™ά3Ή π‹Υ™x=ε5ΩΪhEθ₯θξvωζ½ΨqΑ―,€8>ΣΝ/•Cƒ` Σ΅)h’^Vw˜ Ή‡@ίc²Φh£Ώ)—KŽΖ€ &»FΪg‰ί#ƒYdΙ3„ŒAd’ΰηCzΜgςΘ>β1`²1ώΝ‰ΈwΔ&ƒw’kΚ(Β‚Λ΄ 2GΊ"ž Ι@bΐ ‚dΎ6Δ η8η™ζ]’ J™κXΈ%™5ΑαCΟΡ§j5YΊzkΏσ=ηί†°Νǟ7ΰρ^Λ8+Σ@ιόΚοΊΚΰνa~#Σ°ό-†Lϊ—…Š˜ό eΉz₯05γψJ‘€«απβΩH2’‘ΠΞΓΈ $­xΛ"Lr¨ΈΈς½ΌR~[XgŽ{^4οnυΈοh4y­€άE/ƒ}½ Ίχ8^v€0W'm0§]δ1κ°IŽ‘μ“ύΫG“½Ηxι0^vEΎS…5)q\~ Θ)I$Dy $Να;Ž ˜ΪηύΡκ|ίΜΰx]΄2u>γ&Α΄OΎo~Φ¨t€3ΤΤwΪ±~ΦAίcσΤg¬:ΆaυQ§0<0φγ0ώ‘cΐ0Ι΄mƒh}’ςgjΚ¨< ›2§ΰ‰xΘ‹Ξσωrωqς•\€τ{d·—=žtŸϋι?eχλ `=›‚'iε ΐΪΫMϋ?U`ΦΞΒ,kzήΘŽζ”·ΣϋυΛί·<Ώ˜άWOO&ΣΑΗΉτUsσz,ύάά`fΣ•C+ΩΚρεt΅}}vΐΨƒ²C>ΫK΅AΗ―φhLͺ·T†ΨΘκςr¨&,eξ-.†Γ‡…Ÿ}ό‘GΒ”<ΖHQ£½dΜ„A£„Ÿ)’wβ<`Xΰ)Αή1ΏΛ 4ύ&μοηΔZ Z‹©ΌΙΏšΨΩ-ΖωuζΈΩuά@a•c– €’'”31UCŽtj%€#ΩpΐS½PBΏ]lM8—ΆtΘu™6o,ο Χΐ&ΐ‚)ΉR‰j«™sδ"‚σΊΨψY3τ8~…udH‘YθλAλ„›j3πVr°HΈτl>”sAςCγ±ν«0κ²ϊ;δ~.χ)ζa?HϊmG”Θ΄ΣF,{όNŸ|ΕCͺ$š:ΣάΤ 6Θγ8Ξ”ηzέ\)Μ2D–ž°’|~4£Ε„φ.>ϋ-2yLΩόŒx0 šŠαΪ#% ’K)ΟυΜ Xλτ½ERΆω¬›lΣΦψ\Κ φ/f―’œχ™Oνσ- εPεs˜β‡σρπό£—BΩMD†nš3Z ϊ­ΊΈΐ΅²P›[Θπ<€Ά:κΜ•-Χuν\U;L»7Iu·Cπί„ UJ‰οdΈΓqι;΄ΡxuI‚x§oώΘια/‡΅5:=„ΟέΟ½)λ?#\Ω½ςΟμ€XŽ+t7ΞύŽΣΖLYh‘cΚ>’ ‹± Ϋδ‡>ϊΑ·οΙH2­}I&[½ψ³μΈYό³<ΰηΒ±^dŸ“Ÿxw!iTΖƒήƒ™7bW&Y»mρAΔ€‰,Úg2ΙΒZΦTχΉnΩ”.wζ&¬.ο3=xgΖΠbd‘έV*}0ˆ„ΓF`ΉK`L¦`Βλσ‹TxΒu˜¨4…sβnγ85&΅Ή>iΐfnΤ‚)ε@gΑω`ώ d‘ΝΚ81ekpΛ±L`Ψέ Œ'd@e1*P±Pp8Κα*%΄DAK hρ½'A<‡κς>(¨GfDν Ά‚λ˜±§žUPGw°qm–Έϊ,jΙψώƒK― S§}ό₯₯β‘Ν0όf¬ΟOΠğ ΝBd-\‹ΐωΞ;Ώσ5T„ϊξαΈs:W(£l&xƜNƒζΜ`‰+ }‘©s h@§τ+.¬.=ΨΥΨΨX ‘†aΆ|Ή΄†χ6ͺXΌv7aφω^ʍŽ@š―[ΕΛ/σ¬’Ψ`B]œζŠx›½ΕŸ<ϊΞά[k:@Y~oŽοMY £Ξs7amτ–\²S.³†tD9‹@‘EŒGf—γΤ“‡±s!"Ή L γ‹ρμΈΗ ”4ŠœΚSnδΐ1³Γ•λg‘#“ŒμۈQ%ΩjΗ€.Χ β&sΜIλ΅Eπ6‹©’RςπNά2TΙ*’³Lπ.Lz’k?‘d,ίA]νC+a‰Ÿ\ƒŒ'ς“μΥεΎ―:Ο=]ΈίόŽ_nQ‚s=Β}ΊP¨Ξ=yxιΠ₯΅Ώ·ΌwξSΟ{¨5™IA6‚œαοχœ Ω‰³aŸ΅Ž=σaq#TгΞJ3²° kΡ$ρχμ±ς?όφ‘ιϊξ`ϋή@Ξά7ΤΛΙ}Œαε_όΙ·ΑOΉΗl\Σi­šͺ±w“ΥbσΘ€–Β“:ΐͺΣςΤάhwa`/ΫΨ+XΔΉΕPXBMf†…#+α–c‡ΒkŽΜ‘=ƒΚΧ·Βs—Γ°B>oŽiΩαν=ζE—?VH\, ˜vfόk“0mζEyQg~εΈξMRu²aa°η]Ζ«&ctγ[%aΌΗόμΜƒ9@μ.ο›ΊnXΤΓW†€P–@Ÿa6ν:ώΖfηqΥG`¨αLVλαΦېρ\―ΡϊΥ-‚sΙ–A’²ηΏuh•©”μOζ V0ΛkQΪ©ˆ‰‰€ƒkdž(΄dΈ©γ”[ £ΒFΰI[˜#{η—}<ΫƒωΌ“ €*wY«θ=c#Xo–ζ0μ1€²^k„Γ1Θω2iδL=ΗΧ‘Δ0Η9§2΅@θ1σόώGμΔΤsz2%_$”†Ψ&7 Ά%TΪηF<’M3ΟΨΠjKGE‚ϊ`τSΑz€‘ΜθΩuΣΌŽΘRΤ{ž•…Β<›½Δ¦Ž•΄πΪΘA&ΨMΫΣMϋα9δkΆU)[΄Hߌ™ηόΪ@;Fο¬i>G\—χΐψ S(vΫTsTˆOzΨlΪe ΘΖΣ—γι»ΒΪ?ώΕΩΊv!{δƒίόk·œ\ϋΒ…Φ‘*ηςοθυΦιs’RF6ΦP`ΝΆcJ?€4΅'ΌzΖLυοΔωσg˜AkώΉx‰φ£δΖz¬­­₯kk§§o~ΫΏ?Ά~}τ֍«†D4Μ₯b˜œΐζTͺΑΎ˜ ΟΞ^wφ)2―Ζ^0«γn\€…R7g`#)Λ¬Ύ82Ώ~)”jlωO`%£ ψΥpkh&°½ΐ†Ta²—μo#@ιΐB³π! -“i S$}”ζ6„ξG˜Ί±»aΣΩΑk yΠ*΁α΅”\kgέMy΄o>b…$A8‹Bi\ƒ“ ƒ)ρLSδ1…Ω·{0“2$ZXυ³Φi<ιAΤμ¨ΉP•3ŒwΑ{―—%©v<Ωw‘=ώιση#xζŠ8ρŸέ#Α€εϏiΥ&ŸχyίyΟt4ϊ^h„ΏΒb—N˜„uΖj‰vJΌG.Sd°ζ4܊;U€ά»ζB(clΆ ,¦:’νMΈχ=Œv»ΙΖ…1dπ¨—dα3―˜Λ΅ £Δ’‹ΗΑ2πΚ3RhΕ¨x>Έšο!{ ΏθCΞοΒεŽCΗšΑ>cC}‘cͺ;Tƒs}0fMΨ£ –,:cΝΕCvI—i\Έθm„΄‹1ΐ¬~)8-s-Φυrαqaq ™·\ύ€,ϋ‹νρn9v†±Yh?Er˜Ψ_‚nϋΛyδXhΐ¨ΐθœr3jŠ>έ»1Θ‘Ο’₯„ϊ/€AeυX4kv[Π3MG=φ₯}»BV+%y|Ε­\ΆΚL]e_π]΄»0sέώ6›Ιυ·Θ‡.ςι'ȞψXg―χpύΙq>½ψ+?ψκX"-ξyšιΊτBμ"· 9εΨ7(Ξ?) ρ.φ†}08e”/œIΒΏΓ:ΰΥΠτγήρΰn|ς±xϊ‘ω₯Ρθφ|νUiΉςτΘ―Ξ^ώ<†Qƒ»†ύβkl8WζKŒ†ͺ†Φ]Ψ„ΐ#Z΅oγ:eŒw(κγ\qΣG0ΰΝ€;½\Ϋd[`X0Ύf™†Μω;‘AuL’&H4†hdc_ν ™ζ‘j˜7ζ;…>™ˆj HAζ6Ϊ 1\`q#«Kή¬ Μμ”φ=ζ£H<"¬„ΡœΝ=ƒ­ι0ŸLg!γTΚ±«ŽqlΘΨ9Ζ¦Vm΅™4J*&xTœΥwζ; °œ']Ϊ„τ{Xz‹Ήƒnϋξ£ αή›λα£O7Γe@ ιπŠΗj{=μhλG_Hp.φϊC2?‘€ ”g ›Fλˆv κά ©R«μΣζlτΏς ΏSΐ>³…η8Ψ€3λhY˜„2Ώˆ&Z³μο矣?Pφ’ fλ[δ^δ‘ :ί•`˜ϊΞχcζ ΎηΊ9ΣΚͺ]€«’4΅Δzt3†Ιp¬GΞ\Ϋ¦ζλ[«‹±Ηα’m5½œΗ/³ρα~`'Xξ>?W,ΓqΜ;έFςΡ…”βΤΨl6λ©’²%˜λ"U*χ†lΜθΛR‘eΠΉΌ94ΞΪ5enΚ{ Υc7DΡ θ<ϊ8‹Ή¨υ’YΩ°MpjΜ‚€ΦRg“Α4WYϊ’ϋψgo8ώΏC¦™άιpš²άκ*xη}χΛ•ͺ+Š ΘB6’BBζ ²ŸΨο XΌv5#Šuoρ1{€ysρRξ@ŸoΔϊ%㛏~7ώΈzυκζ8KφŽωΒ/Kˆ±`ΆζͺμΒy]φƒ—Ω σUY ™h-½vLΰuΜ€g3-Θ^Ζͺ…jL\ΔΆ2’fΧ(Ή;πΛ‘ρIϋLz’Ν™ˆ0ˆsL` ¨`۝Άϊ,«_9—qW©›-0ϋӁ†–WE΄™ΕsiΤ#πγ\c/Μ¦Η!@™?#θEΐ”0π}-²…Τ .~ΟzρΉ‚i<zžΕ †‡χ‡΄ΝΕEΧΎA 6Χ~rΑΓG—½ϊ9άΈ\Ώέn’΄α€TXΌ3—Ώ.„w<Ψ͟?Ώ¦3xœζ†œ#8pm|ϋΡΏ{S©VόήΡ¨m\Gqͺgε&§)D;΄:—œ/ʌ"iαϊ£Ν&²Ζκά\ Α!Ό 4{ά'WΕωUIΈbπLJ›¨²ΣΥqιΒ…ΙAϋ:εW¨χB––—’ΫΠ>Td°gNωηTκΑ1χPΉ" ½lVχρq Ϊ¬΄B`ΰΨsμtυ#fοƒl°iκz΄YΈΜΝ¬s>”*©™σΘΚΈŸXa¬ΗϋΘυt8Φ, ΠΝ²&Ιΰ7KΎnnjυόραύGλδΑ %SƒΦ0ζ]μσ–ΛΥ+α’θ"/A\€Ub™ςƒ\2ζŒξΦ¨γΚM(]HΊhνΟ,ͺ>££šjFό:―χz#ΆBinΠξ쏲ƒiΎτuŽ »Ν~oω΄ω–ψ»WrΕςΣΥzω‰#‡―UΚOξμφŸΟ_k_ύα$i¦iΜ'13ΘΪ Ο#ΐι‰Gιΐ3³ΧΜ ΩΩΣ!γ)-π>A6펭=K»/œKH7{ξ‹h71 ΄χT]ύϝ·έT΄5Ϊ₯}m6a€xӏΪQI3qL8—ΧUCIP9Ά,KU₯‰°θτ‡Ι΄‘Σ΄Œϊ₯bƒΏ“&ύΞiΆηηΞEΩ`Β‘σ?σU_{ξκf³χο;-25NQ0Z3€1Λτρ―y`–οΏ_V~ψ;`tΞΟύΗK±Όy7ΞCλΐdϊ§fgώς΅ΗžψΓ_^Ήvu[ƒDΐ6l“'κ›³Vα+γ†2[ ¨Ρ-‘Ω|€m „#ΊTG',0δ}Σwl¦ΑΧΘΈQ\vYFγ‰Υ`τш*ύ(£M5OdF΅(`h€I]˜ •‡C2YQ ‹[°1YίhΗέΆ ·γ"[2ΰ8‚ZŽ―«Π Mη^ VΠ°ρΘ#ί0Ύΰy aΓ‘ϊΈBΪͺώΓ3rhΑόŒsΛϋˆ@Ϊηœ[ “D1-/³I ™>oŒρmQJP₯Τq'Σ»ΈY=ΨΓaε7‘‘ u Νΰ#όεwΎ:Ί†ΧΦθω?νcžoΉε­εJiι¬άί“ΛΛΓ ?°ƒ\šΙκ1Ζδneq‘N ,Jdε½fϋ…{ϋ.ώ¦ίθ3:ΦΏŽ/·“$ζ[ΙΓΝ΅v`;v―Γ|ΚBΦ „‰ύΓqX’»”n‹7Sφ•ϊIVΟ_dρv˜yz+\Όd‘=£‘`›q€{ΆH*&uΡ ΪΨ1ο9τPŸΔ`Vͺ1ζvLš#•ίlΘuλb"hΰ2]„£Ύ™σ Όeΐ]άΰ,²9«q-22Ž pd[dŠγxό8Βdί]#>γxv¦‹λρϊ\xz,0τhΤ›Ζ n,lŽ6>δτ#2c|•ŸM}8”σάΚ—œ. `δAi±l5YΰάD*[qΘΊxΣώΜ{Þ±ιΞQŌΝC²Χξ§CBx¨¬ˆ«ŸB40a7œ‹ΗnδG“ΕωΪ&…n<ώlλٝήπiΞiΆΟ zέK0ηWŸ~vΪ|ψ'_γΕόgάδA˜μ2Ωg^ψψΩOΪ™»Cφ ά7Λrϊ»Ÿβ ³O]Έ§Ip’σό}2>δ?«άinŸПό@}uuοPP;ΖnεφΡtψΚr2Ίλΐ\ρv`ΘMέI©ΦμΒB$RΩIlM”‹εσμ»x3!b0γlP`e~fέσξ#Ζ1Q4ž»ΧaΞ™’FκΉ)iζ&Θ5F{€[en9€œh6˜[–€–A˜ΧmSQ`U‘°HΜΔ=T^‘°‘oΤ‘t`;―<ρDθo£₯¦GΩ-hςβ¨2g`—„βE²DTC—sŽ•I1΅%μ_•sΝ1Ζ—K@ϊ’s€žVζd°wŽσνb·?zu/¬ΣΚ&λU$¦Μ[GΖP&Χ²©>ͺύV v}}2`μ!‰S€rFώκΫn;Ξΰ.‡Kδ{Άχb_?²²΄–αγΟ_ ŠΤ˜&G1°9R`Sγhλ2c»ΑΪ£LͺΟZ€9¦YυŠ8ΑΥF¨3G/^iQFzφ€ ΉR21“kH@τˆώ)ΰS >HZv[ 2-²y8'‹0ωΚ;00°Φό0Ω¦xŒm0½k˜Υγžy3nπ[ ^νgžxξσΞm:֌%:ΛΠK°(]aσi½yΪI>©ω`£Ξρ±a2·uΞ©θ1¦¬(9Τr|½΄JΠ&‚θΈ»f3Ε΅.qοVζJaσ ΜώΣτόYΰZGτΙΒb5Ζ²μς;Ψr½Œ9ΖVIϋθμ€ XθHŠ Ζcάν5P~›ϋn΅E捗Ε^‘3Κuuwο~όρψ ›QFΤZΌ”ϋ)S0eκίpκys·“ύΒxDω¨—T΅ζΊΜΈ’“ˆ&4σ£₯Ϋ.\ψ6ά4,6ά]»cρλ7Ψ7Μγ䩐;ΟzϋφϊζΉZquJ~b•—6Θͺi|―‚…  Θuv4ΈΌ ΐ†$›#jΈ@&2~ΊυΤVEέ3٨ވ0ψž π`³Ιωxΐ>Ώcjς‡ξ ƒdψ«5μTΒ³WvYμY˜X€ ίΓ+΄±-ψaπ|Rq˜D^‡MυDœΗ, ² ΈΑΩN0œΑ‚‚μ(Ωΰ=ΛγͺdπXJ6Σ‘‘e§ι˜ΩΨ&ϊΒ|Π&Ήw![ϊwχ|1žk4δϊνK¬‰ίu£‹aΆaˆ96(•~§Tρήο§^ψΠΪ{_¬Ι‡ώ+3π|Χ]ίύ¦\ZψQXŠ{&€φa“ZZθmΥ€ΐο± ;bθΡWάr°DJ8’Άœ B₯°Œ’ά―£6φMžWŒ€‰bΡά!θΔ`Αx-@’^+κφ3h!ZSΟΓΙ 0Š}GΏ°=Ώ]F¬S1ΕΨϋYδ}Y\7kό§ #„`=2[`¬ύžc±ΘΒ΅H Œ›»-R= δ9:‹–z|>ί0σYͺΊeΈτœΘšΐΰ">ΫδpΙηYHΝ7`1χΤΔaAR†‘‘ρ²]S€»\¬xh?Dύ?¬—#έ•‚ŒΘΰ![€ώ?fηΰκh#€Χψήl)‚ρ“‘ςi³›Ο &C,εΡŒ7―χ‹γΠΛΟΨbŒYέοĜלΨ*ŽΜγ$ξΫXΰ<Ώ.YϊCΚ'†Ωjog­­υ°P/§χ½ς`nΎR8H6“ƒt½ŠD)ξ98Έ›lpϋ{·+nάυ£ΎΦ¨W/ΝU«—ε+·―_ZZ.γaίlοtΆYyΫž:Π~…ž|BςFσΪ§Ό6Λύ)/ό‘??υΣδΝψΒωΟόr|υ ώΧk΅₯rΪψΨσKΔ$¬¦ύρ‘Βhtl?96nwnfΣ~¬Zθξξt—Ι;\¨Οη@ 5’5wΈΟnΰΠ% mž’›AίβO«•r‚¦Ή/Rξ«ΓMUƒ אΪάaΓ‹ =Žƒy„›’ϊ«H¦Α}Ξ“~v” Ά.x³_<e=B…2Y5Μ>Aκq2J4©μGΉnt‡U—ԍyιjƒΟ“NΨ\&`LfsΩ@χc»Εό¨ ©‡-’Ή¦‡Ϊ ιmul+ φMIg――ψŽ 4‹0šq'ΗΌ¦0}ΑXδ³n(kp~sJ΁4a’Δ„'‚K†mΐ\"o~Ν1Œω˜φ·HΡwιΚ΅P:rθž4mdb…­νfΨiRDeƒMΰ3‡n›=aœŸ9sΓΤS~°F`κ'ΜQͺΡGŒs׍Šσj‘ Ίε•F †ΜRdΨϊλΐϋVŽH`=ΖpτΊJJΜυOpa€άοVμBΘiF0τMK kAŠ1 j&¨q,nnεtΞz\χΠ ·hεΜ'fΧμ‚ Η‚^6ν\Bίδ9~‘M­,vΤs¦5°]Z#iJΟΈNE—WȘρ ”{μqίΤΠP©Ηm™΅².°ΖN`oaƒΝΖ!HΎΞ:Ϊ΅_!Ζ’t„S(­iπn·ρ!7Σ8&½mή ν¬Σ€•4Μα5Ό°ΆU‹Θ-iƒ²ž ς‘δeΰ¦U‘<*•ώ:pνδɐ"SδΫ!žΡΏσΧΌήϋίσbiωGƒ :qδ­γzύ…ύ‡ΈJ 耏’‹τ‚ίάΌ”{ΐ•λ†yœ@˜¬]Kλρφ·W‹UJoZ“Š,‹μ"»TΗLpΧs&!–_Kό‚‘d"αfc…Ζπ1™H‚#ί°D΅Ώ],4 ΎηΌP/5–αδΩη(3Ω·šLt΄°9€­Q͞/€° έ­‹hiˆώ=^qΫjΨ€’5ήΓd”LΟ„1γ+40A40_bς£Σ`Τ‘‰ΜCX¬EtOFcO;&‘©ζϋ΄Sι@d?5vμΘe—ΰycΌΰ2 ROͺA°φ ΄£{h7Œ(2ΩNANήOτӘOπ/λ>Ϊ\ΧEΐ'Oΐ2O ωτϊΧΨϋ‘γά‚σ‰ΨτOόHΠ™₯8Λ&χœψž0~Π [“€'‡hžΓΓF²’Λ}B_εxΏQ&φžΝJ;½F›Y”Πh»Ρ°Bc™ϋP§$n“Ω1 E_‰ƒr ˆ1)οΤη1Φ‚6© `½ޚ(Sπ8ω‰)γΠp9σ*φΗ'Α΅ΛnΣWQζa{\Y`"θυuϋj€zο„y^7`Ašζsΰζ0φjώd›Yi—,ž =3rtd9‚Mo› ΰΩσ €7²†\m€ή[Λq¬Τ%σg€“ΑHD¨š†φΉΙŒ#λν²9φψ˜x8ώL8·Σ(;βά>d˜”Ι~Vt_t½vdUdnpΤI;•29G"λM›œrφGΠbΐΊητώΈiτz±γΌυΎά˜>―‘OGΩ+Ϊxε~j½Ξ΅ϋ/v [ΆοM7ΧεΌeχ(ιλ Ϋνp•¬"zάτήΥaφηΩhΟΚτηφ&bjϊέ1 (%‹€ˆφ‹6ޱυqM£IΚnτ¬IΌXπL:‚]#—ƒβ²–ΙΐtΫ-ΛlΔαΉ‹;1ƒGLί·Βψu|sΞ½Φc•ώκν·Ο?xώόίc]‹K‚=AτΙ“kHίφcχ>πγ§ςωςΧ ΩηφΈΉyΖρ8ΦΝ|ώ£~iρ’ξ@G–ρεΟΎκ'Ύdυζρ½ΝisŠV+GŒΈsΌ ΩΡΚ¨-3ΡdW¬γcrJgΙ"ͺŠξΑΓ*³,8t9 p’kΏωdœΤmY»)FBΧǘΑ1x¦†γC,θ™iqr3°ΐdΚ†»αΪΕRx„Ε4 (.sςVξ\'›saεω*ΰY0Š‘v c”jπΏ>’Ο'k ξPΰΑ3oF9†ΐ[­3遲‹ίΕaAψΎ›ΒυπŸd0ŽΫt5V½Š‰ΰ˜κ¨ΥϊωΎ7V *§50τ‘.8]wλ²%€0γˆBw²I‘΄pΫϊ¨=Ώ{ξάtςδY KŒfαΌ’Gςb%Ι;οzΧM'ΉΏ?7©AΰbB-ΐI-½i5܁δ’{»E5ΑKΧzαψΡΓα΅―Ύ-\}ΎΎ s²ΑeΊρ ’b‘NώS2X ™φ6Μ‘aus,ΔKhŸηWͺqΡ0ο²€P£­Σ@ μj–„qΐkμΈΒϋ:cΐE[`λ²ΦήΖΩ}γ7‹ŸΓH©]Εhύ/ƒͺζλΚgh]Π(ƒμΖʍŸ¬Š ž*›b– 74.Xnœ\όŽ ¬ΆΗζΙ (Υϋ™e†·# fMεψ’γZΰ.%G3L›>Θ’λ=υCEΪe@©Ί@lΏYlLM₯¬€ ¬όΔ‡Εdςވ˜γΒƒ9d―Οf9£Š}‘Β93k—Ν‹y`{‚έ¬UMŠ‹œ%–ΉDΖψlڏ2jέΗο3N‹"h„}«;HΆƒAιΒ'†ΰς­ΡntΥ,Άγ¨ b„φ²6 ΄ί‘Mύrh”θήiisυ$“c·ΌήfΣqγ$q©‹Χ4”=<4ζ2Ž2X878DtΖηΈ…΄3Μ·‡Ι6ώι‰Τ D5θγ ΐ₯>ŠeH)nyΤ”G`B ζ^s£Ψό¦  ϋ4λcFΫp-c!8Ι–32+2ž1HͺŒ*»y*Ϊ!·eœSCΉΩ₯}€”C°lπύηšς΅θ ΝV™λςW₯κqΜ7™ζʝHυ―ζ ύ1ΰϊˌ1χΥ6υ‚Η1@Φl9XHΑG‚½u¬ZA0|Nh“hΉ*ύΦΒ^ϊXΩE˜ηΧ•§ͺ[•χ#c^™rR΄Ε΄O©™ΐ‚1eƒΩ0ψ^ICKZΡΝc[-w>1Hξ0ν6³LΧƒσŒϋμ搢5(b„Ÿ0κγu³±,bλΚτ™sCV΄N Ί TΝpΨb~-3 B3†¬%φœήΑZΜO] hΐΚυ&x«Θ)*€HYΥ>νΡ η'T)Œόk•’ΣΌ‡*‰Δ°μ_ό-“nœΕYI‹γY=OPκf|cw!†ήSϋ†y2·ΈŽ ΕΎΊΩΑKΓ&„{Œ«ې‹…™#E6CΖ{ΉHΥs‰MσΩγ<3ύύΡζ| χl‰LR Χ8·Šύ„•Άτω:›ΣΆy«˜q&±& %`h2mζΌτφ-#k”ΚΝΦΩα~zŸ—zά0ϊΕ1-—ώΖζŒΛ°9- ΕxeηΙδcαι’υsβΎβψ"FŠ, €&A`†5•τ’a3m0˜“Eƒ©†‘ΑžΕGty3cYOΐ‘Μ wΆΌ/Λ« ύ:Ζ*curjD€%δtŠ›2A{ §2…:Mr›ς} ζΑƒ€kŒι&†%΅@ lωŠi έω9Ž…ΑνxΤΈθ©m.1†’Œ0~jΩα Τd—­Jθ’‘»Lƒ©‹3^‚ ‹ΧM—De g2;³ωχό[ChžήΈXΛRG†ƒγ˜‡Z7ΉK£±hΡΉ¬!Q »υα\Ÿ‹-mΑ+8˜δ+•ο½λ«ίϋΎσΗ7>bδrŒώρfύNΨΙα<ΎσφwόΛΨίοvˆυζkμ –ΒεzΈοžα+Nέ†Aν…π+O…kλΧGEθRx’s‰: ―Œ1`,8ΑΆ”ΙχP’ίΜεΪ£SkS6Ί-#χΌ‰ΜA}―z;e>πφ³~emΎXƒnaΩWΩf»•`8ϊ…{Η1s }JoFπΗΪΑ˜‚Χ4δfΞ‘1V΅ΐ}PF—m©τ#ν¬Τ‘E°Xw…5oά™k•Ο!O(¨‚γ1 ™`m~Ρ*¬/τ±Έα}Yφ΄sqt^–΄Φ±VK7ΚT§ZeœŠIgœ§y„CΖW$œεUΦΈο=@άφ)ϋ:Θ7άKz4πšκ‘d8₯1qgQxήΔ…oφΈ¦HX =P>+ΰΩ,­τυŽ}ο5–›53šνP˜Ωžœ‘E§Ox˜΄†…?w1θέκίζ£4…Œ€‡AsΨeθˆύ†&Ϋ·αυψX2„6M±ό©d!ν±³Ζ™W (γΉΕuAΞΟg~!­Ÿ+DΘ™±T3sΔ9£"sbξz&،αΝ̘‡s%‘žnК10Οz%4 ]=ŸΗh€E»ι’±Ύ·w›„‘ŒΒ{Δώέ%DΗ6κ hk n»Τπi-8eiΖy2Άω½:Γaμ¦κKž‘G0”AΖ@žΟ&<ΫΠλ@·°μχθ·f5ΈηXƒΛRq›j2μ•sξ±Š™Z=σsάφχ"Ω!žπή6'W$ηoπ#ε―ζςσ/ ‡Α Ώεψζ3₯\‘Ω|mΓμ^,ΖƒΧ}Kbί―iζκΥη&/όβο-ΡmοϋZ‘η&Œ(dΞ›ž”ށy(δ”½Ρκb›OΫXk•VpΞ’ ΡδfyΛ"~¦–hnDα,ΜΐS$Ppν,Q sΟc) Λ/ Φ£1Ακμ³20žΎΟa·:ά*¬έC΄c¬e³Ψ2β Ν|ŸβΣ«-žOO<²Ž0GwΪ€f«F`E@ΐη‹ΤT%aL«oΑ0έ’`Xd°ΜΜ₯.8˜0σž½%!”ƒ?ΕXψO0ππζwζ,θΘSK:_^εz Œ/jb" Α|Ξύd°h†Ÿπ»lΚRHΒqξδgΠ~<₯en±^ΚύΘ―όυχW€\,[qΙl\―f>ϊΡΏ–βuττcΙAMηΏ5-R¦’¨₯d†Δ€±†—//€Η°@χ)[τ―ίΑΪ²M‘£τφ›{ιζΞ[A\¦Π9ΗBΦ)ΡWšB[bΠ:ΊD΅–η)U ΒsJ<€Vδ(swΟ°Φ @-gΚC­°%¬dΛ΅TA¨hi=M΄6Κψ΅βι64ͺ‘ΕV ΆΰFπκe³Ϊ©f/‰α>sυψŽm΄«Μο<Š•ΐΩr^‚GΛC °fϊ½ .z­|Ž‚ρ4ΧΜmζ’ζώΞχΏViχaT’q~|‡―X”ψΎα(ŽΓ˜OχΉ–T–V)$jE„©ψ»σx”EΗGͺ€ψ>ύΔ ΔπΠ^+Tυξ;T† | [‹œEΔ7 Γϋ© dΉBΉx/ŒC@ΝέfΊ<Ώώ š²Οm£εέ›²,‘Θhe/½χV.ΓbŠ1’6”©ς™Vo—/DX αυΜEjrP²6—­cĝœmπsu‘’mΤQΤG$ιCbgΙΙ €΅H5`a xΖΝδ’[žό†±°֊rΓfI`΅β("P;§ΩgάθwP‹‘ F±‹i%Kς€r@560ŸX36•Υ0’άta’ε²!±¦Μ'hΚ„΅ώ›ΰLΧ£ ‡tΓψΞ#4šΪP‹6ρdφœ§ΪpmT 9 ά“$jJ8 `7X»SψωΛ—'ž8]Ύ΄B\;j/!Eλτrh;πZγ’΅σ,λ2η¨o_fάZ>K41lI…O¬Rž¬¦ψ›Ν8΄Œk…΅#žŽ)αΉ–΅zUΞ¨zΔΎ#a4ΐ¦gΙuΟxOζd““%<Φ/Φϋ 2ε؜;χΔ:Ÿφ™k‡οY%‰―†GIOŠŸ« G˜Ÿ ·ΰΙGΞ§γη~pύ+ΏLBδίξNιz τb˜±„γfΪ9Μ€»7OΣοw―₯ζQ?έ₯9AoxΔx°’φ ‹!Φ™λλXπ«Xώ΅>)0#΄€.ಞλUξΓΓέmΊ‘ρ~«ƒ‚2^LΒp…£oi½tΥ―§‡³€ΞSz»Oάi¦/­©]φ‹±Λ‘Θ m΄ KΓ#Δ‚j₯ [πžώ–Α{¨ΛήΔ&“Uμ ZY’”k‹PŽ.­ΎέŸaΕe/j=ΣΚkεΑͺŠŸΒΡqΊ &½šv$δΧ>xC f2\§`RA2{]Ί/¨§ΜΊ{o‘Ϋg a/Π‚ΤC)Τz§²ΖCr.­@IDAT0 ΗLɈ=Γϋx‘&oGΌ5~αTBHχ^cE‡{[Ϊ$,›ΐXΙ„v8θMόρ έΈ.Β%x–ρ‘†θ–ΖZΆ΅ŠY΅A«ϊγ«C3–3bΜΧWj!@pΝjE πŒRδΨ$”gά1›*ς5ώVΛ’e±Ξau°!,•ζwυFu+Ržν> ¨¬«`0Xθ₯Ε<—Ρ;@pάxj΄ŽUΩ+t“α :ίo°¬”"z¦ΕΨUpωJ€PΑ°ϋSql[eΟ‘8'JŸσ™λšΈΝΟc­fM°J+ΧΔp‘ΣwΧΤΌ2t’Ζ'Ζ>γŠwo°²Ž°φy¦³Ζΰ†2ΑgΦήΠ¬Ž0¬dΠ 5?¬λ}n…ΈdΖΧ윐Τ{XRαoœ[f!Έ']ώΖUΕ€υ¦.Α_Ίd²ΛX“,ω_O όd¦Wlj…>ωΰ‡Ϋ_Gžώηƒ!rŒ9²ΫΨJ™›^FψGφ»Γ?ώεχόvΏP±pΏnόNέΦΦ΄Ίφ“Mτ§gν „π`΄Ϋ•ƒdμ“ΒMf+κΓ@Τ2΅Κ Žu[*Œ=ώΤ*νgaVβϋœR,ΔXωžνB΅j^Xxxs\c„Ήχύ&ΘΐFΌ1Œ†ξ#qX α0ζL μΰΒb‰p” v Τ=ΎwH\-c_‹{˜MόpHr›1Υ%,Ρy¬ΒC|\#@ηϋΞΛ9θ:'ΐfls Λ΄ΜΒ[ΰx6 /ρίεί KΉ%b-B »@Ο9ΨlΕΔ™7<Η˜ƒ0{+'`Δ! {QG§Ϋ!Ο²ώ‘… ?uιύ…“ίNπ—psmζθ‡ΎyρΕLfuυ Ω΅΅LξƍMxuϊόsλοš_"¦›ΔrLw¨2ZŸr9Κζ΅ΌγZF0 WΫΉk6I7Τή"JEh„‚`(K);—.uώΔWΣI& 6iΥB;•Θ™’¨’Ν<A ή%ήο3ΗJA€˜%Ό©Ι˜ξΌ};½~ϋ$νΌ}pDΤΚ›ευBA(§₯•΅τδCkiŠ5ώ@Ύ7“·dη‰λf4iψΡ†>uφ^6’^)ΛvœΊ€ΰ)t^'Ld‘΄O(LΘΧΩ άu/@· €²ΐ\LrTY·υ·Ι΅EzίpΖT<ωϋ/φΧZ†!Gς@ζνYΘ!;’„*΄hjIΆ΄‘ω4™ά\Θ½{bΊM$· HΠ˜΅UŒ9œΕΕΆ3¬“F&  fΛπΉςZš£Λ€|J@Κ4ΦtΎ‚ΈB‘θŸ°‡²ιω>ž~όc—Σc/Εσί~ϋ>HE¬κβx+`[}†BtϋξIϋ„ΏpχWΤ‡>‘@³†KΎΚΗΘQκυ£oε ^χš@Υv6GώVιU~Bbb’Ε '|¦7–»QwΉ8s,bv°»ύ;ŸUŽ]½ϊ“ύ—―7πΗVΊΈρξΰ8ϊλœyzŽB^:°χkgηw??“y[>ρΑλ>₯€Όγ>±«73“+/όΞω~σπ“ύ^‹c›Ι™ν­GSMeBXΜ}ŽBΙΝL`‘₯ΕΔ’>·jšŒ€`V $ΖXn³pΊ!©k’ <(άίΊzψ‡…a"κ8Ψ4άe©`3/Hy™D —Œ dbL±ίΔi j…&§•ktS΄e~Φ¨Π‘UpHrG °«Ζ}͞ξ9GDΐp<δώeBFδSΒ‘0 ¬$φψS0aEˆ‘ζy–w Βϋ&δδ°dαb‡yƒk½LSΐ “ŒkβZ΅§XΊ”œ χ€Y€€uW ƒiθ^—yi νwχΖΕμό/>σϋ<2ψατ7·Ά~αjJ›£ηB~ϊzξΉΏ}‰"e}&[ώiΒ6@‚8 M)€8¬XκXZΊ2A’ŒΠςoZr­¦‘ΕΚa)?A— etЬv‘ΥeηΒ PΠΘΔϋ€'V!,3 ’d§&Γ Βt]k]šAO-Ρ6 ΄k0e—σuήќ„±H/]~–Δ#25Ζ¨Všψ-B]„ ;σ© I'FŒΰ+€Kσαjή%p ˆΙB*iας‡ΞQ±ƒqΩ9Πd-Γ7fkΘ˜“ B0+88³kΞG\ϋΤ½/hΕ[p€ γz-9EP€γˆjΝχͺΊ‘w‘δ©ΒΪ…°i‰=‹Έ€]:°;x`Γq1?A­ne~°O9oŒ3ώ X9W>g œ!Χ άΓ< €FΝΐ‘―€w"Υ9Φ›o΅‘ρ4‹η…ƒ(νfξgj\c΅Zd ΫƒiΪΠΆ}CςλVz°g©Α•Gρ’"Gš’―0‡΅Qz! ΥΒξάσŒΑFΖ’Ίξ±NLD0ήήœ φNZkϋ€g–ρ₯–Ψς;†¨δΩS°@$ΙYM-Ο=P€%΅ (4’zΥ.Ό₯Vύh΄Γšhuχ2τΡzΘU1.‰*8eΌΓδοtΟ±ο&t~ӝ}j\:s°bPŸΨΡΌ‹εLuΖc[Ύk•ΏHMα#’@ug뽈–ς¬•k§Ε\―U,΄}jYm2.‘ Ώ±Ά`ΝΉuσΔe3–}¬“v_-QήνωΗ.§{ηMhςmΊςmνΌΘU?cd3 ­ΒZθjKAœŠΐ)‹‡‚˜y”\Ζ>!–V τ>…ΏζWŽ{κUsRϊ„3α95vώΕ„ΗΠτρ΄tžδNB7–g§Iό52½mn³Δσ… ίέ§y λg-ii¨lœΙ=Ο* *gPοά‰ x€υφ O2'Κάω¨εf­#Bmb~‚lκ•θI&\ž‘μiπ7¦Žς@Ισv²ρO|τ£›U¬Θ$½Kp~™½6αfφk_ϋOΏσ‘ό_Νηk§64_aΌ“τ΅χzπσώ¦€§αΎ~½λ>‘Jgϊ •₯…z»}„h!Ό ϋOAXαp)ψ­ΩlB”αX%‚Fm‚ϊ½š¬%œ¨#–kηωξP™š7‡2,Π~x;L@†Ε?7™Φυεε8Œm,.ΣΑ Vj\b0€Ρ0 Θσ°ΒΣ±θ\±ΜŠΟ9υΑ˜δ?ή_ Υ3τ‚SGό€!Ν“ƒ³pbž½Ά‰#Mπχi'lΔh=ΘεC  ρΐRΓ“αmq»ΝG¬δQ­o’V°¦έ`œΤwG\[Υ™c Υ ­OΛΊΊ `\:C)΅£sΡLAHΧ οʍΪ{$ΒW·ΩWŸύ‰ϊ›XΩ·‡Χ–nΖ£•{οάώΙΡΰδ?dΠΛƒQΛ3€XΦ«Πjn^ Fκ8dWZ?3€ύG›[-:}Bnžy¬"μΜh—~X{ων-BvΚ;ΖΤ2<¬˜CZ[c4 Uσ£ )βπ˜ΟxΊϋd§ΑT]—–›κp₯™>€‚ης`šGau΄ς3JGyςΟπ-Ώ±Eƒτ (€½Μ{LΉ—5«}ήΩ»VqΏk• “θΒΒ,HbΞμ(0Uα³M­YύΎ§UpSA@jιΓφΟ3ώ<ίϋ˜θ£β‘PQ(›$ žηηŒΰ§υy*,J ›u΄ڈ‡‚s-^ύ3κ΅b :αk*M¬σ*žΦ<7,BΛ­ΰΓ0Λ= H`1wΎƒ. G%TΉ­λ”cg΅‹KYoε+°\dέsάΗ )κ%€-½Σ<Ίeά½kČ2cΕ„±4džZ]U”<Ÿ†TD§4hΡ‘ΜW―g™B€{DpͺRΝ₯œWΎοϋ"NΌtp}ΥUŒΡTΙ’ŸœaΉΰ₯1”ΓUΥ*‰Ζόε=­tQ#Ε8ΡkeΨ‚ΙzΐUK¦ΰjΘzΊWΑ½±ί4^„nς ”;Α+γΥRν8LͺKΡ€?iAsΜ;( GύΣ¨:°±NUc5\Ο9}nΨ‘ ƒŽ35\Ε|u}!=ύΔzΊN’ΤλΧοB-Œƒ΅],S Ê€cKBΦ8'6)€3ΩΟG±ƒ_Yλ·Hΐ„="²κΤB.?«UY ―€ΰ[’Ωΰ^Μ©GhΫΰξωΥͺρΫ|€ΕΪυ?€„ΰρ5ΐΟι[~‹ο„„λVi9•iΌRaN†B„1ΓΦͺΟήE `έ5p¨–Ψ Σύn±ΐVJΪεΎψΐ² γΣ’>ΌξιgL†7q„ΒjkB€Fs79pž©ΨZ%χ‘T³π¬Y”΄ ΐy`ΤλwX|½=—ώΜ|>=kwG€τ›δ”ΪΦKό4ΊΔΦΣZqUb Τk0’Y‘ψ§9ΰYž—δFδE-DŠ8[μӈσUΎ–Q²8†±Θ§VhςΫcn*ΪZζK¬g΄)g/Γζ‚τ)žK§¬ω:PΤ΅Žς€ ͺβ(0ΐe¦D69V’ cBΙ:Ιx†‘Έ€‰\{h1νΜ½w€gΩ§jΖ©`|CΉ/ΝΨ‹ΔF–I8ΰgεω`δvJ‚OF Ÿ­ΓWϋ5γ†1•°άή<<ΐ[€Ψ’cHΖΨ#|Έ8AΫך³πϋ9κ…hαMš?χŒAj”=<ΘH΅<ΘΤωΙ;Α.΄š°B°€Ό*P¨Z¨1tπh!ˆ:68!† ξ“Q4tΉ‘­ΰΈύ«Ν“Α_=# HΕΐD!#Λ“\'δχ$ΰΉ„¦GΘYBPκχ`—˜MεΤeΦA βBΛ;Kφe”9Π'5@^” D<7ΧϋLC―L=嬛«₯Ψsκ=€£3Π‚κ*ΦΟ ™glŠΰψj‰–ρΧ_Ίΐ—7],”f@?τr­TaΩKγW³X-#¬ΖΟdŽ—o ΚάΏ³yΟ‹Pβ½9”‘!@E&t=OY_ ά…’?δΉξ9cΐύvKKC~rΜC!Υ| "άb &ƈ¬μv°$Ϊ†>ǚŒX―ς†ΖŽOR*¨“±ηυ²Μ6$CgΎB Υ€€)‡υX[Λ )hq΅ڈ7nAάŒHΊfΞ?Ν8,kΧ"Αο•+ŽΊtk%ΌΚ9Θm…#ϊ£eυœ1FξŒ†Ν9βŒΫ>Z>”ΕΒoΘ λκ¬RΡΪ 6‡XNΗ42™d–x²οqξ ¨eηZ3 :€^b1ΦΗ†!΅Hμ{ žkc“ώh™i‘½­ε¦TΉ™CΑήF!)0_+ΞhnhBOΞ΄#.0+Cί›ωΒω•΄JηΛ1{vζY‡Η‡tδ$qΌνi¦n6·Σ#₯Ε΄ι₯‡¨ΐ²NΠ›<£CΥ‹ZiœZh Cψh™΅˜°ΆψEŽϋی$Βhδ5Οε:MCΜΩ9ΑσΑι …f…yθEj²'έϋςŒ([JŒKMLΕ\EΕ~Vι7QY«―JLΞ=‘’Δuζ^π$a]T^dreƒ?U΄§X{8kΦOΧo¦(b&άYΌ€χ”²πmαο~9Ψ„ ΖΉ)ήs:Ψηϋj“‚UkˆΏό_H_{β2{j2ίέΓ⬂‹’ *Βs[(ˆΞΗq«πΙ—ΧAΪXmΐ·:”5ΕΛώ/±¦qͺ•ρξ%yτΠϋ%_ΰοžYΞt―s†τ< w’Ξ€₯Υaπ`ζ8·wωώς©ξ1T”I½²L}ξΟςΖ+ς2β?ρΪΪz-nŸ†­ΟχaFδ*™˜υΥWω–Φiώ1£―ϋ™œ„ϋω5Ν„ε§?»PŒL£Μ.AhΆŽδΆ―ΦeδΌΦ¦:Δͺ…ΚHŒ1Φ₯-8V td4ή.t­aτμΖe¬έaMά…ecTα'0mέΟϋt―›¨ήÌ₯&!Ϊ© ­:ΏL ϋθ#¦}βΙp«bν0ΤC7Γ‘!(dzάX4a ? ”Α[€³Χ±”–εY₯Δ£,ΐ ZŒΒψϋ0[Σ£/Ξ€œαΞνVμ™ΐ1%6­Lζ7š5t9‚ΑO1αFζdKo»Ž;·ΔzA₯Ό±ΪazFH3²Yό5‚ƒkNjλΑPv2ΰΜ/7 œΧ² ƒn 6ΐΆ_XfΘ΄§¦t«a“ŠMτ3{;-0v˜²ΔP‘Ζp‡ΐωpΗB j"k2j ±μŒuΕ2Έβ„Δ0ΦΑ°–†:"JUε ‰AA !ΣΧ3€~³ΧKϋ4ΙPθZ|©χ)°”τň ”η#‰ΐρž΅ ΊΦ±Ζ~Ζ³°&EΥ €˜ξc υ±Ÿ N f“Π§ΜGeMα.7Cu 4­κm’ΉTΜV£̏Ž ¬―Ÿ[ΛΈTΛ§e,Y&€!Cθ€fυ,_0γ^]‚rΤ‹b—,γΔ>φƒ`Ζψ_k&;fΨ)!JΏ`V˜:ΐ„°~6°ΉVk3ψ‹ΜΕ€« `.Ίp mP`’—a1v-S©7yΟΠΛκ9gΏνΉέλJ/–-Ξ‘Ÿ…•εΜsλžv^–χƒθœaΕΥ Β΄ΞΝQ K”ΰΐi·ˆI―Cw:ςaΩΰš†¬7Γ ψP(T˜£λέG˜‹/Ο*c*Vp{k½πk΅wή‘λΐ€­ze3²jμQζ•<`ΪωΞBWzJ<« (ΊξA{Φ¦S"xKd†}{Κy,emς!βPζŒί£[kb.–ΦΓ γδ,€T{;v“hμ’ΰš΅η0™τ­ŒZ©½ΪπΌh%Ε9”•π{kύֈ  <p5οΒΏhδψΜΠƒ<Χχ9―JbhwώΖθͺX;ί=8Ώ΄ŒT4a=€₯Άm—ν:gώFπ{KΜΟ"ο š΅ΘN¨`‘’β·Q‘IΟ=ΐͺ^ Γ3Κ_ζ¬Χf0œrp+|O₯Ι³IΠξQΒ9:X υφΙΣ)™IœΉsδή#rb†RwφOαT½€vΖψFό+t¦S-qΕ<Ÿ{ Φ—QΠχYƒEφ ‹ή–&g€ε@Ήη±ά†™Θ§«π¨ γ»@#•§_04ζ›σ©ϋF ν΅iΨΤδσ>Iγσ†:°<ηη@χα'ηHlώ τdbiήuΐ³‘%Λ’εxΟςv–ω#Ϊ–ζO3o“υΧM:νΈO•sΜmŽ{Κ'δG‹Α@δ)‘ω6ϋΧ| q Λ²ήΛ¨ΒΓŒœ -±odkH”r”;;ό ΉχLA,?Ε¨2²G8Ώ†% ΙڜΨdoΚ:œ’Όφw9ίΚ/Φ‘‡}ήΉL›½^%ΗΗΎΗhΑfρ¦ Ξs@ήΈ0Επ^ ~žά}'}εP)y0I—z^ΰ{ά)*”ΘΝη)Cz$πEϋ§?r9ΧΩ+V²x—ωK$*ΉmjHχρ~0εΰΗΖwσd4e©αXαωPAQΖfBς<ϋEM—HδΜ"γ™«ε?Ιd•­4Ως—?ρz™Nι^φ‘ο<Σhέ-δ.ž Ÿυ½+WfΦiπΊ)p_θ@ž/£˜>φδڏ‡·Το6εΡUK₯™ΡY«‚vΣ9„aE>@δP2ΐ2Βy κλRΑψPώ–.c ΥX«¬ G –‡ΠƒΤ²Υ3Ÿ+ΜΒr‰Εe¦Ά4uO8ΐhΕΚ*‰‹<χ ‹ΛϋMœC‹Μ²uYά»2΅RΣ:ΜHdWFOXΪoS«ƒm#{†υϊήν&V0tƒ˜`jWΪfχαGΘηΘώŸ_|']»³Eͺ˜(υcœk―IΌpΧΚ Z…—Φ)@Ί₯οŒ{ΑΒσ΄HΩ²’U’` όά#ξn:8 F;¦Σ_ΞΛw0ΗΥ0«(»ύ΄Vρ`.Ψ€`dTγf;›©pτ‘@Lˆ…›RΪ'S™Γ0@ζb…€ί<1άcnTΗE»bΖ蝅ϊyΦ­Xθβ=Ώ΄š.7ΧjΧΣΑ) CϋŸZ­ŸK²$` P‡8Fh’¬gg+j{ֈŸ₯Ά/UΩ¬Ε«ΰN .B‡ϋbf]εΟ#U° £k‘cU¨ρ?……{Hk’€yΒ>Ρl JίΕ’#B4ŽP_θ£ ΧΥΕΚ.°ŽY2i­p}j΅ΪN\Χ’Ιm&ž2βz*ρ|―Ιόd–Έ(ΓγcΝ KˆΊεξW†mεΩO N°I$ΆqΕΡΡ6ΒUP1±Μ£ΞΉΙβr”ί‚Z©΅Μ!Pί‘e­ψΚ«A`FŒ΄τβZ»!βόœ­-βŠ SωjΥwή‚ϊ@Kξyσάš!h/Ίά·ΧdάΆρ½€yEΟk $ΈG€>hoh£e1ΜƒΝ^ •Ι kήγύ9€ΒXεY0]€DΒχQϋp|ΖS²`tφ5ηΚΔώγσ›‘ά›χ-―· bρΆfΦόΕXk(u€^‘sž)sΖ±„Ϊ.Ωf‡εΎ¬‡@ΰfςΟ-1~έρ¨Ϊ„F`ε~zΛ\3­ΓcΌ%φ‡ί5Φω ΠJίΌΤ«p6˜K`ƒb™:_rŽ~׌°βMΫμ6»Φ_¬ΌJήcΉ0•-˜*DŽΡ¦Qκε9j4ε\-Σng!}‹ΘΫ‡‡lœfTΥ°φ°ΐή$·±ω!uΌrξΒ^²§'¬1σD‘Z֎$0+pτ˜«Λp€Ωρ`ε¨ClMgΛ¨ l+άWZ1Jp3{q:?-ˆyJΆˆf£’Δ°η™γ1ΗΗΠڊQςu₯L UzhqΝ^±ŸιαμhΉ7TΘzΓή[RΥΩs†%¨ε‘qT°ΰ~ «4Μ9%΄:DuΟα˜|•IΥδΧBzήό?₯βC5Τκ{VSε$ˆ4œ‡°΄3θcε₯²]Q4: °ΰ;>ZqE‰½>^z­λVΕΐΛ9ΰμέ=θeΣγηηΣSta…?άΌKΈž όrŸs91½d6nq}­d uΟ‡Φ_Ϋ^Gx"σgΌψ/{#’Ζ —αwγψΩ ‘ΰƒΞl9σœSΦZ―‘M…f<ΠΚǞyΞ‡<ΡsCψ0·εyGΠ—§›Οƒυš 2slM¬αΔ g†ϋ\‹ό*8ΞΎ˜GY;-=οζ-³Ÿ{ώ!jψ/₯ό«7θΠL»χN° S3ZΠΜcΞ8γΆy7ή9κnsNόΐ4?ΧΣ“en .Λ•chqŽͺMς£ 4T!6TΜδρž% Qτˆ/$ŠsΝ¨παŸω©ί\άόŸ=ζ&άQΙρώkΊΉΉ™έάόωφΟύ΅ί}£Υ_Ί΅έšθ­? pΏ½Ώά'P*ά·―ύ—βˆ2ώΙΏ 0šχΛΡ›‰uŒwΑΤ‚€¨n!X,υfr 4Κ–šΥ+]0ΦΔύΕMJΫX‘V8-Šή ֌@Xc‘φΊ³ƒ0θŒ'& €¬Gͺ žYI2wέ‰ό―ΥσζΫχρ‰Ό! 2tώ“<δΆάV ΡdfG !ίkβJ·7φ£+σq¨PΑ­MjΌgΞΨ:ΈΑ[·NޝfϊΖ›wO.=}ρ£₯ΫržCŽ[œ'ώYZΠ•!\ΙξdgΠΔωεHψδ(jήSΰΰγ ·‹sˆCΚηΎb! ’TΰLkΈ4°‚τΦ†Ε?6Ϋ=’`Zδ­ιυ‘…gWn¬€°V—­–~c ͺ'.°ƒ@<`ά‚ Κ7‡GΓ„€>·šH`‘eέύͺς£­ΜΖρ€ΞM#FŠJη!Š›ΥŠL¨HœΑ<ͺYΊ‘k€ΣY”ί^ΰ[ZjI2ζΐx^ώξ²o9ρ€/b2‘ΑD~‘ΥZ#‹&‘ρ7!ω1Sθ{Μ/A;θ B†œ%Ο‘^“&”‘πšΘ—ƒF†ηΠLΛ/7Α+’‡Λ†Əφ‰V)‹’kπ)˜% B’σΠΞn 4 ΡσεΛ9Ϋ¦y™κsX6½Χ…Β0]l` OΥtnzS¬ž/h ΗόΫ„ψθuΚ­SVξ;G'άK=Ÿe t$„M–%Γ.όΌŒœ ŒAΩtnqγκΈG~Ϋη¬Ϋ¨Δpœ!s΅CT8«ΨΤV©ΟL­dššΐ^H€Λ½Ϊόm²ρ”=Ν[HΔ.B»*ΟΪA‘z Pz‡=`\]@€% Γ3Ι~rΞŒ%7΄οπΉIΜ&‘ 0μάεΝ£λ‘K·p]y5{!KS˜r ₯EιΙR9]$άDΟ‚†š ?K¬υSγ|ΊFE 4Χ©œQ†”σ9`ΰUΞ[u¬1― Ωξ–BOΰŒ(νΩαX²—ρBΉOOP«X;«ΒhΔ9Δ‚mσ‘ξ-Ε™ΫΪi]υlM)υV‘~¬#ΐ“Ψ7ΠΤ=o~€αˆ™γ4DOy&7C{/υψŒΠ•-vΠLιƒFl&ΎΗ‚Κ(9SC8˜‹† °bcV ΅{C¦ΔOΖ‡L)Ν―₯G¨­έ„§νάAΨ;οη‘U“α\jS5™j…“κ9)ά–5Ό}H9V:$.ϊ•WήΰΩ(“Κ{hƒφ|αΕw rn>’AΜς+ΈΦΖIξ%½;Αq`²UdΞΕ Ό—Όc؟F+Η•AζδX'wαi§=ντς‹τ[x– _yα…—)K§dξΧ§ΔζδΓΟ_xϋϊύλγoώΕ·f zΒ>xέοˆ½uΏNbk“κfΈRώύΏρ;WΚύΜΩIζ{ƒωuŒνδ s΄#ΎK‹’5SΗ0I“ίLήR¨›£@"`,ά‚₯Μ8€jΦ¨4ΐO“ š€]‘Sϊ,ΫWΰ\ n€g4ΧD‚^0ΞΚψ4u ¬φΦΈηH€<fίyχTΟΚΙt@γe‘df”Œ’ωr9ΘΤ=#^Φ’q"'-~ZgnSeβxΏƒ₯ƒΟύv±vc­œv ™« η±"1F²&„ͺTα·λtfψX@~ρ,-šΝ†ΔD_{γfX£κEqƒs<C X[ΪΣtj‘…·0θ―πβ?‚ΧΒωš•C‚YσΜ) 3ίΑΏΘ#Y/A£ ίͺ €γL2²pΤ7ζήƒSΦ€'ψΏ ‰*YκVŸΆΘ’'YΔΪ΅C\‹…ςζJΪlv*§Άc$­,,G#”Ιƒ γMΎ“œ³;χSƒΖ’HΞ#φΧ9NΉ€– γΘ πϊ€gγxnΆFΖ\΄‚ΦκuJMπrŒ¬ά ‰j!¬ŸΟŽίy& ΓομCΌπ"Ophc%χ•& Ίyy^$Ϊ)–&6κΦΧ₯k‚ξfk [2M+c !7n0:."¨K€‘θζΗŒηUyΔ>n~γƒ#eΑsJ©0TšŒ΄Š"²~n.-πσ,@-½ Λ+dά#ΘnέA™α»ΊˆEΐ‚`e,ӈ {Ά¬*‘G²ӎgiη‚™’Β~ρ{(¬Fϋ„0Άtρβb$/iAn†ŒM6n:Κ1ϋ;+σΡݚU`‘‘Ώνœ΅.N °'~0[κŒ:˜±¦Ψ3Ω#ZwQ8μΚV+a¬†9랠yφUžρΊ‡j|Χ0g°^†œΰ=’Ο¨29λΰR‡o <„Ο©0 ΝιPπ’'Σς +JΗ(-QΉsjEAQ 53¬A/„U=¦Ζ:λ)`žuΐΥz ¬ώυŽ‘ΉYξ3ν«žS•Οbeq7x5έΉ{˜JgB ¨Υ/”ΐ"0G¨qΞ,»_½Ύ›Ž†+ι1bziτ€΅tβsΩ3Ex¨]ι2UΖΫψβ%Γ7υ’xώ=O†tLϋZ»σTΜ™H{ΦΜπA›ήϞ›eͺ5’°ŸΓ„ž…ΒΑ˜JXe5Bθ₯²Ο<ΧξeΛI+Θ=+΅Θχ„?+NιΊWd_φiΪ±Λ8°νR1>8Άž²gBΡΔ.qOs&lzΫƒWSλπϊΞ&λzFΘA¦ΙzP±!KNIΛΊ@Δ)Ή‚gΟ5ͺ2~7±·„ηϊ ­‰Ώ]ΖmΈήC7@aΐθbUm3Οήz²v”³3ž +‡‡qυΫομ§»ŒεŒ3PΔ’z €VΦQ˜Ίžiψ‚^„΅|§}Έ}¬sπwšk[tϊ„Κ½f*ίYε;gΜΩ’»€ΒΖ0-ηh›u†Wa„ Š‡”搄,ΡCIχŸΨkz?ι7Ο8ΚΠ8Ο^‘nΒε α›Θ—γcςyZ¬?υ¨!ϋe—uΩ=³Ηέΐ{χNΣΧ‘—όCο‘γhΑγΚΑ7xί„A™Έ{8jο3ο£rt`.Κ–2ΚuoΚ9xτ!zδu>Χ„άννvΪ!,JNά !W‹χΝ@υdF£μο_uκkg§ucZωη~ψΙOΞ@υŸzαƒ7ο+ °»ξΟΧ{ZάΟώΗpyη¨ω”ξ7¬hkÚ‘%Jζ+£*QkfƒΜ@˜¨5̜ͺΠΞΫ€ …ΆLP‘dΜΤΚ₯ͺίoR’JΖζ2 Μ Jο2ΈŽ’#$γ‘³œ/a+2D’OU ž%3ΆΜ]ΏyψΠL3•pςβf…1 Fe>jf/k½.P|Ύΐ{β"ΛO5 Χ8ƚŒc9-bi @%λΰΊ'6ΣΕ|‰μρkZN{b\ƒO Žhύτ7a±ΩEφgΚ‚Ηpž/ΓSΨScβ~mωΩ’³ΑϊςLkaw=N„ΌP€y°/TL8'-*cЍ=ΓΩγ^9ψ”aD=Ο[a.~ΰ±τ#$·Ωmο^'όjB[ϋ&7€!TYž-o΄ žρβCγΦ* Ή,ΠΤΘ•΄aE0>Œ1a€Ω˜Π φiΛ–BdΚ5 +―Ÿ½ήŸ3Ε9!,#™Ώ§ΤӞPi#‹ΐf¬Αθ&0!+wΜ:Η1e,‘ΰΞZ«cΜ Γ(₯Η Χ0ΞΠΈΓF ·'ŸuΉο ΒΧ>3ZŠEC‹Τ°ίBΈ 0p΅3ՍσXπήU²Œ_ ΐnΐ=αkμE σ‚Ρ2Tζ.`pZΛυv±φ‰:(nV‰ΠŠ­§Γ€Ν(‰ηxΉ™ο[χΉ}Ψ‘{! ˜΄ΒΑm£Λ^,ZΞzŒ f}V]Θ2y β΅’rίΧύ€…Œt‘CΘ0@…X‘±ŒupqΕ Ρ,šΠ„’Ζw-ΝX”AτH°[$΄₯Β~Ώ‡5όΒήyτΨ¬W&ŠiΥn{ŽPv|~ύΎHΆY‰α'Γ]BIeLΡΞ™-΅Œ9?§~έα-ΌυͺKX8][|FμlΖΛ*bQι)4ΝMPΑX§ͺRͺ,Hγ}ψ6Š0Ή9iAχώ6ΪΠj¬Χy°tA'γ‘itςiε:Φ%B8†ή§jΙ/ƟWΉα6f9εŽG«ΊTiΞ”"™ί $R1βH@*δQX  W‘|Γ ΈošΤ8BΖ.3ΜπΜš" …ύEί―ζ}ξΟϋ5ήP(q•bάS@4vΨPΐΪ3₯‡1=ΟY^€]φx‘ͺybj­Jα~ΘrΏLqNBΥγK…τ<%ΥFΠπψΡυ_Γι!ΦΉnΔ'GέmF" οsU’]]HO‘\˜Χ1ΗωΘ¬,„§,Οω4T¦Μ^1¬DΛhƒ59ΟjεΝy cΛμ";ςΰ3B9ΞζX"Sε˜α³—Π–„έϊΐ‘} Λ`•žœ|ΏΊ΄->Γ²»λ@Ή Mα€N­Χ†ηΙ]0 Dΐ£‚δω$MΨ &Σz§¬‘'ΨίΈξŒ9.£pm  :”zž‘_οf ‰ρά’$…ΙΉ‚@X9πϋWωž y0*•@sήλ3~λD? ν·–΅3ΞΈΤ―¦›Η“΄ΏώBνζΨ_$&Θ–»0―<Ι»£&eάΠϊiŸΛzΛ‡ΰiΔ-O™ Ψ*iΖs3%fHΛs'X€eΛzV­ml|³†+φƒWT$ ³L+ŒΝ}Ο€ύoά …‚oπ•t§κž!>ε3X—sXœΕJŠ"'υBΒο΄φͺθ[6}Ή…η4Gζ_λ±-έ™1ΏCο!ΰΊBX‘-}JHκ­Λ«Af)ρJ·έ6U]ή&,rBiH‰a„’Bρf@QΣufœ*!QƒGςΌΐP< e, Κ"Ψ‘μaCqΚZ‘CoΟ^ͺΉ‹ȍΰo<=Q)ΐβ¦F=jd^Γ<$βεΛ–d΄ιςβΕθ”x|ΪΚξ±ΖΕτŒΤΪΪϊq9υŸx½όςΛρή~χΪnm}šίΟ7%μƒΧχάƒχυ‹Ξ€?&O ΓΤζ³’—3 cΖΠβ§„Ι"”8PώΣj¨†/·°b‚ΐ§Ζ!biΆήπ.fέHNbΈOκΎdS:ιͺD*ψœΖd)9’ψ Υ:΄ή©ρΒw…/G0Cζ6‰mο7PJαd]79jJ’––b3Ι‘Ε‘μ`Ϋι#ΐώφ1έ©Še„§Ά“>n€L†oΙfŠ=Tσ₯Εό΄”+½’©f?G·ΎWr½Ϊ΅'?P>|ωεί?ά/ΠJϋκΥ“U2οΟdj?B=Υ?‡ςϐ}Y™ΜΪ†«Άg¦εyŒ…<‰±e)ΝΧE˜έΈώBFˆ€Μ ηΰσ°<‘©Dœ3³χ%ψŒj‡IY" Ό^ϊθ6φㆍ•.I$Ε― ΒjΦ7F…R ,ς&Δ δ`†u„FΙυ΄2‡γƊΑΧΈgƒ$Σψža2Ϊ s:±†visέ¨vλ|ΞΚΠ)9”ά[!ΗgŽ zΗ%όΨ8S…Ά!ŽψV0•“λz\o²š ^zhyΦic_TZd!€ύM@e β ‘‘JŸeοψΊΓ`˜ά“q0 ΧΙ’'ΣBdε Γ,Cφž»Υ8Op}­¦NG}]i­ω§Υά3αΦHΉt°ΐΚˆ(λ·Oh Ύp@ΰΛDβ_—ϋ_;Οw.΄c 7ΗB²MΜη! LP―—fχιw(gu‡Η7XPV‘ce 7ΟrξΡάƒΟlDTƒžΦΫZη0ΗόXΆ}ΎsQΠ:YFΉU†•Μ³ΜŽŠψί›·Ž£Υ`\λ³§LΛ7;’Ž―‘6PIo(ΞχŽMΑll΄žkλYͺΊ'³Φ~= C8aΑ€5bR‘ΏMR υͺπ―ŠWG ηθ«ΚŠ€D1ΚγSγb² Χw¬WJtd‰M/r.Lb+ΨλTδθPzΈρmφΡ2\E5o$2Oω¦U:έeΝόΓhγέ"±›δΖέ£ΤΊGΉQδE>S Ρβ°U\Uο†ΠŒˆ-Ο±ž9<zΤΈ$”WΜ σ(s>§x²Z$dϊ™ΚΆυ#4}¦±CΕIι$ov_©ΜFuyηΣ<λΜ»ΏC) £Š@y#“΄δΫ‡ιψλZΗ =Zρ?Κ•ž0†6mySur'`p„’θώΜ“€ηέ¦0> _ŸCγά¬Θ1 Λ„'(9•I  Oz)€¬ύl[qέτ| Ϊ`ή“ΜάΡ—ΉΉ/]o ώk4ΗΗ΅0j«© †xξcBΡpχ“εΥμ'Š΄[Zψ1–“ t`y˜gžϋh‰;ΪΗjΒάjάg π™Bγƍa€i$YQ B9¨sΎCω7“oŒ₯•>ΞMε%j²ZδαyRΨμS)-Όƒ Y‰±2Τό[G4σP‰‘C+bך9²jLT€κΊχΛΔγΟ[Ηf5VΑ°ξͺ CZ.l,¦Η±„ξ:v₯₯h€’ζ@IDATίgMJΔF˜‰οP P;ŒΏC‘‘€†4Θ±‚ZΛ”•°ψε8 5@Νωσ(€œΡ{δ!4ΩK-TOΐ»£ηz©Ÿ8χC@₯ki³K†ΩÊ5ΦbŽuΣϊ~ξeΑ)ήKTα °ΛΝΪ[ζx-t51Xϊ₯5ίe=γΔό²[©2A“ Ό-¬±–Ζ­?εύ* zW|Ÿ{΄P^Λπ†ΙΕ@]1εσΰ^.0Ώ.gδ-“ ˜Σ“pφζmΞl§…λΏJ8kΒΩ€ξ§•ZςC,§Œη”*_ΊΎΖ Κͺ"cmnδ~f έ0ιc£fΏπ»%ν΄ήf0<˜Ψ5q_ΊuΩoαΕHq AtX˜Y#8cCcΟ«α'6π‰‘άοŒσ(Hž[&Τ …-MΟόΐ\α,v8σ„βόΐSλP*<]' z4ξβ="έΘμ —ώχ―ίΊΔ₯§››/e67γx»―οq ˆ~ξΓ—π-3ύ±>³ #zΊ#¦ι@Φd3κ2Ξ(mαΨ@½yϋ$νοΡLKξEœšχώnڎXNΫζž Š9HCΚΡy°Fiδ¨Ήtv°+ΊMΚΈΩξΪƒ.HδŒrŽaxΪ,ψ[ ΓxŸΟI0ΤΒ¬EIα©0E΄§ά_λΔφvMZ u;υΡΌu+ &MκαV$F!pΠ²΄π1Ύ§iž"¨3¦wo‡ρ‹41¬δ*ΈΓ ™ά”ιδΞρ₯Ÿ½9[ΜiζΚ•—r6™yωεΈγ ͺ8δM/α GbφΚ•g3[[iςνίϊ·ίβϊβ'>σί-€φ€ϋ?#³ύ©1΅¬ΉΆ ‡Ε ίCBh524#β[a,ήR$ˆΞQeΐξbcΏO‰XΞζχ“\ΠΰξQ·X—§Ζ“;Μͺ79K"DέPΎ-ΞA°S¬u΄2”:%¬Ο0RΎΖ=JΈžk€ ¬˜2CφWPnkΠ₯΄΄H•¬!Π™ΉBΕΔ?ι+ ΤBaEΗ'pοχGŒ!Β6dΪή—u@kuΎΘ›΅ΊOϋV“Ύ#&Λ!φBg C‰λm(£eτ+¨1γܝi&€;ŒAΑιΈ2΄uΆbBTΰzΰsl“JΠΠrJZFk€i­ΚeA!7<›n\΄M//€Κb„ 0lγ‰#qAu„ΕωϊM’ύ˜—5Μ[ p«D&^™…^· `ΛδΛͺ ˜8ζw΄zk‘aΧSΛ‹.I‚6|ΪΘΔp5ξα>h™W‹½α¬΅a3V1ξ[%Q띟i₯ž'όΔF-»{­CC­ŸœΫμΊbΑΆ¦ϋ™η“Αz.±Vm H'`Ή>Αή„ηHs›h\F¨?ώe’j»©·›Ξb?sΰV©RΗKΒ}‡‚qΞκ„ύL™ΏI†ύλ€₯¬ΐ&ΌDpχΘp½₯‹TΜ© MΦrŒ`Έτ±*x€Ί& Η€c]ρ–¬Έ7jΊθςΥtD-Η)ϊFGψ œŸΌScωyŠ,7ΐ-ΤϊŸu]{φžΙΖ}Γ¦ˆžψφυτsκ0Ψ` Βψž\'q–Ή½φv6mίΪεήΨyB°¦TΗ@ŒDΔ2ϋc€j¬θm’β8Πd¨Ο*³Άc1««˜θg“‘ηΝΦ,VΧ‰$hζlkhcQσ& βΫ§A*Zι;€z-ζS~JβD84ά“χφOαΙ„n qγΏssΕ 9%ο¦ΠΤp¦)€~DΙ”‹Zy9cοPσΊ'ΟeίX3™MΔΏr€¬eͺθr·„›‘ΫΔθv\7n¦[Tζhπ=η§όΔHΎ¬2$Csόg|X–se(G6€μ¬n2kͺ—‚υsί› Έ?q_οBtΪW,p‹!γ‚ ©ΖσsΜoΔ>λά[όνφhγΕιώΐyι±ο,]WγΜ[³[9e(ˆUl΄ΚσΤψN$σqΈΰDaΧ€ς2Ώ<—>πΨJ(={χŽQώ°ό2>KΣiρ΅šJ‹ΙhBΙ ωΪP„oD1η4Ίjςž•9 P2yœ@oD>cš s4`/0―όxjψ†Λ=ηΏF~ΙsϜO=³–nξ΄HBΏ†q”Ί ͺ7΅Ij˜–– b‘Nχ©(Β=ŠŒA’.!™40ϊΓά ;ζ~}ύΚj‹sֈΠΕΰπ>¦ ΈU†άΗ&lg8«ΌϋΑ‡#©ωΛχ›ι[xT4ZθE8₯zz(λ!εXψ‹α:Vκ{sž}eβφΫwΰ¬Ο†ω Vύ6ηΟ‡žΆPπPβ¬sΚ=˜ΜλΩrξθδδanωmd©Β§J_όΚ-j+£ycρ δ‘όYΑ<ΛΈ3±dp;0=ωζ mŠΉM:†Y’7ž–`žΜ-@_Βηζχά¬Wlζ―\I“ΝΝΜ„ƒ, W½Έ7…‡lm½όξ5›YΎ›έΪz±{'₯΄ρ—~ϋŸΝ·[³Pͺ ξ³…aϋ„ˆˆ:ξbXdήО·‰Πό:³.#τ‘ιΐ kΜω…!ΗΟyΑ ηK‘ΐHΒΐuΜt­/*XŸ˜Χ*ΰ#΅ pZLt—ZްB¬‘–gέΡY²Ϊmλ½4·DνP¬‘2GͺDΈFΖυš§!šgΐ0΄&₯θ²SΐD\4γѝθΛkΐχψP‘`€6ή‰:­PYK‰&2γV#cšcΜ&ˆ”彡u€ξcC"n搑Ž@Հ眒8ΒRΠΙ°$އ'3 -ρQjŠ[FϋmiΑgZn€ζ€gκβΗαώ,₯%ΚʝmoŸ€m”Η~„* Π΅šΗ],Υ†‚h€X: Lχσ…egh­1iP‘­ΠθKXΰŸΙΌ₯(]rΖ}¬Š!W“3pm–ζ%Z–[bΠ„&Μβ)―{™ΛΚX’ πΝ`m̍Υ:ΠͺXK«ηΟ§EΦχ·Τ1σ?jνC#ͺ‰°”°4ψv‘σΚc’hΙ-im½4ΉSKΪ%O+/5Έ’BIžDΎ!U,ς„¦ _… Šh #Υjη>[gml”βΩ™²ίZ|ί* YPI6ΐ3@FB{%šcΈ‘·$J ·'jŠ‘Bϊ8cc9P¬3τΖ:)•qG'x;hη%±P%tΜ{jBΈΧubέο€U$ΝsъͺwAΟ‘h₯{Eή9dߜςSλόΧΆ#6Ϊΰˆg,aΙ“Q υzΩ?žr;~ϊŒ‹½εήΗΞ}±Dς,“ρ<χβ`ΖΈήd~ŠμŽΙ‰%]½π(­½z.¬`β€σ*Gι eιT η9[žΫ.² dθή½,^ΟΌŠ½s”ΆΚδ?Η2Εψ'―ƒQΒ'2ιρκ*ΌEŒ3ZΚ³μ [zU€cTςPΐΥ':ΜaΖ?˜χε;ΜI#I³*>CώM w*oŽ;05P{h!Ξζ VθΫ·οF₯< ­Ν•moΓίΆρͺšœΏrωrΊuϋ!|”ceoΫ αΗ~τιτ£?x9}ρΛΧΣόφαs«(ΩTˆ)3Ζ”c=NβίL{»-tx|Ο™ΏΦa( έπ*‘4OΑδΞ5Β‚κχ gβα'ολœ,ΧT%Ω‘ϊΡ{ΐfc€]ΦΕZΎ Νƒ»ΓgtφU† Δηα1&pž―Έ¬š‘tvΆ1\pΐO€BDPΤU~ηΘφ.’f§ωG₯εƒΧχΰ6χίkq@7χ‘e(}3ΉΈ±Υ x„΅μ7ς moςŽΆ;Τp<ΕBˆλ’pw <ΕE‹λΣΎφ=ΐ«v>wΦ`GΨ„n$ΨV0€6ΈIΙΈ.•ξC+§\PX#‘pΣΛ|Γ€ΐtTP`x\°p°΅–IΎΘD''bβψ¬IΖςQηŒ$ΐΣtW-“xCe v Σ!πβt7ΆeŠ,MuDΝV5eΓfη–rŠ/ͺ>υΝΟά]³!-[[™ΐωγkSΠ-OΙΌπΒ”z–™Ξ½”ώήΗώg>ƒ¬ύϋ)³ϊ)Μ%ΜΫ(lŠ%AvfΙ)ΡmΔαj΅α₯E_ΝέξL+^0pAH5ΌpF+>:#ΠςNZtCύpλ:•‘»Π&γŠΰ5Q“αmΘΉnχ-α:έόΆƒuU[tν¦‘•š•eJ!Ρiu9ΖiβHKhUαa(€Χƒ]bŒŒ4„œ–a’"‘±F!±Ξ¦­Φ/«1H­Δbη<4)γ~^Δ›ραm€·qΛ1ϋτž‘–έ Li‹ε¨AΜΌμ^hmq_Ί° #„Ά`1ΚίΚ‹-«4{œ M†,<ωΔZT΄°†ψΔd/4²μ-€‘(ΐϋ}ΦΖxV½ ά2±l%Μ'±΄Pnβά—MΰbN CA@\\%Ε₯<,Β ό>χ΅ΊŠmΧ˜O]^JλvG@Nψ§ΥT7΄΅”•pρ+ΎΟψŽ mŠ* C©Œu΅k§ΒSW| @θyί=$δ₯,JΟ1χ˜‰–¬²Ι ;1ΒΌŸIp=h`(‚ΤΖ$Z'΅ςYΚ―"ΪdtHfqns“*ηΕ]ψ©~λΎl0†ΰΧ.qeΐHž$Β kοMHζ‹ΟΧA4ώf±wαXܞϹˆ‰σT³I(T‘œ‚€#,„½`θK€Mά g ΚZπU\ε΅ %±Ϊ6*ΒEςπ"C2j=&]rTΰΪxl­ηδ„rτ±|ž²*P MΒ¨^ΒZfΕ†<λ­lsΧ·\Μ.’žΥ:ΚΡ…΅…τ‘‡Σ)9&Χ³ι€}‰jΜKώY‚ͺ룕ψY+ τΠ32"Δ* ς„ΣhέΟN2·΄¨!qlοχpΡ]‰­Θο;O9Ό2σ*λϊg¬δΊPί€‰uΪ}αΩ, œEWEζhΝy&}¬e²uHEΖΦΑ(‘Υ΄8`ΠnωΦxζέ›•gYΑh]a²e”·υ«π˜½ͺ’¦!ΐ.΄ž;•Ξ.C½4ΌV8ΫU”9ß ίρ;eΦΐΉY₯ΑΏ…‹r„άgΪ εYœ—y”κ1ž0­‘§ΝM_Λ9έ/Hφ«# ~8s_OπΚ,bxμ"ϋ'—Ύύζ.‰‰*(μ½°–»Ύ,fκM1θΒΦ{’9» S0‰Rώ£"Qη<˜` u *F <ͺ„ ±ιΝΉΦ ‰2a„Χ㝛χβ|ΈΎΎ­Ÿxfƒν#œΡS”Ψ½T}μ‰τβΏσ±τo}ςbΊ<qλςΣ·―Ύ–φ壴hοC/ˈ\›―|ν£ΰθ°ξA­Βrt=’U•48˜T¬\XAAόIJΔ˜w―ν¦};Υ@ΕΉπόšƒƒ:ΒΔ+፰wάGΖ{ί₯l”‡…“©P-6hπhΐg.œ‡gΒG-έͺλΑFΓζΞΉζ¬1α3—εƒΧχξK½Ίϊ2Η:αZ,ύΐ LΥJΔΛ-PΒλ_ΉA\VΑ£{i‡:’v€?tΎ¬΅άyJ댈ƒΒΰ0^˜‹5ΉpX89‡iωνΧoαΞ!tƒNcΛ»!€-?dv9ΩzhθΤͺμp¨w€ξeߌυΑyO¦g?Λ=›ΓΙ‡Ξ]m­Y½tym5=|i%νs8ΟΆ±Ύ ΄MόΈC[Ζ  +±b`=šœπ¨i9ώ_σ+Λ?ωGδ'Ϋ3πΌ gΨδIΏΌή‹‘ΞpοάΦoΏψwύΛΟ~όΧώ άκοO ΅•pπ€ΌτΠ% l€Α Žαs05_ΖώΒώƒόC8"4|Oΐ%R3ΖlD¬r‹±έždδ9LΦaYα²°μΑύU\":Ύ;3S‹–  ώ™Zλx„P.`Wbp΅ψ›˜E¬Iύ8έ₯s£`Qfm\# RFΨ‡ήgΨy,ΞΑΓ‹h±aZŽΟδ9έΦZHΆΊNίΤϊ9`Ο0š΅Ί!γz„gKM€Ε€I{a…ω9:†Fς­oέCΐΪJ<ƒŠ„@M·p΄ΏζžZΉ&[{Ο¨§p aβόn²‘.pΛαwo,(r>ΐ½ν΅5bZgW0ee•C‡ζ’zlƒ`@9BK fx†όxAy7¨υ¬R’βqδš"tMš5εΰ'γ=γ:z °ͺ0·3Ψ1±ΦZ΅\k­bη>0bΗyΰ9ϊ*τΉ„`“ (ΈV0kqΆrŽ!$Ζ›ƒΓ Ίq~!5–h¦pΨNǜ#³ŠRκ’Ω΅Μ5WqπΎ5‚λ>ΟdD•?[WH4ρ³ΛΉΤΥ=_£.- .Ο{zš œGγ‘«|΅Κο δ"%“G+Φ\wΈΐŠqRvΪΔ5†Νπ0•ŸΠ›Έg˜ίβZϊ|;cY¦TΝ±YΘEZ₯¨F‘‚έ ±ϊΩΚ»}„ΐ7¬πp χό.Ογ.Φ3ΐo‰q™ΘgΘƒϋ‘X6šυMΈ ΐͺι<αΎ{@θ„sZ?On€ι]b‡4ϊπ°MPŽ*π>Ά\(ΔZκΒΛ½΄Μžγ™―Sι₯ΓzΦ™―΅Η›fΦ?kΞ²ρL_¬•S¬ΖY¬Τ”›Deω{im™ο-*2yVk¬”₯³ς…χj³7"δ ϊ d:}βnY‡2k2$Q°¨bΖ΅c‚Η]ΧhfΔXζ£~χ™PD¨fc_›˜τ6ŸW!ozB•κ[³Ηέ» X3(”.cχΝΓύ&€‰0&€~ύe…°ΰs¦TΒΝ‘έ½Wκ±Ζύgί-¬¦›y 8$|7ρ ή Y²CΰΊe°’›οΡ’Tΰgπy¬¦–Lύγ7χ¨²ΛyCΉαώV―‘/υ8/6~1ρZ0(".ΦΠ‘=w“uyηζAœ‹}ς|”š‹°©Έ—–l;[Z1Η ξcU Bœ›(―Ιs΄ŒΫ©ΟΞσόά»‡‚nr"Šj‡0 ‰'ΙΤί‡‡Θ=x;χ•— ‰γ>¬·P€¦'”£Dα WGυ•ττ£ηΣGŸ?—ΦΨΧMβ.“$ϊ?υιŸώƒΟ³¦¬·˜*‘‘$ͺ@±ή΄ϋγΉPΑρcP0”­O½5ožgDm‰ήzc'*pΙ) =;fœž«“X’ΠΆν-~Mʹᆑ¬iόisŸ::š\κΪzl5Δɐη0 XϊT„R­ΟΪΙδ^'ύˆ›ήΰGZ]ύ4nϊλƒΧχfœξ>›θΥ«„lnf?ά½πi@ΩΉΫw¨«< Eόξ£ύ;w‚΄2’@38ͺΑTω—τfΙͺώH.n=ϋS¬Ϊ5ΈΖ ”μŽΠΊΫ$ΰŒq­Ι!"ž™²6Sβϝ_Oΰ’ξΠΊXRΒ%Ɓ†ϊB0‹-΄Ng 'Ȑl!SϊΡσX».]\¦Εt#Β,'6…AΨ’[b|αC—㐠(έΕΚΉn»½Ή?όs_ϊέOZMγsŸϋ%ΟτΏ–׍[f3›^ψΩύρσ__zδΕNω₯grεΖϊ#τv&ˆρ c ™+MΜ \€Π pΣbgQ(‚.ŒTΐΉΑ S³|“ V v-e­cότ:eœ M hXGό l °‚-`%M Σ –suiλτβ™ΊγMΣB€ΠiQbkιZY!́š¦ήہ)rBρž³`Ιψΐa Ζ6Χx‚Α³α†Y„υ¦Ι‡άΓρϋΎ/¦hY7;ό!lΜ±ξΰˆ“fŽGXbψI֊-cΦͺ.Έs|Ž*0πw?y_CO$Ž ΪΈxi_“ρ#P±4jM1μc—¬ς¬ν6XΔjd 0-„­Qέg-Oά7,ZƒευtΫGUf;‡υπ‰G— ©£Μ[cE˜H'žΝί G!¬ƒΉFΥ ‡]΅RΪΡΠ’fμSΥαζ.)ή_(›¨gύW½xέclh3vά:ΰ‚!«­€Ζ`«$@$ήCx Π –'‹xHζ5Η<qΧe-Τ+Β¦ΰr?\ξ}Ξͺ5‘-hwΐ cX Tb©A™IΎbλd“`k΄ΎυΊϋŒΓ¦)#ΦsΒήΠ BϊΤ₯Uψ-qή„y¨ˆΪ JΟH#£ρ γZωΨ`¨Β~_ηl\ΒU~Κ#«$‘1ί"[“]—ŒωeRχΪ9»η£΅v-sσΡ.Ϊ)#σΧqې΄°³‹FάΎ#·ΖΊƒΖΚ6W«ώυ\ίΩρŠ˜hN<Ώc βZώΰ0y(Πx9½† 1³zύœΗfΑY¬NΖcΩI©Ž9j~±‘Ž¨γ©£K!©Š*hF€zBΉ‘q}‚j9ŒΎ°HRaΈOΥS„βλ_ώ™Γ+„mPšπ―ϋ΅9Iθ+>okληίαiώ‰+σζάωsŸ· 1iwΐQΉœ–h§œF•„°AhiA ’)ά•Βrι;ζΎQ˜[ \ξA[Gτͺ{¨dΑš8<7ΦΝ₯±ξ°aΊfέ'Ύg+n–t |Ν¬»„/ \Kχ‡ΰωv\\‡} ¦‹ΕŠλG˜T½—ΐW€+`>$€θΤF|°„΅”šEY8„²­³ύ =JhΘrΆοΌ#dϊΡqŽ™xo…Œ–bA΅­Σg“6άύ6₯δ"¦œρ•ύKXΌ'μ'Λ4E˜ˆγτω\ίa|‹f#<šX‡γŽZΜΌΧΑbfΜ΄ΰΑ’Qg€€Ζo¬·τpNΖ›*¨₯›c3䀂3ΗN^ϊγœUh…5tƒDΪ1šZM"μ°Ζ^ΏLW»‹X·ς(Λs Πυ/αΕΌ\œ«(―†°l1ώ»Δ\vωY;vΥacK:}γ9K€κ €άδΊ&ŸΡB,ΒM†΄‹3τeŒ@5~wŒwκ€.ž,`%ζlι+η1L@yMOΠΒ}ƒβL¬ŽαB&pJ‡).v¨‘CΐOΟf‘»Γ5Lξ6Yχ[?Zcέ=οœ:ΤΙ—6κJοεπŠ„\)³πψ₯V(ΝΑUsoέNn;υΟ__’@L|±^oΌ‹Ζo-vnύ«Ώ„;ζotšν9‰Iβ’©Gi'$‘€νŽ‚ΣκΨ"„΅@έέΣ Ι€2ώβ|ˆγ°7Αߝ~‡ςAjΔϋU„‘ `―-έζ %ΞA·ά]φΛ€H\ H₯*±SΈθ©{:”R$‰‰ΐΐBαΗ―ΞH^±ντΪΜσAlsΰKζΙ*K {ΧΑ)™*gF£ή›μwώΚ[―ΏΎΜ~ΟόΉ½ώ˜Ύύzͺώwώύ|γ»Φ©Sϋηc•Ιp@(4i›l»dΙθΙfΘ`©Dƒ IJ;£l”5ƒα‹˜ζ‚‚cHυ V„pψxΜ‡ ¦ ’B=@#OμͺŒdŽMώ‘1SΠ?%ζ‘υPρ„wͺέςŠ$TιdT|–˜g¬1‰~Ξ8G&ώJ<@)χpψόό^PΆN\\•0!s@Άn ήd¦ΧqΜ&Ψ ύA6]ΕmΥτžχ‘Ε‘ΖϊΆ]€¨L’{ΜLxηΝqFj53Δ6„)γlγάjCzߐΤό+[©›V°(0Ήω•Hš4ΩΛ†4Β›tΩΊOЎWΆ]†kΐΨμX· ΘΆ,`›±E;sJ…χ‘W"<Β "²J]ζ_σŒŽ—ΝόYyΓυΠΨp.Γ(εΩρP0‚1Ykb£δ™ΓlŽr 3lΙuTyo‘E °o†‰OU™J±νλ Ρ0TΕj§^3, ΐ₯~Žy›°άΖ—KzRΞ`>$pu<ήλe³υυ[o$π~ΝΑ}―;‹δΝ…ώέ›^ΖΏώ»0Fί™Ν³— pP ˜(( cU"id—μe˜Αk0ο;(šΦ™rΐΒΝDLΕu€Z΅π‚KΔτΛ8λΚ—­—)‰XVώdύPΑ©υ‰₯”ω³χŒυ—=³‰ςݚ­+Ċ*uΝ—μ²ΚtιnV™q‹KŸ–σoNΎχRYϊ³ύ ΒΏ|cY·6nτdA˜ΐΩχ*X <€ <|„}*ΐ σΞ€ΝοFΊ]Ÿ |oΆΟ£t6μΐ‘Ϊi- ³μ5|«kΘΪ(τΣ(Ρο\CFΛmkα P†a+ξ]Ά!$ ΐVWE.‹Œ>c^Ξ₯A/°χ(8c/Mδςj ‰ Ιύξώ—\†=΄x“νΔuρρ=^ΈLΜ₯“‘b3†Άtž’[«<“ &ΚΚ€κ=pώ˜IBj–γΤƒΰίdΓ#6”Πc½ΡΞ—Ώ›ΜhΘΐaBONeΝϞbΧΝNmΖ?s­ΫƝ/˜ΠΠ4‡²Δ*²ήΆknxΞ ξθ‹tη[xΫΙm‚·ΕςŒyX²"ρ΄6^*Γ”©ΆcΒX„ π|±Ϊά‹€Ή@vάγ²fόΌœ Ν"gκS9γ¦dΏ„›š1±F}Ε€―&Fv” d>Zx¬Οάχ4εœ`„xέoΆσ”πˆή°Ηο0ΎΈνZFŸ‰θ€ΙίΫm\Οω^'†ΈŠΡbΈ# $XΙ†F–€Z†ryΨε Χ8‡’]φ’ŒέUΪ¨―ΛZΖ0Ύ pώζKη‚νΫ‡±} ‘α™ΜPIΕ’l–~Kσ>+ ƒΡuΠhcή #ΒͺŠyΐZ ΦΪyq}HΈΐ5OΘΊΘΝ{p¦u«mΉ]cί[~Q€9γ}δΆ-ΊΧυπ^«QψLχΞΏŒ€§ΜkqXŽΞx,‰ρχcΌE†ŽŒόM―MμOV-L\>§Ak»€ΑMζΑ$Β=*?μέ?Iͺ„xήέ„3žqih#%9ά†y>4Ζ=›Κ€uXη4σk=ηuΨiγŒΛJR—‘\³GMd¬dϘ9±ΡΥKΛ‘G‡4fαω—!TάƒρYV3*δ0O7_:Ÿόʟύ ° ‰Ί”Ϊ 0 Ξ{œϊy j@½-žKw©Ζ†°²iy έΗμatκŒυržτ PsΩΪΝ§ŒΩ½¨(RΉ₯€ά Nρr³T‚γΩ9ηά+˞ΞpœruΖykHzv”=€!!• *aE©Dδ ³γΰψqσΎH<sΖο؟ Χ6$¦‹³†cν¨Έl¨α11όGcfρΙH‘Ο’6>³ai&ςoΰ9,±w5Γβx¦Γ!½`ΨΛ»ΩΌφ;ƒ{ώϊΜ€xε ωjΆ'_ŸH&°af—OHώ‘I”ι^΅4ݜ 0‹υΟaA3$β³βPQΎ,_ ]G‘t“'Oq ˆ…&IΟSd ψψ*‰ί)FtΧ©”e›–€Η€‚mΪΧΚΥ‹Ι'œ7²„PκrΠ΄κ=π”[η{’‘(Τl…œT{O¬lΏ"3OΦ„ΟΛ@£š’a7r`όζ{ΏχΫγmB)Œβμs{έΉ“šΎnHΗϋ[χΟ}ύoύΖκΕ ,[(m0 d šΑ¦!κΒ`@ζΆ<'›™Κ"ΫΤΰœZKvğσsΖήfΊ(e†;ΜYAVFΈɜτ˜KCgš[Έ K΄4Ρ %'RΠ­S» (3σŸ ' Œqpύ9λ€»2+•ΘښρnGCYOdx(±9Τ%wˆ΅žκl2‘‘΄‘‘:\‚‘m\Ψ(γγΒ₯“-RΑY.νΡΈ‘ΜP<2[Aη2&–ϋ’sΑη.,Ι2Α=bŸeωΖο φ…YMž3:π!ΨwPx°Q²©Ψ“ΛκΦ΄Eρ„Λ›{©HMRq=ΑUjόbλYG\€e|Ή¬·ŠΑ «με5ώ.hiρΌC’χ¬bλτληΔΘψXWY% ^‘ΖΊ`[7ˆ/UΜu„ŠπNS–p$η+<<Μ―iXΦwlή‚2­‘Ho\ͺΕuzΈΗYš%ˆΧx΄έRi±œ^ιμ ’”Ώ2ΦW₯œγ’Jγ|¨σ0š™Ό_7½3ν5°Oa΄aΰψΝ "ӭэ€Ig° ϊΠsΐS Ε)۝֋e-Xή+ψαžΫ;ΓΉf’ςξώdV€ τͺaΘ/ψbίs{6*Οΐžβg>ΙΟ‚Α5η„J?Ά«žŒdΥ²ZzpW ¬,ΰ―lQζr‹F‘œ:"ξπη>βoOL)ΗΔ₯ncΨg1>Χ·j„iΰυ Fτ ^;Ο&”1t•!ΚEJ πΑlΕ™½λΙ)%_ αΆζ6ΰwˆ ­4Θ΅W€IΊφ£Ϋ¬©ϊ’†!L<ηNƒτ | νΐ|;–{wιZΨθ*‰?η,‹ ;&qπΤkΨΗ°°ΘS »N 1,S•BdΕ–uδ捗wρ<ΰωα\Ϋu’’Υ\³Βœ…gˆ{`]MφΥ#1c[ZNc]₯1ŸG‡ΩM0ͺN·ί8%φ@n=^ŽϋΧά„ g³ˆ'`ΞΏGάDΨPyw+ŒΓ”Μ&°Ο3“£½I[λωωι"yΞ €ό]ڞ κΘ¨9fΉGNP€y=Ε„d#O¨”₯`ηαφb₯8³žΝ4‰€]Φ+Ε΅RbΖοa΄ςŒή<†ΑνΜ;Β›`E$~žM—ρηΚ Œ€W^92μ£O¨#ήΰ3\΅b¦z#š¬₯•υυo§υŒΉγΊΟ_κgΐψ…zέΉγΙαά7Οn!=Q:'-eCOŠΐAX©0ΟόȁαPΡΙ:Άά6p@ŒΥζΦε5`™Ζ :=EˆαZψœ~JS«•»ΘLιώρπŒGX՜QλMͺLdΏσΪYN~όΣ½¨u«;΅ίi"hΫJ[ιBω\rύϊU,b*mp•ςs#φF·OΉ8@§²±dœ?gSΠ ΦIφ‘9φ…F ^η,j9σŒEXc믏Ib;k;ιt DXUπ”yΎΒ;‚¬²™q T±°βσSœ ϊ€]@y…ΉβYW v0Mν@Œg’:;AΌμ3ώξε9tΡΟHμ,²ιFμ)0™θ‘”{VLRŽFlš,Œ·J"Œ‰ΏΩ1΅ŒΗΔ5λR`¬P‘ΧAβ…A.3‡ΘK­rFz€ξ<χ]ΗS™7y•y„Δg5ΈΓSY"ϊ›cr\:Υςω }kf0,XΆδLε₯]’2ψ›­²ΐ–m“ΐΫΰαχh Ζg Y±"Ž2tψ΅6»ηΎˆμΝ±'ZΘΝ0Zcۚ<ΛZσ½‘EŽaΙd"sΪt 5q³ΔY/β ΘrξΛΔ:[¦Οος 6š&π1υhn‡Ό$β²-)ΘσχΠ3‰ςϊ*ε7/#ƒυ$<„˜hq­h_Ξϊι!dͺˆ·—Νž€Ά'ύԟh찞ΏώTΟ€2α‹τβΤܞΏφΪ?X™ΟΎ8›5g]t‡’3±Η*Λz«.1L₯Κ‡CΡΟωάαΣΙ`ηzr‰Μk-οα¦&4GΘnσ”ΓΜ稳Ήΰπڊ{)9ϋ\CIΒAEΉ\>Ώ“Ύυ­KT uŽ$¨§0χ<α0㞒Uι\+ASY?‚rΠj3F@ŽΧΑ²6Œa$Ϋύ,y&b‚,ϋ?Q³ψ;ο½υΫγ`}ο„μάΧΜ $1NΎσΧΡ·‡φo ZuH83„—.Ο<Βg4HŠaTmhγΦΫ§ΓΣŒΙΈ}„&i…;ί5Πm¬¨³j†ε²*(fkΏАV€ΫξZiΨΔ©ΚvZε"ˆ³Λ–L*Ί XžΪ΅ΑiDcBQ› ~rυEIΡιN`™’銡–ΟØ5QZV5±5ιjr‚U‘l‰aχžΡΔE‘ςˆΊ΄Έ₯Ά6²>¬9,#%Σk₯$ŠΚΧBΑ¨Ÿ·iΙ栏br}Asž8j[MHRό.η³ρό«°φ[»kΙy2άΛΊέ2AΦ_έ€Ζͺρ‡&š dδx9_ŠΚΙ­―_f܏0WόώκUΐ `Β& Χ© sύ…(³Vδڏa νΖ·ŽŸpέΖ:₯2„A=5Ά{ ˜Fq›H'ΘπόΙήZ•D–m r˜–‘Όμ΄ΨΑ RΑqηˆ{Ήώά?βΓY#†ΚΡύa‚*WvΜ5Πς €Βο2ŒΫπ*°° ²vμ‰UbθΉ|Č·[€+žp™&š. Μ“LφΤΙzqo+h[ΈžkάΝΚπ ο˜#οΓ†<Ρ»₯Ι|₯0*sΉ I^TFAnˆΔ2€υΚz΅ΓΈlM“-’Ώdg€WAρˆ§ΞR³Σδ¦) ])jF—hwT€”γΕ-B&›pύ!γΌ ςΌ=ΐβ¦Vcέ8~6Bμ“Τ•›}Ό ^cߐλWΨα)bΤeC%!«#<–²“™Ν`άyζVθ !ϋΉΤΰΉ:xdKCΚ«Q‚ ώΰύΓδν’χο&Χ ±\ތϋi4š? ¬2‘ΧΠ”!kRD¦†Nα£Ιˆ†9ωw~ ½“#ŒΓ„‰Τ·1ζ:6žZ`μπlγiκβ“Ϊ©%/_]M^Θ4“ Z~žόŒZκΣυ­d›^8i&˜—, tΎ½‡αJvφΛ/m –œAςό<₯ήφUΚ°‘LΘΰΩ†iš8ΩcΌXΣ(3 ΗςΚ"lc‰lύ͈WΕ'Fι*τΒ`Όš)ό]―qηNθΏύ…y­UΣ3“ZAf7giΉΒ…ΪAIYξHA(ϋ#˜ώP'£™’ΞΘ@ζfa18 ¦’•ΚΓ΄VΠH“β†oY-•‰ۘ@Ώ·"Γ ‚ΥΞ`6$‘υDuΒΘ @bVe(ό¦λ[φ% e{‘8Ε\«ζ‘ρλ1?'p― ,uƒ#ι~…S[ΝΓΏ›™/xtϋ2±Ζ{²αŽ)U@©πΜ9υHΰ„]46W₯9A p £θ½,egKX«8XήP#Α˜ηUš»xο3Ppdξ#Πχi=• Έwΰn³ ά6ΰΦΘn£,3ŸΥ=n‘G(wC4,³5δOΐ'€φK—ͺΙ­WwΨά_ °ίN>‘Ζyάϊ'ΌΧn‚”fβD±n¬£`ψόλΰjPJ ‹‰ΑDΈ>3b~d4™%51ί™#™ο¦{^νυ_†±4mL–¦Σ=.λΞ( 6ŒΫ¨4L¬+,η­G"+fζ|š}%Σn »hψΒ5όlr™5ΐ=Α¬3™e”­ο›–6Ό³?‚½Β” Γ-±±Da@N5$@@ Πζf19ab¨RΟb;±ΞΥςKΦmXsvτ~QΣ†Οΐ’πΧΛ―Α.Γ4–ΨΣ€˜ϋq„§mΔD§©UmηavυE˜iKyƒˆƒππΑGχΟT Ϊά’ƒV 5_#Όci*Ϋ  ζγTο`@O―/χ§΅θέ[Δ­ΧψWcΥ²`ΎzΦ5·JΙ{€Ξž±±‡Ή Θε½R6ίqξ½ͺ §2Μα”ΠΑ&Ι™3Γ<˜y䁘Ω/֌ή`_bo=EVŸ΅Œ|ΦW+οR2 τ€D9= Q30(±_<Ζ-0ΤXtζyΏςUωnhTΞΠzœΦ]ΦΫΨzΧ@¦Φ²Ζ?w8 ‚[χ«δ6ΓΠQ.h1fPg$#§*œω²1ΏxΟ4JV8ΫήCcΣΚ)=@ε”3iœΏI΅Ρύ““ήeNΜoΐ<οgI:c«]ηίЌBΤ}=ζ½²Η ΌΣMΓχΘ©1! x:ΥΎ©Ο­@IDATO)⅍‹_+—΅K¦ύμ ΑšaΌp~W”?ξQ‘&ϋΕ‡™rΤ?δ‘δNJr„ηPnΛLΝηΑππΈΉ©1›bΞίΖsPθΐΈά=ΖY€u.QV°ΕZ7˜Ÿˆ€1z9n|…=~i-<εΉώπz-Ω„Œͺaμ½M"'Μ"σγu­ό2 Ρ½ž“Cΰp“Π#όΙ±¨ω]Tv²γ!2ψg d?ΓσΓ·μL»ΉNζ₯ΒZ£ 1dίΉΏyΏΟ±–zReΤΟxώ>ϋψ9ΪδBBφά Κύ)‘!Oσ¨©GΉΏη―/Υ |‘τoΌ™zλ­Ϋ”AάD[ΓvβL™O`hmdΔ{²-Y'ΐ’B•±˜ΪΤ([΄ΌM;ΐ‚αΠεš€4Ο88kΙξφ‹”ͺA !D'“νδ.]Fύ„-ΝV«D (ΐ/WVyγ;ƒq9",Α ¦že Oκ%•›Bΰ /μtA­¬!Y.Ιj’£R ͺ Šβ=ΐΉL8‰Nzυ’•6¦Ι‹μΑ: Έ h°œsnŠΜ›Ζ‚cτή2t\Žyτc=Ϋ‘&Κδ9Ρξάηvή™+γ‘12ןυ₯kήΔECj˜’` 5’κΧ£…χΈ'dž J½'Q(jNθYκΟά‰F€G%Θ‰D'Ύο³]γ*ΐΟj.†YS»Ν3ΜCγqωύ γΚ< ·)aiΌ| EΊ`^Γε‘•uζ‚W”=p΅ω/χ³οeςR„°ɜ}γ|Z1dPθΝρ`|’`,ΐαF'4©hςΤ†KΪ\ͺ)(΄–π mΎ‹ΌΗΦγEŒ€6,ςξυλμ>Αο¬Ο›VΩ―ι¬i°§q€χΐ5‚4xΞx~Ϋ|g Άύ^c..a°½DΧ;«LΡΘ₯N•‰ Τχ”π%›ͺœ‘ fCλ&wψw˜΄ζdim€^"žέκt?Žp± έάΫDα,€Χ G9 λ—ό|“{~u³”ό„Ž‚‹α+k$ŸΎ‚!œaήgή ΏHΞς|Ζpk< P±V•‘ΐuγ=#₯Œ‘.κ ε“ηœAEISlϋ GψˆοεYδΠ&¬›M¬’Τ`Œ·΅φψkR0šΧdˆύέΖHίDΆ˜Ρ!‘rΘω΄αŒu§έΏΚΑ–˜²V1IUγXŽΑk¦άnΆ†šΑ4 ¬‹οΙa·L+<-™wcτέoΣ†5³―Σg`•ρ<‘»α1γm3«‹‘1Χa™m1>πpΖ'Θ£!€Η ΰhυ’…Dχ)j˜ςeά ΐy1ςΜ“αΦŸEXη›½έ y»ŠvωΊ'ˆFζί /’±2οόͺ²œύžΓ°˜f“O`ΟίΕθρά›¬o2@N/Ψίsζ.cƒ,ΞΌΊbω/ϋ^c2άR …Qκ™.pΆ¬~’ Π«x¦\ωλϊ[ 5B“υsΩK–%νλ99¦Ρ$Ξ«4·ω3Ώt `_Ε‹‚އωΙa3)κΦ#dg„n‹Zϊ #B©FwŒξωλK6_(}rςύΨ£T›= 595γ΄ξ–©‰6ƒt‰θ8#PeŸ£fgΞ•qUΎ₯εξC°ΐp¬ΑB Γ6’:FKφς΅+ΑΨ=$,c@S§‚Ήξ³f§ Έι'wί?αΊ2 (t! Y‚ ―RAa”asg”₯ŽΟ3 dZ¬%W.ώ7n&_ϋΖ₯δα'΄Θ%!²(ΜaώΟϋ¨εΩμχέ“―ΏžΘ!^GγΏI ω.ίω η71¦Ιϋ «CܚvΦS)hΙΫiοςR†¦”¨ΆUΞ!ψYΒX¬σLƒbdM6<[Τ†l#ΰ ̘)‹d‚‹-ΫM:¬¬™l%Γ€"SyrO•»Bo‚,Ϋεψ)¨μ/ Υ ΑμεΡ‘L‘q˜&Δ'mfΏld$*qγ[Ή4/֎ύ³Γ/SΊΙΔ!TLΟ#f/[Γ½d£œo—ύ\Π £#iˆ‘Ε>Sqϋ^ ―'σnu«/XZIE· β ‘” ό] Θ^©` π}›ρ›LθζΟπέ[2ς™˜bžΔόκώݐθ:ΎΏίBΩ—I\δy˜ϊ§$422iV|Π•kά¨ΰ^vo  εΌtψϋΜ}ώ&3‹•·C&°6ώT-±ΘόμϊΘhZΫ܌{Οβg}Y‘`ΐ³§iΘ€!, ΰ)…ΰώΦλ:€•‘[vC4Ζή:α,eRΒ[Τ‡ς0>?―NΦX°+Ή±š›Μ³‰\‚1•벁ρτ(pq°₯ςL€>L ζ…η:£BW.qΈσΐΝάx„7ΘDƒζά›²ΥΈQhrB.οχΗqΒ–²΄JΒ>%λZ$”Ξ‹Έ‘ωLƒ…αΕΏ-ΐR“Ϋ>=k© ¨•ΨΗ°Η>?ӝ}?+ΠM€4“|Ί½‘\" ΈMiΊcžoΚόiΔ•˜Λ|ΩωΟ0gγ 0§wΓ$ΐ<£ž—έ8—$«q_Ωi΅ΘΐW™ ϋA >f­MΜΤΰ]že>MΞ4ΦVΠeκ)gLY4,±HŒ ‘*Œ5FFωψ“f.Ω¬η™<†k•ϋšΌ»…!ψ€0Ο“1¦Θ eύͺηβ_s/ƒλ™θRωΗ2g@<η¦šϋ­±?R°»ξρA‡gfοZιb™ΓΙs³ημ>ιΐ<δ’ 0„oβbō‹BΒRΜMAtΆ[#4fJŊ0b˜Σ4α–1š %¬§ά€ΝaζŒ_]A(Οωo̚ŠΠ’T]ΦUfՌo“δ\c‘M’u*°φeœM”ΦΕ4‚ež?cK(ρKf&*,p-+r d!-Θ―oΈμZΆŒλGΧA”₯L›}oqmο»Έ·ˆυ>γ ½Β΅Rΰ#.JU­r5€Eζz—9².³Jވ5’#OP¦Vη°‚†αc«qΈ*ψCQ–‰R#D… ³qβ>‹JS:XeQ€ε³Ύ³qΡΖ#‹r@x“{?zTOξα)™Γ¦?hD}ΣώήAζ=Sΐ†Š_@:‘%Eg™ŒcLΆ%Νϊ k«tόL#λ$ƒ¦σή|‚xv”J Η―yž₯ ?–WWεΝΓκ½1ny¦βτ¬’,η|™Ψc B΄ Ž˜)‚1ӈBΙ3'ΦΌΖĈOˎ™lxŠŸΰΡ£ήφZx7H€e―™­8ε(FUΎσ=τ@»v—xΚψ (­.£Œ€ψYpΓ‹IvΡΈ#>%°¦Μ΅ !E|sšr—T­Lš‘.FšaCΦ Ž±ή BD›–ΙMΖbλ1ksλωΎDŒμ%b‰­’cˆΤ>Ί`–—ήΥ¬+ϊ‰=“b昫"σd u“Kΐντxγy›d@ηNf|ΑžΰXI!Ύ{—868’, ψŒΚΪN\Ζβ₯WˆAδδ{Θε'P½ά‡°Ίσ\ΆΊUx±\@€…;7†Νρ»±!ίzC΅ό σ’dέƒ”Κs³Fo˜6SάΦ΅Π5ΑhE†r‰ξZ(eK‹₯ŠU€ .;²—5CΉΉJ(Π0L¨Θ1Άa––ba •M–AΆ»”INθQ{Ο\ˆ=αΎ1gLΔx(Y™dc;­Ό…‚Λ’HwDy©1JΌB˜…l`cY ίpc™d¨«Χρ6π,Xχ8x( ?0ΐ`™=ŸΥ wγ%}O ΣmΠξχ·#BχϊKΫX?ώ€ž³θγϊ…Y– l2UΗ1p#˜‘e¨β°™Δ%PH’ό}΅c$›S.ˆ–ΥRΑ ~d€eRe†εW°^VΡruΨlZXΖ<ω¬‘V©θρ^Ω( “»|ΥI@jtσ³.υ ,Π.@•εΛ΄^£iHjΞ7λθο¦ξ]“9TΓYβIfTAκ:γ‘ό¬/]ΰ1n.$8rνeόtΙζeω½ρζ‚φΨk η ΓiΒσj €U–2S²Σ@AΏCrπ,2„c.n½ρœθ ͏ςŜs}χŒΚέΊ΅&“š„;ΰ‚Μ0ΙI ΌufξΔ2!ΞfVθ0φzNαΨΉ% y #`:’mφ&J&wŽAiH“εΑ Κ’:ΟtΖΪ²V-ΖH°dκ90‘  ˜2.…>!>@¦–Pg;ΨΙ$)C8Δΰργ>ˆaG†EΈ~²MJ>7˜x·Z†°hDpοΒ·`ΛΟ“Œ'[qφ\F›ig} }cχρ·-Ξek7Ψρzh”tΞS―±mI·nΟξxΜ[Θ±&ξσ·:‡›rrΔ§ςwۊσs™Ÿ_Ϊ]5»δ4κϋΦΈΎaUC D„„‰{ΐs₯A91’ρ§1hƜk qKŠRsμiΧ•\`Ύ™­Xλ³kT)ƒΜ«y6†?E“ιόiHΫM°Μάλi,²Ρ<ζήΘτ. ―‰Μ―πYέVZ…[fbž‰žMΐ[Ÿd`£}ΦΏηΉΜœ₯dΜ‘&κΉ§ν jΓ!ΊχŸΙ@k՚―CΩ7ώ& ž—Φ9Α|ƒ)E^‰zεΡr‡g±TžF€c4Ί‡L±ka„[±&z›†ŒG ΞcH@,@z€&¬+ΖΎυΌΩŒgΜ %8ΰΰύΕςLδ$–<Μ½2›^jα-B's„ϊδqΉΤςxw―kVαN-ΦΌ%όŒψfu²†ΌkC8c` Ψ—Λ…ΘΊC¦‰νNG:O 7βύKΰχ\Ÿ­5qφΏΑ--A…”‚zΓ›_μr˜W;y@”Ψy0Κaz>™{Λξ•ΠΕk b†³Αωam¬*΄΅ΚZCfΜωόHΞ‹*@ BŽRΓξ΄;θ>zΖAσΑη―/Ε |t¨ΛΕ―ύ½κ£ωαυ!LŒ\ΠςπΈaγτ/•7‚Θν]¬\ 2³’F05(ώb;γ5²ΧU€²bόΦƒ‡€ΐ’΅Όš‡3κEή΄4ηTa1Žα–"£w2Φ9ƒ΅eλζtΊΧνSΥƒ:„bPΑy2ΡSΕώ™ρcP³„6²c vΒO–΅ΛΨΙ“Ζ€xλο¦L°·Y«,₯²ŒχΜžδ—!i+Μ0nΧΚRn†4P3ΰ~w\Λ0Γ2LXmqζhι”ΌLΉ―ω€@₯ BΪx―ϋΟ―1ζ;Πχ)™P–mΐ:εYΟ~–‹ΫЈcώϋœq“x1 ΅ΞOQα 2G €ή4_9Wu%ΓΛΧ Μ™ ^.αΠσ!±N\»•>dYeŒυ’pyb`e£•λ°β\—R½œ€‘{5QΨ’e«iΎ γΠΠ0ΤD―f0ΞάcΊΕά ‹hQ0f²0?‘άˆ7νώ΄{ΝέpOrnk¬›sœλ2χ€ΔLN# :BΗύœ#²ΝOXz+ ¬Ρͺλ©1ΘX4šμTjx‘cRΥ₯rώBςυ[W‘m£δλCΛήsc«η9Hž2΄pφeΉΑ<{Τ08£…MΜ6.#“]NeίOπΘz–Β#Xc.W—ΦΠξ)«<_œsY§§C#Ξ΄¬7gfB ”2Γ9 ωkΝ]ΞBžΟ¬0';μ‘]žmƒkkΜθ…αΥΔΰhcDy―11έΗμοzΈ@ΗΜ ΐφ&FJ‡δΨφΎ:O0γYpnΒ\–­ΰ;C:ΠQŠΟP€r&΅ΚσHΰ`ΘΡ\*Ο܌>ζ μΟ£]jsœφŸ΅a]Ϋ\§œΟ-Œ–ζ?Όμ½ο™ +ϊΌΉΞ{œcyεaΏw.lFγΞταC>τόυ₯™/ €Ύ|?u›=>(e―ε†ΙfgΠXLΡBZέΣ¬‡šS€Ψ€₯t¦’t9Ήφ:€ω”NuχžοΓS¬b³™ΝWŠΓQFΤ”Α‰ NΜΕΈφ2‹>ƒBLΓ PJ#Έ3XΈs: ¦Ιxφ8§¨σΌΘ‘4Ψ€sUE…ŒqΫr ΌfσJς„X«Pάό]A4€-Σiw•ΛΦx0š!,ŠTAŽΏγN|ύυ$CόσRΪ|Ž[σoήIοv2ί½²ώΧ3•|ρ'ƒΕ (aŠB‘ΚNΪf8ΊνΑΐ4a‡ͺ Β§Oγόf‹Λ€²‡±@θ:‘©ΒΙEvK“ι’Π- ΅ y$>‹FΨ™ Η=™ož-•|F0 Šuθ"˜ϋ0΅OR$;Q39‹­‘ έ“ΑE§$–Q¬/[©@I ΡUY£΄ΫεjΙΙKŸ|pš<όˆψvϋΈΣ³!σBΉ*€›­¦£F4ŒΆJΞ·ŒΜ§Χι΄(-8¨:>kμ§ΩΨχŒΥd½ωΓς™y>¨1Θ6d°Tœ@ΡηΜzpŸωhΟQD&™j|Ι@ η<_$&κιpƒΊς(ΛωΡ•­ c­’λΩ5Œω“­v\–’ͺΪteb|κ,{Ž5bWχYΣG(p£ύdΑΜ#ΉθMJcΕxC`QXŽ_r‚ …O-n€΅ Ϊ>Fλ2Ρρ³m`ηΕ.„ X€Œ‰cμ•œϋEξ˜ΓH‚έcΟU‡Σ2 c7Š1Q¬‚!υ V-Κo‘ΝίgπYΞw΄ρf-lΙΜΓC`ž ŽϊζoΩd=’–-ΟlwΜr(ΓαΥμ*0.5{^-½`Ίχ‹”Žx\D˜¬qΩΠȏ@Υ)ά@ηiq­kΉ† ρ!NyN‹ugΜzΧΈ‡ •&$κu±:PšP χΈ!^ξΝη|»W4Maί0κy―L馨‘Hτ[bΑi0©—$Bxv€{…zήμγuΌ!L_tςΉΆ`ΔΔ:Χ{ƒ=ε›GΎc;eέMJuΞ*€πΟfRœ{sΤ !’9γz“4(Mψ½Œ+}–ΰΫ€eΧΞJ7χI°ώcΨRŒ ξ}i£‚°^ `H&±LCΔΏ7AΆT#πc],ΙΘƒ†œUn Ή"TJΔGƒ·BŽΠPβš™λAdιB61¦υ`(χφΟκ¨Gr3!R–Π³Ά{†ϋψž‰±·μΧmδΉF± š:'nΚ Ξ½^Cΐί2αzΝ ²Sh ’₯1םk¬—ΥaΦ·v“_ώφ΅δεW ‡Xίcψ§τγ  4)RhΞ‘=νώ΅άœυρs!ŸΦ0μ+œcΓΤΰ²ΡτίMBn\ί ά½ϋ§Ι#:*Φyp“2—@ΠΠ,1ΑϋΜJ/H΄χοζ hpZΤξ†8<’.Έy+°πλU5>k’’σYζί< ‹ ςoPn±ΗΊN΄› ΡΜΙχΎϋbςƒή{{?ω CϋX} ζ?0t»!ΐΟά?˜?‘KG3nμΨpί Μa5Eΰ, /Nϋ»Ώz)yούδ~pŒirΖpU-κ( (I•’AΜ‡2Ξ€ π±$žΤ…o!σ-k:ΕΦEe–β&‡'%#Μh䁀ύιΦ5€AES†I δ<ΐq_J¬°Τk’ŠBMΠ{υž#ϊ…xQηι{Xξ{‹JΥύk iϊ@ hΓ ua–ŒΥ3sΫ―ΪΞ*I<(mΐι GtŒs bζTΡ1±|ŸΒ­›‡‘Q:¦ ¦Β|XΐΔN™a΄Ž!†δTDΒ|ΖΠ„¨πΐΌ΅ΓΛf‡$ΡmνΫWBοΣEΚz΅m:ΈuhΑ^GΥ›¬ΤΖU©kϋάΪf”’:GΞvΔs4α™d`Ζβ:±ƒ’ f°ιž±lzCφ[c…ΓίΟd•XWΓ@”¦*w~_πgtσ ψΨ"ܟ=ŞPyΖσ’4νΎh ΅%ϋ eINeΥlYνgΫά0B ŸΠ‡Xΰ™Έ${@’Wƒ½eE]ά3†€Ϊn‹V0\Α°6(sψΒ½ϋΚΕΝδ«ΧjΑΪ͈nμ“ΚCΘS-»M‰x‚)@aΔz ’X °5μ= %ϋX _eŒ8=‰'_­ω_v”τœL˜NP0žQΧ™ΉΛ16kpλ&7FzΜ¬E™ΫZΚΫλΖu}ό¬U]X2‘QΜ³aA&YY1ΔgUE[Ζ ”FT·λm²&b Ό.‰΄„tπnώΎΐ’…eΗ(rk‰{?έΕ‹…Eυΰ«X‚.ΐq4/&*ΣtJ4™HΣLφ­Θάγ 4X·Τ*μς€ΝΊ[Ϋ6<Œ+­Η‚Ή(¬PV‹ηXζaΌ-ϊaΊ€­²Y‚ˆ#-ES@b§ΞΊμ24% # HΤΙ~q}Η0σV61¦ά}!0Συo™·{¦Μ47a έwΈI[PK؈ΕVΝVŸ1ΜaΏΩ `Ί‹!εσ>λ+k(Ϋψd˜g― nάΛ6οs<}ΨΚΜυ9ŒΫ*?ήτ ¬_\f\[Œe£b±²μIχΊΥHW}ζIω+€œ!C4š@ΛθΐYB>©+N]δB%ζU―dԟζΉd'•92ΥΚλ2/*'1ξ&geŠΗό„mΪ–· g•ΪρoΔΩ²…·gί€[Χ£Γsw9“]nadά{ˆœπΌXΙ&ΟX52ΞN‰³eeωC$χhΚΥ2ά‚{―»‰η°D&›8δœ†ΉžΪ=σšm+Šœί²)¬+ο˜FΘA½F―ΎΌόΉ?w3ΉIΗ½=† ςuΖΑΰ"χŒκJBi"ϊωΑ«τΙΗgΙΣG{œp2έqηXρ!³θπ>DŸ•½ς`ωŠξ…l}c$)r#τ%fΦΏaJ“Ή?sβHΞαLr^W’–dίX=¦_QՁ±Zθ 7₯BXΑσeœ©ΒQeμ!6―H‘&; ¦ƒ- ;[ψΠqmoΏυΉΘπˆίcx—ΙΏ<©T.ŒšΝ‘)™>΅ƒu%ΐ ¬πZηΦΝ²aβ”εΓ¦VYΩJ! j@^ΑHΟ‰]ΟΑZ.N΅Τ₯]Ά΅P+(U«`•ωlL5m2Q”δb=ΌŸ8μpC:ŸΗG€SζϋS&dηLΝHΞΉ°ό™χκΔvΣ„)”!Κ ΟήΘξΛ€bΑR}―Ε"ήF©φ­•δι'g\e†ΰΈN ς:γe­z$Κζ°ή<«‚XFΙφΚΖ,ΊΡl‘0uέښW iΦP²ŸΨFρ hμn―Q:‘πX©Θv΅1ΡΫ€1¨ΐl!o΅Ω?»Κ›ˆdU»Έiάs9cώœond"`𳂲ڄiΆutƒ±Ϊ)Q—nƒMΗΈKΟ“δ8eŸNψ{‰g’%2ΖΨ.f–(›:f²ΎhΒ0 `ά3I΅ŒαΊ“l0ώƒ'u¬I~Οg-'ΕP>σΛ“j7·<†@cj) ΨόN#KΓdΒΈeNs–œcΟt(9ΞlόŽAσkμ¨α²ΞVC±s¦I »4¨ιzΑB aΤeΣjVfS—z€m~49lhΡψ‰φΏ©0ΎΟASRΜ!)ΐΚΘϊQ"ιœ %φ0g› ]j2Ÿ"£šWλη²tΔwcΗΩΖΐoΎmΑNd ©gΛu`ώ )ςΉώή˜k€i踟Χ’9-…ΕΐyΒ>\©­&Χ+’i·…ψ&ΐΈΞ³…α̞3ΤJΩrH²‰δ;œΣggΘοŸ²π`ΌV«‘#žΩ LΩDvjήζ)QίΓgΐ’e7{kΘϋτςι†Ι2Ξ C¨ξΡΒ¨P.ρHμaΒp~ΗΑ9dΏZ™hέ2‡Œ‘^γφ½_»‘όκ―Ώ@‚'amάο*!9Ο6{}Ωi©L‰Ÿ HeUŠϋF5ιΩ›±Ζ–,\ΑΛa‰A==υ€}έ‘t9+GΘ€ ož°ΦΚκ6Χsސ¨!Η·‘‰;ΜmΌ{ώ|Ω»›ΌχΡ ]:ΙcX; šo§‘‘·Ψω$bχ2Q όKS²\ 5ΡΝš ιxϊαn²]#αt@liAž.ΌζζL!&ΧΆό>…jΆϊΠ1nώl£ŽΏcΗr†ϊΙ žυ—ρομͺηρ·ba/wσσΧ—dΎ0ϊυΧߜ߹s›Δ/|ψB¦σΓΤιΩS΄ιY€N­Ψ΄ ?’eFφiςΰ“<α0Œ­Gώš ‡ƒυi…3摦ρ΅,Κ.C'Ϊ7‡`·Ζ4'“ΓŠθ΅’Š™πμΟόΈ+ΩtΠxΠQ 'γ€€‚+/d½OΥA*·% χZΎO—³‚ή/H©ΨΙ΄OgΏ•Ηήθ­[o,’·β–ŸΫύΑr’’φiηίΔς˜€B€Ÿ±Ϋ6ΨΨEYو"EfwΤYΗ‰@βΉ7`€ͺΔŸ!t‘}Λ1δS@Ψ3ϋX9’U$o.Υ ϊC\«όΑδΚ fB7#8βwR” γέΎnδ_ΊRMΆH|γ…ΠζώΡˆ½bρcΨ &γxM¬ΚΊΗ˜#vTRΰ½2'*P›?i²ͺ{Φ8>Ξε –Ίˆ|| ΫΈXc°ο~B}t>—c.­¬²` Sμeςύ“1@jΔ3O`Ρ'\ːΑ•ΎdF―} πϊn•˜ΨTςAΔhR}…η³Φ—±¬Μb0Λƒ¬΅J€eκ4FΊd©ωCπ δdΨk|ΞΨ1 .ήxΏ%άτ„xm`c}`“CΝ^S΄^’˜?Πζ…9d,˜#€eΞ¦μ λΛΌ—Ρ`ΒŒ“A€‰™τ> &CΎΝοΡ1χŒ„:ΛMπpŒH;f>ANt‘9,Ω>Ο’¬™L¬ w£S6t0$D§Ο½1t¦4’Xα h\iπ”Ÿ3\μΐΙΥs΅δUΌ+cβ₯—Ÿν% Ό)–b3 Θκ6ΊτecmΫ`[Ε<¦Žg΄;#1Κ δζ·; “¬NΨHΥd—1­°6ω½.σ#ΐc‰1 δέ‡ζwX¦ΝdXγ‘žSoάc§€ΎΊΉ–|ηΕνδκF>ΩoŒ’»Ώ4Β”lNc¬,ΕΠσ\„Fy(£²€ΦVΟrq;›\€½la 6ӌΥΨtΓU”QvΖ2σΈa8Κ¬€£1δKγ!LuΧΦx·Α’l+’.˜α  λΫΫV^ΠlΓ% MΗβΛ`Α.Ώ]ΥmΈgΟXβΗΌ[ŠxνU˜Q«ˆΈ’ !sγY&©œF0ζ(Π“ύmxΠώA3ΦΟ²’σ6%ωO}cm{™βŒ³{:šΤh8`p₯ΰδ™Ή~‹ϋ^Γ[𬍓ΗΟ’wzlRyγγ{υ0ͺ£A-³ΏMyQeΉ] j&σΊ—M\֘1ŸD²CγΘΝ› z ›„&mqoŸ}ϊ(La­7(]θ: ™Ηe -΅ΩcOΦηt,€IΡ‚*+ΉΓz’Εΰ:Β€κQθ€FOγζSΞ8Պά;tΆ§ς#Mξ€zΊΈBψU@Μ‹ιΎ¦…§Ό#ψ“5£«+ϋΧ_»JύδŸόΡ#£ΟΈγfn%Χ Ε2ΕρτΙΥKFΙύπ&C¬p ήrίDΚ뾍Μ~ΆϊΞν$7mΕ‚Ωζ‰žίŸφw|^©Ϋ·ΟΈε•σ/η—―$?{§–ϊ½ί§Ρn&]c*»(!%ΣΒ E0Κouύs$βχ°oΔϊš‘e¬’ (¦™Νaχ±ύωηOΎΈ ‡Vp,ψ] X™kΔ(̎­Δ|s|μcˆςS₯d’™JΦmYžeΦ< Ίˆ}Eh‡‡%P%φXΎ1Ό©N«Σκ΅&ΛCyہ}~―Ϋ·ιΫ©Τό―ύχ'7Ÿ4mNΗ+Zζk| φλ{ίΈξπ#˜[xώ¨%μγe0TΖΊΕΛ0|†hŒ‰sK³Ύt–ažm² °ŽrUΈάΔΈ ž‹EβQΖβUΊ C'"ƒ€f†aμa£ΰϊE#F{Έ— 0†’ ktŒ"7YΗ²ug\‚bFέpΜ3f1«'EJ(ε›;ΤwF›]EΈ«$άΈ6‘―βΰύ²0EΖ‘λq„ς0ξΫP’1J1Κ>ρ½JS¨Ο4žR*Α00 3Χ’Ή+ࢎύΒuWΔ’] -?k]RJcDψF‰ηΪ‘™Euσ?Θι>UψΫ¬E!―q`Y(Λ|=Ϋέ€s .M“+uw bh̊kΐϊ¬α5£Μ 1’©λΰ†ώ{T;‘U@Š1£]jœ©;ΚάG7?Ÿ‘/Γ’3—ιΈ)`ι!LΫkΟj6·IεϊŸωŞρήθιaœΒ`―œcŽι cΥcΑτ0œXεί»9N6«δπ_^ό­HσlsΚÍkXˆrEΦR7ΔI:G#*ό†°η›υ—½2¦=ΗΏs 't0ΫFy„ɁlΙ"{Jι*σI):@Ÿ~¬S’pU[QcΘ`'άδ 4s@θΗ!άό*½ζ3 θγž‚η?Ε<ΨtbAh†u„Η°Ω φ.k2υΝY‡6kθγΊ7Ά7«Ι·―S&s/ ΅¦―_θ&οΆ{Θ%ΌŒ0d™X /YVY8½Ζ³j°Ι”Z6NV?Κ±‘U•Aζι-[α>s+νš₯ΡxFK6¦Ωη–Bhq.,ε¨{ΏΒYz²Ν™€Ωε_—G#χžœέεφΚ€ΤI>ΉΟΐNPS™kφ‘λcL/φ@μ§1ruθ*²Έœ"OΒΛΕ—Ωχhk ±―5fdœΉMf_ η±–»†Ίί κυ" h5²}²Αω\‡εφl»/ˆ€Α@ζόr›iX!i0 ‘\ί€ηd•=Α΅¬~“φžΌΟ5Ά\œ{§hžrV%”cW­„ˆλΪά‡C6Q›ω² ͺΙΤUδ†ϊCΐ_γ{οΥ&DΝώΩ ­qς5ς;¨¦Γ½•Eξ9Οt–΅2ι@lύ5δ6‘'†ž9ί9ώtf“#δΰωέ’œέΫOV˜kηλ„N&)"$ςze ZY€π|0χ£Œτ²ΊηΤΈ*ΦN};˜OΙMrΞR4.›aπ“+θ’SB1lTeΣK7J"y‘Ažγσ|‹N$8k’£@cΌΖwsL0^wΌίd[Cϊž Ιπ»ο%/½ΈuΐŸ“οϋΟ__š5ώΒΏnƒžωZάΊuιΚΦFώς7i7Ή¨žšΠδΚͺ0Ό Αp›#‚ψ™#€RΐΥCY929Pf%?c¨e–y‡ρ₯ ,NI|.β’ωŽσΉ|ρ―ΏσΪ@=!ώ%ΐ7ΧΚ¬ς7*,κ 5(m†‘2dy ee˜eKω_\Χ€Kλψ3:4^«€˜›t?’:Εβα“^ŠLσ£wVϊΤΞσ₯¨ψό^w’;Š”ωιΙαΏAΔ_yv ω:Λv±Δw ΅€ωΈx΅FV9ν|O •@ρθΊ΅±€™ό*$Γl—mCTΐ2$²\+•‰‚Λy_ΐ&dwkΤk^Η₯^€λž—ιSpšΨ1A’ΙΩψ!«6ε-γ±ωO`$¦0bžΝϊo‰χƒSrΏθώ[-αϊ¦Ζ &Ϊ άυœYς§δ¬@›K?ΎKΙ,˜7•j( >kΫξhΈ"Ϋf‚ΚΨΏS-k‰uΉΎ,²ξL†EΣΛ-ΊOaͺΈ.»/η䍩Eηή3`NλΟ&±v‚–u˜bτ€ΏυA:§Έχ’ρ L2χ‘„ΛŠš€)P·4±ΒvY΄‘ΚΖΕΑ[y?ΚpΫ…™oα-h–Ο`± A1IQθbqXr ζΨΕο±n6Ze,Κ‚˜7I„<dXAΒ_ΙY#3Υ`ά·Vq.ΟΔgήΕ>sgθŽΐÜ!ΓdσuM;^©"]½Ζ΄FΓώ.ž,F€>O»aΖ€»ζξKγΥΛμ΅1wΞ Έ0Z-֚υ ΐΖ5MbΤ+nUލϋΜΡ4ωΥDΔ‘ϋƒu0L&Ν8 J‘ΠWβ:―ΐ4€t]O”ΤlNθ₯†B΄:>@^πωYt 3‘˜} 7τl Hσy+³δΌ7ΰpV…±…ι­qVNKΕδ(G½]Ρ%Ζτ˜Τΐg•ηΆyΙφ€xέ5£Ϊg²°sΚCžE€­f\ηηkρ»@π ϋΙΨڞσ pε ]`wΑf²E+l†MΖq–{pf bAͺ ΖΟ9Σ”ωΤΨ+ΨΥ“5³FΉTšΌgΐW΄“η4XW[¦ΨζO°2ξ‘pύ”φΣMšΕ¬±^« μm_vΓn M2ΦΩfΆˆ6ω1ύŒ Xyφ§sDς9 ˆΈ]@iœwδyΔq3ϋ\/JΕ1P,Β4 ΐ›TΉz‰2œœ₯§$ ZĘoŠυj€)Ζ5@ ΥπάeτLq>έcz9>­aέΕPΣSd©LλUK.œ?Ώ’ΌLΩK8λγΫ₯tΑ>αˆ^™+€ZžFγx ZcNΞ_†‘=ΏŠΧ­ h†εεχGO›„c°.ŒΝό‹mΖnΒcA9‡œŸΠeζ#·ƒ±TXσ>γ“4Πpφ½‡T•φ±IxH)}%™’qΜ>Ή€<©ͺ+Ω &ν[f„ήlΠ„€έΕ¨ w‹°―Mφζ„… υΡ‰^I<…QːΗ-τΘ.Uš0ΐχζ F©¨Θ$Β2‡ƒΣΠ9J―χpΡ4Μ1έυ'ΙοΡα’§IgV[΅ &Μ•sd"΅rˆ/ ‹•ύ!κrΞ’km—ΕγιY{ͺŸ=Nξ~ΜρΊsηϋώσόυ%™/€ώt-ͺ+₯ΚO>8Νξύν.ήyw?Υ5Œ¨AΰbAΚΆEΣ@±Ι[ώέ—@wΚAΚΒDς ΏηΜsX„Λ—MΦ14ΛN€Ξυ’-=Ε‰"ΊCXδ­ -Γ#‰· BZNβ1ŸVπ¦ΘDΦ’’F†Df}°Σ`έ‚\­ήp§‹λε’·ώ Γ!ΝΧςžηηύϝۯ3ŽEϊχŽώΰ_kπό@ «;ͺPΜ{S„ͺ€Vv΄‡Υ0‘Α2‹}ΐΓΪ₯―2ΰ=ΊžΣΜ½Ι-*K ✠X/”#@‘‚Π―`XΨQΜΈF;Wι&4̠ĚMΡCΏ±y²$**έΧΊΫΎ²ϊιΜσLΝ7žε½Κ„kTL^D°¦0š°ΒYφMgΤOφŸθE‰?n-#ΜS ΧεF•8Yά™^W7ϊB!l@%` 0)ϋ€λΥ²`ΖR» †qπ£ ¨«ά$K6ER»X₯ΪΙ_(,© j‡;γšmΈŒ'#4E¦\ΔωΩ;$ή”Ή²,œΐΑ½ΝφαμAΚH L3&Δhό§lΛc_xkJW‰UΆΪ‰{Q6Vv]ΆUΠYdž­j°ŽsΝΞ`3elT¨ μ‹6‘­ C‘qzήraœQΦ‘5­ °!Ί~εΥώ8–4Fςν ΐRYVŽ9ΐ’ —΄±–‚~ΊΜc½1Π§Κ]@ίg_Ω7 ΰΑη‚]-­6ΑεΒ€π½²R†δΩ{—ό―σμ ’Z ³YQŸ}΄±CεžScs ωg­ν&αcSφsΉAMdušpΜΓΠΈ1Ιϊχγrβ<™sλΙ),ώ“5ΊL²‡4bKxIπ―EωΌ)2hFΧΙΑƒcΌ€γδΕK΅€EΖt΄P.K†9%fe¬sΤbά₯ϊΚ!>iŒa]€k«o°’Μ!„42γ "χπ°η’!O)]ΨdΝhi~p@…&Βυϊ½ΠΕ%ΚέŸmψŽςCΓƒ‹–°εBaˆˆ›Ξ΅eΟιΝ»'Yχξ΄n,Φψ©oΩή~“…Ών·Ο__‚@ύβΏnί^ŽqZΙ,~ψGˆ@Α"&c=EΝΘ ι 0‘Ϋ`FRD‘B!d3tΈγ {p¬œαA˜ ¬ͺa|––¦‘ΛXͺOηπZ‚j€›RƒPΟΟΠ κΛ„ΐ”"›d Ι:‹'kΰk]7¨1u2R#eRΤ„…²&@α0F…ΐΞ“ύ†@…\|’Ϋwο½χΚr@ώπ9ΌήXό½Μ[”Ύψpλν_Y­g_δ6憨€ˆHIq¦Pπ3ΐ>³`ι,_¦;lˆςhΧ;I«Ώ'8ΰο &>„’`P)s+γκϊ —5’Cf1Ÿ\VpŒ3¬BΠς©a’QΈ ²ULΊtmΊβ\ΛΆ:ΏΓ8„Oπω™š”υ\Μ £DVΰ<'6ΟψYg/ƒt―ΌG °&οΡ‹aνZYKn@U@¬Ϋ[γCjœ‘;₯υΈΧ”q:οyB&cvjΤΠ‰0Z%Ζ¨«aa½[k›Θj#…Iwlψ=Φ9n‘<©΅]p‚^–1™±'Š[‹'ͺ@0œ6ΰΨZΌ[4Κΐ0Ox4’}0c΄NY7³#z ‘WΧcRΖ{JΘY–ϋΨηOJφz‹X1IS„O'ζΞp›„oœηύΌ·Β<\b}mΆSoΥ9g œU™ZΖ‘§{‘Dv=<`o1ψ&€œ™ !'!ΚΏΑτZσΪsΈΖ/³g¬Γ‡ θnIυ‘]ΐχεσ€¦Œ'σχ ϋΙrVz!r‚5_I.’˜j³’=<,ΗO$Gμ ƒξƒ(=ΘZWλΗ|ΞyŽMφδ gL6[c0Ηω+ΐμΫάΚͺξ+kIcϋcΒ…š€DΛΓ!θξsMÚ2\OΩ,΄‡K6X―V$v3‡ό EΝeδΌΙε=Άœ@IDATt’!ζΈΑμ(ͺ€q―š?ΰ©2΄Β½nΉΉΣ{€kς½U(μjΘ“M‘ΜÐ)Ξ9yή€+X:Ο°}Ά‘-Πζρ~^€}N=Κ―5>cΛy=™iφӈžΣξ2DfÜA©δxBtJ•8κ͘Ž!< t ¨>Η—?―η¨ΟΏΩ–F”iώκυδ+Tί8Ήσ(9:lЍrZa<όΏ[ή-ςyΨ')d΅ρEUΚ|£ΊK9 !bΨƒ |"'‚υΐˆ?AWΟ0¨F4Ό9γόd_ Χ8oυV;©BF•y_›6ΪuΌ |Oθά >»Ε>πΫEOrkAιΩ½Η{ΘζΝhd6α ₯Λτ+††¬Ε¨V"6HeͺΜ \ΝγΜsςγυoΖ:Ι§„L"O1ͺ‘ΛΈ|δE‚Ή‡˜σexWxR™7μΩ0(+Ί¨fΛι―|uwrιΖΥ'όέƒδϋ‹·>η|%Fχόυsš₯vύ9έμ³ήfB hkœΒ1p@hEΜA²UΦλ„ζ΄(,›ό‡½Θ-Ξhn…‡K™«„ζυ3ότΌόžΏΕ ‘πιϋs‘J:βΙhΑŠ―ϋΎΓyΈΡ5―Œ”%•YQψΚf‹hrRW«ΜμΕσΥδΪՍθTg†υGχ"Ψ€’>LD‘Lγƒt*τΙΙŸζ٘~Ύœ|yΔΧ_\―n’#ΈOήΚ8-›jυ6Jχ™ο&ωX‚N—―n/+l# iΆΠ"†1Γί}Ώs°RΰΖΜΠ¬?ΐ›uŒ .ΚD7x)„’ρk†„.ƒmό©/¦3 ·J’o~g\™έ¬x“e‘Ζ°΄2bΧΟ£τWXVΆ-5’e^\₯ξͺΜ‹Ζ€Ε>&¬ο+iCc©mT²Ž™Au§gΏcoΰΊ<άc #k([Θ[΅Β–PΘ(‘}c˜ «f ι`»3€WΑ‰‹"UΑ›€¨·‹ž• tλδήΘ ΎΓ(αSΥ5άιŊδb(ήσqŠ‚Wψ ¬P@ϋ9λλΖ,ς}ΤΚεσΖΌJΚX’K)#.8΅ΊE›ŸsΔω &Qšt£Mˆ‘ωY²¬ŸΡo[θŽμΟωŸύύΓ[±EUC^†„xΪ-•Ζ(°{½yNΖΔgΨ+2μ†7]?ΏˆH’1Ζ¬°ΐΤΔ3ΉηΚξ%­Ύ›ΊΆ‚[>«!!TœY §<@°ŠΑ2σ<ϊŒϊR˜“ΟYg½uqΟU€Œ!ΟΪ1Œ0X2„μbp„αψh³Ž-B|mΒ$(Γr^†ΐφyΦ?{•ΈΟ”MͺœZΰςδΩOŒλ!Jώ1‰Cφ±±>³@xŠΑU^­F)ΊlΗζ—,}»3DvYή ΐ`2›M‡ŠULIμν e ‘―|ήΉ΅ͺ₯ις &CθΟ6 0Θ–H“A”ɏ8φ΅ε#0Ι :Ο›ŒεM6*Ωδβͺ;<ί}X%Μ« c0?ξk°H¨Ζ€0œΔZπ,a¨π,.:ΫeιybΎ+μ› bl/__vύ¬3g¬m]`H–^N~ΔΔ‹ώ#JOΑ₯¬ΡlrpœKζQQα6ް/€£rΌΐ™ί")v‡zΤ6nͺσLΖW›0ΌΓο«Μ«ΜevΓy ο!†°!ekœΰ]Γ „ά‚v‰Κ@&.°ΟS)CcΞΏ{ώ<#η S2μ£)ž4Ÿνχ 8]eNτnΐ« OXCΖΔΥψŒ²ώ@ιd?mgΙW9Ώγ .d”g–-C€teΛD  ηbω!α₯0GΘ₯8€6QAKrM>°š‘τG+lΒξͺ`mO“d‚tL\ΟV¬P:ΘΦ2`xΒ«―^LΦΒχο‡ ύv²«bχP#2ωΒΣΒηόwn'ΎρΏΥΟ)[*‘gΪT(ͺNaμΊ”>“ε3;~€{Φ0Ε—Ωσ ~v2Μ$¦}Šΐ5θ  ΧΘΑ¬₯Q lΑΘ:™δ»°ηψw ­@ˆ,ΐ-Ά@6BX]„‚¨ΛΉΎN†7Βή }K»A[0—Œ6(Κ‘αΪd'  ^Ϋο―ΤQ„ƒ c°ύpΚaN½ή6qΘ ΐ²΄ Χ&zϊv‰ά†MS‘7Pš‘mΩ6PθΞP\*ΛΦu)…ΙGl(ŸΩε~Ρί{Ζ΅-{Œ/‰=Tx^7£ΜΉΝ2z’ξˆyβ£–¬[ΠΦvŽRrK―ζȚ:w5T‰kΙΦΪ8cŸ*ΆžςLώeϋς"Όω²œh[“Y5RŒλΤ8™²Y½§ Νpœ-“YΓ―^ίM_Ϊΐ₯<RB’K9†_θ•Ψλ ΒgΎη"Φ ΐυW-!ΕυοΖLΪΠΑωΒLΘΤP‘β­II΄κq²‡‘¦cn£κ ίΐ“ g>Z.Γ“y~XaζΠ―sΐŸβ3²Ε†wθ–Ορε=δΩϘ;γ2­ ,˜K‘Δ§‘wΒ<»ŽΟˆƒΕXβBY9ήΖ›‘/7‰‰ύ’…ϋ† ΔΏ &d,―κώ1{¨ƒBξΛr²³ΗVΟΰ/cθΌ.k”Βxې-ΏΈd΅ωμ‚Έ4Žβήφ>΄Α<ΞκT’ GωdE„"‘iSΒ>’N.€Ζώ,φŒ1ΉΜΣΉd—΅nπˆ½Ϋ@&Ϊέ²\$Ό‚³Βiα]HΆ0ZNΨCΐ²M’6Cv7B"ψ~― lΎ ¬’сh:tΌί"„£…k.ƒ”.lš€˜!†wΞ³ΫτΛ(Yη³v³βDŽ9vεluνώzγ%ΐ˜e='ΡiΚθUΨ^Mχ§¬όΘs„1ηZšΐ[γ=-ΏgLœ”ˆΧw|ξ)C«ΊΔΩZAΖp' YΛLκυ1όΤ3ΕήΠ+uΞ‡@ΫΥVΘ‘₯Ά£ ‹ηmiάΩ&άΞetA–=² ξ½ Γsγ₯‘3‚S“‘W‘s%φfž1e0θh†‹A?κ/5ξρβυΝ€wΉšΌσξAς ,©F9»­‡ΓΥSZ~ζ>ꕃYe0Xζύ7₯C€uι%wlήΥ€„ί”Ÿ%6F„Ό–eνΨί@τajm€ς;ψ„ΚΟjάXΥ± ξAB#k4h.= ίό:MC.ΠτŠ=a,±Ζλr/­¦“›;Ι2 Ω7g^ΤVΉ€όpϜ·’£‡'qΦ ΕΣη'ϊΆ•xŠkH]ζn¬R›#;s^BAsžτΞΪαsnh…!*ΩΕ:«Ν„ˆ™’Th―€9νΝMΨ‘›ε €[ύ¨ΙߐmΜU€ΆαΦkV,©ΛηΤΫa„M9£H ζ—3οy£Ζ;»‚σΗΒςΝές|Ϋσƒ»υ'Ώύo­Ηϊ€―5㟿Ύ,3{ιώao3BΎ‚βАvPΕRG‰-™H„JŽšΆ$„%ω ΆΌˆκ VΞΰπYžΖΈ΄X?έί’―ψVΝ7ώϊ‡%ψ„Οkπ1ω­‹0=:₯,‡-*—2)$,`ρ„Ί―΄θ —Έšέ.s& YσΨξYoΏύ4yεΦΕ€ΖΟcήy‘8τ$ϊ#(Ι^ά0ωώςŸΟγoC›έNΝAϊΎ6Μn₯R:JS¦d₯{Φlxkεv鞑"Q)ΙDΙVθφRΩ ³0@“ @@|λΕ­ˆaόΩϋGx›ΌΗ% ۟ƒν9·»N=ήΥδ`I( Ω rομΐX‰ϊΜ(e\εCΨ’> X4αύκΪŒmŽ€•μ˜ωΕ€kΧιΫ0ΏD*Ϊ*ŠμρΙ&ό=Ί[Ožή= #Ν&)&ΤΘRΏ@“‘Κ!Y/υ”Ρs•*χΑTΛ`ZŸz `n ΄ΐRtgΥγ*­h1bΈυθ²ιQ©ƒρΞΰ}d:5&κQ šk¬ΐ\]‚ΉΥmm£ hLΐžR±‹ΗχM\· Χ‚ΟΪmχάy¬Q5¨4•fΙ’eI]6n<ИΥΒahά4š^!v·J ‘ΝJ$θ@hS X ‘mc쒍$Ϋ²,ΙͺP%Υ|λΞσ™Η<ΟJZ"‘ΡΉ*UY΅₯[w8ημύοΓϋ}ίϋ½Ÿ xŠρ%ίZN½@Υη\gθZψ(Ιt|Icε½:ΐ]΅εΔT“0ΑJfΦk€X\Eχο’ΪΨ΄ΝΆ«€#­¦ΞMΚ έ€w™γ> Vt=φ?;ΥYo“œŸ£,œΉz6Ατ  ž© ¦Cρ‘ν«3φΛLxΛzg:KKPΉxζͺD#φ¦ΑκIcΊsΖλQ†ρ“€ΣAε"cdŽvŠG2x†₯+Ρ‹4<‹€V“Wϋv\M‘AEΏ%Σ§¬Ci·JτOΠhm?cΈoVCΖΚƒr“ΡώΞÎγJcΨή-ϊF@­ƒ@Z?ߜSjEP˜#Ωlp§ͺ в‡τŸΐΏΖ\Yg-/r_5@ςŠ.έ}ΗΠΦΓsΘeVYkͺ‹θO7vͺ·Sτγ«Ή ­ŠθŒcΉ Πμγ}Κ,^IEΐ!†α Ζ‘FΆ€>ΛZβΌ4ωW$Ασai`qλΈ·Δ1‘dΩIΓ8wL6Μ³ž,Ξ`00vj$JΧ‘œiνφΓ'^†φ²Ξ³™Έ˜GΗf θ5ӟ θ {₯έΠ7¨ώ5έEΫΌ/½°φΣ/œŒ`,sOSΘW+ζVΖάΙΊ΅IΞΞAg‡cƒlξXξ]Υ:cΛ>’ξB«i7Ψ²kξ`tVΔ€IxΝΜfζήažy>sε?aήΚόμΙ­ƒα…γ9ζI…(*εΘ5Έυφ›(ΣΗ½S|Hp±«ƒαA7ΗknΩq-–Χ―Š‡Q3i/ΈxΊ_΄ύH+ΏηQ§ΝhΕw>sθ$λjαEφίω ½—m½|ΌzΰΠηD™Ν&9Ω·!ƒ R;LυWj™A4 )νΒΈ0wšύ›΅―3)^:Ρj:kΝϋš Ή;E^z‡ίΩ…ΨΝεFΗ"+L`vHώŽ7‹Ώ‘ΰ‡·Ωϊ’lzΨJ=ŒJ¬½$#¦7Z0dε(“Α†IΊ0τ‡φάΜ› @ Oε―υ f·Euxn =oK&'―λŠ?_θγ{ε!:cjpκέ‹ Ξβϊ|sˆ8˜ΐ3†ZιΛ<4Ϊ'nœ¬έ,n$™±ͺ Ζ‚τƒ|ΜΊž#TgrŸE(,xβ}³δFžμ€eΫcamWΐ­€ž] khnκΙ6βΰV¨χΗs  L\ΡΣ†Ώ•vNΘ_g3š#Œ¬τ’ή_ΉŠΚΫι ΛpNl‹€ ±ΈΛ[χΌCg‹hθΉΩƒ'h+|NΑXΟgώ²ο)τj£$GGx jς‘φ·ά­J/ΚFυ™ρŽDT†MΟ‡η—°ήrA†²gŽ•Άκ"π ωΡ+΄pΣ“κ#HŽbLz’ŸτΛΑNmώ8‡ Πlϊ ςP+lΔV’‹Ο…Άθun$KQρΐΕίs˜x%ΗYZΫ“e> €ίLΰ΅ΆBΩ<­]σΎιC§}¬&r°gtα8‰=ͺ^iΛ"τœΐŠak7l=ΟϊΖυ|zOk0N£ΜΟΖ™¦š‡ƒΟ\`"¨ρ³ΌΜK ͺχ&‡Tυ“Ο¬’Έ‘§Ωσςά Ρhσ!τΤΙ“φZ<¦ψ7Ÿ―RuŽ+|·P’@Θθ„7[L¬A5«c;ՎζυR :λOΥρ€ΐzαβ‡Ž¨ΐFΧ#@5wηϋΠd6ΎT Œ020Šx~ή χq%‘“}C*VΠΘμδC/α ςJ³++ΜKŒΒ%Ζ1g.p}•(ζh―‘«,*ΑhTΝLβλ‘ΙͺŽ1ΫG(Škm1§Α{KβΝ³τφ’£.ΨΣ³«±ͺ›žgiKζR i€pI¨1  c•%—SΔί5.Hi½δŒ©q<ši>ΏL‘ЊΦPMsy„>’―bŒQ+’Υ £l(ύ._ΧΓθ„|[ μύ^ƁzΕ%ξ™©A»1W'λx-U}gΝΨJr\‘±§χΦ‹Ζ„–Ρ ρZ ’θΖʍηςdF‘ ™'U ΉVp= F‹4γ΅ˆfΑσ$>Ιό5:9e"Η:TζœuΖ\’u$Ν5εχ·ιŸg4x>κβπΆφA+δDΊ‰Δλ\ogγš7€ΈΆί™u¬‰±μpΙ‘”aό˜άΈλš‰°sοhxα«3aΔu„σοšΔIp%ϊώ¨t¬°–Z Ρή§OPTŠDAŸƒWœ‘id£Ž-$[šΎ8ηW”XԞwΟ>ΎVρ2kΔ€kΖ8wΘ΄€ŽΡPEƒ±Γdb₯dΈj»ϋu†½S4‚Ψ&N΄J€ΆT&"1‹QΆN₯Ω& „pu,ŠΟ5§Ζ©jΉŒcwMς2cΐsԘCΩƒF4Uψόk*ΨVοΕ€K«β Τ]mό―ΏdbΔ{ogVΓΰFνiΗΤΒΒ3τμεγΤ“ύq0άςߞ½#,κ,*lΒ§O²Ν”‰Οw7&ΝΆ­Sa^=%6φji– ƒΕ‹7 Δ`©‚°œγΞδ΄ππ_^αu© ±\·Uδϊ^ Χήx6pώδ!³˜•ˆX€ρ²¬bε2G††’τQƒy˜…yžK½ηπNH  Š—^ι3ΟΟβmbat³­˜$s…ͺim*Œ±:„Χ΅ˆΚ‘π»‹m«ρ‰Gl( Ή΅zΝ&—f¦ύ$žΞ}axVJ ο‘ύi¨«C©Ψ&Χ)²Ϋ-ilψτψ ”RW™Υ6%g !Α ‡4Žύϊj.― μΎt; ΣΖή¨γbΣwαUΟgž_)xΪΠί+»ΰΆJ™Wn)J³ŽΞα ©{|έ [’Χ²‚'W……AΒΙ[ΡXž`γβιG`5…§ΘŠm« eΌΤa(Yb—{βQΉŽIiξςe6SÝΓzžω2ι‡FάXβEyΝM½ ©ηΎ^fΖ/ρ…αΈRΎ.ΛfͺWΤΝΓ¬ϋΒ³nŠV³,Q¬η,ήxiήΗΫ‡ΉΧb˜Η(ΙiHr‚‚6žΌt½G/z²Wυτr½ θΐ‘―G ΔηTΚhDŽ’žneντŒ›HΨbiαιœDŠΚJ\*lΜΓCže=7»΅‘£‰ ˆg%Ίβ“Ο@G0€]§RhΩδ;9Θk15„τš˜Δ#€4Ζ£‡ρ/}!ΘΡc%—4z‡1Ξ€X-θ½C9¦fžΖΗ’‚ŒQl2ΎH²δη‚σœηš„++u‘€Α% iς%$0›π;¨KHΫΡψ‘ο-‡6Ν†/·Zvί’e%(D›Ξ.¬±1KρGΝϋSŒΑ:7Θ^):4  Ι@9ˆά}ξC*LΤζζ-JaΕΒ%l½xΖΈ{#W[ύxύΕMžBs1ßΞ䌌!΄t“άS“gVΓpOγ1‹<3# &ΖeC}x %B˜G‘[P―­‹»κ(ά%Ν)j0Yβήj Μ ΖG‡1šd=M₯1Κxzy>Ξ#6JEΑ€ΰcŒƒ!@F Κ•}"¨ΤQja5;―Ϋ-G£9Νί4,τ> R&˜[ΔΐͺPx˜·‘’ίU.¦J=πάδ„—Xk°Έ LΥRπΌUβ|£Q@Ι‰Ž§ IŒs¬ήο σΙΗB'Q½Ϋ˜hDd―dώDEΞ«‘ζ:οψ6r Βd̀―{–vYMq#X .ύAO¨‘/Lΐσ6MD„σkθ&€fΠκ˜T ¬bp¨Υ,ψtΛ0RšI{Δάdξ6ΟΙΧT³iγ…]ΗO5§-pΓƒ=GέΫΘ•4>#YEϊ.ΛsθΚgωΌŠ&QλΠΡC¬“F£Y:“²{ΚλIΡΚ’Ήlr½‘6₯=ž&1iƒΕžϊθχΙq¨mŒ™u@p…5]Ή»  Jώιy^f:‹ό]€kqν Ζ°ΡΓέ¬έ‘β±;„γΗΒq"xσg˜o\£ƒΐ|”λαOŸ¦mΗOL£μ`eά7Lό#ΖΜH€=c€p ΰ0ήVW–θcφ W Ύγ&ˆχedΈ‰‚ό<σ¬M";@Όm΅φϋzkb)ΣDGpΨYX\ˆάπ”&ενZ"¬7}Π1δ Y’‚9†Ή‘: QΕ’qλœΦ1α8Υ m΅MΧ‘fg=QBb―Vίr˜GyYΓNxƒ±—Μ±wr” Γ‚ΘDaω†³g2Ϋ“xhτΊ(·εΖ211¦ GΆΫ]E„€ξQ½Κ}¬P°‹‹πΉKέ{0I8―a$ήΏ|ŸσύQ±ƒΟ³Ϋς6O6B½TΫ Έ˜/ΰ‘.’R"g׍;Γν7oΪž{{xΧΥα―:ώψώΔH3EΗ’υWNέή1D½³z£^έh¦pΧx<Πύv‘U{ ™’ο΅3csΛsw&ilŠϊΐz„1z‹τ΄w•Fν~@ˆrn9ϊ*<‡BJπwΫ.hΏK`F:Ο aξQ<ωΘ©…žE™!‡Ϊ‚ά΄ΣTΓ2©©8OΩ[Ή“\ΧΘ‚a|“ υτμa!^e£1Μ©ŠD‹”%6L<½†έ²Όx9W’Ε[΅©eXΗΩ §Ω|u6 ©z‘έΨN<;N\‰ή¬`ΩnXλ€ιcŸe‘‡g €pFO)ύΡψζ9ΉΐŠu9nΜnj*8΄άlh~TΗπqJϋ`¨ς…έΔηLrDΘλδZEϊΤκdzSwK_ά§^2ετδIŸ&Ρ„Uι/–›υBέͺZx]cŒMεθΞ°Ν˜7ΑL« "‚εgΦρΪηnTQ9Γ€ΒQ„agά'‘Χ.5]‘8r‹H‹ηnσϊΖ΅Ρ#^0Lx­Σ^ΓΜ-yv–D›4»Βί7*σΨ9h}ŒρUξYφv(03θ[³τcψ° MΝ=MsIJF sηΒL1΄ˆ¦™ΌIΖ6ΤΖ<œf½φ9ΫΔΈΙ―fP9¦-?_‘mRp5 ~Jw+"uWδωk(CT‹γrΛsƒh‰d½ ‘Ρ/,‚9ƒξitsšΉ#GšΞ»…ωͺΣB½Χίjk% ₯“Ζf"ΉΞ$ ύ¨ωm.œf“K5J2τ›ΖΣnŒƒnΫΊvKxϊή£’„ΞZ0OΕ ³˜¬ŒϋΑ095B)ρA UZEΚ ;£˜γά#ί›ŸhτO’μ!c/“£` ΧS@ ƒ}yεtψβcσ\Ÿu.ΈϋG #4˚DVKœΣE"+ ©Έ_¨€²΄D»1„Πj};§νgΏ["#„kα½Oδ;υT”R‹5ς9ή|πίxωxυΐ% ί|מπψγe€š–P ŸύSV«θ…κP,e™AoιO‚’χθ8•Ϗ wŒ±8Ε|bΜ41†ηz[}£άuι,ͺ› βυmTΊm²ν:μ[ q8ϊ­˜ͺΑV$Ί$_xŒ5L5 =Ε H°IΗ‘R4Β3O Ά]'0ΎΛςŸuζπ7 eσqjFoh?’—uEΦ‰2λ‹λˆ²lΞx£Ii "Φ)£Vmφ 6œqΗߝο€Σ{ξΪvί΄gΜΦ0ΙΨε£Ώγ?όΫΟ„G>s<_±ˆW–1Β 5D;Ινηω²Ι@O a/τ΄<―ϋS λ)ίήuΖΌΠ“>‚ώσ ²ƒ¬]γά‡Q0OΊJιͺF;k΄εΗ™4!ΗeήθΰXd=9Ζ>W¦χ_;ήΑ›Βv<;φŒΎμ4xιξyΗ•α~τξ—~Q©ηΞ†―B#9zl`N’1νžΪRšy`Τ£aα+η΅χδkԍC•›6Ίδ:ÈήςŒΥΐaν2Β”!Š@1”ΥΔ"ί‘ DS•u‰±ΟΈRfV†kπ눊%ͺl˜Ωbτ2νS±ϋYWω<σN6=œ €ΪΉωωGNΗF„ƒΡΛΗ¨œ—ΜaU:½Η«2%―H·cΡRΊ†#£‘ΫΩdηQ˜ή,γ4Φ¬œ±aΧ&^eωΜ]/3S Γ^ΑΔc:Ίˆ1)υOλpی²SR?όΩ]Τ λ»εΐiΞU]‡²5ΛΒ-PњVIοΓI’Λ^xφ,_ž©₯pμΔR,`Α ’²ƒ€ŠνΈI«5lβF±ή+$ΰγŸ|μ€ΡΗΧνXx¦+_wr΅όVι ΌΡ”—M~θmαm׍ΗΕ„[Žž ΊτπݍΘ_=μΦ³ψ]og *‚aΆΟ…ϋζ3xiΡ»¦?T«xρΕ…žΟ°)e0BxΈάlΓ#= ΅bο΄aΙΈ@βΡ<‹$%±9­@ͺœ£Ζσ2YλΝ·ν ωρoκ.|΄C aΫl™‘7Ϋη¦η³pΣ“>ΑεbΫΥ~υο[οΩώμc‡ό8B‚K»¬QόRΩ°Β5SlΦ·l7|χνœΥ.πμ€;ΖKδ~ς9yΚώέΎˆ_Ύ‡7ω>οΕfψέχ―°Ωž%lΫGH˜\ŸΈ¨+«dƒϋρψYϊΙΰζ~οHδ|NŒˆΩ€φγ₯Ϊ{υΎπ"ž%66O’ »ΖÏΏkOάΔ₯]x==Ξ~Σ°°cbŸœο/.ŸMB΄Ι6όςŸ _ΒCΉNϋΉ—adΜ,π‘ΈΠžŒJΌ¦±Ϊ­ πε³rΙ+zδ'+<7•x}-ΐ’ζ΅ψl£1Α]K%01Q₯Η‡†Λ’(oΩ7n$™κͺ­HX²αΎšΓΟν!ρΙ―wž?mόΚ|9όΡΙΥπœ!Z@“T ΘΕIZ->± Ά¦ϊ‘ncN4)$‘η~R–mΏx˜Ρ¨pP©Υ-½ ΘIE­±ŽκΈΗ{¬ΆO$ΞκuNΦV.LίZ“u.OV―9dƒΖXŠΥώψ]]l=ΘVέ:Ah[Έξκ ŒNτŸ7ρJrϋu“ρλΏϊΐυθτ–ΓcΟΜ‡‡Ύ:ΎzŠάΖ£uδμΫώ˜ΈΜίΚh«nC=οh€π|‡«Lΰ΅5IV’†φ`vƒqΒHŒK¦ΘχI΅γ}:6ΌŽΙ‰RχΏη»oξŽξΥ)!vMŠkŸqΆ8]g4bβΌ‡φρ·σδγϊSxX1ΐθGcήρ Ϊ‘ϊΡ ΖηοψΆύᚻvGγποκVeŠeα9[εΡ$X½Ο,1Β€ΎαοΏ9&dvi+€F%…P#Τ5Θ1ηδωuΐΆ›Έi%T_?ϊΤΉπ%"¨GΜ…yθVχ4*Sΐ¨ΛžΠ·B±|Οϋ ο|Χ΅±ŠμίΥφWΎ.ν–›―ˆ_ώΗž|βLψνίn†O}bίu‚ΩgφσωuœΒ$ 9R8ΥZ“1b—\ΫΖ§ΒΝΧm §ŽSͺh†b4$ΞZVœLύH buγ½`< ωΝξ_QκΗbΓ cͺή~€πiTχΩΖz,JύωIΪ•xϊδΙί`―>HΓŠ.o ^2ΗI“°|ΩۘΌlζz‚;TΑCμζ͟£k1ηΑͺŒ ½ΫF`4ΪτSτjjpŠrpΏ5ξ₯Α¨ˆ0Θ7 c―(ύ%˜@ϊ žQήξ*”‘:Q%ύVpξηοψΦ}at„ tl%/αύoέΏŽœX ΏφηGΓ™ω YΤ^ΈgοGO» ύP†u99γλDχJjϊ¦XηXwWMώc^'yΖζPŒςœηPi¨3Η‡Ηπ6ˆ·πFG(#Ύ’֍ΗΐaœμΒpz΅ΗλΫϊ"Ιt<’ѝxƒ‰d8οUϋ§Β΅7o Ο?·»λŠp+ΰΣ½γλ=Œ²I‘1©VU Λpλ0Ί'˜Ξ±jdίsΰ*ϊΐ½μΥ¬¦‘΄}ωΙs¨k°h x>ζž‰γτŸ½)|λϋφ½Ϊώ΅Zbάvϋ|}_˜ωΙχ‡ψρGΓ―‡Ο2lΩΨΗ[8ΔΤ 7ς`2xv§a|aτUKT=œ 7ί²#ΌΧ…Η>ώu›κ»‰Ρ:ζΞ‹ςXΤOΊw sOFςT†‘‚dzqΎ9±RVΠ15ͺ=ΚwςΘμ­ΧS_φ>ΙC‡xΓεγ Υ—€~β‹'Γ΄' ![‘(zΙΒ¦š•όΊ"œ±*Ikĝ[X¬p‰ΑTά"a+Νş_~Ό,2,Ίm&Q\XT;ηejt‰%ΨT:”}ξPρΈΏ™u r°|π/σ…jPzΈ ψ$τyτTΣ,Φ5=7€tΨ·lήΜσδCoy=<=†Γ§Oc±ΈΚ«¬ŸY!ϊ…β!ά6}Α†¬ΟwρΘLΨ‚Χ»ΧC.nE[Ή/³ιδαͺβ —gPc‚ΧgHꙇƒ¬*'%τ<›”₯·Ι’]~$)Ÿ±ˆ‰šΛt8›+Ώσσ<ΐhοΫwτΪάψωO}ώdι³€Χ‡κ BB~-Ι<°:(p.*^ΜapθΩξυИκLδš$Αk pzΥ±Ό6žW=νό©-Ζ™₯3ͺ‚˜Θ'Έ4‚Տ׫Ύ³]τPX#”]Φ‹‡‡uP2 €~Ο­αξkα}zΒ tτσάΎ}ο0_!<²ά=<Ξ@)IφSΌƒ"9γ΄εgΦ₯NX€χΚΞNΖ Οή)3<}’묇(nJλιΝ_ΓK{Žp;aΊ°•~4|-H·βγvŒΈqξί"/Οbh$eΒF9³ίσΎk»w]ΠΎψvω x9ώΓoYΜ ζrτ…|uLאFS›IjτgC+Ο˜{Z /MUZ‘‡y=ρ™©φ‡ΩΚZX„šP"©.ΝάZβ|λ$DΊžΤι―&τ”ž½½<[#Lz]ϋc6ήσΟοΓ―Β“o†άcsŒΙ΅Ά`S;νϊJ46nU=_NΉε£Μ‹UxΣ9ΖZ‡°λ½oέ~θGξe%Ρο5:ΆQDι#?φžπώo»#όλ>Ύό•ά’£œ=c‘ήŒ ΊMΙo6tžW±ιš½ϋΒmoΩ%­?άυVθŸx΄Ο!*·0φa°AN΄Τ yω:ζLΊŽ―#MtŸφ]*Ζΐ½Ί-€o€jΌ¬-8ΏΎδmΏžjY―Q·_>νΧΡ—€>ˆ·ςΔ“ΣhHΞΕdΑHίΐβ΄w†‰ΰ€^Δƒ‹ύˆΕ] •Yΐ*“K˜½Α ŠjΉZ΄›Θ&€ν όF@ΜW&b‡β)ύ„ˆαLm /)Χϋά!$κy€h §2CL4<Ο„AΗ'GHNƒΗL’ΘR ή¬εGΈΩ”Ωφπ4›ˆ% π˜ Jtή³θ ρG$oC˜ΎώΈο>ψΟΒTΘ^›)–'RυJ'[L4F]ένΫΔ]ΥϋaοάF¦;ΟDτ¨‚δ+P(Q: 2Ko dθπI8vŒ“wδb·Ψ›Π6HkP*όg-Œ^ˆΩι]&Α±β–α‘ΞR9Ο³νŒαΙcΌθνaρ]|jzS΄mށœΤ*•τΐ›@ΩΗΈΘ/†υœΚ6ΖD+―/¨Θ£—«άΡΊΐ4άήGε;#J:”¬+­—žςi{;N‘΅–Ά–(Λ₯D8“ΑƒΛσ¨ς\ }6«ςsKx1g˜W‚·^«²φ@+7eb€ #3§”υ‹Q\L¬WΥ°θΗΡ›ͺ’DΕ`cΠΔΙy€’ΕlšœOώnφή[§Βϋn§Κsτυ<ξΛ„OώƒαwO†Ÿ9Œjν2lΐΝ<†’ΙΩy :ΌΛŒƒΖ€t z ‡&w ŒCω˜ ;99Φ»eΖMΐlΐmœΎΘ¨h„Η|ωιΗ‘?́±_'kϊζ}αΫ@ΏαΓ!˜»ηΖΙπ¦kΖΒ§Ύ0ωκBŒΖΙZ†š‘NWQS@£B―΄‰v ž3g¦‰•μpx0.4 r¬ύJύ©ϊβίΣgŸ›Οέ$Ϊ2λŒλs‚yΧΣΑ 4q˜½a[0ώ“xΎQ½ Ο―ύζkbΑžWsώ* 7JzZ"]΄ήx}܏Qεελχz;<*π¦χ±>­³V›όωξχξώ‰·Ζύ΅Χσ=Ÿί³w*όΖoύpψίψtψω_ψSž% ₯Γρΰ>l¬vΖ<τ‹ααΜάΩπμαm€{*nΞ‘›ά]Γ{ šμΧR£’ζS°6Yœ'Οx1›E§–ŁbMV>>˜%"νgΈ.i?T„HΦΚcω‘˜ͺτΰƒχyκΛΗ¬.ŽρλμτLO.`€Α€£>Ϋ"Ί’‹L x€-=Β€eυ/Ϋ‚Ϊ:Ε»zŸd±XΨŒσHˆ‘B9ρ|$ 8Θ,aΒθQΖ³θεE.‰Gpΐ¬‹!,Π1›ŽΤv,fq»ΎFΦs!μDZlhDhΪ·q7s<€,pJδD™0&¬ε’EΞ-6-Cay:½†Ωό@l-|=Ž…ΰ?“AˆκΔν†2Σπϊ0Χ-BΡΝHξ­Uq₯ΑK¬ψύ@nή3• Β΄3β§ΰ}&T’KnZ9Ά<^`€ςQ¨&›­‘¨ςB /K(Ύ\›­o8^[―‡εΎ—Ι4/@Υ‰J/΄k€"=£„ΝGCxΤf‘’HP—ΆΧc'Z²/>Ώe―,»m?,²q-‘PgIn ?ΡTAκ€£ ƒΊΞbV;ΣΨ(²ΉεKΌ^ΐki"Z•p7ΏΖq|ΛU―>ύΚϋϋάγηΐι΄%(‘b5BCζΌ©B%ΊXθ†qζy φ#’}ε ^ΕΟΚ` ΐyΦKμNh’γ†F_N[Α₯οQ±‚wήω€φut%VLΐ#r im55½Χύ΄έωgBb–ηώ3Έ:\KΧΕrθQОαπ^(0ώΚl˜aL,ŽVPW(±ΆιA6b‘ίΉ£j ͺ xΞ PύmtŽ*Œ~JEσ>umεΎjœ60pV˜CνΚYC›w†1¦ΣδωνΑ˜ύωrSΈύθ‹ρΠΫό~< wμŸχ'ŽƒŠΠSfθ‰ΥΠWC΅žE΄ά₯zΉ,υK26tœ€/Λ#9X`ήFΰ{“η sΕhΛJM>5#Ε’H#Ž·§^Λ°}χPΨuΥX,„΄e7œar5²=œ;AΉΝBP4ΈΚ}y¨Ϊγtλ7BΖ8QΉ§ΧcιLPe¬9‰*Η7ǞπOώω=n{τυύίpΥΥΫΓ‡δ7qj9yΟ΄%‘cC`L=Λφ“/>vŒDΠRX"rwe:GEQ>λA°fšDͺ4%Hα0ω2Ϛš„7ΨΫ5(ϋLξ%’Φ`Μΰ£aΞ)Λ”I™ηςKί5ΓΥ½ς+ςRƒ.FοK @KψΰY μ‚* –δ€²’}ΓdŠ…}»'’Ϊΐ ’ΥšL†d•€δ<& eΊΥ˜ hς£^nt‡MŸwŠI(ΩPΠΪ²%@‘\k˜¬HwEЇ [uδHϋ½Ψl_ι% Έ&<,`hΣ.υdmg uΗ¬A¨8Ψ±κ”΄@wP›MuO΄.ΔΧ ·l‡³½ —[€¦ΪΡsΓR,Nwά~YϋTΊΒΨ0QηŠμη4›ν9ξx-1-…Bι³}e•¨ΰW\L¬S2ΞΔMΑΆήΆ¨‹ θυΠWQgL€Qzi"‘Έ%33·1wP!Ρ oŸ’Ψ–6tr) _Ώ­ΧΛΒ“@7‘xu±•δ²(‚ή=jς™ε4:n’ή1άΜaBο†ίΥ‘ž¦Œ²^VAό$±ψcΝp±IˆRξΌ~KΟν4χ/>CƒπžΝfWKUJ‰‰oc< ½έ€Œjύlτ†{=Lzt―’“.ΝΖδ[ TXΕO¬IΏ₯0Ρ¬Ÿώ1ρΝΤ$B λ4I6L°1VΥA’„ λΑΨv’{1άΟ―ίΉ=|τ™΅π,e©£–²€g‚λ‘άπάπ jh\CΑΨF1Œγ£αδR8F™ζ1T‡ΤŽΥ&ρΘΆΙίXγ9šCβά•ψόκQIg+}ψ±οΌ!μEaζb?Ά‘ρ=ο½*όοΏύd˜a|θIΤ½"—ΥΘ„s‰Α“5ζbLΒ–ϋ53…Ζyi96P©“˜¬Ί‰»e<N#΄R~½–‹/²Φ~ό,r.Όχ§ήΡxΆ=C<·+Ilu,ΜΰΡ–n‹:1GLV”θ=½ŒσδψΣ³‘ΑΌ{\ηχ|ον½vGOŸΫ[o φg?~κ§>ΞyxHnξΝR:θƒ$–RxaφTΤ¬ΧΣάLΰ`sφσΦJPπZ\2Π5MΔ6e½`τ°˜/ Ί|ω,Ρ ΰt4|Ρ)μ &[­Τ£^όΐΟ¦z{οVJO=rωΓ―GτŽ4.d«ΟGΡ’¨½`Χ™ΰΖ I.ͺ<¦ώA’`π˜ΈM’¦ΜΒΙDΒ"5Ρ0I’A.?ςύΫIϊ’ΧΘŠσ°λ•dϋ~ι­Ϊ[Ϋw™…]‚›ΈΎ²Ρ¦ό]žœΖ]ΨγΠω*§fn:·°BΘ’(ζ.‘s+©υ؜ 4·έΈ-άvσŽpΕ±ΘsΆ@‚ΰFšΘ*W‹]P.¨•͊·β•%{W“†ε ±ιo±ˆΗ’RVڎξͺaΧΝπ@Ϋνn΄5Β‚3k­ΥXT­ξζΨκžuιΨ\Υ‡^=¬#’χC€; PΓXmkφΌτT@Γλ#W\…΅ Fƒ†Cb\Vos0³“SΔΔ©2cΜχUπͺIγšΗπΈa_οθΓ$O*}Տ‘£d؞ν£h―CeβY™Μh2ίm/``dψ›)Χ°ΧCMmΗCŒŽ€ϊ¦ΖΈ(πwυy' jsoPλ=½"D~ΜΝW΅@ heΊXˆsxΊ«ρβ}τ[v_΄ΰω₯~³ΨΘΗnD p>ƒ †Ό%†·ŒMΐa¦$3žη€Κ$’iΎŒ£iΞ3B?›’' cΚg_ς‘ξΟλώrωί7Ph‚]όΗΑn§Γ‹¦·…0s&¦šι‘$ΩΛίRΩ#Δθ—§#Iš#倍?‚ΙΗƒ©S‹$°II>“@§c‰S!'Φσ©dIw°bœρZ‚aΌΜ‘kεšD‰W[‘ΰœρ`"vAΉHŸQρI@Υ?l0ι.©Ž*΅N`Rτˆ1‘YΰxŸ ­ϊ6(™έΉZο«^·UΏΟPωΑ_9Wxnϊ…+-“«W“VA5#_oU―‡žC³ΗgHΨω xO=q†"Σ(Ί’εωΆΧς=RŒθύ©ΰ.Σg-0‹ή€‘4žhyŒς5]‘r²œ΅!ο^½₯Ωaθ"„v}–\sϋ8Š–η FΐozƒΆϋβ™°ν]Χ…,Im½Ϋ}gIh²’`Τ†&(Σ’!zKGπšͺ34όq‡νšΏsο‚ΊB'-%cήρLΫL‚Ο›(Ϋ«·΅ΰiͺθ@IDATΧγ ’Έφaό,’{°ΞΙ- 2`B€Ε$-Ÿ^K›;bb€₯Χ‹ςω!ξ †M€‘YYΔ<μ_25ιάwη4 χΉ/Σ K„κKUŸναƒς 9E<Η>ϊσϋξ:Η›ΠΔΧόjβέ;Γ‡:Ύ°Β3†·‹YE²2Τ™Uοθ{Χ―Ε₯εΨοͺ rƒ±ς\’"'₯ “Λθ•τΠK[Λ’&ρΰύάwέv‘xu©; „ύ›ysψ7Ώό₯pŠC*™D«Gي©*ΣH}ͺΉΦpΏ,$ažy–`]‹U1Ξ‡?#P9¦XKX}s5^΄;ˆ΄*ΧύΫ?p}Ψέ£JΠKΟF%ŠΦ©£Ν9‘ξ=ŒuΦκυUΦlξ»ΧCΝ+ ?π?Ό›5ψυٚώΆ{ψΠ‡„Ούυ³α‘‡_ˆ/ „]»"σΧέ5Π}9汇λQΤgbUΑΈ°^š`lβεu €.Ÿ+F]q σ-”HΝ¦2|¦ŸJWΗvŒ|!|.„‡BϋΠίΦΈΛϋ†οK@Ώβ1$Θ(οb<@'>‘P0i7lΌΔ•2!;,EA•κŽ½Π€b“ ›pœ+U$Ώα1™­'½BΘΥΖBmb\*€‡ ­Z“aΑœήgωќ”χβ•ΰ;ζ8“5ΙΉ"¬'H.μ䇣GΞ"\„B΅H£3†βk4MΟ§`²c3IGGrω½γϋτ@σͺ―τ9ΙΧw<π€λ<·ΆΊƒΕgjή» ΥΡζ¦WΡΛec¦Oz=τœώι'ž3J;αΔΟb€€0RφΘ/Iψ­‚ήr6CΡ 6;u½‡ρX>ά q§ ΓƐE ··bΘγΓc=΄ Φ>o¨^@αp»/L…°…u/½œ†Β±ζB€VΞ)ήή™/œ »Ώe―έKαZEŒ½ ‚AA’JŒ eΉFΉ?=¬ηfΡΒ¦/,ϊ`ιm©*ΚΔͺ`‚’.r•_w½ιϊ©žΫ'Οϊπ +x,ρμqιΘsNγΥ•½?Δά“e,]ι=ƒ€§Ο ΓΊ Ζ—”ž~8£ ž»‘†4d²€Όgu‡πyγHe‚U*άUˆΔΤO7Q7X“έHΗρL8Š$ Ή”ΔϋοΨώџ½€\λ‡ΟŸq0>ˆL&ςZV₯,‘HT\+αo` !5€˜f-LΣ?NΦ’Ÿd Œ2σ`ΚƒίsSΨAδR=,Κτo~θŽπ/ξsaYBη‘&°y%ΖJ“ί––wέ5z±B‚Ωskœ5e πΌ©Ξ1"&5Α7Ζf£LrzΛžs$CοΊ}kxΫ‡ξά΄ξΥP^£ΰR απ~€ž΄•:D]†7ΡζϋΧFnάFzΈͺT—οψ—o £xψ/ΆγG?ό-α‘G™qŽ7™ϋU*ΊC‰ϊd‘ΖστI釂λ&ΕΡγ&ϋ<δΦU Kή£τ­λ‰r€Q͏³^w₯1gζp–°ξπq׎v”=X(ώ_υύ§ΉRβ WΉΨϊδr{.L\ZΞή\†9½Γ‹6nz†Ι aƒμVΊ‹τ•7ΌΎΠκχvmδ"Βt1œΗ¬°2‘6uTδπό*r8[Ψb“ό,W΄μΈžηα;Aώ ·šΈrll,52˜h!E@Ϊ‰­xsT θΫ£O>M˜yϊάu6ψΆ ›TCMm1έέΒ[o©ΰ4··ύڐցsΜ σ ^Ω5ιŒ‹~( JBY½Κξου0hF;£AφσΌηAxΟκΜζωJRμ€Y”&ΔΈcwΜͺ?³): l† €s£†Ÿ»ΓΛ1ΙγFΕ„4c ‡Hά(υ’X'Ηύ[Ι­ΝσrPΛΧp”Ϊ!υε BτzJ[†ΒΤ'f¨°™ΔxdNMfHEο~ŽεύXR9¨ iƎ΄XAa}7ΒψΎρQϋΈ”ΑσKa`οΏόΐώπsΏς₯Π?Aώ cƒρZΑSλ€(b„iόυcTYϊέjzSΜα#xZΙΝ° ‰ΡΆΕSΛT}|ιΜ½}w―:πα{7Υƒλπ7Δ£΄«λ9 ύγ€>2χU6*c` άγΥCσ―z˞0E‚σΕxάvΫήπMχμ Ÿύμ3,ƒD–;(9Q ¨Iα:‰ΰφM'VΛ=Z ΛμDΨ5Ή=l#ΪwκΔ Ϊ¬[¬'ɘ¬U&jxΤ‘ζ‰Κ¨%‘Βξά)τSΑΈόœ}qΰΐ©C‡°Ρ.oΘΈ΄tXeηc΅ˆU―­^_«sρμ [€tωξξ(…ΒΏ †±˜ΦΌ‰μ²ΌΥ ·Δ‹~P¦—Lu ~nϋ9έušοšφq[β=]Ξ-ρœ&b[O8*„ψMBήo₯ͺ ‘'MDΟ―·U}Ι4`šέώόΞ9ωΩΓxJ―Ε=ιEj±ΨΟ.ϋG–4υΓΑα`ΌC~}폗8 FμmΑ%97»Φf-˜š[±ΚU€θυP ŸCέƒοzƒ|dΪ\"zθˆ)³Ό^i@΄„;E– O₯=Gz?;ziι/)0Bϋ>Ÿ3g(Y< g½ΗΓΔΐΡΤd§ Θ=a; ύlDiϊ<ΈζI“ρNρZ ΰ΅S|ΏL_ΔΘ^έpΊ—Υƒζ(ΓΥ¬ώ‘­—½π΅°AΨ/ΈN"ŸU™1‡6πΪΧyvF`τΦ ₯zμΪ^ ‚\οήΕG)―,εΖΩ$Κ>γ.FR<ΫdΖ€΄ 7―νDšp3€”ͺλ7 Π€Σ σξ=2Lα8£Bp0ΡR#ΊΒkuΖVpm’c“χΗ6Ρζχξ 7οΈψ“δΎVΏ}7՟’:ί6~A0| nIxƨȉtŽIζΚ*_YŸήxœ­!ƒG:ΕXΚ1׌ŠνήYoΎ‘wγκk΅υBΎφΞ{χ„η^\ Ο]Kp‘—&+Χ0,ΖiH ΙkA0&βNΐ8ν‡Ά1Ήw"Œ_9T΄¨Κ(cxθU—ω1ά½?x{ΨrΥζφ±$„aL:FšV*!1dBEη!shƒ½Δ˜ ¦νŽuŽyd™kΥI CΜρ^Ž<σπm?pW/§ψ[?«‘jr°ό]«ςuΰϊšp-ΏΫμΖΎϋΞ7ϊqσM;)΄roxϋ={à ׍…?x8{n–$τ!°QYA…§Κ„» c$?±ΜeΝΒ9aΈIsπŸ―ά7ήσ-WS”ΝDvδ"Q„2Ω΄ŽαΩ’³Sθ=’H²Tmͺΐ.λ?£¬―}½­ _ϋά―Ν«xxΩ±YτΨ 9©<(μMŠ^ΰaŽjͺkp°]°9Pv™ŠhόΒN‹‚eΆ…Gmτ’;M₯ΣάςΩθ#¨€w›ψ―μH¨ςοn?ό-=ά½Ά!΄žkαπα žζ%ΐ1 σ$ϊFΒΠ~N»,‘…8ΑΒ¬zλ²ΫW7‘ ΅DώͺIjΐD<―5δ;‰t³ήE;Gξη,γ•/Δ?“χ?Ψρr΅JmwΝ7ηV"gTn©eΆ{="OMεMΞΥιι z”%m’ ίX Ξ~ϊΙ§(―³§o}p3YμΡŠέ0›ΙbΆF%8k‹$R-Ÿ½λ֚„5'₯‹ΤƒZ„ΆY@Η)–ο^Ao5V©β«l‘a‘ΦγS…Ο²r†,»{«&xm#)ςΤiΥ8π$1ΦjŒ½-‰α8Ά€5φγOπEχc5>BŒΖ Ϊ₯CT°SΕC/J °?Β{φξθ=θ…<τόVؘfPy˜^.†©qθJLlΗΈIΚαnκ-dδ٘Lκeώ9—z;\°Άa –——ρΐsQ‹)h` |ΖPXFyΐ‚k€ϋ*χήf6)ηΧΔμg“|ΗώΡ°g|σc‰ητΉc«α ͺ sPIŽ―ΤΓ‹ˆαabΖΟ $`έ»s(ά‚Hl;B ς#Θ;ΦQώΆ΅Ί°‘-9ξ]ΙN9ω ΪΈγͺρpΛ;Γυ7m γΘ5nζρΆ{v‡Ώδ8oΌ{WΈσmW†}ΧoN‰ΝlΨy*Ώϋ{Ο"7— ³¨°˜`d.”PͺΙBΝΌΟs‰΅anz…"DT•ΝRejεŽΧΠ2m^^„/|ρl˜8/‘€¬βΘΘΦώΘ1FtςY’Χσ™Ώ°έ nH„Cf ]>ή¨=pihžRΗrΪz‘Γ’R §\b e׏ `FέΠ~δ/³F5‹IΙ§@»έΐ₯)ΦS&€φ;“θεƒίβmψNΙ”ώ,vQθ­Γg_<~6ΜΞαύζ3 δΧfό&ρ€@#iT6P˜vγAœ’0†E,3ʎɱ±q Ότnx}—Z’ 6ϊM&6ϋέξ—Ϋrα~€o}°ΝWr ž˜EK6]o%‹μsQCψ₯δ«^š€'b―@ hCC~*‚τ™πx}%*‚±q «ετt°ΠŒΤ ΄š(#Y‰”η―xΚ³£Όws6»άκ’θHwxfg)΄–‘ŠΨΖ<›.­ l0ΙͺxΗ;4 z=ŠlΖϊ[lΘrέ…§Ψ-¬’‘·[σIΚ‹I§-Φϋ‹7Ζ~PΈΊwŽϊ+ο£X>τόJψΓ―\)0dπž%%•x6s`'iΗS3₯πŸY"Qm0|δΞ©pο֌Wž¨‡ŸοٞΏ,*DK–)š²FΉφSU€4:䭏ͺށΡβ9‘λΎύ­»6­ ^«DΈϋαΟΌž'ΡΤdΦ Ξ1‘Gοԏάβvœ/p°Ξ§'Ύp:yz.\ΛφpΧ[v’ λ,ߜγϋ>xSψ—ΟyΐΈD&Ζj„–l—’a»Œ–1ΔόϋΪιU¨`₯°pv5zκ₯'οF₯δβά*ΗY›†Ρ=ŸΕΉΤ ΙΝ=,‡φήΰ ‘ οqc1ξo›Σγ,2ϊμǟ _ζ™ N₯NΉ^₯ΈΆkbƒ_TΑiΰYΓ“;sξpψ«τlΈ£νŸ’κ1ΒΈά¬γϊύ“αˏ?ˆaj%U‹λa$ID“=f‡RŸiž»œ!j8mTΧPΕ§ %­„αΜjψš—ΓfΘyc„BΎz+ςv“€dυ§η­„…γΛ”zΖΫ«Η™kŒ"™xK¦ο†)ω²]Ua“##­’‡vlَΗ VτdΫ,ςαeT%ΪXXrπ*½†ή½"‹ώ Ibκ€7ρΌ&H°34­—/ Θέ—»ΧγΠWδd³ιΰMήΖΖΉQBή~αm‘RΣζozμ­Fθ0Ι©ΜAίρ£Μ_ό‘ΗFTΩ ——«xpΙqσλ£ί• :ƒηkH”R „K>ζ^ƒ~<5J» αξΔγ΄YΗ±ΉrψΩ?~1¬γi#Άλ"BŸΣΜA  Δν&\qΖΉ~±δσ+O„ΟP²ύ§ίΆύeN}/mεόožΚ‡§–]Θ< ŸGδ©gσaZ[+ΧΒ‡g"^&ϊϊžM,Yώά‘Ωπgp˜Vρ§χn;Κ8=²¨tψ9ǝ·ζ¦€™ΌCzx€/5 ΐ‡ώκΕπΕ―L‡ήwcΨ΅£w*–}z ΌΦ›QŸ9BHή|œq=SŽ1j%#³‘΄‘zςib΄sy‰ΔrΦΛao°QdvΓ½< ?kT‘†ΑhώLšg˜ΦαHμc9kϊZKъyξ)ΐbοN’Xγ;GΈίΝ?LΚό΅ƒŸ K†‰ΡT'%ν3ΒΎν&χ2Έt›½D”sΒ>]cώΟ?ρgαCΝ7…«oΨΊ)Ϋ²e8μb<—6ΘWa½¬Χsθxχω°±kT fΜ†“LΟ<©β΅ͺHιviŠ)¨D°Β^ ΅Μ{«Œ (DΟZYτŸ‘}ς—ώθƒΗΑ/ΛΧmΚs»”O;Έw‹πUΟξ„VΒδx-άΎ°Δ"1{z.R7€dVπ³CYF@T"‰uKΈNο!nbΌSmlz€΅ŒˆΎώ*ΈΞκ?σϋŸ,(ώΖρ’Σα΅D€ ]Δ„y‚βΑRέp.υb7+EŠx¬p*ΌΡx@=‹ F ΦEΟκlry™§„‘Ω0r„TΝ &Œ˜’;Ν†«Gsb(—(VπΚT›WΩ†C‡ξgύ9華ύΑΖβM/„Ɂ+2«ƒ©σ› ^^Λ}¨·³ΧΓ°˜άΓ*fεΥΡn Y€PŸαTŽς:ί;%ΐ2œb"<ρπ˜j­AΗqΒΡ–^Εγα K†συΣ³½61ž§ˆGσ`xιδZXa“Π8$Υπͺjωάι. 7šΔ#ώ …†™₯½―ξΨ_mcL![|ΚΚYR4Ζ4Ξ$Ρ γΪV]“V1ˆ>΄c±Δο%<ψ)½fΛ>6ύ»z#Ÿ|lš{†~h½ζΚ©0GH~”DΒΪΉ ΗvunΰΞό"AW0”€―TšΙ1ηκΌn₯Π^iΣΣθήr.½ˆΪLς ΉDX†:Q&[ΰ{₯ cΦÎΰ™~Cύž›Τ`؜γΨ|%όμŸ‹x]U‡‘€ω±–ƒΖƒ\Ϊ ϋ °h{[Μ'υΝ?? HγΉύwοΨΑίy‘ΗγΝ[²α9h#ŽQι*φ=5dΒ8Γ Mθ₯d=μΓ‰’anΩΌΎ8qt1όώ―?#‚‘Qγ)41,LrΛ°ΆY^=ΑΨδW€3sž¨J±S`|6YΦx½Ρυβ³kαέFψ±yKΨ άŒγ;ώΡυDsΎeή”S”+,C/y‡±€΄ͺ>yΦγγ;G_­l ΓƒΪ· θΧsQςx/£7«ŒηηΎxŠ*°TμηAr8žΆα&Ί9wœ {Πt\Ν— Κ4E§ r 4Γ+ΗΓ5·n»―›b©κ}|½²ύ‹¨ ύŸ?ύaŠΩ0E”™ςΌσ ζK%t’ξ|λ;―Ωϊ˜τμddΒ²όO"όOΏσ_Δ"L―<«ύω­χήR<Ο³/.γM^‹Όϋ₯ŠQ<Φ₯6’©8Ήœk#Ω\(²—‘r­²αό­‘ZbΕΘ{²δ!<ω5Ψ„œ2«!όΉmϋ,ςuo?΄ Ν«½Ρ˟»(z ;#/Цόηq—ό2ΥdπόΦ{v#U³%|β―^gNΜΈ41Yρ²$3Π*Ά“Χœ2ω‹I`Vzΐ ”ΚᙁΒΡΑ-$Πν‚%θŽί9Ώ`¨ϋΐŒ#.ΐ‘Ζ”‡ Ϋ\c‰‚ͺ_¨Nb„Ε (&φαwσ‘—)½;―^m ΊŸSΆPο¦ͺεΈ5@εx3ΊRˆ€Ηu6p=a9ζl)sOιΊm„Ίοά$ tπόΏšΛά· ΨΎ(0±XoxΏΧ‰’4hƒŠ1Ž•ΐU4]¦ν1²"²fΝzψΤzψΔs…π$υz=‚άΌ†ŠχAžΣ|M©Υu§\³ΓZ„ΒadŠάΈI}q’€¬ίϊ₯G ΰ€ΰώΤ#WΊˆχZ³ταs2™Χ^;ŽΡK$Žόš…γ‹aZI††Ι°n9VsΩP;›<ΐΘΚGnΐNp.ψ?»΅Όuε .zNr‚―Ψ‚—Ϋσšόp?g=Θ†²ΡwφΜjj7U‚V{šES.­‰½vŸ:zE\XιŸ:\ηoK€ŸzΚ_•™ CΌCˆ»Χ(ρ•ηω²PΣ¦¨v!Γ%₯› ,ΣΌ›zj¦=7_Ε^ Σλ§‘Ψ4)\,ΩΪΜ†Ϋ‘˜$|WPβ|9¬q/e}ΉbX?·λ[―ΗΤ]`+jΣ,τzκω?zΉυβ8F‹lžzyT ΄Œ‘€εΖΏ((0Ύͺτ‹‰d·’)έλρWŸ‹γU‰Ό$αPΎΕʐE€’ZηΗ7σ A΄Gοc–λΧ‚ΗtJΐžYΪσ±Κ=«! €ΛΕB1-ŒΟͺQ&ΐOŠyM_ΖӞθ*F•ή^ΥSήΫTάΘ{m„ΖΥ/=4α’²E7^UγzkRθϋ5'΅f;y“1±Ζ³˜„Eo<€_\3ZŒWΉ•Ώσψ|xηΥ#=«‚ŒAυ)S0(v’nΡΗ΅‹€ƒ¦H5Η’?)Ό˜8Πo»―7―χzΦ―δΎΚτ-Ό{ξO‡FσΓ2κ‚hΛΉwΠΜ˜jΖ £Ž‘d˜Τ½¬A}Τΐ¬§ώMŠBiΉ~υΧ ?ϊŽξZΡCcυΎϋW†_­'£—|}ΙKž—γΦqδΨνπžu’—Q kϊΡέ₯„RΜΎ‡συσΏϋ•π™γKP£rα”$Μ}PinΆαb/C)θ’G δθίqΌ₯:Vx­Α=θuŽΙ‘°$l&U©a\Ή§˜;‘a°™ΗΓτt˜#’ΙΊ'·YYΐcΛȜ 79r3άB-Ÿβ5©1LΠψŒυπΊξ·ΘlΤ¨Ep*<ό'GΓ?ϋT9$ΪΦλ‘όWk€ϊ… GΦΜ‘$yH@gs%&υ4CsqiρL3„ ͺU’fγξƒ^b»5L*M π…ζ|;ΣΙ’Ψx~¬>ωmL<ψΰeυ^ŸΥ7Βη_/βΫ9Ψm[6³‚ΤP;|ς!F6“r™ΠvRΟ°€"ΊωQΕ ςj*Υkή“Jχ³¬σ><·ί²#Œ±ˆΑŸ>ζ©wŸ΄ΖΩCλŠ*h‹+«ηζ“ώΜΏ9ίΗίψu₯ύΩΏ3Qc‰qΟΰ‘ΐxΒ‹fKγ™* !₯ζ€YΙR!LκrApτ±θ˜ΙόΜΡyAP«L₯ νλ9ΣΡϋ²{`ϋZχy0V!KζFΦιΟZ­Φ‘Tv"I[υ‚m²φzৈ ¬]-hΞ“lΈš8ZM)Ί&žδΊϊm\OŽy³IH“[b’|φh2ƒ§:ςžEΣΧ ]c(ώΨΣ?§ΠΥ-•OC™ ‘]οŽ‰«dm«;ž δοž ΛGWρ^Τ)›¬ΌΆH©dΖζΰd=œzτDΈκ^ΧS¦πλq-bXT"°@Σ7_°Ζ{δ;+Qχ_VH\”Ζ€a!ιΓ³rγ (-τrH½ψτ ueγ°ζdQOC6‹ΐ +šWœέhE‰ΝPΈ’sn¬&iυzΔθ/ηΡΫ­σu‘ σqΟ¦e­c^ΧΣΈrμ άw\Ή9t€Ο>·ŽnRŒM½W£KMΖ₯‚:R¦ ΣμΒ ΆDτkΝ fτ‘F„uΓΠ‚ήθ=piθ—ŸR?ތ0?»ΘŠ•+XVΩE›Β&qσfΑkώRLΦIƒ±†―ιe–†Q…πδΣηΰpNX»Δƒ \$³ΜtΎŠΜΊΈι3Ιθ‚^wΣφ_Ο_w!Ž•υ>Σ.₯φπN'Ϊ‚:%+N’*cT`4£ΝPΉ(βΐxϊ±3QyFš:΄"Υ τyπtMΓ˜g Υΰ‰΅τ€e 8:D W€­αmΆ’η}WΓx^αsjΓ»Ύώξo?ξΎk"Noo₯(“_]ˆλDƒRΟζ+dql΄£R„\b¬ΙΜΪY!ΪR£(9›yΈΟ|κίύu˜en©&”F9gxG?93•pμ‰sΡΉbΫͺ:x† Φœ$ΰe‘jΡ>ΐέ–έΓ$»m„ε³ΐ=ΐ`aş&σ‘Ύ΄΅՜Ή) Wuέ #ΰρΏx6>S¦sh3ο]ŠB.„n‹E€΄&A|“8/Μ$'ΰN+7ga€dp΅Šyo<ψζ’ΣϜHΚ†―!μ̟_qdΐε&Ι'ψΟƒŸΦQvF4«Ι°΄dbB7αΛR‘zφτ’»™Ήπψ9nœ Ι$N  I$t™z폅ί—ΚLΘ Φh3 N(Ρ‡ΰ/χαΌ4Ήη#.δt‘­~ΆΚXι)–6ηΨƒ*£˜ Ω†_ή&‹?…W(FΧu•9θ’D PI©m Tχ±ψ°υDσ,z?€κŒ³xβτ0aΎax½%π~β:lE€P™>Ι3ΐΨΠ eC eYΪ H<:MβrίΣΏυ xŒ§€Š@”±"P ₯Εf`D`@‹œ—ci/ΜάΨoΪΨόcυοί3?³ΐF‚Dav9Νmt(%JVŒΜ“°ζΈ5‚`‚“ε½ˆ–Σ.’<Ψζ9G΄Λ{{=LτώUΒ‰\KΞ)]B@ŸΐpRR°h]|\ΐΤΪuγΞAώνύxθΉ₯0½Βœεϊ*:`ΣΔ Ί_Z†”š κ 3HΔ•ItΞβ…t«bQ"σ$ΤW_gςΩρΖΚη~ŠHΨ `i”±ΥΛ±Κ>žSŽρZ€μw~/ΠƒU*،c–$­WŒααkΑ']Γh(ΡMϊč₯-=Mp¨Έςη>ϊM­g”y.Όεξέ=7[.ταΓ‹xŸ™Λ¬)€£Xd¨Ό\g¬" Iμά:vοdUΓόYΦ)hƒ:>6σxφΣΗΒ)2 ²…'ΆFoίΗ³[8 εΠΉŒαάΒ{―zI·Ώ€όRΘe" iΌόjτSΌ6δα?χcXμΙδ·" zu@βρΗ§Γ8΄˜«ίu­[SΟΗiΌ»ε©,2€Τˆƒ΄IΑ©@Υ¨γ@ΉΨγΒ‘§L /Eos?†~^ߴϜ΅¬†iςταωžΫζ †Ι ι`0΄ιΚ‘ ƒq”h‡R²ΆUmθ rmJτy–΅ά₯ώΉΧaD©fΰ}&€+‘E¦=°£_›G[+G·s™Ύ±)Οκα$—€ξΚ™©Έ‘U berz ‚άσ·Βf%ΌŠœυHΆIώ[Ν α#„²ψέP"u³ΩxωΞFθΡΟzͺω<‡ ΉKν€ϋ»ο3¬ΗΉγ{„ώIξu|½ ΒΩ^ϟ‡ν;3ˆ…ž‹ΕSZ„t•!Ϋ·υš=γαEJŠΎx’ zΆOj΄˜3@Ζ²‰φ­w  ហ“Hψ·Β±6·–)λ φ‘„f ΓΤΓT+s½άŒC©@Ο)―9+° ϋuϊŒη•k¬ςF›6(%…Up΅οws¦Ÿ›pάՐx".=Aά!›Ρ@Ÿ3zά– wTρŠ‘&Ι|ίAAŒ$ΉΘΫb#Ζ«gu΅αΏT ™¦F·:f•qψΥ?>ΌύΓwχΤ’]xšΎ:Ο8ζώί }σ4ηάP nͺόά!dοΜαw…-{~ΗφήB·¨Α„Η_X”5{υμ4„ ƒ<Γ€ ;X9ΐ9•TΈ>{SόjσLυJwŠΆΏΧC>₯+³€ε*ί3ŒΟ (₯U _‘ˆΗ7ίΊ½§.Ϊ ΗS&i‰υ–qοζ0:x>ρΫΉ u8]8υόB”|3±SύqΧ—E»”5£”"ζ\^ξή<)OΚ=:©  t|βwf”‡t&gyΡy<δX‚Ξpψ©™MΠ7έΈ5zu^Ρ+ͺ±±Z!ٌΒήφ‡­[‡ΓWŽ’ ΎŒV j/l†JΚKvuz-|ϊί?Κ ‰bFƒyκ[‡κƒMωΝ)&psN*X2†‰$ˆ’¬’ΠQ1Α™(W κ³u-@λ}uΊΩS«aο΄I1ςcgφxΉnʈΟOš²#=9hλ•JlΆΌΪ,mƒ‰Š±‹aMΤ₯ ¨­θKϋ­>’Y<]“λ£,&χ°²€£„χχ₯’sίΟzά¦%< SζυΣ_υqΎφ1yώ‚κ~:]z™{’α?šv­―•ΫgO•Jό§Ÿψ΅jΜΐ{vΞεγrΠ—€v+’<‹ F"‚&kCωόM0Φ¬.‡RΣ-Δ Γ₯Έ{ψsέl2Mγ±fΒ`2ΗMΞ 9n·ΞΫ½€ησ~^ΐ,―Ž­»“&ρ€TŽξGβ{γΟΎΖγ]Ϊ.Ί3ι£ΰΎ]£”G’Λ‚.,ž Ok›v’—HΆ φvrΫss+ΈΒ“Lπ―Θο―ιA™κŽε’υXΩ§όΓαy~ߌ0 –ϊΐŠΤTΚ±!’]πV©]!|jίΆ:D€Β`˜drC€D(7x£λ¨§Ψ·iϊΰ%ΣΑτΟ™EΊ+IΘΓ‘@Kχϯ³ˆ έ$a†Ά†Μ^"-Ψ€€ηS$φ¬&]Ζ]΄Ώ°™HYH±΄Cl”žωτ αν? €ŽγθΥ΅jΚvψΦΚ6κιY‘jeδ8³™L$€©ΐ„"ΣΌnΒ§ΰe oπ ΫzΠ_€ †žε8—zzkΛ%€ϊπ6aΰΈiΆb…—η‹Ϊ©Λ(Aθ±Σ‹cθ»°)ίΏ;—^]Ότ©,η19J ”j F1JΜ)iQ8Ώ˜IlΨ΄CΫ„Λ2ξχn’ΧυΜZ3z΄ϊ½/ΌZ%lUF)γIkΦ»‘~6nPΜ8€^c½,IžλвΦ‘AΖEoέz)~ηΣ/†“$>ε&ΆίχIαΡ8Σƒ¬αδο‘gΜΖ_|bΘ \θyž…IT€ΰx‘ΧπT’'–δωΘSwg8χ+zΧŸ?»ž…Ύ!7ίc@j ± uώΆ%ƒξPρ"m_‡6€αι}Wπ8Š@x9†ρΛ+Λ}λU5 3͍fxn%h «ά[žώY¦*ά2ΰΝDΩ^ŽλφO1@4pd0Gϝ#9ΰ΄ΊΎΘiy.Μω£'ζ€τ—‰—φ­ΌρΝ:žψΣ#HN’Ν½ΘήπΣg—B?Š)ƒmτΤΩQψόκ8YκτΑΌσˆ1 r„ώΐ°Y£]<ιX!―€}L jiτΡ-DεŒzρΜγό€ΟykOkχ~φΘ\4$βάrlŽ­¬σ“}$ 6ίΘηh¨X Γw˜(™†₯Τ"£‚Ζηts7,PC‹“+‹Λ­ωCΫud2φ€?^>.χΐ₯ ]ά¨™ ΡηΖμγώΞq!g•€η¬<ΐ h{ώ;›ŸKκΩδ³Q’Ž©νϋ£·™ΕΪΕΘσx>‘˜{π—ξίYtυrΗ"+ž[7@­ƒ|]ΛΎI ΪbE0œΛͺθςόΡCΪα½όΤΰϊ&Y¬Βϋά£ΗΓq2©}o"Αytaρ.ΓαιT»•/P›4ΡΎ—?>‰4'?θ^»γ§>ΒV8veΈβs$lΊ°E……σ}²%ˆνζ0²›Ωt-B>iΜZ”[΅„] I‹Ώuΰ6gΖΒΦ‘!dεraJ@ƒςμI ΚςΧ‚gΘ|ΡEτω¦€DǍFS d©V‰…:c3K\Kςθ)#ž^Γӊ‡ΊΕ{K#΄―` ΐvŽΔΠ-Χ²qχpμ!ιKο/§FΖΝέ°2#Ο.Ϋ|䍷š(“‰ΰυΰΥί»‡aΛqθ‰ΩΘmήψ‘Η˜ΘπΨπ2r^€ΪKΙ°&ξΙΉUjΪβΒr ₯nί‚κΝ–AιHΔυ?»‚ρβ‰U6;ΞΗ.4J‡X ―™W&ψ·ΘΛΠΉΚAcμυa²Μζκψ],tw5Ϋρ:»Ρt8#g8gu`¨V΅ˆ,JAβΛΡ‰τIE(@B―ήit‘ώ4‘mΌx†‘9§T₯ρœ EžCOšƒ^Ί€xPΰΜύηzFΧxVR\rhΞ'(.UA5arϋ‘λήΖ„ωμγgΒμ:ύήυ˜ΪAžŒήG§ΰΛή›Y~]χ}χν{οΛ¬μ1’n" -Z¨(%δΔV"EJY»$;ĊεTΨHe)«ΚeKJ*γ²£Ψqͺ§Κ.'fIΔH”HB$$vΜ`φžι½ϋν{>ŸϋfD%ΩRh 9θιξΧού~χw—sΏηœο9G/’ŠδmΚ”ƒMΦκA‹`3@ ”Ž*`oΐkϋ[”'ΣDΕ¨ba,[<ƒΉ‘-―¬ηαKάσ © šηw}Η*₯½ίŒή+ϋΩΕs3_[$ΖPˆQe§AππΩ&ΩR0Δ0Ωε…Rδy'Έν΄ >χϋηCŒ+«d‡`~wξ†}Φ!D=]ςœ›ŒUπιϋ­ζιšθ1f=‚ϋŒq3σ«₯dΈ₯ΖΜΫW°’ŸΔθΐηS¬™4οF»ςΚυ(ƒ΄0ΗυΞ9εœ™Ύ°Ž:Rx(L"eΙ€σ˜±‰5(ΧΨψ’zμKεXsΠe쳚ήNΟƒŠTR-·:’ή3Α( όΟΤ–™œ‹RqΞαΞ—Ϋ ΐ|η8ΫM θžσΉx¬Έ–Q6WN΄:―}cύ9Ζπvφi,€o’k°Tn½Ő|cΞΰGΔ―dyZ†Wl ƒc !VLμh@Z»Ότ€Vγu|~v•§"ΝΝ-ΟρoB^ιήƒΏ¬¦NΑΧ4mΚQ6\+¨Tќ*wκlXA΅ΰ:Β _ Ωΰγfn±Ι7 `2ˆφ!ƒe„7†•₯*ΌV*# GίΝώηεε§'δ—·»i·?@˜τ°ιšŽ€‰Χ|Αt¦όRPΙK,(τ’ε–οuCbƒb΄s”u™ «GΘWν&.Ξ½δcΆΑλ>΄P&!ΰHˍU‘€ŸΡ’έ§ϊ ΚW Ά}ΦΒ6hο‡_ζp§Ÿ} S΄ρ&²/`m£ζΦ ΣΩ žs’Ί΄/~ώBxίO?ΑεaϋTκΨΧ+R·^ OΐΕowΙ4SD)cY,C+ΟΕ:ξTΨρΕ;{»ψΉΘζPÊήИKŽΰχομ£ΘpβεΖΥ eͺ9€ ŒƒΚPςΉ„ŽqXΑf­KκμΓ€m΄w5\ύβ«aόΠa°9‡•ΧrεZε\™Ζ­**¦f½0{Α‚œΫ)΄Wq‘»—₯exξ$H0—Υ»μ—Ο¬ΫΨ”^μ‘,ΰΧtd‚hχP•9΄ΈŠω}³Λΐ³Π’¨2 ΐΈΕΘm5ύ›@[ΰΏΐΜΰΜ&’ƒϋΰ€λ±W”=@Ί Cžλ[»αΎ0iΡ3₯_T6ω›{ΘbE+Άi΄7_$“χΝ’Lyžx}ΉΌάΣ”œ)ξGκάhΧ2―εtͺ 7_hEw9γ'%Ι"%f–Ιb΅o΄τ0s@IDAT[\Λ•’₯θRA!d,εR_7Έn νJ{硌³>¬t¨%Έη…W†:“X 3GΒύοXΕ\Ž’ςΘΑi΄uhT ά Κi†υ’eΟV8;X«WŒc‹‹BEΈc¨6ΡϊšV8‚ψ-Γ5’ϋ#ψa›–]³τ―Φ©ξΗR€Α,!ψSXOΰ—2&»\ΈXΪ{ϋC%ΛΆπG―nΗΓ°Ζ$Ϊh`ρ2=”k‘‹ς Vk§λuΔΎkδ&Ÿ rœ\UΣAι†Χ"ι^Œ{ο°pγsic† τ¨;±ΌΦ8Πw£* ­ς§9+ΛZH Pͺφ ­ΙΞ“—ίG”Θ#xΦziEΚτuμ«P1Šq™ϋͺ8G`ΐAξw­o³ΞkΎΓ˜υ΅Ύqh~ω•+T%Ε ξαOςΝHƒaΑΕRθZο2\£„\Š•ϋFRFTTε5©RΈΏΩΜΖ’f”a‚|‹i•LΪ b³΄Όόnη[ΕίqΞσ»ξϊΰJμk‚gf$Ξ‰…JL{ΞQΣ+!ΦSΐ–ΌYεJ•L}žc MΗ53@Ffά{lη>) Χ)ή½ƒΌ'IΣh:JpOQq€ϊΪΛ›Θ:v}FκC!œ86ήύήcαnšΧ_ί` '—)φyƒ’η ,’Σ(wZδΙfΌ"Ε Ύ΄ώŒGΓ`j=+5€žς͌$z΅ŒΤ¦p•/νζ2°―WΣκ“ΪYΜ`’Αj]ΒK—lΘμ:ζ t3qQ`+Œ₯i―S-Ρ Αφτ&{PτRέ;`.Yq―HŸpHΜ0ώυ%3fM₯“\·6r‹쀡•e ­„Yεœ‰Α’dΰ0Œ*viTφ–±π«΄PlΏ(…ΞV&t Εβϋ^ύψ“˜Βng߈γsϋŸ―ŽΐtN–―^οmύ)ζw:iΘV$Fβ„BΌ²“ΐ&δGΣlB4dFΜΕΜλ)Κ8@"Υ#+$Iό˜vl>w£iΙπj-‹²†χLΘΏρ#lpοHΙθ5ΠMΑ5δ[σ9yΞ~ Ε=p" P7 ‚ΧF°Η2nZ ©μc}V6’«Φ]7Έ*r“ΏλkƒLκυQzάΫωAnφ©ΝΣ“4s7ϋ<νοΛ74μZ6»·ΟG”–##<ΰ$UθNΪ<μ΅Y©l€)os—Κ`1³„oŠAt(IΫ„Ζ‘’να.‚–1AyΙJ£±±|gΘ2iΰ>&A†š§cNdFΣ¦ΨψυP9ΘAm:½±›”.Jό™ ΐ†χQ°pέMV Μq°ΝpΘt5>}6€φqζΌΚW•uδRQ٘#mγ ‚σ€)Ηήκ ‹erWsXΆ­Τ΅‡Λέ92π@wmσχ-e’ξΡςΚΑξΈoA#Άλ•χbq ΞSΠͺΗ<Ι —+=ζ΄§ΩώM\Υ5ŠT9λπjSXBg1Ω?ςq‰0e@έ4Ϊ6JΙΪΦ±•₯X.x‡y•†EΚ,lΤ€ΉŽ3€3@€QάΈΉΚΖ ΩΜ ΎΟ@ΉDi\5€νk  XENŽ«ΩUΤ;šΟ  ~X=―U—ϋΐ83KU5,|*)Όίj‹Y˜’h™Tξ™^ŠΚΣsπ&‹]Φ†εκgQ΅‚ΆΔz[Κ€* Άψόc ^bξkϊ#€Χƒc¦«K yκ‘*K1@WεzοΩηΥύ?ɟOεM@‘œΫ@[’VΓ›S /Ό±6PfΆy¦#K3q_Ήv,`tœ Ώe¨S―Ώξ~/½΅―M”­€%ϊψΪ3Υ™5·oCτθZν›Φa-iŽψd@’υ!]RXκd€ς†σ§εLŽš‡‹€.c9dΎβ{Iκ©₯+¦γ‰|v3tτwΘ2PŸ€[ζq€u:fX‰k!Y}Π1Χq^βš"ο86‰xΡ΄ΤΖΖυ΅ΰhβZ&Ua‘­΅Οƒ#°35•e€[εΦ³—B§qq& ΜpΈvδ>™oπ© ƒxAڐ±s­•‘ ά{ωžΥDπΒ‹[‘¦‚ Ϊ Y>δόΚQdxΐΟrUαύΊ/δXΔ‚Y*<£%½ΝΔ Α £u .KΤ‘Ξΰυ)”π<π¬Χ―ν“6o%r±SΎφΆ`ξΗή€ίiΖ%uDϊ4Zε‘Bэ•ωue£4πάϋ-SΧaΥ 2ώ~Χκ]FFΈwΜ9< j¦yoΫȁ:9’³#δr+zbXσ,2¬pφ~,}t8―‚hCY;Œ½Τ  Ε6ζ™τ­•Ήfή³ΥΣTtζ—fΊ°”σ@Šj懫Џσ–΄™»WΕ)Λ3ζι{ΡΐΧν’†ΎΖOžΝρΡ( xֈαώVΚ:& Θy6±ύKc\ VΪ3W―4ή‚‡%€Ο6!&wbI΄\WΑκζf+BͺΜ₯<¬Ί«Π9€Φ τΏτευpξν°±YΗ¦‘ϊkξ’8Hi0΅τ˜Q…Χ#­ΪF΄ξjLa<Μι\ƒ²!ΐd€’lΙ"[΄z2₯ωΌτ ι?(n,€Hς¨Š)#ΩwZΪΗxŽ’6«E.#˜"FuŒΟνΔύ¦Ό^ΖΣu”ρi‘oϊ€ώΉο˜Γ“χ/¦³aύβ.A†-ΞiRΛΑ™nΊ‘±η„ΉΜ“ΞgV–ε΅{R%i mΐͺΕPLYgI{Dc”YξQiDΝ=βωδ8στΫδJ:}ϊΙ1έτžAceκ4ƒK±ΰή’_3τYKRfJΈ%s»Έg769„Y…¦4Ί™“΅ΙαYGqΠ·ΐΐΌMή 9z V ­F'Pk=?1'±„³ή‡©Θ:ξ ?vς$ΒΈ ΐ'₯–₯½λ—˜~Xξiε=&8ς3‡qνQrœε¨€5€ΕΌ©uζvˆΦByνωΛαδο>τπ°›6ο,<Κ­‹‚G¬X¬«ΦΏZjΞ).p€ξp žηa›kέLZϋ<τœ έΊ—ύ*PDpUNζ¦Οίά[Ί™—–ΛxZΚ”―vŸ„p…¬)ΉΈGΫ‘·|X=AΠΥJXΕ’diμσTk3ϋcΏΨ‡c\ܐm”S½Ε4poΉΖaά§\»iσΊT° Q3Ήg Bγ9£Kލ€¦ΜΎΧίhZΌ©Θv»ο)«€¨<οoζ7*§<ƒ 1rΙς¨ΐ#ή TzЊ/§X°ε<4±zχYWώœcnšΜΉύ2šY΄N‹3Δ`Z-sn ΚŠ΄‹€ν&€ξͺPΰ1%[eΙj„m@όω€.-ZžŒ>rα‰", 4ηKΠ°˜§.Ή½=”@Η πSd Ÿtχρ$°ήb9ΖΣΜ θ€ΝœΥf–Y―¦EΜa 4zτž‡O„žΏΎπω‹a‹@>K9k5€n³Ÿbρ!A° š©’π€O ΏTJΈOΐ—E©άUΟ%©L³iδω™Εq¦Β Sk/* ˆΕjΥ 'Χ4Η=7Q^ 0t/FqzΘΑS™;rί2v",·τ±EŽeο·ΐ>4½ή>ϋπι>Σ Θ_½T(B‹dscekciJ¦S€/έτipR˜ϊ€θ*Vv–wβζΩιyΠBώhΕΧΪ½GΊΡ.}Πΰα˜λ 2¦#­·šu΅…R³‹ΗCΓDoD.›v›™L{4ώƒξŸώΘka-Ν—bύv»=_3· €GψΏ©a&“{“̏"m ZUΎjUN`cͺ:,„–Ρ6΅nw₯ΈΦ`E Δ—VJΐΑδu~D{Mί¦ ט`)°Ό«ΣqΙ4‘ύςbZIΙΊ΄r"¬Y Έ/“˜ΟΔβ*lY9`m¬¨{lίyζυΈi··1=“Φέ²=ykΏΏ·ό.“ϊgT¨Μg›νξρΟnώ5^! _3Sϊε©x,΅¨νφ¨‚ι‡tζΠKqΖΐM¦K γ„MK}†ΐ<‡Όk61;‰%^M•’ψCϊΖ€@FŽωb, d;W8LE˜†cζ ’}1•:LΌ ή3–ΞΜ‡ω™Zxη;–€λ…—^Ξ„ ­mΐ k Z§©„ˆΒV+’y#fQŒPξZ±NZλΟΰλΝR1\{φb"ν3΅a—©ΚΆuτy,η2FΣ,έVΘμ7ΙBε1€ΝaΫ•«υH#Xδΐ6(m’ ΐ ΐŒJ tSTi5$cyδ»9M£Ζ9Ϝx„§‚Α¨ ΐ€‡yΜαΖJ؎<25r1/ΧΒ6cΡδΪR'z‰˜ ΐ³πhΣοsvΒ>‡΅Ώi4ό1ΫFžη―s_' K ep‰11ΠRΑaa™@±¬ό`ΐδ'θ}ισ½Ύδφ`HϊYΦϋΔ}ΐ\φ9ψυT™]dz@JG@-ξƒW:‚ ›Fε2zIkV_Λ˜Λ€βCϋ+k(X%§wΔό»I[—~8Ώ*ΈRFΜ³-7ΎK•a*8Ζ:šΠ²|1ξ H χΎή9A³ΐX‹«όAƒρρyT*ΈKEΥ|Χ1½ΧLΪJΜΧ‹ͺi žZΈΉ<ςΉžύƒ7Γ:λ_·JX‹ώJ!‘΄Eo£ ε’5¨‚Ο.pyΛςΩ΅ΰ κ΅ξλ­Σ€†yvhQHθσˆυG‚“b,"gš½'«pΤgΟσ\ƌ/ ΰDfM0‰šs*Ucΐ™yC~v‘9T‰€F’χ…v˜ώ°»ΑgΘ]=-F™±CΪB5<Ο£ύΛάιZ‰ άKΪTŒxkvΩχ«€ςy2…μ +₯qΜQˆfD.Κ†.Š^―CV»>γΥmˆΛ!§…Θή-BΚuΒϋσ8ν ωv»=_7· €ήά|*Š€qgημM¬f΄yΑ’–ΗXPΕυ­₯·j€…!χ³–α(L»c2+DiδΞVͺhaS/εG]φώœ5πtb‘9Ο#\”œfά‡αrǏΈ?₯ΒΝ; Π[9zoψΑο;NΏsTM­πτ'_ /Ώ~=Z}ΚX;ΎZ9LQSλθM&ίDΨΕƒa-Ξ)­",3Ψe”w%’bχΓ}ςΙOόΧO?A^ΨΫ(‡ωρmi\oΠ#uSq\­β3‘Q7œ.κΔM+±V·1V+”šL‘ƒ9,Σl4yΦρβΠ”+ή»ακN‰H₯ΠXή[ΐŒ…z$bΠάΟδI—ˆΓΒό d’7i+忍a;Ά¬Θ½½₯Ή»c>rξULaQΠWΠ0Rmό]ηh“΄^γr€’žjσ₯«‘Γy‡m³ΗfΓ•7φΙh°GPa*œ‡*Τ'ˆlύ ΧέΒ-]{θΘa/?wφμnΜp‘2w Ξ΅iΚ€τΐ·‰€Ι‘ayfΉΖ²ΚΪ‡՝Kβ­pρ†rΈΟAfz79…ζzF»λή•ƒ3ͺU΅($Εq̊aΦ›l‘‚3”3^ελΒ5δ@£ŒbfφŠ€MπR,ΥΒ©+dAQΑ#ΑV4‘ϊ,e†u@₯γϊΏ€‘\g+ΞげΛΫ€;ά7ϊ_qΒ3˜&m†mΦ²ςλ½;5"νΒ5Χdjω7ϋ•ιδ£jύο™νc΅7VQ‘aΊ85'ξλTΑΩEώ°©DΟ \• @¦HEΘ-£0mb1χ^¬°9•ΝΡΒς‹€ ;΄¨jΘ £˜^Ούjπ§ΐ&Κ߈>χ8‚ixε9ΖΎδ-'m^Σl?*Ϊ]ζ±ίF €η―n ‰μ‘ί1Έ‚fŽˆτ₯„7Φ’lz5+ Φ€‘hkA’}ζΩη7nB ˆO”>¬Ό©œŠ Κϊ§ ωBZohRœwŒQe2Ξ+ΧΑ•Ηl(¬G”'ƒφΈ‰Λf‡Τy}ζ3…§«Δ:ΦέΦ †΅gιν0€MLy·uΏΡκP;Zxα 6T²Oπ­ΒΔB–c¦ΟΣ8Ρ,&UΰyKœ»‹Pή,γmuΒhρW„) Έwΐlΰq†4‹Ρ[Μ³Œ‰~d)’Ϊf¨…Υ«gjsΚώμΜΗ†X ύρv»=_3,ί[«S₯Ηδ½…’Ηž ˜ƒΫ,πΥBΜ†ŒlH€!›ΔόΝiTsΣ› ε)G€μσ Άψ»€ΨσD0ΝΞ‰–iώσ>“F-]¨ δ±fiS‹ΕYx;^eb-Σyψ˜wέ±>πθ±π‘ά!NYήΌΐiΘRΚ8…π›Αšπ\ΟG(*qνϊA8GΤ²QιpjUΒJP x #ηΣ­F#Sξžά‘εο€·ΏsΣΟΟSm[ϋΨXAρΘ}wΤΏςΚ6©tSΕ9ιz»Xe’EŸlβΖC+–Ω%RXš›X(8΄Α(–²-ΐ;6G§V ΞΖΦΐFoŽ”σ?•$j} μ›pŸyMk5›FqέζA?|φ³―†‹o^‡γΉ‹•+"λ&3ςΩ%LN#€‰Ι’ΗΜ}Ζ’ΈΣβΔΪ"°Ξ ΈΣ„—?w>άϋΊ{Η\% *€8μcπ»vn#l^½BQ *5Ξ΄lxς§>τυ΅,Ώφϊv]‚SΕ]γ”6βu拇5gnoG HžΌΟΓ!ΝΑΎ†Λt›Οd΅ AR1Υ\άg‡ξΩδƒcRιm‘κLœaϊ4­qu_½•38»·qYmΜΒ 3Σ -VζgΓ<^Aα<ΰo•œξ{» ψœ-Φσ ©¦£)pΑ’,κiα…ξ7 μΜ‡£pΨCM>#U&Υqθχι{0$…CDmšΒ*Š΄Ε`Μ4"ΗΩu₯"Rβχ VGη@K―y©εθ Ξ΄B ΎtSΛ•―?ΐ$-€›F[Β5 Ίƒ9‰Sπ― PΉζϋ{›΄k„Ύ₯‰”η¬ΕO'ˆ§QB™»kc\Χ{μeVKέλYΖΕeƒŸΡΘ0GΐJ·`rm·I&φO£iυŠUXΛGŽΜΔ΅Σ &CΏ\τ.Ο1 mgαΟ1wΗN‘A ©ΗNkw‡Λ’ ’·’<Κ1ƒΏg9ΘBΉΜΚ55Έ>«<θ1ΚTŠΜ8ŽcάΌW Q7=iSιΘ‘πΗ~׎^ΰlӍ֒jκz›E¦`κΔj„v’βΐ{YΑ,mΎPšΫQόγB'›œ•Œsf0c hdŸN2—€1.T°‚ «Ρ…ρρ.§`^@­‚a+(5Ε*ώ£A)³sΠϊΧkδίΫψΔ“ŸΘάΞΎ‘tVΎy??iτ Ÿ3³ξΟ„p睼tως—Fύ¨@<"ϋ$ΐOΝ’Ž(‘ΨμζΆΰŠ…T†”ždfπ5™-€ͺΣϊμghΊRΘΌΑγTD8 Μ΄1Pρπ°§ΈρΎ€t‹Š .cU¦£ϋy6γ6ycε>rfPy°ωt+>»ό¬EOΉΦA‹V* Ύρ€Œ8°uuj%)dΙς:.€{½ΞOΡΝίo‡Γα³=ΊίjmΜΧφχv[‹ννΦ8?§zδ–Ÿη76Tα iίλ΅θΑ­ηΝg–­ρ;σ(Wt@±`θD@3o21€α˜{π₯ρ8άδ?GΙ8r Ω6vΆ/‡Ξ•]Ί‡ΰΟΜωξ©Λ‘ΘτkF‹ V*έ§Ί{5ψΩ$ύe¬J΅9„9D]σΧΎp)€Φ²rχ£Kα6C…ηOQ²­ G=έf±t³Π8N>pτΠ#p–b€P ,3h9³eέΑ¬Q­…fU2;Ρژ,yί2ŠαΚΡot0o-ΈΟfή|δ‡πY΅<ΊW_ύ`“’τα>Ητ³…²9δ`g™D:I^>6V1½SYa&ς«8δO‘S[ψ₯ΧΗΛέM ½Β ^ζx™œΠ<4ŽK–“ΉΘαφμix–€3’Κΐ“' Αƒ›Δχ·D‹ρHž`°©ΔKbΪςsEδ@³aZ8žQΛ݈χΛ=Ξ3Ω>–Φ\©Mώg A –bFE”ΟJ·ρ}}¬ΧRρΛχ%iU¨KXO{MλBkΟoLΗ.s<›eΝkˆθυ…ZŒ 2Ά\Άn– wνhm6_±γ#εΝψY&>R½|6֐4ŠΦ—ιΣ’69ΝΦ_dήΊ¬mΕ??Κ) €VΘΥeΎ"‡ž΅–΄ιU;qΗlTτ$dŽ‹)/ε}λa^gƒac<χΤ«€•12&dϊ)=§KόSΟΨ€q1f`Θ8tiΘΎ±ΰd²δΪS&k¬ZΑZ}Χƒ+Λ’Τ{_­ϋϊΌ|b6άsίΒhqn†$"WίόβW^ώ”ύa|§|Ζ&|ΐΫ 5Ι₯Β7ξq kιό‡[οϊΰφ2Ω6Π]2!yRc‰$Hur_μFzζΖδp#` 8vγ5]‘#$4e+Ή?ψς—Βύ]P€B€{Œ¨\ŠŸΈM,Ÿ¦YÏ~ωεsΆ8q!γ½|MŽ΄\ήΰ ˆd˜§υ^h‡\”»{MR?aΈc‰Υεi>Y’.Xs#{ψΩδ‹seΞηρ W¬Ν ϊ½Ÿ cο™π±τaΝΞN΅Χ‘k©ρΡΕ™"BΊΣ¨£Ο.Χu2Ιo9€¬z&CA„𠠝%’Μδs6@H4™„ί€yιF X+hΥΩFX xdή²pάƒύ8Ξέμ€ρ„Mͺ}΄_Ή8uηαΞsαΒλ[α5ζKΧ\†9–’S#»€ΌΦ&|Ί c> ”Χz;BΑκ°Nή|ζ0Ÿ>zθž~αKω―„ς<‡,–ν< ₯Šλ™€ΐαώGOϊΊ-ΓΩΛτ]π"ςbΔ*bZ‹θ ΰmW½<^ωͺ1£)Β Ή0Κ4ΕΒ4mϋ(ƒZΟ΄ξx½’–«ΈΙέ½ψAΗ³λ!ΞΊχ¬ςΩΒbWζΎ*+€D pY`~RTΰ0›Œ\βi΄yΖ·?„oΚΫ$ ΅}b¦γδ^Fš‹ΒΨ…‡u‰΅#ΧΥ*„:Ξ’x(Ϊz―XSr³Ν’Ρΰ9ΔV/ΤΚ{‹ ψ Yσiή'θΝ6M'Π3pΟΐ(ƒnχδδλρς―`„ςcTv Π­bYυύa.Ωhb₯Y‰Νr%ˆaH‘Ξ1‡Ηfλ΄46vψZύ²X€η‡Υ€cγs“’’‹Ώ‰‚`Π^δ26LmœKχάqη8ΝgΜ$8OΪκ9€fh1?ΊRƒ―‹,μi5 P™lVfUŒmζιNΪΘσGfCΛ9Gl_!Ρ ―^Œεah‘―rΟχΨε­φ ΕNlEξ"ˆ $;c)xT’Ψ==q` Ε1͚£‚zς Iϊ―ςkΖΧVΤͺ«(MΜλ’Κ ορx΅λ =°Zίι΅eΙs¬M³±L£ιΡ‘ιw7’η?±o‘Σ,ύ^iΚ±Ε½‘R/°?`/«ˆ£βκ(§K³3μW?ωσέ_yκημ1ŸΊέnΐŸ<.[¦=ώxHŸ9Γώmό!IΨΏΣ†H—{ +³άΜΨΆΎ>αΓjΝΐνΘφ=ξΰψ>^’IρКœ’z\DΡΈμ"Ž'ώœx9Αm @EΞk»?SΊ‡ΩžνΦNΈp«VIA—έΘfψƒ₯c€>€ς<Β™ »M & g\ Λ6›Ψω}%^Q‹₯§ίάΈj@Ž?¬ŠΆίκ“kŸψΥ'Φ¦bX‹Οχu(ΙFw©^™%π­Ϋ>―+τ°Œ&YKΎξξ_½Φ\¨1>ωΰ&‡5Gΐ:B1A Ζ«ςWΎfω΅‰₯Kx1±TπYΣ ςΞ‘₯Ό™rσyΟΝY™+yΣ…¬B#˜†EŠΫŠM³F΄ώ ©ΣΰGcM©¦ΘΒA° V+±D[όδπ^Όv%μ5λ€}:ŠΫ‰a-6εΤωχ΅πξŸz$^ϋ0½<ώΞγαw­ΰΚ₯_€Ϊ,ΑΘΔtδžΕΓ\2~ζΥs{ž<ρ:κ(YΦaUn+Ο΅ΓAWγ “O,ΆSYΤ³bΙχ}²@ ” ,Q:¬λ˜ω`RΒγ<&m*Lφ_―$[Dvg­–•VnΆδ£Qѐ1pŽrΒrK§Ρ,~RΚqm.fΑΣδ™W«±πΚ :eN‡@RK2χΩΓVg΄Ό»ŠˆΚbGΘw³+hΡη4gճƐ†Krθ’/2ήZς+R3”Ž} n΄%¨Ν·»Ag ˜'ΦBΉ»Ek΅κŠ”‰"}ΎYFYΕ]π² "IΛ&ksPsx>ύp=,ζ ²eΰ6g‘™Ϊ4œ#ƒ8-uOΩXΈb ίΕΎH;ρΩε?ΧIUׁ-”Z!Έ1€ΞΜEΖZεΓy6#OŽ€ΊiP8δ3+Ο τΌΉΐήm±†Kh1.ΌgyΠθ’υ ϊcjΐ$ƒΖgΑεQα7λH“Ήhδυμ™5BځγY”V͎‡PKsΜΰ"Πi:L†4sG[²z¬·“u‘uΨcntžρ&ƒbΈpŽ*·Έ|Ÿϋς^/3,ό†ΓυΣ5a»}oήΈ₯τΝJy@βΟͺe‡]2E B.‚`J<{hORΫ!„βžL4Α³–d7’YjFά°Μάf€₯Έ±fŽΰ΅ŽΩlQ ’Œ”NIΰσZ―=ν΄BΫ’‡ΗίQ{S€oŸ…[ X™΄ŠΠ σόž†έ’Z¬'‡ύ:B°χ)Φ2ƒ ]Š%"μ9ŒuA›ΆΜίωR†”rMφψΜύw§Ž|/wώΧ<Š67fϋ[γk4ΈΘ¨DSFΘ΄’Θιi@‘B‘LΖ’GΓΉsopPM Δytl9|'h˜»3‚b©rΞ€“Α‡Zώo(Iφ(ζ‡ζ»ΰΩb+σSΠ¦!Œš^\»z5ΌJ©μ1nJƒ 9&ΰ>ΟΔ a˜α=›ξ-Nή΅Nέ·6£έΟυΒλ(WM*$Š‹Q)jlc‘ΉΤ/¬‡Υο8Ζω›}ϊφz \c Žc„ΕOΚ@eu7«PξpνωWΆb6—'Α^ρ΄‚[‰|Γ’ΑιεΌΆZFτ9ζ¦Δ 0RW4aogj8QY4R@惑―yΈύρ§<€Gξw¨[-{–Χκ+œAΉΙΞΰΑ™­†ΖΔj}Σhzƒ*@―g0_]Λ¨Qό¬[c² —πΠqνL·D`eΩΠ†6 ½K a @Ψ€1ε‰%Ί}&©(*]Tt‘#‹”5>''=ΗΟ\o p­“*°Ο˜ΨL}W|9ζ0Sa$ΕTΖ\Όυ}Π³–¬ε±2—gΈ62VR³l4ϊΥΚΨ¦ί1/{…?G` HΆΤψh¨΅zλH«_—/χ²‡RUTδNι݈Υ+ט* ΈHΉz©9I› *ψ\Ώ ŽΏ›Ud™Κ‘Yς/ jGο=I±ƒŠν qΣκΎqi?μα‘μ10Φθqš2Φ’9>ΚֈωνΓ‘![TΖt%¨# κ9’·R99|»b@!σ‘ζ:f•;οš΄Ÿ΄y–φXkΞ—ΦθLYΐ+Rqt…bN”ψY€bmω0΅m+³C^θqΈΔ’΄΅ι'œŽhZ:Z Gοš!ψλσΰ™³œύ;•b* •"½1#ΖΡrφyqγPΔ`Nv=c<ΦοNΨΩ`ϋ\D^z³·φ>υKŸxςυ΅5r?―έ¦o$]7ίμŸO.Ύ#ττΣO*Σ°~dž?Ψ+΄3…ΕR±†ψM—RΝƒ-ά΅dΰLkυ‚€… fΓϊ ^γ„β;»‹ΣΔχ ςΗƒΚ³ΞΧ-2ζτ„#Ÿσκjξo?\½x5΄wΟs8’χ90 {]DŸδ•'”ΗΉ?Ό6”°.π{»Έμ °ˆχ(`!\ΰo•DHϊ#§΄‰δΐ6σ…Ό;Σ€i΅`Lεcάhγ\‘ϊΧΈΙσΤSv`ΊkΖve½q‘OTwΞ¦Qτ©=~%mΊyΏλρ»piύ °ΐ’kΐ c:™?Ζ4΍ΐ]7.©Ή·€Ϊω‹σΜλ‚l»Α.Ÿφ³³σΣ°@cΩΜ0Θa†ε§ωπΥ7Ξςό(9¬³ωBZ€΄Ν2Wς?εΨ[XbͺΗό» fσrz†Ck"―·H΅Ή΅Εr^ω/@;ώG:SVυMcA'Ββ}‡/ž²ΙϊΌΌ5α0ΛΗΟbΎβ\ {ΊΠωAΰD™ΓΗ: ?]Εα5“]ΒΤ#sN‹gΝΤΊ@‘ZbV>t&S ΙՎ4d›ΐΟ/ΗRε5Ή‰%Π£%U²4 ΖΟ‹'pοL‘YŠΌμΡsΡ'G»}8φΰ|xιXJ/‘˜V°¨ -†T ”Η€MP·y™xφ…UcΚ?Ξ%ͺ₯ΪU½§λ@η‰τ§‡F†t•RKT*X:QYK{ρ~­­Ρ˜םʜλ‘Χ”₯¬1ϋA*SΖΔZR[<—°η Θ!ίπDi퍍Ϋ,επΖέCωs‚W)°B `£1ςHHΦ)ƌρ5 5©47Α³ζ‘?’΄M<Zέ=<C.Nw#wή h©TzwΆ7₯"›λΜ1ΗΠ–j6ϋŒΤΰρs9‡šžέn·GΰO[ @G‰€8ύμ§RWήυυΕϋο^yx~.3Zί¨g."{hν‚­T΄#j°VjIρ{Š›6oΡ πΕ‰Ζ•xΎjΏΛ»€’QĚχπ{ކο|μΞp†”cW)ŠbqHdΤδ;’~R¬ƒύuγ‘v0$Ǎ$ΡZOVϊƒ!…)†2άλΆ§‡OŠχŒHgz6~* <α}Vσ²Μ©•¦8o9PV˜@j΅BζθΡI@rίϋwΑ+οψ…Ώ™zummœž¦¦ό±Ÿ―ρ”ω^8ΏΣlέIk5χ€7eQΤ†M·dŽωXΐBxα"cjc©’h c•‘θ!ΐͺͺ`‹ΰšyMSE’Š}p GRr΄ϊ3§#ήk™g ν¦Α8ΓpΚ Teξ˜ΥΡ>`Δr°€2‚P–Ρ+(8,Œ`—haΎτΚ&‘ηΜ%‡Χτͺ:†L7`έ-ράεJ)–`ΎφΩ Ρεξ¦ΥN-†"ΥΜϋΫg}΄9hηΟζRρ3Ο}ωλΟύ`ͺ°<%ΉIŸEΧΆαhΖ€4™ΐΤB>› Ν4_όΟψLάω*WΖ(^–ëϾ”ζAΒ†©N~‰ηu>,,bdDΞu2³cƒΊ«eΆ–›γXΚ-₯=v‚΄c_ΌΨfΙΔΆZ Zώ‡ŠL†υΰxTωΉH?έ7›Xhεl#q8Ιαpσχ{iΩb X• Ȝ뀢”’( ς€n•-~φίμ>―Qmθ+ζζq*Ζ=ιW«ψ>)J„Ί˜Τg—Φn3£\ 4uψžϋGay^<©Z»cΎg˜+ŸΓΓ(δ:OuPξxΏΑc/‚XŸgLπ .ΆΘ”YNκδΘ§Ε%ε=ύNΨΌΆ1DΚΟιT=(”9²ΦŒ²Θ²’Ζ/φ ^«θεaXu£Μ —>hΧϝό¦‹τ‰3Sφμ&|Ϋ‹9·€αρǟʜ9c\YιΩb©ψπβ|ΉΡΧ‰€ξ6€VθΒδ+ςhΩΠ₯%*^Α·b#wšϋτlψϊpδ1+|ΰӚVm€ΠiΰΒ;K³«T0²T―ΕT’΄WPδܘΘ)Τψ,π―“Σί~V"δΝ,Gς¦±ƒI1ψ₯f_τHη7⫍ Mu•ϋͺEzΔ.œυ>0…vZΘφv=潡ΨI΄ϊμτΝρeΪIχ¬VΣY_ΗϊΆƒ…νJx·Kρφ9½"[ ΉW$'τ\̝]Εν/b1^&› K ₯}’¬Š)Μ,W>ΰΐ+L’ Μ”yΎΏ‹·HzΝ&λμωΟ_αi‘ώΕ\yβ}_}ιϊF=`nŽ;°™δFΧbjŠ3χrΗ|Δg³.ΤΉ―tη^nΆ¨EλΊιγάγVd#σŒόŸcΊ6~ƐcBδ[Ηςη\ω9Π§ΡΆΘ‚c@τ>V|AtB*—ίΨE‰¬²Ύ–°g‘Q-”GKB1ŒθιHΪ’•9rlτςˆ‰Q„ηG)bhφT&ψΣΖ9Δx LͺγqnξηΑϋΡ θœj³ΟkΑۍ@u‘yΥ1ΝέD‚Q»—‰IΎώιβ€o\ίάRεR%rxΜͺR^δμ΅€ζJc·ΰ·7πΒ ˆ0Fΐ#Sΐ:QxΧ‘²‘ΗΫ`lΕκ}σ_΅dϋ<‡lZ“=ƒcά 7ŒγΔZSy‘ ˜cŸΩMεg~Νȍ2€“Ι¦Fπ“>σψNφ 0Ζ!»pϋcίB#pΛθ›sΣl~οΝK{==Κ₯6©rT―“MŒ@Dη A•&"hpΗ.vŽθ4νΨdXƒ9©β†Σ ‚έ Χθ~xφΉΎτκVrc΄ι”@N)₯ρΊώΗ΅έ¨»κ.‹bΒ»Žfή%ZάΠ‚ώ—©;Γ}¨ε+L΄Rσo΄"p]΄1-ΘΘ™Ώƒ0Κy8qΝ«Χ# 5υ—ύΧΏπΤΟώμØ―M˜o¦ΠΦ(¦ΒZΘ­.\Λ\½ΆAθγm¬εz¬:s‡ioνZKζ+°ΐβΘζ‹Ρ"εXζΣ5@k)ζ^VŽh±Η’ηΰ‘pΔ‚)X˜c+.(htJΤZρ›χάsδ­·;ΤΟ—₯"yΐI·ΤŒX'œ^ς1]Y.a΅’1ν€Ωc‚‚δ³Q~ξό΅πΦΚοϋKίA)οnxυwΟR‘… `Π<7λΠ8R3αΒoΏqhνCV«‘AΥ?έώε;¦’(ίΦΰ―!`Gͺϋ+δς1ΜΞŸƒH«s‹k@-PΤ2j–…ŠžΖlk«ΰ`ŽςΔYy €e!9ΣhC€ Γ D9eOΈWš}FS­V ΅…΄‡F€>\ΗΪCΑϊŠLΨ;™sσϋ¬]L\¦σ2»ΩI]rX{Œ…\Χ2ΐΘ %εΡξΑ>|rh3XΓQ¨—ζθ}6l0Ξ*]•y”v¬τO|θDΈƒtZIΪη)ς—7kΔR`υloΦςμζaύ₯”›±ΈD’ϋd¨:’h•΅Θ# VE%ςbΰ£.ζX#ƒ]ζ΄’²Ž”»ρœ9Λrζι„{݌nf`#߁†L²γ5O%TΧ VN=˜|_Χ©ZΏN6 gA«ΰμθ·gb5Οeς'W:’iσ΄J+£-F“Έρ|C@r‹Ό&\‘ζγ£GΛ1^e\΄*sžX0%#u‡ucp=g|3’ώfΆ 3q€™cA~΄¬8+τlyΦ)#Ω£I[ΌΎΚ΄t ―ΗZjoCƒΗE[X鐒>7kƒΰΜ³ŸΏΆ)f*=DΡΊμζΈ%ςύ)\f—Šαi=₯<%m*‘¦B΄/v3žŠ|•%ιKŽϋΗΉ€ΫΏf‹L+3lQ‚©ςήπ<a•τanώ/ό°n­†υ9.ξΕξυΟμ\Ο·φ %Ja¬¬#σά1<ΰUaC*ŸN‹  #†£€χ¬eΨΏ)Ί0ˆΗ±ιΚ8ΜΞ‘%'q“Λ-²-€΅l–βŒVgA²ŸεsΛ΅Χήq?ι!\SKΆ―ωώΏ" φG€Ψ€o~ΓέhχΣ¦ψAT76?ΦτΜ5j΅ΖΔςά+ƒkΜCDΞηΞ^;=Δ|³0³xββΕαqΩ§Ÿy&dŸxbZsjΌΦψρ“ν_ωΉOΎΩ팏oo΄‰egJfφ!iσΐ¬ΝŽαΖθ•žΗ΅¦BAu7*?ΞZζšCB`° ’»­ΤZςq¦ΒEΦΛ` Œkя€NEwe?|ΧwΏ+iχβη]J¦Ξβ†L %ΰσHc «“Z κ€€˜#XnbΏ— Χ―5Γ`Ώ:EE8 /ϋXbΌ|-¬_Ψ£*Y:ΰL΄9h:ZΧπbθsλΖ?L+‘«σ…+‘ΓΑ΄z@ΥΓ΅‹—λa ΐ_§ϋ9Π…,`Ρ-o/ηΑ¬ee @˜Z­A€˜˜H—mk^†΅Ϋτx8Xk΅5ηQZήέωž‰χ‘4i‰k―oDΉΕZκφ‘%ψοΗ₯=”Μ ­έπβφ/|/ΦϊcεdήΣP>pΌ^%M‘ιτδ&»Μ~e :χύv€mμ4aT•*Γ@xxΩΠ-  Μ³NΣ)oοPŽ±YΗ• ρ+\‡βpτΘα• ›γjUΖ#'η" λqύ­('€1*jΉxn'1€fπΩ{Ξ(š)ΌS£m3agν()‡Yξ| ϋ°d51Ζ†τΝΞV“4H•ί˜W%(Λ%> @‹5§K^°{Οc§X[ χdν i(ΗΓНŠμΓ Χ7Γ~§ƒ‚‡ΎNf8βΦRZ,χ6(WrE>n‚H,ΏL₯ΗC’L³–X»‚?=\LT΄”Ζ€X6™ΚGτή8ϋLnοΔΚΚ0Ξ¦RτœΙZΩGπOОύVΞv7Φϐud«© Ν΄Σƒ.΄{™}εt‹±Β³€’Ά·q€b/½A"ψvΏΪwΎ«,WAϊGΖ–&4§υ}Ζx2σ‰ϊΚmnΖ8>Φ›Vil!p±ό0ΪLŒ](αΓ\Ά’mχϋόϊW?rυI*>ύτOaΐ=Ενί"#pΛh¬£μ²qκΩR—O?τχ^u;“G™Ζ ΠHίΰ΄ψΠΜΖaΖ†ΞώF΄hΔΤpZNΛ‘ΖΑ&Ž46™ΌiiΤΚE„Ώ…8Tk‰f„-fφ€C7©jθkΈ ˆ:ΟQšG]αoXœω‰ο‚.ϋ¦Pα_6Άέψ―qŒL8ΑΩζqˆrTζ?VhςΗpHQ5.Œ:?Γ‡Ÿώέί½qζπΛTΪγtώLlφ^m·GjΆ;γ뀑Ρ₯ΞΎΆ|δDβΫά}Οrxρ…F˜-–[³ΡΕ/W³:gn§?οq˜]…:#°±Ί±Λr2+Œ&V ΖΥϊm‘ ΝοŽδ‡>τΞΔ}σ‘¦ΐόpQQΉ@qΚX7ŸŸ GͺTD8›zjŸωΠZΆΟ\B`]ΑΔvύnxϊ+gIΠ Η+( X—ϊx:”€―–(*0_Šΐsλ+λαθϋξ~PŒ₯Oφ’ub₯@IDAT¬Π‚θ7ψ*Jα8™ TZ’ΆΦ½"ŠΒΞζ~œ#―¨‚Γb £ςΡΗυK{α‘ωΒoφ1•Ί ψ'τ=U@Q`ΝΜπsYYΈeY3σ(L‰R2ΊΜΫ¬3Σ Βθfw@5rψŸιΖX0ΡJِ©œέpr™cΏΧΠ§ξ'Hœ Θ«(»XQε˜KGiοv±¨fΘυΎ €$£(#1@NΉK?“6Χ¦–WΛΏόŽBgœ±’Œc(  §Αΰ[)„-l;”Ζ εΜ½d C=@)φάπ-εΓ}gΦiΡ} ΘBγ““ώ+ 4ι5]”  Βδ6·™ί—64ϋ«GάN‹`δIžp'ςž;†d­ωρY}ΏθGΟIžΥ9ίΌT™3t/~T…ΛͺŽΫQ.«tωš{+Εά:*q_@)Κ Νu± ₯ςΏΚŽPήίώό­6· €α&:—«όzόΓ½‘₯5Ψ‘k¬°@ ‘'\YslξXVΓ‰γΗΓ>ΐληHE>bΔ<*5?„ρ?ώύΟίύ·‹ΤΉ΅΅΅4_^pjάΏ_ιzΨΡύaΊ6χvΒλ/oLεϊώπ;ΒK_όV Α„Έ)ymu9Λ¬φ ΄α žγk°RŽόΫέ@@ΗάΩόT!o71Ԍ%@–CΕΔ±3ΈςyτΎ©τΟ±6†m\α(W3Μg•4vήw4άϋΞε0„ŠQ§jY,ΜaΆ°,j†%©a°ΨΎΑŸTˆk}ζΏι «XLkGJaώΨL8ΰ@?,€δWοXE@°E ΣΞS¦| ԐgIlΖ§΅EAF€“ͺ…Ϋ`6ΣΝZω.ςž™…m‚­P5°*4T5ŠkΏC0“…FŠ€λŽΑ°Ξ˜V0·JΒ6ƒEs₯ΑΎ’6cφϋ{Tψ#ΰ΅ ΒHυPΘ‰\oμc!k…ΥΕ#a€z…τa μύο\χσ1xͺ‡rή'ys>‚`’Ψ!λς’ΐεσU,^XΨ³•κ|X"`v +΄…P’‰₯Σ'ΓM叽^Yœ ίv :ΩΪ”‘=@Žs&ΕI«žVπ‚^jφ“<Ϊ‹η(z3…–!¨W9¦ΥYΓƒ’R²μE9Δ5<©2`…η–σlDJ$#F#)@ CA₯Κί2Δ(AΏ¬'Υ!-@C»σ]G¨ΰwψόζo}Τ―όξ9Δ2ΕggΒΤ%ο»P¦‹³v΄VPXM¨ξe= d?BΞ$_Ό^’ƒeΨ΄¨>£σ’% "ε£'£άKΊ…Y†ΰιPeZzCΊ„F—4ΙζΦΞ2F}QfΖÁρ· OΡωΰ3c”\ ³ λΓEGΌuδ&σΑ¨uaΖDΕQs<ρ:T2³5IŸ0˜TƒJΈ„mΥiΆŠg‰ƒnΩvη^+ΏžΑw4}ν-άΏ9>^ΣοLΗ6γΛ8λ­ςC8ŽδF­f*™Fθ<σKŸώ±?šœ‘·­ΟξAώΐ-  8t&χ)ς; ΐ';!FxΗ@?6[‰©ΕW^…'ΉSHνS>l<@p\Δ‡ψ;‡ΏΑlf‰ΡΛjϋ1'΄ΧΌ~£J7ο‘ΑƌΑΕ£lυ½~>6vͺM_Ρ·QΜΑϋ• |Ξc_5ΏΐݜjYΰ ‘’;€°ΥΊΕ­°±©Ic ’έι ƒL~°ΡώΉΪ¨L8±Ξ{ρdνΕεΡ±΅°Υ}E ^gάΕk'c0CЧνdΏριχΏžπλΏς™h11΅—©‘<°δ‘j‘jΓ₯5°κδρΉ0σΞ|¬Xu–2Σ;δΔξ3Ηζ4(#‘Λ€Ϋc?`ž~αŒ’3Σ"NΑΰ§Ό‹Ηb>] 'WηΙσ3¨pŒ©α θkWφΓ‘Y[nφ45†ΊAs;TƁυά†χ/H«c,|7†ƒwD X&½  lΤ’Z cYrφ,Ϛiξ Ω[앏ό•χάΌ]’οΧήάηΎx²ςyϊ8±œ †Er¦‘?'Ις±t΄κπžUŽ 0cΣwdΣ!Τ―ι0{ΘL*˜ίcaΌ6J §#Γ°vά?ΖΘmfˆXW@{ξ_‚žAŠ΄ φ’p πl§Κ^ƒmKͺΜ:AΚX„ πγά»Σh}ο£BΝKIψa±c# Έ”šι_<“v$‹Σμ“ΞNe‘Ί…ωLονWΒΨΦζ,χnφϊN•‰g¬Κz€ψq1ΏkΐΰΈ₯yμΗb0½Ι±π•Η ήχŒ|φΔέΈ}oΈ%τΝ|Π₯qύΩϊhΨ€’`³•Bό£?ΟlH6φ±ƒ­«a α‘Ÿ₯†@YΜJF#~δϊΞ0‹Β:φϋŸψR,ξ:1 \†Ύh¦k»λυhΌp/K)°πΛόr™œΠ“œόΙϋΐIΐ˜Ϊ1…εxΔ G\Λ{ƒάήYžΧL=±t9σd RCDΠTΩLx-α.£Ώ)φ]ͺ†’Λ{3(“y€μ@Ο]Α„žaΙ{Nw’ŒΓΔώF΄‘ηΘy–B’·Šο}_cžS¬λζ&σ·AJQeΞ cKΝΆyϘg/"OΜ>ƒΛj§Γ~“έ:‹ΕέO_ΉΪk;ξJ³ AUŠ•T·Χ}yγbλ“5œ™BΒμι<Βν«ά"#ΰωv Άh’M=ϋμίΌžΙΞ|9CΞW3RI©‚@1o€e°Ϋ9ΜG½΄Ο&V168Ε0 ±³p/Ζ'π™‰5™ο'Μ'| ξm€`(}@ρΪ“λ‹―γ—R%~–ϋHα=1ˆΠHjύUnxΟ–ψ–SΪEK΅8,u€xh(τcгTADlΒE%Ω‡½nOΑ™·V˜ΧΝ§Jš ˁ{…ώ°…8{ϊGOr¦Ζ@Lc2Χ"Ϝ+=XΌB™σω¨l`;₯\ζ«MΪ<$ρΏω>΄±ω…ΰ5`Ντdβ(σwΉ}# 0μπήΰžRΐUž5Ό 5ΖI6tu\'gηΓώ±bœ&3š΄o~^χβˆ8'ηfΒji6ΊμΛΜ!i†Ιζ―^W,}Um1—ΌDέΌϊhυγO‚μ"‡˜iΗ΄μvϊ₯!'i5Y—;ψHμΎqxZŒ\M ¦½Ž»Ώ‰Υ°‡ϋŽUΐK†‹;†Δh™ξqπ›3ΖG6€oŸΣRD ¬‹Χα=Zϋ –)΄y2όΐ»  \gΉαά Vf@@—ωՊoŒ]`ξ’ψ΅Γ:_ηZT³ΔβόF+^HξμP‚›4Ž;pGί³’ΤϋXΈ€]†ζD@hZBΒ-xdz¬Α>ΰ sD€Gψάg/†:–Δi΄ΜΒ"βφ šiΑ΅@†VΙ–ΖΕbΆ―’_Y~8σΣ&(π€τ‹‰t6φZœD)cpy«}χ½α}?όΰ4ΊšταΉωj˜ƒv/wœXΘΉηޘμύdκiMΗSh7£‘ψ‘_{Ίw@BUΣ•τθ .ΏΉξ;}$ρ]>π‘»ΒΩέ />{™ΐ;…-Ε xnέΈΊv›h-Έu―ž₯Bdωͺr°X±±Οψ•Οχ>p4όΜ/4,LΑύΦ2σ½•cŒ3χΒ’'_ρ(ι–V ]ZΨΟΓwt‘C_Λb+‘ΒZΓ_Κ΄j\Pϋ€ωΛπž!:ήΞώn΄2εΙRP# ^0&…₯ ¨*Xψl/Ÿίη¨fm±Ξ3¦„ˆλiF(ΗαγΊΧR@Cΰα‘d**“Φa έΐδ oδ9Ј|pSΞiE4pJ‹Φ·€­ΙΨΨ`…`ΛηJe?8Οbλ“ι€Χ3Η/©τθc…F₯ζ™;αϋή½-Rρ ώωΑ‡V ν„OŸ½Bΰ1V&¬_ߎ…LBžF xΊτλ͝°5?‹₯όίπkχwΊδ!ξ…~g-,c…KΪΖ^λ6Cv™RΪXψZΘ΄,Ο?DN K wtι𹧨₯Z.|ε…kαύΊ3ι­‘c¬ύN†ώf7μZhf_p­ΖZ±„ΌŽ°ί-Ωlrί)Ό7Ž !2ζ}ͺ‡KqύΉ%Έ»€4³€οώώBXΏπΧH³©Η13Ÿγ^ώ—-,Έ¬Pˆΰτ¨Β―„Λ)˜ŽΗ\Ί¨Τp έZΈθBlΊΎ·/XϋџϋΉΧΞښŽH^¦·|%j››/yΠΙ Ÿ {OfπέΥŒ:e`ώd˜€φϊ?ρӏ„ί?5žέ7ΓQ\ΰFά{Π¬ΓWΤε¦Υ·N9έu\ͺ ΕZ hγrώα½ίsoψOώϋΔB”€Ψ—―m¬ΖZ%h‘ΤzeͺyrΔΞQθBš† Τ°‹UƒC9Ltϊ]δ}ςγςπY84¬nΩγ°(HΆ³ΏΊυ0?^„ζAJ(¬κiώή Π7@kΏN`nbΗ2‹˜ι ΙkTπ„ŽμEsmΝM.]@5γ0ΩΉ‡PϟΨ™;χ²χΘ±Ž2³jΤΫ„ZV@Ÿ΄€€mœ™Λ\ρ(πώœ4/ΖΎς"¨-Aq«“C_Kό€ZΪX¦"PΉŠΎ–hMξ;γ$,κΓΙ:ΚWfIž:ψυŸω₯©―=Ύ–]»MίH:τί’ŸΏetxϊɈVσεΡH†ήΐRVΕκ NΞ¦δ& 8{Ο ",ΞJ’˜RΞ²Ω1‰β„žβ,ο™χ‹&@X)ΐο‚kŎΙτΡΚΕ{ψ)υS@ύŽjύΎ*UƒƒtPœ 3”“~œΓιώ»Β§?s‹Σ.ͺ rΚ Ύ|ΏWΜˆΠ?rW΄4Θμp°ΐ΅q #ό€~ ‡€e£–Y›Βΐ@Ψ―1JΓ¨Ε°tΧ0wυ½Όψ™'Ÿ“ΗRGv²Ά|ζEov‡Ο »{‘6Ξ§ο"ώ?ϊ+ίοZHvρ·|ΪCεΓ”ΎοΛa‡ a R„ν&k&+χ-Ζ²o|q=μο’i [ua>ϊδ‡Β‡ƒw‡ΥSΣλΗ[ΊT±©–Σa …ΑΤzZ’ΝΛΦ²NςfαΑ/Uš¦uI‹­A7Z>=+πΛϋ@4uε)\ώ‚Λ†Μ³χδ–ξG‘y}ΪY΄*χp ΄sk­‚mS8ςŒŒT=4©±°ΟΗΉ  ˆ‚γ!o™ή"ଏΒΡά#χ0λ8Ηυ\³ZT΅ΪGT™πΩtM›aΜ|滝1Š―Ή˜ƒλ“YA܏Gˆ€l‰±w^T9Ÿ»œ€φQžΈk)μ2f―ΐ.γκw.χΰ#ό !ΏTjΠ³ψ±Λ’ŒώΗο9~δέ«μσδσ½0ύ½­νΠ›ΑSR„Yΐ•-«Φ¦…B₯–JTΨƒΥΕBάεoc%~ήτ€u›FDϋΘ½‘φŽ•πΚoΎηχ"(jΰ1¨σ5FŽV–uIΘ²ΊΫY?zzξ}χ±π]ι!Υιpžo>Σ—ηuψ͍P!W΅ΚZh—HcηzάBή΄Q&δαΨΨλ*š$E'Ι ύ—ΪΤb,“6iG€pΉ‘wo˜Α€/΅…=s;σ7Χ­Α¨ζ6Wv9b‰weZ₯tH_;Ό1e7΅Δxq]eŽGƒ@Z ;ζ΅H-γZI›«Tγ@q‘„B”aŸΓ΅fœ²(Gξ-?ΉΡΚiΖ (Σ|v)±h9τh±f_vΙ_…η½xg•Τ›3Θ–LΨΒs±ΟsΘ“vŁuCHι T1‹£μ;³#‰δ5 ΤiΓάάΗΉa*œ‰έN|οΫψց[@‹Z8:?&uνΫϋψK€£{+2F―TΖ’F ŒεG‹rδ%»AΩμπPε€NτhσοόK`#m­ΑcKo l΄X#τπ¬M π¬υ:6 (Oγώ[Z(†ο|μN8ΛX‘ν£ω³.νt€‰ Ή{} ‰άlwžs|™%Δλ¦ 2 EƒΈAΊ£tχ«aΛ―δFP«ίύχΉΨg67ιΪΪΣαH’¦ϋ…Θp±·PYš»½ΗΗχ|Ϋjκ:œδi7‹?ΔΜΫΞUŠΩ`•b2jύΔw ίσΧ 5zVŽΝΕΓgΪχϊλιV= _r—ΈVLƒλ΄fΘMT?3=“σ(¦™r}”£ή@@•cfmΜ›β9rσ mΜ₯Θ όT†3δψl K”ΊFώ“ϊmfΚΰαλŸλζο—¨ΖVτπcyνa5*>EΥJ\E/5¬R.‡*εΥ R 0Κ<›e *¨D2ζVQΨΊΎΞ½v‰€ΛjΈΔ•θπθϊζM1O°{(a‹tάΣΏΐΌ‘‚2CΕ6Ÿ§Ηž±@Ώ„}1Y)‚Ψœ?-xϋ(Πuϊ[SΙ™R›η°~ίb!άY^/Ι9M0ΪΕ­:άg@«`i¦ŽγΕ8^Λ„{ΙFπNJΐ›™eZν·/mΓwF©Γβ~”5Ή€'8φL±—†Ε£3ΔπQΡ‹tEΤμ5ΦqπςβΩ½pχs(πΙAΦΝη©™ όδ£α4λκ΅η―„—ώθj[₯p#8E„†Μ|&95VQχ~ϋ‘pﻎšΛσΎw9ΩΏσkΟFZΤ[ P+δ6JzΚ֌ 2Λ(‚ε,Ή]Φx+>R.ΜPΟ“?ιŽΧ΄Ϊš!Γ`γ.^ƒΝt#υ‘Ή……”ώX)Ο φM–β_.s”/LφhZΛ=ξ±ΎΘΑͺιθσi Ρς―ΟTʊ²Η—΅x IΙXζŸΟζαΪYb βžφbN!6g‘ *Ύΰ±ΙΗ8QL°ώΗ#™^₯Ν‘―€ΌdΟγ¨TMA<°ΆΈ#η?—xάοΚgUžγ©λjΥ,©eΙΟΣο_qC?~»pJ’₯ρ­όαι"Fρ&iρΉTzψθ°‹Ϋi‘‰χŽGˆδfΠΨιœαΓό-ς”D76ϊι€ηώ.RΤ¦¨6W¦X†7Zu^|σΩΘ‡<³5ωψΔΘΛ‘ΐί'ΰ‰€Εΐθό,ypηΒ?ϊ?Ώ6*ηΟoœ‘ox Α·_H9:‹–ά§ΤξV¨\φαίU±­ΞΒμ…]@•‚Ο¨qΛ,+ώΊωtOiυ$g/•\±jFίΏΆΆφ‹kkΡL>y¦DͺaŒS/Ύ˜ΪyπΑΏύbc8ώΰg?y„0Μhyψ τ”“”Όv3±ώ2”Ώώ]6Αβ8„1'[ΰ«yΡs‚ƒ?Pos:bΑ5@“Οΰ:Θ59΄„…kΑ‰ηύ«€š*)сZL,@²APί7@IΡό.πx]GrOιk°‡…R0œ"ΐ΅ζa¨εKK–ΰšc#KMΑΚ|}‡Αƒ&eJ›&άwηRΈ“*‰˜³9hsΗΈ έ{ξ±d-ζζž*ΙΏJε$>ab!/ς»cͺ.‡…³έkQ^<„ύ₯™qXΖ|…υϋΐτΝ'ZΕBχ½χ@ηπ‹Fγ3»–ήvWω³ˆ½YΦiΓΐΙr‘¬ΈŠ™~8Jήρ…ς\ΈŒεο*‹ΝŠTkL£„+ -ΩώJΰ½G§ήΕ2ί‡>rOόΊyqΧ™ kc7―ωoϊώ[Ώφ™Π‚"`6ΝxalIg³‹5Ή$‡,¬―ˍŽωŒΩ―θ[ΨZ‚dœ"Ηψίt£?ΛίΌFχΙ1"έINt "DΡ+‘dYμΓ{`Z‚ήe,AτήΔ½£ν”uΕr0oVΚ5¨°o0"{ΥυΖEγ~φ(3΅';™}ΘήγOIW‘ ΰ\œΗЬR,81xArΌž3λΤISρI—θιqA^š5ΗΒ)¦dmν ¬γ­I‘‡{ŸΨι<8‘ΖσgΗΛ{2ž‘φ“p Εl+πž•ΓœΐιLkV­Xωe‡δ₯Σ/Γ”β†ώ-έΊύηoΒ ής­X©|Ά?θώΌDΏƒ)ξ΄ΰ™ Ό!aُR.lγ1‡ˆΐ«šΦbsBGί*^ΑΞ/μ88y„‡M kqŠ@ΐθŠφ ŒRjrΔχ*Ψ’1‰Χ*aξ5…KgλαόΈ»θC†œ―£Αΐ|βΖρ>ΉΨZ˜Σ€Ας3έξ6n§y܌ΥšhΛD›Δί€Ky›ΡΑΤK"‡ Ώ5ω‡σιz·I!Δτι7vίwρ*@:ΝοJΦn*(ΐΖΟΆR£>ϋΒΥρ₯υƒCnΆ›αηώΞχ'»Α_ΰOŒrk°Α¨-§.S p… ‡[―F†ƒxR>—‡ΰPγ›X€8dRό"£ _ΪͺX=eκL“–#²*Z”€<΄p›.Ο>y„(wqΈΖΔoγΨΌq‘ŒZΏ8Rpk΅Υšξ/±φη©”˜…aΏ‡L-–αomJ7šδf”±2―’‘$(crŒο<±ξ;Ύξ`άϊfPρpεڌH<Τoς§“<šj§Šc‘>€Υ£"ͺη¦ ΪΡ]cXΑν€@Bω¬Cέτ€2μμ†E€δ‘jlbΜ.ήΞqs”)oΟ]EίΖ ,σάc )|S‚‹:γ|1ψψ‘r”Β m—L$Ήά t+ΈΡ±H ε°χ1;―ξ’‹ΊΘΫέL‡ψj―ξ|ψΚoΎγa†‚΄1{NΏa‹ΈUτ€Jˆ,]Σ¦XΫ"Ξ"‹ηDΎo›wš‡Yz± I›KAͺ ΞΎΰbαΌ')-cP§:’Ζ t ƒΝϊcΎd½YΖM43¬ί η‰Χ”~ε!”βlΠHγΎ3ώ Ηϋ€…d™cώλŸΧ{ Κ-ςKΑ1ΗLQεχ2οϋ$ο2 9₯έϋ ›T"σΔKS·ό.A΄άΓlβxNCΑΦ`ΦΝΟ*i‘zΓ=²Œ γ<œ­-dϋ©αΏψΙύ‡^‹Φη΅Ϋ…SΎ~žoώg[@Ÿ9#”όΩ{`Λσ«ΎοwχύΎ₯ϋuχ¬Œv ’C7`ˆlH8’ ¦*±qμ8ΰ”‘0)—ζ©‚]Q‰(—d Η…P$΅&–Œ¦$!y΄€žΝ>=½½~λέχ{σωœΫ­gΡ{#4£ώΟΌ~οέwο[ΟωžσϋžsΨ{“ΩύΣIGŒƒ”Ρ[¬@Α²G˜d 訛ώŒ8J&&`*2‚ž‘&VμŠςα(y’χΕ‡°Ό/€»]‚Žφχ9βΓ3Xƒ'[,Y-΅Δ‘W °₯ο-(Ω<Υ@»Q1ΥΜΗYυ/πWΞ½›Fm@5P³Ή7“+ό\{ΦΛξ?Τ“'ϋατ7ώήχςŸ‰>Ησp—Βψ0|bAlbŸS€γ_~‘— Ό Z―§\{) *_Α2γΑ2Ϋ„@OΟQ/œ^&͘“Œ:ΐ¦…ΒΩΪιEak]7C”t…²‹=AYηgκR‘=ψψN©XΥrvηΊki˜‚ŒX˜ΩnΏψ]γNjŠTμ˜Ϋ¬]ΐp*ΰύ=Ž£΅ &Όκ’ΕNΊ$ΛΎˆ±ΥζoΡπΈφ0σq}<τ`.Θ³έi9­>Ϋύhπ¦σ`~m: F– H•ω[…Ιu€>±bμ·%°_ξγλwv}μ™jO ¨cΦb=CuKζθΦΑΈ€ρ,e8Ёΐά>ŸΉiΝι^κα#GCyοC먲~ίϋoMέO½ʎƒσμΏϊΠG~Χ>Α.d)°τˆζ€ΝΔzgξYGs© ¬—@FΠ_†x“ΑΕρ\Υ¦žuB««z‘Ω—Œωlΐψ*‡}#2PΟώ‚66Ι -…C.|•S:χΰώBGΦ‘›ϋ?”:γ₯Μ•“-a‘wΙ”“]9^^Τ²Ή_ζIτθΖuc7Οj HŒ-ΧΎtυρbsr‘σΉΫΣ’Œi>Fd°? Ψ[ΰωγ]2Rό€§&K^_42/Šy-™K° ΰM„rhω3(i\Θ[£θ ξΟ‘Υ#€7›•tt‚[ΐ&Η2χHΎ9™ΰYΟΐ ³ή@yεςΡŽζ$ηρ>Ό[Ό ‚6»Ε*J•:άZ8ž+€Σ1IΘ‚tFά·5κύEnυΆ31.qγΓόs=P³ΨώLšοe2£Ϊbή#*“Ω;Hι·ήω‡ιΏώλ>ςλr,Έύ…‹ιΆο}αΧή0&΄ β^ o)^(ߍ"C©εk(?—ΗΑV½2w­Ξ#CτλŽ9UAγε]˜»Ο—H–Ω΅\|ρ6ιY§ `ηΰY^’’ά3  /Α_Ρ†ββη.λΘ’*/ а€3OωDZΘΟ€ΫI'ςΨή"#˜79bΆψΝ Ψ kNήwΖ¨™Κie›A‰jŒ8>Gqi•˜°g”A.³ξΣ‚s½y9ΓοΣΜΔaκ,’ŠΩ›€#½›©.i)[Δ‚Gfΰy^ηρL~|§O>tζiW'Eg9p+'ε:―1x¦™ΪΤΐTψύAΥ=NπΌ†1QLM ‰V']…~σ{¦ΈΚMήε?λ!ύΨ―qΏaάœ«YŒ ³ΝD‘Φ‹ΖW—Tv9 «&š₯Α“‘jƒ’ψyŠWΪΚ‰5‹"φbΙι6gzžϋζAHSrΗΞ§―α½!ΟMP@ΜmεΑL–Β+˜¬z³γώzJjlƒKΌΚ±Β ‘€‚VIϋε{πd£ΰr€²χAhθΕτήYβψΒ~'°l#έρΒιΦۏ…$‡5ƒƒͺrOg=VGˆΤζ~!$Θ‘-ceO'γΧ’ΏΉxfΑ_{yΆF ζ}o½Β“Ύ΄€Ž’-5ΰA“4Œ―_ύΗLεβarδŸΓιcD^›γϋkΏ ή4χͺ…]Œ"ŸβΝ™€§a„©σδ¦k0™‘’λκkzbUr Œμ<ΉŸ¨^(₯Αc`#θλp›(d7@σuOŽλγς…6)οPˆΟΠu~›Šg(κ2λΙ/< Œ4s…4 ΊΛ’4@l^…ξΠ  ΆύΚ6M7Άo»H«γ9_₯Η‘©άe£ΔxΈ6ε\ΰΝkp5ό,­~=uΧ,H"ύgI_ Ω©Δρ:Œβ8žεζsΡ·j½s$ΏΤ£δ)¨²€'<€2Z°2ΐL0–½]lμk1ΟΠx?·½ΜZϊ—]†K;δDdN™p(œlT›i­Džrσ–σu ώs“’σΪ#NΒρWr‘=c©NΤξ8UKΘίsξΑνtο½O<MώΊήσSgξOάσxτ·ŒBC·ΒϊτKΎρ ύΦλ;ΤΣ  €ϋaθyb¨Μž°–τ` MΉgaΓ^κŸ( Β}[¬C ζμ{+|κ\Ρ3!›<ΫK―K•(³ί,)ž“N’‘ΚϊΞκ9ηžQ¬!2άW›χ{+’΅Ÿάς.4γhϋ½‡±œόFόFͺ΄Ηqr,Υ‡΅οΠ.©1d‚±ͺΓ)§XΔϋ³OρR#OGpΈ#ϋZι˜Eΐ22Ίˆ±―ξ\Ω`ί²’9yΛZ:Ή~β­>ζξ»ΟΈn\7FΰP#p¦ι‘žθŸ>›²gΩΛΉ|ωK³ΩδupKz£Ϊ=ωψ•ΤίΑ‹ΑξWΰY,‚Ι3ψΟ3ƒΉΗœ»γΉ—ΟΓη”O–―!ψ¨^¦g°XΟE.b+žΥΙ(Π&μαo /> §8Ž«m’™ίΎW,ΎΐΒΞln^Ώ±7Ϊλ<θEΆx/Pδ;ηΉ§Ž'y\ρJώάίϋυτώίyΗvίKιotΪzθjzήtΗΧΦαλŸ˜©x_~­H¦Fπ{ΕaρΣrΙO·Œ΄Χχ9@‘™ΆΛJoŽ‹iΰ όΘωc-•Tn|6‚τPθκ•ΙyΎοΕαf2υeϊΓΗΠ)€Os_ο7nJΣjι₯3σFοτ1ΌM¦ν#E$>΄Ž°¨ι±Pšœ€ΠωxΌΝμ―Ÿί‡–"οΡ€A=P}<ΎzΩ‹€½MGΑ-s³{dh§Ή΅ε8ŽΨ#YNrΚμъΗ8Œa³‡Γξα<οCγ‰m§+#ςˆs?¬'1i₯•j/5N<₯ϋμ .μa\ύΚ#W0$πXίkΗ Ξ&γο©”%ΤΝπQ@ΦD~oDΐ€“„-ΦdkΔ©N7ωω9*42L‡œ>< GZκΛǞ¦ZϋώxΡQ/Ώ―Λύ>ώΞΟ¦{Υ琑μQφ™iσŠ|ψυχ@kQt²–j+μΛ,―kά3ŒΧ°\b±γc/B"KΙ’VΑιFφˆJY €ŒkΣHh‹τ$χ܊˜91αZδ4¦ύ"4d5μ ί#sG?*΅Ž ƒιΆB§ΖΌι"†ξύ`vœμˆΣ^?μ₯ώά‡^&XΦ‹ξρ,l φγΖXͺ³,˜dΊΟ€5_!8ž”‘‰4vdbυ\9Α~5ž„=«§Ί„—½ˆ‡ά8 ²ΩΕ^ΘΡ.@4ΊrV)Χ³³Βμ3Ώ»σή?ΨΔι–Ιάΰ>ΩxίθυΑT ³Z}(Ι’$FxvOέt<έt²―xΆΆφΜKΉ¨4λ™ Z΄ ΜΰQ|y~οΌ}¬p»&'²ςΝζ©7BPyŠ FΒ!(h$@X@΅€g­χxŠ’jž §ž6ΰ~ ‚ϊkιL™Ι.οΕÁ”De8b Ž5΅N€x,ΛzΛζώšε¦wηά|ΐΪ#Ή>²“¬Xζό-ηωΨF―τ:ehS p7=όπ%!‘…R0ίνΑN§Wr³Ξ*³ςρο!―ς KՏ-F£_ Ρω0(2Ύ{πrϊgμιgφGρ”£ωθχ<šžϊά…T rήs1%zχ=B `μXγΝͺΰ}•ϋ,PΜdšΕ‹›η‹·2―8Η­(DΑ±UO΅‘υsι„°y<ΠrΔΙ^(£₯F(vν<}£Γ^¦k–άSπΖρΎ@«at#0Σ=*°6 :””{Œ-|Ρy­'ΓE:@οO˜rTU”†ΟrœŽ;Ίͺ7ίB`¨ϋϋχκ1τQ’YΫ8ψθ.`,–ŒœtΞΎ "TÏaǚrμΗΜfs%‰=Nƒ"§sx³xύN/uΆ(ΒΟ-ηωtΟ=•F₯ΏόC/ύΖŒ?έ2ΖαcΏριτΉχ£·€:‚D \3pΠ=Μ Εώ΅μ΄yŸίΊ‚L­¦}hZ y― T°εβΩ"1μ]ε·TΊΓ^ŠΝ2§Oκ Σ/v‘exδ31˜>˜εGZ 2@CGΠΩ/HWΑ°5:…€h䌴+~ΪηœmdμKV™Γσfθ)ϊΓ^Κ€Ξε^Βιͺ³"kν0}ϋQšδν―<9ΆΟŸ»š*R™Πˆ2Η1eVΚΘEd6{”}Κwϋ"ΝγHb$θ?ƒ2@iμ\;ΦυΖ Νω[ΟσΕζ"Ώ™6™π׍8ά<λτٍeΑYΎω•”i‹AsόL­fϊŽo½96λη‡[©UΖ£ΦlfVH”―Φl6ΣΕe#Š=nfӍΰPŽπΘ››β φ¨ΧTvζk6] ―ΠaΜο€Ι+€ j‘ŽxοξήD”9ΕΫ₯ΰ“ͺ‘8 žΡX=αF`p-’‚£‚ΣΦLh#MΌzΔδ …€Ρkb¦„κj5zΡΞΏ\zθ‰νπ ­’  yνΦ`ΡF˜rόoA•wnYό‰O_γAg:™ϋfωα> _Γ3Blb―žwόΖύι»ΎϋΥι΅―ΉύO|πλϋγέΓιοό<Šs–Ϊ€Όƒρ?Μ…~Pώx.4Ρ[α…X ^-–[›…‘ηΝ*&šTpp™/Σf™»[΅!ΏγVΑ©‘„WιxRαΝ °Qπλ-2wνεZ9 P€ς΄υu€ ½BΈ/Λ¬o(1@?]κη)¨~Ψ§όσ˜*rx¬3¬χ9ˆmAŠ»1ήφΞVΪΑV'χqΉ€²DQiΠΙλφXϊεsυŽY>WC1Ζθ0“ΒgŒ‰ x‘=ΌZeΜh΅ Ŋ±μΰω0–3ŽˆΩΊQqΟΌΏBiΉJ™ώLƒρ(›φι_ γΉ΄χ…{nKΥfυ-|f>n Δ;μ₯@΄kQΉY‚˜-ŒO‘2Ώ γ/ά»x–εΈϋ»oκ¬Ω1ϋWΫi~~c]G‚ΖGΎB !cg¦™ήσN„Yϊ+?ϊς8ΟL―Žζ«ΣO¦ϋ?ψb‡d!Χ^^ΉΓε•|zρ‹nbŸeΣ£^%_9₯ΖŸΓV’Nόcqj‡πά’‚ϊAO£σ—ΖτσΎεdΪ~Ί^\yΓ3O€˜Κ”s'xaΜLΫΆiiΐ[&~A°‘F«ΩŒ₯°ό΅7³…ΞυY€ΔDΎΨ‘A‡χκ9ΆˆΙQ\z»5Fτt[”„%Ε33*&•ΰ‰7q"MXsϋΘεYψž s ³‚J=β^Υθw™/ΣαEvξU‰ϋΎ•ŒΒ’ŸΝxΜhg{ΌVΛRάθ‘Eεy†΅NΏΑ}>όHίΈƒ#π¬ΠιΜ]HΎ3©;?Ν^Š•ςl<ΖHžg:”@ε8}Q(”3·ή’yμψjνΣύqφ'.]ΊŠaN’'„Ν₯σ—Σ€ͺ+ΓT3‰ƒζ”ΰ] o‡uHΜTˆjGΔqίG3σp,ˆdίΩή ΌψΌX¨ΫΩG( ˆΝ(&„›όηΘ-χsxΗυPͺό°»y.  ž Ό~%΄ΌžΛ[n^Η‘B™9,Θ 8θΰ-’ojκ£+T―«σ}6)₯•z1ΣΧ»Έ=z…{:½y~Φ}ΩΠΝμ—Ύτ·χ_ρͺ_Ί/εΚ?˜gόT<³\9ύόέ”ώΞ_ΦτW~δεκ€―Ϋeί‡ΊŸ(=;]*dΥ…Υ:‘‡ΈμCOΥTtY΄…\θ€Δ‰Ζ―™Šζ5¦Žyι:}ζJπ«bqϋ ιyΤxš`πlT)‘ΨΈο€gͺ'#τIK£m’οo§ŠεQ]ΦΟRGΡ’΄ΆFUΌT!:Y§oeJ@·[ξ•1`˜“ή΅…·zΜ>ž΅ζJ:uj=ς•_<Ψ%Xο ŽύWV6ϊz~4νf©ΨwκcRͺ˜ύΐΧώχδ‰f`]Έή²θΏ »fέpί–πkπZ­”Ά΅3`_t#PŒ!†ΖΑςe\'¬U†ρŸ:Cbήχϋμ§|ΊΊύHzΡkξLkΗ—yœjμ{ŸGφΗι7ΨO}f&_Β°b=51Ζ 3P9rκzρfπΤ§œ—·@νρ(u±„LΧ7bEήlv­†x—22χΔ1?Q ©ŽΡ°R#°Ϊ†bπΐΈM>ϋyςC»^μ‡_η°ύx&>?D>~”ύΰ½O„ά‘mηž”O\ΨΙ6*°φšPv‘Cΐ°m?~†ΖγzBn”›t5θα ε>.Y™ΖdOζa/SZέ² Υ‰μ(μG Ϊ φ τ6ΝhcεωΚΝ-؜"ΟgδωΞRξU“ϊΜ_₯Ž a-χh¬Y¦‚ϊ~Žμ―‘ΏX zͺέn¨+NίvοeΡ(9αϊ&”msn΄Ÿ1θP10Ϊv‚ΪeωξN YΐλEήh‹d'θ=$]FκFΗOkγ4Y½ι‘/i;,Κ|šϊ/SΙΟKυFΎ—νύڏί}Χx3έ#ζ9<‘ύΠ-½qƒηΒ<ϋtڌmW;˜νΆΗ“E)+³Έt₯›ΡJζΈ}ΦhΓp_άσ_ώ΅oέ|ϋ{γƒ?ΥΓ@KT@†Β)ΎW뾊›82B ²ωUE°|Χ>Jg†·9 ‡yAώf₯Υ.šάε^ιa€ΒC΄ ,ζ(x‚E3vθqδfeϋω DT9―”Αηͺx2š fϋ.₯v}ž†3„ε GώYύUΔΓΘ^< Œƒ2—Η]™U*ΏνΟξ 0·y„ω-OŸNΩ³g…³ 3MΕCY:πΑ§|•θˆΰ­_ϊGMχήσιτι―¦ζΧΑ“gή™·ά“Ξ}Ϊ†D“΄kT\γ{sνi§œw„ΌΌφ –‘Ζ+Ĝr4<Ηΐ‘ΰFdL)’η¬) ŽύΟκYSΗ₯Β0• Ξ/_½5=€ŽF€‚ίΌΕz ½Χ>'#G  ε~έY*V€An¨ΑŠE½“c4τ^³iΜΚτοR―Ίέ€lΔΊ¬§cλMͺkRŽγ­νA/{žz’ΌTV¬βΡՁΆΝs\ n/ί'15‚-Ο:¬Π(Σ†…§;όΌΘ“!žc…Jgζ²^GΙwπ¨Σ'6Χθᑑ㒍©·Rnh—Ώ@Ψ9η“@ΓQxa3ι,έtη‰τŠ— ώφaΫ{˜Ολ“­τσ=RΝΝqΈYΐχΉL€ 'Rδ|Ξ²ΘϋΥa-Ή{ €°Ά1pLωμ€)θ†Ί1`˜χR ƒΎ\,σ>OJL·™Η’NP|”‘9WΙ€π<’ΎυεΗΣ«ψœ~#\žτ}ώC¦ΦQ'ڍ™«]~‹ε‚:qO|ι ϋ^2¦::f­†ΚVv(kƒΝ©‹ΫŒ O€κŒh{™­bΑ)eμ5} dΝσo@ •λS=#"[8'`N0hŒ³ΙΠ1³.M;Haϊ Ταk¨›e£ §8«‘ΘڎœΦθ=Σώ,₯Œ›ΠόC̝mD>©7G3€Θ1–vκ ½A™ž–j¬JXh°Ν‡_ev)ήd15ΌξžL!ƒtP "θΓ_yNΎNP¦έ4œ#ސ1–sύή•γ·­ώ&7“6ΣlσπΉq‡##€(yΦ_!ώψί0xω·ύΟΫGΎUAbΜ«[Γ,»Ά"ΥtτοΫ.ώ§Ε»>•]Ύk>؞α±D pd‹Ρ«UΒk| €€ι2^,=Ψ ΥώrhΑΛbΠΰzt'³hδPζz(δ6TΩ ΔΜό‘Πψ*Η‹χš6―ρ7~ƒ†χNπ%΅€?8αgo}΅ Ά( ή"5˜|Ε.ορφm~> ΒΕΦ2m¬ώ~§{ͺ²v§eόvx€ p|u ž½Έω¬φH?θ "œcE‚#gl ψ,iώ‘ΞWήJo}ΛΣ«^υόC=χ?τa½ρ_Ήο|Ί—J('Η”τTπ·Θ3ΓE€x¨‹ϋ…Wχg°MΟ&±0R2αΤBω1x¦€KΠU1βoΆ†R6HΟMP‰Y*[Έͺ—Ι€B§Η—%«s(VΥβ%€r2ΠΠγη}:ŠλΑK(lNB\Ή%²H΅€0¦R,σΜ m³˜΄‘¬ω ^hΆJΣ΄_*Λ ½J5ύΐή~?eΦρeβ5[@›Χ,Ί~Πgϊ:`ι<μUC!Ÿ$λ‡ΉzΝZ2a &υCΖ¬ΐf’«-G3@υάE¬§ίa f†œ²δξΟ²»9M‘=Ϊxρ‘tξJ?}ΫKN€—έΦψ3_Δ3χλO\Iβ%Žθ&π+rбΝβV@oΑ%4.dσθάφ•μ3€0ŽΛH¨AΎ!3fΚ%Œ¦ku²…όθΖΧρfς7dI`mjΖΘ™Μg†X>}8KϋΤίϋΤΣι+»½τύ―Ή- ΐωΟςzΜ½―?›v¨άif¦O¬’§γA™Μšs„Xi­ηςγ-RšqrΤιΐ°²¦ιŸYΰΐgp[J‹₯ΖΘf«\š±F£ΡΒ&‡½ά7Q½Uyΰ#hlM7e@IDAT–φžΡ>ΜνΨ‹=œ䦦‹€e8ι‚RώY€˜ςλςΰδΚ9ΘQѐ5WΫJ†r ;Ύ2s{Ψ‹aBO1¦ϋΘA½τΚ>·΄{Η@^ƒ ƒλΜ\ΆΛθ Ίkεd-ΪΑ.Ϊš(#8 (¬#£”O{Ή†«(žΊ αe֊ΝφΆχΰuϊLVˆΥŽ7Η7’G€­±αΝn‘‡cˆ°Θ8nμώ*5Δ¦qΖΗw_‡Ζ0Γ#)­Aιl)dA΅ΰ9<Π@ΰ’ΐΣVάCΑ”Eb†εΤβ]‹θJ„=oQ™)œH#Ό˜V€H#ΰƒe­ž³KΉ€ΫV{Έ@x6՝“΄hgs3eψ’±‡½6γεά₯sύΡ±ΗA/XΜ Ρ’_Ι4s’/πζπC‘O/€7όΥ_M―ωΞoO?ώ†W§οϊΞΫΆ‡η–κ]ω§žJ_ώψπμ:iοJ/Ό/7“Z­†¦ŠπŽŸΓ\~ΌΔ”u–=6U”Z| `ž‡*ΩΦΌoˆ›œε˜2Η±.4Ό…άΕ€=FQ^΄ΚΗΤTEΛ CΜΛz€­ς™&}‘Ο 48L7β³€ς]ψΎC 1PΥ{Δ³ (8*³γΕΤ  HC€uοq1-…«Υƒφ΄;TŸ„Ξdώάƒ.ΖZoeb•ύRIν^ΊΌƒƒς^Ασί ĜρΪTOP–]~(u}—c#βžτ‘ίγ8›@±. Δ£m±=ό‡ζ]η‘ζ­6W΄'@‚—(lΔδdγTHΎ({—ω›0# oL2“ΜΣGΨMŸ|Ό“ΎηE+ιe·RΉτΎ40Ύuζ/·ϋiHeΑ›Yƒ§@ϊ]d ₯’-Υ\:ΑοΪUŠΗTάቀA¨cb3¦€δ!RZŒΗ>sΡΗ]εΔΛΌΠƒώ"=}q+υwχα<#kΦ%yz1ΗΟ’rά[Μwœ„Πj«yh!γτh°ΗΊ©ρPOKxτΧεΰ^~x;}φϋrΊHΊ½ b0ΟrχέhN₯Cψ»§«Θ‡ςβ―΄²4Ν£J Ή M.lζνv³²‡ Vξθm=μeK«L\ 㾍jB{Β ‘‘‚ž0Χ|=hWΨ£χΔ)˜siޘο0ζw9Εzoέ“‘ϊN‚=¨ANΠ/μuι€xb+μ…ΓΚΓψ ֘γγ# Š6žbN!ͺ2† 'zΚ}žήμίύω¦Όi ¦Δ«Ÿ`Ώ˜(‡»Λ‰ŒΩ‹κ”Ϊ1ήLt?Ζέ½l:KϋμΙCxΚQΚ•R#ߞtήωw~α.Ών§ωΝM“ήΈnŒΐэΐs@ooΏYΡΓFάnΕΌ(L2CWξ  οYΩfΆQzυ£½ή>šΝU^2΅τ»σ,I€Χμγ]khŒzω2Pα"P–ͺΑξζVμ\ξ €ε8 ¬₯f„Ηα›Ω·„Υϋχˆ˜φ>J'€χB ΐΔΑŸ0Nωx¦'ŠL™ž@…&AP€rυ8}’5¦ D wZψšΟD²ι  π>μ΅±ρr HΜUϋΣ ­ϊ‰Ρ€’Υγ 4Υ܈Β3H5Tώΐ―žξΉgž}x7=2ΥwήΊš^xη*”ΜQgΦΙ0ΉNQζK–|`”Ν6%‘χΈMh·Ύπxx1ΆHε7›7mYA 0‹’Τ3²pš—8GS%™gu2‚ή£„q~4J­€Ε‡ΰζ-Α=”r€f.Ζ€OΣΟy΄šeζά+λz°Ο€Ÿιtg9 Pf'}@pλ,£³œwǁΏωερ³ssδ>ε=,Φ2ίΟΠ¬ή³ΰAο’KEanghŒ"}{J1Ga{do ί„@ΏX³I8Tfή[|©HY^ώŸ"K4ͺΜ¦Πg-^Iέ•ϋδα›[~£i 4βτ`·Oωμ˜5*υχ@jӁ§xΞ#€ ―ΨIN ζύ<εΎ3ζ°΅ oš@d槈ΑοG¦~ηΰhfg€h2Y@jDΞƒUο5Fi{·›όβ•tώ‘+i cκe/έ 'ώJ\dΧQ…ο!†Φ€ucV‰² ΟΟ—έIη €‘S O⦴ΑQ ΉL+gEL½—’~N?σͺΡγe,ΟΛα ΚΠ°–{ΛάΠ:)ΪΥ² ‚Fa|‚Ξ5+$ kεymΔZτEΐ4σλ³I‡Š!ΘbΌB`X€μύ₯Bε^85Ζ=>ΗΎK%€<­%ζqyΦa˜ξ±v-v€‰dΏ°†yί΄-…κšΡΝˆ+4_(@ζΑμ•kλ YA+Bf)3•~6Φ·γΕή0k‡o²‹2JκΌ²%hίrΜLƒ^pνBέΡΫ'm¬ιdΫ΄?r;F<ΈkWΓ§dΫ€ύhP(γΚdγpšFPš‰τ’%?™ΖΈιΌ°« ΉMΐw‘±U€šι(NΰΚ; ξJj _€}LσΛΖεgƒθΞs5šx@€f–ͺ 2<†6@›μŽΙ"·(Ύ‡w,Ϋdss3{χέw34Ξ²;νΖuc7Ο ύΥ!Πύ¬$@ΐP6Ρ5#–hώ ?Ξ{2§O'‚αΎwzΧ·½εσΩ|γ%³ ‡›Fπ}UHοb”ξfίe§όŽΠX.¬pΘοH%FŠΦuk)P Υόpιν(Ρ‡luC$E©Η™,ˆ•ψ›’M@@oiœ ΚG-tω§9nŸ#0H§@α-ε3‚—ΰ£αE@α$° Β<τWΗε~8s-έ`ΠωΫ‹7§3£3 #€#ΖΓηΠΦλj$ ϊoˆ΅ΕhτώΎφ5·¦—ά±Ž±2L?Έ•…ozΗ*m¬ng g ₯UCΒY¬ς»=ΈUϊΊMτ|°gŽξ γ#8SΘΧΙΒ`₯œq¨Ε;Tή`ΠA*²&=+Fz½jΫΝ=Μ“Z‚0lsΔm@σ>%o³<ϊQW^/€A#ˆlΰ•Tϊ (’¨Šέ)μ@\οΓΚY)^‹@%~W εgtf†ž`ίο:P}ΓΕ$2}0! ΅8ε³₯šΩ@ Ρ/Kό’ΑΆ₯π;%θζήx†ΛT ώ2sašcούΦF»Γ D16—΄%O`Z/bŸ~•Θœw=2&e”·© zzλœΦp5E9 φ/\β/™ΐ£Υ;@m#kWΊόjΟΠRˆ΄}4B嬇Ι|Ϊ¬ΉNzœ4”Q žιο«1‘lσsψυWc.0~o“RRaΜΒγΝXB˜‰ρ΅ lš0Ll³φžžEΟXΚsΟP, €ΗlL_ϋάCώ$ε6γ³²£'όΝΕͺž;χ&ŸέB©_|‚ δ ƒΐPzυ*ŒΕ΁Ε&4*αwr„՝˜,€I™όΛυ΅FŽn]Ή Θ›ΐΙ›Λλ#ιe‰‘0Ζ‚Φ1ήyA'€β‰™Cψͺ²φ‘NAσκ!› <Γl¦Νn2ίT]²Φ9‡£o"•έA+N±fσ^j‚₯κΌNNΟΤΞu -©E»Θ֝+Φ–ΥϋV0VεΨ1JΧΗΑ#Μ\φ Ιέ+Ρwiχ<™9Fp¨η3Ηηο%Π伎΅ miŠ\‰yŸ°ΟzP&¦μ'r“«όMlF‘冧kBiGYA/‹0N–ύ5Ϊ²zΌΚύ†dΧPΦ θX¬Ρ8}ΰζ\ ϋ\yl—ΤtRκgΦ†χπΰP޽ !_„I·"α ·›§“x‘«œœΩΎ=θcVύγγ±”ςfwQυπˆα.†νςU^›gk~Ο³ί&<[£V`.”s½ ƒ]ΧΐžS’Oό #…ωχ€‘ώZ%Q£Ο?°ύ]ή!±Κ–₯Γ9t"ω¬žyε’fž`A' <ƒύΖφ)k8¨.ވ‹eξn’οx½y” ΗΉwΐΎγwυŒq+ͺZΑΡKydvͺθοΰΥ/Γ‘wΥ Κq·άgLKμΑΠY4«MδUλ…§6§Θ侞g>FγiΟΥψ0 ξ££„»G@l' ΓjΨvΧWȘͺ± zΜQm˜{χΏψo~}«λΝwΌqσΟν]Σ&ŒΟ»οΦοΑ„άΈnŒΐΧ8Ο)+Tvc'Ν:Ž1Žε}ζ·Ώ|ξΗ§Oo~΅―ωLω~Tζx]D3<\\€Ϋ’έΘ†ΝΜQΊ b=Οεΐ}\_KƒS™ίωœ ™γΥ”%•Ws QJ—/ϊ:Œ2qΜύ όEeΎGό‹(+ΞΟ‘ψ ό]κΊΗ†ΦQTpͺ+jπI£t7‚ΦΐΒΉž+₯Ω9ΐl•Μ 8¦,±‰έ›‘SNάoE+”}Bk\wσοζςΗC« ±lϊζφ·Όκ-ŸΔ΅ρΊΙ•ž…:BŠ4Ύ3žJβτvšζΠc,νΊΚQ½jΫ.^bΑτ¦οœT‘―uζΓβ+(qœωΉ»ίι­pLΆπ„ΰ¦H φJd«΄Iί` έhƒοGj3£_ZΑΟS51_%cžΩΎΗ>Ό{yτΆΏ½άάΜL77Szο{Ήxσ`Ν€ήΈnŒΐΏ <‡.Ά£Jο,i2ϋl₯Ϊ±ΰΚιν»B²ΰYyL`ΛΫΟ—P,ω)”)!½šΆW€θ…–gΰœB‚‹ΏyΌ‰χ¨G…³ ή@dfšεΙ%«DBΈα"ε;’Θ‚*ήίK%―@A.ΜšXλ€ήAπ˜νΐ³ešcπSx½Έ0Ϋ;ύ칏όΔΗΎύ?{οoχΉ]L:3h y½έΊ3I ψ˜›…γΘ―Σ§|ευδCŒΛλ’sŒƒ}#E$ΌυΞΏιYπ·N·•τήόΐ ·ξx!` &ο|…¦ΧGe§213B/ΰY―_z‡‰ω{=ΌϊPΖΌ_€UQ™’Œ<ήομ#4yβxTΖ]ο¦ Ι1©ιMjΰ™ΐ»ΊΑ± ΗŠ=”δ€JŸ™\ͺ(Έ) „>ΑΣ3§΄‹΅)ΕDπΐ[’0‰TΡmO¬ Ω5ΧGΩ_Ω‚&ΓZ΄Š]ωXΖp\Ρ'N?±58Џ@Ύ ω£ύ\8ΏΤ c]ΤӏnΗW°δΈιah™ͺ-ΰpεΠ‹Ψ.z‹5Dˆt‹ΎψΘσf Γ‰€J γΰ}ΜβΕ;Ω¦Ž‰>hΆlΙm-θIg½Ρ’³oΉi–ίγ|ΐq`Ϊέ³θεωfJρ΅&s¦Ξ΄|αα†Šΐφ‚FΑϊhΦYΗr]AIaLt aΐκEΜ2&τ)Σ  T¬ί!”yΛΈά<žW;{T₯λγρ‡bAΫτζ§<2b…Ik "δ^‚)ιQΦ$‹1€σ€q€ Μ©ωΪ°ΞfΌ/do½…ΦFWzΨ:ο>ΐ›l*Μuθ9/:΅:Ÿ!TZŽ΄) Mmδζώρχžύ'³MOΌΌOΓ₯νσuκ‹˜0Px•Α€Lς‡½κN?©+z? U¦ ™ΰ:f|˜:χ–€lȞζV¬3ͺF²'|²v#6ΐΉfΎ€cΩη@‰νɔԐm’. Έ]%0MηDŸΧpΛνΙχ;φ..χ˘Χ[™ ›­GcΑώ²ŸXwz€q 0žckαh,Θγ°Μ8–ΨΰΣwyβΚΜ1²CYκκa͊Οι-BΏΘΠγxŽ­°6ΩCέR5V.>΄“φ.t’νeŒ"€ŽΡpΈt43€wzŠ\Š©ζ c„άp€=ύRV3ςΌΥ§κDΫ.νbΐϊ°|ΉΞƒ¨Ύ«|ΰ=]ξ-ψ/γΨp-™‹ί ΠX όέ9Q˜εΡ„βΆN&λOJJ­YX¬œ(̊ΝBΎΣλ₯'Ο_ωK·ϋχ|ιwώ“ΟώF§³σ7Ό!s•¦ΝΝE֘‘3gn”ψvKΕx—1XX Α_Π(OxYYΖΝS):>Β3{ήτ Z}Q/–†A€l½ΏΌ?½™?{vsšΞ<"_(·¦γ°ΓΩ! sJXe­ΤΈvE€K…ΔQO…π˜@d3{΅C­Ζ‘ Bα +a>ξžα’*θŒ6 σwΔ'›ίξstψȍό Τ[z]GE0ˆ`Α¨Βμ` %8z£΄5BN}”G ARΤ:(ɐΟΘ΅ώς—σ_yω+ η ±ΌjAΝd”’'hqω-Τ"c₯fŒωRYΑœ€'ž¦Ζη/Zz<‚υN9&֟U¦xάP.|Ξΐ£ JΘrκ4‰BΧ;΅ί2ƒ ” °WΞ€.;.RιHΕp<ž4GΑ/Π-< ΨΛπzεx=π6=ωΨͺ”퐑₯Fωιiεψj‚tJw{mΘϋU2Ξ—#Κ“›λ9[Λaΰ}Φ}i_€ V[Œ(½Γ( T^4<Αz˜SΑIδqu~YcSΌ§sΐKp^|"όY‚“†,)½P*D“ΐJ‹Άexφ„TsΛr²φhWΕi –ϋ$”ΎγβψHηοmζ`2ώa4–K€@ϊΈ`γδ:»%“v l˜} ‡Υ6‘Px„MS?€Θγϋ(ιν‹΄[³ )€ ίεΠځfΓ~€4~ψŒE>Ύ+~ΞT€ΰ ζΝ`FΌΈ#‚pŒ1Fš€,Ož΅’¨λΘz¦³τΑc]«>¨;>Ζ ….ψΒxΤν=]©›9VίγB4?²€B@€ς^-ϋUο)€wν¨ΰuΌΠfšC«• )­¬¨ΟƒD$'-θκΦVΪnοa μcψgώp¨4akT ³γΰ§kœu4d.]Ζ³¦ΑI–€agΤKΫΘ•:N‚[nI ]g+™€qίe°φψς½«}€Ϋ…«)/΅΄~<πx·\ȟΟ³§ž~j;ηύΰΰ€3ž ]Έo9€‘‘S¦} c3#ž4 Λ[ΘށαΕ\κΡφ5ήΕ—{€Χωiι‘Η0 °J›ρ43θτwΉNXγ! Gς]Λe;ʎث΅4Χ{F`7m›γ‘Τ© 1SγΛ΄‹ξLSΉ™vΤτtž<ΈgΘrόp±Ξυ€/ωΔٜD­‘EΖ>v¨UN” Ι:t³OT˜Ώ›žΏ"ύ<)τLΙςeΚΩŒAyQEφμυ^W‘)ϊ^Φ‘mκ2.ξ;Α]šΪ4ςσ»7βk¬‰'ψΜΉG°—§or™Νπa@±žVO‚ΌŠΘΈfd>‘6Π΅­Όu}J:tΝλέΧxεU€3}γ½ΖS,ά—όM½ζSε)ζΠ7Μβ˜G!žλοUτΊkδJ‘˜½€Ή,ΖΤθ7˜·'f­qntΈO}τ„›9ξIOα4θΝ΄~S#<ΰ»QPf‚CΑ=Ζgtπ5βT+‚Fi«χ1ƒQ’²/9^―LXi4ή“– ϋΙX!aF½ΚλSΪ~°C, ΟΗ ΛUXχk'Šσ&[–σ‰έƒωί΄2νΫΖ‡/;,ώ‹κ7Ώοχ3ΧΌΠ›ΰ†t:Ν7oΠ;bέέψη:Ο ½±q7hSŒzLŒΟ ωΤAMδ—τ³h©?q‘‚ ΙΑgγ‚E°bΪKΝΘΟ #Έ₯ρŽCγBPIGΰaόut?kP™ή@ž© ›ΧJƒ%†GMBNΕΛ=ŽS’ Όοcαΐ‘0{”/ ΡZ—οκƒ&R|²3ƒ †‡οw)O΄³Ε_^{x\?Ών:0ρο3t>½™ΣΙήταμ<ϋ* 50ΰϊ)ι/­tθ#Φω‰q‘ΟfΙγmο’^ναGrι€£PŠ,Ή½ŠΧ£Œ`σ8Ώ„‚n˜βˆΞά£χFOͺ9tjδ{–"βψ˜GYmnΥωm=ήmpτΑG(S›–EΩΘσEϋp¬nΛΈHV„D©˜ϊͺ-`g{‹±^AΨ8\Ά ΐΗ :=$#xͺ‚$„dH` ψί‚LVπš-f J£:‘Χπζπ‚  ΊΎ7ΗPšYzC^£)>?RΪ]kš©žΌLη6ζ˜?2œπά2νΚ½PzΎK΄©„Q2Γ£γ3mηLΚΘΙϊ3˜² η[o³)ϊ¬―pZΡ7§E…ͺ"vŒ{g•t›κtrIyTxƒ› 26p1c–¨zΊnAΰΎA‘ΰύζ°­‘Oέυ9„Ζ4₯r95f§zύ/4=@›–nΑ!­ {Θ D›=™P <΅=$k¬‹f} Aπg·cjΰ›ΤsΚ18ςΆύξά ιή“[dξ₯ xΈϋŠiaO**˜B—%AœU=­ζ­ξΑ•ΜHiΓ §(d)ž³WΨsr,§dΒ0ΟnΆTΗ{Y η6ΧλΥlp†ZIδR1Žakg;]άΉ£…§ΉΎšNΦΧ Ρ³K•Ρ {[˜ΘUΦ5'¬S,NYwWΖΙδQŸ@Aι²v ΒΘΚΑ49‚“[ŒσUFΊΖ kA#`Δη–2(ŸφπBχHΥβϊ¨Πώ5Φ¦iπJ¬Η@?· ΩalΗ`=f?yββIŒμ Ι³˜O<λ¬υύ’3/5JY£•Χ5KΠάά‘£˜1°ΘQ ogŽ~ Ξ랴HρY9^Iλo=΅Ÿ†f nΨ&ξ=ΈR!˜:ΦsΘη”₯n@ε‚ŸDΧΫθ7@„C~ VD«E BΜ£D–ΤFɚΥγΆ'šΕ‡β’«xŒͺW‚¦ax[gDηΧΙ(@ώU>?γhΫΠ«y—9 dKxε6Nl€ΦΥ½P†4eΙ³ζYΌš%G|ǐάΗ΄ZrLσ©ΣΠξ4•AΑΐ’rW…‘΄pLCR(¨<Έ'Š.ΈάίάΙ‘κ Ο“ΟεŽAK@‘ŒΜη‹«Α<Ξz £ΨmΙrTš#Ϋ†9zΜ{€³Α†z\„9y<ί5l]O6σ`πp=Λ γw£ΐJv ’mgΜẜ\Ϊ7b.s’m€ApQnάΟ Κ—z‹|±PP ξΕϋ₯#@by]m'H²ί P—7 €i_•υŠΨl*k+Μ ΖE^ώh>[κΎ^K€Κ[ έ&½Mΐβ}ά,;ηxœA7ά FX₯’Βg« °ηφ#ͺςφh„[ΕΎ2H1@ kΡ΄ƒ‚‘ύρφ₯23xΧι·sλI€Κέ, ώ­Δ˜δ‘$u‘h4"μCΠΊ ΝEΰ2%PΎώΌ΄’φ@Ί^^ΐΈŸ©2Ÿ+Έΐ6πμίΒόVeΣ§ΰ_τΊP‰δ¦°Gςΰ5Ύ;ν]Κͺ3ξ5Ό}φI‡Χ*>πΦΖλέBξμblYCΨυ4©β½«nΫmφC—τ°›zΜΥ΄²–YJ ύd”0ΏX+Ξ§"œxPώsι žφDNχ†FΩ„gΥ\΅ρTχφ‘υθ”φκύφσc3Χ€(jsέŸηΉz­ε\Η3γ.Ua‹Ž!―I‰ςuŸw½θIœ| zΩV2T<*'LW§0—6bΙπX§Θ σ1Ÿ7}ή Π'`5@3ϊηύc2˜7“z‡ωΰίε:AΞθΐq+r]oά ω’cƒ7yΡe^ކθ!V†™)D ΄4uovΜλζNX£Hš‘‹[#Βςά‚ζ>§ Η‘ΨI9iαŏΣ š0žΈ—|κdοYi/ύc,r|™=₯ŽL߾Њg―™Χ4Š»¬E οŐΕι—λNˆ™Ωu0ž|Ψ‡6†ΧΨ}ΚΠ(Wn Ί'μ+)`1–τΑψ‚σOξ…7>”ρ|‘'ΐu1‚ΘMάAf6ΜΏ†,)―Ωι΅ήτ~ςοdρό«α_ώΕ‡cόψη½€ιΧCο`$έΧ7ϋ<4[jsώκWt`vJmImΆήηΜbι1]Bελ“½X AEΧΡ( eθF_Κ„ΐιpΈΔ–W©!@P\Ύ@Ιί‰Οd)ΓνγΝtκ–ΫK_zœ#ΖrzθρJzτ<)νXK1˜£{Π1φZ}"οΙ½+%A5cΓ«κUΘz$4$ Νε₯ΐΛ[ZΑΤ1Ω’δI%•‘—άΟ(―œα{fL”Π3u9£0` €WxfΆ@›³·λΏ΄υΟσ€£Γ3™«sο, +K»4M'W!\ΰΗ\֐tαφΓgΥ8Γ@ΡΫΓ ]Γψ4—upPω]>½q~ρ8ΦcΞό©0δ”ΟΘSmTאτ₯œͺέBι;[οr€Υ„ΉŸ“–Μ‚OŽ•ήjSί˜ OΧ¬^§δλμ ψ— Ρ¨Τ³ΙΫSM…ΰj’Η’5oΞψ&#Θ`k{όB3h# τ2.+ $œHΏ θsi”Έ?ύ›Eh‹€sίbš=yηΖOδ|λCκ{#θάΣuθ nΎ²Ž“)*ΩD¬jž TﴞηΩ*7ηwy½‚v‹Ψh΄V /Y FΠΏ<₯d³6'ηZΛ@>ΌςΚM!€gΕ°Vψr1Κ₯9”ˆΨ΄KΈΛ]πτ>κ˜ΪnνΘ3ήήΓ6…XζΎΦyŽοE _(ολœH'ΡΠ6χwμ%n!x/5ω+οχζγ–jRδ{ž1T;P±νmΥe솲RΚe°qΪAvI―pΏšΊNΉΠaŸΝΔ-t£yξYρwiB +OΚά‡·JGašC(Œ™ρΔΝ5ιβA:D¦ ~©€nΗzΘZ–ƒ­αΣEf@Kbθrψ8υζT¬\Μ;ω[‡³ΒίΟWΊ?ϋχσίώ7εYνν›Ώσμ ’ήqzǟrΞ1D7o’xθ ¨›7ΊΙΰz8Z…œYωWη“Š…‰Š…l€γ**ŽΟέιl+w©Š—CαzO»œMΘόςQϋϊ՚ίpyYΖZa“‹¨οΤς₯9σαn T.PΩΠΐ˜\΅†2¨θ<ΒότgŸƒ©5”Σ³™ΐ%ōGψΰν  ‚„U&#ΰ*•ΘLͺr+ο ϋ]ŠΔΝKBZ ‘a<ΘPu‘Φγ=ΎοΈ―ύ"ΗqΦΰ•kΰί!ΙŠ4[f[²ΊΈΘUFtΩn3C ΊΔόœ`Aβύ@χo§o«T,¦γR/τ˜"υτΚ]mTPΈx0ιζ‹Κ=κŒλ8ίΗsέD9g#ŸΉ’VΦπθαjώH°<"Θ«ίPe>d€9€N%ΣΗ?3Φβ%—‘΄]Œ――9λ*X«΅΅Ι‘›η{uƒΥ¦΅Bθͺθ Ϊs?©Έ!9^υV{ž%=bAaΞϋ(_½ΦŽ+`ΆΚαmD £ρΡρ0―‡ D»r|ΖκYŽŸ#Pˆη˜ΖN m±O^<ΆTA”+΅Έ3έΪ9œΗά?"ŠθΑ§)ΑΩf0τ$E^ΪμΪ³D3½ `Α…@•-RΦkΖίσ<ί΄}xK5tJ?Η3븐€)šGΙTnξ+@ L…κη ~€ Œ’―λi4 bœ? ¬Θ,ΒϋΊ_±&€ˆΣ`1¨ΡώXΈ%8ή”~ύΦ4νL&Ρ)ΆζΕΞB{Πƒ{”5Όδ‚„θΧ„ Ά`υzd¬=.0žlGΣ".3rzXKV ·w£ίŒ΄)γΥη΄`AΥΏ>η8``ά]οͺp剙†ŒFά2pL»;€ŽͺW›i°;€naUΗF™T‹΅5Ό›H „Ν­,’ΝΘƒσ‰ΜΩ΄έ\>–nχ$ wU/τφ>`/}5$b ]…Rƒw°B{«+«Q:˞"{^ZηΈ|ΜΊ΅B΄Ά1Ϋ‡Χά¨˜QB ’1_‚gx:Ο\{NB  επόΫί"mΉσEΗ ξX PΜKρž‘œΜg ΰ(•CpθZ ½λΓŌσAσ]¬ΑY)@b9ΖΌ χ™ΉbFι1§8ΚΘΩ wςNRεoΜ^N}­™5Ηυ₯‡Χu‡EτΫ ρ\'M›tO*˜Y*ι+?—1κ\!1_ώpmέj8Κέw:>Λ“εφ 9¨M₯'ίvÊΫΡͺζα!«^…Z7AιΝ₯αα5πm™‰Gο΅μk8``Ρ^Χ< <ΐΆ|ωX M)WξqW΄k‘¨mg₯Η>S₯iΘ_±vί“ir‚ΨŠyΓcΫ9Ζ†' άi{’χb¨Λcf©Σk€<΄%iœΆυςω²qp„γΒμQsθ`ήΠQ°Žθ“™3XLΘ% kδΌiςv:&μoΐr‘\ΫΩg-ssΥ£ν0jθ {Ή;:ρZ›4†cbLχηiG™τšUN·Φ‘:vQH‡ΞEκQXΩ<…ή4Τ¨SΧΣs―k@Κgw>-D4Ο³υc% J =yavόd½²±Άφγ³bοΗεo}δΣλυςΫχ&³χύχΏϊ½qΚ €Ξž‹JΘl€˜$ώ½q}ӌΐs@ΏAy=#Ÿμ ΰW9ΖBf>υ₯ϋ~ρρΔβζΛ…Χi*žε'ΆΚστƒα )b:£θ *«Hg§T„7mj° ωvΝηΛϋυ&λFŒπ6 iA)έV§G‰\²PΊϋi$:FDΧ±Ψ›€g=<<4¬`ς™±y-’©-x“«e£‘3! 9ρ»ΆΑ’X,oσ§tη]ύ'>³Ϋξυ³dIγX°@ΘFZ?yσώ—οO”ZΎ‰³ιۏτΊ^ωχμ™ρOι_·ˆΗBgΪ‰RpLθ;BH#½…Τφ€zΖ1»`ό]ΧP<.Jxpό¬^CωŽθμZλ‘Ο^Œ€V‡¬Ό@ ιισβΕί! ©œΎγΟΏ"έυΪ[(›Ιω+Sw œl<Ξ“W(G[ΊŽΗΓ–βv.Tμ9m™όCΐIΠ Χ₯Ψ—R`Κ7SPX ς)‚ίcKM-xΓΥ™5ΒIcJγΛnΖΡ.Οu <Ίχ8HνΡ{¦7QΏΛ„±˜Π.ƒχτ|Ε1± •Ά¨LΌ…¦B’τδηφPΘzhΞψΚsU\eΦ“€@£M«Fπ-–n°xτΊΣ7=Υ΄©Ο=ζxNΝςRB1ΊδΜ£λNEνgΝm‹zΈ=ο`:n¬ΕΘPαΪ›«ΘQΪ!P˜oWT‘£]α‰’‰z·τnφ‘„—}\Εd^bπ ­¨„+½΄zFενςc΄Νž'¬%˜KŒ =₯?–iο’ ™x~ΗhbΘό^oΗΔ_ύΩ]eΖW©γ,ΈuΨbΞΜ„q«%θ3λ&ϋTΟ8«q3«Xά{(φ»άTOθrΠwΜΊ1dܜkQ΄)½€ώ4ΉήŸ±w6„Ο²ζ•‘qSΫΞΌ‡α@C§Œ‘ωίGO쇧ڢλ}!ΧΜ£ΤχΩ3ϊζŠ 3 Ϋ2κz2§1bm’ofκ ]Hϋ==4π0byΟGrrΣf2Ύτ%4"Ύσ7οofΊιyzMO:2“ΉŽ‘F9qΣ₯Dr_i1#N~+Œ­ΑŸϊΊtb1†κΔΐ­lԈ[\ΠΌ Άq›μ›ΩμΪ’π`υο\8ΨόΉο~η»fγμΏήΌο'Ξι”σΪ<½™Ogox₯c0ΎIώyΦθΣ§οʜ={†m2ύsFέΓ»e+ήνό>²gYΠz.αBΎάh]€Ϋ\ΑλVGΑΥΌ! ―3λY” °'·“]Ξ—pMkNg6­’"$J]ΕΦ&KΑ—ΊlS^Ph]#Μz U>iλ ŽQPͺεuyτ§§G κ•€Θc>i ΚG/V›΅L­šλVk…­ΟρΦήΛOwjΌgΐ⍕Fv@Ξτ[• Η‰‹cκŽΏλ7/ΞD₯Ώέuφμέ Ξ& £~ow·+4σΩ§¦c’@0ΪaυΞx”―'³NΐΨ*ζθvπσUζϋΥ;©aα© xgτ]ΑoPŽœΏ9 FŠَ8ζPΞ]&UΌ@‘Əχ UΖ.[Αχυγt3ΈXVYΪ†Κg•bLj΄³V¨ˆ€d`­ωΩ ‹GFΩ5όŸˆvΔ{ρ3–ξu ¬bŠ Ž­™kx›Œ―ή;3TDΚ6ΐ„LZOHθdg›{[ΏωΜ-ΧYh»ϋΞ½ fν0GΣ¨φIίOξž0Ο3ۈωΔ£^>΅X‹iXα€;ς΄#_7c€–Χ4Μ| dφω +n( σ3β)E §hΚύεy‘Ψχ ψ9¨*8=WY\·Ϊ‰*`3@xQen‘#>;˜SX`1 [FO―΄Ω@ΈΗ)2:40Ύχφ0 ρ—½»½ήYμa@χ*\ο›ΉΟ*4ϊ΅˜ΦΣΐaΑ~ O0’·tΕ<ΝΠΖπήX»MnΓ Ÿgmh˜γVΠ€‘ŸzέΜNP€ασq΄‚Βdώ?Gαμ…νΛ­…5Φ¦Ao‘BŽΎ lƒ?ΜύΝ¦α±ΈYU<©h²ώu£RΔ)¨9!·—](»Η]ŠίέƒbΣ°+υbΘi‚ΣQ'§―Ÿχ—~Χχ`H8lΙζφ.ιyζ‚=Y˜šbΞ}Uf|₯g9οf ‘Ά¦-§^ de@:OŽSJά#zοίƒ4ms?~wk)‹bώXΏfΐ‡-ύB―eΘϊ&υB€7μ±Ψ[ώn°]XIάCCGXhΡ"ΧΑΞΣαΉγ5mfšΚqδ‹Υ ₯—Έ>\0m`€`5<έ¬-½ψdnr?Φ?χμιh’δI@d‘/κ Θ*δ=ωv-2Œƒ>Βg£‚‘띢Š’‹Μ_+YΩ₯α-¬(ͺ΄ξuŽ5υ)|La ς|₯Hμ ϊ¦7Ψώ ΙΘaΥBΉ2Γrά:ςꁠνπ܈#ΰs#h6ζρ·ΘͺZCΦ2ήEζΡ@Κ:s&Θ•;_ΰ&%ΖΟ9ξΣwΧ¨λΑTΆ˜·Ϊ ƒ•5ήΦoYMυ›0²Έί:`Ϊ%°Ν πΣOĚρ$Ho³ϋA'nzζ5Κ<ΉROΈΎ€γgνέω‚c£ τ’άΦ…ŠνΟ°¨8l»šΝΟ·νΏϋ7άςϋ•Jρ³Υm~θgΦ§ C±£γzŽ€ΪύY}]χ²²ξΏ; ¨€t¦ωμμԟΟׁθo³¨I6[ΔY‰ηŠB ŽRοxή:ήΔ”žx1ΰΜγςT έΚΙ}GbR6-)ΏΚKΌyB1ͺbΨΘm7ζ/τ “™Ψ—D«“–Κ£&Žό9Α‘^N=f’“'—Σ£37°œ6…­Ήx#Gi!»¨ΛΔδ.”Z#ΐρ‚L;™Ωύδοn.ω’N{° ­Χb:dZƒ~ο~!(››ŽΒ3q A6³τG?³ύƒ―ό΅OΞ³₯ΧΝΘ/…―0ΧΝ6θ+y±³γ’ζ’;  /r^¦p` nw¦ Oΰ½€―5„ޏτΎν°Σ‚ΪQNΟ§‚›%Έ³Ω!˜.αθ€Β+xŒ u¬Υ―7ίvζ¬6ΛGπoi·EW–=L1Ϊ‚l&σƒ…B|Ξ»Ν© Ο3P°ψΨ¬tV Έ|Ÿk6rHΣ>½T‚³)4Σ²ΉΎ'τ) ]Ξγ+€S=efη¨°6Uβα b,3x™]Γ*"ξχ2•0ƒBSGΑPz¦gTiE@.γΙ[γδE`€KcΚΦ@;Χώ Ο/ߘgއρ’ JJΕ1:ϊ|P—ΑM7l‹0 ΈκΆ…~8‡–v₯J pο9nΑ)E‘«Υά›@Κλ”–€ΥE_ΩΏC—†%œ &Ή‰ήkΧσƒΪγό1'[V \4ΰ„{B!Ό7žx€GrcΞ:£νU©7΄ΙS¦²£-£T©F.θΘ*”‘?Α—U%―β‘nΠ†πήγo<[yPγ9¦W”¦3gτΙJRςμ1';;ιό…m<ˆ-zΑώ{Z'–5-%’ΜΧΞv‡tνΤ&γG™υ· hΒΏΖk™u)5GDο²T†B1eνκ6HΜȫΑ»#‘=†Ÿ8%Œ–YΖ+š]—‘WjƒΕx†>Z½°x¨WF€”U2«jΑω”}ΰR˜AΑπ”Η½&π2e΄.© Ξ³€©ΰφ»…:<9ΘΤΩ$Hpνd=ΦK°Ζ v ŒkKb=θI•J'τΑώ €»fš]sζ‚6‹±zΘυp/2θΪ…PΖ.Ϋ9£όΘο{Κ•v8Žs‚½yPΠ L 'X #‘υ$Kͺ•D₯XΙ‘–Γ¬©/ΆzαΎ9?ΖΟ9Ζ ­Γς"ΟxΖ) ΚKzTΨ|@ƒΟώΥ™Λ€›―Ζ|Τ)€£Αbφ«2t©H›ΗΌΆ %ΓΣ§1{ΐ‚3ε,ξΙι {[YΔsέ7¬uώ*O\cΒ]k”ΧΈMx†;ƒaYC)r™α$ 0vΌ›’™Kφ‡–oB„9ž΅†tόφuŒ3β…¨x²Ž1Uήxrΰ‰±τžc|ŒœΤ·ΌτD:uϋΚr½πwΈuŒωŒΤ§TωΨGΕH œƒΆNgOK»]χΘ²ŽsΛXκΘρ„ rUΣΦγ·ΗΪξξ HŒΓΙέ :FšP찘-ώ0†ηΧsυίτ}οώ­ύ«Γw“3oxŒNΖuϊτfώτΩ^ιλγρ\ϋΞ*{V_TΚ̞όΝ2 ψ΅Έβ#Ω³ί.nnnfωr?_»8¨ΣΏψ—#‘_G²";ΆςŽpέγθp4ΰXPοAY3"Χ'ƒ-d†^c†Μμ(8Ώ›κŽ}„YEΨ€4ς™™—˜&ŠGKΎˆtB‚6·ΥχφΪZψF²[’t °c~g­λ urΩ«[γ‡>σ‘7ΞξzύΉβΉ3Θ«ivΛγ¬^λ`‘R—0_Eždv/wύήςΙ›4β™ΉNŸ^zχo©Pe%Ί­ƒύ…_£Αϊδ}] ›τρΐƍθΓJ½JQ~’ιςδ ›ΦnΑηhD‚NsŽσ9θc*ψ{m΅„·U­Θœ™‘@°€·Σ,+f€°Θ‹™_J‹1žB€Œόd=­#ΖΚ,*ΰ.Tξ ¨ηNΐρ(_q‡]扄χs;šύCcA3G"\~τœι4‘ e¨b_@γPex’M4‚‘λ} Αztž½Œ±^ψGΟ›έ΅*W©Δζy70J‰ajΛuΘwu =βu0Νεk6ΑR‘EΨΖΫ,%C"0 V[Μ+½".ά£qcμ8εsΌ }…ψˆγΠ3&΄ι“ϋWƒmΌ]T5”Ÿ―^ňΨΐ<ΎB‘Ϊ·E*H&7ζfHƈ>TξU8ιτΕ₯š‘"ˆΦ;Gǐ_d<ΑΪβ$ΰι§ ŒEƒ’K%λτΐš κƒrx»¬mzθ'; Αzfrq<α„:$MWη‘1Μo½ΛΆšv–^>»κΎc H-Μ’“ΐ`8γΒ{ ψσe·sΙ-#†Δ=y‰™ 5φ―λ Ώ½'WšŸkxο›xυp2{τ™{r_© fLj4Iύ°¨‰ι(‹ς­]ώπ«ƒNρλ‚{Ι5ΦΘ5υ™ΟdΩEζŽβ枞ϊ ~ 6σ^tΚΫΦϋ­΅ζ}blwiΖbδ8>‚λΝm;KjkFF ςΚϘύ#Œ>ցk_Ήαάy)+­€Ze<\ηcΧ'4”΅ §ί.Ψ1s¬±j;ν°pL /m Ί‹ΕR ά+‹μsΑΨΧUͺŠφΩ}ŠMπ*{2eEDoβIŽ©''Θ>DζΒφs,mGί•3τΜ=£\s,(vͺ 1x›ϋ0ŠΦΨ•sζ€ο2žœ‰pZ0DN +x£{VSπόΏ³wζΑ–ζe}ΟΎŸ{ξΪέΣΣ³Α 3ƒ¬βV!4‘Jΐbf₯’e%ͺ\J 1†ŠΕ%±*«Z$©+Δν…Nb4FƒFΉl’Θ0™fe¦—»ί³οK>ŸηtγRˆ£ΙŒ™aNϝ»œχΌοoy~Οσ}φύΛνP,μψ¨‡.ΒΛ_m« ―Ye^λ$ŸΎΎžT·(Pν!gŒΤiLgkΙ–94¬I‡< nσ›k1ξ3΄ˆΛ«zςvΖΙr&‡Θ£Λ”U4±Ηzγ*ήKο0ο£Β·²π „©ύΏΫm4ϋ‘ςΪόνδυ?«σiϊgoœlώΪwξΌfΈΓm'ΫισIϊ90Νb<‹^Οp}''υΒ¬^ΟΎ”δ’›θ0HBqΪ Β:ΛAώΛΧωσοΜπ·YΨύϊΤ"[§/²NΈΜ#0YŽ7ΙH$Ο,SΜ–V8pΖφΑτ‘ρšc]²t02AΆ1Π΄>δ©˜β e 4e”V Έ8ΘΖΗΑΦŸΖ²@βΛ AlχΊ°ξ!ΞΐΰdXGhΟΦ„φηΜ0ʏΝRχω›ϋΜχΤAoLΉ¬dbΘ 0)k.Wά½ο€$ΨzŠ^2‚ξ½²^ϊυρ΄ƒBήΗh ςsBΠζ2Ή,]ύˆΕΜ`9ue΅₯6ω@ΨeVIόέ’bρ*ĝNΨ»c*›œIκ[vΦΛ΅δ™Yu&^όM7²`ήbaHάΈξVBΡ¬VC‹ώΟiΙ;†ƒ– [Θ#lŽ5Zt1Η'Η‹ q捐]˜°a΅:ρ›:¨™0S`kΖώ!L•I3€@‡8c°4Κ— A±ό˜,P莚ΊL+>$vή£²‘&šΩ„§Vތ«!μ˜ƒqΠUžλό:-”=A,WΉΖ0xaΑθYCΛΉΒYkOŸšΝCb‘‘Θμ`λ,Η&xΧϋ‘ۘΙςqΎψ›ύhΆQ"ŒJ€)­ωS­€‘:ΈΧβl΄m,ϊCθ|Δ5ΖΗΊΆ+uΒ€±6Xέ"χ„΅5oΞhεΞ.§S<6V'1€'λ]Ο=Φόζeλ¬:η'Έ‚‘ιΉ ˆΔ<΄ΐϋ(Λj©σΖz³ζNOΛΏΥ0„Υ&aEΛdΖΜS°Σέ#ζjΝm=Ω"%ω›εϋTZΜg)}Ό* y~Ο~< /B7Ζuk”ΗπG€ ±δ4sΚ;―W¦ΛυΦΠ&J'%N‘T–Θ#Θb©”ΙfƒάΦδ2T\oλΏοψΰ™‚ΑΌ€έΛ}.Ψ#,ΎqΈšω0γJΉάΟZά*K†]AΏΌ§wΓΔL[t£¬'Χ76x Ξ κ<£ˆžJρl―€¨L₯±”eQMΨ²Φ%ΖάΗ5/πΤΊ>΄3Σδ, ΅Ζ΄Žα̟nσρqΔΩg‘;ΓYCΘw‰ο ­$0( h3Μ3ΓσN­l$ηVIͺ6LŽxŽ_-ζbb\žZίξŸ–i¦ΚZ§n­uωab‘0φ1YΌ4†-A…Πzέ-_Rq*ΖςΠΏntΰ:υΥΖ(‡cκ4ŒYζά »0Ό'ŒXΌΊm“†ixΚΨ:υ„ηΔο?Φ$yΚXΘ58XKΪ0 [sgΰΖBΛEΘΔΝxβ1k`²«{5ž‰£5~]ϊŽp΄(Ηζz3Œ¨μԘΔ2y³ή*=žΫδί‚8CΗ|ΆΐΦCπjφ ‚%Έ Π¬k”¦°‚_Η_f,3Φυ Iv†[-• ν²yXΩ‘ *7B'eRΪp)ž^Φ&BT¬φJ‰Χ Ό²'ΌKœΓ±ΪZχ₯=y)έρs%Ζr*-e₯Ν ‘g]Οά0ζ—Šλ•;λXφ{Η•dΰΊ³³ ’΅T5όfέιε)soyB~¬ΥάusΝΓζYb)σΏ4ͺΨ %θ‰ύL.C(6ώMΛ?έΆΊŒ‘ύ³ΰ\΄D«Θϋž‘=#bΜε}ž§bȐ€Φ2‚<-.-λΡ…ΨE…Κλ”ΏΛGψ‚Θ1Dβ&‹!,΅ƒ’ ήϊάV ZΦρζžοΥ΄φ»ζŸWFeǜH Γ€gBIOΊpŽΪ1_Μ_€ύ»Σζ½ε₯?½S­~ώΜFιΧώώ/ώ΅'vΣιDkŸί₯€; "άω> cοdTΛ"ζ1m‡'έ -7μΒΥ€E―ωβ―?x_ンή9/`Ώœ¨;ynάλ‹τΉΏώ©VQύΜ}νμlCΎΫœθΤα,TH+Όχ~ονGvϊΓΰ‘˜α ©Ήα©tο›q΅@νHS@'5˜Z…0m,j†μφɌx°Ύš & bͺΚ–Β2”&Ά—σEωž΅dσάJr€:ΒύYΕέqΝ:Εψf1F d. …ΟN9ΗΊjLήθj8ƒ΅f±df°Όβ² BζυeΣXuvΏφ΅7έύ›Ώ„Υw‹'3ΪTr% <€ήZžSJ(·ς½k‡ΠŸŸͺΧωσΫχτ/άργο/Χ_27η½δ~ ˆ$"Ί=8b΅lj qΘLΡ.ΛκmΟ«'7ή΄™Ρ=ΦcoeΒ«XHΦ(hŽ–\“G²XΦ°δ7N'Ι:BοT§΅h†[»˜\wλ©€„@›ΓPeτΊ;ep„y–­s>³lŸ>ΖBjUF€j£L}j`5»δM)ι  pͺ`žLτΫ§ςΗ t‘»ρω7>A² ήƒˆέ3dƒ=ν hψ§ΫίRV OίoΧY(x†]ΘqσXή΅$«΅qΛχ 2δ…Έ:,±t¦˜;Tξ™Ο谐E’λ”ηΑ½S]c!­΄aL α3CΖΙ;ΑπIηxΈ&v±“~΅Z ©bΐwvύΥ eΟ§₯¨”VZ°Β*ν½C!,+μ“Φ:+t€EΩΚuΎi¦!`±\•@ΦΚ ”„8gJΊ·φσ½ι³Z~΅β*˜8P”m=lΑ°`MI’c,)gνΧ¨βΑcΐσδ§Έ˜Φx“η$*k΄&jMW‘σgŸυgTaeŠ€cŸΐ™Œ#ΈΡώ›υ° LK°{jyƈdΒ¨Κ"=Ή7<nBCΎ EpO ½qNB4ͺ( Uθeš·f;œ9E£²056eE'[΄Χ“΅‡―Ζ5pqδMϊΓO\N:›γ€ ˜ΘS{]Λgμlg άΦnέx–“³xEnδ-H α­AI!Ρ‰Š6$ω1n[ƒ― {f³†β7H.RΡBK£•45YšΣδ2Œ‹mil¨ΡΐΞψ.@,β[Ο²Φ ΆΕw‘ˆ²ΰ2ΊΦŒIP(Ο³©‘ΥT„€CΧ9X‚P1<Π‘nKαX‡zδXC“Ι|Ϊ6αήΆgŸIkμ§ΰžγ½‘LΚ|y¦gL8P§Λι[6;α —πΚ1†’k…c‚­@7κ9ϋ ΞsžϋCn΄\'6˜›Z^Ν°;jAξ’0%Έ·¨6ΌI‚Tžιυ†gh₯6ϋΊφ–ά³μ[”Βσά0v­εVΐŽμ/#Μ/ΦψέρKοtώΚτΑΩ;€(Φ~―Υϊψ́›εόŒEJμ©yΈ*$†›hI7l°oά8Χ%•ΓH,6†ž‡Κ…v\»xΑ"žϋΒγgήγ–LίA‹πA²έ-[§ε}f)9v`=y€οπ―{`wΙ  ΣδNοg8ˆ’  ΈΞ–ξSxr™1Ίο}θΟΙz~Œ[–_‡νΊjUΒΕu*/ΚPVSΡν#<Θϋ^±¦4{ΙΈ·ZǏ†Ι‰©ΆTgIQ΄Ηt“#¬-[Φ\Β2¬'J)ΚΣ‘Cρ’"’ ŽϋΙ\―σ¬ΐJIεμσq- ’`9_)hƒ?‘zΔ!uωΚ–θ<›½–ά„Χ^:tίςU?υ‰ξlϊαΦdτριp~~ψΚέ—S}ΐτ,Ήΰ]{„—;yΣΧόJύ¨ΤZkkdλoT2ιψd±Vgλg’“φdάξaF:τΫ£Ε~e³Έ½³=Mvbωήx;}ώ|’^Ώ@Χϊάχ?Ε yίε( –B`ϋGCΠpπ}˜ξ,ΞUXTaCγ2y©n₯1.³#k˜rΐΗ–ΎB˜τA‰[΅ΜΦuυχƒoIoΩVτ‘ωέwσΉYjwiqCgΗ7l<6Ρ–χώ)φκk œgΦΟΎRη‰lŽφœX0O9 -h&k†UxJRΜmM΄ΒΧi,Μ9ωώηΙ! ΄„»Xk€ξAΛ3ιžWP†Εΰ΅zŠ„NώUW§Ιu|ή-˜5kΈoK‚ΦΑ”RΑd{oD7;β…aδƒVXN@*iΤ¨@0Y„ž©†υ“½(CŒM(ΤΡκR«”]*r)§f ΎΚ*V@Ζ]Ζ’§…sΙ~`¨Έυήmf£ΐξΑΔ›0θ#€Œ±΅”Μ+ΐpΝrύœ«6• σ„)Œ εk³M'2IΪΊH8‹ΨfyΠΕLΚ½Έ Nχ¬χμ;F•BˆLτΣύ8@έΜΣqθšΟS_›©pV$M–±VRΆ 3~ΛςAΊŒk)4X@˜Q&2b ηXοά_°Ρg|,3³dΰ|ΧrγzΈΊαν΄¨eNi–”šδer_—qZΟ{Z‚Ξ{E nφ(†HδΎHzΛξٜDΰ”Bˆ ΩΚΌ°c¨œQh)jεJ¦ͺNηΩN€ώέXI―³;€μ.υΊϋ€]-ZΡ’½:?Λ"V!θY4ξΐ3)hΜύΠβ=ΐβ―»Š‚ΰξ Π­sk₯1k˜E©ŽxXw‘{²ΨΖ΄FͺTΞ €-”s!΄ήP^¬foSn̰ΟMΦW«2ͺs¨ˆNZνO¨ΨqΉί¦ΊΗυQaΓζcB»ΚΑlΡέ¨ΐa Ιξ•~r„%±ΈXΈΖςžg-ϊsΧ­@wνv¬U΄ͺΥ€Ό P,ΛvL)Α –`cqm΄R†Nlλmqž­˜#h5tM¬°αz΄χ +sΝh˜€β ΕΥ πΦx–uεyv³3ή™$h¬Ν„€1nα € hή=v_ΩΖΰZjβϊιΩ(Ί”―`9=³gr Θgœ+„Lω}Κ ζΫά;jMcΦβY#x•„Cyπ ΪG=ž ¨δ‘‚,Cν€YθΖuEοΗHβυTΘ™»Χ8@s!΄N«Tt¨qοΩ‘¬nΜ― {Žb.IΩ2œ΄o5Ž™θYΌD:=gƒ Ό_οΊΊN,,†>Κω₯Ι΄«Υλ5 Ϊ†-’ΐ{4 P' ·aI$ Ckφ”[’¬q¦ ƒ4|°ΊB’%kβ9jC,κG”Έbς€uβC €QΪ$pŒ³ΝΉΌ‡!ϊή¨{xF³£X_=]ΦȚΐ΄ΗϊqŽ=«¨BA<;@ά2„VqqŠP’„ kPBY₯–ΆσΒg~ηωZΕUNπtΈo*|ς™’–ixΧ₯Η[ΙeZ…G<χUώ#Ψ %qd YJAŸ}Œ4%Ζο>XQ~κψLŒŒ]ήb –Š‹gΗό½Ι&ΒF Δ“₯’ϊ&%‘š΄€§­‰¨EΎ<šŸ[ήμΝЁΛηYΛσeθx^šNV7Ον]wϊέ»{ΣΓέι$7X[έ8YoΤ2S,wƒΡt₯Ϋλœ~`ψΨιΤΙh…΄ΰ(σ‡§HL °Ζ©cR•ίΞR—τε_ΌδΦ―Ύ)9Κ›#Xοών9Ll…a9bhύY7‘IW=\^-΄Φ¨ΌΑ0δaΡI K–ΒήWƐι^·½1ύτp4IMΖ™χ9£ƒƒϋb>ώœMOφu].l…±dt“₯²ΕΟωής€ψΣSχͺοέ?ΫώΞd|iw4ξœ&Ρr‘1SN@θ.0¦9‚TX΄B«α:.2W»₯₯ΰκZ™Χψ’I`²> ήiΏ`ΎMβΦΚΔŸ»y ϋ€{LLχsdΒ\X``πΛ΄B'`ο/`π*/dμτπω‰ŠM\ΣΊxO;LάδžΛϋGI€ΜX¦oΣ »ΖΌ₯ŒΙ—ξV!b…/‘eψΖΰkl옿5₯₯LΪ‚&L (9ψΪΫΠC΅3ι P7A ©΄ebή‹΅ d\oMaΦα³ ύ±BΛͺ–έτφΙΞ£4¦e?RΜݚΆ– ΪhΜ£.ε°΄ΐ!ΚΜέζ?,#\Ε«ψwͺ€$ƒ• cx-mΘ™ƒΦΏe² @¨…q2f½΅rSF/βAζ8>χΞ²Z$mΰΒPXIφΞGΊΕΜMAy‘jv‡DŒkψβN(&|6 yίF<*Μ$ͺ LrΔΰB3ζβνόg‡>χK@ΆL‹ύσόρΟ*.vsdΕcζ*Φ©Γ#h™Νš@;4.c<‡±Ίξ+Δ'kMοc9λΡ`½*Δ«ΣΖΤ98@ »œ M‚Μ΅GΧAcΗ{”~Μ°7VpLΛΓjάS:²4αˆ€Ψhƒ ‰&'.x†·Κ!τUΤ»½9qϊ4+b?›*gΝvμlŠ>©zΚ½lB+kΤΠ­£, >zX2?c‡F Η"Š\C`.θal^c”^Α…ΥI΄ΠqΪYΞ2`¨I‹fkΌKΣυuΦ…κ§ρ֝&\£……wχᓨ¬a=rZ α‹Gκψe_ξ­\F}Δ3PΑΩΐrέƒ/τ bό zη<«N`΅[lj2ζ9Ο»I†ξ°yE,Ύ8φ’‹iS %γml^`Δͺ€ια²*F„L°ΆΞΝr–Z— 2r€{…g„³?εLŒ9xVΠχλ4t¬’lς,P,Όa17ξγότš y·Š½Š:σ<ΒΠ.γΣ΅Κ ΘM ^ΑRnΈΑ! nalΰΖΰGŒ.τ1υ|fΒX:‡X’“€Κ˜?0b=¦c ?< œ…"A²Φ†΅ Q”.ΡArχ󭀐nοn'Ρα.bΒϊkύφ+ƒ΅ž·%ρΒk ΌC.κahΡ RΛ­ηΧ€oχ_εΝ9(οA“•{šIΆ£–΅Ϋ₯† ™`ΫσΔ·πώ•Ωs­ΩΖv»ξ΅{’…XΪ#qEžΔx­Τ"Ο¨DŒ7Ι―x!M΄·¦a8=θΜυφ9aΩζl’%Ρ3–}ΖgA¦h%9{Ÿ’ˆb€=§ž9B:Β―°8Δq¬q}= …€ΛδΚςS§3Mu9ΘCλ\δ <”ϊœk§*©ςκFξ€9½~ο±£λεG7έx:yρ7„ηυqΏω#eϊδ9Ψεsƒ²[PϊbΠo/Ζ *oΝ›ά …”*‹ω Υ›ˆΦI§+ιr5—ΙάΚXneu^7ΐ(Σ?·^ςβρ±ΜtόίΊΣα/_ΈpΧ%‡JΠ''μ.έvwž{=ΙxΖθ«!©Υ•“>8¨§Lqmύӟώn$KΌ‚~ύιγ"΅Ίηk%άη*Ω~6ΠΈΓ8LξŠ@αThɎ„„j‡J$c½ΟΜь@Ε’;μCG–N[0Ύθ"G(j‘,β–my¬V¦„€ έRs½Ή¬΅Ψ˜Iήl@«ΔΊR\…GΈΚžς†6<SLpuXŒΌ— ZA†8U Ζ=F=Β3\Η‚X=CΑš§Ξ3‹ρŒv”‹ZΨ¬œ{)„Ν»›;^>kNσυ₯Ε?ηX컁P¬œ‡Χήβ™ΌhE.RΕ"KμΊΰΠN€Ό#VDαΖΠ c…dΘ.œr g\8;F:~οιF› wψ­Λη αB萐,ΐ―qλޝϊΞΗΜјϊ’%.ωx«ΥFπkΆ”˜aJ(›VφθΓ?”ΠUΒΔτpΪπ±ΞV„©‘pΫX]ΗΚPδZž `ΖBΗzh±³‰Ξ˜Š,Ν`0XCρTπœŸ―΅N@{ΒxΌή…ΦMΆͺjυ½ δ&ΠžσΩ€{‘9Z‡-)(\ΩΟ=*ξƒλ. 0VCYΒΫΓΩ0v]λ±€•?‡υŽΛΰ‘œSθUw}ο3QL+ορA/,έVβ‰k‘;xΌΈNi%Υ=PNL Ά5“₯e<6Š22ΡWοӈ1/0TX­E 40Ήή†ιΝςχ4Œeώx«Ώ‘Π>α)θ_ΐδYt\Z)΅ςjέΤ¬Λ”™Š2ηˆυςά θ΅Rš iŒε…k Νgs/“χτ€ΈQeΟԘΓ2ΔΔόλ#Λg˜^k…Ί§_‹ΉVk•K;0φP4$qχsΔΨVΠ}„x0o•-α*nž=C>2;ΰ„{ Hœχα‘xœ―J‹ Œϊ„;LP$€N-‘ΰwVθω’Β‹1aτ°μŸο;fC΅V;ocŒχwρ@²/†c}σ±L"[Ιε•Θ8φΠΪϊWˆ}WAWΑ΅§ Lš{D’±GΩΙŸƒοΘηy†&=oj*όςv$θEC†M‚(aΡνU€ΒeWS»²!±&“!ω?{νzΖ₯G ‹Ω!„R€_Ε»a Ή4Y"9Φ|œ%p|ž ™J&`z4d4θŠ jbžΠ χΤ;dNŠž΄B9Ÿͺ¬λš€& ‡!tλ/ϋ‡‹o:|γλ^°(V2Ιοή}1Ω»Ό‹|œ₯ ™Τ boΛΉ³+°ξEͺEreχ˜½a\† ₯¨ΡΝΈ40KdS—«©EQΐ@πΈ₯I\^!νuxC_—Ο—›/ω»ζbώž{Ύχ ΩΧ<ϋ|όΉΧ“Xg,€Ύ:7¬ΝΫJ―‡~Ι—r_―؎8Ÿ7~ύ-[©Jφ‡bΕΪmAέrkށί*•dγΤjXl&Λ¨ΦΘMσ³–ΐ|πΑδΚ₯Η‰‹³eθŸεος‹hιύΨ£Ι†ϊΘC‡Ιg?w%bmΡ«•Rk©•&Δ-…ΫژhΑZ]8vοS3Τͺ-'βsg!QT’ˆ‘'ϋ3;?ύš!Κ@v9ίw8·€4žžŒR™6š:Ω>ϊΐo·„wπ†Oύλ Ήƒg]@ ήOυ„»°6#Ϋ:<^Α^`΅α­'Υδ\6ΕΈ-RŠŠu‘5\»;Xι6/αF^ @&‚N˜ύu·cN]W-!fDXw_%­E 2 ό+Ύ‰f–ΰšQΠrsGχbhΒΐȐˆ¨$ag=@΄BfΔfX# ގ‚‚ζIpξ£u¦K”x’ρ–P–ζ“σRΘ™X‚Λ-7ƒΰY2ubλ`ΰCΘwk­ŽδsfΌ ν£·ά+!”Έ¬ z4ς)bqΦzjœŸ‚―Η–d‡Φ5\Ά”’“q—Ζ[bG@ΫβΩ–ΖHO΅¬σΥ±<ο9_-.Z”Γ穇ΦLΘ3t‘ ύ ΤuΟ*4SΠw–Ή R,ύ—ά*άtS* YBƈpG@F U˜ΈΙp>ΟΡƘλNCB††“° `­i†ehυgcj2&\οDX #ee΄κ1ξFγgΤYίγgC"Ɋp,*1Ζ›ηIŽsΜ²…·':²―Θ4U`¦ @m–=Ν3g†Υ Œ… ‘ρ±΅Λ=Β—nŽ˜ &ΐžqgΖ°H°•gxC ­eZη΄,;Ζαˆ&5p˜χ=…£2ςΘΰ€Ψz*©\=ί%₯2υ™‹X{ 4Uπ¬.ž'CŠπƒ œΰ‚Μθ"Θu±`?΄Ι`6t²\g š±πfΔ:€4άpcΰ†’V^έγλ΄χΨ1εD»x—5ΨgΩkγ™ε³–ŒσόΚwU€X*kκ°·Ξ―‰εZΠl-|η|ގ—Ύτ_Ώ—cώ#&ογƒ vΫ/oόάλK¬@ΠΓ—xςΦ6Τr/~aΙ΅ŽϊΞ;oδΑKΓ±Fwsc6λr\΄ΌšIƁ™˜@―’¨‰Ϊii αβœΣ‹M Ž“ύKMŒ»ΔτεV`Έ-H¦ŒpΤ {ρςqrπ_ξY2iβuΣ­sˆλ€ΕιLŽ‘C8š­lΓΈχ…ν˜Ϊ…°Πς%#‚Δ9k*œξŠ]q:θΞWkοvΜ;;qRψ‰©ςj4Zέ½“ά ‚lQΖɘΌx:΅ΘFλX²‹“)ΏΑΊ"‹ΠzωΏ0²Ϊ:1~gLσ|ξy«Ι&Μ²Lμrχš€Œ€d/°xˆΒ w–Βψk0d“ ……˜—ΒΑrLe]² O>o¨„οƒν8Oˆ³Υzδ?•]a6NЊ£ΐΧ.ΐf±}ΏQΐ¦_&ɘΐΦhΖDΧ(Ÿg]ε#šPh‘°­ΆΥ-t'qug`ViΠΝ&Έ–λFw0χZσ3/64t‹k™„±4ˆ(‡$„ uyΉ—nq·Χq‹*s\&βf‰ζΔW#(Γ/K„)h΅DGΜ#΄4r¬&‚α ΓfXa!3ΡK)¦—ςs‘χŠ \₯}Ύk₯4U$nœΗcΌsŽR}ΐ½«¨Υ†C€σs.>cL‘΅ W-€ζγΡbϋpΖΓ„ϊΖI‡›—‡p΄]8=ΘaEδžVΕε’rT ƒ±Š¬ΟΥΒd=i…ht δ=•> ΒvΑΎi5Άφ»ΰ0Ό(Κ.ζςΤy΄κΞ΅BˆeωP|ΆˆE9 k^pΪ¬QΰfΙ«“a3tͺ₯άp’!Ÿ“–«$τAI€”-”›€£Ψ<-Q€!ψO”Xdό†\˜(§5Ώ°*yƒ9-­vΆL0ŽψŒJπ PAŒ<`[7~€88‚ί\Ζ»#πΧf8m­MŠΣŠΘmΈvDRg69³Υ G€³Ix…qΠZϋͺ”‹=GΙΈΕ)·Ηπs€δοςy./χ·1ηLΰcΣ"§1? ΎάύV/Κζ¨ςαήΗ΅(41.B  + °°M‡*[ΙBή¨΅Χ³>PΖί\ €¨‘ShS έĚ}x₯ƒbŽχ₯›‚™„&bŸΞ`-΅BƒqΉ9œ?@€&χ7fΨΨvΑܘρJœΧb]%C=R€ZΗθ^imŽŽ«άߜ½9P4ζ}‚­pvΨCΦ jΏ3tcΑΑ}:QκέPQ7΄fˆ3–ΪŠiΘNΊ•–ωCΜMΈγ1­ΎfŽAΟΦα(rιܐΓV «²’Γ λs„Ήq–υ8M) ‘c*ά«²^†U«†opέ½ xΈ'τbΨ†Φm»7ψηΤqXM#‰Τ 9Y΄C•“žBӎW°ή2Ξ΅^Γk5z‹<ΏσNΘT-«‰{9³Dχ³«¦ΔUFo%Ÿ¨Ζήixzπώ½Pš΄°ͺlIΥ}aqo<_V6ς˜w  π£Κsφ}.Χίκ'6χ)‘tξB'(l&4w™γ„€`b“„‡œc΄4εgδαξ΅JŸ+€ŒQ T’+¬KΠ=+Θΐψ‚ο©δBƒ#΄ 9…]ƒgڍVΟ‚ςːώ,{΄`/Œηξqο=QήΓβΎΈεY₯%sD’«§2ήΗK8%??KU•ϋτθΓ\Λίγΰ£Ξ>EΕ­σ%=Χ‡‚XΙ ΟkeΙ₯Λύδ qώ€ζ§Jωjζ ƒiŽ©κ?;ΐf™bΆφ­πρΏϊŠWΌλGξΎϋϋώ9§{ΎŒΎK’zξυΗ¬€|ρYπځŒ „ύΧ΅ΝΑWώψλ3ιόΏ:δdΝ3'АHϋ<3YΠ†(ˆh…(η Υ†πZr-Εήy7‡₯‘5¬§·Ώπfˆ&ƒp:uv#e‹ψ -?΄S$OΌθΦ­δΕ_y–X¦³IƒΓΦ<μ’„Ψ²¬ν©;OQ€u€.{ΐΕxxφgXς0‹©ϋΓ{ξΘwΏΧωάwίwsΏπJ?φΨΞμτΦ«Ώ Ξ~ύς3σŸ>Ψΐoom₯2Όχ―ύΒ‡ώίΰΪ'©ƒ“OœΪψΥΏ^Κ”)iΏXTΑ¦|%¬σΙVςΌS[ΙΝ7­gIΛt\Ή&Y° a]°ή5§8)c™"Δk΅(ŒσM+XΔ4‘ζTΊa¬uάΣ˜ραΑ̍‘ΥΥ8&^yΔ— ƒΆŠΦ’$€΄έ²εÐY< «,ΐC ŒΦ8:λg± ZmCM]0o‰-cD±kF¨Ikp“κŽΥΖ'’hζΒοY@a$!1'…»(Ε1.ΒΕX9hͺΑž—°:SΧzσΤ:V0`c°Uu ΄ ΦΪ·2αΊdl ΑH [*Meai}Uxq-kΩ#1ražΌ„$v²?ΦΜ/-M qAŽnΓ ρΠ’’ƒιZ!£ŒE?ƒξ¦B~„ΕIΐ‘eFΰηZ tjZ³<0ό.X€˜yΞb½΅v7Ψ7›nh-‹Ζ+5`Σ Δ Λ "Zθ[ZΟΉΖ}bAYg^¬ar“©Ψ—Γd!-ηZτά?»0Kk Ÿγ¬5€ωυ1s^Αm»bονš †PλKkmΆŒχ‘Q²vZU-mζuϊlΉ—ϋΙψKξ`νn³ζ _“fqΕ²ΠΟ‘>Tšκ*γh#‘cŠυ“=²Š$ζuώζ:4 ½8F‘s―,&~)A‘ήˆa=%ΖB₯2Ω7·%δJxκΠO‰qηiE”…„φ ;‘ήmWnΉ6χΏ BΥ„ί¦π^άώΌ3ΙΝtq³Sa al3˜%β±MŠ ΜΡΨω¨ϋ ]Τ’uKG²6+ι„£©τ!]iAt½7°τ £«εU+¦ΐΡ0£ΐ^ΐlcVhIλΜ­ΐΨ ΝπZ­ΠV„;±ΏZƒmfbBd^ Έτ,·IΤ=ΈΤ Π¬λά²{ά6žτΝ€ΈwΔΧ28›&ΩA‘a²€ξ)wΠΒ9(ŒmƒfΨcžΏ<—ghP€Β£BαΌ–°DΦ ½zL ¬zψ.Π5ΧξΐyΧΐωfύΌ§τλ=«ΰ\Λ²εέ©~Ξ<CWΒκΜΊ-»ǍuΨP6ksλύr^‘ΨΗύδn€έ‡(Ύ–ŒΠ*ώΦp½ΨŸ=μ.έΏŸμ?|ˆŒκ''{”b$Ρ­Gψ‚qΨ†^DΉ=mXdŸΟsœ*kJ*­ΑVιL*€eΏ†‘DΛ»žE^ΕCΫ VΪxfK'Lh“qIΖJλ]T™ψpΦUeCŸ½°žŸ·Α‰VΨαF†βh΄XηgΑ}Λy“ωiUv£₯ א_Xk”AŒ0kλTα΄βm΁JΤ sμ³–P*|NΪ€VOπp>­’„^§ΟΞ™‘”Κ˜*4Ο)³6*΄Φ‘ω`Πγ(F©Z«mΝΈvΞ~t ΫV(ΩπSΗΘσ\ƒŠ2܏–|ͺ¨0 ‘G eζZΰχ9Ή8E>_η>έHηΡ“ΰk βŸδn &δΊ`¬Ίžς•η6λΑ#χΝds­Nƒ™Uφ·‡ΜδUΦ•Ό›>Υ\Π*S[kΧcσ3η‘?ƒ/({ϊ §O}τΥ[+―όΠ>τ½ΗηΟogŸ>,ΑΒ?Γ^œ²gγk‘²~bε৊χuοΒεΠμSΦ“EnρZj©YΨi^³Ic ΄FΜy0s¬yθΕw,ŠΥ3·˜Bςϊσ7'Ι_~~ςž ŸJΖoΟr¨ 5˜ ιΡβ@IDAT*7―Α€±30 »{>ΈΛ½aNΦδ »†AσctΫZ{ΨS‚¨α˜Βψ’±XΘ;£zξŸΙ.PpwΏπΒΚ¬uΙSΨ…Α„iΜέγ;›χώ‘kΏπ‘§θYfg'5-ΝΏλΕΤό₯V₯`Ύ΄=ʍΉυδe·ή”œ½m=,bΣ¦Z;`8Siΰb·5eςZ€q g•Ÿ=Ό₯aΦπ(2€„žΉ  Ί_-έdƒ«V °0 ΫΗι^RΓJΌ²ΆnSΊ5’C°k2α?A˜χ< Œ4ΣΚzΗrR$ŒEΖ¬eΕΦΪ–,‹πȟυh‘Τ ξVA/՝i¬„Υ*ΜG+[$Π \ŠΈξ­Ÿ;δΦΥc fΑ²‚TΊπ/Žδ½ω΄a*5š΅JG‰'ΚκήLSΞm΅{Ÿπz£ SηΚΉ h)― ¦εTλ³Gαiό²Μ_@&έ t΅ΈΈ. E­C*,Ί­2Z’½F‹χ9ΒΪ'ƒχ³c€X=@cΔDσ3G(¬9 wΓa†ΊC›*Ÿ Ψ­<ΐhβ}_xtQΓη»g_Φ,}¬κ‚…Ε΅MΒ‘v΅ΌhωwŽ P²–ά”ΦqŽUΎP&LΤjNηΏi“ΈHΟHWQ» ZgΦ:š(υ Ωc₯;Ο ‘=hΒκ!ΖoΪ~ΉΔΨντxK³%εŒ jYηš 1ΦužG̈£ & wZΠ΄QώζΣq~Σ:Ψ­¨>Ÿ%†΄g‡o€ΓΦJkίγ•Frώ*Λ- tυ8FgΐͺΐqΘ°g*lΗΒΊ ΦΉ%γ’‡γ=€—Άcυ Ο™g&!4j(Ζk«Š‡‘CdJ‡P‡(AΘzyω›†q?"–™qΞ8sΦg ˆ’nΉ?ΓlšT¨0¬₯C©ˆ_ηΩ£tΒΈΰΠθ”|ΔΪ³φΦhΆΓ€ω±§dώ žΕsCΙΰlν}Ύdκž]‡ηψχ‘Σv—΄b†%Q#YR#ΙR)βl8Φ3Bμ”5¬ε ν° ω'« nΎ‰–β€Π‡οΫ‡5 ψρά&Κ―Ž±:»†©PΌ&Ό•œ, 0†gj­O°?C7OaδS6>ŒA Q·0N>Jς₯ϊα'£$ΫπAF΅g-θzοΪHn8Mύυl-ωΤύ—pbMƒήξ,WΨ8Ÿ*nύΦν/ώ—wνμόΰ‡Ρ;;ΫκKΟ½ώΘ <+΄eλΆ··§_ύϋ}₯|νΦω΄)F&Ν w5.[ΈL0„BΤbjω/νj΄μ(ŒW±FQLΎΈΌ–ƒ!°+Χ $ٜΒ=ψώV’ύΒ₯kS‚*‡s„€Ήψet8Μƒ“ bž<ώΘArؘRnΚ  ³–;Λ6) žΫΌEλ3ΒΩ±’阸–N:?ϊΠΞ[/ήyηΝΤ΅ή†…ώώλZgDΧ^ΪNˆ‹t+·x Έπ>Ž3'τizm^μg kΏAΘΖ[σœΤuB`ΦGΤ{ΎώΊδίψό€ n ³X”"Ξ™ΩH`ΞpπΧΘΔ."lŒοΜ›ε σΈˆΫ©1 \ ![!J„J8³>Φΰ‘n-Ί•$ ¬išυU€CcmΛtΌΛ"Ψ-‰xP₯ŠŒMAnε-€γuχ)@Zc;QΙΠτ?κN·˜?J˜P„Ώλ sGΡΡrl™:°–,γ―΅@Ψe P Ξ³I(XΩ²ά 'ΐyΑgς€eΡ`—R^γαe¬~ρρψΑΠc#‹ ' Θσψ¦jŒ¦±tny˜>(ΠiٜΠζΔέωΟUc"V’%Ζb‰œa¬ΌΕη`ΛχuωkέΣ’₯υ5β'€rO‚‚§ψu†Œ¨ΙΪρ˜³@N‹ΏΟ²FŒΕΔKŽ@KkΉeΘzΦ~5|Ζψ]»jY‰kΕΣ=»CŒ3aešˆ«ζΩ5,Z *τ©;]$4Γ>˜@θί°ψ)o LΩsξc†{«‚<¨P ™eπ3Ÿd.ZZ ΚNU΄Υ΅χu=K6QDzΊοCJXŠ@F‘l6 ±ζtΡκ,<³Ζx― 9qvI&²Ϊ.,”zΔμΓϊ²Δ.R΄ΐνT sό‹‘’š„ΜPπν(}ΐ₯",Dυ[₯EΧ³ b…π1Ltڌ E“Ky&ΚkmnŠp “lO――&λXΥΦ,UΐT•3gθF‰ΟΫvΪ5;€ΓgΤΎž`Lΰ‘χΈθcU6ρWoΕ q™#€―ρ½α‚€΅Λ ΄ΖΩΧz¬UΊrο­‘<@—μΫ:VG+hτυu)i¦Wd–ΕRΞZUΩ5,‰}Β FœΟ¨ΖΒx"‘˜k¬θ‘ΰ€n΅€jύ,QGήVΠ9xLkγΰ„uγΉςΕe(s O‚£ΐΈ—3ζz~ h=‘…«#˜#4ε1ž}΅_ZΆdŒ%6G%=“qΉUHh€ξhC2ό•%1«[`gu™ž–QέΓa°i­μ‘Ττ`jC–VLΌCΜΊ-΄[ΤMfΔmΚσσh΅y­AYξSp—e Λ3Η?΄Μ}ηbc«΄hΥΦJiσ ω»]¬Π5hS+"oΗ¨―έΩ&VιB_ZήXž­Pερ<Ÿϋ#Τ&€#ΓV¬yjԁΰ^‹Ÿ`G„`ι)…:S|zχRψ+π -d˜Ύ’Ζ‡ϊ,­Š™2ηΕ0έΖi·QdΊ‘«s7¦\kΪ€5ʐΔ$²Ξ³ργbŒ£F+ΰΨψψ 5Ο»(AΕ2λΝϊΛάΣ0φ aρΕό:Δ²Ύβί…κM]¦ήρψ€ @§~λrΉ€+P#Œk­‹'Έ ‹rE\ьΛωψ²s₯²Κwb…9“–)–π(Hΐ³Š‚ ¨ ­qΎό€cθieζοΊe΅h7Yπ°lςΎυΎΈ†\lΑκX³Ϋ$›ˆWŸΠDh]d±B°Ngθb:†–ΪHrΏ)α ΦΔp_ƒU;œŠ–yΆz7HοJ p6“^΅ƒYŠ(eφε•Πτ₯+ξ9Š cηξͺ,έLΓς\šZ'&u [%φ½ΒυΆCΆ‘Κ:t…Ÿ§ͺ%zFωA­’Zφm €ηCK«t)=hεz­ŽγκŠξ7‘ΐv•pγ°U\½Φ˜χ!K†‰ˆ ηΈ" S«9¨Ψ¦ ΩΚ:sεσΧ@ΟrΠ*|Βο†j»Φoθ%@sΣ$fƒy«<΄οΉΰΚDBωΖ„5­λ" ΞΪΠs“BXV£G¨B’g4ζ`γM4D=ŒyXξqƒ•„BθY˜kφ¬«lXxE%…'ίf¬1Οv‚ΞykIUΜΥωr/-ΰ*•†ŸHsz=<;­Ώ6Œͺb54‘0sŒΘ™]PGRε]볡c]ψݜCΘ<Χ%4f“WϋξΨMΪGq’kΜr οƒχξCgŒ š5/cDΜoΤ»fΏάΗπ\ή<ν&P3­ΰ+Zr-ί'πΥB*( I3¬EΎΓbBΖzf’‡ƒ2‹XοOHϊ΄Λ¬gΜ{ρ{„‹8”+«ΌΨ€Ι½±Ι“ŸχV†kω³ή]†ΓX5FZΠ0ΰ˜μμ‹­#’ψκ(q‹ω+&?«δ7Ώšψ*V6Λ›+e6 `ό:Έ•πΛ†1hY0Ξ[ΦΈ}C±!h&4ΑΣΓnΔ³ †ΈχΧ0 Ɏ\;V€u&7œ†²ΟΚσlqŠ΄Τ…ί§8#B3V²(pΘ΄Κ-^y¬Ε>,’‡ξ=ΰŒ`νΏ4LέέO πdB¬{ͺΕΩ„αA¨[L /Ξ€A4 M₯(κ:Œ;©ό8yόςy=mΞ{“υζ<ΊΈΨ€Ρθ#R’Ώτ_ώΏigη»~σZX,<χΊΊΟ:}-q03{χΫpŸΆ[ΗSβŽι‰ΠζΑζ b΄9¨₯šdjkιςΘX&Μ–ΐΫ!Ή°$Οǁƒ£_‘Θό#X&ό½@C έp6A)ΚΉ½ uu ‘±#4³ “!sitν[U» ŠηsrΠF8σϊΚF‡πχάύoθ/‰Φ¨¨/ώ] Γδ,ύIXœ?ά-―Ρ ς4ΎR‹m€ώφΞ›τEα2n^£‚{2)@ιξ=»"² Y“ΝlΐΡ`άJm‘‰―-x3›°Ζ)Z“Y˚Iu}¬gf"WqeλΆV¨„pAπW*ƒ 0 –·±„αTs,*ΖD›Ψ$ˆœ–έΨh ΒψΈeΝ΄ςZεcΚ5Y4χ9χΦβ`ΥΛͺ™x"ΆΤ5Κχ™ΐ€Ψ59^ŒΙ0p©ƒP»XΫ(QZ°M,Λ—`μ\*N2œ@†­p£αa*]φSΗ=d \΄dι#ck• ˜±‘άΑwjΠ+σ0ϋήlrc8$4ŽP.ζΠ+²ž!ύBkŸŠŠT₯š—f‡1ˆ& :!-2ΐ…nΞl¬΅Β½€• EREA°΅%έ/$Ι:οBÎY<²Tϋ©΄.³ξc=-ΊH#Αα(±SJI©hΨτΐς…ipTŽ2/7Ο£²7”—™–X@ΰ”XΘT+œQρν€;«π(ξΑz1WieがƒsΝ:)H”zψ%Ζd|κ”D"ΗΟjρyc…4{gx”ΰAގˆυ?fO€Βœ1χπ­2~Γ@T€΄xχ`-wmtρͺΨ₯Hΰc+9ˆ2’GGμcΏwLbΰ-w`έgQιήBsEψΜ”Ιa,@s†ΈŸηeŽeZoZ‰χkμΡ:«ΧKO›†ωCŠ01[fϋμ Π΅³ΔϊkΥ»ηŸ"ΦεΗyΏόΨƒ‡ΘP€½‘%όYο”J»Φ\Ό₯χœ‹ŠΗŠ>tΥUV0·<ΛψkiEόΦrχO^Χ@ιBwŽΨί΄u=h0yΠP4=9[ζlnΥ™Σ,Ήt©5ωη'ΕίL¨4§C~έbœV«ΐIψμ}”ιcάKœΉΆ°·΅ςC~$*†Ye˜L+©ΈΛqς…Œ)ΐWΕ}ŒzmʏrϊΰGVΚ&G”ΰόΘG?GGήjrLžΟεώ瞊&”;Α›RYΌίΠΨCΚF% ΜsΎR@HΞMƒδυςJ9yόθ$9ξ“λE«ϊQiΛΈεσޟ0dT!Η<­-ͺ₯ΥΝΪύ›oόω―{ο…»ξίήFΞoo»δΟ½Xg€ΦZ{ΧόU―ψ‰3½^κοΖ­E%K³Y9’Μ‡Γ/Ӑ±hi<žΰŠα…9΄Ο— BK’qZ0ξ1BwJhΰWkrιΑla±2%Ζ¨oόkζd ~h2Τ Ύƒ[JΨg˜YΪZ $ΦΰΊ|ΣυDiυ(νi₯ΎE7λω{ή+ϋ>ή»QF)•ό6·γυΑε·§ϋηYʝdΎ‘”?^d_…uaVr 7ιΤΜjι)‘™—Έ™`ΌΊB Ÿ±τRZK%I@J/A †eω©VΗbΞ!Gb+`Γ4ZAkGX$όΣ†%ν1n 6šŽδJΖ@£ρ³6³‘‘ικ3 ZΑ` !ŽΉ•ύGθhMD‘ηεi+R“ΝLάγ ΐ%Ι$Œ‘!†pBΔ}˜Μ“qψL?Μό #θ΄θfˆ΅Ϊ΅Ζ>f±Ϊ”BΧβ°C—a₯…Ξr„Ψp9!AX 9θCΒΡrεψ…y ¬nmΧUw½VŸ)t™†9Λ­rASάϊXΉFοH:ŒΉ¬₯6]₯s1vΨZ§D‚­ΛΤ}[€&Ψt`xjΔš€3ͺzΐΈ‘1ξZ*H½§. 4Ί9Β„––29.\€Ε k¬"ΒpCp:υ(Aηžslή‚T» *θΜi·u’” š’x§ Β}cΜξ!π˜ω\­βvŒς€-‹8+cŒ°»fz,Ψ.Φƒ2+vΜ9„Žν3KΓ: €‰cf€ˆ5φ‰5ŠtŒίΈθŽVΔ\'νφσ Ή.–x›Φ΄΅π…σ‚Ώ Ψ§€Σ•e΅ΖΒM˜?ϋ _°Q†³·tŸη!Γ=ŠμΏ³b«2£%ΧΊ5τ œηθΌFΐ¬ %"{zγ §“,τ»ΙϊδΙ·°Vx —…^΅˜«Ψ†‘ΐΙ·¬™kΞG9/€Έ œ£‰―¬…gxZ”m€"(PQρœρ_”ckSy£Xv4@CξŒ! ΦΗΓ­i¬C *x„ ΐ’oS’){ΰ=Ϋ{°Œο…7ΰŽΧ ˜JK*ϊ&ψ,λ%θψΫ£Ÿ=„³‡¬£εΦ€}N>|Dΰ°άJ$vIT,½’mφTZd8£ΜDtL‚λbΉ9ΓΌ‡Κv)ΜΝι5 W;wΧͺONλ§xw# ₯#ΕΨDΟ”λΝfH:a„Hq?=KΞ;Ό#3k+ @~6"ΌƒΤΓ7b Tœ5ΩάeDΜσƒ…χTιfΗ†Η°3΄Δ>Χk<`,–Bδ2ζΗHwπQ·ΙL4 b€BF5­έhJ€j¨Š@P…\”J}”Œd_΄ŽΛŒ[ΟP–o¦Κ}ζœ!Hŝb/·W=V26ΊΗXT&€ΓΝόX„΄ρ,-ސ@¬ΝυtF4ωφγ{4ψt‰Ι¬ΖD»0b™š ί ~cŽρΡΝ#Ζ 30Žύ˜5‚bέCŸo=m½YΖ½§‘!η G0ΑZa± ›¬₯ΏΗY’wΈCΞα€Δ=ηeΕ&žOΰΥjM=Œ 9Γ’ͺΤ4—of‰ \ν@Ϋ匎9λ#ΗF..ΧP†ρΞΑ«tΠΝξe‰Τ,Χ­R­CzhΒ_„nTρ€¬7Φ‘‡Π Ύ2(‘Έ Η£8‚ω3x‚UΙ”Λ‘—Ε˜ γHSϋzV[Ι―P£ώ}oxΓO|Ν½χΒ¨¬Pb"}Š0@clν—F»α:ΠζΧγ'SZ!ΙN¦λ΅ <›}X­’ s‚U“„E¬$›Έl “Ghe±rqΫ5 νRΈ`»β5z»ύ%±lC’ΖΤ*8¬Κ&™Ππ<lΙΔ(Ζdž+…™njͺΏEά²Mr,ΏvhΆ6Š–vŽœρŒ†A6 p’ςC˜s_š@NW~«15ΊΓ‚84 „,j]yΆ2Οσ@η/˜\V,P0λΖA+&Πa<α±e4‹Ιv*˜x&V™£ ‚βF| —8ξ9ΐ’ϟ`ω·» $fŒΎ WλΞ…OΑοο’nWͺ ’LB‹ Ε°­X†lt*Z£”/a„ΚX†9+=¬Š ΰδZη΅₯5Y0Οΰ^Ά³^Ψ΅Ο5νΏΙžhΝ€w%λ ˜a~V?(άjxΈ₯ΩαΜ“0m1fBb±ιQV­—λΡDqΆ!Wύl&Š‹Κ–­΅L›0Θ’Z9˜ήΊQ)²68ά‚/Φ[KgUΓ3‰³Ο―(€#›βΪ4Υ8ψ&a2*Κζց½%½@ƒΏp³P ci“¨#Οσ [³λ6Φ’eΕk+cbγ.€!~―Ξqf ½?φΔeο.gίcF€2ۘÈΎό λŸ£ˆ…XΰzΝv§·Bέ0€r ε‡8kkŸίtέΪς v(ΗΙΪ—ύ INΖηκ‘θα΅ΰͺFl³ζZ2Ι)_χ΅ †U\zη+κ¨CσZt—αœMΑ"τex†Š–ρΈ5B(ϊ졊Ω!ΘS½=4Έp?ϊ†Qψι•p•%­ώ<"θΡuMa]ΛA—Vϋ”Ή―`E/—Εg#,Žuυ| €χ‚ςKΤΥϋ$ˆ±<δŠžΥƒΎύ›gΎ 5Μ  ˆŠ€e@‘U"΄VZ7[K΅M‹΄˜;°8ΜG…ΪP“|€v # χ1m ΰ„x~άΧ VΡqIπh#θμ!ˆrŽ]Κ‘ °όJΓξ₯ΔJ FΟ‘Φ\-ΡZ‘Γ‚ έZnQo_³Υ₯#¨7lA…Κ…Υ›d8’η]«Έ–nΓO¦|6,φXa§(Xάζe:^€mΊ˜ˆ΅ K8ΌΧ’Κ±qΌEΞγ’&° β]jlFbs%ΦΤ{Θ\Oͺt'ΠΦΛ¦ΒξνΉ6f} ]EσŽͺŸsΦ,@ňσ»ΈŽΗxU@,•Χd’₯Wki[‰Γxd TΦKΕAš?2φΐ|OΜ:!„m 8ΞK0ok=Ζ{ήYQ±,Νtˆ“WΙbL”’`™k4ΖfΩμHϊcIΒ `ƒ,s’L¨4ζ»Γ>"Ψ{ι ™ΐ˜Ϋ ΄8[ΩgŒanLΆ {5ΒE΅\8Ο3>£§O/΅‰πzaΊ)gA;ˆeU=U*€ε[yGOΟ9Cλ[gΓ[k9TΗ‘£“q+»tΠαΚPΒΓf,υιdudhjΦQSy½²I§έ6kci^χώ" 0ήγ§LΥΜήρ1:oεEΝξδΗ~ογw½eiΨ‹₯`_ή/χρYςŠͺ³7Ύπί­S°ξοW΄Π€9„€-Bœvχ’©i=Πjn8„€I/ΖχΑΊγš`fRoXςΖ€_…LMΞgIAm,`†Ȝϒρn­Χ’Ο?ΎΟaζDr9|t£YO† S„ΙΟ>–bŠv’XΫ‘%b,[Lˆ£ϊΆΟή{W7Ήέ֚¬/ύ’ιE‡2\OΤg\^Ήύ'~ζKίρΟφ. ™49γΜ§`1-›'Ι`¬˜p¬iΚz³!,±ZN‡Πt Μ¦Ά`½2l•™t CΙ1žγyV+ΠΛ’₯4‡eOήbλωΝa*(iiΌa`B—…f1XΥϋ„‡ΥX’ήδΥšMN›€Λ}OμTI΅]χꐱΉa ΐΊž’‚‹Ίpt]<%Ϊ"ϋΚY Γ„CΓ«†$†υψŒ€ΦMχZA5­±ΠZ‰½χ,EΦ1¬κ$ώA*>Ĝό¬ ]ΛτΜΠ"ω3σΦϊ¬[= ŸP!σ¬ΩρN:“ξƒΑ„βε­ψ9'ς<ω>ΛΒzπ,΄h?†Ό<  z΅—Ι½X…>­4\ͺ4ͺ ΪυΣκ αιβ "qΞ€:­—it+Ά²†gڌ㖍MυAž©ζ΄ΔΔz ΰ­G,ψΆΣM\T,Η ‹‰λ=ϋNIK­±α&U >Mμ5”L`i2f eTPοYŒς”ΜsJ Χ9mXΉH#Q”Ρ˜φŽΰΝ*FZYχrj(Š”†=')o•k§9h™χU,,Εη€œSνY^YβLj%…Σa΅΅Z γΔ Έε1!Oε?ΦE‚χΝύ`y ΛΡ0H8ž9ΓTι#tžXδH)κRwi_Ή˜ΰΞYyσ _ω³?‡—ƒOΖ;Ξ#žυ/ΧψYρ²ςVΩι ’{huŒJ¬a²W™Μv5S-ΜH ‚; ‡ŒW±/@Πκ¬+ƒqΡΐ¨‘£’Δu§Ξ”B% β›O rΑ’Σ!ώYκh^&|cχ ύdΪ–ΠVΦΰ•‚`ΡVSH‘0T§*C ΨΪ–Ζ«2DΎθ•–«h}~Λg?σΆOœ?ΏέΉ°­Xύ―w0ΐm\a…΅u?xχέoφς2ώώτΏ`¦‹νd;ύ=|ΗΡ;οψ§Ÿn$ωW(DB£V‡Π)±hc„±rΣίΝRžaA0^yP5Ϋ\χz l¬Ζ#σ'Άa  ύέƒnΩ7Ή Iώ°G˜VAγcσ$Dm€W|duc“π…e•:pYΐX0«` ½/'` ΄₯s–5ώ’cό3.8,ΈZA60| ₯`εγ2KXπΐ|KΛ4‘pЂT%3νŸψΤhς ­Xνx&χθ– wΞ P„^Ÿ$2+΄(XMώΓ°ΘίY?A›* ΊΓA“!ψΒmΞ΅Cd\€"\ˆΦͺAέr\—x9C_΄^Η¨uΝ0˜>knfξ Ά šf)"1L‹„] ΅λn€hαΧΒΘ17kšΑj^" ƒι X˜.γR11.S ‰œβr¦˜“³]›Ξ0Ž•Zuaς\ ΓV(=3ΦΚa~el ™t™' VχožΨg <5₯BύάΎςZ‘+6J1ΙΞ†#Cj0O°gˆίF*ŒΩ°–"-~<οZΛ#ξšhkύώ Τ¬ ΜU`¦œ!¨£Ωa=Ό―;ΩVΪ†UτΩ;­Ξ†‘@~‰_TP–yŸh‘ €£ž-RΠ2W–ΪX‘NbžZλB"3‘/& 7ςΠBK64DΐΨ‡°2Φ^οŽ~23πX“Μ‚Ζ'Έm3ΨWΛΈskΈ{±ΞΙ'(B³©‰‚ί°€ΐΊΤ6]°R€λKέ|¬q&73θE€, Υ^ζΜΦŒ‹eη¬δ`ς K€eΛ6Ϊz3 Φt N₯ˆcμi”κ πήL‡93/VTq†'l²«εΝT;½Ζ7΅Μ₯n>Χ²w‚έΡ°Λ>2/@“c4„AKpƒ2`5ΚΛ™ΘΆOε‚Σ·l$+$fKΓ€N•¨₯Μ IRIΈρΡ eœt£6Xs&΄ΌJOV¬ρ=iΠudψ‘X³β<Ś.Τ=K(στ πΜsμψŒsΛ‘G¬_„gΈφΜ±ΐ—ό0:!v«$°@l-ΏZF -ΰ‰΄†gΝ€E΄η(λ¨Β νυ1ς °ψλe3N{€u]kΉΐ6 Σro £Ρ+˜QΎρχΔ3‚QU|Š’c4ΤΑgyŽ‹Ύβ³p•ΘLUK²ρβQoηE₯žεTUHX„8+ΞM–bl²–σ ΊXΧΩΔϋθ&ΘίT¨τpT !<Η<— ’»VΖ₯ɎάάdKο―ΜhzcΎ€ς>MI–©ή76ͺ 1Ηos-­ζ†(Wδu²X5}-Ρ‘ˆΝΎ†ΧωIK3ˆ‘Γ~CΘΦ‹Ο™_Tΰ`/τς₯π~ςiΦ‘ŸΉ]‘d½d*%*γ.€|”)—“u{ » #$“x­Εά Φ`μχ λυΰΓ'ΙQ>Ξ>¦πτ'ǜΫchΩ‰1‰ƒΒψ5ώ ˜‘Q~OΑWu·iyι—ν+Ξο³aφVήΈ3Ή7ӞώΆΆE1₯ΓF"•‘28ΩΌ%˜rDŠ1iˆ3ήՍΒI–͆封Ιμ9άΙάνkΒ>qΊy… »ƒπ1ξJMrχ`Ω€%GQs“α@<C…ϋ4΅ΰ€pOlqš#Ž42λ=₯.ΰ'› χΝύŸώ‡ο πΌ³ ‰I/iW‘uͺ—Ι·yyυ6άώσ#θσ,βMSΥί)dJ―Β™HΣ%A!α lGu\A§mŽX˜ Α¬Φ%,~Φ;D5Α²›ΉΞΐΐa6^CL’0C~ΞΟZαΰ;q|u½λjS[W™ Qα«±ΆFΫπU"KΒ–‡ΚΌdά¨Ι3CψΑ΄Ζ<ڝ‚Xˈ~SΖ:\±lœPFŒMξa˜ˆ–= aYB¨ Αz\Ε?™$NξX°–%ο±`\ώS0ω]=1 ΈVy6VΑΦξ*Μˆs“™jQΦΪΔ#ˆΝ…^YΛr`ξYž©°œhv΄bχ¨#m"€.ΐ°Ζr N0X‚Εͺ2ξ*αZήό91Μΐ£ε͎YΑ€₯Ζ& D:X΄΄:N`6‰z³\e‰»;`Zm’ £s1‘ψχ™V0|Še䳌ΠηžjιFΊ£ !ψ^¨@;„7D¨ †MN Γπ%ˆw_«vύU·LώŠR| TΦZeWW©ϋ2&$†ΗρνΝc²ŒiŠeg OΐRγ."‘!Q,f «\ψA•l‘I'ŒΥpοgzΐ4†.―Ρ²WΖrdΣJ L¨ΝJΎ`dΨmΟ}dΌ$‘ήG‹«nœQ1ώjqRs+|N‹{Π^ ΙΔGωΚŸ4¬qNdl+X°€s@ λΠ’8 BυφˆΞ‰ΊΐW–ΩtΕ~@™€ήM|r-κΞΝmΞί‘kΡS1ŠΧ™w&€7½.‚ίk'pΡJ(“53dΐ ±ž$vTv˜²&au†Κ₯e>Heο 1.ε‹}˜ZΑΑ°―Ρ"˜ž@LŠσoZ’gœΩˆf–'ΣEoψ —!,―“0± Π«αη΄δZ§ύΔ†΄°ΎŽNx&„iofΖ­l„œ07Aδ XZqVz1€έ|!¬v¬EδΣπ,Η)ω%¨τ\Z\E–?†+„Κ/‚ψMΛΏΏσ}φΑ²Ž‚8Χ9Z}σ™’―MΎL1+Ϋ¨HζέΧΘaoRτκΎΦ~[m^‚{ή’±` j‰??”Gή΄Τ]EwΘΌluM,g‰λε'Μ#φΥ9£˜/λ29Ω±ͺΐ°Ύ,•SšΠtίόψξΘϋΓk=7Nœ( Ÿpœ¬‘—¨ύΚWέ’,^HψΓ=—Βr-sΌJΕd €B3ͺM”›X—C WηšΙη‘ίh0Γ>©$ΩΘΧZάzκjΜA:Τk•Χj,'‹ͺ[π/ΖΙΩσ=ηΠw(ΎΟ=ΈήoΝΰ@ ς"m‰ —΄υ8η<ΟBφ \“Α˜u&²ς”Št€ΠΧ ]&ΆΜx„\ ΨGˆ‚ Ζlk…· ³ŸWX(|‰&ΔυM Eε’–¨‘tΞ,,ŒKζξϊMˆ‡‹’|<ΧΔqΚ€b„Κ₯χˆλ7,C·ΉΐVkΧκj• 0_>cΙ<λͺN°ŠπXso «kc €.k­‰¬ΏΘ@vIsύάΈUξ«Pζή&ΤMΟεΛΗ€j =J4@ρν |β- \G œVw΅γP€$)Γ%ΨSkaη°ΔD)-h †υeΫ-½Σ1πZέ8”απ z :θΡΔCC„ΨTήΗŽ2lΩB_{ŠZ«vΓZŒe΄N±`§ ΰΆ―a.vY4wb£BwMư]Ζ~ά:€Ύ–U^£EΚκ•,1ό@'ΞJ²©PNαQΰ3'm˜χ«Ρ4§ VINΚσ=MY:•^Σ΄β„™¬ZΒz]Β’]+`Ν†φšGmΓƒN=_u+oœeΌqLEj₯„gm„Ϋ|ΜgCIζΪεzΑΨΧ(ΡΗωΆžuΜ‹}‡δP{>₯I™ί¨‰² »V·›arΰœ!=†IC~Ζ΅5ΌAΕB/Žοk₯-> Ιͺ†χhύ•wL« Rε&J^rkΏ«,ψΌm₯½u†η…•“ρ™?’ͺ”ƒv”˜]JΚηLVsŒi \ΐϊλωˆJF^•t‡οžψ»!υdŠ+&U>1hΕ\ QπY5$‡uΪυSαˆφ׎›9X#ϋvir2ΰ¦o*Κ Χfοox³]LOzΔ7o&k$’_AΩdicΏ »Py’N΅ΠΠν^¨τŸΚ«>Ήρ —y’WB œ(@―*ŽOΕQώζάό²;€ 8Όlœ{£’gz„wr­‘tΡH‹υVQ8³œ1iΘycΕΝj33„b )ΐ7Π„ψ‚f―0¦‚kqψ†ήdαΑΦΣ—§³…QυΕRιΡπ½ΰΎ„„I¨ ΅ήΈ y+&T#©πžΐ›ΞŒxw‹ΕZ²‡1ΠRœΈƒx΄ηZ‡GZNWΓ§¦Β٠܍b‘υ°OώΡwlFKq›χΏ|_Ϊ3ώuppŸη˜ΞQΙ›fΤΤιM›*ΛΘD¦h Ϊ₯05ŒΓƒ£ Π%>„x•'S„ΔΙ >Φ9ŽDD’qe‹2αZ• 0 P+ΐ`Μηˆ+ZPψ3%υxνΕwUθΚ©i…ΒΡZΔζi6Ώš₯ΨόΗZIι[ΏVtσρ€_ny€_ώ―W–s—™=Ψ1.mΜL14Σj‰Ά"™ΪDͺγUHΟ`ή „ Bΐθ:#Τϊ*Λ’ΙτXQšCΠζ:U…‹w™bΩΠbGuE.Ά ιPπ„ε λ¨ΜΈΗH…&΄ΪZ | ³†)onͺA,ͺ‘Z§‡Z’―„ θ-Χ€˜4Σm7 91V· ’αΈNE"8FθŒqΞ! ΄0Δ+€ασcΈεΓ$b?»ΎZπΰ^Η[±0Ωfoο%0τγZSKΆΕ¬λΡγΊ“&1nΌg«e“φρ–Š’α -‘fΝΤΦν¨&`sξγŒ²>&\j…2 CΠΓͺ†§ΟφU¬>֏U0kM±΄r λ<γγΩEΥV¬0)„”aR³γŒ-…LžΨa…Βpd7g“ύ Ρ9ω5›κ‚Βι>XβoΔΉb:œQ㍣Fq*α_β9žRγxS*‡OΝ—I"…~΄bΪ9XΗθ2Hx…Ωϊ«v‡sαd&…Ξα‘B¨J™Ή*ΚΟ1 τ~p-Έ’ ψ'λ0lf ΰΌ›/Α­bΜΊŠΗΖΊ3—ތ*`ƒSŸt Ι»R£%1a-zΏ²„tΜ ΅τ•δΦ¨;ΎB3 Œ–qΞ‹ή•A‘φθ2c§jRE/ϊβ9XθͺfO2Μ=Ν~g°|Y2ΛnZ£8“ΡζήLύ*g©#Έ eLCqζKVŸqR&–΅ΟGœSΦQͺp<ΊΙ£Δ€_Ϊ4F4 ZŠˆ³ΕφΖiκ\#ψ―<Ρ")Ν ΎΘ7ŽŒΰFqͺπδβvΔ A«…'πQ”`φk\`nŸπ-˜‹qKΟm]αsTοΐ:aS‚ˆeK-―˜σl²—mΨΒ^G—=ΎΫκΨΈVA‹έύG6οΙ3769ΐ ')BΒ*ΙHύ'=G%Šˆ ’a5g>[-Η,€£Ε*b›Y?ω<ΜηD"$wnΖςBdτ,εζ<ω<Χvε*h=Ό‘ψ”έƒ70!Ο§αVς ογ:jmΟ˜&&ΫI»L€α`@8snύέχ#O²¦@ΉΐάΕs&Ί6§N£h2/πQήΠ}+¬ε―Ζμ†R]ςњFΑsά7w•ǜŒ‡Nη‰λεσΦ`vŸ" ³5Μ“Ο|zc :FΟ ΰ ΖLλIs͎²*Θ!±πxžΉ0»x"š³4A­Pkγ{½^‘₯y€³ί²AŒVιΦeΖ—HOœJY₯W>Ÿ(₯hξΚ@ΰά]s˜Ο–:.Έ Ο‹jBςžηhθ±BΝΔb]δρT‹p=½Ξς;iAϊZ'<ΛΖNC-ΫxΊIfboXx*IŠŠ‹ ΈΦΪΡp₯—ΚLv›γτ8«¬ΔK«Ύ!Pΰ’P‰Ψ#^ΚΓίP’xΖ+„όβ^Rάώ1'μ ΖgΐLzžβ ε7¨cΎ MLˆλb…|=ώβyΓM—dω¨/³?tΚ ά~Ε/ί;Ίη› Œ—oϋΓQΐEB €"ƒPοΑ =ΰ`q΅€AΓp $]ω«ε3pŒneJή¦—”ΔύͺΖ‹t μŽ%Πί `Ο Ί[ηeι.\y€p‰5,Π$ΒΪ ϊ%Σ…hΙ­ΛΥΦHί›΄’oΊxοΐΙΫψT|ζhΫ£bΑ0;Β–Η9¬U³xŠyηcιyέχχφ~­\(³Θ€,‹’)ΛEΖڎ‘Xqœ¬ΓNGLj'@‡C§!ϊ’ΐ6Η-ώ3@ΔB΄Hl:"%QΕN-Ή}ϊάήο}σϋ»λΆδλξήεpfξΌχ}Ÿržsώ§#¨ΨN0 1L@Π9`£Δtώ.1„aΈΕpεp­–lv¨Σuώa}Žρ·–»Β LΠ’\&φ™Π5pi- Ÿ+”MΆW΅‡΅ΎΘψ,nq΄"~ηZ†`άgi­ α>0SK€Ι8c«Ω ,€­ΠRΟΓ&\b¬†XRΓ±Ž¦ΦL™ϊ”iYBή*0&―ΟώΛσ΄xi,Π’4#1F`θXμH6ιWVg˜x.ͺuΕƒ:1δŽΥω˜θU΄(”Η„~L¨SAY©HΆ#np6cνXγ§Χˆ…΅ymiπ•ˆ+Fπ!ΘuON(―¦€ΡΥYΓ2(³Υ Vήχ5`k‰Αœ€Cε₯\B0±V†!(TW‰1+κΎΊO*}Ό=ε)v}¬ΤpμPb|ΦH+5 γήgΩ[@«„mΨβ{<ΆΤ’{Δ\9Έ†tτυ5hƒ°‚ΚΗ>c]EΦƒςS`λΛί±"cNγgc€9‚όδ—Φ^¬€œΡ€mΑšGέjš·”ΈΨς ۟Œ₯[e·³B:ΚPUΪΦ°ώZ©CA)c=f\8K“‡Α₯jށ;a5XYθˆpϊ2 …†3)ό¦€uiFΛ;Δ”I:’έ2τX@[ΐ›ψJ {ΜίΝΦ/AD ζCA@Φϊ`OsuZΊGψaγ%ηl (­8 F9φa,&dz8Έ Ϊ…$#Q²K8U‰Šœ.(p @ΰά(Ρ₯…:ρΑhy„  ™\Ν7MΔƒ&¬ΣΌ;ήP ξeΪτζ°P‘\9'˜@A€I|R֌iM˜!zœ«[ ˜ΦΚ«D―†ΠA‚f\'Yˆ B>±Nl³4YδlΤΔvŽΠ„b Λl·<; Έ 1γœ3 ΧΒλ£JŠ΄ΕΈ ƒ™@ƒ—1gΧAZσ;Μό 0Ή|ΝdD­ώCΒ~ΜIχš›σ\Χ&Υ7¬ΡŒYŒ€Jω™ΐΝyͺ¨q CIœ ]sŠ%MhP«p‰<’”bϊ&"Ϊ`G>§2MiψΟτϋM΄X›|V«Ά@[L oOˆ0 1ίΦ~½»JΰŒ3©½ oΘ°f*ΟΞΫζQ† ¦‘Ό#OΗ3‡²©κwΐ‚/πFotυό § 1€Ή‹΄<4ώ›η I6iYSŠtοΪΉoζ h0bΪ<‡½βY=χ ρTaΏτyX3g²²λξΟ†³¬Tιk™X;Ÿ1Ο ί07$›ƒWΐϋюΩOγ‘yi•°―ά6μ8'₯ŠΘΞ4…:7ΜώE@'ΛΛ—ύΐƒωΊΓYοέΙ_Ί”ζ^{νΉτγηΏο”₯ϊ1ά•„ ι\7‰I ΰːΙ2=,z2 ™Ž‚pιβ–ZΏωΙG’oύΦχ‘aR¦ 3%fPλ‡χΟ§]>‡0Ι—(š1@IDATT£v?stΨΑνiy3  ŒΌ£YΈkHγΣb ]Ϊ―HX΅Z†δ•;“σΨVTX‡ ‰ †IJ€αΔeώP‚D%‘Ÿy–žΗdFΌ EΣΆ¬—ΒξW6”‰€0’%}žυi΅ΊΎ ζ¦ΠΆΜΩΨΨ°xc —]Gΰ”‚!±ό‡ΰδ^&ΨM±Ά»ΖΖ?ΪBΫPυ(ΛZωάΟ·*‰‚ήφή€₯ΦΰѝxtkϋL† 8Z€cΑ‰rKάΧωCβcή b‡ž‘¨3 Όα—2Β,@@V±β?ΑšBT‘ΒΆπwvžueΨm„κZΰW’Ώhδΐάm¨αΛΖ8NΕ{špƒ<SΠtυ{’±ž<\W0ΐΉΧ€΅ΩGΩ9Qv~ΐΊ‘F@!¨q›κΎoΆαIΩΩΫ#ž™„H>Ϋma©λS +Ÿœεολ(eEx†ˆ†ΰ <¬‘k‹ΕOH`3,JμŸΟ6υΓVR‰ξ“(ΧnkW΄—ξI`tM<‰,†aaΓ±šœΙΥ ¬°be;\΅LŽžΖŸ‹π Χ(ΖΕ{‚/ΈnœYΛm’Πw–$Ύ΅“ *cPέ€{[sYw»ϋγ™χ<‹΄R›μe]iZKž€ y.XΕβJ›œgA@Κψί ”ž‡ΰ!’Ν³ B š«½ηEŸΕάΪ€h»γM¨§`WwD­fεΈ ŒΡ5.K P‡€έΒ =•Hcύ΅@GX {.r2ŽQ‚χšΒ£σcλ‘hšu Λλ'4ε5*ΚΞέ8gγ{ε QΉ„σ£ξ}Ύ! Ζ΄Λ™Yα‚Ζ=²’­7<#,ώŒ‡Η„2cεωξOPλ$!γα§Όαcς(–PdΉ§‰ŸΟ^5_YR‘  X…BΎΑmb­·hύnι@ωHηO#χt$±P, 1ΧΒΔΉPZx?*yζiυ A»:‘ϋoνrω©Λ+_4^[Πo΅ Kγ™lͺ·Μ‘ΛC¬y¬₯ ΖF-ΫzΞΜ‡«8ʍ4k.L”-Tσ€ί«Tb'όΟ Uhψ9ΌΜΧΚ8vΗuŸάwuNοΒ©΅δ‰χŸ £‡œτϋΏ‰δρ'OQ %Ήb¨\Ε‡š,††εή΅Ωλ>γ0μPΎd83DΑ–O«άi&ρ4±ΖTΧq.n§ί#,ƒEρ\»ώš14HK.Φ‚ =9 ?φgΈNάϊΚΐ άβ p ›½­Α_=Λ£8Ϋ<ƒΪάc9?βΜ—ξί~ͺ$ΫΜςr<ΦG?H/9ΐ=ύzj?Ι<Ο ΰΦ'Ο­₯―ΏuuyΌμ‘HS Π4Φ²Υƒ©Γ΄΄φh΅BX0Ό‹’*Ι Ίd=ΙΖ_εŠ-ˆ ƏN©Vlή{«Ή•œ;»™Ήyλ`ΩnοdŠεuΘ·)©¬!0#έ»Πiͺ9r3Ό00qZσœ–ηIQοπχ}ω7>u3ΉτkΉδωςάσ―Υ1M’―tnŽΏ³x‘λκœ$%k9S² LB!%°²>lv ψqqxΙ΄CΝGi U• C#f0˜!™ςΖό™μ–GΈθMΒάm€#a@&―(DαrήO0(³ΑΚH΅Ίdk¦B™‘ΚΐΔd!œmg7©΅ˆytcGDγ\+,Ό0Ω1Œ>ά}x2΄Mσ³gΤωθ‰XΕσ3{.qy&ϊ΄ˆ―μΌζAŠψ"DˆΛ΄΄ϋ,¨Χ0Δ¨~ΡcWJ-ΦZθ©ΌFΘΜι.Vq̝Δ%ψŽρ²–=[£½6Pƒ~½˜»π‰β;L5π»ό€ug^¬›–%[%Όi d !AwxŽ‡QiΒ< Ϊ\K<βΜ ν~¨lš ) ΦΌŽ }± @Η !_tΚ·’ΊgΨgΓ4τξUπN©τ©μΠ΅V7 {Β—g^ή>β^zaJŒ5Ί²vξeμ.¬aΉVԚ:%υGΟ¬κ\JΦΔΕάΪΛ+ίγώ†#ΈΧλZž}-œ­ήcΐUΧSψ’JγΣ­b QE%φŸέ« -yŒHΐ*o3τˆƒŸΛw}V «―kQ­Λ[μfΘZ26–<€Θη2μIΧVα Ešq ά5€8 ΧΒfZMÝΰύN­Νc•k³k–8P³p=Β€,3f’Θ«υΚzˆ gΞ&ζ­’σ˜²qΏ„ΐr°&0­ζ|ηΎ²:Λ_- H“¨ΕΩXW γΆ B€;㼝λgΝbYΉI-+—ςή…@Њd³€q΅ˆW„ˆΦ"?³²Κ(¨ΗX4¬ ’ΕZ δ4›g‚Ζψi­`‡b y’‚4G†˜€aΘΆVk˜Ε°©ΘH}£ΧƚΤƜ[‹[E3ꁳο ΟΕ”3D¨@ Ά9ˆΜΫͺ%Ÿ- †Ze8gEφ’–―cΑY)΄¬Šέv€ςD^B…υΥbj3Υ1ΊΥ#֚³¨0©PύBOFσ‘ϋ–.Žδœ±[e₯Δ>κjPϊΞ5·βKž._WΑ€[Ύ‚―phΒ>ΥΈ¦ΛΊh…R Ycu ώΡ Ζ$σ T§Ό'˜Χνέωέ½°Q―ίΞ)₯Ν¬en¨ŠFX\‹JšaΖͺ³ΛΟΞ@έCΕIˆΤ—₯=wlφ|€p°  ε+χ4χEDΕEW|ŠEΑ *<*ΐώέʌb‘Φ+€η@ ΏgI%LOˆ~ΆhΑZ«ŒΙο,wΦ!δJ ΥWZΡ2©XΥ³$pΤ›ΰήΫ[Et“γϊ½[]ΐλΝx-Π6πPΤκ*/t¦άG¬R(kvs”mFX›ίΠχqŠrΥƒnβŒς<=Ž*?–E΄aŠΰV°νΉ[%Η’`έ_(βά'Ο’Ί…‡f$πŒžόš§œœΫ08Σ&ψιΩqΐZ‡Sβ‘εž:?/ψΥ#)0 cg™QΕΪEB χWPV«T1ωŠ%š`R£œλ9cδ 'I°nUbΚ–4|Βkυ+Œ—χy$ϋΑΪ2Wy―Σ‘~ΨFΞό–π™¨(Βz˜œ`₯Εη„²"V~Ч*¬£ SΓC„wq3=kmΝiK.ζ“ύ=Ξ4{W£ηΝşυΛaeKκA&ηZYIž¦GLf­Bλ ΡqΎ±u’žœAAΉ†‚fΞƒŒyΘΣάΓ.&†Ο@UhΓz֞5Γ8Β‚ΜD'Cζ₯WΓ‡ΣέςxZΞέ)ιΟF/K@γζF=Ξ₯Ÿ;49ώόŒk­z™τ’œ`l–ώ;BΙΊyΨf^$<£”ΒeΰΠ+Χv@Ύ·»‰ŠmB§ „{~ξ Χ“·{Ιm]ΩCQ†nς$ϋ9Λ*O9ψ’ ‚ςM=ξ•Fε…ŠŸϋf*j¨,‘ψΐ’±Cψ#γHsFμ YPΏΘχR‘Ε<ΧΞΰ Χ9?Ά…,₯8a$&κ[­ΓŽ‹΅@— A{≓¬Ε,yϋƒLŽp΄y±όIξό³*xvYE}χμk{{;ϋέίύέιΦΫ»ΠΆŸƒε»”ΰΉ}άΛL94Ί=’Λ3šΈΜδGƒŽ,.)BίY:›yL΄Γ!m “Ω14)Σ2B€kkεε|G²δύ‘Ώό—?ϊ?πΤύξhA„9ήψ BϋƒQhΡ„J#ζyŠk―Μg ‹4ΫΘυz½Ο/Žφί›―~аϋΗςόu$ΫK;σωZ₯ΏŠ˜^Ÿ€“΄H¬LFw _ΦDͺS‘qd”ΪύΩ‰`Xr­-ZύŒTVNH}κ‚φކΙξΥγδζ׎’›οξ$_}ύ qp;aΑ’΅T±ΚU±`[NL ©@S~)@ ΥК ³±ͺ„e“š$j8Ρ‚ωSά^‘HςaΈ©ύŒ—Λ΄ψL4Ωΰw­]―T²*–$£BB‹=6Ξxς₯½FA―ΥΓD5Ÿι Π­¨%:Ρ!t[šτ£…ΤltΙψu‹Β‚] ξηΚΜ₯0A)B5KΔO#ˆψ1€χ‚γ"P‘C†ͺUGψ£σ2‰ΣπŠ–{cH °΄•π*10γ-Σ(hφ3ΖΊ Sτqσ jt œψKq-šΖX7°Ζ΅πθ¨|x\7Α¨©ΰ>UžΪ"v‹<ζΨ»ΐjΰη”_«yΨ] ΈΰΐRuK•˜ήf‹QΐŸLλ[fIK’ϋΨ¨βώ瞎Ν,xο©πR„Y^ΟλJX‘υ xή­δαΊ]ΪOZ#\DXƒ΅ž»_X˜b†όΟΔγ9άkes_΄β8G-ξŒ$ς-Ά―*:ΐ§q­Z}γΘfΎGώn‡Γ»σσό @πτΦI³dθ₯–$;Οa]aΰ‘ίN|²,ŸMdΪ,γΣƒΖRa‘@ψK–ψρ Ɲ₯b†j' oˆ`Η΅}~ξΰθ©L©D±Ι%hXkΌte'ΏλmυθŠ!+±ͺ¬s$BΟ‚ζ๏ΕTχΉρΰ‚ΩU!{αΨ‹U—8-†Πcu΄aΡϊh[ΣΧ„5Ο‘χ1ό)ΚΗqž[~ˆp;Š:ξx‹εRί₯w> `ΜΔcΩ=iύgj[q&B—E¬xΆT°T¬Œρ€]˜”1ΆZΤUf΄Φ6¨όΰΎJ!>@σ-ΌC‚X«•„ΥŸ±KΗH$¦2WCh<Ώ–<‚Ε‰σ-`Ёg]ϊΖι:א₯ >ισΕ†Ξl§―σ\FψŠψ‰Ϋ9~Γ#€[nxƒψE )Έ²yμGΠ•ΚEπ” ώnWΙ(ΦΘα:Ί‚‘ε zΛX–H””ζδgZ”#,Ύ‘Dkl(Ž›‹‰ω„σ@…¬”ήΫZO©‚δά,*€Ν ρ# αE•$εΔ~»Ζzoΰ吏–]Ά θΘZφ*]ct™ε»kbΫr.Ssαg4<Ίη=Μ£1ΙΩςp’:td™PΩθiŒ1ηΞΆΒj<’ghU:ލ ΔΈOn5_ %ŸΨω.J0kT’YJx₯Ωwe‡a%zNΊ„PΝQxmՁμP=doDςžτΖuξ‰!xž Α³g^Π ˜yL|ϋ»rΏC+±G(²όl¬²ρΛ˜η3$­‹ΐ˜!<<Ύπ<γ~Φb†…υIή|οΪQrΗΪb Z΄ ρHQΰΌfm}3ωCίχŠE5yηέvf6e2ΥζΖιOό­_ά{εOοδCžγyΦ j½w_ΟΎϊdf›αgrσΎχΖ°4˜ν.ΊE―O"„ep 6ˆ»LΈjμf§ΰW¬ΘΩf‹ώ‡LΏ«eAνWΫ΄ρΚQIΓ]Ω€@“%Ξr―ΎuυWδGήλ–Ν»v8z;›+~ˆƒBa¨:(/‚J θJ€r7PΤtZΛApoΟη•OΎσΖ_9ΌOΑ3kξΝ$οΟ}[αζβυ²¦™Qy™²Ρ`]k”4CcŒ—-Qα΅bL΄οΥ!‡Ώ¬J0( ‘ !:μΜ(γ5LφΪΙΝα~F²ŒZ΅N…ƒυrRΆΞ­˜ΆBΛ­1fS™%θJa<W!‚χvkOΠaι§Ρž@VwL•λgΟ"nfΫA €΅Z8Eλ4G"σΣ:YΓr3·ζ*γ”Ik1€ΙLΉœg3ώ¦•έ’ZZδ’όΧΘuωaZΊ} ¦-…εγd‚vχœ L’ύ|w<΄ Y)QΛ`Δύ1_­nJ•~βσz>ΟX΄ɘY'`škπ>/¬—μ(+Έώl’ (3±±Φ‚mΟT‘„*Λαͺ’PΞc62‘§……ΟΈj†ˆDΈ2@-~vL+.±•j“ΡCΒ t%\ŽΰΎ(Δ €2Β:RΤ"(f#™° ˜>‘ε>J|απ,³7Ζ›kmΥ⬀[°?Ί[νͺ±υ€pfκ_Β+εَΟp΅€meεΥυΚσ˜‹^ΓVۍ‡ ~L¨Θ0|χeω§ •{ xΈ”kŒyΏHŽδv³Z€„u@£ŒΠŠƒX†L"ͺ°ώc¦œš1ψ§7N$\'β‰{}ΏuΫ€z–^7vŽyKτu‰›ž@3z ŽΚ-œ%κlμΐ‚`έf¬ΈΒ׊XΧyFΑš―fh­ΫpsΟ6ΦΕp]³Ž‚n83•Ύk$oκ)YΗ―΅ς:1τJW9T a°Κƒ–0α:U7Z€ Hpmβ‰IT4YΚ/B·‡Β>€=Φ[•8Ο†όSiƒ–Άξ!tΑ˜δ%*‚AΔ€J–Κ‡M™4,ˆT΄n7³ ˩힡ζZQ#š‘Pš\Ψΰ|5)‹YDΡφ¬κΑY”hšBλξΦA¦e9’€,x@Ψ³jHˆ€Νπ?kΘ‘-ΈUͺTΨ¬‚‘?ΰΜ°oRc’ƒQpiœσͺšΌˆ‘Ζϊ±žμgLΟZΘκ6*£*Ήζ8}Ÿ«":1τ†7&Μχ˜$`-ύ*ΛήΟσku(ο5elήήυœ‘τehƒή!k;s bMmˆcmφα3£“ΆŒ›ΚIΔt·Pš Ιΰ#ZΈΗ™ψEža\σ€ύY’.¨3ΦWΙ)pf +~Δ³Ψyή“©@αCγπ¦4g†Π0Ή›»Φ8O†˜LΘπ§BΎΪ>α3Kh>šώ°>‘Ψ°‚] »uz½°ϊ θyC†Kw|ΉΧ*>V֍r&PΧ{PΔϋREιΠK¬"ΩƘ‘5ψ4νΩ?φτΉδ·Ύp#i£{4?CΩ¨GλrJϋΑΚη–g=˜†dY‘£J]uΓΘΜcΘrώΔ²f*9E¬Ώƒε*τB%άζ+τ…B¬i ƒ‡ΥŽ(ά†jδΨ3ΓUδη*Ϋ‘θηbκGλΘ~Ψ³(ΣQrŽχωoΛύω―ƒΨψ ΊΓ›V§±ΨϋΩ`­Ι»WΩΫΚα!<“€rž•5+>³:V(«[]g}ΎψςMBΒΨ΅Qι˜†Ÿ…fοΓάό³—.=Ÿ}ώy6σ{έΣϊΉύK ¬ϊΜဂβ·n§Z˜2$τ !ƒ_k‘Γγώ€βΌXͺηΗ³£mοζXžΜ{O?T§υ„oqxΌ›Ч³ΔuΥ―~ιoίmaωαW²Λω‡f¨κΩtO”σ β“ͺ9΄ ›Π†ωζNΏsΨόΰ­W~lξη½τ~{y΄]ƒέδJ|Ί%ΓlΏ,Ӎr^0–œ ζͺ΅/ƒ ‘₯Fμ% ΩͺZRz`ξx€ƒΙ1eΐ£‰΅ ΉεF΅d7‰][R9βφξ>βΩΒΕ#›t!,γή†­ͺέcA‚‡"‰΄ ˜Ψ_KΊρ(‘0Ε‹€ΙYωA‘˜ ‚Ή H ’*Χκ6$DBχΣΝίΰύh― cΥ]+r,w((UϊεψΌξwΗγΜ]ΛΞh `!Η°ka… ­nGZδψ›„‹ I±φš-n2Ÿ F~FΧ’#ΗX"Mκ+£8ΧŠŒΟ:fSG²roΑζ^Ηυ)ΜQ€-€ŠgΑ?“aξ!ˆΠϊ€²ŒΚΟΡΊ‚Œ )¨u½¬“;ΜυlO-K ΦJw}A'-δ€v4Vΰ8“ŒΥχ$Z —„r(πs6NA!\ `’²ŠΧρœˆ_eŒ%j<»΅ —ν£A!ΌΨ/>ge„ZΏ ²€JH +―@G—¬•&δZ₯u)η†5¬Θ%ζD’aΐφ’uξmY:IPΤ)ά­Zj-Ζ"7 GZ°^΄ R‚e»: šςXΑ­ΨξRεΔΐ΄Q$F²Εxj¬q•Rv]ΐϊ4νFά|‰Že΄Φ²«ΉvδoŒΩΟ)!>‡,]ΞΨQ §Ά7ζšΦ€! D­ΔοZ2Ωχ9HήΆδ`­ΨίH¦f}£&;ZΒΣπΤΈˆ-²ΎZhΛTΒ(kεvύBiδ©Η†aEr‘bΞ8AsN©BjEΆs FMσEHFQΐΔZLΰUz δ•žy—aΚZISΞΗpΘCκ˜ύπIZi£<Ό„ "aΠΗΉb8 "ΕBTͺΑ$γqζΑA>dU 1ΖΟs‘Jœς’ ½0&"pΦʞc^zζz”κ”·Έ}ΦΓ―Œ#l“…6ί%φλτΪ¨HͺΤ‘μ}Λ3'Χ(wλkΜ‰΅λ |PXεb†χI*m“‡^Cΐ©‘\uuY™iQθφήσ†n+΅δ}§‰#Ζ0Π&ͺDOό>œW•sΦTžfhϋ3ζΜΩΓΐJ4œ€ P•gΩ‘rΆ°/!$„·hˆ±ͺόO%Κ54ΟjIΉUγ«ΗK=jΠx„ύQκΑ,<2*„'a•`oάλB²­XadqΥ#¦ μΛΘω)Ί rΉ1τ '‹2|π»›·:QF°st€<™Π`5Ν‚oΎ…~φn)a~~ ^χ4€N.?'LήΌΊτ.’)΅»H́*8ΔFΤD„<Τ+ΦΕΕ κ­ζgΣ½Ϊ+οΉ'ŸόΤχ.³fΘC¨€ίΤNdήT‘Γ ‘fQožΛηKΛ_Ίzυ―ί~δ‘ΟBYžγμi‘ω£Ίq—1~ `΄|žŸ3τƒφΒιιΣ[Ήq·g^ω?ϋΖΕ‹ΫyϊΘΛξΛ88Ρ4Jˏ7‰qΓμŽ• Π[A6wrLŽ2ρd0T¦< =’<έΘσΑˆ>φOƞò«5ŒΐΓo‰,ΚΐΌΗ$k4XηŒc™ ŸΰVΊΐUpg†υ…χ­.@ΜL³@γΤμf§ewλ-G8—2>™2™ΞXVΔ³΄Τj½”ι ~ Ϋ¨°Χ3βΚΉΖ…Jg+—’Φx(b͞hA…ϋ2£‚Π³ “"cψRE©$ΜΔΌεή<ΟςZ…;έδηΝτ]:Ζ PtNπ²Œ)»gXŒuC(σwXŒ=՚/;4°jΚ%–’5gέMn+2vΊB^°'oΞςy2ΰ€eΦ»μZ™­4 5ΜψH3ςη‘°pςΩ) ‘?Κ›‹°γΞ9„p5ξ`ƒ3i‰vg‚‘!ήΞR ­°6ΊY`Yް±φμ PΛ™‰qAρcΣ0*‘¬GR x°&œω»υ‹ϋ§Ϊ2uΆh·›₯ξIf₯ z"&Π"θν",†’Ό^'ΧΑ>4™ȊDxƌZΛΘcI’­Η•n‡ΦrŽΆέˆξΚάΈ—Κ‰JΓΘ-(qP€ΰ)\†oš+9/œ™Ÿ/cΨkQχέP»VΙͺŽ- R—?ƒ2œeοΝ‡ƒ0ά Gm†s‹e)YΒwδQEγΡ9Θ<…Ο(“(cYo­Β2₯ΐ1χƒσ2βb)ΏBχ±Θ‚gpφ4#€‡Β³,ιΆ?>P―{@gΆ“νεG?ϊ /οάx¬LνεYΆˆk& qr`ΒL/Ύ†œ2IsΛεδ \υΚ#•->K¨"1Zaψ”Ϊ–D`β-–«Ή!h‘ΤMΉΧχzΏ΅AΗΩΜΛ2ΈV–γ0,‹_|ˆΓ‹[gρδߐ{θlξ—ζΣδί_άNσ—·9ΑχρλΥδY&ΏM–vυ|…°³ΩxIHnΆ@ΨFEf “˜΄MCPΐΠ΅°X` ¬]0“‡¬―9£μ¬Ά²X,]nY\”pw6Ew+V7όaϋν”Ϋ~˜Δ­"]™¦Ι]²œot’ΝΝ2–hβ)΄Eƒ•SXJΔΟp›¨‘λΠr^ZΘ†}§ψŠψ9Ήw€\”/~VΈΑ­Γ2Sc,YZN#,Έ64Γ„ ΐY«“Νr΄jap ¦PDΊΔ&‚Ι¨΅6F ‹Ϊd.Wh ¦ΛLω€ΦA(?²l9 \ί‘π&, ςΏ° σ»S·! A‘ρΎγΙ`ρ\ bΈΏV§Θ;ρ™’ &ha|a-cn†}­FΠ$φψK±]Γ:XΒ’Ίγ5t€΅I"@³m“έ³vg@ΨI3V‚ΰLθΈ7`}zˆ λiw>Ο™εκ΄$#k¦ψzΎ Zή±N:† Ψ†c-U\!ΗpχbaUv,Έg–0η?Ο Θ a±gΝ‘7 Λμ)μΪ+ΥŊi[ΓΫ[δ˜ΔF_Ζ-s”“*@;'θdή}  ^2χυΏ@žpYŽσnΝΓΈ”υα>5,κΌ~―AοΆ7–žK,p…΅θtΐΞΈΠ€„kΗ±”’uP(7a]ΛXΟΠLΪ7Μ`Θ{]„¦‘ΙJM@V¨’Ϊ*ΟO¬©•DBAk¬†*?J%Œ§Τ{Φ*.Εo₯Ϊ‡ΙT.HήΙ°ζτD z ΩΐBϊ=yŽ2zĊj1=>’&$Ρΰƒ\έϊ[±€ξk½Φ;zΊόMΆ³΄d•Ίμ¬6ΔΪWᜠ’"kΙΪIο|ΉσμΰžzMΒ"Ι2"ΒΆs-VBξee ι@K±Φh•OiZ”ζΉΥ<8_ZΨ—† 0Cό]°ξ³ ePyΈΝ€ θCΪ1li&’di(Ά7fyλ΄Εβ[ΚΠ…₯uΥυ–ΐ§—tƒ(1fάΩƒ[»Η̝j:€2T>Wy `[LNo%B'C•ώ;l°+ ΟΙqΖU”"lΒπ‹"†‘΄…²ac_όFn_ΒƒμΒ+W₯Ή`·?ι²Τgζ_ŽzΞeBHuŒ3μ4?₯ζΎMέJ4WqυΪ!cSΞx’”³Ό˜£ ŽΖ?Ί₯Ÿ4To žbπjΑΗΣίρ±G“ση7’/½Ά“έλΒΛ§Γ'ψtζωηωπψr­οΡΧ6Gh;m̞95ΙΞ"ΚΥ|ρΦ ηι2n&‡Υ)">2Ύˆ›Ξτ›o~§Σ§!–Ώγ±δο\ ‘Ωˆ`•ˆ5“|"—ŽΫΏυ/ύψ[ ΄μΎ'…ήπYy: nΊΖ‘δΎoj9!Ά.|zk=ϋΨωκΞ|ςΓ?ρ3ŸήΞ^Lž[^ζ)χσλ©‹ΟežΏœP·ςB@ν’„²LcoΛ#ι–ΥŠΰJ‡,ΜΜg@’ŠΊίΐ»`orZ¬ϋi›Ϋ’v^XΜ]αdΖ»]υšh±oΡUU!Φ™β:ώΟoΘ^ώ¦ςPF8 x*ΦV­‰¦&βq‰΄ Ό”³δvΠ‘S,ΡΦ)CψF™ωm’TXzσ „υŸ„Υ _ β*΅τλE‰pB-ϊ€%mP ξΏdξ3žΗŽΖ>β΄fΜ€/VϊΖzJ˜‡Ϊ˜!Dlλ˜ Έ`Οϊ‰‚eρ―Ζζ3 ΦP!ε™kTnLΚυŽ}¬RTFΨ»Iω=€E—3jMh»Jφ±ξ©LE­u>/ ΅l]]鏣z^I],¨τjBžΌ\΅P:MQh¬ ©'ŽχΝ[‘¦ΓsΓyͺρΤZΝ%B4ŒuΆJ†$ΥΓβΉ†e8'­ΘΌ ΐcO˜“te«…Τ°κΦ9+ή·ƒ‘²D‹0ξPΨηΖ&Ι­|™1ΕXDU(μpg΅HYίkΙnbι…Ώ«4ψΎΧω Ε€³$HV‘7dΙP0ΓN|ΆσΓΝ΅zζ3΄’B,‘*χTά–’σΟGƒ€KΎ‘"_α$e£>W\yŸ 9F ΥœσW§η3gϋrM€?ώ/pΥ#—β:+ΘΰQΑktΰόθc'’gž9"ΈH^|ιZ(γ6>3ΩΥ± A‡Α"χ~ϋ­=ΚΡ‘‘=s]₯]Ο«m°-?Κ–‡g  ί|ϊ”ovqδόΝΆηΞΣ:R+“y£‡ΔςύhΦσΒ$Y3ψ!5’ΦΗεωy’τΜiqωd<Ύtφ‘5κ€cΩ%ήΎϊο(γΈΫΈΥ€ίY£y ΰ-rΞΣ9ό«³Φa )ΩκY x\ ϋ’nςffΦC1  3+ž3%ολ t/Ό"¬ΛΧΤ=π•ύ N΄YΠΞ³3πF γ)$”sΏ$,EΟTŽ9Gž%€£F%ŽΣ[δ›>pΧ(ΣώκΞƒωCO|Η¨Ώω›<%'fQ Χ=  W»Τ+LΞaα)Ο¦}<»Pš\——Δ―*oΰ–wHMΚΧς‹ωΑΟ½φΪίύά£ώLιwώ^–<ΝΓ΄>Γp`> > ωs€ΠπˆσGeΰ=/^L²—/o«Άe^zuο›ž~γό!(†“D1 Δd@|Z,Φ²·n΅ώ'>±v|‘Ѝννψœ·Ήo_ΟβΖΩNΆ†σ+'³Ά}*ŠΥeI=ˆ€γ-΅V΅όsζLZΣ‚)Γ@Κπ³=˜=FeceξK-DȁV’£ΫΓδϊξnBQ#@Φ³ό%xpΫb΅Ρβe Fΐ&㾚δVΖY­SσKτD qC’Ώ”鑬ΗώΙFΒ½OUλžΚμν…„…Ζ¦"Z eφ‚kψf$ό,ν'0μfQ(3ΒR,Ή†…‘'‰VψΌέeςΪ†Ί$d·«`W ΒΈfΈGΈœ΅9―tΦ3]Κ\ `ΰΪUB`ΐ@EJiY!ΐοŽA‘ž A‘ γv+«Ο‹…΅ΙP ΑΈΌμ†\©’ς<ŒœUε%,†ήƒ›δς”wbO—Τ…wσV‘Ύ€]7.ɝ„SXΗ–SΊ]Βτς΄pΉ–Ω C,Žz”~Š ·, –Ρ²š΅u*ZΕL–²Δ eΰόΗ“Hr"aλ~©]ζ«΄5˜ZIΕP’z™«‡& „ EKgΰ ‰ξo0ΫΆ˜!Fχ+ΤΛη™c(’z‡%ΥΈώ&V3k΄²’IC`Λ=’V7ϋd,f ΤΒκn₯Ÿλi£Ύ‚°[c“$…+w €žΚ2 k·…―qŽ+vυ£`–Θ#Œσ*8ΟβΉr~&άE%xKΡχ8ŸΖl[YΖdF˜4²αZ»υ:η*S±pmWαMςΖΕω±β…kγd‡γUy0y˜_†31Žά3D²ž1»aM‡Fμši¨νφ QqŽΧ/Τ]α1f―τ°”ψ|Τ/ηzχΕ{ΤdΤ³kς^`ΦΪ€F³ SΐΛΥ$NΒ4dRS'Γ£l\$ΟQά™O! χή•+>]‰Λ6,E― τε9³Uω:$€Œω@sœ»o ΗΉ±§ŠOΛ3₯7y)ηΣIg(†φΚδc©5ˆ½aψΒs1@ρψΜ{#Ω!ΉΘ}ϋΔΓ£Ω‘ˆ*Dτ«5QΆ εω±χm$g·ŽΩd—=0Δ@žΤ£Lž=ͺ\tyο˜5#£"Π€­9Se+BΉΏF $‚ekμ P»πkZ@bƒ’>ξ±<¬{–Zͺ’0”˜§ ”ωE‡ΣΏ@ξιωa§π—·μΐηΣ|œυ+ΒCT†S*ΊΨ’Ubπqo;‘ϊςΌ]@Σ­Β‚F,λΙν|rνΖn2λBΒ8 t, »”£KΌI‹) 5‚]‚PέnΥG9.#ί ½@S{gςλ¬K…ςŽ΅δ ŠŒή›η¨{ά!ŒεFΘ€Π¦X =Ηo½½Oߌ2λ:’t_Ηϋo4k‡[ ύ7ζaΠ‹Ύ7_+0‹œLσ爑`Χd—Β$š€˜Wl'ΔjržάQgΉ(ώƒ$ΩΞΆZ_•S¨Yg ²Π3„ΐŸ# ŸAΜTn+δ+Λk/_~5nKχC2N34RϋτW¨Oχ!€˜’nβΐP‰Ος`oοꛇγ_8g··ŸεΫήβΎ~epγl£,LΪ“[s+…λ*!"!έo|CςQ±²YΈY3­aΌ‚―‘aςΎ΅Wex)–θ%ΜlHψ…ξE«,²?‡Q `SΪΒi]ΥU&ΧZ2•μ“@vDeƒέύ£δασΔσβR„)Ψ|£‹εA 0“\&Ζ»ͺ₯J FλίβgξPεž.N“TdΊ ­³Ζ&sffρ6Τώ±Χ!ˆZs, Z‰ΐΦΫEDC|ˆ•Π=—1 f—εa F“F—Ζ±Εji-0i6Γ봎W8Ίq΅šiAςώ2MΛI ΄\λ–4FQanlž)Cvρ}¦ζ*Zc΄JRMaŒηΐΔ Œ›l ΒH­#Z##Dp-ZBπk¬loάGˆus1Ω ƒ£%ΫL>΄Sγ„ζ93Β₯Κ$Ξ NrΔό&3¦δΊzX ‰p/ww’ q’Zͺ«XN y˜PZΠ­5šI&’}”– +cύ6Ξ9Ηs€/»Rz™›dGπ`ύlDPd‘U$tS²0Ό―D(.Π =,_VζODΈ½ω ΑD…qΊeΦΔЌ1 άFL ”€-<Miœλ+Δ_νSη…Βλ­Ϋμ8u ΰ-3xNΟTŒyΕ*Tc]jΤ$/Fls2gnG69β9ζ{ΔόΫ»‡C” F/›ΜΏ© g+xro¬AΪdνY«΄KFΞ€ϋnμ² +Π‹1εe’‘L*›"|m ƒhυ7ηKg₯ΏO‰—ζVmς£'ΘΈS[QχΩƒ±–)d%Γ²ͺ5ΨςrZcU]NnŸΧWΕΪlu‹1Vΐ°Ζ²zΑ‘ρυnšY'όJρΡ–ΐΕ½6Λͺ‘€DlφγΩwŽζ˜ g%XΔͺΊSK·–xIW―CT8ΰ™9ΌJΣόTŠaܞ—h™Μ؍ΦK ˜΅\ Θ5άΜ—Οΐ €#ή֍χΩΠΘΎ#s]\Χ2(ƒηΚβ΄;―°V΄Joμ)Χ―φΦ‹ΩWÚ$ZžBQΡzzt³CθH'oθšΓ’ %@/₯Ρa ck„ΒdΪ1 ΘPΓCL(ΆI A™&v”ŠP1ρτtEI5Ξ€Ν|©DU;KްX7 c›‡"£MτDψ Pφɚœ±ωΓ'PV2&ωΚo8Z7Ο†H§e,ΠZηoάάKfΏΞ8˜ŸΚMc‡p0Ό}T ‰J*μ»νΎUj\G«B˜γπ.1χ†rμQgω?k|±‘Ο1aD₯qP=Ž8g±˜PkHΗέΈhωrxΩx&ξXOCϋl’^«1b0A&ɞΊ?ό‘ΌΞ–Za^'ΘΦ‘@)KO˜.α@…|„'£ΐγZe|ΰόCδΒωVXιθ|Š3=K~κ§ λz‹³ΘBΫ„‹ «Ι /ή°μ]ήE΄i~>θœbWψzΰ^χ,€Ύ»SΔ.žUγ’#X α>·’Žc&B(h…‹B‘ž§„Ν―Ύϊ•ΏΉ£Eψςε³^ΐjvu{l€ΧVΐDΌŸpπoΒ‘™tOdήZ=οΧ Μ ‡η€YBρ‹΄ΊύQ[E―ˆζ‡D.΅†ΰώΕ/~jtΉ΄Νλ ½Ώ_Ϋ(%|-ν<ϊψΑ¬ύθ_Έ0!`Φf‡+HCԏ&@l.a ‚H {ΑμCPπ»–%ΫΗRΔ$€`«έP”ΒΨ«gΐ”r[“Δ ›€z$^em>’OΪ½‡9Κ+;χs<ΐβ„ h’OŠB;Z ¦ΊΣ£u6LΚrk%Rβ l;αg°/σ f]¬‚Σ¨υΛγtMjέQ)#([‚χ,;ΆŽ€Χε뼍ι3Ξ8S…³΄A†!\"γm#Y,ήδoΜE&n(Ȝηϋ‚8™¦ΰ B>ΛgΒmΝ²+“–—UœιJ[1A+ΞАŸ(Պn›u-R"PkAϋω L˜ϋέ-₯'ƒΆ^²ή­{Z kάχξ=η’"L•œ KΧιΒlaY4ΡΟ;}²Χs„qπΈ¦žΑ1‚,0$ŸΪ°­z§Ώ lR¬_H"Β΄tю]k2‚ΥŽ`œb” –Π)FΓ^JBavakvΠΣb %ΰ§’FFαsΩΨJ…Υ ’ :Be= £Ί`H“kQ›Αn£ƒλŽMŒgΆΥ΅Ο΄†ΰ©ΞΟ;jά/³ΑύX€―9 ­Ϊ*²ΐT„6V_€/Ζ4B6Θ Τ) r- ₯Πz­Nσΐ‡.Y"9/œ%¬ΏλTζ˜f±D#ε³}φZ/™• ½`pYΏ©ŸχδDhgHβ!"’«ςπ§Ζ½%Mz.ϋ3‚YKρa‡ςzΜ£ˆΙaΐDžœ$¦Τ˜`½ (U‚Ωuκσϊ%τΎώφAΔ0›*Z„₯W­²ΖW?„kp1ΏμΉΰΩαΗΝΈ‘aZœΓ² H’Ο0uΐ4tgμ.L>Γƒξυ&ζ³iI+ ƒh/ββΉžα‡·J`ΦΓ•m_Θκ’ηc<ˆCVIˆδC’Ώ€AŽI<+*xp6¨ΗW|ΕCΰk(d‚x)€τ^iεΤκiΉ@KTͺΘϊ+crύ¬"c£•Mͺ Nf(š­Σ{<ΟΆΦ>ΛdΓPςyΎ~?ησCXΧqˆDΘο{φ΅Ζ«` PV#\ΐy1>cΓM>Ε’Ιciœ‘zMEδϊ ΩΔC²Aσ*Χ£½7ŠΚr£‘ Κ΄€ηb‚μυ_Ιπ¨ΘθΨƒ: ’‡κHψ&O=}6bΏψΒ5x–qψ§‘vΏl²OgΟ΅"tadΥ>4uphΧDΚK²ώGt€lc΅–&0ϊ²Α)σ°t’΄ΖL’ΚF” ώηΊ“¦δΫcζZΒeε3]4eVΌοΎW >Ω8e4~ωΏό\>dyΡ:ή«ΩΌt8λ†˜œ:Iφko‡σΫο^„ZlΒΛΔΫzΦδHψžΎHVޚΟ"h5±2ΚτtBIΙαaςζοrΎWF–ΐ((ίςMzύBjΠ5œρΎI}y“™sžF¨?/ΠpΖm˜šs[’ΌΌ³Kς7ΉG§¨Nς?σ½δέλ6…αlQΖWΕ–3P=€™δp§ ]&“SνΘεfΛμ&7J’‹—³Ιε8&ρλƒπ?ΡΖ=ύŠl>uƒω2ΰ^BŽ QιLβ PΫΛL‘ψΛώ²²$?ugήΨΦH‡H¨nH:ΧΪ1Ίˆ‰b•³χ|ζ'πUΘ„,IryλΙψŽ₯κεΉiQ™Ύ, λ™VσΧ>(unΘ\―Νφ?Ή‘iδϊύᜰƒΌΰ™H˜XΊŒ*/ωΥϊΟ†V,°”Έ²βC-’D…J‹G ψ–y[9Γz₯3~οΓ,&0«*ΤΥ˜•εΔπFμε…oΨ © ¦ΦΕ­§Μ†΅¦ağβξκaαXγξ²ξmllΔ:Φ°‚ (†TŒ sΗ•u\§’¬ŒCΤϊ¬ε2*o^όYˈ.χ(΅&«VH˟ψn §qΑΆΙυwd(|Ν§:uA9ίah| Α;<ΠP°Θ)˜™‹Vβ 1}Ψι@IDAT~6δE€αX΄ή Δ&EΥ€ƒΙrZΡD&q"ζαβ^y‡ΪΔάΑ ¨ο{fςΌύkW)₯X6Ir@­qΓ/䁭“ ¬ΩΉHζ »?–Yμρƒk\ζl0 !λlΛ}/rOψ=ώ­p8{ΠDΕZ:e̜c’ΥΈWρδL£ΕP½ζTΘyjδp~™& Ώ›uns'φΊHΓ.ΒΞ*Θ6k|«d†Μp—šTͺZYΜ—4/Ρ›ˆzΘu¬Ήή!ΌμΊδKŒ‚ύb-h³—ξ5W.’rV(nblΠsΓ@±B/gδZΰH3$y˜γ₯ˆ sH§"ΉŽρ₯—„ς«r―Wnψ`Οߎ04-G”Ψ„ίψŒ¬UA–™5o{‘—ωχ ½ξy½\ 7Θv”H$&AΙ ςpxπg©-ΖQ|ω•/όΤW“δ§Όjό5.ΪΖ"6ξ”J3Ϊκ ZeNω !U °ΚDΝί|‹k΅„όpƒuΪ]Β2`€«)`A‘œΓ]^ƝU9T‘ΟςαΊVpΘ=†BŒρΓptE‚j‚qEPnΒš…Š—BOχkμ€akyπs|ωySΗ` ¬ ‚–S©@g[}DECζžΑ"`’μέW„–pS«π_ Ο‚£Ά–Φg³1΅fzkqΆfjΠ ΰP€λZΤr5ο(+f£[zΝqk‘tΰ‚tΏ[+YπR`s¦Δε•d˜·ΦˆŸΣ” 8©>fγ:֞6DΌήpHρ'ξ±ΘμSžΪ¦ž«ihέ-6Χ{‹T/Π†ΊP½ΉKΉ7κ—ίXJ 6ζcυί[` ©ι5Q†ΕΔR„£δDΉ΄$αΉ]Ό]ϊ¦δ;ϝΫ*ζ*?ŽG°’-~b½ΥlA#Ξ―ί£. Y«(TYdг λ\±Z3σvψco¬yk²%›—«Φ' ³9ήΈ™0ZΓ’+PnŒ]»cb±΅|v_c±Œ©D²C\λž…+2a8|₯ΙΦ:ρόE~ak*:M@:X™~¬”° i§Έͺ²v‚Δ9kζžΧ *9bΛώΒhώMΊ4ζ “©°~,σiM\D ?ΰ3Ηηλ¬·ŠœαU&ΚUλX―` ζ€ζΤ­ -XΆΒΑnϋ°ΫΌCύfκY@ΏΐxΜ™;‡΅°‰Eέ.ƒΊΓ±Φ―Ρ@ΗraύCΖ’ƒT₯ρ¨ΝEkpθΦ„αξ^?™ #ξŸλύ¬Ϊs –s΅‹ya†oDH{c…Ϋ{‰­΅:ˆεΚΒΚΝ:Ω}¬—”Ϊ€žΝγψ€^ΐg…}\§ΛŸ`·{@¬°4ΰ>@wΆ‡ •cM4θ%RΙςL¨=}*™ŠiεtˆΖCΒyχ\₯Μ-9+=ηž y<># +6άY›’¨lΎVkς&H’»†ΥY€Λ!χζE0_­ΖR†y8œhσΝws6ͺΠ΅όrŠqOθ±JΣ£Hπ泆stQfΡZ“*ϋ»%ώ™˜bζgY»ΩuͺΕpZχŠ+΄€ΆβˆΟiŽΑ?›Α ±NκmΙΑ«τBY« έΚΫ¦όΞeΌΟΩυ:*HlτkΙ ψυš΄£«ω‘^“&ΌΚ|Œ³X¨ό­ /sΌ„“[²²ž[1𬰀sŒ)u•IΖiqΊƒGβ±λ©Pασω°:b-W|[/‚wcαm1Nη3δΦ]φΤξˆΞKήηY‚`ͺf εmΆ Kπ ‰λνE=@«<ΣΔα}y @؏[αbΔg³xOυ‚ŒQŽηX²­-’ χvS‰§”eŸ-©;sφ Ieύδ)¬Aΰ»Μ\ uΦZΪZRFπΒ…G’|ψ|rkΏ—|ω+7 ι.x£αV 1,1ΟΟhΥ(P’Y3½ϊπ%­ρ‘Α{!„οωφΚsPͺ΄’“'½ιΰC”•q*θ‹Ί·_΄›¬fS σ£aŸ$Q£5­Kr_€Ί]yγΏ@ΒιΕί›@ωΌZ­Νφ|Q< pΏ (H/œ=™i΅0Χ[δ ;yΫλξ†mψ³χρ/½tuο›>²φ5Έρ‡Κy’‘1?€Ή9g3ž•$/&ΩΛ—ƒίψλ}ϋΊ”ό’,³όρoώϋίAεGF‹α2…‹eNβ–ΦΆL“}„“ΰ`E¬ΧkνΥ| #86&&‘`Υϊ2dήXrЬtIχ=7Χa JBXσ―NA―΅†l΄{Q‹ σpŽ,Ι  ΅*η;<3J…]ΔΞ‚$΅^ RLhŒW²{Bi΄ –;ΜEΤž$»MZAs4'©Φm?LΜ- sΎdσ CnZkg°T%a…6³DΒ‘ΒI7£₯•eΔc"υ²Δ1IJ΄Μ™qγ6$Nέgc%§(ΡωμΪςΒΉ ΩΒpπoώD¦)r½ΑΧΟϋυΕ4= Μ–νσΩw•Λι©j½•a?>:ς°ΞG½!ύ#,τ„ΗAh€θ F%‹ŒΔ“ΐƒp1.ΆNάoA ‰J7Zq ½RuΔΔG΅Α°τ&V”K”K–€PχP¨;/mΠ…Dow2θZΪI*mΌkΊVΎ¨$ύ©Π@lΖƒ ¨"αΚ³ƒα<αv%U΅ΓοY@]TT¬a0B1Y`©&LŠZ?}εΡπ ξ7ΡΊΝ>Kλ”Ιβμ8΄θ懛Χͺ1ϋΠθΝΤάNМΑ 6c%τ Φ¬4clo·xO‡ΝδΞCΚLΦλάΠrb%€±τ©΅Ψσ!’k5…ξΜ›ˆ$Αb\tQPΝς±9'hž!2@*η°­ͺ̜ΟEΈ·.t¬’ΑšU‘[«„TXVό*†bΪ€“ΚT Š( ΊΊmX4ɘνژ…O6“φp²Vς«UήAΤ€ηόΈ.Q·˜³m\΅Φhš^–#hJ2†0”²e²ŽrkEMM 4‘π˜λ£C&°–.λ^ΕΝIx~mόbθ˜_ZsW½œ½’ %Š“δΑΝ`Αςpr-h#CθŸb‘™₯䨲‘w§‡υίπ5› ­ZcS5:Zβ‘‹U‘‘†Ώ,c΅ΛδMχΜκμX„₯Ξ†°ψBaƒΡΣ Ž ĚJs€α˜ρΝφH-θBy+ωΐΞ$μΌ‚·‹ηΏώ:ή(hσΤ™³Ϊt°<€ίsnπΖfˆγ†θ Π’kŽΚΜιΜΉ3FͺΙΫoο"DΈ–€…ŠΑŠξsɍλ4ƒ‚†«5ΈΩƒωΊg'Ύu'Œ"›[_KΜΉ¬š ’Œ SHž3’_Εa¨ύO·ψςΦ*!ΗmΚύΕΩ‡Ÿώ™Ϋχ7κ…τ)«%τΊXξpσυ¦Y`το~ύΆE:χs―ΐΕ?T,,—Έ:³'π?ρuΟϊέ7ΈŸήΉτV­―\y"±Μ֘ͺ ZA―Y[z#·δ)€H«ΐΜ΅4σ y‰ΦG , *^Θ_΄GΜ"sΦ‘u[ΖΌZΜΫ™ ƒ¦–"C4FfC˜σ±§ρΑ-o„πδ^Ί!0kΓ³lΐ‚yx‘,~·ΖΡG֏‘­,5yhΩςlΊΨ-‘'Ȉ0ng4Ηcϋβ˜λ&€Sΐ˜xβ^°Τx+γ< aη|΄ /˜i­ΰs€ς‚ΨΏ<΅ˆMΔ q‰#όš­F}­jθ™ήu,›#ΐθ‚ρZAγ'd‚Ε—p‡ŠΠ1ε’ TCML 2foS@ς€ϋ[Ο9`š`α5ΉΖ6ΈΖς†PdΜΓ\Ϋ›_a)’mJνψύY6 @q‹₯_/Ώ›•«εoKkΙχΝσεο]Λ5?ΈYoζ΅Κξc½!FE§³¦2kοΞ>³/Œ₯ ΝXίŒ€ΰrS:“ (~ΠPπ}‚±±“eΎΖ„žδͺΖjΊ’» !Έœ‡Ζ/Q:RBˆ¬έ*ζͺa.oB{[μYλTJΈH`­υ^Λd‹™ϋ3ΙwΚ>Ž‰«FΙ@αΊo%‡-¦Œ%,Š'ˆ‘ŠS’‚ˆ*Y†=£=oX—{Χ[„>yώT,P€ ;„ΘXιEk«ϋ€U«sΘΪbλœ/Ή©ηaλl+B6"Ύ—·¬±+ΐΧBkE™1+ΨœŽ±h– «cb©K€]Ή˜‚H–Δ* Λσ—…†‚ΪAX螐.<)ŽeWŠΠaDk{Δ@fO`έ…₯ΐ›ΎςŒ’ή•h~Φ2¬G¦I|ώ =`n_Αsβΰ9*φxΆηtγ³j‚Ι§V¦°œŸ!fΆˆŽΚœΙ1τΦg@ΏηΠσλΉeΫ‚Θ‡–Δζzž‚wπΎg <Γ³ "^Ψϋ±ή¬(r,|y†εQς«*J·–jEΒ4Ϊ·Υ\ƒψb½Œ=‡)c•Φƒύ©TϋLώιAΣ¨ah†ΦjB™_bΟͺΣ`—5ςϊπtω9χ‡υ΄{©₯&{Φτgί 9 ΐŽΉBΧόn Κ\?Ό΄1ƒ9¬ŠsΎϋΦΛqeΊUƞ  ΰλσ{ο±Ir‚P°9ŠN, V‘ι²>·zΙ>mή ι!SΔΎž©‘Ek³ΥHXͺΓKΑϊιΉ°5Ά΄ηΪ«`κA³1sŽJ%LpΐΊXζP…Ό­Dυ$;Ξx_Κ‰roZpύ0;Ξ'PŸI<’Ϋ{•)&!Ο"L*Jk²6 Δ½T€AΓ₯Νm;‰Λ‹ϋ™ΜΪmS-δ¨G;‰pΥ#_ΑΥfgθ„₯‘ŒL°ώrVa—€ r•«-Θ.Ψ³T‘gV0ε½w’Ϋϋ4•Βƒ:&w"“…Χ.QΈωwφ‘S«dFxW„Έ[Θ$C4‚Wa·JΒ‰DBζbY,Λ³YGΦΊΛvUŒ²vŽ™g(|£N.cΧ0ΓΣϊΔ#C‰ΠZ…μ 7’€?\γ[kΥC”²f€¬Q6Ž™°W1ΐ‚|,…`Λ`!–²¨-€η)qΒβnο–υ«F@‰».±‚! (1X™›e?d˜ΆΎ ¬³z yφ9υ .λ–C`kΚ 4ΌŽ™δl5Μ]Λ3J`ΠEW:¨ΌΪjζh#ώ™•J―n“4ΈΡ†Ÿ$Ϋ|1~E]•/}:“±ˆκσ˝»–6Ÿ$ ώ”ώvγ[©ώρp΅ΩΘ+œϋƒv”Ϊ’ΥχάRWJεRΉ’©Vꐄέ/±z2Wά‘š’I¬!½A-k£ΖG°‘„ b…δŒ}œ³vnt „ͺ¬IVgΝ‹*tθ dKϋΦΚΆšI£ΖzώΡ„Χψά! α&VqbPβ^žΩ€΅πεbΔΎdΣC¬‡CΩT ›ΰvI†ΏgQjLς`}·†ρpTIφŽΠϋX8ρM-ΛE-υυFr£w˜\»ΥNZКτmsA(ˆw«Ζ1ι@gπ`γr»€\+jΊ£β'°+‘ΘΦ:¨‰]υnΗ[μ@?¬θάΫΪρΖ3칐Φsπιo„@ηyO0Lώβ σ©ΥppΩgρ&e­-²0Δ"gΕ Ε|­l$tκXψRΰ„£θψŒGάΈ}RΗGπ$aΙ^%ΪXvοηΨ£TσθϊΙ$BJψξ3Μ1FΣθ+ΦD…§αN,ΐπ΄,οGG=mπ/ΦIΰ^Ζbl7<Ψ1°Ά¦™Ω³ †idΠΊj3Η%Έ\ΥΦΗΣΕ3&xΫΖi³αaoΈDδsT‘,±X/ξY„ζΖ¨“}€°ΌLΠ‰ο/>„m› Ή,&8•CΣ¬“bm[=[O6Hl3άb‡ϊζ} )uΐαωoX#eΨ΅ΰ#ςΓ XR<–½γxΎ1ΓΚ;α₯ΠΒt6fώ±2k…=Α^nžnDNBΫπ βρUΤ6yί}°ΜΉ!ž'΄ΖϋΒs !“φfKχ»I8Z x„w+΅:!TΆΤ^κ)4΄+zt ŒΥZ͚Cφ‡9ƒ n4xwŠwπνμΡ!9εQ4*Kγf y±λ ›Λ5*9΄‡<Φj­δτZypx0φrύbfV\'xΉΨh΅hΰ•λα½[κΫ ƒ©ΣΏ½Ρ¨$»‡ζ5t±ΠίJ~α—_`oδ7ήΐˆ%Ÿ3°»·#Ο‡°½N™(‡LC^b‚lλwO‡έδwΰIμΙ„Π;(‘½2Ξ”Ψι­η„‹ΨΡ–ίt#„ŠΜ[vΏ :γΚ¨|‘\ƒ0Ι’E3E–ˆ9g1ΉςKs™ΚŠ=ΥρΊ ‚3ωβ—³X;X‘ΌD«Λ@—„{ό=-Πw-ΰDMΎlϊωx’™ ΰ©rγ…viSδλ>kυϋύχW/=™ΑϊΌμfƒE/’₯;ΗΛ—ο§T.«Xλs‚›¨.Σ< 6JX'€¬4ŒΖͺ;“"~ΈQ%QΚjyŽζhς†$°Δ!,QDQ:·‘ c_?CΚb<ΫΡ ΛUž{  ν$6#δ`‡ZΠπ`;ε5ΖhτΪχ*Φ§&e¨¬qZ'"Λ&iς’"€uΓLΦ"Σ4’=^ŒK»t”œ“!#όœ›ŠX…Ν!œ½V‹”VW“*pq /j9EZ—X, kΆζa|֊$WΖϝΈ^Ao ύ¬7u¬28αώΊ_Ή‘€€ζ=…¨ ˆ l³ε±˜Uόμυ†³H₯Ίƒ£†5VB©Uysc―M¬‘α°ι¬"xz# ωƒ$–Za±žΘ¬»kΙ3ˆΟ΄*‡ ΄"λθhΕΑ€Ϊΰpωκοaγ™SΖ ₯Δ^ΫRWΐγΤ ͺREΉŸqΡZ>JΈ‚ΧMψΔΚΫ%΄βΑΰFOτvδŠ„ijuΞlϋÝ ’ηŸ]sΉ @:{‰kx&ώ*oϋυσŸΏ•ViρύAΚΨ}ϋ,;.¬δ-Τ[ŸԎω`Π‡64HΗππΫMΒx΄ξ 쭝νΛό Yν_Ψ€…λo„”¦"VΑϋSγχλW&\ΏE8_~_₯2I ϊT‰byΒ³ χς·M°)ω ξY₯ζž–]δΑa)MyΡ*v‚`«mP\ϋ7h‘]JϋΠjIΪ'z₯ζ W' k ΩDdΓ»τ˜ΑAk Ϊ΅θ˜&Ÿ™6 ™_™j’οš³Γ“nφK₯υύGzίρ“Υ½ώΰύ γ§JWςΙY¬kΣΣ;ϋέΏ;ίC τ'k…υsCο‹ΕΟET i‹¬xϋΝζO8όΕ+Ρ,&Η49’΅·Ό]«Ίΐާπ&Α9³ϊσAΠμ&9•Τ₯HΨ%Šl` ΆΪ0–%>± zξίƒΙ=˜―{@/ύt:Πβ`¦(D‘€•8 D1I}epKξ o.“KH#κ7ίέκΛwϊ·#_šΩpƒŠŒCΌΆ†!¨ͺ‘σσ{½žΏ“H8Ι—^/!‘8—4γ™Ή.βm>Έ ηχϋύϋΪfŽΫ¬ΓŸϋƟΌ0XΞx”Ž0ΤΦ‰ΰλό‚ιΑ< Έ‘tkΛJέ“KζBγ­ά .Ξz@Δ+΄]φ*$Β,9³ „!Ι1VcΌ œyv€ —k:v@ς…BypΩ;›]˜ΔƒΰaΕ”Aζ+ˆ „‹…φμE\{u@/–΅&\l@­Μ΄|fJfΎ@P‚έΫ‘1 Vξ- :1«άςo JΝΑ«ΞuHbv΅œE‰DΑ3σ&2­ψ©m₯[Ά}eUΐE‰G!dXMLEQ’oνT…­k©ΰEδ~Jz•Ō‰v nΔ:3Vγ·ψέΐ.!`ό›Κ"θ-wmxΖ<°4 ϋl@Š;Φ†5ΔV©ώΰψ»xj,εVΑu)8κRM£‹‹?ͺwΐpc|μΫ‚ΨθΦ€%­–§Œ‘~ |^™ΓωB`ϋ{όλŽΦΫ!ϋkΟ3­˜`œ`  .ic ‹ΡΙdgΛ₯cέΖyTœZ-Ϋ ^ήω₯sΏΎ½½ ΖψΏηέιύ‹ΏΉ$wωNV6Ρί°ΒKjβ]Jέ±0!³ΈrQ(ΫζqΜRI&3₯™ J%ΦαVφ˜™μ…σ!-.ϊ‹Rz“˜wi‚σ&υ_§‰ΝΫ,ί―0Ÿ XgE³Q)Ιͺ?Ε —Δ]›°σ.–{„€5±Q‚VΟΆPCΔΒΝ{eAο +XžLˍn~ξΝΡeΏž=η€β«B žm#’H^smΌgοAn.Οd_ƒ`Ω¦AςΆŸ3DΔξ¬Zμ O°Φ»JŠ&Βΐ€ηŒΑdΗ ŸλQI…σ[αN™ΉΰjŒϊˌΌΠη­q€jx zŒλΪ1¬ΓZΰE¬ά%@>„V‘WχΝΉj…`Mό§έάΊΞΌη_…ΐ8O”’W’Ž„΅πRέ6ί# ŒσފO€!ςλΧWqπ>ΠωZM†σ\ΖΞ܌…V±αa™°/ΖzηnŸφέ!8kλxzά8ώ³lέ%[xΫ&ς±άΓΈρhλΟuμΟ³Žω…κίωDςρgJΎψ₯›Ι‹_Όyˆ½£ŸVš§ ·°™dsWPΐΉRωc„ buG,‘Ξ4%—*s;[(_ηoοQΛφ:ήuJeή*jϋλ›₯ƒΟ|ζ61ΫO\πωΟ³<_χBΑŸ&_ΐΠOAΎτ’Ϋ?ύα±v-·ψΡΙ|π“ƒωόtπΗN pO=l/±Χώbυ›λ―γWx<ες’Κή%½)V5b‘ω2‘Ζ‘ΞΫvGd_³(0sπ‘-Ύ3T݈MV€(»ˆΕ†@ζ‹•»7_ϋϋ―I+œ²Ω1l λŒŒƒjΌ’ξX̏χωγΈβ₯©ί|ΩξΎξτoομdΏRΝ ΐ ²eHΔβή, Μ—,κΧου α›yλ·ή½ύ‘gN^αΒ§`³iE·πo‡‡ό^ŸΌ_ή[YŸ3Λ^ς]#Ή†u‹όTK3“œμΒVΔΥμžΜ`‚yΑ2Kηζi‘&"0VΝ2]uμ Φ ΝQ¨WKq‘ ]qbΰθΎrg… Μ_π·‡ά» ‰4‰ !βgsΆΆΞά€…Ή€`Ρr1ΖS±K™­–΅t[ώZ^«Θ3KGώνΖξͺH ¨vp3I σ(ΐXΪš!ΰA¨zοEb/ΒοIIJΜ rΩT…`C‘ρΧ!Ϊb+ψW©h±:r*l;Ž%ΰj°cœΩΈόXύH β?+”Β›¨Κ₯b+ j ‘­νDΓΥVχ=Λ]ϋ•w‚ž;t’§Ž-ΦΎ¨α„;  Θρhc@°€:¬Ψ›q£θΪΫ>ΡχuΈί"P±H–Όχ2Ÿ П6,ΫWνΏNhίδyΟΩ–μ{ωžδΪ«'“γΗ—Yθ˜άIf0‹Š ρέΞZB g!ΙVN6Ž0ι 5J=0J•ŽG…σε#ηOΎΪ‰'ήΖ$RήKβ}ϋ₯Α0Ό2‚yϋ£={φ$6§VΆ”[‚;>| vΥόwη^)Ζψ›oώ©?%(υ–LΆπΝύΞ*’a1OMŸ…ίδ§}ͺ6΅+šέΆ=:yμ^ώ†ίCƒwΩ ΞψΤ^πθpμΔxΥΉKŒ-Hι7ΙΈ“ΘΙλb­ΑRϝ<6[ύ2έ.Z}αy₯γBΗYϋh@‚ D«ΈΡ΄ΈθvΈ°gόLpιC‡^±vΫνΏώ Η·ΆΓϊd9£nδ*κ-$f\θşρΡG₯νΡ½—n΅GΐϋŸ)*œΐΝb+ϋΠ%ςB#DŸχ~ΰŽ7<{΅ΣόžΑ¨fΝ!ͺŽμΰMΉ± ¬όΕX¦Ά•†ί’Δκ;(aT…₯Δγ {Œε3†8ǐwΨ Θ?Φ8eYGi…Eΐ¨ήΣ:HγεΘn(³„J’Fp2J=3κP£ΠCέh»Τ:,“ JSυ<ΐajš¨NSp›Η`»ŒΜG‰dP9 ™…J”mΣ¨ω/b»0ψΘ0Η…}tIγƒ )ΉΔΞΤ5XamWJDΦgΔΌΞ1έ‚ŸJe’‰ΙΩΤϊΉ3£ΣΑΡ ³Be2ϊΉΞ•£»wψ©Γ ^Κ?υκz}ΗB0‚dΎ΄‡g䃏QΔ Ώ]φ( }aP=Ηf¬Φυp–Γ5ϋΘ]w‘2Έ €g§MΌ i•†tάΣ΄ΑΞITυA°ΫƒήDPΛW2k퍟―Τͺ89YώΦΒ¨πb8Α/@(’b$έ)‹‘‹ΥL<έΜ₯˜ `±4£γΛIς˜Β†8Χ)ΘΗ0ζΉb^,’ΗBTκTHξοπΩG‘]UΏheμ ξΤ°ο!•ΰ ±ƒ4Υ01·Op;PL ‚JFŠ>ί€š‰F™ώœΒ.{οώ¦Ά^Xυ°eMώ-p|'z]}ZΖ !ζ‹\4α•H+~ς~Ήΐ«Ψ#'[¬*‘βΜ”Y–8ό‰5ŠΛ䈌clΐ›™‘BβsŸχ¬θΚ+gΑ#§°g(v5c8X}Ξb+Κβ™OίC(“ •>Θ#c?ϊ7­εDI)ΌπvY>·‘kΤ„žζΚ‘.ωVΊΈ7"ΔK‚Όγ­ώ€ΐΘχc₯ΰ…₯³v΄'άΝ{5=š5Ϋ(υ'šΎ 0γΏΌ!ΜZΗ_>ΐ’ελ›OΌ]ΙHΐ܍Ρw†ŽE\μ‰χΎ΄^=Όοpΰ>χ{ρk+ΩΙ,•’²X^@±βψ!’VΥXJ«©… [Qmˆ<Σϋπ¬|J9Μμφ3,š!·Ε1ΠN51¦Λ’8X0¬©§»DΊ• rξDtrTk3ϊΔπq4κ  ¨8Λύ[@δΤ Υ(}{ότz΄Hb‰\gν˜I+rW–Ιp˜ε‰FΛ6{Z'=@@’O\#1#rΨp0¨½˜Q.ŸLΞ’vΔσΰΒ8@`}fΡ9t Λλ|l©N‚ΌQΐbι\νΖDΚ'XS\ϋ`ufϋ ϊ«,pβPΨ ιcΗ~iƒέτΔΑσ“ΟrΰπΣ»7R`δ΄Šͺ\?@tΠύ₯έ‡€ WˆδΠξNNδ»Ί(+'Zi0wpωΆ†φͺ cΈΉΰ¬‰Ω„θœΞ΅CtZ§hιr€N>Γ³©@JܐγΛkNf,΅―χN䎻 Π†!a!Α†Q{ΝΊΘί 2ΒΖρύ ²|DψΥ7ΠΖςucBς%"ε%€ΉE>Œwρ€|ŠIΡΟξχŸ[τ™O?υΆ ¨me.pΌ o9p –CΝ+F°‡ίΌ­r†ίύzίx/ή ”ί,F³άnΟΧ.υΊΧΡdϚΘ―j;»WZνm¨Τ™^ζHιi&₯’΄ίτδ6±$7τGΉˆΣsŒΡgZ€ ΑΣyh#ΔϋΔUι£ςU@wΰšχΙAabζ Εf€8SdδXϊή6S~πhh"Ο­\¬γx­Ό˜Fx<ƒήS=^[­ΝŽ§R‹&‰kτεb…EpOκ 8yha\Yό‘Zθ”2Κ»―/ΟχΟρ]Μv²g  œ¨”r§—VZ'z ©“ΥΩϊΩά ½πŠί|‰B΄OΊΡ–qt0ΜΑ£ƒs£[PcΪwΧ>ΥU’ΈΑͺ ƒη2ϊƒΧό]έ”B… zΓΛ¨ΌhrͺL€-…bA%ΰΈVψΥaeΖϋS­FΞ΄”VqD}jω²!Iqa΅Β †δdlˆͺ*ζΘ_ΞΠΚΔI•ΆRY!Œ#°'@±ςΰ'Veˆ†‰»KξΪ'ΉΑ}y0&KAΗU )M’¬=’¨l!"ϊ€ {¦)ISy³ 5ώw_φζox˜Ζ|½_τΚΏΉ’Βv/:~εΕπ Ύ:n%Χ$λΔ¬Λ¬›f(Αt“&³l(Vτ8ξ΄ΛνhΕψηΖ,„ίU1bΜ2ΑJ,άÄΓ…U/M'ψ^m=›gΘAŸPΕ>ΈͺΥa2Ο:rŽ΄5ύZΐι’μχ‘—ϊ"]e™¨όg‰Βηi{/ΚΒ0ΪύφΚ Œ‰ΎΪΥ‚Ρf(GŠ^¬¬:AΕiΞ0f5&€¨ˆΠ>£ Ϊθ©\‘H€™αΞztr~νθZ/υ±νΫzzΰDοΓ­nαΎχ―~πTƒ>υ‘rBω WEδw?8v/ΘτΝghKϘ“†$Ίϋ#W>ηζφUΩ\m―]‰—θqΥ7ωΤ©θτόΎΤ`Ϊω(†]Tμ‚μ¬νΖWςΕ£ζ=­mμwΨήΟΘκ’γURlBP!Πβ³…χS!hxΩ¨Ž=ζ!2:/ξm0κœχ‘Λ-tάtZ nQ:‡IzΡ»|’<7w'f>ήκ=U™Ίω|±23ΜV2I"BΩ-d¬‡ω„Ϋ…DBVΔ>βrˆ§gžDΕΗK2'όάΕώβΎ}w΅ί?όΫ_"4PΎ5Χ‚ŠιΆ³X€·p!ΐWœ{ Λ0Ž@- ₯rϊ&žΘ‡ŸKΌΪ$B­ΚB—Ψ+²Ϊ|ιΤDeΚbDe𗠐 | 7ΙADσ4Ď}+γζ2¦ Υ$BεŠΤN΅θ(v‡}σΣμtά%搔%›y`MPGδX1ό„γ+οdβcFn"†ΩΔ ΙΖ׎ρ0„‡ΓΔΠω|Β‚e_¦SΠ7 †α”βRωkΡ‘Ž½ΰ—Ξ$(2¦ ŸώηψY»_—?ϋΣΩ+vώLχδb''f퍍»“λ>ςŽΖc”7BΫ|Ύ Τ’Fγӎ.ΐ“ϊqԏγwwv³›_wΪψγχkωjΊ;θΟφΧΧv"f΅£:Švd3ω΅‰ΚLs0œY]ݘ\ίhWΫ½A΅^Ÿ…υ% Ϊ]k¬bλD k,aK½`ςB;ΫΏς ¦j6ΉG {"zδ;Γ?fŒUσLRD[½e&@ιh’7’TΥQΉ‰Ι h’‰ίD)cm₯9ͺε³]p_g yΈ”…\q#[­­°ξΎΜ„l1“ϝcp.’¬x–DΚsW=«z~vfr){γΞελoˆXχ‰>υΦh`(ζ¦μ·ΰ‘‡’ϋή7^ΪΣlθŏΩμϊ›Ŝ€) ΗλD¦ŠZ<oT;HOaι;”x -„\ΐ—ς‘ͺξ8tόςo«ζθπs‘ΛyΏ²€Y@ WI„{”dΟfp™Pμ1\’τ[Η ‡4κm?–³_‚ž Χƒρ7"‰S•UΤo €™³ΪΧΚ.a2ί'¬˜³1A ΐŸ.Νw \ξ9—.ΥMξΊ>ΠQZ+Χ Ρuίυνη7>œ4Xl£ƒ£οjΌψΏώΎ_Ώ³χέ…O­>t{{iψ5DΎοτޞ‹σΫcnDσBh–Υ?"°„Ήβ˜ϋ#ΗψG4'ΌVFRκΜXώβcμη:€΄aR‹A"*\`ΕĚδg΅‘H 'α`ϊ ΅’m-mr ;‚qΐζrSξu aCI>fβ€f5Ψ\φ ’΄w‰g`ΰcu­“”š0FFm&δΛdNŸix)Ξ³ΞDˆ6δύ0π¬ηŠοαΦ0όΒZλ”>ψΝΝBο HˆVb¦4^b8΄‡ΞΈŽ#Ζ«Ο™ύοΏ³²‘Όζoίwb0CΜ:RR”οέΔγςέŽοΟ ‰„«™…Oδzιt\ fβ0ο1Ψ.ΝMΏ€‹j€φΩ¨«Yg=`ΐ™¦$Π1šlqδίYβF«¨rΰH\©³BKDˆΧ€@0Jω7¦tœg°n0kΆ¬0π’γΉpώU΅«%eΊ”ά΄YΘΓgŠHN*SςΠθMγΜπΟ oΞ³QΒ£pI‘‹`\Mς“cΧΒ1ζs&K…Ε )O Nfιž€Ν8’Pbž{qΨ‡š`ΜΡΗ “Ήt’•΅7ΌΎŒψbˆΘΰ0ΉΠq„Ε{ς‹§4<άe‚ήV&_J₯ŠΘ¬vΎ/Ύjζ·Ή/rΜβ’=ΥΛοΪω ύ³‹xΈ«ρa=½MΪ @/,j +]žm‘Α”Bbm’^&™’sΡ1bος±Τ|°T#ι¦ Ίν‰pΣMڎ{δ>Ÿ°ZΗΛA&‹Οκπ¬ΞgυH#aΊ!zπΆ0²€ΗΤΉVN§£χͺ‘5ε~‰lQάI“eΨ7i’ϊJλYlÜ―Lj <γ!χ"xVΧT bΏπwHVΡN L3ARU" ߘžπŸΏ’θσ]d sΊ_6ž›OΒV`Œln€j_d³)ν)Ά_1=mΤΥ―£ήx’Ÿ»ξΚνΌγŽβΆλ,!©^MϊΕξ©ω*O!όΤD–eŠn­΅zν"΄9ϊπ)LΥλIn‚…lVpz$†¬/œ ΘPŸͺΑGζγδέ―77ΪωL3MRιF³7hζΚΕa±T]Mu²Jί¬ σΉΞμΞR ž;υI&ΊΏψ{ί@Χ'ŒΠ=Ρε‡ΧΒc?Œsϋl ΆƒΡaΐΙΐɘϋ'›QΏQcφΈΠΨœρίOρύΠαCαΈ₯R<ΥcΖ„8AΡ“±S¨u”ν–Χo…ByΔ> £žφaΉΈΔ$Γ0rgK.;ΑpIŸ`‹„&}€k2š6OνjιRΖό} ΌΡf¬σL«‚o£©pX˜¨@wλΛN@JΈη’Ωέuuh^'ΩY°Oχgπ@aR›–―  É8Χκ8橍8¦΄ VB0“Ε¨Ε£μ[½5ΎŒΜ;ό˜λ5˜˜D©ΓDν_yθNf΅Ρϋ7Ώ^ίΈζwκΛ“Ιm˜ζ―@Ωα«hŠ[ΉΣk²™Šι­Lz=¦κζά7₯˜„+GŒLΕδ―`Κ+ρ±JŒϋ πmwΥ$Γ ϊœ~ι΅σχh’,C²9γ˜6`’§kq£΄ε8©Fΰδ)’ύFβ7ŒΤs ΤT6Ÿ Ηϋ€bβœ‹†fΝΌ₯τ£3Ξ(ΧPfΩyE=Υ‡ΪΉΎ²£}œuΞ»K₯ς…“ή3³ν%‡ίόf²Δ³zυ«χΕozΣ!ς}\H#‰Ν…}›ΠŸ_RΫ‘αή½Μάά«ŽίϊΌΖ³©ιύώβξΜΤμdtέ5SΡIΤfΞ  c70˜‘Z‘Auΰ<3 [ΡQπ)t™q§Α„†_!NΞ0Ό–΄Ι Œ‘d€Ή)°ς•IU—C“<1Ύ o]ͺίμίε67Ζ³ΟΚ|Ώ2©ΗމΑε6ξŒ*Φ3S©1/ωΙntμΖΓ΅3olζ2?H¦΄Ά΄2ΚΡΑΞΑ£ `y|ΰO;Hπ‹$ζŸ{{ζ(αΉqΫ5ή…Αw nwν»+΅£RΏν§γdjβː"€iΎ.ƒ s©;-B«ϋgΑ£Μ%O j~‚Λz œ«8Ρafkιδ>3a5KMΚ@“Ό?“Žˆh―Q$^./’…F\ ΘfΘ‚fΛΛ¦  "FΪHI‹ΚUEΔπ'ˆ™L!-cˆ#M£?=.ΡΜ γ¬k†δ ™‰RAx)πc@»η7]Βθχ‘h—d šxSΨ—―pΡώΞΛ.₯‡_θ™Aeƒξ"€G’yŸ5πL©»Jΐ¦χoβ«jο<σQ(δDΏ.™?;•½κŠŸθ=N•ZήγœarhγΠΓΈDoslλDρ@Ι ΈΙFςςΐ·BΤκ 7Τ”JΣ(°δ―̘#dvX^ζψά³€Ηml…*gD΄ ρΆpΪNJ [<€¨`KωΫ™Hžk›LΠc₯G¬σ¬Pόg9–e}4ŽΥ}³(KδHPiυ)»€φΦΔ½Rh ΛSζYΙ,(4Έ…82<’E@IDAT'3ͺGšΎ2Α5Ξζ(ϊ^+§:{φΟΏvǎw žχ?…ς·ψΕίΥφ6›˜'σι› ’a|ψΠ-ρ]ϋφ)£ Ρk§ϋΙ}ΡΑ€7Fύϋυb~ρ™τ£|ρzΓΫΒ9c€Y|ΰπ-ρΑ=@ρψZn9|(Ω·g_Β½Eσ3ΑxτŠ€+όϋηnχy +—%[Š~†„&ΓΠ‡ZάΨ««Ή€ΗΙ€dΠέΕLιgŒ/ω΅&±•ΟRR”γγ ϊ₯ιxO*‹ΪΐφsΰBU’~–₯.Ά’tmφΜ&χŒ >7P°LΣ±Z"ϋΤgIΤX*Oΐ2ΡmV79ε8q3“σ²?\i'ΐFΰ=€£€š•΄Ÿτj}~κΩΥΏbΧπ&s~Žηdί»Π νKνΩ»'ŽφF£FƒΔ΄cΡίρΎ_я\kωϊτgA7Ί-Ύ ¨ϊ<Κ έPEWJ(OSΆ‘ΕŽB9{ΐWsΫ8‡ qba[CάλΖH;’§Β[Tωδ"x6¬6ͺΖAΗ¬±#-$QQ‰ͺάίz―Ÿ¬0a q„LΔ”6Λρ… e–ƒb$8ηqZŸϋGκΞ~.5Z!'εAΜΚGϊ£μ‡+Υ+>xz©|ϋίUŸ–ΰ'`6‘ooΈ yΠ~x±mssxΖβNϊΝΏQu~$•˜ Ηsγυ3ρσoΫύ-T₯ωδAΣ1 ˆ`ˆ½8ψΨΔUγΠ[ιβψŠu#Βn‚sγIβ)yFΑθσ)ϊ£6άzλ&@2,tγ­τΕΦi.\/ Ώ3†©S -jˆ©3‡ΑN³μ”6sΣcΛsαCϋΩmζŸ{Ϋoόr:[ψ?Ί£3„ρΊΠΰr›Žƒϋ”/\¨HGo€œz.„ΡκwΌ³tχέ/Sz³k»46\JΎαΊζηv;…ΧvIdb‰Lή ˆήdrdώΩω©‰Υ=snΘ2gΫμVœΐc…oώτψ<+έy>\9ΌgΈΖ\»£ρΣq[|Γ*vͺθΘΜVΥΉ_#Π‘ Ργ€κJ‚N\}l©Σο} ±κͺX蠍Œ›UΤBPΒKβ<ž_Ηη.q‘σ™z¬ ›Μpν,ομ$$ΛuδΑ…€(+@LͺhO ΰ›cς€©Φ€μϊPLFΙΆdΘ„ ?ΫΞ‹?.7ί/’m3jž 7ΰΦί?γχvβεƒ6Ϋa–ΞόΉʈ?Ÿξvΰ1;r¬pΐΗΌτΘ― OμίΟρΒvϊ •"ƍ€α'ž|lΎΖ>ξρίΌ―_ƒLΖεfΩ,NΎ¦HTΛx >¨Ι΄aε%ŒU"šΠ»v`£”Ϋ@ώΝαβb’ΐΞ1lB «iΜωƒχx Σ¨rœwŽ6:d%‚fΊ06QXΗψΰσκV3ζω―pP#ؘ(Ζj+PdγAγ€›m!“xε0₯IυŽ1Ο·±<¦ζ €."›ŒΫ.ϋQq4™©ROgψ§/~Ν‹›½ Q|/π‰ΆδK‡ζx@sΎMς[t(υκ½χΕoš»%ωυ#ϋ»Ρ‘θ>ήπλάγG _žύΗ+‡₯ςυδ’ή υδ†ώ wšΐ»“TwG’xI\₯Ά`˜‰.~6ζΙj”LJ¬ζGT:ΞΰΈw)Θ jΦ…ί]m2ͺ4)œτ€Ι€Y΅"φYψυΣCΰU;iuI[M/Α›Gύθ6ιS©ΜθώLΎr.πΏρϊ―=η5?v{"ΐμϋγ.ς-NΖQθΖωηήρΛŠšΟχ#/7\XXΟ;F^Ά”@#ύ“ v;Dν Zr|› DPž“ί£GπίθkγΥNϋώˆάŸ‘ω=ΒB\[l΅]=c;ΐ h„ί.—o™‹χF<¬(ͺ ΟvRεs(\ξR–Μω’.‹ΔƒgY‚Ip© Ϊ Ϋ“?ΰ@Ηh4RΉw^ύΊΞθαοL§Λ79#>±  ΗηηΡοψ/Ί £Rύ±T'³™LiεύοΏϋ`Χψθήωo{΅ƒρΰηϊΕ_ΩΆmΫδreΈ²Ϊ•Z…’I`€/A“t֊8…)τ8w]C‘ Ι:ŽΒŒ~΄¬ΑdΦΈͺ™Jμ: t—*) BΈ8€­ώož€•„ˆŒKƒΘέΕgψ”š―ύ…Η‘±W{ DvF$,"i‰±ζiBΝψ“ί§ΰγ…*‡‚8@φΖRY6’ευ$T£α΅<ΎΐήeI3•MΘς\@½WVΏq΄ΞΠ–’šΠϋΒηψ(?½&Ϋμ œjώ ;»«LŸbΖπ2ΐσGψΌ΄G–UlψNnκΤ©οΕγ~,W.οθ5;,n^˜ύ<|qμνζo c9?~Q|£C‘‘+ΘA[Ισ^–ί­$¨†J –ν:χδXλπŸΫD Rf<Zœ!%Dή2΅$Έ#άtqGD>%θ0Œ2(2˜x₯€Q’φ;πyߏ&dκΔ h¨+]j˜4BSN‘oο θΰ4Η}6DžvΕkqΝΜ$ΒPžυX*)ς½u…ΰ˜Qι("·ΊsχRλˆ=‚'xΉm Γ‹vΓ8$ρέwΗ­η|Ω/gΤν‚›†Ω#έ,?ΑƒΖςΠΛΥΪθ¦+―ή}χg»OΒα}©»οn΄nΉυWΎ‡γ{©f˜†8_ܜέΩ»μ!Ÿi”ΒίwΏχUσΌηΧ%ΉAέHCέΌνk~λε³Χlίί›μ ³σ£t‘D’&wά]ƒSΨe¦*PX©4•hη‘Δ’•R8<>C&” »Œ0{V©ΐn\¦p …YxΊdn£8PΫ]‹ͺ&Έ1€GΣφWr,{²„*'ΗĈKšiŠ’”Ϋ\‹=Ÿ¨"₯!` ΈάΓ΅΅H@Ξ`wD6»‚R=jx‘Ί‘κ!4Mβ‹Ιq.‚>YZ΄Η™ΝΟμ›θμˆμΕ±)ΡΥ0£ηΒΩUcr’ψs žύΙ‡>Α©HΟLK.ώ!ρ—‘ς)€ŸΰΩώυi―’wΏ;ίyηbrt鍧&(Υ<>]y’p|>F!Ιƒϋ3š`π4eΆ!NsnΉΕTώ~fσΕω5p€B#†¨c g).e["‹ ΐ»˜VTͺ»QpˆK΅Έ‰<ς*£δَIŸ|XΠwΜΗLJΪF₯MJδσœŠηI›Hzg±DΟetΛξζ3τ^+d(ΠnfŽ=w΅ΧΞώό]wέEƒ„9Μ§΅αΦ—g T¦*3YŒMš~έaEj͊‡$Xͺή`"ž«JδWFu&ψT˜ `ΩΙ€Q] rΩ•ƒΎ2ͺ\Θη·ƒšΘ'Ν”˜Μ³‡_9V°r쯚Μ`«6ΆQSιOΛη¨IξA±…-ΒϊΡΗ•žc”P.–n Θpr¬θ½gwΘ;`|x>ν‘―;φNc.£"ͺΓυ.έT@ύ‘Σw|όξδΟeΜό³&“¬*4σχΆΉP}x߁xΟ™Φ½?βΡύ’EφρˈυSnϊΣ³'ρΣΣ°±^€ΐϊ ϋί}΅Nέ³ƒυτ7s˜¨>―5DOYώς>Z3NζξΫΤ1`n<ύ^„{nζc%ύφΔΣωαj&ݟuΧ’Εn s½ŠΝ: χπEΗi&kιLi?β=(}8|+±¬μ%#{όS-VVB€†ΰ‘TD}t₯Ήρ*‡ν―qΏ¬Ά‹@;³D ά'χ£΄ρΒϊτξ€F2T¨hiΙΌA Žωl² žΞvθ!?}`Οσ^ϋCΩτΔ››½3Y§Vτ³lφΌƒ| ΡC/‘ CšΊ€Š·>ϋ΅Σ•ZξM“ΧSά<―ίXƒί@ŽͺΓΐ£Όœκ= œƒwhQ]Ω‰\ΗPΖΔΡ,PžΉžb ‘)ڝ§ϊΩXfŽŠΰΡμτdtν³ΆGW°Όzυυ3Ρv΄ž?ώOχEwΏχA4K„a ξ2œ‘ύ‚;M”Ί€³²μrςPgΗ-Ώ)wEJm0o•ͺ„%Ψ *ΛێεœZ yΌ˜¨g(™ 5:b4Hjd@"Λ`Eˆ€†,~@ ‘”`έ—sͺ‹l€Κλ ††Κƒτvΐswπ‘hqνeρ•Wž ω ΐ³Χνx$€ΓψΪ©?N^όΡμΤδ Ίk+πϊ9QΨ!|'ρ‘ † ^‡o»p}ΞΏšΜFΊτΆ#’½Ύr\dˆŠΊΥ h;•Λ—™gΘΥ3!‘jmΛρZa…όŽU­L”£ZmM£βά­ΆPq¦”Σ'ΤΘ¨ΠfLTX‘θrΜη΅"^ ©6ω£MHΪλh›άCέ‘ΜƝc0Q)p¬<%O€»'΅^-“ZΘ΄XYORgOϊΑyέΆŽΐpI»ρ“έϊώ9΅ΐ†]ΓOŒfΘscbΗD™Υru£Zγr"ΪD˜U11Ј2kΠњalt&“γ€P”ƒlœt'‡0K™ΚΗρ>ͺ9δP˜pŒM` I3χΒ‘g"Ϋ€―1‰«`@ώε ηό(σ€Ι½ζ<Σ4cΛ²ΥΊI] Š@˜Ξ1ˆK΅’”όψX\―6Ηc)'=ΕϋRα&‹΄#ϊνΏ]fΝΠ·?nRnΛό3Ά1¨>gύΒAζΒ/š?ΰϊ‚ΌΫ…]T°ΨCR}cμ£MΐυΈk;ύϊ…ψ“c6‹»pΌΌ'Hή³η>¨Cc_{!²όΘ—ε/ΪΎ$Ύώxρ9_φϊϋ(ΐυ•ƒώͺ˜κΥT˜|Υ±χτ!ϊq§{žbfΣΌ—τ—ρM¬bΰ›΅νΪσA Œ,~ϋNΎRΤ9OΜ‡Ύm’7\πεRˆΉ#ύ1nnρΟεgdύ–IΧ>n`k׎RτΌΫvEŸ8r.ZZ^C:‰[δ–τ£WoR*xƟesp#Ξ?υ–η< 7=ύ£ιθ:ƒš ύσ“#tvh|–3\|oΨ >€]ώο›ίφ&Vήv>ψcŒŸTΊν‘»(O•(.Ήp5–C–G;π‰UxˆQΓο*«…*χ„³™ ΜΫGͺLGd4Ε²±₯IΚκ¬η«„UZ‘‰Υž¨OD7ήΊ3zዏ{φ6€λ(ΪΆ½FίQtμήe–ρΡζσœ³ΐη-§«3*p\)#@±Κm’‘&ρ—ήΡτΛ=Tš*˝4qB I˜AfXΆ΅t5E‚Iθ’[šΓΨd0) &•ƒh©+ %‚*€t.熕ψaŒΈ&<=Ž™³wΒΦ©Ω+2xΧχΑAo7ϋΗ@sξΑLΌΔε΅αN/ήν‚s½^ψΠΆέAj ξYYA–Ψ{υ½ΣH=όΩμ§5Β`Q}Ε{?όγ?qΫ—Ώ~)•[`‡Mυ§νzΙΡ`ΉMπό—_ρΫ―¬&ΕύΗVΞ–ηΫ™‘ w¨[”'ˆ Ξζ£7L„σ ΠA΄8Ώ–@-‘έΚw£υ„Δ"•Θ α΄ o Ιd=3(«]Ζ‘U˜νRG¨"’[Ÿ*F7έΌ#Ίβͺ: Š(3―o˜^ψ/nAˆφγQs$Άε咁M’MΩ¨ΧQ$γΎHΔΙμt\‹r΅.«šΔ£C Oθ9,ρ*δτ§V‡·«X?<\΅₯‡y2Β‘q˜nαάΞη…aIHh)2€U€Κ00-~ς{0\³—q}iΑs2ψ›(SωΦΈSΗ DL}σιlγύύΏAη­™/P4Ϊ„Ω4„œu Ο’ζFΊ³ρ.Kq @F†U pY± 8€† Yd€:όέ Τ‹ΰΪϋYΉΜ¬UF·•(vΑ2ηΌ‡Ξ/…Yΰ€Œμy;ι,θΖ•©Iΰ΄[A‚4₯ Α@sΉpƒνC€€_Xf3fZυή«νΞr,¨Έyόφ‹Ih<φ!D―ΥυΛεΜR{ι“…«Ÿσ“Fžχι ΆΆ­  {9 w+Ν)“[λ4€`8ΗΌ;dBȐg<.Xυ0κμ‡Κ: Α―Ρku³΅cfu°-J‘Œψά»2`ςη-Ά„ 8ΆvΞχ•Εμ‘‹aDZύhL^T ²-vότεk%6+Ψ¬2+¨]"ΤΪP£…,ˆq=}-&Ά ΰΚ‰c_0  q$aLLOe-|ΧΛίπβnΧΨtm‹ΝυΕήΒ3ϊbŸτr9_ͺŸ<δlŽβΜ)¨BP§}>Z`1HΛ‘Ίaς½˜}ΤΡJx=™ΰ©mF—ΧFD₯;-p%,ΣωjxO΅Λ¦ Hb!ItαriΧ'ΊΟ‹@ί*PEΡwΌμϊΓΥ€uΟαs₯O|κlXŠ;]ψ˜ΨRΤ6Žy ="ΨΖΟaΰΒ%ρ=Šaσ³ώψ>DΝ}q½Φ€ΊΡ<Ών¦ΧέΤ]iΪΦ^Œ›ΦQ)P'$IΗQC‚ιΚ›f’cGΠέ€ΚWŸY™ηͺc”άί¦_:œ…«ƒ[!‘gg5 ͺ€ήΨΑ%Ιl Ωφέ +•fΙhw*D!€τ$‘ξ@wύ,ΥΥ(Hpή¨5 ?S]ͺ²oΜ9s„YΑ~Q—,€kΐΆNMΑ Ro†(±I„μ:ΚQ˜˜αžH²[ύεψ;€614κ·–ζάοtH΄‘ίΠ#Έ0ՌNp°.‰ι„IŽλg¦C‡iιOβΏϋΨwJqΟ…Ÿ(5ρ|rvεώx0ΈcΈ±”‘6TΈW―%‘zH(βv ρcδ¬DΡ¬@EdWοΫζ'+\²²S«+>TMƒ(ϋ¨T`AˆŠ‘.Cjό7©0O€Ώ^cΉ`άεΓΛπ)όUͺ&#m*ήρΠˆΤ«Ι Ψμ*ηεso ΛPLœΌπ?DίLDτπ>š2Ι….Ž»ΧΦDόŸkv£L`ŒJ‡+a;ιΠk««ΘœFίύoχΔν-κΖΕeSΎΐWK/Š`<έ•ξνMtYy²“Ή γ€ΩαξδQ凫}[.³₯Ο³Lš]9Zg5₯¦Β 4Θ½ύΚd…I ‰°V Έ •ΚMG₯κ‚ΠέΛΆŒ·ώ’Π μeόΓ?Ν{`υΘ‰ωώ­Gϊ― Υ ‡žG HΕ·Msι-.›Ηo`˜ήΛkŠΕ‡φŠχνΛ1p~η*λKΓaaw9.o'* @FDGaA€N΄²ΨŽVΞ«ό\'aGޞ`ΜLviFRF `μ?€”h ŠύšΝ€#tšDGZ‘ΤΛτH2E §’υ…+’ε…υ¨61”"Μ^‹zπΌΡΔ!5ƒšg«ΐ›,‘³ν  !p~ΡΊz¬όδ’†¦I`χpl*ΎE}.Qη |ێΤ"<’―„œB’!¦'Ζ½η‡Ρ4‘ ύlΧ ’6PΎˆwιΰΩΒvPvχ·βΤτ™ ž?ŸώΔUbωςΓγQw*z(4bΉ.ΒǜίCšά]ΰ 4Ÿ…G,Ό’όœΌΙDΎ²QtώΞΈ»΄…€Ϊί­ͺΦ‡‡œ….QΚV£itͺ˜ DC}»ε‚Νz ΝmŽΉΞ*ΟΖΪ š?‡’ΐβbΨΟΙI†δΔ|ͺ ¨AP!zέεΛ¬Pjζq €h–Έ1ќΰBΔC9½ QfΛ†c‘ω›~Βύ 9 h€#Ν½(s(Π&'lX«Le–—_σ#/Ήύƒ ’/Ρ|ώμ˜ρ“Ωϊ~‰·€+$Œ­hΟμžβƒ§—j%ϊ[Μ€Aίπ;Γ”οP#°]τΕLFN3ƒ‰ΟRž<g©‚X+›Ώ&ƒ€`Χ‚)UsΦ iDŒR—ΛV.Δ²_pm”: WΆ …Mˆ΄§uVΫ΄;9iΨ”4ΰ·΅YySušnεs96ΜDη–Υ½Ύ Ι„β2‰"2~™‰š)£o3Κ€»­Α|f‚.oοΞ°u‰?ν­Ϋ{²τ.Y5ΔͺΛ†IΌΞP.Fgτ:Ϋ—X‘EνJΊ\†`S`ξKαŸ₯Ο1ιΫeςYWOD§Ξ4£cŸ:>3JU’;ΏzOtυ•Ϋ£χ}πα叄 9ΐχΖ“]%ϋϊE  }*ϋφμξ·ώ±₯εΞ­DGE*»ZΆΤ‘ο]§1~-ΌρtΏ]~ΰΩ–™#As‘ΖΰWŸυoBŠθω~ΟβF™²8…: `Dm›D!)'hΕ‘,u£“ΒΝΕ° v€)¬§# ΈŽ–w=‘8 dΜ¨θΧc|_Fςω²& :,bCDˆΎ θσ§£γŸ<έGdΈƒsZ#‰ητ)"¦φP‹γwzk•’Ω A–/‹ž HjlcEύΘwΌπ‡žΏ‘4ΘhlM*/αξύ€·f²¦ 6—6τ©gF›άώΖυXƒFͺžΎK%βε2±ρaΥλΰ ΎcP΄šFΉB`μ Ύ˜¦|Œ₯\>Χnwβ $Jk••ρ|λΊ”ίΈθ΄•„|@½χάG²ιή+r3GY¦H²¬`ΠIFkH΄ď&$ψΚΦφd-@>uΰ=φ?σ&RΕθ·G4z3C QΛυ³€X*ρ±ψ­œ\#bΕ@”τ0κ$¦I΅Θαt¬κ…ͺΡΐtpYDy\ώ Ÿλ/‘)ΜxGJ§GΤS Φΐ9‡ |x$χ(:ς±Σ$³₯’γθ³&86‰h#£Θω”KL,QY:άδ32Ηςxό‰ˆϊDz€m Τ "Λ5hǐΰ<ε=Vα$–X>]‡GmΥCκšA}’ΒPŒ §XΦ2‰BzCžΘ‘ΙŠMœ^‡§³ €JŒŽV€ xV/ϊY@ήOžύέ²Ν`φ“5ύS½>ώloP7‹ΥΫΦƒ  C‰o&ΎζɊ$8ζ‹p£uώ$=Zρ1ψ#Ξ>CΙω η¬γΛΣ|ΦΘXŒα₯΅’6 <=BOš OL$O=ΠUΎ²“ύϊ²?χ.Βrα)’ΨU2ΆΝ’ν­ξ-Ο(W„[ΗλΓŸ5tΖσ6α2 ¨χSŠGŸˆΪί  Ϋ΅Θσ‘ƒξ”₯ 5$S’XN΅4šΪ6•αο#7ΤoύχF’:xπ`€8OΥ`[ο]f-ppldͺωβŠΕ&Š&*IΧg±S8ΝXΖ)ύžΎ—C΅A,zΪ™ Ϊ±A·[P½π“τ[σ.2.•π?υK›ηp΄β©IFai'3$rω;;„ό‘­α„‚vWΣΊf–Τ]Ι‘›ζψ,θ„•8)#JE* ”7˜½vυ΅”ΉΨΥ·y‘‡n9δelm—a lVT¦ο•Χ”3εΈT«G·έΊ›Rζ­θώO>LŸ6•Kۍ:AσTΒjio•ώ˜ΆςΆέήΚ*>ŒW;½ƒ4#‘Ύ  α;ί7?Εͺq/ ψκB>ΪεΦμ=€žΫœuΛι{GDΪ0yTŠΖ8iF,Τ₯Gη3₯u.·ύtοχˆδΆhΰoόΩ―&φχ¦^·5œJUa °D P‘AΑt6:ŠΞFΛ!b›@»Θ*GΧ#qa‡²@Ξύ’.ς ν$€ηγ½³ΡΉΑ9†#άDΕTρΚh¦: ttαjf~.Oˆt}e5ϊδGε–˜P#•ΗŒzz²"ΰ,[†ΘΆͺΐg€7rk# €Α”ΩΠΕαθ°”Ϊ“§αrn(³ €ΦΙS,('wΥ£:ќΐ~ia#DΒ3|ΔΔ,j:R/¨T€(K«]’₯+ ‚qΞy"ά–ΒDχΦZδ_$IaŠ|;ϊΙΈΏ>Q̟Φϊη€gš‚“¦ψαΓ§θ^¦ΧΔ qΌ‰%ϊπΥ ΑΈ“Κ!‚YΏ|e₯ΰ΄™™ΦV”R“sLŽAT .ςdA‹?(έσGDπ;pΛB©Αυ&hΜνDx= |τΦkDΉ›&W£©ΙΙ([ŸζBSAww}ZNŒ±•yό!’Ο£xp %•¨dΘ«\‘:ο%ο„γeήuΉx9‘ΙU»g’|5Σ:·Η΅“ρŠΧύϋ.jlm[-πh ΰΧ΄‹B―ž!΄»ΎN(耜Ώ‹3aυ5±X₯ † γ$Ρ¨\ΟΑι'ipjώ†yc?Β>μg'5ΒΟ*hŽ€Τ#%:±pα8κΞc:ΰρ«lƒ1’Μg₯΄…H΄‘fVdz?p₯±+!a—Ο“j Χί™±d£…€n° $°ωάƒηr΅ΗΥ\ο Σ•σϊή=οZη]χbΫαI_ΎίFΙωφ ·Œy'hΟD;vΦ’nڝž_ŠϜ‘oΡ_‰ι€ >Ά8•€Γ„²λF¦c4,t]£΅JVvœ° Ι/TjΖ @;ΏŠ_ ”μeΌ]τ:B_η—λŽ¬χΦ( ΓFK%Κ@…I 2+—ρ3~Ϊ·~Κ#ϋ£ύΓ?½φg― ΑΛl₯_ %MΰϋζΠ^n‘’1M’Ρ™₯&KοΩθ\jΧ‰κd΄/Φ* ΅ŒΣPό„ΈMΗΉήF΄8\τŠ3ΩLΆLYI5dδXΪ‡>ΝΣ#Ӝ¨'°b>Z\žNo£E<ν¨οŒΦθ΅₯Q–°Τ΄¦ r€˜¨+LΔω›ri3:Ec ϊHbX‰Ου a4qVœŽ2DΈV“ειΚ5ΜγΠ OΓ…Δρ.ΉγPeΡ}V‘KŒphe–p»«ΝΘ/g«©΅ΕΥWmΏΉώfΪ3C3ΐ1†~σŽgΧN_ƒ¨2-D(–vSp8V€Pέ@M‹(Ώ‰I ]~ς†ŽœϋοΙ'fŸ<K#\©ƐϋΜσŒ,tΒ―P\€eŒ#`~ΎˆΦ‘χ˜”搗Σΰ2©Bχ» ύά‰œ΄gŽˆχςκ*₯ΐΙβ”›xhΊƒ¦bƒΆΓη1a5΅τΈ&Ÿ‘Ρλ<ΚAί}φ9'8€μj!—Μ5¬Od2«Νθ•ΧMζξyΖΪτiŠ­/–8΄YΦ|αθΚΤϊ*y7LyΆN”‘"±”εgΏQέ° ΔΘRζ±\A ¨ΜΔSΏAψ)nN©€ΑώͺcX0‰,L“MB F;hMΛωG ƒq‚¬œfϊΌͺR=TΡPώΞ"E- ¬0ρ mώ6ΘP‚RβΪrRLχŒβ1ηΗ‰aEN τ/A6ﻏ\feθSΎF¬œNΔΗ²$X«ΟΰαΪxεΈ#Ζ£άi©pL—±KκέΓZΝeΣη;+νl%χΗήχΑh‹Φd;\ξ[’f¦§ϊ$f₯0=|b™•ΔB45=­“$ΉφΊ+£YTaš­atόΨιhΩDY/ψ;|π5BUgόV?Ξ@…­bSžΙ^ω²nξKαξ1aΤ±cΞΟϋ•£“³Ϋœ™Ž“§H.λΠ–ΝΉ¬ŸπΣΈyΜ4#ηP={‡oίWnog{ƒͺ:LνŽ`Xδ΄ΰΗͺύΖ’tν?:P^ΗΉ)—2kĎο ψ Γ2ό‘μd–˜kχ;ξψ¦kκ™zΛη2:‘όC1:»ρΚ\6'€ΪΘ>Ρ*Πΰ±™μQ†nτ|œΒucθtΨ΄Κ@taeŽ₯kΪ|€Ά‰—‘8ΗJ©Α$ΰΠMP䧉&ar#šΰΩΌ$εBƒ p‡'$—£Έ «"|.“ž‰ΟΉ„Άs ήΊT©%V_«@Η’°X(U‰~Σ§8‘–«KΡΜ$zβœ{ΐz}ΫΆμόΙ…·μΎyϋkŸΙ6 7Έυν’mΕ³Ν™>T zr’«!ˆΐ:Ηt¬c‚VΧ]3½κϋΎ<€λ7ύw΄Vv!ψΰGΒ*1ƒƒ9"T»――‘;&‰>š^(Ž']V‚έ}ι4ΒυJ.νέ₯ζζ’Q}zζΘMΧΝ~νΠάϋΓΤ±‡‰vΖΩ /p₯Ώ¨­{œŒ«Έq'zΟΊςλͺΡΆ—¬v–₯A.cΑ YήL]‹†šœmE+§›ΡΚρ^Tl PIώŽ’2w@r!Λ>8 ο)€Α{`XΈ8)θŒDx 87qˆ‡ ŸΠ₯|b2ΔΆ£έε™hG‡ς±F²\iΥ¨B€‡ύrοΝ”.bρÞθ3 <$%v‰–«:‚―¬\•…ϊ\ϋˆ§ŽΚp¨SΘQ­ιΌ@Η=^οΚ#_g‰ξΞQmh‹|τΉ·§ijH™ρƒ Ι†«„‚ΦFιΦZs©³}ω7ΎϊŽχ>γ@on.΄£O?πƒπCκ-,3™‚ΝEK ”ιdζ(βMF"έ3,ρ‚ši'?ΐXΞ§Β.5'Π:ϊΘ  ,\"―ͺ(VυP¨΄‰p€fφ·γΈελΌ`dψŒQ3ή`’ σ}&.Ε¨R©‘ ͺν —$bΙuyž2XKDΫ{δ¨.@™‰†Ψχ2Πx&‘Ι›¦ ₯OLf“SkΎσΩΫ^E›rƒžhkΫjΟήP%¦ƒΊ_Ak‹qΡCo9E.hθΏt9ϊ&Q]ήwŠjwWΖ•₯)‰^σ:=Ÿh³Xžt†ΙŸΐΦΟχΒ7ΤAν€\Ε!yΣJΥΉΏ――9‘dzАE,Ϊ„’Ε™Xƒ‚¦}Κ`‹L"lΑ_«0πJS%Š­°ΔΨuΥ,|ήΟ1ήdf΅‘FQ.³NΥfτi+ǎG‚&|iΑ11¬VJyβwΎ t9Ι,`^ΑL{NŠY]– ϊ’ΠQt€ΗΧ0ΪφΐrΛ2ΑΙd½Ÿ9Ή–΄WΫg}ΐΈαχ­o‘ts{ηΟwξΎυ-―ίΡΛίFsqPξ“b‡q§PuŸρ:Τ‡S,{8,ω4ΟP]ν‡0 ‡™ MΤ#έx5‰JŒ(ƒžZόL΄ϊ€ή’|tΞj€ΈC$y>s%[g ­ƒΜΰΩΜ$ΰΉ’ΆQ¬€Ύ«Ht•ˆεqœΝ Ÿ%zj”x uƒAΝpdM@]KšNˆΊΆH„[#³8E2bDu₯,Ž«¦wd oPmiόPΰ8Άζi΄u\};H[e₯lŒΉwό82J7U€ϊ@δHσψΒ8² ™q3ΥZfe£yςμ‰₯—νΕoψhxf)8b€&k6wE£Ÿf½ ΑΒ`DοEΓτϊ3Π_Ѐѐh˜“ ο€œ΄π;xΘœζžtώΞh~ƒ†R£©³‡ήΑφα7m>Ÿ$ψΣ΄’›DQ‹Ί΄K›η-& P€α½C`η9IΧH wΘι”X Ά@­υ&‰‡ππ2D˜;mΨδ<4jŸ^;œDWΠ,Ν0c‹’χΔWΤΎσ ύΰΑŽg0ΤΌΎ΅m΅ΐSΆΥgθνr6`ΒθX6GbˆXGΏYtWš ₯4―Ητo·ΰΧΙ‘ŠΚΙ₯™\2’hu„ΈβQ}lήwe¬Θ61KP-έMž³cΘΟ¨τcΡ½³@Ζ¬9„ε₯z.Υ:D¬sEVχJΘβ© CUB+bΓΦVΪδ0ιε€&φΠ£ΘFΙ€ΧΦ6N^uuυo8lίΉ5Α€Ά6Z`8άΩ‹ϋ΄Ga…7œ?;/.nΰ'Vy3Ιώ<°ύΜk– G%j.β7(ίνί΄Yj²aηΪΪhŒ{|h‘ΤώCϋKvολΞόΡ±Ÿ8ςžϋ»«TΆ‡χ›Ζ3˜Δ5N cy‡`δY*TΔΒη$Ϊ§j/΄ˆΠ€–uF8ŠΩR”G ϊαζr΄(ƒΟυ˜Ήϊpψ4θTρŽr΄=·=š!Ϊ"Ψ[„©ϊ β~ˆ¨'RwRD˜φdΈŽ%½‡1κ Π L7:Ψ-˜Rc&­σ :¨(θάΊχ fΓ=с^Νs]8+₯θzRψlž(“άΕ>4“sT 1Zέ3J­Σγ::L―IgΧΑΩ¦p¨³ε\Ώ^Ψ™νw{ΘΝvΏεΖ―ΏυlrďύΟlρž¬‹ΈΟΟη*^:Z93 pJΖ@€—Υ”°2LΩΣΨ©γLΔNzψgΕD—•™JΪϊΌξ.L>y’5Γ΅Q5' >'ΑvΘ@”ΗΙs‡Λ€7Ϊ5cύBFΰe 2ΐ ^Γ²OX’N!^[›@ š}T%ιΠ/τ—Ξ«4賓ύ,ΤOξ;“L5ΘO2 «‹χ/œ|σ _{Γ2χξΒm΅ΐgmƒχ_ί11Mݞhα|'–vζJ‡ ~iψ›ζ.΄²Œi ’hμƒv2WZ²Ψ‚@Ϋ±Τƒ>&₯Γ ta’ 'οk#FFͺ!–AΆψɚršΨ Ug€Œ„HοΙ— Ə:η,•¨±a^%γAŽu–€Ϋ4Χψَaή`/Pqυ<φRυifΪ)ΗΎατl!n³|–K~—WΨφn‘qCl}§ζ cήzϋλΫ §nXqĐ;$ΰ?c{wξ¬DΗNME‹'ΐMmύ‰ δΉ9ΥS!‰Β—“G+P›Tι,$#μAΕZ?fάrέ. …³Σˆ £Υω^\.΄ULž"pϊΘ‘—°Έ,t 6ςr}Ώά7!Ϋ"<“Χ~)ZκΨ₯{Εr6“gΖʊ=@@e “₯)Ύ a¨ςΆ|#5Ε²<Ιz~ΟβTκ3$οέXΆ­N? š2η "*^ΥmCλf)^Ξž„‹ ΜRF²О€.‚8Y₯ .‘':DŒY hQBŒrSα/D·q=»;δψ@_(lΐX:Εά ZΥVΚ¬ yέh΅‘Y·Ρ§‰ζϊ‹5 κ"9’Lmι Ρ)3ΰs8Ν  aDˆϋλ)ΕYJ£zvq~ύ~χGφ}χΫΎ»©&1ΰYKσŒmGεοΟίΜA_?j3{ %1j6 ΟƒXOγΖsς‰ςM~³φΞΏƒ4 Ά@ς|μ’z@–¨—άs+«±6‰Σδ>΅AΡ΄¦“cδΒΕ#yΥ’d"z ŽέύŒΔ+΄/ɐ‘]‚ž‘JQ₯^‹&j%”WŠT9€-Ο"ΞΟ•TmΕ‚,iΙυλ Y ΏΉβ΄ƒZ₯–ABϋώs‹½―ͺ―»ι\hΧ-M[žΪΦφt[ ΡΠjΈυ§ϋΜ΄©^JΛAT aΨ±¬2Μβ)VΌ¨RZ0ΑDB€©ΒΥ΅,―)w™αgzWΜ{ΈΖύ›Χ(}lJ[¦=λ0yνŒΘ₯§XκrDŽxέ"^NV‹Ÿ°©ζY8ΔδO»2g~6hΐ­ΑφδΪΨ%¨%*˜dΨbu¦ŠšG‰kχ8˜ΞΟd˜‹K©•Nλ}―ώγoΉ·='ϊΌ }μ[-Π «4’QΆ²1¬_©&υ™]Ё2ΡωεAT—I0ƒI³Π…–– OψYV 'z)Ψηpβgp0jΠ}Άώ/IQBα³-}ρχ;ΆΛΟ>_ͺ~r˜u5qtζ¨―οΫGΔ5ˆLψΧε»%{™ΈΡ40έτγύ[ΡBχί=όΙ£V?cΡ* Κw›ˆθ‰Ό‰°‚#°ΒŒ0φ)Ήΐ&…Fς€ͺ„Α9(`δΙ©+’hηT%Z;ӊζ Λ`4υΧx?EΩY-ƒ³5X‚νEΥx2‚QšΠPAςθΛρΛ²Ldδs@έamUνε ’3& ŠE«}7 ,γΒ©Ωο‚2 y„PξƒkΫΞΈ~bIδ‰γς>όΈ™Δκˆͺ>–}£Uxέkk›„Bu€:Ϊ.a]˜TG­g>υΙSoϋιwώλWzIƒxΣ3 žίΝr,ΰyΠ;<f<ΚcΈˆΔ’€GπpΌ{Χ›½^’^Γ αμΉ7E±Μ&zν–l%-28m₯ΊBΫEαĝNšόd[ šƒ’Ηi iB£]&@=Ϊ’_<[σ=ϊΟ[ϊEŸhu“–Oπ‘³Θ šέEΪ·¦H”»»šεΉ‘jΒυ΄=δ‰ͺΐ'ψιΑδ53™₯•ϋΞ­-ΓΧ½μ«N ₯μχ1om[-π4[€NFΟ—Ξ°|~­6–­tυΜ—…L΄J&–ασ=Χ±α@ΐά1ώ₯O\Θ•*|ΖΥ₯䰌a₯§ITz ύϋ.“ΥuΦώΡ§³ŒΙΡaΎOB-ΎΖg•t.ΝCΩ:χ§,)Κ"°OCνcΓdZU7Βο€χ"ά‡k$Ν?q’ΑΝhƒ\o’&rφ‡*pςuǟ#κ ˆ.ώ Ο‚@IDATΓ4šD‘L9šΪQÐόpX‘ˆI;L(ς7ώ+!ιμ8‘™_Ϊxύοόύ+~’{ˆ)% 7χ™ό\ ‚œώΓ?;»2ό‹θάj%™Μΰ\Β{«Ždh#c¬Ε‘d γ’φK €Σή1Χ<ά`?’ΏVe 4 Ϊ/Eʑ偍:KΧp2α³ ν…3>πLhK‹½hϊAŸ^ΐ„F­ξΞΏGD ΜLFμ=D―OφΆνO"`‡œo΅PyϊH§PΜ"΄%ŒΆ•·ΞυΚ·l³<ή/T‹ΩυnσCέΈύΝ€ηyήΏ <σPΆΆΟ‘4WtυθφbΆHΕ΅š²o dύ+dJXφΒ"ΞN”™  ‘VAPλΥl–Œ²E΄A€ΪA‘RΛΤqπ!―i\‘Ϊ$ r•Έ\Ϋ¦„APΰψ‚ΰE’uω©j‡J‚ΰ!γΘ”;‹œ™kdLpΰR PΟy<Ώ1ΥqΘ€ΥU«TVΕ>•jΉΡΤl5}&³Ό0lwώΜζ90 ώ²΅m΅-°oί‚… *a¬υ plΏv2yρΧ]Υθ_ού‡cΡC/_‡‡ŒN?…A†'…΅Z^f₯$)\aˆπ;€K/ΦΥς7}”1EBVg²ΫmψΩ͊Πώ~9m΄Θ₯±eNeBέ8ϊΐ }ΈDάξΏ4ξξσΏ‹FDΤΩτ±ΉhπΧ½ω₯€–·δ;£+Νz λΌƒeΒ5 =_9& i1‘ž‚²Ϋ„šωxqϊ4œ½x ]fρ‚ΌηR!μD%ΞΒ4”ŽυQ4ΣΕQeΚΡ―·Œ·!š ׏L\S€Ώκ@—LDΰ8m΄‚ΧΫC’0Ќs’³}„Ψ3—#}·Eπ‡^3"-ν@½fͺΟvΝUgjΔ(Η9]Ju°#Ϊ†^4‘"ή“S˜#’ž!UΔ°Έt›ΣΉΟ²δZ#ΒΔ‰₯FT[J5WSιφωε<Ώρ}wΉN;’]m–glK8ΡμΓ?pΧUƒcλ»šΟΟζσύaΆ@£γόcω >8ίOΨ—gΓ%H΅ρyωPh;WήZΫϋΡ ηΞNΒΉ<§:Η―e‰l·Fκ±ΟΒιΥθΔ‰yŠR΄’W숦ΆΧƒˆ‘4›’^ψτΔDvu}ω½Ÿ:΅πςύα—Ά"Ο‘Ω·Ύ}-ΐ„ΦN›Smϋ“χLŒν ˆΡ— BiΕσΖ¬`΄ —P›`Fϊρ $l™Μ3G„Ά₯>L-tsι“/s&Kži,@ΓΥNΐ/‰ΚΎ(Ν©Ν9ML.¨mQ™Γ\ŠyfΘψiLgx] .¨o2qοA—Rρ§  w t½f&―–ή·οŒΎfwjjj鏯ό‘―\c,‡ΥͺΟ£ΉΆ>r‰Άΐ…`αΪΚςςδΆmΡ·]U£½ϋοFυ—χ*‘tΠ>CΦ›Po›Ζ~Ηπ€΅ε± ƒψi²\ιƒLστ7nτQFλ;<ΟXήα[`/Λe·]2ϊBΗIωcfH½ξΤ΅‰OϊDηζ‚Όœ°G³Lt’1xΗ5o¬ΧγΒΙ£Ξΐ+uΪΓ‰aœY_!ͺQB" ާ“Q…ςΫbρ“t ŒˆDΗ@$΅Βΰ’ςΑgorjΣΗ`iΛE΅L³4TΛΦpZX(m£œD…%4‰V¦‘PJ# Π.ε¨{$»­S©b€g–ώ‰*w™‡θ5?GΞ”Ή(©ψΤVΆ‹9Nπœ#A¨†H:†Ί―:§h+δaNΐ=πiόΡ%]ξOΐΨa<œ’2|C—Έt`,Υ‹…b:—ΞvΊλώ—ώϊ»ήή@¦nΓp/z7A9YΓΎτ­WΤ’ΜίΔνξξυsη‡Ωι\:Αy&D΅RHZeF¨Z S—€Ύ1Τ’lܐ― ŸCH$Ήc! ’ih$Πκ8›p†ΰ9*yΗσ3šνη9ˆ¨3άj’τPγΐf\σŒCԞέ\Ν#.M€LδYŠH*Ο΅1γΨ8Ϋ₯μk/š?z&Ίϋ‘$•c8ύέΡsžσ\’ώ7E1νκ¨Z*jp<ξ_LOΩΏ›φ··ΐσ3Ψ‘.ΛCΰQ}ΫLu£·^°ŸwQΠ@ΰ‡Ύ;ΦwΠΆ‘™΅Υ 'Ξτψt]QqΉi8δͺ‹kφF„-ωLC"ΕCαΔ± Ψε]:XεΑ&9Γ\;Χ ζ.'¨Χ*Θα1Bx«εψs#ώΥN5 aρo~€ΟP§<‰fφB cu›7yΡΑqωl— €ΎπΘΰάS…€ Ε]³Γ£oΰ‘6.μrΙώ,§>@Ζdˆτβw<ηΝ―ΘΆΊικΧtΧGyj]YΔJγ@ ½`Πϋ€) Ι±œ€˜"ΞAΊŒŸ™ ΐ,³Utλ ¦Tΰt Ε–y(IŠ3fq*&`τ’M²ΰMΠ€Ξ:œv,s^"Λ|΄Ι 4A±Ε‘±ιΦ¨E”‰)φκ0 °ϋP1€C2κΎ: Ηι3 Φ‘ι]σ€τ@Th¨†h"BΗ.‘š(V9ƒQHuh‘5A΅†'Κυζq¨•κ ™xP-V3½φΰL―ΫήχύΏϊβΏ<7ΎRQIHBά?<±ο+²³Ήw‘4τμZy3’HΦ«‡‘"’lQ…1 ‡μΪ‚ξ˜Ά‘©ƒ±KQΝ―Μ}€νϊD”;π•Υ―… ²μ.ˆιπU:IQ . φ:m`tΜivVjΛ9ŽE F'"B‡ΠGJ<ΧΡρ’ϊ}4ž;hΥήϋα{£ΎοΡΙcΗ£σλ$l!m7SŸŒvξήΥKSΜgβαξν»2KΛ'ίϊGοΫΏ—$¨Ρ‚Kn·ΨΪ.Ώ˜Ÿ_wΊΞθά„vcr/”γTΏ]P+h‰ƒŒ£6“S•2b&Œ2ΐœ˜;qT©ƒαΠ6q˜ 'Ÿδς?θ6<θ(ˆM4ΨΰŠCΙ+4 ^³SŒ’.Βi-¬\ΕnΦ&S›Κpυh]ή‡."ΖΑqŽΙB=Τ€,’RD₯H Yœ'¨°Φ††ΨNT'Rλ«σοωͺύ7ί³5f.ΏΎύτξψ`Ψ-―.ž<½=όΠ2}˜υΧα}‚#φqμό0©DΟέsuτ=ϋo‹ξΎχLτύεaV)bEMΰ@;q΄K> ¬C7εοσ&Ύ 4CΉiζΜ€="„·|#μ.α²ψvΙθG88£Α1‰ξW^{Σ±Ώ~ηΏQŽG~Ι-/aŽFγho”zQτ’Θb(h¨Ρ¨±§‘{ξhΗ·ΒPύQ,ώWXVΉ7h 'c"ͺ‚•K–c…0’*‰L8‰ΗF‰¨„/η”`—τcΤ50]Ta`α δ±BΫ­ΆQΕΐAd‰>[°cΐHl΄rDK-ύ¬>pg‘ 1Fυ ήOγΠΰJbΛXζ‹ltΐ³CΡDΑ.QfωΟAˆ ‡ην Θτ<€?Ν²SΚB@Ωδλ[dύα“86‘U"ŸΚT –šF{.…¨Π:³βnoΑ„ΐAλ$#€ΐΦ `.?I? Be!'ΰ“.F=ν?ŽΝNA4©5Νͺ±LΐΨΠ—G¬ϊΪηEΩιL‘γ²Ί›tjΩlΕDBτA‡…ϋ²Ω.}θΠΑπΰšIηΔ6&DWnΫv―Oqοήw§η—Γ§Δ^λ-³·$ϋν36\:οŐλΫόϋ‘Ÿp›1’Λ›χ@_ψΆ•ξΰ»zιξΝ¦©œΆBmΊ2d`ŠμΉΥπγπ#C0Νπ‘’ QK– ~2ZΖg“ŠSeœ€T䝘Ξςφ_")§‘\εΘ&Τ#ν Ct%Q9Εaρ‘섍 ˆΓ"œeΞ—£`K΄Be/ΕΩΡ{ξp4Χ†ΛF£ΎΑJB—ϋ·’a‚ԈΏd±*žηγCόNюΈŒΜ4^»Ρjo#Θθ L€γBs΄@–LψeIo«™5߁ΧΫ49ˆ{h7‰#anϋΨ{pK―ΊΜw}Ӟ§3Χ”"# )†„y(/ˆRu/W@π QΫMC3hkνς±;BσȌT™¬#¨ Š6tJD LͺHR!©ωΤ™Οžχώφ7το]»ΒεφΣχΪ‰UI ϋ«μœsφώ¦½Ύ5Όλ]ού?rRΙϋ‹|mπς§ο~ZηŸUζωίάZύ―¦έα5έ€яŒ:( ^μΘ)'”R‹ muuSzFΌάΈt—{λ ¦y[žΆzή©–α˜4‰]“‡ΓσUtΏaPΎι£c0tvεAΐZΐ€ £Φ_ηω0θ‹—ΕG0±Σ&«.έ†k¦ 93;1aSS&Γέd·Ψsρδ‰xΛΚ%ήΡ₯δαI_ΏεQ“’dcΧ.­–_p“ΫΣhόγΑ,½;v9Κ%Œt­έsΜz³MsAK¬ΎΉ„ΐƒK€ž0§]aSL›QοκQŸ%励ρJvqβvΥM{λ?Ά ι…‚Λ¬ς΄εΔ(–Ϋ‡β&du§Δ@b@Τ7αšQ%ΎBΛϊLΛ_JΛέΐΡζθ± ΄¨‰™˜&IηS²&ωR{œK@3›+fj8o«ΝzI·“z?Έ{αpΪ_ϋ"·μԟeWΜ"_λ<(ύ3¨­TήΒ©β,Ϋιk©η#ΫΧhΨb<U4·~χ.^νψ'—&»Ζ«~Ÿ1ΒNΰTLuξφ›‹`±h"Ζ'ύ0ά UDΖ톕-μ@ΌΩX±{_»`4ρΘT’OW; Ι&Η,/|τφ\’b“]Ψδœό8 ώρη3}nίzνγn ήΪ_­f [Ό¨»#ηδŸ”Mά§7zύΗ Ί#ήoh–£69/ITBΌ${K]ΫΐΊ,η+Š} €ϋ¬@Y–Ιc2α:4YΞ«ΜΉ|yΓ^GXmX™š€@E%.QvA>₯±—qΰ3ΡΰRa0‚ΨDδΪ€ύGΝG|kAq|Ώϋ=?8Ύ“΄Μ³lΟΞ Λ°¦₯iΜΊόXυ…5‘Vβ%PaΘΉΞτΔ&e₯υž'ΏβΚ7rb#m2šη3>ωΊOΆ‘~σΨΦαzχ«°UΧl(›H΅ Iί FLeφ₯dAΤμXνΪ2ε#pE―’°ΟΞ κ™ΒHͺ&¦l(— ˜±hŠœΦΤΔ‹pnώ΄Ϋ}`[­’ΆEΚη\ XσLG“)@rŽζ_Α'rΘ‘nx”βπ` —oΫjr°Gσ§V`΄;h²@H£ηll¬­ύόδΉΏL™”œΆΣ%ΗΫΈΞX  iZΆsΗ„˜ŸE$YΚ"J3·R£}V g˜ˆΎΐfέ\»8^ΔΤλ}™K}Ο_Š–`¬ΥŠo—αUγ%‘ )F‰6`G~bšA‡ΐ33όdl€Θ‰#¨‘n{¬»iΆϊ°ήiΜΝ;œύϋΉφE΄ ‹\ ›ΐ„1G3ώρ΅Π2Π3ϋ―=gιΤμrΜ£J± Ÿ|β'/ΛMŸβVƒΗ/k^ΎΠ^™ έa^σ>˜ΤB―Ρ_·‘D¬)’Τ²Tτ<Ή ½,έ0- C7υ‡pΊJbB0 Π(Oε'ν¦0"(8― +«d 2X% %ΒΕˆaa$¦.£-)Ϊ\4¦΄S*χuΌ°bΰQ’ ™uΨ_Y œ΅4*^Gl―—HH£δ½lΘ`„-‰¨°ΈMv4%@]‹IB—ΜΩ„Φγϊ.qŸό n|>ŒΘ€W–Ž™ΟΨ‰o§οΔ½œc:‰&ΗYΤΛώ88# Ρυ`]±fΣέ‘βΟZ¬©S2NŒο΄W(–£v«χ†σΖg~Έ^―kΪ`vΧΟΌF΅€ΗέQϊ­γΫ’ΥΞΕ_Σ΄£l5ﻀP‡ASΗ$Hc$‘€Ί§Lπ’ucͺΡbΰυlτ²ΫιŸ*ΚJYΡ΄ε°jψ^ΠQςΝ%§Ρ€ƒωρ  ‘~*ŸσΒ@œΙ3Έ `/ΗRt ˜—5—μΈ fuΉG].²£Ύ’GjSoσYV‚Ÿ }ά€zmΑ4 6D\έ€ί—„H s '%d~ΨΎOD€΅œΓzΘη¬ΈΨΎNΟtwΦΙ#oWΓ<Ψκ‘i±–α3±Οš<‹)?|xƒΆ›j΅`.Ή€ŒΣXβEύnϋΚKf€S°νΥ©ΖΫΈώ'%°‡T§―žZJ˜r‘w.YμQβ˜HRΟ’@‘k²uœbu6o&ͺ–BΚ,-™N›)‡;Ζj„eLΧ Α1" ½LΝ\uΥ6S+g/׍μΩ³GY'χtαΎΕ(|Αlηι9λ,:άψ‹νυCϊfσfΧ9ΩΩμ38/΄ΊϋGΉδ₯kρπ—Vš­Ÿ¨τΓΌ·¦ly$―€JTξζ!•]x>ɚIXΥr™Nΰ›F§hξΖ8Q u%δKΤ%©φ$₯’r%-ΐXΜ0azη’ν Γ γœεΌαc‰Ζ|Μ`C#ιI‡!†toH¬bΰA}ž2Σ!αΓoRZg–&ΉΞ#vEšψΛξΜ“π“ξΦε:Y<¦­”λ(ω§*ΗΤM¦j”§,™ §`ZuΟΑE‚Ζ+°,θ+K"–PnAwjε&9>—―ƒŽ•ΞYεžCξ%‡UΉ{Γ1Ϊ26” i 3f}χ>ΐ½ΐ>ž_`Αt*d² ε)θ]ϋ~̈‡/uψ“~7~#=Ω{ω~νWΤw¦~ύ,H6Tϋ€GΞ}ΫΏύ«GNώrΕnm¬­Ζ•jΞ‹ΙXζ%Χΰ»Xΰ Ζ1Z.VmQω Ψς0ψƒη*φžύ 8’Whgv•.…M U€sJVH™‡ γ¬@(μΖM–šΐ°²g›ŒV τ²&ΧS¦²ΒK3a_웑ݐ©έzΎZ΄KΨΒμ‰α& qœ£*>jf»w{ηξw=ο³oώΊ§}»v!‡©λɏ·q œρ€όbqǘ“½)ξΝMTL πŒ #“mΧ4Π&χi7bΰ"^ΐΪ £κ>`6ΟJΛΤ$iθ Yu«¦ηΓBk²)@Ύ]Ϊ΄=&ρ0ΨJ¬’U?WΕΆn¦h₯}sΫf5ΕΝ€k)\I°ϊ6Ε!ˆι. ©"/Q+œ’Έp#φ3Ε'΄p΄9v’Τκ$ξ$ƒ¦σ^n‡$ΧΉΣx»_%@₯»ίύn}xν£κG\?ωͺT}M₯Œ€ψ°Ά^1A­l6m©Ϊ΄ήe­bzΧ=+&€Ώχ¨³Z&C­1#κ-2ŽβižŸ…­Ξ1ώJNΨ‡TKœVz+j\;Δ šJ|qm€εFϋ©ϋή‘ΈΈsj£ΫuδœQ‡%Ζυϋ-²χύ†rΛGa/Ά:=<’ˆ8n!aδM@_ 0Pϋ₯UUG/£ύdΰ$Pd!€~Β2Γώ’P⠜ΏGφs- 8ž9ήΡ‚ΎŠt0Π!%γ²N)β™λΈ@Ν"{(0`x°&.L¨]†$9€iΜί„’·ΨOf¬l² Ξ9NœcΰrpΔξ‘{Π€Ο…bΠ ¨›,ΙΟ–9δΎ$ΘΒΌWhΈ³f2ΦX δ&Ω)H-uDg`πκ’Λ€lΔ¦ΓwXŽ›0ί” “…„ΓΰbH*ΎXPφ:Qƒίπn}£ωΑG†»Π;Χη…²Οό–̝ύNτΧ―ψμ“:qό—Ω~8Ω"'6ήΚސη9XοΰJ’Α—;$ 3Φ` ύ―ηiYb=WkMd]§gdύŸΠ²¨S½fšZBaθKςΛ²KΗΗΘ@Δ +±ptΐ’3}˜œ‰‘Κ '3&ηεϊζ uDv_Ž9:MO>ΡœJΠsΧΪ‰RΛ~‹κ›S§τ{h¦p…ι+•:š‡€ιΡΟ3ν£J’ΡW‘7a¦gηΜμLΥ4˜Ψ­mπ>c$žΖ$F€m—^ϊͺάαΓΧ|U#†Ϊ‹b»ΐτθ™8pn‚ηy3οžγ~Μο‘iz/_KΧΌ“S¬“H˜AΏΘ+„£{₯#q₯ hŠQζ=ζ―ƒΙ±71CMMG-ΕΎbž₯y½Ο F§SΤZύJ1ΈmΨίΞ7`C΄h€€Ξχ©ΖLΕ™θπΉ8¬NΒLΑZα!FΝ ΤC:ϋ€«Ο€¦όN*[§Νυ"S卒τΌάW–}ΔΊ€°Ω½Ύ\7`-Ω_χ–8λvlΐΐΒ•%[™`° rm$ mΐ°΄Šθόhšή”΄2œΓί² ‹ ¦°χ™€ YaΉiΐO¬E`ΰΑαžΗΧv:QάώΥΈυ-η–5‘qλ$2αχ3ΎέBΐ'ΰyΈοϋΨO’ωBΏ–€…ΘB“IΣΝεΕΪθ ΝχΠ‘ a€Q§ΘσgΠ΅τ& €hύ¨Ϊΐί©ΟΘ¦]εΫ%=HΚJ™ss¬ϋ³—~Ψίυ”₯…–ε–£‡Š‘°θš_τyD] ” …Ι‹Ÿ`SΦ’ŸZ„Ά“ Q¬`ύΙ11χ―wR³ή‰σ1kƒώΠϊΛύwΌπΦλλ\―λΒγm\g­¨bͺΑ¦ΩjL:Ή2u΅θ+ψΪ6˜“"Ω@&Σ1ˆaΰsλSU %,εpR@Ÿ²ύθ -—΅%Z ν₯―Ι€&΅:žφ™Q?HζΤ„Ξ€ΟδΧ‡–_σ€IδŒ1sbΛ8+Km* qιsbVH@”β BΟMŸΦβz}$!b›cΪ°ΓΞ}eΡ―†₯v™τνϊ‘™ͺΦώ‹ΎΫž=σΞΈ)©$ΖΫJ ΈAώv**cu8n›ΦqD"F;.!έ,WΝΒb™€?$v&Ν?+.Œ―:&υJf’Œ†ΫΆV4‘3­ΥΓHόζ§5ξ2ς2¬ ‡3SSs³‡›£†Υu^Ά-ώ―άγωΎFΩ q;ηfAϋwξυvο―G'ώΟO ³’{ωwOύp˜+~ŽΆ©ΞΠ’lJΆ!½°°°WkˆΝ#M³’Δd샛΅μ/Γ{‰kίΪσ΅ωOϋ)ι3|0@[,3 ‘όω' ©‘AδΜβ}k 7ΧΞrΰŠΟ%«²o©€δͺJe++»ˆf# «eI](k 9―(~ΚΔ²Vd# aη‡L>ΨΫέ*nOΑ}zΩΰJŽγ;J―Nσ?ωηh"$Σ{v·Μ΅˜j1Τ|.pΐγηΩZžš²ˆfΙfMƒ·υ†ύΑͺOΉ,:8ΥE-_k’Βϋ’—`Ž‚‡‹6(U˜mζ*‰³Ψrσ –:έΟ¬ Φ~eͺώ‚ζΝujL/1ήΖ%pφK€Κν€ZEŠόn΅η{λX“`ΎJηΝg’†zΌ§Ό ‡ο9E=& ŸΨ,β.aά6Ω φ‚ jY‚Υ·σϋΡ‹ΝΚξBΠΒWηΜ&;΄gΝοŽ~ϊ3ΏPδ^ƒ₯γΓΐσW=0υΆšΝ2γ+’E/‡OrΤ€i^₯‚€evΙ€ztΨ}<yVCβ 1ΙTd>GσA‡P1ΉLHΑ<'ΦΓ‚!Υϋ MH4ύ.θ© ?š¬2Kˆ 0νK.€†κˆ‰ ŸS ώυα›œίΨω~.bRκϋ<«$ΖΫƒSΤOjρŸXΝ΅Γa©ˆ«@KΠ€Ω΄iš>"2K«Λfvv3žεy@2. Ω< Ζ8a’89S±Ξ'a‘dοT %uš}̐ΎOύνHβ1ψU{’νœ,ν\έλΒςΡοΠqβ3O[Πήΐί›˜uΊ<ι«΅’ΑwΗ:uΨO±&ΤΣaγμ±xͺe†=Ϊ™ύ<Ξ—κ°λΊ£ρ6.‘FΖ QσA— ?(ΧKEgΑΉX* €Gy­jͺXΛ.Ÿ< E=%Iύ}‚τ‘jΝ‹ΊΝο½Φ+ߐ'Έnω )ΑΧxŸΊh[ύΔΓ8#ƒ+9β›•FΥρvK s „(K;>ΈiύήΦ{N΄WXρˆΌΒ,ΛzΎh#2¦{0Ρ6 u~KΖ„U:bτsΤr†@£@/•YZaYΊ%V~!MοHΧ,οcαU =‚Ε*λm±.Žα;Šέρ:1>r΅/ΕΗ™Ρ‚Οbμi5°€[₯Ήνs|Ÿ%Λ.@ͺΙmE Ξ$Λϊ\3X…d¨[Η‡£―eπΕrhH€Οΰ Cj° £:„!Νqmd΄&?”Ν4€_Φt3[9 %, jdΟSΰcK ‘eXhξ `§ οΫ£ax\˜g@7t[ Í:©―λ˜₯4κί_ώώώ˜b«£«ŸπLI:σ»ζέέL˜Ύ°kίΫ^zγFs=Ιqδ,dά> ”0d)CΔ$Άό;I?sΕ(«₯_=« ig 0+₯Γ’³,=₯·Πnη?ϊ*:X)Τ(c{ ΔxΔJN!kIΨ΅‰j(pK+PŒ°dΜΎžŸtΡΊ SL΄\ t-+‘„¬ΦΊ KΑ„ΙA"Γ6ƒ“λiχΔj²Ω/ϋTΟ;Μzχ—œάίΛίΪμ"ωΟXο¬'3ή€P΅UΥξtJE"ΚJ—=79νLN”lT‘žήm€T\2{τv³ΌΈa–Ιξ'eΙ’jΘΚfΡσ« hR+½³’τd­Ϊ6/ښl΅Ng{I€q@Ώ]βψ‰ι’ζΆ΄~ϊ!g_R φm­k]fͺξUm•ΟΥWw;}„ˆΜ™¦›&ν« #ž‘Oΐ4†Χι΄ΏsγοΎψ―κυΤ;oPξH/»δp%r+ Ι`(ΩŒ#'~ψQtχσKŒτύ,°ϋ»ϋ΅ζZΊL'ωnοέ±βζjέ¨zφύX)―ɜW’Γτlc†=•ΨΓ©‘βUΑ&1€)ΎΎόi]!ΡAKΌ°Τ’5ΙΜc/mΣ­s<—ΘΜ‡«#F}v$€Ν?±(‰²ΡΌ¬°e΅Σ|&6Z)·ΥΉΣR,σ-hγξ!φYώΡg‡eΝΒΆ’ΙΞL™Θέ)°8…֐Ο`?ΥΈς0ΟΨe…κτtŸό&QŠπ΄"ΰSfΊ6½·’ΩS}QΩ 3ό”ΊšΝšee3ά„6λ»ώaA7YVεN,gΡ4Λω!– -VΠ"]ΩΚiΰ0π˜ϊ^)SρqοKΉaψ«Ÿ<π¦£Z❟ίΝ…κΣΞψV―Χ]‚D‘όΦγΟΎψ³Ε‹3o^ξ/ΖΈζ±*ζ;ZN–Ou―Πμ€/Α€ιyτΦΠΆžε†αŠ•–΄£R ‰$―Όl }Ά“Νu‚7J“ΎŽF{ž—΅-§₯ψfDfgφΡgϊΙΎ.¦,@²ψg9rDhCρΓζ:‚¨π9vΠο 0aΉ›ϊ™ΒΎ DΛνΈρƒ£^ζXΗ[?3ψ‡Ύώ²χl€’lμK6Ξx₯Ÿπ_,½{χͺΧJ''³eǟΚΟm" 6“ΐΉ9–«©σU&£S€“TϊΫΧΚΎmΙ6` h’σμίhΠΗ°Ν‚n‚χΔ‹V•΄ƒζ@3 Ν°œ%Ω™<”1Τj™έΠjvό°~Π.`^­ΒS¬π‘Ν†*ƒQυν’ΈΙ‘C‰VV–ZΦ}#€π݊šΫ―s¦tρ}nύ_,…ργψρΨΕ(1zcx”ΤφΧAΦ1κB•iά f)K­πΒκZ->υ ›†š}eχ%₯·>—άΓ *Φ4@…Š·rƒΓη‘œPγ9:λj]}ffUΌώγ7rA.Œ5ήΞR P­¨–N|Ο#?:‡¦ν•«a 3 S|˜F˜[ΩΣe&Ί0‹ρ z#UD–πΣψEΩ«Π;KΗΜB£ιΐ Kσ›ˆIε¬!Ÿγ>Ÿ \‹ΘC];Yaƒ%λPΙf—Τv:w–$ωLŠh «θέ ¦…X¨ΥόTŸΛŽNR ΉvτκψΗG&[Θ‰Λkζ’'<ΜlΎzΖ΄ˆtΟ°dyθλ t‚.ξ-Hsœ‡Ο7εHδΊ L“/΅hγΝΔο£Ζ¬J( ƒ¦ ϊ/QΝn%¨a[‰ ίL2ΠoXGNRŽU‰ΐ[ΛI-ƈSΣ5pΎ‹“Z”‚*qρC iόφ?ψώΏˆ―$€η³Β:λό€f—WR7uχΛ―‹₯-χUΗOhΎ@?ŸT‡”*£#ύ6Œ½Mξ€ €2š5–»¦»A'ΖwΙWS„qφ°*­± πVζAyΚaE“KAk”†½²Φw’nΨ‚ Ζq­€ LιηE€@Η§4ƒ>’!GKΣ”fD4h2 “-¦y‡ιο·`dΡ‘ΪN€―·£R3ρ±ν¬-¬Ώιαίω›τέΗ’ •Βx{θJ`—›©©|ΩEGQ©ζΣbΡwdΝΥ`²Ϊπ₯©τÞ9tχ’q―Ď ½ά +‘dI[Ή tXR’>H…m.C»Έ•»΄Ν:O( ‘ž]–t΄ΩγmpΌΞ£€2² §‚5«wθάtZι¨ε΅ӟBΜω‘ppŒ€½•UA†ƒ^œυKή \ύς{?ώβ―jοœ₯η‡ξy―|ΆK`ηΞ}dtΜW]Ύ0½yΪΈσΣYZ0!₯μ6›ζ‡χ0&Pε#)ŸVu¨7 Ώ@ixqqΖβm6αFŸαϋΚβŽQێœ1ΘqέΛΩ ›E1aΟ6ΠgυYοFυτ%,Ξ•WcβΑ… θtmPA_Q€I•₯\Π )Ϋά Ό|ΫUV‹νx=«ι…Ά3E  @CΕ•(C³ΐΌ_&Ψ/ “zƒυΥ€‡Œ¦»η(Ν=GL΄΄ΠYWcΛͺ<Ÿ `œiKsΚ‘Ύ:ƒΪcΖΙΙρRνβ ΩΗ"ͺhΆ>bΦT·UL…;–ΝρΏΗ Gš³’rp.ιšKΌ“ƒ%₯yr αW݁Z$2ϋήθΎ@nφ»τωΎk0μ•b1ŸbΈv‚ή0#hΨ’ο“kΡ6l±:’ƒ Φ`’ν+Yd²ΡSΐΰ›?πΏz-3υ³$ΩΠΉG)ΏwΗ·Όφ¦BΈύαŸtΝ‹ξm—^F8aŽa ”Ά\Ϊββ\Ι”‘ΐˆ!n­χM]xφŠ"!]0ϊHοž²VΖˆv”±†ε`mΩΥΙιIͺSηm`­δ,€ζOiΦAέv€§’Ρ rbkΚ ŸΌ΄1!Γ֏ι8υ6ϋ9,YγFg#²&Fκ£BšN?-y’l¬}wͺZύΏ¦Ώσκο§)’ ΙΖ<mΌKΰ!*ϋά)ݍI?'g”ΞΝ՜ꉓ|ϊ«5y#‡ΪΨh™……EΣltΑ¬ςΠ4δ+P»°6e–³''‘Mq-e[ΫNϋ;Œ0m2$na IFΖ.G»’-Έnσ~p-λ99hŠΏoΞι‘pˆ€w…θΣoυi›jŠκΌ 0ά Χnή[q©ΌξDΔ$sof/gǎ]ιΨϊ™’o¨f·ΜΕ9Ν’ψ*Frαf'm_„λŒΙZuΆJ ›DΒhd!πΠΚ?YMfϊ¨!›sΘ•ύΔD‹T±ΥK+θȐ.ΉόΉΏSΉη«o#“Π}ƒΝΊεσκ 1€>»ΛV½V½8Δ΄¬‘P 6Β#I·‡,η+ϋ[΄$Ζ—…>Ξ Yؐ€ΐΌΆ…Ώ9κ€€s¨!τ ,4‚ΔY+™ ΰ… ~Υ€Œ“F‡¬ZΤ°šά ZLp–€“–kGpœEW!Π<„νΦtV₯H΄ξΘ1ΞYž !1.5; "p±μ™΄όλ±\“>vΘωHΛ γ0. Ys]½$=AΫΜoΊfŽλ±C# ΝL<Ή\"ψιΐΕλ6{msβ§LŽœ.μk©K‚šό±έ"Γƒ‘X›ˆA R:Ζ‘’ίJ:G{~χνοΊυ ŸΡcλ|6³aΑ3 ΡΝ―ύtokωΟyO=Ρ^ωL0(P”—ΐΏž;c-ž)ƒ:Cω©ΜUΜ”<,€P¨Ψk—Eί R=>1Σ²’%‘ΨcKghŽS~ς€M9Vς }@M«[.°Ηΰn)~ΥF>³'ΥOž»²¨‰Q³34IbxκT³bΗaΡ†ΨΣ冄ζͺZηχšΑα·9οufΚW͈ΖΫΈΨ»w—šRιj8ΐz+¦€l‘ϊœΝ‘Ÿ…S%’›T„uωΩ5e²TiD›„C₯R`¦ΘV(φU| •eΠΖ)Π6‹uζ“‹M|s#ΞΛΌPlcX`›Ε\—Jτ‹šΘΣ`Υ΄lŠ{υρrΞQ/H{”τ* ?Λp|‰Tί“ *S‘t° œΈœ›π;υwήτΩί1š˜'§iε:o/ΎΧήωξ\¦94M{u‘Ι$FŠ%bnΖΈΣbH₯΄­‡Ώ©·™ŽSrx°ΠN,―sY;kJ¨‘Fθ`[5’½x—epQ_ ϋ“εFi» χŽvη }θ³τ„Ε3Pέ’C“Ÿͺ–ίσS§EΚ<Ι2IDrΈ S½τΞςΆ)]ι˜‹!ω¨–ΓLŸ€@>‡aφδoLG¬”Τβnε…μž}–SΔB+ψNˆ<ΐΉ?RΧΜlͺ€qΝ8Ω3 f κΚs€O`ε\Q$k`»%_ `ΐ#„:·:ό@Ή€έ Œe@Ρκ³tψάηΰΘ†Y?°`z‹-Σ8²n–o]ΐŽPœψΗα=ϊ|Ag`φ’aFΘUδ6_ °Γ£UP~Πν1XuŽ€°εΫω–΄uΘ(FΖΗcζ^(‘\E)H„ΈC1Ή’*r$τ}Ξλc―ϋΑQλ·>yϋ―­>¬3…dκΨΤν&ωΚ§ίψΥΛ»9ηKΥlpνbkM*›@Oί…΅μ\ΛΒjhΒΆΊkpVpž:,ωrͺk²ΑHPd¨ε4Ωm©Œμ¦Τ1WΚ¨ΝͺŠ2{¬ŒΫξtjΊžρ" šΫJ98^ΐ9%P§&ψƒ0ΞZŽ–sG„X‡²†5‡hΔ… iΖΝDŸ―s~ρq¦«‘wvϊXגּo} μΩC[¬ ³₯Ι!‚¬ω€]2vΠio­ Hϊ°Y“ΟŠΪ‚ ΄WAκ‘aB+7Œ ΐuOmV–s’[[h˜%₯Π€mφΆβμ!έ³bH"ωΣC"4χπv01V, ;Ή(IΚa›mQm²Ν™­se3ΑκQϊR΅ί|1“T±aκυϊw§ε«~[έŸ?τ₯;Ύƒσ±ff₯ζX»z’ͺ8#*4Ζ ύiΌ‘Υ*$‹uC˜Xbδš0τ«0!b#Υαjž§euψθ,› X†•ξγf!ύlŸ‚>!ΰ4dViρΠΘ’άC6ƒPΥΓHCAͺlfŸx4ηΊ²€“Η£―ΊΘυψ] b#mRξ#Rβ Πψ,υ (1ωžά8ΠAλš₯―±Ω΅† Tύ¬Φψ,kπ˜“qP \³ZλΉ,`½Y&-G a}΅ψӁjψ,―Š΅a‚ ;6ΉƒπY@/7 ΏG9(Ϋ`„~3Ώ˜D#|Α<~½›ϋNτΆχ­ίαλb±Œ‚gί/UΰΉΎί‰~ο•r}2ΏΨόmύΖͺ¦βΎζF!e©TΏ‘hgZ~(’_Α Ψπυe©ΰh³}Vΰj;Πφaυ₯‘ΧsφαzS,ς(ϋΰ(©Ž|ώδίMo&Z۞G‰QRD…_7a5°ΡΑ†Y;ΈfšΘ²ψ†*’; ψv`Εga‚Εrdπ\Μη ƒ­.ΐδήoΙOqœhιΒQŒΏ)ΐ¨€ ΗΕΖ1³°D“Ψ'ζΧ‹ ύO`YΊg+›€"‘ šd>kŒΜMνΟ±+£ίiS:ΞΦωxxύυ"ϊί@Ÿ½‡-„C½>CΰΆΥΐ—±› ψŽ€ΜύΡγ9}τFXΨ…Hκ'σD pUΕLz“Š+w„ €Ž6ΓΟΛƒŽΊ€'_ͺΉΨhUbνη(υ7ΐ³p£Eπ†rx.gΠJ₯"€Ξάΐ1 €Ε\F€x ’9U Ν~)Λ>‚θP*$ˆ„χΕRb‘Βp† Fe4½ςž&A6oάKθŠ Όε$¬ψ—Ε_X΄OŠMšΐ₯2ΚέC2H# 5\d΅`€Ήg%αrά+Α6ifuƒ;Ιp pύξ­ζŠχΌώΦέm²ƒuœσ`Eͺο<Ν<ΏϊI}i3 >Υ\ZlŽKΕnxπ\c4ΫJ²ΰ2$8°DĊ°gu‘hθg-·G³€η^ΟJΔΠΕ1 ―l+X`Κϊ)ΦdEyΆG=•ž©¦9*L= JHΤ5ΐ=†­3rΠs΅›ί%%Qp’iͺšθy’λ”5ι₯e;±δnθ‘Α$›O7]cYοeΞs.λν|π` x>λέΩx—ΐ-g˜LyTΣ!Ψ.NGκώb­Ζt@²δR ΦSJβhˆ”‰f“Υž&ζ dϊ.@Ί SέA Ϋ6xΞ²z€`Α“§Ϊ¦ŠQ ©HBΓ£ K’₯tίβζθΪL'%΅ΥΌŸά›΄i ϊ. =Ϋ4[2[ΆU FdUΜ€₯b™EΎΑδQoσ {H[«?Πbw‘—ΐΝ7οYΟ2Ρρ’—όδ#œͺlšqβΏψZΦ»υΗM0X—r”ϊΙ"v™qžΪ;*1|ώεI>θ‘L¨/[\.wxΡn ~FΗAΈh&’΅ί›I@IDAT†Αš–ΕΏ4ΈBονίί υΧ…½ΩώαΒώŠώ·žP=λΙ±mϋς+ώυ’{xΙ©ο°Lxς['Lψΐ¬΅ΧYΧš Α‚B—τΧ‘ZAΒΑ?  ρυιΨ$h2ςTό!ƒC;«½$ΨΛ¨ίΕXηCΌ”‘|Δ|B2€ΆšΏ\Fߊt€έ†‰Ά² <9¦…Qz(ΔΚu³ΚD’†Γ΅ΔdΊθΆ)ΐρ2( ΡΣΈΆΟ PaΩGηΖ@N$•$!)Ίρ8LÚ£σΣfo ½!·†mηΤYΝ.˟~ͺn½[}\IΎ›…3ΉΨOσ^1(yέlBZΤq‚wήpΫ GuN 6§ 8ΑYί˜!o?²W<α¦Χ2γΈ©u „#b]ŠœšΙNΒ`*Ϊ…i `ΈΤΐ$Ηθ[“z–m@ΥχΈ°OY&Dy‚υ²”•&Eώή “ ŠŽ™(η)" KL3Ϊnϊύ> Ν7VΖE:/žž/›9pͺ₯wΆ:‡™lΙιˆ§ˆι,OŸ_«έ vΠ|/>ΑςΒσŸ}Μνι-iΰ<^Zœρ6.sΈζιΐΨ y’ s,)š˜_UyB6€vb‚H ΅€Tt@.RJ‘­ …+ ’±Ÿ—RΦ+Λj‡φκ3ρΜ3—t`°Gιξι»Έ v€τ‰WΣ&u~%B‘ΊΘ@άŒ (ϋΊ>ϋk²ά&:ζz"άƒξ»ο^5χ]OWύ4S*DΎΚ}7₯ιxϋW–ΐ‡>4oΫCΨi½aϋΦνζΙOΩdζΆΥΜoΉΧ4€ξβυœ›_ FΒ–e¦‘@^[Oh¬ϋ’O4ŽπžφMpα°™m΅€^`…άMP’cΆkυdΘρjFώ•ίε\?\γϋx;Γ%@NmƒŽ[;pOΨΪu c]Ύ€Ώ(4Η~HD,}~Bή¬,  ¨gεˆNWGκwί’gφ’>p-m2‹Š°ΞbVˆΨ¦“πIŸΩ ΛA> K±θhƒυf Θ—$H ”Ν’ ˆ Α’Ω8Θ,\γς€¬’–΅. i›&‘Β’fγ<$'Μ5gx`ŸΑά(nOr=ŸχΥΠ<hG,ŒΐL6™T`Nπ[KΖAΪ‘‘GrI ,T­c7eδΖh nrΨΰ~3=2—V ύ=“){-ςYΓΰΣAΖηίqΓmzTu+‘¨Η,sr–esλ–UεyŸ}+±vΏΣμ¬%ΔΪ9YQS| ₯Žͺ(?Η͈lt•ϊŽŒͺnΚ‰I„žƒž’ό ¬EŽΒώ3~¦Ι΅yΚLβl9¨C£7υC’vM8lΦ@:-F}.2Π―‚e?½N#@ `k$ο‹uΦκ‡>WšΆ v;Ιή ς_ϋέηf_ύΤ;¨―Δ©ŽΑ³JvΌγ%pΠVz:Ώ°&° αδ˜”ΪζB'KŠiKΒΦλXg Π"ΨO@w(Ιϋˆ}–Ϋ†΄Ξ>Α»j‹xΫZ›~ϋ0ΤYυΟP̊kμCδ›΄JsοΟ0@frZ`r\ΔO Zν΄€φH@₯“φϊsοaxެ‘Δ’ƒχΧ•ώpΠ}γM7½π–z=υλu RΗΫΈX ΐjœΊμΚ·Ότθαυ'γ?έηkžwΙΆ σœη=Ε|iž••lλ&Ԙ’ΥG‘cόΜ/9ŸλU `ι„ΑNτœΐEj“°G¬έχ§}ΥDAΆ₯ρ`ΛςςΔ4oœb”f°ͺk0Ί 7Έγν —ΐ‘ Υ<©y‡M2ρά€βwΆ0›ˆ ζΩ•χΐ ͺωI‹°Θͺ‡,λλXm ›€E•ZIγςTlUαŒΥsβiΜNNšς£ͺtwξΔSzΰΝq}$€-δSέ^DζŠ^‹§>ΫφΪ\Wξͺυΐgΐ3ιVΊuΨMe4ta§‹X@/gν׈&δΊhΉŠΟώ%> fX’l@/™ΐ:+ΫSn3 Œλz b* ,Db―μ8[\’эEΏάxΩώ—‹?¬eœ’;°ΐϊϋΑΩRΐσnηψ₯OψΓίAžςΦvoXΉxR“έZ–ο Α•[Φ’ŠKAΞh4΄Yΰσ¬}Ύ„>χδ «εέ2μs&ΙezL’†¬­ŠE3xΞα ΰ2! ^Y“–‘TƒσrMώ€0hMνΕ,«5λ&€ͺ–Ž₯ε‘;‡ϊ@Ψ&<*οώjΗl,¬'ŒΣJ6›ζ«“Κδς’μ ?Οbs»γm\΄κΆΛ2Ǐ.WΕ&‡αΐ)0ι—=d–•­0Βϊ*Zl4‰VXΔԟ‰P₯…›Υυ†ι2ΉΜγΞa%i|–£Z&›Ύ-% ‘u&Ϊ4yU™hWr#ƒσB–¨Ζχέ‚fe“Ή`™iυικhwYŽ­@έ„©‡GW]u™ŸϊαηίσŸ|ΟξG%ΐŠμ~ΐσŽ|y“»~μ}­•δΠvŽ‘-ψ9ΟΌΒ<ύ©—šCδlΈσ»·Αs‘EΑώb•a”ΙάΛX’ΥoV°Α"TmUl>Gͺ±›Β| Uh˜.{IΕγ(f‰ͺ.pΒŽWΜι6~@_Ϋ@Ÿ•η<²ι¦ύg ‹M.p{Ι8,ίΠ ρ»²πΙ M”‰>•‡[†fxΙ²—“+…ϊo±ΝόŸΚ pζoι™υήH»LMFλœ-"‡˜U…‡”Ή»k™–$ƒZ:=Ξ—#p/bpθ­†ΟtΡέ2σDΎοΒy8'Hή‚.έ ϊA±.4$€bZ‹Λ}ŠA–…€n[ˆΛβqCI>Όf΅VRΒΰaoTΗΪ9-ΗςύΥ@Œ"™#‚˜«U½”/7’ΏBž}γδ?Ώβοτxφ™}ήAs0έύΰ1ΞΊ¬6ΐσ<ΰy>~Ιυω0₯zΓΚκ"#'wIΰ±Ο½:dοSχΡ%ΰ(]PΠ€ζNΌ$Σ œKό,ÈεΚHhΝyŽΓ"Ϊ”±Θ―V©{Iυ `F›‰ίŸlTl'¦»HΫΗNΰR”+/:5  ™ΌX-Ή>Ρ‡ΤYΦΩI ¬˜VβuΡίk2€Ξ°ΏΪ3Λ‡—ΝβΡ“θž‡ΙΓηΆ{'OmόϊΦχΎμΫVΆ1fžUγνό(ί©δ\+‹UΉj(+kˆL‚Ζ…wύΠ,K°.Ζ™φi'£τCκrΤ`δŠqrqݐM9žU%»ϊ£>’&ΐVΤaΒ«ŒŸ±ό392”UνLRv[,΅X:I;JΔ„PΜϋ#7%₯rΚN˜Ε:oΨ€΅σ8”&w=ςΫ~±^―Σ)ξΥiΗΫΈX μΪεΖΗmOωέΌY=Ά/ ς›1ΤiΈ «,ˆzζψ’°€ΖrKΰά”@˜²"ξA” !ΗΔJgρŠ.1@{H:š$X‰Υω\ΕδΛUάmΊΤsf›Β) ΖՐ#¦ˆzRH`¬=\ oΩΉΣΈƒz  Xuύ;Š¬t»)θ,φ§ΨΟBgΠΑ|"€Σ·Vm°ΨΎ‰ρUjfmuΐJ.bΣ=D!%ŽU²–jΚ.'y€rT%fZΪb'‡ρqε»I¦BZθ>)’'.W ψ&¬s¬D(4’>^Σ]gV.,¨ Κb'δ)³LμΝbίjvš‘1dFΙΔ6CNΜt_vϊ‰‡Ηdΐ+aˆΛΎŠiΓ4t­οΐMΣθ$sPP’΄Ž'P.fPr§Π8 ν3 ψΠε»2_ωΩͺN5°Τυ}4©†.ϋ£ε0zvGΟΏξ½tύΰ†υήqRs{v:π₯wn„€Μ|} jΥΏx ’Ξb°r²ƒΈŠ +Γ*Χψ™§ ”ΰΖf)«’¨|œšMŽtΩm-©ƒ?A•—6[wx_θggΜό(6^=ό³aΦ,hΆŒΏvΑ’½₯τΨ={ΤH°”ώ&qΩΙ&%’;νφέwύέ-οQβσψ“έ}΅ρΗ%πΐK@‰c^ωάΛ³•F)  Ν ΫCoΌAΜΘ ²ŠmΈ^ϋ^HP6P9Ϋh―Σμ™U^s3U³yΫατKτEŠ‘o;9Yθ'i‡ΚΘgrΖQ[μͺOγ?Ε)(ΦΐΪUr'eζ­ΫkΦicy‘iz0ΧjΓ€"²rϊί€R&+bΛ΄i܍οΌͺ9 |hϊΈ^ξγ#Ο•`œςχΟΧ£mΫޘ―υΓ/R=ŸφcŸΩy{qœY2ϋΏŒŒ·Ms βΔG&hˆS’υ@ŒώV¬j3`γΒδ‘ˆΘgs3Nk”rMΎε5Ζ•&~κ©±0ξ iŒ–<ΑΰY5κ]² ‹;ΊhΆ1€>Ï:Eϋγ ύ™δ―<εφ.λφ©‡E…‰€ Sρ$ΏˆεhXuΙήmΜOέ`šGrΠ`bηΓR P•V[ΐZl5Ÿgρgφ»>°\:\~κΘ.`-+§sΝϊ­λVV°΅H#-0–˜NXf&*]΅9ZcΐŸ–k$ °epαš²$;!€΅p’D {ΓΊ$μ3,ΊφζΊ6 ˆXMφ³l(z(šœΟ΅τ©Œ–¦I₯εΠΚ$IΰjόΖ₯+IΡK 0Ζω’7ΜΌΛω󟱌3eθΞ›ŽS―‹&zHΆΣƒZτŒGώζ›˜ŸΌn­wtθ“’o¨%-J»@Ά¦A8aBAΈŸ)“ !Σ¬IΟ›™<ΏSΆ>Φe0|‹°ΝE΅ΐ΅ …Ας`Ό|˜iJ;…&ρ΄a•5%RIQ†°υϊUG1’γ,@Η§eeΚS–wZˆίšx©~ Λΰ-}¦΄λ@sK=}Vΰ¦ρ’u+Ήd&[qΫ&ώΔ•{ }ωϋ|ηt@ΦCRθγ‹ŽKΰ~–€Ϊ MŽ„Pqž­θΑwΧ"§ Ϋ+[:₯ wEžYέσ%hŸϊ―•ŸΎβh§“SU#φω’-μ»RsrΉ…ί½4Ξ#<­ ikXBΫΙ±3(ά²ΧjcŠ)Πκ^‘χjSE39SΆς %bΡd8WΠδ–D<μΣl&Ι–Κ~h―ϊΐ'žϋXΊq?ψxχW XπLΠή£ŸτΡm ŸKΣξΣ’ΑjD2,“ρg¬ι,ήkެ-˜ 4Νζ~0‹f‚…3Ι=« ƒ― # Ξ¦\‰€˜hΞ/ΚT¬©@—kIGΞΙ~9‚Π¨P(Πγ+0Ζί„Ήρ9ϋrOΙbΙ=`ή“₯₯d"Jδρ„Ζ˜RΎG8οI@ΰzωͺΧΣθ5LΏΰυόχω_ή5Ξu€σ=XΩ‚ΰLΝΆΛμσ?ζΚ·]OΠη;ΊΓγqΩ/Ž ­: Κ[ƒ²‚")^^Ψ1xΊόT0₯Η3u±°“¬†τL&Λ \€ J'1dd(pΜΈl%ϊHP7"ιΘ9ŸYi¨1\\o 6ξ°δfͺπž¦c™{ΨY0·+Σ,/GςŸ†-“b¦B–΅°Ρ³φΧ3Μ’ΊXBј€ΗR~κ«Ί sν(zϋ‘)υρUΗ%pK`οή½4“^15[>™†Ήn’€I#½‹Νκ9€M6IςΤΐΪn(Yδ„ϊ-7“3ΣSe³Π#πOnJDτ°Ήeό ρ‰Φ*΅K?VFj5$©D‹ ͺ,}œ da€Ez ™ΈΖ΄yΫssΌβZ–‰/‡~ »ΊΝωIϊD‰HέuεσΣΑρ΅ε_ϋΐžω1xΎΟ{|Δ}% Ϊ`ηDΟώ™?ύ©~§χΡv³½uΨm6•ϊ)άs›Q;ΏeΦ<α‘›_Κ›Ε»O˜•ΫhI˜$fe™Ά±)[5—ζςf“²ήvV-°†ν2‹[§Bb§ Ώš’—ρ b΅Œ ΡZύ΄ΑμάnTVΆiSƒίw‹ΑΟ1€>K™Κυύ:žσRω7cΔa™‡Ξ|€W¦S†…v―bϋfι α€yA RΉα5yΉορ–Lpb§+ί =YΠ°tΣ]–S>¬ΩE>Ιd±NΒαΑ₯QD,ΣŒY­σ™`ΰΒ¨ͺ­Άš Έ΄Aς<ΝRΕL°εΆub`δs<{GŒ¨Π²ΫŠ­‰: )|Χ8Λ‚¨ν™ΈώΓ½WΦήπsγ~ σωŸ»…Í•j˜=Ζ©sASΧ[ι6ovπ­η!ΨHS†UΎ Zζ ‰Σqpw– Ά}Œ2@ZKΎ1άΰpݐw5¬‹ μ•TE‚‹SψbO•,¨υ€#z| ζΒβΛάΩϋΘ©ωŒΐ³Κ;j†ž1εΛ5aΒΉεΖίZ½΄L¬¬b’#œRCΐΚ΅ΒQΰ󒔦”ΗƒΚE§υe·ˆσ₯I5oγ8oJ`ύF• *’†‰…Ύ~ΪμœšγNWΨψΚΣbΓΟ|rή±TΜ›i’KΜN—ω‹Lƒ,Mwh ψςK6§ήj’5++-š`tΛ“ΣRFBΐΆΪψKP±p¬ώ‰@€$h0lΘH(«»Z9‡Q‘x@ žΡ="=„ΡG—N}μ]ο{Αu²zΦλ-Qpή<δρώ%Pg`ΠXi̎'ΎλVη-h’˜vb4Ι ΧΈs ΊζŠGξ0?Κ§˜ηύΤ₯ζŽΖΌηέ_0½Ή9“!ΧBC,FŚM΅’yβ#/5™+4#4q%gœ:a’ΫοΒ g‡WJ&a»κ¬Vƒnz4XA°Α<@1Γψbœαv/ΰ?5\·3XΘ7βzZwύgζž8<ΪQτ·+π’ΐ;Ή›₯€ju‘„χMh°5ΐH‚6aQ2ά’Xfڈ4or 6μuKœ…ατl π–A²!˜=„ϊλZK’²`Ÿ"ΛXςHΣ§%Η,@[ΌM.ΐΜu]4½}ύέε[,οimYό€­Έ€Y¦C;ϊ"μ#@'½`Δς₯@΄‚eιja%ύT&SψΐΔ—_z‡Ξ+Νν»s8λžξΣ#>ύ1Ώφι}•\}ŠUα΅W`md;Η(Α ’ Ϋ¬vNšŸίŸ`^ρ‚K»Ζ½γ^βžZζκm3fp’m–—B’ͺtϋfΊΈΥ\χ”ΛL•δ>ωŸΟUΜΥ͎Ήκ›wšο}ύnΣ=pˆΥ@4-M+2 h0YZΏ«f.ΆAD¨mΌ‘¨#Aΰ•Όυ?ύδφ;fοyxΌ£άΐdάV,&wτΟΔu™Žb‚΅Σρ &λwy]ˆΣU5TυΥG€7ΐyžqΨΉ³—€2HΘƒ9@- %€”L G(T§Ε|‡XyΔZΊ„m– CŸ`­Cσ@K1ΊΗλ-KΊœl…SΐŸ@Έ: Z‚Ψ π&FH,j@Η-’υ΅ Ηlr-η• rzώι«ΐ ³ΫσG9Κ¦έ6;ΘnW'pf^οœƒ[κΏΪuανl“˜q™”<œ4xNX%ΙVΦΊ ΐ€Eν–ΉΩΩ΄lνee•Α•# €ΦσΤ€ΘZΡαΖβγΖα*;£„!y]Mθ’νομΝKTΒ3%Ύ™k< Ψ ΡMΠ6Ȑg ˆjs{nž]Π)UΒ2tΚR\—€9ž@`₯δsrP‘γ_d3έg՟Ζ"΄žΈ½ι“ρ6.σ’vΎKΏΪ―ΞP―ƒB-ή”qξ<Ω2' ցHΆrY²}φqŠθœΊ!k~΄i‡$*m@Β²€c%Γ²ΆΪGπάA ₯~: ˆ–¬jΣVœHυ}j© qΰ‘i¦§ωΚ:O}΅Gϋυ9. mWXi*VY6?Ή‡Sh/Ό΅4΅iΧΎt_"ΩΙόόΈ­윺I덕^έF- »m‚N4t3…ΫΨqYDXT͌w/΅Μ­w4ˆ©b|8ζe/xͺIΦΪζ{ϋο0]Xγ«Χ_±έ<χ§ŸlΆ=ϋ*cˆPΩRΡ™1s—L™K6o6ύOxfε˜c‘ΉVΰw1 {Έ΄Ώ‘AΒE΄τ|Ψ{Ποj9ρΨα•Η 7LΆ³Ϊ³©ΨKΐ'vg8Μ™.%> ΧUA戀(£ >Ι(Vꉩ‘’βλαΛΚεl™TZdΓΘ1ΐΎVϋμ#ž–ZΰL›ΐ―RxKΛ\H"2b“…ŽΔ¨ˆyXW0‘ty]§g—0ις9Z ',Ά:–V[™κplγ#@7€­sam”‚ΌN’Ž—ͺ*q qΞ͐φφΊί Ϊ™On»γVu©\ΞmΰΜΐΆ;ή₯ ’Ι]?Ρ‰[ΰΤΠ-ΊSsΚfΊT ›#•2ξ a’ tB˜SιIΒJΓ^R*Ϋ`#₯]ωΜΚ¦NQ6έ/L,)@<΅le m-π,έ΄€΄½€fυVnΝs!GΘUνό¦Œiͺ&L“μYΐsΡ3“Χ¬d?hh΄—])@Β ’™E ]"©„ž«žcΘδφšo2ήΖ%pž–ΐ]£ϊ{ΙΓΚX™jc=uZΖ΄ξ9˜ ΜφΉYSή4a`—ΫΨ7†Ouzr lΊJΟΞΠΆ ¬ hrΛP›₯a\X4 8i„ΔS€"Σν—N˜ΐΊ‰mekο₯ΜΦδχ;²Ž³ˆˆ»a™‰†τ͚ΥI -π,½qΜώb­†8ΰ6FΆa²μ'π¬,ά©V¦ZΩ‡Tz«›…₯v`P‚ΆΟ βVΘ9s° &M@σ[”Ύ#­Žχy) !ΒeB$(γƒΝά•rΫU[³:πt>-{θԐnq#χ²‡§?·ιδ‹ eΉ›ϋχΔ68π\eœΉOV^ι£_8·νΞksGW‡¦‘΄‘}‘νwΉ‚CŽ&xbυ7x…XΒa$«ByχψΘ#Š”eύ2μ5OJϘ±€4ΚρΛΎ…* 0λ`_‡Π@Γ<£ ‘¬)A9΄ˆ!ÚΞjΣ 8δΡaQζ<uJ·ξDLΑ8Ÿtη<&Žγo#ojtς΄x`Π*Lr,½ιόm%X,GΪQK₯Yη*‡ΕΛiίW9~ΌKΰ<)M΅ (aΣZ8•_o›ΜDΙ<φšΛΟ5s 0Ϋ=Ω6]ϊΚ6’Ξυ+FτΑ“΄ΏΉ™"‘L(ΤZYΰβ± Λ )m[ƒ&«+X~φa?dGIk¦]βΰΑρjJδV5δš€κΣΑΊSŸXm1΅dkΧ©–3?σςΧ\u|ίΎ}ήξέcέσyR£Ξ©ΫDφc“y=wΧη~{mνΟi.ί;΅ O%”4ξΈͺq`? ‡ƒΗσF§mV² Ω„ϋ*›S—!<ΔσΉ³dœ^ΓζζΘΙSζΑΛs—?άd¦*f‰β"žηΪN@Δj"WCŸŒ·- ₯ΫΆVt€₯τ–9P‡@[NE#€ίγ=e,lΣυ™xvIΠ’Έq ²κ¬2–VZ.š¨NaaΧmχ‘>œx²:ιw[―xέkύ]ζε>ΰω"γηΟκs.ί)€«»γ§ύτΎ«Yk|KštβΤ/ϋΫ6•ΝΥWϚ₯’‘m¬Α 7θΌιΣϊ—EΐΌhd’σZγuΉΦ]2S€ΰj₯drΈΡ€΄—t »[κ±°%d¨]ψξέζ[_ϋΆ9tΟAbHΎ’LX“«@DŽ#4ΝOI5:αςjWBΟε²<ΣχF Œ·3Qχ±wϋžςϋ“αbwGΰŠΞΞ†θI‡!%ΔΔφͺ™Ϋ1K&ͺΠϋ>`΅CeUgΜ²zqiDΗφ‚i°*C&m QΞ”/cie6²ƒΪ‘Œi΄»,ύcYf=€΄_¨Όπͺψ2²±k#―ȁ€Υ B πΚhes˜’―γσ(―œ%hͺϊ/˜0˜@Έ@œΐ™΄ϊ$Ρμ’Ocδ!ΐ9„Νν_ιE_*gƒί}τ=Ώτu{8£,ψΆΔ½γOy~ηϋξ|τsγΔ ·Ρ`ω5νσω>t oΥD=KfπJÞΑhi=0)§²)šΉLΥlš."•`vΎΔΜ>€}–$cςafrX<Ÿ QΞ:I ŽfςΔσ¬4³gβ€-νc!$} o)P#!xΓ‚h&3ͺ3φ₯Γ³“#=uφΥ‘bΙτu^he8Μ(;Η©S΅΄™4@)ΑΪƒ(ͺLMgϊQσ¬R2}ζ3υuωpΌKΰ<+΅^E«¬΄-΄ΧΝς½ΗMv₯fV’ZοΒ:wQO0-Υ¦θ•Oσ¨/τa“m₯g$”8M4{kJH7ΔςiU)K Α²,Α‡jgŠ)Π&Χ"ωΒWqί$a<9»ΉnςΆίyΫsώTΰΉ^ƒησ¬F3·»ΏνΩ“ΦRγu]’^7šΝhΣ– η%?υsν5›ΝWφ‡ζήC‹Œ€›'£ τɎWd₯η -ΫυQV§ xΣž]ΡVΒ{s|λλwΩ•ΙGe4A„r1hόwœ2·|ύŸΜ·Ώύ=ΪΐΠ:ώΗ~@ΣAκΜΦ ON’mˆ‘ƒ­š @ύ¦D=¬Kό;XΈ?2σσό@Ζ1BεηέσίπEX{Gίωΰ]χL¬"Υ8wb­ƒΦsΕT¦gΞm| ›τ}Σ¦†Κ£+ν“e5ƒΜͺΘδ2BΗάSŠnΪF‹˜€}λ€φΧ§ΝυψY(εΜΤDΡ¬ Y#λθ Ωgr¬ ν ±y€X˜\Ϊ6άΔƒΊΥZfg7ϋ+­£ŸώPύίΌclWwΦΙ3ό•χο―ΣYΧqQν=' Ϋ©­ΠqW-I³Φθ˜E‚•W«ΛC¨Œψ©±‚_₯WvKό-’ FšUμρ'πyvξ\€ΉfΙκΤφŠ)21l/5Μέ‡š£w/ςͺΰ—ΎλΗK`—k¬†“ΉP+˜ >Π €ϋ<Ξ ΞIŠ€·η‚Ρ6ΠgθaοΪyΠ1ϋ©m žάίΘ³άΧ${ ΦΑ²έP~ΊXΛ­χ`!3`Υo*°RB―²,Γvp΄@ V9ϊξφ¦Έ44Kr†6h,1Κ€ίϊώi]—Hl1ŒsΘΟ>l³$Φ=ƒJÁ˳9ΟΜPΊeuυ>‘‚e!ΕXλ߈tΤ3kιn₯›Β’G€tώαXηyŠ葆όλxM֟ηλoVΡ₯4l›5ΠΆXαμσys°Bήε½sώΕ­§>βνŸσ2/vΣΓh’Η‘\€Ÿ€΅§ά3Dϋ•¬@‡ˆe’Ο”ΡS–§³fj+)PΛYώž"ਂΖ2`•VYέf΄Μ?ε+τKΡΪΟκΙ„ŠνγΰYqQΪτϋΕ:υEKΞΛ‘67,φEhήTξκ49X ύΤι 0΄$5¬6-Ρ©§šλ9{~')ε«Χ?wλ‡3/Ϋ}CzσΝ@{›3SG·q œΣ%0Ώ‡δ?ucΎ}Χ=“ϊF²H?G–ΠnΧ?qœI+œEτ“Σ¦41ƒŠ)`2›cՏ@g uκˆΝj’fΘ–Οf³ΈΆ«™Y‚•₯EPUSώκλ6ZλZη\$ HζˆW‘a–”τ›·?φI}-Μ³»g‰ο›˜ŸΣ9ΎΉs΄ˆιΑ―»ZΕc“0°fX9ΉdΎό•CζαWLšS'ΧMΏ±.YNŒ@rΤ΄ΨBd˜#]΄DTQ/fu“*MVŸO24οΊ‡Ά²d6ΣNf7WΙeΠ2­f›ΜΚrΑΖεdB‡;`0 ²%HH€yJPΛXθΚF΅πΕΕ΄τzΪσ3ΧښSΈΊψδψNj,ΑνΡΉΪ4ΩtΐΉ·ΔRΗwNP‰³~犩ab^’18DΓφΧAaPΛόGΠW\„%Ι›ΞBίfή“sΒq:pMπ€°“iΉ₯YTj&2έ„δ’t(πΠη\Οd1ψ'&hT³@y(6•ύάξΛ(€βPМέ8Ÿ%%Μfx²ε†ΏώΒCoϊΈ>pήΛOD³ξι½ cΫΗΧ@Vγ;Ι{™Ÿq\D<ΗZτΖX³oΈ+$(žQͺΨ οΆΛ*ζaŸ2ΣX])h0ϋ\BλHφΨ©ΐ7θψGόΎΈzά6Ί™+ΰ«L‡—ρOΪK‡_‰TΤJΊ‘Βέ¦$6όBΗfie=Lg»ι6ΡOΐO±Πb(΄,‘ΊΓI¨)X 6’όΜζΧ¦ŸΏmΥyΦ£~-Mo¦‚I<2ήΖ%pn—ΐΑ½mE”3³€¬2fN" ρΙ‰TqΖ©’ό‘\1³ΫΆ˜ΪdφŸ[Mhikf›ΜˆΏ+΄ΥˆF΅ ψju ζΊΛκaΆΞ˜2 ζΚ]Ε³¨ΙΡF•8Ε#(ΌΒŠΡβ©dΣΞ`Ψ Ϋ«/»αE[Ίς{vœέχ5Θs» ΗwwN—@gq„κ8"Ξ<Ώpm›Γ‡΄J]e5{ΛζYsι₯3ζΘ±†Y<~bDšˆ)Fσμ°β"E+§ŽRpλ':ψ.υΏγmX»d~Ψ\4Α $K€ό.f‹ψ>Η¦ρƒiξ!Ρ€λΤw:>Π’f4fτ;rŽ€ΨJP#Φηβͺξc}š =8ι§wΗχή|oξΘΗΏύΨV y8ŠŠΥrΊ΅„λΎ0s Yιμ›"rW„,?{,΅(Ε¬HΛ‘!±ž©b‘”™BΝΎΝεΠxŠj±£ ²ˆ₯ϊHv3ΟH,ΛdO–©)Θ0"ˆM0,Α†jΖšΫ€&θΖE ’όΑ›0c„ΡFΙgZ$'`,‘Ί @ΊΐsΛ‰>gύΦϊw‹ΒΤσf7°¬Ξ_xώ¬qΙAύΆ=_yρ£ήϊ΅š?σ€mDπ‘όL(+<^)ΓS‹,ƒi‰yf*c6mcή^3%žT=,4{°ΠςzNεVb;- ³z-½¬Nζ‡Ώ¬Ξ€gιœ%ΕQ΅Q‘ Τ`Γώ[\¬Οδ²a½8UΨ_ϋg‡…όΊ‘tΕ ς°“,oN*§¬ΕΨtœVκΑ­Πεωέ΅₯¨P›y{ϊΗΌα8~gzΛMσψ„ψΗΫΈΞΡHqΝqΙ$βb²%f‚(TurΞ\sΙ›HεΔzΓδ±Ÿά„„ΓvX gIί:8ι΄‘I ”YPέ4ΝΠϊ½hΫWmڊ;A»a\μ%ΈΛΈzτ Δr“μ ΰ–TQdYδpΠ‹βJu³οΉ½7ώώ»^xϋNtΟσcέσ9ZoΞ§Ϋ’²‚/¦¦–ZKλ₯%'(M¦a3υ3%μ―Ίfuρ1753ƒ<3OΝn³a5Ι£ΰXeΝ€rkD‡-f©eτΕIΗ-Λ\Ε5u9{&˜$ως₯„qtΣ!γΝΜ4τN[3Œ:Z‘&˜–qDφ§ @Θ΅ςΚXΒψΣAbέ Ρϊ$Ρ6ΠgδaΧ©‘υτΏwεκΪΪVVl@ aΚ:(ΖΩ.α·Ι€˜*KΠΒ8m€8eΐN³_Pλxl΄87E—ΐH»°XΙ0™J€MP€πW/β+­F€FΣδ!εzΘAΌ!Μ3ΐM>Ξ4„ |@£ρˆ<χΘξNΑo‚κTdUηΓήθ{°Ϋj[e 3Fί‹^Œ{ήψiSέԁμV,pA‚g}ΗgsΜfοΖ_ ‡ƒBb1ηv\&Υ‚:«[vζθH Ό* Ίΐr†Ύ Hή°ΚB¦€>₯ωe^nμ’K¦7bΐ¦ψ`–mΐ†"!ϐ@ ι0I-l—iΗ363]I¨7ΦaƒΟ†Οœί©1v݁₯eN€]"α‘LΆ΄/ΓjQmlΤφw­r’ΔD€fωӍώdeI οΕωbΝ¬/ωg~χΉΩ  ί?Οη`9?oiηΞΊ‡:zδυοώ&Ά·WƒYlF‡,Γe<©r-σ݌ζ}RβΊ0Η@Ψ“O3V¨ΒΟΖvΜ`ΗΚ/F±6 ,Lΐ!γi€8WΌΑΨ T“UPVe@ C‚ΕZg `ˆ ‚yΖΑ†#ΚXŒ$dn0>Ή£ŽœžŸ%}οZ#ρxϋW–ΐޝ Άc‡—ΧhDn;m›c΄C§Pyυ‘Vο•PpΔ0eθω…o²€η*ΐΈ .H+¨χΣ5΄ΜGIΑŒ0Έ–ƒ^d] WBΛ<ΚeC£ˆ΄+ΘΜ |03Β:χ\0[ΐU nΓ#:«λplV2@š>Λ“%ΐ£n.žΕyŽχO<#א.Φ@k¨Ήΰ7Ύg²Λμr?|λΫGQψst#ύ2h?”¨‚^ΉΚƒ«PfE²—a¨j“Y“η=X,=J π,€¬`Α”¬OVgn5Π˜ε φT+€‰[2 Gΰ™η,:,…ιJ₯9γα‹΅ΆσzN}σΏκe+g§ΣΣy”Rψά幊ZΆ`™φ§ŽŒ[΄4ΩˆλCΖq”!ΎίAh_Ν}8ύΤχ^#πLύO²GE4ώ9Vσσ6pΫTΆlΊjϊ«ŠΉΉΝIaΫv'BίΌL2­Ύ ŒiC<Ϋ}tΚΙ7ώ;{o'ΩUžwŸ»Υ­΅«Χιž4d„ΐΩfg„IΌ°x!3ΆcŸγΰό3IŒα래ΰνgo Ψ±ωlΗ™16Ψ¦YmBBΛνμK/Υ΅ίΊΫχNυ`5Hiξ•jΊΊκΦ­κSο=χ9ΟϋΌΟ )ΑS7¨G‘cyΆΓ|mσ€ΕθsI–‘²¦“­g‰Ξ£1σωi>6j•Œ΄K±ZGŽ3Φέrιg8Ϝ]ζγ:σŠ­s2Λs‹vζwƒϊeΩ€ΦΖC˜9€Χoœ't™Ρes8 ˜ωέ8Ϋl2 Xi„CGtŠŸΪ2ΨC1α“ΥDn‘𠍣BΏμOš!χ;œ]˜ε!ΉΝώ#"d δΜ4’9―I§]αdZˆq½š T{‘ΝIΦρujί¨?zyΩ^}tχq½ις[lηhšΣα³&ke3ΧεfΐZO«:(ή@)u‚έψ©f.%:°lσ¦}Κ έφσŸ{ψηoxvΞΐΝ3ο Φy~ERiί}Ϋ>`άαχ†Ž{jΒ«ϋ!:‹_Ο$²Œ)ΎƒI.ΐ²,1ι„’jΐvYlΛwΕ ς½+¨Un’|Ν 6š΄/± †;,ήKxv–Π«Ρ°EpΦN?|7vΣΘσY`„\άs]ΰ|‘bžΉiBU‘”ΗMLš,σzœΠώ*-f\ξ–Ρf/}^ύλΡΞ0 /rπ|Wώ›_Γ›δο$‹­σl(ψUP;Υως³.yκ‚ilί–εX‚*e’̝¦]s’< LvŽ4=QΓ“Ύ²{<pŽNp DOZ@ηΛυ(-š©΄aσRζΪu€k½ ,λπq―‡–Ρλ'Ώ\ }³„b…ξ ύ¦?yΫ Žοήoά₯₯%ΎΨŠ87#€¬Π,-Ή7~φ5ŸLΣτ#^Π€—Z™u‘zίr1²^\ΰYȁPφΈŽ “NΉφd4T‘o³δ‡bbςHŒTΓ^ƒDμίtΫ΅Χ VMδ§" ΡΌ‚Ηyƒ}tei° € f:^y(Ρ¬LrΖ™·έzλΫnΦuΣ<ξj£ξ«άΌBί“Ε£lmcžτόωgΞ_άάhΑH"8UnέΤηm@0ˆUΙ*›:ΚN˜μΉψ₯σΆιce§W `G™E)U†‹Άb ¦eμ㠜IΟCϋ5|™ι1’Τ%•Βqΰ‘ lή[—λА%δΒ γ )0Τύ­’-Lw=DεΔGq&όQ–|δtmνϋžsdimŸ‘ζaοο›Άm½ƒwάπ–e²SΟFNρ±igΪ/E”σΕI‚†Ό/ΊK]ΉΨRGΔ Γ¦ΦάRΊ°H²WfιΟτ%ς«4iЇ+#ŠGυ{Z4zu?·vύql½Ξκ—%Σ@cρ‚Δ‡πΊΟLΟ‹ψ–#€e±Εdk:;šυ½[­·ΰ؊IΕ—Xh–GΊ9J‡π»ί¬αTvGͺ\]˜}Wώ‰ϋ^γόTΑD3ZΕvžΐ^M‹,μ)ωψ—mN₯~–9UlζͺjQj›‘p¨ψ6b±ΊNmJιƐE§žΓ,‡*u ςƒΦυLΡ!ٟηhσzΐb΅D½J³)›/H ά Xm£ώσ^u"ͺL4E² tM!˜ΉΦδhœ3sεd6•]T팊Πύ’ — 頁Λμ‡C‡<’-ϊ€|ΙδέΓ½Km—ύjμOΓ.,:žP-€:ž‘$<ΖŽΧ€[²(υhIμ€ΙMΟ,Ν*™[λζsp-Ά‡2ΐbΑ–|ί“ώpnυXλςˆnƒψ9£ΉΧڐHΙƒ_a3ψΙ}K’bOΉOG?€’gθwR‡©XζH^¬τ”J΄΄ΜΛ©ŠΜΤαŽom΄FgΓΓ΄λ$π‡εχΡD•8θ’s_Ł(ύμΙB’\…T€SC² ΅ χu0θΛi§ζχ³αΗΏ°rχΛ―Ήw Γ»%λιόPΖζρπZ &-½tϋkοώχ7ύΔwQ7ρ³~κn&5Ώμ―"d5€Rϊ’5£±²ΰ™V’!z2υ—aΞ±ZΟ@ηρ$Gϋo.ηΪ™›6ώ¬ώe&'°mΑ3S’ΐuB‘”υίZ/gύδ­ΜυΦOϊkc½?ίή,€ζ±MP=–‹πΌ>ͺήFM $$;qe‡€„;Š:™™xW~멟}@wΆ‚‘ύ‹­Gq––rw ρΎ£ωŽ“+ιsο;΄’†CW]?9!©ω€+c!©υ₯ˆ ΕΈ<ωεα,M³Rέj۽юΜq΄m<ž»tLx¬8n`uWa!\§ωΚΆω³caΞΜM6ΐΝZ|RPΕy€kΘ! ω*fܝuΕVŒΐΉ²,Πά[郓ε7L7ηθΗΰ$$.8Μλά„ζ€³žϊέ`‚ι^΅PΤΨΞωΈΠ”¦™κΗΝNl?­ΌΠΗ’•,Μ re0yr8Κ”&Φ= œB'd'tXglqAœY`’j„₯ŸyΧuοΆφshΘ‹ν!Œΐf³‘τ\Ή~}bxΌO}‰C’^Ψ΄ŽbΗΛΌ²9 XP€Ž‡Ž6¨±Ζ#p#τCΊάπoNΈ€kfj.«Σ N&ο€Β•a™uτΝύ’ΪΖΒoΌ«£"Cό θf™FmΩfI4q” -εόΑ.Θ9؟dέ­x‰“άΑΉςC{Μ…'_βς²tζ‚πFηρρR1ΡKŒ σγ·ΎϊΏηεΞΣ+e?,\9އrs·ΨŠx”Fΰ…Λ:sd―Œn £Nͺι¬O¨K³9"D»Μ‘«έΆ%!Jar[0ŠεpΑDχρ€[kυΝ‰Skf£Υ’7Φvœ;%»¦[Φh©9/Ώ˜n’““h₯»Έw ΣJu₯Γύνo|ΟΛ>3OWy*΄ ι2€ΆDΗΠ FεΒ„8φu’| Μπ,―gm@Β5’3$«Τ$²'ΗΦ eΑ;η N^Σ!†χΙxζε<Μ+©ΧOγΡ+lΒZ>–mqΫWŒZc’ο#Mϋc7ύϊ‹nώ‰ί|ϊ›^πτνOήώ#“—Ξ}hnΫLTŸ›υΛτρNq–Ž ₯1™Ν‘x䀂sτΚTqγ(ZΤπ½Ϊο°J›ϋݍΏDžHπζ»³ v4λ•‹ † Ί;~^XVχΩ,ΈΦs›¬³Œο­ήžοΜfέ8˜`ΕJ‚ΆrΔΨΩΓ°›Ϋ’‘Ί)zuΫΏυvVlΩ―δΌυw`’Q‘χIηVlΕ<ς#`p»veΏy"―υ;­Χ'D³8`hχζΤZ οζ ’>ΜyhŸŠεX0`ΡΩ£ϋ ,kI7Dž'$QZ–i{j_ξΑ%ςΞοuϋ–©>ΉSέƒ°P±.ηFD6ΠšΏϊȏ@ρŽκ,#ΥbνΖOώ?―φŽE€0ŸŒH’γΤ₯Ίͺρ΅€‰6Œ ¦λ\F`—νu¬kH±ΙH9\Ϋd₯CnpNΜότV3?s-}4Μ³ϊXΐKƒcΖ΅Zϊ-ζ}bͺά=Ώβφή½3Γ-oβϊθκ³]hί‹Ϊ}.^ †x½τŸς[ϋ0~ΩΕL’rίƒΥ«Pψ‡JƒŸ²©ΈB‘H‡¬"ΐ’U5/)σX¦ΡpΖΚ¬οb?θΦ*0„T±Ÿ<Ÿ%οPπ«­φ°™₯~O‡ΨΥι¬I±€‚δ]N¨ΒΥ±yO½ΜΧ‰Ε>4+΄'˜>SΜ§xYΊΓ›φZyηvΎεχΟ žΛρy<‹οάΩ»k―·΄Ό€kές½œ/m_πβ ϋV=&κΡΥ₯―ΑBa“Μ#S³Ύc{•ζ{χKh6ωΎ”i“LΓ‚lU`˜E™$Ψ"RnγLρŸ}cώγ [BmbΜψ‡/η΅1`: Ν,οZΞ‚lτ 9±6€£š6ΜkΕ8σ<ϋp?ηf'^Οbΐ z]“‘οžΫ~‰|Žή»;ϊκΉο^‡χΕTbοb+Fΰ‘rškœδΎxκ—σJύ­ΗŽJƒr™0Œό ­]eiͺt" ”’fΎ Γ²=Ηa‚…Ψ°Ά[[Y7kλ=Σ‘Λ`vy°}@IDATΛό΄Ω2]QYΉϋX vz@M‘ UVΨwc½m*A%-Χ&ΌΑ(ώΗΟόϊ‹žC ;»ΐ~δ‘x§ xpΔZΪΛ͘§>Γ€ψeΙ°ΕΥ^¬Œ%Μο\σeWηΪ&* Ί³‚δB$I:ζΏh.8ΝOdΡ¨£4ΜΆOΡΕsdξ=zΧ€…ƒ4BNX’„³ΊΗ4½ €¦4VFΗ΄‘τ_rΓMoϊ› 5£q±=„xfυε;Yi˜Α™zΊς Ž<*[9.vΠφθV>±Ή\‘ŝ-ϊγχ„˜"ΐ£{ŽΠ-Θ-\€°pP|#λP΅¬₯ 9štΣςm aΈ›ι$'BdϊΌ6ƒωV‚%!‹ξ‚ž΅rτ`0%ΧfYSμφΘO§AL|`ηFžΟ&ψΞs³ΜW'¬ΌΧή½Ήσ’ν·qŒ_ΙχεΏnžΡώmθΧΏΧφψξtπέH}–VYϊ8ΘLjb–Ώ νP3ΎO«‹ζpžτVJΑc0Ρb3ϊώ!€Αδ€]Kz½>Ή>†ΠMρ“γͺ 9ΡψXΪΝΎ^?8l\+Œ"E₯¨-πζ½d§' n­Ύh!ƒ η‘ϊkΗοK¦·οόΑΩΚόΞό/oύΐσνΡ|&ορ'ΡΫ[1ΧμΛsοm\ɟCό¦§N¦^Έ‹PΝoέ^‹Ί^Όο+΄&ή₯sfr5΅Jέ”λ€­ω΅+ο[sΛ& “|φ:#₯ͺœ*<¬ΣΑ3i0Ώj>'ƒ€…f³Ωΰ]8_ζ₯ |'gΎΛ,zΛ…δναϊΚ‹γ~έ8ω’mΔά°σΊWΥ©›Y<^”½O ]Δ΅δ<—ήβ9‡Ewΐ 8C1ηϋ8u8bm°ΊSΆ³?\5χZ’―{ν(žu½QOy¦€ς²WM}·ξ ³φŸ <₯{.H"eŒξΎξ *x #pΆγχŠms[«IΆ³„E] z°JQXV«d±ΞR§JœHSD³“Τ(σ³ŽL'"λ«Μ€πν–Ff½44ε‘ιqΏ°ξ#``θŒύ0S8'€$"΅ήΟΚEΠ?—‘oŒ}KΰœύF0‰Moςqhδΰs vIšiσυϊ[χ›[,{ w±Οx‘)T@ƌι#»Η9—Υήο\1ϋ΄%όVVJ…ΩλzΠτΚε Ο‰b'πZA€)ΆY“]k&f›fΣ·σKθŒ6q3ώίy \<Τ|o~’l|Υ·§ΈΑ\Ϋn†φ9>­^―°qβΔ5‰ (δΆΕ·ή7œ=\ή_l5žŠΈsΠ{Q9Rήn–ϋ½Σ'ΰψf2όLώι£ίΟίΟΔ©ΫζJΡΎKρO1η~cΤ(e8v¬:δ>ŒGΥ4’šDβ~ŠKahκ°ΘυϊH1j΄VGPZ{«@v8ŠΜFΑϊWPύ¨o\<£ S­ΥΙ…ψE'ζšhBc˜ilλ¦'릂=©O,κUςςΔ„W΅°žΌ_ες’ΞΦb+Fΰ‘₯LΐυΞ;·Ν…η­Ύ§Ζšˆ%έΰz ΠΜO±Νv³²20Τ>¬³‡—39€ Μ2―‘έ]–l‰9F LΧL{S¦ξ48Ot)±ΒαΈVE°<+Yκ¬f½ΣQ:υ@ό)έκ8‰|ζ~ρσ,Gΰ ³hQI„OΫO‡4²$«ΑcγBΙ.FXΜ©€XX @πˆ›Ψdω/λ‰˜"ΑΆ74}€t,0Γ£Cd=X“.`ΉΟλz<Χγ8]oΗ°o$-Σ8nΘeƒ*Jγ»ΰ˜!Ε‡ΒD!~Z‡Ε,ι!œγ1 `ŸMæλΓξΟΰυΌΟΫƒορYώωΕξ_1Ρ“Μ`X²Π―Œ‹½σ-α­Ξ“oΘ>ΝΝWπόUΰ–†•‰9ΏVobM«Ό@Z‚YΎ|3X'@ΆΤz ŽΕD¨Ϋ˜VΣ”zL;p ΫIS©YO>]ΆθTςξΫI•ϋ OδΠά:07½ΐ€Ÿ*)TKΒ!'βE>δbΫ`,‚ΈŽίλuθ"۟!|ί—απ―.ΨKϊRG‹­s:φ|"ΖφξέKΧαΉ?Γ8λi­•υΤρJ.u*†61,q™ΖD€hvΉ•ψ=bQΨ‘πOZζ! 'Zέ–Yνl`a'+.$N,«°Σε2V_Δ{02}YD —šΥet†Ξ„SSfvv:έqιsΙ₯—όέίώΒsΦvs³Υ TlΕ<’#°©9vβΘϋK λϊΞs’¨q—ζtEe.[;[dH,ΣUΠρiF‘ΐ0΄³5™n!Zι™ςEfKΈΕΜΊ“ζ‰ΣsζIsΫΜ€7MiVγΡ€ˆξƒ©dY©α"κϋΕΟάψͺS»w_‘ƒ\°ρ_H8BΘο6{Η`!=3ΈΚ8€ςλ €PFΦ:n QHŽ[Ώ^Ϋf›Η3ΐqΒΟ$^Šω©τ \Ÿ`˜>‚EšΤŚμ·«Ai˜e‘>γXK:0‰€:₯0ία(0“[fMύI“&_LχΎIIYZ •aœ2@ς(*{α―r(ώ†ƒμ `‡χώΓ€”›=cFJ}Z2ΉΞΥΫΘ‘™ΏΤ-?xκ2²»‘³~΄Tm<Υ”PΞ―œΔ)€ͺCΎ~:Jk˜¦pC$/β8.!΅5Ύ.2 Β½¬·τ¬ώa㧐PΈnφ όΠάfςζ}^/ω†¬Έ,薁΄lψέΉΪ8γ)ι€E;¨Y €]…XHλM‘†xύh;«I^ŸέϊŸvΉξ£ΏFVwΧs0*-© Ψ#ΝI±#πΠG`I‹QΐσΗ3λ ‘qρΘ”δγ{[~ΰΐo˜§νΊ†2Waω₯AsjZ R’ΦΊκ?Έάγθ I@΅Ώ!Ε‘ 9”ΌΔ & x5ωA²}§MπΜ}1ΝvζΤŒϋb­ΥO’Πβ—ρ~γΥΩx_Ν©z½Ll·¬ο,ϋ °xζύΗήΡʀ5oΜ<λ¬­œHκ•ϊsψŸΙ―=φΦƒϊΤoJΖ’Ε–FΞ=…΅—FΌΨ܏7οS6'OuLϋΊŽΧEθ!ƚ3LŒό πδηΨΙΉrΑόB_<~Ε—€/¨ΨΞvr,enϊΜ‰ƒ`€oYΝϋΩΘΛh³‰ŒrR£‘|LzΊϊ€κŸγ1χ–ΟsΛΦΆ½ϋβ{ΝιΫΑ‘a†" Θs0ͺX-|‘’_dΰT‰DCRπ#\:ΤΒ;Θͺ¦ƒ”㨳fΊ=VεΌPN ΔšŸω_ŒsΘοUδv28Gρgͺ  Xη2€Κγ‚‘χυ’rΜ!Ε`Wv˜‰§L™n»m»#Sίh“«άVΌ¬”}*XyΓσsώ‡Ώα17ψƒΜTζ˜}ΜKTEŒΏΌ€ΙχΏ“«υΏ1Qχθ&π64]<ΰιŒΚ‡δ4=·Ε£©πPϊdacOZ7&CX2žεΎ°i!d1Κ<Ÿ«ƒμ΄"ΣV†0σΏέ—cζΈˆiΰΣq<΅(ηυΠ’ΔcR#1Σ#Δ₯€fŒdPπэ‡°N677u7KΪ$ψ ;ύ†sqπI}]–…η]Έ›ςχκ‹­o:ϋνA τχΗ’χ”λή΅Ž·c,ι5υ° [_AΧ λμΰZ£Β!²£Σλ΄Ν :h\7f*fbΆfζ+Ωf¦ƒ Ξݐ'N΅Μ‰“§±±‹LΩ­ΒΎAf UZηG A²ΨzΜnόΗΝSΒΆς#‡³ΟpxΫΩγψ™κͺ²,FΡρφμ@Ψ&LΊνϋZ)\άι‰Ω—cΞρςδΪCŸς“Lg–8W͟Ώ—}ήΨC#ž›ƒάυ±νIrf—βη6ΚVŽΩΫ?|xϊΖΟέυΆtΨΟϊ h·f²F! ΰ †v53³¬L‰xz‰9υGΑ―©NΞΒBŽXMVL—At―7+k}sΧ]«œ'#$Μυ=Κ?β™‘ΐ¨a<ΧS;£=7‰Ωΐό„Y߈Μιγ³N!­ψΫ|KgMšη“Υ¦Ϋž~σ»―υκκ’ΏΔ;ž«?ψρpœ@?ˆo‘ιβδ­ζ§Ϊ掝9μoJ"]­΄Ηšda]ΧΉ)}βCγI﬉\r‹‰†ΠŽώ“œo`ΈkκψÈ y•λα°Α ³b$c{Ρ;˜’[€¬³€Γλέψή¨‡©Ε…υΒ6yί* <,ΡJά‘mΗ[σS΄ΨΨΗ#‚7ΕφX₯ύΖ¬τ2…KΧD|n]Ύχη_Xy1|―«6¦^Ξ·οYFšPDϊcα± Ι6˜C8΅Ε”|ƒψP0‰XΆϋθy‰“› €Ζ-wΥ<%OIŽ«pΕ˜°·ζb*ž"5ς•i‘8ςΛ%²”a’pŒ>¦"jŒ¬ΘEH„~• IΎΡιf z<. ΄Ό`”δ/ζhDV+'~ζΞ£nΰaίγ(Bσ™οΔ΅μŽ…RrχŒγ΄—Ύ"vΤ>­Τ3Ψ‘"žω*λ›X.}—oάwΟBοτρ§y-ΕOn4Dށ$­ίKΈՈ%δρ°Η<Θ,¦»€δ,γmSiΊ2η2g»~–Α°Η#Τ|΄ΰNι¨ΕΓs>Χ{‘in0Νβo`>ϋΉƒζψΡUœeϊ8£vA0Θ6u(φ™ [|ϋkχρ„nr¨0λΞϋΦ¬υ£,ξ2ςί5§:Ξn3O'¬[£θτ /θ™fύεε’`–όͺ­Π_5τ—½ŠHj]]šψ£©ž?ΘΕ?ΛΧ™|; VπZ»Œ79d¨Ψ λΒ!ΏζΪg‘ΗΥE―ι›Άιd=Ž|)D§“€ E+CUΡ–ΉιVΞΑ1ιtπφ8Fr.€‚ΠRGιά¨κ΅²φG§†o~ίΨχΉπ桃ϊϋ$‘YˆK<$οψ}$Τ±η|ΏX˜|9O{ύNKώΣΝπgΞ` Ι{\@„«ε“ZuΛ‘Cλ(…ͺ„ͺI ° 2Ν—άW ‹C»©s^"]Ώ6ΤϊGΐWmyBƒFOMaΦZΔ)mθΣ13δγ’Ηέ‰pj”Ό.©qš`δ֏νn»1Œ‹§$ωVXlεςp΅$ κ˜%έjk₯cN–ΓŸ½εξ[f·m_vj₯μ Μηψϋ-#’’3Κ%ρΠUlΡΈe‘ΞfK„gž> PνuΊ9 4§VΖΦy„+LΤc.δ‚ο"H 8%r»θƒ)†0@©¦,‡­ϋ>_kAΕj™y9AΟ/½~L•ιo –!δξFε*R<ŸIaW‘Τ ‰9IζŽ΅Ά·4lΆ C½pψάβcŸΗ#0ΖΨίnυ’~=OρλR₯7³)‹H>7sΈWΧόΙ}w£©V+΄˜ίjΪλGQιuЊυ>S9ΰ9`Qθΰί¬†)Κn hf΄σsn6Θ&x›G1ϋKͺ Χω£,φ:L7€5ΏξGIϊΏn©Ώ{χ-ήώύφRΐAŠνΜϊΜHœέO „Ι6ΚιεPtrΜΘpS& (¨‘ ”Λ3+E!{ Zΐğ NyC γϊ €Ζ±ƒW‘VζΉΔLρh‰HΎό: φΧ1•–‘πCμŸΐt ηu¬W Ι<δ”Πˆy”ŒNŽΔ‰’Ι¬ώzQtΝ:»οωΌά[Λ³/w;”£ΕξέŽŸδΓ~ι<cuzφeλ±–n§Μ‹‚ΊΊƒ0Uλc»:#"ψ©Μ‰@3ΰΪ²ΜΌ@―gλˆ?ΝίV7§& ‰3΅Nf.άRΐΥ!+Hλd‡E›€xI‘yz1·„T»~/Σ”₯¬τΈeΆ–Ό»HšP…;υ9bϊi©ύ2~4|>™…‘”ΫB–F ݍυοZ;Ϊ•;²θΰ_}φ†χ4œςŸΎΘq¬3Β&.ά=ΞΛΘύη?Τ•{wη¨Τ›SV#J4·βσΒ’O‹ΐνr9tM ‘”M# VΥrΚ#vǨZcj?I>”'tq$biν#ά‘€0ŠfΣGγ™ΐΤΕ1rŒτ+dόJ—γ ΟΎbœ'%@΄ΪƒσAΘ¨ŒΜJoΌŠdΑVlΕœ›Ψ΅μše“UœΖެTq²€Ÿ¦i‹ΛΉXζYγ…SΜ₯PdƒU2/+L˜Usυ·?Σ\uΕVσηοA~qŠ’A€L&c…H,KΆ‘£fgκζ1Ξ <˜ηκ’€Ψφ?l$έ Η ›σD꽈η34x]‹.έΕ‹iάr%‘YϊΪ/»Π_;"gρ{/ΜbNEp:αu‚Ίγ qΏΕ _έΎβε$ε@’»W§ϊ;…<°5hχl–nΪ2Ν„Έΐ±φΧ£rΙSΗ,u-T!!oΛρΤ\2Β±ΑJi˜usdΑ­+ιΰΝΥΡύΊ© 5ϋ¬ογρ²ΡκOHXΨί—τΗN~·)•«3ΟΞϊ'Νz§E5:±RguΞT₯πΰ2E'ρ#`¬ΐΥ‘ψ!2W.dˆ˜gUoΫη§-œE$}³–tqŸγΙύ‚tŽcq“n‰°f!ΗαRκΆΔJsnˆιFmcW5z/μΒ€=aͺ_yMXζL`WLΙ¬Œi4Šς••SYήjε£a’\±Μq%yγα<ΟΌ1•>\Χi<φ±°(Ί j$›[P ‚†; Xˆ­°e,€ˆλΧάεΎGz ηXBα”„`ΐ6­8e6Ž΄‰B[\5`ΡΧeaWc> J‘IX"2ΝFέ4”=!nGΘ•μqυ9ΔŠ)CnkέQ>€0iηplΧ΄‡Φέb+Fΰ!ΐ.³ όΌΜό;ΊX‹@Iέ\:fΞ”™œέf.Ήx«F³oΦN’οg’^[k1o.˜ΪΔ¬9}j•λ>σ¬_#[B 5TΚd»ψœΛYς Ό“ψŒšΑ΅8΄VPtž ξ-ˆfΑš2jWb^˜ϊf2/Άϋ@ίί¨ό3ν7‹Τ’ιyΩSΐ* GB^Σ;+8~Σ=¬h˜7#O'w-+‚(ΩΤθφ#π«†*%X>’aP’ΕO~PH‚Qb²Wγ•7½Σˆ Ή Έ*¨œP‘­›*΅?}\LuDcNŠΞ/2ΥΰtΎςw[ΏϋλΉy&Πe>^±=GΰŒtAΐχ 1KXύΉaπ*7,Ώe¦ΊπΔN{U1(₯Μ†˜:ψ•½‘Σv–”Όƒx΅ Xώ·6Ά‰Uν+0’Κn΅η=˜ˆK€1βΈCtσ'†P‘,&ƒ˜¬•Ω0Cμ’83ΰΌNΐZLΆμυΎvQSœ(£ABBέ v ˜Ο§?’\žΈ>Œ°/ ²|8*·яeεπ‡Ώ”ηpδžS‹/Ύtώδ¦—°b~σYΕΏηο,^aς%>ήEΫζΧGθ›M>tJd,ͺI«KwΞvf.žŸ63S€¨ωV«4P‘tΔzy[ΦL‡rŠσRbS™+‡6%: ΊΘŠΚΥI»x Ω‘\­’H€ώ„E›Φv’°W‘Ьž»ΓΨt£…V³ΪΛςζ|Ιμ¨ψsΑ]‹Ζ,/ι^±#pnF η;ΡƒC«iρ€,½¦iτW_dVU$xχIζdh6ΐνΝ7ίdN"G"F}Kβ6ΑϊVζiζKΡz"βΖͺ6ΆB›μ#R(‘‰©†$"ήτrQu%@Έζγ–yYάεμ*Άo4€ώF#σMίCΔ-™%Ό3βKΛ$σ<$άΖm»εŠΡGV‘+v’™|R[+:υ7A±jΉJœhΓΐDθTθMΕΛZI(Ά) ϋAή0)όS†Ι Ψ7s(―‚”»’€Ά–ŽΣ^蓦Ό#υF?¦?e―€.€„†βq½a]m³g‘Uωγόοx―©ΤίΠΘ'ΥΧD„υψ9§’[ω;‘]&UMΊšHΖό'€ ΝΗοbπ€΅€ Hž&ΎέΤά$₯Άs5υΏDD•βr±―Ψ]9γMœκeϊG §Δ‹Uθq|·ΐ‹ΨpΞj7.±β#ή›NšhYμΌΖ0(WΑδžσΧ½χήμ₯ηA³ωS§;+/ϋγΟ}αηiΔρKKKξββ’Ξ%Ε±η#°w·:ΝΆ)Δ±•4Ÿ™ctŽ?ώΚΊ€όfλΦy³σ sfΛ4€ΒB5 )ŒhαΒLK-Ω†6Ε"yp2,3ΐ™XK(‘v‰§*uZϊΔ*Iϊσ„axΩ€m–ZΛ;/¬6wGα7€ˆ€N]ΤΕVŒΐ9ΉΉ+μότ/ΏχE;{=sβτ)sμπ ΌCζΠ‘ŠΉφσ9yΊkNs ˜[3€nXt˜΅S‡μβQσ­ρΤ4H„"}eύ¬vš‡Θ Ψωœxf’g2Ψ<Ÿ#c²»ψdd‚`Β’!ϋt†-ž˜!ι€ΠΆl-ώωš(τΧ Θ?χ«Έa%™―xφES“+;€G·:%V{‚D¨BΨΊkh‘[h¨Τb πο?›^™ι€nj₯:Aκ˜Ξ mΦΛ‘eœ=&iΌ ¬dχ δθ€U:&ΑE@,³ΓT# °?2>ήf*{ZΎby|€o—lkΏ ³m.€όρτφΕφΈ―v¨έ0Τ„Ω›ίtςOL…‚D4 FζC"ΧfΨeφwed’p8Ȟ Œ³υ>η~TΗq )»νWLRb0\£k'ψ$ΩPΔC€—d)jΜ.nΛ܊ν«F€)¦ΨΞfφš½„9Χοv Νˆj*y†I;$vx ’BͺžΟJ}kF–ƒ†ΐsIχ¦™ΥΝ­ 2ω-U3Ή#4“Θ.¦S“ƒ5ΉM`ΫTηgͺ™Ž‡¦Lg €!Γυ@ΰΌΔ±$ο¨Δ”ΒP“mOΆ˜†Ϋ}c?O^°₯ύ›wμ3»α π|6ίργi_€’δά9€έοrΎmη«H_\Γμϋ™Κ–­^σ\lι1A¬2qZjšB«aQ°Vm33ͺ‰DF e΅LΦ&Π«›ΪSκe™?μ昷5™“V|ϋ}©…Όj Ι’sŸ[KM †V+VΝX$y&xŊπΎ"Βqδ0ΨΏ*ΜHH–&Π„Οj!mιiΟ\©6…4a,4•‘ΐΓ(zYlυΨΡBϊ~{ωΣοίύ†·WΠ²Ί+ζ;ϋ͝Ώ―v±σΚ˜φ n݈°BŒϋB³ΡY5'N­˜•…|λC4 =ΣV! Ž9ΟjΏaυ)]Ώ‹ΓL΅Z2u’”Β)±­b‡tχ¨,oΡ²jΰ`Π1]ψĎφ«³ς˜N .ZƒΨ¬°o›ŸCXl¦l·ΫΕNl”ά«œ»bψD8‡³ψd‰β%2©μO|βΞ…}βvΣιENΉ‚Πμ•p q{ΐ]¬μς€CVι’31ε\,³²~ψ–λΥ%>,R`&#7λmAΑ“%™“Ό© ˆF²ΤΎΧ΄»],"© ˜ήΚYDφ%Ζ„ΊΨΎα0ΚΕvV#° $±L΅¬7qIξNœvD₯Ρ,ΒB H˜b&Ί"鞹΄›²Vx»ΐo&Ο#M菨ϊ†•‰‚„ ρžκ§ψOŒ΅X;Œ ŒΟΜ-/ρ91!β­&@œŸJ²‹yžυj~ΗΛνκ©W\yδhQ'πΌ_H¨Ψ.ΰΠδ̟Ÿ€L\sΕ’γ<ΓYL>ρ%?ώμbΉ\Ω:\[·œ{Xš8Ε%‹A( Ψ$ aRΰb2Ζƒi##σ°b„ϊ΅Y±4ωb‘d d \ˆgŽWMИϊ°Ρ>JμΓͺς[6xΚ¨Έ\ vq!ΰΒbJbͺΡNˆ•#`Ζρ‰zŽ9δσH#RhΗψ«LΖ J/°ŠΈήlΎτω―xώϋ/zφΎ—/νή=Μωϋ 9Ηψ <_]\t βnΩ)‡/hΗέ<οE^@shŽQ¨Z!ζBšUm™¬Œ rΎ²°Θ> .I|XeM~b˜}­ΐƒqFlJΒ!σœjP$“$„’*Σ§(±‹ώΉ΅Ϊ6§Φ:ζDŸ|‘,bΐ‘λαϊ€“ί7έΏ»θΚ6όβί‡6–”Λ―ΉfΤ‘υcs 5 *ϋNΏέτ¬τHΜƒ$Έ‘’«3χ‘4̺̏0Δ°όΥlEΩ“Q_΄"ί‚ϋΣυTpΛ#š‡‘τ$’αΆ‘«Π"Γ$E² χ”«žlΎσY—"+97ήpΨάuΣwίy7‹ΕΉEΆdQόσO#Pθ‹to‘½–Έ ͺf'EMjΑγΞh_+Σ…,Ρ=ΖLˁŽΪd¬’R‘μ4:ΌF%¦ufr `Zωo₯™ΰΕ¦y€iΆ=–€ Œυ¨”˜a™"Ž±Ν›1]N„Ά<9yΠ?ΉV©ϊwψ‘₯Σ/»ζή?Ž™η<Ϋ/¦ψǎ€(QτZ}4€δ;‘uΌ끽ε°ρSŠάAYG†:C°XipMΖ€h^) †t€dΘ‰ΟρBQ…~ €DΡκ†RΖ­Γўσ[žυ“ζŽτ!±.]ͺRν\K’‚b€Ψ—υ©ήQ?e?fΛ ΩG…5*¬Ν(.δ °Ž0Φ΄ίΑΆΘ8…c„<ηνŒ†x ‘±«Ρžfy4μΰΠ‚ GcLΰ αΐ¬ΡςΨLΦΙΔ!οΡ",†X‚…-”ΰN!!R[L½6γΏI·β¬b"ΊζdEΔ4‹™N"ž Ηp+;ΓŽΟ%Ι‘^?^υ€uTAξΈ:λ|Ζβs=ΖFΰήΣG.ΉxΊΆ0_Λo»cΕ―ΙYΡJ~4\α:Ά™"ΐΖτ6b>3§οfΎΫLΜ3/«N…Vί&―ΠΝxΨfežHFώƊ’Ρ Θ !<‘ρvβ8Hκ\ˆ€Υ©'™^σ³ϋ‡Ÿlζ·ΤΌ?όƒ ½οPηKΖ+―ά›3uΫ׌@ Ώf@ώΉ_χnξp_wνRUΒ–),©`Δ/Ζή — i= Rφ“Ε— ΅ΨcγP2 d%„tH¬'Ν€4€dY±†δ&φ„”#€:V!K+B~Z=šu‹r‚žΗλ°x l5>Ήi3ύ^>ΌφΞtγϋ_vψ†ΉYβS,i ZlΕ|έ|Y}ΰ€d'Ωα§σΈηΟ™}£2±νΫγcΠΥq Y ’Υbh>cY§κC^€Λ’MΚLQN2a’=̌ƒ–(Ζδδj%+M4ΘEŠhAmΩά…eiσ8η…ξΊ½Τα!„£Ο1ηIΔϋιΈό­ΜΨ/™ηΛΖ:b!›ΠbΉŒ€Β€R'mίλ£λ•ap€΅Οnίωέχ|ǏνΩσš%ώnώΫ€ελ§xΰQύ²fDvtθΊλυϋ·MMΟ^NSγlnrΚ]€a‘}˜m4ΝΜLΓΤeSαPTIyϋ,Δ$+ςδCȐH©mHen…Χ#Ψe:[Ά`M c^/έ΄fδ)Θΰ< Λ‹΅€₯7’t`˜GJƒ;Ωϋ5@ΛLοόΠ²²ΨŠxH#°{χ’³’Όυw¨=w{£ŸeΓ.kBΟμΌd se`Ύx=$Ϊ e ιωΤ‚τZdQl¨hΫΜF”Ί”gΜ<ηEk ΙΣΪtΞdμ rΙ:ˆom²΅S%—2Œ’I˜j™Γ33I·π—Όμ sρ– {wͺQ½gΠϊτ=zΝ+Fύ,Ά―MΕv#°hSθMx  ;ΙjU!”ΟD β°GΣΜͺΚW%L‘’xxLΐκ§²©“s•Η’†pΛΦ΅@]Ϋx ϊ»‘ΠsX—¨X¨σSaž:xυm:Eξ σΛΧ £{ά,Ωˎ½«Ώ ž‹‰ύ,ΎΣ uWηškhΆF”‚bg?ayω―ΧsΌ_ *“½JeΖKq𠁻› –œΊp½§™Žίc‹4Μ6ΕH|—9αDc8a@ŒΓbPσ΅‡)Ν]$Χ°Ψcs+­[K’$ŠVƒΟl°ίp£ΙVέβadΪνΆιZyΠ‡}V؈ƒSγr±πHΫO5§ΜEΝi³­2a¦€™¦ππ‘;cΏVϊwΏwγν?ΉΔί-»Ώ υ{,όέKΛΛή»Ύ:.Υjϋ¦ηηΝόΤl6=3CaΣ,l™5Ϋη›f φ^SΝΐΜPT8I[n@μ˜}bˆBkχ)@-_}λƒΎ9έ£έ±‚p'I6°Ξj’σS…‚C A5nΙ>Σ—6†©Ϋ~ŸΖoΩμ-ζΨΗB =>γιΣ{™ΐΤ$heη±»Ώhξ:x=SiPLƒ4ϊΣ‘™ηpKUsΧ΄[ΣCV”¦Δ‘iƒ™ΞΠF§tηTQυӚ7—^Ί•9w,“τΝ%kGΖΌΑ[=τSb;)‘U ‰s΅™Ώώ›ΫΝG?q$[ώΘJ~τžΞ'»ξ]p°Lߏ‘|Δ?bΑ@Ÿε;ϋ%%ζrο"Όœέ>™‘*B,³šMNΓƒΐJΣΡj[‘° n° Ox|Ÿ•Ί–Εσϊ8°Ω_)iΛΆΡUHπΊ…Θ7`Ϊ`‘ΥδBό Σχπͺγ`eΗτΌΡ+ΎυΘ―kž— ζω,ΏΣ yχM=p*YΜtΥπkωgW?@ΕΥoU§w|χhυ΄XΉ–ΒδΛΏbŸu(~AΕΊΓΓ^ Dσ̐*ρPžc½¨ωCό‹―zaψ€ωχ0©πP³r¨Jœe%§ŽΛ€Z/ΐ9Ότ*l΄G…A但€ρΐz€s©FP8ΑԈ]„t΄ΗΤeA]»t¦&zϊςή}Π]·₯ƒ‘σΫΏώΕ£ίστν·/Ρ|f©HߟαΏk—gΛ•™―bΊqͺV * Σ3?Q7 “,”*šeΕ,kFďϋ HΌZσͺ²²c$ξAp`FVΉΜ³SΑ…@ΊR» ϋ¨Φ„TbV€LγI@H‹—½tnbή γξKž|ίnΞΛ’ŸŸ#W|ͺΗθxni'ΒLˆ7Ή !ΐˆΦΝΡCΘDεN "ΒΓ…ƒxμSθΧOΠ¦έ?νΊΞb”]―Ή°nξΈ«Β hϋŒ„Cϊώl³·†&OΫdΑΔΒH92ŽΙ]σwΌΧ\Όύ7fN’¬½WϋοΩSh74χ·ϊώFε?¦8Λ_χ€Χ…€…9JœψΥ7]wΜΕUH‰(₯-+.š΄ Z•Μ7ΐD(‹φXΰPθš” †!VZ:qζlΐšγψHDFΈ C94ρ \H‹c§O*2ΛΆ”^o”Όώ[οϋ΅λaž%KEZZΓZlg=_–uΘ­Γqnαί“κψΟ•ΒΚ‘Πu’ΧλΜΐ Ϋ’`TΚ[™Α[ΝΕΔΆάF1ΔwΜƒκJ˜ΐθ©ΈKVvςκε6už¨’œMΜG‰‚/₯ΡG0C@ŒO‘:ΚΏ”Λ€ψ<λς˜Δ aǚ)šapbDddRήΏG»πΑj 4…cT•Kr¬½bN­cηN°§λxyΤ»ύΌυ5hmνYh?HρΟy5ZΨl.pξxΗ-럜τKί5K o{#€Gs#™‡ 2v9ZΡ!«.-ΈTθΣκ[¦#Ι{Π2«|IΖϋτΈ)£Aς–φ*ΠVζψEk6WBωDΛΡ%iJ~΄–άΪό35Qo$κKμΎηΥ€ζ1;g τh u‰e”™ηxHV 7NΏZrίΦΎsΗ₯Σ¦>τρ‹DζD€΄&β„Μτ­7݊KΡΘ„Ψ¦ †%/•$DHΈ‰wΏΤδwIF)>ΔZx%υ²£‡ο‘!bοΠmwΌύ£<ˆΌ€hΐφ‚«Έ€|£‘ΉŸΗΗ|™1 3Oœ\7έ™U³fΊN—yW`ΑxΝxρp΄ΑDΣ™šžΈ€―}6ΕΠ™ κW’Lbu(χŽ!Ξέ Ύ€@ŒsΒM Cήά7€π”B‘§υRθΜΧώκ©'—ώׁ<ίΟ·U<τ`Fπ,Y‡+Ηηy[ ρδ?V›ΏΘJΛ1ra<ˆYρZŠεόBŒ˜Ζ21€vH‘Φλ0iμ<₯ q<(ɚέ^…Ÿϊ„©NLˆιΌ…~Y€HFώ²s‘‚Π¬Ξ…€…ζˆ›ΊΚΉ€κ'§¦)€m­˜Ξ!½G{½kŽm™C‡N™»ξ½ΟΌλš%-?`κί«PΈΠœšΨυ˟ωŠE,€&J™Χ,Ϊε–q.βδώ'?‘jΆ5Λ9~&'¦Z+=³z²gFθ“GH/:-tΝ€j«sV ‹₯= Ψt.‚+ΔF·'K:YΜ‘ ΝΩȊulκ:,ήlcβZΗpβ!ΐ;D\Ί}a›;S-/Ώj‡σqzgO[1ηhφof΅γΡϊyγg9Υ)]8‰O`μ£τΘθ5Μd֐•ΙΖ”T[’ +υF,Ωk)›j¨γΑqŠ0Ν]γ3Cqν«CzN0{aƒ9Z…±"$ΈρfΌf…Ή6ΞΚεI§R›ωί<8Ψ΅λ€˜@MιΕv?#P0Πχ3(ίθ‘Mθ|8Μfaεj%DΚ‚ΞŠ.₯P$ΊˆΝ: VXΐ¦PR¨1τx θh^‘γ(θ›˜ΗΕΊ (§ΜΟA:.ŽIπ|vΞΤ Ž;Ό4―¦˜8άΦdΙ-€έαsι`ΕVŒΐ9@΄'bSlτmτ»ςOŸϊSΥζ―P°ΰΛ›xΗzP.šˆ‰c›YΕC7ͺΙXΖ!ΞCΌœε fλ)Q\Θ%‚Yφv΄χͺ,±#ΞC΁œτ9νΉm†°ΞΩ(Ν{ˆŽe}‡λB@γSLΨ§l½EJp£Υ.)₯‘Zο›Nήeρʟ"©‡Oq!){ΧΓQuΨΛΡΎν'?πΏΪύ—rβΓHUlηΫ(σYc>’¬'τ:qTkω(’₯;€™bγΰŸ7aυρ4τ!@€,†ΊRžhCΙj FΔu#Š'Τ.#{0ΠroI]Σ„ΨhԐuoι§dR|l³΅†iΞΥMuΦ,jpPp[1ηnOωΝ»μϊ7-ΰˆKα_ƒθεϊΟΌ¨lžq©'Α}C>η$ηLΤλ™/ές% τω΄οNΚΊ/Y3·ΓΟl΄ΒLφdb§yΖΥOβTIΝ΅Ÿϋx€‡lCΐœz+΁n4v›οA—Š|δΖÍσυ;ω\ΞςςΗuΫ7‚ώsίbn±“'ύγηCLm›Y5oζ fTτ—0#CFS`7ΐͺΞZ™œΠEPΎΟb 0k:V{]V~°(i§«ΖͺF$.α…λ HI«@k ±as…ηxjΥM’2«9ew'o}ςαί8F1‹·d–Š ΏΏ/¬xμ!€e£—6Ωθηnωu'_θyΞΑΙιiϊN$ΐЌά1`₯£Σ‚PξwbπD–)ziΦ&a›±–#užŠεδF°€1χsd’ζe4ΛE”²˜΄ξm³ͺΩg3§£ίU/ΞmwZ0Škζθ‰γ4Φ8 ³HBφ K°503Άϋ λ^›ΎΧyΤΐξlΫ΄ Ο¦έΠs2ό‚wF½μΥόω2'W±w# …1α\š»ϋ‘{°1ΑœΚBGΝ~ͺάΙ½·Φ°ψꏋֹΏΎΪ£6"5/k]€ΒB m†€ x.…!€bdΪh>Θ4d_ηVΩ~#dŠ_€χd­šξ|Β6/9ΡώΐsηΚVΠΎ`ŸΟ»Hy, ρΊύ²ΛΆOϋΑΜlŠΌ‚ΉΣμ³ 8[άΐnY9˜ Θ9z ΠJ³ΐγζ;2uBΦΒ8ƒ±jΤΓ°Ξ3fΫΞmfΛ<ΕΆS%399Ε| }hN%c’.T¬ϋg£uλ§ε`V³ζoίzλێοή½DS`‹o]€ώf£σ5Ο]ΉλJ  7ؚQΥ3=ΰCd΅Fph„/°js΅Y3MΒ"S!+-§&exκ,[Μ βtΠ$‘ήNΔͺΑΕ>'ΐ' ;³;,―‰°Γ£!6v€"K0%„ώT2馉η3«ώοΛqcWaWχ5ίRρλΉg‰Υ₯%ίyρeΠž~6υ»'g·ˆXΖ`€AδKνRΔ0{]YΦ©εw4ςR Ψg’S"Ι“.€\H»ΣYE1} )θ²p™cI‹Zθθ¬Pƒ5%rI―ΛαƒΓS0«ˆ£‚œn&¦θHˆέ˜΄ΠCR™œJ€t4Χ}yM³enΪ\2=g.Ζυ²ζ 6Mσt0ηΐqϊσΊΧ…‹»tε‘Ϋ…Ό@IDATα#Ϋω7Λ„€Ί΄9ξηH2ˆ]ΞΒ2ΆuυΠLΰϋ\V—Kβ"‡Yρk‘¦Ά€³„Πτχ!±D*…ŝˆ’OΪhšξŒXΈεhρKˆXEΪg|ύm6£„Δ¨^‘KgoΔ,ξ½Ψ^ΔΗωύO΄΄ΧΖUǍhΙM·’4MθF³0(#ΗΎ6OΧΘLjΝ–ΆΛxL p-2–“·ύτ‘#'ΜΝWΝΝ·!:eυ888Θ 5fΣωΣ`^.1mzΩ—#_όόί4`‹ύϋ‹FA\€ρνΫَ@-υΆΧ )–Š(<Ά8j0)—`™ε-ZήAΊxšάu ιΨ+SΔTƒω p€.:‘P0*S&ΕσJ9:Όž)žWόόΙ©@ΰ[)r%3™Ο%SΞLΠ|«sοp™ΩMO[1λX6nζϋžΥvžuΙ«MgύgλεpT jSˆ\Y0*†™ΐT«G€Ξ£H2θšΥ–›y₯Z₯xΆD JΩ1ϋθ—–ΑNΏΜκtΤ L™ϊ€EbM^#€σmŸzΎ›μJ{ X©’ωΓozˆ΄c΅O:“E§\„λ“n ˜*™™zΓΜ—Φ#ΊιWΝφ‰i—–ΝΩμμάeώ₯?ϊ½b‘w-,τΓ@φΰ»Ζ/ϊζzS|Τƒ²pbΑ&iŽ|Ÿ 09gL7ΛxΩΕ Q’l‡nn0,Ύ4S’ !ΫH‘@|'XM©;f™¬…2 ‚cΔΤΈ­{ΌχΕWΥoάGΑιωS[1ηpv- !£FZ½{Η +šΉήsέW«n ˜-€ζ>»Ί>ƒ\€XΧεθ€Η:^Aqa ΐ?0fή“;G§u―ΉσΓζψΡ#&ήΈ‹σ’c£z”q7CBšΧρΪ,πXτ_χ‘}†ΚΆkΉYlίl΄)Ά³¬ΆAΫΖ(!-651σιbΐ1€Α=”‰»ο΄4=˜g― £¦†+„₯q"Ί΄ρΕ.J<ψ]‰R(t­~šFijΞ‘©΄Ipηήω φΑΪ«˜ΠΟς»+vπ# §₯Τ9vΏώ†υ?i8ξ%'WW9»ΰ˜€ΞΆ°#όΝ)θo>>_υμ™&*€βν* ͺrΑή²£i¦ηΖ:θ^0΄Œσp#!]™HΔύ€4ap<ώ νΈ‚x€\΄'1μγΫͺU-ΘZ©΅τvΡT ²<²9‡χ jοtξύρ‘΄Οzψ«>`ρK1σˆ­ε>ΰβ[?E―γη ΕψΔό–-,DήΠ*€a6η?”σ$Ao'έ³|œi…<Ξ¨€²=˜Bdll;{4 Θ=΄XιN†θ›΅Έ aλ°ΧΣθ˜'›u3I§A¬Ή@ ›"_₯ϋ €ΟF―mŽŸ>…Ύ΅k\˜i—|—šυ,7ο― ―{=_ŸρΊ«-sςή£ΧΌκϋ.^RαδR1>ΜρsΆ‡?Έw<Η‘œ8mw˜ a"ρ>=€oG7βkΒΒγΗ;¦΅;ΜΑΨ|Eθ‘εΞα(ό,ϋHW™ΔπD ›PjΎmφΔ'λ“•R)™™™AϋΛοyΡε_,Ψη³ύ֊ύΟvX^"²ΐ•ξΛδhYθ π+ λΈψ."έ E!lsb‰‡jζ֘BB˜ρΣvΞUgNiœ=:ϊNE#Μ4Ώ«ρJHa.π Ύ`B°HΓpaGιΖRεΩ―3f7๐n<Πο―Έ`<Π‘bΏ½ϋχZΐJreΑAΧiͺSžAΨOεwίΊeΈ¦ιrf’–θBπΙΦ§c¨”΅F;§‡aT6ε ;CΗd+WBS‰+<^₯Ϋ ΊOΐ΄€5λIά7x½‡Τ[+λυΛΓʟθ#ο[[18] χΡΑπyίvl‘λώE6Lώhaϋ|ώ)'Œ‘Š593Q‹i–7t„cBΏ 0F{ͺφšhΙ0€aΑBQΕ]γNr޲0b )τR«ZNΛDηΘ40€VΝ@Ÿ΄=Łυ2xJε³g >0/Θ¨κudψKs\ο™ΫWΧ̝ݖΩΰs­ͺGXή$ύQΪοΗ•Q\ϊ γ.³XΜ‡R<}£·]\θ–gΦ£8ν+fΤ²=δ&ίπυvdΦ]τm]@tϋη.ρ¦L^‰…θALαήΣςέ£ u"ΝLXG#T¨2–U‘Θ!&‘€*uΛΜΒ―ςJ^]lΕ<<#0φ€&₯η–wΊ*$ƒ'ύ²œH²!]³΄Ξ’IΆ$ΟgύΙ­CΞrλŒV β‘cͺώ”Ω9Ή©U·0gBlσœΈ`_Ηώ’€xXΪ)2Χ«ΑΰUWS‘λ{9ž+™-έύπόΑ³£Š**Ά6Ξ©»Y‘uh‹΄•νvκχυίΛRUεΏ:<—Ι<Ψ¨γα…S#pUHΘΐ©‚X @'’ΔΆ«Ej΅Φz†sB)bΩc:ι”ύΆ?ϊˆsκ•GT<θΥ±μ[+φzΨF@~ΈdFͺ1¬τGpη‘…ζ웏ž<™f΄ €9΄*Ό€ k6˜gXcš„Σ–›N…ς2•žMžΐ΄Š\2! °Z2ηXαy’mΰδ‘£σsaiƒ6Uγ}δX;ΡP%§–€KŠiuΊ¦ή(›Z½Ιqθh˜°£Ηn่œH6ΜρΪΗ«šξFV4 Ο²$y)oψ;»°ƒ\ζN±#pγ½kΓ««ωΠυK Δ€ΎW₯·΅γΦΣ’’vάϋx‰μCΥΪ(ͺ U™αŽ3±EqαšGΖ’Δ"Ln#vDηΑ˜n;υIo0ˆ>|ΩeSΧ[ηBϋ|ώΔγδρ€FftQΡΰδ}u:D« Z2‹1ˆΖωkό H @+ƒ6,2έb›HΌ δmSυͺYkΉH˜˜/Kxλ[{;Ξζ@&Q0…jBœ§˜vΜ€ωήςş½«nœ}PϊŽ™&a%₯ŸψΌo›¬g{@؊ωψΖ†©Α$—%Κ! ±TςAΚ1’ "rΔ2s‰WGNΙ3¬F”$¦HΠ“=¬XμxŽP–^‰ύ΄ξTA­,ξτΦZq†~ωhyΈ¬₯iΑ@3Εφhi­Ζ,ύlη-kΎαδόΤάοΆz¦ϊ$8kΊ7³H€QJsθRΠά„Φ΅hPk5—B‹΄ΠV±˜‚ήUb‘εe€†ΥαV­6a”¦Χή°ˆu.5δ₯rN1"n Ψ‘εœ‡jγΝ‘8id#œIXη%Τl¨ΡΚέ§y†‹ΟeΠΠ\sπ ~ηΞίΜ-½ώϋN³‚ε4/}ηΥvθΔΠyΚ–nzsιΐΛ7βȁŠ2δπΗf,ΐm³ž‰tFyιΐDμ3ϋ–ΠαG°ΦΰhξCdΐ£>R€CVSYίu&›%ΦΛoΧίΏ{χξσjŠσΈ1ωE팺Η2@²ΪΡΤhψ!ώψrɐ=΅UFnΊψλΟGa-=U4HΞΑ“΅ΟI?7wχ™Φπ`\Ruœζ₯ddβŽ%*(D€”*π˜Έρ—ίςΉŸόΤ]K>Ίg–b;‹(τ¬3MTΚύpfΓτ'·Oš%εZΫφ¨κ$«λ`f€ θεZΜ4ΟΓz’!δ,κ€V‘€™ξ΄μ£V›œό/v:qΖ«O Χs֘ο ς¨]ΙΌ² -r₯ψΙ‹έŠxxG-Ό*6ZW~opΰK듍‰w·}Ϊ&™ο-”›ζ,.$™R΅ ˜ .j†h»Θ58ιH\$ η ΑΟΕArςο\<tbS¦0ς€4Ξ6-ΨδwθRΪ?g_‹ x²Šχ•§jŸΒC9ƒ(mίοτœ^·ƒ'΄;Ρ9uβ;ω>Έ· Χ8ΏŠν|ξΊ’4κ*0!…_b ˆ >€bHmγƒ*nœ6τΜLUΡΔk†p–΄ƒξΩΗ ž<Ήafffλ|"C΄Σ}1Χ‘ŠUΣΉ ή(έπg<ρQβ™pf/Άb–Xb–[ΚΛΫ―žq6VfS2osσ;a2‡y:Ο“9Ιρ6?iηD(d~‚Δ(3Ώεθ‘ΗΥΡ’ΙυQ”ΒB3qŽ0Χl‘!η Gup½2™:ξ‘n)—¦˜§ƒώΰΨ+nϊάϊ¨ΐσςςRžΔw\θ8hgš¨ΈY0Ίe„ΫΎš[ΝμrΟ^sSkOηη3[jΐ~ΰGΫΐ‘‘0BΧlWΜΗΆ»aνΑ\λDH±ήR˜ϋoδ<ΟJRL5”5$wV@γςqνe'ήtz,ίPYU±#p~“w’žiϊjηO;Ή#ͺVͺ·u‘q¨±cΘΒ0‚)FΗ\Δ’B@{»+»–v£¨Ηυ@ŽˆšΒΎͺΔ‘4Ε#Z6zG΄γ,c[wΡ%—ΰ^γR(Θλ`£8rΘ3UZW–£vε*?_«™βόΪoχ•)½Ο5‡ϊ]hT‘0zΩΦν nc’ωBFσƒWάν ‹ν<Α΅}‘W0λ ‡ 4τ€eh4K-ZZLΉ,š¦˜VΙ\πOšOπΆ†ΐςκΦ‰Έt,l©™*zωΈVž•+ωδ @#)ΏciΙΙ >₯‹­‡qζσ`ΌXyjf!Ε7ώ+ηπΡσw»έΜΟΦΝ ΦN‰}#¨AŠˆ9Yu2ΟΩ9̝ ‘ζΠ’~@Ζ’ΪΑχjLr%b|Β²ΟσHΣ9^ψUš`™»yύ+όΟ7ΰω‘}±’ہ3MT ‡·W½:³jž―;³α Lΰ΅7yΰ’t.‘± ·£‡ήQα]5μ_Η% αVΔqCΞ] ;?Κ€[kΓ_χΉLΉƒ,Ιkμ[ΝΓΏίό˜ΕwφΎ―b—GgΟ±@tγΕ—ύΕ ώp£ZΟΓΤ%yΜ@…B:†œ~ΎbŸ[ y‡bΨΰ8ΐ9¨”ΑΐZpͺ!™fώVέ.ηΖtsq3Δ3­υυœΠκœK£βE©ϋύ₯€ιΞFΟ΄7HyΒ„•*.P#άπžžp.»μIζΉΟϊŽοΨήbqϊθ„ΞύΎλήΝ¬5eΥSΓ4―!i7_σfrkΓ4¦(€’5%vlφXΩΐD@Ή=έdζπιΎ9Œ΅έ‘Σ=³J!β|:YφΝ­w¬šC'z,¬πρχœ|jΛ„Oߟ•Ω¦Ω·ωa φω~Ώ•βΑs1»v1©±mτ[;°Κΐ9&ΚnΌε¨9}ͺkζqφ’ΣΜ±“ΨΟ‘u+•g`•'οΜoy*ιΝ~ΒI3]š„}’‡¦―ΰ‰OSͺΈk _:i:Q© x(ζΩ ?Η«Ο½α†Ÿ-ΐσ9ψ ϊ,₯KPkš^Φ Œ]7τ;$«D1!£ψ½UYΐ+#Έ ΨO>΄bΘ\Υ]q!9’…cFš_aŸΕh'²Όσ"&Έΰe·αφΝD\”>κ~s‹^YlΕœ·#`Atν8±vΰζWΞ4§ώΟꠝ"π°)Œ:,{‚9ο8©s{15XIažXiŠΕΠD㩁ΖOVz4š>·υΥ6Ίiלξχhpr,ύ@+Ÿ2Ϋx…μOή€3αΘƒ₯&+€ηπˆ”–+‰MㇲyΒ‘!I=7Β7š~0Wέ—ηS—8ΞϊfκΎ8ΟΞƒ[dF\βs¬m˜‹{m:€Μψe·bcΗό˜–œZτέβ‘hθ>,u‰οΞVrΤ°ΐΉK§Mγ baΘΒͺΣj£ΜΕ;Άšι² ‘›V§λ~70ο!nΧ8 9RΑ>Ÿ1πxŽη?ΑƒLλuξΙδίƒώ~ Γ9šA,Pp-/ΗΕ‘ β!u‘mPΘΤ ω@A•5YqΐuˆΨΟή›ΐIv–η½οΩj_{Ÿ™žFλŒ„@ ‹„ΆA‚ΑΎ-›Δΰ$$ΗΑKΌά25‰bm ΨΖφ·{ƒ5Ά‰ρ `³¨1;’@I#€Y{οΪχ:Kώο©–±% ΪΣί™©ξκZNU½§Ξwžσ|Οϋ‰„C™!Γ>j‘ΎΕΛa†H} τfοK0.’g§χ3²{h.lΟšfˆj“iοπ&MXQ2!mn﬩,ˆ„Κ6Α:œ΅Ϋ=bγλυŽ™pΚβ5ΫβdIŽumϋΔrG³Ωίγ‘Φ‘…sυ-ήφΫεεm/s‘‡ΛPΌ«Ž]αYZ+‹Δ('3s38Υ9¬Σ;HH³oxρN‘–v-¬λΖδ]ΐ™δ1ΜΥ9iš·‹A>Αf?γ6[[_Œ†νŸψκ?ω4Χ1λm‚Ržo—Πη[Η%ΎΫ,Υίηs΄υ˜σK0…’]ώ ‘‡0[j9ƒK­τi&΄Cι1mρ…OκΌ#g‘Ϊφ’ ¨ΉΈ4m/€š·pΈΝ]’d;Ζ£Ϋ·XξsζhΨ£e£Υ‘!oB¬ ™σ–!γͺ:u¬ΖΣΕmCΓ|†hπ[8Ύh’wΰ=¬Χθ_‰‚+άοl1ƒώύςe䷘ζAσέ{Ž+°΄t`PτφφZκ„Γ ΪLKγΠΕ=›Uf±ΓV<‡¨“ρΛΞέV̞)„Ž,lκTa1s‡/>=ˆ5‘λM»{/ΊΜœL¬Τjύw}vWα}B² Ρ;?ϋΤθσ¬iίe.v#νQ%‡u2~² Ϋψ’Υ2K½5|€4Γ|,Ljέ78«T ² V6Γ@ΣπB#ΐ€(,}š » i4~’ rΘ6†ζ •z€ΝRLSήuξmκΩ£a ΟΓόzαW@§Α#ΏnΟ/4Ύϊθτή]{ήωΘΩGFέNΟλ”έ 1_.η$•BΆΑώ1T{&•:1σ¨ΠͺξΑRΓQKΰ *7Τ’8|πv NPSn ¦’Θ:NRΧλ]9sφ,λͺ#Ο'…zΰΡ©N`Cmα’‘‘1tνϋο{@Š₯ΙΧψ–ͺφωςΥ:ΔXα½`ο}±Fo'Υζ1s€&‰Œ—ΦΒQ:4v˜™θl1΅—Q }1CM€Lk/7kκώE3i‹–‘\rρ>f* œΌ5€ώΩΚε™ύH|οkXΉΝ4Ύ@6ώ6ΖfΎίΧ΄Aez­u,£ ]ίQτqΦā(rιΫ`Xrωm‘l¬ œΞ½EvA‡-°½ΔΟwpΕυΧ'ϊΝ™™ςϋΰn\±b§gλdτyΥT‘/Gθƒ…Π_ή™RZ5δ+ ]ΖΧZρψ ­Ž^ιιns°“Q/F‹;z ŸGά5FΪΕ?—ζΐΣ’jΕ”FμŸBγ”Ϋƒ;ΑDJΞ~u¦d}œ^θΘ=ηυ6ΝƒL^ˆXXbŸθ—X?v每ΞΝNΝύΐςΦŽbΎπύΟΐ*pV‹9΅!‘Κx±?Έ„_ΐ΄°οΨΨ—ΕI]Β^Gƒ 5’Ο₯ύμy0ΡC\<Υ:L6M½Έ}TΝΦ[]°9Ν6¦„ΝY*Μc»…Όͺ©{xN»Ύ ¨Ψ΅z+,¦ή}ΤΎξ]?τέw,ήz«sΔh|ΛΏMzΊ£o‚ΙƒύLΑkΨ;'?tϋ1œ’υfr©)ƒCΐuν“DΨG]g{hPυSY#β½Ν}Χ]u•Όψς½¬Υ—n§,­Vί9[kψΙτŸΖxaόšρuσΓTΰΉ©€‚†θε󿚻υiΞθi‡# eVDA"ΰ[XV•0«ίy#²αΒ:k zef:fmqͺ‘Νι,QΟψϊΆ‰qξI­Υ’)‡.CIxή\«Š“LΑN²‘‘έͺΥδL«&CόpbΆο¦½Μ±κΫ7ξ»OpfωV€ο _+:EΉΝ­ΡΌ2s| t”ε?ύ"ͺ‘g`τ„‹“*T=œ<1«‘,°Ρ H†:ONgΒLίΦ–”ηζ€ΌkΣ0‡Τ6‚VnΠC&·Υλίρξ·¬T*vϊ[ψ±ΝKo‹ TψW’­ƒnΨm1{¦³Ρ‘›dθc¨$%$I! ΩΏJ4`θ@n ³!₯άπΕWΟ!Λ9³Ζ§ˆ›ϊγς]§–d)n ηŐ€C3›φ~Ÿ €>Ÿβ.0 /!Erϋ—₯ƒ΄ϊ½· gDg  Χ¬ N*ί°9/d8‡ ‘ufͺm’²Π}=Ξ =\6tΊ9 ΞύdW›Μ<ζ…UB€λΠ‘CΑϋ—ΎΧ‹ONζ³/­wk€hΧUΏRfΉŒaΥΪφˆ¬eΒpΜ΄%ϋPΪΑ² FZ“Έ¦\@΅ξs6ΑΚ@φ eι3ε9ЎΣ'Fœ)~Χ!Ξ =¬Λ SI)¦ΥŠiRφΉ.ρί-,νΠA;“€²½ϋ/~󇍽iŸΥx ΐ½°*Ή}ήΝαρ`§ςχ]Ρp05bθσlΟj²m΅λ³ΝφΒ<ηŠY|‘sΐ @βfΐ‘*Q‡οΘT9 ΟlI›¦άD!;ΗΧ6€‹~z—ƒj΅%³’œόp\ΩC‡l©T €ή>_³oΡ'λŸS6skΎυ—Q€Uήα&2Έ:σHM:ωΎb?‡}?j’}ξυ|ΏΏΜ™αύž“‘!P>³ΉyζΞεεΓγΞhnλœ8??›Υθo’Ξn`ΐIIΩdΞ\7B&ΘΪΖ~šΑ4)BE¦ar“ψA™Z©Φ²½ ±+ΨΣy8nxH:ΤΎΞAκηέq»’ήΘJλΑ–LL7Ε»rζ―OGQΣ·ΚnfυŒηoŒί¦ΟίΔζ2}U’CφM•›Ϊϋ[_{ω₯}lΧΔδ  Ν {cϊTΕ‰¨₯Άd'5Κ6jβ§Γ’wU@­ ]κ)­²ΖοͺΊh₯΅Α γiA0Lέηg¦b‹§l’‹D$` Ώ/>©sΰtΝΔΫrω1γ΅lίM¦?Ή;ίΒ­ο=|xIΗǘΡα·Yžη bΛWxMΖΫKΓ\Ξyxy3(Ωi'«–†Έkτψt‘φτH ™ιλ@PΨH5\€?ι’VRƒ‰q‚UπΜ-€‹KgΤ—S°Ρ§«"3Ε’3UπΒω½©œϋx<Ÿ+„ωυ\V@ηNDξωϜαΧΝσ/ρτTxωϊš>U€’έ°Wk„¬ϊ>gΟS^‰AίΕM]Ψeθ9+%y|ESψq0-Νh-©~žc³Κ6Π_*ƒΜ !N}€ž€h»ΡZΏ*£―p@οφeύΡͺ4—[Q±€΄ΓvΟΎώθ‘!―ΟΪ 3r›Λ<δ\«bΕRικя}μζΙ©όΗ&wοΎ‘ί©BΟς—¦/@P(€~Π#,ιB˜dυωνπΌ\Γ³Oiη:'‘΄¬χzM©uPƒT¦πh€;μλά’ €ε”²u7²ψΦκ:,%–’DŠO§€ƒ6ΆΦξΫwέswdGξOόσΚ£Ώ-ςϋJ{λμ^ΐe½ ίΪa ― ^αJM <³ΆuYΩΗIQ€νaw#΅{ξΧ;aΦΒΗK΄ZΜ>π. W: kΦ@‹ΗΑ:Γ@Žβ#> pΨ&³ŽX9c‡ώφ‰/ζ1lά±J“‘/ωb"Κ&uZίβ9€;š^5‹©ΐ·uΟα­4ιΌωζjγθΡ›ACNΝο½QZ5΄N›K&¬ ²ŠŽΚ.8cΉu?AΒκ…=!₯³yφA‘‚>Άw 9GΡ}°‡ΊέBλLό7λΝZ[΄Ρiγ0ΥRsΒIP`]^¬‘Ϋ893;χ^4ϋ‘ΚΏ―όΚBε•ξR…Τ,Ο{–Ξ½βGο|τ O‚υ гRHε₯Œ~‰4 ogΎ*λΠFRώŽ8)Rp•K·°2μ¨8:w’O0χΥΚ7Ž_…fΚ΅ λΆwίt“Ώ€εβ’ Oyή·σ6A@pEOΠc ½ΈxΘΪΨ8ΜυΏY¦!πΖ σΑs­ΐ4sφo–oy €~ŠMPωε^σ’ο˜oŽ:ϋό"ίͺβΑ8'‘iΠ λ α‹Ρ6χ₯Š6/|”>Zθ€Nπ>ƒ|έf€ΔCύJU ­NšKΘ,$:i΄\I1…νpΡθn»gΛ,ρœFΞιŸφNυoΫάm*π‚ΐ-8\ΐ"c»dU£Σ§Ώ‡7ϋH~ώΕo‡¬(—JΪύνMB/hτΩ†4φEQΤd‘ζdgΐ ΪKΊœdOύ~ (Xl@T@Ψ@ έ#΅0BGmž-σΈ|„Ψδ%I#μΒjk‚γΝτΏέnl…I'ρs?ψΣώί?xha%Œ.φy>-Y ,χή~ί•ΔpXΦ¬#ΕTQ²4NLg N‘‘΄Ύ @Ρ@Λ)™H^ΐ^,+Y‘ Ύ{ΠgΉςΠy‚<Θ΅Ϊ0Ρ΅‰τǟχg^ΠTΰoW ΗGŽTώφ­ρ_έFΔ“Y^PPy˜Yž€h6γ³Αζ°} έ°Ι>#4ͺ:†dΌœ•ύBΫ¬r ν~R³sσCΐqΓιΛ–‡?€ΊCˆCένKφΉADw[=ŸYΓ€Ηυ±ͺΡs;5M‰¬=ΓΤdŽ)λάΐ–lί:ϋ$oΟάe*πm[e’ι,΄­έ»{–•{3δηΔΝ³εθόKϊ Ϋ‹,¦κmέ'i€­ΰΖ1VT°· {ΈlΤ‰hΓ._€φΥ‚Mζα4ίΠ΄‹zǎ9yε?ΈAΙBS’IjάwJφνέ)W_~™μžΫ%9ώ†ˆd–ˆΖΕ`nοF©dΊd'‡ο§‹1Z’Wšqςy–~ΩΠU>Tςkƒύ“™ ΒoΚv³‰λ ΔE έs‡ι m΄κ’q/TΎ(.ί‘l&)—§‡²ΣUΖyœ+*B.ηyΙ's4£ζ’Ό›qΆΆΆz'λ_֏‡CŒaυžχνl^ΠTΰΫ·†~ŠmwxζwI“μ—C^ΐ‚ωQΦ-HRέθοΰΔ‘š;m~ςΑIΡ°%1 f*N9Λ‘E‡8L3Ηvq΅9J―Πή’Gζ$ΎύΙν4lΆ¦ͺύ^VΈNΊφŠ>,¦b,˜]u»ΰ³§­_ΰϊgΉώφ’wIλ6ΪΈt$μB>oTϚNː΄ΉΑ*·z\Wοη>38.Mzͺ²©.Lu–&Β™™I™š,Ι[³’˜θωω]²K€4S& :/άωΩΨ: »=δΩΔ#₯ Ξ°SχσεΩο}λαθΊι½oΏ#ς>p=SHfy~*Paά­@"ίίΎxΥnOf“Ωhnͺh©ΆύώG—e«9!Ε³ 8nθLD„άΝΖΡΒΓ ­’D7ρ8‹gΏΛάi Ξi™&BΎμξΔF+Œœœ“χ²χ}ξςݐ|Ρη??ΞΌŠ©€©ΐ…P Ÿj+žΣ9ΆχͺΑ΄ π†χψυυΠhΆaΊh„ Ιb—…Ν9χ¨ =kΤ· ‘ζί§IjΘcSLλZ`°Yί&{ΔγUΐXλ€ήcϊΩρkϊΘ!βΡ«f1Έ *pΦΣI°3‰…–υiΌŒέβυZγ'&ΚS³!ΣσύΑ ΊεΨHϊφ•©θœGσXΤνβ΄AhJP²Oι•³gεs$U4’Eΰ_›ύLυ‹ή#ε KΦ;HJJ—gΊ" zT…²ια{^υΦχ<Τ€θηρk·s aβτ£/"ΨXŽ‘Mονwν„-+ΦΊlΥ›ΜHΠΔ=‰œ ­α;KœDυΖc$¦_TΏ!.ύ'jXBΆqΒtjySΆͺhžΨχ©Ι·λ§Z¨ˆ³d΄ξΟγ6/e*πν_ ŸtFΨ(YαqΙ―Ow’φ‹}πŸ΅Ρ€fA’Πψ VΎΨhΎΰ€#ΏΝαW΅ΞJgΈρqΐŽ5ɐƒΊήc2b`Χλ> \¦ι$8T Ρ„ŽœΘ±kQ3,'ŠλRSθΓ1gύ€oΧάi*πm\ΛΊΙ<;€h2ζδ—Wο^ύ=kΞzk·;z+i[W§Σ9wˆ€#²»Dά‚ΑpdΉŽe§pβθ|υ·ΡΠ¨ζP&J;™%7ž]9-Ν-’œρώM§±@ z²‘I…=@zΨΡΐ “ι`6b=#t³™”c΅m»ΥhΛά܎?ύΉ_βώzλ―*•Θ­T8‡6ΛsZΦΎΔΕτ-Sξj£.ž`¬epΜ—r10ξίdοHLIΝσ€mι3λ§}%ΔXΚΦΐ’F _p\:HΔΌGhN[ͺό‚­Ξ2* ϊ9Δ₯’WΜb*`*`*p~PYž ‹‹GβϊΤ3—“‰UΐΒ. 0n|•έπ,όžIΘRΘ¬†gζ’?ΡΫρΟ:ΫdMΜ!ϋΨ“‘ΙΡ$ΔΕρGλ_ΈE½n80υUWM9Ώ»­€_Ώ=e Νb*paWπ¬Ν…]θΜ]3·>;;ϋ]τϋ»^\˜˜½‘`ŒœN¦?UΜ—6vΜμpΚ…‚M¬wθ’uNj0Š6bm—MeeημnΩ=‰L”g±‰$ξ™Xοt&-{vνŽCT–ΟΘΏτωΘ_}\Ίο~in’H;ΩοbgWoΙ6w΅fE€ν™ί•~Ρ5—Ενu7Ο ’/μ­π­tKK‡βBΆέu‘“¦ΙΪ΅<’TzΨ‚†lηKχο‘‹.ή-­NSΞβ°BΠPΚΔ„ΈΔ|ΊΈΈ4h8,+λd>βΞ#œΥ΅ξ=ϊiΗ|Η·ώƒ›w`*`*πmSs x’M΅±1Žσ%φf€uDχΐΜΚ8“ˆ7 Ζ½άΐeΨ«ψ’χι?-+xWκx\†5!v%?AΣN€g˜’^§&‰νΗb"pο h-ή ΰ$ Πp^£:΅ΖoQe’f1Έπ+pNixHe€}©Θηωδz‘f3š|dΉϊ]ιTβ§&'&――·Ίαd! ˜nHΚK³η׍_πμTQΆΨ;WΒεxΥέ«\);ζwΘηΏόeΉσΞ;dycHhXηΐ•l1!I¦ωu6h„δƒŒ#f™»ΥnqFΫχϊΓτh©ρϊ7-X5Lτsω=TMΌ½βκ_*oYƒ+ρίw4°Σ½M‚ω‘ο]@‚³WξxdKYA]Ϋ’©©’”rIi΄±ξf–be½‰Η‘Ν‘),οzΠu\\Ζνn£Υ πΦpchνΈ~’JEl³˜ ˜ ˜ œ ύΔ΅²Hυ Vƒpts­3™›6”eVΫ:T’hšρK$Υ?σOFsτΗ]ƒ†&Žύ Yušn†r’‹s€¦’’€+œ€‘˜―VΊeΘέΪt”ζψα±*·~έr₯Η]ΐv3ΐS³l£ (VY_}ι[Xi·‚kG‘`m½ψŠΙ[7χo GώH{€ηΡ(œΘΡX–.J ZOK°]U#™E#ΛĎlnUε{Ύ&wίsŸœ]Ω ‚WΠ‚Hš»™Ι)€Qίμƒ νXYY·ο>v&ϊά[ŸόςΡ?ΉωΌA™θΕΕ[ΩQΝςμWΰ–ψΈΤJΤ²aΛX±0˜φ-:;™=HΔύ&;ζϋΗrŠ0ΊQ£Ω9YbB.Ν,Ϋ•ΐœ0ΛσγχΛ—ΎzF6γfΠΑ95©Α6η‘mΜε2›Χˆφ, ±ΒφMHŽΏ5™°ΟΆt΅α·Ž`<ΏηOzΆήΊY©€©ΐ6ͺ@,ΉέFŸχ|?j,ίxωό“€-oςΘοv"ΒΊΞΚ+σμ’RV΄ΕίxrΔ‡P΅£‹`ΥCu{Ίθc"J#ρ&Γ*ΧQ6[.n„ͺθcάpŸBqΥA+ΣηΐœQIHΰβΏ!rX›΄Β,¦«:ͺf(ώΜd0μ3₯οZ³““’L§πufκή‘4Π\©$y,Οφύ=57E¬sW.Ιfb7œή'>!+Λ«’ΐ#ΈΫΑ/ μӈζ ­ύ ι…dD³wͺ0Λe]EgnΆδod“7½κΏύ3GnΉε]*ε jwΌΓ?ξύ™«O«ŒuG‚yΖ^to/₯μXΩΆŸ*H—YrdrzNκέρμu±pP³²V―‘TΨ—θήgr l™$Lg φ…ΪdJΘΈfΒvΏ)Ρ+DfΦΕϊgTžΦ5O20Ψή0 τί³ύnΣ)½hμžΧdτn€sΐt­MHIΥ<‘•Ζ[ƒ€in‰)~htŠϊs(V₯nΓ $₯šgnςάLΘ"‘ Κ¨CGf”Ρή©;= #i ;ΑΈpαοy“ζ&Sm\[o5Ρςκ;N^“φμ+†ƒ^ΨλuIͺ«–˜ΧΡ)|’Ί•u λΨ±cV.?p‘x)OB‡$φΔ™Ι²Όό₯7\—•ΥΥY_[%”₯N€«D4ψD© ₯B^ Ψ€9If‡lmn:Υ΅SAΉ8yθ—δτ₯GŽ,†`y3–>ίΗΕX:'₯½s-/Ή η#e%˜Ϊ#Tͺ0!~’ «λUΩ\m o-JΊ4ΕΙžϋŒΪ+h Wpίθž4‡6Ρ>·:‚Tπ WŸοήR#δky‘JžŽίςτ‘1γύlΌ³SSmS3θ=›zaαΣ±.Γ„&¬$H†ΰ“,08…=ZΤ)嬣Ί=ktŠRύ i2λ3@ΰ ’a±H–4ϊ»$ Ά-ΑHŸΫ}W&₯(»‹;dΧΎ™pKθ79V°m^-tlaw(^›ωa*`*pΦ"@K₯­ήΦ/ΊΉ”3’n·-kλgε‘G‘‰μ$ϊη*ϋd vC6Έύϋ”»Ž>$§ΠΡήχΰ#rκΜ¦Tk]ι“jθ3΅a­d'ΝƒΫΘ©€Ω0ΨπΡ€νΌμ €₯Vέ’GOδ”8bŸN§ͺυεw3DGοτf=£ ,lŒ₯s‘;ω$=(v0EI(E3h»‰/Ρ†8ΛR=u2φtΞ§sΜ€θ#ALΗψZ΄e ¬'HLΚέt»Σ•: ΊΈvϊΔXυFV―Ωτ[[½8€J6ϊm5σdSνY Ώa»W€bλΤπ›Όλ Τπwό68x€Šδ˜yNEš8f˜Υ]C₯!R ,pε Λ¦Y™jΡΈ‘‚‘l0θ0%Lϋ ψ›Χ$o§ŽPLI/ΞIζ lξ.-ΐI₯p‰H^εΤf10x\ԍπ<ϊδ—Ώς³Σ³7OLN| ;ŽΞ< “¬–vjΙ~7μΚ}Ηξ“'’•SΚÏ—:w~ν^ωδm·Ι©§βΣή4[΅’τ€Ηsh’ηˆχ]uΪUiT7hJσe*ŸΕ’'εβ„sέU{Β+.Ήδ{ύ#—©„CYρΗ½MsυiT`ia“₯›N}Χ(‘–0U°’dNn€μΙTΉ,Σ{/Ε4”T―‹N]dΐΆ΄pL !;HΚ+‹!šηl:) l 8°L0ƒζ~›“’‘μΪf3΅Ω‹{L€bθ§±©ΜSLΆ}ŒϊΎGi :"!qΪοL[Iϊςτoϋ.Pι…Κ2θ菘Ž9g„  Η\«Φ98†―BŒΛ3(9V4KV+ς΄x>Μs,‰uΟκΎ‘rΘ3tBi79Xγέ΄z’g½™ΘŽψΓίπ͟¦Ϋ±g=χTζytτψι ϊ₯v·LM•ν €U£Ω‘f»+ZِfάS'OΗ@zfjF’4 jΣ_«³&ziέ75Ήpš&Β,·ρyF™™)Ιώέ{ε ‚:δώcΕ Ά&Ξ” ά?…4Χ‘SSr큽a"“΅?ρ…γ?ΙϋZŒoΗ σ¬}fΆoΕ /ώξί*:έε—© ~‚)žxΉyύ«―•Kχε«χ¬Κ±#τόŽτ '†hΪGΙς‰Œ\:ΏSrΔ²ϊ$Ό’yΞ"Ωq‘γxloRΐΥE4ŽΊ΄μd=ŸΩG».ϊ΅2‹©€©€©ΐ7W W―˜}FΟψOό{T©C\UΪΚ€uBPΑξv8 8ΙΘ>R¦˜9ΙΈ―>Π1 Ν}šIΨPλ@κ@2CH7|σ,nηΆΝ.ΞY4{·H>«K7ُŸ―ΤshέΝb*`*ΐ>)pΦύ!Ψ¨±P²Ÿ^]csˆ¬\fr6”“'NγXI―‹‘$N7e4ΜοΫ'»φμ“&Ξ!Φt-θ|B9Tp°‹ i Ή€Ζ₯\V^ώ’ƒrΕΕ“ςπ‰ΊTKeΩΚη%Λ¬w+€8Ν5ωψm_qrΕr΄ΌΌυΊΧώθΝίr‹u†Ω+Α2ϋνΣωΞjςλ Ζ/χ™ΙA4SÞdΚρIQά\9 8f.ν›™ΝkΥ€Ρg̝.Κ\± WξΚ‹€~δlSϊ5ΖmKZm€v‡fCd!Ν†itю›j=rΡ=‡δ§σžΝsLLΆm €~ά¦³ΟΙ9•Ÿρυ΄Šό΄εΡ―νISΊŽ:€Ϊ$Ν„tΓfy ` ¬Α'κ¨16Σ²RZ5C±‘;Rά—4λ’Α*!’e―υ@Πψ2EΌZo4Ψ–A¦/Q λ¬lΐBΏΈ™Ž+g~lη œ“lψωH”|ι+δ7#Ώ­ODΰάԌέφ¬6Sω“φ™a(›€Ρυ{ƒ8”hfz 3OŠΈpμέ[–NΏ$Λk›’LβΈΡΒί9υΥΥxiŠηgA»$ '—™φOΚΦΖ–l¬•κϊ²$[Ω»s‡Š%ϊ!"yp…Ό­-«/ϊ΅ή0³Ρθ}/Ϋθ}KKμάΪa–oΊ $Ώ.ρ¬ ‘—/€SGnNgsΜtεΆΟέΟφhDΨuш‚,3€4Š‚α™‘Γqΐτa›I t`ž‡Ν؍Ίτc;½‘ Ϋυh6Íγ7X~ύMo-σSS Ο}*ͺ}>rKψΏΏθύ—¬ΑχύVΘΰμ4Ίκ‘ζtd Η΅Ηα1Ag 0š†#Xd{μ»ΑˆlΦYΑϊfX†vzΘω©šiŸθ+θ#ξρΉ3₯˜Υφ= ό†hϋt‡χν!Jh\:lοά£ω’š lΏ œ“lΔQή·}ώθ%ωβ™? £ω—uœΨb‡ьFYS>‘`°ovIͺSγίD*%.,₯:n€Ÿ°₯σ₯ΥΙV£+΅:Α*ϊœ‰’0S₯IΉdοxF«β!Υ8~ό˜,Ÿ>)λλ+1;ν˜UήΡhlќxiΘYIς:κ[Χi7-Ÿ©¨ŒgΏ–?ί·4}Τ€±§ωU]ZͺPΧK§^3;‰+ΡΘ±ΧρyφiΜ03°^mΚηοŠ₯‘ή½¦ qΰ±&t™#ΤΩΐUΆοC§Ά$‡ΪAχl’΅ΙΫαΔ(@ϋ< ™4ΕwΑtGC<οΜb*`*`*π *`τΉβ--€s—°΅όwg“aƒ¨oc€‹ »σ;ppx Ώ!μ³Ν νrIL¨GM,ϊγίθ:ΠDca¬ ‡Eƒ‹ŠοTjΗ:Œ³6޽eΗκ=ΐ›ηXΉ0#ι ‘1³f1ΨvxœdΓΪ±Ϊ›ͺ΅υ΄š­©‡Ž?μ_qωEn&©N5œͺ#’ΆWeΝΫ ΒT­Γι. Έ4η‚…±/λΘj΄&=g!ίP°Lg€Oγ™žξςΩE³ΰ7\.«g«rμΎcrbkCN=zœhο”š"{wν‘ωω]Θ8 r”ϋ“„u„°˜κ1,©”†#‹Ψπλ^ύ–ΏΜώΥΎFOzγ=}Ϋm΄gς,XΑ7ότΥσΣώΕ¬ΩμΠ+Π >i‘VD!μr„#GΔ6τΥdςidu4"Ώ©6:rό¬'—ξf›Mdpξΰ1E€α80Ρ«›’Ά#+1!‘›3Πγž—gςΞΝsMLΆi €fß BπίvΝ{^Clχϋ£v€Ο³φΖ瀁[u͚=¨LtŸTΑτd««―¨vΊ€qΠΌ„F:Φ>¦]V Z§γΜBτC€σ–Y׈i‡ZzdΈΏ 6Β¬)Αm0ΦJy›ΕT`›U ŠnS— \kΛ©mΆίΉ±Ή‰§o+(• nΎλΈg&ΘΥz[ΆͺΔr‡ύΨG½KŠ λ°oΒΫLσ]υp]H£[Ξ–2ψ:—e}³†&vˆ½YO2%œ;hΦ;Δ{γ/Œυ]§ ΚΔB§eΎ}rε— ₯Ξ“§Β‰3n:ΝZ[Ξ,γΚα%ΕN₯­Z³’gχ,_Δ¦:ŠΪβΫlΣ=폻°!±|cχΤΰυιdΑ:½Όζ―//»θ8dD a@τz" ©;ΕXηξ%ID²“Ο€€ΝlC)‰u@τžΉ’”2ψxs’΅·ΰIoο€'Ϊq˜‡ΘκΆώ荛[d»φ»Vη^‘LJ!γI‡THŸ£< uB‘=E²eξ/fd–ugΫYε€(θ₯‹d'›υ$MΣα|!%9uΦΞΦδ+§7DYmodΤqΟΚ†3+1ΨΖΨφzaα01ΌGόΕƒΧώ’k'.ϊmΜ«,ΨgΠϊΕπͺ–™I[xd3μ°M₯ oU–zUƒ™* Ϋΰ00¨aI0¦·ŸΔΑTΜ8ΗNϊ`ϊlΝ+DΨ1^G| χρ:ͺΩΣΰBToϋΝC-Μ²M*nFχϋ©/ήσvœ~₯Ϊhδ666ΑLž;·k·T«›RΗE!\ ₯Ψέ±g€<ΙΩkϋ:Λh‹ΛX”¦iγυ#ΙζŠΰ°±ΎU“Α@d³Φœ±ηΑJg`š·pΤ(α΄1 ؞,§ΨG3¬Σζqj[z-Y³+›θqOŸ]墚”&ηdn’,n6!λεΙ°:πν^·ΉS·ΥΖΑΓj…i–σ¬ΐxΠ ήτΓvM΅½8Ÿ ’™rΡΡmΨε‡’dΝ›D­χ˜I°‘Π₯aœ9ΛΑηΩ‘byΫ!O]‚ΧάjφδΤrMfΦ.^ΰνMΐλXέρύH%³lsΝƒ5ϊ<7y˜©€©ΐT`[#΄……ŠKγŠζkο›έPήιZH7\Έ ψ_$y\g EQ @φ6XSΖ1ΐU°«’ύN9Ύ‡Ψ+¦•i8DΖα–΅aPmμτŸΐΦξ­}γΌ?qκΰΆ~ΨN`»=Ι‘@ˆ@ΗρμQB_Μ,¦t”y>|ψ°υ†>΄cΤ[}Wΰχήrjει“›ΟέzW°λ$˜ άΆΆΪ ±Z.ϋItqέΨ3΅Γi‘Z7θϋ2QFUΚΚςύΗ€ {<ΤP#φΊήΒ:c”S ΜœΛfδ²ΛφΗΰΉƒŽzντ²476Ι4Ο)Ύ4ζ{Θo‡ύTm+β’ΥΒ2ΛzΦφα(L_Πκ9ϊpοXŒO8ό(³ΈΟ€νΪ=Ÿ ·ΪξqnδΠΨΓ ₯λΥS4Ί #jξœ%?Nx-§KΠΆΦ›l£•Ν3°GcΐΉέ0kB–ΎŠ²Yj˜η‡>ό’#Λhjd– »œp’‚ŠƒRΎrΧ‰Ϊ«άdώ/m―ꀁ#;°n £„Χ47₯ŽΩ›-嘬a2`έξΣQκ²hTΰδΣΠ«'©'W·δΔ™ͺtUΙ°Τ9Ηb/Μ‘™ xc„$  σύ‘,ύΥgΈMs»/SΕ’,ˆΤΐŸΖΑ²6 Ξbž*N Αs]ν6dΘλ¨Ζ:ιΩΖν›όͺ.βΎqδˆζφΟ½ |Y½F+  Ν6a)j£Β’I`ŠΆ½φό2Ά[1ηΙWο_eœD"C­)‘«›mΆ*8΅4€±0Αχ%<7Ψ–κ=*NΛΊύΎεβ ba!^ω‘ϋ΍μρ_懩€©€©ΐyW`[h€ Ϊ·ψν«ώΣo$άΔ+ΫƒšοY 7ŒΑ²Ίf(HΦμAf‘o¨xγ±D…ΕπOq#`’ΤΑκ$ξ0@Ζ‘μ3Oƒl-TΦY™k8g”ΥI¦œGžζŸERΤ)` σLμCls—_ΈθNςΊΰ #α8ο―²yΰ·sDW’Θ}±eέφ'ŸΊϋΝΕιGκΝFΈ²Άjs%kfjV†έήΐ4βΒ.Φ il5Εv(§pWθ΅₯Οο!ŒρΚΖΉGž&²,€€Γ<9=-)φΣ@Ψ‘/A½'b .i³Άpσ8sκ,Νi%Ω΅kΏμ™b e ™Vk³.­AΦΛJ4·³¦’MΚΓ°š^ΧKρ*twΏ»oƒ₯oη-ρ|ΏχX,!©y[›ν‚OwΨDφY…t!-₯Rr<φ·Ή¬-tΠM.+Ίν5ˆ*‡nΏηξF6zgΞ·Ή±/δ1ˆΌƒΫŠΓJŸΩ‡u2t3τh„ΥŠYLLLž~Ά€~LχόΊύ—ŸJ:™ΣνW}¦ ‘@ΫClεT‘¬]e–UΆ‘C²²ΝΚ>©:9žFζ§rΤκΙ‘SΕ ƏQψ<¦4τY šιuΡΖ&ŽΥ>SΟΚ8+χ¬βs{ŽCC‹²X<6]αz­^ΰΰτaSmR ξwΰy½eύ魟Ύϋ_•'&gk­ :›v.“±ŠΈ2i ~’’§lcIΩΞdαυ [₯Ω―ΗT}ΨoHΝr:3 ψJbufγœE#;‘™$ Ί)4 ^|ΡιγήpοΧ’°Γι1) le½΄K$΄’Ά6,f2•”έϋζβ~ˆΞ;wB`Ζ{δqτ­‘=Δ1ήvά3Ί©$ΔUΒ,OYŠ ‘\υ]>ΫιΥήθΪœ$5‡ ν!iE“ΜΰΡ#“¬­άi˜θMš:›]€rά0–vΨ>κρœεw‰ν’CΖ“δ{±JΤw§Οψ‰ΤCɈγiBΗUœώm€8Bžs"θΚxΈ~Κχj`*`*`*π·+°­τ’,:Gh|νK~ν΅Θ3~yΰ·θπwΰ₯Τ#CΗQe‘™ϊE—¬φsΧ­Q± ’ϋΨΨaN‹”ƒ"°>VύœΥn. °Vš)g’Ή1Pφ˜"Yμ,―”‚!0°hbβ>žbVπ•e‘ι€νqPΐˆI²°+Q¨z"‡ΈTτŠYL.π žGη@τοώωWN/ΎτΚ_yθθ}~»½ι%`mφ·s»dί%ϋ€P.γΊ@^¨³&‘6 ²';ι0ŽmV-¬…΄“b tΩkŠ†Γ φΐ‹w–€ΚΘ—>@,ΥpY`™;Ή>:κ:TfΏ«b-—0•)Ήβΐœx0œ#nS`—N%dz’… Λjτ;Ν³kΊy:‘ιΦ«fy’ p’A ©U^χB7“οw6}/ΈVΨ’Ύxκc[Χ`Μ΄ ’R Hn5Iye—Až¨μ³φ2Ύ"εPcpm,Το Ζγ㯎ΛHB˜e€όΐ•Εf:3—Ώδ΅%τRhiίρΔα“Ό[s—©€©€©ΐί€"Αm²ΰ1+‡£7}η«fΝΪο£MΟ¦W–£L2 £™ς`‘C€lΘu¦}&Z›΅\ΚHλ_θ,aͺ!ΝΌ4Ύ Οΰ‘\x^όx€³λΑm#‘2Ωhœa«Πr0 ΖΡκεynμ#§΄Ηί>―› s±ηiΌq–ΆΙ&2ΣT€ <DκηNφςϋ.Ύ’ςΐ½_΅kOAΥpδΛΜlYvοά!³%GΑ»y —ΑΎlb² +Μώ['hΨRΊ‘ύΩ₯apG²°<;pΩΌπKκgrœtΑ­3λbd"<·Y£iΨ6્›‡M“B &³‡5Đ}τΜ£u©U«€s@t:ζ°\KτZώ»ίRUGΕhfyŠ ,- dρ€“πύ·€_Έ ;tpΩ ©¦AlBT,‚q,X~ΫΝHΐlΒΆ9μ·Ε¬œ Ÿ±Σe;ΜLζβxυΦ`„Ο7M…l»c8ΰϋbC\€ς‘—±,ΖX{Τ/φRŸΟ±cέ\Š‘Νb*`*`*pώΠah[,‹‹Gψ¬•°ήΩ|WδΪ3=Ώτβ¨nmλš5䀏tC}7ΘEsЏT‚AΏN#ͺEΊo¨2ZΩcεΥΔNλ¬ΐ£+™^Dc4Πβm„Ό2Φ XgΝ}§ΛzΤ‹t3ΟiVš‚!I"ΙHΡqΐk]ά›Θ|HS―W@AttΫmξ{Σ‡»υζ{.Ϊ}Ή‡mά¨‹,Cυ¬ƒ>‘)°Ρmπq—&Β!ΞρInέμτ”δ‰pφ2$ΎΪΘ54ͺu]ΰ€ΎU•ΥuιΥΪκΙdL/BRκkuμλ6ρyVΟ`φNBVšhœθ­ΧΉοΨ#[ςε/?"wάuΒŽο±v‰―sεοV@½Ÿ΅…ϊuΩοΙrG£fWΩ‘Φ9Q,·Νl³½|/#~n2φzΞδ±,–%Lι;a<εΑΆΦΔ»ˆρSO”T§φu4 žΙ€NΑJ‡ΜF„€h+@ς#QΤ΅ΛγwvΨ ηΏ»‰Μ-¦¦OQmΑ@Η ΄v7|Χ5N”ψgH(‚ΐΞΈ¦ƒϊΒ+Υχy †UΎΑt.χ!2crμ¦Α£‘™™±Uω#€Y› Η Υ–Ξ…Q¬’UV·`>zψC3ΏΘkŒ‰)m*΄aΈS‘‡.ιΧ57\»Γ‘G~ χS/h‡ί,¦Ϋ΄ΦΒBpλ­‘σ¦hύψοώΩ=ΕbiφmΝj<πNŸ>‰γ ΎΐΝ^G$ΠεΛS²cΧI Λπ9χ\Ω\FیεP |mši‡λ°Θ­†$ž7θŠΥ“YΙx¦aŒuΰUΓv¬ƒξ1HΫJΜ0 U‘|΄Φγΐν€ηθί]υˆωŜήΓz!’c]¦₯$$£₯Φηh“ŒήŸRΩ:’ͺΕσ΄Y1b!ΎφptŽ!ω»Ξάb*pΑW)Δ";η9‹»ωžόu!ŸšωώS[5ΏΪjΉk81 q_1ŠΝμ½H^r`‡\:cewR_u εΐLœΜϊ`'›}­A2Υ]—¨γΛ€€A‡FΓt‰ιt?’€r|9kΙZH2ΔZRͺυ*–h€<¬σΪάΦ £L:g{‘½VήwΩ_λφPKΆ ~»<Γ¨μs₯rKxέ|μΪώpψκ0θ…ι¬ηΤ†Ι‘š‘Ξt¨yΜ0N2‹00GΨjŒ{›mδ^£Rυ‚N•'β•Ϊ1xs^ωΐ@Α@‡Hoœ›0¦:Ϊ”Γ3¬?ΓΟfžn*`*°}* ¨ρ_Π>Γ>_wYeͺο7ί(vO²…„“$@‘C·wK£² e’υ’zIε”H·όžΤ|¦s©²Ρ]†Ω,ςPf.z€ŒŸΗ茦ZZ\Pηρ8ΆφHjΌV₯Ού=nλΑxλs³ΏS?rΣΖΝ†ΪXHP:@Εϊ8Hτυˆ`Sν[szb°QέwΗύo7:Ÿp½I·Σό M˜Cο2{”Κd€‹ΗI O·G„œ,Kΐ²tS'—Η%œiuΣ”€Hλ°˜l3‘‡v6Δ ΐΦθήι`ζJΏθdŠ4BΌ§€7vΤψ;r3A"I”Έ•ώŸ•ΚMν±,A³œGPυώ=§+lb Υ빐ηD'DΓ¬Φs¬ΐ"μ&D‘]δvΜΘΞω2ΪυyεχΌXnΈaͺ’œœ„­d:Œ³θŸuΔΤ˜ο”Ž₯:œCDtωžD¬“|f=‰<62-N0ΊXίη‚ώ0‹©€©€©ΐ7Y ž^X8μΠινΩWΉSμτzΏ>rΆ ¦ώΊtpkd7S†`=Ψ ΟΚΐv΄] Ή-’"Σ]l±:23R„cΉ£Ύ§Σ‰`ξΉ—ιDύΗt$*gϊψΉ&‹iGe–cζ ­+σœT†„κΐHt½Xyh³R—ƒ‚Σ,¦Ϋ½ ’q΅°?πŠΏψŽχ½ifbΧ'£δδKϋ,(=ǡӚFΨ—ϋŽήƒυ\Pά““ž$d»Ή NyqΣφΠΜβΘ‘Νd!)έC;xK7GΘ;8YΆθψΥ™‘vC] θ{θ븐bFIχDN¬t’J%μ‘ήΒ;/€w»o£σώό•Θ>R±ΒWόΘg.“Vυϋ"Ώ1;ΰΠoΗ€Ν°mDW"§“άD^&'3RB|ε%³’Ο§dy΅ΑΆ€~«€Tv`₯ΥπœτΈνŒc‡2iȈ>λnσ·C*S13ν9=•…\vήοΫ<ΠTΐTΐTΰ*pΑθΗ>/Ξ―’(jc½ΑΡ/f™lκ@χh*±4RΫNΣlΒέ4ΜLLΚ•ϋη$G§χέχ?,U‰/š¨r @¬Ι…ΚYλίq[!`£l@žςr23“―I΅£Μτo"‚κBΞA· kR³txxΨ&g±²›@w½ S-ΛΑΌθ{‡/pYβbSmZt¨ ΊRω‘φ›ήϊϋ―KΜ¦?γ»©+{έΝ Ψˆœa€™ϊζ€K ηΛ“ς’+―EZŒ#ΉΧך²Ή²…μ7fœμ,§Ύμϋ skΨH7€\š”Ή’&e‹d»Σ+§ιcHΑZ§$β„ZC\τ$z@ο »lΑuύ/δ/ώβψ½έ’Jj³€D“&Sm"œ‘‰ΤΓΏ°―QίXΪ4šΪŒ©.^Ў£s…n  c7©ΔΟ7?LLLΞ·γQη|ύmψ8Ψg‹εε—]r•΄¬Q¨|=Ψh#υ2f+ϊq‡~IG­ΏΞ€μΘΎsrΡΕe1œ&\!β`«Ρΐ*ηPΉ†²WΪ‚¨Ϊg0sΌ¨+΄2Κ ¦σ’‘Ι©¬\ϊwʞ—ΝΘd²€_t ]5@™C…Ϋ ’hkgΈ= ΫUτHJΓΉƒΘολ¬ΒšΔΛψ—ωi*°+  ZeϊƒΆ΅ΦoΌšέγ„εfv«¬œY•&Ν~ύV‡}Μ’‰R ˜Μύ3YΩ;•’’Ψ΄Cγ;°«r€Ϊ‹W)…BFv윐LŽΞo;ݚll•lυ, †‰d2–zψœx«%ψ€FC[θaχώšΰξΓ8sΑ₯Οψ»Η Π‘#‹αήτΫWv[μ6«x@»†’œ”03Ζ†‘C?²σ‡!žά*ΟΨίsYΉλžrΧ}ΛrκΔ¦ŒΉIpδ%i4λIΞ€K&ΩΩwδ+_½KŽ;€ή’KφWΏTrΩ Y[«Κ©G7€Ίή„έξI*MNhhΫν~ΑΔ©πCΊΧ/-1e–'­ΐβΡ°ΟV˜θόβŠάι 7€ƒΜΔΙΈ¨f vΠH§Ή†Μ¦ΧB.Γ|>ί™4W4nI I&$遑φάΟs<;.Ι±οx (―Ԙ)ΐήN'<τ–Z5ΦͺՁ΅4ΒoΤa:Οθϊ4μq2‘Ώ^iΐœiž‘ M³ΟΤ"ƒ΄²ΖΪ4¨’ ½hλ!ν)Δ¨pΐYφzΘϊFβΪzRξϋμ‰Qiu4ϊxA3q¨p›ιHMΘΚ3]œtΝv PŸ¨³UΪ.ΪJΛ«Ε+]ΰηR|Νό0ΨφP½P©ΈQyΫoψρχώ£T:ριR©΄wvwxέUWΫ§>!χή}LΞ ΟΘΩγ›±%e†rH(JXSWίΊK―Ύ\nΈnΏδ¦13MŒ΄œ<ρLαΎ173…ζ 5,fΦ‘w+ΚΕRlο8%οωi;lUρ£Ηx°°Pua ΅οΝ,OT=ιa»ΝΏζ}i8꽉@œ0νεΎše†C`aψ!7΄―Δnᐒ,Š£μ½Œ1.͜… fx‚Ί% ­<ΕΤD–m–’Z£+«›-Ωb\΅‘μ„l»>  6Ϋ]gˆΟBλΡgξ<-Α‹xφ= b³ Ηƒψ}s»©€©€©ΐγ*pASœŒ―ρςώϋ§φŸώٝNΨΗ_Ά™šΤ*X ‡fώΖα)4Ρ}ίΦΠά‘|ΕΰΫΑ£>¨ΗΝ(E`ZSTͺ1d0ξp!ΞΉ…ΊrΠέ?FΟI˜ςυ"9ΣΚΩͺR΄νζv…(/… „©h€mŽβg”±€€Φiβ1ΓΝaϊqΫΚ\508W₯JΕ_¨Dξ‡νGο(8ΦχΣ₯ώdfΚbοK©2f•H&΄Ϋ-I’YŽϊΨΦaE‡Όd‘d\rρΌ\²oFr%ΐ˜ΞDy"μ—+/ΊHΚι fCimlΚƒGOΚ±£ΛHC4©4’RΪ wLνŒηί_Μδώ{E*―ŠaŸŸκ›‰ο³>€”ρήε€sN*•Œx>g`S0Ηj%ͺ›εRQ*‹ <瀜…‰f›yœάXΫ$yόd1'–Λ4ζΠ§3C8€•φhτΜΪ<˜Δ…#T[P@7zu\U†γGΘ kȘξχx?ΜJϊϊ§zλζ~SSSΏ―8=FΠίυΑΐ†%.{eΰ-ι€\ΊDΕϊ0ŽˆυΠ*ΎPπͺ΄ΉP'SάηΑLλšTέμ«ς9$‹Η¨dƒ­ρίvΌb³^7β`Ν/]Ο$Ր&E‚Τ`ͺ ’V™ˆ>Ž… ΠΦιΛ!£–ςΫΚΏ„’ε9)₯©uYŠš¦¦«ΐRΕςίώφ;ΌχΊώΆχόαν?ςrφ`wεΔI<(»H]}IfΈŽπzg ΅ΟfŸ¦i—@gθGy¬‘ΏΥτmΥΝNfqμ€μΥέΩμ‘@Ψ“&©ΰε4+¬μ†ƒhbοηaκηŽyύπΰBΕe4μσγΆΛ7^]\Œœ7‚+ΏϋΏ›ΰ”›ϊZPΚ€<y•·iZ`€ ½wGΩ’}pMΊFSυοf6Og•qΘ=τΠi3Κκΐ±UλJϋˆ$Β€tʐu °'μ#γPΩ‡2ϋ/“Υ«΄6‘™?tω@ Dαθ}Ώ¦‘π·šωΫTΐTΰ©*pA3Џ}ψ䱏u“NΆn«%U_–™|N²:υο$«¬,f³&Υ‡W€Ύ²Fš Μ΄Ξ,!±ͺ=ΊΚ”$S™’$h Ϊ<pη±'jZa§Φ ά γ΄6Ά>ϋή?~ύ‡ΚRΕ€η'ά:γ;Ž<³ΟaηψύU,;2θ НΕNcΰΚr†ζVμTtΙξ²LpΟhvcΐμqB ‹ΦYΎ>';›ψ:―’q―qρΙ33EΩ»³'ŽO’˜ΥtΑ#₯¬όΛϊ2ω―Ώπ:ωΗ―{ )‡y=…bt·m @θw‰Ίlα·¦8πM#αSlJs·©€©ΐγ*p‘θH§XΘ‘ ²g,‚pέΐΐΒΒAJŽHΫΙ,n½-ίρ{p ρ»ΥΨΎn~ηΌ|η5σ²c&χvSξ½UκXΧΩΓ³tΘηΟIδ5F€LαλΝφ`œ0ΐH Τν—A+­ό±nkΖOμλ±ŒγΑγ«ΈͺτεKf$TF[‡i/ Ž›Œ‡—GΏυΌΫO.lάg-™ g*`*`*pžΈΰτcu@@ρ9†ίwβkiθBŠ€„ωzΠΜΚ]χ?*Ξ2ΰY#zϋηΨgπL( `7Ρΐge£ΥyQδxAͺk†ΥbΐNq@ΠΈΰΟWk;ε›•©v˜vLp!ށB˜mξQ9‡ͺ­α˜ρ€'hi2aB< n[Ό‘)ΏpRίa9Θ°Oό€YLLž°€gΆθ6wΑΊζ—ΎφΑ£ε}sσ?΅ΆuΦχ;ŽΛωrΎλ°Λhe遨ŽΓ4Ϊg‡(hNbύ&ΪXΥDk0“ΜU΅p„ΎΚ™Φ†aσguVKŽά™=ς 7ΕΧοPmq₯"φ}Ω{}ϋοmZQ˜Ι#%".²\wνE²ψ†ƒ2;—Ζ^°+ώΡ„|τΆ{™•c…™fHd|΅ρθfτT Ψκ­σxŽŽΏIjFΘϊgB ±¬s$›KJ†Y„zιυ–|ΒΖrY">šΔ…ΩFΆ4o₯ΏΡΎQίπRϋ?*ν›Ϊω―‚Φ£ώPϜΩχ‚3A,Ά.l&I(d›FΑŽTa?ΥΑᲂ^-Ό;ΝώΩfΖhLdŠξF«ροŽw―ފ%Ϋ-†}~Š-ΑέN4*Vψ©‡ς"ΧΪ<Π„ΑH9 ΛO–βqΟJIzL@^τ%•O@hd±τdΜ4' 3lάTFvŸ66f` sl»ΪτV—Τσ€TΚ1h.f“„_!ε@7­νΫΫZυΠMτμ= d<±Χ4³‚άiGŒΩθ¨_2}π}Ή£?ζ)ΌH<$σΛ,¦¦¦O\m ωRπ‰ϊφ[V7ΓξgΧ£ξXxΑ0ΉΡΠδ2_rΨZΉ ι)t€œkš™zo¨θBΌsh!spΓξΓδ C:3˜+‘€)QˆLΖ Έtψ3Μύ ώF‹Αλ(@V¬]‘‰0Ύ¨ƒτxΈkέ%π‚Ζτ4Λ+8NκΞ›€βίͺ„΄YLLΞ«μqΡΒ‘…ΰΦ[ouv½ρ·o¬―ή:™-» Χς3€«L.ΓI0Δ&ΐ*]LŠΟΈYU§ 4ΡθoWO7F’Mηβπ¬— ¦Σ“€οθŽϊΠohγ ΰٜОΟΦ8zHΑ¨TΫƒƒn6εyιdΠ)Μ[δ„τ ,„Τh Υ]Η–ΫΏΆ*'WzςιΟbψπ3{€fB¦ θ˜ Y7Άχμ6 ΄"¦›θΒ€£Α€mfΑ$υΩ©‚μÚpΧ|Y“S€…cG έμβΪ{½wW™€œiqr“Œ½ «αΠ Fν¨4·wfα;.ΎZί+Ž!Ϋΰ˜¨ŸΤ,¦¦Ο΄<­ZXx₯­L4μσο%œτ«}±¦&iR“ώΎ―*$ΒJ0ˆE ‚€ίψ6~'•…ζv —b †Ν5sδ‹dc㜐‰0θΖS6Iόl_“΅”ΉV{<Πx4 >νa  g™:Nΐsτ{#lρr πεΉSΛ#+Υ|χSŸΠχΎΈpΨBΓmSSσ¬RˆdZΔ*‘}˟ω'•Wξ(δ ε››ύ†ο`$άλτβΈgM­έ₯-ΐ}cp8γMα/μ! ΐ³W<ΫνtΨφίqΛ-V μ3MΙzNl–§¨ΐΒΖαXSάŽφΉœ°D# Œ³‚`Ϋc„Ε›Ϋυ€ΊU—ίω>!wέ †…i^©v–’CΖ8Αxͺγ₯JiœΆ(ε`Γ(#­&œύœžόδ81šš„z˜Β†p0”y@φZΥ•*}(5λ’έS2ŸMΚ2”$;Ι¨‘£xΙΝΈ›~«όΒΖΎYLLLΞ£Ϋ@/-έ€γ.-sŽ’κ4v…aŸ8^Z ΉΓƒuΞ(ϋΜΨ‰RY’θ‘]‘ͺcΆZ¨Z9ΔB™iύ§wς υΝž’aμ]Φe/•ɝyΉ3gπ­Jή›ΐΊΝ…ΣΗ©˜ηζ€»2a—ρ.UΒƒwŠλQъœžη΄z£^"“ύΈnΏΓF—§e0‹©ΐ7UΡ•JΕΊυΦC‘ωΒχέ]ο|<­»~ί„K˜ τp4[ι£Ν˜ςοqIΠl˜Ζn#—OΒ‚FαΞιi§Υhώϊ~σΝ·Wπ|†}fξί,ηS%ڟ²· δΙ2μڞQΡ ‚,#‚@¦JLΡυδ‘υͺl~ιAΙtϋψ?ππ¦qSzΘ;½VcvtfΓ°3Θ²„­ελ|GNΖγ­a‘ŸΖv6O1ΨnΨ.ϊ\TD’oϋ7ΠΧ<·@W‘ͺ­+1@Φ“šΊ+―˜«n˜“4΅L’r¦υrŸ‹ζͺήΩ‘< ˜LA4Ρ.ΰہε h‘Ω—^²VΏgΒ"kΐ}κΌύ‚<ΔB} +ƒέΗ~) MΆ‡»Ή5f žΊ…‡G/°z·υ‹xXIp³˜ ˜ <ν X4±©ϊ–ΚΝUΏœy}izς‘={φ`ρ‰΄%ε2Œy8½δržδa*ΚAvQ1π,w`ύ»+ώΕ­@jkΨ†YΞΏŒ`,Ωa―ξβ|0ƒ2ΖG„¨8Œ₯η5Ÿέ;‡_σΉψΚ=β¦Π?6` Ρ}ο~Χ ›QiB›u¬‰:›Gλ/βΤΥΏ^½•Δ!BI?95|Žr’¬i:₯Pοg Kΐ‡Ύ1'Κhq O‹—ϊ‘,ΟMd9ΡϋζpS’iΐΒΣ i<ε0u² ‘.Tύ€Z«xρ zΜιΜoŽ«Œ)^ΟρΗkί ;vμˆΣ;SΟΩα=uί©θ-τφ4š'W6»ΝΈ^ƒ₯[•ΗΠN―Ε‘―ŸπZΝƟΌμ£oό_{¦§ύΫv˜uγ;Αϊ™φqθ ΥνDΎ‘Σ©J΄¦qΙnnS#{ΤΠIVϋrL LΥϋ\.‹Σ$,‰ήώΡ"a(K§ραnί#§θ_qdΙh ’E•lφ€†Β<Νΰω +|jα:O R•Ϊ½Šη–Π”™ζK§=ρP³΅›Τˍ°Ψ0›Έ^€/―ψ=<ν‹g³«Ÿιw±ϋ Cΐ8‹ΐeD z:Ζαώ…_ϋ„u~<πƒ-L€Ši±Η₯JΜ’ab{ψΡΊδP‘DSw–\Sβ3_ž‚G†(·ω™Πθ‹-οG₯ΔΙwe…3)Œ¦ΙΖD¬Z'jitQ !Ρ³Œ4SU¦”/‘΅α%Ή8οϋwμΣmπν•m3 .η˜¦BίΉΙyΌ~ߩ׎Ž”ώf±Ύ0N6q255αŽ–jYsΪ©csιd­ζ” ήΒϊεk~šfDgΧ.σΕώ“π?ΣΏA³τύmZ«‘ΘωT?\Ρ ΛΤ@ώ6¬Y%ΉnΘΒE9ŠοΉΞmƝHœθ4 ¨­+yyΖv7₯±Π’φŠ,¨J ΎΛΏx*¨©dB{Ψnͺ(њΆΡ¦α°…Ϊεx”T|Τ¨ίΤλ6Ή˜A+.ώkρK<ŸXƒm0TΏˆf‡ήΑοΉS³«E¦IΏ²=Ι0..·₯ͺtοφ½Ξ½χΎ{PJ½Ÿ@ό%j?ΛΤHι»'―Ω•z8σ9}Ί#]”Š„” UžcΎTƒV5Y/>Φ 5cxΰΡ„¨%ž›‡lOu΅¬’Qβ¦=w/γ2:t‹fήq…χnίΛ§~’$jžW¬ΙΥkVΛ/^+―Ώύ)Žyrpώ˜>}HNwNIˏ€ƒzΐ„Hέ:hŒ]_ήΒ’ΑλΌο‘“rθΙSkυ€F.t…t ύځ,χZ(Χ(Ω9Τι€Λ‰ 9|δ΄ΜΧ±Χ‘δ"fΎ’T Πx¬£ΠτHdάxλ+ώσ:δͺυτεφΩxύ]Ϊ―jœ.»"±{χξX­ύΐΏϋ „ΏSɍzƒ”¨­6 φPš^Oζ½6ων e—„}t(»\;(ΛjήΐcΗELΰmKπCΣ%‰šρ¬δΊΉ.pQ²Ν‡v¦Zk"ΗP•ΞI9fΩ1vŠ8ΑΐΫϋΚ{vμη€Ξ΄5ž›Ώp;Š!π42Ν¬’›ήϊ› ςo^³jeRStΩK γΕψΚΥKύ(~yΓϋoϋ½ο΄*ΧO{Ίέό.ΨΆβΘ6^ >QΞNΑsdwΓTU^²aJsd’ζΛxŸ—―•+]#εe5ι’0‡LzU/σ€ρλI‘$IiDόr…;lhVAΔΗΙφΓΆ‘ B·ρ?wheϊ`…}μKΡ<¨ΙJ‹s˜έ!œΖq΄πlCyFΓH","¬޽Vο<ϋΊ‡{ΨwCΐ0ώ1—•…γ쯟—…1½7Ά³_jΏ%v«ZI—dζœ;H;Js)°9’6r(ZI„f‰OΜ86pAsδXo+΅N Μ=Ύ ψ§*«β¬_ϊ<ϋ‚5έζ|σY¬5›Υ΅ό¬Ηqό€θζωrβaΩ#{ΌΫδ6³o(Άη|΅k>Μ;r>·π·GޞβTœB΄vεΔΏΥ†A2ŸΟρ™/ΏΓ©mNΥ\wbώONT.(Άδϊd4HνGrθwεͺecrΥΥ=ωωόχί½O4WG:ž›.•,W΅ΓΡΞ“<>h²‘4·š4%bύθ_ΙS―£cβνTβπυ‰ΤξfFλ *ˆ·¦r€Μvw”HϋUj1Ǐϋ4˜s_gξΌK›±ψΠΛοΥ~cCΰ»D SΎΛηΌvw™mβήυθ5nϊ‹I.p„1gz>hΒJQ’]ιΠ΄‚n‘)ΟDρCyΥωœΉŸω ϋ—‘˜D²‡‡Z› ‹¨Π9H³ο‘ΐΑ5LΫα>5p gh©‚­vŒ!\ϊΨDϊ°l’΅ΘVωΒΆ/θ•m†€!pž8K’Go_uη‰csοZ<FVφ’ψcΞ›6έ―γΐm\χ9?•ν{έƒ^'ϊɐόΉΖιvzπΙγιΎφ”|φ―”ϋξ;(£4ώm‰ε%S‰lΉϊ ΚUŠ*6·| E”δ ‚δχ ™άRGe>EκΡΑ£σrψΠΌΜΟΆ‚Σ'šAwŸlο6I„}K‰Θ< ίF¨ΐf§^gκtŠ#υk4oOJ~tT<$?qΑ-7ήϊ»·@ϊyέwςa`›!`όΐeJ ³†Β›„{λ½υOΆ’ξ7ά\ΥνιΌ+t‚ϊq‘Wb‹zΜ%s@S|U‘>«/cΊΛR6T‰.υ¬ΪαZ§™1$V›Ό³‹f–κΘΰk½tΈ=ΰcΐ'V/•Υ+ΗdΓΪqYΊjŠ.p4(™ΊE­Άτš„βΡCœ[¨ΠzΖ‘[6w$σΤQƒ($z΄)Ε–€}΅ξ₯Œθ₯ω\ώ­[ΎηΟζ5'Β?¦²'Ϋ7Cΐ0ΎS;Q‘·³Δxxί£χέ`3™₯:κΔcH,P©FŒΊΜχ2K~Dυs­Τ –σIΔmΖ£:λ~Y¬Δ8‹­₯—B7τHΓΖΓtHΌ‘Ϋͺ¨δɟ-rμmρΓ8m~Σ#ο{|·μpwΘnSΑGΫ σŒz$Χ’K”`δω<‚­ΆΘτ†wή΅«ΧsiΐDΐ¨ί‰ςνΊŸζɁ.‘žcGξ@ž!Πρte2£η˜"ΈtΌ$Χ]9Ι`•@ζη[ςΘ#³j4±i‘|›x:‡FΑœ―t˜|Ρ™7šϋΝNΆΏ¬‚8·CμΓΖΒ!Cό£άΫ)OyNΤΉσΑ―όΔ[‡³¦‡ ό<Βb‡6 KΛώ_ΧΫP‘UΑχ‘˜nμ~Bx‰B’1tŽΜw7€GθΠΤVΎΘUς qΦΒ«^iU•CiγΞ–CP ω[PΔYs„PλγzMV4:w—€υ―`« ‰~β“―ίxΡΫ*₯ςόXi°O°ξ£W:=ρ;ΔΠ1Y*Eμy.Υ"±v<ήΰ±9μ>ΆŽU«G%™†SC!ΐΤSŸ}5W)dΠ 1ίL}H“h» ‡psŽE7ΔzPD½.—€@ЇS*JBο eΨ‹;'c v\³ιηo§ 2RϋΙyΕΔn—$FΠ2XdσζŸ-qυψξ*?Θ°νύΖ…GDyOτ<·¨˜φΑ"ηŒ£#πά,‹ŸBMλPΉ’OρΦ¬ΡΟ ±z„f΅~( WΟ³†βεQžv*π|ΖK‘ΒUn υ;ώΐΦοώ°ώE₯,{ μŠ#Ωf†ΐ 3Jτ‹ήyΧ•­ΎϋλέNο-q„m£»ηϋ]7-”|Ρ“.V •ΚU …'Ìπ‰ŠάΊu•ŒΧŠςΧχ”<ϊΠ~ͺ5ΝΨAMσ!ε’ՐܑΧA±αpnf±vh"ΩXρ2ώη2Ηλ΄5κ.”<Ά†k1Ϊ»ο8IτX£ήΊιΘK„²ϋNžaΈzόεΩ―`œ3΄&]ξ›Žψφxΰ7Ϋx’(qi,‰γ„Ί‹ϊŒ­dςΜ,Apb9―έα±H:‚ΆaξPΰ[\ڐαΛ„uφμS”™‘%sL"dκ³6ͺ«#OͺJ ֍NŸ‚Ν€¬*~ιTOΘ’γ’³ηΌά‡φώ―ΉSή[tP@xZΊ"b7Ήάί,ϋύ Cΰ€ΐ%ϊžOΎ~ΓwΎv;ƒO^λwzw’έ|9§ZφΣjΉ mςΓv’ΎΡfhŠ*ΙmˆξΙ²\΅v’†Βš,›ͺH~|DdlR #eAZ+Hq€ MˆΣ , jηΠUΑ.ŒΌGFυΐ―αH«›H«ˆ—h³! †Žη&Xω/ΝΨΔΤ―K6;`—©Π/€?;ϋ s‰άΜ6Ɉιt²uλοnπγζ^'ξηΌ4ΛА"δyΤ­Br)ΚΤάDw¬FAΦΒK·xD.r[³E{@™’hθW1ŽX:¬‡u%k΄μ+1²}©Ρμ7•«+²jو€4Μ4[<Ύς~ΌV”,ν–έό€χΠ’+F>T;˜sηήΧuτJ§1a³9ΣHΪΆ†€!p)#€mFd'%ΨI¦‘΄wΎμ£οHπ‘H9ηNlφά„„ 7κb`ψI©L€]^&Η‹ςβ­Wd^ηΗΜΛ£‡λR„,γ‘f0 v F‚cΩhRƒΥ‚—@šσ€y4Ήo0`5{HŽO?Βΐ©·=)t©ήμηΖ΄“γ‡NΒ€“4 ~k½aοή_ΉΛόΠ—ςš½vCΰά#`ϊ ¦Σh.Ι‹oόΓΪέ«γ°ΚοQ‡Η’ŒSκιr`{@f©'#΅€ξmԐ^ΜΔ+” λ±ΒS¨‹JͺΛZΜiˆ‘{Ό»€‚£ˆ³όXƒ\ϋνΙ•%ΩzΗzΙž΄)ώ‹O6$<Ρ•Κ΅³HξG£/]VσjWŽJTπžͺ4ewΊΏωΙ‰―ώπ^}ΙgΥhΗ&žϋ+μˆ†€!πό"Y:Άg6‰^ϊ[―ŒœςŸ‘Ρ?.ΉΤ©Œ;.€9lγsf"‘CͺQΏΣ•‰•SRE]><»ˆΪ•«œ’©%š {rόTΏ3ύ%ڟ…φqπL7!Λj Ρz­Qv:xΕ%7ΊΠνBž•EsΈh"=¨±Έπ2―‡Σˆθ–ΗόπSgΕ–η;›!`\Œ˜%ΰΜ»2³ w…šά|ηS †fA«kYύϊ\z!QtQ,u Ηϊ=©w2.ΆΓžΪ6Τ¦‘‘}TfUΘk_΄BΎο‡o’ΧθΝ²ξ†%R›(ΘΨ ΤSr­ΩΡ§žxδΔ’:± ‹dA§$oήηˆ&ΑήhYZ#%‰&j’gκaŽŸύ€¦Ajxε:DΖdGνΥ/–Y1L’Ύγ­sόܘ—&¬―mϋφ½ΤZ«·—θ_™½lCΰœ"`Ύ3p8°J»+­ΦώΕ‘$iΏF1J{iB¬UJ±ΰcZ!ΕUEOZ(!SQΊΠζ>gGS8T]F^ΏiJ^ύ†λ ΞK₯<†bBa_<Ζ„ˆ6luYGΖςΌSιλΘ‰}³™νIN§Ά¨2Βωψ,a‚!³³βΨΤ{ΙΒιvάnφr΅U#ΧΕ₯τGήύΫoϊ‘‘xόφΟώΰΡ]²Kξ”νήny˜£Ϋf†ΐ₯‰ΐμμL¬Dυ‘ϋ?°lέλi:»­Tσ’λ—Ή>«€§ζΪ$Ή— β ϊ$= Λ5j3='νž,0‘°I§ƒQP§λ4F*R^2Βsr'Η*s,\¨VΌ”Nκ:œ:Mš‡Z; Ρ~iΜMέB„€½Š ¦5_άσ{ŸήΆΝρ˜α‰Ά†ΐεŒ€θoΎϋ»dϋφνήΏψ±φ²Ι—έκζΚΧυ£=&:kκš3Ϊκ±IHχ°!k†ζjh{ OŸ,Κ²U5Ysε˜δY2LIγh]#χ—pŽq³šMΚ}jv»Ϋ‘…Ήˆx(₯ˆbMw°‡xžΗ~ƒV"ύΉD=ϊYʞ« ŒσGΙb―γ ζβkNt~t{ν&ΎΏϊŠ»°ρΡΝr'$z·‘θoΎ§vΓ0.5fgχ¨JαV―\_/ώ›(uΚ1sΉ›½Θ™m…ΔΝ©PΑ*‘λK@€σωLpˆu€ 6 Ÿ1„ωjAšDΤ…Υ’¬Ύv…ά°q='¬ώ #ρt½o‘†ΔΑb›³P¬sL|mWΓ•^aDΖ—L`³+ΈέΕ…¨˜ŸΨΊlςŽφWξώω/έ|σΧrǏΎ‘θKνΛ^―!p0 ΗΣΐœέDεDx¨,΄KΓ ^8(2‘ d4c4iN 4:Λ‰Ή]F¨Υξαα_φhμaοΨOΐ“_=,ξyBN=|J|b’Όv,ΓTeNP>ŠJΈsEYšΤh†α­ 0’ψXVLρF'#Α‘ΓΪ¨C¬₯κ;ΈGΌΦαΎsθΰ©xέςIωιR~τkŸΊφc―Ω!;bυr›₯γioͺέ4 K –ίnu`ζM iΞύ|Χ)Κ#Œ{θ°Δjy£ώκW@,] αΥ©φ9φ•hIΖWŒΛ`΄"‹t :$t,_3&/_Θλ― δ΅[WΛυ›VΙ²ρ2κ3’=*Ϊ·²aγJΉύϋo–e«§€‹ςά+ ŽΠŒˆš+>Jό<šŸόWίώ?^wο½· ΄©πΦ^!`œCŒ@? Μ™™Yv’ΕΏιvŽ΄“4τ"Θ:I0ByАB9Νbνjζ’a— `€PjΤγRάYeρhKΎ±η€|ωΣϋ䁿xLžš9"aϊ­«„]N₯ΓΕφΑπn&_aύΰσ’νντQœQC4NaωHTΰΡ£Θ«jβN‘Ά”4BΟυϊΫΥΓV:ρΊΆ~ξ#›vύ2Qœ‘ι§ύjvΣ0 KΩ‡31cP¨~5€―„žjνpt`Γπ,Xά$ΗΟ>DΪAt(WYŠΏy%ΙF#cU¬δeΙΚQYΗͺΰ€Σ–%^_n.δ₯+ͺ€K\D‘.ΘUλ¦δ•/Y/―Y&.BF±φ¦„‹­·dvn‘:έΒΚ—Ί~E’Ι©Κ§~읟Ήή†¬\:NφJ σ€Y8ώͺ»ψiΪ=~ό—š““/UŒ_‰…C[ݘ%=‹Ξ" γŒ2v6OOQ(&άΌδ•z«ŸŽΙW­F›₯A’‘ΪX<κ‘΄RMŒ&F‰’ŸGaΈ=ΰCA‰³K³β…Y‡―τ°uΔ€)ΕxψΒf$ν3j΅‹―ΊΏέΖ;’ͺΐ―₯2U νPρ―sVžΎkΝ:υ<€άΖh•χάΕA“δ'ηΝΛβ%Ÿ­Mο‡@“­jJτ·ΌΕφ£!`\δμάΆ3{…ίϋκλβΫoΏN–’šE`ωδ‹ ˜ΡV’›³ˆ:Ρέnχ₯ΡθΘΑƒsςδ£Η€u’.αΙ©Cq滆jΩΠX:j§Cγ`ΤμJηTKN`GŽΙ‘ύσβ5[R ΪΡΥΏ\ε™fΔ¨‡βεƒsEύ†wπΘώΈ±Ψ_OίΚn‘ξvμ&CΆ}‘ƒj/Ο0Ξ)¦@ œLQ NΗΖ^έυ½ώ»FͺγξΥkΧ8½>έέύ6戈f5I K£pŒ‘tΌfΗυς½oή(γΊΐe₯˜ΐ~‚]€;<ΗLΕDΣ5Rς ΅-^-86²IXϊ bG€ΗΥ2Νƒ0bH7jυΛ–£Πo†·δ«°sή1  ™ͺkχ\ˆ5-ξΚͺΫqPπΚW Κν¨ΡϊΩt”D›ύ-o΄ύh-·M»fv%›οψ‰ΟΝ΅ήπΐΓ“v7tGPœ5ίYΩ³‡Ÿ1ƒZάH‰hl%ττi„ j*DΈΓ*_…)…ΉR@δhQŽΞΖ²χ‘£ς€Y°ghβΦ θ<5Ψcq«Κςάo‰Ϋ―sœ+…:‰6fΕ±Ήξ»έ8Œ–Ž_±ώŠ©Λ>σω͐Η’9.ΪΏ&{a†ΐωAΐš ώ»©ΞΨ”…½7^³ζΰΝ/Z³Ά5ίHκσσn―Ω€Pε %«m”ε’,œveαhSJΫς²nγΜΆ%:ά$'ΊžΩ=R΄αu˜γM„4ΕXY3Ÿb­ͺσ€‹Ÿ©Ϊϊ3†Œ §LS°i’!;©6HyŠΣΣ}ιž$‘š„Ek6$"%€¨AΔγ΅qlΟΛ5βvT΍ήΪO£»¦ΧNΏJhŸMšΡώτλΪ†€!`\€ά}ΟΑU­^_:(Ζy‘SŒρ.°Α΄mVσΘκ§ͺΉ¬z(ŽKύγΏ<+Ε°+ΡBCNc‹ΫίyDξ&½γ4ƒVB„#‡feίS'%9έ’₯ωΝYΝΣώ¦ς]όΥ9†T«Eε9eJ‘ύ1ΝEΥ Š8Ίwω‹½fT*ŽΌkσ¦_Ϋ73σsΏm“ /?"{Y†ΐyBΐθgv;ΓIΎτ₯άpέn-Jiσ½χž<ιVσˆ-„Η²Oυ‹¨Mq©LŒ²%ΑΓ—.M„ω6ώgς@—£ξZάQŠΉ™ gΑo‘Y4Β,oθƒVeE?tP71ΠY>iΔ΄ΓΦρτό~ςœ@ΒαΧqΞ¦mρΊ"=Ž*ΡnΞν&ύAΰWΦ’θqυSΨν ΜXvι3ΌΫv—!`\l¬₯ͺzτ¦wόxœΔ[|7N Ε‚λ,θj!VސZ©ύ Š4χ@€‘z«sΤθA˜y—ύH'¦LƒmΙβρΊ{ς”<ρΔqiœlH!"‡ ‘ΟsΙ”¦μRO•³‚vˆ—eΛ έ}j2ϋ8ωͺ>Κ+£ΖzιχšN«ίŒ‰<½cjςϋΏxΟ=?χ”F‘>ό°ερ_lOφz σ€θg@uΙ’MžoGΆLž8ή~]³ΡLJ̊ΝSaGˆT*Aƒ•{IDSJ@ƒ__κO6eφ‰Σ2ΤB6UΠ₯p“**-·ΙΎߌκRό!ΥδšJΟΟtfΚ1tœΒ­₯Ϋg/U¦δ‘28œα~ ‘ °~|hθ‡C„Cπš ΉVΝ‡‰Ϊ@ΤO=τhs›ΔΌή ’«m~ρΤ«Βήσσ_Τ©…»ΆœhEΫ6CΐΈx ώͺΞΰ¬zΡ;!η;+ΚU_–,₯gšι―Δ„ͺά‡όFΩψm~ΐ‘θύ\••ƒτʜοι8Χ ο;½.ϋ‹x›Q“#ςςY`£qD;©€¨ΜΪ\«§CΛ£§ώhj‘Θe‰EΤbg !κ΄JZβɏFqvˆυ Σv<]UT›FB}/L`α‘J­ «VŒ1Έ?΄¦xΰΞςF=ž_`βla©7ˆΊτ€ηίΆiΣίbωΠΡί’½Cΰ<"`ϊ™ΑM!Ρξ_=πšvΩ­<2•›ψΡ€½Π•>Ν|ΝzWΊ‘δTYήC²@ρ₯¨’ §¨Ηʜ‰“ΛHνΠ— iζΎ>ͺtuEUI„ΞQš΅EZrQΕΪ—J₯ #ΑˆqI|Ν=½²*Λ·`€(}ς‘©ρ[ηΣK‡Ž–£ΓΕ‘γΩη‡~8 °z@ΛιΧβžχςΧ,.άσ ŒϊF…ΎΣήχg~ίν^CΐΈΐ°˜Υ'*έ5•κˆ”Kω€A>σ½χ”}{K«N£6….„8e’`Ώ‰`=£ƒΊμ2ͺΥ…kt2[›*Η¬ώiΣ!wzX>\U«UΑ Φfdβœj=ΗΆ!N ekw>„΅Η)Ÿ[‚ k­ΤaVJ†#”g·OΪυ9wFYϊ”Υ ©&#:bJ!»£,S»•8³j¨1tC΅™Ψ:ž‡”Μ}J U–ΦΗ΄¦κΎ:u6ŸΩAΊνq£qfq άʘι d?φW…“pΔο~ ‰~Ο–Ώόίff~ι>ν9Ω­O°Ν0^`hi±ν˜šΪ™qjσ#Š«οjx‘bΊ΅Ω?€Έ.B„›ZMΎP―]ΦHΰ~Ξ)eκqe:α9Z”Ώ1G±&₯”νI—ctP;ZΠε~uΊK}Ά''΄θ4₯”gD8Λ…:κϋΘ|S™Ÿ•Β€»ν–rξPκήqNΪθB*΄Y ύ΅Fθ•h†ρ8†οδ°¦IΞ-ΏνύΧξu¨Πρ46•gψΥν.Cΐ0.»w++ΕΧi― ;]ρΊ7‡άΧ” ΝƒΖΆA-Λζ W—Rλφ·όΛ¬ΓQ°ϋΕ@’ €Υ‚ŠM-ΤΖjυ={:’[IςΩ Ήxp_HΆZρ¨‘)Κ΄&lθuš`yk‘,pΜ 0‘1{ MΩΎΜσ«C„šQίΓ^ψ½Ÿ|δ‚h'6 η#PΟσ¦έ»2ΞΑvΤ&1Tά΄tQ“20kt(’>‘v42²¦^θβ₯βJ—BZ$τνΊ’“RPbs쑦X§\ϊͺSΰPΰ‡“‡>.,Θ<⧉Ζλ Sw[†¨G|0„Ύ€δ<@ΕvΈΝsΓΜΎ‘>€Ύ# άλ£7p©PΝy Ž$ œΐ#6οgυΧF…ΆfΒgyνnCΐΈdΎαtΫzΕx’^χP/Ιcu Έ8^Φυ”£(Ηb³r Α¦¦Fdε«u#S‡ωΘ‘Ξˆ΄»aβ{™,­wθG ^ Δί$ΦΊ’Θ}™₯_5ΎhmN ‰½Σ•Η¬£B­zΡ£R‰’j5ŒDxO\·pΫυ[w½IΥg+ΐ l3 F žύ UlΎvOafδΑΗόΤ]ͺ›„i_μΤαŒ/Zυήad\JAM)ΰ$ΆΒχ=,TW5ηˆB«eT³HΥw§jˆ–σ2ΔwΟτ( :@οUΟ΄*ϚΘαœIΧΠgιΉτKo;Ό‘Βά Hkm?ύTCΎΡRζB9qtŽό5»Μωc―ŸφΣΤσoxb³ά(8_ίN§ΈζCλl3 CΰB#ΰ β«Ιέ€€Qι¨ΉZ3぀’Έ‘>ηnR¨εε«ΗdΣ•Ke²”“'φϊ{bAΊ½–t|+DΩΣ:KͺΡpXκζίoΨ3#¨Ζά}¦ό)‘fΰ~½¦»X8²š―υZ% έX9τϐjΙυ¨šΚ‘y§yMˆn‡Q>_YT?-2ύΑmΫΔ‡H+ΣΆΝ0^ώήΔ8ID ‘IꉃgE”›ˌ&k_Ά^b“΄”²ΜηsΕΒ`Vl•h«bι>¨jΟP59Η₯‡ZŸ—£!q υdl‚²Δ65ζπθ‘ft!؍Έ'eNνsNU`”P‹Έ–mkPFrβ³F;Ξ π_·gϋrςhG}4s.JθΫΙ"ηΟ‘DίKύvœΌ‘|}vΫ&Gf†# Ώ8lCΐ0Ξ C₯–C‡ WΉω€’η;D:iŽέ-ŒπŽ$ˆ(’ k¦δ5/Z/7―£Ž"φͺ»βήΚ"ΓTΒ€ξIψmΖuSc΅gδYUe­έJ‘΅6gͺ4ΧΊ²§6ΊŒPkΗY"­χsώ”•A΅mΈ₯"5±kž„|.θ‰ΙφΧj¬–‘α >ά”Ή-,?Jαg6ožώΔΜΜΞΩαΑ§‡ε[χ·Ν0.Y eΆ=g£μ–—ΖΥ°N@˜œΖiA…ΒͺΒΗλA¦q[g$%9#ΜIφZΤΚ‘ηΙq|_ς°ν^Α*K£Ήs-{4J»©§ψ;ƒ¨ΓΠ­ξ< φ3ς‹ώd›!`ͺεtrσ͟Θ1μd΅Ϋoˆ’U„όœΓ­:AΠCEˆ˜<θΝΌΐp©f?‘j>‘rKE‘P“UΛ'eŊQx3ιGYuΣz­w*1°Q7ΥΏœ]#Œ€ΎͺΜJ²9AfΗΠ½T,ΑœwΈ‹ζDͺga€&kWŒpμšTQΑγL…>LΦ42 sI|·0.nώίs²tΫΆμE w΅ο†€!pI#`ϊ9ήΎ³Qv,kQDρΰ!δͺ±B]ΖͺgΞgn½rκ‹Φ‰„Z”΅± #k$h‰[2§J1ΎŒN‹T‚Œ¦•μhšχχx>γh;Hκx’Ž&DC‹Q§}·L4“z˜•€#|π=3‘ ’hΩΧΒσT¦ζάΌ"’œςK” PŸΗΎQβ8ύ€₯>1˜Άε€›ίvγτZ-μΣψ‘9Œm†€!`\ 2 WZγ΅)άΞΛΥ.— μ„$χ[Τ+ˆ.YŠ(ΛX<δΤΑYyςώCς؁Ž€&ΒqXβ„„ΧȁΦΖŠ~Z¦Πςμ…Ϊ7Cΐ0. ΫfιΕ`σς•υIJdή κp6QO²ΧiJŸαR=¦f’*tχTKŽ>qBΕϋά:΅±fΊkƒ ±³mιv4η™ϊΙΚ]”'ήPD” ηYνƒˆ'jέ £$œ‰€Σ³λ ’Vlι=Ι”i„+V©‘^Ϊ‘ΦbGŽ­“tΤ W΅’lMίPYƒγ1ϋ›γκ±τ›ZFhΑ6CΐΈΰΔQ|•«½:ώϊšzy.…lυMGrG4 F4πωιά€`N";λG‰ζ¬γUζ>—Ϊ§<Φγ›NΙ‡-|Σ]κ0M…]])δ[–%=LϊΐήA­Φ8Pe:!GŸ@Qi3:ά&δϊ-eιWCΌ'°ΘΥ†΄˜γ2Γ%³|d―Oλ9ΟΟμ g>UΥ‘ {9—§2ώ w€Ϋm μ;³`όs0 Η·Ap‡fAοvβΐ«φο%^’NεlΥq8GžŒδ_ΓsCZO.¦ΔΨi›ŸΞΏRhΥŒ–‘v­―m-μύΖνJGDξσγΜΡψ——5›–Ι-―ή Λ—ώΏCrοŸ?*{ŸμP—uΒaBΩΠΈͺ9Dα($ŸJMI3Y΅n»G1ΦΩ…Pc–:KœK- ƒ]T)ο1 ‘A1τ$ιραβωΧ|`ΓG§>τ„C‡ΈΎΚ3ω·ΑΕ6 Cΰ| ΰ–―κ/Ά3υ؁@gςƒ.θAHέJ΄¦pdͺ«m¬ΞEeΘρ?²ΉΤCJ]φ|(3κ2€9FΪ©AyζιTΓ‚ŸYή›¦I„ŠI]οaΠPΈnΓ2 ΗφΤ猜Eκσ°rθρ…x»¬‘Ϊ›’V«}C―ί΄==Lρΰ|„¨g$J’$η—ώΥΦ­ *τWtΔ7ΧΩK—e›!`\Zώ6οΧ&² ΥV•Βώ<…»Σgq2Šς1΅ͺ,K—1Eδπώ5UΖΊ¨yΪ0¨ž:Θ+ΕΪ­:DfΙP"­ΚtΊάl‡²ΑEΉvσ Ήι{―’U·¬¦π¦21^–/©H‘sΦ %³ ¨+4j+bεΨEU.R˜GK[eXΐ8'( h\Δ—­-†₯61NQAϊœ·ΗRgΔre;ΟyQZ*|΅άœΣΑβ;…ͺ_Œ7π€Ων²Ϋεw΅‚Ά†ΐσ‹ΐ™;©ζΦΟ΅΅JRASδdliŽϊ ©šώek›Ϊ2tl6a…UΉ L½EτHγGlΠͺάQΎΜ, γhΪkB:‘ 1³Α]ΘΉO],2”eŚ,,t‰mΙK±ΣνxΣ9|°%ψG_?Ξy8wL» ‚K xŠX‘± J”S³Ζ›fγΓΩW›΅7FΟ₯ͺ‰Vn^2{ΟK£ƒμΆM»NΝ ύόώΩΩ s‰ΐ™Ε¦syΘζ±ΚŽΏ?dIqΎΧ'¨?J½ΐKσ7mΞφƒOΤΣz›)…N?ν2€DG©θ‚ ζv [ )§ϊ1 5—ΠP\s<ξΑA— εΤΟi‘œOi3a―$ {μΝΎήx)Όj<[5’–rΜΔ]`)°˜ϊιnGβNZŽ[ιXάN+νNZƒΙW½8υΣ΄β%ι«–K“tœλ*GΞι‹βωψ―‘ή΄9ΒνσŽŸFnt­Ύk›Ά §€½0ίAϋ­ CΰβE`ΈϊυO|­ΤιvΧk¬³ψy₯»Œτ£Ψρ;…cωIΘ…ϋre§4Zu&FΚNΉZqœ’ΉažΠ^>έΘ‘v=ίΙηςtNj-Ayžΰ£s‹gωΚ ηE·¬sV―™tΖ–Œ:[Ά¬už<ΈθάuΧ—ϊΙØ¦ϋŽŸγy‰ΆƒksΙ8Οη<ΙόEτ\ŒtυΈόΜω8 —\Ά.l^―ƒ’ΈΕL¬ό+―ίϊαΣDφ© }ρΎ'φΚ CΰΉ0ϊΉΠα±½S;Ρp§₯ žŠέΨ©x9+‡ ˆHύvЬΛ[λ#“©¨ωE΄gBη2λ‘C8&₯V²;yΡ€#q›πe~Xx„έ KhnFΗ©Ν¨Αόμh&ΩϋέΑ@ž<4'ΝVq€+ŸύΫGδԁc8ώΈ”Jc45–9Yl©ΎUšuΠ f=ΐSEšŸ]Vφt7έSYυπ–ώK€²Ν6CΐΈ„0ύmή¬έψŸu—%u_\\rδFF`ιΒ!ί‡[–„/O“–ŸΎ‘ͺ.δμΒZ‘Ρ{x›ϊ«+Œϊ˜Z-bYΠ>q;Pκ6-τΊιu5ρό”ψs4 ¦£Ω9Η8M™‡F;œ3Χ••=WFΩwΙΖ%"W―δΒπ€=7.0", "h11>=0.8", "typing_extensions>=4.0; python_version < '3.11'", ] [project.optional-dependencies] standard = [ "colorama>=0.4;sys_platform == 'win32'", "httptools>=0.5.0", "python-dotenv>=0.13", "PyYAML>=5.1", "uvloop>=0.14.0,!=0.15.0,!=0.15.1; sys_platform != 'win32' and (sys_platform != 'cygwin' and platform_python_implementation != 'PyPy')", "watchfiles>=0.13", "websockets>=10.4", ] [project.scripts] uvicorn = "uvicorn.main:main" [project.urls] Changelog = "https://github.com/encode/uvicorn/blob/master/CHANGELOG.md" Funding = "https://github.com/sponsors/encode" Homepage = "https://www.uvicorn.org/" Source = "https://github.com/encode/uvicorn" [tool.hatch.version] path = "uvicorn/__init__.py" [tool.hatch.build.targets.sdist] include = ["/uvicorn"] [tool.ruff] select = ["E", "F", "I"] ignore = ["B904", "B028"] [tool.ruff.lint.isort] combine-as-imports = true [tool.mypy] warn_unused_ignores = true warn_redundant_casts = true show_error_codes = true disallow_untyped_defs = true ignore_missing_imports = true follow_imports = "silent" [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false check_untyped_defs = true [tool.pytest.ini_options] addopts = "-rxXs --strict-config --strict-markers" xfail_strict = true filterwarnings = [ "error", 'ignore: \"watchgod\" is deprecated\, you should switch to watchfiles \(`pip install watchfiles`\)\.:DeprecationWarning', "ignore:Uvicorn's native WSGI implementation is deprecated.*:DeprecationWarning", "ignore: 'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning" ] [tool.coverage.run] source_pkgs = ["uvicorn", "tests"] plugins = ["coverage_conditional_plugin"] omit = [ "uvicorn/workers.py", "uvicorn/__main__.py", ] [tool.coverage.report] precision = 2 fail_under = 98.35 show_missing = true skip_covered = true exclude_lines = [ "pragma: no cover", "pragma: nocover", "if TYPE_CHECKING:", "if typing.TYPE_CHECKING:", "raise NotImplementedError", ] [tool.coverage.coverage_conditional_plugin.omit] "sys_platform == 'win32'" = ["uvicorn/loops/uvloop.py"] "sys_platform != 'win32'" = ["uvicorn/loops/asyncio.py"] [tool.coverage.coverage_conditional_plugin.rules] py-win32 = "sys_platform == 'win32'" py-not-win32 = "sys_platform != 'win32'" py-linux = "sys_platform == 'linux'" py-darwin = "sys_platform == 'darwin'" py-gte-38 = "sys_version_info >= (3, 8)" py-lt-38 = "sys_version_info < (3, 8)" py-gte-39 = "sys_version_info >= (3, 9)" py-lt-39 = "sys_version_info < (3, 9)" py-gte-310 = "sys_version_info >= (3, 10)" py-lt-310 = "sys_version_info < (3, 10)" py-gte-311 = "sys_version_info >= (3, 11)" py-lt-311 = "sys_version_info < (3, 11)" uvicorn-0.27.1/requirements.txt000066400000000000000000000010701456166335300165640ustar00rootroot00000000000000-e .[standard] # TODO: Remove this after h11 makes a release. By this writing, h11 was on 0.14.0. # Core dependencies h11 @ git+https://github.com/python-hyper/h11.git@master # Explicit optionals a2wsgi==1.10.0 wsproto==1.2.0 websockets==12.0 # Packaging build==1.0.3 twine==4.0.2 # Testing ruff==0.1.15 pytest==8.0.0 pytest-mock==3.12.0 mypy==1.8.0 types-click==7.1.8 types-pyyaml==6.0.12.12 trustme==1.1.0 cryptography==42.0.2 coverage==7.4.1 coverage-conditional-plugin==0.9.0 httpx==0.26.0 watchgod==0.8.2 # Documentation mkdocs==1.5.3 mkdocs-material==9.5.6 uvicorn-0.27.1/scripts/000077500000000000000000000000001456166335300147715ustar00rootroot00000000000000uvicorn-0.27.1/scripts/build000077500000000000000000000002471456166335300160210ustar00rootroot00000000000000#!/bin/sh -e if [ -d 'venv' ] ; then PREFIX="venv/bin/" else PREFIX="" fi set -x ${PREFIX}python -m build ${PREFIX}twine check dist/* ${PREFIX}mkdocs build uvicorn-0.27.1/scripts/check000077500000000000000000000005311456166335300157730ustar00rootroot00000000000000#!/bin/sh -e export PREFIX="" if [ -d 'venv' ] ; then export PREFIX="venv/bin/" export PATH=${PREFIX}:${PATH} fi export SOURCE_FILES="uvicorn tests" set -x ./scripts/sync-version ${PREFIX}ruff format --check --diff $SOURCE_FILES ${PREFIX}mypy $SOURCE_FILES ${PREFIX}ruff check $SOURCE_FILES ${PREFIX}python -m tools.cli_usage --check uvicorn-0.27.1/scripts/coverage000077500000000000000000000002351456166335300165120ustar00rootroot00000000000000#!/bin/sh -e export PREFIX="" if [ -d 'venv' ]; then export PREFIX="venv/bin/" fi export SOURCE_FILES="uvicorn tests" set -x ${PREFIX}coverage report uvicorn-0.27.1/scripts/docs000077500000000000000000000001501456166335300156430ustar00rootroot00000000000000#!/bin/sh -e PREFIX="" if [ -d "venv" ] ; then PREFIX="venv/bin/" fi set -x ${PREFIX}mkdocs "$@" uvicorn-0.27.1/scripts/install000077500000000000000000000005601456166335300163660ustar00rootroot00000000000000#!/bin/sh -e # Use the Python executable provided from the `-p` option, or a default. [ "$1" = "-p" ] && PYTHON=$2 || PYTHON="python3" REQUIREMENTS="requirements.txt" VENV="venv" set -x if [ -z "$GITHUB_ACTIONS" ]; then "$PYTHON" -m venv "$VENV" PIP="$VENV/bin/pip" else PIP="$PYTHON -m pip" fi ${PIP} install -U pip ${PIP} install -r "$REQUIREMENTS" uvicorn-0.27.1/scripts/lint000077500000000000000000000004171456166335300156670ustar00rootroot00000000000000#!/bin/sh -e export PREFIX="" if [ -d 'venv' ] ; then export PREFIX="venv/bin/" export PATH=${PREFIX}:${PATH} fi export SOURCE_FILES="uvicorn tests" set -x ${PREFIX}ruff format $SOURCE_FILES ${PREFIX}ruff --fix $SOURCE_FILES ${PREFIX}python -m tools.cli_usage uvicorn-0.27.1/scripts/publish000077500000000000000000000011171456166335300163650ustar00rootroot00000000000000#!/bin/sh -e VERSION_FILE="uvicorn/__init__.py" if [ -d 'venv' ] ; then PREFIX="venv/bin/" else PREFIX="" fi if [ ! -z "$GITHUB_ACTIONS" ]; then git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --local user.name "GitHub Action" VERSION=`grep __version__ ${VERSION_FILE} | grep -o '[0-9][^"]*'` if [ "refs/tags/${VERSION}" != "${GITHUB_REF}" ] ; then echo "GitHub Ref '${GITHUB_REF}' did not match package version '${VERSION}'" exit 1 fi fi set -x ${PREFIX}twine upload dist/* ${PREFIX}mkdocs gh-deploy --force uvicorn-0.27.1/scripts/sync-version000077500000000000000000000006131456166335300173560ustar00rootroot00000000000000#!/bin/sh -e SEMVER_REGEX="([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?" CHANGELOG_VERSION=$(grep -o -E $SEMVER_REGEX CHANGELOG.md | head -1) VERSION=$(grep -o -E $SEMVER_REGEX uvicorn/__init__.py | head -1) if [ "$CHANGELOG_VERSION" != "$VERSION" ]; then echo "Version in changelog does not match version in uvicorn/__init__.py!" exit 1 fi uvicorn-0.27.1/scripts/test000077500000000000000000000004011456166335300156710ustar00rootroot00000000000000#!/bin/sh export PREFIX="" if [ -d 'venv' ]; then export PREFIX="venv/bin/" fi set -ex if [ -z $GITHUB_ACTIONS ]; then scripts/check fi ${PREFIX}coverage run --debug config -m pytest "$@" if [ -z $GITHUB_ACTIONS ]; then scripts/coverage fi uvicorn-0.27.1/tests/000077500000000000000000000000001456166335300144445ustar00rootroot00000000000000uvicorn-0.27.1/tests/__init__.py000066400000000000000000000000001456166335300165430ustar00rootroot00000000000000uvicorn-0.27.1/tests/conftest.py000066400000000000000000000201051456166335300166410ustar00rootroot00000000000000import contextlib import importlib.util import os import socket import ssl from copy import deepcopy from hashlib import md5 from pathlib import Path from tempfile import TemporaryDirectory from threading import Thread from time import sleep from uuid import uuid4 import pytest try: import trustme from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization HAVE_TRUSTME = True except ImportError: # pragma: no cover HAVE_TRUSTME = False from uvicorn.config import LOGGING_CONFIG from uvicorn.importer import import_from_string # Note: We explicitly turn the propagate on just for tests, because pytest # caplog not able to capture no-propagate loggers. # # And the caplog_for_logger helper also not work on test config cases, because # when create Config object, Config.configure_logging will remove caplog.handler. # # The simple solution is set propagate=True before execute tests. # # See also: https://github.com/pytest-dev/pytest/issues/3697 LOGGING_CONFIG["loggers"]["uvicorn"]["propagate"] = True @pytest.fixture def tls_certificate_authority() -> "trustme.CA": if not HAVE_TRUSTME: pytest.skip("trustme not installed") # pragma: no cover return trustme.CA() @pytest.fixture def tls_certificate(tls_certificate_authority: "trustme.CA") -> "trustme.LeafCert": return tls_certificate_authority.issue_cert( "localhost", "127.0.0.1", "::1", ) @pytest.fixture def tls_ca_certificate_pem_path(tls_certificate_authority: "trustme.CA"): with tls_certificate_authority.cert_pem.tempfile() as ca_cert_pem: yield ca_cert_pem @pytest.fixture def tls_ca_certificate_private_key_path(tls_certificate_authority: "trustme.CA"): with tls_certificate_authority.private_key_pem.tempfile() as private_key: yield private_key @pytest.fixture def tls_certificate_private_key_encrypted_path(tls_certificate): private_key = serialization.load_pem_private_key( tls_certificate.private_key_pem.bytes(), password=None, backend=default_backend(), ) encrypted_key = private_key.private_bytes( serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL, serialization.BestAvailableEncryption(b"uvicorn password for the win"), ) with trustme.Blob(encrypted_key).tempfile() as private_encrypted_key: yield private_encrypted_key @pytest.fixture def tls_certificate_private_key_path(tls_certificate: "trustme.CA"): with tls_certificate.private_key_pem.tempfile() as private_key: yield private_key @pytest.fixture def tls_certificate_key_and_chain_path(tls_certificate: "trustme.LeafCert"): with tls_certificate.private_key_and_cert_chain_pem.tempfile() as cert_pem: yield cert_pem @pytest.fixture def tls_certificate_server_cert_path(tls_certificate: "trustme.LeafCert"): with tls_certificate.cert_chain_pems[0].tempfile() as cert_pem: yield cert_pem @pytest.fixture def tls_ca_ssl_context(tls_certificate_authority: "trustme.CA") -> ssl.SSLContext: ssl_ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) tls_certificate_authority.configure_trust(ssl_ctx) return ssl_ctx @pytest.fixture(scope="package") def reload_directory_structure(tmp_path_factory: pytest.TempPathFactory): """ This fixture creates a directory structure to enable reload parameter tests The fixture has the following structure: root β”œβ”€β”€ [app, app_first, app_second, app_third] β”‚Β Β  β”œβ”€β”€ css β”‚Β Β  β”‚Β Β  └── main.css β”‚Β Β  β”œβ”€β”€ js β”‚Β Β  β”‚Β Β  └── main.js β”‚Β Β  β”œβ”€β”€ src β”‚Β Β  β”‚Β Β  └── main.py β”‚Β Β  └── sub β”‚Β Β  └── sub.py β”œβ”€β”€ ext β”‚Β Β  └── ext.jpg β”œβ”€β”€ .dotted β”œβ”€β”€ .dotted_dir β”‚Β Β  └── file.txt └── main.py """ root = tmp_path_factory.mktemp("reload_directory") apps = ["app", "app_first", "app_second", "app_third"] root_file = root / "main.py" root_file.touch() dotted_file = root / ".dotted" dotted_file.touch() dotted_dir = root / ".dotted_dir" dotted_dir.mkdir() dotted_dir_file = dotted_dir / "file.txt" dotted_dir_file.touch() for app in apps: app_path = root / app app_path.mkdir() dir_files = [ ("src", ["main.py"]), ("js", ["main.js"]), ("css", ["main.css"]), ("sub", ["sub.py"]), ] for directory, files in dir_files: directory_path = app_path / directory directory_path.mkdir() for file in files: file_path = directory_path / file file_path.touch() ext_dir = root / "ext" ext_dir.mkdir() ext_file = ext_dir / "ext.jpg" ext_file.touch() yield root @pytest.fixture def anyio_backend() -> str: return "asyncio" @pytest.fixture(scope="function") def logging_config() -> dict: return deepcopy(LOGGING_CONFIG) @pytest.fixture def short_socket_name(tmp_path, tmp_path_factory): # pragma: py-win32 max_sock_len = 100 socket_filename = "my.sock" identifier = f"{uuid4()}-" identifier_len = len(identifier.encode()) tmp_dir = Path("/tmp").resolve() os_tmp_dir = Path(os.getenv("TMPDIR", "/tmp")).resolve() basetemp = Path( str(tmp_path_factory.getbasetemp()), ).resolve() hash_basetemp = md5( str(basetemp).encode(), ).hexdigest() def make_tmp_dir(base_dir): return TemporaryDirectory( dir=str(base_dir), prefix="p-", suffix=f"-{hash_basetemp}", ) paths = basetemp, os_tmp_dir, tmp_dir for _num, tmp_dir_path in enumerate(paths, 1): with make_tmp_dir(tmp_dir_path) as tmpd: tmpd = Path(tmpd).resolve() sock_path = str(tmpd / socket_filename) sock_path_len = len(sock_path.encode()) if sock_path_len <= max_sock_len: if max_sock_len - sock_path_len >= identifier_len: # pragma: no cover sock_path = str(tmpd / "".join((identifier, socket_filename))) yield sock_path return def sleep_touch(*paths: Path): sleep(0.1) for p in paths: p.touch() @pytest.fixture def touch_soon(): threads = [] def start(*paths: Path): thread = Thread(target=sleep_touch, args=paths) thread.start() threads.append(thread) yield start for t in threads: t.join() def _unused_port(socket_type: int) -> int: """Find an unused localhost port from 1024-65535 and return it.""" with contextlib.closing(socket.socket(type=socket_type)) as sock: sock.bind(("127.0.0.1", 0)) return sock.getsockname()[1] # This was copied from pytest-asyncio. # Ref.: https://github.com/pytest-dev/pytest-asyncio/blob/25d9592286682bc6dbfbf291028ff7a9594cf283/pytest_asyncio/plugin.py#L525-L527 # noqa: E501 @pytest.fixture def unused_tcp_port() -> int: return _unused_port(socket.SOCK_STREAM) @pytest.fixture( params=[ pytest.param( "uvicorn.protocols.websockets.wsproto_impl:WSProtocol", marks=pytest.mark.skipif( not importlib.util.find_spec("wsproto"), reason="wsproto not installed." ), id="wsproto", ), pytest.param( "uvicorn.protocols.websockets.websockets_impl:WebSocketProtocol", id="websockets", ), ] ) def ws_protocol_cls(request: pytest.FixtureRequest): return import_from_string(request.param) @pytest.fixture( params=[ pytest.param( "uvicorn.protocols.http.httptools_impl:HttpToolsProtocol", marks=pytest.mark.skipif( not importlib.util.find_spec("httptools"), reason="httptools not installed.", ), id="httptools", ), pytest.param("uvicorn.protocols.http.h11_impl:H11Protocol", id="h11"), ] ) def http_protocol_cls(request: pytest.FixtureRequest): return import_from_string(request.param) uvicorn-0.27.1/tests/importer/000077500000000000000000000000001456166335300163055ustar00rootroot00000000000000uvicorn-0.27.1/tests/importer/__init__.py000066400000000000000000000000001456166335300204040ustar00rootroot00000000000000uvicorn-0.27.1/tests/importer/circular_import_a.py000066400000000000000000000001451456166335300223550ustar00rootroot00000000000000# Used by test_importer.py from .circular_import_b import foo # noqa bar = 123 # pragma: no cover uvicorn-0.27.1/tests/importer/circular_import_b.py000066400000000000000000000001451456166335300223560ustar00rootroot00000000000000# Used by test_importer.py from .circular_import_a import bar # noqa foo = 123 # pragma: no cover uvicorn-0.27.1/tests/importer/raise_import_error.py000066400000000000000000000001101456166335300225550ustar00rootroot00000000000000# Used by test_importer.py myattr = 123 import does_not_exist # noqa uvicorn-0.27.1/tests/importer/test_importer.py000066400000000000000000000033361456166335300215640ustar00rootroot00000000000000import pytest from uvicorn.importer import ImportFromStringError, import_from_string def test_invalid_format() -> None: with pytest.raises(ImportFromStringError) as exc_info: import_from_string("example:") expected = 'Import string "example:" must be in format ":".' assert expected in str(exc_info.value) def test_invalid_module() -> None: with pytest.raises(ImportFromStringError) as exc_info: import_from_string("module_does_not_exist:myattr") expected = 'Could not import module "module_does_not_exist".' assert expected in str(exc_info.value) def test_invalid_attr() -> None: with pytest.raises(ImportFromStringError) as exc_info: import_from_string("tempfile:attr_does_not_exist") expected = 'Attribute "attr_does_not_exist" not found in module "tempfile".' assert expected in str(exc_info.value) def test_internal_import_error() -> None: with pytest.raises(ImportError): import_from_string("tests.importer.raise_import_error:myattr") def test_valid_import() -> None: instance = import_from_string("tempfile:TemporaryFile") from tempfile import TemporaryFile assert instance == TemporaryFile def test_no_import_needed() -> None: from tempfile import TemporaryFile instance = import_from_string(TemporaryFile) assert instance == TemporaryFile def test_circular_import_error() -> None: with pytest.raises(ImportError) as exc_info: import_from_string("tests.importer.circular_import_a:bar") expected = ( "cannot import name 'bar' from partially initialized module " "'tests.importer.circular_import_a' (most likely due to a circular import)" ) assert expected in str(exc_info.value) uvicorn-0.27.1/tests/middleware/000077500000000000000000000000001456166335300165615ustar00rootroot00000000000000uvicorn-0.27.1/tests/middleware/test_logging.py000066400000000000000000000216001456166335300216170ustar00rootroot00000000000000from __future__ import annotations import contextlib import logging import socket import sys import typing import httpx import pytest import websockets import websockets.client from tests.utils import run_server from uvicorn import Config if typing.TYPE_CHECKING: import sys from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol from uvicorn.protocols.websockets.wsproto_impl import WSProtocol as _WSProtocol if sys.version_info >= (3, 10): # pragma: no cover from typing import TypeAlias else: # pragma: no cover from typing_extensions import TypeAlias WSProtocol: TypeAlias = "type[WebSocketProtocol | _WSProtocol]" @contextlib.contextmanager def caplog_for_logger(caplog, logger_name): logger = logging.getLogger(logger_name) logger.propagate, old_propagate = False, logger.propagate logger.addHandler(caplog.handler) try: yield caplog finally: logger.removeHandler(caplog.handler) logger.propagate = old_propagate async def app(scope, receive, send): assert scope["type"] == "http" await send({"type": "http.response.start", "status": 204, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) @pytest.mark.anyio async def test_trace_logging(caplog, logging_config, unused_tcp_port: int): config = Config( app=app, log_level="trace", log_config=logging_config, lifespan="auto", port=unused_tcp_port, ) with caplog_for_logger(caplog, "uvicorn.asgi"): async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 messages = [ record.message for record in caplog.records if record.name == "uvicorn.asgi" ] assert "ASGI [1] Started scope=" in messages.pop(0) assert "ASGI [1] Raised exception" in messages.pop(0) assert "ASGI [2] Started scope=" in messages.pop(0) assert "ASGI [2] Send " in messages.pop(0) assert "ASGI [2] Send " in messages.pop(0) assert "ASGI [2] Completed" in messages.pop(0) @pytest.mark.anyio async def test_trace_logging_on_http_protocol( http_protocol_cls, caplog, logging_config, unused_tcp_port: int ): config = Config( app=app, log_level="trace", http=http_protocol_cls, log_config=logging_config, port=unused_tcp_port, ) with caplog_for_logger(caplog, "uvicorn.error"): async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 messages = [ record.message for record in caplog.records if record.name == "uvicorn.error" ] assert any(" - HTTP connection made" in message for message in messages) assert any(" - HTTP connection lost" in message for message in messages) @pytest.mark.anyio async def test_trace_logging_on_ws_protocol( ws_protocol_cls: WSProtocol, caplog, logging_config, unused_tcp_port: int, ): async def websocket_app(scope, receive, send): assert scope["type"] == "websocket" while True: message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) elif message["type"] == "websocket.disconnect": break async def open_connection(url): async with websockets.client.connect(url) as websocket: return websocket.open config = Config( app=websocket_app, log_level="trace", log_config=logging_config, ws=ws_protocol_cls, port=unused_tcp_port, ) with caplog_for_logger(caplog, "uvicorn.error"): async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert is_open messages = [ record.message for record in caplog.records if record.name == "uvicorn.error" ] assert any(" - Upgrading to WebSocket" in message for message in messages) assert any(" - WebSocket connection made" in message for message in messages) assert any(" - WebSocket connection lost" in message for message in messages) @pytest.mark.anyio @pytest.mark.parametrize("use_colors", [(True), (False), (None)]) async def test_access_logging(use_colors, caplog, logging_config, unused_tcp_port: int): config = Config( app=app, use_colors=use_colors, log_config=logging_config, port=unused_tcp_port ) with caplog_for_logger(caplog, "uvicorn.access"): async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 messages = [ record.message for record in caplog.records if record.name == "uvicorn.access" ] assert '"GET / HTTP/1.1" 204' in messages.pop() @pytest.mark.anyio @pytest.mark.parametrize("use_colors", [(True), (False)]) async def test_default_logging( use_colors, caplog, logging_config, unused_tcp_port: int ): config = Config( app=app, use_colors=use_colors, log_config=logging_config, port=unused_tcp_port ) with caplog_for_logger(caplog, "uvicorn.access"): async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 messages = [ record.message for record in caplog.records if "uvicorn" in record.name ] assert "Started server process" in messages.pop(0) assert "Waiting for application startup" in messages.pop(0) assert "ASGI 'lifespan' protocol appears unsupported" in messages.pop(0) assert "Application startup complete" in messages.pop(0) assert "Uvicorn running on http://127.0.0.1" in messages.pop(0) assert '"GET / HTTP/1.1" 204' in messages.pop(0) assert "Shutting down" in messages.pop(0) @pytest.mark.anyio @pytest.mark.skipif(sys.platform == "win32", reason="require unix-like system") async def test_running_log_using_uds( caplog, short_socket_name, unused_tcp_port: int ): # pragma: py-win32 config = Config(app=app, uds=short_socket_name, port=unused_tcp_port) with caplog_for_logger(caplog, "uvicorn.access"): async with run_server(config): ... messages = [record.message for record in caplog.records if "uvicorn" in record.name] assert ( f"Uvicorn running on unix socket {short_socket_name} (Press CTRL+C to quit)" in messages ) @pytest.mark.anyio @pytest.mark.skipif(sys.platform == "win32", reason="require unix-like system") async def test_running_log_using_fd(caplog, unused_tcp_port: int): # pragma: py-win32 with contextlib.closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: fd = sock.fileno() config = Config(app=app, fd=fd, port=unused_tcp_port) with caplog_for_logger(caplog, "uvicorn.access"): async with run_server(config): ... sockname = sock.getsockname() messages = [record.message for record in caplog.records if "uvicorn" in record.name] assert f"Uvicorn running on socket {sockname} (Press CTRL+C to quit)" in messages @pytest.mark.anyio async def test_unknown_status_code(caplog, unused_tcp_port: int): async def app(scope, receive, send): assert scope["type"] == "http" await send({"type": "http.response.start", "status": 599, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) config = Config(app=app, port=unused_tcp_port) with caplog_for_logger(caplog, "uvicorn.access"): async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 599 messages = [ record.message for record in caplog.records if record.name == "uvicorn.access" ] assert '"GET / HTTP/1.1" 599' in messages.pop() @pytest.mark.anyio async def test_server_start_with_port_zero(caplog: pytest.LogCaptureFixture): config = Config(app=app, port=0) async with run_server(config) as server: server = server.servers[0] sock = server.sockets[0] host, port = sock.getsockname() messages = [record.message for record in caplog.records if "uvicorn" in record.name] assert f"Uvicorn running on http://{host}:{port} (Press CTRL+C to quit)" in messages uvicorn-0.27.1/tests/middleware/test_message_logger.py000066400000000000000000000045441456166335300231640ustar00rootroot00000000000000import httpx import pytest from tests.middleware.test_logging import caplog_for_logger from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.middleware.message_logger import MessageLoggerMiddleware @pytest.mark.anyio async def test_message_logger(caplog): async def app(scope, receive, send): await receive() await send({"type": "http.response.start", "status": 200, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) with caplog_for_logger(caplog, "uvicorn.asgi"): caplog.set_level(TRACE_LOG_LEVEL, logger="uvicorn.asgi") caplog.set_level(TRACE_LOG_LEVEL) app = MessageLoggerMiddleware(app) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: response = await client.get("/") assert response.status_code == 200 messages = [record.msg % record.args for record in caplog.records] assert sum(["ASGI [1] Started" in message for message in messages]) == 1 assert sum(["ASGI [1] Send" in message for message in messages]) == 2 assert sum(["ASGI [1] Receive" in message for message in messages]) == 1 assert sum(["ASGI [1] Completed" in message for message in messages]) == 1 assert ( sum(["ASGI [1] Raised exception" in message for message in messages]) == 0 ) @pytest.mark.anyio async def test_message_logger_exc(caplog): async def app(scope, receive, send): raise RuntimeError() with caplog_for_logger(caplog, "uvicorn.asgi"): caplog.set_level(TRACE_LOG_LEVEL, logger="uvicorn.asgi") caplog.set_level(TRACE_LOG_LEVEL) app = MessageLoggerMiddleware(app) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: with pytest.raises(RuntimeError): await client.get("/") messages = [record.msg % record.args for record in caplog.records] assert sum(["ASGI [1] Started" in message for message in messages]) == 1 assert sum(["ASGI [1] Send" in message for message in messages]) == 0 assert sum(["ASGI [1] Receive" in message for message in messages]) == 0 assert sum(["ASGI [1] Completed" in message for message in messages]) == 0 assert ( sum(["ASGI [1] Raised exception" in message for message in messages]) == 1 ) uvicorn-0.27.1/tests/middleware/test_proxy_headers.py000066400000000000000000000116501456166335300230510ustar00rootroot00000000000000from typing import TYPE_CHECKING, List, Type, Union import httpx import pytest import websockets.client from tests.response import Response from tests.utils import run_server from uvicorn._types import ASGIReceiveCallable, ASGISendCallable, Scope from uvicorn.config import Config from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware if TYPE_CHECKING: from uvicorn.protocols.http.h11_impl import H11Protocol from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol from uvicorn.protocols.websockets.wsproto_impl import WSProtocol async def app( scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable, ) -> None: scheme = scope["scheme"] # type: ignore host, port = scope["client"] # type: ignore addr = "%s://%s:%d" % (scheme, host, port) response = Response("Remote: " + addr, media_type="text/plain") await response(scope, receive, send) @pytest.mark.anyio @pytest.mark.parametrize( ("trusted_hosts", "response_text"), [ # always trust ("*", "Remote: https://1.2.3.4:0"), # trusted proxy ("127.0.0.1", "Remote: https://1.2.3.4:0"), (["127.0.0.1"], "Remote: https://1.2.3.4:0"), # trusted proxy list (["127.0.0.1", "10.0.0.1"], "Remote: https://1.2.3.4:0"), ("127.0.0.1, 10.0.0.1", "Remote: https://1.2.3.4:0"), # request from untrusted proxy ("192.168.0.1", "Remote: http://127.0.0.1:123"), ], ) async def test_proxy_headers_trusted_hosts( trusted_hosts: Union[List[str], str], response_text: str ) -> None: app_with_middleware = ProxyHeadersMiddleware(app, trusted_hosts=trusted_hosts) async with httpx.AsyncClient( app=app_with_middleware, base_url="http://testserver" ) as client: headers = {"X-Forwarded-Proto": "https", "X-Forwarded-For": "1.2.3.4"} response = await client.get("/", headers=headers) assert response.status_code == 200 assert response.text == response_text @pytest.mark.anyio @pytest.mark.parametrize( ("trusted_hosts", "response_text"), [ # always trust ("*", "Remote: https://1.2.3.4:0"), # all proxies are trusted ( ["127.0.0.1", "10.0.2.1", "192.168.0.2"], "Remote: https://1.2.3.4:0", ), # order doesn't matter ( ["10.0.2.1", "192.168.0.2", "127.0.0.1"], "Remote: https://1.2.3.4:0", ), # should set first untrusted as remote address (["192.168.0.2", "127.0.0.1"], "Remote: https://10.0.2.1:0"), ], ) async def test_proxy_headers_multiple_proxies( trusted_hosts: Union[List[str], str], response_text: str ) -> None: app_with_middleware = ProxyHeadersMiddleware(app, trusted_hosts=trusted_hosts) async with httpx.AsyncClient( app=app_with_middleware, base_url="http://testserver" ) as client: headers = { "X-Forwarded-Proto": "https", "X-Forwarded-For": "1.2.3.4, 10.0.2.1, 192.168.0.2", } response = await client.get("/", headers=headers) assert response.status_code == 200 assert response.text == response_text @pytest.mark.anyio async def test_proxy_headers_invalid_x_forwarded_for() -> None: app_with_middleware = ProxyHeadersMiddleware(app, trusted_hosts="*") async with httpx.AsyncClient( app=app_with_middleware, base_url="http://testserver" ) as client: headers = httpx.Headers( { "X-Forwarded-Proto": "https", "X-Forwarded-For": "1.2.3.4, \xf0\xfd\xfd\xfd", }, encoding="latin-1", ) response = await client.get("/", headers=headers) assert response.status_code == 200 assert response.text == "Remote: https://1.2.3.4:0" @pytest.mark.anyio async def test_proxy_headers_websocket_x_forwarded_proto( ws_protocol_cls: "Type[WSProtocol | WebSocketProtocol]", http_protocol_cls: "Type[H11Protocol | HttpToolsProtocol]", unused_tcp_port: int, ) -> None: async def websocket_app(scope, receive, send): scheme = scope["scheme"] host, port = scope["client"] addr = "%s://%s:%d" % (scheme, host, port) await send({"type": "websocket.accept"}) await send({"type": "websocket.send", "text": addr}) app_with_middleware = ProxyHeadersMiddleware(websocket_app, trusted_hosts="*") config = Config( app=app_with_middleware, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): url = f"ws://127.0.0.1:{unused_tcp_port}" headers = {"X-Forwarded-Proto": "https", "X-Forwarded-For": "1.2.3.4"} async with websockets.client.connect(url, extra_headers=headers) as websocket: data = await websocket.recv() assert data == "wss://1.2.3.4:0" uvicorn-0.27.1/tests/middleware/test_wsgi.py000066400000000000000000000116651456166335300211540ustar00rootroot00000000000000import io import sys from typing import AsyncGenerator, Callable, List import a2wsgi import httpx import pytest from uvicorn._types import Environ, HTTPRequestEvent, HTTPScope, StartResponse from uvicorn.middleware import wsgi def hello_world(environ: Environ, start_response: StartResponse) -> List[bytes]: status = "200 OK" output = b"Hello World!\n" headers = [ ("Content-Type", "text/plain; charset=utf-8"), ("Content-Length", str(len(output))), ] start_response(status, headers, None) return [output] def echo_body(environ: Environ, start_response: StartResponse) -> List[bytes]: status = "200 OK" output = environ["wsgi.input"].read() headers = [ ("Content-Type", "text/plain; charset=utf-8"), ("Content-Length", str(len(output))), ] start_response(status, headers, None) return [output] def raise_exception(environ: Environ, start_response: StartResponse) -> List[bytes]: raise RuntimeError("Something went wrong") def return_exc_info(environ: Environ, start_response: StartResponse) -> List[bytes]: try: raise RuntimeError("Something went wrong") except RuntimeError: status = "500 Internal Server Error" output = b"Internal Server Error" headers = [ ("Content-Type", "text/plain; charset=utf-8"), ("Content-Length", str(len(output))), ] start_response(status, headers, sys.exc_info()) # type: ignore[arg-type] return [output] @pytest.fixture(params=[wsgi._WSGIMiddleware, a2wsgi.WSGIMiddleware]) # type: ignore def wsgi_middleware(request: pytest.FixtureRequest) -> Callable: return request.param @pytest.mark.anyio async def test_wsgi_get(wsgi_middleware: Callable) -> None: app = wsgi_middleware(hello_world) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: response = await client.get("/") assert response.status_code == 200 assert response.text == "Hello World!\n" @pytest.mark.anyio async def test_wsgi_post(wsgi_middleware: Callable) -> None: app = wsgi_middleware(echo_body) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: response = await client.post("/", json={"example": 123}) assert response.status_code == 200 assert response.text == '{"example": 123}' @pytest.mark.anyio async def test_wsgi_put_more_body(wsgi_middleware: Callable) -> None: async def generate_body() -> AsyncGenerator[bytes, None]: for _ in range(1024): yield b"123456789abcdef\n" * 64 app = wsgi_middleware(echo_body) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: response = await client.put("/", content=generate_body()) assert response.status_code == 200 assert response.text == "123456789abcdef\n" * 64 * 1024 @pytest.mark.anyio async def test_wsgi_exception(wsgi_middleware: Callable) -> None: # Note that we're testing the WSGI app directly here. # The HTTP protocol implementations would catch this error and return 500. app = wsgi_middleware(raise_exception) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: with pytest.raises(RuntimeError): await client.get("/") @pytest.mark.anyio async def test_wsgi_exc_info(wsgi_middleware: Callable) -> None: # Note that we're testing the WSGI app directly here. # The HTTP protocol implementations would catch this error and return 500. app = wsgi_middleware(return_exc_info) async with httpx.AsyncClient(app=app, base_url="http://testserver") as client: with pytest.raises(RuntimeError): response = await client.get("/") app = wsgi_middleware(return_exc_info) transport = httpx.ASGITransport( app=app, raise_app_exceptions=False, ) async with httpx.AsyncClient( transport=transport, base_url="http://testserver" ) as client: response = await client.get("/") assert response.status_code == 500 assert response.text == "Internal Server Error" def test_build_environ_encoding() -> None: scope: "HTTPScope" = { "asgi": {"version": "3.0", "spec_version": "2.0"}, "scheme": "http", "raw_path": b"/\xe6\x96\x87%2Fall", "type": "http", "http_version": "1.1", "method": "GET", "path": "/ζ–‡/all", "root_path": "/ζ–‡", "client": None, "server": None, "query_string": b"a=123&b=456", "headers": [(b"key", b"value1"), (b"key", b"value2")], "extensions": {}, } message: "HTTPRequestEvent" = { "type": "http.request", "body": b"", "more_body": False, } environ = wsgi.build_environ(scope, message, io.BytesIO(b"")) assert environ["SCRIPT_NAME"] == "/ζ–‡".encode("utf8").decode("latin-1") assert environ["PATH_INFO"] == "/all".encode("utf8").decode("latin-1") assert environ["HTTP_KEY"] == "value1,value2" uvicorn-0.27.1/tests/protocols/000077500000000000000000000000001456166335300164705ustar00rootroot00000000000000uvicorn-0.27.1/tests/protocols/test_http.py000066400000000000000000001100641456166335300210620ustar00rootroot00000000000000from __future__ import annotations import logging import socket import threading import time from typing import TYPE_CHECKING, Any import pytest from tests.response import Response from uvicorn import Server from uvicorn._types import ASGIApplication, ASGIReceiveCallable, ASGISendCallable, Scope from uvicorn.config import WS_PROTOCOLS, Config from uvicorn.lifespan.off import LifespanOff from uvicorn.lifespan.on import LifespanOn from uvicorn.main import ServerState from uvicorn.protocols.http.h11_impl import H11Protocol try: from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol skip_if_no_httptools = pytest.mark.skipif(False, reason="httptools is installed") except ModuleNotFoundError: skip_if_no_httptools = pytest.mark.skipif(True, reason="httptools is not installed") if TYPE_CHECKING: import sys from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol from uvicorn.protocols.websockets.wsproto_impl import WSProtocol as _WSProtocol if sys.version_info >= (3, 10): # pragma: no cover from typing import TypeAlias else: # pragma: no cover from typing_extensions import TypeAlias HTTPProtocol: TypeAlias = "type[HttpToolsProtocol | H11Protocol]" WSProtocol: TypeAlias = "type[WebSocketProtocol | _WSProtocol]" WEBSOCKET_PROTOCOLS = WS_PROTOCOLS.keys() SIMPLE_GET_REQUEST = b"\r\n".join([b"GET / HTTP/1.1", b"Host: example.org", b"", b""]) SIMPLE_HEAD_REQUEST = b"\r\n".join([b"HEAD / HTTP/1.1", b"Host: example.org", b"", b""]) SIMPLE_POST_REQUEST = b"\r\n".join( [ b"POST / HTTP/1.1", b"Host: example.org", b"Content-Type: application/json", b"Content-Length: 18", b"", b'{"hello": "world"}', ] ) CONNECTION_CLOSE_REQUEST = b"\r\n".join( [b"GET / HTTP/1.1", b"Host: example.org", b"Connection: close", b"", b""] ) LARGE_POST_REQUEST = b"\r\n".join( [ b"POST / HTTP/1.1", b"Host: example.org", b"Content-Type: text/plain", b"Content-Length: 100000", b"", b"x" * 100000, ] ) START_POST_REQUEST = b"\r\n".join( [ b"POST / HTTP/1.1", b"Host: example.org", b"Content-Type: application/json", b"Content-Length: 18", b"", b"", ] ) FINISH_POST_REQUEST = b'{"hello": "world"}' HTTP10_GET_REQUEST = b"\r\n".join([b"GET / HTTP/1.0", b"Host: example.org", b"", b""]) GET_REQUEST_WITH_RAW_PATH = b"\r\n".join( [b"GET /one%2Ftwo HTTP/1.1", b"Host: example.org", b"", b""] ) UPGRADE_REQUEST = b"\r\n".join( [ b"GET / HTTP/1.1", b"Host: example.org", b"Connection: upgrade", b"Upgrade: websocket", b"Sec-WebSocket-Version: 11", b"", b"", ] ) UPGRADE_HTTP2_REQUEST = b"\r\n".join( [ b"GET / HTTP/1.1", b"Host: example.org", b"Connection: upgrade", b"Upgrade: h2c", b"Sec-WebSocket-Version: 11", b"", b"", ] ) INVALID_REQUEST_TEMPLATE = b"\r\n".join( [ b"%s", b"Host: example.org", b"", b"", ] ) GET_REQUEST_HUGE_HEADERS = [ b"".join( [ b"GET / HTTP/1.1\r\n", b"Host: example.org\r\n", b"Cookie: " + b"x" * 32 * 1024, ] ), b"".join([b"x" * 32 * 1024 + b"\r\n", b"\r\n", b"\r\n"]), ] class MockTransport: def __init__(self, sockname=None, peername=None, sslcontext=False): self.sockname = ("127.0.0.1", 8000) if sockname is None else sockname self.peername = ("127.0.0.1", 8001) if peername is None else peername self.sslcontext = sslcontext self.closed = False self.buffer = b"" self.read_paused = False def get_extra_info(self, key): return { "sockname": self.sockname, "peername": self.peername, "sslcontext": self.sslcontext, }.get(key) def write(self, data): assert not self.closed self.buffer += data def close(self): assert not self.closed self.closed = True def pause_reading(self): self.read_paused = True def resume_reading(self): self.read_paused = False def is_closing(self): return self.closed def clear_buffer(self): self.buffer = b"" def set_protocol(self, protocol): pass class MockTimerHandle: def __init__(self, loop_later_list, delay, callback, args): self.loop_later_list = loop_later_list self.delay = delay self.callback = callback self.args = args self.cancelled = False def cancel(self): if not self.cancelled: self.cancelled = True self.loop_later_list.remove(self) class MockLoop: def __init__(self): self._tasks = [] self._later = [] def create_task(self, coroutine): self._tasks.insert(0, coroutine) return MockTask() def call_later(self, delay, callback, *args): handle = MockTimerHandle(self._later, delay, callback, args) self._later.insert(0, handle) return handle async def run_one(self): return await self._tasks.pop() def run_later(self, with_delay): later = [] for timer_handle in self._later: if with_delay >= timer_handle.delay: timer_handle.callback(*timer_handle.args) else: later.append(timer_handle) self._later = later class MockTask: def add_done_callback(self, callback): pass def get_connected_protocol( app: ASGIApplication, http_protocol_cls: HTTPProtocol, lifespan: LifespanOff | LifespanOn | None = None, **kwargs: Any, ): loop = MockLoop() transport = MockTransport() config = Config(app=app, **kwargs) lifespan = lifespan or LifespanOff(config) server_state = ServerState() protocol = http_protocol_cls( config=config, server_state=server_state, app_state=lifespan.state, _loop=loop, # type: ignore ) protocol.connection_made(transport) # type: ignore return protocol @pytest.mark.anyio async def test_get_request(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer @pytest.mark.anyio @pytest.mark.parametrize("path", ["/", "/?foo", "/?foo=bar", "/?foo=bar&baz=1"]) async def test_request_logging( path: str, http_protocol_cls: HTTPProtocol, caplog: pytest.LogCaptureFixture ): get_request_with_query_string = b"\r\n".join( ["GET {} HTTP/1.1".format(path).encode("ascii"), b"Host: example.org", b"", b""] ) caplog.set_level(logging.INFO, logger="uvicorn.access") logging.getLogger("uvicorn.access").propagate = True app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, log_config=None) protocol.data_received(get_request_with_query_string) await protocol.loop.run_one() assert '"GET {} HTTP/1.1" 200'.format(path) in caplog.records[0].message @pytest.mark.anyio async def test_head_request(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_HEAD_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" not in protocol.transport.buffer @pytest.mark.anyio async def test_post_request(http_protocol_cls: HTTPProtocol): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): body = b"" more_body = True while more_body: message = await receive() assert message["type"] == "http.request" body += message.get("body", b"") more_body = message.get("more_body", False) response = Response(b"Body: " + body, media_type="text/plain") await response(scope, receive, send) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_POST_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b'Body: {"hello": "world"}' in protocol.transport.buffer @pytest.mark.anyio async def test_keepalive(http_protocol_cls: HTTPProtocol): app = Response(b"", status_code=204) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 204 No Content" in protocol.transport.buffer assert not protocol.transport.is_closing() @pytest.mark.anyio async def test_keepalive_timeout(http_protocol_cls: HTTPProtocol): app = Response(b"", status_code=204) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 204 No Content" in protocol.transport.buffer assert not protocol.transport.is_closing() protocol.loop.run_later(with_delay=1) assert not protocol.transport.is_closing() protocol.loop.run_later(with_delay=5) assert protocol.transport.is_closing() @pytest.mark.anyio async def test_keepalive_timeout_with_pipelined_requests( http_protocol_cls: HTTPProtocol, ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) protocol.data_received(SIMPLE_GET_REQUEST) # After processing the first request, the keep-alive task should be # disabled because the second request is not responded yet. await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer assert protocol.timeout_keep_alive_task is None # Process the second request and ensure that the keep-alive task # has been enabled again as the connection is now idle. protocol.transport.clear_buffer() await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer assert protocol.timeout_keep_alive_task is not None @pytest.mark.anyio async def test_close(http_protocol_cls: HTTPProtocol): app = Response(b"", status_code=204, headers={"connection": "close"}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 204 No Content" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_chunked_encoding( http_protocol_cls: HTTPProtocol, ): app = Response( b"Hello, world!", status_code=200, headers={"transfer-encoding": "chunked"} ) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"0\r\n\r\n" in protocol.transport.buffer assert not protocol.transport.is_closing() @pytest.mark.anyio async def test_chunked_encoding_empty_body( http_protocol_cls: HTTPProtocol, ): app = Response( b"Hello, world!", status_code=200, headers={"transfer-encoding": "chunked"} ) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert protocol.transport.buffer.count(b"0\r\n\r\n") == 1 assert not protocol.transport.is_closing() @pytest.mark.anyio async def test_chunked_encoding_head_request( http_protocol_cls: HTTPProtocol, ): app = Response( b"Hello, world!", status_code=200, headers={"transfer-encoding": "chunked"} ) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_HEAD_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert not protocol.transport.is_closing() @pytest.mark.anyio async def test_pipelined_requests( http_protocol_cls: HTTPProtocol, ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) protocol.data_received(SIMPLE_GET_REQUEST) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer protocol.transport.clear_buffer() await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer protocol.transport.clear_buffer() await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer protocol.transport.clear_buffer() @pytest.mark.anyio async def test_undersized_request( http_protocol_cls: HTTPProtocol, ): app = Response(b"xxx", headers={"content-length": "10"}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert protocol.transport.is_closing() @pytest.mark.anyio async def test_oversized_request( http_protocol_cls: HTTPProtocol, ): app = Response(b"xxx" * 20, headers={"content-length": "10"}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert protocol.transport.is_closing() @pytest.mark.anyio async def test_large_post_request( http_protocol_cls: HTTPProtocol, ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(LARGE_POST_REQUEST) assert protocol.transport.read_paused await protocol.loop.run_one() assert not protocol.transport.read_paused @pytest.mark.anyio async def test_invalid_http(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(b"x" * 100000) assert protocol.transport.is_closing() @pytest.mark.anyio async def test_app_exception( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): raise Exception() protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_exception_during_response( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.start", "status": 200}) await send({"type": "http.response.body", "body": b"1", "more_body": True}) raise Exception() protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" not in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_no_response_returned( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): ... protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_partial_response_returned( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.start", "status": 200}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" not in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_duplicate_start_message( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.start", "status": 200}) await send({"type": "http.response.start", "status": 200}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" not in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_missing_start_message( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.body", "body": b""}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 500 Internal Server Error" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_message_after_body_complete( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.start", "status": 200}) await send({"type": "http.response.body", "body": b""}) await send({"type": "http.response.body", "body": b""}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_value_returned( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "http.response.start", "status": 200}) await send({"type": "http.response.body", "body": b""}) return 123 protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_early_disconnect( http_protocol_cls: HTTPProtocol, ): got_disconnect_event = False async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal got_disconnect_event while True: message = await receive() if message["type"] == "http.disconnect": break got_disconnect_event = True protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_POST_REQUEST) protocol.eof_received() protocol.connection_lost(None) await protocol.loop.run_one() assert got_disconnect_event @pytest.mark.anyio async def test_early_response( http_protocol_cls: HTTPProtocol, ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(START_POST_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer protocol.data_received(FINISH_POST_REQUEST) assert not protocol.transport.is_closing() @pytest.mark.anyio async def test_read_after_response( http_protocol_cls: HTTPProtocol, ): message_after_response = None async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal message_after_response response = Response("Hello, world", media_type="text/plain") await response(scope, receive, send) message_after_response = await receive() protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_POST_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert message_after_response == {"type": "http.disconnect"} @pytest.mark.anyio async def test_http10_request( http_protocol_cls: HTTPProtocol, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): assert scope["type"] == "http" content = "Version: %s" % scope["http_version"] response = Response(content, media_type="text/plain") await response(scope, receive, send) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(HTTP10_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Version: 1.0" in protocol.transport.buffer @pytest.mark.anyio async def test_root_path(http_protocol_cls: HTTPProtocol): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): assert scope["type"] == "http" root_path = scope.get("root_path", "") path = scope["path"] response = Response( f"root_path={root_path} path={path}", media_type="text/plain" ) await response(scope, receive, send) protocol = get_connected_protocol(app, http_protocol_cls, root_path="/app") protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"root_path=/app path=/app/" in protocol.transport.buffer @pytest.mark.anyio async def test_raw_path(http_protocol_cls: HTTPProtocol): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): assert scope["type"] == "http" path = scope["path"] raw_path = scope.get("raw_path", None) assert "/app/one/two" == path assert b"/app/one%2Ftwo" == raw_path response = Response("Done", media_type="text/plain") await response(scope, receive, send) protocol = get_connected_protocol(app, http_protocol_cls, root_path="/app") protocol.data_received(GET_REQUEST_WITH_RAW_PATH) await protocol.loop.run_one() assert b"Done" in protocol.transport.buffer @pytest.mark.anyio async def test_max_concurrency(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, limit_concurrency=1) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 503 Service Unavailable" in protocol.transport.buffer @pytest.mark.anyio async def test_shutdown_during_request(http_protocol_cls: HTTPProtocol): app = Response(b"", status_code=204) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) protocol.shutdown() await protocol.loop.run_one() assert b"HTTP/1.1 204 No Content" in protocol.transport.buffer assert protocol.transport.is_closing() @pytest.mark.anyio async def test_shutdown_during_idle(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.shutdown() assert protocol.transport.buffer == b"" assert protocol.transport.is_closing() @pytest.mark.anyio async def test_100_continue_sent_when_body_consumed(http_protocol_cls: HTTPProtocol): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): body = b"" more_body = True while more_body: message = await receive() assert message["type"] == "http.request" body += message.get("body", b"") more_body = message.get("more_body", False) response = Response(b"Body: " + body, media_type="text/plain") await response(scope, receive, send) protocol = get_connected_protocol(app, http_protocol_cls) EXPECT_100_REQUEST = b"\r\n".join( [ b"POST / HTTP/1.1", b"Host: example.org", b"Expect: 100-continue", b"Content-Type: application/json", b"Content-Length: 18", b"", b'{"hello": "world"}', ] ) protocol.data_received(EXPECT_100_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 100 Continue" in protocol.transport.buffer assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b'Body: {"hello": "world"}' in protocol.transport.buffer @pytest.mark.anyio async def test_100_continue_not_sent_when_body_not_consumed( http_protocol_cls: HTTPProtocol, ): app = Response(b"", status_code=204) protocol = get_connected_protocol(app, http_protocol_cls) EXPECT_100_REQUEST = b"\r\n".join( [ b"POST / HTTP/1.1", b"Host: example.org", b"Expect: 100-continue", b"Content-Type: application/json", b"Content-Length: 18", b"", b'{"hello": "world"}', ] ) protocol.data_received(EXPECT_100_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 100 Continue" not in protocol.transport.buffer assert b"HTTP/1.1 204 No Content" in protocol.transport.buffer @pytest.mark.anyio async def test_supported_upgrade_request(http_protocol_cls: HTTPProtocol): pytest.importorskip("wsproto") app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, ws="wsproto") protocol.data_received(UPGRADE_REQUEST) assert b"HTTP/1.1 426 " in protocol.transport.buffer @pytest.mark.anyio async def test_unsupported_ws_upgrade_request(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, ws="none") protocol.data_received(UPGRADE_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer @pytest.mark.anyio async def test_unsupported_ws_upgrade_request_warn_on_auto( caplog: pytest.LogCaptureFixture, http_protocol_cls: HTTPProtocol ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, ws="auto") protocol.ws_protocol_class = None protocol.data_received(UPGRADE_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer warnings = [ record.msg for record in filter( lambda record: record.levelname == "WARNING", caplog.records ) ] assert "Unsupported upgrade request." in warnings msg = "No supported WebSocket library detected. Please use \"pip install 'uvicorn[standard]'\", or install 'websockets' or 'wsproto' manually." # noqa: E501 assert msg in warnings @pytest.mark.anyio async def test_http2_upgrade_request( http_protocol_cls: HTTPProtocol, ws_protocol_cls: WSProtocol ): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls, ws=ws_protocol_cls) protocol.data_received(UPGRADE_HTTP2_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer async def asgi3app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): pass def asgi2app(scope: Scope): async def asgi(receive: ASGIReceiveCallable, send: ASGISendCallable): pass return asgi @pytest.mark.anyio @pytest.mark.parametrize( "asgi2or3_app, expected_scopes", [ (asgi3app, {"version": "3.0", "spec_version": "2.3"}), (asgi2app, {"version": "2.0", "spec_version": "2.3"}), ], ) async def test_scopes( asgi2or3_app: ASGIApplication, expected_scopes: dict[str, str], http_protocol_cls: HTTPProtocol, ): protocol = get_connected_protocol(asgi2or3_app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert expected_scopes == protocol.scope.get("asgi") @pytest.mark.anyio @pytest.mark.parametrize( "request_line", [ pytest.param(b"G?T / HTTP/1.1", id="invalid-method"), pytest.param(b"GET /?x=y z HTTP/1.1", id="invalid-path"), pytest.param(b"GET / HTTP1.1", id="invalid-http-version"), ], ) async def test_invalid_http_request( request_line: str, http_protocol_cls: HTTPProtocol, caplog: pytest.LogCaptureFixture ): app = Response("Hello, world", media_type="text/plain") request = INVALID_REQUEST_TEMPLATE % request_line caplog.set_level(logging.INFO, logger="uvicorn.error") logging.getLogger("uvicorn.error").propagate = True protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(request) assert b"HTTP/1.1 400 Bad Request" in protocol.transport.buffer assert b"Invalid HTTP request received." in protocol.transport.buffer @skip_if_no_httptools def test_fragmentation(unused_tcp_port: int): def receive_all(sock: socket.socket): chunks: list[bytes] = [] while True: chunk = sock.recv(1024) if not chunk: break chunks.append(chunk) return b"".join(chunks) app = Response("Hello, world", media_type="text/plain") def send_fragmented_req(path: str): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("127.0.0.1", unused_tcp_port)) d = ( f"GET {path} HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: close\r\n\r\n" ).encode() split = len(path) // 2 sock.sendall(d[:split]) time.sleep(0.01) sock.sendall(d[split:]) resp = receive_all(sock) # see https://github.com/kmonsoor/py-amqplib/issues/45 # we skip the error on bsd systems if python is too slow try: sock.shutdown(socket.SHUT_RDWR) except Exception: # pragma: no cover pass sock.close() return resp config = Config(app=app, http="httptools", port=unused_tcp_port) server = Server(config=config) t = threading.Thread(target=server.run) t.daemon = True t.start() time.sleep(1) # wait for uvicorn to start path = "/?param=" + "q" * 10 response = send_fragmented_req(path) bad_response = b"HTTP/1.1 400 Bad Request" assert bad_response != response[: len(bad_response)] server.should_exit = True t.join() @pytest.mark.anyio async def test_huge_headers_h11protocol_failure(): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, H11Protocol) # Huge headers make h11 fail in it's default config # h11 sends back a 400 in this case protocol.data_received(GET_REQUEST_HUGE_HEADERS[0]) assert b"HTTP/1.1 400 Bad Request" in protocol.transport.buffer assert b"Connection: close" in protocol.transport.buffer assert b"Invalid HTTP request received." in protocol.transport.buffer @pytest.mark.anyio @skip_if_no_httptools async def test_huge_headers_httptools_will_pass(): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, HttpToolsProtocol) # Huge headers make h11 fail in it's default config # httptools protocol will always pass protocol.data_received(GET_REQUEST_HUGE_HEADERS[0]) protocol.data_received(GET_REQUEST_HUGE_HEADERS[1]) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer @pytest.mark.anyio async def test_huge_headers_h11protocol_failure_with_setting(): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol( app, H11Protocol, h11_max_incomplete_event_size=20 * 1024 ) # Huge headers make h11 fail in it's default config # h11 sends back a 400 in this case protocol.data_received(GET_REQUEST_HUGE_HEADERS[0]) assert b"HTTP/1.1 400 Bad Request" in protocol.transport.buffer assert b"Connection: close" in protocol.transport.buffer assert b"Invalid HTTP request received." in protocol.transport.buffer @pytest.mark.anyio @skip_if_no_httptools async def test_huge_headers_httptools(): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, HttpToolsProtocol) # Huge headers make h11 fail in it's default config # httptools protocol will always pass protocol.data_received(GET_REQUEST_HUGE_HEADERS[0]) protocol.data_received(GET_REQUEST_HUGE_HEADERS[1]) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer @pytest.mark.anyio async def test_huge_headers_h11_max_incomplete(): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol( app, H11Protocol, h11_max_incomplete_event_size=64 * 1024 ) protocol.data_received(GET_REQUEST_HUGE_HEADERS[0]) protocol.data_received(GET_REQUEST_HUGE_HEADERS[1]) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hello, world" in protocol.transport.buffer @pytest.mark.anyio async def test_return_close_header(http_protocol_cls: HTTPProtocol): app = Response("Hello, world", media_type="text/plain") protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(CONNECTION_CLOSE_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"content-type: text/plain" in protocol.transport.buffer assert b"content-length: 12" in protocol.transport.buffer # NOTE: We need to use `.lower()` because H11 implementation doesn't allow Uvicorn # to lowercase them. See: https://github.com/python-hyper/h11/issues/156 assert b"connection: close" in protocol.transport.buffer.lower() @pytest.mark.anyio async def test_iterator_headers(http_protocol_cls: HTTPProtocol): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): headers = iter([(b"x-test-header", b"test value")]) await send({"type": "http.response.start", "status": 200, "headers": headers}) await send({"type": "http.response.body", "body": b""}) protocol = get_connected_protocol(app, http_protocol_cls) protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"x-test-header: test value" in protocol.transport.buffer @pytest.mark.anyio async def test_lifespan_state(http_protocol_cls: HTTPProtocol): expected_states = [{"a": 123, "b": [1]}, {"a": 123, "b": [1, 2]}] async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): assert "state" in scope expected_state = expected_states.pop(0) assert scope["state"] == expected_state # modifications to keys are not preserved scope["state"]["a"] = 456 # unless of course the value itself is mutated scope["state"]["b"].append(2) return await Response("Hi!")(scope, receive, send) lifespan = LifespanOn(config=Config(app=app)) # skip over actually running the lifespan, that is tested # in the lifespan tests lifespan.state.update({"a": 123, "b": [1]}) protocol = get_connected_protocol(app, http_protocol_cls, lifespan=lifespan) for _ in range(2): protocol.data_received(SIMPLE_GET_REQUEST) await protocol.loop.run_one() assert b"HTTP/1.1 200 OK" in protocol.transport.buffer assert b"Hi!" in protocol.transport.buffer assert not expected_states # consumed uvicorn-0.27.1/tests/protocols/test_utils.py000066400000000000000000000056221456166335300212460ustar00rootroot00000000000000import socket from asyncio import Transport import pytest from uvicorn.protocols.utils import get_client_addr, get_local_addr, get_remote_addr class MockSocket: def __init__(self, family, peername=None, sockname=None): self.peername = peername self.sockname = sockname self.family = family def getpeername(self): return self.peername def getsockname(self): return self.sockname class MockTransport(Transport): def __init__(self, info): self.info = info def get_extra_info(self, info_type): return self.info.get(info_type) def test_get_local_addr_with_socket(): transport = MockTransport({"socket": MockSocket(family=socket.AF_IPX)}) assert get_local_addr(transport) is None transport = MockTransport( {"socket": MockSocket(family=socket.AF_INET6, sockname=("::1", 123))} ) assert get_local_addr(transport) == ("::1", 123) transport = MockTransport( {"socket": MockSocket(family=socket.AF_INET, sockname=("123.45.6.7", 123))} ) assert get_local_addr(transport) == ("123.45.6.7", 123) if hasattr(socket, "AF_UNIX"): # pragma: no cover transport = MockTransport( {"socket": MockSocket(family=socket.AF_UNIX, sockname=("127.0.0.1", 8000))} ) assert get_local_addr(transport) == ("127.0.0.1", 8000) def test_get_remote_addr_with_socket(): transport = MockTransport({"socket": MockSocket(family=socket.AF_IPX)}) assert get_remote_addr(transport) is None transport = MockTransport( {"socket": MockSocket(family=socket.AF_INET6, peername=("::1", 123))} ) assert get_remote_addr(transport) == ("::1", 123) transport = MockTransport( {"socket": MockSocket(family=socket.AF_INET, peername=("123.45.6.7", 123))} ) assert get_remote_addr(transport) == ("123.45.6.7", 123) if hasattr(socket, "AF_UNIX"): # pragma: no cover transport = MockTransport( {"socket": MockSocket(family=socket.AF_UNIX, peername=("127.0.0.1", 8000))} ) assert get_remote_addr(transport) == ("127.0.0.1", 8000) def test_get_local_addr(): transport = MockTransport({"sockname": "path/to/unix-domain-socket"}) assert get_local_addr(transport) is None transport = MockTransport({"sockname": ("123.45.6.7", 123)}) assert get_local_addr(transport) == ("123.45.6.7", 123) def test_get_remote_addr(): transport = MockTransport({"peername": None}) assert get_remote_addr(transport) is None transport = MockTransport({"peername": ("123.45.6.7", 123)}) assert get_remote_addr(transport) == ("123.45.6.7", 123) @pytest.mark.parametrize( "scope, expected_client", [({"client": ("127.0.0.1", 36000)}, "127.0.0.1:36000"), ({"client": None}, "")], ids=["ip:port client", "None client"], ) def test_get_client_addr(scope, expected_client): assert get_client_addr(scope) == expected_client uvicorn-0.27.1/tests/protocols/test_websocket.py000066400000000000000000001411531456166335300220740ustar00rootroot00000000000000from __future__ import annotations import asyncio import typing from copy import deepcopy import httpx import pytest import websockets import websockets.client import websockets.exceptions from websockets.extensions.permessage_deflate import ClientPerMessageDeflateFactory from websockets.typing import Subprotocol from tests.response import Response from tests.utils import run_server from uvicorn._types import ( ASGIReceiveCallable, ASGIReceiveEvent, ASGISendCallable, Scope, WebSocketCloseEvent, WebSocketDisconnectEvent, WebSocketResponseStartEvent, ) from uvicorn.config import Config from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol try: from uvicorn.protocols.websockets.wsproto_impl import WSProtocol as _WSProtocol skip_if_no_wsproto = pytest.mark.skipif(False, reason="wsproto is installed.") except ModuleNotFoundError: skip_if_no_wsproto = pytest.mark.skipif(True, reason="wsproto is not installed.") if typing.TYPE_CHECKING: import sys from uvicorn.protocols.http.h11_impl import H11Protocol from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol from uvicorn.protocols.websockets.wsproto_impl import WSProtocol as _WSProtocol if sys.version_info >= (3, 10): # pragma: no cover from typing import TypeAlias else: # pragma: no cover from typing_extensions import TypeAlias HTTPProtocol: TypeAlias = "type[H11Protocol | HttpToolsProtocol]" WSProtocol: TypeAlias = "type[_WSProtocol | WebSocketProtocol]" class WebSocketResponse: def __init__( self, scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable ): self.scope = scope self.receive = receive self.send = send def __await__(self): return self.asgi().__await__() async def asgi(self): while True: message = await self.receive() message_type = message["type"].replace(".", "_") handler = getattr(self, message_type, None) if handler is not None: await handler(message) if message_type == "websocket_disconnect": break async def wsresponse(url): """ A simple websocket connection request and response helper """ url = url.replace("ws:", "http:") headers = { "connection": "upgrade", "upgrade": "websocket", "Sec-WebSocket-Key": "x3JJHMbDL1EzLkh9GBhXDw==", "Sec-WebSocket-Version": "13", } async with httpx.AsyncClient() as client: return await client.get(url, headers=headers) @pytest.mark.anyio async def test_invalid_upgrade( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): def app(scope: Scope): return None config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, port=unused_tcp_port ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get( f"http://127.0.0.1:{unused_tcp_port}", headers={ "upgrade": "websocket", "connection": "upgrade", "sec-webSocket-version": "11", }, ) if response.status_code == 426: # response.text == "" pass # ok, wsproto 0.13 else: assert response.status_code == 400 assert ( response.text.lower().strip().rstrip(".") in [ "missing sec-websocket-key header", "missing sec-websocket-version header", # websockets "missing or empty sec-websocket-key header", # wsproto "failed to open a websocket connection: missing " "sec-websocket-key header", "failed to open a websocket connection: missing or empty " "sec-websocket-key header", ] ) @pytest.mark.anyio async def test_accept_connection( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url): async with websockets.client.connect(url) as websocket: return websocket.open config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert is_open @pytest.mark.anyio async def test_shutdown( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config) as server: async with websockets.client.connect(f"ws://127.0.0.1:{unused_tcp_port}"): # Attempt shutdown while connection is still open await server.shutdown() @pytest.mark.anyio async def test_supports_permessage_deflate_extension( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url): extension_factories = [ClientPerMessageDeflateFactory()] async with websockets.client.connect( url, extensions=extension_factories ) as websocket: return [extension.name for extension in websocket.extensions] config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): extension_names = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert "permessage-deflate" in extension_names @pytest.mark.anyio async def test_can_disable_permessage_deflate_extension( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url: str): # enable per-message deflate on the client, so that we can check the server # won't support it when it's disabled. extension_factories = [ClientPerMessageDeflateFactory()] async with websockets.client.connect( url, extensions=extension_factories ) as websocket: return [extension.name for extension in websocket.extensions] config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", ws_per_message_deflate=False, port=unused_tcp_port, ) async with run_server(config): extension_names = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert "permessage-deflate" not in extension_names @pytest.mark.anyio async def test_close_connection( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.close"}) async def open_connection(url: str): try: await websockets.client.connect(url) except websockets.exceptions.InvalidHandshake: return False return True # pragma: no cover config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert not is_open @pytest.mark.anyio async def test_headers( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): headers = self.scope.get("headers") headers = dict(headers) # type: ignore assert headers[b"host"].startswith(b"127.0.0.1") # type: ignore assert headers[b"username"] == bytes("abraΓ£o", "utf-8") # type: ignore await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect( url, extra_headers=[("username", "abraΓ£o")] ) as websocket: return websocket.open config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert is_open @pytest.mark.anyio async def test_extra_headers( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send( {"type": "websocket.accept", "headers": [(b"extra", b"header")]} ) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.response_headers config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): extra_headers = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert extra_headers.get("extra") == "header" @pytest.mark.anyio async def test_path_and_raw_path( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): path = self.scope.get("path") raw_path = self.scope.get("raw_path") assert path == "/one/two" assert raw_path == b"/one%2Ftwo" await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.open config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}/one%2Ftwo") assert is_open @pytest.mark.anyio async def test_send_text_data_to_client( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) await self.send({"type": "websocket.send", "text": "123"}) async def get_data(url: str): async with websockets.client.connect(url) as websocket: return await websocket.recv() config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): data = await get_data(f"ws://127.0.0.1:{unused_tcp_port}") assert data == "123" @pytest.mark.anyio async def test_send_binary_data_to_client( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) await self.send({"type": "websocket.send", "bytes": b"123"}) async def get_data(url: str): async with websockets.client.connect(url) as websocket: return await websocket.recv() config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): data = await get_data(f"ws://127.0.0.1:{unused_tcp_port}") assert data == b"123" @pytest.mark.anyio async def test_send_and_close_connection( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) await self.send({"type": "websocket.send", "text": "123"}) await self.send({"type": "websocket.close"}) async def get_data(url: str): async with websockets.client.connect(url) as websocket: data = await websocket.recv() is_open = True try: await websocket.recv() except Exception: is_open = False return (data, is_open) config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): (data, is_open) = await get_data(f"ws://127.0.0.1:{unused_tcp_port}") assert data == "123" assert not is_open @pytest.mark.anyio async def test_send_text_data_to_server( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def websocket_receive(self, message): _text = message.get("text") await self.send({"type": "websocket.send", "text": _text}) async def send_text(url: str): async with websockets.client.connect(url) as websocket: await websocket.send("abc") return await websocket.recv() config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): data = await send_text(f"ws://127.0.0.1:{unused_tcp_port}") assert data == "abc" @pytest.mark.anyio async def test_send_binary_data_to_server( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def websocket_receive(self, message): _bytes = message.get("bytes") await self.send({"type": "websocket.send", "bytes": _bytes}) async def send_text(url: str): async with websockets.client.connect(url) as websocket: await websocket.send(b"abc") return await websocket.recv() config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): data = await send_text(f"ws://127.0.0.1:{unused_tcp_port}") assert data == b"abc" @pytest.mark.anyio async def test_send_after_protocol_close( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) await self.send({"type": "websocket.send", "text": "123"}) await self.send({"type": "websocket.close"}) with pytest.raises(Exception): await self.send({"type": "websocket.send", "text": "123"}) async def get_data(url: str): async with websockets.client.connect(url) as websocket: data = await websocket.recv() is_open = True try: await websocket.recv() except Exception: is_open = False return (data, is_open) config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): (data, is_open) = await get_data(f"ws://127.0.0.1:{unused_tcp_port}") assert data == "123" assert not is_open @pytest.mark.anyio async def test_missing_handshake( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): pass async def connect(url: str): await websockets.client.connect(url) config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: await connect(f"ws://127.0.0.1:{unused_tcp_port}") assert exc_info.value.status_code == 500 @pytest.mark.anyio async def test_send_before_handshake( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "websocket.send", "text": "123"}) async def connect(url: str): await websockets.client.connect(url) config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: await connect(f"ws://127.0.0.1:{unused_tcp_port}") assert exc_info.value.status_code == 500 @pytest.mark.anyio async def test_duplicate_handshake( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "websocket.accept"}) await send({"type": "websocket.accept"}) async def connect(url: str): async with websockets.client.connect(url) as websocket: _ = await websocket.recv() config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): with pytest.raises(websockets.exceptions.ConnectionClosed) as exc_info: await connect(f"ws://127.0.0.1:{unused_tcp_port}") assert exc_info.value.code == 1006 @pytest.mark.anyio async def test_asgi_return_value( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): """ The ASGI callable should return 'None'. If it doesn't, make sure that the connection is closed with an error condition. """ async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): await send({"type": "websocket.accept"}) return 123 async def connect(url: str): async with websockets.client.connect(url) as websocket: _ = await websocket.recv() config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): with pytest.raises(websockets.exceptions.ConnectionClosed) as exc_info: await connect(f"ws://127.0.0.1:{unused_tcp_port}") assert exc_info.value.code == 1006 @pytest.mark.anyio @pytest.mark.parametrize("code", [None, 1000, 1001]) @pytest.mark.parametrize( "reason", [None, "test", False], ids=["none_as_reason", "normal_reason", "without_reason"], ) async def test_app_close( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int, code: int | None, reason: str | None, ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): while True: message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) elif message["type"] == "websocket.receive": reply: WebSocketCloseEvent = {"type": "websocket.close"} if code is not None: reply["code"] = code if reason is not False: reply["reason"] = reason await send(reply) elif message["type"] == "websocket.disconnect": break async def websocket_session(url: str): async with websockets.client.connect(url) as websocket: await websocket.ping() await websocket.send("abc") await websocket.recv() config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): with pytest.raises(websockets.exceptions.ConnectionClosed) as exc_info: await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") assert exc_info.value.code == (code or 1000) assert exc_info.value.reason == (reason or "") @pytest.mark.anyio async def test_client_close( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): while True: message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) elif message["type"] == "websocket.receive": pass elif message["type"] == "websocket.disconnect": break async def websocket_session(url: str): async with websockets.client.connect(url) as websocket: await websocket.ping() await websocket.send("abc") config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") @pytest.mark.anyio async def test_client_connection_lost( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): got_disconnect_event = False async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal got_disconnect_event while True: message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) elif message["type"] == "websocket.disconnect": break got_disconnect_event = True config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", ws_ping_interval=0.0, port=unused_tcp_port, ) async with run_server(config): async with websockets.client.connect( f"ws://127.0.0.1:{unused_tcp_port}" ) as websocket: websocket.transport.close() await asyncio.sleep(0.1) got_disconnect_event_before_shutdown = got_disconnect_event assert got_disconnect_event_before_shutdown is True @pytest.mark.anyio async def test_client_connection_lost_on_send( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): disconnect = asyncio.Event() got_disconnect_event = False async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal got_disconnect_event message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) try: await disconnect.wait() await send({"type": "websocket.send", "text": "123"}) except IOError: got_disconnect_event = True config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): url = f"ws://127.0.0.1:{unused_tcp_port}" async with websockets.client.connect(url): await asyncio.sleep(0.1) disconnect.set() assert got_disconnect_event is True @pytest.mark.anyio async def test_connection_lost_before_handshake_complete( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): send_accept_task = asyncio.Event() disconnect_message: WebSocketDisconnectEvent = {} # type: ignore async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal disconnect_message message = await receive() if message["type"] == "websocket.connect": await send_accept_task.wait() disconnect_message = await receive() # type: ignore response: typing.Optional[httpx.Response] = None async def websocket_session(uri: str): nonlocal response async with httpx.AsyncClient() as client: response = await client.get( f"http://127.0.0.1:{unused_tcp_port}", headers={ "upgrade": "websocket", "connection": "upgrade", "sec-websocket-version": "13", "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", }, ) config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): task = asyncio.create_task( websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") ) await asyncio.sleep(0.1) send_accept_task.set() await asyncio.sleep(0.1) assert response is not None assert response.status_code == 500, response.text assert response.text == "Internal Server Error" assert disconnect_message == {"type": "websocket.disconnect", "code": 1006} await task @pytest.mark.anyio async def test_send_close_on_server_shutdown( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): disconnect_message: WebSocketDisconnectEvent = {} # type: ignore server_shutdown_event = asyncio.Event() async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal disconnect_message while True: message = await receive() if message["type"] == "websocket.connect": await send({"type": "websocket.accept"}) elif message["type"] == "websocket.disconnect": disconnect_message = message break websocket: typing.Optional[websockets.client.WebSocketClientProtocol] = None async def websocket_session(uri: str): nonlocal websocket async with websockets.client.connect(uri) as ws_connection: websocket = ws_connection await server_shutdown_event.wait() config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): task = asyncio.create_task( websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") ) await asyncio.sleep(0.1) disconnect_message_before_shutdown = disconnect_message server_shutdown_event.set() assert websocket is not None assert websocket.close_code == 1012 assert disconnect_message_before_shutdown == {} assert disconnect_message == {"type": "websocket.disconnect", "code": 1012} task.cancel() @pytest.mark.anyio @pytest.mark.parametrize("subprotocol", ["proto1", "proto2"]) async def test_subprotocols( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, subprotocol: str, unused_tcp_port: int, ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept", "subprotocol": subprotocol}) async def get_subprotocol(url: str): async with websockets.client.connect( url, subprotocols=[Subprotocol("proto1"), Subprotocol("proto2")] ) as websocket: return websocket.subprotocol config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): accepted_subprotocol = await get_subprotocol( f"ws://127.0.0.1:{unused_tcp_port}" ) assert accepted_subprotocol == subprotocol MAX_WS_BYTES = 1024 * 1024 * 16 MAX_WS_BYTES_PLUS1 = MAX_WS_BYTES + 1 @pytest.mark.anyio @pytest.mark.parametrize( "client_size_sent, server_size_max, expected_result", [ (MAX_WS_BYTES, MAX_WS_BYTES, 0), (MAX_WS_BYTES_PLUS1, MAX_WS_BYTES, 1009), (10, 10, 0), (11, 10, 1009), ], ids=[ "max=defaults sent=defaults", "max=defaults sent=defaults+1", "max=10 sent=10", "max=10 sent=11", ], ) async def test_send_binary_data_to_server_bigger_than_default_on_websockets( http_protocol_cls: HTTPProtocol, client_size_sent: int, server_size_max: int, expected_result: int, unused_tcp_port: int, ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def websocket_receive(self, message): _bytes = message.get("bytes") await self.send({"type": "websocket.send", "bytes": _bytes}) async def send_text(url: str): async with websockets.client.connect(url, max_size=client_size_sent) as ws: await ws.send(b"\x01" * client_size_sent) return await ws.recv() config = Config( app=App, ws=WebSocketProtocol, http=http_protocol_cls, lifespan="off", ws_max_size=server_size_max, port=unused_tcp_port, ) async with run_server(config): if expected_result == 0: data = await send_text(f"ws://127.0.0.1:{unused_tcp_port}") assert data == b"\x01" * client_size_sent else: with pytest.raises(websockets.exceptions.ConnectionClosedError) as e: data = await send_text(f"ws://127.0.0.1:{unused_tcp_port}") assert e.value.code == expected_result @pytest.mark.anyio async def test_server_reject_connection( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): disconnected_message: ASGIReceiveEvent = {} # type: ignore async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal disconnected_message assert scope["type"] == "websocket" # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" # Reject the connection. await send({"type": "websocket.close"}) # -- At this point websockets' recv() is unusable. -- # This doesn't raise `TypeError`: # See https://github.com/encode/uvicorn/issues/244 disconnected_message = await receive() async def websocket_session(url): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: async with websockets.client.connect(url): pass # pragma: no cover assert exc_info.value.status_code == 403 config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") assert disconnected_message == {"type": "websocket.disconnect", "code": 1006} @pytest.mark.anyio async def test_server_reject_connection_with_response( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): disconnected_message = {} async def app(scope, receive, send): nonlocal disconnected_message assert scope["type"] == "websocket" assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" # Reject the connection with a response response = Response(b"goodbye", status_code=400) await response(scope, receive, send) disconnected_message = await receive() async def websocket_session(url): response = await wsresponse(url) assert response.status_code == 400 assert response.content == b"goodbye" config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") assert disconnected_message == {"type": "websocket.disconnect", "code": 1006} @pytest.mark.anyio async def test_server_reject_connection_with_multibody_response( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): disconnected_message: ASGIReceiveEvent = {} # type: ignore async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal disconnected_message assert scope["type"] == "websocket" assert "extensions" in scope assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" await send( { "type": "websocket.http.response.start", "status": 400, "headers": [ (b"Content-Length", b"20"), (b"Content-Type", b"text/plain"), ], } ) await send( { "type": "websocket.http.response.body", "body": b"x" * 10, "more_body": True, } ) await send({"type": "websocket.http.response.body", "body": b"y" * 10}) disconnected_message = await receive() async def websocket_session(url: str): response = await wsresponse(url) assert response.status_code == 400 assert response.content == (b"x" * 10) + (b"y" * 10) config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") assert disconnected_message == {"type": "websocket.disconnect", "code": 1006} @pytest.mark.anyio async def test_server_reject_connection_with_invalid_status( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): # this test checks that even if there is an error in the response, the server # can successfully send a 500 error back to the client async def app(scope, receive, send): assert scope["type"] == "websocket" assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" message = { "type": "websocket.http.response.start", "status": 700, # invalid status code "headers": [(b"Content-Length", b"0"), (b"Content-Type", b"text/plain")], } await send(message) message = { "type": "websocket.http.response.body", "body": b"", } await send(message) async def websocket_session(url): response = await wsresponse(url) assert response.status_code == 500 assert response.content == b"Internal Server Error" config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") @pytest.mark.anyio async def test_server_reject_connection_with_body_nolength( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): # test that the server can send a response with a body but no content-length async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): assert scope["type"] == "websocket" assert "extensions" in scope assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" await send( { "type": "websocket.http.response.start", "status": 403, "headers": [], } ) await send({"type": "websocket.http.response.body", "body": b"hardbody"}) async def websocket_session(url): response = await wsresponse(url) assert response.status_code == 403 assert response.content == b"hardbody" if ws_protocol_cls == _WSProtocol: # wsproto automatically makes the message chunked assert response.headers["transfer-encoding"] == "chunked" else: # websockets automatically adds a content-length assert response.headers["content-length"] == "8" config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") @pytest.mark.anyio async def test_server_reject_connection_with_invalid_msg( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope, receive, send): assert scope["type"] == "websocket" assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" message = { "type": "websocket.http.response.start", "status": 404, "headers": [(b"Content-Length", b"0"), (b"Content-Type", b"text/plain")], } await send(message) # send invalid message. This will raise an exception here await send(message) async def websocket_session(url): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: async with websockets.client.connect(url): pass # pragma: no cover assert exc_info.value.status_code == 404 config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") @pytest.mark.anyio async def test_server_reject_connection_with_missing_body( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): async def app(scope, receive, send): assert scope["type"] == "websocket" assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" message = { "type": "websocket.http.response.start", "status": 404, "headers": [(b"Content-Length", b"0"), (b"Content-Type", b"text/plain")], } await send(message) # no further message async def websocket_session(url): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: async with websockets.client.connect(url): pass # pragma: no cover assert exc_info.value.status_code == 404 config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") @pytest.mark.anyio async def test_server_multiple_websocket_http_response_start_events( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): """ The server should raise an exception if it sends multiple websocket.http.response.start events. """ exception_message: typing.Optional[str] = None async def app(scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable): nonlocal exception_message assert scope["type"] == "websocket" assert "extensions" in scope assert "websocket.http.response" in scope["extensions"] # Pull up first recv message. message = await receive() assert message["type"] == "websocket.connect" start_event: WebSocketResponseStartEvent = { "type": "websocket.http.response.start", "status": 404, "headers": [(b"Content-Length", b"0"), (b"Content-Type", b"text/plain")], } await send(start_event) try: await send(start_event) except Exception as exc: exception_message = str(exc) async def websocket_session(url: str): with pytest.raises(websockets.exceptions.InvalidStatusCode) as exc_info: async with websockets.client.connect(url): pass assert exc_info.value.status_code == 404 config = Config( app=app, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await websocket_session(f"ws://127.0.0.1:{unused_tcp_port}") assert exception_message == ( "Expected ASGI message 'websocket.http.response.body' but got " "'websocket.http.response.start'." ) @pytest.mark.anyio async def test_server_can_read_messages_in_buffer_after_close( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): frames = [] disconnect_message = {} class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) # Ensure server doesn't start reading frames from read buffer until # after client has sent close frame, but server is still able to # read these frames await asyncio.sleep(0.2) async def websocket_disconnect(self, message): nonlocal disconnect_message disconnect_message = message async def websocket_receive(self, message): frames.append(message.get("bytes")) async def send_text(url: str): async with websockets.client.connect(url) as websocket: await websocket.send(b"abc") await websocket.send(b"abc") await websocket.send(b"abc") config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): await send_text(f"ws://127.0.0.1:{unused_tcp_port}") assert frames == [b"abc", b"abc", b"abc"] assert disconnect_message == {"type": "websocket.disconnect", "code": 1000} @pytest.mark.anyio async def test_default_server_headers( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.response_headers config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): headers = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert headers.get("server") == "uvicorn" and "date" in headers @pytest.mark.anyio async def test_no_server_headers( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.response_headers config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", server_header=False, port=unused_tcp_port, ) async with run_server(config): headers = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert "server" not in headers @pytest.mark.anyio @skip_if_no_wsproto async def test_no_date_header_on_wsproto( http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.response_headers config = Config( app=App, ws=_WSProtocol, http=http_protocol_cls, lifespan="off", date_header=False, port=unused_tcp_port, ) async with run_server(config): headers = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert "date" not in headers @pytest.mark.anyio async def test_multiple_server_header( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): class App(WebSocketResponse): async def websocket_connect(self, message): await self.send( { "type": "websocket.accept", "headers": [ (b"Server", b"over-ridden"), (b"Server", b"another-value"), ], } ) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.response_headers config = Config( app=App, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="off", port=unused_tcp_port, ) async with run_server(config): headers = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert headers.get_all("Server") == ["uvicorn", "over-ridden", "another-value"] @pytest.mark.anyio async def test_lifespan_state( ws_protocol_cls: WSProtocol, http_protocol_cls: HTTPProtocol, unused_tcp_port: int ): expected_states = [ {"a": 123, "b": [1]}, {"a": 123, "b": [1, 2]}, ] actual_states = [] async def lifespan_app( scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable ): message = await receive() assert message["type"] == "lifespan.startup" and "state" in scope scope["state"]["a"] = 123 scope["state"]["b"] = [1] await send({"type": "lifespan.startup.complete"}) message = await receive() assert message["type"] == "lifespan.shutdown" await send({"type": "lifespan.shutdown.complete"}) class App(WebSocketResponse): async def websocket_connect(self, message): actual_states.append(deepcopy(self.scope["state"])) self.scope["state"]["a"] = 456 self.scope["state"]["b"].append(2) await self.send({"type": "websocket.accept"}) async def open_connection(url: str): async with websockets.client.connect(url) as websocket: return websocket.open async def app_wrapper( scope: Scope, receive: ASGIReceiveCallable, send: ASGISendCallable ): if scope["type"] == "lifespan": return await lifespan_app(scope, receive, send) return await App(scope, receive, send) config = Config( app=app_wrapper, ws=ws_protocol_cls, http=http_protocol_cls, lifespan="on", port=unused_tcp_port, ) async with run_server(config): is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert is_open is_open = await open_connection(f"ws://127.0.0.1:{unused_tcp_port}") assert is_open assert expected_states == actual_states uvicorn-0.27.1/tests/response.py000066400000000000000000000027551456166335300166650ustar00rootroot00000000000000class Response: charset = "utf-8" def __init__(self, content, status_code=200, headers=None, media_type=None): self.body = self.render(content) self.status_code = status_code self.headers = headers or {} self.media_type = media_type self.set_content_type() self.set_content_length() async def __call__(self, scope, receive, send) -> None: prefix = "websocket." if scope["type"] == "websocket" else "" await send( { "type": prefix + "http.response.start", "status": self.status_code, "headers": [ [key.encode(), value.encode()] for key, value in self.headers.items() ], } ) await send({"type": prefix + "http.response.body", "body": self.body}) def render(self, content) -> bytes: if isinstance(content, bytes): return content return content.encode(self.charset) def set_content_length(self): if "content-length" not in self.headers: self.headers["content-length"] = str(len(self.body)) def set_content_type(self): if self.media_type is not None and "content-type" not in self.headers: content_type = self.media_type if content_type.startswith("text/") and self.charset is not None: content_type += "; charset=%s" % self.charset self.headers["content-type"] = content_type uvicorn-0.27.1/tests/supervisors/000077500000000000000000000000001456166335300170505ustar00rootroot00000000000000uvicorn-0.27.1/tests/supervisors/test_multiprocess.py000066400000000000000000000014301456166335300232100ustar00rootroot00000000000000import signal import socket from typing import List, Optional from uvicorn import Config from uvicorn._types import ASGIReceiveCallable, ASGISendCallable, Scope from uvicorn.supervisors import Multiprocess async def app( scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: pass # pragma: no cover def run(sockets: Optional[List[socket.socket]]) -> None: pass # pragma: no cover def test_multiprocess_run() -> None: """ A basic sanity check. Simply run the supervisor against a no-op server, and signal for it to quit immediately. """ config = Config(app=app, workers=2) supervisor = Multiprocess(config, target=run, sockets=[]) supervisor.signal_handler(sig=signal.SIGINT, frame=None) supervisor.run() uvicorn-0.27.1/tests/supervisors/test_reload.py000066400000000000000000000370771456166335300217450ustar00rootroot00000000000000import logging import platform import signal import socket import sys from pathlib import Path from time import sleep from typing import List, Optional, Type import pytest from tests.utils import as_cwd from uvicorn.config import Config from uvicorn.supervisors.basereload import BaseReload, _display_path from uvicorn.supervisors.statreload import StatReload try: from uvicorn.supervisors.watchfilesreload import WatchFilesReload except ImportError: # pragma: no cover WatchFilesReload = None # type: ignore[misc,assignment] try: from uvicorn.supervisors.watchgodreload import WatchGodReload except ImportError: # pragma: no cover WatchGodReload = None # type: ignore[misc,assignment] # TODO: Investigate why this is flaky on MacOS M1. skip_if_m1 = pytest.mark.skipif( sys.platform == "darwin" and platform.processor() == "arm", reason="Flaky on MacOS M1", ) def run(sockets): pass # pragma: no cover class TestBaseReload: @pytest.fixture(autouse=True) def setup( self, reload_directory_structure: Path, reloader_class: Optional[Type[BaseReload]], ): if reloader_class is None: # pragma: no cover pytest.skip("Needed dependency not installed") self.reload_path = reload_directory_structure self.reloader_class = reloader_class def _setup_reloader(self, config: Config) -> BaseReload: config.reload_delay = 0 # save time if self.reloader_class is WatchGodReload: with pytest.deprecated_call(): reloader = self.reloader_class(config, target=run, sockets=[]) else: reloader = self.reloader_class(config, target=run, sockets=[]) assert config.should_reload reloader.startup() return reloader def _reload_tester( self, touch_soon, reloader: BaseReload, *files: Path ) -> Optional[List[Path]]: reloader.restart() if WatchFilesReload is not None and isinstance(reloader, WatchFilesReload): touch_soon(*files) else: assert not next(reloader) sleep(0.1) for file in files: file.touch() return next(reloader) @pytest.mark.parametrize( "reloader_class", [StatReload, WatchGodReload, WatchFilesReload] ) def test_reloader_should_initialize(self) -> None: """ A basic sanity check. Simply run the reloader against a no-op server, and signal for it to quit immediately. """ with as_cwd(self.reload_path): config = Config(app="tests.test_config:asgi_app", reload=True) reloader = self._setup_reloader(config) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [StatReload, WatchGodReload, WatchFilesReload] ) def test_reload_when_python_file_is_changed(self, touch_soon) -> None: file = self.reload_path / "main.py" with as_cwd(self.reload_path): config = Config(app="tests.test_config:asgi_app", reload=True) reloader = self._setup_reloader(config) changes = self._reload_tester(touch_soon, reloader, file) assert changes == [file] reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [StatReload, WatchGodReload, WatchFilesReload] ) def test_should_reload_when_python_file_in_subdir_is_changed( self, touch_soon ) -> None: file = self.reload_path / "app" / "sub" / "sub.py" with as_cwd(self.reload_path): config = Config(app="tests.test_config:asgi_app", reload=True) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, file) reloader.shutdown() @pytest.mark.parametrize("reloader_class", [WatchFilesReload, WatchGodReload]) def test_should_not_reload_when_python_file_in_excluded_subdir_is_changed( self, touch_soon ) -> None: sub_dir = self.reload_path / "app" / "sub" sub_file = sub_dir / "sub.py" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_excludes=[str(sub_dir)], ) reloader = self._setup_reloader(config) assert not self._reload_tester(touch_soon, reloader, sub_file) reloader.shutdown() @pytest.mark.parametrize( "reloader_class, result", [(StatReload, False), (WatchFilesReload, True)] ) def test_reload_when_pattern_matched_file_is_changed( self, result: bool, touch_soon ) -> None: file = self.reload_path / "app" / "js" / "main.js" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_includes=["*.js"] ) reloader = self._setup_reloader(config) assert bool(self._reload_tester(touch_soon, reloader, file)) == result reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [ pytest.param(WatchFilesReload, marks=skip_if_m1), WatchGodReload, ], ) def test_should_not_reload_when_exclude_pattern_match_file_is_changed( self, touch_soon ) -> None: python_file = self.reload_path / "app" / "src" / "main.py" css_file = self.reload_path / "app" / "css" / "main.css" js_file = self.reload_path / "app" / "js" / "main.js" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_includes=["*"], reload_excludes=["*.js"], ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, python_file) assert self._reload_tester(touch_soon, reloader, css_file) assert not self._reload_tester(touch_soon, reloader, js_file) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [StatReload, WatchGodReload, WatchFilesReload] ) def test_should_not_reload_when_dot_file_is_changed(self, touch_soon) -> None: file = self.reload_path / ".dotted" with as_cwd(self.reload_path): config = Config(app="tests.test_config:asgi_app", reload=True) reloader = self._setup_reloader(config) assert not self._reload_tester(touch_soon, reloader, file) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [StatReload, WatchGodReload, WatchFilesReload] ) def test_should_reload_when_directories_have_same_prefix(self, touch_soon) -> None: app_dir = self.reload_path / "app" app_file = app_dir / "src" / "main.py" app_first_dir = self.reload_path / "app_first" app_first_file = app_first_dir / "src" / "main.py" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir), str(app_first_dir)], ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, app_file) assert self._reload_tester(touch_soon, reloader, app_first_file) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [ StatReload, WatchGodReload, pytest.param(WatchFilesReload, marks=skip_if_m1), ], ) def test_should_not_reload_when_only_subdirectory_is_watched( self, touch_soon ) -> None: app_dir = self.reload_path / "app" app_dir_file = self.reload_path / "app" / "src" / "main.py" root_file = self.reload_path / "main.py" config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir)], ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, app_dir_file) assert not self._reload_tester( touch_soon, reloader, root_file, app_dir / "~ignored" ) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [ pytest.param(WatchFilesReload, marks=skip_if_m1), WatchGodReload, ], ) def test_override_defaults(self, touch_soon) -> None: dotted_file = self.reload_path / ".dotted" dotted_dir_file = self.reload_path / ".dotted_dir" / "file.txt" python_file = self.reload_path / "main.py" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, # We need to add *.txt otherwise no regular files will match reload_includes=[".*", "*.txt"], reload_excludes=["*.py"], ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, dotted_file) assert self._reload_tester(touch_soon, reloader, dotted_dir_file) assert not self._reload_tester(touch_soon, reloader, python_file) reloader.shutdown() @pytest.mark.parametrize( "reloader_class", [ pytest.param(WatchFilesReload, marks=skip_if_m1), WatchGodReload, ], ) def test_explicit_paths(self, touch_soon) -> None: dotted_file = self.reload_path / ".dotted" non_dotted_file = self.reload_path / "ext" / "ext.jpg" python_file = self.reload_path / "main.py" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_includes=[".dotted", "ext/ext.jpg"], ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, dotted_file) assert self._reload_tester(touch_soon, reloader, non_dotted_file) assert self._reload_tester(touch_soon, reloader, python_file) reloader.shutdown() @pytest.mark.skipif(WatchFilesReload is None, reason="watchfiles not available") @pytest.mark.parametrize("reloader_class", [WatchFilesReload]) def test_watchfiles_no_changes(self) -> None: sub_dir = self.reload_path / "app" / "sub" with as_cwd(self.reload_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_excludes=[str(sub_dir)], ) reloader = self._setup_reloader(config) from watchfiles import watch assert isinstance(reloader, WatchFilesReload) # just so we can make rust_timeout 100ms reloader.watcher = watch( sub_dir, watch_filter=None, stop_event=reloader.should_exit, yield_on_timeout=True, rust_timeout=100, ) assert reloader.should_restart() is None reloader.shutdown() @pytest.mark.parametrize("reloader_class", [WatchGodReload]) def test_should_detect_new_reload_dirs( self, touch_soon, caplog: pytest.LogCaptureFixture, tmp_path: Path ) -> None: app_dir = tmp_path / "app" app_file = app_dir / "file.py" app_dir.mkdir() app_file.touch() app_first_dir = tmp_path / "app_first" app_first_file = app_first_dir / "file.py" with as_cwd(tmp_path): config = Config( app="tests.test_config:asgi_app", reload=True, reload_includes=["app*"] ) reloader = self._setup_reloader(config) assert self._reload_tester(touch_soon, reloader, app_file) app_first_dir.mkdir() assert self._reload_tester(touch_soon, reloader, app_first_file) assert caplog.records[-2].levelno == logging.INFO assert ( caplog.records[-1].message == "WatchGodReload detected a new reload " f"dir '{app_first_dir.name}' in '{tmp_path}'; Adding to watch list." ) reloader.shutdown() @pytest.mark.skipif(WatchFilesReload is None, reason="watchfiles not available") def test_should_watch_one_dir_cwd(mocker, reload_directory_structure): mock_watch = mocker.patch("uvicorn.supervisors.watchfilesreload.watch") app_dir = reload_directory_structure / "app" app_first_dir = reload_directory_structure / "app_first" with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir), str(app_first_dir)], ) WatchFilesReload(config, target=run, sockets=[]) mock_watch.assert_called_once() assert mock_watch.call_args[0] == (Path.cwd(),) @pytest.mark.skipif(WatchFilesReload is None, reason="watchfiles not available") def test_should_watch_separate_dirs_outside_cwd(mocker, reload_directory_structure): mock_watch = mocker.patch("uvicorn.supervisors.watchfilesreload.watch") app_dir = reload_directory_structure / "app" app_first_dir = reload_directory_structure / "app_first" config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir), str(app_first_dir)], ) WatchFilesReload(config, target=run, sockets=[]) mock_watch.assert_called_once() assert set(mock_watch.call_args[0]) == { app_dir, app_first_dir, Path.cwd(), } def test_display_path_relative(tmp_path): with as_cwd(tmp_path): p = tmp_path / "app" / "foobar.py" # accept windows paths as wells as posix assert _display_path(p) in ("'app/foobar.py'", "'app\\foobar.py'") def test_display_path_non_relative(): p = Path("/foo/bar.py") assert _display_path(p) in ("'/foo/bar.py'", "'\\foo\\bar.py'") def test_base_reloader_run(tmp_path): calls = [] step = 0 class CustomReload(BaseReload): def startup(self): calls.append("startup") def restart(self): calls.append("restart") def shutdown(self): calls.append("shutdown") def should_restart(self): nonlocal step step += 1 if step == 1: return None elif step == 2: return [tmp_path / "foobar.py"] else: raise StopIteration() config = Config(app="tests.test_config:asgi_app", reload=True) reloader = CustomReload(config, target=run, sockets=[]) reloader.run() assert calls == ["startup", "restart", "shutdown"] def test_base_reloader_should_exit(tmp_path): config = Config(app="tests.test_config:asgi_app", reload=True) reloader = BaseReload(config, target=run, sockets=[]) assert not reloader.should_exit.is_set() reloader.pause() if sys.platform == "win32": reloader.signal_handler(signal.CTRL_C_EVENT, None) # pragma: py-not-win32 else: reloader.signal_handler(signal.SIGINT, None) # pragma: py-win32 assert reloader.should_exit.is_set() with pytest.raises(StopIteration): reloader.pause() def test_base_reloader_closes_sockets_on_shutdown(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) config = Config(app="tests.test_config:asgi_app", reload=True) reloader = BaseReload(config, target=run, sockets=[sock]) reloader.startup() assert sock.fileno() != -1 reloader.shutdown() assert sock.fileno() == -1 uvicorn-0.27.1/tests/supervisors/test_signal.py000066400000000000000000000077001456166335300217420ustar00rootroot00000000000000import asyncio import signal from asyncio import Event import httpx import pytest from tests.utils import run_server from uvicorn import Server from uvicorn.config import Config @pytest.mark.anyio async def test_sigint_finish_req(unused_tcp_port: int): """ 1. Request is sent 2. Sigint is sent to uvicorn 3. Shutdown sequence start 4. Request is finished before timeout_graceful_shutdown=1 Result: Request should go through, even though the server was cancelled. """ server_event = Event() async def wait_app(scope, receive, send): await send({"type": "http.response.start", "status": 200, "headers": []}) await send({"type": "http.response.body", "body": b"start", "more_body": True}) await server_event.wait() await send({"type": "http.response.body", "body": b"end", "more_body": False}) config = Config( app=wait_app, reload=False, port=unused_tcp_port, timeout_graceful_shutdown=1 ) server: Server async with run_server(config) as server: async with httpx.AsyncClient() as client: req = asyncio.create_task(client.get(f"http://127.0.0.1:{unused_tcp_port}")) await asyncio.sleep(0.1) # ensure next tick server.handle_exit(sig=signal.SIGINT, frame=None) # exit server_event.set() # continue request # ensure httpx has processed the response and result is complete await req assert req.result().status_code == 200 @pytest.mark.anyio async def test_sigint_abort_req(unused_tcp_port: int, caplog): """ 1. Request is sent 2. Sigint is sent to uvicorn 3. Shutdown sequence start 4. Request is _NOT_ finished before timeout_graceful_shutdown=1 Result: Request is cancelled mid-execution, and httpx will raise a `RemoteProtocolError`. """ async def forever_app(scope, receive, send): server_event = Event() await send({"type": "http.response.start", "status": 200, "headers": []}) await send({"type": "http.response.body", "body": b"start", "more_body": True}) # we never continue this one, so this request will time out await server_event.wait() await send({"type": "http.response.body", "body": b"end", "more_body": False}) config = Config( app=forever_app, reload=False, port=unused_tcp_port, timeout_graceful_shutdown=1 ) server: Server async with run_server(config) as server: async with httpx.AsyncClient() as client: req = asyncio.create_task(client.get(f"http://127.0.0.1:{unused_tcp_port}")) await asyncio.sleep(0.1) # next tick # trigger exit, this request should time out in ~1 sec server.handle_exit(sig=signal.SIGINT, frame=None) with pytest.raises(httpx.RemoteProtocolError): await req # req.result() assert ( "Cancel 1 running task(s), timeout graceful shutdown exceeded" in caplog.messages ) @pytest.mark.anyio async def test_sigint_deny_request_after_triggered(unused_tcp_port: int, caplog): """ 1. Server is started 2. Shutdown sequence start 3. Request is sent, but not accepted Result: Request should fail, and not be able to be sent, since server is no longer accepting connections. """ async def app(scope, receive, send): await send({"type": "http.response.start", "status": 200, "headers": []}) await asyncio.sleep(1) config = Config( app=app, reload=False, port=unused_tcp_port, timeout_graceful_shutdown=1 ) server: Server async with run_server(config) as server: # exit and ensure we do not accept more requests server.handle_exit(sig=signal.SIGINT, frame=None) await asyncio.sleep(0.1) # next tick async with httpx.AsyncClient() as client: with pytest.raises(httpx.ConnectError): await client.get(f"http://127.0.0.1:{unused_tcp_port}") uvicorn-0.27.1/tests/test_auto_detection.py000066400000000000000000000034731456166335300210720ustar00rootroot00000000000000import asyncio import importlib import pytest from uvicorn.config import Config from uvicorn.loops.auto import auto_loop_setup from uvicorn.main import ServerState from uvicorn.protocols.http.auto import AutoHTTPProtocol from uvicorn.protocols.websockets.auto import AutoWebSocketsProtocol try: importlib.import_module("uvloop") expected_loop = "uvloop" # pragma: py-win32 except ImportError: # pragma: py-not-win32 expected_loop = "asyncio" try: importlib.import_module("httptools") expected_http = "HttpToolsProtocol" except ImportError: # pragma: no cover expected_http = "H11Protocol" try: importlib.import_module("websockets") expected_websockets = "WebSocketProtocol" except ImportError: # pragma: no cover expected_websockets = "WSProtocol" async def app(scope, receive, send): pass # pragma: no cover # TODO: Add pypy to our testing matrix, and assert we get the correct classes # dependent on the platform we're running the tests under. def test_loop_auto(): auto_loop_setup() policy = asyncio.get_event_loop_policy() assert isinstance(policy, asyncio.events.BaseDefaultEventLoopPolicy) assert type(policy).__module__.startswith(expected_loop) @pytest.mark.anyio async def test_http_auto(): config = Config(app=app) server_state = ServerState() protocol = AutoHTTPProtocol( # type: ignore[call-arg] config=config, server_state=server_state, app_state={} ) assert type(protocol).__name__ == expected_http @pytest.mark.anyio async def test_websocket_auto(): config = Config(app=app) server_state = ServerState() assert AutoWebSocketsProtocol is not None protocol = AutoWebSocketsProtocol( config=config, server_state=server_state, app_state={} ) assert type(protocol).__name__ == expected_websockets uvicorn-0.27.1/tests/test_cli.py000066400000000000000000000140341456166335300166260ustar00rootroot00000000000000import contextlib import importlib import os import platform import sys from pathlib import Path from textwrap import dedent from typing import Iterator from unittest import mock import pytest from click.testing import CliRunner import uvicorn from uvicorn.config import Config from uvicorn.main import main as cli from uvicorn.server import Server from uvicorn.supervisors import ChangeReload, Multiprocess HEADERS = "Content-Security-Policy:default-src 'self'; script-src https://example.com" main = importlib.import_module("uvicorn.main") @contextlib.contextmanager def load_env_var(key: str, value: str) -> Iterator[None]: old_environ = dict(os.environ) os.environ[key] = value yield os.environ.clear() os.environ.update(old_environ) class App: pass def test_cli_print_version() -> None: runner = CliRunner() result = runner.invoke(cli, ["--version"]) assert result.exit_code == 0 assert ( "Running uvicorn %s with %s %s on %s" % ( uvicorn.__version__, platform.python_implementation(), platform.python_version(), platform.system(), ) ) in result.output def test_cli_headers() -> None: runner = CliRunner() with mock.patch.object(main, "run") as mock_run: result = runner.invoke(cli, ["tests.test_cli:App", "--header", HEADERS]) assert result.output == "" assert result.exit_code == 0 mock_run.assert_called_once() assert mock_run.call_args[1]["headers"] == [ [ "Content-Security-Policy", "default-src 'self'; script-src https://example.com", ] ] def test_cli_call_server_run() -> None: runner = CliRunner() with mock.patch.object(Server, "run") as mock_run: result = runner.invoke(cli, ["tests.test_cli:App"]) assert result.exit_code == 3 mock_run.assert_called_once() def test_cli_call_change_reload_run() -> None: runner = CliRunner() with mock.patch.object(Config, "bind_socket") as mock_bind_socket: with mock.patch.object(ChangeReload, "run") as mock_run: result = runner.invoke(cli, ["tests.test_cli:App", "--reload"]) assert result.exit_code == 0 mock_bind_socket.assert_called_once() mock_run.assert_called_once() def test_cli_call_multiprocess_run() -> None: runner = CliRunner() with mock.patch.object(Config, "bind_socket") as mock_bind_socket: with mock.patch.object(Multiprocess, "run") as mock_run: result = runner.invoke(cli, ["tests.test_cli:App", "--workers=2"]) assert result.exit_code == 0 mock_bind_socket.assert_called_once() mock_run.assert_called_once() @pytest.fixture(params=(True, False)) def uds_file( tmp_path: Path, request: pytest.FixtureRequest ) -> Path: # pragma: py-win32 file = tmp_path / "uvicorn.sock" should_create_file = request.param if should_create_file: file.touch(exist_ok=True) return file @pytest.mark.skipif(sys.platform == "win32", reason="require unix-like system") def test_cli_uds(uds_file: Path) -> None: # pragma: py-win32 runner = CliRunner() with mock.patch.object(Config, "bind_socket") as mock_bind_socket: with mock.patch.object(Multiprocess, "run") as mock_run: result = runner.invoke( cli, ["tests.test_cli:App", "--workers=2", "--uds", str(uds_file)] ) assert result.exit_code == 0 assert result.output == "" mock_bind_socket.assert_called_once() mock_run.assert_called_once() assert not uds_file.exists() def test_cli_incomplete_app_parameter() -> None: runner = CliRunner() result = runner.invoke(cli, ["tests.test_cli"]) assert ( 'Error loading ASGI app. Import string "tests.test_cli" ' 'must be in format ":".' ) in result.output assert result.exit_code == 1 def test_cli_event_size() -> None: runner = CliRunner() with mock.patch.object(main, "run") as mock_run: result = runner.invoke( cli, ["tests.test_cli:App", "--h11-max-incomplete-event-size", str(32 * 1024)], ) assert result.output == "" assert result.exit_code == 0 mock_run.assert_called_once() assert mock_run.call_args[1]["h11_max_incomplete_event_size"] == 32768 @pytest.mark.parametrize("http_protocol", ["h11", "httptools"]) def test_env_variables(http_protocol: str): with load_env_var("UVICORN_HTTP", http_protocol): runner = CliRunner(env=os.environ) with mock.patch.object(main, "run") as mock_run: runner.invoke(cli, ["tests.test_cli:App"]) _, kwargs = mock_run.call_args assert kwargs["http"] == http_protocol def test_ignore_environment_variable_when_set_on_cli(): with load_env_var("UVICORN_HTTP", "h11"): runner = CliRunner(env=os.environ) with mock.patch.object(main, "run") as mock_run: runner.invoke(cli, ["tests.test_cli:App", "--http=httptools"]) _, kwargs = mock_run.call_args assert kwargs["http"] == "httptools" def test_app_dir(tmp_path: Path, caplog: pytest.LogCaptureFixture) -> None: app_dir = tmp_path / "dir" / "app_dir" app_file = app_dir / "main.py" app_dir.mkdir(parents=True) app_file.touch() app_file.write_text( dedent( """ async def app(scope, receive, send): ... """ ) ) runner = CliRunner() with mock.patch.object(Server, "run") as mock_run: result = runner.invoke(cli, ["main:app", "--app-dir", f"{str(app_dir)}"]) assert result.exit_code == 3 mock_run.assert_called_once() assert sys.path[0] == str(app_dir) def test_set_app_via_environment_variable(): app_path = "tests.test_cli:App" with load_env_var("UVICORN_APP", app_path): runner = CliRunner(env=os.environ) with mock.patch.object(main, "run") as mock_run: result = runner.invoke(cli) args, _ = mock_run.call_args assert result.exit_code == 0 assert args == (app_path,) uvicorn-0.27.1/tests/test_config.py000066400000000000000000000441741456166335300173340ustar00rootroot00000000000000import json import logging import os import socket import sys import typing from pathlib import Path from typing import Literal, Optional from unittest.mock import MagicMock import pytest import yaml from pytest_mock import MockerFixture from tests.utils import as_cwd from uvicorn._types import ( ASGIApplication, ASGIReceiveCallable, ASGISendCallable, Environ, Scope, StartResponse, ) from uvicorn.config import Config from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware from uvicorn.middleware.wsgi import WSGIMiddleware from uvicorn.protocols.http.h11_impl import H11Protocol @pytest.fixture def mocked_logging_config_module(mocker: MockerFixture) -> MagicMock: return mocker.patch("logging.config") @pytest.fixture def json_logging_config(logging_config: dict) -> str: return json.dumps(logging_config) @pytest.fixture def yaml_logging_config(logging_config: dict) -> str: return yaml.dump(logging_config) async def asgi_app( scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: pass # pragma: nocover def wsgi_app(environ: Environ, start_response: StartResponse) -> None: pass # pragma: nocover @pytest.mark.parametrize( "app, expected_should_reload", [(asgi_app, False), ("tests.test_config:asgi_app", True)], ) def test_config_should_reload_is_set( app: "ASGIApplication", expected_should_reload: bool ) -> None: config = Config(app=app, reload=True) assert config.reload is True assert config.should_reload is expected_should_reload def test_should_warn_on_invalid_reload_configuration( tmp_path: Path, caplog: pytest.LogCaptureFixture ) -> None: config_class = Config(app=asgi_app, reload_dirs=[str(tmp_path)]) assert not config_class.should_reload assert len(caplog.records) == 1 assert ( caplog.records[-1].message == "Current configuration will not reload as not all conditions are met, " "please refer to documentation." ) config_no_reload = Config( app="tests.test_config:asgi_app", reload_dirs=[str(tmp_path)] ) assert not config_no_reload.should_reload assert len(caplog.records) == 2 assert ( caplog.records[-1].message == "Current configuration will not reload as not all conditions are met, " "please refer to documentation." ) def test_reload_dir_is_set( reload_directory_structure: Path, caplog: pytest.LogCaptureFixture ) -> None: app_dir = reload_directory_structure / "app" with caplog.at_level(logging.INFO): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir)] ) assert len(caplog.records) == 1 assert ( caplog.records[-1].message == f"Will watch for changes in these directories: {[str(app_dir)]}" ) assert config.reload_dirs == [app_dir] config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=str(app_dir) ) assert config.reload_dirs == [app_dir] def test_non_existant_reload_dir_is_not_set( reload_directory_structure: Path, caplog: pytest.LogCaptureFixture ) -> None: with as_cwd(reload_directory_structure), caplog.at_level(logging.WARNING): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=["reload"] ) assert config.reload_dirs == [reload_directory_structure] assert ( caplog.records[-1].message == "Provided reload directories ['reload'] did not contain valid " + "directories, watching current working directory." ) def test_reload_subdir_removal(reload_directory_structure: Path) -> None: app_dir = reload_directory_structure / "app" reload_dirs = [str(reload_directory_structure), "app", str(app_dir)] with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=reload_dirs ) assert config.reload_dirs == [reload_directory_structure] def test_reload_included_dir_is_added_to_reload_dirs( reload_directory_structure: Path, ) -> None: app_dir = reload_directory_structure / "app" ext_dir = reload_directory_structure / "ext" with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[str(app_dir)], reload_includes=["*.js", str(ext_dir)], ) assert frozenset(config.reload_dirs), frozenset([app_dir, ext_dir]) assert frozenset(config.reload_includes) == frozenset(["*.js", str(ext_dir)]) def test_reload_dir_subdirectories_are_removed( reload_directory_structure: Path, ) -> None: app_dir = reload_directory_structure / "app" app_sub_dir = app_dir / "sub" ext_dir = reload_directory_structure / "ext" ext_sub_dir = ext_dir / "sub" with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_dirs=[ str(app_dir), str(app_sub_dir), str(ext_sub_dir), str(ext_dir), ], ) assert frozenset(config.reload_dirs) == frozenset([app_dir, ext_dir]) def test_reload_excluded_subdirectories_are_removed( reload_directory_structure: Path, ) -> None: app_dir = reload_directory_structure / "app" app_sub_dir = app_dir / "sub" with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_excludes=[str(app_dir), str(app_sub_dir)], ) assert frozenset(config.reload_dirs) == frozenset([reload_directory_structure]) assert frozenset(config.reload_dirs_excludes) == frozenset([app_dir]) assert frozenset(config.reload_excludes) == frozenset( [str(app_dir), str(app_sub_dir)] ) def test_reload_includes_exclude_dir_patterns_are_matched( reload_directory_structure: Path, caplog: pytest.LogCaptureFixture ) -> None: with caplog.at_level(logging.INFO): first_app_dir = reload_directory_structure / "app_first" / "src" second_app_dir = reload_directory_structure / "app_second" / "src" with as_cwd(reload_directory_structure): config = Config( app="tests.test_config:asgi_app", reload=True, reload_includes=["*/src"], reload_excludes=["app", "*third*"], ) assert len(caplog.records) == 1 assert ( caplog.records[-1].message == "Will watch for changes in these directories: " f"{sorted([str(first_app_dir), str(second_app_dir)])}" ) assert frozenset(config.reload_dirs) == frozenset( [first_app_dir, second_app_dir] ) assert config.reload_includes == ["*/src"] def test_wsgi_app() -> None: config = Config(app=wsgi_app, interface="wsgi", proxy_headers=False) config.load() assert isinstance(config.loaded_app, WSGIMiddleware) assert config.interface == "wsgi" assert config.asgi_version == "3.0" def test_proxy_headers() -> None: config = Config(app=asgi_app) config.load() assert config.proxy_headers is True assert isinstance(config.loaded_app, ProxyHeadersMiddleware) def test_app_unimportable_module() -> None: config = Config(app="no.such:app") with pytest.raises(ImportError): config.load() def test_app_unimportable_other(caplog: pytest.LogCaptureFixture) -> None: config = Config(app="tests.test_config:app") with pytest.raises(SystemExit): config.load() error_messages = [ record.message for record in caplog.records if record.name == "uvicorn.error" and record.levelname == "ERROR" ] assert ( 'Error loading ASGI app. Attribute "app" not found in module "tests.test_config".' # noqa: E501 == error_messages.pop(0) ) def test_app_factory(caplog: pytest.LogCaptureFixture) -> None: def create_app() -> "ASGIApplication": return asgi_app config = Config(app=create_app, factory=True, proxy_headers=False) config.load() assert config.loaded_app is asgi_app # Flag not passed. In this case, successfully load the app, but issue a warning # to indicate that an explicit flag is preferred. caplog.clear() config = Config(app=create_app, proxy_headers=False) with caplog.at_level(logging.WARNING): config.load() assert config.loaded_app is asgi_app assert len(caplog.records) == 1 assert "--factory" in caplog.records[0].message # App not a no-arguments callable. config = Config(app=asgi_app, factory=True) with pytest.raises(SystemExit): config.load() def test_concrete_http_class() -> None: config = Config(app=asgi_app, http=H11Protocol) config.load() assert config.http_protocol_class is H11Protocol def test_socket_bind() -> None: config = Config(app=asgi_app) config.load() sock = config.bind_socket() assert isinstance(sock, socket.socket) sock.close() def test_ssl_config( tls_ca_certificate_pem_path: str, tls_ca_certificate_private_key_path: str, ) -> None: config = Config( app=asgi_app, ssl_certfile=tls_ca_certificate_pem_path, ssl_keyfile=tls_ca_certificate_private_key_path, ) config.load() assert config.is_ssl is True def test_ssl_config_combined(tls_certificate_key_and_chain_path: str) -> None: config = Config( app=asgi_app, ssl_certfile=tls_certificate_key_and_chain_path, ) config.load() assert config.is_ssl is True def asgi2_app(scope: "Scope") -> typing.Callable: async def asgi( receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: # pragma: nocover pass return asgi # pragma: nocover @pytest.mark.parametrize( "app, expected_interface", [(asgi_app, "3.0"), (asgi2_app, "2.0")] ) def test_asgi_version( app: "ASGIApplication", expected_interface: Literal["2.0", "3.0"] ) -> None: config = Config(app=app) config.load() assert config.asgi_version == expected_interface @pytest.mark.parametrize( "use_colors, expected", [ pytest.param(None, None, id="use_colors_not_provided"), pytest.param("invalid", None, id="use_colors_invalid_value"), pytest.param(True, True, id="use_colors_enabled"), pytest.param(False, False, id="use_colors_disabled"), ], ) def test_log_config_default( mocked_logging_config_module: MagicMock, use_colors: typing.Optional[bool], expected: typing.Optional[bool], logging_config, ) -> None: """ Test that one can specify the use_colors option when using the default logging config. """ config = Config(app=asgi_app, use_colors=use_colors, log_config=logging_config) config.load() mocked_logging_config_module.dictConfig.assert_called_once_with(logging_config) (provided_dict_config,), _ = mocked_logging_config_module.dictConfig.call_args assert provided_dict_config["formatters"]["default"]["use_colors"] == expected def test_log_config_json( mocked_logging_config_module: MagicMock, logging_config: dict, json_logging_config: str, mocker: MockerFixture, ) -> None: """ Test that one can load a json config from disk. """ mocked_open = mocker.patch( "uvicorn.config.open", mocker.mock_open(read_data=json_logging_config) ) config = Config(app=asgi_app, log_config="log_config.json") config.load() mocked_open.assert_called_once_with("log_config.json") mocked_logging_config_module.dictConfig.assert_called_once_with(logging_config) @pytest.mark.parametrize("config_filename", ["log_config.yml", "log_config.yaml"]) def test_log_config_yaml( mocked_logging_config_module: MagicMock, logging_config: dict, yaml_logging_config: str, mocker: MockerFixture, config_filename: str, ) -> None: """ Test that one can load a yaml config from disk. """ mocked_open = mocker.patch( "uvicorn.config.open", mocker.mock_open(read_data=yaml_logging_config) ) config = Config(app=asgi_app, log_config=config_filename) config.load() mocked_open.assert_called_once_with(config_filename) mocked_logging_config_module.dictConfig.assert_called_once_with(logging_config) def test_log_config_file(mocked_logging_config_module: MagicMock) -> None: """ Test that one can load a configparser config from disk. """ config = Config(app=asgi_app, log_config="log_config") config.load() mocked_logging_config_module.fileConfig.assert_called_once_with( "log_config", disable_existing_loggers=False ) @pytest.fixture(params=[0, 1]) def web_concurrency(request: pytest.FixtureRequest) -> typing.Iterator[int]: yield request.param if os.getenv("WEB_CONCURRENCY"): del os.environ["WEB_CONCURRENCY"] @pytest.fixture(params=["127.0.0.1", "127.0.0.2"]) def forwarded_allow_ips(request: pytest.FixtureRequest) -> typing.Iterator[str]: yield request.param if os.getenv("FORWARDED_ALLOW_IPS"): del os.environ["FORWARDED_ALLOW_IPS"] def test_env_file( web_concurrency: int, forwarded_allow_ips: str, caplog: pytest.LogCaptureFixture, tmp_path: Path, ) -> None: """ Test that one can load environment variables using an env file. """ fp = tmp_path / ".env" content = ( f"WEB_CONCURRENCY={web_concurrency}\n" f"FORWARDED_ALLOW_IPS={forwarded_allow_ips}\n" ) fp.write_text(content) with caplog.at_level(logging.INFO): config = Config(app=asgi_app, env_file=fp) config.load() assert config.workers == int(str(os.getenv("WEB_CONCURRENCY"))) assert config.forwarded_allow_ips == os.getenv("FORWARDED_ALLOW_IPS") assert len(caplog.records) == 1 assert f"Loading environment from '{fp}'" in caplog.records[0].message @pytest.mark.parametrize( "access_log, handlers", [ pytest.param(True, 1, id="access log enabled should have single handler"), pytest.param(False, 0, id="access log disabled shouldn't have handlers"), ], ) def test_config_access_log(access_log: bool, handlers: int) -> None: config = Config(app=asgi_app, access_log=access_log) config.load() assert len(logging.getLogger("uvicorn.access").handlers) == handlers assert config.access_log == access_log @pytest.mark.parametrize("log_level", [5, 10, 20, 30, 40, 50]) def test_config_log_level(log_level: int) -> None: config = Config(app=asgi_app, log_level=log_level) config.load() assert logging.getLogger("uvicorn.error").level == log_level assert logging.getLogger("uvicorn.access").level == log_level assert logging.getLogger("uvicorn.asgi").level == log_level assert config.log_level == log_level @pytest.mark.parametrize("log_level", [None, 0, 5, 10, 20, 30, 40, 50]) @pytest.mark.parametrize("uvicorn_logger_level", [0, 5, 10, 20, 30, 40, 50]) def test_config_log_effective_level( log_level: Optional[int], uvicorn_logger_level: Optional[int] ) -> None: default_level = 30 log_config = { "version": 1, "disable_existing_loggers": False, "loggers": { "uvicorn": {"level": uvicorn_logger_level}, }, } config = Config(app=asgi_app, log_level=log_level, log_config=log_config) config.load() effective_level = log_level or uvicorn_logger_level or default_level assert logging.getLogger("uvicorn.error").getEffectiveLevel() == effective_level assert logging.getLogger("uvicorn.access").getEffectiveLevel() == effective_level assert logging.getLogger("uvicorn.asgi").getEffectiveLevel() == effective_level def test_ws_max_size() -> None: config = Config(app=asgi_app, ws_max_size=1000) config.load() assert config.ws_max_size == 1000 def test_ws_max_queue() -> None: config = Config(app=asgi_app, ws_max_queue=64) config.load() assert config.ws_max_queue == 64 @pytest.mark.parametrize( "reload, workers", [ (True, 1), (False, 2), ], ids=["--reload=True --workers=1", "--reload=False --workers=2"], ) @pytest.mark.skipif(sys.platform == "win32", reason="require unix-like system") def test_bind_unix_socket_works_with_reload_or_workers( tmp_path, reload, workers, short_socket_name ): # pragma: py-win32 config = Config(app=asgi_app, uds=short_socket_name, reload=reload, workers=workers) config.load() sock = config.bind_socket() assert isinstance(sock, socket.socket) assert sock.family == socket.AF_UNIX assert sock.getsockname() == short_socket_name sock.close() @pytest.mark.parametrize( "reload, workers", [ (True, 1), (False, 2), ], ids=["--reload=True --workers=1", "--reload=False --workers=2"], ) @pytest.mark.skipif(sys.platform == "win32", reason="require unix-like system") def test_bind_fd_works_with_reload_or_workers(reload, workers): # pragma: py-win32 fdsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) fd = fdsock.fileno() config = Config(app=asgi_app, fd=fd, reload=reload, workers=workers) config.load() sock = config.bind_socket() assert isinstance(sock, socket.socket) assert sock.family == socket.AF_UNIX assert sock.getsockname() == "" sock.close() fdsock.close() @pytest.mark.parametrize( "reload, workers, expected", [ (True, 1, True), (False, 2, True), (False, 1, False), ], ids=[ "--reload=True --workers=1", "--reload=False --workers=2", "--reload=False --workers=1", ], ) def test_config_use_subprocess(reload, workers, expected): config = Config(app=asgi_app, reload=reload, workers=workers) config.load() assert config.use_subprocess == expected def test_warn_when_using_reload_and_workers(caplog: pytest.LogCaptureFixture) -> None: Config(app=asgi_app, reload=True, workers=2) assert len(caplog.records) == 1 assert ( '"workers" flag is ignored when reloading is enabled.' in caplog.records[0].message ) uvicorn-0.27.1/tests/test_default_headers.py000066400000000000000000000065731456166335300212070ustar00rootroot00000000000000import httpx import pytest from tests.utils import run_server from uvicorn import Config async def app(scope, receive, send): assert scope["type"] == "http" await send({"type": "http.response.start", "status": 200, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) @pytest.mark.anyio async def test_default_default_headers(unused_tcp_port: int): config = Config(app=app, loop="asyncio", limit_max_requests=1, port=unused_tcp_port) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.headers["server"] == "uvicorn" and response.headers["date"] @pytest.mark.anyio async def test_override_server_header(unused_tcp_port: int): config = Config( app=app, loop="asyncio", limit_max_requests=1, headers=[("Server", "over-ridden")], port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert ( response.headers["server"] == "over-ridden" and response.headers["date"] ) @pytest.mark.anyio async def test_disable_default_server_header(unused_tcp_port: int): config = Config( app=app, loop="asyncio", limit_max_requests=1, server_header=False, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert "server" not in response.headers @pytest.mark.anyio async def test_override_server_header_multiple_times(unused_tcp_port: int): config = Config( app=app, loop="asyncio", limit_max_requests=1, headers=[("Server", "over-ridden"), ("Server", "another-value")], port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert ( response.headers["server"] == "over-ridden, another-value" and response.headers["date"] ) @pytest.mark.anyio async def test_add_additional_header(unused_tcp_port: int): config = Config( app=app, loop="asyncio", limit_max_requests=1, headers=[("X-Additional", "new-value")], port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert ( response.headers["x-additional"] == "new-value" and response.headers["server"] == "uvicorn" and response.headers["date"] ) @pytest.mark.anyio async def test_disable_default_date_header(unused_tcp_port: int): config = Config( app=app, loop="asyncio", limit_max_requests=1, date_header=False, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert "date" not in response.headers uvicorn-0.27.1/tests/test_lifespan.py000066400000000000000000000177201456166335300176650ustar00rootroot00000000000000import asyncio import pytest from uvicorn.config import Config from uvicorn.lifespan.off import LifespanOff from uvicorn.lifespan.on import LifespanOn def test_lifespan_on(): startup_complete = False shutdown_complete = False async def app(scope, receive, send): nonlocal startup_complete, shutdown_complete message = await receive() assert message["type"] == "lifespan.startup" startup_complete = True await send({"type": "lifespan.startup.complete"}) message = await receive() assert message["type"] == "lifespan.shutdown" shutdown_complete = True await send({"type": "lifespan.shutdown.complete"}) async def test(): config = Config(app=app, lifespan="on") lifespan = LifespanOn(config) assert not startup_complete assert not shutdown_complete await lifespan.startup() assert startup_complete assert not shutdown_complete await lifespan.shutdown() assert startup_complete assert shutdown_complete loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() def test_lifespan_off(): async def app(scope, receive, send): pass # pragma: no cover async def test(): config = Config(app=app, lifespan="off") lifespan = LifespanOff(config) await lifespan.startup() await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() def test_lifespan_auto(): startup_complete = False shutdown_complete = False async def app(scope, receive, send): nonlocal startup_complete, shutdown_complete message = await receive() assert message["type"] == "lifespan.startup" startup_complete = True await send({"type": "lifespan.startup.complete"}) message = await receive() assert message["type"] == "lifespan.shutdown" shutdown_complete = True await send({"type": "lifespan.shutdown.complete"}) async def test(): config = Config(app=app, lifespan="auto") lifespan = LifespanOn(config) assert not startup_complete assert not shutdown_complete await lifespan.startup() assert startup_complete assert not shutdown_complete await lifespan.shutdown() assert startup_complete assert shutdown_complete loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() def test_lifespan_auto_with_error(): async def app(scope, receive, send): assert scope["type"] == "http" async def test(): config = Config(app=app, lifespan="auto") lifespan = LifespanOn(config) await lifespan.startup() assert lifespan.error_occured assert not lifespan.should_exit await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() def test_lifespan_on_with_error(): async def app(scope, receive, send): if scope["type"] != "http": raise RuntimeError() async def test(): config = Config(app=app, lifespan="on") lifespan = LifespanOn(config) await lifespan.startup() assert lifespan.error_occured assert lifespan.should_exit await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() @pytest.mark.parametrize("mode", ("auto", "on")) @pytest.mark.parametrize("raise_exception", (True, False)) def test_lifespan_with_failed_startup(mode, raise_exception, caplog): async def app(scope, receive, send): message = await receive() assert message["type"] == "lifespan.startup" await send( {"type": "lifespan.startup.failed", "message": "the lifespan event failed"} ) if raise_exception: # App should be able to re-raise an exception if startup failed. raise RuntimeError() async def test(): config = Config(app=app, lifespan=mode) lifespan = LifespanOn(config) await lifespan.startup() assert lifespan.startup_failed assert lifespan.error_occured is raise_exception assert lifespan.should_exit await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() error_messages = [ record.message for record in caplog.records if record.name == "uvicorn.error" and record.levelname == "ERROR" ] assert "the lifespan event failed" in error_messages.pop(0) assert "Application startup failed. Exiting." in error_messages.pop(0) def test_lifespan_scope_asgi3app(): async def asgi3app(scope, receive, send): assert scope == { "type": "lifespan", "asgi": {"version": "3.0", "spec_version": "2.0"}, "state": {}, } async def test(): config = Config(app=asgi3app, lifespan="on") lifespan = LifespanOn(config) await lifespan.startup() assert not lifespan.startup_failed assert not lifespan.error_occured assert not lifespan.should_exit await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() def test_lifespan_scope_asgi2app(): def asgi2app(scope): assert scope == { "type": "lifespan", "asgi": {"version": "2.0", "spec_version": "2.0"}, "state": {}, } async def asgi(receive, send): pass return asgi async def test(): config = Config(app=asgi2app, lifespan="on") lifespan = LifespanOn(config) await lifespan.startup() await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() @pytest.mark.parametrize("mode", ("auto", "on")) @pytest.mark.parametrize("raise_exception", (True, False)) def test_lifespan_with_failed_shutdown(mode, raise_exception, caplog): async def app(scope, receive, send): message = await receive() assert message["type"] == "lifespan.startup" await send({"type": "lifespan.startup.complete"}) message = await receive() assert message["type"] == "lifespan.shutdown" await send( {"type": "lifespan.shutdown.failed", "message": "the lifespan event failed"} ) if raise_exception: # App should be able to re-raise an exception if startup failed. raise RuntimeError() async def test(): config = Config(app=app, lifespan=mode) lifespan = LifespanOn(config) await lifespan.startup() assert not lifespan.startup_failed await lifespan.shutdown() assert lifespan.shutdown_failed assert lifespan.error_occured is raise_exception assert lifespan.should_exit loop = asyncio.new_event_loop() loop.run_until_complete(test()) error_messages = [ record.message for record in caplog.records if record.name == "uvicorn.error" and record.levelname == "ERROR" ] assert "the lifespan event failed" in error_messages.pop(0) assert "Application shutdown failed. Exiting." in error_messages.pop(0) loop.close() def test_lifespan_state(): async def app(scope, receive, send): message = await receive() assert message["type"] == "lifespan.startup" await send({"type": "lifespan.startup.complete"}) scope["state"]["foo"] = 123 message = await receive() assert message["type"] == "lifespan.shutdown" await send({"type": "lifespan.shutdown.complete"}) async def test(): config = Config(app=app, lifespan="on") lifespan = LifespanOn(config) await lifespan.startup() assert lifespan.state == {"foo": 123} await lifespan.shutdown() loop = asyncio.new_event_loop() loop.run_until_complete(test()) loop.close() uvicorn-0.27.1/tests/test_main.py000066400000000000000000000075421456166335300170110ustar00rootroot00000000000000import inspect import socket from logging import WARNING import httpx import pytest from tests.utils import run_server from uvicorn import Server from uvicorn.config import Config from uvicorn.main import run async def app(scope, receive, send): assert scope["type"] == "http" await send({"type": "http.response.start", "status": 204, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) def _has_ipv6(host): sock = None has_ipv6 = False if socket.has_ipv6: try: sock = socket.socket(socket.AF_INET6) sock.bind((host, 0)) has_ipv6 = True except Exception: # pragma: no cover pass if sock: sock.close() return has_ipv6 @pytest.mark.anyio @pytest.mark.parametrize( "host, url", [ pytest.param(None, "http://127.0.0.1", id="default"), pytest.param("localhost", "http://127.0.0.1", id="hostname"), pytest.param( "::1", "http://[::1]", id="ipv6", marks=pytest.mark.skipif(not _has_ipv6("::1"), reason="IPV6 not enabled"), ), ], ) async def test_run(host, url: str, unused_tcp_port: int): config = Config( app=app, host=host, loop="asyncio", limit_max_requests=1, port=unused_tcp_port ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"{url}:{unused_tcp_port}") assert response.status_code == 204 @pytest.mark.anyio async def test_run_multiprocess(unused_tcp_port: int): config = Config( app=app, loop="asyncio", workers=2, limit_max_requests=1, port=unused_tcp_port ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 @pytest.mark.anyio async def test_run_reload(unused_tcp_port: int): config = Config( app=app, loop="asyncio", reload=True, limit_max_requests=1, port=unused_tcp_port ) async with run_server(config): async with httpx.AsyncClient() as client: response = await client.get(f"http://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 def test_run_invalid_app_config_combination(caplog: pytest.LogCaptureFixture) -> None: with pytest.raises(SystemExit) as exit_exception: run(app, reload=True) assert exit_exception.value.code == 1 assert caplog.records[-1].name == "uvicorn.error" assert caplog.records[-1].levelno == WARNING assert caplog.records[-1].message == ( "You must pass the application as an import string to enable " "'reload' or 'workers'." ) def test_run_startup_failure(caplog: pytest.LogCaptureFixture) -> None: async def app(scope, receive, send): assert scope["type"] == "lifespan" message = await receive() if message["type"] == "lifespan.startup": raise RuntimeError("Startup failed") with pytest.raises(SystemExit) as exit_exception: run(app, lifespan="on") assert exit_exception.value.code == 3 def test_run_match_config_params() -> None: config_params = { key: repr(value) for key, value in inspect.signature(Config.__init__).parameters.items() if key not in ("self", "timeout_notify", "callback_notify") } run_params = { key: repr(value) for key, value in inspect.signature(run).parameters.items() if key not in ("app_dir",) } assert config_params == run_params @pytest.mark.anyio async def test_exit_on_create_server_with_invalid_host() -> None: with pytest.raises(SystemExit) as exc_info: config = Config(app=app, host="illegal_host") server = Server(config=config) await server.serve() assert exc_info.value.code == 1 uvicorn-0.27.1/tests/test_ssl.py000066400000000000000000000057441456166335300166700ustar00rootroot00000000000000import httpx import pytest from tests.utils import run_server from uvicorn.config import Config async def app(scope, receive, send): assert scope["type"] == "http" await send({"type": "http.response.start", "status": 204, "headers": []}) await send({"type": "http.response.body", "body": b"", "more_body": False}) @pytest.mark.anyio async def test_run( tls_ca_ssl_context, tls_certificate_server_cert_path, tls_certificate_private_key_path, tls_ca_certificate_pem_path, unused_tcp_port: int, ): config = Config( app=app, loop="asyncio", limit_max_requests=1, ssl_keyfile=tls_certificate_private_key_path, ssl_certfile=tls_certificate_server_cert_path, ssl_ca_certs=tls_ca_certificate_pem_path, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient(verify=tls_ca_ssl_context) as client: response = await client.get(f"https://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 @pytest.mark.anyio async def test_run_chain( tls_ca_ssl_context, tls_certificate_key_and_chain_path, tls_ca_certificate_pem_path, unused_tcp_port: int, ): config = Config( app=app, loop="asyncio", limit_max_requests=1, ssl_certfile=tls_certificate_key_and_chain_path, ssl_ca_certs=tls_ca_certificate_pem_path, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient(verify=tls_ca_ssl_context) as client: response = await client.get(f"https://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 @pytest.mark.anyio async def test_run_chain_only( tls_ca_ssl_context, tls_certificate_key_and_chain_path, unused_tcp_port: int ): config = Config( app=app, loop="asyncio", limit_max_requests=1, ssl_certfile=tls_certificate_key_and_chain_path, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient(verify=tls_ca_ssl_context) as client: response = await client.get(f"https://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 @pytest.mark.anyio async def test_run_password( tls_ca_ssl_context, tls_certificate_server_cert_path, tls_ca_certificate_pem_path, tls_certificate_private_key_encrypted_path, unused_tcp_port: int, ): config = Config( app=app, loop="asyncio", limit_max_requests=1, ssl_keyfile=tls_certificate_private_key_encrypted_path, ssl_certfile=tls_certificate_server_cert_path, ssl_keyfile_password="uvicorn password for the win", ssl_ca_certs=tls_ca_certificate_pem_path, port=unused_tcp_port, ) async with run_server(config): async with httpx.AsyncClient(verify=tls_ca_ssl_context) as client: response = await client.get(f"https://127.0.0.1:{unused_tcp_port}") assert response.status_code == 204 uvicorn-0.27.1/tests/test_subprocess.py000066400000000000000000000024001456166335300202410ustar00rootroot00000000000000import socket from typing import List from unittest.mock import patch from uvicorn._subprocess import SpawnProcess, get_subprocess, subprocess_started from uvicorn._types import ASGIReceiveCallable, ASGISendCallable, Scope from uvicorn.config import Config def server_run(sockets: List[socket.socket]): # pragma: no cover ... async def app( scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: # pragma: no cover ... def test_get_subprocess() -> None: fdsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) fd = fdsock.fileno() config = Config(app=app, fd=fd) config.load() process = get_subprocess(config, server_run, [fdsock]) assert isinstance(process, SpawnProcess) fdsock.close() def test_subprocess_started() -> None: fdsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) fd = fdsock.fileno() config = Config(app=app, fd=fd) config.load() with patch("tests.test_subprocess.server_run") as mock_run: with patch.object(config, "configure_logging") as mock_config_logging: subprocess_started(config, server_run, [fdsock], None) mock_run.assert_called_once() mock_config_logging.assert_called_once() fdsock.close() uvicorn-0.27.1/tests/utils.py000066400000000000000000000012261456166335300161570ustar00rootroot00000000000000import asyncio import os from contextlib import asynccontextmanager, contextmanager from pathlib import Path from uvicorn import Config, Server @asynccontextmanager async def run_server(config: Config, sockets=None): server = Server(config=config) task = asyncio.create_task(server.serve(sockets=sockets)) await asyncio.sleep(0.1) try: yield server finally: await server.shutdown() task.cancel() @contextmanager def as_cwd(path: Path): """Changes working directory and returns to previous on exit.""" prev_cwd = Path.cwd() os.chdir(path) try: yield finally: os.chdir(prev_cwd) uvicorn-0.27.1/tools/000077500000000000000000000000001456166335300144425ustar00rootroot00000000000000uvicorn-0.27.1/tools/cli_usage.py000066400000000000000000000037161456166335300167560ustar00rootroot00000000000000""" Look for a marker comment in docs pages, and place the output of `$ uvicorn --help` there. Pass `--check` to ensure the content is in sync. """ import argparse import subprocess import sys import typing from pathlib import Path def _get_usage_lines() -> typing.List[str]: res = subprocess.run(["uvicorn", "--help"], stdout=subprocess.PIPE) help_text = res.stdout.decode("utf-8") return ["```", "$ uvicorn --help", *help_text.splitlines(), "```"] def _find_next_codefence_lineno(lines: typing.List[str], after: int) -> int: return next( lineno for lineno, line in enumerate(lines[after:], after) if line == "```" ) def _get_insert_location(lines: typing.List[str]) -> typing.Tuple[int, int]: marker = lines.index("") start = marker + 1 if lines[start] == "```": # Already generated. # # ``` <- start # [...] # ``` <- end next_codefence = _find_next_codefence_lineno(lines, after=start + 1) end = next_codefence + 1 else: # Not generated yet. end = start return start, end def _generate_cli_usage(path: Path, check: bool = False) -> int: content = path.read_text() lines = content.splitlines() usage_lines = _get_usage_lines() start, end = _get_insert_location(lines) lines = lines[:start] + usage_lines + lines[end:] output = "\n".join(lines) + "\n" if check: if content == output: return 0 print(f"ERROR: CLI usage in {path} is out of sync. Run scripts/lint to fix.") return 1 path.write_text(output) return 0 if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--check", action="store_true") args = parser.parse_args() paths = [Path("docs", "index.md"), Path("docs", "deployment.md")] rv = 0 for path in paths: rv |= _generate_cli_usage(path, check=args.check) sys.exit(rv) uvicorn-0.27.1/uvicorn/000077500000000000000000000000001456166335300147675ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/__init__.py000066400000000000000000000002231456166335300170750ustar00rootroot00000000000000from uvicorn.config import Config from uvicorn.main import Server, main, run __version__ = "0.27.1" __all__ = ["main", "run", "Config", "Server"] uvicorn-0.27.1/uvicorn/__main__.py000066400000000000000000000000761456166335300170640ustar00rootroot00000000000000import uvicorn if __name__ == "__main__": uvicorn.main() uvicorn-0.27.1/uvicorn/_subprocess.py000066400000000000000000000045761456166335300177040ustar00rootroot00000000000000""" Some light wrappers around Python's multiprocessing, to deal with cleanly starting child processes. """ from __future__ import annotations import multiprocessing import os import sys from multiprocessing.context import SpawnProcess from socket import socket from typing import Callable, Optional from uvicorn.config import Config multiprocessing.allow_connection_pickling() spawn = multiprocessing.get_context("spawn") def get_subprocess( config: Config, target: Callable[..., None], sockets: list[socket], ) -> SpawnProcess: """ Called in the parent process, to instantiate a new child process instance. The child is not yet started at this point. * config - The Uvicorn configuration instance. * target - A callable that accepts a list of sockets. In practice this will be the `Server.run()` method. * sockets - A list of sockets to pass to the server. Sockets are bound once by the parent process, and then passed to the child processes. """ # We pass across the stdin fileno, and reopen it in the child process. # This is required for some debugging environments. stdin_fileno: Optional[int] try: stdin_fileno = sys.stdin.fileno() except OSError: stdin_fileno = None kwargs = { "config": config, "target": target, "sockets": sockets, "stdin_fileno": stdin_fileno, } return spawn.Process(target=subprocess_started, kwargs=kwargs) def subprocess_started( config: Config, target: Callable[..., None], sockets: list[socket], stdin_fileno: int | None, ) -> None: """ Called when the child process starts. * config - The Uvicorn configuration instance. * target - A callable that accepts a list of sockets. In practice this will be the `Server.run()` method. * sockets - A list of sockets to pass to the server. Sockets are bound once by the parent process, and then passed to the child processes. * stdin_fileno - The file number of sys.stdin, so that it can be reattached to the child process. """ # Re-open stdin. if stdin_fileno is not None: sys.stdin = os.fdopen(stdin_fileno) # Logging needs to be setup again for each child. config.configure_logging() # Now we can call into `Server.run(sockets=sockets)` target(sockets=sockets) uvicorn-0.27.1/uvicorn/_types.py000066400000000000000000000174351456166335300166560ustar00rootroot00000000000000""" Copyright (c) Django Software Foundation and individual contributors. 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. Neither the name of Django nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR CONTRIBUTORS 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. """ from __future__ import annotations import sys import types from typing import ( Any, Awaitable, Callable, Iterable, MutableMapping, Optional, Tuple, Type, Union, ) if sys.version_info >= (3, 8): # pragma: py-lt-38 from typing import Literal, Protocol, TypedDict else: # pragma: py-gte-38 from typing_extensions import Literal, Protocol, TypedDict if sys.version_info >= (3, 11): # pragma: py-lt-311 from typing import NotRequired else: # pragma: py-gte-311 from typing_extensions import NotRequired # WSGI Environ = MutableMapping[str, Any] ExcInfo = Tuple[Type[BaseException], BaseException, Optional[types.TracebackType]] StartResponse = Callable[[str, Iterable[Tuple[str, str]], Optional[ExcInfo]], None] WSGIApp = Callable[[Environ, StartResponse], Union[Iterable[bytes], BaseException]] # ASGI class ASGIVersions(TypedDict): spec_version: str version: Literal["2.0"] | Literal["3.0"] class HTTPScope(TypedDict): type: Literal["http"] asgi: ASGIVersions http_version: str method: str scheme: str path: str raw_path: bytes query_string: bytes root_path: str headers: Iterable[tuple[bytes, bytes]] client: tuple[str, int] | None server: tuple[str, int | None] | None state: NotRequired[dict[str, Any]] extensions: NotRequired[dict[str, dict[object, object]]] class WebSocketScope(TypedDict): type: Literal["websocket"] asgi: ASGIVersions http_version: str scheme: str path: str raw_path: bytes query_string: bytes root_path: str headers: Iterable[tuple[bytes, bytes]] client: tuple[str, int] | None server: tuple[str, int | None] | None subprotocols: Iterable[str] state: NotRequired[dict[str, Any]] extensions: NotRequired[dict[str, dict[object, object]]] class LifespanScope(TypedDict): type: Literal["lifespan"] asgi: ASGIVersions state: NotRequired[dict[str, Any]] WWWScope = Union[HTTPScope, WebSocketScope] Scope = Union[HTTPScope, WebSocketScope, LifespanScope] class HTTPRequestEvent(TypedDict): type: Literal["http.request"] body: bytes more_body: bool class HTTPResponseDebugEvent(TypedDict): type: Literal["http.response.debug"] info: dict[str, object] class HTTPResponseStartEvent(TypedDict): type: Literal["http.response.start"] status: int headers: NotRequired[Iterable[tuple[bytes, bytes]]] trailers: NotRequired[bool] class HTTPResponseBodyEvent(TypedDict): type: Literal["http.response.body"] body: bytes more_body: NotRequired[bool] class HTTPResponseTrailersEvent(TypedDict): type: Literal["http.response.trailers"] headers: Iterable[tuple[bytes, bytes]] more_trailers: bool class HTTPServerPushEvent(TypedDict): type: Literal["http.response.push"] path: str headers: Iterable[tuple[bytes, bytes]] class HTTPDisconnectEvent(TypedDict): type: Literal["http.disconnect"] class WebSocketConnectEvent(TypedDict): type: Literal["websocket.connect"] class WebSocketAcceptEvent(TypedDict): type: Literal["websocket.accept"] subprotocol: NotRequired[str | None] headers: NotRequired[Iterable[tuple[bytes, bytes]]] class _WebSocketReceiveEventBytes(TypedDict): type: Literal["websocket.receive"] bytes: bytes text: NotRequired[None] class _WebSocketReceiveEventText(TypedDict): type: Literal["websocket.receive"] bytes: NotRequired[None] text: str WebSocketReceiveEvent = Union[_WebSocketReceiveEventBytes, _WebSocketReceiveEventText] class _WebSocketSendEventBytes(TypedDict): type: Literal["websocket.send"] bytes: bytes text: NotRequired[None] class _WebSocketSendEventText(TypedDict): type: Literal["websocket.send"] bytes: NotRequired[None] text: str WebSocketSendEvent = Union[_WebSocketSendEventBytes, _WebSocketSendEventText] class WebSocketResponseStartEvent(TypedDict): type: Literal["websocket.http.response.start"] status: int headers: Iterable[tuple[bytes, bytes]] class WebSocketResponseBodyEvent(TypedDict): type: Literal["websocket.http.response.body"] body: bytes more_body: NotRequired[bool] class WebSocketDisconnectEvent(TypedDict): type: Literal["websocket.disconnect"] code: int class WebSocketCloseEvent(TypedDict): type: Literal["websocket.close"] code: NotRequired[int] reason: NotRequired[str | None] class LifespanStartupEvent(TypedDict): type: Literal["lifespan.startup"] class LifespanShutdownEvent(TypedDict): type: Literal["lifespan.shutdown"] class LifespanStartupCompleteEvent(TypedDict): type: Literal["lifespan.startup.complete"] class LifespanStartupFailedEvent(TypedDict): type: Literal["lifespan.startup.failed"] message: str class LifespanShutdownCompleteEvent(TypedDict): type: Literal["lifespan.shutdown.complete"] class LifespanShutdownFailedEvent(TypedDict): type: Literal["lifespan.shutdown.failed"] message: str WebSocketEvent = Union[ WebSocketReceiveEvent, WebSocketDisconnectEvent, WebSocketConnectEvent ] ASGIReceiveEvent = Union[ HTTPRequestEvent, HTTPDisconnectEvent, WebSocketConnectEvent, WebSocketReceiveEvent, WebSocketDisconnectEvent, LifespanStartupEvent, LifespanShutdownEvent, ] ASGISendEvent = Union[ HTTPResponseStartEvent, HTTPResponseBodyEvent, HTTPResponseTrailersEvent, HTTPServerPushEvent, HTTPDisconnectEvent, WebSocketAcceptEvent, WebSocketSendEvent, WebSocketResponseStartEvent, WebSocketResponseBodyEvent, WebSocketCloseEvent, LifespanStartupCompleteEvent, LifespanStartupFailedEvent, LifespanShutdownCompleteEvent, LifespanShutdownFailedEvent, ] ASGIReceiveCallable = Callable[[], Awaitable[ASGIReceiveEvent]] ASGISendCallable = Callable[[ASGISendEvent], Awaitable[None]] class ASGI2Protocol(Protocol): def __init__(self, scope: Scope) -> None: ... # pragma: no cover async def __call__( self, receive: ASGIReceiveCallable, send: ASGISendCallable ) -> None: ... # pragma: no cover ASGI2Application = Type[ASGI2Protocol] ASGI3Application = Callable[ [ Scope, ASGIReceiveCallable, ASGISendCallable, ], Awaitable[None], ] ASGIApplication = Union[ASGI2Application, ASGI3Application] uvicorn-0.27.1/uvicorn/config.py000066400000000000000000000512361456166335300166150ustar00rootroot00000000000000from __future__ import annotations import asyncio import inspect import json import logging import logging.config import os import socket import ssl import sys from pathlib import Path from typing import Any, Awaitable, Callable, Literal import click from uvicorn._types import ASGIApplication from uvicorn.importer import ImportFromStringError, import_from_string from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.middleware.asgi2 import ASGI2Middleware from uvicorn.middleware.message_logger import MessageLoggerMiddleware from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware from uvicorn.middleware.wsgi import WSGIMiddleware HTTPProtocolType = Literal["auto", "h11", "httptools"] WSProtocolType = Literal["auto", "none", "websockets", "wsproto"] LifespanType = Literal["auto", "on", "off"] LoopSetupType = Literal["none", "auto", "asyncio", "uvloop"] InterfaceType = Literal["auto", "asgi3", "asgi2", "wsgi"] LOG_LEVELS: dict[str, int] = { "critical": logging.CRITICAL, "error": logging.ERROR, "warning": logging.WARNING, "info": logging.INFO, "debug": logging.DEBUG, "trace": TRACE_LOG_LEVEL, } HTTP_PROTOCOLS: dict[HTTPProtocolType, str] = { "auto": "uvicorn.protocols.http.auto:AutoHTTPProtocol", "h11": "uvicorn.protocols.http.h11_impl:H11Protocol", "httptools": "uvicorn.protocols.http.httptools_impl:HttpToolsProtocol", } WS_PROTOCOLS: dict[WSProtocolType, str | None] = { "auto": "uvicorn.protocols.websockets.auto:AutoWebSocketsProtocol", "none": None, "websockets": "uvicorn.protocols.websockets.websockets_impl:WebSocketProtocol", "wsproto": "uvicorn.protocols.websockets.wsproto_impl:WSProtocol", } LIFESPAN: dict[LifespanType, str] = { "auto": "uvicorn.lifespan.on:LifespanOn", "on": "uvicorn.lifespan.on:LifespanOn", "off": "uvicorn.lifespan.off:LifespanOff", } LOOP_SETUPS: dict[LoopSetupType, str | None] = { "none": None, "auto": "uvicorn.loops.auto:auto_loop_setup", "asyncio": "uvicorn.loops.asyncio:asyncio_setup", "uvloop": "uvicorn.loops.uvloop:uvloop_setup", } INTERFACES: list[InterfaceType] = ["auto", "asgi3", "asgi2", "wsgi"] SSL_PROTOCOL_VERSION: int = ssl.PROTOCOL_TLS_SERVER LOGGING_CONFIG: dict[str, Any] = { "version": 1, "disable_existing_loggers": False, "formatters": { "default": { "()": "uvicorn.logging.DefaultFormatter", "fmt": "%(levelprefix)s %(message)s", "use_colors": None, }, "access": { "()": "uvicorn.logging.AccessFormatter", "fmt": '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s', # noqa: E501 }, }, "handlers": { "default": { "formatter": "default", "class": "logging.StreamHandler", "stream": "ext://sys.stderr", }, "access": { "formatter": "access", "class": "logging.StreamHandler", "stream": "ext://sys.stdout", }, }, "loggers": { "uvicorn": {"handlers": ["default"], "level": "INFO", "propagate": False}, "uvicorn.error": {"level": "INFO"}, "uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False}, }, } logger = logging.getLogger("uvicorn.error") def create_ssl_context( certfile: str | os.PathLike[str], keyfile: str | os.PathLike[str] | None, password: str | None, ssl_version: int, cert_reqs: int, ca_certs: str | os.PathLike[str] | None, ciphers: str | None, ) -> ssl.SSLContext: ctx = ssl.SSLContext(ssl_version) get_password = (lambda: password) if password else None ctx.load_cert_chain(certfile, keyfile, get_password) ctx.verify_mode = ssl.VerifyMode(cert_reqs) if ca_certs: ctx.load_verify_locations(ca_certs) if ciphers: ctx.set_ciphers(ciphers) return ctx def is_dir(path: Path) -> bool: try: if not path.is_absolute(): path = path.resolve() return path.is_dir() except OSError: return False def resolve_reload_patterns( patterns_list: list[str], directories_list: list[str] ) -> tuple[list[str], list[Path]]: directories: list[Path] = list(set(map(Path, directories_list.copy()))) patterns: list[str] = patterns_list.copy() current_working_directory = Path.cwd() for pattern in patterns_list: # Special case for the .* pattern, otherwise this would only match # hidden directories which is probably undesired if pattern == ".*": continue patterns.append(pattern) if is_dir(Path(pattern)): directories.append(Path(pattern)) else: for match in current_working_directory.glob(pattern): if is_dir(match): directories.append(match) directories = list(set(directories)) directories = list(map(Path, directories)) directories = list(map(lambda x: x.resolve(), directories)) directories = list( {reload_path for reload_path in directories if is_dir(reload_path)} ) children = [] for j in range(len(directories)): for k in range(j + 1, len(directories)): if directories[j] in directories[k].parents: children.append(directories[k]) # pragma: py-darwin elif directories[k] in directories[j].parents: children.append(directories[j]) directories = list(set(directories).difference(set(children))) return list(set(patterns)), directories def _normalize_dirs(dirs: list[str] | str | None) -> list[str]: if dirs is None: return [] if isinstance(dirs, str): return [dirs] return list(set(dirs)) class Config: def __init__( self, app: ASGIApplication | Callable[..., Any] | str, host: str = "127.0.0.1", port: int = 8000, uds: str | None = None, fd: int | None = None, loop: LoopSetupType = "auto", http: type[asyncio.Protocol] | HTTPProtocolType = "auto", ws: type[asyncio.Protocol] | WSProtocolType = "auto", ws_max_size: int = 16 * 1024 * 1024, ws_max_queue: int = 32, ws_ping_interval: float | None = 20.0, ws_ping_timeout: float | None = 20.0, ws_per_message_deflate: bool = True, lifespan: LifespanType = "auto", env_file: str | os.PathLike[str] | None = None, log_config: dict[str, Any] | str | None = LOGGING_CONFIG, log_level: str | int | None = None, access_log: bool = True, use_colors: bool | None = None, interface: InterfaceType = "auto", reload: bool = False, reload_dirs: list[str] | str | None = None, reload_delay: float = 0.25, reload_includes: list[str] | str | None = None, reload_excludes: list[str] | str | None = None, workers: int | None = None, proxy_headers: bool = True, server_header: bool = True, date_header: bool = True, forwarded_allow_ips: list[str] | str | None = None, root_path: str = "", limit_concurrency: int | None = None, limit_max_requests: int | None = None, backlog: int = 2048, timeout_keep_alive: int = 5, timeout_notify: int = 30, timeout_graceful_shutdown: int | None = None, callback_notify: Callable[..., Awaitable[None]] | None = None, ssl_keyfile: str | None = None, ssl_certfile: str | os.PathLike[str] | None = None, ssl_keyfile_password: str | None = None, ssl_version: int = SSL_PROTOCOL_VERSION, ssl_cert_reqs: int = ssl.CERT_NONE, ssl_ca_certs: str | None = None, ssl_ciphers: str = "TLSv1", headers: list[tuple[str, str]] | None = None, factory: bool = False, h11_max_incomplete_event_size: int | None = None, ): self.app = app self.host = host self.port = port self.uds = uds self.fd = fd self.loop = loop self.http = http self.ws = ws self.ws_max_size = ws_max_size self.ws_max_queue = ws_max_queue self.ws_ping_interval = ws_ping_interval self.ws_ping_timeout = ws_ping_timeout self.ws_per_message_deflate = ws_per_message_deflate self.lifespan = lifespan self.log_config = log_config self.log_level = log_level self.access_log = access_log self.use_colors = use_colors self.interface = interface self.reload = reload self.reload_delay = reload_delay self.workers = workers or 1 self.proxy_headers = proxy_headers self.server_header = server_header self.date_header = date_header self.root_path = root_path self.limit_concurrency = limit_concurrency self.limit_max_requests = limit_max_requests self.backlog = backlog self.timeout_keep_alive = timeout_keep_alive self.timeout_notify = timeout_notify self.timeout_graceful_shutdown = timeout_graceful_shutdown self.callback_notify = callback_notify self.ssl_keyfile = ssl_keyfile self.ssl_certfile = ssl_certfile self.ssl_keyfile_password = ssl_keyfile_password self.ssl_version = ssl_version self.ssl_cert_reqs = ssl_cert_reqs self.ssl_ca_certs = ssl_ca_certs self.ssl_ciphers = ssl_ciphers self.headers: list[tuple[str, str]] = headers or [] self.encoded_headers: list[tuple[bytes, bytes]] = [] self.factory = factory self.h11_max_incomplete_event_size = h11_max_incomplete_event_size self.loaded = False self.configure_logging() self.reload_dirs: list[Path] = [] self.reload_dirs_excludes: list[Path] = [] self.reload_includes: list[str] = [] self.reload_excludes: list[str] = [] if ( reload_dirs or reload_includes or reload_excludes ) and not self.should_reload: logger.warning( "Current configuration will not reload as not all conditions are met, " "please refer to documentation." ) if self.should_reload: reload_dirs = _normalize_dirs(reload_dirs) reload_includes = _normalize_dirs(reload_includes) reload_excludes = _normalize_dirs(reload_excludes) self.reload_includes, self.reload_dirs = resolve_reload_patterns( reload_includes, reload_dirs ) self.reload_excludes, self.reload_dirs_excludes = resolve_reload_patterns( reload_excludes, [] ) reload_dirs_tmp = self.reload_dirs.copy() for directory in self.reload_dirs_excludes: for reload_directory in reload_dirs_tmp: if ( directory == reload_directory or directory in reload_directory.parents ): try: self.reload_dirs.remove(reload_directory) except ValueError: pass for pattern in self.reload_excludes: if pattern in self.reload_includes: self.reload_includes.remove(pattern) if not self.reload_dirs: if reload_dirs: logger.warning( "Provided reload directories %s did not contain valid " + "directories, watching current working directory.", reload_dirs, ) self.reload_dirs = [Path(os.getcwd())] logger.info( "Will watch for changes in these directories: %s", sorted(list(map(str, self.reload_dirs))), ) if env_file is not None: from dotenv import load_dotenv logger.info("Loading environment from '%s'", env_file) load_dotenv(dotenv_path=env_file) if workers is None and "WEB_CONCURRENCY" in os.environ: self.workers = int(os.environ["WEB_CONCURRENCY"]) self.forwarded_allow_ips: list[str] | str if forwarded_allow_ips is None: self.forwarded_allow_ips = os.environ.get( "FORWARDED_ALLOW_IPS", "127.0.0.1" ) else: self.forwarded_allow_ips = forwarded_allow_ips if self.reload and self.workers > 1: logger.warning('"workers" flag is ignored when reloading is enabled.') @property def asgi_version(self) -> Literal["2.0", "3.0"]: mapping: dict[str, Literal["2.0", "3.0"]] = { "asgi2": "2.0", "asgi3": "3.0", "wsgi": "3.0", } return mapping[self.interface] @property def is_ssl(self) -> bool: return bool(self.ssl_keyfile or self.ssl_certfile) @property def use_subprocess(self) -> bool: return bool(self.reload or self.workers > 1) def configure_logging(self) -> None: logging.addLevelName(TRACE_LOG_LEVEL, "TRACE") if self.log_config is not None: if isinstance(self.log_config, dict): if self.use_colors in (True, False): self.log_config["formatters"]["default"][ "use_colors" ] = self.use_colors self.log_config["formatters"]["access"][ "use_colors" ] = self.use_colors logging.config.dictConfig(self.log_config) elif self.log_config.endswith(".json"): with open(self.log_config) as file: loaded_config = json.load(file) logging.config.dictConfig(loaded_config) elif self.log_config.endswith((".yaml", ".yml")): # Install the PyYAML package or the uvicorn[standard] optional # dependencies to enable this functionality. import yaml with open(self.log_config) as file: loaded_config = yaml.safe_load(file) logging.config.dictConfig(loaded_config) else: # See the note about fileConfig() here: # https://docs.python.org/3/library/logging.config.html#configuration-file-format logging.config.fileConfig( self.log_config, disable_existing_loggers=False ) if self.log_level is not None: if isinstance(self.log_level, str): log_level = LOG_LEVELS[self.log_level] else: log_level = self.log_level logging.getLogger("uvicorn.error").setLevel(log_level) logging.getLogger("uvicorn.access").setLevel(log_level) logging.getLogger("uvicorn.asgi").setLevel(log_level) if self.access_log is False: logging.getLogger("uvicorn.access").handlers = [] logging.getLogger("uvicorn.access").propagate = False def load(self) -> None: assert not self.loaded if self.is_ssl: assert self.ssl_certfile self.ssl: ssl.SSLContext | None = create_ssl_context( keyfile=self.ssl_keyfile, certfile=self.ssl_certfile, password=self.ssl_keyfile_password, ssl_version=self.ssl_version, cert_reqs=self.ssl_cert_reqs, ca_certs=self.ssl_ca_certs, ciphers=self.ssl_ciphers, ) else: self.ssl = None encoded_headers = [ (key.lower().encode("latin1"), value.encode("latin1")) for key, value in self.headers ] self.encoded_headers = ( [(b"server", b"uvicorn")] + encoded_headers if b"server" not in dict(encoded_headers) and self.server_header else encoded_headers ) if isinstance(self.http, str): http_protocol_class = import_from_string(HTTP_PROTOCOLS[self.http]) self.http_protocol_class: type[asyncio.Protocol] = http_protocol_class else: self.http_protocol_class = self.http if isinstance(self.ws, str): ws_protocol_class = import_from_string(WS_PROTOCOLS[self.ws]) self.ws_protocol_class: type[asyncio.Protocol] | None = ws_protocol_class else: self.ws_protocol_class = self.ws self.lifespan_class = import_from_string(LIFESPAN[self.lifespan]) try: self.loaded_app = import_from_string(self.app) except ImportFromStringError as exc: logger.error("Error loading ASGI app. %s" % exc) sys.exit(1) try: self.loaded_app = self.loaded_app() except TypeError as exc: if self.factory: logger.error("Error loading ASGI app factory: %s", exc) sys.exit(1) else: if not self.factory: logger.warning( "ASGI app factory detected. Using it, " "but please consider setting the --factory flag explicitly." ) if self.interface == "auto": if inspect.isclass(self.loaded_app): use_asgi_3 = hasattr(self.loaded_app, "__await__") elif inspect.isfunction(self.loaded_app): use_asgi_3 = asyncio.iscoroutinefunction(self.loaded_app) else: call = getattr(self.loaded_app, "__call__", None) use_asgi_3 = asyncio.iscoroutinefunction(call) self.interface = "asgi3" if use_asgi_3 else "asgi2" if self.interface == "wsgi": self.loaded_app = WSGIMiddleware(self.loaded_app) self.ws_protocol_class = None elif self.interface == "asgi2": self.loaded_app = ASGI2Middleware(self.loaded_app) if logger.getEffectiveLevel() <= TRACE_LOG_LEVEL: self.loaded_app = MessageLoggerMiddleware(self.loaded_app) if self.proxy_headers: self.loaded_app = ProxyHeadersMiddleware( self.loaded_app, trusted_hosts=self.forwarded_allow_ips ) self.loaded = True def setup_event_loop(self) -> None: loop_setup: Callable | None = import_from_string(LOOP_SETUPS[self.loop]) if loop_setup is not None: loop_setup(use_subprocess=self.use_subprocess) def bind_socket(self) -> socket.socket: logger_args: list[str | int] if self.uds: # pragma: py-win32 path = self.uds sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) try: sock.bind(path) uds_perms = 0o666 os.chmod(self.uds, uds_perms) except OSError as exc: logger.error(exc) sys.exit(1) message = "Uvicorn running on unix socket %s (Press CTRL+C to quit)" sock_name_format = "%s" color_message = ( "Uvicorn running on " + click.style(sock_name_format, bold=True) + " (Press CTRL+C to quit)" ) logger_args = [self.uds] elif self.fd: # pragma: py-win32 sock = socket.fromfd(self.fd, socket.AF_UNIX, socket.SOCK_STREAM) message = "Uvicorn running on socket %s (Press CTRL+C to quit)" fd_name_format = "%s" color_message = ( "Uvicorn running on " + click.style(fd_name_format, bold=True) + " (Press CTRL+C to quit)" ) logger_args = [sock.getsockname()] else: family = socket.AF_INET addr_format = "%s://%s:%d" if self.host and ":" in self.host: # pragma: py-win32 # It's an IPv6 address. family = socket.AF_INET6 addr_format = "%s://[%s]:%d" sock = socket.socket(family=family) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: sock.bind((self.host, self.port)) except OSError as exc: logger.error(exc) sys.exit(1) message = f"Uvicorn running on {addr_format} (Press CTRL+C to quit)" color_message = ( "Uvicorn running on " + click.style(addr_format, bold=True) + " (Press CTRL+C to quit)" ) protocol_name = "https" if self.is_ssl else "http" logger_args = [protocol_name, self.host, sock.getsockname()[1]] logger.info(message, *logger_args, extra={"color_message": color_message}) sock.set_inheritable(True) return sock @property def should_reload(self) -> bool: return isinstance(self.app, str) and self.reload uvicorn-0.27.1/uvicorn/importer.py000066400000000000000000000022261456166335300172040ustar00rootroot00000000000000import importlib from typing import Any class ImportFromStringError(Exception): pass def import_from_string(import_str: Any) -> Any: if not isinstance(import_str, str): return import_str module_str, _, attrs_str = import_str.partition(":") if not module_str or not attrs_str: message = ( 'Import string "{import_str}" must be in format ":".' ) raise ImportFromStringError(message.format(import_str=import_str)) try: module = importlib.import_module(module_str) except ModuleNotFoundError as exc: if exc.name != module_str: raise exc from None message = 'Could not import module "{module_str}".' raise ImportFromStringError(message.format(module_str=module_str)) instance = module try: for attr_str in attrs_str.split("."): instance = getattr(instance, attr_str) except AttributeError: message = 'Attribute "{attrs_str}" not found in module "{module_str}".' raise ImportFromStringError( message.format(attrs_str=attrs_str, module_str=module_str) ) return instance uvicorn-0.27.1/uvicorn/lifespan/000077500000000000000000000000001456166335300165705ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/lifespan/__init__.py000066400000000000000000000000001456166335300206670ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/lifespan/off.py000066400000000000000000000004561456166335300177210ustar00rootroot00000000000000from typing import Any, Dict from uvicorn import Config class LifespanOff: def __init__(self, config: Config) -> None: self.should_exit = False self.state: Dict[str, Any] = {} async def startup(self) -> None: pass async def shutdown(self) -> None: pass uvicorn-0.27.1/uvicorn/lifespan/on.py000066400000000000000000000120761456166335300175640ustar00rootroot00000000000000import asyncio import logging from asyncio import Queue from typing import Any, Dict, Union from uvicorn import Config from uvicorn._types import ( LifespanScope, LifespanShutdownCompleteEvent, LifespanShutdownEvent, LifespanShutdownFailedEvent, LifespanStartupCompleteEvent, LifespanStartupEvent, LifespanStartupFailedEvent, ) LifespanReceiveMessage = Union[LifespanStartupEvent, LifespanShutdownEvent] LifespanSendMessage = Union[ LifespanStartupFailedEvent, LifespanShutdownFailedEvent, LifespanStartupCompleteEvent, LifespanShutdownCompleteEvent, ] STATE_TRANSITION_ERROR = "Got invalid state transition on lifespan protocol." class LifespanOn: def __init__(self, config: Config) -> None: if not config.loaded: config.load() self.config = config self.logger = logging.getLogger("uvicorn.error") self.startup_event = asyncio.Event() self.shutdown_event = asyncio.Event() self.receive_queue: "Queue[LifespanReceiveMessage]" = asyncio.Queue() self.error_occured = False self.startup_failed = False self.shutdown_failed = False self.should_exit = False self.state: Dict[str, Any] = {} async def startup(self) -> None: self.logger.info("Waiting for application startup.") loop = asyncio.get_event_loop() main_lifespan_task = loop.create_task(self.main()) # noqa: F841 # Keep a hard reference to prevent garbage collection # See https://github.com/encode/uvicorn/pull/972 startup_event: LifespanStartupEvent = {"type": "lifespan.startup"} await self.receive_queue.put(startup_event) await self.startup_event.wait() if self.startup_failed or (self.error_occured and self.config.lifespan == "on"): self.logger.error("Application startup failed. Exiting.") self.should_exit = True else: self.logger.info("Application startup complete.") async def shutdown(self) -> None: if self.error_occured: return self.logger.info("Waiting for application shutdown.") shutdown_event: LifespanShutdownEvent = {"type": "lifespan.shutdown"} await self.receive_queue.put(shutdown_event) await self.shutdown_event.wait() if self.shutdown_failed or ( self.error_occured and self.config.lifespan == "on" ): self.logger.error("Application shutdown failed. Exiting.") self.should_exit = True else: self.logger.info("Application shutdown complete.") async def main(self) -> None: try: app = self.config.loaded_app scope: LifespanScope = { "type": "lifespan", "asgi": {"version": self.config.asgi_version, "spec_version": "2.0"}, "state": self.state, } await app(scope, self.receive, self.send) except BaseException as exc: self.asgi = None self.error_occured = True if self.startup_failed or self.shutdown_failed: return if self.config.lifespan == "auto": msg = "ASGI 'lifespan' protocol appears unsupported." self.logger.info(msg) else: msg = "Exception in 'lifespan' protocol\n" self.logger.error(msg, exc_info=exc) finally: self.startup_event.set() self.shutdown_event.set() async def send(self, message: "LifespanSendMessage") -> None: assert message["type"] in ( "lifespan.startup.complete", "lifespan.startup.failed", "lifespan.shutdown.complete", "lifespan.shutdown.failed", ) if message["type"] == "lifespan.startup.complete": assert not self.startup_event.is_set(), STATE_TRANSITION_ERROR assert not self.shutdown_event.is_set(), STATE_TRANSITION_ERROR self.startup_event.set() elif message["type"] == "lifespan.startup.failed": assert not self.startup_event.is_set(), STATE_TRANSITION_ERROR assert not self.shutdown_event.is_set(), STATE_TRANSITION_ERROR self.startup_event.set() self.startup_failed = True if message.get("message"): self.logger.error(message["message"]) elif message["type"] == "lifespan.shutdown.complete": assert self.startup_event.is_set(), STATE_TRANSITION_ERROR assert not self.shutdown_event.is_set(), STATE_TRANSITION_ERROR self.shutdown_event.set() elif message["type"] == "lifespan.shutdown.failed": assert self.startup_event.is_set(), STATE_TRANSITION_ERROR assert not self.shutdown_event.is_set(), STATE_TRANSITION_ERROR self.shutdown_event.set() self.shutdown_failed = True if message.get("message"): self.logger.error(message["message"]) async def receive(self) -> "LifespanReceiveMessage": return await self.receive_queue.get() uvicorn-0.27.1/uvicorn/logging.py000066400000000000000000000102601456166335300167660ustar00rootroot00000000000000from __future__ import annotations import http import logging import sys from copy import copy from typing import Literal import click TRACE_LOG_LEVEL = 5 class ColourizedFormatter(logging.Formatter): """ A custom log formatter class that: * Outputs the LOG_LEVEL with an appropriate color. * If a log call includes an `extras={"color_message": ...}` it will be used for formatting the output, instead of the plain text message. """ level_name_colors = { TRACE_LOG_LEVEL: lambda level_name: click.style(str(level_name), fg="blue"), logging.DEBUG: lambda level_name: click.style(str(level_name), fg="cyan"), logging.INFO: lambda level_name: click.style(str(level_name), fg="green"), logging.WARNING: lambda level_name: click.style(str(level_name), fg="yellow"), logging.ERROR: lambda level_name: click.style(str(level_name), fg="red"), logging.CRITICAL: lambda level_name: click.style( str(level_name), fg="bright_red" ), } def __init__( self, fmt: str | None = None, datefmt: str | None = None, style: Literal["%", "{", "$"] = "%", use_colors: bool | None = None, ): if use_colors in (True, False): self.use_colors = use_colors else: self.use_colors = sys.stdout.isatty() super().__init__(fmt=fmt, datefmt=datefmt, style=style) def color_level_name(self, level_name: str, level_no: int) -> str: def default(level_name: str) -> str: return str(level_name) # pragma: no cover func = self.level_name_colors.get(level_no, default) return func(level_name) def should_use_colors(self) -> bool: return True # pragma: no cover def formatMessage(self, record: logging.LogRecord) -> str: recordcopy = copy(record) levelname = recordcopy.levelname seperator = " " * (8 - len(recordcopy.levelname)) if self.use_colors: levelname = self.color_level_name(levelname, recordcopy.levelno) if "color_message" in recordcopy.__dict__: recordcopy.msg = recordcopy.__dict__["color_message"] recordcopy.__dict__["message"] = recordcopy.getMessage() recordcopy.__dict__["levelprefix"] = levelname + ":" + seperator return super().formatMessage(recordcopy) class DefaultFormatter(ColourizedFormatter): def should_use_colors(self) -> bool: return sys.stderr.isatty() # pragma: no cover class AccessFormatter(ColourizedFormatter): status_code_colours = { 1: lambda code: click.style(str(code), fg="bright_white"), 2: lambda code: click.style(str(code), fg="green"), 3: lambda code: click.style(str(code), fg="yellow"), 4: lambda code: click.style(str(code), fg="red"), 5: lambda code: click.style(str(code), fg="bright_red"), } def get_status_code(self, status_code: int) -> str: try: status_phrase = http.HTTPStatus(status_code).phrase except ValueError: status_phrase = "" status_and_phrase = "%s %s" % (status_code, status_phrase) if self.use_colors: def default(code: int) -> str: return status_and_phrase # pragma: no cover func = self.status_code_colours.get(status_code // 100, default) return func(status_and_phrase) return status_and_phrase def formatMessage(self, record: logging.LogRecord) -> str: recordcopy = copy(record) ( client_addr, method, full_path, http_version, status_code, ) = recordcopy.args # type: ignore[misc] status_code = self.get_status_code(int(status_code)) # type: ignore[arg-type] request_line = "%s %s HTTP/%s" % (method, full_path, http_version) if self.use_colors: request_line = click.style(request_line, bold=True) recordcopy.__dict__.update( { "client_addr": client_addr, "request_line": request_line, "status_code": status_code, } ) return super().formatMessage(recordcopy) uvicorn-0.27.1/uvicorn/loops/000077500000000000000000000000001456166335300161235ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/loops/__init__.py000066400000000000000000000000001456166335300202220ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/loops/asyncio.py000066400000000000000000000004241456166335300201420ustar00rootroot00000000000000import asyncio import logging import sys logger = logging.getLogger("uvicorn.error") def asyncio_setup(use_subprocess: bool = False) -> None: if sys.platform == "win32" and use_subprocess: asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) uvicorn-0.27.1/uvicorn/loops/auto.py000066400000000000000000000006201456166335300174430ustar00rootroot00000000000000def auto_loop_setup(use_subprocess: bool = False) -> None: try: import uvloop # noqa except ImportError: # pragma: no cover from uvicorn.loops.asyncio import asyncio_setup as loop_setup loop_setup(use_subprocess=use_subprocess) else: # pragma: no cover from uvicorn.loops.uvloop import uvloop_setup uvloop_setup(use_subprocess=use_subprocess) uvicorn-0.27.1/uvicorn/loops/uvloop.py000066400000000000000000000002241456166335300200170ustar00rootroot00000000000000import asyncio import uvloop def uvloop_setup(use_subprocess: bool = False) -> None: asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) uvicorn-0.27.1/uvicorn/main.py000066400000000000000000000402431456166335300162700ustar00rootroot00000000000000from __future__ import annotations import asyncio import logging import os import platform import ssl import sys from typing import Any, Callable import click import uvicorn from uvicorn._types import ASGIApplication from uvicorn.config import ( HTTP_PROTOCOLS, INTERFACES, LIFESPAN, LOG_LEVELS, LOGGING_CONFIG, LOOP_SETUPS, SSL_PROTOCOL_VERSION, WS_PROTOCOLS, Config, HTTPProtocolType, InterfaceType, LifespanType, LoopSetupType, WSProtocolType, ) from uvicorn.server import Server, ServerState # noqa: F401 # Used to be defined here. from uvicorn.supervisors import ChangeReload, Multiprocess LEVEL_CHOICES = click.Choice(list(LOG_LEVELS.keys())) HTTP_CHOICES = click.Choice(list(HTTP_PROTOCOLS.keys())) WS_CHOICES = click.Choice(list(WS_PROTOCOLS.keys())) LIFESPAN_CHOICES = click.Choice(list(LIFESPAN.keys())) LOOP_CHOICES = click.Choice([key for key in LOOP_SETUPS.keys() if key != "none"]) INTERFACE_CHOICES = click.Choice(INTERFACES) STARTUP_FAILURE = 3 logger = logging.getLogger("uvicorn.error") def print_version(ctx: click.Context, param: click.Parameter, value: bool) -> None: if not value or ctx.resilient_parsing: return click.echo( "Running uvicorn %s with %s %s on %s" % ( uvicorn.__version__, platform.python_implementation(), platform.python_version(), platform.system(), ) ) ctx.exit() @click.command(context_settings={"auto_envvar_prefix": "UVICORN"}) @click.argument("app", envvar="UVICORN_APP") @click.option( "--host", type=str, default="127.0.0.1", help="Bind socket to this host.", show_default=True, ) @click.option( "--port", type=int, default=8000, help="Bind socket to this port. If 0, an available port will be picked.", show_default=True, ) @click.option("--uds", type=str, default=None, help="Bind to a UNIX domain socket.") @click.option( "--fd", type=int, default=None, help="Bind to socket from this file descriptor." ) @click.option("--reload", is_flag=True, default=False, help="Enable auto-reload.") @click.option( "--reload-dir", "reload_dirs", multiple=True, help="Set reload directories explicitly, instead of using the current working" " directory.", type=click.Path(exists=True), ) @click.option( "--reload-include", "reload_includes", multiple=True, help="Set glob patterns to include while watching for files. Includes '*.py' " "by default; these defaults can be overridden with `--reload-exclude`. " "This option has no effect unless watchfiles is installed.", ) @click.option( "--reload-exclude", "reload_excludes", multiple=True, help="Set glob patterns to exclude while watching for files. Includes " "'.*, .py[cod], .sw.*, ~*' by default; these defaults can be overridden " "with `--reload-include`. This option has no effect unless watchfiles is " "installed.", ) @click.option( "--reload-delay", type=float, default=0.25, show_default=True, help="Delay between previous and next check if application needs to be." " Defaults to 0.25s.", ) @click.option( "--workers", default=None, type=int, help="Number of worker processes. Defaults to the $WEB_CONCURRENCY environment" " variable if available, or 1. Not valid with --reload.", ) @click.option( "--loop", type=LOOP_CHOICES, default="auto", help="Event loop implementation.", show_default=True, ) @click.option( "--http", type=HTTP_CHOICES, default="auto", help="HTTP protocol implementation.", show_default=True, ) @click.option( "--ws", type=WS_CHOICES, default="auto", help="WebSocket protocol implementation.", show_default=True, ) @click.option( "--ws-max-size", type=int, default=16777216, help="WebSocket max size message in bytes", show_default=True, ) @click.option( "--ws-max-queue", type=int, default=32, help="The maximum length of the WebSocket message queue.", show_default=True, ) @click.option( "--ws-ping-interval", type=float, default=20.0, help="WebSocket ping interval in seconds.", show_default=True, ) @click.option( "--ws-ping-timeout", type=float, default=20.0, help="WebSocket ping timeout in seconds.", show_default=True, ) @click.option( "--ws-per-message-deflate", type=bool, default=True, help="WebSocket per-message-deflate compression", show_default=True, ) @click.option( "--lifespan", type=LIFESPAN_CHOICES, default="auto", help="Lifespan implementation.", show_default=True, ) @click.option( "--interface", type=INTERFACE_CHOICES, default="auto", help="Select ASGI3, ASGI2, or WSGI as the application interface.", show_default=True, ) @click.option( "--env-file", type=click.Path(exists=True), default=None, help="Environment configuration file.", show_default=True, ) @click.option( "--log-config", type=click.Path(exists=True), default=None, help="Logging configuration file. Supported formats: .ini, .json, .yaml.", show_default=True, ) @click.option( "--log-level", type=LEVEL_CHOICES, default=None, help="Log level. [default: info]", show_default=True, ) @click.option( "--access-log/--no-access-log", is_flag=True, default=True, help="Enable/Disable access log.", ) @click.option( "--use-colors/--no-use-colors", is_flag=True, default=None, help="Enable/Disable colorized logging.", ) @click.option( "--proxy-headers/--no-proxy-headers", is_flag=True, default=True, help="Enable/Disable X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Port to " "populate remote address info.", ) @click.option( "--server-header/--no-server-header", is_flag=True, default=True, help="Enable/Disable default Server header.", ) @click.option( "--date-header/--no-date-header", is_flag=True, default=True, help="Enable/Disable default Date header.", ) @click.option( "--forwarded-allow-ips", type=str, default=None, help="Comma separated list of IPs to trust with proxy headers. Defaults to" " the $FORWARDED_ALLOW_IPS environment variable if available, or '127.0.0.1'.", ) @click.option( "--root-path", type=str, default="", help="Set the ASGI 'root_path' for applications submounted below a given URL path.", ) @click.option( "--limit-concurrency", type=int, default=None, help="Maximum number of concurrent connections or tasks to allow, before issuing" " HTTP 503 responses.", ) @click.option( "--backlog", type=int, default=2048, help="Maximum number of connections to hold in backlog", ) @click.option( "--limit-max-requests", type=int, default=None, help="Maximum number of requests to service before terminating the process.", ) @click.option( "--timeout-keep-alive", type=int, default=5, help="Close Keep-Alive connections if no new data is received within this timeout.", show_default=True, ) @click.option( "--timeout-graceful-shutdown", type=int, default=None, help="Maximum number of seconds to wait for graceful shutdown.", ) @click.option( "--ssl-keyfile", type=str, default=None, help="SSL key file", show_default=True ) @click.option( "--ssl-certfile", type=str, default=None, help="SSL certificate file", show_default=True, ) @click.option( "--ssl-keyfile-password", type=str, default=None, help="SSL keyfile password", show_default=True, ) @click.option( "--ssl-version", type=int, default=int(SSL_PROTOCOL_VERSION), help="SSL version to use (see stdlib ssl module's)", show_default=True, ) @click.option( "--ssl-cert-reqs", type=int, default=int(ssl.CERT_NONE), help="Whether client certificate is required (see stdlib ssl module's)", show_default=True, ) @click.option( "--ssl-ca-certs", type=str, default=None, help="CA certificates file", show_default=True, ) @click.option( "--ssl-ciphers", type=str, default="TLSv1", help="Ciphers to use (see stdlib ssl module's)", show_default=True, ) @click.option( "--header", "headers", multiple=True, help="Specify custom default HTTP response headers as a Name:Value pair", ) @click.option( "--version", is_flag=True, callback=print_version, expose_value=False, is_eager=True, help="Display the uvicorn version and exit.", ) @click.option( "--app-dir", default="", show_default=True, help="Look for APP in the specified directory, by adding this to the PYTHONPATH." " Defaults to the current working directory.", ) @click.option( "--h11-max-incomplete-event-size", "h11_max_incomplete_event_size", type=int, default=None, help="For h11, the maximum number of bytes to buffer of an incomplete event.", ) @click.option( "--factory", is_flag=True, default=False, help="Treat APP as an application factory, i.e. a () -> callable.", show_default=True, ) def main( app: str, host: str, port: int, uds: str, fd: int, loop: LoopSetupType, http: HTTPProtocolType, ws: WSProtocolType, ws_max_size: int, ws_max_queue: int, ws_ping_interval: float, ws_ping_timeout: float, ws_per_message_deflate: bool, lifespan: LifespanType, interface: InterfaceType, reload: bool, reload_dirs: list[str], reload_includes: list[str], reload_excludes: list[str], reload_delay: float, workers: int, env_file: str, log_config: str, log_level: str, access_log: bool, proxy_headers: bool, server_header: bool, date_header: bool, forwarded_allow_ips: str, root_path: str, limit_concurrency: int, backlog: int, limit_max_requests: int, timeout_keep_alive: int, timeout_graceful_shutdown: int | None, ssl_keyfile: str, ssl_certfile: str, ssl_keyfile_password: str, ssl_version: int, ssl_cert_reqs: int, ssl_ca_certs: str, ssl_ciphers: str, headers: list[str], use_colors: bool, app_dir: str, h11_max_incomplete_event_size: int | None, factory: bool, ) -> None: run( app, host=host, port=port, uds=uds, fd=fd, loop=loop, http=http, ws=ws, ws_max_size=ws_max_size, ws_max_queue=ws_max_queue, ws_ping_interval=ws_ping_interval, ws_ping_timeout=ws_ping_timeout, ws_per_message_deflate=ws_per_message_deflate, lifespan=lifespan, env_file=env_file, log_config=LOGGING_CONFIG if log_config is None else log_config, log_level=log_level, access_log=access_log, interface=interface, reload=reload, reload_dirs=reload_dirs or None, reload_includes=reload_includes or None, reload_excludes=reload_excludes or None, reload_delay=reload_delay, workers=workers, proxy_headers=proxy_headers, server_header=server_header, date_header=date_header, forwarded_allow_ips=forwarded_allow_ips, root_path=root_path, limit_concurrency=limit_concurrency, backlog=backlog, limit_max_requests=limit_max_requests, timeout_keep_alive=timeout_keep_alive, timeout_graceful_shutdown=timeout_graceful_shutdown, ssl_keyfile=ssl_keyfile, ssl_certfile=ssl_certfile, ssl_keyfile_password=ssl_keyfile_password, ssl_version=ssl_version, ssl_cert_reqs=ssl_cert_reqs, ssl_ca_certs=ssl_ca_certs, ssl_ciphers=ssl_ciphers, headers=[header.split(":", 1) for header in headers], # type: ignore[misc] use_colors=use_colors, factory=factory, app_dir=app_dir, h11_max_incomplete_event_size=h11_max_incomplete_event_size, ) def run( app: ASGIApplication | Callable[..., Any] | str, *, host: str = "127.0.0.1", port: int = 8000, uds: str | None = None, fd: int | None = None, loop: LoopSetupType = "auto", http: type[asyncio.Protocol] | HTTPProtocolType = "auto", ws: type[asyncio.Protocol] | WSProtocolType = "auto", ws_max_size: int = 16777216, ws_max_queue: int = 32, ws_ping_interval: float | None = 20.0, ws_ping_timeout: float | None = 20.0, ws_per_message_deflate: bool = True, lifespan: LifespanType = "auto", interface: InterfaceType = "auto", reload: bool = False, reload_dirs: list[str] | str | None = None, reload_includes: list[str] | str | None = None, reload_excludes: list[str] | str | None = None, reload_delay: float = 0.25, workers: int | None = None, env_file: str | os.PathLike[str] | None = None, log_config: dict[str, Any] | str | None = LOGGING_CONFIG, log_level: str | int | None = None, access_log: bool = True, proxy_headers: bool = True, server_header: bool = True, date_header: bool = True, forwarded_allow_ips: list[str] | str | None = None, root_path: str = "", limit_concurrency: int | None = None, backlog: int = 2048, limit_max_requests: int | None = None, timeout_keep_alive: int = 5, timeout_graceful_shutdown: int | None = None, ssl_keyfile: str | None = None, ssl_certfile: str | os.PathLike[str] | None = None, ssl_keyfile_password: str | None = None, ssl_version: int = SSL_PROTOCOL_VERSION, ssl_cert_reqs: int = ssl.CERT_NONE, ssl_ca_certs: str | None = None, ssl_ciphers: str = "TLSv1", headers: list[tuple[str, str]] | None = None, use_colors: bool | None = None, app_dir: str | None = None, factory: bool = False, h11_max_incomplete_event_size: int | None = None, ) -> None: if app_dir is not None: sys.path.insert(0, app_dir) config = Config( app, host=host, port=port, uds=uds, fd=fd, loop=loop, http=http, ws=ws, ws_max_size=ws_max_size, ws_max_queue=ws_max_queue, ws_ping_interval=ws_ping_interval, ws_ping_timeout=ws_ping_timeout, ws_per_message_deflate=ws_per_message_deflate, lifespan=lifespan, interface=interface, reload=reload, reload_dirs=reload_dirs, reload_includes=reload_includes, reload_excludes=reload_excludes, reload_delay=reload_delay, workers=workers, env_file=env_file, log_config=log_config, log_level=log_level, access_log=access_log, proxy_headers=proxy_headers, server_header=server_header, date_header=date_header, forwarded_allow_ips=forwarded_allow_ips, root_path=root_path, limit_concurrency=limit_concurrency, backlog=backlog, limit_max_requests=limit_max_requests, timeout_keep_alive=timeout_keep_alive, timeout_graceful_shutdown=timeout_graceful_shutdown, ssl_keyfile=ssl_keyfile, ssl_certfile=ssl_certfile, ssl_keyfile_password=ssl_keyfile_password, ssl_version=ssl_version, ssl_cert_reqs=ssl_cert_reqs, ssl_ca_certs=ssl_ca_certs, ssl_ciphers=ssl_ciphers, headers=headers, use_colors=use_colors, factory=factory, h11_max_incomplete_event_size=h11_max_incomplete_event_size, ) server = Server(config=config) if (config.reload or config.workers > 1) and not isinstance(app, str): logger = logging.getLogger("uvicorn.error") logger.warning( "You must pass the application as an import string to enable 'reload' or " "'workers'." ) sys.exit(1) if config.should_reload: sock = config.bind_socket() ChangeReload(config, target=server.run, sockets=[sock]).run() elif config.workers > 1: sock = config.bind_socket() Multiprocess(config, target=server.run, sockets=[sock]).run() else: server.run() if config.uds and os.path.exists(config.uds): os.remove(config.uds) # pragma: py-win32 if not server.started and not config.should_reload and config.workers == 1: sys.exit(STARTUP_FAILURE) if __name__ == "__main__": main() # pragma: no cover uvicorn-0.27.1/uvicorn/middleware/000077500000000000000000000000001456166335300171045ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/middleware/__init__.py000066400000000000000000000000001456166335300212030ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/middleware/asgi2.py000066400000000000000000000006301456166335300204620ustar00rootroot00000000000000from uvicorn._types import ( ASGI2Application, ASGIReceiveCallable, ASGISendCallable, Scope, ) class ASGI2Middleware: def __init__(self, app: "ASGI2Application"): self.app = app async def __call__( self, scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: instance = self.app(scope) await instance(receive, send) uvicorn-0.27.1/uvicorn/middleware/message_logger.py000066400000000000000000000054531456166335300224500ustar00rootroot00000000000000import logging from typing import Any from uvicorn._types import ( ASGI3Application, ASGIReceiveCallable, ASGIReceiveEvent, ASGISendCallable, ASGISendEvent, WWWScope, ) from uvicorn.logging import TRACE_LOG_LEVEL PLACEHOLDER_FORMAT = { "body": "<{length} bytes>", "bytes": "<{length} bytes>", "text": "<{length} chars>", "headers": "<...>", } def message_with_placeholders(message: Any) -> Any: """ Return an ASGI message, with any body-type content omitted and replaced with a placeholder. """ new_message = message.copy() for attr in PLACEHOLDER_FORMAT.keys(): if message.get(attr) is not None: content = message[attr] placeholder = PLACEHOLDER_FORMAT[attr].format(length=len(content)) new_message[attr] = placeholder return new_message class MessageLoggerMiddleware: def __init__(self, app: "ASGI3Application"): self.task_counter = 0 self.app = app self.logger = logging.getLogger("uvicorn.asgi") def trace(message: Any, *args: Any, **kwargs: Any) -> None: self.logger.log(TRACE_LOG_LEVEL, message, *args, **kwargs) self.logger.trace = trace # type: ignore async def __call__( self, scope: "WWWScope", receive: "ASGIReceiveCallable", send: "ASGISendCallable", ) -> None: self.task_counter += 1 task_counter = self.task_counter client = scope.get("client") prefix = "%s:%d - ASGI" % (client[0], client[1]) if client else "ASGI" async def inner_receive() -> "ASGIReceiveEvent": message = await receive() logged_message = message_with_placeholders(message) log_text = "%s [%d] Receive %s" self.logger.trace( # type: ignore log_text, prefix, task_counter, logged_message ) return message async def inner_send(message: "ASGISendEvent") -> None: logged_message = message_with_placeholders(message) log_text = "%s [%d] Send %s" self.logger.trace( # type: ignore log_text, prefix, task_counter, logged_message ) await send(message) logged_scope = message_with_placeholders(scope) log_text = "%s [%d] Started scope=%s" self.logger.trace(log_text, prefix, task_counter, logged_scope) # type: ignore try: await self.app(scope, inner_receive, inner_send) except BaseException as exc: log_text = "%s [%d] Raised exception" self.logger.trace(log_text, prefix, task_counter) # type: ignore raise exc from None else: log_text = "%s [%d] Completed" self.logger.trace(log_text, prefix, task_counter) # type: ignore uvicorn-0.27.1/uvicorn/middleware/proxy_headers.py000066400000000000000000000062751456166335300223440ustar00rootroot00000000000000""" This middleware can be used when a known proxy is fronting the application, and is trusted to be properly setting the `X-Forwarded-Proto` and `X-Forwarded-For` headers with the connecting client information. Modifies the `client` and `scheme` information so that they reference the connecting client, rather that the connecting proxy. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#Proxies """ from typing import List, Optional, Tuple, Union, cast from uvicorn._types import ( ASGI3Application, ASGIReceiveCallable, ASGISendCallable, HTTPScope, Scope, WebSocketScope, ) class ProxyHeadersMiddleware: def __init__( self, app: "ASGI3Application", trusted_hosts: Union[List[str], str] = "127.0.0.1", ) -> None: self.app = app if isinstance(trusted_hosts, str): self.trusted_hosts = {item.strip() for item in trusted_hosts.split(",")} else: self.trusted_hosts = set(trusted_hosts) self.always_trust = "*" in self.trusted_hosts def get_trusted_client_host( self, x_forwarded_for_hosts: List[str] ) -> Optional[str]: if self.always_trust: return x_forwarded_for_hosts[0] for host in reversed(x_forwarded_for_hosts): if host not in self.trusted_hosts: return host return None async def __call__( self, scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: if scope["type"] in ("http", "websocket"): scope = cast(Union["HTTPScope", "WebSocketScope"], scope) client_addr: Optional[Tuple[str, int]] = scope.get("client") client_host = client_addr[0] if client_addr else None if self.always_trust or client_host in self.trusted_hosts: headers = dict(scope["headers"]) if b"x-forwarded-proto" in headers: # Determine if the incoming request was http or https based on # the X-Forwarded-Proto header. x_forwarded_proto = ( headers[b"x-forwarded-proto"].decode("latin1").strip() ) if scope["type"] == "websocket": scope["scheme"] = ( "wss" if x_forwarded_proto == "https" else "ws" ) else: scope["scheme"] = x_forwarded_proto if b"x-forwarded-for" in headers: # Determine the client address from the last trusted IP in the # X-Forwarded-For header. We've lost the connecting client's port # information by now, so only include the host. x_forwarded_for = headers[b"x-forwarded-for"].decode("latin1") x_forwarded_for_hosts = [ item.strip() for item in x_forwarded_for.split(",") ] host = self.get_trusted_client_host(x_forwarded_for_hosts) port = 0 scope["client"] = (host, port) # type: ignore[arg-type] return await self.app(scope, receive, send) uvicorn-0.27.1/uvicorn/middleware/wsgi.py000066400000000000000000000160621456166335300204340ustar00rootroot00000000000000import asyncio import concurrent.futures import io import sys import warnings from collections import deque from typing import Deque, Iterable, Optional, Tuple from uvicorn._types import ( ASGIReceiveCallable, ASGIReceiveEvent, ASGISendCallable, ASGISendEvent, Environ, ExcInfo, HTTPRequestEvent, HTTPResponseBodyEvent, HTTPResponseStartEvent, HTTPScope, StartResponse, WSGIApp, ) def build_environ( scope: "HTTPScope", message: "ASGIReceiveEvent", body: io.BytesIO ) -> Environ: """ Builds a scope and request message into a WSGI environ object. """ script_name = scope.get("root_path", "").encode("utf8").decode("latin1") path_info = scope["path"].encode("utf8").decode("latin1") if path_info.startswith(script_name): path_info = path_info[len(script_name) :] environ = { "REQUEST_METHOD": scope["method"], "SCRIPT_NAME": script_name, "PATH_INFO": path_info, "QUERY_STRING": scope["query_string"].decode("ascii"), "SERVER_PROTOCOL": "HTTP/%s" % scope["http_version"], "wsgi.version": (1, 0), "wsgi.url_scheme": scope.get("scheme", "http"), "wsgi.input": body, "wsgi.errors": sys.stdout, "wsgi.multithread": True, "wsgi.multiprocess": True, "wsgi.run_once": False, } # Get server name and port - required in WSGI, not in ASGI server = scope.get("server") if server is None: server = ("localhost", 80) environ["SERVER_NAME"] = server[0] environ["SERVER_PORT"] = server[1] # Get client IP address client = scope.get("client") if client is not None: environ["REMOTE_ADDR"] = client[0] # Go through headers and make them into environ entries for name, value in scope.get("headers", []): name_str: str = name.decode("latin1") if name_str == "content-length": corrected_name = "CONTENT_LENGTH" elif name_str == "content-type": corrected_name = "CONTENT_TYPE" else: corrected_name = "HTTP_%s" % name_str.upper().replace("-", "_") # HTTPbis say only ASCII chars are allowed in headers, but we latin1 # just in case value_str: str = value.decode("latin1") if corrected_name in environ: corrected_name_environ = environ[corrected_name] assert isinstance(corrected_name_environ, str) value_str = corrected_name_environ + "," + value_str environ[corrected_name] = value_str return environ class _WSGIMiddleware: def __init__(self, app: WSGIApp, workers: int = 10): warnings.warn( "Uvicorn's native WSGI implementation is deprecated, you " "should switch to a2wsgi (`pip install a2wsgi`).", DeprecationWarning, ) self.app = app self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=workers) async def __call__( self, scope: "HTTPScope", receive: "ASGIReceiveCallable", send: "ASGISendCallable", ) -> None: assert scope["type"] == "http" instance = WSGIResponder(self.app, self.executor, scope) await instance(receive, send) class WSGIResponder: def __init__( self, app: WSGIApp, executor: concurrent.futures.ThreadPoolExecutor, scope: "HTTPScope", ): self.app = app self.executor = executor self.scope = scope self.status = None self.response_headers = None self.send_event = asyncio.Event() self.send_queue: Deque[Optional["ASGISendEvent"]] = deque() self.loop: asyncio.AbstractEventLoop = asyncio.get_event_loop() self.response_started = False self.exc_info: Optional[ExcInfo] = None async def __call__( self, receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: message: HTTPRequestEvent = await receive() # type: ignore[assignment] body = io.BytesIO(message.get("body", b"")) more_body = message.get("more_body", False) if more_body: body.seek(0, io.SEEK_END) while more_body: body_message: "HTTPRequestEvent" = ( await receive() # type: ignore[assignment] ) body.write(body_message.get("body", b"")) more_body = body_message.get("more_body", False) body.seek(0) environ = build_environ(self.scope, message, body) self.loop = asyncio.get_event_loop() wsgi = self.loop.run_in_executor( self.executor, self.wsgi, environ, self.start_response ) sender = self.loop.create_task(self.sender(send)) try: await asyncio.wait_for(wsgi, None) finally: self.send_queue.append(None) self.send_event.set() await asyncio.wait_for(sender, None) if self.exc_info is not None: raise self.exc_info[0].with_traceback(self.exc_info[1], self.exc_info[2]) async def sender(self, send: "ASGISendCallable") -> None: while True: if self.send_queue: message = self.send_queue.popleft() if message is None: return await send(message) else: await self.send_event.wait() self.send_event.clear() def start_response( self, status: str, response_headers: Iterable[Tuple[str, str]], exc_info: Optional[ExcInfo] = None, ) -> None: self.exc_info = exc_info if not self.response_started: self.response_started = True status_code_str, _ = status.split(" ", 1) status_code = int(status_code_str) headers = [ (name.encode("ascii"), value.encode("ascii")) for name, value in response_headers ] http_response_start_event: HTTPResponseStartEvent = { "type": "http.response.start", "status": status_code, "headers": headers, } self.send_queue.append(http_response_start_event) self.loop.call_soon_threadsafe(self.send_event.set) def wsgi(self, environ: Environ, start_response: StartResponse) -> None: for chunk in self.app(environ, start_response): # type: ignore response_body: HTTPResponseBodyEvent = { "type": "http.response.body", "body": chunk, "more_body": True, } self.send_queue.append(response_body) self.loop.call_soon_threadsafe(self.send_event.set) empty_body: HTTPResponseBodyEvent = { "type": "http.response.body", "body": b"", "more_body": False, } self.send_queue.append(empty_body) self.loop.call_soon_threadsafe(self.send_event.set) try: from a2wsgi import WSGIMiddleware except ModuleNotFoundError: # pragma: no cover WSGIMiddleware = _WSGIMiddleware # type: ignore[misc, assignment] uvicorn-0.27.1/uvicorn/protocols/000077500000000000000000000000001456166335300170135ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/__init__.py000066400000000000000000000000001456166335300211120ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/http/000077500000000000000000000000001456166335300177725ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/http/__init__.py000066400000000000000000000000001456166335300220710ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/http/auto.py000066400000000000000000000006231456166335300213150ustar00rootroot00000000000000from __future__ import annotations import asyncio AutoHTTPProtocol: type[asyncio.Protocol] try: import httptools # noqa except ImportError: # pragma: no cover from uvicorn.protocols.http.h11_impl import H11Protocol AutoHTTPProtocol = H11Protocol else: # pragma: no cover from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol AutoHTTPProtocol = HttpToolsProtocol uvicorn-0.27.1/uvicorn/protocols/http/flow_control.py000066400000000000000000000033611456166335300230560ustar00rootroot00000000000000import asyncio from uvicorn._types import ( ASGIReceiveCallable, ASGISendCallable, HTTPResponseBodyEvent, HTTPResponseStartEvent, Scope, ) CLOSE_HEADER = (b"connection", b"close") HIGH_WATER_LIMIT = 65536 class FlowControl: def __init__(self, transport: asyncio.Transport) -> None: self._transport = transport self.read_paused = False self.write_paused = False self._is_writable_event = asyncio.Event() self._is_writable_event.set() async def drain(self) -> None: await self._is_writable_event.wait() def pause_reading(self) -> None: if not self.read_paused: self.read_paused = True self._transport.pause_reading() def resume_reading(self) -> None: if self.read_paused: self.read_paused = False self._transport.resume_reading() def pause_writing(self) -> None: if not self.write_paused: self.write_paused = True self._is_writable_event.clear() def resume_writing(self) -> None: if self.write_paused: self.write_paused = False self._is_writable_event.set() async def service_unavailable( scope: "Scope", receive: "ASGIReceiveCallable", send: "ASGISendCallable" ) -> None: response_start: "HTTPResponseStartEvent" = { "type": "http.response.start", "status": 503, "headers": [ (b"content-type", b"text/plain; charset=utf-8"), (b"connection", b"close"), ], } await send(response_start) response_body: "HTTPResponseBodyEvent" = { "type": "http.response.body", "body": b"Service Unavailable", "more_body": False, } await send(response_body) uvicorn-0.27.1/uvicorn/protocols/http/h11_impl.py000066400000000000000000000477641456166335300220000ustar00rootroot00000000000000from __future__ import annotations import asyncio import http import logging from typing import Any, Callable, Literal, cast from urllib.parse import unquote import h11 from h11._connection import DEFAULT_MAX_INCOMPLETE_EVENT_SIZE from uvicorn._types import ( ASGI3Application, ASGIReceiveEvent, ASGISendEvent, HTTPRequestEvent, HTTPResponseBodyEvent, HTTPResponseStartEvent, HTTPScope, ) from uvicorn.config import Config from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.protocols.http.flow_control import ( CLOSE_HEADER, HIGH_WATER_LIMIT, FlowControl, service_unavailable, ) from uvicorn.protocols.utils import ( get_client_addr, get_local_addr, get_path_with_query_string, get_remote_addr, is_ssl, ) from uvicorn.server import ServerState def _get_status_phrase(status_code: int) -> bytes: try: return http.HTTPStatus(status_code).phrase.encode() except ValueError: return b"" STATUS_PHRASES = { status_code: _get_status_phrase(status_code) for status_code in range(100, 600) } class H11Protocol(asyncio.Protocol): def __init__( self, config: Config, server_state: ServerState, app_state: dict[str, Any], _loop: asyncio.AbstractEventLoop | None = None, ) -> None: if not config.loaded: config.load() self.config = config self.app = config.loaded_app self.loop = _loop or asyncio.get_event_loop() self.logger = logging.getLogger("uvicorn.error") self.access_logger = logging.getLogger("uvicorn.access") self.access_log = self.access_logger.hasHandlers() self.conn = h11.Connection( h11.SERVER, config.h11_max_incomplete_event_size if config.h11_max_incomplete_event_size is not None else DEFAULT_MAX_INCOMPLETE_EVENT_SIZE, ) self.ws_protocol_class = config.ws_protocol_class self.root_path = config.root_path self.limit_concurrency = config.limit_concurrency self.app_state = app_state # Timeouts self.timeout_keep_alive_task: asyncio.TimerHandle | None = None self.timeout_keep_alive = config.timeout_keep_alive # Shared server state self.server_state = server_state self.connections = server_state.connections self.tasks = server_state.tasks # Per-connection state self.transport: asyncio.Transport = None # type: ignore[assignment] self.flow: FlowControl = None # type: ignore[assignment] self.server: tuple[str, int] | None = None self.client: tuple[str, int] | None = None self.scheme: Literal["http", "https"] | None = None # Per-request state self.scope: HTTPScope = None # type: ignore[assignment] self.headers: list[tuple[bytes, bytes]] = None # type: ignore[assignment] self.cycle: RequestResponseCycle = None # type: ignore[assignment] # Protocol interface def connection_made( # type: ignore[override] self, transport: asyncio.Transport ) -> None: self.connections.add(self) self.transport = transport self.flow = FlowControl(transport) self.server = get_local_addr(transport) self.client = get_remote_addr(transport) self.scheme = "https" if is_ssl(transport) else "http" if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sHTTP connection made", prefix) def connection_lost(self, exc: Exception | None) -> None: self.connections.discard(self) if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sHTTP connection lost", prefix) if self.cycle and not self.cycle.response_complete: self.cycle.disconnected = True if self.conn.our_state != h11.ERROR: event = h11.ConnectionClosed() try: self.conn.send(event) except h11.LocalProtocolError: # Premature client disconnect pass if self.cycle is not None: self.cycle.message_event.set() if self.flow is not None: self.flow.resume_writing() if exc is None: self.transport.close() self._unset_keepalive_if_required() def eof_received(self) -> None: pass def _unset_keepalive_if_required(self) -> None: if self.timeout_keep_alive_task is not None: self.timeout_keep_alive_task.cancel() self.timeout_keep_alive_task = None def _get_upgrade(self) -> bytes | None: connection = [] upgrade = None for name, value in self.headers: if name == b"connection": connection = [token.lower().strip() for token in value.split(b",")] if name == b"upgrade": upgrade = value.lower() if b"upgrade" in connection: return upgrade return None def _should_upgrade_to_ws(self) -> bool: if self.ws_protocol_class is None: if self.config.ws == "auto": msg = "Unsupported upgrade request." self.logger.warning(msg) msg = "No supported WebSocket library detected. Please use \"pip install 'uvicorn[standard]'\", or install 'websockets' or 'wsproto' manually." # noqa: E501 self.logger.warning(msg) return False return True def data_received(self, data: bytes) -> None: self._unset_keepalive_if_required() self.conn.receive_data(data) self.handle_events() def handle_events(self) -> None: while True: try: event = self.conn.next_event() except h11.RemoteProtocolError: msg = "Invalid HTTP request received." self.logger.warning(msg) self.send_400_response(msg) return if event is h11.NEED_DATA: break elif event is h11.PAUSED: # This case can occur in HTTP pipelining, so we need to # stop reading any more data, and ensure that at the end # of the active request/response cycle we handle any # events that have been buffered up. self.flow.pause_reading() break elif isinstance(event, h11.Request): self.headers = [(key.lower(), value) for key, value in event.headers] raw_path, _, query_string = event.target.partition(b"?") path = unquote(raw_path.decode("ascii")) full_path = self.root_path + path full_raw_path = self.root_path.encode("ascii") + raw_path self.scope = { "type": "http", "asgi": { "version": self.config.asgi_version, "spec_version": "2.3", }, "http_version": event.http_version.decode("ascii"), "server": self.server, "client": self.client, "scheme": self.scheme, # type: ignore[typeddict-item] "method": event.method.decode("ascii"), "root_path": self.root_path, "path": full_path, "raw_path": full_raw_path, "query_string": query_string, "headers": self.headers, "state": self.app_state.copy(), } upgrade = self._get_upgrade() if upgrade == b"websocket" and self._should_upgrade_to_ws(): self.handle_websocket_upgrade(event) return # Handle 503 responses when 'limit_concurrency' is exceeded. if self.limit_concurrency is not None and ( len(self.connections) >= self.limit_concurrency or len(self.tasks) >= self.limit_concurrency ): app = service_unavailable message = "Exceeded concurrency limit." self.logger.warning(message) else: app = self.app # When starting to process a request, disable the keep-alive # timeout. Normally we disable this when receiving data from # client and set back when finishing processing its request. # However, for pipelined requests processing finishes after # already receiving the next request and thus the timer may # be set here, which we don't want. self._unset_keepalive_if_required() self.cycle = RequestResponseCycle( scope=self.scope, conn=self.conn, transport=self.transport, flow=self.flow, logger=self.logger, access_logger=self.access_logger, access_log=self.access_log, default_headers=self.server_state.default_headers, message_event=asyncio.Event(), on_response=self.on_response_complete, ) task = self.loop.create_task(self.cycle.run_asgi(app)) task.add_done_callback(self.tasks.discard) self.tasks.add(task) elif isinstance(event, h11.Data): if self.conn.our_state is h11.DONE: continue self.cycle.body += event.data if len(self.cycle.body) > HIGH_WATER_LIMIT: self.flow.pause_reading() self.cycle.message_event.set() elif isinstance(event, h11.EndOfMessage): if self.conn.our_state is h11.DONE: self.transport.resume_reading() self.conn.start_next_cycle() continue self.cycle.more_body = False self.cycle.message_event.set() def handle_websocket_upgrade(self, event: h11.Request) -> None: if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sUpgrading to WebSocket", prefix) self.connections.discard(self) output = [event.method, b" ", event.target, b" HTTP/1.1\r\n"] for name, value in self.headers: output += [name, b": ", value, b"\r\n"] output.append(b"\r\n") protocol = self.ws_protocol_class( # type: ignore[call-arg, misc] config=self.config, server_state=self.server_state, app_state=self.app_state, ) protocol.connection_made(self.transport) protocol.data_received(b"".join(output)) self.transport.set_protocol(protocol) def send_400_response(self, msg: str) -> None: reason = STATUS_PHRASES[400] headers: list[tuple[bytes, bytes]] = [ (b"content-type", b"text/plain; charset=utf-8"), (b"connection", b"close"), ] event = h11.Response(status_code=400, headers=headers, reason=reason) output = self.conn.send(event) self.transport.write(output) output = self.conn.send(event=h11.Data(data=msg.encode("ascii"))) self.transport.write(output) output = self.conn.send(event=h11.EndOfMessage()) self.transport.write(output) self.transport.close() def on_response_complete(self) -> None: self.server_state.total_requests += 1 if self.transport.is_closing(): return # Set a short Keep-Alive timeout. self._unset_keepalive_if_required() self.timeout_keep_alive_task = self.loop.call_later( self.timeout_keep_alive, self.timeout_keep_alive_handler ) # Unpause data reads if needed. self.flow.resume_reading() # Unblock any pipelined events. if self.conn.our_state is h11.DONE and self.conn.their_state is h11.DONE: self.conn.start_next_cycle() self.handle_events() def shutdown(self) -> None: """ Called by the server to commence a graceful shutdown. """ if self.cycle is None or self.cycle.response_complete: event = h11.ConnectionClosed() self.conn.send(event) self.transport.close() else: self.cycle.keep_alive = False def pause_writing(self) -> None: """ Called by the transport when the write buffer exceeds the high water mark. """ self.flow.pause_writing() def resume_writing(self) -> None: """ Called by the transport when the write buffer drops below the low water mark. """ self.flow.resume_writing() def timeout_keep_alive_handler(self) -> None: """ Called on a keep-alive connection if no new data is received after a short delay. """ if not self.transport.is_closing(): event = h11.ConnectionClosed() self.conn.send(event) self.transport.close() class RequestResponseCycle: def __init__( self, scope: "HTTPScope", conn: h11.Connection, transport: asyncio.Transport, flow: FlowControl, logger: logging.Logger, access_logger: logging.Logger, access_log: bool, default_headers: list[tuple[bytes, bytes]], message_event: asyncio.Event, on_response: Callable[..., None], ) -> None: self.scope = scope self.conn = conn self.transport = transport self.flow = flow self.logger = logger self.access_logger = access_logger self.access_log = access_log self.default_headers = default_headers self.message_event = message_event self.on_response = on_response # Connection state self.disconnected = False self.keep_alive = True self.waiting_for_100_continue = conn.they_are_waiting_for_100_continue # Request state self.body = b"" self.more_body = True # Response state self.response_started = False self.response_complete = False # ASGI exception wrapper async def run_asgi(self, app: "ASGI3Application") -> None: try: result = await app( # type: ignore[func-returns-value] self.scope, self.receive, self.send ) except BaseException as exc: msg = "Exception in ASGI application\n" self.logger.error(msg, exc_info=exc) if not self.response_started: await self.send_500_response() else: self.transport.close() else: if result is not None: msg = "ASGI callable should return None, but returned '%s'." self.logger.error(msg, result) self.transport.close() elif not self.response_started and not self.disconnected: msg = "ASGI callable returned without starting response." self.logger.error(msg) await self.send_500_response() elif not self.response_complete and not self.disconnected: msg = "ASGI callable returned without completing response." self.logger.error(msg) self.transport.close() finally: self.on_response = lambda: None async def send_500_response(self) -> None: response_start_event: "HTTPResponseStartEvent" = { "type": "http.response.start", "status": 500, "headers": [ (b"content-type", b"text/plain; charset=utf-8"), (b"connection", b"close"), ], } await self.send(response_start_event) response_body_event: "HTTPResponseBodyEvent" = { "type": "http.response.body", "body": b"Internal Server Error", "more_body": False, } await self.send(response_body_event) # ASGI interface async def send(self, message: "ASGISendEvent") -> None: message_type = message["type"] if self.flow.write_paused and not self.disconnected: await self.flow.drain() if self.disconnected: return if not self.response_started: # Sending response status line and headers if message_type != "http.response.start": msg = "Expected ASGI message 'http.response.start', but got '%s'." raise RuntimeError(msg % message_type) message = cast("HTTPResponseStartEvent", message) self.response_started = True self.waiting_for_100_continue = False status = message["status"] headers = self.default_headers + list(message.get("headers", [])) if CLOSE_HEADER in self.scope["headers"] and CLOSE_HEADER not in headers: headers = headers + [CLOSE_HEADER] if self.access_log: self.access_logger.info( '%s - "%s %s HTTP/%s" %d', get_client_addr(self.scope), self.scope["method"], get_path_with_query_string(self.scope), self.scope["http_version"], status, ) # Write response status line and headers reason = STATUS_PHRASES[status] response = h11.Response(status_code=status, headers=headers, reason=reason) output = self.conn.send(event=response) self.transport.write(output) elif not self.response_complete: # Sending response body if message_type != "http.response.body": msg = "Expected ASGI message 'http.response.body', but got '%s'." raise RuntimeError(msg % message_type) message = cast("HTTPResponseBodyEvent", message) body = message.get("body", b"") more_body = message.get("more_body", False) # Write response body data = b"" if self.scope["method"] == "HEAD" else body output = self.conn.send(event=h11.Data(data=data)) self.transport.write(output) # Handle response completion if not more_body: self.response_complete = True self.message_event.set() output = self.conn.send(event=h11.EndOfMessage()) self.transport.write(output) else: # Response already sent msg = "Unexpected ASGI message '%s' sent, after response already completed." raise RuntimeError(msg % message_type) if self.response_complete: if self.conn.our_state is h11.MUST_CLOSE or not self.keep_alive: self.conn.send(event=h11.ConnectionClosed()) self.transport.close() self.on_response() async def receive(self) -> "ASGIReceiveEvent": if self.waiting_for_100_continue and not self.transport.is_closing(): headers: list[tuple[str, str]] = [] event = h11.InformationalResponse( status_code=100, headers=headers, reason="Continue" ) output = self.conn.send(event=event) self.transport.write(output) self.waiting_for_100_continue = False if not self.disconnected and not self.response_complete: self.flow.resume_reading() await self.message_event.wait() self.message_event.clear() if self.disconnected or self.response_complete: return {"type": "http.disconnect"} message: "HTTPRequestEvent" = { "type": "http.request", "body": self.body, "more_body": self.more_body, } self.body = b"" return message uvicorn-0.27.1/uvicorn/protocols/http/httptools_impl.py000066400000000000000000000523771456166335300234430ustar00rootroot00000000000000from __future__ import annotations import asyncio import http import logging import re import urllib from asyncio.events import TimerHandle from collections import deque from typing import Any, Callable, Deque, Literal, cast import httptools from uvicorn._types import ( ASGI3Application, ASGIReceiveEvent, ASGISendEvent, HTTPDisconnectEvent, HTTPRequestEvent, HTTPResponseBodyEvent, HTTPResponseStartEvent, HTTPScope, ) from uvicorn.config import Config from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.protocols.http.flow_control import ( CLOSE_HEADER, HIGH_WATER_LIMIT, FlowControl, service_unavailable, ) from uvicorn.protocols.utils import ( get_client_addr, get_local_addr, get_path_with_query_string, get_remote_addr, is_ssl, ) from uvicorn.server import ServerState HEADER_RE = re.compile(b'[\x00-\x1F\x7F()<>@,;:[]={} \t\\"]') HEADER_VALUE_RE = re.compile(b"[\x00-\x1F\x7F]") def _get_status_line(status_code: int) -> bytes: try: phrase = http.HTTPStatus(status_code).phrase.encode() except ValueError: phrase = b"" return b"".join([b"HTTP/1.1 ", str(status_code).encode(), b" ", phrase, b"\r\n"]) STATUS_LINE = { status_code: _get_status_line(status_code) for status_code in range(100, 600) } class HttpToolsProtocol(asyncio.Protocol): def __init__( self, config: Config, server_state: ServerState, app_state: dict[str, Any], _loop: asyncio.AbstractEventLoop | None = None, ) -> None: if not config.loaded: config.load() self.config = config self.app = config.loaded_app self.loop = _loop or asyncio.get_event_loop() self.logger = logging.getLogger("uvicorn.error") self.access_logger = logging.getLogger("uvicorn.access") self.access_log = self.access_logger.hasHandlers() self.parser = httptools.HttpRequestParser(self) self.ws_protocol_class = config.ws_protocol_class self.root_path = config.root_path self.limit_concurrency = config.limit_concurrency self.app_state = app_state # Timeouts self.timeout_keep_alive_task: TimerHandle | None = None self.timeout_keep_alive = config.timeout_keep_alive # Global state self.server_state = server_state self.connections = server_state.connections self.tasks = server_state.tasks # Per-connection state self.transport: asyncio.Transport = None # type: ignore[assignment] self.flow: FlowControl = None # type: ignore[assignment] self.server: tuple[str, int] | None = None self.client: tuple[str, int] | None = None self.scheme: Literal["http", "https"] | None = None self.pipeline: Deque[tuple[RequestResponseCycle, ASGI3Application]] = deque() # Per-request state self.scope: HTTPScope = None # type: ignore[assignment] self.headers: list[tuple[bytes, bytes]] = None # type: ignore[assignment] self.expect_100_continue = False self.cycle: RequestResponseCycle = None # type: ignore[assignment] # Protocol interface def connection_made( # type: ignore[override] self, transport: asyncio.Transport ) -> None: self.connections.add(self) self.transport = transport self.flow = FlowControl(transport) self.server = get_local_addr(transport) self.client = get_remote_addr(transport) self.scheme = "https" if is_ssl(transport) else "http" if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sHTTP connection made", prefix) def connection_lost(self, exc: Exception | None) -> None: self.connections.discard(self) if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sHTTP connection lost", prefix) if self.cycle and not self.cycle.response_complete: self.cycle.disconnected = True if self.cycle is not None: self.cycle.message_event.set() if self.flow is not None: self.flow.resume_writing() if exc is None: self.transport.close() self._unset_keepalive_if_required() self.parser = None def eof_received(self) -> None: pass def _unset_keepalive_if_required(self) -> None: if self.timeout_keep_alive_task is not None: self.timeout_keep_alive_task.cancel() self.timeout_keep_alive_task = None def _get_upgrade(self) -> bytes | None: connection = [] upgrade = None for name, value in self.headers: if name == b"connection": connection = [token.lower().strip() for token in value.split(b",")] if name == b"upgrade": upgrade = value.lower() if b"upgrade" in connection: return upgrade return None def _should_upgrade_to_ws(self, upgrade: bytes | None) -> bool: if upgrade == b"websocket" and self.ws_protocol_class is not None: return True if self.config.ws == "auto": msg = "Unsupported upgrade request." self.logger.warning(msg) msg = "No supported WebSocket library detected. Please use \"pip install 'uvicorn[standard]'\", or install 'websockets' or 'wsproto' manually." # noqa: E501 self.logger.warning(msg) return False def _should_upgrade(self) -> bool: upgrade = self._get_upgrade() return self._should_upgrade_to_ws(upgrade) def data_received(self, data: bytes) -> None: self._unset_keepalive_if_required() try: self.parser.feed_data(data) except httptools.HttpParserError: msg = "Invalid HTTP request received." self.logger.warning(msg) self.send_400_response(msg) return except httptools.HttpParserUpgrade: upgrade = self._get_upgrade() if self._should_upgrade_to_ws(upgrade): self.handle_websocket_upgrade() def handle_websocket_upgrade(self) -> None: if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sUpgrading to WebSocket", prefix) self.connections.discard(self) method = self.scope["method"].encode() output = [method, b" ", self.url, b" HTTP/1.1\r\n"] for name, value in self.scope["headers"]: output += [name, b": ", value, b"\r\n"] output.append(b"\r\n") protocol = self.ws_protocol_class( # type: ignore[call-arg, misc] config=self.config, server_state=self.server_state, app_state=self.app_state, ) protocol.connection_made(self.transport) protocol.data_received(b"".join(output)) self.transport.set_protocol(protocol) def send_400_response(self, msg: str) -> None: content = [STATUS_LINE[400]] for name, value in self.server_state.default_headers: content.extend([name, b": ", value, b"\r\n"]) content.extend( [ b"content-type: text/plain; charset=utf-8\r\n", b"content-length: " + str(len(msg)).encode("ascii") + b"\r\n", b"connection: close\r\n", b"\r\n", msg.encode("ascii"), ] ) self.transport.write(b"".join(content)) self.transport.close() def on_message_begin(self) -> None: self.url = b"" self.expect_100_continue = False self.headers = [] self.scope = { # type: ignore[typeddict-item] "type": "http", "asgi": {"version": self.config.asgi_version, "spec_version": "2.3"}, "http_version": "1.1", "server": self.server, "client": self.client, "scheme": self.scheme, # type: ignore[typeddict-item] "root_path": self.root_path, "headers": self.headers, "state": self.app_state.copy(), } # Parser callbacks def on_url(self, url: bytes) -> None: self.url += url def on_header(self, name: bytes, value: bytes) -> None: name = name.lower() if name == b"expect" and value.lower() == b"100-continue": self.expect_100_continue = True self.headers.append((name, value)) def on_headers_complete(self) -> None: http_version = self.parser.get_http_version() method = self.parser.get_method() self.scope["method"] = method.decode("ascii") if http_version != "1.1": self.scope["http_version"] = http_version if self.parser.should_upgrade() and self._should_upgrade(): return parsed_url = httptools.parse_url(self.url) raw_path = parsed_url.path path = raw_path.decode("ascii") if "%" in path: path = urllib.parse.unquote(path) full_path = self.root_path + path full_raw_path = self.root_path.encode("ascii") + raw_path self.scope["path"] = full_path self.scope["raw_path"] = full_raw_path self.scope["query_string"] = parsed_url.query or b"" # Handle 503 responses when 'limit_concurrency' is exceeded. if self.limit_concurrency is not None and ( len(self.connections) >= self.limit_concurrency or len(self.tasks) >= self.limit_concurrency ): app = service_unavailable message = "Exceeded concurrency limit." self.logger.warning(message) else: app = self.app existing_cycle = self.cycle self.cycle = RequestResponseCycle( scope=self.scope, transport=self.transport, flow=self.flow, logger=self.logger, access_logger=self.access_logger, access_log=self.access_log, default_headers=self.server_state.default_headers, message_event=asyncio.Event(), expect_100_continue=self.expect_100_continue, keep_alive=http_version != "1.0", on_response=self.on_response_complete, ) if existing_cycle is None or existing_cycle.response_complete: # Standard case - start processing the request. task = self.loop.create_task(self.cycle.run_asgi(app)) task.add_done_callback(self.tasks.discard) self.tasks.add(task) else: # Pipelined HTTP requests need to be queued up. self.flow.pause_reading() self.pipeline.appendleft((self.cycle, app)) def on_body(self, body: bytes) -> None: if ( self.parser.should_upgrade() and self._should_upgrade() ) or self.cycle.response_complete: return self.cycle.body += body if len(self.cycle.body) > HIGH_WATER_LIMIT: self.flow.pause_reading() self.cycle.message_event.set() def on_message_complete(self) -> None: if ( self.parser.should_upgrade() and self._should_upgrade() ) or self.cycle.response_complete: return self.cycle.more_body = False self.cycle.message_event.set() def on_response_complete(self) -> None: # Callback for pipelined HTTP requests to be started. self.server_state.total_requests += 1 if self.transport.is_closing(): return self._unset_keepalive_if_required() # Unpause data reads if needed. self.flow.resume_reading() # Unblock any pipelined events. If there are none, arm the # Keep-Alive timeout instead. if self.pipeline: cycle, app = self.pipeline.pop() task = self.loop.create_task(cycle.run_asgi(app)) task.add_done_callback(self.tasks.discard) self.tasks.add(task) else: self.timeout_keep_alive_task = self.loop.call_later( self.timeout_keep_alive, self.timeout_keep_alive_handler ) def shutdown(self) -> None: """ Called by the server to commence a graceful shutdown. """ if self.cycle is None or self.cycle.response_complete: self.transport.close() else: self.cycle.keep_alive = False def pause_writing(self) -> None: """ Called by the transport when the write buffer exceeds the high water mark. """ self.flow.pause_writing() def resume_writing(self) -> None: """ Called by the transport when the write buffer drops below the low water mark. """ self.flow.resume_writing() def timeout_keep_alive_handler(self) -> None: """ Called on a keep-alive connection if no new data is received after a short delay. """ if not self.transport.is_closing(): self.transport.close() class RequestResponseCycle: def __init__( self, scope: "HTTPScope", transport: asyncio.Transport, flow: FlowControl, logger: logging.Logger, access_logger: logging.Logger, access_log: bool, default_headers: list[tuple[bytes, bytes]], message_event: asyncio.Event, expect_100_continue: bool, keep_alive: bool, on_response: Callable[..., None], ): self.scope = scope self.transport = transport self.flow = flow self.logger = logger self.access_logger = access_logger self.access_log = access_log self.default_headers = default_headers self.message_event = message_event self.on_response = on_response # Connection state self.disconnected = False self.keep_alive = keep_alive self.waiting_for_100_continue = expect_100_continue # Request state self.body = b"" self.more_body = True # Response state self.response_started = False self.response_complete = False self.chunked_encoding: bool | None = None self.expected_content_length = 0 # ASGI exception wrapper async def run_asgi(self, app: "ASGI3Application") -> None: try: result = await app( # type: ignore[func-returns-value] self.scope, self.receive, self.send ) except BaseException as exc: msg = "Exception in ASGI application\n" self.logger.error(msg, exc_info=exc) if not self.response_started: await self.send_500_response() else: self.transport.close() else: if result is not None: msg = "ASGI callable should return None, but returned '%s'." self.logger.error(msg, result) self.transport.close() elif not self.response_started and not self.disconnected: msg = "ASGI callable returned without starting response." self.logger.error(msg) await self.send_500_response() elif not self.response_complete and not self.disconnected: msg = "ASGI callable returned without completing response." self.logger.error(msg) self.transport.close() finally: self.on_response = lambda: None async def send_500_response(self) -> None: response_start_event: "HTTPResponseStartEvent" = { "type": "http.response.start", "status": 500, "headers": [ (b"content-type", b"text/plain; charset=utf-8"), (b"connection", b"close"), ], } await self.send(response_start_event) response_body_event: "HTTPResponseBodyEvent" = { "type": "http.response.body", "body": b"Internal Server Error", "more_body": False, } await self.send(response_body_event) # ASGI interface async def send(self, message: "ASGISendEvent") -> None: message_type = message["type"] if self.flow.write_paused and not self.disconnected: await self.flow.drain() if self.disconnected: return if not self.response_started: # Sending response status line and headers if message_type != "http.response.start": msg = "Expected ASGI message 'http.response.start', but got '%s'." raise RuntimeError(msg % message_type) message = cast("HTTPResponseStartEvent", message) self.response_started = True self.waiting_for_100_continue = False status_code = message["status"] headers = self.default_headers + list(message.get("headers", [])) if CLOSE_HEADER in self.scope["headers"] and CLOSE_HEADER not in headers: headers = headers + [CLOSE_HEADER] if self.access_log: self.access_logger.info( '%s - "%s %s HTTP/%s" %d', get_client_addr(self.scope), self.scope["method"], get_path_with_query_string(self.scope), self.scope["http_version"], status_code, ) # Write response status line and headers content = [STATUS_LINE[status_code]] for name, value in headers: if HEADER_RE.search(name): raise RuntimeError("Invalid HTTP header name.") if HEADER_VALUE_RE.search(value): raise RuntimeError("Invalid HTTP header value.") name = name.lower() if name == b"content-length" and self.chunked_encoding is None: self.expected_content_length = int(value.decode()) self.chunked_encoding = False elif name == b"transfer-encoding" and value.lower() == b"chunked": self.expected_content_length = 0 self.chunked_encoding = True elif name == b"connection" and value.lower() == b"close": self.keep_alive = False content.extend([name, b": ", value, b"\r\n"]) if ( self.chunked_encoding is None and self.scope["method"] != "HEAD" and status_code not in (204, 304) ): # Neither content-length nor transfer-encoding specified self.chunked_encoding = True content.append(b"transfer-encoding: chunked\r\n") content.append(b"\r\n") self.transport.write(b"".join(content)) elif not self.response_complete: # Sending response body if message_type != "http.response.body": msg = "Expected ASGI message 'http.response.body', but got '%s'." raise RuntimeError(msg % message_type) body = cast(bytes, message.get("body", b"")) more_body = message.get("more_body", False) # Write response body if self.scope["method"] == "HEAD": self.expected_content_length = 0 elif self.chunked_encoding: if body: content = [b"%x\r\n" % len(body), body, b"\r\n"] else: content = [] if not more_body: content.append(b"0\r\n\r\n") self.transport.write(b"".join(content)) else: num_bytes = len(body) if num_bytes > self.expected_content_length: raise RuntimeError("Response content longer than Content-Length") else: self.expected_content_length -= num_bytes self.transport.write(body) # Handle response completion if not more_body: if self.expected_content_length != 0: raise RuntimeError("Response content shorter than Content-Length") self.response_complete = True self.message_event.set() if not self.keep_alive: self.transport.close() self.on_response() else: # Response already sent msg = "Unexpected ASGI message '%s' sent, after response already completed." raise RuntimeError(msg % message_type) async def receive(self) -> "ASGIReceiveEvent": if self.waiting_for_100_continue and not self.transport.is_closing(): self.transport.write(b"HTTP/1.1 100 Continue\r\n\r\n") self.waiting_for_100_continue = False if not self.disconnected and not self.response_complete: self.flow.resume_reading() await self.message_event.wait() self.message_event.clear() message: HTTPDisconnectEvent | HTTPRequestEvent if self.disconnected or self.response_complete: message = {"type": "http.disconnect"} else: message = { "type": "http.request", "body": self.body, "more_body": self.more_body, } self.body = b"" return message uvicorn-0.27.1/uvicorn/protocols/utils.py000066400000000000000000000035231456166335300205300ustar00rootroot00000000000000from __future__ import annotations import asyncio import urllib.parse from uvicorn._types import WWWScope class ClientDisconnected(IOError): ... def get_remote_addr(transport: asyncio.Transport) -> tuple[str, int] | None: socket_info = transport.get_extra_info("socket") if socket_info is not None: try: info = socket_info.getpeername() return (str(info[0]), int(info[1])) if isinstance(info, tuple) else None except OSError: # pragma: no cover # This case appears to inconsistently occur with uvloop # bound to a unix domain socket. return None info = transport.get_extra_info("peername") if info is not None and isinstance(info, (list, tuple)) and len(info) == 2: return (str(info[0]), int(info[1])) return None def get_local_addr(transport: asyncio.Transport) -> tuple[str, int] | None: socket_info = transport.get_extra_info("socket") if socket_info is not None: info = socket_info.getsockname() return (str(info[0]), int(info[1])) if isinstance(info, tuple) else None info = transport.get_extra_info("sockname") if info is not None and isinstance(info, (list, tuple)) and len(info) == 2: return (str(info[0]), int(info[1])) return None def is_ssl(transport: asyncio.Transport) -> bool: return bool(transport.get_extra_info("sslcontext")) def get_client_addr(scope: WWWScope) -> str: client = scope.get("client") if not client: return "" return "%s:%d" % client def get_path_with_query_string(scope: WWWScope) -> str: path_with_query_string = urllib.parse.quote(scope["path"]) if scope["query_string"]: path_with_query_string = "{}?{}".format( path_with_query_string, scope["query_string"].decode("ascii") ) return path_with_query_string uvicorn-0.27.1/uvicorn/protocols/websockets/000077500000000000000000000000001456166335300211645ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/websockets/__init__.py000066400000000000000000000000001456166335300232630ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/protocols/websockets/auto.py000066400000000000000000000010441456166335300225050ustar00rootroot00000000000000import asyncio import typing AutoWebSocketsProtocol: typing.Optional[typing.Callable[..., asyncio.Protocol]] try: import websockets # noqa except ImportError: # pragma: no cover try: import wsproto # noqa except ImportError: AutoWebSocketsProtocol = None else: from uvicorn.protocols.websockets.wsproto_impl import WSProtocol AutoWebSocketsProtocol = WSProtocol else: from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol AutoWebSocketsProtocol = WebSocketProtocol uvicorn-0.27.1/uvicorn/protocols/websockets/websockets_impl.py000066400000000000000000000364161456166335300247420ustar00rootroot00000000000000from __future__ import annotations import asyncio import http import logging from typing import ( Any, List, Literal, Optional, Sequence, Tuple, Union, cast, ) from urllib.parse import unquote import websockets from websockets.datastructures import Headers from websockets.exceptions import ConnectionClosed from websockets.extensions.permessage_deflate import ServerPerMessageDeflateFactory from websockets.legacy.server import HTTPResponse from websockets.server import WebSocketServerProtocol from websockets.typing import Subprotocol from uvicorn._types import ( ASGISendEvent, WebSocketAcceptEvent, WebSocketCloseEvent, WebSocketConnectEvent, WebSocketDisconnectEvent, WebSocketReceiveEvent, WebSocketResponseBodyEvent, WebSocketResponseStartEvent, WebSocketScope, WebSocketSendEvent, ) from uvicorn.config import Config from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.protocols.utils import ( ClientDisconnected, get_local_addr, get_path_with_query_string, get_remote_addr, is_ssl, ) from uvicorn.server import ServerState class Server: closing = False def register(self, ws: WebSocketServerProtocol) -> None: pass def unregister(self, ws: WebSocketServerProtocol) -> None: pass def is_serving(self) -> bool: return not self.closing class WebSocketProtocol(WebSocketServerProtocol): extra_headers: List[Tuple[str, str]] def __init__( self, config: Config, server_state: ServerState, app_state: dict[str, Any], _loop: asyncio.AbstractEventLoop | None = None, ): if not config.loaded: config.load() self.config = config self.app = config.loaded_app self.loop = _loop or asyncio.get_event_loop() self.root_path = config.root_path self.app_state = app_state # Shared server state self.connections = server_state.connections self.tasks = server_state.tasks # Connection state self.transport: asyncio.Transport = None # type: ignore[assignment] self.server: tuple[str, int] | None = None self.client: tuple[str, int] | None = None self.scheme: Literal["wss", "ws"] = None # type: ignore[assignment] # Connection events self.scope: WebSocketScope self.handshake_started_event = asyncio.Event() self.handshake_completed_event = asyncio.Event() self.closed_event = asyncio.Event() self.initial_response: HTTPResponse | None = None self.connect_sent = False self.lost_connection_before_handshake = False self.accepted_subprotocol: Subprotocol | None = None self.ws_server: Server = Server() # type: ignore[assignment] extensions = [] if self.config.ws_per_message_deflate: extensions.append(ServerPerMessageDeflateFactory()) super().__init__( ws_handler=self.ws_handler, ws_server=self.ws_server, # type: ignore[arg-type] max_size=self.config.ws_max_size, max_queue=self.config.ws_max_queue, ping_interval=self.config.ws_ping_interval, ping_timeout=self.config.ws_ping_timeout, extensions=extensions, logger=logging.getLogger("uvicorn.error"), ) self.server_header = None self.extra_headers = [ (name.decode("latin-1"), value.decode("latin-1")) for name, value in server_state.default_headers ] def connection_made( # type: ignore[override] self, transport: asyncio.Transport ) -> None: self.connections.add(self) self.transport = transport self.server = get_local_addr(transport) self.client = get_remote_addr(transport) self.scheme = "wss" if is_ssl(transport) else "ws" if self.logger.isEnabledFor(TRACE_LOG_LEVEL): prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sWebSocket connection made", prefix) super().connection_made(transport) def connection_lost(self, exc: Optional[Exception]) -> None: self.connections.remove(self) if self.logger.isEnabledFor(TRACE_LOG_LEVEL): prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sWebSocket connection lost", prefix) self.lost_connection_before_handshake = ( not self.handshake_completed_event.is_set() ) self.handshake_completed_event.set() super().connection_lost(exc) if exc is None: self.transport.close() def shutdown(self) -> None: self.ws_server.closing = True if self.handshake_completed_event.is_set(): self.fail_connection(1012) else: self.send_500_response() self.transport.close() def on_task_complete(self, task: asyncio.Task) -> None: self.tasks.discard(task) async def process_request( self, path: str, headers: Headers ) -> Optional[HTTPResponse]: """ This hook is called to determine if the websocket should return an HTTP response and close. Our behavior here is to start the ASGI application, and then wait for either `accept` or `close` in order to determine if we should close the connection. """ path_portion, _, query_string = path.partition("?") websockets.legacy.handshake.check_request(headers) subprotocols = [] for header in headers.get_all("Sec-WebSocket-Protocol"): subprotocols.extend([token.strip() for token in header.split(",")]) asgi_headers = [ (name.encode("ascii"), value.encode("ascii", errors="surrogateescape")) for name, value in headers.raw_items() ] path = unquote(path_portion) full_path = self.root_path + path full_raw_path = self.root_path.encode("ascii") + path_portion.encode("ascii") self.scope = { "type": "websocket", "asgi": {"version": self.config.asgi_version, "spec_version": "2.4"}, "http_version": "1.1", "scheme": self.scheme, "server": self.server, "client": self.client, "root_path": self.root_path, "path": full_path, "raw_path": full_raw_path, "query_string": query_string.encode("ascii"), "headers": asgi_headers, "subprotocols": subprotocols, "state": self.app_state.copy(), "extensions": {"websocket.http.response": {}}, } task = self.loop.create_task(self.run_asgi()) task.add_done_callback(self.on_task_complete) self.tasks.add(task) await self.handshake_started_event.wait() return self.initial_response def process_subprotocol( self, headers: Headers, available_subprotocols: Optional[Sequence[Subprotocol]] ) -> Optional[Subprotocol]: """ We override the standard 'process_subprotocol' behavior here so that we return whatever subprotocol is sent in the 'accept' message. """ return self.accepted_subprotocol def send_500_response(self) -> None: msg = b"Internal Server Error" content = [ b"HTTP/1.1 500 Internal Server Error\r\n" b"content-type: text/plain; charset=utf-8\r\n", b"content-length: " + str(len(msg)).encode("ascii") + b"\r\n", b"connection: close\r\n", b"\r\n", msg, ] self.transport.write(b"".join(content)) # Allow handler task to terminate cleanly, as websockets doesn't cancel it by # itself (see https://github.com/encode/uvicorn/issues/920) self.handshake_started_event.set() async def ws_handler( # type: ignore[override] self, protocol: WebSocketServerProtocol, path: str ) -> Any: """ This is the main handler function for the 'websockets' implementation to call into. We just wait for close then return, and instead allow 'send' and 'receive' events to drive the flow. """ self.handshake_completed_event.set() await self.wait_closed() async def run_asgi(self) -> None: """ Wrapper around the ASGI callable, handling exceptions and unexpected termination states. """ try: result = await self.app(self.scope, self.asgi_receive, self.asgi_send) except ClientDisconnected: self.closed_event.set() self.transport.close() except BaseException as exc: self.closed_event.set() msg = "Exception in ASGI application\n" self.logger.error(msg, exc_info=exc) if not self.handshake_started_event.is_set(): self.send_500_response() else: await self.handshake_completed_event.wait() self.transport.close() else: self.closed_event.set() if not self.handshake_started_event.is_set(): msg = "ASGI callable returned without sending handshake." self.logger.error(msg) self.send_500_response() self.transport.close() elif result is not None: msg = "ASGI callable should return None, but returned '%s'." self.logger.error(msg, result) await self.handshake_completed_event.wait() self.transport.close() async def asgi_send(self, message: "ASGISendEvent") -> None: message_type = message["type"] if not self.handshake_started_event.is_set(): if message_type == "websocket.accept": message = cast("WebSocketAcceptEvent", message) self.logger.info( '%s - "WebSocket %s" [accepted]', self.scope["client"], get_path_with_query_string(self.scope), ) self.initial_response = None self.accepted_subprotocol = cast( Optional[Subprotocol], message.get("subprotocol") ) if "headers" in message: self.extra_headers.extend( # ASGI spec requires bytes # But for compatibility we need to convert it to strings (name.decode("latin-1"), value.decode("latin-1")) for name, value in message["headers"] ) self.handshake_started_event.set() elif message_type == "websocket.close": message = cast("WebSocketCloseEvent", message) self.logger.info( '%s - "WebSocket %s" 403', self.scope["client"], get_path_with_query_string(self.scope), ) self.initial_response = (http.HTTPStatus.FORBIDDEN, [], b"") self.handshake_started_event.set() self.closed_event.set() elif message_type == "websocket.http.response.start": message = cast("WebSocketResponseStartEvent", message) self.logger.info( '%s - "WebSocket %s" %d', self.scope["client"], get_path_with_query_string(self.scope), message["status"], ) # websockets requires the status to be an enum. look it up. status = http.HTTPStatus(message["status"]) headers = [ (name.decode("latin-1"), value.decode("latin-1")) for name, value in message.get("headers", []) ] self.initial_response = (status, headers, b"") self.handshake_started_event.set() else: msg = ( "Expected ASGI message 'websocket.accept', 'websocket.close', " "or 'websocket.http.response.start' but got '%s'." ) raise RuntimeError(msg % message_type) elif not self.closed_event.is_set() and self.initial_response is None: await self.handshake_completed_event.wait() try: if message_type == "websocket.send": message = cast("WebSocketSendEvent", message) bytes_data = message.get("bytes") text_data = message.get("text") data = text_data if bytes_data is None else bytes_data await self.send(data) # type: ignore[arg-type] elif message_type == "websocket.close": message = cast("WebSocketCloseEvent", message) code = message.get("code", 1000) reason = message.get("reason", "") or "" await self.close(code, reason) self.closed_event.set() else: msg = ( "Expected ASGI message 'websocket.send' or 'websocket.close'," " but got '%s'." ) raise RuntimeError(msg % message_type) except ConnectionClosed as exc: raise ClientDisconnected from exc elif self.initial_response is not None: if message_type == "websocket.http.response.body": message = cast("WebSocketResponseBodyEvent", message) body = self.initial_response[2] + message["body"] self.initial_response = self.initial_response[:2] + (body,) if not message.get("more_body", False): self.closed_event.set() else: msg = ( "Expected ASGI message 'websocket.http.response.body' " "but got '%s'." ) raise RuntimeError(msg % message_type) else: msg = ( "Unexpected ASGI message '%s', after sending 'websocket.close' " "or response already completed." ) raise RuntimeError(msg % message_type) async def asgi_receive( self, ) -> Union[ "WebSocketDisconnectEvent", "WebSocketConnectEvent", "WebSocketReceiveEvent" ]: if not self.connect_sent: self.connect_sent = True return {"type": "websocket.connect"} await self.handshake_completed_event.wait() if self.lost_connection_before_handshake: # If the handshake failed or the app closed before handshake completion, # use 1006 Abnormal Closure. return {"type": "websocket.disconnect", "code": 1006} if self.closed_event.is_set(): return {"type": "websocket.disconnect", "code": 1005} try: data = await self.recv() except ConnectionClosed as exc: self.closed_event.set() if self.ws_server.closing: return {"type": "websocket.disconnect", "code": 1012} return {"type": "websocket.disconnect", "code": exc.code} if isinstance(data, str): return {"type": "websocket.receive", "text": data} return {"type": "websocket.receive", "bytes": data} uvicorn-0.27.1/uvicorn/protocols/websockets/wsproto_impl.py000066400000000000000000000362411456166335300243020ustar00rootroot00000000000000from __future__ import annotations import asyncio import logging import typing from typing import Literal from urllib.parse import unquote import wsproto from wsproto import ConnectionType, events from wsproto.connection import ConnectionState from wsproto.extensions import Extension, PerMessageDeflate from wsproto.utilities import LocalProtocolError, RemoteProtocolError from uvicorn._types import ( ASGISendEvent, WebSocketAcceptEvent, WebSocketCloseEvent, WebSocketEvent, WebSocketResponseBodyEvent, WebSocketResponseStartEvent, WebSocketScope, WebSocketSendEvent, ) from uvicorn.config import Config from uvicorn.logging import TRACE_LOG_LEVEL from uvicorn.protocols.utils import ( ClientDisconnected, get_local_addr, get_path_with_query_string, get_remote_addr, is_ssl, ) from uvicorn.server import ServerState class WSProtocol(asyncio.Protocol): def __init__( self, config: Config, server_state: ServerState, app_state: dict[str, typing.Any], _loop: asyncio.AbstractEventLoop | None = None, ) -> None: if not config.loaded: config.load() self.config = config self.app = config.loaded_app self.loop = _loop or asyncio.get_event_loop() self.logger = logging.getLogger("uvicorn.error") self.root_path = config.root_path self.app_state = app_state # Shared server state self.connections = server_state.connections self.tasks = server_state.tasks self.default_headers = server_state.default_headers # Connection state self.transport: asyncio.Transport = None # type: ignore[assignment] self.server: tuple[str, int] | None = None self.client: tuple[str, int] | None = None self.scheme: Literal["wss", "ws"] = None # type: ignore[assignment] # WebSocket state self.queue: asyncio.Queue[WebSocketEvent] = asyncio.Queue() self.handshake_complete = False self.close_sent = False # Rejection state self.response_started = False self.conn = wsproto.WSConnection(connection_type=ConnectionType.SERVER) self.read_paused = False self.writable = asyncio.Event() self.writable.set() # Buffers self.bytes = b"" self.text = "" # Protocol interface def connection_made( # type: ignore[override] self, transport: asyncio.Transport ) -> None: self.connections.add(self) self.transport = transport self.server = get_local_addr(transport) self.client = get_remote_addr(transport) self.scheme = "wss" if is_ssl(transport) else "ws" if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sWebSocket connection made", prefix) def connection_lost(self, exc: Exception | None) -> None: code = 1005 if self.handshake_complete else 1006 self.queue.put_nowait({"type": "websocket.disconnect", "code": code}) self.connections.remove(self) if self.logger.level <= TRACE_LOG_LEVEL: prefix = "%s:%d - " % self.client if self.client else "" self.logger.log(TRACE_LOG_LEVEL, "%sWebSocket connection lost", prefix) self.handshake_complete = True if exc is None: self.transport.close() def eof_received(self) -> None: pass def data_received(self, data: bytes) -> None: try: self.conn.receive_data(data) except RemoteProtocolError as err: # TODO: Remove `type: ignore` when wsproto fixes the type annotation. self.transport.write(self.conn.send(err.event_hint)) # type: ignore[arg-type] # noqa: E501 self.transport.close() else: self.handle_events() def handle_events(self) -> None: for event in self.conn.events(): if isinstance(event, events.Request): self.handle_connect(event) elif isinstance(event, events.TextMessage): self.handle_text(event) elif isinstance(event, events.BytesMessage): self.handle_bytes(event) elif isinstance(event, events.CloseConnection): self.handle_close(event) elif isinstance(event, events.Ping): self.handle_ping(event) def pause_writing(self) -> None: """ Called by the transport when the write buffer exceeds the high water mark. """ self.writable.clear() def resume_writing(self) -> None: """ Called by the transport when the write buffer drops below the low water mark. """ self.writable.set() def shutdown(self) -> None: if self.handshake_complete: self.queue.put_nowait({"type": "websocket.disconnect", "code": 1012}) output = self.conn.send(wsproto.events.CloseConnection(code=1012)) self.transport.write(output) else: self.send_500_response() self.transport.close() def on_task_complete(self, task: asyncio.Task) -> None: self.tasks.discard(task) # Event handlers def handle_connect(self, event: events.Request) -> None: headers = [(b"host", event.host.encode())] headers += [(key.lower(), value) for key, value in event.extra_headers] raw_path, _, query_string = event.target.partition("?") path = unquote(raw_path) full_path = self.root_path + path full_raw_path = self.root_path.encode("ascii") + raw_path.encode("ascii") self.scope: "WebSocketScope" = { "type": "websocket", "asgi": {"version": self.config.asgi_version, "spec_version": "2.4"}, "http_version": "1.1", "scheme": self.scheme, "server": self.server, "client": self.client, "root_path": self.root_path, "path": full_path, "raw_path": full_raw_path, "query_string": query_string.encode("ascii"), "headers": headers, "subprotocols": event.subprotocols, "state": self.app_state.copy(), "extensions": {"websocket.http.response": {}}, } self.queue.put_nowait({"type": "websocket.connect"}) task = self.loop.create_task(self.run_asgi()) task.add_done_callback(self.on_task_complete) self.tasks.add(task) def handle_text(self, event: events.TextMessage) -> None: self.text += event.data if event.message_finished: self.queue.put_nowait({"type": "websocket.receive", "text": self.text}) self.text = "" if not self.read_paused: self.read_paused = True self.transport.pause_reading() def handle_bytes(self, event: events.BytesMessage) -> None: self.bytes += event.data # todo: we may want to guard the size of self.bytes and self.text if event.message_finished: self.queue.put_nowait({"type": "websocket.receive", "bytes": self.bytes}) self.bytes = b"" if not self.read_paused: self.read_paused = True self.transport.pause_reading() def handle_close(self, event: events.CloseConnection) -> None: if self.conn.state == ConnectionState.REMOTE_CLOSING: self.transport.write(self.conn.send(event.response())) self.queue.put_nowait({"type": "websocket.disconnect", "code": event.code}) self.transport.close() def handle_ping(self, event: events.Ping) -> None: self.transport.write(self.conn.send(event.response())) def send_500_response(self) -> None: if self.response_started or self.handshake_complete: return # we cannot send responses anymore headers = [ (b"content-type", b"text/plain; charset=utf-8"), (b"connection", b"close"), ] output = self.conn.send( wsproto.events.RejectConnection( status_code=500, headers=headers, has_body=True ) ) output += self.conn.send( wsproto.events.RejectData(data=b"Internal Server Error") ) self.transport.write(output) async def run_asgi(self) -> None: try: result = await self.app(self.scope, self.receive, self.send) except ClientDisconnected: self.transport.close() except BaseException: self.logger.exception("Exception in ASGI application\n") self.send_500_response() self.transport.close() else: if not self.handshake_complete: msg = "ASGI callable returned without completing handshake." self.logger.error(msg) self.send_500_response() self.transport.close() elif result is not None: msg = "ASGI callable should return None, but returned '%s'." self.logger.error(msg, result) self.transport.close() async def send(self, message: ASGISendEvent) -> None: await self.writable.wait() message_type = message["type"] if not self.handshake_complete: if message_type == "websocket.accept": message = typing.cast(WebSocketAcceptEvent, message) self.logger.info( '%s - "WebSocket %s" [accepted]', self.scope["client"], get_path_with_query_string(self.scope), ) subprotocol = message.get("subprotocol") extra_headers = self.default_headers + list(message.get("headers", [])) extensions: typing.List[Extension] = [] if self.config.ws_per_message_deflate: extensions.append(PerMessageDeflate()) if not self.transport.is_closing(): self.handshake_complete = True output = self.conn.send( wsproto.events.AcceptConnection( subprotocol=subprotocol, extensions=extensions, extra_headers=extra_headers, ) ) self.transport.write(output) elif message_type == "websocket.close": self.queue.put_nowait({"type": "websocket.disconnect", "code": 1006}) self.logger.info( '%s - "WebSocket %s" 403', self.scope["client"], get_path_with_query_string(self.scope), ) self.handshake_complete = True self.close_sent = True event = events.RejectConnection(status_code=403, headers=[]) output = self.conn.send(event) self.transport.write(output) self.transport.close() elif message_type == "websocket.http.response.start": message = typing.cast(WebSocketResponseStartEvent, message) # ensure status code is in the valid range if not (100 <= message["status"] < 600): msg = "Invalid HTTP status code '%d' in response." raise RuntimeError(msg % message["status"]) self.logger.info( '%s - "WebSocket %s" %d', self.scope["client"], get_path_with_query_string(self.scope), message["status"], ) self.handshake_complete = True event = events.RejectConnection( status_code=message["status"], headers=list(message["headers"]), has_body=True, ) output = self.conn.send(event) self.transport.write(output) self.response_started = True else: msg = ( "Expected ASGI message 'websocket.accept', 'websocket.close' " "or 'websocket.http.response.start' " "but got '%s'." ) raise RuntimeError(msg % message_type) elif not self.close_sent and not self.response_started: try: if message_type == "websocket.send": message = typing.cast(WebSocketSendEvent, message) bytes_data = message.get("bytes") text_data = message.get("text") data = text_data if bytes_data is None else bytes_data output = self.conn.send(wsproto.events.Message(data=data)) # type: ignore if not self.transport.is_closing(): self.transport.write(output) elif message_type == "websocket.close": message = typing.cast(WebSocketCloseEvent, message) self.close_sent = True code = message.get("code", 1000) reason = message.get("reason", "") or "" self.queue.put_nowait( {"type": "websocket.disconnect", "code": code} ) output = self.conn.send( wsproto.events.CloseConnection(code=code, reason=reason) ) if not self.transport.is_closing(): self.transport.write(output) self.transport.close() else: msg = ( "Expected ASGI message 'websocket.send' or 'websocket.close'," " but got '%s'." ) raise RuntimeError(msg % message_type) except LocalProtocolError as exc: raise ClientDisconnected from exc elif self.response_started: if message_type == "websocket.http.response.body": message = typing.cast("WebSocketResponseBodyEvent", message) body_finished = not message.get("more_body", False) reject_data = events.RejectData( data=message["body"], body_finished=body_finished ) output = self.conn.send(reject_data) self.transport.write(output) if body_finished: self.queue.put_nowait( {"type": "websocket.disconnect", "code": 1006} ) self.close_sent = True self.transport.close() else: msg = ( "Expected ASGI message 'websocket.http.response.body' " "but got '%s'." ) raise RuntimeError(msg % message_type) else: msg = "Unexpected ASGI message '%s', after sending 'websocket.close'." raise RuntimeError(msg % message_type) async def receive(self) -> WebSocketEvent: message = await self.queue.get() if self.read_paused and self.queue.empty(): self.read_paused = False self.transport.resume_reading() return message uvicorn-0.27.1/uvicorn/py.typed000066400000000000000000000000011456166335300164550ustar00rootroot00000000000000 uvicorn-0.27.1/uvicorn/server.py000066400000000000000000000277271456166335300166660ustar00rootroot00000000000000from __future__ import annotations import asyncio import logging import os import platform import signal import socket import sys import threading import time from email.utils import formatdate from types import FrameType from typing import TYPE_CHECKING, Sequence, Union import click from uvicorn.config import Config if TYPE_CHECKING: from uvicorn.protocols.http.h11_impl import H11Protocol from uvicorn.protocols.http.httptools_impl import HttpToolsProtocol from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol from uvicorn.protocols.websockets.wsproto_impl import WSProtocol Protocols = Union[H11Protocol, HttpToolsProtocol, WSProtocol, WebSocketProtocol] HANDLED_SIGNALS = ( signal.SIGINT, # Unix signal 2. Sent by Ctrl+C. signal.SIGTERM, # Unix signal 15. Sent by `kill `. ) if sys.platform == "win32": # pragma: py-not-win32 HANDLED_SIGNALS += (signal.SIGBREAK,) # Windows signal 21. Sent by Ctrl+Break. logger = logging.getLogger("uvicorn.error") class ServerState: """ Shared servers state that is available between all protocol instances. """ def __init__(self) -> None: self.total_requests = 0 self.connections: set[Protocols] = set() self.tasks: set[asyncio.Task[None]] = set() self.default_headers: list[tuple[bytes, bytes]] = [] class Server: def __init__(self, config: Config) -> None: self.config = config self.server_state = ServerState() self.started = False self.should_exit = False self.force_exit = False self.last_notified = 0.0 def run(self, sockets: list[socket.socket] | None = None) -> None: self.config.setup_event_loop() return asyncio.run(self.serve(sockets=sockets)) async def serve(self, sockets: list[socket.socket] | None = None) -> None: process_id = os.getpid() config = self.config if not config.loaded: config.load() self.lifespan = config.lifespan_class(config) self.install_signal_handlers() message = "Started server process [%d]" color_message = "Started server process [" + click.style("%d", fg="cyan") + "]" logger.info(message, process_id, extra={"color_message": color_message}) await self.startup(sockets=sockets) if self.should_exit: return await self.main_loop() await self.shutdown(sockets=sockets) message = "Finished server process [%d]" color_message = "Finished server process [" + click.style("%d", fg="cyan") + "]" logger.info(message, process_id, extra={"color_message": color_message}) async def startup(self, sockets: list[socket.socket] | None = None) -> None: await self.lifespan.startup() if self.lifespan.should_exit: self.should_exit = True return config = self.config def create_protocol( _loop: asyncio.AbstractEventLoop | None = None, ) -> asyncio.Protocol: return config.http_protocol_class( # type: ignore[call-arg] config=config, server_state=self.server_state, app_state=self.lifespan.state, _loop=_loop, ) loop = asyncio.get_running_loop() listeners: Sequence[socket.SocketType] if sockets is not None: # Explicitly passed a list of open sockets. # We use this when the server is run from a Gunicorn worker. def _share_socket( sock: socket.SocketType, ) -> socket.SocketType: # pragma py-linux pragma: py-darwin # Windows requires the socket be explicitly shared across # multiple workers (processes). from socket import fromshare # type: ignore[attr-defined] sock_data = sock.share(os.getpid()) # type: ignore[attr-defined] return fromshare(sock_data) self.servers: list[asyncio.base_events.Server] = [] for sock in sockets: is_windows = platform.system() == "Windows" if config.workers > 1 and is_windows: # pragma: py-not-win32 sock = _share_socket(sock) # type: ignore[assignment] server = await loop.create_server( create_protocol, sock=sock, ssl=config.ssl, backlog=config.backlog ) self.servers.append(server) listeners = sockets elif config.fd is not None: # pragma: py-win32 # Use an existing socket, from a file descriptor. sock = socket.fromfd(config.fd, socket.AF_UNIX, socket.SOCK_STREAM) server = await loop.create_server( create_protocol, sock=sock, ssl=config.ssl, backlog=config.backlog ) assert server.sockets is not None # mypy listeners = server.sockets self.servers = [server] elif config.uds is not None: # pragma: py-win32 # Create a socket using UNIX domain socket. uds_perms = 0o666 if os.path.exists(config.uds): uds_perms = os.stat(config.uds).st_mode server = await loop.create_unix_server( create_protocol, path=config.uds, ssl=config.ssl, backlog=config.backlog ) os.chmod(config.uds, uds_perms) assert server.sockets is not None # mypy listeners = server.sockets self.servers = [server] else: # Standard case. Create a socket from a host/port pair. try: server = await loop.create_server( create_protocol, host=config.host, port=config.port, ssl=config.ssl, backlog=config.backlog, ) except OSError as exc: logger.error(exc) await self.lifespan.shutdown() sys.exit(1) assert server.sockets is not None listeners = server.sockets self.servers = [server] if sockets is None: self._log_started_message(listeners) else: # We're most likely running multiple workers, so a message has already been # logged by `config.bind_socket()`. pass self.started = True def _log_started_message(self, listeners: Sequence[socket.SocketType]) -> None: config = self.config if config.fd is not None: # pragma: py-win32 sock = listeners[0] logger.info( "Uvicorn running on socket %s (Press CTRL+C to quit)", sock.getsockname(), ) elif config.uds is not None: # pragma: py-win32 logger.info( "Uvicorn running on unix socket %s (Press CTRL+C to quit)", config.uds ) else: addr_format = "%s://%s:%d" host = "0.0.0.0" if config.host is None else config.host if ":" in host: # It's an IPv6 address. addr_format = "%s://[%s]:%d" port = config.port if port == 0: port = listeners[0].getsockname()[1] protocol_name = "https" if config.ssl else "http" message = f"Uvicorn running on {addr_format} (Press CTRL+C to quit)" color_message = ( "Uvicorn running on " + click.style(addr_format, bold=True) + " (Press CTRL+C to quit)" ) logger.info( message, protocol_name, host, port, extra={"color_message": color_message}, ) async def main_loop(self) -> None: counter = 0 should_exit = await self.on_tick(counter) while not should_exit: counter += 1 counter = counter % 864000 await asyncio.sleep(0.1) should_exit = await self.on_tick(counter) async def on_tick(self, counter: int) -> bool: # Update the default headers, once per second. if counter % 10 == 0: current_time = time.time() current_date = formatdate(current_time, usegmt=True).encode() if self.config.date_header: date_header = [(b"date", current_date)] else: date_header = [] self.server_state.default_headers = ( date_header + self.config.encoded_headers ) # Callback to `callback_notify` once every `timeout_notify` seconds. if self.config.callback_notify is not None: if current_time - self.last_notified > self.config.timeout_notify: self.last_notified = current_time await self.config.callback_notify() # Determine if we should exit. if self.should_exit: return True if self.config.limit_max_requests is not None: return self.server_state.total_requests >= self.config.limit_max_requests return False async def shutdown(self, sockets: list[socket.socket] | None = None) -> None: logger.info("Shutting down") # Stop accepting new connections. for server in self.servers: server.close() for sock in sockets or []: sock.close() # Request shutdown on all existing connections. for connection in list(self.server_state.connections): connection.shutdown() await asyncio.sleep(0.1) # When 3.10 is not supported anymore, use `async with asyncio.timeout(...):`. try: await asyncio.wait_for( self._wait_tasks_to_complete(), timeout=self.config.timeout_graceful_shutdown, ) except asyncio.TimeoutError: logger.error( "Cancel %s running task(s), timeout graceful shutdown exceeded", len(self.server_state.tasks), ) for t in self.server_state.tasks: if sys.version_info < (3, 9): # pragma: py-gte-39 t.cancel() else: # pragma: py-lt-39 t.cancel(msg="Task cancelled, timeout graceful shutdown exceeded") # Send the lifespan shutdown event, and wait for application shutdown. if not self.force_exit: await self.lifespan.shutdown() async def _wait_tasks_to_complete(self) -> None: # Wait for existing connections to finish sending responses. if self.server_state.connections and not self.force_exit: msg = "Waiting for connections to close. (CTRL+C to force quit)" logger.info(msg) while self.server_state.connections and not self.force_exit: await asyncio.sleep(0.1) # Wait for existing tasks to complete. if self.server_state.tasks and not self.force_exit: msg = "Waiting for background tasks to complete. (CTRL+C to force quit)" logger.info(msg) while self.server_state.tasks and not self.force_exit: await asyncio.sleep(0.1) for server in self.servers: await server.wait_closed() def install_signal_handlers(self) -> None: if threading.current_thread() is not threading.main_thread(): # Signals can only be listened to from the main thread. return loop = asyncio.get_event_loop() try: for sig in HANDLED_SIGNALS: loop.add_signal_handler(sig, self.handle_exit, sig, None) except NotImplementedError: # pragma: no cover # Windows for sig in HANDLED_SIGNALS: signal.signal(sig, self.handle_exit) def handle_exit(self, sig: int, frame: FrameType | None) -> None: if self.should_exit and sig == signal.SIGINT: self.force_exit = True else: self.should_exit = True uvicorn-0.27.1/uvicorn/supervisors/000077500000000000000000000000001456166335300173735ustar00rootroot00000000000000uvicorn-0.27.1/uvicorn/supervisors/__init__.py000066400000000000000000000012361456166335300215060ustar00rootroot00000000000000from typing import TYPE_CHECKING, Type from uvicorn.supervisors.basereload import BaseReload from uvicorn.supervisors.multiprocess import Multiprocess if TYPE_CHECKING: ChangeReload: Type[BaseReload] else: try: from uvicorn.supervisors.watchfilesreload import ( WatchFilesReload as ChangeReload, ) except ImportError: # pragma: no cover try: from uvicorn.supervisors.watchgodreload import ( WatchGodReload as ChangeReload, ) except ImportError: from uvicorn.supervisors.statreload import StatReload as ChangeReload __all__ = ["Multiprocess", "ChangeReload"] uvicorn-0.27.1/uvicorn/supervisors/basereload.py000066400000000000000000000075241456166335300220560ustar00rootroot00000000000000from __future__ import annotations import logging import os import signal import sys import threading from pathlib import Path from socket import socket from types import FrameType from typing import Callable, Iterator import click from uvicorn._subprocess import get_subprocess from uvicorn.config import Config HANDLED_SIGNALS = ( signal.SIGINT, # Unix signal 2. Sent by Ctrl+C. signal.SIGTERM, # Unix signal 15. Sent by `kill `. ) logger = logging.getLogger("uvicorn.error") class BaseReload: def __init__( self, config: Config, target: Callable[[list[socket] | None], None], sockets: list[socket], ) -> None: self.config = config self.target = target self.sockets = sockets self.should_exit = threading.Event() self.pid = os.getpid() self.is_restarting = False self.reloader_name: str | None = None def signal_handler(self, sig: int, frame: FrameType | None) -> None: """ A signal handler that is registered with the parent process. """ if sys.platform == "win32" and self.is_restarting: self.is_restarting = False # pragma: py-not-win32 else: self.should_exit.set() # pragma: py-win32 def run(self) -> None: self.startup() for changes in self: if changes: logger.warning( "%s detected changes in %s. Reloading...", self.reloader_name, ", ".join(map(_display_path, changes)), ) self.restart() self.shutdown() def pause(self) -> None: if self.should_exit.wait(self.config.reload_delay): raise StopIteration() def __iter__(self) -> Iterator[list[Path] | None]: return self def __next__(self) -> list[Path] | None: return self.should_restart() def startup(self) -> None: message = f"Started reloader process [{self.pid}] using {self.reloader_name}" color_message = "Started reloader process [{}] using {}".format( click.style(str(self.pid), fg="cyan", bold=True), click.style(str(self.reloader_name), fg="cyan", bold=True), ) logger.info(message, extra={"color_message": color_message}) for sig in HANDLED_SIGNALS: signal.signal(sig, self.signal_handler) self.process = get_subprocess( config=self.config, target=self.target, sockets=self.sockets ) self.process.start() def restart(self) -> None: if sys.platform == "win32": # pragma: py-not-win32 self.is_restarting = True assert self.process.pid is not None os.kill(self.process.pid, signal.CTRL_C_EVENT) else: # pragma: py-win32 self.process.terminate() self.process.join() self.process = get_subprocess( config=self.config, target=self.target, sockets=self.sockets ) self.process.start() def shutdown(self) -> None: if sys.platform == "win32": self.should_exit.set() # pragma: py-not-win32 else: self.process.terminate() # pragma: py-win32 self.process.join() for sock in self.sockets: sock.close() message = "Stopping reloader process [{}]".format(str(self.pid)) color_message = "Stopping reloader process [{}]".format( click.style(str(self.pid), fg="cyan", bold=True) ) logger.info(message, extra={"color_message": color_message}) def should_restart(self) -> list[Path] | None: raise NotImplementedError("Reload strategies should override should_restart()") def _display_path(path: Path) -> str: try: return f"'{path.relative_to(Path.cwd())}'" except ValueError: return f"'{path}'" uvicorn-0.27.1/uvicorn/supervisors/multiprocess.py000066400000000000000000000043061456166335300225010ustar00rootroot00000000000000from __future__ import annotations import logging import os import signal import threading from multiprocessing.context import SpawnProcess from socket import socket from types import FrameType from typing import Callable import click from uvicorn._subprocess import get_subprocess from uvicorn.config import Config HANDLED_SIGNALS = ( signal.SIGINT, # Unix signal 2. Sent by Ctrl+C. signal.SIGTERM, # Unix signal 15. Sent by `kill `. ) logger = logging.getLogger("uvicorn.error") class Multiprocess: def __init__( self, config: Config, target: Callable[[list[socket] | None], None], sockets: list[socket], ) -> None: self.config = config self.target = target self.sockets = sockets self.processes: list[SpawnProcess] = [] self.should_exit = threading.Event() self.pid = os.getpid() def signal_handler(self, sig: int, frame: FrameType | None) -> None: """ A signal handler that is registered with the parent process. """ self.should_exit.set() def run(self) -> None: self.startup() self.should_exit.wait() self.shutdown() def startup(self) -> None: message = "Started parent process [{}]".format(str(self.pid)) color_message = "Started parent process [{}]".format( click.style(str(self.pid), fg="cyan", bold=True) ) logger.info(message, extra={"color_message": color_message}) for sig in HANDLED_SIGNALS: signal.signal(sig, self.signal_handler) for _idx in range(self.config.workers): process = get_subprocess( config=self.config, target=self.target, sockets=self.sockets ) process.start() self.processes.append(process) def shutdown(self) -> None: for process in self.processes: process.terminate() process.join() message = "Stopping parent process [{}]".format(str(self.pid)) color_message = "Stopping parent process [{}]".format( click.style(str(self.pid), fg="cyan", bold=True) ) logger.info(message, extra={"color_message": color_message}) uvicorn-0.27.1/uvicorn/supervisors/statreload.py000066400000000000000000000030641456166335300221120ustar00rootroot00000000000000from __future__ import annotations import logging from pathlib import Path from socket import socket from typing import Callable, Iterator from uvicorn.config import Config from uvicorn.supervisors.basereload import BaseReload logger = logging.getLogger("uvicorn.error") class StatReload(BaseReload): def __init__( self, config: Config, target: Callable[[list[socket] | None], None], sockets: list[socket], ) -> None: super().__init__(config, target, sockets) self.reloader_name = "StatReload" self.mtimes: dict[Path, float] = {} if config.reload_excludes or config.reload_includes: logger.warning( "--reload-include and --reload-exclude have no effect unless " "watchfiles is installed." ) def should_restart(self) -> list[Path] | None: self.pause() for file in self.iter_py_files(): try: mtime = file.stat().st_mtime except OSError: # pragma: nocover continue old_time = self.mtimes.get(file) if old_time is None: self.mtimes[file] = mtime continue elif mtime > old_time: return [file] return None def restart(self) -> None: self.mtimes = {} return super().restart() def iter_py_files(self) -> Iterator[Path]: for reload_dir in self.config.reload_dirs: for path in list(reload_dir.rglob("*.py")): yield path.resolve() uvicorn-0.27.1/uvicorn/supervisors/watchfilesreload.py000066400000000000000000000057231456166335300232740ustar00rootroot00000000000000from __future__ import annotations from pathlib import Path from socket import socket from typing import Callable from watchfiles import watch from uvicorn.config import Config from uvicorn.supervisors.basereload import BaseReload class FileFilter: def __init__(self, config: Config): default_includes = ["*.py"] self.includes = [ default for default in default_includes if default not in config.reload_excludes ] self.includes.extend(config.reload_includes) self.includes = list(set(self.includes)) default_excludes = [".*", ".py[cod]", ".sw.*", "~*"] self.excludes = [ default for default in default_excludes if default not in config.reload_includes ] self.exclude_dirs = [] for e in config.reload_excludes: p = Path(e) try: is_dir = p.is_dir() except OSError: # pragma: no cover # gets raised on Windows for values like "*.py" is_dir = False if is_dir: self.exclude_dirs.append(p) else: self.excludes.append(e) self.excludes = list(set(self.excludes)) def __call__(self, path: Path) -> bool: for include_pattern in self.includes: if path.match(include_pattern): if str(path).endswith(include_pattern): return True for exclude_dir in self.exclude_dirs: if exclude_dir in path.parents: return False for exclude_pattern in self.excludes: if path.match(exclude_pattern): return False return True return False class WatchFilesReload(BaseReload): def __init__( self, config: Config, target: Callable[[list[socket] | None], None], sockets: list[socket], ) -> None: super().__init__(config, target, sockets) self.reloader_name = "WatchFiles" self.reload_dirs = [] for directory in config.reload_dirs: if Path.cwd() not in directory.parents: self.reload_dirs.append(directory) if Path.cwd() not in self.reload_dirs: self.reload_dirs.append(Path.cwd()) self.watch_filter = FileFilter(config) self.watcher = watch( *self.reload_dirs, watch_filter=None, stop_event=self.should_exit, # using yield_on_timeout here mostly to make sure tests don't # hang forever, won't affect the class's behavior yield_on_timeout=True, ) def should_restart(self) -> list[Path] | None: self.pause() changes = next(self.watcher) if changes: unique_paths = {Path(c[1]) for c in changes} return [p for p in unique_paths if self.watch_filter(p)] return None uvicorn-0.27.1/uvicorn/supervisors/watchgodreload.py000066400000000000000000000130061456166335300227340ustar00rootroot00000000000000from __future__ import annotations import logging import warnings from pathlib import Path from socket import socket from typing import TYPE_CHECKING, Callable from watchgod import DefaultWatcher from uvicorn.config import Config from uvicorn.supervisors.basereload import BaseReload if TYPE_CHECKING: import os DirEntry = os.DirEntry[str] logger = logging.getLogger("uvicorn.error") class CustomWatcher(DefaultWatcher): def __init__(self, root_path: Path, config: Config): default_includes = ["*.py"] self.includes = [ default for default in default_includes if default not in config.reload_excludes ] self.includes.extend(config.reload_includes) self.includes = list(set(self.includes)) default_excludes = [".*", ".py[cod]", ".sw.*", "~*"] self.excludes = [ default for default in default_excludes if default not in config.reload_includes ] self.excludes.extend(config.reload_excludes) self.excludes = list(set(self.excludes)) self.watched_dirs: dict[str, bool] = {} self.watched_files: dict[str, bool] = {} self.dirs_includes = set(config.reload_dirs) self.dirs_excludes = set(config.reload_dirs_excludes) self.resolved_root = root_path super().__init__(str(root_path)) def should_watch_file(self, entry: "DirEntry") -> bool: cached_result = self.watched_files.get(entry.path) if cached_result is not None: return cached_result entry_path = Path(entry) # cwd is not verified through should_watch_dir, so we need to verify here if entry_path.parent == Path.cwd() and Path.cwd() not in self.dirs_includes: self.watched_files[entry.path] = False return False for include_pattern in self.includes: if str(entry_path).endswith(include_pattern): self.watched_files[entry.path] = True return True if entry_path.match(include_pattern): for exclude_pattern in self.excludes: if entry_path.match(exclude_pattern): self.watched_files[entry.path] = False return False self.watched_files[entry.path] = True return True self.watched_files[entry.path] = False return False def should_watch_dir(self, entry: "DirEntry") -> bool: cached_result = self.watched_dirs.get(entry.path) if cached_result is not None: return cached_result entry_path = Path(entry) if entry_path in self.dirs_excludes: self.watched_dirs[entry.path] = False return False for exclude_pattern in self.excludes: if entry_path.match(exclude_pattern): is_watched = False if entry_path in self.dirs_includes: is_watched = True for directory in self.dirs_includes: if directory in entry_path.parents: is_watched = True if is_watched: logger.debug( "WatchGodReload detected a new excluded dir '%s' in '%s'; " "Adding to exclude list.", entry_path.relative_to(self.resolved_root), str(self.resolved_root), ) self.watched_dirs[entry.path] = False self.dirs_excludes.add(entry_path) return False if entry_path in self.dirs_includes: self.watched_dirs[entry.path] = True return True for directory in self.dirs_includes: if directory in entry_path.parents: self.watched_dirs[entry.path] = True return True for include_pattern in self.includes: if entry_path.match(include_pattern): logger.info( "WatchGodReload detected a new reload dir '%s' in '%s'; " "Adding to watch list.", str(entry_path.relative_to(self.resolved_root)), str(self.resolved_root), ) self.dirs_includes.add(entry_path) self.watched_dirs[entry.path] = True return True self.watched_dirs[entry.path] = False return False class WatchGodReload(BaseReload): def __init__( self, config: Config, target: Callable[[list[socket] | None], None], sockets: list[socket], ) -> None: warnings.warn( '"watchgod" is deprecated, you should switch ' "to watchfiles (`pip install watchfiles`).", DeprecationWarning, ) super().__init__(config, target, sockets) self.reloader_name = "WatchGod" self.watchers = [] reload_dirs = [] for directory in config.reload_dirs: if Path.cwd() not in directory.parents: reload_dirs.append(directory) if Path.cwd() not in reload_dirs: reload_dirs.append(Path.cwd()) for w in reload_dirs: self.watchers.append(CustomWatcher(w.resolve(), self.config)) def should_restart(self) -> list[Path] | None: self.pause() for watcher in self.watchers: change = watcher.check() if change != set(): return list({Path(c[1]) for c in change}) return None uvicorn-0.27.1/uvicorn/workers.py000066400000000000000000000071331456166335300170410ustar00rootroot00000000000000import asyncio import logging import signal import sys from typing import Any, Dict from gunicorn.arbiter import Arbiter from gunicorn.workers.base import Worker from uvicorn.config import Config from uvicorn.main import Server class UvicornWorker(Worker): """ A worker class for Gunicorn that interfaces with an ASGI consumer callable, rather than a WSGI callable. """ CONFIG_KWARGS: Dict[str, Any] = {"loop": "auto", "http": "auto"} def __init__(self, *args: Any, **kwargs: Any) -> None: super(UvicornWorker, self).__init__(*args, **kwargs) logger = logging.getLogger("uvicorn.error") logger.handlers = self.log.error_log.handlers logger.setLevel(self.log.error_log.level) logger.propagate = False logger = logging.getLogger("uvicorn.access") logger.handlers = self.log.access_log.handlers logger.setLevel(self.log.access_log.level) logger.propagate = False config_kwargs: dict = { "app": None, "log_config": None, "timeout_keep_alive": self.cfg.keepalive, "timeout_notify": self.timeout, "callback_notify": self.callback_notify, "limit_max_requests": self.max_requests, "forwarded_allow_ips": self.cfg.forwarded_allow_ips, } if self.cfg.is_ssl: ssl_kwargs = { "ssl_keyfile": self.cfg.ssl_options.get("keyfile"), "ssl_certfile": self.cfg.ssl_options.get("certfile"), "ssl_keyfile_password": self.cfg.ssl_options.get("password"), "ssl_version": self.cfg.ssl_options.get("ssl_version"), "ssl_cert_reqs": self.cfg.ssl_options.get("cert_reqs"), "ssl_ca_certs": self.cfg.ssl_options.get("ca_certs"), "ssl_ciphers": self.cfg.ssl_options.get("ciphers"), } config_kwargs.update(ssl_kwargs) if self.cfg.settings["backlog"].value: config_kwargs["backlog"] = self.cfg.settings["backlog"].value config_kwargs.update(self.CONFIG_KWARGS) self.config = Config(**config_kwargs) def init_process(self) -> None: self.config.setup_event_loop() super(UvicornWorker, self).init_process() def init_signals(self) -> None: # Reset signals so Gunicorn doesn't swallow subprocess return codes # other signals are set up by Server.install_signal_handlers() # See: https://github.com/encode/uvicorn/issues/894 for s in self.SIGNALS: signal.signal(s, signal.SIG_DFL) signal.signal(signal.SIGUSR1, self.handle_usr1) # Don't let SIGUSR1 disturb active requests by interrupting system calls signal.siginterrupt(signal.SIGUSR1, False) def _install_sigquit_handler(self) -> None: """Install a SIGQUIT handler on workers. - https://github.com/encode/uvicorn/issues/1116 - https://github.com/benoitc/gunicorn/issues/2604 """ loop = asyncio.get_running_loop() loop.add_signal_handler(signal.SIGQUIT, self.handle_exit, signal.SIGQUIT, None) async def _serve(self) -> None: self.config.app = self.wsgi server = Server(config=self.config) self._install_sigquit_handler() await server.serve(sockets=self.sockets) if not server.started: sys.exit(Arbiter.WORKER_BOOT_ERROR) def run(self) -> None: return asyncio.run(self._serve()) async def callback_notify(self) -> None: self.notify() class UvicornH11Worker(UvicornWorker): CONFIG_KWARGS = {"loop": "asyncio", "http": "h11"}