././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1737616545.751361 restrictedpython-8.0/0000755000076600000240000000000014744366242014512 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/.pre-commit-config.yaml0000644000076600000240000000132714744366240020774 0ustar00m.howitzstaff# Generated from: # https://github.com/zopefoundation/meta/tree/master/config/pure-python minimum_pre_commit_version: '3.6' repos: - repo: https://github.com/pycqa/isort rev: "5.13.2" hooks: - id: isort - repo: https://github.com/hhatto/autopep8 rev: "v2.3.1" hooks: - id: autopep8 args: [--in-place, --aggressive, --aggressive] - repo: https://github.com/asottile/pyupgrade rev: v3.19.0 hooks: - id: pyupgrade args: [--py39-plus] - repo: https://github.com/isidentical/teyit rev: 0.4.3 hooks: - id: teyit - repo: https://github.com/PyCQA/flake8 rev: "7.1.1" hooks: - id: flake8 additional_dependencies: - flake8-debugger == 4.1.2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/.readthedocs.yaml0000644000076600000240000000123514744366240017740 0ustar00m.howitzstaff# Generated from: # https://github.com/zopefoundation/meta/tree/master/config/pure-python # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-22.04 tools: python: "3.11" # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py # We recommend specifying your dependencies to enable reproducible builds: # https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - requirements: docs/requirements.txt - method: pip path: . ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/CHANGES.rst0000644000076600000240000002244514744366240016321 0ustar00m.howitzstaffChanges ======= 8.0 (2025-01-23) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Disallow ``try/except*`` clauses due to a possible sandbox escape and probable uselessness of this feature in the context of ``RestrictedPython``. In addition, remove ``ExceptionGroup`` from ``safe_builtins`` (as useful only with ``try/except*``). - This feature was introduced into ``RestrictedPython`` in version 6.0 for Python 3.11+. (CVE-2025-22153) - Drop support for Python 3.8. Features ++++++++ - Update setuptools version pin. (`#292 `_) 7.4 (2024-10-09) ---------------- - Allow to use the package with Python 3.13. - Drop support for Python 3.7. - Provide new function ``RestrictedPython.Guards.safer_getattr_raise``. It is similar to ``safer_getattr`` but handles its parameter ``default`` like ``getattr``, i.e. it raises ``AttributeError`` if the attribute lookup fails and this parameter is not provided, fixes `#287 `_. 7.3 (2024-09-30) ---------------- - Increase the safety level of ``safer_getattr`` allowing applications to use it as ``getattr`` implementation. Such use should now follow the same policy and give the same level of protection as direct attribute access in an environment based on ``RestrictedPython``'s ``safe_builtints``. - Prevent information leakage via ``AttributeError.obj`` and the ``string`` module. (CVE-2024-47532) 7.2 (2024-08-02) ---------------- - Remove unneeded setuptools fossils that may cause installation problems with recent setuptools versions. - Add support for single mode statements / execution. - Fix a potential breakout capability in the provided ``safer_getattr`` method that is part of the ``safer_builtins``. 7.1 (2024-03-14) ---------------- - Add support for the matmul (``@``) operator. 7.0 (2023-11-17) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 3.6. Features ++++++++ - Officially support Python 3.12. Fixes +++++ - Prevent DeprecationWarnings from ``ast.Str`` and ``ast.Num`` on Python 3.12 - Forbid using some attributes providing access to restricted Python internals. (CVE-2023-37271) - Fix information disclosure problems through Python's "format" functionality (``format`` and ``format_map`` methods on ``str`` and its instances, ``string.Formatter``). (CVE-2023-41039) 6.0 (2022-11-03) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 2.7 and 3.5. Features ++++++++ - Officially support Python 3.11. - Allow to use the Python 3.11 feature of exception groups and except\* (PEP 654). 5.2 (2021-11-19) ---------------- - Document that ``__name__`` is needed to define classes. - Add support for Python 3.10. Auditing the Python 3.10 change log did not reveal any changes which require actions in RestrictedPython. - Avoid deprecation warnings when using Python 3.8+. (`#192 `_) 5.1 (2020-10-07) ---------------- Features ++++++++ - Add support for (Python 3.8+) assignment expressions (i.e. the ``:=`` operator) - Add support for Python 3.9 after checking the security implications of the syntax changes made in that version. - Add support for the ``bytes`` and ``sorted`` builtins (`#186 `_) Documentation +++++++++++++ - Document parameter ``mode`` for the ``compile_restricted`` functions (`#157 `_) - Fix documentation for ``compile_restricted_function`` (`#158 `_) Fixes +++++ - Fix ``compile_restricted_function`` with SyntaxErrors that have no text (`#181 `_) - Drop install dependency on ``setuptools``. (`#189 `_) 5.0 (2019-09-03) ---------------- Breaking changes ++++++++++++++++ - Revert the allowance of the ``...`` (Ellipsis) statement, as of 4.0. It is not needed to support Python 3.8. The security implications of the Ellipsis Statement is not 100 % clear and is not checked. ``...`` (Ellipsis) is disallowed again. Features ++++++++ - Add support for f-strings in Python 3.6+. (`#123 `_) 4.0 (2019-05-10) ---------------- Changes since 3.6.0: Breaking changes ++++++++++++++++ - The ``compile_restricted*`` functions now return a ``namedtuple CompileResult`` instead of a simple ``tuple``. - Drop the old implementation of version 3.x: `RCompile.py`, `SelectCompiler.py`, `MutatingWorker.py`, `RestrictionMutator.py` and `tests/verify.py`. - Drop support for long-deprecated ``sets`` module. Security related issues +++++++++++++++++++++++ - RestrictedPython now ships with a default implementation for ``_getattr_`` which prevents from using the ``format()`` method on str/unicode as it is not safe, see: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ **Caution:** If you do not already have secured the access to this ``format()`` method in your ``_getattr_`` implementation use ``RestrictedPython.Guards.safer_getattr()`` in your implementation to benefit from this fix. Features ++++++++ - Mostly complete rewrite based on Python AST module. [loechel (Alexander Loechel), icemac (Michael Howitz), stephan-hof (Stephan Hofmockel), tlotze (Thomas Lotze)] - Add support for Python 3.5, 3.6, 3.7. - Add preliminary support for Python 3.8. as of 3.8.0a3 is released. - Warn when using another Python implementation than CPython as it is not safe to use RestrictedPython with other versions than CPyton. See https://bitbucket.org/pypy/pypy/issues/2653 for PyPy. - Allow the ``...`` (Ellipsis) statement. It is needed to support Python 3.8. - Allow `yield` and `yield from` statements. Generator functions would now work in RestrictedPython. - Allow the following magic methods to be defined on classes. (`#104 `_) They cannot be called directly but by the built-in way to use them (e. g. class instantiation, or comparison): + ``__init__`` + ``__contains__`` + ``__lt__`` + ``__le__`` + ``__eq__`` + ``__ne__`` + ``__gt__`` + ``__ge__`` - Imports like ``from a import *`` (so called star imports) are now forbidden as they allow to import names starting with an underscore which could override protected build-ins. (`#102 `_) - Allow to use list comprehensions in the default implementation of ``RestrictionCapableEval.eval()``. - Switch to pytest as test runner. - Bring test coverage to 100 %. Bug fixes +++++++++ - Improve `.Guards.safer_getattr` to prevent accessing names starting with underscore. (`#142 `_) 3.6.0 (2010-07-09) ------------------ - Add name check for names assigned during imports using the ``from x import y`` format. - Add test for name check when assigning an alias using multiple-context ``with`` statements in Python 2.7. - Add tests for protection of the iterators for dict and set comprehensions in Python 2.7. 3.6.0a1 (2010-06-05) -------------------- - Remove support for ``DocumentTemplate.sequence`` - this is handled in the DocumentTemplate package itself. 3.5.2 (2010-04-30) ------------------ - Remove a testing dependency on ``zope.testing``. 3.5.1 (2009-03-17) ------------------ - Add tests for ``Utilities`` module. - Filter DeprecationWarnings when importing Python's ``sets`` module. 3.5.0 (2009-02-09) ------------------ - Drop legacy support for Python 2.1 / 2.2 (``__future__`` imports of ``nested_scopes`` / ``generators``.). 3.4.3 (2008-10-26) ------------------ - Fix deprecation warning: ``with`` is now a reserved keyword on Python 2.6. That means RestrictedPython should run on Python 2.6 now. Thanks to Ranjith Kannikara, GSoC Student for the patch. - Add tests for ternary if expression and for ``with`` keyword and context managers. 3.4.2 (2007-07-28) ------------------ - Changed homepage URL to the PyPI site - Improve ``README.txt``. 3.4.1 (2007-06-23) ------------------ - Fix http://www.zope.org/Collectors/Zope/2295: Bare conditional in a Zope 2 PythonScript followed by a comment causes SyntaxError. 3.4.0 (2007-06-04) ------------------ - RestrictedPython now has its own release cycle as a separate project. - Synchronized with RestrictedPython from Zope 2 tree. 3.2.0 (2006-01-05) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.2.0 release. - No changes from 3.1.0. 3.1.0 (2005-10-03) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.1.0 release. - Remove unused fossil module, ``SafeMapping``. - Replaced use of deprecated ``whrandom`` module with ``random`` (aliased to ``whrandom`` for backward compatibility). 3.0.0 (2004-11-07) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope X3.0.0 release. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/CONTRIBUTING.md0000644000076600000240000000144414744366240016744 0ustar00m.howitzstaff # Contributing to zopefoundation projects The projects under the zopefoundation GitHub organization are open source and welcome contributions in different forms: * bug reports * code improvements and bug fixes * documentation improvements * pull request reviews For any changes in the repository besides trivial typo fixes you are required to sign the contributor agreement. See https://www.zope.dev/developer/becoming-a-committer.html for details. Please visit our [Developer Guidelines](https://www.zope.dev/developer/guidelines.html) if you'd like to contribute code changes and our [guidelines for reporting bugs](https://www.zope.dev/developer/reporting-bugs.html) if you want to file a bug report. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/COPYRIGHT.txt0000644000076600000240000000004014744366240016613 0ustar00m.howitzstaffZope Foundation and Contributors././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/LICENSE.txt0000644000076600000240000000402614744366240016335 0ustar00m.howitzstaffZope Public License (ZPL) Version 2.1 A copyright notice accompanies this license document that identifies the copyright holders. This license has been certified as open source. It has also been designated as GPL compatible by the Free Software Foundation (FSF). Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions in source code must retain the accompanying copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the accompanying copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Names of the copyright holders must not be used to endorse or promote products derived from this software without prior written permission from the copyright holders. 4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of the copyright holders. Use of them is covered by separate agreement with the copyright holders. 5. If any files are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. Disclaimer THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED 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 HOLDERS 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. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/MANIFEST.in0000644000076600000240000000073614744366240016254 0ustar00m.howitzstaff# Generated from: # https://github.com/zopefoundation/meta/tree/master/config/pure-python include *.md include *.rst include *.txt include buildout.cfg include tox.ini include .pre-commit-config.yaml recursive-include docs *.py recursive-include docs *.rst recursive-include docs *.txt recursive-include docs Makefile recursive-include src *.py include *.yaml recursive-include docs *.ast recursive-include docs *.bat recursive-include docs *.jpg recursive-include tests *.py ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7511566 restrictedpython-8.0/PKG-INFO0000644000076600000240000003330714744366242015615 0ustar00m.howitzstaffMetadata-Version: 2.1 Name: RestrictedPython Version: 8.0 Summary: RestrictedPython is a defined subset of the Python language which allows to provide a program input into a trusted environment. Home-page: https://github.com/zopefoundation/RestrictedPython Author: Zope Foundation and Contributors Author-email: zope-dev@zope.dev License: ZPL-2.1 Project-URL: Documentation, https://restrictedpython.readthedocs.io/ Project-URL: Source, https://github.com/zopefoundation/RestrictedPython Project-URL: Tracker, https://github.com/zopefoundation/RestrictedPython/issues Keywords: restricted execution security untrusted code Classifier: Development Status :: 6 - Mature Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Security Requires-Python: >=3.9, <3.14 Description-Content-Type: text/x-rst License-File: LICENSE.txt Provides-Extra: test Requires-Dist: pytest; extra == "test" Requires-Dist: pytest-mock; extra == "test" Provides-Extra: docs Requires-Dist: Sphinx; extra == "docs" Requires-Dist: furo; extra == "docs" .. image:: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml/badge.svg :target: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml .. image:: https://coveralls.io/repos/github/zopefoundation/RestrictedPython/badge.svg?branch=master :target: https://coveralls.io/github/zopefoundation/RestrictedPython?branch=master .. image:: https://readthedocs.org/projects/restrictedpython/badge/ :target: https://restrictedpython.readthedocs.org/ :alt: Documentation Status .. image:: https://img.shields.io/pypi/v/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Current version on PyPI .. image:: https://img.shields.io/pypi/pyversions/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Supported Python versions .. image:: https://github.com/zopefoundation/RestrictedPython/raw/master/docs/logo.jpg ================ RestrictedPython ================ RestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment. RestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it. .. warning:: RestrictedPython only supports CPython. It does _not_ support PyPy and other Python implementations as it cannot provide its restrictions there. For full documentation please see http://restrictedpython.readthedocs.io/. Example ======= To give a basic understanding what RestrictedPython does here two examples: An unproblematic code example ----------------------------- Python allows you to execute a large set of commands. This would not harm any system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... def example(): ... return 'Hello World!' ... """ >>> >>> loc = {} >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, loc) >>> >>> loc['example']() 'Hello World!' Problematic code example ------------------------ This example directly executed in Python could harm your system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... import os ... ... os.listdir('/') ... """ >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, {}) Traceback (most recent call last): ImportError: __import__ not found Contributing to RestrictedPython -------------------------------- If you want to help maintain RestrictedPython and contribute, please refer to the documentation `Contributing page `_. Changes ======= 8.0 (2025-01-23) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Disallow ``try/except*`` clauses due to a possible sandbox escape and probable uselessness of this feature in the context of ``RestrictedPython``. In addition, remove ``ExceptionGroup`` from ``safe_builtins`` (as useful only with ``try/except*``). - This feature was introduced into ``RestrictedPython`` in version 6.0 for Python 3.11+. (CVE-2025-22153) - Drop support for Python 3.8. Features ++++++++ - Update setuptools version pin. (`#292 `_) 7.4 (2024-10-09) ---------------- - Allow to use the package with Python 3.13. - Drop support for Python 3.7. - Provide new function ``RestrictedPython.Guards.safer_getattr_raise``. It is similar to ``safer_getattr`` but handles its parameter ``default`` like ``getattr``, i.e. it raises ``AttributeError`` if the attribute lookup fails and this parameter is not provided, fixes `#287 `_. 7.3 (2024-09-30) ---------------- - Increase the safety level of ``safer_getattr`` allowing applications to use it as ``getattr`` implementation. Such use should now follow the same policy and give the same level of protection as direct attribute access in an environment based on ``RestrictedPython``'s ``safe_builtints``. - Prevent information leakage via ``AttributeError.obj`` and the ``string`` module. (CVE-2024-47532) 7.2 (2024-08-02) ---------------- - Remove unneeded setuptools fossils that may cause installation problems with recent setuptools versions. - Add support for single mode statements / execution. - Fix a potential breakout capability in the provided ``safer_getattr`` method that is part of the ``safer_builtins``. 7.1 (2024-03-14) ---------------- - Add support for the matmul (``@``) operator. 7.0 (2023-11-17) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 3.6. Features ++++++++ - Officially support Python 3.12. Fixes +++++ - Prevent DeprecationWarnings from ``ast.Str`` and ``ast.Num`` on Python 3.12 - Forbid using some attributes providing access to restricted Python internals. (CVE-2023-37271) - Fix information disclosure problems through Python's "format" functionality (``format`` and ``format_map`` methods on ``str`` and its instances, ``string.Formatter``). (CVE-2023-41039) 6.0 (2022-11-03) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 2.7 and 3.5. Features ++++++++ - Officially support Python 3.11. - Allow to use the Python 3.11 feature of exception groups and except\* (PEP 654). 5.2 (2021-11-19) ---------------- - Document that ``__name__`` is needed to define classes. - Add support for Python 3.10. Auditing the Python 3.10 change log did not reveal any changes which require actions in RestrictedPython. - Avoid deprecation warnings when using Python 3.8+. (`#192 `_) 5.1 (2020-10-07) ---------------- Features ++++++++ - Add support for (Python 3.8+) assignment expressions (i.e. the ``:=`` operator) - Add support for Python 3.9 after checking the security implications of the syntax changes made in that version. - Add support for the ``bytes`` and ``sorted`` builtins (`#186 `_) Documentation +++++++++++++ - Document parameter ``mode`` for the ``compile_restricted`` functions (`#157 `_) - Fix documentation for ``compile_restricted_function`` (`#158 `_) Fixes +++++ - Fix ``compile_restricted_function`` with SyntaxErrors that have no text (`#181 `_) - Drop install dependency on ``setuptools``. (`#189 `_) 5.0 (2019-09-03) ---------------- Breaking changes ++++++++++++++++ - Revert the allowance of the ``...`` (Ellipsis) statement, as of 4.0. It is not needed to support Python 3.8. The security implications of the Ellipsis Statement is not 100 % clear and is not checked. ``...`` (Ellipsis) is disallowed again. Features ++++++++ - Add support for f-strings in Python 3.6+. (`#123 `_) 4.0 (2019-05-10) ---------------- Changes since 3.6.0: Breaking changes ++++++++++++++++ - The ``compile_restricted*`` functions now return a ``namedtuple CompileResult`` instead of a simple ``tuple``. - Drop the old implementation of version 3.x: `RCompile.py`, `SelectCompiler.py`, `MutatingWorker.py`, `RestrictionMutator.py` and `tests/verify.py`. - Drop support for long-deprecated ``sets`` module. Security related issues +++++++++++++++++++++++ - RestrictedPython now ships with a default implementation for ``_getattr_`` which prevents from using the ``format()`` method on str/unicode as it is not safe, see: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ **Caution:** If you do not already have secured the access to this ``format()`` method in your ``_getattr_`` implementation use ``RestrictedPython.Guards.safer_getattr()`` in your implementation to benefit from this fix. Features ++++++++ - Mostly complete rewrite based on Python AST module. [loechel (Alexander Loechel), icemac (Michael Howitz), stephan-hof (Stephan Hofmockel), tlotze (Thomas Lotze)] - Add support for Python 3.5, 3.6, 3.7. - Add preliminary support for Python 3.8. as of 3.8.0a3 is released. - Warn when using another Python implementation than CPython as it is not safe to use RestrictedPython with other versions than CPyton. See https://bitbucket.org/pypy/pypy/issues/2653 for PyPy. - Allow the ``...`` (Ellipsis) statement. It is needed to support Python 3.8. - Allow `yield` and `yield from` statements. Generator functions would now work in RestrictedPython. - Allow the following magic methods to be defined on classes. (`#104 `_) They cannot be called directly but by the built-in way to use them (e. g. class instantiation, or comparison): + ``__init__`` + ``__contains__`` + ``__lt__`` + ``__le__`` + ``__eq__`` + ``__ne__`` + ``__gt__`` + ``__ge__`` - Imports like ``from a import *`` (so called star imports) are now forbidden as they allow to import names starting with an underscore which could override protected build-ins. (`#102 `_) - Allow to use list comprehensions in the default implementation of ``RestrictionCapableEval.eval()``. - Switch to pytest as test runner. - Bring test coverage to 100 %. Bug fixes +++++++++ - Improve `.Guards.safer_getattr` to prevent accessing names starting with underscore. (`#142 `_) 3.6.0 (2010-07-09) ------------------ - Add name check for names assigned during imports using the ``from x import y`` format. - Add test for name check when assigning an alias using multiple-context ``with`` statements in Python 2.7. - Add tests for protection of the iterators for dict and set comprehensions in Python 2.7. 3.6.0a1 (2010-06-05) -------------------- - Remove support for ``DocumentTemplate.sequence`` - this is handled in the DocumentTemplate package itself. 3.5.2 (2010-04-30) ------------------ - Remove a testing dependency on ``zope.testing``. 3.5.1 (2009-03-17) ------------------ - Add tests for ``Utilities`` module. - Filter DeprecationWarnings when importing Python's ``sets`` module. 3.5.0 (2009-02-09) ------------------ - Drop legacy support for Python 2.1 / 2.2 (``__future__`` imports of ``nested_scopes`` / ``generators``.). 3.4.3 (2008-10-26) ------------------ - Fix deprecation warning: ``with`` is now a reserved keyword on Python 2.6. That means RestrictedPython should run on Python 2.6 now. Thanks to Ranjith Kannikara, GSoC Student for the patch. - Add tests for ternary if expression and for ``with`` keyword and context managers. 3.4.2 (2007-07-28) ------------------ - Changed homepage URL to the PyPI site - Improve ``README.txt``. 3.4.1 (2007-06-23) ------------------ - Fix http://www.zope.org/Collectors/Zope/2295: Bare conditional in a Zope 2 PythonScript followed by a comment causes SyntaxError. 3.4.0 (2007-06-04) ------------------ - RestrictedPython now has its own release cycle as a separate project. - Synchronized with RestrictedPython from Zope 2 tree. 3.2.0 (2006-01-05) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.2.0 release. - No changes from 3.1.0. 3.1.0 (2005-10-03) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.1.0 release. - Remove unused fossil module, ``SafeMapping``. - Replaced use of deprecated ``whrandom`` module with ``random`` (aliased to ``whrandom`` for backward compatibility). 3.0.0 (2004-11-07) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope X3.0.0 release. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/README.rst0000644000076600000240000000566514744366240016213 0ustar00m.howitzstaff.. image:: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml/badge.svg :target: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml .. image:: https://coveralls.io/repos/github/zopefoundation/RestrictedPython/badge.svg?branch=master :target: https://coveralls.io/github/zopefoundation/RestrictedPython?branch=master .. image:: https://readthedocs.org/projects/restrictedpython/badge/ :target: https://restrictedpython.readthedocs.org/ :alt: Documentation Status .. image:: https://img.shields.io/pypi/v/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Current version on PyPI .. image:: https://img.shields.io/pypi/pyversions/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Supported Python versions .. image:: https://github.com/zopefoundation/RestrictedPython/raw/master/docs/logo.jpg ================ RestrictedPython ================ RestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment. RestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it. .. warning:: RestrictedPython only supports CPython. It does _not_ support PyPy and other Python implementations as it cannot provide its restrictions there. For full documentation please see http://restrictedpython.readthedocs.io/. Example ======= To give a basic understanding what RestrictedPython does here two examples: An unproblematic code example ----------------------------- Python allows you to execute a large set of commands. This would not harm any system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... def example(): ... return 'Hello World!' ... """ >>> >>> loc = {} >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, loc) >>> >>> loc['example']() 'Hello World!' Problematic code example ------------------------ This example directly executed in Python could harm your system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... import os ... ... os.listdir('/') ... """ >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, {}) Traceback (most recent call last): ImportError: __import__ not found Contributing to RestrictedPython -------------------------------- If you want to help maintain RestrictedPython and contribute, please refer to the documentation `Contributing page `_. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/buildout.cfg0000644000076600000240000000022414744366240017016 0ustar00m.howitzstaff[buildout] develop = . parts = sphinx [sphinx] recipe = zc.recipe.egg eggs = RestrictedPython[docs] Sphinx scripts = sphinx-build ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/constraints.txt0000644000076600000240000000023314744366240017616 0ustar00m.howitzstaff# Constraints for Python packages # ------------------------------- # Pin versions / version ranges if necessary. isort >= 4.3.2 pytest >= 5 coverage >= 6 ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1737616545.73916 restrictedpython-8.0/docs/0000755000076600000240000000000014744366242015442 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/Makefile0000644000076600000240000001766714744366240017121 0ustar00m.howitzstaff# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = ../_build/docs # User-friendly check for sphinx-build #ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) # $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/) #endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " epub3 to make an epub3" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " coverage to run coverage check of the documentation (if enabled)" @echo " dummy to check syntax errors of document sources" .PHONY: clean clean: rm -rf $(BUILDDIR)/* .PHONY: html html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) . $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." .PHONY: dirhtml dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) . $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." .PHONY: singlehtml singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) . $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." .PHONY: pickle pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." .PHONY: json json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." .PHONY: htmlhelp htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." .PHONY: qthelp qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/RestrictedPython.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/RestrictedPython.qhc" .PHONY: applehelp applehelp: $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp @echo @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." @echo "N.B. You won't be able to view it unless you put it in" \ "~/Library/Documentation/Help or install it in your application" \ "bundle." .PHONY: devhelp devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/RestrictedPython" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/RestrictedPython" @echo "# devhelp" .PHONY: epub epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." .PHONY: epub3 epub3: $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 @echo @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." .PHONY: latex latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." .PHONY: latexpdf latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." .PHONY: latexpdfja latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." .PHONY: text text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." .PHONY: man man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." .PHONY: texinfo texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." .PHONY: info info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." .PHONY: gettext gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." .PHONY: changes changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." .PHONY: linkcheck linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." .PHONY: doctest doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." .PHONY: coverage coverage: $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage @echo "Testing of coverage in the sources finished, look at the " \ "results in $(BUILDDIR)/coverage/python.txt." .PHONY: xml xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." .PHONY: pseudoxml pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." .PHONY: dummy dummy: $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy @echo @echo "Build finished. Dummy builder generates no files." ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/changes.rst0000644000076600000240000000003414744366240017577 0ustar00m.howitzstaff.. include:: ../CHANGES.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/conf.py0000644000076600000240000002406414744366240016745 0ustar00m.howitzstaff# # RestrictedPython documentation build configuration file, created by # sphinx-quickstart on Thu May 19 12:43:20 2016. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('.')) import datetime # -- General configuration ------------------------------------------------ year = datetime.datetime.now().year # If your documentation needs a minimal Sphinx version, state it here. # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.doctest', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # source_suffix = ['.rst', '.md'] source_suffix = {'.rst': 'restructuredtext'} # The encoding of source files. # source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = 'RestrictedPython' copyright = f'2017-{year}, Zope Foundation and Contributors' author = 'The Zope & Plone developer community' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '7.5' # The full version, including alpha/beta/rc tags. release = '7.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = 'en' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: # today = '' # Else, today_fmt is used as the format for a strftime call. # today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all # documents. # default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. # add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). # add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. # show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. # modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. # keep_warnings = False # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = True # Intersphinx Mapping for Links between different Documentations intersphinx_mapping = { 'python3': ('https://docs.python.org/3', None), 'python39': ('https://docs.python.org/3.9', None), 'python310': ('https://docs.python.org/3.10', None), 'python311': ('https://docs.python.org/3.11', None), 'python312': ('https://docs.python.org/3.12', None), 'python313': ('https://docs.python.org/3.13', None), } # Options for sphinx.ext.todo: todo_include_todos = True todo_emit_warnings = True # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'furo' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] # The name for this set of Sphinx documents. # " v documentation" by default. # html_title = u'RestrictedPython v4.0.0.a1' # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. # html_logo = None # The name of an image file (relative to this directory) to use as a favicon of # the docs. This file should be a Windows icon file (.ico) being 16x16 or # 32x32 pixels large. # html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". # html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. # html_extra_path = [] # If not None, a 'Last updated on:' timestamp is inserted at every page # bottom, using the given strftime format. # The empty string is equivalent to '%b %d, %Y'. # html_last_updated_fmt = None # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. # html_use_smartypants = True # Custom sidebar templates, maps document names to template names. # html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. # html_additional_pages = {} # If false, no module index is generated. # html_domain_indices = True # If false, no index is generated. # html_use_index = True # If true, the index is split into individual pages for each letter. # html_split_index = False # If true, links to the reST sources are added to the pages. # html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. # html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. # html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. # html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). # html_file_suffix = None # Language to be used for generating the HTML full-text search index. # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' # html_search_language = 'en' # A dictionary with options for the search language support, empty by default. # 'ja' uses this config value. # 'zh' user can custom change `jieba` dictionary path. # html_search_options = {'type': 'default'} # The name of a javascript file (relative to the configuration directory) that # implements a search results scorer. If empty, the default will be used. # html_search_scorer = 'scorer.js' # Output file base name for HTML help builder. htmlhelp_basename = 'RestrictedPython_doc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # 'preamble': '', # Latex figure (float) alignment # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ( master_doc, 'RestrictedPython.tex', 'RestrictedPython Documentation', author, 'manual', ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. # latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. # latex_use_parts = False # If true, show page references after internal links. # latex_show_pagerefs = False # If true, show URL addresses after external links. # latex_show_urls = False # Documents to append as an appendix to all manuals. # latex_appendices = [] # If false, no module index is generated. # latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'restrictedpython', 'RestrictedPython Documentation', [author], 1)] # If true, show URL addresses after external links. # man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ( master_doc, 'RestrictedPython', 'RestrictedPython Documentation', author, 'RestrictedPython', 'One line description of project.', 'Miscellaneous', ), ] # Documents to append as an appendix to all manuals. # texinfo_appendices = [] # If false, no module index is generated. # texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. # texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. # texinfo_no_detailmenu = False ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7399764 restrictedpython-8.0/docs/contributing/0000755000076600000240000000000014744366242020151 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7409093 restrictedpython-8.0/docs/contributing/ast/0000755000076600000240000000000014744366242020740 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_10.ast0000755000076600000240000001514414744366240023363 0ustar00m.howitzstaff-- Python 3.10 AST -- ASDL's 4 builtin types are: -- identifier, int, string, constant module Python version "3.10" { mod = Module(stmt* body, type_ignore* type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Match(expr subject, match_case* cases) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, expr slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- can appear only in Subscript | Slice(expr? lower, expr? upper, expr? step) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) withitem = (expr context_expr, expr? optional_vars) match_case = (pattern pattern, expr? guard, stmt* body) pattern = MatchValue(expr value) | MatchSingleton(constant value) | MatchSequence(pattern* patterns) | MatchMapping(expr* keys, pattern* patterns, identifier? rest) | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns) | MatchStar(identifier? name) -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys | MatchAs(pattern? pattern, identifier? name) | MatchOr(pattern* patterns) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) type_ignore = TypeIgnore(int lineno, string tag) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_11.ast0000755000076600000240000001527314744366240023367 0ustar00m.howitzstaff-- Python 3.11 AST -- ASDL's 4 builtin types are: -- identifier, int, string, constant module Python version "3.11" { mod = Module(stmt* body, type_ignore* type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Match(expr subject, match_case* cases) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, expr slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- can appear only in Subscript | Slice(expr? lower, expr? upper, expr? step) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) withitem = (expr context_expr, expr? optional_vars) match_case = (pattern pattern, expr? guard, stmt* body) pattern = MatchValue(expr value) | MatchSingleton(constant value) | MatchSequence(pattern* patterns) | MatchMapping(expr* keys, pattern* patterns, identifier? rest) | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns) | MatchStar(identifier? name) -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys | MatchAs(pattern? pattern, identifier? name) | MatchOr(pattern* patterns) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) type_ignore = TypeIgnore(int lineno, string tag) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_12.ast0000755000076600000240000001620014744366240023357 0ustar00m.howitzstaff-- Python 3.12 AST -- ASDL's 4 builtin types are: -- identifier, int, string, constant module Python version "3.12" { mod = Module(stmt* body, type_ignore* type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | TypeAlias(expr name, type_param* type_params, expr value) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Match(expr subject, match_case* cases) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, expr slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- can appear only in Subscript | Slice(expr? lower, expr? upper, expr? step) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) withitem = (expr context_expr, expr? optional_vars) match_case = (pattern pattern, expr? guard, stmt* body) pattern = MatchValue(expr value) | MatchSingleton(constant value) | MatchSequence(pattern* patterns) | MatchMapping(expr* keys, pattern* patterns, identifier? rest) | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns) | MatchStar(identifier? name) -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys | MatchAs(pattern? pattern, identifier? name) | MatchOr(pattern* patterns) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) type_ignore = TypeIgnore(int lineno, string tag) type_param = TypeVar(identifier name, expr? bound) | ParamSpec(identifier name) | TypeVarTuple(identifier name) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_13.ast0000644000076600000240000001627714744366240023373 0ustar00m.howitzstaff-- Python 3.13 AST -- ASDL's 4 builtin types are: -- identifier, int, string, constant module Python version "3.13" { mod = Module(stmt* body, type_ignore* type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | TypeAlias(expr name, type_param* type_params, expr value) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Match(expr subject, match_case* cases) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, expr slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- can appear only in Subscript | Slice(expr? lower, expr? upper, expr? step) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) withitem = (expr context_expr, expr? optional_vars) match_case = (pattern pattern, expr? guard, stmt* body) pattern = MatchValue(expr value) | MatchSingleton(constant value) | MatchSequence(pattern* patterns) | MatchMapping(expr* keys, pattern* patterns, identifier? rest) | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns) | MatchStar(identifier? name) -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys | MatchAs(pattern? pattern, identifier? name) | MatchOr(pattern* patterns) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) type_ignore = TypeIgnore(int lineno, string tag) type_param = TypeVar(identifier name, expr? bound, expr? default_value) | ParamSpec(identifier name, expr? default_value) | TypeVarTuple(identifier name, expr? default_value) attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_8.ast0000755000076600000240000001374014744366240023312 0ustar00m.howitzstaff-- Python 3.8 AST -- ASDL's 5 builtin types are: -- identifier, int, string, object, constant module Python version "3.8" { mod = Module(stmt* body, type_ignore *type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) -- not really an actual node but useful in Jython's typesystem. | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- XXX Jython will be different -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int? conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, slice slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del | AugLoad | AugStore | Param slice = Slice(expr? lower, expr? upper, expr? step) | ExtSlice(slice* dims) | Index(expr value) boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) withitem = (expr context_expr, expr? optional_vars) type_ignore = TypeIgnore(int lineno, string tag) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/ast/python3_9.ast0000755000076600000240000001343714744366240023316 0ustar00m.howitzstaff-- Python 3.9 AST -- ASDL's 4 builtin types are: -- identifier, int, string, constant module Python version "3.9" { mod = Module(stmt* body, type_ignore* type_ignores) | Interactive(stmt* body) | Expression(expr body) | FunctionType(expr* argtypes, expr returns) stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment) | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list) | Return(expr? value) | Delete(expr* targets) | Assign(expr* targets, expr value, string? type_comment) | AugAssign(expr target, operator op, expr value) -- 'simple' indicates that we annotate simple name without parens | AnnAssign(expr target, expr annotation, expr? value, int simple) -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body, string? type_comment) | AsyncWith(withitem* items, stmt* body, string? type_comment) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) | Assert(expr test, expr? msg) | Import(alias* names) | ImportFrom(identifier? module, alias* names, int? level) | Global(identifier* names) | Nonlocal(identifier* names) | Expr(expr value) | Pass | Break | Continue -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- BoolOp() can use left & right? expr = BoolOp(boolop op, expr* values) | NamedExpr(expr target, expr value) | BinOp(expr left, operator op, expr right) | UnaryOp(unaryop op, expr operand) | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | SetComp(expr elt, comprehension* generators) | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between -- x < 4 < 3 and (x < 4) < 3 | Compare(expr left, cmpop* ops, expr* comparators) | Call(expr func, expr* args, keyword* keywords) | FormattedValue(expr value, int? conversion, expr? format_spec) | JoinedStr(expr* values) | Constant(constant value, string? kind) -- the following expression can appear in assignment context | Attribute(expr value, identifier attr, expr_context ctx) | Subscript(expr value, expr slice, expr_context ctx) | Starred(expr value, expr_context ctx) | Name(identifier id, expr_context ctx) | List(expr* elts, expr_context ctx) | Tuple(expr* elts, expr_context ctx) -- can appear only in Subscript | Slice(expr? lower, expr? upper, expr? step) -- col_offset is the byte offset in the utf8 string the parser uses attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) expr_context = Load | Store | Del boolop = And | Or operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv unaryop = Invert | Not | UAdd | USub cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn comprehension = (expr target, expr iter, expr* ifs, int is_async) excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults) arg = (identifier arg, expr? annotation, string? type_comment) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- keyword arguments supplied to call (NULL identifier for **kwargs) keyword = (identifier? arg, expr value) attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) -- import name with optional 'as' alias. alias = (identifier name, identifier? asname) withitem = (expr context_expr, expr? optional_vars) type_ignore = TypeIgnore(int lineno, string tag) } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/changes_from310to311.rst0000644000076600000240000000022514744366240024347 0ustar00m.howitzstaffChanges from Python 3.10 to Python 3.11 --------------------------------------- .. literalinclude:: ast/python3_11.ast :diff: ast/python3_10.ast ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/changes_from311to312.rst0000644000076600000240000000022514744366240024351 0ustar00m.howitzstaffChanges from Python 3.11 to Python 3.12 --------------------------------------- .. literalinclude:: ast/python3_12.ast :diff: ast/python3_11.ast ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/changes_from312to313.rst0000644000076600000240000000022514744366240024353 0ustar00m.howitzstaffChanges from Python 3.12 to Python 3.13 --------------------------------------- .. literalinclude:: ast/python3_13.ast :diff: ast/python3_12.ast ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/changes_from38to39.rst0000644000076600000240000000021714744366240024226 0ustar00m.howitzstaffChanges from Python 3.8 to Python 3.9 ------------------------------------- .. literalinclude:: ast/python3_9.ast :diff: ast/python3_8.ast ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/changes_from39to310.rst0000644000076600000240000000022214744366240024273 0ustar00m.howitzstaffChanges from Python 3.9 to Python 3.10 -------------------------------------- .. literalinclude:: ast/python3_10.ast :diff: ast/python3_9.ast ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/contributing/index.rst0000644000076600000240000003053414744366240022015 0ustar00m.howitzstaffContributing ============ Contributing to RestrictedPython -------------------------------- Legal requirements to contribute to RestrictedPython ++++++++++++++++++++++++++++++++++++++++++++++++++++ The projects under the zopefoundation GitHub organization are open source, including RestrictedPython. We welcome contributions in different forms: * bug reports * code improvements and bug fixes * documentation improvements * pull request reviews For any changes in the repository besides trivial typo fixes, you are required to sign the contributor agreement. See https://www.zope.dev/developer/becoming-a-committer.html for details. Please visit our `Developer Guidelines`_ if you'd like to contribute code changes and our `guidelines for reporting bugs`_ if you want to file a bug report. .. _`Developer Guidelines`: https://www.zope.dev/developer/guidelines.html .. _`guidelines for reporting bugs`: https://www.zope.dev/developer/reporting-bugs.html Preperations for Contributing +++++++++++++++++++++++++++++ If you want to contribute to this package, please prepare a development environment that includes ``git``, ``tox``, and several Python versions available through a Python manager such as ``pyenv``. Please read the section :ref:`understand` first. For all commits, use ``tox`` to run tests and lint, and build the docs, before pushing your commit to the remote repository. .. _new_python_version: Preperations for a new Python version +++++++++++++++++++++++++++++++++++++ RestrictedPython should be updated for each new version of Python. To do so: * Read the changelog (`What's new in Python`_). * Copy and adjust the new AST Grammar (found under: `Python 3 AST`_) to ``/docs/contributing/ast/python.ast``. * Add a new file ``changes_fromto.rst`` in the directory ``/docs/contributing/``. If the changes are significant, especially if related to security, then add a description of the changes in that file. * Add those files to the ``toctree`` directive in ``index.rst``. * For each new **AST Node** or functionality: * Add tests to ``/tests/``. * Add a ``visit_`` to ``/src/RestrictedPython/transformer.py``. If the new AST Node should be enabled by default, with or without any modification, please add a ``visit_`` method such as the following: .. code-block:: python def visit_(self, node): """Allow `` expressions.""" ... # modifications return self.node_contents_visit(node) All AST Nodes without an explicit ``visit_`` method, are denied by default. So the usage of this expression and functionality is not allowed. * Check the documentation for `inspect `_ and adjust the ``transformer.py:INSPECT_ATTRIBUTES`` list. * Add a corresponding changelog entry. * Additionally modify ``.meta.toml`` and run the ``meta/config`` script (for details see: https://github.com/mgedmin/check-python-versions) to update the following files: * ``/setup.py`` - Check that the new Python version classifier has been added ``"Programming Language :: Python :: ",``, and that the ``python_requires`` section has been updated correctly. * ``/tox.ini`` - Check that a ``testenv`` entry is added to the general ``envlist`` statement. * ``/.github/workflows/tests.yml`` - Check that a corresponding Python version entry has been added to the matrix definition. * ``/docs/conf.py`` - Add the Python version to the ``intersphinx_mapping`` list. * On your local environment, use ``tox`` to run tests and lint, and build the docs, before pushing your commit to the remote repository. * Create a pull request. Enable a Python Feature in RestrictedPython +++++++++++++++++++++++++++++++++++++++++++ To enable a certain functionality in RestrictedPython, do the following: * `Create a new issue on GitHub `__, requesting the new feature, for discussion. * In ``/src/RestrictedPython/transformer.py``, change the corresponding ``visit_`` method. * In ``/tests/``, add or change the corresponding tests for this functionality. * Add a changelog entry. * On your local environment, use ``tox`` to run tests and lint, and build the docs, before pushing your commit to the remote repository. * Create a pull request and request a review by a core maintainer, e.g.: * icemac * loechel Differences between Python versions ----------------------------------- A (modified style) Copy of all Abstract Grammar Definitions for the Python versions does live in this Documentation (ast Subfolder) to help finding difference quicker by comparing files. .. toctree:: :maxdepth: 2 changes_from38to39 changes_from39to310 changes_from310to311 changes_from311to312 changes_from312to313 .. _understand: Understanding How RestrictedPython works internally --------------------------------------------------- RestrictedPython is a classic approach of compiler construction to create a limited subset of an existing programming language. Defining a programming language requires a regular grammar (`Chomsky 3`_ / `EBNF`_) definition. This grammar will be implemented in an abstract syntax tree (AST), which will be passed on to a code generator to produce a machine-readable version. .. _`_sec_code_generation`: Code generation +++++++++++++++ As Python is a platform independent programming language, this machine readable version is a byte code which will be translated on the fly by an interpreter into machine code. This machine code then gets executed on the specific CPU architecture, with the standard operating system restrictions. The byte code produced must be compatible with the execution environment that the Python interpreter is running in, so we do not generate the byte code directly from ``compile_restricted`` and the other ``compile_restricted_*`` methods manually, it may not match what the interpreter expects. Thankfully, the Python ``compile()`` function introduced the capability to compile ``ast.AST`` code into byte code in Python 2.6, so we can return the platform-independent AST and keep byte code generation delegated to the interpreter. ``ast`` module (Abstract Syntax Trees) ++++++++++++++++++++++++++++++++++++++ The ``ast`` module consists of four areas: * ``AST`` (Basis of all Nodes) + all node class implementations * ``NodeVisitor`` and ``NodeTransformer`` (tool to consume and modify the AST) * Helper methods * ``parse`` * ``walk`` * ``dump`` * Constants * ``PyCF_ONLY_AST`` ``NodeVisitor`` & ``NodeTransformer`` +++++++++++++++++++++++++++++++++++++ A ``NodeVisitor`` is a class of a node / AST consumer, it reads the data by stepping through the tree without modifying it. In contrast, a ``NodeTransformer`` (which inherits from a ``NodeVisitor``) is allowed to modify the tree and nodes. Technical decisions on how to implement / maintain RestrictedPython (Design, Structure, Tools, ...) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ RestrictedPython is a core Package of the Zope & Plone Stack. Until Version 3.6 RestrictedPython was Python 2 only, and a critical blocker for Zope & Plone. With RestrictedPython 4.0 an API compatible rewrite has happened, which supports modern Python Versions. * Use modern python tool stack for maintenance and tests * tox * pytest * black * linting tools: flake8 * Use clear package Structure * ``/src`` - Source Code * ``/tests`` - separated tests * ``/docs`` - Documentation Tests and documentation are distributed within released packages. .. todo:: Resolve discussion about how RestrictedPython should be treat new expressions / ``ast.Nodes``. This belongs to :ref:`new_python_version`. **Option 1 - reduce maintenance burden (preferred by icemac)** All AST Nodes without an explicit ``visit_`` method, are denied by default. So the usage of this expression and functionality is not allowed. *This is currently the promoted version.* **Option 2 - be as explicit as possible (preferred by loechel)** If the new AST Node should be disabled by default, add a ``visit_`` method such as the following: .. code-block:: python def visit_(self, node): """`` expression currently not allowed.""" self.not_allowed(node) Please note, that for all AST Nodes without an explicit ``visit_`` method, a default applies which denies the usage of this expression and functionality. As we try to be **as explicit as possible**, all language features should have a corresponding ``visit_``. That follows the Zen of Python: .. code-block:: pycon :emphasize-lines: 5 >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! Technical Backgrounds - Links to External Documentation +++++++++++++++++++++++++++++++++++++++++++++++++++++++ * `Concept of Immutable Types and Python Example`_ * `Python 3 Standard Library Documentation on AST module`_ * AST Grammar of Python (`Status of Python Versions`_) * `Python 3.13 AST`_ (EOL 2029-10) * `Python 3.12 AST`_ (EOL 2028-10) * `Python 3.11 AST`_ (EOL 2027-10) * `Python 3.10 AST`_ (EOL 2026-10) * `Python 3.9 AST`_ (EOL 2025-10) * `AST NodeVistiors Class`_ * `AST NodeTransformer Class`_ * `AST dump method`_ * `In detail Documentation on the Python AST module (Green Tree Snakes)`_ * `Example how to Instrumenting the Python AST`_ Todos ----- .. todolist:: .. Links: .. _`What's new in Python`: https://docs.python.org/3/whatsnew/ .. _`What's new in Python 3.13`: https://docs.python.org/3.13/whatsnew/3.13.html .. _`What's new in Python 3.12`: https://docs.python.org/3.12/whatsnew/3.12.html .. _`What's new in Python 3.11`: https://docs.python.org/3.11/whatsnew/3.11.html .. _`What's new in Python 3.10`: https://docs.python.org/3.10/whatsnew/3.10.html .. _`What's new in Python 3.9`: https://docs.python.org/3.9/whatsnew/3.9.html .. _`Status of Python Versions`: https://devguide.python.org/versions/ .. _`Concept of Immutable Types and Python Example`: https://en.wikipedia.org/wiki/Immutable_object#Python .. _`Python 3 Standard Library Documentation on AST module`: https://docs.python.org/3/library/ast.html .. _`CamelCase`: https://en.wikipedia.org/wiki/Camel_case .. _`EBNF`: https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form .. _`Chomsky 3`: https://en.wikipedia.org/wiki/Chomsky_hierarchy#Type-3_grammars .. _`Python 3 AST`: https://docs.python.org/3/library/ast.html#abstract-grammar .. _`Python 3.13 AST`: https://docs.python.org/3.13/library/ast.html#abstract-grammar .. _`Python 3.12 AST`: https://docs.python.org/3.12/library/ast.html#abstract-grammar .. _`Python 3.11 AST`: https://docs.python.org/3.11/library/ast.html#abstract-grammar .. _`Python 3.10 AST`: https://docs.python.org/3.10/library/ast.html#abstract-grammar .. _`Python 3.9 AST`: https://docs.python.org/3.9/library/ast.html#abstract-grammar .. _`AST NodeVistiors Class`: https://docs.python.org/3/library/ast.html#ast.NodeVisitor .. _`AST NodeTransformer Class`: https://docs.python.org/3/library/ast.html#ast.NodeTransformer .. _`AST dump method`: https://docs.python.org/3/library/ast.html#ast.dump .. _`In detail Documentation on the Python AST module (Green Tree Snakes)`: https://greentreesnakes.readthedocs.org/en/latest/ .. _`Example how to Instrumenting the Python AST`: http://www.dalkescientific.com/writings/diary/archive/2010/02/22/instrumenting_the_ast.html ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/idea.rst0000644000076600000240000001010014744366240017064 0ustar00m.howitzstaffThe idea behind RestrictedPython ================================ Python is a `Turing complete `_ programming language. To offer a Python interface for users in web context is a potential security risk. Web frameworks and Content Management Systems (CMS) want to offer their users as much extensibility as possible through the web (TTW). This also means to have permissions to add functionality via a Python script. There should be additional preventive measures taken to ensure integrity of the application and the server itself, according to information security best practice and unrelated to RestrictedPython. RestrictedPython defines a safe subset of the Python programming language. This is a common approach for securing a programming language. The `Ada Ravenscar profile `_ is another example of such an approach. Defining a secure subset of the language involves restricting the `EBNF `_ elements and explicitly allowing or disallowing language features. Much of the power of a programming language derives from its standard and contributed libraries, so any calling of these methods must also be checked and potentially restricted. RestrictedPython generally disallows calls to any library that is not explicit whitelisted. As Python is a scripting language that is executed by an interpreter any Python code that should be executed has to be explicitly checked before executing the generated byte code by the interpreter. Python itself offers three methods that provide such a workflow: * ``compile()`` which compiles source code to byte code * ``exec`` / ``exec()`` which executes the byte code in the interpreter * ``eval`` / ``eval()`` which executes a byte code expression Therefore RestrictedPython offers a replacement for the python builtin function ``compile()`` (`Python 2 `_ / `Python 3 `_). This Python function is defined as following: .. code-block:: python compile(source, filename, mode [, flags [, dont_inherit]]) The definition of the ``compile()`` method has changed over time, but its relevant parameters ``source`` and ``mode`` still remain. There are three valid string values for ``mode``: * ``'exec'`` * ``'eval'`` * ``'single'`` For RestrictedPython this ``compile()`` method is replaced by: .. code-block:: python RestrictedPython.compile_restricted(source, filename, mode [, flags [, dont_inherit]]) The primary parameter ``source`` has to be a string or ``ast.AST`` instance. Both methods either return compiled byte code that the interpreter can execute or raise exceptions if the provided source code is invalid. As ``compile`` and ``compile_restricted`` just compile the provided source code to byte code it is not sufficient as a sandbox environment, as all calls to libraries are still available. The two methods / statements: * ``exec`` / ``exec()`` * ``eval`` / ``eval()`` have two parameters: * ``globals`` * ``locals`` which are references to the Python builtins. By modifying and restricting the available modules, methods and constants from ``globals`` and ``locals`` we can limit the possible calls. Additionally RestrictedPython offers a way to define a policy which allows developers to protect access to attributes. This works by defining a restricted version of: * ``print`` * ``getattr`` * ``setattr`` * ``import`` Also RestrictedPython provides three predefined, limited versions of Python's ``__builtins__``: * ``safe_builtins`` (by Guards.py) * ``limited_builtins`` (by Limits.py), which provides restricted sequence types * ``utilities_builtins`` (by Utilities.py), which provides access for standard modules math, random, string and for sets. One special shortcut: * ``safe_globals`` for ``{'__builtins__': safe_builtins}`` (by Guards.py) Additional there exist guard functions to make attributes of Python objects immutable --> ``full_write_guard`` (write and delete protected). ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/index.rst0000644000076600000240000000212414744366240017300 0ustar00m.howitzstaff.. RestrictedPython documentation master file, created by sphinx-quickstart on Thu May 19 12:43:20 2016. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. image:: logo.jpg ============================================ Welcome to RestrictedPython's documentation! ============================================ RestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment. RestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it. Supported Python versions ========================= RestrictedPython supports CPython 3.9 up to 3.13. It does _not_ support PyPy or other alternative Python implementations. Contents ======== .. toctree:: :maxdepth: 2 idea install/index usage/index usage/api roadmap/index contributing/index changes Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1737616545.741049 restrictedpython-8.0/docs/install/0000755000076600000240000000000014744366242017110 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/install/index.rst0000644000076600000240000000053214744366240020747 0ustar00m.howitzstaffInstall / Depend on RestrictedPython ==================================== RestrictedPython is usually not used stand alone, if you use it in context of your package add it to ``install_requires`` in your ``setup.py`` or a ``requirement.txt`` used by ``pip``. For a standalone usage: .. code-block:: console $ pip install RestrictedPython ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/logo.jpg0000644000076600000240000136632614744366240017123 0ustar00m.howitzstaffÿØÿàJFIFÿá€ExifMM*JR(‡iZ  hÿá !http://ns.adobe.com/xap/1.0/ ÿí8Photoshop 3.08BIM8BIM%ÔŒÙ²é€ ˜ìøB~ÿâ@ICC_PROFILE0applmntrRGB XYZ á 4acspAPPLAPPLöÖÓ-appldescPbdscm´cprtÌ#wtptðrXYZgXYZbXYZ,rTRC@ aargL vcgtl0ndinœ>chadÜ,mmod(bTRC@ gTRC@ aabgL aaggL descDisplaymluc" hrHR¨koKR ¼nbNOÈidÚhuHUìcsCZdaDKukUA2arNitITbroROvnlNLˆheILžesESvfiFI´zhTW ÄviVNÐskSKÞzhCN ÄruRU$ôfrFRms.caES@thTH XesXLvdeDEdenUStptBR†plPLželGR"°svSEÒtrTRâjaJP öptPTLCD u bojiÎì·ì LCDFarge-LCDLCD WarnaSzínes LCDBarevný LCDLCD-farveskærm>;L>@>289 LCD LCD EDHF)LCD coloriLCD colorKleuren-LCD LCD æÑâÕàÙVäri-LCD_i‚r LCDLCD MàuFarebný LCD&25B=>9 -48A?;59LCD couleurWarna LCDLCD en colorLCD *5Farb-LCDColor LCDLCD ColoridoKolor LCDˆ³ÇÁɼ· ¿¸Ì½· LCDFärg-LCDRenkli LCD0«0é0üLCDLCD a CorestextCopyright Apple Inc., 2017XYZ óÊXYZ qÀ9ŠgXYZ a#¹æöXYZ #ò ½Ðcurv #(-26;@EJOTY^chmrw|†‹•šŸ£¨­²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿparaffò§ YÐ vcgtndin6§@U€LÀžÀ%€ ÀPT@333333sf32 røÿÿóºýrÿÿûÿÿý¤ÙÀqmmod "Í#‡ÿÀhÂ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÛC ÿÛC  ÿÝmÿÚ ?þ/®¾Óx÷ß$óOXRKcs»HVïŒô"¦šÒÝ.äµ–aS™INE,óÚCdl­I˜³v#‘è:Ö|³Œç:Ök_¼ö÷c~_q6v鉮¥O$rBòO¶;~5Zòán.Þp[‘šdR*°®PœqÔ~5£5¥¢Ý½´²ˆŠd©*.õ ÷”­E[_Ÿâ;òÎów+Å 2ZŒòÛ:Ž~ã:š++ta4×`œ±Çµ:im ²k+F2³°i`}*”>Yp³((HwäâªNœeÍ&ÿ ü„¹œ[¾„·—&êõîrsž½ýêhíḲk±òùgkŽÃ=$ú}º^Ëi,Þ[Fq–ƒÓÒ‰¤¶‚ÉììŸÎ.ÙwÆ€öªQœ*Nušk_¼—$ãÒþ‘VÉ –îtò† åÐzÕ{ë¡uy%Ò.véÇaPÃ",€Î¹Lóì\Vœö±Ý=«Ì"uîÀ‘õãš”¹èÚŽš÷)Ú/;Ã3Y=Àù {Cfïïô§CajÄ<ó ˆ[i;=¾õ#Íimhö6Œe2•2IŒtèZËŽHãÞŒ§BsÔzÓ“¦¥ÔW~^½B<òMì‹7÷ÆòíîB`9Èž;~•,VÑ\YIrIO/ûàŒMs§[ÅvÖ’Ëä˜ñ†`J•ÆGOj%šÎÖÍìm\˽ƒ<˜!N::â«–q«:•­m{~D¹^1+ßO¸Š+uÃ]LŠ€å€9?îÓ5_P¹wÆu]¡ˆÀönªBL»‘ˆÏ®=sZ’éö±]5³Ì#+Œ‚:Œ÷œyEª:j¯®·)Ú3¼ßü1 E=³Ìß#Ç€ßCÆGÐÒŦÆëº{„HG\Xý¯Ö§’K+;G³·o:I0]°U@€3úæ²#”)ß"æ>¬;ã¾*¦éÂQUR½µõ¿Q.yFN-¢Ö§x·w¯õ|“YÔ«kj.eÊ¡ ßO¸d:l$‰'¹b?ÄGÓÖ¡ÔnÅíû\ÆôÝj¼R¨•Yˆ{VŒúu’^µ¤Óy{0CÀò3èk8¥: PVÕZµ‰Ôw!‚g²’ã•1¼g±<øÒǧÀO™=Â,}Ø»o}jIJØÙYÉijþt’ÿ¬p0 €ÏãXðÈUƒH¹RFG±ëz©û88*Šï¯¯˜CšMò·n…½^ñ.õžØAìI ]ZÉpNƈ|à ·qïšµs¦ZE|ÖòOå 3FÓÓ8Í+Íc§ÚMke'Ÿ, PEQîOZÓ’j¼§Vܺöÿ‡#™rFÖºW*Á¥Û>{˜’y#ïéŽæ™ªÞ­î n¢ŒªaBýР ç¾:Ö|Ry,|Õ €d¯·×Ö¶îôë(nͬ“y\ŒàU€#8éYEsÑk’Õ__ó)µ‹ßüŠööÖ÷6’J£cB>}½ÃwúŠ Óá83\Ʊ©ÉlœãÐ/Lš´óiÚ}”ÖvRyòJw€9àk€ @ ™Æ=G~iÍÒ$k$ß__;æ—3ƒ²è^Õ®Òòø´UIçåŸoo Å´’¿îÞ!– Ñ”÷Ú­]XZCr 2ˆPU™Iœs‘CM§éö’ÛYÍö‰e;!Bƒ÷Fyç©5§%Om)Õ·/_¸žhòF0*ŧ[¹ó$¹"þ&ÉÝ@(Õïb¼Ô<ÛQ„UE]ßÝQùÕå0·˜ê{¯LjعÓlc¼m/“ò+«‘¸oQ×ñéQ§FQë=/Ü%hÏš£¿oÔ¯k7PË1^ ‘Щ dcN‡LÈy."ž­ü_•Xy´í2ÎkK9~Ñ,ÁC¶6¨^ yÎzæ±¢ÆFå 3ÊûQSÙC’5׼皓N˧¡sXÔ#»¾ l˜E =v¯?Z–ÚÚÈ%“æB2ØãržÿPj{:Å/~Ìfò÷ª²³AR22qR´¶:uœÖöÒý¦Y—ÀmUQÐ×'¹­¹**òV¹~]¾û‘uÉÓOñ(ÛéIƒ-ÜK9bIlwõ4ýfö;‹á%’íDUDÏ$(éǽeAs$`H꬧!ÀÈôÏjè/´Ý<\¬Bo,:«Æì [œ9ⲇ,èÉa•¶¿‘m¨Ô÷ß{~ð Ö0Ã}o4Œ»d‰w·|§r=¨ãÒGKuÃÝŽs÷G$â¯lt»IíìåûD× Ü) ¨9!A䟥`Á3#—8e8;qÔ¿CN£§WW}mëÖÂ<ù¹]—KšzÅôwWj¶œG…BÝvŒþ4¶èC;ãcÄ››ouèOÔU›½3O[¤¥òD‘‡Fe,¥HÎ9ãÚ¦I4Í"ÖhmåûTó¨Vp ª¯ ÈÖ¼•yN­¹àv#š>ÍF•樓Øtd—÷­yB/Ÿ˜@¾¦Ÿ­_A5â­¢•Š(Õž»TpÊŠéã›%Cêzßò®‚÷N°IcŒËäù‘«£%HaÐŽ¼õ”ygFK¬ÿ­‹•áQ:šïm>ò­ŒvúŒ34£[§˜vôtèÇžŒ´ØthäÌw‹»d†ð_J½iš-¤öö³ «™£UõëÉ&°ñãËíR½Á~uU(Â1Ä+Ë_ϯêU&å*m¥ÓõüMMnú «áöAû¨‘QõÚñÛ4í6u8¥3G¶HWyÛüIœÄU›Ý3LƆSš1$nAuÚü€@ù²:qOôýÒx¬¦û]Äé´²©©ß¹$ÖÊ•w9Û—ðØÏž>ÍBï§ç©F-9Ϙ.á÷rÄ6=1ÜÔºö¡ ÷ˆ¶ ˆáAdŒ?ZÊí¢€Àã G_lö®’ÿNÒüØãóŒBXÖHÙ”‘†çñëXÖtd°êÏMË~ìâê»ïoét¸mõ(¦Y% ü½ÞüE2-;¦óEÜ+çs0›qס š^‡k:[Î.®&O,²©UD=@Ï98®r É`}ÅAP@*ÝŽŸSN§³Œ`±*ïËõýEw):n˧õù^!Ô­n.!ŠÀ~æV$ÜJ®yÁõ9£IŽÛTŽT‘ Ky˜S€Ê:ýëVõ=/LiL 4K$lÃp Ù;Xx9Á§A&— ZOöiþ×q:Ë"‘)ëÉäšß–·Ö=¤šåù[nÛ™sGØ(ÑNý?áÌÈ´¥ýê^@°ç—nÓ+Üâ¥ñ§k4ðÁ§.b·ŒF¥º;Ö:„ÑH$UW^Á‡§µuúN|ƒçuž!*;ÊêñXAF¥¬*³ó6—¹U:­½ìA£Åm¬$XÕ¤þ5þ!ƒÜuâ«E ,îoaH{³Ÿ˜÷O9ô­›Q¤ø~Þi-n>Ûs2Ã"•óŸ›’Oµr_K ‚]}£{UOÙÆX¥w®ß©1ö•¥Óúfÿˆ5 F’ m7&X„*ïÁm½Oâi4u·ÕRX&\O f_“€è¿|BLU»Ý/I–+Sæx„¨ì ¸U€çƒÐÕ›4м9o<Ð]}²êX™2ŠU#SÔóÔãŠÕF·Ö9ŸÁøóSTU:w¿O¼Å‡ÃÑÝ?™ì+vs†ð¤Õ¯ê&kh4ÿ Œ"³q¹ÉÇ¡5ÏèM y˜B½ÔŒñ®»QÒô‰’Ô‰ªÜE¾)Ü£w8nü`þ>IS’Â+=?¤\ï ±uÖ¶Óüˆ45‡Xi­f@“Ć@S€êÌ úÐÕðÚÜö×Ð,?ÞvÚËõP:ZݰMÉ<¶·"úêTd5*‘« žO$⸨µ á`Ñ"²œ.Öö?Zsöq„#‹WAÔœäè;.Ÿð.tþ&ÔìZXé ´6‘ùhÍÎBõcîOéKáèáÖä’ÖXÕ."F•vdU2ŸB ýjÖ£¤hÓÛÙËçd¹ÍÙI “ʰë€z¹¦.‹áo:[{¡{4m(¤G°äóÉ'v­¹k:üïàÓÓo¼Ãžš ©Ò¿7ü|Žv Çv|Ë[èVß¹và ôÚyãÚ®ø£QÓÈ´°Ò²ñZEå£0å±ÉlS\Ä•Ä ¾4VByVè{Ší5M#DžÚÎO8Ú¥Ì~dnÊX/8eaÔò8"²ƒ„©Î8EiÁèk;¤fÚÖßw–ì£áÔµÖfkKˆöNˆ] ôp£AéÇ¥TO %ÔÅ­¯àd¹ÚT´½ÈãÑiÑèžÏ о»–2‹å©TE#“–ï\ :¤ðÈZŒ¬FU‡þ¿•ä…8¬Z»×úb‚©R¤ÒÒ×_}®u(Ô¬ ; '÷±Z¡E‘ÇÞ9äãÜÒøn;]rᬮ“e£ILûYXzàäÞ¯ê^‡qaepd6it…ÑŠîU9ÁR:‘ž•kHƒ@ðœ’^­à¾½dtA•Ž0ÃØ'#ÒµQ­õŽtýÍ= ùéý_’æé§Ÿõs‹Â‹ræ[[øVí#Ê= ÷?JµâGKŽÞÇMÒ š+HŒjïÑŽrÇñ<×1­HÓ‚Æ+¿ÄPu'RRÃ6—šü®v-Ôôë{;=3Kxí£Ø®F7å›èMGበ×ïO»EÊ«I¯Ë¸(åXwÈäÐÔôûM±»i ¢])xß•IÈ*G\f¬h¶š'„ç’õoEõã#$K•DW’[’qZòVöêq·'ècÏOêî¿7O[ë®Ç6¾ŽîBúmü) $fV*éõÞÕ©âÍSL¶Ó´í#EÌñÚ!Tvà1ÏÌØ÷5Ʀ·yæHB…'£Aö?Zïµ CÔ4{ ÖÙÇz¦Hß„mœ2ýÜò;ÔAÓ”j,.þBçÏÁ×w]>î¦o…L ¿ûÒ(¹Ui"d´d«/®:j¢žŽþS5…í¼vùäÊÄ2ù^IǵuZ–…á“|·ÃP¾xÞ8–5`‘‡9äœt¯8]½[m áAG÷çÒ”¹U(¬Z»¿õpƒœªJXfÒóý.v~,Ô´«-:ÃIÒ ¸ŽÑY·›9fç¶zTšßćöuä`\m-ÇѶŒ•aôéZº†“ j>Ÿ¨I)²K¼²67„aÃ)õ\óíSh6^ðŒçPKá¨^l+DŒ¨¡¸,ÄòN+[VöÊQ~çèf§MPpùµ¶ûßú¹Í‹©šM>úÜG»$Êv:}W¾+OÅZŽ“a¥Xhz+ …µÜ¢VèÎܱÒ¸ÏíËØî{`7}Ò2'¿×Šïo4êš%†¡#›$»ÞP¸G"œ8#©ŽÕœ=œ£R8_‹úعsFPuž‹oø63<+4>!Ô—JºEŽä†x$L€Æ1’Œ=έS> ‚ög“M½ ÝœLÅZ1èG|v®«CÓ<=àû±©›åÔo¶²À‘#"!q·säœtǯ6þߺŠC%¨cÜp¬2×üõ¢\±§‹Õëêr•IKôÓ§¯s°ñV£¤ézM†‹¤“p–ÁÀvà;—8ôÍEákˆ|Aª .ò%KE" ¡Š‚J°ï‘œV½æ“ êš†£35ŠÝïÚê7ÝNÝr*ƃ¥h¹þÒká}zU–‰ ¢î,Å»â´å®ëFPø?>x*NókýzÇü!‰ys#é—¶ëo˜LÛ>£¾;bµ|W¨éz^‰a¢é$\‹]À9WsË6=; âψ¯ã¹y-UQKô sëžkÐnôWðõ–©+5º,APYc‘NÖwS׃šˆ:rSXegýl\ùààë==:ØËðÒx‡RMPv Ð:q’ƒ;XtäwíUäð4w×/&“{q³VvØÑžàŽþØ®«Ãº&àëäÕšýoï6°†8Ñ‘T¸ûä·9ôæoâ;ä¾v³XÕwµ†sƒß=µ)rÆ”V/ÄQr•I<;ÓÏü™Üø³QÒ´¯éÞÒ˜\%©a¼ôi.ØôT|%ˆõ$ÑïÑ#™òÐHƒ¨ÎÖ„t5»}¤èdž4ýVBl£¼,U€Ü"•×þ$nî*χ4ox7P»ß®£y‚ Ž%(ŠX`³oç8ì+KVöªQ~í—ôÌý¥5JPwæ×½ïù¬ž[û¹$Óo H³ÊÎÅY;GñÚµ|S©iZc èä܈³)$sËß…qø›P[ùg´Ø‘î' ¹Ü2y9çžs^‡u¥ø[ðŦ©;%ºv¨ßåʧ 0HÊžµöoa´—Ÿè\¹Óƒ®î¿[u0|yˆuH´}N4I¤æ cù”gkƒÔuõ¦ÏàQuy#é—öꛉe¶´mžxÇ<úWKáíÃ~Ô“U›P]FíA0E²¨b>óç^ouâ]@_Ë-®Ø×y%Jç#?ÅŸSéS.XÑK¿ÌqrW,;ÒÝ{üÎçÄú–‹ x^Çú)‚Ýäf”ýוÎXã®AŸJÌðާ»ªÅ¢êq¢Í!ýĈÀÈV0{ÜŸKðÿˆ|-e¬NM’ÝË b£rÇyo—;’fØÑžàöa]/†ôøGP‹]—RMFägìñB…WyÜŽ8æ×Þ(Ô¿µ&›NÛ—l‚gëÿÖ§+BšX­ïóå*®Xg¥¾W;Ÿ_èþð—‡´Ö†¼¸Â´­×û¢³¼ªÂC­Ã êqÇÓöy£ÕV_î¶1žÕÐK¥h"ð¦¯vMšÜÈÊZ1‘ÉÁ*;«w«ð÷†ü«E®\jk¨]DÑâŠ6U7Ü·§Z¾ZΤeOà2椩J¿6¿yÌ^ø u Ji´›¸bV|¼w Q‘»Žù˜­_ßèÞð§‡ô¶ŒÏ'ð¼Í÷ÈÝW â­Mµ‰ÚÀ$`HÙnÝÏ$æ½];ÃúÿƒíukÌØ­Ì¬ŒÉÏ•<|V‘SIóª¥ÍN ®ïÛÐç<#ªG¯ê躼h’Lq±äqÈ =J—Pø}öýFgÓn @[çŽgØÑ¶yìAük£ðç‡<1á R=nïQ]Bâ3˜"‰FóÆçÝéè+Ï5_j­Í5ŽÔ@ìp@;±œ“ŸåJV4±Z»üöo*­á¶·Ë3·ñî‹áo[èt‚ù㜼’„i[®;áG‡àíb/jðèZäHrÛ!ž!·cÿeþ%'šé$ÓôøB-Zû6biŒr40IP}à:•aÔT¾ðφ|%ªAâ ÍIuâ`öðD…~8.XôqZrÖu"é?wúÜÍN’§(Îü×yÏj?Åæ©;éW¶ñeÉ’9ŽÆóó}Fk[Äwú?…|káí6_·4s4’H8W•ÀÈÊ®TñfªÚÔïg²=²1;†Kóœû× › Å ·Õ¯”Ù‰§x¤1óåÍ0ÊU`FED}“sT½ýlT•Hò:îëúÜæü!®®¿ªÁ¢ëQ"ùìc*ýƒ„™©oüö§;é–ñ†r^ÛaŒ÷Ǫ砮›Ã¾ðß…µ85»ÝQo¦‰ƒA HÈ ö.[¦:ñ^q«ø¯T:äòiÊ‘¨ä°w=N¤í këK¯Ì¤ùª·†vVù^þgq¯ÝiðtŒ¢úE˜¼’ºÒ0ä.{(¬Oë§_Ömô=z(ÔܶإŒmd||¹õ‚ uK§è^+ð\zž¢†Ë̘Å+F2Eõ :Š—Ã^ðß…5h|A{ª-üÐ2´0C(/‚¤fè'®Õ\âéü&jtãNQ«ñ]ýþG;«ü:Ú´çI¼†&,|اm…uÁî;ÖÖ½w¢ø?À‘xzÂA{"Ü4’ʹ´ÏØá5ßjï¯\ɧ”@‹¹,{ç=zvZ‹| ±¨²‰. ŒC„š>VD³/QSNR𡾣šª•7]Ýhrþ×·µ«}_Š5,£)'ðäwRx«ZÇìÏ&y 2ýìS¹Sÿu'šÞðß„¼1áZßÄ7ú²j[°k{x£dÌœ·¦s^{¯xÇV}~îM,$@HC\–n§9íS+B—ûW˜×4ª·†vVù®Ýhž ð$z œ‚úe˜É+ãäi›tt å¼!âõ­VÄ0F‹pá"’0CFçîäwRx®®+] ž][QV´ ?“)’ ÈuÁ‘Iá¿x[Ô>!ÔuUÔZ 0ÆÉ— ŒÇ =…\•W8º_„)ÓŒ%_šï¿ü1‘­ü97zÍËéw¶ñɸ‰"œì(îpk_Y¹Ñ|àOì;Vúñ/Œu‰¼Ow%†ÈvÊw±.Ääçõ¨’䤖'¹IóUoì­ò;fëEð?Fi(Ô&óüÉr¨d#Fy q\¿„üRu]N #Ä"ÅpÊ‘Éá‘LöažµÖÛÚè¾/ðAÔµHÍ©óÄ3†¸ÁIÇ<Š~à ø{P‹]Õ5…¾ò\<0C)fùì\UÚ«œeGá%Jœa(Õøµþ‘®ü<zÕÌšMÜ1Ê_Ã;y{\pJ°ê½ñZZ¤Úüú5¼âþv˜K; Ây„aUIçW âOêÓxŽìéÁ"Ä„»ãëƒÛÚ½Â×Cñ‡‚eÔµˆþÌD ÚIn©³ç’¥ñj6§ÇÛ;­;~'áogV·Ñ¼CK Ü‹rÅò´NÇ}þc[~ øqöÍvâM:ê§ DÑLÞ^×§¸>•±áÿøKÚ•¿ˆuMYo…»¬°ÛÃ)w\•[€2q\?‹ã8ÍvÚ]®ã?]êzÄ_fx¦H.Œ]2~hå@zc«hžð®…}³«k+y,¯FÊÒ2œ¨rÜœf¯÷ÁÑøH½8©Æ­ùˆøïKûJßÜÏ*ËpcÈŒ6¢y#’kƒð÷‹ ö¡o¦x†Å­ÃßÃÇ¿å þÐÉé]¾‘•âï^_k1yO ‰ ÃCÆC Ç"ƒÀ=x¨´oxSE¼‡]Ôµ…»†Ø¬‘ÛÅW©Ê‡'€=jœj>GGáþ·e¤ªïÿ Ï|:ûWˆnÆîn× öçVÉ’Ý–+†‹£«ò’/ûCŠ¥¥|=ð–—u±¬kîÚm∬’m9 äœô«j«åt_ºJ”2«ñ[ñgÃ…Ÿ_’; ¨"¹ŒåI˜ `£‡VˆÁÇj¸WCø}àMBÅ®þîå•î _êÆÞïÉÉ5Èx÷ÆÚ­ÏŠæm9RKœg¶qÏ`1Ítú i>2ðn£q¬B#’Ý’+“ÑùI=Îqš"é:’ö?iìâêm§©Ãè0{‹¨íðuõ´·){yrPÍågËP¼*ƒß¯5çš'L—QA®ÚÄÖR Œm’0OÞ¾8⻿¾•âÿ ßÍ­A²[m‰;ÅÀdºêáŽõOLøyá 9¢Ôu=lOh˜"âe•ðF‰àgŽESU+¡ð’¥¤ªïýlYñWØî¼@ë¦ÝŠʨWIˆ@À•Õ±ŽGPj؃Ið'‚µ;®òîóË’àÃ÷S„ŒùbMr>>ñ¦§uâ‰_O"l)f 628ûWQá³§øÃÂZ•εYlü¸® Òc©Àþ%ö®e‰¡ÈÕz‰ú;¿Àö%‘gjqœp“„ZÞQqN²IuZÞÚ¢=6ÇKð…uHïn£»»»EóD<¢F‡!sÜ“^m¤øÊQ2EªÚÄÖOÃ…ÈtSÁ`{‘_Zü*øG¢|RÐïqxÚ½Ì1mš=6ÞHU÷ôC5Њ ã®Fxç¥kh?°‹¥‘o5R¡\2ÛZVï±Ýr€g©«ÏÄçÙ^J›®£Ëk§tõòz¿[[Ìûl«Áßs¬41¹^W*ð¨›R¦á8Z)o8ÉÁ;è¢åÍ£÷v¿Ï¾"øe6»©¡¶ù „C+mhHʹ`Òç4šu†“àO ê"öê;»ë”Ä')cîÄþB¾åø»ð³Æ~ø9ªëöúÖJhnmm­ÐG 1!ûÓ>Ð ýÐxø3ÂSZø«FÔ?¶a{Hǘè6ù‘?÷Úžs]fe„ÌçV®¦“²jözy¥ßóßsÍãÞμ?–.ÏéÎjÒUer{·“¯ Íhã-ÝÜy[QmÅyö›ã)D꺕¬rY1ù•r$QêûÕßø¯ÀÓjQEaysy`§œJ #nU9ªv<#[ûÝp ˜Ò&°ì™'hÏsš©ñƳϭÇý‹¬K³x8EñÐu®ûJ4›ÄŸ u:ËêÚwÞ߉Ói:~™àjkž+»û¸v:ÂIŽ8”äÝËâ¼ÇNñƒG(MFÚ7²ÎW*àzƒê:סx:{_i’jÑ>Î#º|¢XìlŽÌ¤Öe—ÃÏ €·×Zæl““ˆ‰Šÿtœíç¦iµRJ?WÛúÜQ•8Êq¯{—¼Yà[+­Fgv‘L!]«7ʲFÃ*Á¹Ã àÕ;LÒ|  j^]Çw}uÆXNR4''¹'Ò°~!ø¶iµ´]*%…D(·, ã üëKÂ7Vž+Óµ5ˆWε‡{4/™;H>Œ¾µ\Ô½³Q^ð¿{ì;÷tõ<þÃŲ,¡o­b{6?2òÜ7\ãšîüQà« ë¨N¼H¤1«F&;D‘°Êò:Ðæ¡´øyá^/®u°,Ó;£;áþïãéT<â ú¼Q葬IJ#ÏÌÁÂLàu¨4iËë[9FuWÕžºú“¦i¾ Ñõ on£º¾¹„Fc€åbˆœžäœWšÙø¶X˜ ËXÞÓ< á±žvžÄ ïü!y‰ì¯aÕaV¸µƒÌ2 ÛæDHVVí‘‘‚+:ÓÀ^âòëZ f(">v?»Ÿ»íšn5%<6ßÖ〈ÆRUïø,hø£ÁVw–éisSyJbóI ,N7)Èþ }*ÆcaàP{»˜înî¢ØD$²ÇòI=ɬø´Ük .5‰R$îä„ =3Ú´ü<*°¾Vˆ4ö°™7F6ù‘“‚mè5IÐuÚÅø\–ªª)Ô~ïã¹ÂØx©£‘EÍ´mhNFwìÝŽ3ùWwâY]MXÝ$R4jÉæœ #a‘óvaïYÖ^ð«í¿—ZeÎZ?-¼î?‡?wÖ™ãÏ µ+tÒâ$h«`I¡)F”¾·ª4rS©a§s{AÓôïi—÷×1Üß]Eå„„åR>­–ã%¿•yµ¯Š ¹¶í˜Ñ¨!±ìÞµÞx:hÞËâïÒäµUaïRü½´¾ÿyÆZø‘íä̖ѽ¹?2½·ýîÞÕÙëÞÓçŸe¸XžX¼È|ÞѹŸUäsT­üá‰órú¿“kÔÆÑ“(¨pO½3ñ$VÑéh8aDŒ¶ ¼ SÖ³¸é^wk¯IŸ5º<ÐðÄwÃv8®ÇÂSÇâ¹´ÔbS5¼&TeÞOo¡ª0xCÃWí¯¬,ÉѼmç.:€Gކ›S•8ýW`Œ¡ ÏÛ]½?àlikžÓæKV±¹“Í„ÊN[¤ö ñV´+ ?ÂÝ^^ÝE5ôÐ<1Ç Ü#F»7©èbøÇÄVóÉko¤E²cÄ[“µzzž¸«šÉ=–£™à…¦ŽDUåÐã®A«æ¡õ›%ï~¿kõwí[·U×sŽ·× raF‡ø‘†fõ®ÓZðÖ<6Ÿa"ûD^l /Ñù*Hû¥MR·ð§‡.s9Õ–pIddc(ƒ±úÑâívÚf²ƒHM‘AŠܰDèOlžõšS…9ýoUÓïéähä§R>ž·û¼Ñ]|z{líçð¥ÿ„&óþ­¿ïñÿ çá$ÖSä 08û«Gü$Úרÿ¾V±æÁ#6åÄÿ7àÿÐþ®f7½Ãõb öÍN‰ – <£æFUb:­Mq ”7rYϸ8 N=A¨§º·û8±µˆ¢dÍ÷˜úšÎÎIÔœ“ßïô=†ù£MÇ‘.ÞLË=¸É÷>•›s0¸™®Û¼õëyL2à òqéZ—qYG}%¬›ÆÓ€ËäH*Õ©Z–»Á÷j{×lŠ$G²’æeÄÊŽêÃùæ ZD];¼›yTÆ9÷4\\[¥¯Ø¬£hãÎæ.Fæ#ŒžzsÅfÃ#Ç:œd\dàŸJ§RœeI&ûùŠ1”àÝÚ%½º{«Ö¸bsœzôüUÈbŠm:K¶_š"ªqüAº~"Ÿu•¾¡%¤Êÿ!àÇŒzpqÒ£º¼·[°Ú+,`îf|ncëÇj|²§Rr¨Óßï'›š15añG¤Ûu$Ï!S¸ \ŽÅ½*…ÝÏŸr÷,yÅ2Ú_*UÞ3ŒnSÓ­iÝÁeãÚÏ» ~VLt=Ž}*ïhµNËUó~¥´¡S[²;t†}>Yæ\˜JîÁê§·áK ZLJ.d‘ä ?Õ…ÆHè ¢{¸cµ66JÉ;‹7V=³ì*…¼Í $¸ÜªG£ÒªS§Í]ÛŸâJŒ¦ô$½¹7W’]¿Þîã§=‡Ò­C 3é³O(æ"Ç ÓòëSj¶6wÏg6õP~VL3Î')—–éjl,ЈÁÜìÄnb=G¥U:³I&µÓÏÐWæ§Mvû„†%6ÜÉ+°ì †'°-éU¯nî'¼iÉÁ88êì*¼W o"±ù¶žCz ÖÍôßµ¼áÀùJ²c##¡â¡~ö…©ÙYþ>¥;B§½w§àW¶Xg°šiG1c,:²±Ç>ô°Ûèé‹©¥fþYíê} ÷¢âîÚ+V²²•I ÎänoN:c½eCs$ ç/!z†èqU*ƒ„j$ì¿_‘<²’”¶E›ë‰.®Ãqž@ö#Ò®[D—62Îê ƒg9Áen1õ¥¿ŠÂ Ö³¸ ¡@ÚSó‚ ÁÇçPÏui«YX£*œ3´XŽ?ÍW+§Vu'+­«X9“„TU¶:SŽßá[ºŒZ}µïÙYT…*W€89ôÎ:ÖIª”¥híør¬¡Qs]èAf‘]YNҨ݂Hಓ‚ þTCŠÒf™ög%òqÛ=¾´“ÞÙÛÚËaamq™ñ¹½°;µ—’ÛËæ†z¨ô4ç:tù#Q&ÿ¯K‚ŒåÌõEBñ﯌ mì½¹«ök ös¬É–w)é•-†_ñ©ïూóìó#ª”VSQ¸gtúTÞÚZZ=ޝ˜7I$Ÿy€9v =ªù' DªÎZ~zv"üÐŒ`ŸOÌŽ+})šâiL}LArÇÛw¡ªÚ­ãê¦åð€*£²Ž¬èæ– \FÜŽpyÌWK¨Ûéð^‹k…uBªêÑã*¼ðpj#jÔeK—kù”×$îîÞ¿ðJÚp[»IþÐ7< ¬1•'Ç¥:M”\M3ì˜ÂüÜvÍ,×¶–ö¯c¦$€É†’I1– ã€+)ÞÞO9#œuNp¥ìéÕW×Þ%K™ìºzu;çÔ.Œßp`möQÀò«ÚZEqip’®^Ý|Å=2 Ã)þ•kRƒNŠ÷É™U•X2`•Ü3´çŒ Ô3^ZYÙÍa¥Äÿ½æI$ûî P0+g8b%V¤“_ð;Ì¥M*h† MÓí3O!Äç#ÓwaTõFMFìÏÄJ@Úª8UQIç·”OŽpzp?—­tº¶›ÊG,n‘Ê‹*íÆäÜ9\>õ”«FJ‚åÚþ>…5ËQ7w½¿®›¶òÚåfPÍo™“ЦpÊGã‘M‚ÏAeO4›¬{Þ⪤¡IB—3ÿƒø‚Œ§Í(»vû‹Ú®¡%ý眣ÊU_•G (à ÕíGÂÜ /{Ãtb;©þ•sS¶Óc¸.#tWeS7 `2n A-åžg-Ž™™‘s$’c,@0x§³œq©9iÛ嵈æR¤¡Iv ¶°Ð¤ÅÌ÷„ïLž;nô÷ªÚ¾£öë¿:ò£yÂ>µó@VE$7Sž„ßC]F£o¥˜–xÝRx–Pb#r–#Œg¥e«Q”hÚ;|ÿÈ·jUT¥w¿b–Vþ)à¹Pío•÷QÃ)ü:’ ;ÃÒµÏpêXöeþªi.´ý6Î[.9L£|³cqQÎÕµËÇs=´žtmµ‡9# ýEUI”a Ë™ëòÿ2TgQÉÅ´Ÿù|Í]cR7÷‚dAaBª÷ £Wôoø˜Gs‡xÌV#$€pTã·¥[Õ-ôÕ¹‰."uIbYA†Bã$ç#" k«-6Î[M&)s0ýä³`£²Æ?Ó’¢Ä:²—»ÿ±<éÒŒ)ŧ§çÜŠÛNÐ&_>{™Ìbå±ìÃŒ}j¶·ªKrÝ|˜Õ¢ŽÊ8‹ äðÊ&·bX`“ü>¸>ÞµÚêÖúY’q¢OËò`2“Ôc¦3ïYÖ­Æ‚åÛæT¢éÔŒ§vPÐzšÜÚÜ€ífh›¡ÂãrŸcž(ƒIðôÃÏšæDQËB-î†ô÷«"÷OÒíe³Òa”Ëp¿¼–|oÚ:ªÚ¹8®®`˜I Ÿ2üÃ<Œž}¨©*ta×\Ïòª•%)EµØÙ×õS}yÛGåEa#^ê‹ÐgóÍ]ðãG¨‹˜®UZHb3#÷ù:«v"¯êði öF»‰‘.`YŒ€è_9PdTqÞiºUœ¶šDO¾uÃË>+ýÕŽkuN¤q>ÕËÝÿØËK¡F/È¡—á鈹’æTŒd˜‚e¾‡ó¨õícíÓFö‹äÃ}™¬.îbq4 ‚:c'€=?k¶Õ`Ò™m~Õ *ÜD%ý×ÞF<ã® aMƵB‚åzÍ{*±s»ÞßðÆv€ãSólîÔHÉHŒz eOª‘O·Ñü9tŸlžêXã\seoCZ‘Ýi: ´–šÒ÷RÅx‚o lÕ_kKw4 f†(£Œ$`òv?ιô½º…üè¤(ÿcøw¯@Ö ÒeŠÈß@ánáY³FÇ9À<qÐÖpp­JpÃ.W¡s^ʬ]KË{~‘5i¦³¿_1Ò’7#•ÛÉ\ô ŠŠ Ãw¤Þ™`E墨Y°:ª°ãšÕ†çIðü2A¢Ã3M:i§Àùz•U{f¸(õ ¨¥A)F, àðÓ¡§9B8C¹˜¡ µe)Òn+¡Ôx›]ïožžL0&ØGRx«žŸû^ê]>ñwÉM4.z©A’§Ô0ÏãŠÑÕcÒ'²°º½ÑocóO•€èç‚Tªzâ–ÖïHðôÚèÐÌó]¡Vžp2©T×?JÛÙÕx•YKݷ鵌}¤S¥~Ÿ~ºÿW2í´/ Þ¶=Ì'V„G¹‡¨Vô5‰õ´¼kh´¸ü›xcÙêÁWŽ¿\“\Šj7±L.måÙ'Þ‡Þžµé:´ZMÕ……Õä#¾‹ÍýÏ ç~V#$VTå Ôç :åf³NXJ£rÞßq™á+¬]ɦ^¨”ˆÚHݺ©Q’:‚8¨íô/ _»\µÜÐ ?4A7‘ì­ýkbÚ]ÈÖú4Ü\©Vž`>æ9Tb¼Ñ/¯c¸óã‘•ÔäcŒg¶ÞþôIÆ(C®Âj“•Å;Xë¼Q­¥ÂÚA¥Eö{hˈw§ÜÕ¯Ýÿkß¶“©(”ùo$nÀnFA“’:«1[šh÷ÚfŸw©[2‹¸üÂ!Àd`pHŒCM³ŸFðÌ.º5¼ò]\ÆSϹÀ € ­}•_¬ª¼ÞïõÐÇšVt¡}mÿeC ø_RÍïÛ&·@rñ˰õÙéPx·\Šu´µÑ¢0ZÁ—vœ’}ÎrkKýA'ó`‘•óôü1Ͻz†¢šUþ‘§]êP0‘ù‡ÉÀd|íf¦€pk8J¡8aÕŸçþF“‹§R2¨ïÛËò¹à멵]A´»üLDo$nG*càGSáðï…õ&7_kšÙKÅå—8î³ùVÝ‹hWM‰.®—ϸaq’¨=zW•%þ¤$ûTs27Q·€=Ž(“*p†%s?먣Õ©9Ñm-;|ýÓÆì2Ggg¤GäÁ•›– ;û’y5cÁ7Òë:‘ѵ?ÞîÞ6aÊ2|Àgû¤pEmj‘iWÚ.ŸsªÛ¶/P³y+«ƒ´°ã=y§X6‰áPãEŠâ[«•)çNp¤r¨r:÷­]:®º¬Ÿ»ýt3æ‹ é(;ÿÁ×S <7ámRVº7rÚ.[|B=øÏP­ééLñwˆ šÖÆÓCˆÛÛ@†8Aå•W©ú±ä× u @Ý‹¨ådf„:SµQ†!]ßîùŠ<Õ*JTŠþº׌uøÚÊÊÏEÉ·€ˆŸ½…<“îM»“WÖªþÿz»E#¹Fzú0k¤¿M'Sðö¨jÖìVõK?‘…eu;w/`ã&7ûÂ,N Ì×W È'Ÿh ]r2}ÍhéÕ–!UŒ½Û/»ÐŽxûMEók÷ß¹‰…ü-;\}²kEV%¢ï#=vz‹Åºý©Óì´ÏFÐÚ@8÷rÝrÌO©<× Úž ÷¦Xæh˜±+´ãœö½zµÒé:·†ôÝGU¶fûníþVCëÛTA¬jB‚åeÊ3§(J«o±…àKÙõa4-T „áü™ ÑÈŠXr9Úq‚*x|5á}Rw»KÉ­âÏŒ¾=vz}kwKÿ„Â2nÑa¹šîuhÖ{Œ(@Ã`ž™ëŠòí}AïLñÊаb@S€¾ØÿSp¥J1Ä®aE:³”èÞ+Oצ¶;¯kvÉce¦ø~#´A’6n§o$žÙ4ž½¸Ö5•Ñ5L²†1»™Fr¡èEt·_Ùz¿†´ÝGX·-ö°ÛŒ<2ȇg˜½¾nâ¦Ò ðï…$óôˆ®&»¸R‹4û@@G!Bõ'Ö´ä¨ë*±~ïõÐËž*‹¤¢ï¯ßÞæ$>ðÆ©q$âî[<1ß–dú” Ã4ßø‚Þ.ÏJðâ­mËFŒã/ÇÞcîÇ“^y.«ªMzÓ¬ï J„8Æ;W²\Û麷…4ÝGY›í»ƒ˜Æ×Ûæ/n{çŠÎ…U8ÑVeÎ.”¡*®ëúûÎ_áþ§s¬ëÑè:±óÒà1ØñÈ£p ŽÇ"®Â'á]RêK¯¶IdC25‹xÎy(}ûVæ“oáÏ Iö½¹®ç4š`¡cWûÛBŒdôÍxíΫ«M~÷ÊñrÓŒqÿë¢V¥F1Ä+±Çš­iJƒqVþ´=Æšý¼:EŽ•áÈÌV¶å£…˜eò¼»ö˜j§€uµr-Wo9.7Ù†Z7Qr;r+«¸:nµàý/UÖ-‹-îåCò°’#·ÍO÷†3š~‘‡ÿ2çÓtçU¹.ß#øªÝj:ô>ÖÒ!¹$!aóDáKR>œŠ×oxcU¿–Sy5›o>d~Yp[¹BÆkkE´ðç„nûI‚êæîbcŽk€ Fƒ´'¹îkÇo5}ZmJK„âdªìÈÆ9>´¥ûš*5ÕÊŠ•ZÎT/õØï|gâ+;ÏFðÊá/ôˆnn/&8¥¹Ú=ü¡F ÷ëZºu%V5"ýÝ ¹á2§Êï¯õsü#á}^þi£ºšÅ÷“,a ®ìòÑxÏ¡ªÞ5ÖìtÝÓIðÜN¶ð±Ty>û0åØúÚ¼òóXÕîµ9nVg„,´&A\?­{M§ëÞ ²¾×­¼ï´HÑIå|®^><Åã©{TFP©Ï *Ϲ¤ã:nªî“G-ðÿV¼Õ¼Co¡k/ö˜îŽÅg²0†{ŠÝŸÁÞÕïå“í²Ø2¹ócXüÅ$wNxÍlè¶~ð¤ãRÒỹ¼“åŠYÂ…‹#…àžÕ⚆±¬]ê²Ü™dƒdŒn);R¤¡Y_P\Õj¹Ðn*ßÖ‡¥øË^´Ó<7i¡øa- ‘£W|Ìç–sî{VgÃÍRóUñ=·‡u™ Ä7­å«oŠLnVSèäw®Ò!§k¾³ÔüAnfk™ v ¬ÍÚ%^Á±×µI XøgÁwIªé]\ÞɈáš}¡!ßòœmãvzÓ’¤ªÂ¤%AR•7×Ôºð_†uJY~Òö‰Qbóz¡ížâ¡ñž»i¥xn×Cð´l[ÈQ]ÇÌ\òÒÙ'zWœêšÎ¯w¬Mr“4\¤*©#n=}ëÙc6ÿ,µ-~Õ¦7¼ù|9hË*ú~o¥Dg Žp¤¬û”ã*\“©ªÓNÇ àj÷Pñ ¾ƒ¬Èn­îßË€Ýã‡_NzŠê.üá­[S¸/{%Œ»È•<¯5IONyÅjè–>ðmÚëd7wWOòE,ávFO¼^-­ëzµÎ¹q?žð˜Ü€íÆ3œ{žôIû*)bõþµ**U«9P|º~½Lñžµ§h¾·Ð¼/-¼àI Ë´‡ï;{žÕàròûÄVšºßk·¾E–xÙ²ÔöÁê;×yköx K^µiŒ“5´¾_ÊÌSîÈ=­K¡i~ðuÒkºdw7!’ëhŽx-…êGlÕ¸Ô•HÔ„´ÐÉU„iNœ•å¯ÞdÞxÃ:®±qþ™%„ªäL¢3"3Ë'<U|gâ ÂVÚ„âe‚ Hó%ûï#ãs°íØ¥yƱ¬ë7ZõÌ¢g„E+( px8ÏN§­{”¶>$ø}m©øŠÔÎÒNö³ùü¬‘xá€8=¸¨RG8QVcšœ9UnItþ·8/kúçˆ-4]e¾×ow Œor1û¬§¨Á®ºÿÁÖ5{‰VîM>`çÍUÌF#‚ËÎA>†¶´-+ÁþºYÓà»»»l2\íÄ[Œ€¼ô¯Öu½bó[¸M%¸†R»Tà©ùýi;Q¤£[]F¯V³m?^ǧx¿Y°ðß„bÑü)ˆb”ƒ$£çy–r=qÀÌø^ÔoŸ:±Y•cÞŽWø—Оõ£ i>ðmÜzþ™ÝÝçÝ…®ˆâ'ß(å€<ñoëºÕçˆ.ñ;À —`qÏRƦW¥G÷Êú”¹ªÕn‹¶ŸÖ‡¦øÃYÒü9àäÐ|+ypË´Í(ùžVä¹½®cÀþ#Ô§×í´jO¶[]²ÄêãæBdžB:`óŠït¹m¼Eðú;ÿۙȘÚÊW ÒmådûãÔUFðƒî£×l¡»»¹¢8‰ãvT|Ä{ÕÊœã8;-§Nœ%NK[¿ëÈÎÖ| á½W\ºó.ÞÂâ6"\EæÆåxÜ9È>µ_ÅÚÖ“áÿ`xM¢†|É4Ãç’SÁvôàaG¥y§Š5½jÿÄ·dÌðyr• ‡'©ã¹ë^âÍkâo‡-¨ø’ßíRGuöIY8iTÊàÿ}zt¥BSœi«>á5:q„§+­4þ·<ÛÀþ$Ô_Äš_ˆí¶—²¤,Œä2¡ö*NqÞ»ÝgÀžÕ»k§ëoöÛk©6ÀÊîà2È à×£è×vž$øv×Þ"¶ûYYͬ¥xiW•þúô5kFÐüá;˜õë;{˹“q´G0àü½H7b©Â¤çÓ~é*P„e ¯{_™Ÿ«øú¶»rܺ}Ìo‰C*9ÅŽ6µWñV©¥øWÁgEðÂI"$¡¤šqó<­Æâ;8¼ÇÅzö»}âKµ3½ºC&0œúŸ¯ëúä#ø{-ç‰`ûI†àZÈ~ëJ¤nSžÌ´)Br”i«=u§AÔwJÚmà¯j²közf»'Ûm/%Žb‘AÀ‘°PW5èÞ ðG†õm~ên¤±¹ÊJÞ_˜’íþ,g†©´} Á^¸‹Ä¶P^ÝÏ Ü\íDüá˜óÛ8¯!ñž¿®ÞøªïÌšH2 Úw§>õ :Tí__ë¹JõjÞ–š—â}_Hð—›BðÊ´©¡žY—æâ#¶Wàßê¿ÛÖºn»1¼´»‘bxØ—yÀeÇpy¯RðåÍ·ˆ¾Éyâ(>Òa¹û$Ä­2cz°ÿmO¥Ñ4/øNññ^°šÄk2}²ÒâDŠXœ¹_B"½[Â×Pø›áÝÕlj Mg:ZHßu¦ŽEܹÇñ¡ïI¤øsÀ~¸ÄVÖ÷·2Äs O·Ê¿„±½³MÆs”'MÙ~D©Æ p¨®ÈüCà? ê>%¹´{‰4û˜˜¤Œ‘ïŽ@:g†%‹íFÊt·,~V–)W8?í)Û.‘áŸx^xüM½íÔ6øb›h†7t»’õ£–Sqœ”£8ÔWcüWàOêž&¸³¸»’Êêå<ª›ÒU^„¨#ŽõO[Ô´x"ëEðÐ{‚¤I4ò® ’7‘ÙTtæß¤Ú߃µüA»ûDÞßzHäÏÈHêGPjM'žÒe]um¯®– ²%¼»|¥aÓs’ž†ªQNYSvBS>hÔW×Ü]ñ_|/¨øí%žK˜”('˜Œ„d#Ö©ê:¼¤ø{̹•¶Ëq<£nçÎÔ ½•s^iñÄÚÞ£âya’f·C§i;†y>‚½À—Òk¾Õ_AwýšÑ vyÌ (ǾÈ4Ôá*Ž)kÜ9' q”ÛkM%ðÿŒuÛmF u)~Õm#/›€T«pqÜž+Ú¼_à^x‚K)ç{+˜”/š©æ,‘ž@ua€ïTt¿ øDTÑ|a¯XÜ¥Õü‚ê݈[È ¡Lò¡½ëÚüaà ]øƒì2Ï%œ±Æ›%TÞ¦&ªºðr ã"½žÃö?ñ‡w¨Ú%ÕéŠEÙl×6Æ0IùI`ûŠƒ×Óé]犿d?ˆž&ÔöçRA4Ñå¼—Eޤ*îÿEˆ:×™S?ɰô¿}‰Œ¯µš–ß3ïrÿ¼TÍñ†!¯O‘jêS•5®ŠÜÖæ×~Tí»²Ôù·BðɃK»ðoûiuMBä &’\ `¤÷ˆTE'$’Jæ-<1â Ηž7ñ. ^fÉìÖu½r3‚6Z ‚œtÜ¿R¾ü Ô¾hæ×Å:œZÄîy?gA»æ020‘ÈÕÝj¾ë^(êڵΥ#¬,€°gU Bv€?‡¯=y¯—Æñ­ã=žþÉ-woþÞ²üÌþ€á¢nq‰áŠ8üÙ¨c§/~i~î0”¥-´ç…îïËËï~Yk¿tÏøƒìŠþybEa,6,f& ‘T±Ôâ½—Ã²Ä ãHÑ-c‚kÅK½BP …ÎÔXâó@ô+_§QC"B(àð©+ÍÄñæ:_î”c7«ü9Wà~’ýø:„•^"ÌjÖ¶¼”Ò¥OÓÞuj5ÿqëä|­ðïöbÒôEñRþ_^ $‘má@ nä uoÈW¬'ÁO…1\Áw…kÀ»Å*x‘T à8lvêkÔh¯“¯›fX‰9U¯/DÚ_$´GôVOá¿dxxaòü¦Ž‰.iB3©+låRjS“]¤íЫece¦Û%– [ÃÂÇ„U€ V¨¢¸mÝŸiFœT ¬–É[ñºÚÚ÷ሬîÜGÖ2¡r»ö–o|ü|·à_iº({»‰£ß4î»(è{(<×즣'†¾'è:ß‚ÄÇîËetªpñ3n@}—Û¿,uï^ü9×5¯‡¾!œj­¥AÄw,›wÇ8ÉŒòxŒúŠý7€ñi*ÙuDÕ[ó/K%ýzŸÀ_L,›˜VÊxÛj˜%EÊ-;Tç”’zßTšòq’•“ùSLñgˆlg[É¥E÷šÝ€ØTõ\vö¯iñW„ü9}¨C Ë-“´I$R*ï\ƒpW_UϨØx[ÀøÖÞÚþtˆù‚Õ¶ìÏ»˜¯á\‡ÄŸêÚ¶º…Û+F…㎀`8¯¿IÒ¤Ý}Oâ†ý­Téhw´x{QÓ´÷wsÂ^ââEÚ )áQ{z×iž/×-g²Ê%„¼B½Çå^±ðêî]kFÕ,uqö“§@“Å# –F;^&=ÔŽWÞ¡²ðŸ€­ÛûdÛßKGpµm»Îy`7mÍ9Fu%IÙvÊå(UW™­â¯ x^ûQ·µšY,¤0¤‘H‹¹|¹ï-׎¹ªøð÷ôûMÉywßÜjšV£g¬'Ú~Ú6“©Sò²ÔƒÔUsÓöîZ÷3pšÃÆrw].Óü_â i–éåNè\Œ½Ç¶kÙüG០ë–ñÈÒY4¤±º.àÆíŽ¹íØŠÊ°ð¿€ãeÖ$·¾dæ6Ço—‘’2ØÝ·×5Ì|Cñ6¥©ëP}š7YV>>^€èµB„¨Ó~ßSg/kZ>ÇMõØîßÃÞ Ñoìôv’ööh·K4‹°yjs±W’©úWŒØx§\´”^ùÐÆ&¡^ëqÅzŸÃ­RëU³ÔtÝS coçÅ#òÀµ‘Ž~ë1ߊ–ÏÂþêÒÚߺGó›Q·g¯Þ6ÜŠr„êÆ‹²ìLg 2š­vËž*ð׆îïm­®K&’–w€’®íŽ¿ìçŽj¼GÃþ Ño¬ô‡’òêx‰–WBªz*¯8ë\—ÄêšÆ³– Ñ+€™/@^­ÿ‡wSêº~¥g©~ÿìPyñÈã8 v´l{ƒéZ)Ó•{%¯ry*F‚œÞ¾g˜Øø£[¶”Oææ,îhH2;®=:à×±x“Ã~Ô&µ†F{#,K$N‹¿j¸ÉFʲ,|1àn5Im¯J'Ìm†Ý‡·}à¹=ëœñï‰uMORˆŒÛFч8ùG;VJ2£JOªf²~Ö¬}Ž–;Ka x3K¼¶Òï.î"&I (Eçj/§©¯ ³ñN·k0¹YC(ëQ‡÷qéï^™ðâþãUµ¾Òõ6ûAµ€ÜFïÔ`á£'û¬ ¤³ð׈þÔ¸·¾1Æw=²à§¸ß÷‚Ó”'Vt–¢„•)N5SoM~Fˆ¼=á­Aì–F’Ñn-ÒâUݵeŠ0îcQÀƒ½kü<¾ŸR7Úeó VÚÙ®¢gä©BRzí`ߥR'ˆä·½ÜÎTæ°êrzokžkâ-^ûBÈ6ýï/iïƒ^³¯èš רV཯ÚaIátÙ¼d«/uœVM®ƒà»‚u íïBŽZÞ=¥qþñù‚Ÿ¥cøëÄwÚÜJ}ž#T(èƒå Ÿ`;VqŒ¨R“¯ª6›öµR¥umÞÇIhš„-.aÓ¤{Û»ˆˆi6*Æ9!Wß½ydþ¯¢hdùr[ËÀ(}AúŠôO‡·£^i×ÀÌ!€Ï?;Jõ\ÿu»ÒZè ¾Ý$Š–6èccžÞÁ§(ε8Jƒ²DÆq¥9F²m÷ü‹ºÞ•áûØìZv{As–6EݳwT#¸ÏJ4õðÿƒáž-1Þööæ2¦VMŠ‘ÿUî[Ö¹Ÿø†mNkv¶Þ-˜E_áUà/­hx îMNk"ðù¢8xŽJ4|‘žáÁ§´¥õžD½îÿ"\*,?<Û·kùìppkº¤MæE'Ï–@(}ˆî+Ó5Í#A¹¶ÓÚä=ª^B."d¼¿3ï#ã=*•¾àË¢u ¡½Ú¤–‚=»Ø62µfø×Ä:¤¶Ï FÖ/lH ˆv…\÷çY¥*4§,Cº5ru*ESºÞåáà «ÿßš_øB´?ú Éÿ~kÏEýàág—§&í ïùï7æki‡ÿŸ‰§.'þÿÑþ&”É#I!ù‰É=êüD>—$¬»ŒLª ô=W4û³k¡5´‘ #FÀçisÏ9¦Þ]\<"Ú8Ä0¨Üª¼çß=ê#g9Ëšûôê{ óÆ)+ öqÒ¯?3eAõÅfÜJóÊeœüÄäÑleYÐÆíîOÒµ®Íµ½ô¶òÄ0Çàó×*SöÔw²¿m?ÙB¦×dPúd’È0¸pßÂ~”°ÜØD<ø v•yl¨>í2úêi"ñÆ#Nà‹Ð“Á9ïÚ©[ï#&Cî\žžõS©ìåoçbTHÊOO+…IJÍ;<ç,yÏùüªüJ$Ò¤–EÝä²î±úT׆ÖßP–!YcV |ÅO=…Vº¹’H|ˆãXa„^þùîi¨ºU'7+ï ›s„b•‰"¹²ƒ÷Ñ[»Ê§!]² Žøêj…ÌÒM;Ï1ùœî'ëMµfŽdxÆX6|žÂ¶/ä·µÔeŠXVD ÀÎ0O^EguZ‹W¶¿{ùü:–µÈm@—OžY@f€®?½ÕM$7¨mÙåS‘¹²€úâ’òòi-Ŭq¡2ª÷>¤÷¬¸etx>øa·ßŸC×5s¨©¸Aë¦öóèJƒ”dÞ„·W q3\Jr_æ?SÍhÛ~÷I¸–dìåH'¾î Õ­HÚZj“[¼*ñ«p2AŒ >ÕVêñå¶ÑB°@9 ¹Á'¹<“ôÅZ‡²«:’•÷ÓúÐ\ÞÒœTckØtSi¶ëç­³¼ŠA Í•‡ž+:æyînLÓ6çnI¨áic™Y3»pÆ}}=ó[Ú·µÔ$†hDˆ0@i þµd›­E«òÙöѲÚTêmr½¡/§NΛÌ;pÇߪþØ.4åÙžW^B–Êô¤¼º–Ko"Þ! xäÇ$žäVBÕáÉ`x#¹ì*§USp…¯eÛÏ¥ÉPsR¾Ÿ×R[Ùæ¹ºi%9f9b;äuþ•©dM6y?pSi=~nªHöæ¬êOmm¨Éo4K$yÈäŒ2Fzõöª—wR4eµ…`„|ÁAêG-ßÅ_³ä«:ŽWß×a^ñŒTt&ÓbhKfy¥²¹úu5Ÿw5ÅÍÁ¸œü͖ϹÅCÍ«4'æÈÆ>¿‘®Sk{MF[iaY#•$©BFHÜ=ë4Ýl;IòÙ®Ÿä;*u/k¶T²ÌºmÁ‘C0PŸs‚´ø¥Ó÷‹lí*Ê›¾@G·SL»¼’K²Úı[Ÿ˜ÉÜ{’z“Xñ´Ñ€ð}ìŒÏ9Èÿ ©Ôö\”Ú¿¿+î ›ÛÓæX¼žâòäÏ6w8ÉÇúV€é·rIÏÙÕJsóÏ¡ÅZÕÞÓPhå„:`¬JÄdŒýj¥åÌÏhl­ öýT/;÷‰ïJÓÙºx‰Ts¾úu3¿=8Æ*ËA"—M)ö„µy%…ÝòçùþFöêk»³=ÇÞnj¬M$L&€ùÊ‘ëÓÞºQímu7·žèU[T•‚‘ÈäÖPýý¢ùmoBô…]ÛEm8ùúuÑoê~¤ãØúQo&“ ’ÙÚE9Ù¿äÏb@æ’öþI,þÍi“ÞIËRO\zW=x›Í‰¶œ‚>¾žõS¨¨òAûÖ[Ûò¹1ƒŸ3uËš•Ü××fK†;œŽßAô­+i,®Æ|•„ÿ Îú7¥\ÔžÞÞø¤ð¤‘”V+¥Y‡ÍƒÚªÝÞJö†ÒÊ»üß)ݽ‡r{ãÒ´ätëÊ´§}ô밓悌cm¿1°I¥óM£´ƒ›þN;ã¯áYºÔÚ…ËM9åðÇëÓ©î1¯ŸC¯ _N3]v¯%¥¶¤a¸^6 åI †aÏ#ü+(5^Œ ½ÛX¦£ «+·~¿æSÑÕ¥°»¹û:«¦yÁ$SëœÓm_G%6®Ò)ÎÍÿ > u©nî\Ú [(V2Kê{ý+šG0íš– Žy«UAS§%Íòÿ1F3¨¤öò¹wR¼º¾º3Ýs¸Žƒð©£«Ocr“L ½®zb*î³%µ¦ "¹…^2ªÌ¬J•b œÈüª•ÍÜŸcû.··› K>ìy8ì1Z{'Dª9ßË©ÜôãÄ-Ž‘°JmG^|½ß!ǨëÖ³5K»BàÝÜŸžL6À逰¬õy ÄÑ®¿uǨϯcÖ»mmí¬ïÖ;»tt’$y#'n×eù°FqYÁýb„’÷vé§ÎÅÉrUWWnÿ§s?A‘®-nÖa»ìÑù¨är­œú0â–Øèj<æ³f‘@!7üœt'¾=©×Wsµ—öv™Á‡wÊw# u?JåC•š²4l% ä`ôÁíÏ¿¥vú¼¶ö÷1&¡n’ aG‘O]‡$0éžµŒeõŠ„}ݾ~¶.V§Q;_æfè.÷÷vÓ®õ‚9¹*ÀãF©öƒC+æµ›¼«ÉEp‘ê1šškçËK¶öÒ §{;›¯Ý®0;!ó!$È+×ô§9ª§ .mÿ¥p„II­>~^FÞ³}q}pf¹2  €¿…jxp½ÌWqO–Çæ¡<áÆ>„v­Mjx »‰/mÒU–(ÝãbT‰dàŒ9ÕI¯&ûØô{U·‚\–dùŒ„z““øVÞÍÇ*òü¾F|ît£F×û·ûÈ-F>%šÎI%˜Õò„õã<þµ›­ê7w÷+5ÖqŒ…q±·¸}ÊÅHÐÖ»ýnX-&uÄФ’Fù\ŽH#¡59,E)ÂïõÔ¶½X½Û¿_Êæw…žYã»¶›çXbiÑ%HŸFÎ1Lµ¤K-” 1,Ÿ»c×$uÚ®Ï}*XÔ[Á7.T—gaÙ›úW æL˜¥•—æ ‚9áDê,<)Âk›Ïü…Nªå%¥üÿÈÝ×µ ÍJá.n€RFÕ 1€;aZ~’kŸ´ÛL7¬1žªëÓŸ~˜­zXa’Ùµ…źI*7ËûÜGBG&£’ùã°6¢ÛA09emåÈ žÃŠßÙIb]w+ùuØËŸŸ©Â¿^‹S6Ê=\M=„²H½cY>Cÿ³`÷³¼C©Ýê7 q2lpª¹ÆÑô®}¤d:6Ã(È9¾9õí^™­\$IfÚ•´ryð+È­òÞ¹ìH¬!(â)J0\»LÒkÙUŒ­{߮ކ7„%žâK‹¾h¢¥RÜìdèr{7B)Öxvuóå°‘åÎLi&#cסçµ¢÷ížmü?d¶Öó‚ÕŒ¬ø uJó’Ò/ïX”*y àçëØçµ9ÍaáT\„YN£·ßgÔèüCªÞjsG5ˆ€]ªˆ0.P;`V§‚å–â[«)غG Ì¥¹Øê8 ú7Lw­­féc¶ÓÛX·I~Ól’Lòçø‚zÔ-~ðiæÏö)¼ù èÅÝØ €Ìyú VŠŒ¾±í¹ôìbæåARŒ-ç}¦uŒ~¸ýôÚ|0ÿ–q8XÛþŒô¬Ïê·zŒ±3 … й@ãhÏ¥ráäVóC2‘üC?/ãÒ½oX¸·†ßO}ZÝ&[˜çW%J·<† 3ÅgNQÄSœ ¹áúšÏ÷5c-ï{k¶žfž[Ùî,'ùâHZ`O!zŸZ}¿†nIžîÆV›œÇU³×ŒdqïZgPúyµðí’[Á0ù¤G23œp¥O¥yS³ï29!ÔòrC)ïÓ¡R’ÃÓ…9®aBœ«ÎsŽ—óüìv)Öoõ'…å_&-»Uå €£è+CÀrËy{>•p7D-ä˜Ï–èÖ<pG½tZä¾]Ž›.¯l’ýªyÒC·æìÙ$T)}öKeá«4‚ £‡•Ì.@$)n£éŽqZ{)}eVçÒÛ|¶±´çÃ*P†û;«o÷™V6þ¼o´ÞXJÓd“n¾˜Èúf²ü[­_jR@ò'ÙãUQF…à ϧ_Ƹÿ6pæRJȹÉä¦+Øu™ÄZ~&³oßi·Y'Ž_“æÈèH5œ&±ç.SYÃØÔ„ß½{õÛMms›ðò]êésñy/ Ï–è2g¦zµeká{æ2^XÈfÉ-RáƒèF@>€ÖÄ7©i``ð½ŠAoqÃÊŽef8áK@¯c*I¾BC©%‰8*GÏjs’ÃÒ„*.biÁâ*Nq\»u×çc³ñv³{©‹rSìð((±®@P§îŠÐøtó]ê£O—â’\7>[F2®3Ó'å>µÒj— ¦Í¬Û$ÿh€<Ë'É’²Á"˜šŒv¶ …,#‚ Ë$“FÞc1Ç XäŒö=ë_e/¬*ÜÚv2ö‰á½š†ýo§©•kiá+çi¯¬%is“rmW>¸##è+'ÆÕþ¢m~Ak ƒFƒ:(®¼ñ#K#unI`Ï¥{f¥3.‰¤]ëvÉ0º· :ÊBôb³Ô9¬á5^„+4œ}•HÉûß?Êç+ðò[›ÍN]&V2@Ð<£w;^1¹XÓž*ý¥…¯¥Ôté|ÝÅŠG Tsë´‚Gá[–÷ZY´°Ž®2¯2?šäã…'°'Šñ'’C!–V(êpÇ' ú`tü©NKN0šæÅש)ÇÝÛ¯ùß5›ÛØí‘bû,* "p¡z/>ÜÕ¿‡3Íu¬I¤IóÛI’a‰!ààõ=}k«Õ.@Ð4»bÝ'0%;zÝÁé¶×¶ÖVf? ØG7d³£ùŽN>é$’£·LÕÑ“Ä*üÚvë÷ûDðîŸ'ùncÛØøSP™¦Ôìf3–$¤Rí~GáY6×µ Q-ÿt-¡L‘¨Ç–Lúã“ï\þ{Ï$³ Ý ^Ý:×¼j7DxkH¼Öíf¹·t—+»„~ÅX® Dd«Æ¤ ¹MgFTæõíwåÒçðÊK›­q´YòðIÈrså² «‚zsÁúÕû[_ ßLòêVyå‰hâ”*HAêAäg¾+¢³¿µ²µ1øFÂ8"¹;&Íb{)nª? ð™MÛÊÒ\³,¡ŽóÈ ƒëÛI¬=(¢æ×ä(FUªJJëóü6= ÇÝõå­¬B3kdĨ¹tZ“á¥ÍÍÖ»ý‰9im¦WfV9òÊ Á=0k±¼œŸ éWZÕ²\5ÌY™%r¹=A"™c{mcfÃÁÖÅÇÉ,é'˜ÜÿO+Ÿ¥_²”«ªÊzv2ç_W•.NëËs"ÞËÂ7×2M©XËç%–‰Hö>¾‚±¼o¯_^Ú[[EØí£&$‰r(è9¯?œNnd{‡"Es»-‚}xÆ+Ý¥¸càý&÷]·Ž´ÆÂa0Û¹°œ‚ÅD&«©Ó‚å}Í*EÑ”&õ8φ77>$]ä´Ö—)'˜½|¶UÜ’.~é Ö¶ Ó¼'©\É.¥a'žÌK,2zí#Œ÷ÅoÙjZu£ÇàË¡K’#šâ9<ç褟º¤õ¯ºûSÞK%Û2º9ÜrFÓžžØõ¥&¨QŒ&¯«Å׫)ÃÝÑzž‹ã½fþîÚÒÚÞ²[!1$j1´!àgÔûõ£á•ÅÔþ!]™žÚặ;J.C‚zk±{©[ÁÚUæ·oɸŒ¬ë.dVÂ9ä‘ÐÕ>êÂÊÐÿ¦ŠÍòK:He|á9åFxéZû7*Ѫ¥ò2öœ´^ëþ ›á=JæGÔìeY·’D2*$§Ô«åX^<×ontë[;h~Åk1,K‘±Tp3ëÜúלܵԗ³½ë2ʆ Wð=+ßQÿ^“®B—i„«)ÀxÐáXž ã¡ëY¤kó Ϲsƒ£(MûßðÝá}ÅÌÞ(‹AÚ[k¥“ÌBIØUw Ѓ]é¾Õ.æ“X°”\n ù2ÖLz‚3Ÿ¡­Ý6ÿN°´wðVŸ Bã÷sN’y®ãnO*=}}kÀo~Õ%üÍxÅ]\†Ë cÈóEþ¯J*k›QÆ2¯ZR§îéó=3ÇÚî£s¥Ú[ZÅö;hX‘(ÆÀ£ gÔŽ}ÍSøYss?‰ãÐ_t¶×a¼Åc…FCŒô Šï Ìàmÿ\·KƒtŒ³,£âG"7'¨8èjM6÷MÓíZOéñD&!&$óþÇ;A­=œ¥V5T´ÓC%Q*¥ËßÓï1Æ™àýBþYu[Lá‰o&P‹)öõïŠÃñö¿{&•mgg±µ…Œ)älQÓ$÷>µæzˆ»“T¸kÒÂuvÈ$©R ãÛëÞ¾€Ý¼¥êÜ qçGeCƧ äžr=ja5[ž\¾f“§*NI{Ý-òèy÷Âû»ÇñD ³ÏkxY%ŽàRCŒô+ë]ci^ Ôïæ“W±“Ï.A0ÊIŽøõ=ñ[ZMÖ¦Ú4Þ Ó¡ˆI„šá%óCmë”Ï®1_?j^{ê—Pm޲AlôÈê;Ô7ì)F3\×`£íë¹CÝéçø‘ñ]Ô$Ò-llmþÃgnæˆ<±€G>¤““Þ¨ü0½¾o[hr»MmzJÉd€“½sЩ½ Îòk‡šN¥­À—o2)üy¡ýÛzu éVt›í#O¶iü§Cû©§Ž_5Ô7dýÑïŠÕÓs«¼ÖÛOø{NZ¥É®º˜Ù>Õ/¥—\±“ÎÜCd¬˜õSПjÈø¯]¦mc¦[ HœÄ‘¯U\xó–îkËu%½“Vº:‘eš)X2œ‚¤ÓÚ½çOº¸›À:uæ¯w>ixÝgé$H~V'=GcšˆÍVç§g®¥ÊÅÂr|ÊëCƒø_sx|Uo¢oimïr²ÆÄ°îäFk°}Áú†§1Ö,d† ´ĸékoHºÑl yü§CIòM:HexÔñžT\WÏúªÝÜk7?ÚD‰L'zqýh—û=% ®k°Šuê¹BñÓç÷—ãírõ4 }3M¶þϲ·%bÊ)É=rÇ©¬Ÿ…—WRxÂÓBfyí¯ØÅ*1$Æw¯¡SÞ½#LißáÞ—¨jð%ǘe‰„lj FùXž:vnµgE¸Ð4È$»ðnLä$÷ÊfdFàŽyPsŒŠ®G*±¨¥o#?iÑ.^úÿÁ0åÒ<%«jÓ6µe)œ9RðJJÀÈ=ë#ⵇ Ó´û°Z[Ëä¤kÖ5#9-×sI¯.ÖÅôšåáÔ÷ £”©Œ ã=¨¯ t뻉>éz޳n.<Æx\L8–?)bpxç SûW8ErùŽQt9·}´ÿ#Ì>^Þ¯‹mt\¼ö÷ÍåÍAûã=ë‘^‰y¢x7PÕgþÚ´—ÍW`^ Dbm½2§ŒñÔV–‡u¡é±=ׂ4ëxݰ“\G/šñ©íÉùG½|÷¯­ôÞ »mL°’7<x‘Çc½÷Ò—½¯è5zÕœ¡îéóÜõˆšíÝ¿‡bÓ4koìû;i<¤‰3òƒÎKrǽs 5 E<_g¢—kˆ/åòg…É`CgæôeÎAéº4²ÍðÎÇPÖâKŸÞ<ÏàKÁ’ô5kD¹Ð´¨Pð&™s6YÒ_9ãV<€ Ê|U{7:‘¨¥¡Ÿ:…)Òqêÿ­L‹íÁºŽ±r5«I<ï0§™¢?42Àõ㩇ñ ^¼´ðÌ^‹mýŸem(‰P•V$·«g–5å> ŽòÝD¾ô”€2F9¯Lw¯Ðï.¥ø_§ßë0‹óË&,¶Ë‚ '²¶pjUEQΜ™N¤¡Që·ô0øe¨jPø²ËJÓÃ}'•,nK¤}áž…zƒ^{¡øCTÖ':圆Ur¢H%òÌx‚xäŠÖÑ.´ *)/ü¦ÁÍòI{ž³ñYº°ð¼z~‡iö ;wòÕK(nK3rÞµÈü2½¿·ñ–šeyྔE×.¬<$4Zµ…¥¬w(låÙ»–õ®á¾£¨Xø¶ÒÊæçX¦…òC«pN=G\Šõß Ý^Oð¾ÞÿU„\¨¸’ ‰-Ç<ôÈSÐõwB¹ðæ”$Ôü ¦[­Èd•%2´HºÝúÕJœÕE+ªF)G«3õ½Á×ÚýÄŤ†XØ – |³ ^™ùÖ'õÉôÿ6 ZgZZHPgpÞp\·rp9¯%ñr_\x¦ïûM›r7ʤãåìG×Ö½ïÂ7ws|1[ÍV%¹X¯¼ñ‘,'ª©èhSU'(%o0”%N›wZiÐñχ:–¥eâ‹>7’ê飂{w%–D€Ç¡GJõísAðu÷‰.a×,äó"ƳA(ˆÈªp ƒÁé×½_Ðî¼7¤¬š¯‚4«e»AûÉ’_9á®Õ=8Ï5ó׋R»ñmèÕ ƒåW Òm–íHä34;º•LäwäŠn.sKÙv!TTá*n7Öå sÃþÔuûˆ5Ë97ÄÅXe—QÙ·pOlÖŽõYô_¶á›6Óí uI.ß?Wf=O½y?ŒÓU¼ñmâꥃ#åT·Uõþu—á›]ê\¬7-^o̯ e$õ÷ÏF¤jJPµŸppt¡ ·u¦‡|9Õ5+iñA$— {yc˜Ìb©T$‘øgn¤£4ú¤¡Óq¾¤zÿ‡¼uâ+‹}rÚRa-'‚Qd^`xn¸ÍaøßX›Eð\šO†­ µ±Üß9ù¤fî}ëÈ|rºç‹ï¨[(AEÉûŒ3œu#=ëÛü s}?Ã).uüô‚äÃÈh˜eГ÷•O~Ô¹Ôç*i[Ì7N¨Ýüð±«é~%³û$Ï8º–8¥…Îå•]‚‘ƒõàŽ‡š÷ŸøwÁ·$º²Ö­d&òÒxeòÙ‘z+g†Ç­/‡åðΘϩøIµ7ñ)Üë/œaŒªòýGOjð?BûÆ7_ÚEÎZ1» ©F:æ§Z4ß6¥ëZµáîéó=cÆúÄÚ'‚î4? YgZÚ”`>ó±v ÊìzñŒW“øWÕô¿Z=¤Ò\ ™cŠX\îYUÈV~‡i_5¡õeCÓðªpu%EØ•5MNœ•ÃÄÞðmωnmuËY …Œi<2ˆÙ‘~ê·÷ˆéšç|eª>àÙôŸ X>ÖÜ©çæv/Á‘˜õúבxøê×¾1»mX7ÈƤðU€;€rsÍ{/ÃÛ­F_‡W`O µÐŠ(,¯ ºq½>u)JVó BœfÝÖš-àíoVÑõËY­%’fžDG‰‰e”9Ã)SÁö#¥{牴/]øŠ{MjÒBa;heòÛoelðqô©t ¼#`Í©xKIµmF5Ë2ÊeòræDÏ{gàž=]VïÅ· ¬a£\õR3»Þ¢ÞÊŸ½¯õó+øõ}Í,zÇŒ56ð÷ƒn4o Y5…´\î%ÝËœ4ŒÝøéé^?à­gTÓÓ­àŠÜËóGMÒ&Xò¹çÛ5§¡Iá;“Rðn“ký§'rKæ4Gœ²ÆqÓô§Èê8Î.ÞDªŠš9+ñw‡ü#7Šn4ÝnÚF[f1E•…ã YôÝhþ³6VÖØnýäŒ\á¤g=xü«É~!ɨÞxºtÔ™öY"á•€ù‡­{Ã{‹ù>Þ\Ü –;K‘»Ió+Æã÷ˆsÕGéUóT”·˜7 Q›×m:%àÝgWÑuëK‹9ä˜Ï*£ÆÄ²Hà©SþE}â½Á÷$šË]µr ;cš)<·ÛÙ샌Õ¿„,gmOÂ:M±Ôb‰I¼Ó«,y==³^ñûJûÅrÿjÆÕxÇ#p#–ÇSÉÅE•O›RÛöÕ}Í[ñV¨Ò-S‰K~îS/•êËOÍa«Ú9Kb9 “Ë`¤ga'†ð3\ÿŠõCáßÞé±kh±/ÌK»³0Gnø•y/ÄGÕ/|W ÔÙ˜’HòÜ0a׎¼þ5ë_ ®µ þjSξt6W­³Ió6>xeÀçÒšš•GµîO$¡F3nëM𶻬èºÍµõ¥Ä²É+¢²1ܲ8ÚG 澋ñ^‰á¼K-ž¹fø€lI¡FáO͵³Ãc8¨4&ð¥ÉÕ<)¤ZJXyrù›?ÚXÏ¥xÄWÕ5˪φExן›w9¼Öi:Týín_ñªûšhz׉5%ð´X5”<ÍÌwÈäñ¼±àâ¼'Þ!Öt]J JÊêW•ŠîF%’]ÄeJžSÒ½ËáuÆ£?‚5&œyÖö’Æ-Ú_˜ùó'¨ÇnÕ×èÚ›aü$ÞðÔmt¤ìtFÆìƇ*[8èiÉ)¸ËšÞ[FVªFÜ­«i7§w½‘WÅÚ'„dñØë¶ˆ€ËžS¨ „÷ ÍaøŠþ/ x:óEð‰³…žw“#ÊI ½›¡Ú:Wµ|<ý˜n~9jRø¯Æz¥Õ•„20GÖ›rßÌJu8?!ÁÇC_QøgöIð‡‡í¦ÓfÔ®®m Á–˜.bŒŒya›q`z¶zž@+ÁÆñVMƒÅTÂדæŽöMëÛúÐý§…þŽÞ(ñnG…â « aVÎ<õaÇùívÒéksvÚŸ~Öõ+WµÔmn$–Gu ŒÅ–@çvôä+ôMý™æø‘¯Jš¥ŸÙ´ûhóÒɉpÜùj¹ùºÿõ¯¬tÙoàŽ‰{¥§èÊ·±H]‰Ü{õã¶à~•íÚFc¡ÛM<8Œœáäy1Ûìp=‡óþ7¦°Î–VŸ3ë$¿Íëò?xà?¢&:žu_ˆu¡,ÑÆùd»’9nBq»j6ÞAæ¨|"ýŠ/´u‚Y&Ô%RåbFdŒOÎÃ…Î8Ïl„ï]E(ã ðAïYÖVzF‹XXG°¨€.æÆIÇs“N‹Ã¨ËÛE·m,ì½^nÝ{¢s(gU+áÖYZ:jIÔs‹œšM{JQQrW\íË—KBWºåæñf§Ž­|/qcäÚ]C#ÇròÒIÅEÎÜœ±ÉÁãŒ×w^iñUO]i:ôÛB%Ôpn‰çÈ‘³ß…z]k‰¤• á)&½Znÿ…;#Ì*TÍó\§]Ô*’ºK–JqqZ$šRUv½–­»³”Ó¼:4Ïßë¶ÊŠšŠ§Œî/ „öè[?‡©¯Î/Ú£ZÕ¬|}¯C§Ú4jÑÂ|ò¤‰LpFJƒŒ|›¹¹Í~•ø‡Z‹B²ŠîR£Ì¸‚Ÿ6UCŒÿuIo¾Jý§t»d}n$-V¸Þy 6"‹h…Pg8ê+ê87%žAÖûqpOÑ+~ #ð¥Яá>&–WuõjðÄÎ+gí%R2¿dçRS~zõ?"ôÝcXÓ®“Wµ¹´¿æbTÿ²W¡Õô‹´ß>±¶±fÞ[D’)‰ü¶ˆ¸Ë&}ìj–/ƒÍßÛt½Ò]V<º§›ˆœì ygÄ«­_U×!—T,©4[Çn=ÿ*ýiEЦܵ?Ìæý­dÒ¶ç¥^ÝÁá¿Þé±khåˆÌòHÛÞb€ã-Ó¨¼ KÖ5}:é5‹K—YÁÜ2IV9û¤t ôÅ{oÂG¼›AÖál½­œqË““‚€œ™y+ZšKøGíkÓt{Y54ù„blá‡qB}¨”UÅÛÈJ^ÅÊ _Ì»âÍ/Ãrj[ëV$¡…%V‰¼·‰¤P]rx#=éY—×6^ðýæ•á+·I#2<ÎÆG”¯û]0=y¯Ä»½gR× —S,<Ø·ŒœÿÄ9ÀÊôÅv ./[IÖ-rdµµ‰dwÌ\ãh'ŽGj¿hw kßäO³q ¦Ýüºnx¾Ÿ«êÖ7 «Z]H'wÞ$ux#¶+èXh7W6©®Øå%%ÌMå´M Ë ôÆ{Pi²xEï>Õe£Ú>¨Ÿ2 —+»ûÂ,ã>Õæ/5ÍOZ†mSr¬é¼-žF1Û¦1Y¨û mÏSG/oU$­¿—äz-åÍ—‡4;½/ÂÍ’I]¼Ç—g g 9À¯³Õõk;…Õíî$Y׿ÎâFGlt ôÅ{Âw½–ÃW·’ÚÞ• É 0l3Óp'#«oM>–ïívºE¬º˜ù‚y¸ºçË'i9ì>”ÜeÁØQŸ±s‹Wþ¼Í/iú÷ö¶ºÍžb’çSlxZU ÀÆ2Iô¬»««?è—zg„l^çŒÈòÈÞcJTp20=+Î>$ÜëZ†­o.©¹x÷äü¹pNå玘ô®«áKÝ6™¬@„¼𬱶s²\àרê*•Dë¸%¯r}›ŽTnýmÐñû-_QµºS‚áüáóIÁö#¡Ò¾…ñFŸ \\ÚÇ­Z.xRRcm¸ädŽ™è*–›/„Úì\¦“lÚšÁ<ß—xç>Y8ÎyÇÿª¼÷â5êÖóê%J…†AvpG8zTF.…)9¾c[ûj±ŒW-¿®‡ M5¿‡ô»/Âv ÜF^I¤o1äÛÎ3Ó¼ÓTÕm.ÓT‚éÒd;”äàL£ØŠö…zöº­Ÿ/i 0bxIAùqžíÜV®7„ä¼&k6¤V?7ågõòó‚}ª¥MÖ„e˾‚„ÕN3öüº—¥”Ÿuw)åyéÛÒ¢1xzrs|ÞF’~Ú¬RVkúèwR]iþÓç´ð½ƒÂ.c,ó»oy1ÈPGW‰[jšŒ7 ¨Gpé2|ÁƒáôÅzŸÂù.¥•œy’Ú+s/9;$SòòrGjÖÓ¥ð´÷~göE´Ú€ ª H Ùê8Ï|R”zp”_*/a9Ó”y¶×þ¹®Å¥^E§¶·hHº·IÜFÛ7½ŽØ=pj»\iºŸqeá['‡í11y¤mí PNÏ@>•Âü@Ô5BúõPɽNW¢åN ñÓ†¶þÉu3jvyf·ŠÐÌ äG*°Ùƒ‚2rF;Š¿k‰öv׿]ŒÝ&°Þѽ7¶¶<² CPŠA¨E;¬£ 'ƒ×§LvÅ{¯ˆ Òeûö½®øîmÖáöºüÄÇ'œU; ü/=ן&—m.¡œ„2Vlõ)¹Íq¾?½Õµ;è'¿ ™N…CFÞÃŒc‹ÃÒ“›º5“öõ#­k·Ú´ßÙOgá{9"ûTg|Ò°wp£!AWŠÅ©_Å?ÛÖr³+nÜ w±öÏjôφ/s Ô­‹·ŽßÍ'²H§å>Þ˜­ ü3qx'ŸL·–ü»æ• ý‰8'Ú‰GÛÓ„ ùWaF^ÆsŒ£Ìjx‚-.âÞÂMbÏpº&p„#$‡©Žýj‰–ËA´–ÓÃn‚ñ’i[{°Q € ôë\wŽïõ½Bæµ0c+‚aÆßAÚ¶>µÄ·7ú{†6ÂÙ¦`Àâ7Cò0ÈêNGjªúϳå׿Èeˆöü¯¦úm£¨Eqöø¦1Ê­Àžùö¯d×ÓK–ÓL›U´Ü.í–âEC°Ç# 1ºâªZ\xr{Á5Ηo%ð' eڬ݉N™®Oƺž¯©Oos©‚»ƒ‚£Œ2ž:ŒƒƒÃÓ”¦ù¼¾fͺõb”mkõ×n–gTº7 ƒö;³ïç'?¥/ö/çÊïþÿ'øWýšCÈVÅf—û­þÇë¿çÊ5úµ_ç‰ÿÒþ%$ÈYº““õ­+fxôg˜ôW Ÿyx!Ô&XJ²oà ?Z¯s6¡{‘Èd pë€*cN¬åÛÕ¿½R1ºÐ’ Ù ¼b~Ä~ tÏÒ³n žndêyÉ<ûÒ[E4“ ƒq|ñíåZW·m£7“·a=Ü=ê/í¨Þ£µŸ•‡e –‚¸Y<“7ÌO/<óƒ¸QŠXoöÿǼb|pÀdûà2îkÛÄóf`c(@çØõBÑ%–åÙI“p?NzŸj¹NTåA]wÿ!())J{‘OæyŒ[«w?ã[vÅÓF–cÆÙ–ô!Ïj]BóÈÔ§Xv¼{¸ .8Ïëš­t÷ת7ëü@{BЧVrƒmê)7(FëMÿàÛ_ym›;xÄçËž§Óq#JL¹,ÜäžI=OçZúxeÒ'˜Œì‘|£ïŸ˜Â¥Õ®üju‡i›$0g¿\Õ[Éïî óKf<|»@Uê08Í5J¼çÛ×úôÝHE5m‰mµ„kx…Ç÷°sõñšÇ¤{:|’Ç9nþ¹¢§{…†ÙO›»€ ƒú~5»©ßmJ@»Y2¹R¡†ìsÅEýµÞh®;*u=Õº¿™^ÌJ4›‰1ò+®ÃêÝÀÏoZ[kâm ˆÏÙ€çð3éIs.£æ`Ñ/píYq$²Î°Û ÌxP½Aõöüiʤ©8B êßÕ·'–3æsÓþK…—Ï2OÄä“ëé[:x#G¹áGCôoâÔc­?W¼û>¯0ˆ¦ÓŒ« Àc¥V¼’þþƒ?"¨  Ž¼õ¢„aZu"Ûzéý¯)EFÖZÛjAHû5´_hìÜç> g¬‹¶”ÍæÜe‰É }OSõ¨¡†i.8Tù»€ >ös×Úº NìÚkyaJçJ†¸ÝÇצ+4ý¶ûM,þC²…KAjÈ´ðé¤ÜÈ~ê•Ø}¾? []Mf x¾ÒË'=}—¦i·R^ßB¬Nèú* é_Ʋ ŽY%@›žuÝÿÖëšs©:\”⮿­¿@öjw”źK/s’Ç’[ÔõÉõ­+pÑïdõQ”d'þzg·Ôc5>¯}öUÑJ2àow)|rFj井õ°`CCÑD` {w5¬iÆž&SM·®ŸÓ3æu)ÇK- ­õ¿ýÚ´žàðzð:V=٘܉.IËòsëßõ¨ †W™`¶V21E6séÚºm^ñíuG•# ¼nÚ7uéÎsY&ëáÚ¨íf‹²§SÝZ´A¦Uä¸ýÜaYa&{}GZKMEP«[ÛÃö®v·?Ë8ÍCw>£}n6²´?uQP öÅõ¬XÒYa…XÊHù@ù³ÛŽØª•IQP…4Úþ¶„gÍ)ÿÃz“ÝùÏpfºgê[׿ã[:@‘të× R§°·ú޵kY¼m;Rd[ ›Á|`䟗õ_½’ÃQX·o)ªÀ0.g ûõª77–«h6g„]ØîLÖª’†)ÕR»íÔžiT¢•¬´Ô,uS0•--Þ糑Ôö8èZ²5fÔ%œÝê[‹9Á,1Èê?³–9äœ@ ù™Ú6îØJíõÛ¹ôëØb™Æõ‚12oœƒß±¬c'‰£(Ô÷R·ôö*\´ë/f¯{üŒï ™Í®£*ÿ©X·ì%þ=ê[-Nظ“ì–Ït½† =¸éš[‹OU¶Cn ûnuÇæ¸ù!˜ÏödFžcæÏn:æªu%‡„!̵×çИÂ5e'=/þF®´×³]5Æ¡¸™ #¿\~œV×…#g·Ô3þ¦8·Û~~\g¾+G]¹—L½ŠeÝäGæ£ËæÎàsÈ^âïSÕìÇÙ™M¿ ¤*#«/ÖµT”qNª•ßn»Í*”#’O¯£+ØêÖ"ÈÖ–ÏuÑYöà|¦²µÇÔ§ºûUþâîH$öoOn;V1ŠbâØÆ|ÓÀ\Ùè8ã­z7ˆnnt«»q6ÝÞJ •Ô6\ã×”dñ4§ží¿­J’±PÕ³#Á«1‡P˳¬™‡Ýäl#ý¯Z—MÔ­d•]í-žñHÚÎËvÈÎ3Vd¼Õ5‹0–/¶‚°®À¬zoR3ôíï\'Ùgý™‘Œ¤ã`v}=ù§:Nãªïþ_ ¡N5¥)OKÛåëú›~"}JYÅΩ’͸9nppF:Œb¶|²ºj£¬‰ì$sõ±â;ùô™¬âœ§š¶ñ‹•`@çpèH¬÷¼Õ5«P¶,Ÿeåv¡r8Ü?CŒVª’X§[›]í×c.yO ¡d“ëÛ_OÔŠËW´k5¬íd»ÏÊï‘–vÎÜæ±|LÚ¬Ó-Þ¦NóÃ;çô®yáfû$ˆÞn@Ù·/Ÿaê z§ˆ¯¯4eé”@¢uuÞ ´=qÖ²„Þ"„áSݵd¡J¼]5vïýuÐÃð"Ϻù—"·fcØ8?!ôÏô«:v³d÷§²³’ðp®ãnĺMO%ö©¬Y˜´æ‹ìªHdvcкõÇ¡æ¼í ¹Y~Äñ?Ÿ‘„ÇÌ[ÓþTç9a©Â÷—ò&4ÕyNsÑúíë·ÌèüO&±q:Þk`‡$£8žÀv­/Å4“_˜Z¥³;‘ÐH§÷x?ÞÏã[ÚõÝöœ·¬«(´Œ\$€9-èÊ{€~•XêZ–±bcÓ$‹ì§!’ír0¥†8Éèy­U%õŸmͯn¦|îxeME$úôßЭ§ë63N$¹³´–÷?+É‘“îÊMaø­õ‹™–óW-Áã€ÙéíÇJ忆å%û,‘·šÜÁÎ}‡ZõÝvòãDO[§U‘mÐ\,ƒr–ÁûÊs’g¼M)Ƨ»·çÔÒqT+EÓW½ÿ¥¹ÏüRëéžõäks íks, ãc½Ný±ùÑ)}Z”#Ms/Ãä5âjÎsÑé§o]ŽÃÆï­ÞI þ²ÃP{}:Uß…©s&·r©–µû4†àÿÛþ¯Ÿïné]V¹}{ iZTZ„ѬËnÂÈ7gŸ”2‘É£TÔ5Û3‹$_fùÑ[ Œ®~ë8ëŒ÷ÍkìSĪ®Zöêeí$ðΚŠIõ3¬µÍ%î€Ôm,¦¾ ò<™ˆé»n~µ‰ã¹5Û׊óWÁ(ø"œ‚£Î;W =͵ٶº–\à® $ö÷>دlÖï5hÚ:jR,wÕEÊJ7dn;C)ÎH\zÊxšs§?u[—8ª5!8êßõ¡Êü/‚âMZécÏÙ~Í!›å'Ðç¥lZë:$·˜Õ­l¦¼ …y ÷lpOÖ´`ÖouÛ3‹$+l?×$(# ŸºÎ¼qžü׌Mcyk;Z^FÂ`Ü©±ÿâ¿ ž”! Wà X«)OM½CºñìºÝÉŠçTRqW ʯ÷G éSü+Žâo\,c6ßgÏýÐ1”çûÙéÞºÍZîë@Ðô|Ê“ˆ%²HVSÔí¨­µ‹ÍvÈáIX™¢…<¶Éãs r ÷­}”^!Wæ×·S/i'†tÔU»ôÜ£·¢K{bÎÎâì+Ê'ž7cƒÍaxþ_Þ¬wšÀa‡!ÀáðSìíé\ÕÝ­ÛÚ_#¬¹ ‚ 'é€síüëÝ5[‹ßøkF:¤‰ÊÁ‹…ʱ&5u9É }ª#/¬Bpšå_ðz—(FŒéηþ];áD72ëó¢)kO³Ên?»€¿'NŒ=kf×XÐÚûfµig=â6å9ÏË¿ýkZÏ[º×-6h’@¶¨ÃÏŽÞ?)= ¯qšñ+«Ë+×´Ô#d¸ÜAR¿3Qýìö"‰Iá©F0÷µù§EYJz~3½ø…/ˆ/à‚óWR\© ÷Wû¼‹Ž”ï„ÑÜŸ˜à\Ú˜d7=×n8>€ç¥vš•Õ÷‡<3£®ªâ+ïÖP‘Ÿ”2œäãÖ›c­ÝkÖ†ß@xÝOŒFØìYx$g©Í[¤¥]Vr×±Ÿ´k 訫j¯Ós:wA’óËÖml§¹VÂ<™^GMø;sõ¬ˆ³x‚ú(®õd #UGÈ«·pçך}Å¥ëÙê1°”¹Ür{qÎ{c5ï7—z‡‡<¢®ªëÇ”ÂT˜ncï‘]NI v5“®§Nk—̹CØN†­ÿZ'Â;{™|[äÛÖ¦ ¾ÕýÀ…HRݳ»®š sÃâôE¯ÙÙOv§ $¹ã¦í¼Ƶ,µû­vÄÅáÙmÖÿ_ åÜJƒÏZð[Ý:öËQ’×R„ÛÊAËdõ\pÀö¡ËØRŠ‚æA*õ¥)ûº/^§¤|K>!Ô-à¹Ô$jå ùTòp8ÛéU¾Ç$¾,òíÆmÌ2 Œ}ÝN í×®òò[ÿ ø7GmY„ˆ›ÍYFslƬ§©Œ”– ¹×í ¾-²Â?×ÅŸÞ`*'«ÙÆuãYË]4#žKé(鮦`×<:/üvÖÎâæ6>[Ë•<nükâ<Þ Ô-c»ÔSÇ&c"®>B1ÆßC^k¨éÚ…•ì°jHÂbç†$›xçð&¾€žæûÞ ÑÛR"à#y‹0ùDüˆÊ{ã "”fë©ÂJß×R§Ñpœ5þºðz¦ñŠÇæÜÅ(ºþè‹nr}÷cë®:ç‡F `ñµÅʱXÚRCÛvÞâ+COñž ³{o =ºD„ˆ¡ŒE&ÑüLåAäœãÚ¼TÓ¯4ýJh58ØL\Ÿ˜™sÁ_ï zR»¡J1ŠæÔ|«VR—»§Ìô¯‰Oâ+ûîu"8ä á8UM£ËÆ:!ç³Yßíç¸ñ¢El¥­¼·ûPþ ›z±èNqŠôi®5 øD}^AÊ#ù‹( D%‰{ðz”Í/Ä2ë¶­‡%aR ÌpF"m¿Þa€Jnêý”eZ5µÓC?hÕ ÒQÓUs-õÏ .¢`ñ¥•ÄèÄFód1îï*pzµ‰ñ2ç^ÔtøçÔcÛn,cäãåÛá¯5ÕtËë JâV6YšCÉ, ùJÿxŽ™¯  —þð’uy½ÆrÌ>K‘YO·@jc'YNVóù•*q¢éÔ†¿ðÝ3øCÛxÖÚ%Ì;]nvýÏ+iÎüq×Úɬøm5&ƒ_´²ždb"iÁS€~PåO8µ§¥øšmzÙ ðÄ–Â4æâ("HTI€êp ðcM¼°Õî#Õ#`í!#x?0Ïzç=©_êô½¯È¤–"¼¥?uþ'¨|N“Ä—útw7Ñí†7lc÷k &Üq¶²>[\¿í¢ÓÔ´NŽ·@}ÃÓ»~8ôÁ5èñI¨xgáÎŒúËù¥%gäˆ ~íJœç¾.“âYuÛv¶ðĶÁ›ˆíãòIèJúÕºqhÕr×M ÔÜpò¦£¦ºô2ç×|45'Ä–¶W3FqÏägå G_ưþ'ÍâMGJI®$¸a_‘cÇÉ¿Ãï^c¬èÚ¦›«ÜC¬DË+HH,8u=}A1^ûhÚŸ†~i’jöi™¤ MÁ“•VVëžÀŠQ¨ësÓ’¶åJ¡ìêAß_êÇ™ü!·š_[G`»¡!¾Ñ·•ò¶œ–ÇèEw÷šï†#ÔZßÄ––w£Ì}½ƒÔcÖµô®½nÖ¾’ÕÃ\Eo†F^íŽãpkç­sJ¿Óõ©×XF3’ w+t*G}*nèÒJö¿ Ib+75go™êß%ñ¥¡¤× ²Þ6PˆÖ|›qüõÎü·þ!YGa–ƒ‹ÁÕ~ÎWçÝÛŽÕêV’ßøoážú³-¬Ûä`&Ä rŠàö=Bâ¤ø¨köïkáY-×næ;x„R² '¹GSíTà§V5×±š©%FTÔt×^†möµáHuCgâ[[+©clDóðásÀb½GÖ±¾)OâMG@\G²Þ))Â,8ù1àÍy?ˆ4›í;_¹ºÏ!d$B§?JúÌêøe¥Ük.-§ß#?mØüªÊÜöÒRuyéµd7ÑtêCWÿòß„QÞ·Žì“K_‘‰ûF1·É#æÝŽ1Ž™¯HÔõ¿ Å«ÉmâK[;¦È…çÈlÀlu1𻣸ž?C%·…%µB3Ç B'(:“Ý—é_?x—K½Ó5û‘«ÄC¼ŒÈλ´ÿúR¹¤”5ÔvXŠÍÏÝÓç¹ë?çñ§ ‰&ˆ$2aaÿV!þ  qa¼oˆ|ZBîȸÛ÷ a÷ãŒr:×®é_Ú^øc§Ë«8¶“Îwí -Ï@ÊrpNp§h~,]r -<'-ª8Éžh„RºIè7/ ·MN¬j·gØ•7N”©E]k©KSÕü)¶öž#¶±¹(åaiò(?(%{cÖ±~*Íâ]GÃÂGc·…“ ùÅ1ÆÜç5äÞ!ÒïìgŒMÔ[60¬¬3´°$?%'SšV ©(T†¯úØò?„ö÷ðŸiÑèë_ìû¦ýøãéšõOZð”£YøªÖÊä£ \d8@x¯Qõ«º7‹¾gá-@34pD"‘Ó¹ìX}+çïiŽ›âÆÕã9’Rèî2®‡Tÿ…JýÅ$©ë©J>Þ«”½×ožç®|U—ĺ—†÷ÇÅoÝ©nÁèTÞ¦¸?„ðKÿ L]$gt˜”/O'ÌߎØõ¯Xпµ<9ðÎÒëU²7Ÿ#Åæñˆ ·ð“ÐVt_ůÇ%ƒåµI‚æhá„C#¯ñc˜zàÓpSœfÝžš¦áNTÔnµÔ«­k>Z’ÓŶWK„@Óä8Px¯$}kâ„Þ%Ôü0LPªZÆc+¸ýØ·¦Þ«ž¦¼“ÅZMý‡ˆîßXšå¢vACÐû޵ïþ}Kß ,®5F¯ö™¤‡Î)lØáƒcåc’ ŽôÔÝIN2VóÓŒ'}øGkr~!i«¢.ð_÷àr¦?xcµëzæ±á+}e¬|QogtˆÄ@מW¿Z»¡øÎ z,ü#-œs}é’|©]ÞÇàq_?ø»GÔ4ïݾª­ûæÝ ‘Ñž›N1ÇB*ƒKÝ×R­õŠ­ÏM>g®|P“ÄZ—…O‘ÇiM©n1ƒÕqØw5æŸ ¡½>;ÓF‚ 9”ÛÐÂ~þü3Ö½¯Ã‰©øsáeµÖ§'ÙÚáñ¶Ü㪷ð±è*mŶúâÍgàé­r7JEäË"wÚHù†:✠§R5$ìûœ”åM+ï¯ù•üE¬x>ÏZšÏÄ–¶W1Ç#|ï •ä­büP›ÄZŸ…EGk O&;_õb òSF~ñ¯ ñ–™{eâ‹©õd#Ìmñ;µ“¶N:Ö½ë‘êÞøSÞ®ßcÝxïk挀»*Ù±è r¨å +y„ ¡N"ﶇ‰ü*¶¿ÿ„ûJM3!˜åL'ý`öJú׸xVðu·ˆ%²ñ$w0¤Œ¶ÆàáàeyDZ§èž0ƒ\Ž[Miö’ –+h„sHŠ2ÛIw¸¼ÆÚ&¥§ø¦î]Z6++†ŠF£¡l>¾¢§ø4’Ž¥;×­ïi§ÌõωòxQð{X’+XŠm[Qò v<”¶zšòφv׿ðœi« .e2®íœ,ŸŸw¶3œ×·xE5ü*ŠïSsi›Ç’ßÎùvÀ@ÏÊyØHèjÞƒã8uðö>šÑ.œ~õ!ˆE4‹ü[N>ný1NTã)ÆrvòféÓ•4®†x“Xð}¦µ-Šmìç†7">C…Ï@W¿ZÄø—qâOÁΚt)¤aLQÚ}Ï$Ÿ˜®;g¯zñÿèú•‡Š.nuxÎ%mÐÈÀíu#¢`ã¦+Ü<¥ |+ûn£›=×%°—ŒE´n8<í-ØŠå9JV¦©Bbï±â_ ­ïǺ@ðúî¹óã ·¡ŒŸÞÿgi9Í{ÿ‰õÙkÓiþ$µ´¹·IX[›Œ† žÅyÛìj-ÆÖÚë=‡„n,Öð©ó„3ȿıóg¾ x'Ž´]JÏÅWWz´måϵ¡ä£& zdëR¿sNÐÔ«:õ}í¾g²|H¸ñ¥àé“J‰!´…Q¡KAû¿$žJ׿ûÝëÆþEuÿ ¾˜º îœÌ›¶ô1“óîÇluÍ{·‚¡Ô´„‹¨¿Ù ¼ym Ÿ)óœ7ð±ädséSh~1²×éþžÍ/HˬPˆd‘GÞÚØ½úUJ rFìûû8NšüÿÌÃ^šÇÄÖöw6ñÈÂ>w¢ç +Î3ëXÿ'×u/K• pÙ"+@–¼Çäçæ+ާÔõ¯ñ拨éþ*¸ºÕ‘ŠO††Gû…1ÈSÓ õî~ƒUÑ>I}©²+Ýy¶†Q·cçlá'§­5)IÊV©¨B¯äxøïÿá3ÒÿáB×-4xÙÏË»çÝá+s_FxËXð}ˆç±ñ5µ•ŲHÞGÊ=/!jÆ–šä²iþšÍu\8† ²/p‡7@Åx7Ä Q³ñd÷šœmåÌÂí÷JÑO¨î:Ô¥ì©ûº–ß¶ª¹´Óç¹ì_/œ<>Û<ä)åõÁ?0olg9¯¥|g«xOLñ ö>)·³¸µI1œÊ{à§8ÍCáÿYkS>á{›%ÔpÞ\B)eõäO¶ExgÄ U±ñL·š´na›aòŽ@> ñƒSìiûš–ï^ªRÐõïM­ê¾ š ¢²H÷@–`l)»ç+ާ={׃xÞõ|_¥`©kÃq]œœdoÝßnÜç5ï`Ô´†Wú…èkXžíZÌËòáBâFPz)>Üš½¡øÞÓ[™´ï ÜY&¥ #÷Q,SKÁÈGÇ$ÓtÕIFmؘÍÓR¦•×õ¹¡ã}SÂzˆntÿAiqf²Ÿ#Ïà®NHR¼í&°|ws¯j~ ¸ƒAŠ(¬ãˆ5ºZ ¦ÌüåqÔ×½x÷Ä]S‡Åsj:¢9·ÀìÌmPzdÎkÙ>Aªé ¯/¯XÚÇ%âÉddùHP¸‘Ôˆ{çƒG74å­æO"…(Í;ùt>}ðL7Mâm4xqI»2¦ÝŸ{“óg±Ö¾–ñ¾«ám?Ä3éþ%·´¸¶ ˜„ýTžHR0qš±á\ø’Öê_$ qlÜOonP!Ú£ÎÙ´<`‘“ÓÒ¼[Æ ñ†©â«›Ø¬./"Ks>ôFtŽ$Rd,@;vsœVNP¡I´Ó¶úèuÃ ŠÆb)Ó)^I¸«;É]«­5³MiÕ>ǤøÒó[Ôü4QÃb±n¶K>c)Ÿ˜Võî+ç¯Eˆôãá°Mø™ a9bw †Çlgv{f¾°øà½[VðmÜW7"Â;«¥6bH¦w,ÎñÇ1*ÙÆøWÖÚÁà³[×íw2ã|òÂ4µ<‚¬pN:à ÷ë?›åø)Åb§Ë.Ö·ÜÝ£øŸwÂq—áçˆáü2©I;9s)4üéÞ¯«TÚ]lüw¨øbÏÄséºõµ¥Í¢1hÖQÊeŠ•ä/_jÆñxñN¿àË‹O Ú*Ú¤!­b±RPŒäÉ-޽ëõ'ÀŸ ¬¼?5ìúÞ™£“p‹fÚÙ¼ß,©$ÓJÎÒ«g…ÎAω7ü#>±1Î-¬m›¤$hsÛô¯—Äqí5ZT°ØnnÏ›þþºŸÑyGÐç[-£˜gÙäh;7(û+¨ÛEïJ¤wÞí&“WWÐü?øð3â'ÄQuOĶ©`RCypZ8÷gî ʼnÈûâ¿@î?e]G\Ôwx’]>{6lˆÞ7‘âe¶7Éü]qïØý…¤jº=ÿ›m¤0+n@`¨UFá‘´ê¹³_=‰ã<ßÚJ8d©®Ö»ûßù±ðÇÑGÃ,6LösÆUW¼ÔÝ8=vQ„®’Ûão}VËÌü/ð‡á÷…4Ø´Í?Lã‡îùˆ¬õU €}Ç>õéJˆˆ#@® ÇJuòØœ^'QÕÅTr~nçôvGÙ ࣗpþ)®Šßm[îÝÛêÆªª ¨‚EÎ{I$¬‚Š( Š( Š)’H±FdlàsÀ$þdšÚŠr“ÐÊñŸªèWšf—vÖ7¼q\¢†h†…<8¯/ôÝNo7ÆΪ¡•–&"8”€2@\¸É䀸­åø»ðüø¹| -ø‡U’/5-¦VŽFSÐpqì¸Éì¨ükñ“á¿ÃÛ3wâ­R(;|¥Ì’îôØ›ˆ?\W­…y¾?WÂBK›]#«ôvºù3óŽ ‡†yÕEq*”ㇼ•v©Eîã8sªR—_~-Ûmþ}/Lºs%Õ´R³pK¢±?\Š¡ªx“Ã^1A¬ß[YHÖi<“À Œþò¦©ûWXë~¿Õ|§ÜÛ[D<¸®îÂF]ÏćxÂŽC8#=TŠùfßã–‰­Ý=Ÿ†l´¨õKœî»¹W’îg<.ѹ½0¯wÁùž)FxäáŠêÿ‹Óî#ò.1úNøÃõjáøR¥iX&âK£®1±\cŒŠëÀÔœiS¬åeJ¤]ú¥-ß§º´ïê|ïa0Õ³,nMóÌ0U¡fí ÊŽ‘ƒÑ¸Éªò÷’~êÊ‘ø©¦Áp.`“OöÓ òŠgÌóLcœJú£Çwúv™ª%·‰mí¦…£F•'&Ú7ì#‘Ï\VÞ•¯|3r–’ZÅ«iúŠÙ»4"3æÜFÿ/˜@B`#9ãJùÿâ6—¬R-KVFhÌ{Yœ© ?0cØýk÷*2ŒiIÓÖÎÞ_Õ™þBæ*´+QöêÜÑæ]÷i¯”£(üºlz~©¨ßê~{/ C sÂþJÚôi@?{<–Ûë_4é‘ÍÄFÈ?ÛCü›~þüñÓžµôÂk]F×Ãzî¥81XÉil€×(ßz<ú/R85{EñÕ•ÕߨtÛ›ÔH ²˜‚37@›qŸ¯çZÊ ¢ŒÛ±Å ºR”"®¿­ÍïêZn—©GmâHmf¢‰åIûNPo+ŽAõÅaê—·×þ’ÓÂvÖðX21AiиÄz–Çc^gñ+H×?¶ Ô5˜ähL{Ø¢P~`Ät=ûqÞ»/…z…®…­jN­ “D¢79T3ÁCß©j¤WM¯™Ÿ²‚ ª_o¸ðM> D±›]ßkßòcýg™‘Û¨9¯¨üe©ÚiwpÛxš yâx£3¬ã8—hÜF9ו¤øæÊ{¯°ÙÜÙ.¤~U•á Ňa&1»ë^uñH׫¡«Ç#!]¬Ì &~mÇœ×Ò³IP¦Ü]Ídý½X©«Xô»ÛûÝCòÚxF x4öFØ-:4 tcÔ·¦ ù®Ù%G_ 7Û|‡øüÀxÇ|ƒ^ëðªÆþ-;ZÕ lšÝQ¾Uk€ÙR‡ÔrGõ­-+ÆÖR] 8.l—Q' 4‘wvB0}iά£Rn„8E_úêt^7Ôl4«øà×`·– `‰®#œt™*G!³×‘s¨\ê:–¾··‚É‘Ê \üÒÆòrÙÇLך|FÒµÓ¨Aª¤†"›]›$, Áñœg¨=0Euß ­¯"Ñõ­EÁŽÌŠ„åU¦‚¹îz¯jÝgM­ Ý(F‚ªŸË¡àÖÑN&aÝö ø_ïïÏ×­}Aã-BÛM¹‚A±Éfxç ¶òWƒšÆÒüsk%×Ù`¹³þÑc„™¡PÙé3z¸?ˆÚ^¼o`ÔuU}„vnBÈ!ˆÝŒŽ„õ¬à• R”1¬ß¶­ÔV·õ¡è³ê:†„Ö~‚ }>@ÅE·y@þ"yݎƾoŠÒ@#Ü.w¸âMÞÝÁ¯søMc}Ÿ¬jR¶ ¡ Óòí'•H«ºgŽ-ÞèZC=’ß“±&x€;¿ë¡}ñNpöÑŒ§+9ºœ"¯·ôÍÏjVú\ÖqxŠ y‹ÛD×QÌ8óö€Ì1ÈoR+.[ùµÉaákx °‘h¶þ)@8O9ôÏzóÿˆzoˆ>Û þª²0 Ë!aÂÈ!¿¦q]›;èluMÁK#m´;p†pÙB¤ŽH•§´“®éòéßäB¥ÐUS½¾íÏdŽPXN­€ßž¯Zú?ÅšŒZcZ&¿,–ñ½Ìs“c’1‚qYZWŒà’äÚÇqf/ŽBJðÙÿ®˜À>õÄüAÓµïµÁ}ª,Œ¡J<’™ä=G#×Ö³„U s”7õÔÕ¿mV¨­c¾›S»¾ÐžÓ¶ðAbêÀ‹rIi1ÆòyÉíšùácxäòØ>îƒ!÷NùÏLW³ü0²¾Ꚋ†KnSyÈS.~LŒ°õ¡¥øÎÙ®²Ïf/~êË$C9ôó1€}ýiJ*¼#9>Pƒtg(E_úë¹³âMEtÈ,WÄqÃ!–Ú&ºŽqÿ-q׎CcÅU}BkÍ!í|+ØÊ£õ2€Jï'œõÆkϼ}§kÏq¡«“‚²¸€ùþ/¨èzWAðªÊð VúU+eö6Bí¦lsÁaÏ"µö²uý/ÏädéB8oku~Ý êÛ$ܳƒÏ÷·{wÎkèŸ_.œ,“YŠRkxšæ)‡M¼ôä7NEbéþ1‡íOŸgöÜáe’!ǧσÏÔW#ã}7]’x¯µEfm”žBÉ’y#8<•” ¨Sœ©¾ci¿oV1¨­¹ÝFKÝ!­|-ooßg$“&>PäüßNÕàæ9„»%ÏGûA¹éß9Æ+Ö¾[]"ê—¤í¹BÇ8i3òà÷#ÔUëD³}•¦´£*’Ë$àbLž:â‰ÅW„''Ëýt$èJq‚¿õ×sWÄ÷¿ÙpX.¹ R™­£7QÌ:¾1ž9ÝŠ®šÍΙö_ Aomc&íþA9i@ʇ$çé\GŽl<@òG{ª‡`2$'¬yžÀއ±ðÂÒìK¨ê°[GIXð†\þì@‡QŽÕ§µŸÖ=Ÿ.Èt¡;«uúny,ˆñËå¸a2œwùæ½ïÄ—2i¶ºoöÔQHÓZÄnÒqÁ“Î;ˆëXúŒn »ËköÀp²¼@{eñÔzâ¹ßØëoä^êáäo™elµÉÎOÔt8Åeªå*o›þ©¬ß¶«TVßç§MõÕ<´ĶÃñg¥þÔðGýtÿûéëLj=±óõ£ íþ ¬TþDmõHwyÿÓþ&‚EnAÁ=@<zÔX%¶Ò¦ÊJ/CÀä㨨îµbÔ§–Ñ™QÛ€3Å2Xno“ífBûÎÞOFªiƤÝ·ªÿ‚zÏžQ>ˆtzüËöT—k?'ÓœU)­gF;;}9ç¾–×M¾šeˆ#.%ˆ îI?Ò¬Þßɧ,¶®B–çñÇëRïRñßúÑ”šNZI$2ZhÒ4ÀÆÒÈ»à‚£æ8ì9¨âÔ5 [G(¸è9ížµËsz¿k.Òd…ùŽH=p~¾´–ºeô÷*‹'#sÎsŒ¦êÆP$ùvõ×È›Eź\«4!2í$ד‚8Á­rZè³4ß)šE1ƒÁã©ÇjŽþù—TšâÆFTw௠Àçõ4Ù๼ŒÝ´†@çoÌySèO¿j¨Âœ*MÑ»–¢nr§môÕ5 ”Z¤ß3qœ~™U -§‹,Êxë€x?•XµÒµ‹BÉÈ;˜`œ’IãéÖ­j:ƒEªK=“¶ÃÇÊqœT;Ô£|MÖ©W)5–£aðE-®‡;ϘÚfO)HÁã95¶©¨ÏÙc—a…È}7c5Ås{ ½iL¹ù9ä†ôúTvúeýÍÂ[*2àŒ»Œç9éúÕ¹T‡"¢­÷ëäJTÜdêZåi-î#c#¡Èù[ÔÇ#Ö¶ ‚Kmcr ™Y jx$¯¦)ºŽ¢É«Ísi!\2½ð'ñ<Õy…Õô-zò™7 Ÿ1ÉVëƒìhŒaÓ•+¹+ƒs”"§¢Óþ–OP¸AkÛIÊî }‹k:{K„l²1ÁäŽy÷ïV Òïg›ÉH˜|Ù-•@õ€ýqÅ5F´åNîZè ÊQ6ˆt:ÅüéöXæØ_åìOZ¥5¥Ä2—*r8$dí#¨ÿ šÛGÔ&˜[,,¥ˆÉ`p wÏOÖ´u[÷‹X’}>FQò€WŒàc=Ç>õžµ(?¬ÝY†‘©ËJÁk ¶º=Ì×@§šTF ä‘þ5¾µ¨J¢ÉgØïǘ@ÏÓ8ÍC2]jp}­¥2Ÿ¸CºO©ô?J† #QžU·ŠŽ2F{’z2 håVŸ$h'k}ä¥wV×¹^æÎæ) ’©'£pIõ­­>),´k¹çX›bIJ’Kcص«ª´Z³Ma+påN70OãP˜îu8Þõä2ã÷gwð–ì}õªP¥ D¥OY+è')NsÑiÿ >×[ÔD >Âß(l~™Ærj„Ö70ÈÏ"±ÁÚärAsüéÐèÚ­Ä¢Ù!`NXmU¥º`v5±«êF bCa)ÂMèp¨Ÿ|ã­g­Z ân¬ôþ™I¨Ôå¢–× :Úk]"îâë¤ÁV0ÜeÎìz ‚ß\Ô¤_²¤ûKq¼¨ÜOLnëL™o5HMќɑƒÿz~³áÑu[‰VÞ;wßëŒ(ê[ Ö®S«N0Ž6¿?»a(Áó:_ò{ayÅÙ 0ûØääV–›ðiW—— ÇȨ›¸ÜḠz-I«jiªa)Ê*©d8 @Á>õ ‚çV®Þbþ_ÈÁÏ*XðqÓþUJc‰” Û–º|„ÝIÓ6‰ÿ˜[kºŽÁl³ìÏʯ€íÝj…å…ìR³É%~VÀÎ<çëëM‹DÕnfû,VîY† íäð0;ó[zÖ¤m5ö6cDŒ²ž¥F±Ï­Bn­õ­¶¿ðã¼UKQ°Ý6'µÒon.”Æ“X÷q¹ÎGÐwªöž Ô¶‹uŸË-ò‡*3ÏûXÍ­bteg „`ç% éíϨ¬ØôfI–Ò(¹8û¼}sÓR•ZQ„pé¸÷ÿ†ŒeÌêµ븷Öйi’8r¼}úõë[5¬¶zMíÕÐÙÈÜàƒ‘ôÇZ~µ¨5®¯æiòÑ¢!d?x¨çÛó¨]/5¸žîK‚ê‡k?ww ŸlñÅZ…(âdàÛ—by§R”yÒI…ˆµÂÕn|½ß/š@Èú¶2jÏÔ4ëûy§F$›øŠŸ~½j¼Z­w7Ùb¶‘™øL×wLwÍtÚö¦,õE6ðÄ‘™ýöQ‚sÏz„åZ„þµ¥­ýjUã©PµÝïøèv÷6ZN¡}v pÍø.ùÈÇÓÖ¡´ñ&¤˜³áD…F}1»¢Oµk=ãÎî#À9É@{ú`ž8¬± ë77"Ñm¤Üp2T„ínèG½S•JQ§2m~p”a.wY«þZy޽Ó5X¼Ñ³c*ØÉ úúó[:Åž{t¦8-‹ž ¹#µg_ÔOÔc36øaXÙõe­Qvº×­ÚíîZCìœlÏB=‰ãЍӥSœ¼ºÍRtW5’xYx“R„‹o´ù{ÆÁ!PX{gZÍÔ´F<ɃIƒó–#=©¨4ÔÑ5Éæ iÛŽŒ{wL ÝÖï[K¿…,¦&H!HõeûJ…)Õ£%ŠºJÆžä*¥F××ú¸ßXÜ[Ø_ê7Jaà(7 ov#iúc¯je—‰µ[¥Ï—žÊ‚FÚÆEHÿjñ s-Ã?•òºH~à`@`:`¶>•‚š±4âÆ;i ·€vŸ|Ž1øÓ”ªP„]wÿ†ØˆÆœÜ½½¯Û¶…½WIÔâs,Á¤ÛüA' Ÿ¯­kørÎâÚÂþúéLp¼^Zî,ùàêëRx‡Pm?R‡ìR³41$lÈØÜÊ9?‡NiŠ÷>"§{§‘¢:IÕsÀ`zc=x«ä¥Kœ_½Ûå܇9΂æ²NÚüÈì"kŸ±‹)ZWáp¤©Ç 8ǽvþ'¿}k;KK†3ÛÀ±ÈÑ0å‡Qž‡+5)W¡5ŠÑ.¦²p§Z?W³n÷*ø*ÂöÜ^ê÷Q´v¢Ýã ã¾èëƒÍC¦øÎþÕÐÝìcò¬­b¹à|ØÎ*軼ñ„o+]90)߇Aãràrzã×ÂÞ%2­ŒVR¼Â”©í»wM¿SMÊta†Õw&0§Rsx–“ÓNß~柈4-mY/.7\7%rßxä7© œŠÖð.—{noµ{Äh­~ÎÑnq´<‡>‡ŸjÑñ%ôž“N´†à›‹Ku†VˆŽXu÷ÛÒ¡†úëÅñ¼¦òCä®$ŽSÊ«ü»—±ã=ÅZ§Gë^Òþ÷bêÏ ÊÒQ}|¯ÛbŽŸã[ÛuûÝ€ÝSb¹ôb GÄ:&´ì—“n¹e1\“óîúÎkøSÄbì峑ܜ«¹¸qÆ?ïüO©7…ÛO‡Î&âÖŽO(òYzóМTFR¯Nk¢Cj:±x{]ÞÿÒ)|>ÒïmšóX¼C¨·h÷8+¹@3מMGcã»»3ö1r>Q)X¯¶ãÍ^†þëÆ1;}ªRð¾)zë’‡ç)–È~CúE`7ƒüF·BÂ;)ef%P¢’Ž}ÃŒ\פx¢ý¼+•eö–ûM¸ŠF„ä–ÎJõÁ8ÍDgR­*‘Ä«$T”iÔ„°ö»þº? ô‹Ë{»­fò6ŽÑ ‘œ$fUëÏ4šw®l²ûfÒjÊc SÓæ#8­; FëÆêÛ.åÝn¤É ˜áOÔŽ;ñ^xþ ñÕ6›ñ]9Í£Ýñ`9Œ>ÏÄó[ܾ6ÜMÜÞl KÁ'÷×ië^jþ ñ,?dK)¦g?#"nGÏL0ãŸ~”9J(¬6«úì+B­Y\‘!d„0ãë“I¹Ò¥‡Õ (V«/¬Ù;mÿuž5Ð5ûÛhu'-zW÷ŒÉ–,¯Èp:‘üªÇÂ}R_mrxÚ;xäYž@T>åÀAœg&ºOܯ‚|?¤i·W ·–hUü–ËÇ%:öÏ5‘¯Íãæh Ôâkq¸ÛËÈeR:ã¸ëVáMâÛ´»º•~¬ÔRåÕ_ægZüImèØý¨•F*®cY<¿Ä‚F=«;Æþñ£g¡¸ßûã"e·«€UÔu#±ô®BçÁ*¶½û4V\4˜š%ܯ“Á8zÿõëÖuÉ<-£i×·í–håÄ$eL‡w—žzµ Sª§ êȹF)ÂX{6Îká>ª¯‰ÿ·î"x,­!›ÎyPáШœg-Ž*õŸÄƒ£\µ‰ºÎÆ 7–²y|ã‚yãÚµtÜøñ º˜Mn¦F·›£ ÆçR8ÊŽÝkÊn¼ â«;³k”·!ÜùrD…Ò@zÀp}sG4¨ÒÕõ@”+Ö“ÄY;->þ¬ì¼y xW²ƒUo¶“)+óoGèàwÇJ>èš™ñ'öäð´6–±Iç;©U;”€¼ã$œq]6¸çÀ¾ÑôÝBã˽µVÞ"9`ÎwÁ1ÐѤxªoÈ- Üë4Ì0OÑÓ²•êWÒ¯ÙÒ•e9K]43ç©õw¯w]|Œ«‰Gº}8Ün¿ å By_Ç>ñ±c®ŽoÉ>ydËo‡ ·§jã/¼ â[-Eí㲞çÌmÑI oIØŽþÇëZÕËøÂz>Ÿ¨ÎÑÞÚgXÎYL¸ <ýÞô”çUN8r:r„¨4Û9O„:¤¾+]rx¤†ÆÎ9 ÄŽ¥+!1ž¥jGñ%4+Ù4ö¹Î×8>X&}ÎHǵihþ+¹ñþ,æág·co61"¼ÈGV^¸ü«Ëo| âK=BX­ì§»¹h¤Š3"È þ÷cõ¥yQ¤• S»Z´ž#Goës±ñæâ_K‡Qónå c$N>W_\rŠáƒ«¦¹,OšI漊QHe#`ÏROjìõ©WÀ^ Ñ´ýBr·¶a™Ä'%ZBXF§ý‘×Ò¢Ñ<[qãÖûw3¤öãÍû<Ä1Þ(F uNÝxÎOÞÓC?iQP”"½Ýuò2âZèw屢œª»l>RÈ"úäcÚ©xï@ñ»¥ÅªÄÿÚo;reŒˆzxî+ŠÔ< âk=Iâ·²–é%´2Ä…ÖEn˜aÀ>¹¯^Õ$ÿ…à}+MÕ'1^[»3¬g%wœˆóÓ#½%)ÔŒãYZ%J0¦éÊ‹¼¿à~ð‹ÃÚÃø¶bH^+K-í<²«·i2Àdœô­ãñ)4FM>KŒª¹Á1‰Dc=‰© ø¾ʺhº¸KˆA”[Í€²*õ*W‚@ç­y^¥àÙj’Çœ÷I,…¢’2+î> p{sSÌéÑ^Ã]w*­^_XÑÛoø,í<áßkúd:¼rD» ÃFI2D£¾1‚;U?„žÖOŒíõ³ Ãgc½î%u(» SœgqÇÛêH~x HÓu›ƒõ¼’ÌñÇËE月³œdZ‡Añ‘øƒ*éñÝ\%Ä?8·›eEå¶ã sƒÖªP„«)ÉëØÍTª°ò„»®¦wü,ؼ9{&š÷;‚9Æ"YD\úœ‘j§ñBñ'‰ôxµxeþÑóÁNL‘‘Œßiê:Šáµø¢ÃR• ²–ñ.%/Щ‘\1îTp݈l`×®_yŸ¼ ¦Øë´7<’”t2v¹sN¢”*èŠq…9BtÛ·Ìáþø{X“ÆvÚ³Û¼6¶%žy] (R§+ÏsÀÅu2|M´ðî«.ž÷Ô9*B_,{8ü*Þƒã‰ü}:ék¹Šåõ‚lm”/'i^às‚+ɵøšÏTœCg5Üs»4RDž``Þ¸éCS­:kØk¨¬«VÿhÑ¥ýnwÿtø§CW·˜êBG«©'͈ä|£ý“ÛµeüÐ5øNìõ¦…íí4òd¸•Ô¢ìÚA'©n€WozdøyðëKÓµ©L7I$ìˆrñù§+Ôw¨ü;ã‰þ ̺JÝ\Çqï’ ñ‰‚òÛJÿœw«p§*±”Ÿ½¦„©ÔöRŒVšêSŸâtÕ%ÒÍÆT1!DK '=HãÕKǺˆ¼S¡G©ZÊuî· S“,Gº©î§¨®]ð‰,u‰¤³²šî+‡/°¡pÀž™>µì7hÿþi–:ôæ ØeyÙQ²èdÆØþ¸æ„ç58ÕVCq§IBt5zð›Ãzäþ1µÕa‚K{k2M+¡E ŽWæêOLWY{ñ:ÛÃ:´úzϽÙ•b_/œñ¸1íWü?㻈S íW0΃zC9f ÉÚFìv=kÊuïxšÏYœÁe5äw2îŽXPÈv u—¦*oìé¯a©VöµŸÖ4Óõ;ßè>$ñO‡“X·›ûDJâdd92F8;Gm½Ås_ ¼3®ÝxÞÃP† -í´Ù<éæ‘ *Æܹ8åºb½E†ÿ ¬lué½êÎ×-d3Æî ŒœdНáßIñÆ…åÌ7 –Š ±¶ãhÉUaüxèÒ›…9UŒäõ%Nq¥(Ai®¥K߉ö^×'Ó…Á‘<Æ*†5—Ëä}àqøU/ˆ7‰ ø}âk-nâæÖÆ[Èî$/ÐFeá8ÎÖŽkÖæ´—á¿Ã+ OÌÖ÷ks%ɉ^/0 ±ç³dŽhæœùáUY£N ¤îÏ;øWá~ëÆÖZŒ6ÒC ƒù“JèQQr¹8äôÅwÿ-ü/­O§ý¤º Xü¥”E“œüÀàóÚ­øsâñü« ‹»˜n~ôqLɶò@a›yGˆ¾x¢ËZ¸¸·²–ú ¹L‘M 4²~é V±ÅJýÝ5ì5*ÞÚ«öúhwþ;Ò|Kã? ®¯c7ö—˜Âhöu‘ z©êµÉü'ðƽqã>þ Y ‚ÊQ,óH¬‹&wN9#ŒW£%œÿ¾[ÛøŽ_±Þ‡¹1«fHÃ`*û1ÆqKáÿˆ¯ñTð𹹆áîcŸ\ûy*yÝŽÄsTãR2›×±1œãJQ¦¯u+êŸì|1â ‹3p …‘b]ƒ=·tü*—Žô?x×ÂÿÛ7'R[‚·2ç÷‘¦A@?¼‡ª×Ÿø—À#´×®/-­e½‚éËÅ$H_“ü ŽCÛŠö8íŸáÏ«KOÊm®ÍËÞùácj ¼ØÉ¡JRr…Ed'Â0'w¡å ü1¯]xîÃPŽ -à°—ÍžWRб¨ù$ãëÐõo‰ö>ñúx”´Eˬ^ZËå†9‘Æ}©þø‹7Ä •ðôw7Pܺ8æÆÙ¶òT›ë^_⿇¾&µ×îo­-&½·º2)aC Îy±’ ŸZ‹¸SJŽ¥4«VÿhÓCѼ{¤xƒÆþ:¥„ßo2ÍÏùh‹Õ@þòÿv¸_…þ×ï¼kcqkm%´vR¬ÓJèȱ¢õžç¦+Ôà´Ÿá×ÂÈ ñ†Òïí-så©ËÄNÞ8ÍTð÷ĉ|:øqnî`¹sºŸ\ØçnGFúç5N1”Ô¦õg8ÂP‚¼{’ë¿ì|1â[«›r4¥Ö!Ë´ÁÇáY¾<Òü)øž_±]Ëtn¼•9’ *©€ÍÔŠœœ£Qh'S„*RwzSð¯Â^"¿ñÆ›=¥¼–±ØÜ$óO"”X‘[,GR21ï^ŸâŠvñ-Õ¢ÎL/)t„F%‚xêÒ›áψ¿ð°'ÂëyuopÿêRã\Ärãæ=ƒW—x¿áçŠmü,_øJå6w2Ý}«Êë!BýæÇAQxsâhñÔÑøhÝÝZÏ!ýÒÜ`¤Ç®ÜŒaˆìj¤©¹©Iê(Τa8ÒW]Çø‹â…(Â}q„ÅÝÕ´ó° €)1ýYa‚ u¯3ñ·ÃÿÛøŠëT±´šö Æ ’B†R¬ 0\Aõ¡{”Ò£©m*Õ’®­¡è~6°×¾!xB]KL¸7¿jÛ$@q¼FpÑmþ_î×—ü6𯈵iæÒÚ[qg*K,¬Œ‹¡ËHG¯hÒ4뇟ÙÓum<¿ê|ìySÑ29㌊©Fœe7©*U! šºîXñGÄûøšêÑgÝ’XDB`£<0 sÏã-â„dÔ´Û·-ÎÖ‹o¶rcÛÙ‡¥yÿþø’×ēꖖRÞ[]UàC!V7æõ}L¹ø{ð¦vñL†Òâæà],_Ç´g†cÚ’”¤åì.XBœÙâ¾ð—‰u_ØÁ§YË[L“I+£"¨AbÌÃŽ˜ÇzöŸ|Q±ð§Šï-’}ñÈå„B5”/ûAX3íT|?ñGþ©“ÂæîêÖY¾XLØòçnÈX`‚z ðMyÏŽ¾ø™«”×PÜ¡O0£¯ Œ£GjK÷tß²Ô·ûÚ‰WÓCмea¯üBðtÚž—sý ·J†¼ª?4[„ãµy€<â}OÅ–ú}¤Ð5´ÑÉ,Ž…+‹08ë^Õ¡hóü<øMw'‹_ìW·kv°“™!EP¹lÏAš§áߊKãyÓÂÂöêÒKƒˆLàys7ef‚z Ójœ¥MÙŠ2œ#8ÒWF‡‹>'éþñmå²O˜e™¤¬bP3Ÿ›kp ëÅfø¾Ï_ø‘àùu.óíÉq†ˆ/Ëþ¬å¢Ûü'»×Ÿøßᯊañ=Ưig5üdhQ¥dphÝFH Ž=kÜüðÇÇ~øeuwªØÜÛ½ÝȸÚÈ@…~ó“…BßíŽõ+ ýbJ+ÍØìÁåXÜÂÏ,¡*²]#'÷$ì|Óàx§Uñ%••œ°Kˆîì… ‡,Ä×¼ø·âm„üSs\oŽfÜ!$]§ž¼U]?âDšÞ¤< }=¬¬Dq¹–9 •ÁÆÃ$D®IèrErž#ø)ñSñLÚ–‘§KuÀâmÊ©¨ÁGy ªsГÍOµ¥F´ŒÕŸ[èU,»0ÇcžyJ¢û*-ËMôWzu:/Á®|Kð”ÚŽ—yöñ2. rÑmþÇnõäðwŠuéÚ~i-¼\ÄòJêQa Ùff#Ž+ì|3ð§…~ý‹Å«i·úŽÛ¹¡ºx­Ò‹*HŸ{.Ö\B’qù};àŸ‡¾øá[x"×`»ÓÓhôÙ|Æ”º&‰~ßuUµxù†}€Á%WÌŸ£ûÖzt}ÏÔø3Áž-âêï •J“ººJ­7Ò:JÒ÷yoï­jCùÐñ?iÐõ©/%ñÞ“n·r%µp²¬c’J¨,KF>UyéŸb±ø gâ*oO×–öÏP‚¡’âÊB®e+±å ƒÏPE{ðKá.—ª¶·máû&»`«æË•†Î„7`ûŒõEB ª0à+óÌË‹qؘû<5Y[¯4a¯É/Ôþßào£‡ äÕ^3ˆrÚë——ØÔÅ7´ožuÅ»J W£²Hò­/à¿Ã» >ÖÎëL·›ì¬&kDø¤Ž̑䌀:vï^‹d4‹wm?OòQ”hãÚ Е¾µƒ¬ø+Nׯ¾ÛsxËû¨î8¾_öTŒç¾x5ÐišN›£Z‹-.‚,“µGRz“êkçkÖö”—5iIö{/ÇôGîFSýŸ¨°Ùe׺§z“ŠÑ]*q·Îr·mt,¬ãœÝG ,¤`¸Pqž¸«4Uk»Ë;MÅô© `ºF 2N'“År^SzêϤQÃái7£vöK»oõdÒ'˜…ÏqÖ³cÑ4¸õ3¬ù[®Jí9,U{„ÜH@{íÆ{æ¹O|IðÿÃÝ6OVK‹¡<«Çgž_˜¿bó°c’=½kþ%ê7ú?ö—†¼=¨];ŸÝÇ221Õ·T}F}«¾†1©KÚRƒQwWmE>ú¶‘ñÙ¿ðFðŽ"ÄSå—³Œ]Z‘vn2P„g4ìÝšW×ͱU/ï¬ô»µ-FE†ÞÝIds…DA–b{I¯›|ûFøw\¼žËÅZ†Ÿ£Í­mä´ê\H¼’ž3´ äH"¹OŒÞ!ð÷<(úÇ„D¾&Ö¥cX®n.o1"’ÌÐ+P.ÕþÓG#ÆO°Òƒ»i++¯ü D­ßSÀ̼\ál.CWˆ0¸ª~Μe){IòM[áJ•IJZÚ-EéfÓÛé­?â5kay¥kV70³ùaâ¸Ô¿]¹ FqÎ+kPÔRÚÄÜÁ,*OÝi_j~c5ùÕ¦xçH±ðeαâíKðÂ\²ŽÛOW—ju•Ñݶz|ƒý+—OÚOÂ:¥Ì:O†/õA{>袼¾‚mb$àypÂØ]Çø˜q“‘^ÿú?i^I½Ó_ªÒÝõo²{‹ËéG§‚Äbj*3ŠK–P›RìíJW©)uŒ\aæ©y/²ôˆ¦çÇßgµÕoukYs“i§;ÙÀÜ`µÒ+ÈêÇzW¸izö‡­´é£^CvmœÅ/’êûJ¶ÒppzWÂ~!¿Öõ?-‡Ä3o}1lšoíKÖ“sž†ÓNÕŠŒ`¶IîqÅz¯Æ|%øvxrÂå-í×1%Ô’@s¨™šT=ªû(®|oâñ59pt’ÓN^K.¼Ë•kèŸsÛáO¸{#Ã{N&ÍiBŒ—´j£ÄiÉ¿»oÈðs/¥§e¸¹ÔËÖ/Ýí B:k]Ô¬ªmµù´ZÙÝŸ¯Ú§ˆ´ÛÚ’2®ªOÐ϶:רþÒ õ—°µk³qçúdq†'SýYË(Ó¦®—´ç©'µ›³‚ºÕÙu¶­'·>#þÚ¾ðf 4Í?NiÜœwëîAã>õæzí-ñgǸÔ|ukiæ£$F({¸ÈGóK€Øè@¯‘¾"|<ñ*ë§T·µ’í<±žR™'^ ªäàõ½wžðî¥àÏk:׊ó`ÚȆC‡ÛI”¯Uô×»…ᜓQÅa“]åwù¶¿ñÜóéâæ{Oš¶y8_¥%K念/¾Mž;áÛ/‰·¾'tÒÞþbí™n.wÈ’Ÿ0æV–\啺¶IÝß5îŸ> ÙxOÅ’‘rdU Q vUÜ©ã–Írº'Ũõé“Ãowh—'”pc  ž3\ÏÄ_‡^(]xjÖö’] ‰a”D7˜¤N+×kukÛ„!JTÏÈ«bq¹Æž2m­Z»oW»×«ëß©Üêòë?|1qy¤^ „‘<¨Ô,Ç'Ë+À x&‡à¿_jphVztËq¼.v#,Xðõ¯yðO†µ/øYÕüL>À/Ö?&)x}±rÒê8àV^ñ~ ZEðì××v±L|¸çp dž›ˆù°r1U(Â|®«³1„¥OžUÑÓøëÇVÞ ñ ®·†TWPH¨ ÌTŒr{Ö}üú¯Ä¿ ÜÝi7¾z0¬xòü©?¸S¹è p_~øŽ=gûZ($¼ËÉåƒ#Fàc•8=A×øÃ:¯„­¬¿a´¼Û4vÒ.% ØdÁ9P2N*ûâ‰Û·ºUýÄË™˜,ÎØÀó$Ž%Ï}¿¼$œñ_‹ñqâ ´U¯?{æÕíó™þ­ø)ÆTªø'–æø˜Ë— FMÛá§%O™Yü1†üÖ~ëÑ«7éµóWÁïØk_üa¤é—¢êÑn¢A_&DÈH îaùúTò+ä7ðŸ…~üw>)Ó.|„ñ.>ÓnÍÀši[tƒ  N8ìk –”q4ñx;>iSmzÅ©~–ùÛ©ïx«ÅdY‡ q<%F†.1ªÛ´¹q–ÝÕ&“©Í%ºåRÚ,ð/‰ßµ7Óþ%ÛéVï+]kv¶yÈÜÌ ÌÃÐö_ÚòÏdó… Y#zgr1_™?|â#ª%üP=Њ1ÂÞPއ’­× Wé|)[[(x©jä×þJ”[üÏà/¤vU”d~"`eÉÅRŒ›ìýµJ˜…gýÕ[’Ý ŸS®¹Ô5OˆÚ÷š}àš@¨@É‘‡¨àè x6Ÿá\]®…oc0º$ ƒŸ¼[¦\׺|;ðæ£á kzç‰Ù%ô 1Jv»l;Œ¥y /bkGø­æÝïnàŠ\F³¶ y›v%„#D±mòü§<€Tp7z×ãïxûR=B(íbb”Eóº78m£$«C èþøwTðLJõmwÄ*Ö1]Â"†9ðr_oPlÖœõW -q¤¨©Åêxµ„¼IqtžO›íLÛv”lqóÓç5ôŒ|RÞ Õ †k¬ºÁRª¨Hê 1ÁÈ#=ë—Ò>,Ç.4)/nàÿv·8éót8籬¯øÄ-©¦¡m^ˆ“Ë”E—e=Cm%Hç85œmJ›tÙ¤¯R¤Uuc°ŸSÔ¾!èSÍ¦Þ !T1¶ˆü—q…%Gð›O øŠ[áøì&7NJŸ›±ÏLwÍ{WÃßj~Ñ5]ÄQ›(/-ż1Ëò³Û‹í#î¨qÞ²t¿Š‘ɯnà…ÎÁp0QsÇ `í÷IF¢Œ«;0Œ§MÎ×õ÷Ž|Z¾Ö eºX"ŠU $: Jžö>†‰Æ#Wvb§)Ò”ãA]huþ8ñ'ü!÷–½Øi¢µŽ ö –D\1ÁÈ#=ÍdGTñæ•5Å…Þø#<—q…%G™®kÇ>ñº†îšðÃÉDCyç•p;†ëádžu-MÕ|C®FÖ6÷6ÆÞ$—åi;·íÆpƒ<ÖŠUW /tŽZQ ªEÞ_ð~óÅ ðψ ÐÑ’ÎcpÌT&ÆÆs×=1ï^íâßÉá Ë$k e†Ú8¦ ïe‚Ëiß1¯.¢Žß<Pã§ÞÅSñŸ‚|A%Ä76è×›#ùc{`œ«Ü6G"³‚T©ÊXwvo9:µ"±oó:gÖ5Oi²Éiv Q)F‡hË$`1QÆ ã5âñxc_k¡£5œÍ3¡úç¦= zÏÃïê:%ž£¯ëQ5•´–Í ba±¤f9û§œ/^k;Møšm×û.K˨ l¡œa•AêvõÇÐÓœaZwf*r•)Î4Òþº'Šu©üöËt>Ñ´qO·½Ôr<½ @ºÞ¥ã› ­ØxbRО[0!NÑÆ ã=«™ñ‚õÙ¤ŠêÕ ëF¤H"ùÛ r® ƒÔVßÃï êZ®¥â-r³·–Í­¢YF‘؃§ ŒäÕóÕuÝ;{¦n4–Ú&¹¾[žCÿæ¾.²Mœ¦v%B„<ž™Èǽ{‡‹5¹<+=†ÛŒM´QN 꼂 æ4ï‰ß:[]ܤãÎ^Bç¾1¾ÕWÅÞ Öäx.íÔÝ´j›2[ ÊÈ’Cf²‚…:s–ݚͺ•¢±Kóû΋ûWTñ¾Ÿ#ZÝ&%ØÑmùe†ˆ'Œ×7‡µä»]$ÙÊó*)!±éŽF zÏÃÝRÐàÔuíb´‚KvPTÈÄç;N>è¬{ˆfL[»”€å<Ðx\ŸN¸õÁ¢ja Wva N•IÆŠM?Šu‰ü*4èÎ.`¶H¦ ‡ÜñÏ*õ}CÆvlö×@Ãn ¼BlÝÀ}£ŒgŒ×1â¿ë„Ã<Ý׿òÆY•¹Yî|VÏïêš:ßx“XŒÚÛW·ŒKò´¬ç€àázæ´ç«íý½Ó'1ÃûXµÌ¿;öÜò“áÍv;¯ìÁg+LÇhP„†Ïp}­{7е{¯ &•\qoj܇ÞÉØƒœã¥s:Ä)-âVo.Rß%<ÕÁÚ}½Hüi¾-ð†±/“=º›Æ‰K0O˜”™dQŸ˜×Ò³‚…*s–ÝÿÁ6›u*B8‹%¯ÏO3a~(°P7ÇO³¯øS¿áh·÷Çþ¯øW˜/‡õí£Wxö…ÿ—þýþ|®ÿïËÿ…cõ¬GoÀÓêøOé£ÿÔþÛK¼’FŽ%Ë)ŒŒŒU©"l¶·y²²¶ÑÎ{Ÿz£}wçß½Ì|olþ•"Z¬öæéh,·sƒÛ'Þ¡*|óTºõ=wÎãQèCò˶ÖY_cq’Ií‘éR¶™ted€n`pTAéV!Òg %¹tŠA2’×>õWPºûF¡,Ñð}{PÓö7Ä®¿1ó^v¤Ë¯ntÝ2K{†YHU䪨ïÃÜ´–gUbä éÅH¶ÑÏdnÔ•ù‚8ô'ߎ9©í´‰Ã î#€LÁÈ€êI­k9EÑ»oÀ‹Â)ûG© Ò®^S+¹á”ŸNýªóBtÝ.[k“‰¦em™ÎнÏÖ³µµ¸Ô¥¸ˆ`;=—ÿN[h§µkÛ0Á\7ðžÞäqTý¬ýŠ×^£|î)ÔØd½Ö,ä•ÂXãžií¤ÝÉrÑ»Ýz¨<ÃÒ¬Ûèó3ºtŠÉ}Ñ××&ªêwqÜê uýã‘“Øt¨µèÿµ.ªÝÆßï?tËïltÍ&â+¢Ó•ùÎнÎ+2 ÞP-¥™ÕŒî$~#Ò§ŠÖ+»Wº³i û»nèséÆ*[}vm×r$pó>àFÜä€9ôªj¯¸¨¯wþRoMs9½Q’h׋pÐF›¤Cµ—#p#Ú®=´šv›=½ã*Í>Ü/R¡Nr} RÕ/–ïR’òò±yç`~$u¤ŽÊ+»G¹ ·$€ÿ nôÍTU%Z~Å{Úõçtãí]–„Ý<»mä•Ñ–8ôÈô« £Ý´ï æ:ü¥AúÞ§‹D¸b%¹dŽÉ“x#é>ƫ귩s¨¼öãŽÏ€}ª,Õñ+ª·r¹¯;Q~¾¥ãntÝ6x®ÈYf*jr@äâ³#º2Æ-g‘Ö>™Üp>£Ò¤ŠÚ«W¹ ³cqìÝ{Uˆ4;–®8¡?zBãÿdu'𪒫î* ݵ¿¢N ›Ú=FK£ÜµËC ‡dùJ‚ã¿ãW^&Òtˈop²ÜÉyÉô=«?S»YµžÜppœdŒþ4ømRòÖ[’ÅJ0Y3Ûw þcQT¾±/f½íz鰽纱^ÞæFQk4ޱ±ÇÞ$ úŒô«£ÝµÓA ‡eùYrõÈÏPx©bðõܤI<‘Gäɼa×5[Y¾KMîmÆ:É#ÀéSÊýƒúÚ·assO–¼ÍHà:F›p·ÇÜ0rTç‹ ä’¯Ù¥‘Ö"q’ÄøU¨­£¼µ’è±B„+Œž3Ðý=jH|?w ÌñÇñK¸mÁîSÅT½­¡õuîÛ×ïáûG©ú=ßÚZÞJ¼Î;õ­m?±ô»±}5ʪ¬`䀧;QÕÔ{Q•ÉÆBð(¶µŠöÎ[ÅL{D«œ­Ñ‡¨ÏZq‰’¥ñkÔ–äལ²Ð¯¡'üzÍ,‰q’Çê*Äš%ÚÜ´ ìœgˆö"¤‡Ãws2åãŽßø¥ÞíïÉ'&·ú›Kh U)>ŠñÆjlÝõÅm¬R~ÿ-Ÿ©z+VÑtû¯í 4êc$(9Éô>•‘¢ì¿e–WHò9ÜN3íéRÛÙè[Kp„«&«× z0üjH<7{1 ípž²—]¸p3œûUÉV´^?Öä§N<Ϋ×úØ&ÐïÇ“nŽTHê®EhÃ`Ú&™s&¥„–áV4ˆ|Ì>l–8¬ýcP‚]@›3º4UE'Œ…ÏãE½½¶£o-“ :õùI8aô8Í8ª+%M{ÚõÓoOÔ;¦MŸ™VAŠ}’âGX½w¸«WZéº0ÛòF(8Ï 3ÔƒD^¾¸ù¤’(àï6ñ´/¨É>Õ&»¨As¨™,³¶4HÕ³Œ„søâ¥s{K¬•­ýÀ2•D¨ëÜ»«hšmÓj@,·*¨±ääX–÷Ì#“É"ÂOf'øÍY³¶·Ô­f¹,chqæ œmnŒ×µKmá{ë‚|B¦bãn;à}ìÓjµ¡õUxýÿy<Ôâ¤ëK[ÿVãÃ÷¾Ùí¶Ë.d’:ŒsÈ"´-ldÐtû¹µRiÓËŽ<‚ØÈ9#œt¬ÿjK¨±ûˆ‚5'Ðqž:ÒÙÛC©ÛË9b¦\çå?Ä?Õj4~°ù>.š„½¤é/k¢{÷)[ê2mf–U†Þ? ô«·~¼Žsmj®9ÚW¦r 2 êW,Ép7ü·0«êG\â§×õi¯ÂØÑ@‰3gƒ#¯5›¢þ¸º«~#æ^Ó–ƒï} ö:|ºŸy>ªDrÜÅåGAn¹,Àg¬+]RDŒZO4©p~côÎ?¥^Ó­íuKk‹†Ü­†uù'ר¨íü'¨NCoˆ[½6ñ´R>ñ>‚­ûU,,}Ý>½‰R¦œÝwï~Zia×Þ½IV;\HûAڃЮzäV¥†Ÿ.iu>«ˆäž#q“–$žI±YÞ Ô­'¾E°;ÒÄjÇ#vÞ3øÓôû{]^Úiƒ´R›IÝ”èXgžj¨Æ‚ľ_‹§m½?R[¨è§SEé©mªH‡ìsK*ÃÓ‡<R3Ò¯_xnïÎHí JÅCÊ܆õ¢jsàÆÑ}œœùÆEÛŽçsíÆâ;Ë/µÅžÞjAÆñ¸ Á?Ö³\ò£/®-:t/™:Š4ë#COÒeÐlîïuŒG,ðcˆXîÆâ@ì1X6šËGµ–IRá¶9O¥ji–ÖZÔ7hžÞ2΄–ÌmÆå÷SŒŠ‚j÷D¾2¢Y••Â+œ1SœPr+cGÓ'ðÝåÖ±ˆ$žq rIà Íñ>¡d/`Ov’;h’%n€…ϯ'¥.—oo­E<ŽYÜã%ƒ!ãpÎHÇqV–b[‡ÅÚúlCu%A:ŽÑ~^zu2¬uÉb‹ì²K2Âp×=>•­¨øRý¼µ±"W*\¹O!—'Ÿ¥Aõ‹— lð›vÁùŠ)ïƒÎE\ñV¥gö«x4æóÚ%‰’þ#SéP•GJ_\Ñt-ÊÖ1Ã=u¿o™¥ h׆ïQ×H…¦…¢†Fó»–ð+•µ×¥¶‹ìO4ë8ʹàzã=+WGŠß^I¤}é< ½×%ƒÇа'¦ÜôªÖÞÖoX}ákfÀEÚÔŒg>Ôß´Œ °ŸÞL}Ÿ<Þ)ë§K[Ó̳©øNý¤Š;,M&ÍÁIºJ¸Ï^5³áÝãÂðÞjzá´°ëWŒÍà{ùîdPª;’ ÈlvÅ6êFœ>§ª%{5)ýië§ü µO_\ýœén·,ñ‡'ixÛ•uÏ~ÄVׇ<7ᄺÖ|A¶ÜÉnðG 0,æA‚HÀšÏñ~§§Y}‡LÓ[í"΄8$*r\wÆzSt&±ñ$“yªñÏ EÝwnÝb¤òAϽRˆ½ýîÞdsU–ò~ï§K™^)k]ÖžeÀ¸b¯Ž?ÝéùV¶³á »¯³¾›"ÜJÑü œCÈažþ£Ö³`ø}­Þ0û°Kl忚ª¡OvBwíÍmx¿UÓôï°éöÜ‹(„aÇí<·®2x©^ÑÓ’Æm§ô‡'mª½^懄ü9¨x\Ýk#Ô¼q›© g ål¼aö%{DiÖÃrúé[>kOy±Ê Wñ >åtèÄëYvÿu»©ií ÖùùgóUT¿0<‚)·R¡&¨IÁÔ“Å»3C\ðeíÄv§Ku¹¦èòÀ#nA8Ïb+gÁžÔ<'-Æ»â1örmä†(IÜÈ0r?(ëT¼g©iÚtZ~‘¥±¹Pˆ’Là9æn9ÆzS|2Öþ(–Hä+»hÚM‹,± #'‚¹Î=«NZX»~÷êgÍUáìþöésÏÅíc›–#$„`wÂôÅmkÞ º¼ŽÒM.ArÅF ¾6ä0'¸èEfEðß\ºf4Zäí¸iU@_öÔò°­¿jºf“m¦écý£ìP•òT9$œsŒž1P½¤©Ïë{)AT‡Õž½tòê_ð_…ï¼'q6»â0-± ‘Å »ÉôÖ¹ /5£5¢5ÇÙŽwr3Ëšè<34-šHîCCweð²H€|Àdä9ÇJɇᖽu/üK íÉÊÏæ¨Uûáˆ`pyRnp£©ê„7R[zéå÷çƒnµ-&Òd[èd$)‘ ê2~ðï[> ð¦£ákÉè=äæ©øÛQÓ4M3DÓÞ (Ê Úº±þÔ>º¶ñeÜ–“«CwNêIQAÞs†·zÓ–‡ÖûDóVxgwî¿-msÃÆËa'ØâkƒnIÉG óÜJØ×<q©ÛÙÏ¥Ì.<ÈËŸíó#s‘‚xÈäT`ø_¯Ý6t–‚{Vkóȱ¤‚æÔ·Ë+J©°¶¤ä~´78ÓÕ6pö³XÍžF׈<yªÛZ]è²,í*—Œ9 dF=F{ƒÔVŸ<'ªøWRø™œqÂélÀ»»®Ü`gŽæªxÓUÓ4 +MЬ]µ”{®U]ó–aì â¢ð¥å¿‹îßOž3ÔQ´ˆ›–U_¾9ä0Š«QuÓ—ÅØŽjÏ ÿ—Ó[_ÔÅ·ñëé×/klg6ù!š96àgœ•³¯ø*ïYÓìnô‰Vàʦh7#sÏ'ø”äk$|+ñÜçû ¸¶fâV•W`ÿlG°®›Æº¦•á IðþžÆõ¬Q“Ì(’BŽp â¦>ÒPŸÖ•—ü·MN îÿàøÁÚ·…uVñ/‰TYÇR¤13ò³®1€~è×-oãó§]Ícl× jXäÄåF3ÕFq[>Ômüa|ÖW1´p¡š5G.²¢˜{0Ö4_ |Cu+ ๴fÊÌÒªlSýõ<ñÏAOÞ(ýWTäªËëŽÎÆßˆüu­ØYÝhÓ‹Ÿ72E¼….×ÿž ]ðƒuo êëâo¨²ŠÜG0ß#0*>POòiþ5Ôô hW‡ì_= (+¹9bÁÚLVƒõHedS…yî|@O+ÚJX‡/d¥…~óùýäŸ<­xW^Å~(Ag ¢IåÆX’FB ñÎMrðüEeÜ–vfv„’£r£ßŠÛðf©5¤]Fmï•Hpå’eA–L6H}¹Ç8¬øT~!»¹fЫgrË#ʱìÉäH¬sǵ ÉSÕv»ýî:²úæŽËÓ©«â/Oâ=*ÇPЧ´Ù–/0í2+“üjG5£ðïÀÚ熵µñGˆãVð#„W`^F`@UPIÇ|Ñã+Ý'Á~Òü?jâúK]À•8W̓×h$b©ø7[ƒÆ:—öUìfÞéQž"²I™H?wŽEU¨ºÉÍûÚhG5o«Ë“á×^¶2â*i×ÒÚÙ›‡Ÿç1ÈSØf¶õÿMâ="ÏQЧó̹š)Úd†'Áê+ ü(ñÅá>h.í™÷iV2™ìá†F=««ñ†¡¦x/ÂZo‡ ^Ég¿/!G;›iôJ´”f±;ý’”%†z±¿¼ ®x_Äx£Äñ‹{1!”¼²: $ã¹5Î/ĕү泰ûCA¿æ1¹Nüàtâµ¼¬Eã=Qtk¸µàGxXH]d1€Y žCœâ²eøMâ;Ëù&ðÙŠêÚG,¥DdÉäH¬Aö½èÒÕµWäudñŽÎßÖº›^#ðtþ%Ñ,ïô9ÅÁŒð Šxe$ðXr*ßÃkžñ ^&ñDBÎ P娑ÙHTgŽy5wÅ—ú?<¥ørÖO·Kf_,§ $ÒÎÿqO¬ßëÑxÓT]"ökxªdƒk—Y6Œ” ô$tÅ7^Ú.oÞÐÉN·°—'ï­¾ó üE>«qg¦‹‡‰œ‡òä*º3Úºx2OxzÏQðýÇÚ|æó¡3¦AÑ”ç£\ü¿ %®‘«Omb'’1·˜äØ2O@:qZÞ×àñ–­Ù/ Ÿ³²¹x¤(3±ƒ †ÀàÖEÇÂÜê2IᇆêÞY7Ò¬M9È1Ψ¥gKêÚ¡®IUZÓO—Þmx‹ÁRx·Ã–Z—‡®áf‘¥ƒÍ; ‘ò¼lO•…Oðóáψ´Ûx—Äñ‹kifä}¤PpsVüU{¤|>ð>ᨦÓÁ,²HÑ#i¥!™TŒeWŽ~µ™àEâýR-T€ÚÝZÝ„…ã‘n(Àœ‚GB;Õ5KÚ§/ˆ„ë*äÖ:˜Ò|HMV¸´ÓþÑ"yŒ%1ÈPg<êGJÝñ/ƒOŒ¼5k¨h"S+™b0]Ý™XžŒ `Ü|"ñ ÕüÒøU¡»¶šBÃt‹ÄX䉽=GQ]w‰îto‡Þ ±Ðaq Žîbá ÏÕCzZ^ûRUö)û%(<;÷®Š¿>ø‡ÃÞ&‡ÄÞ$ˆXZY¹—|¯·TO9Á5wñ>=\žÓOÊ)c}ƒ9íëz¿àŸ¯Œõˆ´øM­Ó‚mÝ%.®Tgc+t㡬Ë߃Þ$¸Ôå›ÂÍ Ü»12Fñ1ê²#ê(WT×ÕÇe:¯ë{ØÜñ„Gaö/'qÅkøÁíã/ Ûj:ț퉠óŽ72Œ+µñޱ†õˆMŒòœZÈ%/ Â7 >]ØÀ"œ½“©Sâu){?„¯ªüSFñÜ:bÏ"´¬Òyo°NpsZž ðšøïÂvú–r$ûDÞl^sm&DáãsÐ0È"±õOƒž#ºÖ.n<2Ñ]Å$¥D‰ânêáˆÊƒÜW]¯6‘ðÇáÕ§‡ç™oîVáæ—É !šA÷ˆè hýãSU¶öIBT¼axá_Š´¿Zø‡Ä± >ÊÆA)fpYÊ<äÕ=Wâ”:ˆî­ôÁ<¹‘¼ï)öÏlu=ª÷‚|eŒ5‹ëP}†yŽ-Ý$.¥Ç!€Žâ³õ_ƒ^"¾Õîn<"Ñ^E<¥ÙDŽHœõWF@=Ï)Zšö;J¯./±¹¯øR?ø>-OÃ÷^a–]éö†Ú|Åá£sÐCU>ü*ñfâ›?ø¢§ÙØJ³;³®ç)œ*’s+{\]'áwè|?w:ÞÝ ƒ4Âòù®1å«wÀêkžðO—ƚŷ‡5{ci4䥼©)ußÔ#«tGz¦©ó§?ˆIÕ9*KÝÔv»ñV-Å7pék<›¤c'–þXROOsZzï…ÇÞ TÐn·‹¹·Åç¶ÎŒ$.OCÎAéXºÏÁßk³ÞøTÃt’¹/̱Iÿ`ØÈîÍuÚßöoÂÿ†0øzúqyv·-qp ? ž@Åz(¼š—µØV¤£AûÇ7ðûá_Š´Xø‹Å0‹ -:UIv_º¨®O¾"ø¯â«Ëm)g™KH"s®{Äš‹ÀÞ2‡Æšå·†u«o±K;m ‘L˜Ê¤ŠG±Ôw¨|AðkÄ:ˆ.®ü*aºŽg-$O"Å$2t`Û±¹{‚)j ½oÞ­lVššç…ÇÄ.¥¢Ü—ûL¡ãóÎÍN7=Ž:g­døáGŠôÿZkž(„iö6,Ï#º’Å9 €rs]^°º_Â߆i¡ÞL··~8…¾A+ˆÕ¹8rk“ðWañ޵máívØÙ5˶•%gPý•ÕºÐMªnkŸrbê¨IR^ïr߈¾,G¡øÆí4qq)’LÉå9AÉÈ™«úÇ…“âG‚µt £ ¹”ûA ¬ÉɉÏ@px&±|GðgÄ—Þ º½ð¿•t%“/“,RDã‚7U÷®»SƒJøSðÅ´;Û}y%ȸœ@ÇbÈFÔ[€äМے«°š§ÉQ~ö‡-à„^,³ñ5Ž­âˆ†ac2O$ŽêKyg!P)ä“ÅO⟊ñh¾1½HžW’viDOå¨$çzÕOxêk6Þ×-þÀ÷2*[L²3 —ª¬ŠÝ ïüñ¡âËß 4Wl‡ÍåXä†Aûªg¡)GH~à§ïÖ¶+M moÃ0üHð_öž‹y–ž`SífïDç È<ÃðoÁïÛx†ÏRñ#O±²‘ey]Ô–Øw˜<“ÒºíNÛJøQðÈé•ÂÞ޽и™mÎT; ,jç®1’k–ðáñ>«oáízÐØ‰Ü,$¬ÊýÐêsÁéx¤ýŸ:sz„]U *KÝ-ø§â¤‹ïGK#¹/åÈcÙîkCTðݿğ¾¥¢ÝÓJ ƒ‚³'>[pr bøàLj5ÜÞø\Åwç>e…åXž)Ù;äsŠêï­l~|4›HÕ®êî[…žá`9DlmXÃgŸsNó¼½®ÂJšQt~-;Á|gcâK-cİ;O±¸ŽâY]ב ˆÀ9bÄô­_üRµÐ|k{ý˜³Ìò9i'òÕsÎ=Î+/ÁÞ>‡ÅšÕ¯†µûcf·N"‚æ9K„‘¾à‘Oð“ÆjÇŠ> ø‡RñÍÿ…ü¹Œ®<èUâ ¿€W¿­JÒ Ø¤ª%‰ÓCoWðôü .£¥Ü°ûT ¨¸nRâ>LrB½¥sž ø?ã?Ùê~"·[ +9VYfgS‡p ´’KWkwo§|+ø[>¬N·7²\ «‘‰!]©7rSÒ¸ßxÜø¿\µð®­fö¦í• –)@$?t:x= ä©©)UzŠŸ¶iÓ ®›Óþ¥ã/ŠÐh>4»þÉŽiYßt‚ awp^M_¿Ð"ø›à™µ-á‹Nà¸nc91»zÇ¥{Fƒû/øÅ7z­þ»}¨ íÁšÞÛìñ„e^A3gƒ×,cšçt=sà?ÃYõu¹w¹K€÷sØüñÂ䬕fÃýqìk‚9:Õ*ЃÖ=‰ßk;?Ësíkð&i–àòüÛ1MQ¯ÌïNÕ'”ù¡Íšºvs^î­¥©âþ ø)ãÉ5û;jÛìV–²G,’îVá0…ÉbHÀ®ƒâÄy<#ã»è­b¹ Ù’4(®záˆçWèFƒáoˆ“>±ic½©µG³—Tî/LŒ›·I“nœ ÈyàjøƒàŸÄŸÀÞ$Š=U}sg³OpÊÜe1–Lœ‘´ägó’âü5J)(ÞÏÞ¼“ôKoN»ØýÇ ôcÏsU(S«Uâ\áz§Ò·´”íݦ”šN Êv±ùɨh6ß| s©hwM›‰6' ñÁôÃòšä¼%ðgÆ£[µ»ñI§Ø[H’É;ȸÂ~L}âHÀ¯Ò¿ ~ÊÞð}¼š\w2êVW—?iºK³‚v¡ET1l#¨9ÏQß8¯H¸øðºæÁ4ã¦íD`Ù>óŽÅËǶjëq¶G AÅJWê–Ûé«Zõí©†UôKñSKñ¡C•´£9¶çîÅ©'N3+»Wm4âýݯò–‡âíê{›}gZJ¶žåÌ0ý¥m¼ÑП.Úiá‚îÊ@N:Ÿ‰_5ÿŒÞ Òu¹ï<†Š8UÐÃkŒ„„K6W€üä瞢¾ªð·Ã?ø&êkÿ i6öwë&UÌ­õ‘²Ä{f»Y§‚Ý<ˇXÔwbýkã1œO9ãe‰ÀÂÊí¤ÒÝõµ›½·jZõÓCú›†ü¡G…)ä}nù[`†2 ]Ädòã#ލ²Y†šOý’Uge£ónZ~ItêzêWƒ>`ÒâL„¹à§$¥}#J$¦ÕõnÓœå¬å+$½2ëBÑ/Jµíœñ«`‘ŒŽÇšÒHã>Z…Ï\ W—èZÇÅRÊ+­OI²ÓårKBó´›Wœ ê¹,xÏÉïZ·žñf¯q×zÃÙEÏ¢ŽÝTJÃvÒ?ÙÈ=jñêá%N¢¥‰­èù­åîókøyŸ§à8š†?,~C•W•ä•¥Kêí¯çýû¤ùW£“_ Z:ýCTÓ4˜EÆ©qº4Œz’2O¥_®{K𧇴kÉu->ÕVên$²ò°ô29,G¶kŸÕ<{ެֶ–ÆâÒ×wÛ®¼ÄŽ;|Õ¤*§ï|Ü~+xibXe{+¶ì¿_’W»z-OWŸQÉiÒ©ŸIAÕ’„#:ÉõÒ*N){Ò—$cN)ÊRåW^ƒY:Šër!]2X-ñÎùQ¥Èïò†]Çé_?ë_µm¯–Ïñ˩DeòZõJGfŽ{y’02uêÕ‡½xwÄ_üHñíå΂þ û&œÑìžÃL†1q¿ÐÍpñü„u*Ç•ìåÜ7šb­W“•y«¿ü&þô‘ù_øóáïÆYtq.½V•9¨Eöýü¥¥}Ý9JJÛt~ù­êZ|vW2x¯ÇríI^-,Ã! "¼«Ÿö˜W—Mw>§4÷¶ÚU­Ž„­·x‚òâêòP@,öȲ»GìÊã‘øW‚ÄÞø/àû©ÒÌÞ^LVk›{©…Â)LìD‘Œ“Õw0÷"¼xüs—â?‰a_Y­œWO)=¶ÊÎ=ñ…”p3œßŠû¬? SŒâª¶»¿v?t`­97nÝ¿óß15pÕ^ äÓJ0½jòjÎî¦#ùùSvTèÂÚÞ¢ŠJ_\j_?fÿøŽïVÕn..5&JXGwûÍ0C‘Ž»kÕtkÝVûáŸLòè^GçÁåy~y‚FIr.T4œÀÀwéùçãƒzþ£âY®ôŠ{«öæA`:—ᕇ5Ú¢Þ|2øW¨hþ.ÔÞîYZ9šÖ)L‘[**§U Ç®vb¸qךýüšº¿?½î®‰h•ý™áÿ–UB¬e”Ò¥(Ò©_VN«NÖ«VMʤù-t”ÒÕ§£VmŸ†u+ßëj’7 q}¬ß5ⲃȰ}™2;)RíŠÂø©ñjÚÃÇ“]iè|Âòí¿qGÎÛŒ“œóÏ©®Ã_ìµkè4~Í­-nQ'IYÚ2Dz1žµÑxÏàÆ¹¨ø–[ß É ÄåU'·i'F¡n0÷ãÞ½Ú8j–k¶­»/+ŸfE›f¼Ô3*‰FO™¨Âæ—yrEs?ñ_]w/>Ïâ—…/oìn]%lG*\6Lru\žèÞµÁèßüwq:²ZÚÆTÉrò!@€‚ÅprN:{צXhvŸ <©Éâ[˜å¾»(ÒÃï$uwc›<úWœø{â®§w—â·³• ¢˜³E“€ÅÆ9ÉÅt>FÓ©¹âEÍ){QØüDø™eáÿK&f–bb6Ø0±÷ÅJ,¬¾'ø?P¾µº’2Ø‚aprÐÊNäÉîŽ;ÕüÖ5O=߇äŠâà*¤Ð3¬-•&|J±Ð¼dÏ£´ÒÉå¢-¶eB†'߯=Ð~%Ùj7Qéúí›[XLÊžtr±xóÀfB6°Hô®ËÇ?5CÄm X®.£‰bšq0^RHËq†R8íQvØß5Eõj·øŸá]BêÞæHä(". c7(sÝ ®Iø+ãë‰ã¶»¶Kx2å¤S ÆJyã ¯MÒ¼9Âßëøšâ6¾½Eß,Egp‡˜ñÇæš'ÄÈnîOÕìž ›Hå&HÁÇÌTü¤sÈÅPn>Õês\ʆÇwñâ ‡|L#ÒZY¤¢®ÆÙòªã,}ñIjÖü7uÄ‘N#Ì“6户(Û»©è}*—>j:޹ö¿M Äꊒ@î±3/Q$lÀ‚ê;VރᘾxKU½ñDéöëØ”hX?•ÙfÇŠ»Ôç|ûÕâýãË4ï‚>9¹‘m.­Ò cò½ËH¾R§v<: ô‰,|?⤗Kie•bX×Ëb™TP¡‰÷ÆkÏ4ŸŠ6³2Úëv-œÇ $r’褸¡àŽsŠí¼mð“TÔuåŸ@™'»Ž5àw3®2²FÌpr"³½›ö—>g5õ•d{‡ìÝã(/¼}iâ˜åŸ"Agu¤³(¸ùc`z/ƾ´ý¥ü®øÓHÒm4Kd•#šáne‘‚¬0Ím$%ÎHÎÖu`yQ_Ÿ^Ñá?…µ]O_ºXõÄÄvîÁ'pbêHÞXŒc¥~Œ~ÎZö¿âÿ‚!ñRµÛÝyÏ LL’4)#,aÙ‹nbW žÄzWÃquƒÅa³Åk¯u®ûëø¾§ö/ѧ4‡pæwáu5N¢xˆÔŠMC•ÒN-;¿zQ…’OíY]Ü÷Ë ˜ïl ¼…ƒ¤±««„0õ¯Œk?FëOñE¬†)D >NÊpñ7Œç5ô÷„µ Ú4>ÒïEÔöV៾ ¢=Þ¿+(Ï|sƒY|7gâO‡ºœwlÉö[ynP ~í ãæÆ+ãrZñʳÚUk¦ ÛZ¦¯&“¶ý™ýMâ¦MWÄ_ñù~S8OÂIÆQ’j2Œç$ÚæÒPßKž7ûAøfçãÀ Kø„0\kxŘlpÛ.œ…Þ~¸¯Ï¿‰;±ðî½Òä–i#…"C,¨6î'ß­}‡ð'ÆxËöZñ(ÖmåŽÓL©åØÆ!½Ie-Óéï_øÛáV¥©êÑ>…*\OJ†'q’22Ž…°9‘_¢p½9áic0¿åÝGoF´?‡>˜Ê\G‹á®6«¤±˜(9¯úy J3{²òE5àø“¡ßÞE<±Ì‘ywÎK4bAò:žëž¾•ç¼upÉhÖéÁ¹.¾XNç9ϵz߆<2Ÿ ¼1«ßø¢Xõô?³DÁü¨Pî,ì8ÜǦޕäúGÄ‹y¥X5+'Osˤ¤È ñ»n6‘í_S% rºûŸÎÑsŒ¤°ûƒñÆö×m£Ò¤’i£‚8ÆÅ2±»³ïØUk -¾$è׳%İ̑lž9›qPßuÁþîzÓ|kð«P¿Ö#¸Ðî"šå!UhYÄFH±¹$›Œy­?x\|8Ð5MOÅÆ/. òİÇ;‹3 ÇÚ­:¾ÑÆKÝ#÷JŠ”_¼y•‡ÁßܲZ­º,î ŠaÚx,WuãßXøcWµƒM–I¤‚áRŒW"1Äõæ¸M7â$28µ¾²q`ä‚é) ÏÞÁàú‘]Ÿ‹¾Þjzœ3ørâ;‰–%ÌnÂ6–3ʺ3pxê DR7õg©¬¥'V?XÛR]>âßâ.›{pÓÍñÂVhæmÅøWSÜgƒé\ŸÁÿNâÉ-ã‘´y‹åݳœôçéÞð©øs¢êz¯Š¦Œ]Þ[ùKm qg{;‘ÆNÐúטi¿ fû=í› Î]ea SÕ‚“ƒëŠ%ÈÔ^!Ù„yÓ’Ãê‘èß|kc¡ëvŸÙ²I4[G Ø©a„Ý»Ðj¶›4ôÛÙŒÓC,1™&bûøWSýÜõ¨§¨xžhÒîò%`‰ÄŒ‘)ÜÌä`žæ®.«©f½Ó?Ý{.joÞþºgaðÆ÷ -¼„ç­Ç˜¾PN»³œã§Zîþ x»Oðö£c›$“KoD­ÚX Ær?Jà4߈Q™E½Õ£}Ìë1óXýà:gEvþ.øisªÞÁ.‡4rαGTóbnUжqÔf³ŠŠ§)aµf“rö±úÎÚŽÒnáø‡aupóÊ“AI£•‹Gà:žã=}+„³øEãY¤‘Û§’N>ÐdA_Rs^™á_ ËðóK¿Õ¼M,qÞ\Û´1ÛFáÊFNæw*H˜¼ÂËâAü›ÛVû £”‰6ú¨éø&©µˆÑ…?i5†Õiýt=Çþ(Ó|9}ai¤Í-ÃYÚÇnŽŒT¸pXŸåQiøþÒîæIåY¡‰–håbÛc—ÌSŸº ö¨:“ZÉ \¤²yJÑ«°O6'R¬Ün­/ xjoZßë^$–4¹¸µx"·FW!‚ÌÛIªu•kKáýýϰ\²÷¿žyÂÏÌþEœ*ñþÿÌQ:d’søWkã½z×A¸Ó­ìfy^ÎÙ"Vˆ•ÜP`¶{ŒñøW gãX¡o!­™¬ÉÃ!Y1Üã§½v^&ð š‹Û6:<þPhÖF eùVW8‡9Íc }WVk''R¢è&‘t¾8ŽâI'˜M gÌI°ØÜo\ú¢¹+o†^-•ü«8Uâä ƒ¯–ã$“éë]ÿ†<3uàkkÍ_IJÇÄða;?yÜ‚@>œ×Zx½b”Ûý™«1ÛðsœsŒŽN :Š3„~´í!Ssç’ÂêŽãÆÚÕ–„4ë=>fšK8 Ñ’7êAôÏSG½_ e3È. ‰‹Å#ÌxÆôúw©|Cà_í$µ“C¸ÉåˆHBy±? ‚pã5¥áO Ià¨îµ¿Kw3@ðÁo+¶†g#€8´½W^Í{¿ð ܨªQ—¿øîyÕ¯ÃoÏ [HRHÉâ`ê# êNx®ËÆÕ¦‚š]„Í3ØÛCÆØ WïõÆx®ÓÅE'Öå­›†Ä…\¯¨?]Ÿˆ< u²þƸI¢ó!ó_:'ù† à0éƒXÃ’4äð»ÿÁ6›j¤V%é¯åÔË/È›œŸIÍ/ü,{ïúzÿ¿æ«¨ñÁäÙAøËhÿ…QãùóƒþþÇþ5>×ÛðFœ˜ëïGÿÕþäÓI¹h ˆ®„d9ÛVfû-•‹YÇ(–I.Sî€: ÷5yu%ÅÜ—snǧµY… ¸²k™>V‚6oºGÓ½BtåRq¢µÔõš’Œ\ßm 6þA˜GpRq‘ÁïŠÓŸKw·IT:ŸºÇh>àÑž[‹»¥hAb)ÞØííT¯¯ ÅãÜ(ÚÎÞ™ÆúÕ6öt¿ÚõùþÝÊo“oë¹¥)¶±Ó¤²I¯3)r¿t*“ÔŽõ“nÑXnÈHî3ÿ׫±Ao=‹Ý²ì1•WÛÜ7B?*}½–Ÿ-ÕÍØdRÕS¹±Û œ¡98J­oÃÌ•(Á5&ïú‹.–^íí7ªJ„‚®p¸>”ùÌ}ƒÙ£¬²HÀ»/*èª÷wy$à.IúÃð«1AÍ„“È0c![ý«‹¥*³T–ºýľ~Hº¯þ¥Y%Ù*Œz÷ïWæÓÚÚÛÌQ$gXíã±– M:2'¹ºV@s±ÎG÷yãŸZ£x×w¯rÍÜŽøö¬Ò:?í îëÖÖþ¬S“•KSðæœ¢ÛO°šÈȲÉ)öò=yëY0´;öÝ(òò+Ô{þu©o7vpÃkA€àcÄà|õ¥†ÇMŒ ®nTÄ*€ï<ôÁãŸQZN3—$©[—þ[’œ`¥Í{þ¢]éX½{c*,¨pCgЃô§LmtÝ:k$”K4ä œª*ôîjž©{%ýûÜà.óÓÐüO ¼V2Ü:íxÈî·CõštyÆŠ÷µôRP‹¨ôÓï3àhDŠ· 61Á#¶´gÒ•. ºHªà€D‡ŽÄ"³Ó2·7JÑç%T6ö>˜ÆUÔ®Úòýî¬@öf’…õ›=U»þæ”ê~ïúf„ŸcÓ,%µ,ÓÍ·pOºŠ9ëëšÈ‰á ”ê@êsZ0Åmsi$²Œ<;w`}ånþÄS¢Ó´â¢K›´ò‡$(`äzÀš¹F¤”(Ûð¿[‚’‚’{ÿ]‡\é*—Mk¨²'\í ;Õ4ÆßJÓg³óVYçÛ¸!ʪ©àg×5™©^‹ÍAç„lS÷AÂéVm`·º±–yWk[íߎêÝÔ´é:ÓT–ºúlE¥ÉT}¾ó>ئBÜ(òÎö÷­[mãÛ,ˆ’/à0ëj,4Ð÷W©åH w‘èGAøT¥ûÞêr¨=ôÇ?JÍ.Jë:öîUܧh3I¼'OšßÍY§Ÿ¶rª ôÏ­aE,%‚Ü 0–ÁÇ^üÖÅ­­µí”·.0Ðã~ßâSÆqƦæi¼Mu|† üȉôÆ1U(Ô’„¨[–ßÕîJ”W2žä·Z:-áµIH0Fÿ”:‘ÁÏJ–ßFÒîmĉ5ÅÀ vª 9ëÇ&³5MAµA®‚ìR × 5fÎ/¬®$‘q%°öÿ7àÖ‰ÑúÄ£I{Úúi:quš6ÒÆ¬ ÂþèœuCíÖ¶/4qö·³†t¸Æó€ÊFAÏÐóQÁ¥i¶{›ä1ƒóSæéŽOLæ Õµ}¨=ÜCËRQÔ€wì+$¹(?¬÷Vïøs9Tµ'Óñ4ñk£é·4‹-ÅÀ ÞYÊ¢~æ° œFûn(HÈ@õ­k·Ô,gy“n ¶ßãF8Î;D:V˜vÏq|†.¤mäÀ`}óйF¤•7Bܶþ®J”a̦ÝÉoôd&Þ)UX¨*$à2žA·*Çk£ióÆeYî.TˆÎUvO>¤Ö~³©}¶ôÏl¾Rª òpYÓÒÛQ³šK¶KuÜÛGߌœgýå'ñ«NƒÄ8Ò^ö¾› ªœ‘•G¦Ÿ™äq>fMñÿ@ïZÝÔ44Žçì‘NŠáC3…e<©×:6˜ÀMs¨(‡¸ Þf=éŸzf¹©¦¡|×6ëµUUW=v¨Àð¬Ô]:-â×kwü rs¨•/žÿ©¦‰m é³ÄÓ$÷)ª(9äúý+š·¹…$ pŠÑgœpqÜþµ¦Å¡eq$±üöÀ3à:1Çæ5¾¦È¢îmA<œò»[Ì vÀ úæªJ¤•7†ÛúÞäFQ2©{õþ½ o´8Ç‘¨´.v«)äÝ«PÅm é÷1ù«-ÕÂìÄg*«Ôäúæ³5ýMoµ6Ýv UUSƒ…Ž•sHK]FÖåî”ù¶ë½Šôxú㑞µ¢t~³(Ò^÷á°Ÿ?²Rªôê¿àö0-ƒsxÁù‚õÇr=ë¤Ôô~жð̨Å£Hp6åH=Ž8æªÃ¡iDy÷Š,Ä»I@1ŒûÒkúº_jK50¢¢ª;T`téYÆ.%õ½V–îS—´ª•-7¿áÜ×µ†ÓÃö7K,É5ÕÌ~YXÎåDêr}MqÑ^BŽ<èÄ‘÷ÀÿõÑhñ[jÖw^rþòÒ#) €$ 0#³ Šlz•'ïåÔ#X;¡VóqýÜ3ïš§ ’…7†ZÁê%(EÍU߯éb{ÿB³$6÷®c¾g èÝîÆ­ZÁgáû —šdšæxü°±Ê«žr}Meëú¬wתÖi寑„Làª03VôE´Õ-'K¤ -¼fMÉÆôèÀƒüCÖ­:Zjš÷¿$ªý^2ªôêŽr Ô‚qçÄQÜ/¨÷®£Pðõ¬²Ä–Óª´‘‰#ó8Èç #¡ªÖÞÒåâmN8àêAGó1è1šOë]_/öj˜ãŠ5Ž0ê0 µœT¡FO·NåÊ^ÒªT<ソbÎÎÇÃ6S]\¤×—˜Õ!;‚! ±'Ô‘\m¾¥-¶h–HÉù‡CŽø>µÑh&ÓV‚æ;¸ñ5¼f]ÉÀ’?ºêG÷†A«ÛøwH¹_´MªG¸ê ?@1·'Öœ£9 ·õ½ÈŒ¡ MWzéùikõ?Y¼‘Ekr‘;F3)¼mÈÉèš¹§ZYøbÆæK‹˜çº¹ˆÆÜ:’X*Éñ^±os}ÓSËH¢Hã-ÉØ£ ‘Ó¥Zð÷Ùµx.Rö0f¶ŒÉ¹p7GЂ?¼;V‰ÐúËP^ÿá{ÕWAJ£ÓK¯ž‡-oª¾IâY"ÉÊr@÷®»XðÝ´†ì®3,Jñx ‡‘Ïb*…¯†ô™ÇÚ›T-û†F…ë€9íj_ëV÷7p¦”†8¡EŽ2ü«À?Zˆ©Â”Þ/n…¹)ÖŠ ÚïÛÈÙÒlì|+msu{ò°Ç^àŠÖô>µd½ÿÃc&«}QJ£÷z÷Üåmµ˜â;e^ÉBy#?7¨®ÇXðÅÂ[µÂÆÒž4à27b{YPxCK»i´qZäåYÍUÏ+€0O¡&­x»_‚Y­`ÑSdPD#ˆ¸ËmSÔúYÅN4eõ½§/iV+tõ¿ôú›º•aánoõ+˜§»–Ž8¡mÁUº³\p+Îíü@о<ðõØrc]g…&¶ñ Ke¨Æ¾|14Ë"¡•@ÜŽüä©iàýðý¢=Z(mó’Ê£Óàú mNtáõMŒâéÂsXýÊÖ¹©«ø_N¼ŠÒ]6èDn"ÂeáJ1ÎÒ}TäVŽ…£Xø:«ýJæ)¯%âH ;‚«}æcМt‡ã-rÉ^ÊÇ@MÛB"‰ßæ%¹‰5oÂø‚I¬õ•î!åGQ·r(ããÔ hžëKÞü.CU¾­zòõïkœm·ˆZ9êIÆ»­oÂÖ‘Yý†åai¢Y!óNÑ¿„žÄeZø3E»cq­VËÎ%Gó@ôÀÊ“V#¹›NÔãV»Š'ž'Pr ýäl:r§ õâ´½¬ÚÞ÷ás&«}]ÊoÝümÐâ!ñ+Ç6Ý$·'%[ø‡×µz¿á=3T´°¹ÓîRßΈK—!Yò¬{#Ö=¿4‹Ù Ͷ± ½¦rVTo9Tõ }Í[ñ׈-#‹OÓô(È‚Þ ´œª~ñ2NMDUHÓ›Åê%%:°X}_¸Ûð®gà“>­«]Ç5ãDñà -¿haË3}+Í`ñ4ÖóHcZÜ·(Ùù³ïÛ5Üxñ#¿}V‰d™#ya™Üìtqî:§ÃíþwžÇYŠÚÛvvM™cÀÚ0ô{îœ~«¢Ê1«/­½tôùXÛ×<'¤kšU…íÂÚ›…ó-̧å ýä'±pj1oà‹™5Ýfî ®Œ/BÛðX`³6;/AX¾:ñ=†§iú?‡hm£Ù’[–ǹ4žÕ$ñ>¨ú®ˆ×[KÊ6±(2ÈàuzÕw£õ„¤½ïÀÏ–·ÕÛ¿»øÚçþ1¹ŽéŲ<,Äaó–=³Ú½/]𖓯èº}æ›r¶âå<Ûf—€3ÃÄÇÕHâ°GÃ+P¸yl5x­-‹É:1’>yjÑñï‰tý3LÓ4_ !ò-£0Âò–Ú~yìXÔ¥5 n’@‚9`:óž=«´øy¬Kâmdxs[TiåG{iÑv襶8èU†GµFß ´Jê['W†Îݘ³EpŒÏ<í+Ã{f‹JTâðÎÚ…ã²X½ì½:›Ç…4oø{NÔ4ûjn KMÊ«gl‘¹ö= \ðOƒ!ð^¥ÿ ¿{“F¬¶ööíæe˜cs¬¿øJðþ‰¦hS2[«$rH>óõŒAõcÀªßu»k+á½f4–Y4*…ed¶¸èTŽ˜æ«š¶J„r×ö”_»¯­Ž6_]ǪÈöѵ¸s¸>rÞ¹ ñ^“¬øWIñw†ôýNÊad.‰’(%UÁÃÆÇÓ= c·Ã-+Q½šm3W†Î"Ûš+„rñžû pßJÓñ߈ôÏ øoMðÿ†œ–Û‘%”}÷'.ä}zT¥R1—Ö6¥ JVø¿®æŸ<‚µ„ñ>¿{²Â¬- ·0™ÜÇ^ayãûÄÕ&þÌ·ŽH|™’[ÔgµvŸ uÛë±xcÄ Ë0cm: VYQwl`>ò0“Ò›yð¿KÕµ çÒµˆ,bg,ñ\£]»x#ÓšV”©¯«h…uÒúßo‘µ«øKHñw…ôíFÆqh·y–/ÝŽE;d‰\dpjÏ| ‚µ…ñ'ˆo ’Xw h-ßÌ%ØcsÀf³¼wâM#Ã>Ó<=á”3ElZ8å—øä't’÷íYÿ üAsâm~/ ø€E,ÓmgEÚQÔnÚú? ¿Ý{D¤½í ^ÛØÉÅûºúØão<{w³;é¶ñ¼"FW2gçÁ=ÇAÚ½7Vð¾‡ã YjÖ3 ?´¾øŒß2£¯wÇ¡¬™þéz–¡=Η¬[ØÄÎYâ¸ËFÇïm#†€ÖŸûžYÊŽœô+)ºûNœ¹>­ñiùu,xÀÖþ Öãñ?ˆï –[|µµ½»ù…¤<cÐ(ÏJóïÞ¦µ7ö}´O”‡2Ï<ö®¿á¯‰®ÇYÓçBáÝ£órV9Ðí‘ú½\ð/€`ð~µ‰üK}m#ZäÛ[Û¶òîA˜öQœâ¨xãÄZ?ƒü¦øoÂhnÙÙVy‡úÉŸæy6äñéYŸ ¼Kyâ/Á៬R¢E´è»9@Üv*qj»ö©I{Ä¥]ғï­ŽGQñýìZÄÇJµ‰àG*Í&~~{c Íz^£áÍÇ>³Ô¬æ <…£2r©2œ:1½ eÞ|+Òu}VæïEÕáÓ£‘ËË Ê;ÜŸ›c' =3ŠÐñ¶½¢x/Á–ð¨7~S²¬Ò.Jß~LsÇ Í+Ms:ÏB›¤Ü=†ÿÖåŸü?×bñG‰/í­‰0AnûÙÜŒœpkε_ˆw‘k·#F·ŒÆ²í'%¹ù‡+§økâ{ïxŽ øŽ8çDˆ&EØñ¸†qÃ'ÇZ·ð«LÕõ{›V‚Ä3“$7ä£÷(ÉFyÁZR‚öºUÖ»Ú‡†4?x*ËVµ—ìB嘦ÿ™bž3µÕÿÙnªj_|\ŸÄQ“¨' ­ëú7<eáÿ ƒv°ÊPLãI›—¯aÇ’S\ζÀåMò,?Å¡'þÅázx¦þÚO²ðAnþcI'b}Wœëßµ|KuýmF’æLüǸÎx®‡áŸ‹/µßAá¯$s ¦Ä¢x¤ÆF@ûÊzVæ±ð—Lյ˻'VƒO2HZhn£rQÇR…Nx4ܰФíUýo¶·/^øw@ñï Õ-dûÚ%À2 ¬WõRz•`x4Ï|4‡Âºý¿Š|WlñÙ¸{{{vóYFB’zžÕ'Œ5íÀ_í<;ápo<¹ŽéæD³?Þlv Ë|9ñ­î½â;_ ø±"š;épO„’ q•é÷žëMº~Ñ)üDÅVt¤é¿tÃñÄ‹ø|Kwý“kˆ’‘!—'sg$pr1^“uáÏ|Dð•´¦Ãí7üËÄ\2·r¬Á¬­gá.›«ë·siZ¼{<‡ÎŠå¶H£/QÇCZ1Ö´‡ßí|=á­×ÆÉ3ËÀ–y>ócÐ0)ZQæ•]ƒ÷mAaþ!¾ø]…µè%»MÖ&U”ù&~cž@ÇAœŠÖøsã]CZñ¯†¼WSÇy Ž)cM²C!åzpËØæ·õŸ„ºn±¯Ý\i:¬s<„Ï Ê3qÃ4lG|Qg(/bVеñ}´ì\¸Ð¼=ñÀ‘j0ÉýœÒÍ´—Ë$7 ÔûXw¨¼ ðÀøSÄÞ(ñ>¡lðÙ7›6ïæI+¯ÝÑrsÍXñn³ ü;ø{oáÿ1Ô9‰iä\+Ìý[o \ŸÃŸjZ׈í|9⥆xoœGÑ G†FÎÂ1Ë õ”Û‚šçZŠ*«„„Ìñ?ÄËø¼Ut4kx›d¤Jòs–'1ŒzôIü= |Cøy¬¯öqpQ³ó,Q`~*ëȪ÷Â]/Vñ Ôú^©Ÿ+HDðÜ£®8,Œ¹àõÅhx³ZÑ>|4‹Ã^ÿN0Ü’áÆÕšâOâÛÙ@À…ι¥Wá%û.XFÅ¡KÀß ¿áñ%·Š¼QlñY8’-ß{Ë û™àasÍq>*øoâ˸ô[xäUsæ»çæn¤ Òµ>ø×S×|Ikៈ§†úARÄd†Vû„cªç‚5Ñø—á™®xŠòïKÕ`ÓägÅÌ7HÌ¢QÁxÙz‚9 ÷©ÖP^Ƚªÿ´ë¡iô/üGø~5 ÿ`3Kµ·r°ÜGëܣǥWðO„ðî¹oâ?꣉bŠÝ÷¼Òº=—<Ö—ŠõáÏÃ5ð÷‡[ííà¼î6¬“¿}£ +‚ø{ãKTñ·‡¼`ÜC{"Ç‘¨Y v8R»G+ž öªnéKrcí\$èü%oüM¿ÆWi¢ÁbSæ<„òzàŽwë¢x{â_ÃÓ©« 9¦˜E(o™a¸A¸tp ¯âo„lj®¦Ó5h4ù‹ââ¨ßnñÆôeÏÅhxŸTðïÃO†?Ø>s©È³‰&¸eÚ²Îãûª9{êîoA7IÆ —Äfx+á$>ñ¯‰|a©Úµ­Œ‹4q[¾÷™Ðåm«žµÈøÓâeô>4¾=¬nË3^^…‰Éèißü}¨jž#µðÿŒ¢ŠâÒþE„<(Hd~”¼ê vž*ø?¦êþ)¼›NÕ`Ó®<·1\#2yŠv—“‘ž¸5:ºkØÚUÚE]Ã_¾ÿh3g'¹?:ÃpœƒîŒ?*¥àß„ØZå¶½âNÕ­­dHíßÌiY9P:m­?êžøcðÑt-Î¥/Ú3-é%ăÊ£Öº?ƒÞøÛãÈ­5MWC[Íôf;œÇnñàà:e. öÇ#¦kF+„JxºŠ>m¤¿ÔÉr!âóÁpæ¦"v¿-8JrKkÚ)´®Ò¿š<{Æß.áñ•Úè6ѱI˜òä‚Þ€ הּï üIð+êjÖœE:«dG2ò œ•î+Ý5¯Øo]ñ·&±«o¦-Ï3FÑþn›—k&3Ԍ⾛øoû3ø À>OÞïÕ˜ËçÌóáUåÆÜì^ÑI5àbø»%Âó/kí<¢¯øè¿ö®ú3ø±Ä5)Êx……׿]¨úû‹š£ôpI÷>Uøað‡ÁpEÍÍ¥—Ú¬ÊÎ.…Ô·s1PјRÔñ–# ò5ã_5O/'Ó< h5»¶viÍ´3LªÇ mƒqäçh zžƒõCÃÿü XAd,"»x3ûÛ”Gv$ç-ò…ã¶«Ñ`·‚Ú1 ²,h:*€ä+å§ÆÂÖ›ÀBR‹iþº»y]Xþ…Ã}q¹öO„¡Å˜š+SŠMáé·u£wŠt©óî¥QÆnI-¬­ù¡£~Î>,ø§à1.©§6…=ØÜÑÜeZ9c9WAmŒ8*@4ÿ†?°ÿŠl5ûmsÇz•´QÙÌ® · #K³‘–;BŒöçð¯Òé%Ž̳0EQ’IÀÜ×uñ#À¶š”:)Õ-å½¹ Eo ¥|œd${›§IÅpTãû)}^)zFí}÷ü¯Àý|á¸Ñ«žÖ©RÛûZÊ›vé¾ÉK­Ÿ1ÍÁð“M’emfò[›påÍš*ClÄôÞŠ»œVr}룆¾"Í£ÚH±¾ôW‰]U½UX?]½fj×÷:u¯Ú-læ¾låÀc ÏÞ:.?ùÊ™Ž?/~«ûùV¾–Gîø.àÌ þÍ—A¨¥¬¢êÎÑøRrç£öb—D: d×jß5ÝÆþ84(!B8¹¹>„œ,Qã¸Ä™õÞ—.ƒ‘Áü+–tÕ4¯$ße­¾{}ÍùŸCƒÇË)òPœ`’´¦”T¯{¥ý¢å¶¼ðî¹o©ÀX|Sð>¦×í§Þ‰¡Òæû=ÔÊ­åG'¡|`úerdËñ^7å“O¶µÒÈo®®Õhöà}ÿ…j|Cñ Ç…|>×úÍÚhìà`×ø à/ª#jù+^ñ¾¢øžÎóâ46’0D¶3Ë©^¡¬èÑÆ‘œ·YQŠú,«ƒÅJþÅ»íwͪþì\e¿[4—Gm ñ‹¸—‡iû'šÂ9¸Sö)FOHûZЯE¾] §Nr’þ%>d£ôÞ—â)üi&Ÿ¥ëdÄ †{ 9£’>Õ(’#× \ÕýCáþ‡&k5i‰ͽ™Tއ,Xø×ϺçÅZÿR¸Ñ£×F5£•°(•¨à ””H gÏʪ€ ÉÜì}ëÖ¥ÃY»Ä¨$¡¿’óqP¿¥ÿÌüÛ2ñëÃ*y\eYK‰‚\‰µïJûF5êb}žº¹(¿uè®”O¨¼=¤®›¨Ë­j¶&â<¢èÖª þ÷³¸õ ­zÞ“¯éÚä“ m[k>èÈ ŽT…bÊ@<†ƒ_ÿ¾?x¾ÄÃá¯Akw¦^H¢P·F\àMÞSc?Ä„ûö¯Nø¥x§ÄºÌÚM¯‹fÓö¯•-œï*ÚºŽC"ÆB¯©R1ší«ÁUñRmU]¯nì¿V|¦Uô°Éò,< ²ÙJéÉÁM»I·îÊ¥FöÑÞK´VÇÞÞ4øÑ¢xry¬´ÓÄ–ÒÇÄ¥³>hÊ“³,Àwšãí¾<ÛØÙ½æ¯wowµ‰J¡`gv?‚{úWÂ’ø{áGÃKÝ3MŸûZå¤I®gÛ¶6“Qz…Q^M࿉Íæ»k§øº(n4ëÙRXÐ$°‰ÐÈÝN ï^ÍÉhÒ…*ñr’Ý÷ÿ/DÑùVsô¥ñS2̱8쪴hS“ýÜ9T½š¶É´”ß[ÔŒµÙ%¡öÏŠn¨ü=¬O¡Ùh {:&KÄq£•lfn¼œ¥yîµñüvðœúÞ ÓXi–9#’O=`˜|ñHªUc+ž£fO|×øïᆯâ¹þ˪CaÜ ãc»x…rTàsÅKw'‡¾ü4¾Ò¬fþÕ¸ók™•v#ÈNÔE¢¯ZôðyU—ÖxŒ=?›üÙù÷xÓâGeÊ3ÜÒS¦š|ª0ÚÖíÆ)¿+½:æ‡ð‚ñuè|Aã}jÚkH\Jí—–bœª…<Ʋ~&üNžÛÆ“G Û¤’p]¥äG Ò°<ñ/XŸX¶µñtpÜØ]FXÐ#€èÓCÖ½CÇ_ ´ÍkÅRµŽ¥…àQ©rŽÑJ•udÁs^ºK‘*Z™Nsg&øúâé~Ç2‚ì)ܨì7$«ßnxÅsžø,µ;{ïjöcL·t‘¼—Ý$¡B…þØï]µÉð篇Ž•cpuk·e–î`»#,v ñ¿ |OÖ­^+†ÞïL•#M’D…Ýú®rs×¥;ÆéL…ÎÓö{OÅoŠÃãiÓC¶Vª³4ƒ |ªöë]>‡o üLð¡q¨§Ø]m®Õ~eVl4r¯?w<V¼yðMÔüS ³Õ"±¼V9Ê3E" •u)Îìu©®‡>ü5Ôôý>ãûZæFI®¦ÚQƒ¶8ÐgäS\×n[ òrECâ8àŸØµo¼K«Ù: Í$¡Nvªã šƒâgÄÉmüg4>¶G”áÙ¤ä(ÇÊõÀ®kŸ5³©EŠa‚çN–7Ž4Û$aŽ#¤^¯ã„úF¯â¹$°Ôâ°¼UX¦[„-£«‚œ«c­JÖ?»*M©þø¡ .ƒñ3ÁZƒj)ö)ãÛ ÎÓ¹T·)*Û=EsºÁ)#¿ŽïÄ:͘Óa ³Â契W Tê èk¶‘<5ð¯áî£gipukéJÉq2.ÈŽÓ„çh'’kÆü7ñ?ZMRñ\é²$‰WkƧѷ\޼ÐÜn”÷S´-ŽÃâ—Ĺbñ„‹¡Ú«K€I“$*ã 1ôë]?‡Cø“àJëQ„ÙËK{͇* €˜åNør*|&Ò5?Ùu8ì/#@ç©1J˜ù_+ʶ:úÕ‘‡þü<Õl-nN«y1I®¥E)å#œw$Õ%.få±-ÓäJ;œ>ƒðHÛê^kúÅŸöm»f÷I"©ÎÕLdÞñOâl°x½ãЭÕå³ûª¤|ª|ŽµÆøgâv²uH“ÄpÁ>;ªK&4cÑ·\zöü(Ò5o2ZjØêF±ÈgF1OåÉW ׊•ðZ™nñ¨•mJ>/ÄjªGöI¢±*r’¦}úŠåô?‚ÛßCsâ ^Ìi±îñ>dt^vªõ޹®ê|=ð§Àœ?Ú·“bK™QJE…û‘¦y ¤×Œxoâv¸š”MâH`¸Óe`$P+¢·Gîôß.œû‰sµ'Ièvß>$4z º;˜Ô–p¨ÊïÀ­Ÿ .‘ñ#Â:”—Ñ‹K›TÞ*˶_¹2ý9¡ã¿…ZN¯¯g©GauaI¢•(r¤`:Ôöè üªÙÁwý­p‚K©cR‘…CòE<‘žXži®u'Ìôé{(¨|GŸé?Ù/#›\ÕìÆ— ïfIsµS±#йñcâ;Åâó‡nO)iz,{pƒ¤ áü=ñKY‚ö9|E zl„y°ª…dSÁdqÑ—¯=zW´|AøY£ê¾#E´Ô’ÆíbDÍÄlÑÍ\¡%9WóJéÃ÷Zß-Eíö1<0ú/Ä j?ÚQý’xGt#9_îH£Ù‡"¹í#à´‘ÜE.±¬Ù®› K#¨ì¨cÞ»¨m<;ð¯Àš´P]k_Nç–5)U8XÔzõ5âºÄíj+¸ßY‚ =Î$SiT=ÑÇ;…9r^*¦ã?¿ì‡sñCâµñY¶ðíº³,i†“—Ô+k“h¿ü7©.«µ¹¶Œ%ÀæSô‘}6¶2*ß~èÚÆ»iºŠXÝÔr…£–22Ÿs•`85-¥Ÿ‡~x;TX®ÿµµ … ;Æ»bHÐåcLóËIªj|íÍû¢½'M(üG ¦|•îêzÍšé‹ÃÊŒLŒžŠŸÞ"¯üYø†-üPÃðo)6´œ…FÓ$\ñCX·¸[fÞÞëO<Ëk·klgcŽCÈí^Í㿆z&­®Ä¶wéct‘ p¥¢–&BJò¬Á5š÷ þ®SRS_XØËð‹é¼7©Z/³Mn.„dÑÈ~I…Xr+õ+ö}¿Ð¥øS£èš%ÂÜe[Ek)}ôP Àè¨Í~fiöºÂÏêñ%ØÕ.î^æH”¬k–%Ï''’kÜ?ao‰º¿ˆõŸ êËi.­Â¨RMµ“?ÅÃøùn4Á¬FLêO↪ݶwù3ú?è¯ÅÈ•òïÇívçÁÿ§ð¾Ÿl¾u.þBƃŸø滯†øÛá×í)¤øc]UK nÞ;vh6‰¡‘]"š& d6G#Þ½‹öÁø'¥ë^ ±ñÝ¥ôzuÍçú4¾j3Ç!EÈÎÞAÚ:ûWèT1X|/8a»ˆ‚küJÿ§âæ¼=q€ª¾mJÕòL]JROF¨UŒõµWví\ùSÁ³iËpÀI«Z%<Ê[÷?ëŸ]ÞÕÝhÚv‰ðïJÔdkÅÔõ ¨J–ˆŠ(‡%Fì’ÍÞ¼kMñþµ ȹx`–Ï?5³(—ÓP}è“„TV#qAMÊO ôóôèzÄ¿ÙXÞÙØø~ R uŠ'hÐ`îqOð…Õ‡Œlo£Õ"òo-`f”'I o•ˆÞ^½{V¿Œ< jòX½è²i`YmäYÕ¡—æ ûzëNÑ4ýáæ‘©LoRÔ.mÙY¢R±Åù™Fy%ˆäö­«í›ŸÃÿÍÊ—°\¿ü‡´øS,Óý«h,³Ì¥ðáÜþõk|Gñu­ÝŸ‡ã-¼ EøùŒãÕ«ÏôßkN·RÅ ¶¤œÀSªgžzƒŽ†½_Å^ ÐuY,¥³»û’@$¥BÈÑ?!$ÆH*r2:Öpä•6°êÌÖ\ЩˆÛþS3Â7V3·»µÔ¢ònàˆ¹1çEѰ§£/Zçíþ\Í&bÕmÄ™]°á{„gv+¹ÑôÍáþŸ¨N÷‹©ßÜBcýʲÇ}HË–>¸¯³ñ¶­ÀœC –ÙÃ[ºpËé¸t8è}h“‚ŒV#qÃÚJr–Ù[¿üK§ØOe¦ø}7ÇoEIÝT`±÷'&§ð…͋㼷¿„GukHJ–HrøìË}ëSÅÐu•±¹´¹ûO ÍÌ»¤Qöò ž†—CÓt_ØêBñu Bâ‹÷@ˆâ‹« žI)ðŽ‡¨ mî“M Í ’ ¡ŽAŽACžk(r8Iaw6—1*¬¸d$=‰­fIôÙ&•4 ¡‰êCƒÇáÖ¤„hйc,…NB0ÀÈé“õ«”eRPœ$’·¦„©()FÍ¿ÔK‹¿’ÒwhÊÆTŒpqL¹»´‚ŬìrÀ]Û‚OlAT/'’âå§—ågù‰^çÛØV¬QϧÉu2‚к¯ûÊßáT§Õœi«=uþ¶N0Œ¦ÿá̸$òä`3Õ}«ZæÏOŽõìç‘¢e<nÈíÀæ–Ñà"ï÷ÓXÙx'°'Ó½eßÝKyvÓHpÄäã®Oô¬ì¨Ðµ[KU õKÆëüÍK‹«K; ,tÜÉ¿ ,Œ1¸Ž€AYQN `eÓ€AÃíZ¶¨—l³J¡ž¼ÿy[ŒB1im΋k‹¶ó§Û†XˆÀÈé¹»€{UÉN§%JrI[Ó¨“QæM6ÂöÂÂÚúKIœÆTð@Ü###®@¤žæÎ×O’ÏOˆÁwaÄtì+>úæ}BòK‰NÎã~p=‡JÒ´†6i.o³²dô ŒpA÷ª£R¯8SVzëäL¢ãN.m½¾ó"9Lo™Få8Èôûhô(—ísùÒã‘ U ‘Ð{ÕJ©É:rI[ÒÊä§)+6ÿQ÷¶Zzj jîb=U€ÎA^j;‹‹+9,´íÎd*e‘†3·î€;¦³u ©¯oZyHŽ}¿¥jÙªÜéÓÍ0ó ©Lg©Gà¯àyq© •¥ jÎÏ_œ\cQöÓÌÅ‚vŽ@Òa—£)ô5¿{§éð_5¤®Ñ•Á À©€G^ôÈ#Ð""êO=ÈäCò‘ýçêEej7“ÞÞIq9Æüœƒ€?J„½íí.ÈzÔ©îÝ“ÝXØÙKe¦–˃,Œ6çÐØV$W- ‡ Ë/·z×ÓÕntÙÞeÞÖ¡H'«)àƒô§A‡ãÅ܆âM§>FÐ=²ÿݪPU ”¤’¶Û .0R›wüKÚfóY<Àdp7¬2µ·V:}Œ¶:yi^`¾t¬1•€ašÌÔ¯§¾¼k‰/‚G@=‡°­]3eÞtfPïhÕ¹åX•e=»äUÆt刔)«=uþ˜œaQö0 ¹xHi•G §¡þ•Òj:v¢mžGˆm ®ᵆà{Uà‡Ãq§IçÊîûe‡lÖf©>£v÷sðp:ŽƒÛT(?ogµº”ïR§¹tkMs§é–Xé夒ly²¸ÇËØ(®z;Ç€ùœ:ä§‘Žø­Í,­ærn9µPÀôʱÁR•>Ú×èßk\8# =pXsŠ©BuT'FI"c(Ú2M²]CLÒÅè·‘š-Ê®¬á†jl—f—c5ž˜^i&âIXmAûª==ë7Z¾“P¾7S|›±…^0£ Ïµié‹Ë ”ºO1­”HŒºN ïx«U)J¼©ÁYë¯ÈN3Œª;í§ÌçRöXîwVGq]6§§iiz¶ò;B¬‹"0¾W‚°ÿg¥z×’ ›€ÂŽŠVi{ â=í¬]ÝJ‹‘4‘¬÷v•a-–šï4“æÈÃoÊ9/ל×7 ì–Ó 2p2pG·¥tz4†óN»*Ú*ºÇÊÇiR•6ÎÏÂÁ–îO´°\'ƒì\rET¡:±„è;.ÛF›’’mÿ_¡kRÒô•¼[yá Šèáw`0ÎïŒõ¤k/GÓæ³Ó§–uÛ$¬6€è£Ó5‹­jw† nœÃ…AZz–wéC½ªùŠÍž 2;ñZ)Ó–&Té«K¹2ΫvÒèæa¿žwŒ0ç*Ýjëµ]3Gi–eeFvÆv9ãÖ¡‚ËÂøûdæåÕyû8P>›úí¬ÍU¸Õ/~ÖG– €¡F0£€Óš±£'‰÷––FŽR«Y('ïú~¦êÜi:=ž˜^y.l²ºíG8 ýk’·Ô'¶q ÔrQ†AžµÕøqíâ] •¬â#7ÁCêoze¶áL ¹Úèªò` 1ô/ýÞÕR„êœè;%Óoó"3…'8ÔM¾½KZÆ•£¬ñDìÖáâY#u¾Vþ:œ*UŸGÐl®mtÆk‰çLI+.Њ+ Ä´ºìw ¾XØ6ªŒ  `}«gÃRÿhÚÝAx¾q¶ˆËn£œ'ÐÕ{J/à–½Ìå ªukª95 «Yƒ;« ‚=:zWkªéºšÝ$-l³Â³#¯Ï€ã;X{õRÏLð”¤_Iö½ªrÖáƒßÇ zÖˆõ‰5[ÅB…¢¯džø²¡FRÄê´±«nµeìÓ[ùzI.‹¡XÜ[él×73ŶI]v…AÉ =©®6 NîÔùŸ+/÷ASøõë®ðµÑÔmîí/˜Ö¶æxänHÚÛJöYZ™k¥xBD×kU_½nª¥xì$ê9Fu¡ aÝ’¾Ÿ2#(Ò”ãV-½5ÞúiØ¿¬izÍS¶B’Æê7à?%Xuêx¤·}ÃÖW0in÷¡#.Õ 9GZÃñN±s©ê *¯”¥bŽ¡;.îøÆkc¾£ å­Øó…´FhÙÆHÃ!>ZûJOáïwùá8áÔæÛ]UüÎ.×X¼´q"T`ì+Ewú®“ ÈÖ±ÊZÝf…eŽ@»°¤wÁôª6ºOƒîq|æì(É6Ê ¯®Ñ']µŸâÝz}Jê)|˜‚ мaGgÚ³Œ]SxSÙ){Z±öIÆÛôôõ:[it Áuo¥³]ÝÜÆVIvN꣩ÎÍyݾµ}jÂXÙJã”`#Ðýk¶ðUÛjÝi÷ãÎ6ðµÄM!$®ÜRÃø\Ï[h~ ¸o·No6/ÎöÊ«†ÿd?P)¸Ê´ ðÎËî%5'É·¦»úZΑ N,šRöÑÝÀ'‰•wÉB;àç–ŸØ´º‹N‘îî爫È˵U:áWùÖŒüCuª^Bñ'‘–6È «ÀUôÏ5£à{™õQw¦Þb_"ž'aÊíê¤÷V­hªQxžD½îÿ#NªÂ©Ô“·c‡µÖu w)@Σn:óžÕéΑáëÔ²iKÚ‹˜D‘² ÁKuR:‘š¥i¡x&çý:V¼D_˜Û*†Â$ë¶³•êšæáûÛ]=®D–Âê,NƒvÝÙÊ•êFzzVm—‡|xMäÍ}©ÜÖѪ²ŸesÈ›ã¯\ßOm„fƒË5^ªªpþ¦³ŒgFœwuÛr¥/kR>É5½ßõ¹Ñéè> Žãû6W½½ž2¥ÊlTB2B¯SŸZóY©Ï¨®ûáÍÜš¼÷MéóV8x™ùØÉÔgû¬:гkáßHo®ö»/m«}¯×=(p•jPxm*P£Rq­vûïÿ \ÕôoêVlÓù–Éy–&A»a?yqÜf¬hðxÁ‰8Òå{ÍBæ'A#!EŽ7A¸£7ÞR½$qT-<)àmFo·Þ5ì;žÚ5Rê*§Ò²¾!ø¢âüÙæÇö;uO. ™Q8 ž úâ¥FT©Íâ5F’’«R ŠiýÝ?«Ðí<;ॖK d¾¿š']ì›…I"¼šë1Oö‹wP¹$!PPóÜqë]÷Âëéõ;éô-M͈^h^O˜ÆÈ3ÔrC1Wí¼%àû†¿¯­Ð1g¶ˆ++z…só¤ã*°‹ÃéäJ”iUœq ïMwÿ"þ­£øc\ÑôËÛ•’Ð^FdãŒoœ0ÛÝI>§øcÀòKq§Ë%þ¡Ò×vÒ¬h["= ®=Á¯Bø[ªßj:¬žÔdûLM Í?&'Œnàÿu‡£ƒü©Ì×rµí¨Ý—·Uÿ¸ÍÊÐã*”ãõ}<„¥5d± íÛ]ô45]Úæ¦_^¤–ßlÌGˆgË|á¸=TúTú›áŸH÷vɨKGØ‘¦9*rHâ¹_ˆþ&˜Áec£DÖv¨ž\KÕ• Ï÷z›á>£w©jíáÝEÍÌRC$±3Æ)nü$pE_5?n ×½Ü… ¿VroÝÞß3ÏÓÅ>!7ÆêÒDK|± ý×'­{.§¢øgÄ~Ò5+µ{UÔ"óTÄ2b”¯Çu'µQ ð±p÷×{hw’YKwØÇæ\ÖgÄŸO-•…†‡±´EòaU?2¢qŒŸâ'’{ÔF3§ ʳº.RiÓTŸü¬ðæ—áÎ×V_êS#G²Ö5aóaOR@Åx’x³_kÖº²‘a‹qÙÐWëÓšô?„º…櫬¿†u9 ÌRÃ$‘<™fŠX×vA<í=­¡à¿ëW2jWo{fY‹Íon£fÉ,Q*½7U§CBT£J´–#Þ}ÿ«X³©èÞñ/†4ÍNùÔ^)ux†LRµøî¤Ž•oÃú7…| t×öwê3FcDRN:’ErŸ|M3éövØmFaˆ å{gûÇ©¨þê×ÚŽ¸<5©Jn¡dxÌŸ3Dè =Ž0E_5%]E­{ù¡Yáå(½5ÓÈàŒ<@o¤»´™aEs¶= ‚ÏÌ:ãÖ½–ÿLðÇŠ|%¥jZŒoiöÀä4#>\‘¬@=Uºâª§‚< «]Iw4—¶'q2ÅnÕŽy(Ç•ÏzÊø™â‰"Ólt¿Åö(wC gæU\Ï÷˜œš…ÓŒåYÝÁ4”áZp…%gßk™ÕxoDðŸ€nÿµ,î$Ô5'FH‹'–‘,$¶8â?ð™x€ßI=„‚W;Sh €{çõ¯BøA«êþ$Âz«µÜ7i+Fd9hd †Vêˆë}|àrî[û†½±bÅ¥†Ý£vÏ; r¹¢Î¥4èè.xÑ«%ˆWºZÿÀ,_i~ñW„´ÍST­~ØXÊv¹ ÝO\Uÿ ø{Â>»:•­ÌºüŠËäòÒ0Ã“Ž¬q\¯Äï›}/NÒ|/°´\Áþ$UëÏvläÕ?„zÆ©¨ø•|3¨L×p\«²™91ºÁ”õ„zU9ÓU”e{‘ìëK)ÅÙk¡ÂÍã?É©Kwa*Û €›ˆ5íwº_†¼Yàí3VÕãk¶î;¡Ç*¬ÀwVÆvÕvð€µËù/§’öÁË:tWÈêÈ[•ÝY|Nöš%†•áxšÂÎ&0E»—P½I=ٻԨʚœ«;¡¹S­(F‚³ûŽ£ÂÚ…<z5›K©u-AÑ£ƒ1˜Ò-À†`;¶+Ãn¼kâIuY¦±”[¤r0TÚ${=s]ÿÁí_R¿ñ<^Õ'{»kå}»Îã‘¡e‘Iè2¸"ºiü à-{P–úùï,%.LÑ["¼r08%só&}©rº”Ó£ ^4«Ib5ÓrÕÞ—áïø#KÕµXÚÙoYÉh†LSÄÅ”t(ØÉªÏ„ü9á?jU·º—QÔ\€´f8âÜ0[ÉÍ|PñCÚøzÃKðÌÆÎ&6Ю2È‹ËOñ¹êk'àö±©ßxž ê“=ä¡°Òež'A¸:7QÓt«æ§íTZ׸”jº”]£®žGuã¾±=Í„ÂÚ$•‚®ÐAÚ‹?JöË‹ øÇÀú~­«ÆÖÂé™KB?Õ̇”¡»Š†_‡þ×59o.¥¼Óå.|è­‘dŽB½JnåKw¬ÿ‰þ(û†ìt BÖV‘9‚<òê?ˆ“ýæ4”\¥UÝ¥ ®¢¬ÿàžðÇ„¼ ¨.¹̺–¡ÊÛËŽ=ëc5â~7ñºÜÓXN¶ñ¤¬ª»AÎ|õ¢»_ƒºÞ«uâ¸<+¬L÷–—û†$ ´R%]lc‘Þ»;¿x ^Õ&ºº’öÆ]äM²†IãrîåsíKZ”ױЭ)Õo®›’?Ã6ð¬ë0µ¹»–Dsæ9á;w¨?Âóá_ øCÀZœzìwRêz€È· ž\q–.Grs_½q6™8µHå`ÀI óœõ®»á½¬\x®ÛÃ:ËÞÚß’Œ²Œ˜ßnDˆ{G>Õè7ÿ|âR{«©/,.72Úª¼r‘Á*îKã‚özÌ©UX×ASNðÿ~Xë:ôFw+Ç+D1¶xŽ<Ä„V­xGÂ>ð©ˆa¼—QÔEª´^Z#?Ï<‘ž=ëâg‰Nƒàû-Áöíeio)·.3Ë»´Æ¹ßƒÞ­yã[O jóÉygªW;š96–IPõHätÅ7(ªŠ2W}ÌÔjÊ”§îë¡Æë^<ñD¾"º}*qm 3 ´y-ž¹5í¢ÓÃþ9øogªëИ>Ó3G)‡þYÏ À‘pAà “Uø}à?kw7zŒ·–ÊÌ-^)ˆãx•cß“ñ?Å  x.ÓCðm»YZÁ0¶Œ°Ë©#s;üMŠV”9Wt7*sP…iÞð‚üªGâµË©^ƒþŒ–‘±ãszŸJñ={Ǿ&—Ä÷m¦Ü h㘨] äç’r=k¨ø?âa¼_má­Zw¿³Ô_Ëe–hÛWF<‚^ÕéZ¯Ã¿x‹^¸¸½š÷NºÞDßeD’9YxÜ}ÖõÅ+9Å{- oÙÕÿi×MÈml¼?ãφöÚ¿ˆ!0™ghfkqÊË1"B"§ðŸ‚|à=Rµäº•äm›Txü¸ÑÛ»šÅø•âx<=à{mÁÏeim/“š@Í÷Ï÷š¸¯„>%ÖŒl|5«\¾¡c©Ê!’9,ŒÊH’3ü,¤~"›œÔZ»&0«*S7hö9íÇþ&ŸÅ§L-cŠv\m–IÏQžÕí¶º~Ûj^#€Âf¹x&h8+48Û,c§ ËVõ†þ×õ뙯¥¼°ºW+1µExæ*q¸û¬@äŠÈø¡âk_ xÓBð%«ÙZÛN ¥;¤ ËÈÇûÍü¨Q”9¥QÝ šHÂÕ¤jxWÁ> ð6¥ˆe¼›R»ŒƒmEå¢9à3z‘ž•â#ø…â©üOx4É–Ö8fdÀL– òNzóÚº„~&ׇŒlôNáï¬õ2G7ÎP°âEþë)æ½SWøyàOë×_Kw§Ý#‘1µUxæ#Û[î±ÇQõ¥nx.M öuÚ5ЩcƒñáÌZ—‰`òY§h%x•Ë*¡äU øÁ^Õ`ñ+ßM¨ÜÆÁ­£h¼¤W#›“’=«;â?‰ ð¯!Ð| nö–ÐËå+Ë̛ߖ‘Ï©®á'‰|Cÿ Ž©ÜÉg¨Ì!š°À:wFSÎGQOš*j2Z¡RPœ©»G±—âŸøžÞ 2²¤2•?(%›<–Ï¿jö­>×Añ÷Âèõ_Á´Ëpö×-ËûعYPv$u6µðçÀþ$ñÌÚ„·z}ÚI²V¶Et—iÆì7Ýr:šËø‘â8|#ðú/øÝímm%£KÌždŸ3Êÿí5 2‡4æî„åJq„i+= Þð7ü ¬Aây/¦ÔîblÚFÑyH’€Ì{‘üëżWñÄÓøÂøiý’(%(~PYØIÏÖ½ à^“ñCÄ>&¶·KKý_G½*åÝᄟ0H@Te#8Í})wû"MãoÜÜk~‰r š- Êä€ã‚Èù†Aé^~'4˰еjñƒ[««ýÛŸg‘x}ÇXHÿžjèΧԆã#Šñ«ñ–CM^œùÚòkñ±ú¶Qô]ñ{ˆ…õ׎çZÏÅŸ‡úÙÆ©¨ª¹…¼8I4§ø2ª@obF:ž9¯5,^6¢Œy¦þmŸwV§ ð¦UªÊŽ–í¾JQÒÊïáZ]/š=Šà¡ñ~©~>Õ§érý;=ž,0SƒµD›¹9ùW”üDøë¤é:,‚ݯ4æÞ±› -£0œó”» 6œÿOÕO'ÇÕŸ$b¼õNÞ¶m¯Mü›Çx¡ÁÙ~ã1ä£dázu!íSWN”ªFšw^ò—"º¼’Ô÷x«Fð–ý£¬ÊIÚ‹ØôU€MyÍÆï ÛCuqãiàО)|¸mn&Vº‘8ĆÌ€18UÛž;‚ |{¾[kÐjQxÃZñ–«¨N–†Öàyáf`»Õ|„)´@‡á]~‘â¿èÕî›}jâhd)ºBI´ðÒÊM#cžR¸í_U…á/mçŒ$åu{®O”y¿9G^–?¸ƒé-ý™ÅË WB–Â\¼’X¤´•gA5vî•:U_#·=ÓR_Kjx?âU¼—PÁ2´l \iò—”:|XøŒž:´ŸZÖo5XõG—1Ï!}ÑÍÁ ýÜuÇJï¡Â™’‡°©UF6ÙûϾéGKô÷—‘ñyÇÒ;:9¦ /©[§ÌêÁ*Ùŵ γrqj.iR©m¦ÒOüiøáO©ñ޹öíNÏæU…]Ö&á‚•„l N1ædŒrEtÚOí àÝ{ÂMã]8ù6)+BÂá—ÎÊ’2!‡Ía’8P‘ÏLðo‹~xÄ>&¸R’îÆî/ÜÉ=¢£¤Ê½ #t`2+;Æúîà_‡è~´’(-\n–q™^I ¯Û>‚½/õ+á^¤¥oD­Ú)$–¾¿‰ð‹éaÆ”jÖyF…S]#)MËD¥V¤å)Uj*ßaí­’G×Þ ý¢6Ù¤¶sl’ @Ñ»ß ;Ù®1¸rO¨WÍú‡í“ã¿ kš†“¸¿•HPn˜PFÄUÉç’dÁéŽõó/Ãoø“Lñ=œW÷rj—óGÄ|Á„·+žCr1é_@øÏáÇõÏ\[êR^YÝÁû£=²«‰P}ÝÈÜnŒŠõ¡Ã¹/ÕÕá×w¦¿~ÿ-Ìñ>8x«S:þÙ­ÕSåqQŒ¿w¶”þ Ûí4ä÷m½I¼9âÙþ!øXÖuâöÓIr¶º²f…&Wãp äät®gÃÿ ¾ø[Q‹Äú…ýƤmØ=¼ ̸9RíܵcÆ~ ÒüðÊï@ð%¤‘EhèÍ,üÉ,²¦I=0:WŠ|:ñ§‰tÏZEy.£m}2E=´Ø`ë!Úp;Ô^Ä!N‹QŒ{’?1Äã1øöêâ+9jÞ®úɹJÝ®ÛnÛ¶Ù¡ñâG‰î¼s}‘'Ù'F 37Íž{sÅz†.4¯ˆofñm¾ç·•mî^z°Ü’/`㸮“Æ?ü ¯x¢æ Iî¬ï!>S\ÚN‹Â—Vx2=+ÆšÖ‘ðÿá½Î‹àKi#Kw ÒÜÒI+ñæ8ÀzUÚQmÉœ—„¢£fTÐ>|?ðÕü Ô/î5€«ÃnÑyyuÆß1ú=«Ì~#üGñTþ6»¶Ò¥‚" °PY˜óÔöàx§Hñ«^^Éou"Çqm7̬®@8ÂG$_FøÇáç¼Câi ÔÞæÂîÝ›‹UY±öŽ1¸v=i|Q÷4)û³ýë¹Ïx>æÃâÃFo[¬’ÛL–×-Ùæ$‹½ΧŽ:Š‹Aøeà ^Áâ;ÝBæý-ØI ³E°^T;t8«þ-Ö4Ÿ‡ ï4_[JÝ–I&¹æYen<ÇÀ:LW…ü=ñ¯‰´ïZJî[û[¹£ŠâÖS½%`­´‡œæ›i5u¨%'yAÙÄÿˆÞ*›Çwi2‹S#€ 38Èö¯Hð…Õ‡¾jx®#Ûʶ×-Éæ+È뎎¦ºoü:ðV·â™ìõ‡»´»µ>WÚm•\M?(‘[Ê8ÈäÖ/Šõ]'á×ÃkÍÁ²…´+#Ër?y,Žvùèj5MÊoBy¡(¨ÁY™zǾ¿ƒÄwú΢–쯻Eåîeû»Û¡Ú¼óâÄ?\xÒæßH²lÚÎáAfb2:ö¥s¾ñ¯‰ô¯ÚIyw%ü2$wÓÈèçQü5ôŸŽ¾ø\ñ4¶š¤—6W0/–·6¨’,‰ÁDâ^€ÑñÆÐЦ¹'û×s—ðMíŸü¨¿Š`W–Ñ– ‡ˆló#“•qèêEA¢ü-øuá˸«·¼Ñn¼)ð¿Y tkë»m9>Ñ{w$Lä·÷ŸhÚªƒ-ÐsÒ¼¿á¿hïjšoˆ|1¥jZµŽ¦ÛKK }ŠTݵǜÀG»pÁ®zØÌ ¼ED­½ÚVë¯Ë_CÒÁäyÞc8SËp•&æ¯I¹+òÞ6Z®ovêêún`|Uø‰âŸËk¤²Úm@ÌÀdzžÀW¡x þÛÇžÖá+%’Á£†fŒló¡˜8¬8>•î³%çÄÿÜøZ :òÂ÷LQæ]¨ ‹–9|Á´±è˜É=zkí¯ƒß>Xüðß…u‘sKq)‚ü,2ÞO:9ù”ᲊ»£ ƒ…ÝŒW‰›ñ>[”%:“ç»ÕE¦Òq”“ùÛM·¾Çèàÿq¼êP¡EÐI>YÕ‹Œe(Ô§Nq»¶°ç»²nñäIɤ~Ti ¾èwqk׺…ÍÝ´ ;SÒHä+?qüëø©ñÄ—^9–ÓCao HÝWs30ùTž1_±qø'àÁ‹Z‰¤­}®Ú¼*n.ZhbòÞ8’G†V#}Ä’¬a€ûÜâ?4~2éžñ'îÿá"ßk¨Ø¹‰n¬aŠ=ȲFŠ©z0§“ñ <öRŽ“„M9nîÚÑ+èšÖí?+j.<ðÃáÞŒó¼l*Ö•IBP¤›Œ9a ûÓ—+¼•DÒPkGy&š;ÿ µïŒ_hð7Ž­þÁæÉi#OÂ_dbVWLYGëŠñ'ìé¢ü'×å¹ñtš„ÖVw2E Íhð%ÃFÄ©°ÚÊ@ÈÁé_»^×´øvÃź;y°_@“Dç®gÐŽî0zWš|_ø¢|d¿Ñ.w6¡8E¦Ú²÷£k£óßÄÿ ¾øÇ^3øjbšNÞÖ+6ÖÓ2[Ilöqɇ•·9c*È2và#9ÀøcHøYðöÊTÖou «›H¶ò°Ùê¨Òtíõ5ú'ᯅ·–Ÿ´u†«àq-¶‰aäÙ^ܼeDréQEh¶¼œ™mÏÌ q^ÑðsözÔ¾üDñÂ^Iÿ„|Dmæ³µŸ÷†&Bðùd›ð3Õv÷¾öáòŒ2XŠ®´½9$ÝïË5{=miYÞú»ësù»à¦gÇ9¼ç–`㦱XšntãÍkF|ªQNÜÔœ¢¢¢œ"¢ÜZ?¾*|@×.x+QÒüo<²„óî.nÇï%+÷F Îq_{–ælÓ±ØIÞ/ðîšèÑüÛÅ<1›ð†m<ƒ:¢áZ6³ÖÒ‹Úqo⌺?–4rúŸ‡VÒ¦©¨j3X©Éµ1…fôV“8ÇÓšæþ+ü@Öï!Å~ú–—a¬/[G%r`¹•Ù§Î: ‚]xȯJ³¶v‘Z+ Lœdàc'V7…õOøHü5e«ÜF\D’<á‡?˜#>ƨwH´ñ¸ðÜRƒyuoö‰"ÈT;Uùãœ8çÆ9¯ÁêӮܰRZÓæ¿Éêÿàù#ý‘Àc²ˆF—Ѩ*Û^Ì,<%o%´X,^9š@>ꪲçŒí“Š©ûGê:Ï‹¿fh¼m¦Éö[›y ºmÊ7mg0ö9pOÒ¾”½·±·Ôµè59Y-om¡w$çnõxjá°E$àŒžk̼-áÈ<{ð£_ð®Þ×SóEº1·Ä’*®îÇlŒñšú<5ËCQ$ðó‡½k{²ÝzÞïü´? ân¥K‰³|ƒRMg8LZö.\ÉW í ©Y$¹=œnýœ½æ~s|>»>(Òµ/ÄщçÓ­ã˜JÃ=´ÜÀwÁÉÓþ|>¶uÕ.µ+‰,Ô†û?—†#®Ã'L•éþ ‹Ã¿ücð™uywfÍ{5ÀS+RR4*¿qBm8î|“¢xÛÅšmêk‚ñä'æh_˜™sÊîâ¿Y…XJçWz¯¹Ùþ+O#üÚÇàg†ÆÎ•¹ZŒ•ýÙÁN+ÕFIIt•×CÑ~*øóT¸ñVÚB­¨û:0ldª}ÔPO Ò|;՗źV©§øš%¸–ÎßÌól/¬­Žã¨5ÚøÛÂ^ ÖõK{}Q'´s K ö 3Æ’€Æ)¸eü¾•Ÿ9ð×ÿ ê:w„¡¸žâXÌ“ÜÜ€®ûz(QÀQ[¨MTroCÎr¦é([Þ9;…ß•Ƨ>¥tÖ‘œýŸÊÃñÑ|ΘíšÁøŸãNMz] TXT©Ç+Uö¯7ѼcâË Ä×ó»¶Äß4D”îâ¾—ñw†ü#â‹DÕbšÍ¥&†[`¥¢ Å[†\ô¨-JmQÐÒjTêE×wGðëX“Äö𖛝ijËgn'€É`ŽŒ˜5ZÓá—€C‹ûBçìŠI6Þ_Íþï™ÓõÖ˜ü3ð÷ÃZ†ŸáH§¹¹š$÷7+µäTåQT|¡s“Å|ã¦xËÅ67+­ÃxÌãç1baýÖ^àŽ(”£XÔWbQ”ç)aÝ–Ÿ×‘èÿüo¨Ï®Á¸0©VÇ+ª£>€VïýF_Xj–^ n%²·óC…Û¾6;YûƒÚ»OxSÂZÅ奮¬“Z—·Žxf¶ÃÏö„ú…À´µ¸G÷|ÏO|W]Ð<¢ÞiÞŠâ{‹ˆ™æ¹¹P¬Uz" áW=}kç½;Å^&´»ÔW®dS¿Ê81Ý=)ÉœcÊìPŒêJNƒ²ÐôO‰ž1Ô.5KH´dˆ!0Û|ª£>ë[áΨþ'‡PÓ5ÈÖi¬íLé)-v¼oŽ0AàõØx³Ãþמu(¦µ[›t¹…íð^5w4e[åeª6Éáïh—º…âšââæin.Wid@X"ªð#&´äŸ´sr÷Lùéº š½ÿ¹ÊZ|>ð#cP–þåm“l#Ëc?t?Lg½e|KñuÄú¥¥¦ˆ‹kÀ|d¬kÀã^y¦x§Äp\&¯Û¿–yŒ¯÷J÷«èOh~Ö>Ãý§ ÖŸi…'Š[|‹Ì(U¸eÏ Î)Ê4f¥J¬eYÝÃíI¼F/4ÍyòAnÓG&b£†FDZàÔv¿ü0ój7Ú™ ò²Þêqƒêk¬Ž? øH½³ðÔSÜÝOy— (£;GÖ¾|°ñ?‰-®U†òDa–yÝ+Üc‚(“Œ#VWc§Tœ¥AÙió=â'‹ç7–¶º hV±c’±¯~œšÒøy/‰d½Óµ•Y¥µµ{ˆå#i(¤+ÆØ‚¥u>$Ò<1®C`ú¤Ú ¸â'¶Áh‹™Jž¨O Slâðï´ë»O Gquys2Ü\(RѦ[ËEïô­9jûnw/wôô3ç¦èû5{þsжð/‚gÍóßÜEl f€G–ôÓÔÕ?ˆž.ž{ËH4eñ•#8ÜDk {ñ“^{kâ_Gqý©Û¬ŠI üÂGqØ×½ø“Eðæ§ö¤·PÇq¶ã÷‘4ƒæ]§†V9 •µZrT+6štªÂUýåù·€/¤ñ]éÚº¬Ò[ÀeŽL`•2¶:‚ UƒÀþ ¹c©K}q ¾Xµ¸s uPþ‡ÞºÛEðç‚tÛ«O-ÅÕÅÌMæOp ‹ÎÄUã¯S^gâ-r+Á©ÅtÂ@wlÏÉÆ8#¦àÑ7q„+«°ŒeRs•dwþ?ñl“KiŒŸg…b 0J¢ð×Ö¯øP“ÄsÜézº¬²ÃÜC/á[±R:éüC¥xwT´Ó¤Ôâ–½·YÑ­Ô‰›ïsÎ*;áïÙÜÚøq..nîâ"K›… „ùh£ŒÉ5§%_mí9½ßø|Ðöœcïtûûœ¥¿ƒ<87í{<6×€G–ì†éŠ­ãï½Ì–Pè±ùEȆ2V4àc=Éæ¸ ë±] J—GÎvç)ø©àŠöíOðî§e¥Ï©Å%º_[­ÌmoËBï÷”+uS¶±¦áVœÕfk5*Ua*­Ë{}ÇŽ/ŠµÐ }«§ªŠ_øJõÏùú÷ȯKÿ…{àƒÏöïþ¥ð¯|ÿA;ïüJÏêø¯æy§·Âÿ+û™ÿ×þo¢±‡P’ÖXË*0”àóÛž*+«­¶¦Â¼¨Ôî9å˜ö$ÿJΜ´Ó3ÊIg9>çÖµ­üIä’EÉŠ@žsž«î)*Š¥YÁi¾¶èzÎ<±Œ¥ý3"Úá¢_nîFT÷ö­›Øì Ô%¶™ªœSƒƒëÖ™õ¬?½³³jó’å‚‘Ü)àb².COq¾q’Ãw>§¾k;ªlÝîþ_ŠŽ¥Ò±§yz#·ûœ^T`î99,zdšÏ´‘ã|À°}A8"µ-7>,Ž,R.Íùrç¸ïSZ^ZÂ~Ñgd¿hQ•bÅ•O¨J¹AÔ”*)[M­ÓÊÚ 5(Å_úêEy …¶¥-Êå6!ö$sÁã™wz‰hÖ¶±˜"S¸ää±õÍf\<ÒN^BI?7>ùçñ­«2±æ™ÔŠO›¨>µJ¢©Ztâ­¾¶‡,#);ìbÚË%¼ë"ŒüÝBjÜÔ#Óíõ -'Œ…CÊpFyÅ÷V0mšÆÌyàwrÁO¨SßÚ°î^inIÎâÜ“ê{Ôîùµ]4+YÕÚÝ ;›¸â´k (ŒQýó“’ǦIô™ ²[Ê$C“‘òžr:cñ­› [Fžwò 1õ?y}øÇÒm{gïmlTÎ>`K–PGp¾£Ö©ÁÕtê)[åçäB—*”TnM¨ÁceªKk4mµOÊTà€Fp~™ÅT¼¿D´{L)÷Ø“–cØ“éYWsOqtÒÜ6YÎâ}Ië[¶;ßJ¹šPÉdòË´pËïÅR¨ªb'N*×¾½l'Jq”µÛï0¡–Xgó’w”ô#ÐÖî£ „:™¶¹ˆ…!”àŒŒsÅ%½Ý’ –ÚÉMÀÁrʤ¡}kîYînÚ[‚K·ÌIýk5ûŠïšízÓKµm<;«Ñ¡²´¢ŒÎÄä±2}µcÅ4–ïöˆÎHä‚x8ìkgMi•pJ‚!)°úê£ØÕ‹KÍ6ö‹{yב™ (>¡:qZJ«ÉQJ˧ßÒĦ ¥«ÿ^£µ¬-µµ¸‰°0Aw íôã5Vòí!²661c$;19gÇçÐVmü³ÍtòÜHK7$ã©5¯¦»¶‹vÏ‚ dò‰äĆ_~9ÅR¨ªb'N*Ûë`äq„dõÛï0íç–Þež2IÈãÖº-N> Aí.#m«‚»NÈiÏv½Þžš yÔ ìTÜ'µcê3ÜO+ÜÝ’ÌpÄžùãùâ³_ìøwzï×ó+YÕMéùþ3Vòþ;k'±Ó¡1Fß;3Åý9ö®~‰à”\Eóç¡ö?Zèô¥”é7o `*Tž~cÕRÙ^éªÞlz½Òò3!(îúUÊ·%HÊÝ—Ï¡*\œÐQ¿õæI«[iÖº´º‰¶W ­µ—pÎ9àP]^ÃiÚlFl;3œ³õÇ=0=«Pšââé®.˜³ËÉ'¹?çŠÛÑL’h׿O˜[lx˜öbH+ŸqŽ+EUO:qVzëÔžNJq”ícœŽâkiDÑ‘ŽƒØýk¬Ö Óíµ6µ¸ˆìÚ ÞçÜÔwZj0žÛMG¸NTyŒPÜ'¨ëŠÃÔn..îÚæñŽù>bqŒžø¬—û=wÍv¼Ê³[ÉZÈØší-l$ÓôèZ4q¹™ŽYÀé“è+ŸŽæKY|ø‰$0ëÐûé´&’]2õ›çX¼e¹ÉƱiÖW:bþòßNG¹\—,ºäGëU*nº§R2åòùôµÉRPr‡-þÉõˆ¬ô[ÜÂB2#‡ ¥ÆHçÐóНw}•„šn—C§sÈçs>:{=`j—Ww·Fæü–w9äc=¸Õ½ Ë+é÷ªÃ)¬ŠHÈW'븑V«Fx™SQ³×_88SŒç­­é{œ¬W“Ú?Ú"l2üÝr=G¥wÜt©mw cG!uÜWŸsÐÕkK½!_σMG9Ì>XaÜGÜÖ¯wwyro/—œuç¦1P—ÕèIÍó^ßÖ¨~õZ©¥d¿®›—W¶öZsØivíËó3¹ÜÒxäqí\”73[È.!b0sŽÇÚº¯—6ìä²À¨èOf'ŸpzT–7:A+ƒ# —Ò#’íy æ°›×ÊÏ\ÕJN“åßMºù{·6ÝVºy–µè4Æ’Þ=BÕ¶Í sf6Úѳ ‘ž˜$ç¢k›mÊkÑÓÏB^iqp9Ú1ÆzåüU{¨ê‘\j¨tÈ^‹pTح3Ûê6ì A>jÑd޾£¨ïZ{XËérëßägìÜ0Êr+»oú Z…Õ¼‚î :àð}9ü«Öuèt¹E¤z…©Ûq Mò¬ŒÃ‘ô>•Ÿ§¿†¤?l“HŠ[¼‚e! zùҹꮣwÖ¤ t.c¶ÖqÕéNS|É—'íëC–6·õÑšÜYèvréÚ«§Ú–žBœЏàzŠò¸5ØeÐÊD«ód8ë‘é^…ðæk‰Q²ûÖÑ@ÓwÄr©ŸïF*ÞŸ/†æqs6‘·kÈ_5•‡ssô§(:ôá:o•v%MP©88ómýjjxŠ×K™,šþÕ‚ÝÀ·!ØÑ;òÀgŒ¸5ÙhV2Øh6Ú£bÓJC3…ÚàWãKýWRº†ëR ¾bŒm©ÆÑŽ˜«wá´—RÿhÚÊ [Gneä$Š~\ÓwB+ok­{{üŒ9G ªIÝv¾‡Á¨jó­ü228Á”gÐzz潓]ƒJ»‚ŵkCþ•ÊÞYcvëŽØ=pk?N“ÃÉö™4x¦¼Ém‚b˜t&#ü«šñ¾¥ªêw]j@¢²ãn0 ƒ v°¬£‡¥'7ÍsGzÕ ’µ¯×ò³;8§Ó¼5a-¦e"5Ümºyy`v®8ãðjwðÎ5§häp àgÓÓèß žéî/l7¶[g”玟tŒô'§½iØÂ+u(¹ºÑá–ô„ó™cvìL@ŽsUÈñá:o•vþ®(ÉPœá8ßmáì^ÖÓL¾±ÓfÕ­ ûe²NûcFíœqŒ7\{ÒÃ.ŸáÛ¬ü7e.û¸ÛuĬœ/!{\W5=gR¸·—Q%u#hT8 Ð(íZß šîk‹û ÌmE³ÎÙä$‰Œ3зJ¿k­*N:÷2öRŽÚ7§kèy¼:†¡Æþ‡GCrx"½Ç^‡J¾³Ó¤Ö-K ¸w1¬ŒÝvûdƒYúqðÜžuþ‹ ·¤ð‹3$nÃÖ0Øëé\ŸÄ=GW¿¸‚MALq¸ÆÁò¨*q·þÆD!,=9Êo˜¹5^¬cf¯Ûð±ÜÚ}ƒÃv’ÚøvÒP÷hÁî$!Ë2QqÀ¯‹PÕÿÚ+3$€“Äm?á^›ð¤ÜM}§+¶[v”ç8Iî°ë‚Oï[6k໫¡q¨èñOx¢b‹#ïGÓ'ÐQ(ûjP•7˾‚U ³Œ×3ï×ñ4õÛ}/RҴ˽fÔâúÝgr‡c#ž èÝÆ)¶§x^Þ[O Zȯ|¬æRЍÎÅ#€9ï\/Ä]S]Ôe¶šü4hÄ¡E]ª¥x ŽÀÕ±ð~K¹õ;ý,’Öd’fÉÈŠDÇ–ê{3?¿i¬r8ëß©Ÿ³—Õ½¬ž›Úþg”¦«¨ý¯ûM'tÃáH'ë:î¢mšñ<˜yO-FÅM½Ãoá×rk÷DežÒKid•2YQ’~ëëÍ_´Š®¡Ë®š™*RXgVú-m}3þÓÖ%»:Š\IŠÄ§`ôÒ½ÿU‹L×<;¤ßk¶~a¿·óPìeu$SÐÚ©ÚEà˻ߴjÚ4Þg84K#vÝl\Å S^¿kCw·€“ÅMŸu Çj…B”ÝѤ¦±!®VºéøÞ•‘ákiWÃv2´·hÉö™X1 s±Jð3Þ¼5=^k¦ÔËÇ*¾FÓ¤vÅzoÁéo½q¥#±³kie“<ª² £sÐçó®®Þ/]ÝyÚÞ ×›¸f‰e=rñÁü(åuéEÓЕ ²S÷žšésCTNÖ¼3¥^kv‚Q}’B‡c+ƒêÚëéOÒíô_ Á!𥜦KÄ1›©˜6(›xô=ëÏþ(ê:õôv‰p†ÖØ“—؈î¦lr*ÇÁ£4ž$¸Ò´–ÞY%\¨Pedv¶î=êù⫪n:÷2TŸÕÝE-5Óæy{jZµÅë_›‰"us„®Â }~šn½á ÿ^²/ý¥™(C±•ЕóTÿá×<§^¿¾7æ Íæì`NaYH?ÇBIôë\Å]__Ôí-~Ô†Þܹ‰‘Õ@Ÿq1ÙqÓÖ¦1t¡9Éßþ¹MW8Æ6küŽÿCƒDðœNÞ²”Íx fâfBãî¡^qÍ|ß.«¬Ýj2j <‘È’’6ãöÇ5êßÌÞ'—Då쥷•æVË"2.QÆrçëšëÄÔoŒÚî“÷Á³Ÿ<Ä%`xÞ€à“ì9EÖ¥Êã5B¼ã5Í¡föÛN×ü¤j ´/öè÷ɰìet8)ìXTº%ž‡áÚ_ ÙÊÒÝ)ŒÜÌÁÊŽè˜àá~-êšíõ…’ÜFm ó F8ÆÄŒ.6 ÇA΂rÝ·Š›Dˆ´–3Ã#Î…‹"íWç¡SöŠ5Ô%¾æJœÞU´×N‡”˪k7‹ê&âX¥IX»O ôÅ}!1°ñ'‚4OÄVBf¿ æì;tlUeSŽ ÏjŒYxÿPi¼C£Á5æã€'hD¤¯ Zä>/ëýí…”SBlmƒ˜Œ1‚©Ú€€þµ*>Æ3”Ë”ã^p„cËçò;íÏBðp{Ÿ XL׊aûLΪ°å ô'­|×qªëwºŒºƒ\K Ç+piéøW¦ü–ìxÈhÐîk+¨&7QòȪ¨Ydç;J¸Žk½xR½2ø‹G‚{Ðßygh¤t.€òOëCµ§™aêËÚ.k­þþäò}‡Ä¾ÒuZyÿnV2íùtd¨™N8Èäö«Z&›á¯î¹ðÍ”²\Ý)‹í38} ŽBíàÓšà~1kZõÕ…”~GØ­UÌ&(Ôª _¸ƒÐz÷¬Ï‚y'Œ—F…¬î"΄–\*’ƒÀ!º¯iYFQ¾Ú‘ì¥,;«Yjìy½Þ¯¬ßj²jÜI Ç#¨T%B•ö¯¤Ûìž$ð&‘©øŽÐ\5ê·šäbÑ¢U=‰j´ð ýû·‰t˜&»ÝÂs·§™° Ozå>0êÚüúM¬+°³GòL1‹jDì}{Ô¨:Q”¤îT¦«ÊŒmæw^Óü;àÖûo…ìæ{› `ûLÎ"·P¸à8¯šu=W]¼Ön/¥¸–ŠFUTb»vžÂ½#à[ÝÿÂu‰ 4–W0Ëö¨²vH—œíe`>jôim|¨êm/‰t˜%¼ÞpÂsœAãzóP×µ¦¹tý…Y{_x´ÆËÄ¿ô_Äv‚·«¤ÁNÖ-Y”ö$HàÔÞÓü9à¶7¾²™®nG•ö©Ø?–.Þ=9®ã¯â Ú1±µI~Îc„Xb(€án¹ïXžðxÚ= ÏguŸiª£!ùû¥Oz·5íTuÓRU9J”§ew¡ç:ޝ®_k×7³Í,/̪‘±P›:}-´ñOí/Tñ= ¸7¥–]§c1ŒáeSŽ×Ö™=Ÿ€uY¥ñ>‘×a¶ù‚s›ÓÍAÃþ•É|cÕµû ÚÝ!©(„Ã(‘ (ì}{Ô¨:JS“¹RœkrB*Ï¹ÝøwLð¿‚u_ ØË%ÍÀò…ÌÎ$*¸à7Ö¾`Õum~û_¸ºžæh™UP•كǿzô²ßÅã»m*ËsÚÞQd˜Ìas¸ç8 ŒƒÆ+Ôå²ðþ­'ü$zDÝ—*¬³˜ Ø8b‚Z›{X.]Íì+7SÞºk5§‹~iš§Š¬Öé¯Xe+òòe=˜Ž§¡Å[ðî‘áÌ5/ ÙL÷7Ä.gpâ0Ã.Þ=2y®ã&­â!Ô|S{4óÍnmçhÕŠmÁàãß­}5¦|Yð²ÆÿÅ‚ìÝHðK•¤’`{0Ç^õ.«aðóRÖdiPOr®UeCÌãÌáÆ+ã”Þ1²ðE¢Ea&“¦ù‹IEƒŸ¸} êj[T[ç–ÿô£J¶*6“´,å$´Ý“o¥ÞŠö»v:? è~ð,Ë­xjÂi®¤PžwAàíÛÀ'Ô×Ì~)ÕµûÿÞO=ÄÐýžfDŽ6+·Ô×_ðB]FÓâ ž—¥—{{ÂRæ–F³‘•ë‘^áw¢øÄ'6öíóÊ!’f‚Yþl `ÎNp29¥/~ö¶ú„c(â•+9¹Y$•Þú+y•´[ˆ|_ð¢ÏPñ]¨¼2LöÒ7ÝiV?» #ø‡Lбá­ÂuÿióMxß»[‹‰‚ ß)*Ø<\×Ç)|[aáÓ†žú-­¼«#hÄqžGsÔך|}RÓâ6›¥é{¥†þO&î ³$•;‹~ï\ö¦ªÓmrÙù…\&*“©J´\$ŸÂÓOæž§#âsÄ—Šï¥¸¸šm9EDb¥v÷ã×­}+ ÞGâÿ…š‡Š­ù§¸’Ò_á3,XÙ(aÑ—<žõïÚGìÚ|yy6«âÍHä1Å4“Io,Ñ©ùK¤`î\cï`šë¼iû.x‹ÅzÒu»mÎ&"µ·fXáä€È¹bO$‘^%n#É0u%N¶%7Ù]þI£õl§Àϸ‹K•äU$“NnîŸTªJÏ{Ûmv>bðç‡æ¾hñß‹¼CãKË}÷ öó´i · …ä’{×êÿÂÿÙ3áçÃgûY¸ºÔ®vËæ¹X_?ôÈqù“_Fi^ðþ†òK¢ØÛÚ<ØóÕð07ž=kçñ¼w—Â<˜*N_ù*ý_à~ÓÂßC¾2ÆÉb8«0¥‡‹û1N¬×“·,ÊrG矾|Aøà-|g£3»E!¼ýÉ’!ƒ‡øƒ€^ÇðûöDð‚o—Ä^kÉ~ŠD`¶ñ#c0=²WŠû ŠùŒ_ç8)5äµûÝÿ Ð7ôQð³$Jy”*bçÿO'Ë÷P§ÈŸ¤œ—{ŸÝ~ÇúG‰"x'ÁwZx£R†ÊKŒùk#r@ïÈæ¸iQ­ˆ©ìèEÊO¢WgØfY¦W’àåÍñ£J6NS”aweyI¤®ôZ¥â:Ïí ð×@iÔ®&KE’çÈÆ€‚T¹ x)äŠùnóö¶ñ_Š’ÃB³]³FAÂÄç—ÎNsýêúŒ/»sc±(¯Õÿ‘üñÄ_M|þÇ„rVÓJÓ¯;k×Ü…î»~ñ7Ùl~“ëÿ¼ ¡Û¼ÐÜ6 P€~Ⱦb‚}_„xçŽl‡Š[?E6§©BáÝ• XóÎYÙy›Cf¿4> ÜêºgÄ=&É/Úî+ˆI,“DçnRHàsžÕô·‰¬>Ýø’x<[¥Ápas3ùæÞGE8UvoP:dW­GòxÆ.nNÛÝ¥¹~Nþgæ¹§ÒëÅEJðÁÓ¡J3V-9JPóNsiË¿4\{EBÃûO_ø§Àm¯øwOh¤7&Ù™¸ÎXÅ‚ßwûÇ¿jðèO·Õ—ÆÓ ýfþ'&9/î Äpz…9éÛ#¼çãµ®Øü;“MðÕ—öU«¢¤výêà÷Éêkľ\êÚg4ÅÑ^IêdŽhòÎ%¸}Àäp9ö¯ ÀånX<%›ÝîþÿÐü_‹üMãÎ>«OæSš…”`½Ø+uä£~¼Í6û迊ÿþ$ø³ÅZ·ªÝ¥Žœÿ¹·G(¼ã Bã>Ùàv¯fð%ô¾,øS-׊!‰†çìd¸¦Œ¨nHþ$Î­ßØ|>¿ñ ¶þ2Ó ŸÊ¤Wsm+ è…À÷®SâÆ­­iße°ðµŠéVvÛV8íÇʱ¹ùŸ#;‰îÕÝJ…<<\iF˲²GÆã³»|#’÷Ķë~bºk2n"*Éþò⊳ᯠøÁ—Äú&Ÿqquú³<‹"@O°¾‰¬ŸŠº¦±§ü8ºÓ|#f4Ë+M‚(mþêÄíóÈd“êÄ׃|%¸Ôô¿icAiK©’9¢ÜβÆççÜ2{sEìÔZ‹š”¢íä/ÄíoÄÚ·Ž¯íæž[h­ íHØ©;ÆwœuÏjúÀŒž(øSq7Š`ÿf¸„¸Áž"3‚{²ú×Aâý3áí׈fµñ†›À…ŠC?žmåòÁû¥ƒ|ã@釞;f²þ(êºÖ™ðæïJð•‚é6v‹†;pX‘€yçq#©¯žþÝjÚOŒô¹´’I§š8Ý #¶XrûQtŸ+@¢æ¥$Ëß5ÿjÞ=¿´¸š[x­Š•HŽÝÛ”ùpI¯yøs©Oâo†—§ÄÐÿh-­ÀµÜøÌÑ0ÉVnì¾µÖøÎÇÀW%žÏźl¤Éþq·” ']XnQèA®Kâ~©¬i_.´ÿX.“in£[|ãcšMÜ–'¹¢Î-É‹™J*):‚üá{„ñ.“¥Ü]\@CF²È8[ž;f¾yø£¯x“YñíÝÄò[ÅÖ ([pÎîÙ¬O‡7:®âÍ:ëÃï+ÜM2@żåvùƒC3Ö¾¼ñ‡¦ñÖ~/Ó`¸HNÈfó¾Ï _înn\ö£â¶+à•å©Éü1Ô.|EðÏQÆ5/°\­ª´£™¡•Ø÷e=QW|?àïxRå!|)0üAµðgŒ¼5ö‰.äò´·åu'î$¨Çz.y‡¥}¤?e]×@ñ…4$]#O62Zi'xG<±׎©Ê¹)$ü¬sÊãÄÌx›(Ê£ µêó)¦×-Òiwóû“ì}ÿ øGÆücW„À`Ý9P’…Oh¥8Ni4ÖšBÎö³œø“?5¼?àÏøRá|M¤i·ÏmÌqÍ(’8[¦âÉÁéšð‹šÇ‰µ_Ogs4¶ÑB© U%7ïÞO§¥~ŽxËá'¿€VšÂßi·x›YžÞøH¯ƒ%¡ydÝ+<¹ ‘º­ºñ†²Hc/ÇŸ‚º–±¨êÞ=ñLJ£—IÑÒÞÞ+©.7mq¤f@Ñ3„€XÀ=ðq–Š2üt©Æü‘ù\š\Öi+.¼Í¿5mV§^}ápýL¤½½J ¤iFST¯ “š©+$8Â7i8K›Ý•âÏ‘þê7^$øm¨¦¿ÛÓO‘`G—“,RcvîWwo@ðO€|3t;¸´šâX#Ž4”l;wïÝ‘ÔgŠ÷Ÿ‚‘kßü¨h÷–¯¬\ZL–ð)Rïp’‚Z&Ú2vã9ì9Ò`ð¿†BŤŠ«Dû¤‘æv{I#1#OAœ+cÂÞðÇ‚-¿³ü#jšu¦ùd6Ðù“0w}ƒ€r8p+S^ñƒám*mwÄ×°iöVãt³ÜȱFƒÕˆó¯ËOˆðRX|s¢Øx>+Fê—Pù¶~eÄ{ 6ñ¾öXˆo•Ø0r^“ò¸,užÔšÂ§6÷o«ÕÝ·£{îï®mûñ/xo† ó‰Â„"­’n¼#hS桳jå÷]õ²«÷¶ZmŒúŽ£*Áom$²9Ú¨ˆ2ÌÍÆ’{WÏ^Ñtý#F¸ø¡ã;û–Òt{ËígJ £ÛXÍo‡YUv™ž ß2£**?.ÿißÛ;TøÍ ¯†>¦¡ éOo<ŒsË}­g6BØ †wrŒsñî¥gâãáù^ÖK†ŠÞܬ_¼w_F$ü uQÅ}žOÀY…L´ÅÖöN[Æ×ij»èÚ¾×ÑÛ«GàíáÇ’æC ÆO,ªà€F{ýK.Ëpù~l>ÑVMÚöìÝ—ô‘üyÅSšñNs_8ÌÚN¬¹¥ÝAJÖrQnVoVõÝ»Yht¿³GíÝ«øK³ð'Ä-2ðÆŸ Z%ÅŠ¸¸‹9̯¹ÛÍ,N\.Óݺ~˜oø)7Á³á Nyt›Éï-nÖÞÀ|ëwoÈYŒ® ":º–ã ɯÎ_xm!ð½Ì^Ó–ÖÞ(Œ±ˆ™¿Õ·ÿ¾^Ñ´yþÛo5†çžF] e·–=\æ¼ oäXÌKÄÔ¦Óz»6“w»~¯¯ùê~ÃÿH² ªF Ó‚q´¦¥(ÆÉE'¦µâ×FœmúÑàø)/üsñCOðo‡¼.WRC ¤W¤Ëó`—.ÐíÄh¥Ž¨,{Ô h6¶ö»âáµ{˜¥o8_ÜÛÇØ¿xçpžG˃_ίŠ|?ÿ6¼/,Ù¬® \Ç42˜dŒºá”:pA N EÞñx“ÂzV§,Ë5ÅÖŸkw!QŒ‹ˆ÷Àà!°¥|äx\—ØÏ.¦£ ¦ž²oFž·oËõ¾–þ•ú:x‰ñóÌ0üYŠ•jô%n4ã¥Ũ¨F.ÿïuf­Ëis~%|aøÕñ³Bý¤®~ ø›MK}WE‚ïOÒíäIVðIæAö˜†àÅœna!ávã›øûnxßà$·ñlWþŸ{{ãy²nš8ä}¤ÆÏ’Ììcp±•n…‰¯½n¿~¹ð4ÿ|1Zx—Mº†Y&ÜwÞG!K!·»nÅè ˜×çgŽüá¨u†³Öm"hUU•ŒžS#0Ë(@ON‚¾Ï!Ãä¼K¤ðé$”$­k8ê¬÷ûMÞý]úŸø“ñ ÂjT§™ÎR”§^œ®¥ÍÞì¹âÒ‹v¦¢âÕ—$ytQgÝÿÿk¿„ß´·¦Çã+–ð…·se¨ïy[^Ý•d–'ÈÆØþ@Œì ëÀúq‹Æv—–7Q ZJ·0:~ðÎY /Óo˜ýÜ’Gó]âÏ Kg¡\/‡¬D0Gt(wïÇS»ÄTßhψŸ ¾$x[^ñ³¨j:.“r7ÚI;ʋыyB#1X¾âð¯+;à5(ûLªvQŒ­ +­¾ËÝ6ûÞÍéµ³ðÿé%R•_©ñ¦šU*Sr¯N^ÍÙI&êEhÔc¥¢—4U¤›nGôAñÏÁ—Ä„^ ð>ŠP^j6¹‘Ѝ”ÈK ‘†æ¿<5¡xËÁw^'økñq?‡˜y”Ÿ1\‘´1hä_¦ ~×ü)ñN§ão‡O‰/¯,¯î/ãf–çL-öuÉllÙL`Êlä b¨x÷áVŸã¿iz®©E=½ôîÝ$n¹ˆÆËÈd“¾G÷¯˜áN$|5ˆ­ÆÆôýæí¿2^}ík;kmؼfð¦,e˜#áúœ¸”©Æ<ß ¥RWmÚöäççm9{©¤›?ôÏ|:³¸þݳÒ..f·ýêÚ™CD¤t%GÍ´{×’ücñ7ˆu¯-³JÐG,Kqû²Wql÷—¥bxÑ ð¯Å}døî-Å–©sgg“lr²Æ»’Hkêˆ6>mal<]§Aqn3Hax¤uÂH#$ò1_¹Ñš¯F3‚²i?¼ÿ;q¸iåØÚ˜Z²Rp“ÖªéÙµ¶´Gœ|Ôﵟ ëVºÇújikBòüÙYN=ÁÕ­3Á_¬®ÿ·­t»™æ€ù«je$n •6ß­nk—Ri ¼Ó>iian yã0Ÿ0Í"Ž]¤É.@í_"øv÷U²Õmu]:yMÿ˜XK98Ús×="´räå®rÆ>Óšpv]ÚOÙÛâÏ‹´«ïê1çÒÌr)Šçs)ÿ€²°úb¶5H5KŽ–º•ÌXOd‘Åpç±gY#öàÆ@õ¯&ø=­®“ñcûh•?´,Î1ÁI@²}0¬qÚ½ö’ñ>µá Xëú qqgv· œ1‰Y¶9Áþ•ù~aƒ–ŠêáhÇJñ—þOwÿ&Ïô;‚ø¦–{ôq˸4¬ÔòŠô[i_ýÚ´bÒW³¡8ÇMzßt{…ׇ´‹ÝAµK¨·ÌöíjÙfÚbf T¦vžGŽ ¯-øW¥¡ø—ÄÞÔÀ?f¸ŠêÝúo‚t*¤{/—·Øƒ]ÃOèÿüaãm+ ìyhÉËG áãoulŠÔµ¸ø¶òÚHBÉ ¼,²âŽF|)÷WF?C_'N®&†€«µ•Óèã%oͯŸ‘ý!ŠË² ß7ÈxË-qræŸ$â´©N½9&ÒëÉ ¦ú×y›z–‘y¢øÿÇÔ¢óm4©>Ûf\gdw-¸C»©R€ yv‘àŸ‡\b-.âib>hµ2†ˆ¹Úí ö¯­k$Õô‡’çA€!Ô,ÝÝÑFé&€aC7SµH*+ò§B¾Õ,.¡Ö´ùäáƒ+©;‹ç…ïœôÆ+öŒ—±YF%vâ¯ê´Š?ÊøiðωyÞIGÝŒ+IÅmîO÷ÿÉdTøÁâMVñ$6Ï#ÛÃ, 6#ã~N0;áqŠì¾꺎¥¤êÚ^¨~׌ ,m/ÌT±ÃFsÔ09ÆkÒ¼wmá¦Ô ´ñn› Ä/sÏå<3:‚áFO$V6­xº7„®ô¿i‰cjñ4ás+LëݤÉ-Jõùfê\üçž’§Ë©ƒ¦ø/áüwVJ¸™á&O² A‹®AÇÞÛ‘œWœ|\ñ>·¬x‚\µ¬rD$?—# úÅy^“y}iuµcs ½V ²);‹g¦xÁö/Œ#Ñn&µ‡Æ:lSÅ,Ë v14R²‚ÛH#'¨¨V«£¡¤”¨ÕŒçïnyÏÁÝKPÔtý_HÔ º†ÂÝnai~fL¶Â„õÚ÷µji¾øzfþÕm.y%Cæ}”J yöýí¾ÕÐ_ܦá[­+áþ—…³ÆÒ+ÄÆgšE¤$çµò6Ÿ}©YLšÅ­Ä«zrÈïßž8èy㡵MF2W"ëJs¦ùOYø½âmwY×­¡,`Žâ7÷gnyÆÑþ讟àíõëeû˜ôøDñ<Ÿ1RNÒ‡Ô0í^ã‹mívÖ¾*Óâ¹·šÞ)YŒM ΀ɱÁe¹"²®îáÒ|9u¦øNK8$‰¥ß™ZiqºBI8ôªQ~ÑÔ¿ÈÍÎ.‡²KSž²ðw€„ÃWuÃËóªÊ<¬Ž~ïÞǵyÿÅk:αo fÞ'ÌÄd®Bð{ òÍ:ëP‚æ-^ äûnðâ@NíàôäõÏb=«ëÿão´)°†dšæòŒR°¶¿l÷“U©ÉEXÖIÑ©7sξ_êöÚž‹¨´EioöˆšNLm gû®;´,|!à).©ýq$‰—û"È<²}×ïmö­ù.áÒ|;>•à-9,í%FbèÆW™ÔpCÉ#°¯”m./íeMbÞiñ•”1ö#ùb”ä©F0’¸B´¥:o—cÕ¾,x‹]Öu;PÌmÖhËËÂü»F;-t_¯ï¯í5Mø›ˆ¬í~ÓÉóØÏuqž+Ѽ\š,«b¾+Óa™n-bštfòZ™rÅq³=ÇJÊ{ˆ´½}7ÀšlvVóÄíæ#y­4Фª´N1=jù¬ês|ˆçŒ¨û.]{œæŸá_Ë1Ô›MäRdû*J yëÓïmÏ8ÃüQñ±ªj¶±®máš…O—;BŒv¼¶Êêö7]Z9¤`î;Ãç¦>¾ÕõŠWIxìSÅ:|3Ç=´sJŒM®¹fW*OR*"ÕZrŒ%F¤g'Ìy÷Â}Röýoôkæ7[ۈ̜˜Üc<ü­ž™­[ øâ·>›pòædygê¿{iô½qwk¥èSYxMK;{„bÓ#^V…i $ã®+åë;›ØnQóž;•mÛÃáì=cNMQŒc5Ì‹«9Tƒå=?⇈µmWQµŒ²Å4y œ`/G²úV×ÂKÛÛéuùÌðÚÚ5ÔeÎ㣌ŸápHǵwž#’Ê{]?þë§6ÑK:914r°åƒŒ-ÔŠ„]Ziš<úw‚4Ä´‚tf2£™žieUœ“À=«ÙÉVöŽF~Ò2Ã{[?•¿Ìæ-<3à{©þÝ&;È Û$€#¿wï`×'ñ7Ä:Ƨ¨ÛGƒrÆ6ªdp„¨Aþè¯-‚kȤƒJét„ù;ƒo¯jú‹Å ¦µ¦žž&±Žxîmcšeså´r²Ì®:1à‘YŪÔå+MJhJ~÷õÐá~Ü]Ý}¿H»&h`·7ÏÏ–Êzg=Ó½[¶ð÷‚îg7ÒØLd ¼Û$€#ç…ûØ>•Ñ»]/IšÏÁzÚC2ò¬†W‘”d)sŸÊ¾j‚âñ&†GYÖݓ¸8ÀÎ=G¥T¥0Œ&®‹­9ÎǦüGñ¯«][ ¦Þ'L* Û´/GÐVÂË»Û뛽íŒÐ%´·Í–1:_î·LWmâ&Ó–ÿ 5„s¥Õ´rÎŒÆ2’Ë+pUSPGwm§i2Xø'MKK{ ÞdÊæY%p8VsÛ¾+Og/oíy´!Í<;¤£óé¹ÎZh~ ½œÞO§Íæä±·IÆ>Ë÷±ì+šø¯êZ¤öTÛE*•D^ñ´zm¯7Y®ã—í¦F[„bÛ!•‡þµ}â±m?K“Ä–1No-£šâ7Ì{%oâR6ífqÅcF½9F ”ÒiÑ« ?{ç¶.|çç]Žò~f>ïþ{Iùš÷ì¿…“¥ç=þÜÆì¯„ÿô ÿÉóþ5ŸÔçüÿ‹7úÅ?ùöÏÿÐþ¯®míõ) x’H;wg\cš«}uwsUŒ$@|ŠŸwþµŸÓ@I}ÃuÎ}+bÑd‹DšvùA•<œúó‘íL¶Õ¯¶ØÇ NF7ªaýð}qU8*’…Y¶›_Õ¶”’”b¼‹:”ÖöZ´öïKl€ÙÀã$9ëTïæº¹…cTX ¢/L÷ÿ&³&GZQÀŸ¯­mZ‰bÑe¸l¦$_(‘Îïâ#=ªÕYÕ«:rVZú‰Æ4ãnôF- OÀ>vq‚;šè5 ´Ô¦†X’XÃdè|PÛê×R0[4…ncÌ µÈç8>¾ø¬yÖHæ2KœžíÜ÷Éõ¨MP÷O[¿Ús©ï+|ÍFæîæÙaHÕ r$w=ϹúÖ]²ÈgìY2q×?ý~õ»aæ®…spH<Å0ç#æîW=±ŒÓ-5K–!,’œŒoDÜõÁõ«”#QÓ©)4û[ò'™¤ã¢þµýKšÅ͵¾«4$–-ÙÁì{€G=jŽ¡u{qj!…;p càdu>¤ýk&éK¾|Ý3ê:þµ½¦‰àÑ.n$Ê ‘<¬ÿ?6ßíR©*•§FÖZúüÄãB2Ýè¾{0³©¶ÿXXlÇR}1úWE©M¦¥$RD©ê àz†ÇX»q²Ì@“·Âç=pOöïX·Ê·>dÁ²Ç$žçük(þãÝ7Íwò*ÒOEo™¯¨ÝÞÜZˆmãXíÀÞ‹L÷Éþð¬¼Õd’ÔŸ7pÚGRÙãë]š’A¢\Ü•7§”Ûõ¼u©,õ« Çì‘À—'0 IéƒÓ>œUÎ «…II§Ûü‰NQR„"´,j·öš¬¶ïKFPƒÃÎéT¯n®îíE¼ˆí(±ýÒG\žä Ç»Žá&2\ç«^ù÷­½1%Möâl…Gäž™lòWþ×Ö­U•JÓ¤ÓK_Q8FŒ÷z#›‰ŸÙX—,6àóœ×aªËoaªIo4I$y£g† nÁ³PÙë[¶[$ rÃO,Ï× 5ÏÞGk¿‘Nõ*%5crþæòâÐAmEoÉD‹¡>§¹5ÍDÒ‰U­³½X–ÝŸñ®ŸFI¡Ðo.$ÊÆY<³ë ëŒÓ¬u‹“&-"·K¯áFäŒcU:q­ÉRR³¶ßå±1n1•:qVL·­\ÅgªÉñ$‘œSœ nÁŽj…íÕõÕªÛZD‘ZõE;Iç$ŸQކ°ïã»ù³‡$ÿrr:†÷®@ŽDÑ5¹AHO–c'Þ©íøjÕYTÄJ“VZë׿'Ó§=^‹þäSÎGAk“ {v™5Þk÷PYëAÏ} r£"3Æã€ä Ø#‘ww}ycö]2†Ñ²Á ä3RyÏÖ¹­bõ˜Ox­—Ï'$äuϽt~Žát­Jäåmö.Æè  ¤Ü 碫)â%K–Þ}H•8Ò¡Ýþðç ¯#aÜ$ 9Ýì:ç&½OÄ·ic¨¤7ðÆâH£y‘ÁâB£v1È9ëY–"—Ì_*;5»<$­ߟfÈô®o\ƒT3ý£PÞ\åY›®áÁϹ¬à–„¥Mó^ÞŸ2¤jÉTV·ÞþëEÍõíÆœ-4È#·´pJˆNUœsóÎïc^vŽÛÔÀI—?.ß½¸\×}àÈgIÕnØl·ò”+”©Sê;ÔÚ‰f’Qå%˜½cį[·Ì8Éõ§8,DiÎRåòùôgì\áN7±§â{ű½†ø#•ddt’1È5JêúþãM6ºE¼pÚ>î!9ÜÀëŸc\¿ˆ£Ô¾Ò·Z˜rî0Å¿¼9­ïÛÜ}‡Sº`VØCÁ<79R=ñÞ´öÒ–!Ñå²ïÔÍÒ…<¾õ‘¦ø™äœ£²§ “<+¿ß F÷®oÅúÁº[ÝT;I&w3sóµœWÕ©JP|ß×SI~þ¼UUmξ{Ëë­,ØèvñAg"¶w>2»óÎ}¯*'k‡!Áê>ðnØ÷¯Ið½âZê—x+j-¾÷@fÞ¦2¿íu=‡Š$y¹[#}Ñ'’¿?ïtÏ¡4剧 Éòù‘0›¡)Ó§ÿ®»šþ"¾6ÛEªC©-¼MIçëÔv­…¶—f}Nä†[1fë)ûªd8`÷`rr9­UY}gØòüú™:PŽÛ¦®¾ãÉ‚º¾n ó•°sá½»æ¾×nÅ…–›ý»R¬¶¨×QÍÓv:úîÀäŠÊÓ|af.ÕnÅ„—êÛVi¡ á½ß¡>湈–¾#žX5T4DŒ äñÓ ÇJÊ1ú½9Ê›úêi6ëÖ„'[_çé±ß& ×;Áá[{x-$Èv¶ûÆLp®NOÒ¾v•YY…ÞVel6x`Þž¹¯døAkr×ÚÚ©[4µpç /Ÿ“¦à{õ­‹iÑ_$W©§=ügäžhrÞ2ý ÏsD¢±á)>_!BoVP‚æüþfþ½x¶>•'ˆâ…Ìö‘›¤˜q»)=÷b«ZêBm-­|!o½”¥–CnI&L¡ÉäLןüEµñòA¨ê»¤å„­èÄñœgå#¥kü³º“RÔ®][ì c"ÜVs(vËÈ#šÓÚ¿oì¹~}L½”VÚó|ºoùž3,2C<ŸiÊÜ+ÀŸ˜8?žsÒ¾œÖîΙ£iø’(§´íIp8/Øžû¶úV%ŸŒôá¨$‹§É~„,sÏg—/Ó?Q\Ä»O\›mCWÝ'ÌË19 1äìGNÕ1Š¡ N.ÿ×SYIâ*S„×/ë§CÑ­5EŸHkoÚÛÛÙÊHv·ÉmØùC“È•ó[Ã"Êíw‘29 ’C+ÔJö/ƒvW¯«^Ýle°®'-³cäñÎyâº+?é±ê—‹§I})ç„;«vËð3îiJ*¼#9h(Éá«N\ÛzüÍ]fîm?ÃÚDž$Š){PnRäp{)=Ãm§Zj‘ͤ´> ¶¶†Ò\Ç3[“»~2¢By=3Ö¼ï⧈ï$·¿ÖÃÌ70”ŽFO*~˜éVþ i×Ï⫨‘–Í-&[¢F##Æ= nÉÇÒ¯Ú¿mì¹~}v2ö1ú«¯ÍßN‡ŽKK¹N¥•d!÷pÁóÇŽzWÔZ•ì¶Ѧñ$q»ÜY©»K8ÈŒžû¶ã‘ÍcÙøßK‚ù Գ後…I§„3ƒØl×%ñVËÅ7ßgÔu`Òª¹nPÍʱøHéŽ*#Fœ]Íg/oRšåþºa¨Áq¦½¿‚ൂÖL‰ÚÜ’ÛÏÝÈþó °Ì·6¢ Ü#áò0úôö¯_ø5exþ!º¸X¥¤«qÇÊxù`[w#¸®ªÓÇ:L7©mª:kÈØæ¹€;®>î_§çšn>Þœe=?!EýZ¬¡Ì´õ6ïîßOð¾.¿RyÖ£í)sЀ~BÙä1úÓl5Ki´Ç·ðUµ­½¤‡líùËc9o˜{cçÿì|K|–úž¨ Êù¬¼¨'¡ÀãiÕ/Á;[³â‹›¨–Í-e[–#å#*ôÆíÜŽõ~Ѫʗ/ÌËÙEáÝküºnxÝå»Çy1ÕÉÆíæÃŸLä{WÕw·—> Ю{ØÎØ¥¹€I$|ðLŸíPÒ«M9»dðõ¥¹´ùü÷7n.¥±ðV‡qâ”Þk|\%ÈùYA>Ylòo¥6³c&˜ñx ÚÒ iÛ‡¶;Ÿ' lüÁsøWœü_µñF§km«†™cçcæ#än?‡; ­ð2ËP=Ͳd¶ò ¦# · ð3œc½W´”jû;|ú™*IáåW›¾¾‚tÔ®N®1:JÁüÆ?ŸN•õq¼¸²ð…?‰Ò9$–Ý„ËsÑ£ û¢ãûÛ}9¬‘ãÝÛSºÀÓg¹ˆíŠ[¨DŽ˜?._§õÉü`´ñV§eoªêÁ§T”ù¬£+µ‡îÛ ÆÏLqSF”e8»—)ºîœ$­çòèzNªÙ6—"xÖÒÞÚV pöç/ÏMäò=úWÉÚ¥Êj·_Û ‹¥•·‡8+ƒÆ=½1^½ðÊùüqö›Te±ŽÚqxÛqË8SØ’øÛÞ»Åñ΃g¨­Žº4Ùîb`"{¨VGÐÇ_®hiV§OA©<5yF>öŸ3Jû­;À%çˆ#ŽFž N· mx•¿v[=ÊôïVtmWKm9ãð%­¥¼…¹’Øæ@;n-ó'ð¯:øÉgâýSO¶ÕõMóF’æmœ¨Sþ¬áƒ“Œ VwÀ:õül&¶‰–Î+y~ÔÀa6mùCv'8Ûš¯hÕUNݵ3T”èʯ7}$Õ-fMbéµÀEÊJÞh~ª;c5õ„77_t;ŸG™ a0º4A±`yéÓ½Q“Ç´ÕÏÄ#M¸¹…±—P‰<—sàÿãÕÊ|b¶ñf³¦CªjÏKºS+°ý pô©ŒU%)EܹTöÎ’·õÐô VÒ¥²xÖÎd`—OlwJ¶ìå‚çÓzù/[µš-vûþ‹„••ć½ˆïŒtÅzçÀ[ B_ˆ sh¬,â·˜^6>C C…cÜîåkÑäñ׆¬u1câ/ìé版…îá¼c?(/×Zö´Ó“±I¼5V’æÓæiEu{cðÓA¼ñ:FÏ$,³­Èù^Ü7®*mXÑ„©à[8 rÓÛdô ’H\úu®ã5ŸŠµm+ëìΩ8y¼¿™LL18òû t¬O€–„Þ>ŽîÒ2¶‘Å'Û‘–Wl€ Ï@jý£Umó3T”éJ¯7}:I®ÛN5ûó¯ô¤·‡8 íŒcõvŸswgðÃG¼ñ*ÆÆTu‘ny~Bù©ÜøïèÓuñ§Ïq ݲH€”ö÷é\߯›OëzWúˆ7¬ÊÒ†SÊ#ä*ŸJ…KšIÜn§¶P¦ão3½Ð5}éó?ÃÛ[8£båíNéTÇ9*¾ãŠù'_´¸]¾òŸ=&rÁÏE9Æ=ˆÆ¯Uø ¦êWmntÈÝm¡I ãc˜JCt'êW^:ð¾­fx“û6âXXˆò•ãùrøàzg¥)~ö ŸA¯öjÎÞõÑoI»Ôl¾h—þ'HËËæ£}«£Ú†>^ýÃ'Œàõ«þÕôv²“þõ­”(ø[§µ;¤ O9Ï!}H¬O‰Þø»ñMôÛ D™•˜[&chYF¸vjì~ ~Ê¿t_Yx‹RµƒK´Ua:Ë*–’7R6q<óócʼnͲìù15£wjÿvç×d>ñÏSö¹UZª}cN\Ÿ95ʾmø‚Êö?j â@~Ô³8+'d'*F‡â¾´Ð//ì~é7Þ$Hä %V=Ù[äÞ\ö¯¶4oÙº×ÎŽÝZêB,ùBKEwŒg€%v$îµØêŸ³ÏÃO…+·—Tøf••: ±‡Jðkñ–C…röSs~Qkñv?cÉþŠÞ.çP‡×°Ô°«þžU‹u/h×£³ô>ðXƒZŽ{„úU¬ŒJ¥ÛX†’TVàg©U'ð¯üeðSâ¶Ÿ¯ßê>.Ñ®8ß{\I·ìÉW3nòÔœ´¶rqŒ×ío„¾øÀp´ Ò-4Á æÞ%Fp½7¸›ãq5³¬]Þ[F‹ib×Þc`ª²(^à¶ò8ã¶N{WÏÖãºõ± j “ÍÙý÷²?eÀ}ò|K,Wfõ'¯²§Ï½’‡+©-ÖªÛ=:¯Ío†Þñ^·ðfÇY¼â E›Î–ýÕ"kMÄ¡f~ÀàçZåü;¬h&ÖWøsicp·OlÅ¥“ÎsóõÅ}Ññà\áû7õ;Øl÷‡K+9Qcvv1üüóÐzäþþÈ >k‹â+[‹ÛË…WM²º,E\`†HÑKqêÄ{W«Cð4Ô§‹wzZ1MÛË™ÙIùÙ.×Üüÿ6ú'qv&¶ ÃTÔ`¹”ëW©{M}Ù{)Ê”yv‹•I½åÈýÕù”õËøgáç|$²øOH´ÓÞbYÚ• ÉÎ2qè:ÕØÑ^,kU„8I¤÷WÑúŸªÖË2ÜN.ž?‡„ªÃᛊr÷å“WWòaE‘¨kú“ŸS½‚ÝK$Š£©äÒ„'QòÓW~FØœ^OÛc*Æï&’ûÝz+ä[OÚ×BñGŒ#ðŸ€4›B=Çͽ”ù0¢/,áJ–#Û^}â/ÚÓVÑu©´Ëû:Í"=ÈìËÏ Ç~?Jú<7瘘*ŽšŠÌÒü5gàüAôœð‹ ÄK t±ïìiÊkNÓ|°wèÔšó>ï¾Ô,4È~Ó©O¼d…ß#\“€2H'¥aø‡Æ^ð¼luk•YUKˆæ™”wXÇÌG¾0;×åßÇ}âü +ÜÞËwm#Ç#%«~îH2`«Á€Ï¯ø+a«ßüMÒ¥ÒÑÁ•ðp°!÷·÷qÀ¾‡ ÀVœ~»_ÕE~Mÿ‘ø‡}3\éâ)ð¦Om$ëOTõ»•8^ëk%Qk{ÜýÔl¿èz¦¥§kö–ÆÍ@€+I:‘“&2#TÎýãÎ@ã:šoí8š‡Ž&ÑZÖ;‰$[d’aóD&v*6©ôûùGÄ^8ðž‹­¾™â³§Ï9û:ÞD&1©@½—¸ãŸt­Vo‰QðìL’E"¼®£ñïè6‘Æ t¶Ô’¶‡ˆ § M»ÇÄM:ù¾ _ÿÂDå`Ñ<¸ Œö=ñ_P|9›Uµø+¡«*´Iu"Zý§£Ú Ýü!²5§â¯xGAצӼJ4ùáII·KÈDÍ$àƒÔL×9ñ˜x¿Å~–òÜ‹˜áû([[wò€0;Ž´¬£y r犅¬uÖü4c¹Ÿá­žž—¡OÚZÙ·N±ÿÀyݯ‘¾"ØÝÉñ R>!ÏÈêÐï8CPU—=G©Ó|Òõi¾&h¯á¨ŠKÂ<Ž«€±/úÍç·nrZú?Åž:ðŽ‡â ´¯>xW6Éy Ìc\ñƒŒKYG] ³¥?wS/á½Î­gðnÝ@‰.äK´r¯j@ÜwTÎqšØð¶»á\Ë'ÛM9oUOžöÇ2ªPz¥s`ñ—‹¼-Õƒ,Öÿ»t[0ol8"0ƒ î:×…ü"ÒuKˆ@ðÌ,“E*3²©byÀãëUÌâùl%4æÝŒ/‰Z~£?¯ÓÄA¸! )ˆŒ†\œëŠú{áUÖ§kðí·ÿþ•©ðH¿ŸâN†<;$Ñ\ÄÎʸÛÇšd#øvçƒ_PxÃÇ>Ð|C.›âo°Mkæ–¶Šî11Nz¯R«C÷•Øô§.æOÂÙµ;_‚é}wó¬w²Gheû­jToS»ªg8Íjxc^ð‰’y¾ZiÃP |×¶;¥UÏͰžø¬‹iâßü=¹—Etž< fÆ·R7,Ap>\ò:×€| Òµ ¾!i+ᨙ'Ždve\mŒ}ýü—nA†ìÒ:”®güT±Ôgø‰zÞ"VaµM¸oºÑœ®zœõ¯¥¾ͪ[ü ’úû 7,¶†nTÀG·wðgÖ·²ÓF¨ŠL†Üæe_â(9Çü²~+Â]âÿ‡—W:K¤öæ$kadFaVýâÆªÈë_6ü-ѵ[ŸèëákwK´¸Õ‚‘±C åsh½‰IMJW±ÅKRãâ%áñ –‹b=°s„hÈä®x$7^õôoÂ;^ÛáUÅÕ×6ñ]í´3r­½wTý+Ýµï ø…|Gmg¬èñ˦jÚ’Ziï¨Ú—‹Î™ŽÌ3/ʧ“Ç•uÿe¿‹>1ð7öm¶¡kk4"40¶ö°B–ß<¾ <óÐו‰Î²| —Ö11Mß­ö¿nÖûì·ic”xÆùü%,¯+«%›|­%v­¬­{ó&­ÒòøTšùïÂúÿ„LòÍðúÃL²©s™÷Œj};í¯”þ-XjSøþàø‡qŒ¢µ¶ó…*y$gƒÏ^õõ‡‚bïÅðÿBøÕáëu&Ý/ÞØ‚—OºŒ›ÕÃG—;™Ob3_z_þͱê?TÜYA{«Þ^E*Gy™´20V]¤º¤ÈÝóò~,OäTaN²~ÿ#·F·½ú.¯oSè2ϼEÌjÎ2ù+PöëšÖ”÷TZºsžÑƒ³ºwµ™ùÑðJÃÄ· /aÓà{…ŽñŠ0-˜–#$áwuŒIükèoÙã[ÿ…´Þ$øY¡ÝÃÍÅšê+"³MåOÑ®õG`å© ŽÕú%Á¯Ûj:F¥ º*Ѭ–8ʤ2DÈÈÛã AÈb0àû Ä·ø¢x╈¼ [ÆÚúýR½ó1mkelE´0C¸}çEáU‹tZøŒÏp¸ê3¡ƒ¥i%Í;i8Ë›¯K$×VýÛ;ŸÐ|#ônÎ8{0£™g˜ÄéÊnjpæjtkSTݹuMN¤£&ôŒyÍ]~Xý¯>k|á¿ øBÊïþÕõ-å1¤k˜­®Ê’–RÆ7 ær€çŠûOáõt„Z>™®Gø‚ÓJ†)UÛ|jŽ¿3)ä1SëƒÞ­ø~û]ñ<Ÿkñ’úciúÚ[æmÞdP—†)ˆRœLŒX++9ë´×•||ý¨>|ì5÷yµyì.nì­‘–Y!Gº†1ù¬pŒ 8ã? :øüÊ–…%'JI-]Û»I§n^¿~§ô- »†xKñ 3Æ:0­N9J»‹Œ"£ 8Ê*^Õü7Z4’PNç¤ü:ñ~‹ñcÂVÞ.ŽÉÖ&ÌiwÒXIŠ«äå\2‡Î8¬_‹ÚVaðÏR×u‹{=JëFÓ/>ÌÚ³ ‰žH=“;M“p’Ïnµù âÿø(ÿÆÿé¶Þø{¥[øvêbD×11¹”ƒÚ1*íˆrHcÓq_0k>$ñú¤òxÿU’ü^H²J/¤yüÇL…f I;w63Ó$µõ¹oæuk{|UEJ)ÝFüÎ×ÚêËUÙëÕ#ñ*úLpŽý™“ᥫ(ZU\}Œ9­u% ©É¸Í'gFÞì™ú)ã;ÿxÚûàdñH™ÌñD³ý™e oòþÐNò +Iò_‡gž)×ßKø}m®4RŸ0¸RcgÚ›Ž9F=yã5ã:µ‡‰õï‡wBe–·?fØ Pcr¨;u¯øu¡5ÿt=.Ó̳•îíÕçU%¡S"‰$oºp«’Àœ‘_ªáðÓËðV…iI¤ýé{Òêü¯n‹¶‡ñÞc›ÐâN&y½\ :Q©(^ÝSÑE4®åÈåkÊ[s7+~| ñßÅ_|sÐî<1áùïNº¶´Õ55 úMßË"Þ§ d…£ß£ ÆN3úíâ3áÛ;h¼AâWŽt§k¤šVر7–ñ–Î@û’0Áõ®+Å_/føsᆚ€ðÕô±Å_E»Í‚¤’€®ì‚3‘é_„ß´À?ÚO·ˆ|z×úµ­ì–V××R³Ù ñÇ#´]°lí’kò(áðe˜º”kGmus’~­-nÒŠnËKXþÚ­šq/€œ-&7W3u-RuSŒhÓ”tÕF3©x¨ÂS©8¥9Yós7oÐ=cþ ð›Â¿ïRÛU¹ñ†ïôëV€X@ ´¼å)y,VHÌlH-‚1Íx§Æ/ø*µö—Ñþ è"Êü·ú¨ÜçÔ¤¶ÑŽÅ½ÔWåÿ…|©júµ¦Ÿ¥@ïrî §#žsèzúc_Ñ<-àýa­¼Bö«nXK…’8%@ç÷nÈiN5jSri%«ÑÛ«JÊýûõÔþvÍ>‘~&ãpõpxlThƤ¥+Â>ôT›n1œÜ¤£w¥â¬¢ÔRG™]kÿ>4=ߊþ!ê×z±nCq!1+7ÞG÷#\vEV×…|-¡^Ü}-eÔT±_/Ç]ªx${W°x‹ÃºÏˆ|s/…š­šmÅ  ¤/ßP|v<×Î ðþ¡&¹§ÚxvÚA©y¨bòÔ«,ŠÜdã wf¾º•T"¨Ñ‚Q]‰}Çâ8¬f+2¯ žÏÄFÆK'`D7q ™¸…Ž}+Æ—ž#ñŸÃû¿øE^´kvû بHÁÞ¡GGǯ5²ŠMÈånñåd^Õüý òøBËL:â)?»oÞÜ¢ž3ô¯¾4Zkž8V׋5«Û¤–û¾é'ýf à¶z÷®OÁ:N©'ˆtËOA"j öƒ»š{ž}ð95~êó~É èlËr»ð|Å\õ\uí[¾Õ¼.¤Ïá -,ëj _)²ùþ"ˆ~RÃÐSüWuâx èxM kG·e´[ÄûÊtl~5òƒ´}J}sO³ÐmäþjŠ$WÏ\àÜšmòÙXq‹›oc¢øåeª\x¹$Ö2a–Ñç¡oãÿ_Ð'쯫kösðeáþ *ÞÂÝ|‘ÿ Wä—Æ?é«5ž´Ö’[K´˜îH ˜ù™GQÏ¥~~Â~1+ø¶¢x%M.ökXV$8YŽ]€Ï§µ~uâVÏ'§ˆ_fkîi¯ÎÇõÑ?4†ŽñymGüjÝ›„ã/ý'˜ôOÚ‹Myþ_ë:u´:žš­-¸mª¬êc™ÔUiÝ¥(yè3Šüø£§âkkcsC-²¼E¾é|Ÿ3ŸïÔWô¯ãïi<¨x?XExo¡d†v?X䌎)¯Å߉³Zü%ñ׃|pútË”%ŽDó¢2´jåã ÎOšãð×F¦¾[){éó%ýÝžIôîüô÷>–|?Ãç¹wS¥û‰ÃÙJJßÄMÉsiñJ6ÝÔ-e˯–|³ÔÀÚíÀRÖP,»ñ<t<$öòY½» E±PˆpYB¨|õñ¯‡t]BêþÒÃF·”_™`PDŠù$ã#Í~ ôiÈ´r–ÇÓ¿³×í9â?Ùwâ Ö)K›ß jJZ{H°Z9¸ýô*åWxÆ×]À0ëÈûÓáŸxGÆWwö>¿ŠöM5¡[Ÿ(îT3ijdž+ÕRE?ÿ¡Ó4}I­õw·òÙWrÊ¡³&>b½Ç>•û_û1ü8ð—ÃZ-—…m’/í XoneQƒ<ÓF¥¤<žGeǽ~Gâ.W—aù3(¦ªÏM6v¶¯ÑiçuÛ_ퟢ·ñVdñ'VQž‚SNMóAK™rBÛ©JÒÕÚ*2I74ãùßûAiºw„¿hýZ;kK õ‹ð—ÖÌÜK¶D aO˼20õ Ô×Ã_"×oü[ku®,Ÿg–ɸsóƒÐnµMñ­¡ñ/íâY<÷žn±pm†Þ¬f-òg•Urvô}3_M|Fñ^‘áÍa­¼BÖrZLˆe†î1*4ÛFò«Ô|ÙÎ ~•“Ó© £ J«ÕB=-Ñtè(qÖ' ˆãl׃…£:õZ\ÜÛͽ%Õ7³¶Ç™|°ø7ÄEÿ¶í ¶'.3ó…ÏÛ÷‡Jêt?x:mXÉ¢ØéÛƒ%pFòÿì©ùK}*}nÿZñƒ."ðkÛ}íäŽÑlTF‚\d©£‘3Í|qáí+RmRÏOÓ _ù«å€§ÌY}21Üæ½+òÚ(ùUQÊmØöOˆ:ˆ:wˆŒóZ0ˆ´#²0‘IaÈp ÷¯×}Bßþÿ…j7 ¦êçOK¨È홡Ü1øœWÀüO¦xcT6þ$kImeDóaºA*´À|ÅTƒ·ž¤u¯¾¾x³EÔ~i¾'±1½”6g‹TùÀ •Dü»1´wâ¾a:/ ˜a×¾¥m7î—à`}±X\Õqç2ÿf«‡ç”eðZ/’R³Ñ4¤µò]‘ÉþÍ3h·_MÞŒ!F{©~ÒcbÜ.c  BG¯=é~!k~"Ø|B¿²u%·Ñä„+¼¾k™¨h˘ÆIõÅ|×û"xÛKÓþ(ø§áÎ)m*ò{‹ëèÑ’R@¼#AhÈ<€p¼€x¯º|ql³xnkŸ!.É£¼Dtß–¶u—åÞù~R:WÉf± ¨±+Ý«½ô÷eùYþGô¯‡Œ>qàžy×¶ËÔ£É:¸~dÞ’÷£V:¤š¨ºhpôϵø }F5&K/1Ô@Ïô>Æ¿9ô-wÂ2j¹Òlt¶×?‡i‹zª“·wÓšýgGÐüiá±$.·zv©o•e?,‘J¼}Ô×à‡Š¼ ©x?Ç×Þ°ŠG»±½x *§{s忯# ס¯¬à|ÎO <®qÖÿ'¿Üÿ3ùÇéwÁ1ÃñÄ KÒÅÁBVÕsÓºî´jtíoð=lѱñk·¾'µ¸×÷y3A•ݦPHqχ§¥zÀÁ¨&‹®ýœa HÑžª'ÏEÏ+×ê¼KeáJ8g›ØôÎA§){.X¥pŒ=¼ç;òÿ]OQøÄºíî»iw­ c'-<ð~eoqéé]§À¸¯•¯y9[8¢FFã–}•l¼·X£³A‰JðG;½3UÉiÏ}HöáÕ._™™¥ë>“S -6Ml‚N P>æì×’ü^]nóU´Ÿ^ßäȧ;þUóAä÷ÇA^g§i—Ëõt:Fµáiõdò,ôçÖ³òdà™=q÷w{Õ›TÔ|Oá—†Ö=?k"%šyJ%Ç—¨nÃ=kä«}.éeknÿmÜ@ §Íó?Ù=sïMÏÙF1J⧈œ¤Ý¶þ™éŸ¿¶ïµ+;­sqŽE}Û¸ny ºŸ‚ß}—]Š2~ðpW¢Ü†ù6ž›±×Ú½;ÇZòxj[H¼Fmåg¶„^Gp‚DyÂüÇr;šÊ“V¿ñG‡Z µ²iû$Hã´A,ÅN7¨ç' Í_³ŠªçÍò#Ú7ARåùôÜÊÒµ¿ Í©®Û5µœåOB[×t·õ¯,ø²5»ÍfÒë]Ü"‘!¸`<©ì8è?*ó;-6í\Y^nÆÒ™æg·ë_\ø¿^ÿ„ilâñ ·pö°‹¸®H¯ ü§ø±Á æ³RuéÉIXÕÅQ«Åßúèy¯Áu¾Q«%¾EœvÛœÿ˜°ö½k¥Ó5ï O©ô-9õlü…Î2Ùã#î–ÍjO«ê%ðì–Þ6©`¡•b³O)RR8Þ½sõ¯•áÓ®#si5»}¯~Ò»NýÇõÎzD§ìcÅ\P„kÎso•éý3Òþ+¶»}©Û]keÀùà ;©íÓ§µmüKúÔH¬¶Id];VpÃËÛþ×Þé^‘â]bO ÛXÅâ&…˜Ù·‘\ªÈ­(\©ÉÎ=*“ê×Þ!ÑÛ¦Ö=? Vˆ"T””ºŽsž„ñZ*iVö—×±›©)a½—/Ï¡™a®xfMP¬´ù5\ðÒ~ÙpšóŠ£_½¾´ºÖC„—r±?*‰?)ì8Æ+Í¢Ó®¢œÙM ‚ëqR6ûÿ,ç=+ê¯ëÑئ¬ÐHÒ¼ŠáDy6ó•9$ûŽõœ_¶¦ã- e«ÕŒ£©æßa»ÚÁý-w¿¢ÊÉø×Aa®xnMH«=>]Pµä%IaБ÷KgÖ¶WV»ñˆÐxLZGd –‘ùAd#åÞ<ô×Ì©§ÝÁ7Ù.b“íŠAß¿8ï×§½Ÿ°§¥qÂXI7Ëýu=â‰×/.­®õ­Û]˜>GÁéè:V¯ÁÈîE橃ö(ìÝå–U?»>³èzu¯CñN¯qáÛM95ûÚF·qÜ/˜¬àteîØêk:=^ë^Ñ| [}=K¢y`JGAÉöÕû%õiͯbW,?²åÓ¿MÌË oÃÓ_¤YXIªù]Î2æ‡?Zá>%I­ÝÝÛ]kD©v`ù þè0xç cuæÚæ3î*WiÞ[=¸ä×Ó¾'Õî<;c¥Ç¬´O+ÙÄ·±Î¢Dy=W»€Hæ¢2xˆN2\¿ðýMgaV†·õíÐù€‹ppLY÷Å&-½bý?ƽÝÚOþšÇêðÿŸ¨Ûë2ÿŸOúùÿÑþïµmªÌöò1ÎqU®cÔµÅ÷š§…€\ëUžÒåY›Ë-ƒ´3ƒïZÏ º~ º&7™Õ‘,çæö¡:µ'8TMGVzžä#]öó2ììo.. XÜ>Aà·Iô­ ÍOìÚ´ÒZ°*[¦23ô>õZ…ýäBÀÜ8 ‚p±úûÕi,n–FÂ3’pvŒàŽØ1½:7ÃÝëýlÆ×4ÿ{b{Ÿ·ß§œòyŠx\qƒÔ®õZÆÆæ{¤‚c!#·#9­!m&Ÿ£H/–Óº˜Ðð@\å±îjµ;û˜E“Ü>ÓÇ8ú9æ‰Bœ¥ Vºoúê$åË(Óµ‹º‘«\=›,¶q€GOCÛ9ª×ÿQefó;TŒîâ«I§Ý‰̓ƒ’€ñžj§N•9Vºo§Ïð)Yªv·õ÷—µ}HZë“KfàÇ1´HϽS5-N/8¿š§*˜ãiþî:Z©q¥Þ«—dg#†d©`ZÑÀúf‡po3Ü”òã<òÄ{v«R«R´éÔMG^ä~î0‹¦îô^f­¥íÅà·µŒ™xÆ;sר èµ-NKmZGµ%T®É犩o¬ßÜĺt—’Æ®]Ç¡Ç<Ÿz§u¦^¬„ˆ‹m!HÂ}ë8¯gAË wªþ¬™msÕýí–ŸÖ¥»ÇÔ5X~Ò¯æ ;@moî‘ëèqÍdAe}w:XÛDþq8#Üú}kv+{;F¸{á±®6lC÷°§ïc°ÇJ‚ÛY½¸Œiïw$jü)$cžÄõÁ§Rç(J»j_ð}tÊV’§k"橪]fY-à€ÊN\ÔWRjÌ+q¼JŸuqò…#»x‘ÓÖ²ï´{Õ•ÊÆÍŽ/;NqŒÝÁ­›kYtí éµbk–ŒF­÷ŽÖÎâ:ôàVÊU§Vt暎¿—r?wÆPi½ÏÃa=êÚ[ÄæRFþÞµÓë“Yë²½¤ŠëÀ#ƒ£':Š¡m¬êrÅýœn¤Tn9#o=p?T®´»øÙ„QÆ*v#¶5ŒmJƒ–]uòûµ)®jŸ¾²þ·Ôм:޵™dó—;\v t&±!Óµ »Å²‚'ó˜ð0F©=°GZé,­eÓ´ ¹uQ°ÜìXѸ'iÎìuúU[}Pž%ÓžòDðœ‘`O\UNêrOÚ—õ÷§4¤©%eý|Í=sUknO±Ë¸…Q'†`0Ç޵BìêZͰeDÐåTn¡JöÏcYך=ünv#>>W’¸þ‡Ö¶të)t½úçSQºTH‘¸bTçv:àfµç­:ò§Q5/¸”©ÒŒ\oEæs6Ún£wv¶V°?œp1ƒ•÷ôãÖºíS“OÖÛ첪¾ °P çÞ³¬õûùPi²]Égåç•Ï`OP?:¥¨hºŒ–—)ò¸^Jn¼ö¬`•*–íéòûŠw•Eí¬´þ¿«7Q×-ÍÈKü¸(VôÀéŸZçmì5 î–¦Ý÷vœñÜúë]N›e6—¡ÞÜêCË7(±Çul–ÇlvªöÞ#Ôdtã{,Q¾Äã>§‚UHB¯$ñ ©?ë®ÁÎ*q¢•—ùy^††·ªM¦ê˜·u,±ª¸á”²®9÷ªÓË©k¶ÿhI|ÈÚ¿(F=Šã¾85— ê–òFdÇÞÛó}Hëƒ[V›{¥h×÷šˆ0¥Äb8Ñøf98ë€:Vœõå^T§£¯åÜÎÔ¡N. 9iêrQizÍÏØ-íä3€¡NGø}kºñ©&•­~âPHŽ5Kª€ÙŒç½dZx¦ùâ]:KÙa‰þ\ñŽxÁ?xSUõMRŠbb—‰°#©ã³uÍD£BRÂÝìT¿yU{k%¯ÏïF”÷·ˆ-¼ÔœIyM£äO sÚ¹h4½J{µ°Š ü €ƒë]–§\éš-õ¸R$q‚H;‰¯3T,|Q©˜Kk颯Üð@Ï¿Þñ¢¤!YBx‡f(NQSš_×CkÄ:”šN²«˜F‹ `Ì«ó{ÕI§Õ¿ý~•ÝxwM¼ÒtGRÕ•­Òæ&$“‚íœîÇ\-fiÞ0Ô¶fé¡þPý†{ø=ê§ u¡NX‡ÊÿàŠœãE&—õ}7±Ñx›W“DÕ!H¦ÒÝP¸.0ƒÁôÍTšãVñ=³Éi8xJÀ ±›  qÏcXZˆØH¦1Æö|Ìcޏ5»á}÷KÒïõ]UM¼S@b_†sœçZÓž¬«ºR»ýu1å£ œd¹¾GŸ.‘«KxºlV²´Ìp#rHúÇ=+Ô|IªOáëûhaæÇosîp0x<{VŸãmB8Ž›öûˆal/™Áƒ'ïcך«â êÐÉç"ÙggÌ@<«œàÖpJ)K ùž†’n­X¬E–öùú —š¯Šl¤kkÐÆ6˜ÀˆÙ¾éeüdWœ Wk‘¥Åi3\'צ1ïšô_è—ºU†¡¬ëJÖðËl`‰$gmÊròBOÖ©i¾:½†!¤}¾âå@úÿ?•9Æ5£ ˜‡Êÿ¯¸˜T•9Ntš_×E©Ðø£XŸÃ·ö±É0óÞ4™p3ª€Ü:ñTÿSñ]£µÊ¼(0cU ±˜`>µ‡â/ êæTš7,‰¶@„’?ˆ?¸9ë[þÑu ÇPÖ5˜ÚÚ òcWK¶s½p1[)Ö–!ÒkÝÿ€eËB4HÉs|¿áÏ0MW7K¦-¬¦à¶0„’}AÇ?ZöOjòønæÆ&˜y±ÛG£‡ÞÊ9àõÇBMszgÄ+»X¿²MõÄQ—Ì!sßûØú«â_ kaÖh¹eL8@IÁå[¹ úÖTÔhÒœ°îì¹Þ¥XÇd¿?Ðè´u?Ù´¶ Öðå5]ž[0ùIQÆ=ëË¿°õ‰/¿²šÒV¹c°F¨I$÷Ç9¯Oð&‹¨hÖšŽ¿­+[Ã%»[Ʋ 4®ÄÁÚ˜ªZÄ+«t?Û玄ðUA?÷Ð_¥9Æ5a â]˜©Êt§8aÒkúûΗÅZ̾—O†[çÇkW á¥Uätã­SMOPñ…›½Ê´0©Wˆ/—å–à1QÆ3ÜW9⯠kHbž7-mp¿3$àw ^¼V÷€\v#¡ÇL×/¦|E»µ‹û%u „‰ŽÑ •sÿmëÞ«x»ÁºëÉÔ ×F5Š Í‚r¬ä‚+8B4©NXwÌͦÝJ±…{%¯Îþ§Pš¦©ã;F:uÈkx”ù…”,0”`­xûhzÜcL{)Á8TIcìq‚;ç5êÿ<;©i?mñ³ZÛ}™áŒH ´ŽÞƒ®ÍTÓ>%ÜXìq¨\¤ ç((éÓ®ß\Q(¤!µì |/¬i—^&ÕbkKD·’ %L¬ãÜ:š‡Lø¹&•#hÐßÝ,Ûæ¦ ¯Ðg8õÁ¢|•aVvc„¥F¬£†\ËOëC©×õ é=ž±r#º··òçN“œ„aЕRZxŽëÆöov¦(A2[„•àáÈ <šä|wàÝP†ÒþĵñE2‡qd~C¨êG¨­…>ÖtZãÅz¼Ogi ¼ÑfQµ¦2 òGsÅiÏUUöj:wùòÒú»ªåïký[sÆäð¶¹§ß.îÎf¹f!@›~z E} ¯j7>Ðt85Kݽ°ŽuáÎrHŒŽåAÁÍrº_Å™4¹NŽ/îRv™bªv8œzâ¢ñç‚uÝRÖËQÓÛíå“ w3Ç'̲¯vãƒÞ³Š(JT5fÕ'*“„q#±Ó|M/ xô{µÄ3,%Aà9‚êkçË ëºf¢úMíœÍrîv„Ÿ~z#!‡½{¿ ëzn¯?Š5{v´´‚ÞXÿz6y ÀP(“ÇIo¢] –ëºxb& xÞ@ûÀzä¾ x+\Öìm5]5ÛP NÖ‘‘ O¡«¿<+®éZäÞ)×-ä±²··•30+æ4ƒ8Ï÷½ªÜª*ªšZòR–Õ”µ×óìxµ÷…uÝ3P“NÔ,¥–áÜí 7šB¤kégPºð„tMvàE}gm²à1É9XÈçqPqÏJã-~1ÿÂ?u&íÊÀ¤åâ•>™çŽø¦|Bð7ˆ5‹ MOMc¨&q³“4Rò%QÔx"¢*£)Ñw4œªV•8WV_ðÃKñkøÞÕ£Ñî“e¯ÍqŒDʽ78` ëÚ¾sºðŽ¿¥ê²i·Ö“Is$‡nÔgî<``AíŸ<)®é~ —ÅÚí»ZY[[ËgR­+ȸ óŒòr;TvŸ†y&ƒo{t°£”/#Ï\gœø¢J3‚u‡èU”h{ÇY¬^MðûÁú¾½p ¼¶„¤Ê~bwËäã®i4Ÿ¿ŽmͶ‡tª 浈›iþ!ø#]×ôÛ=OKs¨o;÷|´±8âEîHïÞ¤ø7àßXøŒø«Xìl­"*”ó×hE“ëWÍQUPKC/gJT%RR÷µÿ†±ãZ‡…ø#A´ñÁ¶¾‚&£|ìÛ+äÇ¥sV¿aðõëèö÷—b%fV’cç óÀ늋âµÏi6Z®'öÜg3ºXŸ£¨ë‘ÜTEBœdé;³IÊu\!YY~g_¢ø¶OE%žv€y³[ü–Ø3óাnÕ<â=#W›O¿³šI¤‘вÆ\J¬~VV‚ {?Áx‹NñbøÃX‚K¦ Ó†V‘ ,j“’~”ûŒÃÃwÒh°_]yAˆf‹ô8ϧµ7Ë8)UvoB¬¡A][üΪîêïáçt8|A?Ù/-â"Uo™‚»å##œ¼`ÔÚ'ÇŽ­þáݪˆ¾y­ÄB+Ž[ålu®3â‚5ïhöZÖ7ö‰BnϽ,N3½Aä•<ÔQðoÁ>#°ñJø§Wµ’ÊÆÆ9C´À¦öu*É9ëOžj¢‚ZhG³§:R©'fxî§á/é¼¶Z”ÒM,ŒÈÈŒâUcò•aké{Ë‹¯‡ÿt(õù¾ÉylŒdFù˜+¶R2½È«•‡ãD>ÔåÑ-®îŒJÄ–€X¹çõÇ ¦|Cðv·âÝ×WÒfmH–7+´üÒÆßÄêËÜTÅBš“¦îÊ”çW’•—s°Ðün¾=V°Ð.˜–ka”íûÒqÁOZù¯ZðˆtjâÛQ´šY&•ž6Î%V?.Ö#µ{§À†~:¹ñÜZÓi—[Ù$¥÷FÙ²m€y žOjû7Áþ&oí=Oû*ݘ•H’@ ìTgýï¼üni–àक़VQ}ºýËSí8Sþ9âìS¥ÂYeJëg$¹`ŸgRV‚~NW>Z»¸¼øyðãA_Ü}–òÑ$óƒaÙUÛtqÜàôíI xá|{ØèwJ’{q…™;¸|àWÝ’~Ê¿ uH£OÇu¬4ldÝq;'ïÆïÜùg>™&»Ï|øOà£}á]ÞÞàç÷ϺYî»^RåAôR|Ö#²ÊrkNR·¢Oç{¯¸ý÷'úxƒŽP«chPRnéJu%ûuEAÿàÃñÖ×àgÅmgÄ—VZn…w{$Ò´‰8ŒˆdV9ÏlF1Ã0¯½>~Îmü £izíä:uÕ©s*“ç:£6B|¤£q×æÇ¦kîµUU £t–¾gÇ9œÛX8F ÿ{Óð?xáøB\GŠ«‹’Ý]Rƒÿ·cyÿåOó<;Oø¡%°¶Ö/&¹\‚É[t|xF7ûêº_üøWá{‡»Ñt8çîiZ1$„õÎ÷Üß­zeó˜¼ç5ǽb$ü¯e÷+#÷^ð»ÃγÈ2j4ä¾×"”ÿð9óOÿ&UQB À;RÑEy‡Þ…Q@Q@ZêòÖÆqy"ă«1À®*‰þ ¹[™!»;-1½ŒR*’s€¥”<zŠé¡ƒÅâSxjR—¢oò<,ÛŠ8k œiç™…*I´ªT„KVÒ“MÚÝúŠù»Å´F‡¡É,3ÇýŸ áV{¢¾a=r-U¼Ý¤gåœ`šá"øKYø•àˆ5]WΘ]À Á™Wå’2!Ôóþµ{”0Øl5>L,Rè’_‘øþožçœCˆX¼ÿ:Ój¤å7÷ɶuø—iãÂt_ Þ„¸Æ÷·òD/*¨ÉÚGÞãµ|ÇãxFñuõÖ©i4Éu)–ÞdF‘eFñ—ãÛýJÒYRîO2ÞeFu‘?ºÎô¯¤ü;ÿï‚öGÄ’6à\ÍuKÃÅo&6†·c…¬}ãu‡üOs§é÷MæÊYã¶„y×ÇŽ|?á»åŽé†LFN-µ€çéX_<5«|Nðö§‡¯Q7.·n8y6š"G^x®á/ÃKã}?S»²›NµÒå[‰§™Lj9*7u$ñÅ7~d–ÂQŒ“”ž§ñÁ^!Ó|e{©j²Íㇷ™ci×(* ž ×Ñ~´Õ>üYüU#ir5ÓÜÃÙß ‚;o=ªø«ã|]y§XÝ]?™&öŠØ7BsÆ~•SÇþÕ>(x õO_H^:ÍcµœÄ~h˜Œ=3Í+E_”©9M(Ëc{Ã,~ Kÿç†/•o$çÉò|–¸ É ÀÜsŒó_7üCðWˆtßßêÚ•¤×ß8’Úe¤VRË•ÎÒ= v >xÚçÇuõåœÚ}¶™sÌ÷3¡AÆrBç©Y€BÓÉ ÀrqÐÁñï‡5O‹^:§‡ïޤn¥Yà4ÞˆƒÑ‡ašó¿† üoyã ››ì-ôù’yçJœžORqŽ)¦ïdJJIÉœÄ_xMñZË<‡}¼â6‘ ã \… ñƒ_@øÃRðÁ÷¹ñAm-å»7,¹;@9^ 1×­;Å_ôïøºêÎÊæêC#—x­À`™<Œ÷¨|káíOâ߀%Õ<9~uvÊñ‰ž#óDàôoOZ,®Ú“åQ–ˆÑðçÅ‹/IÿφïÖ+ɇËA䛀0J£€2qëÖ¾wø‘àŸXøÞóZÔ-¥žÚô«ÛÌ‘´‹€0SåÉRç5Ö|/ø[ãkŸé—W–SØ[i·ÜO<ÊcXÖ#¸àñÉû¼W­xÏãv—à/ÝÚYOrïq&ö†ÜBÀ÷¤í%ïŸ$Ò†¢ø"ÛSð7Á´xŽ›#Þ=åºÌv´P;„;s¶ŸáŸ‹v8˜øo÷éìÄh-8¯ŽIôª>;Ò/~-|8›RÐ/šõµG‡ÌùZGˆüðHpõ}çû+~ÎZ—Âï‡ê3ÐôíGW»H¯m£¸Š1snì˜{f••öà*‘ƒÌÀÔøYö}‡Èpñ­Us94’ºWï«ÒÊú·¡ú‡f¾$æÕp8):p§)ÔäsPÑ´œc«r³QJí½‘ù±û;|[ø‡ãëûß hój‘K±¢YJÁÞFUBÎ õÃïÙç⯃4ˆ>êé ¦©©Ý5Í 2‡Ž8Ñ3!.¹åF{z×è6‹ð®ÓBø«´™§Óâ¾³o´i‘§ú?œ¡s:|€€~î>fë^À·Ú%õð¶I šæÝ˜„ ­$m­Ær§ë_ŸãüEÅC|¾œ\oªwŒškW{4ŸefºŸÓ|7ô[Ê1_'âjCÉ^2‡%JI§xÇ•N©դܡ%w´x§ötÕ­¼¨Ká é®u@±¢DbŽ1Õ€›/µK)(xíœ×äŸÆ_…¾9ð¿®5/iwpEx¨mä– írŽ ×ô„êY «$c#üäWæíñ·ÅßKÑP²­*W‚ä¡>XN÷ø›¼¹_)Ñøyu«=nûIG‚ÃH´0Cg*:†š?-žB3´$„ VÛŸ™½3ÚGFÎÌìûÛ aFÀÀqžrrzö¯˜¼eûfþÍþ Ó–ú_Ûêo"îŽ 4ý®Fö>^U´Œµùíñcþ •âkƒ&—ð“@M=[!nõçMƒüB"4#ý§qí\ØNϳjœôpÎ+K¹^+N·–­½Ý¯©êgž-ømÀøoaŽÍcRI·Så©$›mE*iF*)Ú<í{©^Mêÿjè¯Ï¯Ø#ö“ñçÇÝ^±øó’Üóï_µ·ìz/Á[;ã׊üãý‡NOÞ+×??öb°‡?yLÉûÂ:dÚ¯Õ+›Hn%†âRàÛ9‘B³($«'̪pã x`Fpz€kù׉0°Èø–¢ÁÊÖjkÉ¿zÚ[Dôô?Ô 3šþ!øM…ž}MIΣ;´ùãé¹4Ó\ÒŠ»M4åÙ3ð“Dø‡iw¬Oà'¸:vµlñÏn`s*­}¹ Æ+ľ,ø Ä–4“_¾µ–[9âUŽUS IïFÁA*r23Öµ|)ðâ'Ä‹ÇúfŸy·:•¥¾‘â¤ó²±ç;Hby'=ëõ›Cý˜ü^Þ%¾Õu}oìòƾRÙ’ìd㙪ŒœÎO®oÆñU–уÌë(ɤí­Ýû%wùŸçÇxeÆ\YŒ«ÀN­8ÎPrm(Å­m)Ë–)Úݵk¹ù×ð£BÕü)ðÛUÖuåm>Éc–ÔKò·ÈéBõý9­¿|SƒÆóËáÿ Þ1¾Y¥[RMÀÒ¨ùFHlG5öOŒÿb¯øßízn§âӵ K i-òoUƒïí^ƒñÛÂzOÃýkIø­ðíRÇÅ‚an"ŠÙ©E#Çç­ÈP Ú™`ãæã¶i~ñµÖ¥bòCö×2ýšÐg’sÛ#€zsTõ´ühð£¢ê/9»O³þÿåxg\0Ç@pLWØRrqçš³íÛËCð¼_³…GBƒæ‚vR³\Êú;=Uû={êVÐ>1èþ%»ѵ4†öã÷QHÐl7eÔöÎ+Åþ.øıxÃþ;ÛinlåcGEiR' Œ¤žA=j„>xú÷]³Ò›=“E"y³º”Ž Œ mÝ1Æ }ñ7ã•à?Iuks;Ip£÷Vÿ1eQ1³Ç=³WñGÞÐÁ·N¢äÔæ~hú·…þêú¶¸ÂÞòD{Q7Èsùäôάø{ãFâkµÐ4I"½¸Â$Ïesü"P:Ÿz¿©,ÿü¤êJo#6àOò¼RŽDmØÒ¾zð¯ÂêZÕ¶‚Úlö¥D²Ì¤$AÌÛˆëM¶¬FÓærÑ—>5x/ÄQø”k—¶òÏlÑÃ*ȼ2°\•'®OZú³þ Ïi¦øGÇÞ ñ‹dþÎótÇkq9òÕ£‰•î%ÁéµUOO»¸ô¹Šß¬| â’-.çy'U]¾2ÁFÝÍž0Msu¶ñ?Ä­Å–s½ôWÐØÝÛÌ6¿•r|™¡q‘ı;¨ç½xüAƒX죅æµâÿ móµ·ðÛ=|;Ç9Vo씹*ÅYÞÞ÷¹}5ºææ^i¾:F¯¦ëÚlÆ‘2Ü[]F“E"ôd‘C¡õåH<ö5ø·ÿøRt_‹:gÄ-:ÕÞß[´tœ gQqòÛyÚZ7ŒqÁ+ž¤×íNŸ§Ùi6ézlK½´kQ Â¢ ª`WÈ_¶Æâo†Pøÿ@.Ãóîcˆ1 “̤ñ„8fœçŽàÜtp\GEóZ¼]üö¿ý½cý ñç‡jñ…xäé)× £V6W³ƒ\î7×ø|þvï³üÃøA¢ë>ð¹­ë Ö·žY¶ó²„²}éœ1Æ{ÕÍãN‘­Ý NÔÒ+É¿wíU‘»(çµK;Ý|cð5õæ—¨¼­<^Aü œVaÀ"¼Âß¾&ë7ðøoOÐîüè™VF1Hþo½¸dcŒŒWô,¦©®f컳üá‡©Š«ì©Å¹=’Õ¿’=Uø ñâÇÆ èð´¢ñDo;|ÑÛyë\ïÉ¿e~=øº‚_³¾¢t»Ï"òÓNKÜ_0…dAꛃñÓ¹ð/ᕟ€ô)5qp·—ºÃ7›åÙc®ÔÎI<åŽqÉé_–_¶GŒÇÇ? MŠÿMŸ@Šm>âÎþ5ˆG9²Ë±IÓa @Ê…#ƒ_”â± Œx¦–û½víñwºvi6¹|·ê켫,—bóÜoüŒ³¨EsiM;¨ò¸ó'(FN«³¼–Š-žðçâ.™5ÂhÖúšÛÞ܉<‘`3·AæàIã&³>0øÅ âHuËËygµ]•KùRƒ– $g±ï\W‡~üAÕ®SÃpi“E+pÒº‘î_îàuÍ}Kñ7âžà,ö—’´F#·Áój¹Œdqšý]+Ãß?Œ¹;ÃVr¿ôMSÃþ ×õ}Z&±¶¼ò~Ê%ÊxÉ-"ƒÈq“VtOŒš>«vš Ž¥Wrþê;†ƒj»tÀ—Éõ5­%åÇÆßÞiú„’bkVYþF‚WE`8ÚýóŸ‡þ|@¸Ôáðïödоà¯#©ÆûæN˜‘ÍYDJ1›”ªhΗã‚üLºìZíäMh!3*™Rƒó ’7z×è‡ìy}vß-4MR?%âê8c‘v³ÆJɸŒ©f“œWËŸ~'Ù|<ñ,sÚÝÌÒ˜£B¶ü™v ¥Îr1õ¯¢?fé¿u›¯5åÄ÷B"X¦À1gï¨ÆÜ zq_7ÅxjU²j³›ø}ånû/ÌýÛèÛžãòŸrü&1¶&ôeÌì¹S•»·ìì“Ñ»#¸Cáÿüs±ÐtsötPHÌ$¶ù ‘ЉXgc…#vHÜ¥sž+é ^Ökí&êÊÚco$к$ªpQ™H èTó_9j–ºì¿|ûA³·ƒÍ7,r-êòÇ“œ2KȧHøà_OWæ9Æ"½g†­^W’‚Wz½zùëþgúávM“eTóü³'¢©Ñž*¤ù`¹"¹£Z =#îhãdõqIY/™¿gï øËÃÝ.±rÇJšÚ/³Zdl¶¹Y%k:ÆÏµãçXê|Gö€ñ|Y“Âöwéi¨\à ghpFUóŠÿí ‚@Î3šú7ál—pxÿÅzî ožÆKu(à t.™õÝ'#Ð÷¯—¿l¿„úçŠPÛvvàuë_DxÿÇ|:Õlãµ½‘æ†Þ8·#2\=±õ©MÔƒUt4iR¨nq¿t-_HÑu¿êpµ¦Ÿsn±Be<ÉÕ³¹TóòŽ­Žõ££ü^ÒæœéQjkí˜Òå¡ã=1æ‘ÏzÖ]bO‹ú ÝÝž¡+ºÄa’)À |ŒqÆÂF2+ç«/…¾>¸¹ÿ„u4©üæ7àùx èz¦›¥k:ýüok§Ín!O4ó&È ªœ´½Š³¦|[ÓäiK¨¬W¼´¹xFÐÙÆ<Ìd}kjÓYºø¯£ÜÞÛ_˺(Ì2E8á.0­ÇIã"¾}´øcãÉnW@K™¥rc-ƒ°¯MÛþîÞô9JJšºŒ*ÎS®ìÎÃâ§„¼L/­õ+ød SåAr’œ°á‡F®àÞ‡«iÚvµâøÞÛOš×É̲†È*ÛÝ«±ñï-¼w¦Ãoy$—6¶‘Z–€àÊÑóÆ8ÎjŒµÏÅ&êúùNÈš)c›†‡z¯ÇIî*¹)ª®W×±>Ò¤°üiÜÄÒ~,Ø4£K]Evùå¡ßxÈôÍq|+âW¾¶Ö/!’æ(—d̠ɵÉÎHC `×%gð×Ç+xºÓ&óÉÛ„ÇïyŸwn9¯wñç‹àðÖWr5͵¬víädhÆ{3ŒŸJ„åRU´Fœ±¥R.†¬æ>躭…ž­â+˜žÛNkSiA$™mÛëV4ÿŠÖ+8ÓýRlí[†€0Sœc~3øÖµ¾µuñJÂæê-BY(ÊI Ü4a††8Ûê@¯ µøuãu¹"i“K!m£ |¶ÉàïéƒÞ‡)SQTuBQ§Zr•}‡[ñ+Â~&7pj×±=ÊD¤LÉ™ ³r“† o|"Ñu+$ÕõûèÚ =ìÚiAU–bA@䕜ö®§Æ'‹áùÒí>Ù!¸´µŽÙÌ'—t6=T9ª¶šäÿì§ž=Bb`Œ¤°Ì0bYUpÏŠÑBš­Í}{º“xk5î÷2¬¾*ÚÅ7ösê “}ŸhAô>3\ŸÄ¯ x‘æƒW¹îc‰Hœ¦_anUÎ9ÚÀ‚ rQ|9ñšÏý‹Ÿ3ÌNÐUI‡@Ûúc½{ŸŽ|K‚'Ó’;¹>Õim»NLὈŽsY©J¬$«èd¡J¬}ƒ»g)ðEÔ,áÕ5»ÄhlZÔŽÁ@òòíÎ>ï\ö«:gÄëhå]9ïU%ÎÕ¡öf3×½jYëW_,g™/¦-oY"›@ã€g¯âðü>ñ‚Þtù¤‘‰PT’9 01Ž}¨r•(GØê‚1§Z¤å]ÙWÄ øŠG‚þò7¸Xÿ×ðXä?AëZ¿ 4}JÐêZýÔmœm^Î6¬’žQT»{œ~5ÔøÏ_Á1iv«vææÎÝ-ÜÂr]‡^IÁǽS±×n¾"ÚÉ2_JÍl¤K  ˆÃAŽŽ+E Xæ¾½‰ö•Å«Eõù™V?`‚Oìé/•eQpІßå¿\çÄ/xŒµ¾¡tr"ÝçùÈ/ʾ$0î+“‹À>-KÏìˆtédªÁIF¾î˜ükÙüc¯'‚ Ñ­"ºo´ØÚ­»´8˲ŽyèTtÅBr­ *ú#I(R«‡³oü¼…µÖ>X&Çýrcÿ²ÒýšïþxMÿ~›ÿ‰¯mu3çÞ`Êø]ºüü^þIþ‡³ÁÿÏÏÀèöøùóø³ÿÒþ¯¯Šê“]Y9±n 7ìò^Ânƒ–ÜBç£väö>´&èO$0€Î2ãëØÕ«„];M’Òf4¬ PAÚcêiÚ³©7Z>§ÍÊ©½tûаhÚ„ò*ºyHZGÀP>¹çÛ_ê5)®­“yÏÊvñÐÕ()‚l¢0y8?íAíWŸHºk™ ƒÈØuÈLö¬â¿uþȯ®å»sÞ«CÞKÈ>Ød,]¶±nJ·ð¡Õ‹]S3(–#`‚ÎØ Ï\óSKiZtÖ“2¼× 9«Ó'¦Iô¬ˆ Râr¨N^ÄúJ©F›©o¤­ß­ÉNN2äzõ-HZ{»&a¼ö$dþæ‘­ä½¶ûgšNæÚÛÎJ·aô=©Òè·MvðBÉÚÉ9ŒœŽõbh£Ò´‰,§}ÓÎÊYPçj¯LŸSZZ´ªMV»¯§ÞO4"£o§ÜVµÐõ'¸ 4f,퀠ùïíNÔuBuinlY†Or3Žÿg@ñɲÖãr'NÏýêûè·u$00iWåe,úŒö¬£uAýQ_UýXnÞÒõ_AÙõøÈX ûú¡íŸcëDÕdVhŒQ)ËÌø®âp}±Z2DºF-­Ã︸ەBÀ¾§§5ÊE­ÁeBFÒ 89ëƒÇÖ®j“puþ/PŒ¦ÓäÛ¦,kjº²¶±5æœì dŒœuÏZŽKyo­šõ$,r÷Ÿ¸{gØÓ®4[¶º’ðò©Ã)<ýA=F9«^DZ>—=µÃnšãnUNv('¿Lš»VjŠ´}ÝH¼#O]ÈÏ·ðî©,á#y‘ÈN§ÕuU:ēر ÆB޾õ™ ‘ÈVÞåŠÆÜ“Çlã§ZÒ›@½ûK[BQå”Ôg‚ eû—õE­×©o—Ÿ÷¯¦†­´š¥³Þ‰YÈ;[qû¤ýÓŸîž™¨`ðεpæ3•ë+ç9çð­&¶MIžÞíÕ®.vŠryíŸj÷º…ÔAw•„ñ•ÏËîG§áZN4¯n­/ø?×`Œ§(¿dôé§üSWÕjÒ]iÎØPÊH$(?4ÄÚ¥³^y¥¶°Y7œí'îóèi³èWféíâ(Ò©Ã) œÎ8"®ý”hºEͽ܊fºØ6!ݵTîùNzUµZU¦«/w_˹ ÓŒb©=t^vþµ)ZøgZ¹˜y‘ã'™[ˆñ뻥YÖµU]j[­=˜/2œd(ÆN=H¬‹Y r-nXÉÁ*zgÛÓÖµnbª;“Óð¬ kÈX­µà+`dÇáž}éÍR|ŸXÒM]2›RöV·ü†Þ½«¢jïqa!Ú¢°$nÚ1ŸÆ˜!:Õ¼—þib˜Iœ”'%Oû¤ñL¾ðåßÚŒåUÆä$AèFp1üªü6i h÷ê)¸»UAÛNIb8É­¿~ëÍU^æ¿ÕÌÔ©FœU'yiý}Æ5¿…õ»—òÄ>Td|Ò±XÎâqô­OjÑ®¸ntéIUT]ÊØÝµ@ÎG­`[ÞDXAtYSûÀçøé[ž»k¯³[ºI2ã*N ¤g®Ecjx=^…Éþñ:ï£ôép[y5ÛIoüòÆ!‰<Ó’™û§ýÓU"ð®½< ¢““)#ËÔ·ÓµnAfžÒn—RuûEÒ„X”‚QAÉ'3\Ý­ôò.ƒˆÛº±ãœ·¦*ªB“äx­%ýo¸ æÔ½†Ý¿#s_Õc·ÖDºt¬Â8Ñ©Æv®2?¥5 :í´—¢wÝÉ"ÊrS9ÃýÚMGÂ÷fèÁdé,€ ®v’1Ã'Á«PiÿðiWm¨ºý¢æ3ħqT “»·ÐVŸ¿uå‹Ü×Ónæw¤©GÙKÞÓÔăÂZýË´ܪ7VeÜîÏLV牵x¡Ö„º|…„q¬A”[`Áb}ÏJæâ¾µȼ ä·,QËï·§ÔVî¥á[Æ»ör,²ª®T¥WÀ ¯nÕ”9cFO«Òæ’½_Y}íøy°‰ˆ-e¼iؘÆÙ<ÖÎÍÝ} ¬øÑwb1U$žÜšå­/­m⸷8kž8ë·¥9Æ””+I œª7?«½Ú‰5X-u…}2}ÞTkt8Ü`œÓmâo[Í{ç>ø“l«!ÎÀ~ë} ëÅ7UðÓܬ6n²KµNÂB–C ð{qZgü"ú}ìÚ¼Š.n¢1¬jÁНRăÈàVÉ×uÜj/súêaz1£EûÚ[»9»x’ö!-X$™ýë" ˆ¶zJè|S­Gg«ÂtÉ™üˆRèÅwlž¸'¥rVÚ¥¶Ï³^,‚ÙŽ«€{íèq]©àÛ³t‘YJ’˰¥±¹O!—>Ý«((ÆŒžW§õcjŸÆÖ¥§M4'·OøI­§¾iܼ(Re”–(€Ùþîx¬køšæQm©xó²< ¾»³Œbº3J_ iš„ÚÌŠ.nà1GmÅW9flp=«‹´Õ­~ÍtްâW }½ :ŠœãMâ´–¿ÖÄÓ•KÏØl¶Óòîv>,Ö`Ó5;a¦NÏä@‘ŠîÙÁl÷Í6Ô7Š­e»æÄ˜•$9žéžµµàË©nR; ICåbºU—<{ZZ>|#a{w­:-ÍÄ4‰X3(=YˆíØ Ù:þÝ©/wþè¬<]9{Ý;œ|>ñMÌ«„¡?ë‰V}ý1Žpy®£Å:Å®“¨ZçNÒ½´ älØ0NGlô®JÇ_Ù®b‘m˜Å‚Líèk¤Ö|4÷0*T•ÌjÁX…ó†U”Ÿn¬`¡RxMY¤Ûö±úËÓ[v'µ‘|_÷/s h#+4r¶v+ô`{ŒõÎÛøÅ—r­­½¡e~<Ð@‹¥óÇã]†‰¡?ƒ¬ouzXÒâæÙáŽ!˜)e,σŽ1\UŸˆ­ãO²O¿fo¼Êçp¸éúUMS” ñzKúþº ¨¥?«»Ç§üµñŽ·k£êV‰¦ÌÒÉon‘Û»`¶} „‡ÆpÍ9¹I "HÛ°­ÀpxÈ«ëž šê{uÒ¥ŽY¼•*¬vŒŒ£)Ã>…r“<‰"ÛD±?*Fz0èA­x>çÁ?kñˆäŽ)d¶’¡V Ç~7;c hmËopÇ÷ ‡77¿úß±çpü1ñ³Ì,¬¬uc…ž2<’¿Þßœõ¯Hñ–³iá1¥iö×iì­ÖÂܹ_¼Aâ¼ú×Ç–°HmÚÞGµfùÙd!ˆõÛÒºßx]],çÑ'W“É ÊBù‘± 0OäVpä9}WVk9MÕ‚Åh¿à6«ÿ ôR‡šhç·‰™âvÜ<¶ãrž¼µÀCðÇÆÍ8¶±±{”c:2˜ˆõ/ž=Á¯Fð_„îü ö¯x™’ÝâŠpïó}æb8À+€´øom#À¶²=¡?1Y ±^¹ ÷xô4O’Tãõ—g¨¡)ÆsŽXÿ^hô_kV>³Ò´»iÚââÂè[Ørß7 ð}ç'¹ñ7Š8fki`‚ÙX;1“¶’qÍkÍWÛòý“Pú½ïïÝþ}0ágŽèYiÖMs“åÎ…|¦R~ñ|ð=s^Ÿã]bËÁZ~¥ÛÜ›‹>ϺÁw±Ü:¨Î3^uiñÒÚâKXíäk=ä1I ’Rîšì|SðýõÛk ôIÒVhüØUÈA,2€ à:ž¢¢*„žVkSžS‡Ö´_ð=M \ÿ…€’&š;›hË<26àÑt.‡¹ÅyÊ|.ñ¨¸û%…ƒÝG!;'B¾QSЗÏÊëšôßø2÷ÁWw#ñL‰ žL‘Á¸fbã˜6Ò¼êÓâ%µ¥Ã[Ak#Ú;ÜHUˆÕ~ïáŠ%É(Eâ´a8Ô’ÂêFñž«cà/GÒ>ÒÓÜX@c&à¶rB°êN)<=¯ÂÁy!’y£»‚&Á3 !Ù¨ÎHª%ø~þ ²Óï¼?s—Í€Hvy‘¿QèOV¯€¼¨ø#P“Äþ+•-Ù ’(-ÕÃÈÍ Æã· (­J²­Ê—ºdý‚ æß¿¯ßèy„ ül.E¶“b÷±».â" LBÇ_›„ñžÕ†ýj#ìã <3»4¨êJqX­õæÍ ø‚?ˆ2¼3KÕ< ªÉ⯘íÝ"‘"4#¹m¤ð5¥êûUð™Zƒ¡)7ïëýXòù>øî+Ãm¤ií}±h爩ƒâlðG|×­xÃVÓ¾xWDÐÖäÍs¦ÄcÝ }éKe 3ÂçæKñ2ÞÒú[{[9dµÜC²ÊPŸR£§Ó5Üx³á×ü%:&›¨xvéʦâÔJB #~¨O@êx÷¨‡$a/«êÍ*:’”'Eÿ¹á?/ÄIÞ$ž;»TiM¼­¼I3F}GR+Ì$øGã¸ïÞÛG°{ûwbb¸‹7F$‚ÌHÛÇ\ô¯Sømà [Àº¹ñgŠÞ+y"†XíàW#¼‹´±ÚH yÙø›mg©Ëoeg,¶»ÈyBŒNy*:Äb‰(¸ÅÖzŽñ©%„Õ—âÍNËá¿…tM[ƒqw`…·nZBw ÝW8¦xSÅ©ño±M,ðÞ[¡u†WÞ² êPÿxz£âÏ'‹t=6ÿÃw)#H öâc·ÍFá—=ƒÇ½hü0øg­ø;Ä+âŸâGK{t`òË#©\á8Û­W5Oieð™Â•*”šzͿǵ(Ÿá¢¿h´‹½†I E<$ œåŽ~\wÎkÖ¼Q{aðÛÁú&=ÉžêÄ:·ÙÎG™#n*¬; õ¯Iøuð£â·Œu©bƒC›JÓ76û«ç’×ýsnæ×nï^Ǫ~ÄV"û(Öué#KwfÄ1Ä68ÜÍÇmx8®"Èò÷(K¹»+¿É4~¹Ã¾ø³ÅÔ)b²üšj“ÚSq¤ŸŸï%ךNúÚögÊñbüI»SËs õºVÞfܲƠï(xù”sŠòù¾xñoÞÓBÓäÔ šF1M1è䜂;æ¿U¼û&ü%ð£µoÅíí¾í²ÜJq–R¤ì@«Ð÷Í{þá¯xz#B²†Ñz‘*äû2kç±|{€Qµ R›]]¢¿Wø¶pïÐãŒkÔUsìÊŽ×PR«?Oùwò”¾gçv•ðâl>Ñü?¥Ù9¸ÓÑŒ’3ˆT4‡%C> QŸá½ Kýü}â5†oß}GÊîÒg9ݵx“¯Š¨¡»“I}ïCBŠÄ²ÖâÔo ½œ2´J2geÛ>‹»ý@ÅXÕ5­D€\ë7pÚFx <‹çêÄ ¹Ð­Nj”ãgÛ¯Üqá3Œ¯„–? ^2¥×=ýÝ7j[5Ó™6¯u{¦:+ç|tŠK& ˜&¼‘Ûβ$±ÊÑ6ÖPÀ…SèIoqœŠá´OŸ­åk¿iöÚu¨]¹šãí3Í'EòÖ%Š4\õù+èhpŽ{^*Q¥dûµý[‹çIorlEL-lÅÎPm5 szÅÙ¥î­oÞÉ­SgØ2ÜÛÁþºE_©°uoÇa¥6­§@ú‚.Ô¼J£K<®ŠîsÅ~Wx“ö¹ñAñMÈÓí’BŒcšhR8œíùHWÚ\ãuGã} ïãƒ4ýbÇV–iF–ÛíÒ³a€Úñ3v‘Øô¯{ Àu¥ת®·µßËìýüß#ñ¼ûé•S©R&]RPwQrp¦÷V—3uV×¼]-þÑõ±ñ«TñˆaÒluë=>ó.`³Óe[Ñ&Ñ’²Ë±P6:Ms¾+ø×ñWWðìžµð¿öÔ¬PÛê³´k½òÄ…p¸d0+ç/†?|Cá/[øÃÆm½“Hƒ«É3à… < õ&¹[㾕⛫="ÆKÄóXJþi-편÷¯®¥Ã™M:4á^’nF•ŸÞµ6ÏælËDZ9ž3–cçb"ÕHJN¬ZjÏÝ©ÍNÛ:P§e¢>ƒñ¯ÄmSÁ?,—Æomq¬+¸‘M •ÎB+H_æï+„ðÅ+ˆ:üV 5݆§3[ƒ&]œ•R¸ÚätUø"Ãâ_,uoÜù?i”Ín.Ž‘Ù!ö9èj?…üCáZxׯf+K}9Ì‘F²+¼²í*Šè¼òM{ðôh§N”çýv?/ÇçÙ¾kUc3,T¥R.éÞÍ>ú[ÞëÍ»{»žâ„>›Å7º¦‰i6±ôí2O Ûœò²å²=Ízî¬Ö~éÚV»q›Ëiši¬²œˆTŽ2;×›kßíô¯^Yé2Ý •„ïæ˜Æâz.:ãÞ»xÃâwÃû=G×A|ùÅÅ·Ú‘2²C!è¡­,néž]IÔªÔ±w}_›%ðWƾ%ß'‡îžæÎí~h#šMÉ6ÎJç³c¥y—ˆ¾ xàxŽî÷ú|ºµÜ¦H¤ƒk[ªÈ2 •=ëÐ~|ñ…¼Umâï466ö ½dWyd(_áÏzæ¼Gñ†ßIñu宓`÷j&a4‚CÉêÇ­;¦—´%^2j‰èÚ—Ù~|*³ÒuëŒßG;M$p6æY$é°ã#½dø#âl?µ8¼9q%Õëe­Rgßåy)ž0ätÏ\SµÿØüNø{o¨øjè@.&ó!'%N#€yàÖÃOƒ>#ðß‹,ü_ã—†ÊÏM”L¨²+I4ŠTP¿Âs’M?{ŸÝ¡(7=ÎÄ_|wÿ %åÿ‡lŸR·»˜È’@U™XžR@NT©¯_Ô ´ø;ð’ÏIñ,ø½K©neŽÜRIq¶%aÆpq^yâOŒÖÚgŒ/-´› nÈ•„ÍæÆIåW•Öø‹ÁšgŇvÚŸ‡.DyüÈÉÆÙâááÍOzZ$ÜwœšŠª´àߊPüGÔaðÕÛ]XÝ6ÜNû£›hÎÌöcÚ¼ÓÄ_|m‰ou/ ØËª[^LdŽH6³+7T s×µw ¾ ø“þ'´ñOZ+M>E™Udòº•Si8õÍsþ"øÇm¤x¾òÓH±’ì‰gq!ŒdõUÇR=M7²çÃ;QÔô ˆmþ|'ƒOñDá/Ë\É ¹£i8XÔŽ7q“Š¡à¯Šq|I¾‡Â÷mwes)ÿEYŸts2Œì=Õˆéšn¹àý/â§ÃØ5Ü›2o2!tp#™8hØúžÆ©ü6ø-âx²ÏÅ~30ÙÙiò,ßëÞWLíU îzúQy&»,%9îpž+ø1ã“â‹ÍKö2j¶÷“oVƒ ñ·t ãÔ×°I ¾A¤x¢àGz·Owg§±‚~(Çñ/S‡Â÷ uerä›a<›£•—‡Ñˆé^}âïƒ7_jÞ±—T·½—Ì ÖxÜðÑȤ‚¸ìzWiðÛ࿊<;âË?xÕ¡±³Ó¥Y”,ŠÒJéªìIç5‘ãŒphž5¾±Ñl¤¼e—÷ì$1¨fäªã“Ç­8®a­%jg{%´~¥‡Š'Þ-É»–(˜1ß#Ö/‚þ)Áñ#Q‡Â×Íwapøû/žû£•ºí?Ýfíêjαá]/â×ԿЮ iœ: ŸùeqÞŽF÷ dü<ø'âÄö~#ñ³Ãee§È’’%Wy] ›{ŽM;¾d£°­7-ÎGÆ_\&Pû¹à¶+æ*qžM%Z8i9ÊæÑi÷ùu¾ÚõÐýkà7Ò©€«›ÒŽž"¢§ïÉs&Û_ ½Û·¸“÷›ŽÑ|ÇÆñé°|øFm¼ap!»{¯µI L¢,XÁÆØÏ…ோöß/¡ð¶¤×š|Ó0í;îŽF¿º[µ}ûc|6ðw‰µ‹/×–¶÷ÓºIt‘¹x¢½_›þ¬È%{}ã÷«åÿü ñV™â;]{Æ •…”‰)"Ev‘ä,`s‚{šú ·ý£€¥Ž§4žëúèú­OÍ8«‡§ÂüEáÜUhÔ• ¸óGgmŸ“î¾ËºÖÇ;ã_‚Þ5>.¾Ö¼7g&©äƒ ñIУ© ž‡¦+Õ¬ôØþü#šÜ-½Ô÷bîX¢`íÛµS#Ǹ®'Ç?-t?ÝÙè¶r^M¼ùÄHbQ»øxëø×E¨è'Åφó_i3½¡–`›n|›ˆùØÄuVƒ]¶Z´|ýç$£-ˆ<ñ†ßâ&£„nÍÝ„·,ѧ“|2¿ð£ÿwwAïX¾>ý>)Âw¬ßhZTÚE\ÅC-¾Ý †V`H9 ¥s‘ÏNkèßÙOö4Ô5­]|sñN7¶²Óæ‚}=-äŒ­ÓÆÌX³ ¸YWŽ g®ªµG~/øâUÿÄ?è“C‹xt¿·Y‡‹Z ãiHÎíÐÊ¿1ùHqÅ|¼øŠ•lÚYFQr‚|ͽ®­g¯U.ÎÝš?]Ãø[‹Ëø&çÔjªu§Nãy:VŸ=I^>âÒ§v”áͲ”f}©û/þΉð·vÞ ¹‡W:…ÌwЃo“´‡k–Û' œt= ë_Gø³Æþð&˜úÏŒµ;m2Ú5,^âEL…ê–>A$ðkç½wö¢ð×gíâ׋6ɨëZu¼öö°=Ì‘+23µÎÄ|£±8ñÅóüPøýñ_‰&EóÚª@Ž(ü™8Qù“’I$šüÛÃÙ·f5±Ù¤ùbœ­»Ž–ŠÑim]­~Üþ®âoø'Á>ÀðïáÕZÓ‚œi¹?r5/QN¬›”®Ü›Œ/{=ã[ýeûVþÙ~,øµð'Àˆï-4t5ÅüE¢¹¸d9UPh¢ÈÝÉ Ügh‚eÑÀ™è2;â½Á¼¡|Pøo6¥£Êm^Yl.9ò§Nv³ªÃ¡¯Ö²Ì›”á>§ƒ…—^­ú¾¿—MâN.ãŽ%ãléçÙþ!ʦœ©i%²„oî¥÷·«m¶Ïoø5ÿ2¼Òü%¦øSâ>‹u«jÑH!mAeDó¢$áÙJÞ¨Âã8r2YI¯Ÿ~*|AøùûB]ÙÿÂMêvÖRHöñYÛÆK´:ÛNÀFæ?SÅrÞý›üQm¬Câ¯"ÊÆÝ’I%«™6ó¶0½sïŽ+OÅ>Ó¼!ã+‹ ÆK©“\?–ªA‘ßkŸÃy6_‹–; A)·{ïkßáþ]úz¶â·q6KG‡³ŒÊS¡£Ë¢çK–ÞÑ«:8¦œùõݶzÖ‡¤„§×W—Ky,(ÁŒT"©ÇGcÎ+Ð~0Úxþhü-~nôñ9Ùo4Ϻ)ýÕaü9è+¤—ú/Ɔ—Tïgö™DR-ÁÉ‚æ"C‘ÕXg¹?üñu¦·k©x½­ìôû9WJ¬Òl`@Œ/?1ñ^÷½Ì’?:I{ÜÛšQüJý£¾jW¶? u n4É‹•´`'KYŸ‰1¼HÈ+’N3Íy/ÄOülñ®ƒ-ÇÅßÞ]Gíhd Ó÷1m‹>Ÿ-vÿ>$iš¯-4»)/n7n˜‡òÕä ŽøÅmAàüWøwwu¥ÊÖRK ‰Öäçɸ_˜n#ø±®–eË,\hÇÚ?µÊ¯[\ú œWÅr¨dµs ¯ eOÚK’ݹoktJÚ-´>Xðu–“¯ßC¥\,¶¿h!b•ñ°±áCzdñ]÷ˆ?gÿG©É¢Ù½ôN²Eƒ$N:†BAÁìkÖ<û:ø¶Û[¶¼ñ[ÛÙiÖ®’K0‘Xº£dÂòw:â´¾'|^Ó4/\ÚèvR^\1 'ÎcTSÐÉ&»yRäx=}êý’|[iû0üDûwÄ™VÂÇ]ì×Dœ‹l•0É&:|à ýÕbOJýÍÓ5M7Z±SÒ'ŽêÚe Ñ0xÝHÈduÈ`}AÅ;~$ÐôŸ‰¾ºÖô²öÌ$Ì“Æ)ñ¸|ê8äýZý€âµÓÿg;Ãíu׺|·ÜE1︖T ˹ƒîÜ£@$àcòŸ²Z1„sºMó6¢Õ´ÙÙùmo=>ÙÿE~>ÇÏWì\bé(ε97i'xóA/´ÜôÕZMÝ=;’ æ“tlçî‡@nưþ$|ñ…çŒg×¼;hú‚Lª“GHdPT†RAÚz‚* þÏþ2·Öín¼Q%µžŸfÈòN%WÜç…ç“Ó5³ñW㟇üu4:=¤··|HcT_áäsŸZýuïŸË‰rÊôΛÃøMð»U¸ñ¼¢ÒêúD¸{pÁžŒ`ÇØöë\o‡þ5iÞ4‘†Xน÷FY¸PãøC}H®’ßMÒ~/ü;Ô.,¥{'›\G1ÝäN0Tîþ$>µçìÿã8o ›ÄÏog§[2<—j¸uƒS’ÍŒ ã]Ýr‚Qןsì_ØßáOŠlhÝcân"Óm´Ö³¹Ìîɶ,z|žfG õ¯ÖZü ñ/íâ…ZW‰¾xFÌ´šÞéRò9Zí$–4z²‚IØ€Œ`†äýwýžþ%è_>h¾+ÐïZüýš+{©$H.¢E,€ÿîIää5øwåù‚Ìešâ •6ÔcnÉ^ïÕß}tì¡_F~)áypÅ. Ëk9bcVª¥§½)¸¸Á=Ôb Û×½wfÚ=…-m£îcVI1½À›'©Àõ©ê «¨,­d½ºm‘B¥Ý½FIü~|~ÿ‚‘xûÅ÷wø3lÚ˜áÞ> ìªxܧ•€Ón\u ó6E˜çÕ<Ò6¼›Ñvóé¢Gëü}âO øi—ßMóTæä§yÍ«9[d’m^RikÕè~~Ð_µßÁÿò3Xÿ‰Î·l|Õ±¶*Ím 4²"%X€9l»ƒšüÊñÿí½â_×ðønÿO‹@Òd024¨ý‹NÊz”UパšùƒÂžOè·ºƒÌé;6'iIb$~C±äÇ©¯Dð—ìßã}ÖÞÚÓOæ–ëÌVØ9>àWìù'åyK§YÇž¢ûO£ò[/ÅùŸÀ|ãÏqÇÖ0¨°ØJ›Ò…®×Nz–æ“¶é8Åÿ.†‹þ øÆóÄ]Ð-_PÝÅ,Q`˯B‘”n Šõ¿øfïá_Ã=nëÇr-•Æ¢ñÍän ðÅ ‘¹Àû¬ÄŒ æþ(|[Ó¼3ã&¶Ñ­d»¸(§Ìa#¸Žrz×[áÏ^Õ¦Ñm®ã™—ì×Q•iŒ2½d  îŒàî=»××JtéEÎnÞ§ã¨bqrT0ôÜ›è“oîZœ?†¾7Øx¦æ/ ê {cmrDQ\»æ0XáK¯e'½füNø;âÍCÅÏâ-Øê¡H'‚,4±IÚq•oQLðìãã›fÒßWkh¬"tßp’+oPÄQóÇgšúOÄ:/‰õ¯Š©¥Xi÷½Þq¬¤ÍÂý–Õ)H%¤,`pFàÝ1Xb1xl-7<]Ek¯–»u;²Ì‹5ͱ¡“á¥Q¶–‰Úí¤¯-–­+¶–§ð»áç‰<)à­VßT¶•µ=Wc-Œ f.å#îcÀ¯?ð÷Æëo^§…õ1{am)%į•£ÌN˻޾üø_­xW@ð‡‡>>xÙ­´«¸Ì:Ü—WE¥VgI°G"—BŸ3 qŠüåÓþë—~(ï†ÛBŠv+s$ŠI€HJáT“¸¦8õ® »5žcˆ«tíéwkó'%(É+Ù«&—fž›KÅ|C†2ÜlV)N½kÉÆ)¨:R…9Ò©NRQsŒ¹§;$§M¥}Ëß~ øÂûÅ_Û^¶m@ùK ñE†–7^„)ÆUºäVbxSð€õMOÆ#ìWWám‰HãŒpîᘞs]—Åï‹vñˆM"ÖK¹Äk´(`G<Ц‹¢üWðF¥{nd³¸7PÊÛÌNü£«g”8öÅ{—^çÂ^j ûª±?Åø£ðN¼šêêúóKw±º¸»B¬ò.$P–.97“’A$W°ümðÏÄ„ž$ðN›ó]ßió$)2í& I Πœc5ñìk¯ü0ý˜µmcÃVÒêÚ¥µñI¬bÑÈ#uye·U„­k&v¯Þ1®$“÷wˆü#ªë^×4KÇ´[–iCI!ÚËÄñ¸‡%Œn ô+œç¯óžqF8!¯Z‹åQ©&½cil¶M´—NÛ3ýPàL¯x_—àqÐugS J5,Þ´ê^“jrº”ãÊRWrºÖÜÉŸ”?³ìÑñ T²Ö,¼Go&—öÉ£‚àIÃB±Îäy¤•{qž+õ;áïÃMág„Î¥™ïåBÒ¼¬ÀM3),‹œªð>P ëÔר’ÉàWÈ¿l¿‡?ôíÿIÙâ1­%Ä‘)Ъ$*U]?+Ì~£FJí=ùŽŸqmhàpÔí =ÈìÚMêôìÚZ-:µsç8_Ão ¼ÀUâßd¥zõ½ÊQ…¡{k(Å´›÷ÚŒ¹OdøÝñ+IøYð×Vñ}ôkw5”*Öö¸ Ò\;bÝvõÁg=‚“Ú¿ |c­Çg®xûâEÛ5þ­ûÉfß+`îiÓ=d~Ð?´n³ñ«Çö~)Ô¬>Ë$0[}šËýÛ;—$ŒòÒ6ÜçŒ÷®ÃÁ:^‰ñ'Â:œ ÒYN‘ˆ®£îÙ¿îH§ºçŒv¯Ó87‡G„”ñÅ›ò·Ù¿­Û}tì#øëâ¤|HÏiÑÊ®°x{¨n¹ÛzÔi¤ÕÕ’M]Y»ûÍü;ñ·IÔ]4 ÷¾²°˜ùbì¾TàOîççR|Oø=â»ÏÇ«èBHáXf‚2 ŠG*è­ÊÀçŠÃÒ¿goNëg©Kko§‡¼óT§—ÎJ¨ù‰#¶+¾ø»ñGKÐ|[èöò]Ü,(¨7ìÄH‚íÉÉǯ²iµïŸ†YFIÒ.øÂZ—Ãkz§€°›QD °.‘ÃóGö¸Ÿüo±Õ¦O]5íµŒÄF—%òƒ'OEϽuþ“Gøµá YœÉg(ˆAyæó1ʧºî=ëÎ4oÙãÆíq µü–ÑéèFûÏ5LeÉ*¿{$v"›º·.Â匜MÍωß¼U¨ëñëGP’8D3ÁU+ʺ©#r¸ô¯Xø o¬ü ²¿ñ‡‹Ûû=î¼¥kF*_ȉ·;¸çia;×ñân™áïAo¤@÷“¬J# åƃnæ#ž{ ŸÃ·:GÅ_ jN<Û9ãʺ‰Ï™´?Ü‘[©PzŠÆµ šSÃÖWRZ£ÐÊ3ŒÓ"ÇÐÎ2ª®ZRRŒâÚi¯Nû>éµ±öÄOŒÞÒ|m¤xF+[¥O­»Ã©Æ­dYÕ¢ä磮H¨Í}Kd—ÙÅÛo•QC°îÀr:ðáΛãoÙ÷Jð-ôùšÚÆ‚í/ounRXX`Œ>R%8'“^ƒðçÆšwŠôù­b»[‹Ë&Ù:à+Œçk• > qÔ•ø¶aAOý’ÖŒ¹'}_Uy--nŽÖÜÿW¸+7©†âÊo0« ÖŠÄáùcÊ£*ÔšOßšuHÍ.iÅÍËX¶ù 4ý;À¿.ü[}r1â˜mm,`¬–Å—q=0C¨òk¥øËi¥Üü7Õ%Õ¥kx­â2‰”caÀn:žGq\ßÇ ]ëzvŸªé­å\ÙO„uVWKã]2Oˆ¿¯ôÈ$XÛVÓ˜o_™A’<œzŠÖ6K.Ìá+;¨ÉßnYYä–û>¿=JœsÀ8ª<ÔÝ9W£ó,E*¶þkb9¥Ý9¤´Jß”_~xªû[ƒWÑ"þÐ1Û¬ÃS&>òÊ€‘¹zé~x/Tø{á½g^ñ§ú—¶â(­Ù“bÅÝAã³P|Xø‹£xo_¶µÑâ’òhí£Ž<1A±hf>ø< ŸÃwZ?ÅMS2lîc‡eÌr¶ðªü,ˆzPkö¤¡Ïu¹þP^§²å ÇélîœiM{„‡`¹•POÞ+ÇËê3RüGøSâ;ýVSÃéý¢ÑÂ⌂åz¬‘©?2‘éX:ìûã™®Ög´[$äÞy«ålîBýìàtÇZìþ(øóHðž±e§é1Éy-½¼qGólÊF ÄóŠ.ܪ[åŒÓÃî^øoàÍ[Àz.±â/¨ÓÚòØA »°óv†ÞÒ²º8gÞ¹ +ãE‹±Ñ® ìV v›€üxÜSû½ëªð½ö‘ñ?HÔ–o6Îæ+}·1»yƒË“ HÔ€zƒøWžXþÏþ6™ÖÍä´X ÞTǰõ8ûÙÇlPܣʩl(ªs”}Ñ|JøSâKýRÞÿFO·Ë")bŒæB¤îŽDRFå`yÅoü8ðv«àMX×<`‚ů-ü˜­å`$*§s;.xµ/Å¿ˆO‡õ‹+]&7ºšÞÞ8¢Š|ˆ6ofëócŒv¨|+y§|MÑõ&¸ZÏnQ›ÌýÛð$ByÀ=E;SUž¤óUökÝýOKøËm,ŸØî÷‘Ø1Ùö…“ ~öÏîóëW>!|/ñö£m¢ ¿–(‚ɼ«r² $nuÅsö?|i,±Z–¶û¦óÍQ—ýì}+¸ø¡ãm'Ãú……žŽtööë Xm¹T,ǯ'¥$äàÝrÚŒ*Eáudß ü«øJÕ|CãþÏkËSo¼Œ<Ö\†iA$Û5Çéß,ÞQ£ÜÉw ƒŸhWÎMÛ;¯ã]O….ôωZu÷š²ZÝA.›x1·Ê$C׃ÔW§| ñ´Ò‹T{_°ãþ>ÚUòÂz‘÷¿ På4¢©l%ìç9"Ø_‰–·0[·ÚbfÞ OòùˆÇ“´žERTÕVÖä¹Öú¿+^éÉéí‹ "F¼KvyÊÿtâÙý߯®xûáž½©^[j(í ALq‘½‘¹G@O ÷®~ÃàgŒ]…¤mllú}«Í]=HûÙÇjí¾%ø»HðÝÖc¤«Þ½­ªD„ ª $sÉý*o)BK¢/ÜU"ðîïúþ·$øyàÝSÁvº—ˆ|^ŸÙâ[SoãÍ|à–)“€;f¹7â¼ ãL”Ý¥‹6Ö¢ç vzJê<3y¦üB³¼Žmö·–ð“,lÅÔÆÜByùOc\M§ÁOJë¡¶k^?ÒŒŠ&zNr;ŒPÜãªy'RO£6ÃçÚ½¤JGšûÈ%ÙGEP8>µÄOé]3FÒ÷^;t‚2§`o/‚Äõëң𾡧øúÔ•e·»·šhÙ‹†…¾VhØóò’2 ZT•ký¢êý]§ð÷ëoëÈætÿбFßÙ¡®ÅŽJ´ÈçнÅhxßáÞ³¨Okw£¶Ë\ƘÞñ¾%Œ3‘ÔEaÙüñlØ·²ky-{]y€"¯©îÎ;b»?ˆþ+Ò/¤7lB7Iò² $gÜ Ôøyá-[Ÿmñ?Š£k Ö²[A¸H\d±NʽsKñ ÄZW‡£ÒôÍ77me Áûz¶}3Tü/{eãĹYHo-¡fxÙ‹‡‡Ì„ó•ÎHªJ·º~÷asVxv¥ð÷¶»úœ½‡Ä¨íÛû4Iuö<íicsÀõ ÜV¯‹¼ª_}’m‹çD.ª§™"™<õ9ê+ ßáЦa“[ÉlIÅÉ•B=Øž=1]wÄ wHðìZ>•§–ºû ¿‘/ÊrÙã=).yB_ZÑ?g±XWvïù~ž‡ž:Çü‚.ÿïØÿâ©á^øëþ÷ÀÿâªÏü,ËþöŸúîÔÂ̾ÿŸFÿ¿íþðÎþïøO67ù¯¼ÿÓþõ Ós¨ÉxŠ>onÞ•j++[›3sþ¯cby =½iÓé±%ãÚ™R7BAßœ7¡ }ÄÖvz{XÛ?$ŒÜ0:ëJÓUg*Ö¶¿yêsG’1§~Ÿpë}&4+s{sÛƒÉWË6=±>õFþø]_ÉpŽyôíU`hÑÕn¾hÛ‘Õ}ÅkͧD·’[yËŠpCô#±T¥í(Û ­ª¾ºŽü³÷Ýô"‚ÎÚæÊK®c1°Y@ä.îTèjÅ®“en.®¡)ÉemÅ€ìj[‰,¬4æ²¶“Ï’VV•À!p¼*\V=´‘´¡.4LpxÁî*¤è©SU•åúù“ïÊiÙ~…J÷íºœ·±¦Ó#ƒéÛŠ±¥½ÅƒÞ±ÚQÂISÐãÓÖ¤¸ÓaŽö[C2Å,g?F\ðr:dv§M5–Ÿ§½³‰Ød/ÍREZNµ¹uq´cOËî 4a5íÄI òJ¶æ`;*õæªjWÿjÔdºJîõ죥TµtIR;• À ÏcíšÖ»Ò`ŽííüôŠD8müŽ@¨ªaÿÙUµ^·÷gz®ú ‚ÖÞêÂK³”hʬ£Ý{â0›R»…-ú’¹ØDäÓå–ÓMÓ$Ó­äûD³2™X}ТêkÞæ4 ¥ ‡ï`Àg’:óW7F. ²¼­øß¨{òRqm/N–éø—µ«åÔ5Ioc] ‘€{.0¿¦)ðZZÞXIw“FUdäÇ ØôÏZ±y¤EãÙ<êŽØu<öÅI$ö:N•.i/Ú%”ÊÀap¼…ç“ÍZOm9V·.¤¹G’0¥å÷Aáôùnon¡ýÙ[,Àv ×&«k:„wš›ÏmN1»Ðp?J¥Ìi8ûB‡GÀb2 m_èöéxÖ¾x‰ÓûýHàägò¨V°ŠÚ«÷+XÔ½WÓM4± ¥­­õ„—$”x°$Ç èÀ:tÿ}wy[õgWË@\g8üªi$±Ó4Él-¤Í9_1Ç òzæ°¢»Hd q’,üËßÞôæè§×W—ü¢J¤”œ$íéÓæ_Öu(îuW¹v‚ÐÝpãVì`µ¾Óå»q°ÀTH;aÏÊÃñ5.££Y-ëZ¥ÂÆëÑŸî¸#!³Î85#Éa¥iY[Kö‰® yŒ£ ª§ òrNkEŠ´Ý[rëèG4\#[é÷­¼8®ëqyyn¶ùÉu|¶=õ¨5ÝN+ÍFK›`Uz.sÐ åúÖ|1A(H¯8np{ƒí[ÚŽ…f—gö‘‹‚ çk)Á#8=+(ZtÕµ_Ò)Þ5/UÝÛOM?àXZÚßéó]ÊJ¼$ þët`>½i ð¼ŒÂk«¸ØrÎ+è®jÞí?FÒf³¶—í7mÞë÷QGaýk›µ½Ž)À¸ŒÎC#±SÁ«š¶ƒ§5؆•™Ôˬ¬29‚;Ó‘t¿è÷VÐÜ »«” 왈p9$óZ(Ööò•Krþí!ìc7¾Ÿw_‘Bß ?ï®/í’Óø¤ó>}½ð˜Îìv¤ñN±ouª²Æ‘¢!oî  2;p3XvºšÀãí1,ÐÿÔ{¹®·[ðî˜nÒÞ ‘ìW¤û¯ ®HÉ 5Q}MYéê\›…dë»ïnÝ;´‹{ bÊæk„1Él É·ÈÜîZe·‚ÞvMl-x-!ÇýsëœV”'KðÖw7êæåb€ìDSœ{“Ö¸ëmQ¡p·$‡F^vúç®iÏØ¥Š^÷—ê(º³s•eúy~†ÿе‹kUdÓAÙkëµF¦¬h–öZíµÓÌž\ÖèP¹ÃFxÜ= úUÍgÃZa¼ŽÞ;¥·¢²y™ÚÈÃ+ÈäšÌi~ÒoaK•¼»¹kÁÙÙ<’OzÕ*ÿXn§Áÿï3æ‡Õã 7¿OO>†5·‚ð­Ëj6‰dØÝ/˜7…TNHàäœs^g®M%„òñ•çÐŽôçìÔ`±KÞ×óê(ûYNr Ý´¶Ÿ•üö:ëVrêP&”7¤0ˆÐ·*ŒG­[ðüV!µº7ÅqoçÛ¯àžz2š·â éoqAt¶ÒIxš@Jº0GB:t«u¾“á2õ~Ò···Q”o(ˆHÉêMkûõˆn_á±5?«Æ4oÍó0m¾µÁY¿´lÅ–A30àÂÇ®iËÙ¨Ab–¾_¨—µr›Ã».—ý³Ç:õšj¶úJîKxV8Ëñ”\$zðN*υůŠmîÒò#ðG¹ög B@õRsW|Eámò[Aȵw…d…¥û®ŽPÄrä ³£XhÞÓo]®Öòöx¶vFƒ’rz–­­Yb//€Ëž›Ã¨Ó¿7NûÿÜݟÃk‹—ûD:…§ØY^@/lÆyÎ?ZÒñψ,#»´´Ð×Ì[hV(Ýûªq’=Mqv~$½Ž_õ1=¹á¢e¯×®qÒ½Ä~ÑïZÐY\ fš%’ ;Yœ62Aµœ9%Nkµþ¶*Nq«‰Õ[•<,Ö¾)Žæøö][Dd;OË$]÷—5ŸkðÆæö]öÚ•šØç™^PTö1õÝŽÕÔhz~à‹Ù^í/u ˆZ0!ÎÈ¢êß1êÍŠó+Ojóïhb{pra*9\ò3×8éDýš„+âþ·=¤å'…zt¿èw>?ñ¬ÖšŽÒŠ~»€Hõ'57ƒ§´ñR]A}ŽîÞ!~Y!èØá‡QZ'ðv©%‰·¹¾|I=¼’‚U£gk㜩à·áí3CðõÌ×I{¨\BÑvGSÉ“Zò×úÇ3øC.j_Uåù¿ÎJÏá]ÍÔ¢{}JÏìYÉ™¤Ãª‘ÎbëžÕ¯ñ ĺu„–f€žlv°Ñßœªñ¸Ž:šóÛ_j0Oæ4=¶îbeê¿ïuÎ:ôßx7CÕⳞÎémh–XL •*ÿÂÄzjÊ<’§'…ÜÒ§ÒS›Â½?«ÚçãíJÒOÒ<:4Vp,1;ñ•L‚Äpy<âŸàÛû_›‹-F—PÂÒƒ!eˆ|² ºÀæ¯ø—º¿…åרüøkv—,¥ª9åXc5wÚà;kÍFâñ/5 x‘adQœlž¤Šµ¾Úïá1ç£õv•ùþw¹È[|(»»ô JÏì[¿ÖË YÚ©5±ñ Ä~¤èjn>ÍŠ7a€Bõl{œâ¼ö߯º¼w_h‚Þmœ˜™G+îÜתx£Âz¹i§]A?ØšxD°4€•+';Œ†¢Žœ¾­¿õ±¤ùãVîµüŒÿêÞ/’æËT„%ͼ-"´dáÓ£‚;œÖe·ÂKË©wi:ŸØóþºIB:/|ÇÔ‘í]‡…t=#ÀÝßÝÞ¥æ¡4-¬ …Þ%ˆä‘Ò¼’ßÇZÄwkX!kbÇ0ºƒ¼}zäÖ‰8(Eb·UINO ²·ôGø‰âm/E·Ó4O´-œ(¤q÷‚ž\öAOð¢ž2–âÃP‹mõ¼-<{2X€Ã¦ á€9¯xŸÂ×ôý2úÚãìmsžÙå­÷‘±ÈÁèqVü é^[­J{ĿԦ…â‰a¤HÜ»z’iûßk£÷LïKØrý½}wûŽ*„wwRyšn¥d¶E³æK(I#Rx RGµmüDñ™ Ùiz/‡‡ž¶ùQ;ô!OÌä{“ÅyÍ·Žµu»óí`‰­rq¨;“<ŒõÉìkÖüMàÿø‡KÓ/m'&æ!5«I’»_ïDøç†7Ö¢ŽXmÿà—'8Ô‡ÖžŸð:™¾Ôañ„óiºœ";Èâi£'l±¨ù—iÎ9²aø=}wt[IÔ¬~ÂXþöiB<`ö1žXjí¼áíáÿÚu[Ëèïu !xâHAÙ‘óO$ã¥xí¿Žµ•¾ûE¤}›qLŠ˜3ž[¨4IÁB?XÕ„yÝY<+Ðôˆ>!Ò¼1§i>ðön¾ÉŽ) ³‘ÇSÒŸðûW·ñ•ìº.µ Å/,N‡å‘aÑèØ9µ|Ká/ ø§EÒõ Kb.£ó­Ì€²€N6#žCVüá­áìóëw×ñßê Å P²0ãçv$rqÒ´å­í“û&)Ñö }½}N!> ^ÞNÏ£jv_a,NùäÙ$j{4xùˆö­ÿˆ^$Ò|)¤iðø7bÊ Nãˆ;Èàòä‘^aÄinÚâÎ>Ê<·Lï\ó“×'Ú½Ä^ðÏŠü=¤j–·ÀÝDg¶w•rJɘç†Î.„¾¯¿õ±´ý¤g¬½?­Ì¯‡šÔ>2¾}#W· x‘<±¼y *¨ùÑ'ƒXÑ|¿¹ºfÐõ+3bXóÉåË žÍb=«¹ðW…to‡“Ï­êŒWº‹DñCŠF®>ff#“Ž‚¼ÿOºøŸ¨Eÿ …¡;éÛk½»´N–-1GNp*gR(GëOS|ޝ:yE7;+´¢åo;%·™Ö|Dñ.™á]Jðî„>Ùö41Fì0¬s–Äô_áÆ¶|k©¾¬B©x‘<ÑI;dTd “ÉŠ÷Eý™5ïŠ662ZBÚ`1‰’iA1Ç»ïÆzçî•Ï×½{'Ÿؾ/ê®ëú×Ú®<·‰v*,˜’qÀãzò1œI”`kòÖÄ/Ewù_ñ?MáŸ?¯¯/MR±[6rCÜK²H³Ô2ub=«Ñ|U ý¶‹¤ø?áÆ›s­É§ÆcŒÃ ’䃗”ˆÁ!IίÐm'öaø{¥j‘ß™n®bPÛ ˜ÆQÉ<V5n9èÕíšG…´-bM*…J&dvžß3AÚ¾{Ç™}8å´Ü›êôKõ?láo¡ïfã>3ÇÓ¡N/á§z“zo{(­ú·¶ÖÔüÛø}ð;㈬›Qñf‚,$‰D–ìÒ¢™3ÃFñ—ܧ9`+³ð?ì3 ýªèøÒâî8–@öâ "VÉdqµÏêŸjý–h­âiç`ˆ£,Ìpõ$×Añ£E×. ¯€ôëýcóía)i‘Ôý¦R‘0ì3{f¾r·çù' QQKí$Ó_öóvûÿÈý¿,ú7x3Á9†š×©^£VTªÊ2U·µ(SS•›Nѽ¬¯»¼Z7ìÿð»E°°Ó`°2Ŧ’aHÎ99;;[“Ü}+Ö,t+LC›kºžH‰ècÞZx«R·T†î=7ÌQ¿ËŒK*Ew;ÔÆ~†¶tË;‹(ín®¥½‘i„aÜú‘"ÁE|Ö/ŒÄ¤ñX‡?&Û·ß§ÜÏÞxo†¸c!©:|=’à ¯4iÒ‡3·÷_=íüÑO£×BýUKÛû6Ý®õ£·‰z¼ŒGÔ’p¤äùb®©Rr«VIEjÛÑ%ݲ݇£x›Ãþ"i—B¼†óìä .)lã‘‘Î nUT§R”Ý:±iöz37˜áãŒËëF¥7{J-J.ͧf›NÍ4û4ÐQEsþ"ñVáKd¼×îºHÛåf,Ø'TxéE:u+MR¥ÛÙ-_Ü,n;–ágÌkF(+ÊS’Œb»¹6’^¬è(¯ŠuïÛ—á›Ímá­>ÿS–7(¬U`‰Èã†b_¯¬uéËñÆþ ðå¾­:Úø=nã¿R"I¢9å|¢cÜHèH¾Õ묃4PU+Sä_Þi7è¾'è“?4—>Õ¯,&SŒx©Çc N1½ìçVÊŒ#£÷§R1ó>ˆ¬½G[Ñô‘ÿ;¨­ø'8R@ê@'5óÔ¼á Yu ÿêõÕÆÈÙŒ@¾¬±Æ‘¨À$÷'߃_k_µÇ‰ì> j:¿ƒÏÚìšWX’ê ' ®S{¸ܤþ•߃á\Ƽ¯85]]8ßÉ6´ù£ãø£éÁ9CŠ„ê¹òË’P¯ì£k©J4ê.kíjs|¯yi¯èŽþ9øWÀÚBjרfm°›¦6â\w@U¤a^gà?Ú‹@ñ¶°úÝÝ­•Ä„›e·YçóòW|‘Â7Èù0={W”x×âïÆo„ÖÐêbÒÊ f?•Þ/Ùî"8lbG p23^/ðëáîðóY'Öµ(¯o£m!·ÜUYÆÝî[Ðt¾³.à¼;¤Þ>2¾–’–Ÿ5küæþ8úTg”óH.ÅÆµyNŒ¨Þz¦½Ê¼ü«F½õÙÞÍŸrX|a¹×5§¹ƒQ³²Òmp ,¾™ÇÞÈÉ/à1çŒWƒ~дœºV>QÍ1ž'Á㟘`£¾:×ÄÚ§ÅO?‰n_C†Ým"˜³&ó! ¸õ±Ú½§Vðß…þ"øOÕOì¿´ÈY –)Ðít=ÊZ÷0Ü1’áë:Ôi^Kkì¿Ï¿½{=­¡ù}ôñW>ÊÞUÇòS›nn Ó•ÝÒæmû4—»j^ÍJ7çænMíü2ý þ øÓUÁzåÓÙI8ͬ–²:ȹØùbNážs^{¬|×¼A¯\j:.¯m4sÊÎæúfYabyÝ»;Æ} u?>hÿõ¸¼Q®êPÞÝÅ»ìp[†*†7»:€Wj_üFÞ&¹:0-¼S2‘2î26pwäsé^Å,. ÉM&û%wê~[™ñÍ,ÃRª[)ÎRKü)¶—É#׈áo>_j:½Í焯ìÖÚiYÚ;©|¹`$åù†z]WŽuoü*øy§øcJí)c™³ Ê£Îü±íò­y±ñkÄoâk‘ An–ÐÌËûåÜÒ~bz`f½§QÐ|+ñCáÝŽ©1:SO+28bÁpœ8ÇRúT.]}žå>{AVøNgáŽî|iâ(<1â‹DŽkŒýžh ]FàŽ¤žt5«ðÿR×.o<)h°M)wŽîO%àbrÙÈ!‡¥vþiµøüU®jp^\ÀOÙ`¶ A‘—Ž8µxιñ__OÝ Án–ñÌÊÆdÜd ó»ÛéCi[œñÃíÔö/ë:¯†–°q©Ío3“(ʤ—œ±ˆ=+šøYã‹ßx–ß¾%·Ž ›¢~Ç4$àJ«¸G"œä0Ú»GÃÞøðÂÇZ¸ÿ‰_Úäo™rë ÔG 0y1·_ZO†ß 4‡¾%ƒÅºæ©ý͹?d¶· ƒ+¢GfÇ@zS\ÎZlO¹Èù÷9 kà5Þ¯¯Ýê^¿´Hn%/,wrùRA!ûÃƹéŠêüo¬h ¾XøoM‘u)¡˜‚ÀíY.d刊3õ¯ñ?Å¿§Šî£ðÜ6éoÌŽgMæG>ƒ5íú…þ(|3³Ô®IÓ~Ù)!€Ü°]ÄpÜu1¶ ÒV³Qç÷}«Ðä>ü@¹ñˆ ðÇŠíã‚Yøµžp$…pÄä7LÒë_5SÄ7z—„ïlÖ;‰ ÉܾKÂäÜžz‘Šê~|2Ñü â¼S¯jpÞOnsk¶ó™Àg-ŒmëŠò|Yñ*øÂõ<7 ¼pC>ÉdÞdoâÉ=Çj4I)Ž÷©ûƒ×|i©h_ ~Zø{Mj·NÍ#¯Ê’O''o¢¨®[á—ļ]âo ø¶Ú(d»}–—0òJ2Ê®r g±®Úç@ðÇÅ?†0j·éfyʱQ¹a¹‹ƒŽåvÍAðóá^‹àoÛø·ÄZ¤ÒÚ6ë;{pÄ4§!YÉuÀ§vÝÖÂ\œ²çÜå5¿Ú·ˆo/|-}h©q)ybºÄðIüXà‡\×Qã+ýá»MÒQ©Î·,ï"ð’\ËŒíÿe@äþ)ø¹âfñ¥äŠÝ!‚vWi×ywæã#ŸJöÈ<1¡üiøwi-½¼–“Þ\2í·C3Cw$²¨Éde9 té9AEËkBj³…+s6ÒInÛÙ[¹çß ~ Oâï[xcÅ6±BnÛm´ð1ÂKÔ+)8!º{U­oà%ö§â;Ëß _Ú,wš ¹<—‚C÷Š“Ã¯Ò»¿ü ÿ…m¨[xóÆ×BXí¦1[Gnª×  ü倯ÐÀãiê^ ø§â‡úƦé÷w0ÝCv¸¬s*3|Œ‰M€†ÈÝœZØü”jâ*¤¥%ï§3è{Ïs,Ul&]„”§N›«(Ù¦©«^Vz´®ž‰é®×9ŸÞh¾Å¢[Ì5;q¾G\ˆÞáñÂ÷Ú u®3á—Äk¿ø–ÓÂþ+µ†/¶6Ëiàcû©yÚ†VÆ=«Ô¼3à{Ú'šN™oö;ëë†ãl71 Ìãv?vW$Œý+­øMû*k:r/Ä£tÚœÚuË,v6Ñ2™ @ÌFà¬ß:„Èàääáb3 |¸ŠÊ;nÿšé_²vvoM•ðÎR•\¯:¿±‹wöj.i3Šœ[Jí)-5-ÖWLҾϕv¶÷’Ý@Ìò*Ÿ¹¸+cÔ ô¨´O |TøO«©/ös\La˜Ç–X.áèêTqÉ®˜T¥R/Ø»úEzœ+PÅÁÅöi§£k¯fšõMt<ûáÄ+ïxŠ×Ã,¶Ž¶8[Yà-˜åþêIÈn•£âO€×Z¿Š¯u/ ÞÙ¡¹µÅ½Ü¾SÃ(኱ûÊ}u_þèþñ·‹)1hVž%Òõ ^%Ž+„´pó•;¼¥,I«N5ù¯ç9ÞÇ–9BɤïѦ¥·/MÓºwÑ«ÿX}8Ãüî5³>.T«×nÔá9ÅÅ_™8ºM©:–\ɸÊ­8>xË—¥ð¯ÃÏø(«xgO‚Õ–ô<ÂÙÎé1½·3;˜Œó×5ÚV‰|UáŸé2k¾.Ô-´Ë(¾ü÷R¤1mÎ@Ï ¯7Ð>?|+ñ_Žì~x[TR¼Ôt×Õmå¶e’Ý IL$yŠHó7ùz€§8àÈtžj–NB¬mü¤g$“_––©â ¯]\»µÍϘZâ{’Ò;Èy%™‰$óÉ5÷Ù<Ë O0Åb=É-u볺Û},2ø›ô‰\%œâ¸c&ÊŸÖ)É)Ê«²»‚Ö*-¶ìãi7ªZ+4ÏЯÚsļâkÄ> º‹U´Ö.R?f•e_´\¹ )8Ë‚äuâ¼ká¿Å üA®Zx{ÆVpÃÛˆâšs±ùwõ ¤ði|1á?üBøjòêÀØï›É‘ãù¼©Ó]Aê§<ŠíüðoEð¦¹mâ_ë0ÝÁlË$[Ý+¯ÝÝ‘…äŠýƒ…–K Î䢒»ÝÛMOâ Íig¹Þ3:ö ›­9O’7å‹“»Jý.ÝŒüºÕüUyªxVòÕ^é¿ow!…’Eþ$b0ÊqœW׳Ÿìë¢ø‹Â÷ÞÔ5&š(.k¹­€ ó¶1ü*ƒæ=rA¯ƒ>$ü`ñ^5¾²ð¼0F¶òíšY“yw=@·Ò¿gdM6âÛàV“¬ß[Åms¬o¾•"_Þ¨yäæ5SÏLã ¯šã\â¶Q“:˜IrÔœ”SíÕ¿¹[æ~¯ààxãŽá…Îé{L5r©8½¥´bš”­×—µÏ¤­mm¬­£³³bŠ%ˆ£ ª£:+åOÚ³âF§ðÛLÐoô¹ÿj»– 6B© í«ÄVdy-&åd*<Fké_ø—Fðw‡îüQâ)Z ̳ȨòlAՊƬĤÀäð ~þÙŸ´ÿÅ‹øÁÍeq¤xxkw’àÝ$r3›HÀB½ˆ5ù?eͳˆJ´/I]Éü¶¿{µ¶«uµÏí8ç Á\ ^–º†.§$hÅn½ôùœWØQ„¾%É&¹i´xn­ Øx/Ám&£7Û^݃®ç?,ižƒ’~µ±ð›ÄëªëÖš‰í"†ÞñÖ8æˆÑ;}ÂÝCx¯_ðχ<7ñ/áL׺Ô_c-7Ù®Z!‘è7G*Ôâ­x#àÆá-vÛľ'Ö ¼†É–X ·VÝ,ƒîî Àõý £krŸæ’wçÜÎñ‡ÀKí[Åw—þ»´ŽiŠ‹›k¹<¦Yc|lA ¤uÒjgAø-ð–îÂK”ÔîÚa5ËCÄfSò¤jzàµåŸþ-x’?^iþŠ„ ûùe@ä»s´ÃêzM¯‡¾+ü-»¸Ö#~ÍtaÉD˜ É*CÜUiv¢O½Ê¹¶<³á÷ÅKŸkvÚláŠÎùÒ8å·,áwpÃ8Ï ®ÓÆÿ®õoÞj>½´IäÂ\[Ý?”C(ÆøØðÀŽqOðÁ}ÃÅ¿ˆ¼U¬A{mhë$qÀ­¾wNP6îg®+Œø§ñwÄÑøþòÏÃÁŒƒ4³.ü³s´ÀzR×—ÞÖ_»=?P>ø#ð“PÓçº]NòY’{¶‹"3!ù" Ï&¼³áÿÅ‹¿kVÚ/Œìb†ÒõÖ(å·bs„-ØŒãA(´¾üÊ’)£±î+#Áÿ´OkVÞ ñFµ å­›+Ç ·Ìèr¡³€£8ÏZ~óiÇa.[>}È+|^ñ~<»°ð¬£BAšI×' tàw¤Þžøôo÷geâ +Fø=ðªþÂòí5+ˉV{–·Ï– ±Ä„ò}I¯ÖOÙ7Äžñ_ìóá}[ÃÐGl‚Íaž(Àn!&9‰Çvu/“ÉÎ{×äÕ’iþ_ÜëÐ%Ä‹[³Ìe¶îŽTÏ#§"½—öð†­£üIÔôýKZšïH³±‘¡²…å4×REJñ3±@$Ž:’1šøŽ>Ë–7$uùíìß7¯K}íkÐþú6qDøÄHåþÁOëqöWº\­5>kÙè£]uÓ±úÙâYx·ÃwþÔYÒ BÞKwx›lŠ$R»‘‡Fʞƿ">)ü>ñ7ìùàÝWÄõuñúÆïµ‰ Mr-ÔF€©ËU ®K9<šýŽ‚ÖÞÚÕ, @±F¡G@ `¦+ò§ö¼øÛâF¥áoMÿûk;x‘#åá[…ó7²ç‰7ä‘Á+·Ø×Âøw‰ÅÇ8xJ\6îµÓ³èÛµúYwHþŒúRey4øžw§'^Œ)òɨ§+¶æ¶’ŒT¹tº”´j.Iü_àO‹÷úίm¥øÊÊtû¦T0’Ü+’Á¯Aøƒð6mkœ꼵ŽìªÇqou'” Pq"Hr9EAàïÚ6‹©Úø‡Å:Ü66¬²,p«y“•9ƒÂ‚y=kšøÃñwÄ6Þ:¸Óü% I$j¯4²¦ÿ½Ê¢©Ààw¯Üº{çùæìßîLM?Dø/ð·SŠöê=Jþb³]}œþívŒGsîkÅüñ~ãVÔ¡Óüeci—N±o·cæÂ\€¬rpÀg‘^ÅრüVøq©D¶“BËmz`åîcš1üÅs~ø¡i:•¾¯â}r>Ñ–UŽa,ûåSž3Ö‡~e˰½Ýy÷9¯Šÿn5Ï}£][­Ò¨Žxgm¶–Dr0r1Å}ÇÿÞ3xcJñOËˤហADg( Êb“éy¯†~6|U×[Ç“éÞ‚“jÉ,²®ì*§S_OÁ>¼iÿÄÝNÖö·»¼²hœG÷ZH™dR£¶Sy#Ú¾S0ñÄpæ%%v’—ÜÓ…ÏØ|Ìç•ø¯”U”­ÊTߟ<%¿ð'yØýTñðÔOu¡£ÅçÝý‚çÈûòyM±xõl þtâø¨ßjÆ;a¶½ŒžÚð˜z¼Œ:ƒ_Ò¤RÅ:{õ’Fòc‚)8¦Š0Ê~V~NG :WèW…<+ ø#Ö~ð͸¶°°ŒE `“…¤ä’NI$ä““Søw@Óü/¢ÛèPaol»S{nnI'$ûšÚ¯Ïóìûc*N­Féó7ôK¦í¹ý5á·‡dXj\,#ŠöqZ‰^S•“’æ²|¼Û-’ÒçÏŸg¯‡^0±[ M?û:{‰‹‹$DØ|·9ÂÀ (Îâ;dפø ê áK/S³{il¡s¤Ã¼!P²•xÜÁôrey;ZÚKt‘¼Æ4fÇ‚î@ÎÕÉ' É5ÏxßTÖtOjšÇ‡¢†kë[Ye.ˇz© ÈÀ[8éÍrÔÌqØÜ5<"nI?vïfôz¾OK+u=œ7 pîAšbx,êS”?x©Á%5SåKY&¥kjùšw÷møÑñ¿Åº?‚5OxÂÌÖ¾°½ ›ú¨d·‰ r3Îé$Fc’y9<ó_7xâÍÜ·ð[øšÆ1¥Î@c ,AŽÕn¸8ïÅv¾—Oø¹¢k·‹cs}39Ô¥VÍ{†gó`m9<¯<äçœV—‡>èÚmôúö½ ÚlIH•„Òªœ…Áár~µý%—á¾§„§B;¤®û´’m÷o{½_Sü â<ßûo;ÅfS~ìç'ô„›Œ"¶Œb”cî­–†÷Äo‚rxƒÄßÚ½µK´‰c’+™<¡*õGGäŒd–/ èÿ>ëS½PÔodœ[ÑÇq¿ˆ’y5É|jø««ÛxÓû?ÂÖñ$Ë;É2î @éœWWà«Í3â§µh¼In¶÷–±¬W†„–)rU;YHägší|·inx>úŠOcØ?aÚËÁ^‚o…Þ=ÿ‰[j—òÝ[^Hñ¥¤`Èåw`U˜Æ@<‚HWÓ¿¶Oí7cðó᜚?ÂÍrÕ¼S©I[ýžXå{x·oy˜|ÊUØ»º–È¿$.¾YÚJ—š¼SY'#b°•ÀìWÖ¼ßÅé>â¦é0"Í嬌Î3µ[î€>•ñ8Î ËñYÒÎ*ÉïyF×Rk×§uÔýï$ú@qVIÀàL%(ÝEÂdÜgN j’[É]òÎéÆýl¢~!~×<{ð¹<âB8¼¸ßí÷vh!žî69 !Œ*ª€V0Gòw„¥í¶«h ”Œ2œ:ßðÍ}Gð×@Ð<{á=R-~ÜC5š*Ýy#†Š^E£)ŠÐðïÀ ÎîÝk_‚M6÷hÂiºW '&¾Ÿ–á0tð4”"ÛvJÚ¿ëå²Ðüƒ<â\÷‰qKÄxÉש¨§995´ZýíîÝÛ»m”5ï€M¨jqËáû»tºX‚´W/嬈yWWÇs]þ‡á½+àׂ5{Ýjö;ÝFê dKbZ8¡¡°71=Mq>)_ÙxÀi~·‰$X‘™æ¶¦>EéÔ×Yà GKøáMZËÅvÉݤJ·-n0’Ã/EðÊßw.X»#Â|ê–Çh®Úå^Óbm!ÏÎ"b³$g‚Àä‚FA‚í|¯u¿ÝÖƒáí3àÿõ©õËØ®ï¯b 2ÛÉPä„ ŽY‰ëŠðÏüa¼¹¿‰u›†“3Œ„fóQïŽüW²|>Õl¾%xOWƒÅ6ñ¥Å¬K×6¬ÐMpêÃ¥rú7ÀÞî+­G_…ô˜HcµXNè; ðÇÓÕÙÄ-ß´ÜÝø‰ðn-_†ï@»‚;ô…PÅtþROÞGG= Ö·‡<1¦| ð†­w¯^Ewu$KvÝQ' nà3Þ¸¯?/í|U™á8#YDHþd£pDÆÔPr+£øu©Ù|FðÆ©oâKtKËXÀ¸h>U– 8ÜfSEãv–â÷ÜÞ‡Ûß²ÇÅ-#âgÃ"´„Û\é_èóÂHa·“©î®¾¸Ã&ŸÂïZx?ã´‘ÎDÏh¨b<,‘y›ã{®J‘ï^#û'ø=þøÞâÞÏV‚òÃR·1ª|Ë)xÎô%OpëÞ½_ã•¿4Šþñ'ƒ-¥–)‹FX^X ¶:a•ÈäHÇR~[ŒÂ¬mÊå.Xׇ2oº÷¿5%÷u?ÐÎâ:¼W០ø‰;­‰Ê1*…HÃFéÍ* ¤·|“¡7ÓImÏ¢<g{}àûøtÔ2Ü,~dh 4d8P{Œs[: Ø Ôép¬ïºF£CØÇãZõÎhMyÕö—|ñŸ&mð*·»î:Œq€=ëâÕJ•0žÃ¤_7ßeú/½ŸÕóÀàp|H³†¿y^£{/ùwí*-wWRú>XöGæ7Ç?‚^üAŸûò {èržMËyqI „¼{_ e³|9ám3á7…µmKÄ7±^jpaã¶mÉ JsËw$×¥~ÛZ¾¹áéž…`êΦyà°ÚëøWü;Öl>#hš•‡Š-‘.­ Ì­ÂËŸ);OFS_¹d˜¸ã²ºÛŠ¿ªÑþ(ÿ!|aXƒVü+ák/„ú­¨ë·°\j7¶åLV­æ,P§'-À,O§Jå¾2üE’×_¶Óü3+‹t¼ 0HcùPsÜã5©ðÛV·ñþ™©Yø–Þ3uiéZ´Mü­Ç@Êy{žÑ¥¹?½öü'‘é_îÒ›»ÛMvÁMÇÍÙýà{9¯Xñ×ÂÛm~òÒãE¼†;Ÿ%Z1rÛ#žù—ÙÇ|Šæôÿ‚:I™'“]€iJÙÎ֔Ìc8ã9«ß¾!µ¦©icáHV2–áciFvÄŸ*©¥f ÝmQmÁÕÕw:OøNÏá^©ê:õì:Ô ŠÙĉ=[.8,HéÚ¼NÃâ¥ê]oº°ŠM8Ÿž5b%)êMÕë_ õ{oYßéÞ!‚?¶Ú[™ Ä6,з ô §œ÷®bË஑%ÂË&» i`’ß+yÁ?º¦à;æ›UNŽÂR¦ªIâ·:oü0µ×®,®4+øRSh>ÐÛhd—.2‡|ŠÐð‡…¬~i:¦¥¯ÞCq¨^Z´B+g$P™‰aÁf#·Jç>0xùm5; @ˆ‘À±ÂÒ í…>UÈîN3V¾êÖ¾9²¿ÓüAl‚îÒÝ¥fˆmÀÇc‚½™s‘OÜuêE«û ~Äò7âÓȲÏb§»e“'ÌÛÜîÏ\sŠõ?|2µ×n¬nô;È£œÀ²B·-±%ŠA¹FþŠËß5ÏY|ÒU“ûvÓ³–%Ï ýݸ۞٫Ÿ¹ûÝkÒþêkãï4ý~ûM¼-(hÆ‘•Õ‡¨ê+ßáF•q š jì2Ió¼õ^¥vã€sM©¸EÐØQpI¬NúJÇCâ¯Xë±XÍ£ÝG²D%·óÎÕ’7çinŠêxæ­øO–¿–ïZ×.àžþx-íßÌŒvwd€+âWŒmìšÃKð¼XŽ(V8ZAœFœg2M;á-{/Y†3y :IÚ%F$Vˆå5W¥íì¾/À—í–ò~ïãkžkoã‰Òs"ÚÆöE¹L̹þ÷­zWŠ< a®E§O£ÝÇIšÛíjÉœì,2)¬h>i—2™­õ˜#±'xa*îíJŸâG‹-­?³tÏDPAäÂeçÇß­P¹•9}gcVá:±Xg®·ûºÜÌÿ…;âŽ÷`>÷IŸåGü)ïÿÏΗÿIþ̯üT öý;‡úS¿á8ñO÷íÿïÊ…cÏ…ìÍy1ÏÿÔþ/®æ¼¼’ã£1É5¥ 6÷2\ʼÆU\Ž ø¿ }Í‚jÙN϶†}8â›{{kmhtí9`l»¿ Ç·…>YB¥J•$š×Mõô=6ù”cI>Ÿpè`ÑaææáAFi$v-œcéY7÷²Üê]>fÏ”¶ÓÉ+È<ÅÎOB k^Zi°ÞÉi+Rk+‚Ñ´M€è3FFáëô¨o/­`±:^œ°°yÇ,ÃÛÐVŠ5!Ru*Êë_¼\ÜÊ1§å÷ ¶‡.î.d”)Ü!U›Ž„ž?*ÍÔµoïÞá°»Žxôì*+k††e$oV#({JÜ¿±ÓbÔ$± ô‘@n8#ÔTG÷¸v¨Z:¯¿Ô«*u/;½?¸¯ Ay§Kq0Úð‘¸Ïýi!³Ð`+uus$ª¼ˆDd3ü%º }Õݽ¥”šv˜¬ÈYZG¼äté¶±­oÖUyÌ\ÈÆä~µS•:r„*«»oóüIJrR’m‘{TÔ¦Ô/ä¼!T±ÉQÎ8€«¶‰m{¦Íu(>e¹PåGÞWÈýå5gRÓ´È594éÙãØ~WQ’AÃ>øâ »¼³´ÓŸJÒÃ|Äøg#îñÙEh¡R§R¬“Zéÿ\ɤ­·¥†Áe¡Bî[™%D9ò¼½®{à±ùp}ªŽ«¨Í}¨Kr˰·@;p3Um.ͳ¡?:äSÐŒó]¡¦ijc;H›pVE²ÎqÓÚ±ï¨8Ð\»_Íú”íN¥ê]èþ⥉µ¼Ón&ºOÞ[í$Ž7+sØ4–ö^Œ‹‹›·uù"<3{ÎÜžµ%Ý톞Ún–óÒÉ' Åz;Xv÷ÓÚ¿˜>u?yFÁúÕÔ•(rB²¼­¿õ¸£’R”[K·õ±wWÔÆ¡¨Ëv«åî9À?º=:V†ž#¿Ó®n®µÛ¼Ž7#œÄUÝJÃIRk9L‘"€U”g†@`{ŽœTWvZv&—££âB­$’pÍŽƒhèkNJ­:µ%xëýXŽxÊœ!I>Ÿw¯¡ Z‡"eº¸»•Ôˆ„E\ŸBÇåüªŽ³«É¨ÞËtFÍçîÓ ðÀªVײÚJ­›†å#!†y®£V°Ò#Õ^Â2 ¡H‘îÈ 9ç¥g V¡%‡ÓUýV*V§Rõ.ôÿ/ÖÄ`·ÔtÛ‰§]Ïj ¶Þ7#qùƒQA¦øv=·r²¯Í䈈vôÏÊY¹»±ÒôÙt%„ 4²H0[o@¥s6×óÚÊ%ûëÁtnU½¿;SœéÓP…uwý}âŒg>iE´ŸõÙÛÈÐ×5I5 E®‚ùa° ×Ñã´Õ4û©ïlÔ1#,mòxÀ*yµ{WÒ´DÔM•Ñ’¬Œ€1†v•'·Ö«Ï}§idúFŒ®Zqºi¤Y‚ôPáFsŠÕB¤kÎs—»¯õc>xΔ!F-moO_B¤:G†Sý&æúGEçÈòÈvÇbyZ§âb]GVk´]›‘T(죠ü—m©\Z?˜§rYXeXwý+·Öô 5%±¸ó ùÒD¾W…e>™â±…«Q’ëj¯ÿ©o÷US©w§á¥ÿB†Š-¯ôÛ¹.ã̶©¼°ãr1Áϸ= Cáx±=Ýü¥Éò±!ÿd¾vãµ_º»Òô}2m3HI$yTy²Ê,E²×o¨]ÙËæ,ƒªºÃ¸Çò«©*t”!ˆW×ÞLa:Žn›i=—•¾vÖæßˆõ–Ôu/>ÝIµB¨çåô­íõ[+Ÿ¶G™mcó7/М0lw¥hk:fˆ×éi8’ѬˆñØ 3´ƒéëLšïJÑ4»/FWy%QçM(ÚX)ÈU^ÃÖ´öu£^U'/wúèO4%F4éE§§Ý×S6ßAð«/Û.oåòº˜|¬H}·çn?Z¯âmyõ]PÝA”6(U%T”~°áÕo,Ü:>õS–Fåzxæ»ýoLÑ´#±¸Y ݺ2 ÅDƒpR3È^€ñïYÁªÔe*åz/ÝVN­å½¼–—ÓO#3@0j¶¯}w´Œ6á€^68#Ó ‘QØèe[ë­F_)y1¾P çoµjMs¤h:mΗ¢¬’I:æY¥Kè{MpVš½õ›,¨û‚ã(@(WÓœåNœa Bæ‘J®r¤ÜWOë[jt)׎¥©ù¶Ñù+°Ç8P>QZ¾– jÖî+ØÃÍk˜|¥ãèÊ{dgƒZzæ ½ìV×bKpñ+¤‘üÄ+àíeö'Šd·zO†ô›3DI%–á{4£ie_áU»Öªe^U%/wþc8J„iÒ‹¾–ÿ‡1­ü9á'Uº»Ôeò&ÞØþÿwŸ^µ‹¼Dúަ’Ú'’¢5 %QxP öÌÚëZ•–'ŽMÀÆ3Œ£œŽãŠõè¾’úÞÖéd¶YaIcdЇ¶²“Èã½eO–µG ¬ô6¨½•XÊ­å½¼¾_©—ágƒ]µ¾KøƒÍešX¿8elwAª¶¾ðƒ¨¼¹Ôå.A‡Éýæ3Óx;GÖ·Æá}2çLÐRI&¸Œ™§•pYWŠjó+MoT´>™¼¨Ã(G¡õU%Nœ)îÿà‘N5*Îr¤ÜWõ÷ju~3ñ_jqI§Çå*FÕQxük[Á÷0ëÖ·–úœAæ´…¤W^ 'GS®A­hžžæÚµ–ÝgeãØ°©ëƒÒ˜³h^Ó®´ý9f¸ž"e¸•q”@è3ÖµöuV!Ôr÷­,eÍ áãJœ]ÿ®¦Ÿ…¼$bþ}NdˆuŒC—ÿwp$`ôÎ*§Œ¼Lo/âM2?"(âTŒJ¢ð¢¹kmwV¶“ÍŠ^>L Œ3È#ö¯Zñ‘á»ÙlÖî)mEźNÎÏ0d«Ø•œ\+R”pË•èi$éÕŒë]ïo#Á·±kñ^Zj±‰'·¥I¼j@’6Ç׃PÛxOÁ²GöɵIRß«B!%ÿݸ÷­Ä“Að–›y§è ,×71fYå\eÌtõç5å–¾ Ö-ßí1LHî‚„Ä9¢r§N†%]“Ô©9΋i?ëf´:ÿx®ïá:d~DQ‹ã+áG?Nq[> ¹ †òÓTPò[Be 'FVDZÈ5µâ-ÃwÓZ¥üR[ý¢š'ˆn1‰%< ¤‰ôOi—6ZOqqq2M*ãä^v¨ì3ïZòVúèåîÿÀìdåMáÕ8'Íÿ¹ÎÛx;Á×Qý²]RX­ú˜L$È=·ƒlâ£ñlj{Ûx4˜Å²$AcÏ$"ðq6¾!Ö­›íÖ÷ ììÀØGRéŽÆ½«ÄZ'†µ#eòIj.`Y£x†ãñ’¥OQžë88U§%†\¯úû*)R«VwZÛËüÌO߯ˆ£ºÓutWšÚݧŽ^r.ÆØ9àúÕ[_ø2l_IªÍ ““ºN¿t8$c¶H®¢Ñti·6º Í=ÍÜL$žeÛòÊ"ŽŽ3Þ¼b×Åý­Á½†ä€‡>QÿVFs´¯L'(S„c‰Wb§Õœç‡vGñÅ­-律·†8aç%c_•G#¯‘Wþê/â?´éº¼k-Å´-ø*çý/ûZk{|î0˜w7ûªùñ"™ñÅÆ9l,4üˆ– ‘å–5àgÜú×[x£ÄË9ÔmîJr¦?ºAþ5ïzæ‰áÍzÏJ›R†H>ÕÏÂ2ÑÎå ðP‘œVpq©NJ‚³5š*±•wu¯ËOÄæ¾ê’x–æãGÖ”O$P<ðÉ€„ᑽAæ«[|<ðeá7_ÚòÚ[òZ#{.OE|ãäWa¥Øx{À¶w ¡}¢îòæ& q2…Äc¨z÷¯ƒÅ¾(iÍý¥ëEÅP`Æ=©àûæ›jŒ+«¿ë¨£Ôœå‡vZV=?âG‹ü´Óô¿B- Šùe8£'®sWþk'¿›ÃúÖÉgŽ .-æQ´ùã|C.p{bºhþñ•¤ÝêPIl/­ÖáZ–… 0x(O8©ô?Ã~‚â-Mu{w #\L»ÅŒ”EàsÖ´å«í¹ïî™9ÓT;>m>çß^;]^[;}Åš w\œ•Wô&—âg‹ÖÚ-/MðÔ"Þ$‹ÊŸæ+~xõ5å°ø¿ÅbìêV×mÜYcyxÏF\sèkê <£üB³Ña­ºŒå N‘´.xp<¡88Î}+:n”åOÝ·WØé¥†ÅVÄÑÃÆ.¤¤íÅ]¶ú$•ÛícÏ~k“x–úMZUžU†I¡˜.Ø2Èø*GOJ††¾ ½•îÆ±5¸b^ƒ{®{#ƒŒzdf¾„ðÿÁÍáýñÑt»ø¯5ÝA|•A™¤ ßya ŠqÉ.ãŠäþ&üø¹ðÿÄ6Ö^“Q×d<÷’ÖÌ‹H¹#ÊÀó7¿9Ç`œpK7ËiÊ õ/)]¯EÖïK|õÙgGÃ^9Äa1Y® /gEƳ‹”g+¥N-ÍKºå¼Uœ¬šg”|Lñ„VVzf‘áhDñFb‰Ÿ–T_â9îO5ÕüÒ|eãyÚÃSÓ¤¹·Úæ @Dz5‘LM!Â0lúæ¾Ôµýü#â½"ÎçÆWR‰ $»mÀQÙ~`<ÐXýÖ@Aô¯uðßÁOxbæG²iÞ„[Å2…Š01µ]d#âvÇjùÜåôk5ƒŸ5¼½-¥ßܼÏÛxCè¥ÇY¦Wâj*Œe²UióëwÍ)ETQº%)]¯wFÏ…,a½oUÔ‹Ý^>“„±ŒˆæØz” ’g|!ŠCptø®Tª5µ¿—-Óñû K“žæºcñÃðéVš­í´º|WùÑ­ëCo(À!—8ç ‡ŠðjñbSú”m+/qGÿ¼¥¯£gìùw‚>ä5#O‰ësV Ôç¬J²KnZ¼”i%¯µ¶î›±¿aðÃÁzDhº-”VIR8Úe©È®ùúµEðëᇾiRè~’²K+Lc™•ðï€ÇvÐÇ óÀãŠÆ²ñ%÷¢’ÿÃW—V±ðª¢ß#’Èf‰Ýœd¾8àV«ðÿÄV^N¥i%ÿˆ¯\–ò¯ï͵¤YìÑÂï@6·NOLüåXb•ðøüM¤÷‹ÕÝwr²ÿÉ™û†_ŠÈ/O:àÜJ•8µN¬ycMÆVRT¡IU©gÊ®½Š¿,[Ñ]zÆ·ã?øiQ¼EªÙØ ö‰ã‹q†ö>¬h~%ÑÃÓÃáà×&®RœyS”äß'³Qw,¡wfôV½š+ oh0øv_”}:(å§.¾R®òÀ(%¾^@“Ú±¼7ãÝÆ:$#ð¢O{er¥â”Fb  ‘¸yÞYê>¾ÕÏ5yBU“³}ìÞÉžÕló'¡‰¥‚©‰´©8A4ç(­å«ÊQWZ¤Ö«]Nª{k©—#xå>»zõªz¦· ønÐO«ÝCeFTq’3jÇÖu¡cf.õFÛL‚A•v!˜ñŸ”± N=ükòçâ7ÅÛüA›_´×5O[àbó¾Ë l¿+Ç hw°$6*ŒÉÁ¯o)É'™Tå©'Ê¿•7ò»´Þ~KâW‹XNÁûl ^Úm+Ö©z?¶éß8ôÒ’Ýj‘÷íÇíðàkVº/uI®Ëû¬³ §\€cý 1êq^¬u}TÙO¨h…£Y Žìª*ý oösÅ|‹àÿÚ6“á]/P°Ð—KµÔп—jCH®¬GÌ̸`}HÍiø“öÔ$Ak£FmÞ`v¿—£Ûw½8½ŠœŽž!,.– ¬æÿð ¾IŸ˜à>“\%…Èê×â,ñVÅJê0ÂájB1viY⤢õN¤©ß¬loØøª×Y»“ĺγa‰[4ómmƒ#Ud-JsÆØ©5kT×¼âmzÃÄž4¹x-ìY’:XŒí; ?’›¥$š>ÜWÀÚ§íw{p%·†úõ£‘øÔïd0ù£å.°Áåc±»:ö;?j:×ÃÍ*úÖI´«+yÇIÿGq,lA`Wæu>ŒÆ½ú\;Z¤e,,y%ª»kH½-“³¶—åOÎçãX¿2Ì<¨ÒÎêýr‚qœ¢¡7ÏZôeUNQ悞ª¯:w_ º}Y'íà;EðûOÓïRòMá7Ûýž‘7à—!ÁÆ qžjˆ^%øŽš¾¯£_Øé6Q+´ÈŸi™€FÆfXÏ^¾Yó_ø{Hð×µ)5ûynõmbñYêèp†o'.G'ò¯–¦øã{­bkÛ=BKTŠGD‰1´cAÎyë]¸?/ÂJV”𸹓’—â’û™áæIþ2Ï(f8)Ò§4•a8Q•+7ñKÙT”ÓM&”¡khÓw?QÆ¿†¾ðTZ¿Œõ‹­Bô™"†ÛíI'#¾"/œg-Âôè~@ð?ÅïüDñŒ¾ñ ï-ì“MgòE®ÜºÆ”/Ë’3øÕË› ø÷ÀZ>¥âK7‹í᜽¿ÊÑO*]þîÅiøWÂ^ øuwý§£µÆ¡¨Ì†8æ™6$JÀçh#Œ×·‚É0ø,\ñqwrwò”VÉ~'å\Wâ®{Äù‡k¥Nò·':Òv¼ëTnõ$í¶‘]"´8gøQàÍOS›RµÖ&ÒGš]âò|ÒžLLýzUо=OøoLѼ.PŒÑG<ç|Œz´ž¬Çšðû¯xÎïZ¸Ô,ožÍW `(ÁÇÌç=ó_MO¦økÇ4OÄÖÆ6¿ÜYíð­ѦDÝoN•ê.YÝÓV}ÏÍÛ­N1…i^7ÛϹÀ|ñv«â?Ãàÿ2Ý¥Ò¹·¸Øâ–5Þ£ŽªFA­;¿„^Öu+›Øu‰4°Òš#ÍÃu&6p} w>ðƒ~ßÿlhís¨Î2Î#…[ï«‘À5òíÿ|iyâ ‹Í>ùì#ŽfHãTƒ›#œž¹¦ýÈ%Q\#yÔoì{gÄÿYøKÁºW‡ü-àc¼’Œ’~óÈææ=³Åf|ñv¯âÃá8¼7Jÿg›hˆ¥±À9Sß5èRiþñÿÃ]Xñ5« Ô‹ ñ¦XÁãÜU¿xCÁ ïÆ­¤›CQœ¡–d†bêÄw5\³sæOBéF”¡5©Äß|"ðV±«\ßëɥ‡”¼¶æ1U‰Ã˜‡®J_‰Þ0°ðo‚4ÍÁâœÅ²à¶z¼„r &¼WRñßïŸ{& ¼íGeN>lƒ¸’;×ÓáüEøg§ßøÂÓ&îFIZµÖXŽß61Ó,:Ž”¢Ô¯ÊT”à¢êê8ø;ã]]ñ}·„üVÉ{óIvxdrGU=®—Sø?à­s]º¾¶Õ¤Ò]¤-4>Oœ¡úÁ'±âºï ø#ÀŸµ$×´÷ºÔuÊÛ¼È8K à¶8æ¾j¿ñÄ]ƳZøzæâÝÅɆ+kdÜò6qÊ€KØ`Ñ&¡Ô*•j¼¸}ÿ?—SÚ~#ø»Lðû ø*6x ™¡ŽiÇÌÒ1ÜòºôÉ=é\ÇÁïëÚï‹í<â×[¸µ qJ+Á0RÈAWŒkê„øâ¯ø/CÑ~#i e¬ë(îmÚXíæ2B@Y1 ²2œ˜ÉϨwàŸìã¡xWã$-õ½õÆ£c+Lª‰k\ù€®åÜÙ §žHÇ­y³Î2ØR©ˆxµ¹4šnÊé´¯®ªÞºU†à^,Äc¨e•2új‘¤œ¡%RiJ1”­£å’›OUzÖ>tÕþø3Äý棧&“+ÈMÄ^Oš›Ç£ ÷©>$x«NðÃÝ?þ¦T¸C$«¹žWÉiFFOa_¤-û%ŪøN[+ÍR]Q¹ÕÖñ§¶a+Åk:-´nÁA2#nf+÷ÈÈ!@ª>(ðÃíwÇÚG€´}MïK¹{èf`¶×WRY|Ñý•ÁÃù… y’òƒŸJùê|o•b*Nž-ò©6ôI(«ßѽ4¿}Óq?G¾1Ë0¸|VyZÕGJ0¼ç)Ô•¹²´£Ió¸Ýµw{~aü'ñ¯‰5[ø;ÆEnÖòO)¦É ”g`r20A®·]ø?àÝwÄW·‘j’i<¥§„Ãæ¦ñŒ´D3Œà׿xƒà3|Ôÿákx–Ýæ¿Õîæò£fB¶’ÊÌÿ0BÊI¶ÇØ×Áþ(ñïŽo|c&›& ¬å8p2GRÙëŸzú¬/ÃGBjIétî®·×Ôü{<Èó>Í'–æT'Ji'Ë8¸K–Jñn/Uum©èõMãñ#ÅZWÃï†ÖšaicŠ}‹5ÀžY9itú ã>|@×5?ÙøWÆ—¶º”¢‘c $J:c¨ÊàƒØ×¨Xâ'Â{]OÆ6{Ìó5´íÚL‘–dããï`b¾¾ýÿf‡v1\üHÔ :¬Í K½Œb-›ƒºFÒI;wžFÓŒsžLï8Ãäxf„ÚVI-Û}çè™îøÁ9—ˆ|IO†r¹(ÎJRr•ùc«¶ì›ÞÑ]å$´½Ïš5/Ù4xŸDÔ~+é7fÎÕ.$[¨¢U¸`cáåUC¹¨nGR6ó_]|%ø]¦é~%Sák±¢è¾6ñµÆS̸¼šÚ7ppTyŠä1<å¾^z}¯¤x~×A•íôx­ílIû4¬kæ–$¿ËŒ– ‘Û>µâÞøk©éß|k­ëðÚÝéZĶRÀ2²m–ØyŠ#®„«)öV=?*Åñ¾#2ÃbéÝAr¾]7Œ¥ãg£’6½Szu?±òo£öYÂy¦IˆŒg^^Ò£½”*R£ˆœj)Gß9Ôök—Fš‹rû'¯\Ï¥Ùêñi®â—åaµŽ]¯4qÈìcp`ŠKnàŒc½q¾Çâü;²I,!Óâ€ù„‚†í$s4%FVi<ÅvÉ  #â?j[?‡>-·ÑtÈ¡ž*÷L—U‘H~¢³DÒÇèп”ÇÈ`:G™éðQß‚Z‡¼I៬–Ú5‹,v«Ê/W„”4AI_˜–LŒ2g8<™¡“g°®­<¤œSÓ[;ÆÎÝù^ÛÙ·Ñ£õ|ËÄÀçÁcóJTªS©8¾unh¸TRƒ›vPU"ï'hóB0³n2~yàÛ{³øóàþ‘§]¶‰¬¼PèNmd™ãÌÿG‘IW™cˆ ûŽâyû¶}RËâW€tÝ;â>—>‰ÿ HÃc#;\G?—,ádò×jŽ/3ç 6°Šø[Å¿·§ƒ¼-á»?öyÑakH¡cy ƈyq££0;˜åœç#œœÝ[þ ö¿†±µ†˜Ö>&†úxkqòóíc–xJ“‘»*Çœ}ni–q&oVŽ68W 4 Ü½ø¥µÕôWÖörï+j~)ÂÔ"ñ]‹Ýjwˆql'@‘ÄÌ0¶õaÚ¾sñçÄÞxûR‡I¾—M‚Æo+l@+;u.ùçM¤xP5êÛ̬óL6ù×ðÑ@è+Ê~üJñ]ÏŠ,ôOK£e}"Bê±…h™øWFQØöô¯nðT¶?¾Muã‹Uºt¸û ÑA°ÎÜ’.8/¨Àâáo†?¼ªEâ´{ÍJ{s›xîV8ß³>Þ¥{t¯Ñ¬ÛMˉÅE©-Lÿ|ð‡ˆ<]wrÚ‹éWœG8ù±JW£Œ«c×­EâÝw@øQð¢çIðˆ’øÃ*´—®Ó,ïÀb£¢¨è+Å>(üCñÍçÄ=BÃH¾“N†Í”0‡åi†w1Ç ƒÇj÷¯ÝY|EøYs?ŽmVéã›ìW( f\nWé"ûqKGt©$¥- øsñ;Å#Ävšo‹5+é"†H¼°­‘°6?.sƒ×í¾5ø7á-sÆWSÉ©K¥Þ®#˜ù^lrlèýAVÇ^Õ?…þ|4ð.£Š•ïu9 `ÖÐÎcG_ºÒ÷ˆíÛ5àß> øê÷â-õ†•}&Ÿ±RþPÃ;0q$?J6¼4ù¥û½iñNµá¿„ /t¯«ß´2¤“O8 fðŠÌ£îªÀ¯ø}ñWÅðÚØøÅãÔ,odH¤ˆ V‹Ì;CFFTœû׺x öÏâG­B_Û-Ü–—Ketè6”e£ÓÔ~5/†~|4ðF¡ŠÁ¼Ôe·ekx§EXÑÇÝ.Wïm=)Ù¶¹A5Æ[•"ø÷Qø‰¨Xè×’éÐY²™ @wq»ql8¯qðý¯ÄO…×ÃÇVÂñ œZÏ"€­28ʸÇGSÜRº»KpjJ)Éèx‡€>)xÂ=nÚßÅ¥cvè’B#cW!C# W#žkÜÏ£í£Ô÷x_9ÿW¸‡ œJ<ʜӒ»\ÑÚQºÕsEµuª½Ö§ô/§iöÚNŸ—d ÃmÅ$± €(œ“Àêy¯€¿mûÿ„žðÕïŒîàY|Wsb+xäØf˜Ò[…ÁÊF Ü@\8ûÛC’i´K9n6ùe¶3:ä¨Î¾fèO'½~oþÜž ŠïÆZg‰õh~Ñaw§ý…Ó×ʕ݆{J ý ~ÁtÝN$¥NU\_½³·5•ìüµ?Ñ¿ñQÂøM‹ÄÒÁªýÚJqRTùšŠ©ö”y’‹èÞª×GçŸÃ/‹[µ‡ÄïþŸtéyaJ F#nkß|}ðÁþ!ñtòϨ¶—zˆ±³„±Ì£•b2`8âªx3á_Ão \Áâ·{ÍDÛa¡·™@ᑇÞÛ^=ñƒâ'ï¾!\éú=Ôšdvê²;Bgg8ÎÑí_К¥ïæ3÷¥jg³êº†~|.Ôì|.Òj.…ežâ`Í”ü¨ŽŠµà¾øµã M^Þ_4wúuÓ¤s[Ud`»£esø×½ü7ÔãñïÃ}N/@/d²‘m¦”†â)FFí  ëê)”YÝ4Á8«©’üIøAàýwųyÚ„š}ôq¬Nâ/5&Œr…”CqS| ¼ðOÁß‹ú ƒQTµŠåþÛxËbX^ X± Š7ë^!ñŸâ'Žu/ˆ—:f“xúzĉ+´C!q‘ÏeMa%×~j2øÜú|‹ “´Ì’ Øãz‘Ö¹q¸xcp•°sÑN./æ­úž®Cšâ2 çŸPW• ¨“Ù¸II'êÑýÙÞYê6‘j|©< ’9#`ÈèÃ*Êà ‚9u¬={Æ~ð­Õ—‰uK]>mNe¶´Žâd§™ˆ8•ˆ.Ä02kò/LýºuŸ‡ÿ ôÏøWÃ&ÍÁ,mî Æ`cB1,ù98#vÑ ÉêqÅ~||\ø½ñƒâïì|Gã}I¤Ôôx#Ky¡ h¹‘]DA@mÇ;€ÏÐWã8/sJ؉,cP¦›³ºmövW]¯vyñÒ—ƒ²üªŒòrÄâd¢åJ†ÜéÊj2mj£Ë›Wm#ú”…ƒ_¶–³Æn’1+C¸y‚6$+•ÎB’¤Œ¥|SûRþÛ^ýŸRßDÐ-âñ¹v®DN‚+`…Fn –u-“µBóƒÈ¯Ä¨ÏÄŠ>~¹ãVÿX¹²QŸwq,Ïå9'b³³2IÚ9®¯Ãß4;u]Vûí*r°íÀÏûGÐW¿—xo‡£^³ Üñ[Å+&ýo{|‘ù§},3\Ã.­€á|¿êõ%¤jÊjrŠ¿Jn¼Öº»”’Þ×?R<3ÿ.ø]©E"ø“EÔ4Ùã¶’`‹¶uyUÈŽa´åÓkn`ª #<~øsûh|aøC¯øÄv º¶Ÿ­]=ÛYjM"Z–‘Ü-¹¢?¿†ùpp8â¼Ç:~¥iâ·Ò4ìÚˆãY P2ÛºcŽ•î_ ü)‹¼«Kâ8åôÙ#‰Ü¦X¦SÁÇñ)úl'ä8HÖ¥ 7ŒítÛkGun«ï¹ùu㧉yÝ\3Žä©†æq8¨6æ”_2^ëÑmÊ–¯M­Èüaý¬¾&ühÖtÍ^ÍÆÎÔÙ9Óî®—;+;ïöHÈêNsW.µO‹^(†ø£Åú±´¶ˆD°Éq,ñÀh÷`àqȇÝ}¼oSÐÔšÁÿ…ú Ì^#•ïo¡·;㳑\ƒ$qÉU=°+Ó´´q>nñù÷.üBøSàÿx™ÅìšeÜPª‰|¯69ba¹w€rG¥Wvð·Â/‡ºÅ§‡^MRá£ó®®%]›¶gË@¼áAõ¯(øÛñ Æw^7þËÑ.dÓB³;Æ0Í»þèW¥ü%Ödñ¿õ›OD·òi¡LTš ò r`™{´ï´–¢´¹SoCçß üSñl7ñê~!ò¯le Ëkå€dŒía‚võ¯£~ üðV«âxãšúM:îRQš’ÄÃr ¨eªè¿~hWøŽv¿½‚,äU »9Uw^Jƒ^gñÇâ'Œ¯|ztÍàØ/Ùãž 76°^•? ÷Çu)®CÔ%_üø{­Aá÷“T¸1‰®§‘|°ûNB‚kçŸ |Zñµ­üWúÙ†êÆr<ËB€ RyÚÃ@<Z÷Ï„úä¾3ð~³aãX—R}=P<¬™¡—‚ŽW2‘zÓ´?ƒß ´y£×¯î­­ÈhìäPÊrÜrW>ÕNîÍh…tœ”õe¯ü.ðWˆ¼C²Ý˦], aš’FÃr¬‹Á 3€ED«áO„Öò˪]¼bK‰åQ*¿v5ð5埾!ø¾÷ÆË¥h2¶š¢$”¼C AèªqÀcŒW¡ü#×n|eágMñ”k¨5„j|çZXe%LnFGPzÒMs4–¢qšŠwÐðOü_ñ•Âjú›Aybã2Y²»3‚° œ¨¯¥>"ü)ðgˆbÙ²ŒpwgêPQ«·)JQ‹j¦åÿˆ |¯ë–ââêM:éaSÂ1"5q4Š3$R|­9=ÁëM8ó4…iò-t9Ù÷âŽu_‹š]ÞAµÝÈý˦Ô#¬C…R{šýc×¼3ªßx¿Gñ6—zðGbeK›|ŽxäL îåY!“ð@Å~gø{áWÃMQ‡Åpͨ´vŽ'ŽÔ0èr¿½ )äµúƒá/Úø›Âö~"$D.Qwp„í*3þ×Ö¿:㊊¨f³M8;«ïÍ7nÍ\þæú#æ¹>k•æÜŠ”¡V5)b¢ã'Ô% ÚÛ(Ê0S[Nqz\êk»ò,üIkrd ÷q½¾ÃÕŠfE#ýÑ¿j諜Õü5c¬kV¹9+>“4’ÄGCæÄð²Ÿb?P+óšN*MIÙ4ÿ-?ÜÙ•:Ó£ a©©Ê3ƒÕÚË)É>êM.¿SÉÿh¯†º/Äo‡Ó&¥ µŸO>|7>_˜c`ÛÔ†QÎ=+àû+_ |'ð¶¬tYäÕo&ƒ|óH¾Z„^ˆ«×ëšýT×ô×Öt+Ý"7òšê !WTº• øg5ù7ð“\ÔÄó_§ð)Ï[þËMÛËüÑþ~}38~>)ʸ’ŒRúÅ)BVë*RZ¾ï–¤W¤Rèx6…ñ_ÆP^¦§rðMk&KÚ2eJH ŽÖ¾‹ñ¿€<â‹ûfº“L•íÒXeÙæ ’ÁzåOB+7IøCðº]^Y/ÞÖ#æ - ]¥Ç;?_zá¾5xûÄ7^'¶Ó´:|m È `d áUO` `â¾ïXÇßÔþ6¼g4¨ž‹¦iþøWá­Xè×2ê·Ó[–šgO-DHs±TóËIô¯œô¯Š~.µ¸¼æ)mOÌÖŒƒfÁü9ê ëܾx‹Rñ6«h¾,ÅûXÛ „ÀÜQ›kÄäA‚y÷©l>|-R5‹™/žÙódÇ; õÛúÓ÷œ' r’®®ÍO|?ð–¿§­Õĺt¦Ùd·™SÌ)€q§_’Um"Ï |?«®•s.©{qyådò•cNB ÏBz“^ñ¯Ç~ ŸÄ¶ÖZ+’ÜH"’ª‹è×Oðw[¾ñ>¬iÞ&ý¬-ÄñÊê2ѱÚñ9sØõÓ‹©Ê–¢q«ìyÛ÷{y!¢üNñdw)ªHñ=© µ£ )å÷\õàqšú Ç>ðŽ¿>Ÿ$“¾žïÍ¡<Á²O›ËuÈ?/b+;LøKðÁ&ÓÍ|m£%þÅ´‡„2v~µÈüfñÖ»q­ZYèŒtøžÊbêxUSŽ‚’Nn®¥^5*/a£îwº&Ÿá/†&¥‘q&©{qNÑùj±¨ÎÄ^O'©5ó®™ñ3ÅÖ—Kª;E-®KVA±—û¹ëŸq^áð{^Ôé:ŒºmÄšôöì¯+§”‰çj)äç¹5àZoÄ/Ár5xÌ,ãÝ”+ž„ã?zÿÂjóÄCPѼBé·µ3Å4€oN6# ê[/†$˜êRK|–êÛžÑÿtI×oáœSåEIÙe S”q*ïB犼+áÛiw³<šwÚmÖky<Ы'XÝzB9©ô]3Ÿ,5'Òî¤Ô¯îmVÊXâ1Tç,@É>•ÃüWñ¦©6¥ei c„y{ÜDáQO°ïZß 5­GÄRj:.ºEá´´k¨¥ à! ñ¹•pÝý*”©ºÜ¶×¸¹+{ïîöñ¶›s<²X ˜ð:¨“fñÌl8àÁ¦èVø ãé—M©ßÜÂÑ4¥<¤Š×,t›¹ÞK»·0H«¼ qóFêpH¡¬û_|?ºêRI{ @–{hÔóÑ\t_±¾(x²þy´ø4eû&?. ¿Á|*ƒüêR•8Iâ5E·Õ‚ ¬ÿà~$¿ðª¼:8ÿ„Œûu“ühÿ…WáßúÇþÉþ5åð“x±~Q©ÏÇûTÂOâÏú Ïÿ}V^Ó üï7öx¿çü¿ÈÿÕþ®^[‹¹$”òüŸz×·eŸI’Y“y…ÕA=ÃuSôíO¿6Ú¤¶·0‡Db†ÚpOLô& ¿½Ú‹kh¾Ïa±Ô¶{“ÔÓP•*•*JWß¹éßE%mŸÈ³ ºM³‹¨ –i¢9õàdãÞ±/.%»»v›9s“øÔv³43¤–ë–$ vocëšÞÔ~ǧ-µÌ[ãFÈÁÚF{zu¨O뇻ªôê;*u]>dvƒÏÒfžPìÒ(ñ¸8û¹öÅMlúE¸°ÛJò/!Y”ªŸSÜâ«ê7’½°·„A ø%‰à±=ý+"Íå‚åÜüÅ€=rqƒëW*ªœ¡JZ»oo?4J„§'§Ïó$¾¹–æíæ¸',K1ì}ÇÖ¶¬À—G’êUßä:ªçøƒÿ ú~•6©›m«Mgqxãf µ¶°ç8Ï9üªõë›agg‚ù€–ÏROzµJ¬êÊWß@æçŒcÛ_"{vÑmÛa·šI#þ`ÈÞàúUNª£ÉN¢æÓòº&4ÝE)mwµË:µõÕö¡%ÍÀË8»Ï§µnèî×=ä“!´1”'¡v”?ÌU½itøuvµ»· ‹ƒ€v•$d€yã=»UMBõ£Óÿ³lm…¼ù‡Ìø<ÝñÚ´ös§^uœ®µü»Íí!ÛoK´_ÛŸ¶¥¤ò8äFξP#¾GÌEaj××w×ò\Üý÷ÆHàsÓÿ­U-n'‚tž‡ ô9<ëšîuÅÓmµv³»·  ÚW#%Aç ðzVPkBJŸ»ªù–ÿuWfÛOô3´7ûF‰w,ÊìY w pPŸNõfÆ [ÿÄÁm.%xù³)ˆ7\±ãÚ£½¿h´öÓ´»aÞNKÇrÝñ\Ì–× wfJȇ‚;÷ÇÐôüj§R4}œ*.f¿Ï¡1¦êóÉ]]ísS]Ô®5 滹2@0}+{ÃrµÖ~eQ)±TtfôrT¡?Ý"´µèô»]cì·öÁâÚ®6Â¥†JƒÓÕ½B[m5´­.Ø[[¸2Í!^å»â´T¥ D«9i®Ÿ#75R„!N6ÚÞŸðÃ,ãðÌÔ#´¸™ã¾Fnqž4á ^ÝJ¶:ƒØQìn¦d!¾ÎyDúŸâÇ·zç¼i­ßêÚŒwW'g˜›°¼L`+“†öêÒq¨ÛHË2«äç#üzb½¯Å1é‹ym©f rC¬ŠÛ r8Ë(nþÚÎ2Xš3?t¹GØVŒ¤¹¯~»z÷€®$¾°Ôm®GöDñ;sµ·PŸFâ¬éúg‚ÈþÓ{ ¹>o³‰a#ž‹ÕzkßìÝ*]+ÃvBe¤/í+(àô•ãÖwwV— i# †Vç>Ÿ½š¡B¢æðE n´§(;_¥ÿ3°ñ¶·{«jÍ(1+ÆTpúWA๯lïôûÑç%¼&h÷òT‚ß÷Xémâ–0QPmÀS€£¸À溄÷÷wÇPÒ.É•-­Úæ&n|·SÓ'³1]ŸŠbÓf‹N"±G[«X®fLùf9~b­ÛwŽ•Nmô&k X!¹Fg›šÒ•…ÝÓÕ¢¥%ˆu¯¡µŒ°ÞÅBÏðûÌ› øîOí)tû²Ã,m’U1_˜é\—ÄÿjZå¬cý ¨/GÐW›ZÝ^G0Õ–w[€w‚võëÆ+é¯%…ͦ™/‰¬’Uº¶Iå¼¶I©V3ÔŠÎUéÊ4×)µDèÕ„ê{ߦŽ/á.¡yy-î‡xLöél÷dùŒM1ƒÔÉ­«/ øú¶ÝØ^o»[G"ùLzçoǰâµaš×EÑçµð€·ŽíuÆï6I Ž@;àWÍpÞ^,ßÚ^{Çp„°pÄGÿ_ŒS“TaÍ\Qƒ¯9Λå=Kâ—‰5=JêÎ8Wì–ïÕDÈÚªpöF+_á&¥wuy Ý9ž­d¹Œ¿Íå–øiûGü'µ·—Ÿ ü?-ŒÑÛ¼±HùA9šMåÉÎ8ìÔÍ3ö”×&Ò Ì·~e/!‹È)° mŒ:’ ã’AÇnµóVšúg‡l%¶ðNœ Kä!î žs¹!7tÚ¾N[­F[çÕçžE¹W$8b¥{xÅiÉè{Õ¨ûI7väÜžžo§—SG'cÔhe¸õ…¥N…F”“»j0I)ie-â¯ËfÛj|Zýª¾*±0éaݘMå‰dz)ówÇŸRWð×â§Äøšç@ñn¯w¨Û]Á,ø™ÉXž YT`(=6€­P[jÞÑ®üYcí{n%ŸqòÈpp0ÆÒÃ“Ž´í,i>Óå‹ÀºhoWË’äÉç;€ øF{µèáòŒ¿ UTÃÑŠ·–¿æ|>uâ/ñx|ë4­QKFIr>—qMFöòÔì|ðçD¹¾´Õ ­Îžú¤ž`6®»ä ÅY•cæ8ÉvÝ ôÍ}#«üJøgà_YøgFÒn«ã­b? évÑF#/Ú4þQÙh Α=?Õñž+Þ<5ñ*ÓÁžÒu Ý.ßU»Ôm„³ÉqF3ÓÌ áAÁ+ëÖ¾{…¯›B£µä®¹`í®ò›KeºM|¯cö¾â,§ÃÜV0r§F¢Œþ±‰‡=XE&¤¨á£RqJ¤îãRP•“ÕK•Íý‘cñ/Tl𾔑j@u­Ò\Ï€H2…®pʽchž(ø»â‰>Òú iòPO2m#¶á3?TÛ½xŒ¿µ‰œiáÍÐGªû‹Æ …ÂŒýkâÿþÕ¿¼[ÄZ¹Òâg*ÐÙF°yxì$Á˜¬•àa¸c0¤Üg„¦›{ÊR•—’Nß}üÙû/} ø/©Ê‡ãªF1_»ÃÑ£EÊZëR­H)y?f¢“³Œ{}Å­kæ=sÄž.±ð6›.à ÚBòÈ£•Á0_˜üXoö{W¤|kð>¿ªÉðÝ#ºñaM+j×S·ÞLË D«3€P·&¼OX»$ð†}ãX>Þo­Ä—s`ÀàH®yV r{Ó´K} ÃvÒ§ˆþÚ rÝ<æoöþž¾µõ”8g± ˆkKYB*šVó¼þr·‘üë›x®®Q’£RæRž.¬±’’–ö…dèBïùis¥eÎõ¿¦h~3ð9ѯt9¼2 ‰dqo‘Ú°BBŒ–'òâ¼Cã·Å¿jzNŸ¤i³É¥iò3@-íÉŠ8Ò>=‹Àó-íÞ©y«MªjWEqŒ2©Œ©8cÅ}xaÖþèwÞ1²[†Ô-Ä·Hÿ»;áf 1µ˜ ’:÷ÍzTrì r«N’RzÝÝëß[Úýl~w˜ñÏbpt°8¬t½Š\¼°Q¦œSmF^ÍGž1¿»]EY+$‘æu­gQñ;xJþy.í$·‘ÓÌbÞCD2®¤çhÎFv+ào‡Zýôº¦§ax—û¥ŠÖEXå=ÈV;—=ñ].á¸| §l[üÇ5É—Îb1Äa¿„Û½|eys«^jÓê:œò¥Üs8à•òŠ€lWuÕ(¨ÚçÊ^Xšò©m|ø×âÍRm'MÓôh¿³m ´*«•òÖ1Âzäõ÷ª¿uMV ÝÈ÷6w1ÈáemÞS %dRsŽF÷¯Xº6šçÃÝïÆ6)wöèCÜ+Ÿ,îRBÊUˆïÞ¥Ð"ðÿ…íd“À:pŒÞ)Ž[¯7Îpü³ ÑFzúÕr?iÏs/iÑtš»0›À_uíF[ýGO¼Šfbd†ÖEXå õò¤÷Åqß|Wªbéš^‰ ÒìÃ4Š ùhƒ…Î ëžõà—·ZÅî±6¥©O*\Ç+ †+åàžž˜8¯±wGâ†Ú£ã4¹kØ›Ïßò¶Ô›pÁV+ÔŽµ)ª‘”R±rŒ¨¸T©+£ÉþjÚ´þ0O ]J÷vw±ÊYdù¼—w¤ŠzŽzúŠô4ðïj2êZ¶Ÿyìäɬ#™‡ñma•Ï}µÑxzxZÝåðš#û`òe»ó|÷ÁþÙùAã5ñ…ýæµ®Ýj¼óEq θW)åí8zb‹ªQQ’¸G÷Õ©û§¿ümñf§¥éºM±,ÖÈcD.x9oZÊø¬êíãð¼ó=Å¥ÜrŽB[Ëh×pu'¦ZõÕ¸!øk¢^xÊÍ/>Ý7"OÝ’#$$Áº«‘ÔŽµwÖžðÄ-74À†èyR]<öP€ü ÓQn|×'ÚB4Ý)-u0eðßê’ßjš}ÜW !2%¤Š‰1õ Ù žûkøÓâÍJ×Ãúvá»vÓ,Ãý™Qr *Œ“Ñë_>ê·š®¥®ÜßêóJ—Ìë÷Šù{O@#öe´‰®ü.Ñ/¼ah—ÂùN%ùK,lBK¿¨b?ˆRæUŠVŒ©8NnèñÏ€¦«q㘼#q4—VWÑÊ$%„M—YA= õ¯R—À_ üIªË{ªÙ^G;1óÒED˜ŽûXäg¾ÚÞðÅ…ü(wà8#Ý~â[¶”Îê§øþzpkã-nm[Sñ5íæ³4ÑÏ î£kòÀ†øáâ½J iúW‡mÛL³ý:Å íÏfn¤×;ð YÔÏ"ð¤ÒÉue|’YI-‘w,ŠOÝ õõ¯i·“þ…ZÿŒmí¯ãe¹Y~Mâ&Ärä}×Çñw«²ð¿„Á¸ðš#k¯ÝKteóÙõP‡?­)+Ϙ…R0¥*mjs÷~øuâMfãPÕl/#¹i ‘meEŽr7mb'ãšä¾6x²þËÂ6:g†­›J³I~ÌŠ ƒ¨éÏvîkç½~ã[ÔüU{}­O2\[Ü2m WÊÚÜcž8Á¯²ì¥O|%Ò/¼if—¦ïrL%L‹ÂKžlæN+A¸ºj.Nç‰üÖõQã«o ÝM%厧½%ŠV,¨,²)<©R9"½n÷áïÃk3ÝêÖ‘]"Ai"¢NAë´Ž õ»á›_ øMN¡à 0$·_¹’ìËö†@ÇTÿ=Í|Oâ gVñMõö±<É4 вyaN9õ/Ý´F¯VmÁØú3ã_‹õ 7Â~á{s¥ÙE7Ùc\gæ>¬s“Þ¹€ºÖµŽmui¦K|–†ÚÌÆ·,¤(­<‘F¯)w³Œg#$bü¥Á¢øJÓMµÒ…~a[ë'“ºFlnBWœîÂ’p:WäÀoˆ‡A¾ð‹E(»ò¹YÉI$¤¢õm7xÇŸ|Zñ®€<3ðŸ]MïæŒj3³°ž@o²S‡sÔ–^œ0ä×äÇÅÛ[ð߆t_~ÎÖ·¾´ÑŠÁq5ç•4×[#H£óѕӀ§vKOlWêÿÇÉû=xßÇ:”ú•¤7ñG©^iÒÎV‘ä;¾âDŒïm«»¦1_~Òž%ñœs Û¹ÕãoºñÜÙÎö­¸,¥˜açSIJœ»¶²wRæZÞÊÖ½ÒÝjîyßI,ÆpÎe‡Âä8ÉÒÅVïRr÷ œeOØÍ¤é©OŸÓåsjÒÑrŸ6øJ¿×|akkp ¿Ú„hÀà8Ø?„  W²ÍðA¾Ô¤ŽòÞt‘©h&pÝýÅ}á ø;¹Õü¥+\#NÓyþP<¿Ýúõ¯|hÚÞ¯ãÝSûzYbûÁHâVdU°1×®kõŽE«ÅNR­Qɳ{â6‰7†|©¢Zµ¤I2ÃóY7ucî}køu¤ÜÉâ»-&gkˆï$I|Ù Ì= õÍ}›àˉµÏƒÖ÷~,uižÛ3ÿËxSY›ÕO«é¯Ù·àW,õ&ø•y¡5¦—gnÓGsq!•§?"œ’Š7@9Æ2yÁšæ8l§£ÃùL}é¿zM>XE|S›[F+wè·hé¾ üðÿÁÿ‚çaûqükÓßÀ—?´}ZîÓV°– ‹˜'¶ÎótTˆÊ¥vy1ËÀ(s€ Ü2EÇŠü/ã?ÛG¢jm~"³™¬n¡ ·g.…× "Ü€<”ãð[áÖ›&­à‘©kˆ5’âX¦çωyÜÄó‘ÏÍžµù¿ Пg5ó\Âñ©N\Ézè–ªÉEE­Û¶©ÅÕ¾3æ4<2à<·‚¸_–¦EҔﺅªNW„”œªÊ´j+ÉÁ+¥F¬‘ð]Öí|}§è’\M}m©H ž ¸*ùÆ~éNµôgˆüðûÅ$¸Ÿ^³ºK¸ÛÊyìäTYÕ8ƒ ÆE;Áš_‚ü"¶ü¦µ¨òÚá§3˜U¸8ùN8Î+äO‰sëºÏÄMN=ri£û ¡ Xñ¸>3»©5úÚ´V§ñgñ$ùt>ø¿â‰ü+ðÅ´Ú¶™mi*[¦yt~iž7ZñÏ‚ž ×ô¿Øéq5쌩ż¬dWY?ˆЯ\ŠúÀ·—Z÷Á¸.·­üDÔ£Ö¦™ÒP"‰X T8!ÆZïô«ím|§øÒú5½ŸL¿C\.õ™ etó3÷Àa‚{Šòó| <Ó-­€žœËñÝ}Í#êx/ˆñÅ8$ÃÙº3M§³‹¼f¾qm|Ï調!j߆þÔÿhKÍ[_´»P‚ܬöí±d1ĨђÃieIÁÈ =E~®ø_ÄZg‹¼9aâA-®¡w2œ‚²(aøŒà×ççüáÞ±âè^5Ó’GƒÃ÷3 ¯-¶ìŽèF‡WŽ›½+ñÆgq$)ÖÓ8;ô{¯Ÿ2Kæ¡_Hl“ýhðŸ‹À·7A¼yUù¢½Ù?ENrû.ÇÇß|Gqà¿…M£øÁ´Ë{IR5 ’éæŸšVníï^)ðÄ~#Ò ñD ¨¢Ü½˜û@Ü'¶1<§ 5oø_Dð…%þÛðNŽyËæµÇÚ>Î Á*¤¿SÍ@ÙÞéŸæji'Ž7â_¼­ëWrê6· ub7ÌÍU<Và‘Ó"¿AÿcŠÖ¾5ð žû+ÚÏá‚Ðol™ `ÂÁ‚=zg¾âïÅÉõÝâ&¥o®K*¥“†%Wiä?së_OþƬ>xõK/ö^¦?³„ø µ¼Ähä’2‰ó†nH¾KŒò·šä•cNœ=è÷ºßïW?gðŒ_x…„­‹®¡†¯zU[µ­$Ü[onZŠ.ý®¶lý¦ñ®†þ'ðv«á¸¶ï¿³žÝwýÐÒÆÊ À'<ñ_;ø9à{Ïá[ß‹5HþÕ‹vœÎËoL‚ú‘Í~Ò×Ä_µì…ÿ ëV‹Åš¦4ÝBÖÕ£â;‰C.Ã+©%B eBrAä Wæ\ÄT²ld°øÙZ”÷ÓiifúÛ§çÝ]ý!<.ÆñæEK4áú<øÚ $¯g*nüÑÚîÓ×Wk'}ÁßüA/¾\èþ²m:ÚÁÒ4ó>i•¾iœã–¯ø;âèþ9Ó`û\÷±j$JÅÕÖCƒ×¡{=«í/Àß¼ðþóÂßôãsu¦\sæ~ú;‹«3Œî@ÇÏ ðpxÇ…ô_øRs¯øHC}*$7R¨IÇÔô¯ÝhÕ¥ŠŒkáæ¥k4îóŸ€ÆåXŠ˜΄©Ô‹iÆI¦švi§®4/‹|àøžu×-®VêaލdE<+«¯@k”ø£®ü+ºÑ| bú}½‘UO3æ Î{ŸzùÏãÆ»­üHÔ-5ÙæH­y+R­Ï™Ç\ר_txëá¾v—>·Ò"ñ³‰ #æFnŒñ»&ðÿ4ò.æ½Kéc‚âÞVód”€Ço8+œ‚+ëo|=ðˆå+tM/~[oÍöåÜù¿ã—ƒ~èÿµOëŸcÓîü´ j£Í3¡.y'*æ'Ž3Í~`|@ñ,^øIy¦|=°k­ Òe¤Ý!Á•ÉñÞ¾Èÿ‚‚x†òƒþÕíÖÚÞçP±K–`Ò\Y¿v(#ØI9Ïá_|¼Ô5_…—c_ˆ_ÛÛN-¢óÆñ,,¿ø·Å>ñ]Ìw³Ý}ªdIà‘Œ‰2ÈÁHÛÏ© ר>6ðÐ<áç]{ÃBË©@¹œÌ"í¹c'·bGó·Ç ¿kÿ®lu™¦KhbI"D%Cïä¿yâ¿møcvŸ×S—»¡ôwŽuH>|-ÔtOéïeœ~né¾iÛÊç¾à+å‡.ñW†üKcª¥ô×ms4I4±‘'Y+)Nƒ œÝkꯂ×Úž©ð¿S‡X_·[XN°[4ÿ>ø¤\¼%‰ù€÷é[¾ðïÿÞÿÂEàí95+_™TÎgH÷–2zŽÄô§kµ"T”L½ãßx[ñ\–zí­ÂËÉÍ«„qäFå¸ltë„ø-‚>jZG´é,ⲌJ|ì´²;°_5|Ú¼'ãïˆuïˆóiÚ¼ò­´pG4H…”9q–s޼ñí^ÿðCRÕµ…š¬zÀûteÂCj×>øå\I 1å€ý)Ýk‚ÍE6ô>'ð·ö¥¶µizÓ½ÓÍ"þe9€9ëž+ì¿|!ðUæ¸ÖÕœë%¾.-Ýcm‡»ålfºŸ øoáÎuý¹á]95 _™c3™’?ˆEž1ÛÒ¾aøá¨x‹]ø‹>›«M*ZÅ K #¼Îq׎ø©²Š×Q·Ï+GCØüma§|>øy¨Ùx+M{Qkš^ožI ãy8än•ó?¼Câ?kVÚݽì·2Êêe…˜¼r«06ÿµÚ¾®ø©ê÷ÿ5[]X5í®Ÿ"%³OûÂË >d$Ÿ¼=»WIáÏ ü6Ñï½á½9u+_Þ$fàÊ0îX³Û¨ÎqN×ùnž¥ïøÀºÏˆšÏ\²™Øb;‹Wº«`ùl[ålvÏJç¼]{eðãᾩ¤|>Ód´Kh¾ÐÆr^Iœü¢GaÁ ¯¾:j!×> ½Ž­4«l"I£T%|Âÿy³Ÿ›ï?¯õ[ÜZ‰7Ði“G «\~𔕠’OÞ^øíBjö°¬ÔT›ÐùcÀ^-ñf‰âKv+ùî%žXüØœ—Žev¯N‡ŠûƒÇþðN½âSa¯YÎÑqÍ£ˆäTn|·$ÊLÖ/‡¼1ðïH½þÝðæ‹êVù‘SÏ2,-×+N1ØcŠù«ãÕÿˆõ߈Ùz´²¥˜¶KˆB¢G¾ÙÎ_J>ÚCoÚI(h}â‹ëO‡_ uM#À:t¶«k œ¼Ä<’»q½›€BŽF8¯Žüâßhý®¹ ýÅÄîèeÉxåÜØd+î:WÕ¿¯µ[χº¬Ù¼¶Ó¤D¶i™•”~òO,¾Ý«sÃÞøq£_mxsDŽMFØ™/´y©þòÓӰ9Å;]¦%.[Å›=ð7¼A¯­Ÿˆ,çW—qm"¤‘«€Þ[Â=+Ä—ºÿ‡:¦‰à6KDйi';äùÙ»íìó·Ç½CÄzÿŽã³Õ&–;_ M¡*$fûÇŽ¸5íßõRÿÀzÞŸ¨†½²Ó/²4ß> ™ó ,~ò÷ÁéBi¶ƒ•¨ó\ù[Á¾/ñfƒ«[xŠBiî£edZ)­ŸË’0à3FžVúÖ¹q¥ü:ð©¤x K–°›‡šsæK3„°!sœ ùûãÎ¥âmÇ ¦ê²Ë›@'DBTHÇït<ãÒ½çö|Òüw¬ø_TÒ¤´žúÒÕc{6K ïÄ‘l¥zŒàTNµ*7•i(®í¤và2¼Ï5ª°¹e Õ›Ú0‹”ŸÊ)³ä ø¿Æ-ô>)ƒQ™îIÞQ˜´rçø tÃt¾çøàÏkzÜv:õœÊb)­œ$°ùª£%¾R ’0kÒü)û1h֗ɯ>‡mgt„H‰,í,*ùÎDK•ü `WEâ¯Ù[Iøƒ©%÷µËÙ"-oi¶i;³1ÞO°â¼,OäxEg]Iößã·â~Ñý¼_â”r‰PóV”iÛþÝ“çÿÉOuAið÷Àš¾ðÿKž!»]K,ùy%uû¬Ì6¨äÅ|·ðîÏãþ¡kâÏÁ©j#«7—’@ù<£6àŽ+ö‡Â ü#à¯ÙøgH·2[ØoòšáŒÒä–%ß'œôéŽ1ÅwuóXž>5°˜›vüùé¶»Ÿ½dC Μjq&t¢Ú\Ñ¥O›V½ä¥&¬“Ñ>WÍnovü§Å^!ý›‡fŠmjÈ[$@eŽo.x÷Œ²V@z]¾‘û6ižð¼þð­à²ûKn–gC4ŽØÀ,IO»ÔÅ}=A¯ ¿g•_îåzE~·?aÊ>Š~e´Ôq¸z¸—mêU’×½©{?ò>kø[û2øSáÝ̺¾¯}s®êõ–åŠÆ öXA*?àE«Õõ+ïè:_ö71Ùî?¹Ž»£çr•CÁ¨¿áXxJ]\ëZŠ\_É»z%åÌ÷1F}R)]‘Çj(³å(\õÀÅyxœÆXšžÓZu6vÒ*ÿù2ÿÉQú&CÀ¸~À< åx\´ ¤”«MŽy¤½Œýë_Z²{uV9ÿ j7Z–%½I–Häxó2Ù±ÚáH0Á}yÍt”Q^ez‘«ZUaTÛvíä}öUƒ¯—å˜|&³«*qŒ\Þòi[™Ý·w»m¶Þ­°¯Í¯‰qØü4>&Ò¼!¦¼3Ló]K;æVbXÇD]Ü-~’×È?tcOñÆ©*ùºuÕ„w0î\„¸ŒùR'ÑÓi#½}—bU,Öxvþ8»z­+ŸËL,†y‡‡X\ò”nðµãÍå ‰ÁÿäþÍ|ÏÊ]Å^)Ó¯bñèÃuÏ“ÜNžÕâ?õ¯k^$·µÔ^Hmç‡ÍÚ™Píœÿô¯Ö-ìÕ÷?Í~eVj0Ð÷9âÑ>xOQÒ| ¦O’ÀÓK=Ão–}@Û€yÀ¯Œt¯øªÂí|M¡(ºÉ“‰CŽJô=1_K|Ô5iôíoFÚæÊÆ¸‡Í%ü©‹m( ίU®§JðßÃcý©…º‚4[ Ï–XsŸ'ëÛ¥6¹’h•7(Í\ßñ߆ü)®Ïgeâ)0öñÜ$–ì#–ݦPΙti!i¤žäïyŠ”d `uÀ¯øñ¬ø‹Xñ ½û¼V×Pv§ÊÁÁ\Œ}ÑŽ+´ýŸîõt½kMwi­l!I¡2e¼¹I!‘I'†GCU'>Tˆå”hóóiØùÃGñG‰­o¢ñ*ÞÍö­ÛÏÎJzmzb¾Íñ¦…á}yì ñ ŒŠ&‚;„xI iY}1žÄV—áφçP]R-Q_Þýg>^ñÎ|œúó·§µyÇ-oÄzÞµe Ï¼±\¨,6ñŽž•6öPnZš¹*Õ#jdz¢hßü;{¥x+O$ž,·7,IvŒ…~\¤ ø÷OñO‰¬¯Ä_Ì·Jw¯$¨#¥:=1_E|»Ôå²ÖtyKMeiÚc/ó¦ÈôÎVº /ߥ¾þÒ‡CIuL‚ØOû²ýy‡<ƒýÞ”Ü\í$ìLe3”j+³{Æ…uØôïøH´ù#±]ná$·yP\œ®Üö5F!£ø×Ú_‚´é„“ÛÉ,·$;Ͱ Âã<àWümÖ|E­k'QwŽ+˜šBmÔà§°^º¯€wz”¶ÚÎ+<ÖvV¢ê"ÿ7“0l`žpW¥>uí'ÙÍPçæÓ±óÞ™âÛN¾ ŽöU¸ÌÈo—ýݾˆ¯¯#±qö›hîÛ°I!iÌ#'øOAYZW‡þKz/Ɔ’_©2}g"2Ýrbýp8¯+øÛ­øƒYÕ¬¢¿/¼Ño*™Uf>€v©åt ùµ4çXŠ‘5ÊÏ\ ¡øA½±ðm„ë%ÌLò\\òHªW€;â¾L±ñ¿à×Eì©p°!ˆQßzzŠ÷Ÿ€÷úœ©ªh…Ú[+kCpžgÎ"•Hô 8+Þºk áýÍé¾m9oÃy‚œˆÙóÔÅŸÓ¥‹ª£(è(ÍP©%Q_̽â;øŠÏKXÉ›Ëhùo ºüØÏ[® Aoƒà­òÃÁÚ}ÂËu ´—7,å2#]£d缯ã6³¯êÚ•¢_f+yЉ•¡ÀLz(í[ß/5›UÑev’ÎÚÉî“qÝä̤*íÏMàG|VŠiÕä·Ì^Êo ÏͧcÂmÔg91{žÃŠr¦êÆ2‹µ…ª5%Ë›oé›^"Óô-oOÓ&×ì\ ët¸>WÉ$R0ä©r8Vôj̳Ò|s|o.4t’ð±$Oµ$ox½ûŠâ>/kZæ­s`÷ ÁÁ”ªü£ä8àttš‹¡ Jn÷.Rz°Œ-¿Ë¡×§ÃχeAƤr?¿;þßÃÏîê_÷ÜUó’ÀÊ¡An«S¼–õoÍ«/mùôtý^·üýgÿÖþ$,Ó7œrO ŸZÚ²3.‰,ì2Aåž§'¨£.¡y¾¥=¹Ž9aÞJ†ÀïŒC%ýì H_ }Á ~=iªj•YÔŒ›zéýt=')N1V²ÑÿÀ$³ÔbtÛHEÀ8Éo} ð®+rÆå¤º$9Ëz[E‘ÁI˜¸+޹ÏZèu;ø­µIâtI¢ÞJ‡çÔÃ5 ¬MæùlþEYS©h«¶¾d6-2è78ÈŽd3wb>qÎxÅ>×T\n±´ƒí8ûéËR œT:œºý /’3å,c>`ïõ¬k$×Э -&õÀïמ•¤ªJŒ©Ò†¾äJ‚”%) yæµÐ’^¬çæ¿ø×C¦£k©\«å1ÇRFZŸR¼‚ÏT¸„¤rÃæªë¸sŒ‘Ž@ÍRÕ&½Ô `Q ƒå¬c =Fz¥MR­:ŠWjú ÉÔŒU¬´ð 6šš ɧY·@¬\’8䪞õÎÝ´¦àÉr /ÈÏóÍ%‚Ì÷°Çi“(` ÿžµÔë7ÖöšÍÄr¬2Ç%qÏZ‹ýbƒç|¶!¤©Ô´Ý¿®å](Êt «–'lR!ˆ‘Ÿ˜ýå†3SYê;XɧYÀ.Td0ê=H Æjéõ JÙ6*ˆ>RD0ƒF=Zç­–æ[Èc´Ì\l¨9ÿ\êJ³¦•×ü›‰AMJsÓ®ú|É/^wœË9$È '­tZ<—Ø7s±ùb‘ LÝ7óO;UísP‚Ï]ž/*)aݸ+.àvä§Z£©M¨êVacEøÄi î1×5Q§x‰ÕR»×N¤¹Ê¤ œl´zýög©Ä§ÌÓl` pÓŸP¤ã#Ú¹ýE®$œÉsË¿ ·ñzš¯h³É{v`™K  sÅw楞±5»¬SEÔ¤ƒ 69 ŽG>•’Yõ7Ëf½ ²¥UFš»jûë§õ¡Ÿ¢É8Яf')Cc8ryðê*k^(m:ÊßíC£¹þðRq‘íQj7Z–©f‚ز8F#¨Ç¯Ö¹(y®ãKe-6á°/]Ùãõ­'QÐä¥ußü‰T•E9TÓúêZÔ^éîL÷lYäò{úþUÑèƇ4„……£1Óy'pxÛÔUýkQK nH%Hæ#rÈ»—~>b=9ªúŒú¦©d«kå‹eSå¤#jg©ë¸ã½Z¥uçYJï]:“)Ê¥8&¬´ðÓõ îÓìmçP܃ŸUSòçé\Φ÷R]µÅø?¼c×'Ÿo­Q´Ži.¢ŠÔ6å¼£­I¦ê¶0“OÓmôr¯»’qÕTœ=*MBïUÕtßii´ìH0êë“^wÌ÷) °&bøE_½ž:½jåQáãN s.ÿäM:q­Ï9iòëúšzüš„Ú‡Ú5-û¥\å†3ëǵu^ {Á£êl¡„1":“ÐMžû°ë[~&Õ³5²ß,3/”†D”n`_˜€:÷ª—·š¶³¥ù:`‰,°ÛÜm]þ„v'·­_±QÄJ²•üº™º®¥ÁÅ$í¯Mÿ2=3V´’e{ 6ÍõÊÄ1oUSòç5Èø¦KùïÖãQ |ÅÎO÷³Èü+žŠ—m­QÆp¨£æÝÛú×µø«UM/\0Þ$3FÑÇæ¤«¸B€äs‘ÍDZÄÑ”eîÙ¯N¥´¨V"½þþ‡7à´#UcŸ*$FA6HÀϨëW´ÍZÀβÛi¶o¨ðP“†Î?¹÷sž˜§ÝÝêšÞ”mô¸á[@­¶;q…ߎAwcÖ¼ª¦7 o “q•P |ûý1õª•G‡Œ)¥ÍçóèL)ªòœå§õÔè<].¥5òÜêe‰‘r éœóÓҺ߇æèéz¨cûˆbGVô—?.ÜúŒäWEâÍUtQ!Ô ãhÓÍŽeÜ<Ì Äc¡Ïz¡s}©ëzIFX"³Ã[qµ|ÌgçrFqšÑRQÄÊ¢–½ºíùºŽxu“¶½ ú>«¦Kr×N²“R£9.9ÈSòî®;Ærê·7ÑÝê»Ç˜™;¸ùÁùGjå„7 "ÁnŒn7ª£¿< u¯}ñ†¨º6£ Z’Ã0hcûBJ¡Á˜(ÜG¿©¬Ô¾³FjK–Öþ™rŠ£^<Š÷¿S•øqö¹4­]Ÿ?g†xØŒ…œ”/l‘×Úµ4­_K{¡-¶›bÚ—TüŽvŸ”šš{íGZÒL:Ä–,ލ (—¾ãÎ ¯‚Þá§[XUŒÄ€ªÞŒq×9§9ýZ8%Íçóè(SUå9=þµ:ïMª]ê\j۔ʇ;¿¼?O¥tÿ ä–šª¦~Ï>fOÝYAùqž9ï]o‹5DÒ/íàÕ– ƒBž|r®ðe ó;z¡>£¬èím ¤Ø#e¸Ú<Â8:çÐÖŠŠX—UK]íÔËÚ9áÕ>]^›i:¶-ÒË™a&¨§*Y±¹ñÁîÂøê}bûSŽïWE9$`o‘øW–³™Åº£}£;U;÷玹Í}âMt;›[}lC1kh¾ÑÃx2…ùŽ;SY©}bŒã/woéšI{ ±p\×ûþGð°^<:Äk¸ÚCmæ’z,á—Ë žíóVèox¤i–ê€å2ÄݾOºZ®M©_ëÚÛxu`†Ä†-†Ð%Ç˼uÉè ë_=%µÁ˜Û*°ºÝ´&ýݰ:ç4JoA+ùÿ‘¦±©9{¯·ùÿÄ+f÷Q†ãU,ªIì7ƒ†öâº_„æáàÖc ýš( ôYùqîEv~,ÕaÐ¥¶‹XȯoÚbwƒ6ѸãûÃŽ•šÞ¹¡µ·†E¼6x*Ùv)or{ÓÙ/¬ºª_.»J«žÙrÙwé¹GOÕ¼;-ú´ºnŸ6¨U™°KöùGÈZ¸?ˆ·:åÖ£ή\, ä‘¿<¯d óô³™%®„\îÁL|û³Ç\ç5õ‹u8ô±Ç¯,n·ˆ\Ç2ïV”N:î©„¾±JJjÛLÖQú½X8ë{ÿHá> Ùµà‹$´ó»$À,ƒÙlÖørkåótÝ>m[p(Yˆf|ðvýÂßZÐT¹Ö´F¶ð²Á‡Ì¦;eÛûÒ ƒ®x8Í|ܶS-ÇÙdGûVâ»úÍùàzç4§7Bœb—2ïþDÆ Rso—úþ®z7ÄéµûÛëKÍh0ICn-À‚¤vÇ®‹àÑ»•µkhà íLžU&÷d{“^ã=Sû==uõ†f{H~ÙÊZ`9ãûÀc&©AªÝëÚ!·ðªÛçüÀ¥²íR>]àóצkOeˆu9µí×þÍÕ”°Š““ëÓs/NÕü56 ´Ý:MT7˼á‹ö%>éjá~(\k·×ö·È`0aÐîã°¼Ö+b›É™í{¶” ù›ûq×9äWÕž(Ö?áµÓ“ÄFí#û\s®õiwø±ÔÔEûzrŒ•%«Ö„£¯ü7Cξ ›Ó{©Ácf¶®Ògî$€(Œñ¸óŒWQ§jÞŸRS6›§Mª’<³#mfqвçaoÊ´cÕ®uý íü –°XàîŽÙvbBÓ ëøšù€ÙI¯kw}«;JwïÏsž”ù½„ –¿×@Œ"¤äß.Þ¿3Ó¾+Ïâ;ûûK½l:Æå•²6€êq´Ó³ðgí§PÔí¢ÜlRÍ䔟¸’‚<²?ÚÝ^•â]Z_išL~)òW²„^Er7†Õ¿·=sM³Õ&×ôWƒÂ+mˆÜ-—f$a…2wëКµM*þÓ›åÔÊU_Õ½“Ž›_¡e©ø^}IMö›§K«g dm¬ÍÛ#…-õ®âÜž!»»²¸Õƒ$RVåP㢞ØÇLW•6›<=­ün·ªÄ20>fþØ“_\ø“Voi:bø“Émöq È®:³Ð©çpçµB—Ö)Ê2VþºšN V‹æòÿ#Í>-ÌšŽ¥mãd,Ùå‘Ô,ö³]–­á õEž›§Oªg†‘¶³0Æ (%Iú֥޴ÚîŠöþ [X,‰méj»—Ìï×ð¯×>]hÿ 4ïëmº¿ÔníÙN|×TXö_gŽ\vÅgW ,iÓzó;.Û7úØ §œ¬^# ¬¨ÁN]Ôy£ ¿œÕÿ;Ù=Œø’þ{[a]cvu—tR: •©ð/$ÖuKÁ:p²‘ç;U+ä°=›vGã^¯®j‘øwGѓƆ/žÒ¿IPI¸Žû œ/lŽ{Šî"×~Þi–ð|:Ž[Ý0>oR –c{2‘³žŒXŽÞôU𧉋JRml—eÕ»%óeeù{Çeõjν*PƒI¹ÊÍó;]B*U%mäã’ß¡äVš¿„eÕ—ûKMÓgÕ·|¦VÚìücr¶zf¸Ï‹ö¾7ÖÒËQÔ-g6áÝf*±•[Óµrž4¹ðšøÄOá&Ka€K¿˜†Î×!‹ÈXõ}à áB€}qñ◈LJô¨|Wö{;Ym—íVI€çnÖ,ÄãÕ‰õ¬lV&P¤¢ž÷v·É^ïço3ÑþÌÈ2éb^au' )ªPæGo‹žN]ùe'§ºµkç_€ñ_>¹}e&ÄZ;Ì ùcaþ­¹þ,ô®Þ×VðdÚ¨][LÓgÕƒ †FÚÌßÂYAO±­/_]sIx<¶°XŸõÉh»ò>_0qžæ¾@ŸKšÞòk]J6ûYvWR ±=‡SžØ®§/eÆ*çÎFY«)·ËùüÏføÑuâ[él®5•xâfd‘@Â+‹Á tÅMðjâ«»+ucbl¥k°rcB¿êÏ mÜ W°k”¾ð®Š<\b.Öª·qÜ.ðßÜ §ø€¦i^"^ѤƒÀ«i €âxíË!Žv™\gôªä^Ûžúþ$*­a._ŸMÌxuŸ _jÀëÖmÖ®Xl{™6Èì>îà>R~µçßî¼U~¶7:ª¼pït”(ÚªÃî)Ç@Jñk:{KË‹-b"/|ƬòǦSžÕö>§¨ÝøgÁúñsD$6H—‰t«à’ÔÿLtæ¡?kMÅ«ÍJ”ãVO™¾ç’üKÇñMÕ•ª¹±û$­pÝRòØûîé^ŠšŸ‚î5pž ÓôÉuLáfÚîGÝÞÊOÖ¶ôM~Ó^Ò^ßÀËgogœL–©°†# \qžý+ã[Í&êÇQ¸µ×bo·y„:8;É'‚;œö"†ýœTb®LcõšÒmòè{‡ÇüSyŒšŠ´6æFI@ùUX•N8 Ž”¿³äsŸÜÙZî6-i1¹^Êî1ÞÝЊö GQ“ÃÑdñO”­.£ºPÊÃø)çpZv…â;{F’ÛÀÙÛÙîÿHK4Øû dÏÌF ®[Ôç¹ÕÇ*\¿35OO«ªx‹MÓ.5@ØŒÌÛˆû»ÀùIú× ñÚïÅwö–w²©¥]Yê—vÚüEnüÖ¬ s“Á_P{b¾×Ô5+Ÿ øÃïã#›ìJ—‰r7+&vOV Š•/h¥­ýu*pö…Dù¼ýœ–øøÚâÊÐ0ÓÞÒVº•B£1¶zÝÓµécVð4ÚÊéúdú¦áå¼ìFé'¶êÛð÷‰lµí5­|–vöAÇÚ–Ñ6°c÷Z@y#=Jø»UÒ.ìõ»Ø|A Ó;¬ŠÙÜÇ'}AíŠWä‚K[”—·ªäýÛ}ç¼|x»ñEýŒšš40 Ìrª€©ÇȼqŒtÅPýžüøá´ûÍböÒµÒòP(_•›¶wtï^Ýu¨\øWáæ‰7ŒL^cÛºŽéCBvO%¶þ4¾ñ.Ÿ®éÁðñ,íífå-SkóÀ.Í·?…R‚öžÒä{^Z.—/ÌÆ}OÀkbéÚeƤlfvØÍÏÊ\t'ë\ÇË¿_iÖO©Fð[‰Œr¤cj ÷kÀ\tÇà:¶“=–³uˆãayç0u“%ÙI8#=A1_i¶¥}á_†~˜„¦Ø­Â]Û¢-ûµu=öôïR¤êÆQjß×Q¸*.2NçŒþÎQêâ±±Rld¶œÞ®sÆ©•cèÁöí¯S“Vð-ΰ±ø¢ÃKŸPÜMrû$|tÞñ­ß ø£K×´É-þ¥•½ aö´´O-ñÐÏÍ·8ö¯ŠµmúÃÄ7Öþ#Œý³ÏpÁÁ,ÜðS=A1C~Î)E\}½VÞ‡»|»ñuöc6£ÛÙ‰ÌSˆÆ1ÝŒá=«öy[çøˆ–6 ‹7‚cv åB…ùY½óÒ½Òûï |2ЦñSF’}œ¥Ìw`0hrLk"ž¤Ýj߆üW¢ëºt–¿ÆÞ ´­¤b9=‹ÎÜþN ϱ*œ”¥K–þf-Ƨà õ¡‹tý.}@1µÄ›$|}ÝÀpßp_´ÇŠï4[V¼­í’a©‰Ý—øOjñû‡>+ñGÄ9<¶ms®^ܼqBåU¥', ]¸ä‘__Cý¯á/…ú$¾'EWKy<ñr»ÐÛ‰MýrN+mNrt[Ié§]om<ìíèû Š…ccM¸6Òv|·Vm'µ×4nºsFû£Á?g®ÓâbXi µœ–ó}µ2J,!s½½0øÛŠö ­OáüšÇÙüce¦O|›·Ù# ñ¸¶kÖ4ÿ x¥|м) ¦¢ßm•æ†ÜÄdLðç#qNàž1ÏNkó¯Äº-ÍŸŠ5ñDgífvÈaË!<õô¥N½‘½ ©YÙÙ§fºiÔÓ—ãð•cÂŒé9EI)EŸ½¤®•ÓèÖŒúöƒ»ñ]ç…­žê6··";„‹cM¿»tÁï]_ìqðîOxƒVññÞ>‰¦ÂùlÚ& J«2HÁˆ 5b=+è¿€¿ "‡´ªää¹Z—3÷Vº=lÖêún´¹óž%k>ø‘á­sĉ ®Œ—¿bÔREżv71´O†ùv9*W¸ôÍ~ˆê÷‹l>5'ƒ|GeðûQÓ`ZxT\Þ8 û¨ÕüÀ<½Ñ(*:dpE~MÎ5]á‹7ˆØG.ÙA[Ž¿f.|¥p}º{Wè?À¿Ãðûöu¶ñ§Æ:ê+K F5Óáhät–Dx'Žù÷+Ë)pJ€ß(¯¯ãœ yéfP\Ó’öj?jïXÊüQ~º>›Ÿ†ýøŽ´hã8['N7õ—WOf££R•kÅþê¤uÒQ|ÐûW±ön‹áë#Ḽ)w¢Û[骲Á%«,eQñ T«¬‹—%ˆ`Hœ[ðuÏ‹nôÓsâë(,.$–såBûʧšÂÄeKv ãvqÅs¿¾-ø á%¶›¨|D¿M2ËQº©q*1ˆK±¤UfPvga!˜màçWÎ??à _³×Ãø^=&ú_]Äzrn=·O&Èñî…µ~SCšæIý[)ó»Ý)>÷Õ»zß²ÔþÏÌø“‚øJIæù¥:Â*.Tâídãî$¤ì“äQI{Ó²µ­öÌ HK3ìP»›–8ÉéÉïR×à×Äø)ÇOÈÐü1·³ðÕ²åUo.qþÓL¦<}"Þ¿Rd?‹~#øÓðGOñ‡ŒJ6­³Z]´j^H\áö€—B¤Æz+³4álÛ(ÀÇŽI&ídîÓwzÙ[§Fσ|gàž:â*¼3Ó©)Âjr‡,$“IòÝóÝ]?zÓÐúr¿lk?ˆßíq§Þ\HöW¶–ÂÙbf5ˆˆgŒý߯ÄìIÿ ¯ß#fš±þl;ÆÒNçÍ´«„ø›§Øè±“Ņʃ•0ãæfÇ}­Þ|:‡[{?Ùé’Ì®VÞK™r2ƒ…xv­xËÃzí´öÿ O…Ž ÒÙÇåÊPN Qí_xó×VÞ=ÕßÅIûç›|f@pÑm(OcÓ½VZ^Ò]Uý£á%»ð»ۋh"‘Ž lXOB6ñ´ú×íÿì÷âkŸ| ðˆ¤“íÏ¥Ú‰¤vå¤DXåbprw+sù×ä4jšÁ 6ãÄ,!!¥Ø.G"ÕÊ®oA_ °GÄ=#Ægðæ$e´ Ù` b˜ùÈqèY¤é_œø“…u²šX¸¯‚Zú5oÎÇõÑC9†Ž1™-IYb(»yÊœ”—þJæþGÑôïkµ=À°ÛÍyæ6 fRXè6/['f¿~.Ãã;?‡’Y}ìÒÎâ8®cŒmòaäÐná½ë÷ÇÆ·öº?…¯|Ax.=.#|Éjq3‹oÞ”^@;Âí*N;×㕯5MgA»ñÞ¹>?´5+Û¤k¥ ›9¤,«"rÁá{t¯?Ã:µeG‡ä\º;õ¿oK}ß3éþ—1¹NdëÉÖjQPmr('w$´´¹›×™Y;r«üãðûo‰šdRÉ3í¹@IVƒiß¿¶;×Ò¾ Ôüý´m#µO^Ö±„,àÉ*‘Èãi•±†*FÞ™Á&¾Û>â á=µf¥7ðÆú¿ÎËÏógóï†þgþ&g1ÁeñtèGø•œ[Œ4½·\Ò} ÞîÑM¯+ð'à âÝïö/Å cÒtxÈ‚ÚÊÖÙ®\…"8ˆ!Ѝ`[o$•Í}â?‹žø=à[ß|8°ƒW_¢Z]Y—·[hqû´3Ϥ’ì1ï.ÝéYZ×Äï‚>*ð¶£ñÃP·»Ö´Í Ëåû+Ãå«\%„J#}Ñ»Øv¯NÇàÚ⿌ž9mOà~¤n×SX¦Õ¢ò^óÛ+Gª$Ufa²¶Éɯ‚t±\]œÃëôêFšÞ->HÉY¸¶¬îâÞ¯•ÞÝ4?¤7'ðCk>Äáªâj]Ƭe¬V¥>xƤT”àãN´cîÅÔ‡"“iKÞvþ!þÕž/ñƒ4;ص‡Ñ¥ŸUÕ–âÖ;£ò?ÑÞÝ—ahÕet\Œ\WŒ|C¶ñT ¥]>"L`¬um›ø—oU'©óçˆ|u¤x¢é|CÜЗ+Æzl=½}Ùðæ-CÂß´ÍCZ"ܬó´àcLxWø ÉQ_¥e¹f-¢ðØX(«··vßÎײ¿Cù7Šx«:âÌts<MFÕ¶—,#ÒÚ.\¼Ò²JìùÃö¶½´ø§¤Ûø}K dÛp€’¯S¼¾8À­}7âCÀúÛZxâÓNŸc”¶{·¹Lð7/$væ­xCÇ^×âÓá¢i±Ü2æäZDzfˆ˜®G+ëŽÕñ¿Å_ÛüKÕ®|R¥ÌβZ3ŽÜ—aéÇB+ÑøR¶§Í_ž]£~<Ýx²†“¦—oö[8 Ce°ùÐõdÙü'¹׆ü ‹Q³ø›¤[xaIyfT™A,$„œ·bóÍ}?ðò][Ã_¬ïõ·,sJÐ Ž‚Ñºø3œZ^ñÏ…u‘siðÊ=6ƹ‘ùs2wÛžª=›JRRùbãaÞ/Ô~Áâ ,üok¦Ì¨åmÞíÄNW< ŽJýkÈ¿h¡â¿Êl­VÖÚHí±å¬ø“o9¯ø§¡^ÇñS¼ñ:’e!­šLìhˆ z}GZúwÁpjšÀ˜.µ£öx–êW´mb¢g 57¾ƒååJHú»þ Ãñ6ü&o†¯gq·ÃLø¼m¦[™UˆîܹcÓÅ}³ñCFðοà›Ý;ÅÚ;ëÖ$#=”Q‰ds¸`¢>e?0 ‚1Å~^þÅ¿|!áÏŠ7>´6ÑÙøŒ¢£B6mºw—ÇY)Çñmíšý[ñ—‡n¼Uá«ÍÇR¹Ñæº@«yfUgˆ† ”,sŒ:Ó­~Åx7–qLê[’2’ši¾º·uª÷¯¶«¡þ˜x-žC‹|£„çUªÒ§:ƒQvåMSƒR÷Ztù,壿¼÷?¿hEñ–àÝ_št&Þ"ëìì-—h[xä(î v8æ¼à¼ZÄ-#þ€LÓN‹"¡$IÿX_?ÃÖ¾ìð¿Â?Ž>¯¨xKÄAïõ‰u+»ˆ.g*îÜÏ.I+‰ ݰœ‚ppk£ðg€¼k«M¨Zxöúmí¤ì¿g6¤È¸,‹#€¤A ô9¯ÚèæÙjõ|T>ÛæKG×^ÞßqüŒàž+žk[—äõíígÇÙÉ´ã¯#i4å´Ý›ÑßmO$ñ­ÿ€Ó[’ÏÆÖºtÑ#•µ{Ǿ3÷CHú×ÏÿôÍjëÂM¥Ù¥½´!4¶`„ÿ‘Á¦¾ŒÕ?`ߊ~.øƒâ KÅ>Q„Ù t»‘:4Fã(E»¡EÞ¬Á@Î'‘Xš€üYð×ᬺ?ŽãK mîY ŽIb•c€¯Î #:íÝž3š¬u•æUe‡ÁWŒš×F¶þ·íÔÃ?à1á\,È2ê”i͸§(´“NÖnÚ_xô’Ö-ÙÛŸøyÿñ&“âéºíÃØhÖ2éºÁŽmæôH#Xnm±VH| Å™‰;œd_¹`äf¿=NÓÁž,K‹oý„Ýà™Úì1“´¿…{îÿñÿÃÿÉðÿÄšÏyk§5µ†§Ä1•c) ²ÆêÁ°v—à àœs_Ÿq_J¿±«‘RWÕI^Û»ßWÑ·ò²Z$Jø-ô§–}{âF6N-BT¥Êå¬  áîGNhÆ 7eÌ¥)>i6~ÌkÚ—âMóCÕ£ßý¼–³`ícªUÀaÈÈ=«Åí¿e¿¶±¤ø~ «T¬–ŒðnP6âE•#©e$žz×ËŸ°í]⊺EϾ/]Ãý±b¨ÖW2ŠKØI*Á—€ÒFvò£,HÈ$þÝx³Âö^ ·ð¥æ£m©wˣʋ<‰7²FNæ žHùö&–uÃøéàcRQ”u÷[I«^êÖÒßwSú‹'Çøâaø’®•jU=ÛV„£.kr5+Ú\Û$õºqºiœÑøGðÉô™tKÎ{i“ËM•™sœ|¶äsÇlW[¤è:Nƒ¤EáíÞ;K x„QAب£#þ¼óžjõ•ýŽ¥i¡§L—J7$‘°t`{« ‚>•æ ñ·áÝçuo†ºòê^"ÑíMÔÚu¹_5€Îcœ¬fAÀe.6à•\Ççí%)ÛÞ•ÛvéÌï·k³é©áxW T%‡¥F‡2ötùcs+9*p²NIÙÉB7½®‘ØÝø·L³ñu—‚š9ÞòöÞk•d‰ŒI%U‹ÉªK:€3“ž˜®SÄ¿¾øC^‹Âþ"×mmõâ¸-·¥²³JJ $`#` …É­ˆ¶h:»{c{`uéâ·ŠÚî!Ä2J¬ÁfŒ“´€‡#&¿ÿ࡞&Ñ ü'ñ[xÎ;¯êÑ6ÉãÓü³/œ’V`7Žê¡±Ñ°x¯Ç/†^ñ—ƒôñÖ…q6•34±A:1ü‰#).) @?ˆäZ^ðׇõÛdzðÜ–Òß –TÿXþÜõü+ô:åpÄsVœ¥²½›¿Gkh¼¬Ýõµµþ[Ì~•œe_+äÀáéÒÄ;)IFðŠW¼ ¤ÛæÒjM¨¨+]ÍòûŸÅŽc㌭5/ElšU‚´vpÝÛ.í†o™°ªppBz×øŸ/ŠÂ;Ûo Û-½´1#D¶€mò ùÙêqÞ¾Rñç€ïôÏÿ D@Ñ£Ú;gËeÀÈRxÜr+ì‚pjþø?q¨^1¶µ[¿2ÏÏùBÅ·÷‡Ÿà>+ïpX\>±ŽÇón{f|EšVÏsšÎ¥j®ò“륒ôI$»$’~Å¨ØøËH›Âb_¶Ë4xÚI2dÀŽ˜ÆsšûÇ·ž³×d´ñŶ-¬r ]¸Œ®z…aómÏáUüñ ÁzÍüÖŸ—°êDA&qü[ '¯Ý¯’>3øsS?nµ£5¼Ñ£Z;ƒå•þ% lõÔ—"<¯ö>”ø¹wây>^ÁàÛHímc^Õ,pSÉ'çu+÷Ž:žµòÃ+[È<[¢·†„}5Ä!@%Œ›˜oÛÍ}{ð:SÃÿ/µ ­Ö¶Âṵ̂2üªªø7uõ­ÿ ü@ðV·{5—ÃåÓZumÆ‚M þ/,ô$ûu¤ãÌÓbO•8îy_Å x:ÓÄW6ÚêZ}•e+Lû1žÊ~ö?Jâ|SàÍvÃÀ…Ç…í•!ÙHpcÏÎÈW© é\çÆßj ñ&]CÄ*ZÊhÙ<™òÈà8ô`Ùȯ£þÚêz/½Fà›{qv^ÀÉÆÔÛûÒ3Ñ3ùѼš°5Ë#ä/…_Xø¿GŸÂšùåˆ!Œ’d Få#¦1œæ¾îø‹yà ?^–×ÆÖº|öˆß¸k¶ØTœ¨Ãœg¯¨Íiðõ4¸õ‡S–·ˆ$®;ùg$ûWÊÿ|;ªËñ%ïüH­¥·Chïœ}õ `yÅ ÜŽ÷Ç.ÇÒ/µé~_Ùø2Ö+[(í‹Ú-Ž f,üì¬8'{ׯ¿ #Ôôÿi>IçˆG°’Ϲ†ðÞÛs»=³_`ü ·Õ´_„ºýÐ0Y}¨=—€£oïvƒÿ,Éü t^ø‡àÝcQšËáòéQë’+ðFY=B7BO §nfÛ’ê×5>%]øOñÖ^5¶Óå²WÄ_k`…Xಣpk’øŸ}âI¾ê6¾´ŠÖÞ;]öic‚Ž›†öVx…ÎOZù¯ã‡†õY¾$6¡â$f´’Ú3jÒgË}õÏ@Á»WПíµá&§¨LÚÌ]£éæ_”.ù̹þŽ{»å±<¶Š‘ò'Ãx¯ì¼C¥]øTÈ×ï4~YRKHIzc9Í}çñ ïÁ:Ô–^7¶±’É_÷&ñ‚lcËaóc?‡­exOâ'ƒu}Z[?%5·R CI[×ccúWÊÿ|=«Íñ$ê>&¬å·ShïŸ/ ã=ÔwÍ/\¦ý¤»HüJ»ñŸ oí¼ i µšÛ—µ[,+ül¬>ñÇ\×Å>]JÇ[Ó®ü4ÒIåÊd$»È[¡‡ø«ì€ÖÚ¾ðÏTÔ% od.Qì÷ü«¸æÏð×±®«ÂŸ<ªêïgà¡¥&½ *8ÂI!þ!·wÓ­VöbRpº±§ñóÁ–:ä–~6µÓå±FÌfíÄb7Ç̇͌×7ãûÍvO†WÖ~³†ÒÐY´–kcµ‘ùùÝJýæ ×¾kæÿŽº­/Ä/í-}]¬ä€f`v}Iè=kÝþZêzOÂÍrùÁ‚ÌÝÄö;òeCæ²g§¹f‹êã`q´9®|…ðýoíXÞ{>{_ KožI=¤¼s}­MðÞúÇÀÛÚ%³=šØÑ¿÷ÙJò̯5ð÷‚"¾±ÖôÛ¯ ™N¢òGå²’]ܰã³ç5ö7ìõa®Zü9Õ§…-Ê5€Áæ@?xPsò‘Ö½ÛÁÞÖõFm[ú¦ŸzùÍì–ÆsÕ”‘’OªŠÃ‹Âácí1UîÒ=̆øˆñ?RáüLDÛ·îá)}öM%ݶ’êpÿ/<§k kã{{l×kbé¶„r>pŒ¼ŽsÀ⹿ÞkRü7º²ð5¬6¶?c’K1cµ£sÎæV–ûÜ×YãØß]ø‡âÄ×üM¯D–ñ E…"iþód”'Ú½Óá‡ìïῆš$ú$W×7±Ï2ϵ¶Æ‘ºðLaFWwñ|Ç5àâ8Ã"£tª¹z'úÙ~'ìY?уÆÕÆU2øÐ‹ëV¤Þ¢ç?ü”üxðLzŽ­§]ølÉý¤dO(©>cI¸pG§÷½³_¨úÏëßx•ô‹­ ëF{¶8äeO.@7}ìä úWIøà} ýµ]#H´·ºrI™!A&O_Ÿ¹ú×__;‹ãËEÇ/£ó—ù/ó?ráo¡¢U©â8×6M-éЋ×ËÚNÎß÷ ?5¹ò~»ðGÆz†sá Éc¡Ú4EakpÅQÛ‚q€Ìv÷8þµÌü8ý‰|à«»MkWÕooïí˜9hÛÈFaì7>?àUöµó¸ž,Ï1+•Öåÿ KñÜýÏ#ú6xA‘ÖxˆåžÚWºöÓ•D¼¹[åküQo»9tðO„Xçm6ÚI"bѼ‘«²1êU˜¿®¢Š+À­^¾"~ҼܟvÛ‰û6Y“å9.`òl,(Ó_fœ#ýÑIeâ=cÇÚ¶‡%¯‚4÷Óõ7#Ê›P,€?˜±Èîr¹Û´sÁÎ+Ðí#ºŽ1öÉŽ@ÎѵAÇ8œgÔÕª*§[š—²ŒW¾Úýï[ya²—GóØš“—*œ­fÝÕ8òÙßY4Ý’I«ZêòÖÆqy"ƃ» Ʊñ>›ª<‘éÉq)Œg&ÞTFÏ÷$‘6éü,j#F¬£Ï»wé÷5s,¾…u…­^*£ÕFë™úGwòGEErSê1›R[{ :ìÊdÜOp|ÅlýÑ #㿚+¬$–â”éÊækäÓüŠÂãibÔ(É%§½ CîæQmy¥o1h¦y±í¸`ô9â¾nø¹ûJhŸ uXô«í*êðÊ85€ÕKåˆlv*+£€Åæ}ŽÏêç‰ÅcÃ<—Ç4âŒ\hÒo•I¦îÚm$¢›Ù>‡Ò”WÎ ý¤tx^ëĶz]ÕºZü§ÍÚ#’N~Hß9lXíÀ÷¯9ÿ†²Ò|G© Ãooo~r«Ì{zcÆ~†½š%ŸW—+£Ê»¶—ë¸ü»8úJx;”aý´s_m+&£J”üÜcmÚ”“]¯¡ö­xí)eª\ü)¿ŸBVkØ肞y?^¿~ürø‡ñ¦?ÚMs¬ßÙi’Û”+¯ ~p$:Iåmã¦îÕàD¾'¸Ò\~SÌÌÃíçr3g™¯ÐÒäZj7íf“V=ûQ»»›Á“Ù|<²¶¶°’)dC,“þ&—Æx5ðn˜×”¼¶y?´7e_'ÌósÂëž+ê¿ÙÞËTµÒüE¨D­™äDZ±ˆÚè6ALõ!s¸Šît_ˆ^ ¸×E½šé#^ÎÕ¸h†ó'ûämÝïC\Ö`›¥)$®t¿o4}>{x<]mk=«Á \ÇtBªNPoÃuž¸¬+»éeð}͟û+kk)a• û¯(ºîÇLׄüzÑüCq¯XjzØsgå²»8%V|œùé‚kµýžlµ m#ı†KB6è¦å[ ¯còõ"š“æå±ÎÔ¹î|«¥ý®9b¼€Éöÿ3ƒ¸ù‚@Ý =ì WÞ~;»Ò¬>Ë­­f†Kxšæ;Ÿ•VrJ°Á×°4ˆ>›[@šWöñm«pbÌ>ñwçŒ×Ž|uÒüE>¯c¨ëá¾ÌQ•™ÂÌ!½=©$©Áµ©£“­8ÆÖ=®âúI¼)%¯Ã›;km:TÆlÉe–P?‰¾ñaØøbÄ]Á"ÝÆÎ/÷’Ió ð>mÛ»WÕ_³Åž¥oa¯]Æ i†Ý@nˆnTü¥}[H®£Føƒàëu-íãÓ?·3¶;‡ˆ2vùþîÿz%5Ý…º%®t:½ÓìÅŠøÖÖÖEžÚ/"¹Âª\ʑʜõ³òi|+5—Ãë+kk¢ÄlØ0’`§·\ú^)ñËLñÎ¥§êZú¹€«‰ÂÏžCzØžµÕ~Ïv:ŒV^!¾EdӾʰáMÈo”¡é¸¤Us?iÈ×ÌŸgl?´æù/Ø<ñºWa}»;ò|Ï3<ïšû—Æ7¶–vš|~3¶µš9m"’ê; ,ÛFHÇ!ûœV“ãï Ϭ,[4¶Öú-ÃÄíócnïs^Iñ»Oñίg¨ø„3BU•Øä¨›?ÅۑҢʔ.¦’—Ö*BåþºÎ÷òIá‰lþY[[XLµ¬ˆ2P¹›®}|Uköˆ_íL]n÷ä¶O˜$ ÷ί¤gûMUZ¾‰LZÙpíÑ à›OLŽrk¯Ó_;9M§¡#žk¦°ñdž?µ;¸´çÕU‚¬òG—ßÐÝ7{š%UFRv$ðóšQæÛúfÏŠ.á³Òô×ñm´™­#{¸®xQ&89†#®*•¾¥æhkà‹+km>|‚Ö»|Àsóè y‡Åû?\Ío©k{ž,°”‘•gŒûc¡­_v·bóWºJé‚ȬÍü 6ïÝÛxëV§ûïf—Ï©²K í¹¼íÓsÀP\Fï5Ó0ºWl·;ÃÓýì×מ&¸[-+J—ŶÖòµÍ”O{Ð|Ü}ìŽU¶Ö‡Ž|8uaÔZsêªÛRyb·öÜØÛŸs^ñvÏÄwsYêØfL‹1ì²u½ˆéQûJPwþºšÎ_X©IrÿÃt;Õ¾tÝ#ã36ißÚ¿ ?è¤ßöÿù¼E§ŒΗËÓ}çY{iÿ"6úªÿŸï?ÿ×þeŠhæi&Và ˜úÖÌÜYèRËp|“$ªÐƒÁ8êÀzRßjïo«ÜÏa#v9Æ0p*˜oµHþÖÒ·ñ’zü$vöª:p­Rt›r×OÔô¤å5=þ=¾¯¨N~Éë¯À;UK{nþë æÖâšd!}y=:ƒî*Õ¶ª\Ü,1BéƒË0 (òp+KPÖ$ƒX¸¸°••\“•èqÆpjnëP¾&ëUúôË –¤—ÈK8æ´Ð¦žlÇçH† ñ’£æaìZu®±¨N<ˆ%T•ø¨RÞÁ‡LÕyíîõ8¾Üe2ïùrÝC§Ó=ª­Ž“ªÜÞ¤1Ûº•e,Xªäç§|Õ)ºp¤›õØV¦ã'Q«þ_©VîÊx'i$V»àž{‚}A®‚Ê9¬¼;,׌I"˜sÃp9#¾? 5-jK}nâãO˜ªHäápAà óôÍUž;ÝV/·4¦\ ±èGðã Ïj¨Ó§N¬åM·%}?¦ Îp>‹Oøb{moQ›ýÞP²‘Œ…UföÝןz¼µ¸‰‹2§¹ì{ƒïVl´mRâõ"H]ì–a€ƒ¹$úVÞ«¬4Ôòé³0 òô8ÉíÍgül=ñY¯ëQ¦¡RÔuÐn›ö~º¸ºS™ÓÈ‚JýæíŒsEŽ·©Nßfµ™c–O•NЬÞÛú‚{TW }¬Du˜Ê¬v’Üaü$tíY–z©t¶qDèÛ,A<’zqW)Ô¤éÂŒn¿àùËM©J«WßÓb+û;¸$2LƒÁ$þ}s]•Õ—‡.®nŒJÈ`ÉÁ,§,Ã=±ÆjmoXkOOs¦Ìʯ•èpÎ T¸Šû[·7žy˜7Éóq†ë´öö«Œ)Ã9Ów–º<åNú'gúÛúc¬5íBäý–Þt†gU¼°¥¸é¸s“XZ…¥ä™nU‡±à÷ OµÑ5‹»µaumÙbA £×wJßÖµ‰muÙ¦Óæ!x\ŽCqŠÎî¾ýgÝI¯êÌk–nZþ¿ÌƒL‚ò×Ã×w’æ$” ‹<`y+íŽâ¦±ñ¡+}–+ˆã™†ÕfŒ ÇÓxèj;ˆ¯µûo·ùæàgfXà¡ì¾˜=±X¶þÖï®–Ê+iÉ$«î[ ®S«G’UÕ·îO-)):Í_òÑwT°¿¶“}Â7=O'A=tZYxrþòä4K)È-Á.¬Ieú8«:æ¼ö šm6v*¼†*0[ŽMR¸þ"·kǹ3g÷79 G@84ù)¼êSw–ºçRt¡íKGÿ’ËÄz”åmmçHæo•\ Vbé§^}ëŸÕì5 y¼ûˆŸ €X‚pà ƒÇZKOëWWkd–Ò#†,¤(¾î˜®¿ÄZ캈dŸLœŒª· ƒî3P›­AýcK2´…[aìî¯ý[úЭá»{»? _^ÝI°B[å;Ôä²ý¤ÓüK};-¥½ÂE4œ+˜ÔžÆN ô’Q©øŽÕõ¹3¯Ü;øØÇ # Ö¹Ûo ë——‹c³«1Á$£ý¢Ý0:õ«s©ES§E]wïþD¨Ó›œ«5{ýß~¯Ì~¹§êÓù×1¿ûDòU»ƒŽ†º¯ Û]ÙøoS½ºSSì[}ün‘NK.}SVnÇ2}áõÅs^1Ñuøn’æýÊ®Ùïm|óœzõ¬Ø<âk›‘¥Åc)•ÎÜí;9ãq~˜zשøÃÄßðkÂÚé™á‚8œ§"FUÁ'µ:Ïã[ ïÅá•UL,¯ò˜Ë}ÓÆ ȯ:¶ðw‰în×GŠÆQ+q÷NÑžûºc¾sTå:0„h«¯ø>DÆ4ëJr®Ò×sgÆš.¹äwš„rL#[iç$zö®Ÿá¶™g¦jš­â´VÅgùD’g ®»×"¶ü]âFðέmµÓ†Þ8ŸËÁÜP`žzÔ1ßê;°šê+Æ•ccG Úc,88é´ôȪöt¾²æ¥ïvùº•e†Q’Iwùi¦¬¦¡}ñÆ{µ½yDHchäàÄ\a_¤ñ‘^Q|]-ØÒ!Ó¦iX•!ÙïnéŽýjœ§F…uÜJ0­9Ëìûvû÷:ˆˆ…äZò4ÈlŒ}¯ÔîÇ@rcÖº¯…zeõ¥¦¯«]Æb³’ÜF†@T<¹ÈÚO]£©+Æ^"_jI Óùð[G˜Žw´j:ž2ET]V÷Çö3Íë¸ mŸ/—¼`>Ïzj?¬s§ïvùº•%…Q’÷{üû´¯ˆ-ÊÙý¶$¹ÎŹxyó1ÇûÕË|CмF×0ê7ÑI8Q²V;_9ã< ×'<\n²WN™æo“*„©ÏC»¦ÜwÍ{·Œ¼L¾¹Ó¡[¶3ÛÛG †,샎àt©R•jRU´F’Q£Z?WwßúÓc™øE¥ßÛA«ê÷‘´Zy´0î|ªÉ1  \à˜$žÕLøn—k`o¡K²v$ï§8ÉÔ}jå¾±¨|D±žîÞùäÊc’)Ó~€8+ž§µy^ñaº,zl²Îä ! CŸâßÓúÓrB4•УV©9Wv}»™Ô|GÐÖÖ;yZ/›Ìu7±ñš©e¬]üE²šâ+çqmx¤ùL[Æ`q·=H«Tà±éëØÍÕ©,/#Zw3ô߉6BðXøVë;âH°{.3íšä¾'x{Ä’Ý[jwé% ++(.‰ÈcáaÐ×!€<]Êh‹¦ÌÓ7È6©(Üà0~˜ïœ×½xÇĉà1¥Ú›ÆûMµ²C/’r]”r>ƒ¦MBr«NJ²².Q°•vú‡Á½/S‚mO\¸‰¡°wVIXü›}pyö­m3â]¤«a&¡ ] "Ü<‚·Oõ¸Èúö­+-nëâE„¯mzíä!W‚A´Æà2+Å#øuã»é“K4„…ؤ«ç£näc¿Z|Ò§ª:®à£ õ&ëèÎÇ⇆]Bt¿"\<žÀÉŒŒzšä¾+økÅWrÚk¨÷q&á9OÞcʹÇð°ï\D_¼ekr4UÓ'’V;C"GøƒŽ0~µô‹¼D>Zhöó]²^Z[$2yxfw‘è@é“RœªS’¬¬#F¤%AݾŸ/#‹ø¥j6÷š–·wCaö6‰Ôª¼‡UsÔƒÎE{g€îµx_Õ­u(Ið´I,’K ”¶@—øp¨ÌÄg§ã\Ÿâ›Ÿ‰–òˆ/¤"Ýx%J+ p@=ëSöuXðŽ·¬|,ñ&™$¶~-µ{œ1«ìFû‡ÊQ‹á³ÓƒÐáÌêâ0¸[®Õž×Ñ5Íÿ’ß϶§×p]’gœ[G*âYòR¬§Ov­RT樶ֶU½›w÷t÷½ÛžWñWÞ)º6š­âItˆÍæ²üã-ʿ˓´Ž†¶>躥¾§©k×1´ZjÙK —R‰,-~ñR ö®óÆ:Óü8±ÑôÛ˦ûnj¶óy?1v^£Ü/BMWÑüQ7ÄËy%³¼‘¾Ä‡Í·mdWùDŠrFkÑå¤êóßSã¤ë‹£(iv›ô}»™4»-@iw„Bé"LðØzs.8ç¿jå>,øwÅw©c©Ý«Ý¬Eüâ™Ü¬œuF¥yë|8ñ¥¥ñÑWNšy¶«Æ…‘Á<6þ˜ïɯ£¼W®/Ã]C³¼¾augj°JÐÆG•ô8ÎjnêÂQª¬S„(΢îûÀUMbû^žƒO[Y#•ØI‡È«‘Éž:WEgñSH²Õ—y¹Œ”IÞÝe±é™q=ûV¶âÙþ&Àík}/ú22 ªÃÔ/g®+ç³ð߯V7ÇDM.i¦w!Li¹7F ÷pG'½ ¸A*Z J5êÉÕ÷_cÐþ/øoź„VZ­ÒI{d™Z<ÉÃr®1Õ[Ö­üе˜üGu¯\Âði°ÚMò2”Gg$kžçŸjô/k‹ðÇúŽ£zÉyc“'•ó1lç`ìv皌'ø¡±Y_ÊZÒ2Ïm0ØÁNAu ÃO=éòÁUç¾½ˆöµ#AÁGNæEŸÅOÔ†•y¨@.¢;VY YDg°2c#½«•øÇáŸj–¶:¤Áï&s92pÿ4r:¡ÅÒ¼âO†~5Ó¯’ºdó»±Ñ¡d—q჎0}ëèÿjãáO†¼?§êw¬—º}¨†_'–-’Û®ÐvóSyT„£SB8Ñ”*Qw}<ø ¡ëð’ÝkÒBðéñÚËÎÊV7fb®x$}«±ƒâÖƒ¦jcJÔ5~ÓÚ“¼Q:3\wÍkè6“âto ü»­P—·˜!ÁuQÁó¯›eøcãM"ý´ìÉî$‘Ï—$(^9÷ >^}軄R†¥Yb*ÉÕ÷OSøÏá¯êö–ZÌáïãËÌÑþðmqòÈ1’Pl oìý¡jÃÅW:ìð<|6“,ò:”GÞDá›<×£ø›] |' Ùêwf;Ûry_3';8;G Ç2|SI-ìï% j…ÞÖPä<\pqß½>XûNfõ!Tš é¥§s?‹zªdêwð­ÄgjÊöâa 2cŒzóŠç~3øsÆÎg­Üy—ë´³˜ó&õ~R`åî+Ên¾øÓJÕdÓ—LžêI$&7… ¬¡0ãëšúoÄš¿ü*x{NÕï _i¶ÂL'snb[Ë»sƒI7QJ54ŒhÊ¢îÏ5ýž§¨Cö¨ŸbÈöâ_''€dÇüq[>ñã|P-­ä¹±Y-e Œð]@á±ßŒ×Íw ¼k¦j’iƒNžêI¥o.XPºJœ0nho’)SÔvöÕeít=OãW†¼Y¬év:¤›µŠc$ÆÈY|’Œu_§J­û>hÑñ™×VƒNµ†U¸•”¬np±äãqÝÎz~¿ªÿÂ¥ð6e¬Ý´W¶1˜ÜDrŘîòÇ<íiÞñÿü-ÖÖ7Ò£Z©v¶•v½ ®88ÎM±u9¯©*rT¥M-;˜ßð·<9¤êÿÙZž£¸ÈI^ÜMäûoÁÚ>½+˜øÝá¯kÚUž°ÅõãË+Ù7Ç ù$]½Wßµy¦·ðâ'…5d³¿Ñç”ßââÖHSÌYâ’®¬¹ô ôï_¢vß³—Åo üðýÌ ¿ÚÖ0ÈÇOÿÒäS™ qÀvUÉ(@dñ\œÛ/ÂÂ]­©»Eßwÿ«Ùu>›)à¾'ÎeYd˜•eF*SJ.ñOm7»û1^ôº'f|Qû;ø{\=øáÓm-çûTÎ¥cedÀ‹œbØÇ¥{7‚üLþ&ñݧÃ"hïµk‰„0oçy'¾i1… ªX’xšûÛEý˜fñU®‰­x‹X½‚Ê[HfºÓeRe™ã ñ–\Ã*HÆ3žk·øû.øgàUŸˆàµ¼{éM´)n%›dkµAcÉã¹ëW¿u]‘}ù_WÄ,úS„©¸Ýoî«J×ÝtºµÒ}4¶ÇôfèÃá½:Xšx˜Tj¥ùxïJê:Eí+4ìç¥i'dÏ|ðr?…Þ=ðìÚ¾©kysqÊbá0ë6ÝÊ–§ƒŸ/~w’J«;]—Ç_ì¾^üGký‡eotÆ1±’(du`ˆ»YY2£¾A8¯ø±û@üŸÇšgüc¬ÚGi¤›mt]!’m×ÈÆ¡h×pÛ¾MÇ%*©ÜJ|çñûöéðNjþ øu§ZkÔ4ÉbÙe¶)5ÀeUDÚ„3  ’xe#4ž>âÃÁ÷vò4zΧ+w–O.âURå¹h99ô¯Ù0JY.ØAû‘r–Û&Üš·k¶qwŽãî%Ža^¿ª©SÞîrŒcN-»+¶”nÞîï©ûû-øWÒ>Á«k³ý¢çY™ï÷ç#Ê*ÃŽØhÕXcÖ½¿X¼±Óå²óÒ3$×K%ÁáÙ[qRªØm›€Î鑚¹¤é–Ú.›“e‘ºì‰Hdcî ÚÚ‹…^ø$œšùÓöƒð_ÇOjÞ5æÑm-þÖú€FPÒ8Eknë½J:çlœ×óÍZßÛYÍLF&¢‡´rwwIhÚZ&ü–šŸê&ø€°™^U…ž!ááJ IÎOš1”’”¢·nrw´UßK–ÿ¿à¡¿üGâCßnâðî‘ òC°Æ$º’5b¡ÞGܰÄj çZø³Ç:'Ä'ü%>"»»Ön$Ã4óH÷ÈzÌI#ùVßü*/é:ÄútºdóIæ•R‘–çIìÀðAÇJú“TÑm~|4ÒÓÄ·g»·,ÎæqæˆÀHEAå¹6]–ÑPÁRQÓtµ~¯w÷Ÿå÷ñ·ñv2xŽ"ÆÔªù›P”Ÿ,uÚ0Ò1¶Ú%æe~϶wÇŸ…¾o‹xu6Ö.Éï•ÃY…áT:^08±Èàb¯xçöœÒ>&xŽÇÄ6¶¶ÓuûuM=º<°Ï:óUz•+Á sƒ_|AøYâ]¼ym%¹ŽâV’£RÊêÄœdt#¦ yùÎS†Î2éà+½UºkTÿ®‡Óð/æ| Å~&Ë"œéÝ8ËiFI©EÛºz>ŽÏ¥êF)h–hÎUÀ ûü‡ý¤<7ãuý¯týRþþòóKŽ×ÏVžŠÖÞ¸=´-÷%þv’pyú_ðf÷MÔ>h7ZUÇÚâ6P¡˜+ w9U“Få8À¬¿‰ÿ´ÿ‰R}ªúêHÚ+)­âŒSÌ‘ã‘$=ò­dü3†s*9}íq‹Ý\Ñzj¾VºÕk±þ‹ø·Â˜ÿ|6XL‘§V^άŸ»-/k¦£%gtÝÕìÒ½™ù!{ñsÂ>ÖG×ïâÞ˜ÑíþÒbRxËòý+ã—‡¼_ã_Ǩé²N!ÖÉëøU—<¢Ÿ%¹•E¥ÝU'ÎÞ¯}oª‹Ž‰XüÜ…ÿ~ø³Y±Ò ºñ_€µ‡ºitÛŒÜGöä1©)/–Ë*m“~f šüõøað'⇃¾/Úé:î‹sdú4Ë%ôÅ7C[7Ò¦èØ2ž0Äs_Ñ[¢È¥V ò5Vh ¼4Ÿ¹d c!vŒX䎌=‡®ì«Ž1Y}IU«B2rII«Å»lÝ®¯fî쯧m~kŒ¾Ž¹?áia0™ZP¥)ÊœZHÓU½ó8ÉA8ÁÅsµ}%ï^?ŠïÅoø/^“J×oaÆòc‰  OðJþ“ñ›Fñoþ=ö‰p5Häh®b6ܬöËÁT^åHåzŠõÿÚ;ö.ñUœ«ã߆ÑŨÅoe^[F6Nd‡&Ic‡ÝÔŒîÏÙÿ üã}/àü:M­Ä×ö“M¨É¸Ý%¼Rg üm´ƒŸAšý‹.ÏrÌÏñ´*¥½Ý¹}ok_§~‡ðÏøuÅœ%žC‡ó Ýik¹{D•Û‡-ù­ÖÚ®©,|ð¶½?Å *óK·–læóngòÌh‘(;Õ‹>n›M{׊¾.ø?Áž#—G×ïâ¤/ ÚLjOSÇËëÖµí|­x—Ä-ðçUkÝ7U…cgx‚#*:,Ê_â(Á¶žyÇZù“Ç ücaã}GX†Ækû}J_> áC'(ã$2žñ×Ä=.ãGµ–³™džvŒ¢ÅÞcŒdqŠú F·¹øEðj6ñ\ÿa¹[–»)œÉ ?0:1ôká×Ä›ÿŽºÜ^ð½ÍÚÝ6×Ù,$# `ا@¹“J­JT`ëV•’WwìV ‹Æâ!€ÀÓsœÚŒRWm·dïüQðï‡ü_ÿýôë<—3bÖØ[}­ÁfÂíURrO ÓøµðOãÅ?‡fãB³—Q[™!x6b ñg¦Ç*P¼€=ëõ#Ãÿ ü á»M/ÈÓ ¸ºÑ’Ams$hÓ«ÌwJÊì2­#rpGå^sqmiÞ^:ÅJYÈUU’Ià:šüŸâeW.L· ­w¬›wÕÛEmÕžý×™ý©ÃßDŒ «qVi.k'ËIEr»'+Ê\ɨ˙it”®®â~Oü2ÿ‚yiút6ZçÄ+ûÁªÁp™¶Òd‰¸¾vVl„ýáÂŽÀH¯ÖxÄP$JY‚¨rK¤žsëšX§ŠbÂ#„ø€¯›õOÚ;DðÏÄSá‹,×H»´Ó¦Õmnn®£6×D͸³GæI Ú á£ÎÐp|6;1Î8’«wÌãweedí{.ÛwvÜþ†áÞà_ 0JŽ\•Öqƒœ¹›œ¢¥ËÏ=R“»µùbÞ‘I»B‰¯Þýbû8[}¯™YÆýà®Ð °,rXŒcœŽKâg‹£ð_‚﵈î­m¯ R%—ÚäH£’è£4Qî‘•rÅxŒ×iÿµÃ;/ Ÿx÷]Ҵ綸†Îò;èŠI.È®#’0£`½ jÀ’xù?ã7í)û,|Ið|–ž {?kæð]YÚ_A¨¬,îÈ’3àç`}¹sZe™;ާN®n*I7¶·êÛJÝÝímNN.ñ‡r¾Åb°™­Õ•9N©US­ö ¢æäµå'7>–èzßí³ð³ÃŸõÏ ëº¢¦›§é‹™¾d’öÚWÞ" ¸°0(Àçn~ï5ð‡Ä3âÏŠ¿®ïõ<-¦Ý\Aq1ÌKpr9Ús“ØN–á¸ß—¡òmßüwà]†cÄ÷Öº5À*ÚzM#D¶óˆÁÂnNÜg¾rj¶ã½!Äj } ‘ã¼µ‘ÖfóT¬ 8;÷2³ç<ׯüGø/â«Þë6ÖÞÚÝíh¤… › ü¦&$0<ô¯aм ÿ¾\ßøÑ¾Á4Ó›µ¸xcÀ`9jÆ8Z ž*š\Ûèµï~ç¡<Ó2Ÿ±”ñ3n”/'î$î”u÷lõVµº¿á¹ÿhψ^´ð¥•½Ž¥¾5›V†6Y„jvÚû’9uuÆ9Ú#‰¼)àa£ñMâ3ÎþfÉ"7K\ŽHÉç5½àÏxw⨞Ӯg¶¸ŸˆLé±&aü!‡sÛ5É|BøEã ]k–ö]Û]òÞ2e(Ê9¹ð^_–FK/¤£Ìîíý~.‡«Ä\aÄü]V•^&ÆÎ³§Xó=—¦Šï¬­Ìì®Ýaø•áwâà »Ï Ü&§ÊFö¦Û€ë$Ap ¾?‡­|ýð£Àž&¾ñÆ—…c<[O¼­ …‚åÉ29ë_Qø#F»øUðjþëÆRgIyx/Ò8x#T K~Räg_¬~$\¯„´ýBæÞ{–/´'–“‘Ðnõ=³^…“³“Ôù›òÆJ&ï~+x7Àþ*ŸO×/aM#¼]B˜€¶6Çj‡/Ì¯áÆ ù‡á_‚¼Qwã&ÏD±žÞâÞâ'y L¾@FÚFè&¾Ÿøy j? ~j—þ0'Kkë…»Ž7ù^(Ñ6—`:#QxGãÖŸñí<c¨\Á5×ÉΛc™».ðs“Û4ÚM¦Åwãt¿~+x?Á>+¸‡[½…mî%f†ÜÃöƒÉåÄx8×½sß`ñÅO…º„Þ¼Kønà×Èùs$;8Úäq´×Œü\øQâÕñí׊­,ä½µ¼HÑLjdhdŒhÜG=;W¶|=Ð/þü Ôo¼\ÿÙ­yr.âŽS††8×Èí»°£™Ý¦…Ê£$|­ðËÁ^'Ô|_¥Xè63As ±¹cF` Abì@Æ­}‘ñ+âÇ„< â‰lõûØ„¾ô¡:¸\>½ë”ð¯ÇÝ7â ÒxFÏPº·šçå‰î"L{)aÏ=³^=ñság‹GŽî|Kœ·Ö·Q"‰L†)`£äzŒR^ì}Ñ¿z~ö‡¸|@Mâ‡ÃëŸ Þ-ý½Ý¾-D`Ê´!*øãn+俇~ñn£â3JðþŸ<7°Ïo1´f ¹Œ‡Pêq_Wü8Ðu/†¿ umSŧû8ßJ·Å'Êñ¬c™GÝ-Ú©øSãþãë”ð}–¥sk%Î#†YÓdr±à)n£qéž(iI¦Á7ÔQ×üOø­áx®{]fú!o;e-Ú!q’0 ªp ç"¹ßˆøƒâ—ÂíFOÞ¦¢—Vû,þÏò‘ƒ<;8(åGN¦¼WâçŸ7'ñ46RÝÛÜD‘æ5.мc Œ£3Èí^Ëð×Ãz‡Ão…Ϋâóý›ý¡4W1Å'ÊФCB£¦ìð(¼Ÿºö%¤’‘òwÃßø§Qñ&™¦h–Ãw ±1c#@Ufr@Àó_i|Kø©áoxŠ[o_Â!¸pVÜÃö‚Hà¸Lp3ߊå¼'û@éž9¼OÙjWVò\RΛc”ž‹¿¶{f¹Ï~Ì_|Oãɱ4o)wl|¡yÎz×éÂ?ÙË\ð^…©éÞ!Ôa¨IжÁ˜FPrrÁ>cœtüëè[XÛZ‹Kë«›ÅÛ´ù·?_,!#Ø“_?ŠâüŽŽ±¨æ×H¯ÕÙ¶ðÿÑwÅìæÏƒ†íV©ÿ’Þkç|cñGâo…< âYcׯ¡òf ¬&/?{‚þ^kOľø‹ñgÀ)áy?q¨Zfì ².O!‘€ep¾™×>|,ñ·k¯ë<3Of…„ ~tk‘ذ?ʽ2ÊÆËMµK:·‚1„Ž5Š=Œ^7[¤–_FÒëÍ·ÊÌý“…>†|™…Iñ®gÍE[•Pv”•ùH5{¥k·kÝ^Ëó÷áÿì;>“µ÷Š5•·¼µtxÅ‚–ÚÈs“$Iôû£ñ¯³ÿá\xiîf¸ºF¸Í»Z0øR¸Éï]íòµø—;®Ýñ 'Ñiù™ý’øáI*-:’Ú«z­ù¾vãD¼¶E :×M·[[EډŒè0éW¨¢¼Z•*U›©UݽÛ?XÁ`°ynžIS§”c’Il’[QPuW5âïÛ"Ãá‹î¦nKÜMåD¿]ªîO°\{ÕBrå_‹·æsbñTðt%ˆ©4ºF2“ùF)·÷-çº|ã{‰ui¬ævT0Ç mHyÜFwvÏû‹þÞø¹áÿøªO¤¢mBžW–“ìß!PQe(gù·a7 sÅvK/¬©º´ä¤’»åw²óì|Í4Ë%†]£S9Ë’Öªrè îÔ›¾ËUÕ#Ñõ­oIðæ—6µ®ÜGiin¥ä–V ª£“’kÑ~"éÞ1ÑÓZð/ªÃ&åO¡×ø_ÌÔÿÀ­uzý¾£y¤Ïm£< xWt&å ‘‡ ²‚§¯BžqƒçÑê÷ž¶º×~!Þ[@¨2¹y@NxA *éÂ{šÓ‡…h>XsO¢»ÿÒU›õRÓ±ÃÅyæ+)ÆRuqk…·¿QÂ:;ëûÙÊP…¢®ã*O™=&¬ÌOˆ>=ñ妎ºO€ô¹.uùNÏ–ÞY¬â?í\8®yúêáÓ|J×rêw—÷2I j œÛy#qã'$dŠùJçöÄðoŠ1ü/ñu׊-¼E »ßE¨·•bùÞ'SûG%‚+´øAá wÂ~ÖüMâ˜ÛO‚öÝbŠ9†ÇvC“!^ ÐÑy6Ó*äR¾§Êš?‚üP÷0èúmÂêŠù~SY=IÆ@œ×Û¿|iaà ›XüA{gŠ9Ñ”L%•;9Ï=ëˆÑ¿h-2þeðèÔîbY ‰n™?w×/÷‚û×ñƒáŸ‹®µ»m~PŽ(DR¬@»FÃØ•oQš””cîê~ÒIOCÕåÖo>$øBæOj1OhaxV8WÉ0LÀíÝÝw¯ŒtÿøªYÓé¦ÜEŽÏ/ÊmþgfätÏ;«êƒ>×ü-£kž)ñ<-§[^Z­¼I0Øò:¾ã&Þ (ã& Ñ¾?é÷&«q 9ò…Ó ò†xå‡8÷ªåNÍŠ-Ón0W= âWt¿_Û fö4_³C êPMæÊˆ‡9ÁïX­Ý|HðµÉðv¢“Ú˜d…$˜eqòﻺ^Wñ‡á§‹nõ›=zÚ½Kh<‰£ˆohÛ;ƒ…•pAf»?‚ÞÖü1¡ëž$ñOao{n°Ä’Œì­¸É´òŽ2iÝÞÏarÇ“šúŸ)é~ñ0¿‹ÃÃNœj!ü¿/ËmÁÁ᳎óø×Ûü]eàI¬Ó\½ŒbÞ4¸R‚Q,¨ 9ÙÎpzµpzGÇÍ:âãþÅÔîbÜ|rPy}qË}í¹=k˜ø»ð×ÅSê–ºå´-z°ÅåJ±ì§9uVÅJ÷ ù5.MÕ©ÔVG¦¦¹wñÃS·…/’[5GˆE<™Xqº< nèñ_ÚøCÄR]¯‡×M¸7ìÅ~[y›ÏôéžwWÔ_ü'­øoLÖ|Oâ(šÆÖæÛìÐÇ6U¤`r[iÁÂúš‡Jøõc,‡ÃßÚW0#Ÿ(]²~íyÇ-÷±ïU%rÊn‹•)J4•Îçâ‹ ð!Óá×ï£2‹X¢¹R‚Q4è€9ÛÈ<õ5“µwñó7…ïâ{AÃ寂&WS·||mÜx Ò¼×â×Ã]j6š¥¼z-ch¥X²ì ;„€ªÃ¸®à·„5¿iú׊|EX[]Úx’a±¥pÙߴ󅩪æ—;‹ZÉcío¯cæ ?Â^$Yãп³®>ÞNÏ,ÄÛËön;æ¾Èñ׊¢ð"iðk÷¨®¶qErŒ¢_6EQ‘³Héšã4Ÿ6’Ⱥ êW1ÄÇË;2ƒœrß{msŸ~ø¦çP´Ö­£kõ‚"’,_; Â@%X¢¡(Â/Ù;šÍÊ´á Ë•ˆºÝ÷Ä\ _G-¢ÆÉäÆžA‰Øq½1ß³WÈVþ×â¼þÅ:uÃÞ+åyl\·¨ã8Ï9¯¥þ ø?^ðý¶«âÏBÚ}¤–n‚PQ¥bA)ç ;ÔZ_Ç;X¦öÌqçË"Œÿ{ï÷¦Ôd£*ŽÌPr¥9ÆŠæG[ã/ i¦Ã¯^*M¤1\©Q(’EQ‘´ýâ:YÐë×^=Ñ%½íQY<”Q †GiuÂÝWñSáç‰î®í5{XΠ l¢,»|ÿ2ÈR¬=+gàç„õí5ø‚±³žÍ­cYFÖ–F`Ù yÂÔô«çŸ´åkC?gOØ:ÜÚŸ:Åá_ÃptI¬'7¥Šü¶,Xð8äƾµñ¶¾ž M5u+´£´†+•eù’ªýݧ ‘Üšã4¿VÖÒê7Æ ŒNPN>÷ÞÛX_üâKË«MZÑ÷ÈB²¬3€ÿ2ÊRÕœTiÂ^ÉÜÖrug]Xïí¼Asã­"UðÝâ5²+!Š8Ä&'uùK§³WÊÉázÚðhóØÏöåb¦=ŒX–<Ç žý«èoƒÞÖ45_k°½¥¤–­oÌ XœäιÅG¦ügŠÑ¿°×P¸XÉ1ý  (½yÝ×h§%¨ºŽÃ‹ Ê4•ÒþºW‹µãà«. béVx­#†èo…NCÜÕ MrïÇZCŸ^Dm! ¯ qù&'a…f@:¹ÄüKð7ˆîZÛQµC~`Cæ,g{ç+ J‘׫ð{ÃƇ.£â½n³³û$–Ȳ‚­3?# y*½IÅiÏ5UÂÚ(Cêþ×›_ë¡àIá­rÞèèÓYL×…Šìۘ窌r\×Ô^.×›Á:~‘¯v«qœPÝ©o™"Œ•ÚG$ ®SOøÅ ¬‡F…ÂE“ž¨SŸïuÀö5‰ñÀþ%¼kKët7¦ÆA\•™eQÜǬ •8IÑwfÓ”ªÎ¬¬¿àëñs›Gï`ßaÿëRÿÂÜð§üö·ÿÀþµxü#þ$í¥]%¹ý(ÿ„Ä¿ô ºÿ¿-þ½µoåü ~«CùŸþÿÐþ%Ñïü×ò¡ipáFJžàŽ¢´Õô½Ho—5Ë«ÏUUO¡9Àª:– &Õ¥¼µ,¡Ø÷##𧥤w–xŽAÈV~ëu>†®1¤ªÏêúË^§¤ù¹bêh´ûĆþâð-”Óº£aW$ã?íJ©¨i—v‘M<)æy*KÎÒƒ'#®=úUë}ñäY®ŠEoœ´…ÇãÉÍPñ&¡ö‰ï®-IÕÆsŒ©íSg*Æ.ªÁÏïµAô¹ý|ÿƒ^ટþxSã§ÃÖð@Ð> hš_ˆ´ïµëÅp¶š…²]Ûù¨¶nO.UÞ¡ˆ€OZõ‰?àÑÿø,l¶ÿek¯ìôþݹÇþ‘Wú ÿÁ)?å³gý’Ïé’Ò¾ú§J*Ñg´›Õ³ü·_þ ÿ‚¿»3x œù Üvÿ·*жÿƒF¿à°VÖ3X+ø¬ÅX“­ÜäôÿB¯õ¢¢)F\ñܧZ«Vlÿ/ÿƒHÿà²ÙÞïÀ¥1ŒräÇý šÍoø47þ þX°—À#>šÕÇÿ!WúQU6ê+OQF­Hü,ÿ.ëOø4kþ igqfÀ .6än礞?ЪFÿƒH¿à±­nmM×JÇ]¹Çþ‘Wú†ÑMNQ,^‚u&ÝÛ?Ëz_ø4/þ ÿ+i|21ÿ!»ŸþB­ Oø4oþ iesb¯àrN·s‘´äþ…_ê#EL}ÙóÇqºÕ³Ò?ËÄÿÁ¤_ðXómöCyàSM¿Û·8ÿÒ*Í“þ ÿ‚¿ÈsæørÝÏoûr¯õ ¢œÛ¨­=B5jCàv?˺Ëþ ÿ‚ÀÙÚ\Y†ð-ÀPs­Üñ´çþ|ªÉÿƒJà²MmöCwà]ŸÝíÎ?/±Wú„QN3”#Ë IÉݳü¸$ÿƒC?à¯Ò>ó/€sÓþCw?ü…ZzüAÿ„Óì®ì£‘v3nç#a$þ…Ôæ¿Ô2Š•îÏÚ-ÆêÔ’ålÿ/ø„¯þ )öO±ÏùxÆ?·nqø±sYÁ¡ßðWùd2<Î8þÛ¹Àú¡WúQU9ʢ囸£RpÖ.ÇùziÿðiüN³º³CðýÅÒª’u«Ÿ—oqþ…Ö¬Ä%ßðY1dlß„dcÛ×_ü…_êE8T8¨ÁÙ!9ÊM·Ôÿ.ø4;þ ý<žcIàÀþ'w?ü…Zš_üGÿ„Òí¯-£2ÞF±¶u»‘§ ö.µþ¡TT-'íåJ­IG–OCü¿—þ 0ÿ‚Ê §›Ïý?·nù °î¿àÐÿø+ýÔ¾kIàJ…?ñ:¸íÿnUþ£´UNr¨­7qFrƒ¼t?Ë×IÿƒH¿à°zM½Ýº7€$qˆÎínçåÁÎF,ºÕÕÿƒM¿à²ë`tÿ¶xË=¿·®¿ù ¿ÓöŠq©8EFÈ–ÜŸ4µ?ËŠëþ ÿ‚¿ÝMç4žÈjç·ý¹Vžÿ‘Á`ôx¼âê1ηsÆ9âËž•þ¡TT/v|ërI¸r7¡þ`«ÿœÁfËì yàa1¯\ãòûsןðhüöà\<ž(kw=¿íÊ¿ÔnйÔHòÍÜQœ ïü¾4?ø4—þ ¡Ay'áü‚ò1Ý­Üü¸mÙèU§ü}ÿš‡OþÍŽóÀ—i ð‚î/)·kw< ç#Uþ tT©5?h·œœyÇù‡Çÿ¡Áf£°:rÝøGŒq¯]=?ãËü+—¿ÿƒEà°Z„É<²ø2¨R¶îy÷æË½¨ÅS©:‹–nâ‹p|Ñ?Ìÿðioüëx¶çÀ È<† ­Üà ç8ûQÚµ!ÿƒQÿà³PX›î¼ ŒÈzë§§üyWúuÑN5gòÅè)ZošGùtê?ðh·üR¸[™$ðe@Ÿò¹=;ô.+gÿðiüítðÂ'Úá0¶ínä`x²ë_éûEG3Sç[”å'W±þcQÁ©¿ðY¸¬³ÖçÀ¢?öuë¡ÿ¶UÉj_ðh×üS¹K©À ÊxÖîyÇøòë_ê%ETêN¢å›¹0ýÛæ†‡ùøkþ 1ÿ‚Ãøf{©­ÿá_Ëö«v·`ÚÝÎb¤ž,¹$’Ú[¶ð µ°`×.NwzæÇ­§ÅëJ¤æ­&~cÆš(ÿ1Á¨¿ðX¿ëg\³_‡ÓHb’"­­Ü…"AŽqeÎ;Wecÿ¾ÿÁi´ûcinþXÛ9_»ßñåÒ¿ÒÚŠj­H«&Œg.i­Oó ñ?üqÿŠñCÚÉv|m»ÖîNwzæÊ¯ø+þ Fÿ‚Åø+_ý¢ü>ÄRE±õ»1 ÁéeÛÒ¿ÓžŠ\ó¿5ËM¨{5±þiúüÿ§ÓmZÎÕüˆÝ—_»ú ã…y犿àÓŸø,WŠä´–ñ¼hXŒk—'vï\Ø×úyÔRMc,@¢U'%i2#ÅóEæ;à¯ø5þ à½tkÖËðúáÄRDRMnè) s‹.ÝEw6?ðl'ü›N·{kvðFùÈ]~ìŸOô,~•þ„>+ý£|áˆ:·Ã½NO"mF·×.nÛÜMq óÔ6ÎÇ=±_Ì7Žà±_µ¾‘â‹ÍËÄÚ«g£j^Gqie*&¡s/úH¥tñ¹23¢1ØB¿ 7‡šq6 &„%ˆ“´›Z[xï»OóüÒx3ž(ñ½zYT"8ÂOŸ™^5>š‹]ž­hïµíø ã_ø5[þ í¬ÜiÃ\ºøwk)”Å}~áLÒ²—Ø¡¬¾gÚ¬p2p Æ­ÏÁ©ÿðXŸx…|Ed¿guŽHö>·r‰iÎ,¹Ç\Wì'ímÿ5ø‰ûc| Ó<'«éÖ¾ºðþ¤ºÃÏk4ÌÓO˜-ÖåþéÂÜK&ZSþ¯ † ìWü÷þ ªüGøgmñÚt(bÓåÔnf}×—J­s4ÒM'–ä•ä]ÎøT\Ywàs<Ñà°îë•J2ïÝZÚXú+ðSŠx?„!Ä9­”•GN¥/uò$””š’š³²Õ_^©"sÿÁµßðX¥½¾§¨ü:ÓÖþám­ÖOÜB&žL”Š0Öcs°j¯'Ž+”ñOüÿ‹ñzÚ‹ÃðýZÑåÉÝ¿×6]G­~¯~П¶¿í*úoˆ~kïxú#x’mi.õx›ûaÕ.Öë$ðÍå*ÄQ ›} 0L ûëÁ?ðROŽÁ1øà÷Š5x¿Å«¦É V:,%µ•Ϋà‰cQ¤@¡vo‘ò*Y¹èñ¾^¦¥9.Uµ•ïªåKw­’¶îI;nz™Ñó?˲Ì.i†ÅÒ—µo[¾ENÑj¤ª$ã ç9©µhS”““¼WóeàOø53þ à?'‰,WáôòG±}nè)®ÓœYdã®=k½ÓÿàØïø-N›–ö§À(²v]~ìcéþ„ký¿fŸ¶_þhß KiywE{j­¸[ÞÛ»Au=Äs£ª“Ô{×Ò ädW×QÄûZ1©J^ëI¯F~ÀÖÁcjàq±µJrq’ìâì×ÞóñoüÿñjZ ÿø@Ú;8#\º;‹{6Uâ>&ÿƒtà¦?²ÿ‰4½{Çú§Ã˯š[{A>·r‘Í!Oõ{ÍMø9T$ÁÆpkýQu¡msÆ+ð—öúø£w¦h>.ðïí4¡áJê8´Vgic6ûžЮVt–'‘N` µÏŒÅÎ…7UI'Ýü+¯¼ú'k_»Z=O!ËiŒXIBSXS³©+´¿wŸ<•ùœt¼c-cñ/äOJðN³à]ËÀž0†%ÔôXb´ºXÆc(G1îíÜ S€HÁ«0][ A3Ë•Œ”g|™¡ÏA÷câoÄï Új×>$ñMúZ$Ä6é ¨p2Ìxê|cñ_ã^ñÃ:—Ãÿé¼:¤°²^Ýb‘†•^2Í´á»tǽ~ šf3§„§MÊêv´y[Õëeø«ØÿK«øÃœ˜|Oâiañ0¢“ù©TöŠ)F-Sç’WVo’VNí«4þÔ®sÄþ/ð¿‚ôïíojiÖå¶Âb3µsË6A“_%išÿíâ½!tK+;9ÝB}¶w3` d ãÜ{¸ôô7Á?ø&WÅ_‹ZÜ:ïÄ)¯5K†#÷—LÒeÝÂa_A—øu˜U©|ƪ„Wm[ýãè~aÅJÞÁáxO:õZÞ¢öp‹óÕÊMvI.Ò>_øñãYñ~»l>h·ºÌQMiý¤ó5¼1ErSÌ–fÈšeƒ™T)õב|+øqÿQ¸Ñ§ðÆŸ-–ª—k±&ÔÛÍš Ad†<œçŸ0?N1Íc³ü7FÑ­ }BÀdœ­~¾|9ÿ‚yx#â)>Å+áú…²LêꊚÓY{ÏMzí¾ÊÈþZÏühñ?Íjó P~õ£EºqJI&šNòÒ*ÎnRVZè­þpà‚ßðR/B²èZN„ÿ箣*uú@kè[ø5ÿþ ·ãh ŽÚÇÂùo¼5iÆsëþŠký:<ð¾·X¢¶EÛì+Ú,|9¥ØäF=«è®ÏÊÒ³¹þe¿?àÕ_ø,7ƒ|Ekâ˼+Ú‡Ú’ëw*t*A+eœsšàüÿKÿ‚£~Ì:í‡~!Çá°é·°ÞM†¯q#ŠEwUVµE$€@Í©VÅT*£µ~cþݧñ烮à…7–FþU5µ§*3Ù«?™¶½L.–6†“ƒROÎ.ëñ?†MvÓTÔ4k›=óìrÆV+Ÿ-eò˜ôm…lz+æŸ|5ø±àÿŠžƨšŸ…tÝ.þÞYnA[÷¹¹–)]å yeZEZ Pª1ƒÖ¾¦ý¢~üPø ãFÿOî´é§ìÎ Q& FSÕFìnÇQžø5Àü:ñ•Ï‹<g¯j‘ª]³y71ĬBJg 7 ÉáNIÀ¯Â³l‡3á¨ÍÉFt¥î§e{Ê2KÍ4¯Ö×õ?Ò>ñ/„<\«†TçSޤ•ISæ|¼´êS”’wä”'.[Þ*VZÛ•3Âþ:þÏÞ'ñ]êø›àõÅž™ªNìoVíçHgàmpbÞÁ1òÎìäò9óOÿÁ?mÏ|*?áñ€5 Fkk­F{^îæ{%¾Bní–ÈΙ-ƒˆÎÖ65÷¥þ§e¦D³ê2,´±Â¬äÏ+Eìì{× ø?â‹|ý¢¾¼6ÑêörX^ÆÊ’G=¼¸Ý¤”òSŒ©‚5¶OÆÙ¶Y…Ž«æ§f¢Ú»]—šZi}‰­ 8ïèýÁ|]›ÔÎð+Øâ”ªF2å„ÓiI´“ä”’“SQ³©ïJ2÷“ù7öuÿƒsà¤ÿOø­ðg_øcâ;X¸0k÷9”®É“ìBH›”uVõõM—üEÿ¦µiÌ|?e%¶¦¿v döa®Ëá·Œ|1áíoU×|_k-Ó]i·Û-›µ»C{$`A>c(Gùˆäq÷O¿eÿa¿ø,OˆþxSKø[ñ¶ÊçWÒ,µm×VÞòÉe¦L².&c¹ä0KåÎKDX}äPßi”ø‡Ä8RÌR¦ÝõMµuÝ[ÝOÕÚÚŸÏœmôgÎòªuñœ'VX˜Á¯rQŒeË+üçýã‹I?rºqOcùóñ·ü§ÿñŽ®¤>©‚?x×.IcŒa³cŠoƒ¿àÕø,oƒ¼Oeâ{HþË%“—Tmnè+evàâË8¯ô¥ð/ü1ñÖ~+ð•äZ†Ÿ–Þâ±·GF2ž ŽjíëïUG?~.÷?˜§Nte*5#fšz4ú§æ›}‡üEÿ«ÓžVµO‡è³1b©¯Þ(ì1e^yãø5kþ #ã«8-5ø~Ÿg›Ï 5˦$Ÿ\Ù~µþštU:“jÍ™¨E;¤™ƒÿàÕø,oƒ¼Qiâ›XþÍ%›—Tmnèò•ÆE–qƒ\Åø Ÿü[àËŸü@µðCØG0žx-u›‡ÜŠÁ™Bµ˜ŒŽkýC#ùÕûoø2ãÄ>¼H”Ñ·ò©r”¢àތ֜åN¬kGtî¾GðªÖæÑ£'–bù6tÛ·ŒqÇæÿ¼qñÂÿÙ:]ÛØjVÓ%Õ…Ò+˜ò„1V ÈÀícŽq^ËñCÀxkân·c«!”Ëqª’Q|‡ó#`‡;‡¸ÏjÁ5üݘaç’g¡Bwt壷£ë{öwÑüì­À¸Ýý»tňÃfËšþ¯ÿà“šävÿ ôOÊ…"S·ý§;œŸrÄ“_Б-lŒ{Šþ‡ÀUÄÏJx™''Ý••Úè»åwQËhq6†QNP£ “ŒŸ4”c&—3êÝ®ú_cüË<%ÿ¨Ác¼%â[/Ú§Ãéd²:¡Öî€8Á"Ë8õ¯X¶ÿƒk൶wS]ZEðú/=Ë•M~ñTè>Ç_é Euó˹ᴛ»?ÌÛÇ?ðk'üSÇš`Óu4ø~gïíÓGc›.k¼]ÿ¿ÁY~˜¼O­Ãày’ͼݰë NÕ#ñ潩õy7ÅßE®xZâ9Cü¨ç“ê5¢²?Ì?öuø1ñßözÑ5?„Ÿ£²ŽçO»il…ŒÍ2,3e72¡À“qgþÖ_ÂñtjÑG±.ãoÇ‘ü¿Züú¯Âøª5r^+xì2³n5kõûä™þø+Wâ‚Tø{6“”bªaªYÙ¤µ…ŸNZr…ºiµ´?4µïø çü‹áŽ¿Ž£Ã«öB&ŠK-Na*²Ž ‘n¤× ת|#ø­ñŸá­Úü5ý¬­`µ»ˆùvúÄ/º9;¹ùT+zJ8?ÄËïGöMÑtŸŽ4iu%Y¤¹°›<üÍ“ú׿WííÿµÓ|UÝö›b `Ç…¯Ö3L£/âaŠŽêñ’ø•û?ÍlÏâãÎ)ð»ˆ*Vɪü2q©MÝÓ©Êìԣߴ•¤º;]?ät‘‘Êà ŽA¸§WÌŸ?eÏÚ¯àcM£ü=Õ®ílb$G ‘Gpˆ=L°{.yƒÿh?Œn†‹ñëK}BÛv?´m"ÌŸõÒ Žªm vc_•cø:ÂÂUpî5认ףVù&þgö§ ý(<>ÎëQÁæ°©„œ–²šŒ©)v猜­ýéB+«±÷Åsz/ƒü3áÙ]Î;VXü¬Æ0YI óüÇ#;›'¯<šÉðÿÄoøJ·Ö4­^Ò[k™–ŸÍP^G,e[iYXÿË23í] ÚŒò'Úfb?1í\¾ÂÛŠñŽsÎ1Í|{Ž.‡=x÷Z­»¯-}.~÷¹&eì3(ºu-nIû²·=­Ë-mÍe³Ö˲9WáOÃ}sÄßð™k-¥ÎªP]IiT' UB‡8ã8¯1×>\éÈáW[ØIww1i¶o.à·@ÀÁí#’L ·iëÇ5ôµìw3O£¡ü²]J†ùUò„Œ2á€ÈÈÈ#¨"®‚QšíÁçY®Æ4kÉGM9¥k-¶w·¥ŸÏxƒ¸ŠJØÜº”ª>o}S¦æ›Ý§(´Ý×ÚM_sç/ÿÁ¿o/ˆ:¢jÚ×€¾ÓãÝEòÚk—ÛÜê[‹x\¶Å¸»G"ãå ®ˆÜã$¸Å~ýþÔÿ5^•íÐÉæÆzsÔWì™.>§å—‹,gxY;µî$ÿÚ¹üâ Ðð[޲ˆdÕ]Z´k¹J<±“öõ“b*µ–šYÝÉÔ“A§Ù5ÅäÁb… <² *Œ–cÀ“À¯˜mkÿ„÷·wÖ¶_k¹Ó,p4³‹„hDžbtÚf27ld¸¾"ÿÁ,|sâoËg"\5£ÈO•¹¼¾¹û¹Çé_füÿ‚3Á†Kû˜ê¿ýjñp^à æó îwÛ•rÛï¿üô. úYq%Q e°¡kóûI:·v²JÊ’Þú¶í²ºÎ.…ñƒþ ñM—„¼+áëV•¾I\U=>ôŒ¹÷+jÏ‹þ ÿ*øéâ›Ïˆ×ÖEÆ£ªÓJ÷¯AAЩìùp8Å|ÿ¿à–~ðÏ•,¶( ãøE~¨|9ý–¼%ákD-Pm•öØŸ+Ë$ç¡·£ikn×ÞÇó¿ñ÷ñu(Pâ<Æ¥hAó(ÉûªZ®nUe{6“µìÙþ\ðo/ü§Y‡ìÉ£x} 0!¿´díÛýEzÏ€¿àÚø*uΧm¨iºw…BêàMªL™ÚsŒ‹cÖ¿ÔÞÛàÿ…  ý8öÖXx'BÓñäB£ÕéÝŸ!n‡ùÀxkþ »ÿ‚Ì­ÌšŽ•gàÜ”þܺ@?+:§ã¯ø5×þ 3ãÝ mRáú,Ò,…ÿ·®™¾S9±Áþ–PÚÁíŒb¬Sæ–×*½ÏóÐ?àÔø,^­XëP/Ãç{£Öî†Z3‘Ȳã=µ{‘ÿƒoÿàµë«ÜjÖ¶ß 7,Y’=~ñTé‹:ÿG:(R’VLMÝŸæ—ãßø5ïþ 9ñA¹ÐµTð‹‰_3ûzí˜9Ç6X ûסÁ©?ðXÍ X³Õá_‡ÎÖr¤ª¿Ûw e@ȲÈͧ%¹žìIYçàÜø-‚ê³ê¶¶ÿ`3±b‘ë÷F}¾Ç\Ž¿à×ïø,çtKUáú­Ë«™½vXm9ÁÿBÁ¿ÒÆŠ|òî )l˜¦“ÿ¡Áb´BÓPŒ|?f´–9P nès,»ã­{Ü¿ðnüÁµyõ{ko‡4í¹’=~ð.ðšÿG (R’VLMÝŸæ›ã¿ø5÷þ 9ãý ïCÕ#ø~«vÈÍ ×®Ù†ÃœÙ`ƒé\&•ÿŸÿÁbt­BÓP‰~–´–9TmÝ ùdǗŧm¹›w $¬ó—þ Ãÿ‚Ø6³>±omðî¸bÌ‘ë×€dÿÛ–ZóßÿÁ¯ßðY߈ ·ª§Ãõ,¬dþÞ»fNqÍ–ü+ý,h§Ï.âQŠÙæ§Á§ŸðX:ò ȇÃüÛº:ÿÄîä}Âû+èÿƒpàµÿÚójöö¿àyŽJǯ^(ÿÒ.ký(¡JKf6“Üÿ5_Á°¿ðYïèWš«Ãà—{s'öõÛ2í9fË~çZWü{ÿ‰Ò¯m/"ɳ’9þ'wC˜Ø0äYqœs_éßERní$•‘þrw?ðn/üÂmrã\‚×áݻܱfHµûÅ_ý"æ¸/ÿÁ°ßðYïèWÚ«Ãð·»7Iý½vÎ66ìse‚B+ý ¾>~Ôß³çì¿áïøI¾Ù¯ÐYn®gAÒ3ª–`’ln zœ úÔ¶v¡ª\‹=2 .fn‰—cô ¯ Ç8Ú¶Xj*/Íó~‹õ?iȾ†ü)œêñmR¼ot¡ÑIv“n£wîœSæ]7áÅ ½n]w_Ö,l¤˜ ÑØG;ŒŒ¼ò!?RµÙ\|ðn¯o%¿ŠÄººNPÈ—|¶(CUq•ÈV$‡"½žÿO¾Ò¯eÓuHd¶¹ŠIªQÑ”à«+`‚Pj¥xxž&Ï1)Ʀ!¥åhþVgì¹€d2…|KNrVjUªú;T”£÷#Ìfø9ðÚêæÖ{­&ÝÖÀF‘ÅO»aTôx1â½-#Ž<ˆÔ.})ôWS^´T*Í´¶»?QÀäy6YVxŒ» s¹¥ÅJVVWi]ÙY+½Ih¬ÌøžßÅ·–cðŽ”²p×3£LcÊD †ltÜàÔ•ôÏïٓö„ø³ö>ø7VÔ ÔÝ£µ¹KgKY]æU¹,$ÉúW/ñàÿÄ€Ÿ5„ÿt·Ñ|C¥MÝ”Ú!Kˆ²Ñ3¡ÝˆÜ1Æppr)ªuéEb¯»Z_~º?C:¸ü£1¯S#†2>ÕÅ·TJ¢Šj2iEóÅ&Ô\•œ[ViØñMJÔìÜÜj·¦îVêLqŽß*noÇ$ûbº èü/¡ØøƒTZž©k£Û…Ü÷7bRŠ…†9$f瀨^ŧh³‡®µ§Šµíw]³ŒdˤÙCj¿º†îV|üM9ÚOSuqSuj5¯¢ü¿c††]ÃØXå¸*U$¢®•ªToÖ¤¹¯/ñNìð;;;ÍFê;>'žy˜$qÆ¥˜ð¨É$ö»=OágÄíF—Äzχ5;=:ò亞ÒháGþëHÈ7±9®º‰z'~!KâÙéuŸØy&(ÒóR2ݶyÌ“ÙEd ‡ â=˜ÊÅÆj‹´7ÇOWV×ü]ªø™¬Gnº…Ô“$*11Ø™îT žNO5<´# sI¹t¶ß{×ð6öÙÕlUFŒaE«ËžOÚ'üª1N7îùìºsj—”iöRêWðiÐ4h÷,jÒºÅ.@ärg–b’C¯øsĺOŠb¶±Õ¼?y¤*8âšüÝ @8 †Å`+œ ÂfÈäWÑÿ coÚ·ã„×ß ~ëúÕÞ|›ØlfoŒ‹§Uƒ¿w¯Ò_Ùçþ+ûjüVדþÕ­§ÃÍ6´—7ÓEurà’ Ãmm#Ã>kƸ9°Ev`òüv#Ý¡†s¾Í§eç}ß¡ò|YÇ‘¥W9âa½“æ”#:Nr³ø\gQ®ñ„T·Ôü8¿MJH6érÇ ¹4±™ÆÕt=;çð5çú–ñnå$M×´ërÁ‚1Ó¤r¤ýÓƒuƒŽ‡óö¯ì÷Fÿƒl¾Ûx®íoâ^­w¢£)’Î;b¸‘BÀ\ùŒ©—ɹ8RQšý„ý›ÿàž?±÷ì¢éðsÁv–Ú¢Nð½íé`1¹f¸g1父/µ}„ó‡;Wå‚óQ›ù+?Å£ðž5úOxW *©“¼N*«ZFœëa¢¼§.h4üã Ÿça/ì!û]‡Ú7¼gã;]ÛÄ“¼nŸycs§__-¿—浜qÙÞK>|Ô Ñ¤°5úGð·þÿ øàÈ|FžÓô´Ñ.¥ª}œÈ™!X¬‘-Ú %·Cž™\1þü“¥ DëÚ/µ²„3ì_0¨è»ñ»< â´+é× á&£L®—ò¥ ¿;i÷$×}ïüï[é-ÄØIU¯ÃÔ*TæM׫,J„[º/h¹£e¤œ§8ËWȽÕóÍÑÿàÝŸø+¥õî¥®è¾ Ô^{†hboݤqAœ…ÁÓŸszžœ:×’x“þ ¯ÿ‚æêš¾¡s¡jž Óì¯e2-¿ü$WR´jqò,¦Ä0QØ šÿHÚ+ÚŽW€UwNîÖÖíYvNé|‘ù-8â¶Y ¢„©ÓŒœÿv£NNRºnS‚ŒäšmZRqJÉ$’GùÃ\Á·ð[Yµ/í8“áüM±‚ø‚÷æØ0 ±dú×#âŸø6'þ EâÝ:óMÔ×áû-äF2ͯ]3.{ô/ç_éOEzn*ÑÐøzµ«W—=y¹?6Þú½üõ?ËÞ/ø4“þ šÙ+xj®Ñÿ»ŸÏþ<«è‹Ïø6Ãþ Ssª&« ·ÃÈcHñ½v3±B‚OزIŤÔä¶fM)nšÏŠ?àØŸø-‹4ÛÝ7SO‡ì·°´%޽vYCwýô¯´ÿƒIà°––±Ú©ðXÀþ'w=»ÿÇ—ZÿPz(s“Õ±­‘þow?ðmoü¦mM5H-þC"D±|šíØ,c,~Å“\ï‰¿àØ¯ø-Šln¬u%𠸌E›^»fP}3eúWúSQOÚNÖ¹<±ì—¬ðiü UµFðvçûnç$à} sÿÕÿÁj¦¼‚ö>ÂðBå5ëÀX"…ˆ²äœWúCQBœ–ÌrJ_þk>#ÿƒb¿à´>'³¼²Ôcø~Â׮بaŒŒÙ:ñˆ?àÑÿø,‹fà ÛŸí»ŸÏþ<º×ú†ÑKžO¨E(«Dÿ7ø6‹þ M%ý¾¡oÃØÞ„yzõàÜÉÿBïŠÀñ/üÿ ñMÕŽ¢¾"ê#c¯]±\÷ÙWúVÑOÚO¸¹cØÿ/?àÑïø,½¢Z+xj.ßù Üúcþ|«ÝÿâŸø-2OmqmÃØžÖ„×®Á`ƒ·ú$×úKÑINKf9%/ˆÿ5?Á°ŸðZ/ÛÜÛêÀ ·14Dzè•ÝÔ‚l¿Jñx?àÑø, bÍ_ÀB•ÏöÕÇ9ÿ·*ÿQJ(s“Ý„RŽ‘?ͦïþ šÿ‚ÒÜ^Û_CÃØÚàÌzíØ.#P ±ûsÅckßðlü‡Äv÷úð‹ˆZ»^º%C eи¯ô¯¢Ÿ´ŸqrC±þ]°Á£_ðX{d¶ü„]¹þÛ¹üÿãʽÚ_ø6Sþ HÒÚMoÃèZÎ…Y5ë°X ÆIûzÿIÊ(U'’ŸÄšn¹ÿ¿ÁhÄÖ, É®Ý`£“ö*ÿKÊ*#9CáeÏ÷–çÔÿ3_þ kÿ‚Îëa–ý¼ ddÃk×Gha—ý Šò˜¿àÑø, PˆžÚ3ÿ1«Žsëþ…_ê9Eœ¦ï&ý×Á¡þgÃþ nÿ‚ÍÇm§Án>Ætèu×nƒ°^ì~ÅúWæü þ ³ûkÁ;>!ø3ÀßµãhŒþ9²Ô®4çÑ/å¾ š”&/æC B èFÈÏ¥¯ýÿðx–¡—ûCþÍ×—ut?¯ýõýœ¿ 9­iÕ¨ä¢Þ†S„T\¢µ?‡¸þxý.Æ•i¦I8f*³õ,G.c¨5ëÞ?ñ €­t}> —¸ŸO´[pð9b[Ÿ”+Îí>*Ãíj°Lö Ä;¤„6Þä/Oº¿ü:»Ö“M¹ðôÉq'”^ÌΆO™YIþ%<[ÅF1“ÃêË›œêB8•eÿÎ_Ž·ÅAd¾Ï|L¸¥ÿ…é{ýËÿûüŸã\ïü)ˆ§ŸìÕüeühÿ…/ñþ«ÿcÿÏÚâ‹ö8êÿæÿÑþ%ѦûD–ñ¼bTl2»çÔÆ?šæ+m+J’ÀH³Ë+«9NUè ÷ü+/T¿k«ùo6æ7#ñâ¯Ã­Îœ÷˜ü¦ ûz|ÝçUEÕœh/{_CÒjj1uo¼Ì¶’ ˜Av»UˆRàœ¯¡Æpj}kD’;{¸â•7BŽ]ã;Aù”÷ã·ZжҬ…ÝýÜfçöÇAŽÕ‡â+óznîm9Ü _ ö¥}U»þ'Ï6©½-øŸíAÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¾ÿ‚RÊ.?fÏû%žÿÓ%¥}õHóBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ίþ ñ7Ã?ÚSá·~Ïiá»ê:†•®[˜ÄvÌòZ½ä/|‘ì/qv÷E>|Ü,®Â¾ÅøAñ[Ãÿ|¤ø×EýÄšŒ’Ù³f[c0`c`VD‘2@ÉSÅ~SÁg¾1x‹àÿ†¾ ø‹BÒ./SKñÕ¶¿swo–6öú=¼ÓÜ U̶Í1-ÐF’>lŽGà×í_ãoÁZõئþÖÂ×Ã3é÷“ZËžin‹ëvÛß8Ä1ÜËF£ø˜œäð~¿G ™OörŠòæ’ÓÓg^çí¿êNiÄü„ÏiÆ2©J…z¼Í¥'K VJ¯6îVö´ã/z*6^å­û¯EW¼~$QE„àdÒÖ>·©E¦ØÉ<‡FhÅ?hÿÚ'Á³_ÂMoâ÷„²Xh°‰(™dwuŽ8Ð1Q¹äuQ’<×ò«ûoÿÁSµŸÚïÂzw„< ¤ê}&øjIrš©O!ã Q 2ã&C±‡qmÿÁYn+_ÚüŸ|,’hÚ& æúå{¹¢E ¨ÊrD.Ò‚ÊÎ~ëzÕŸ‡ôéu}K)kn$òñˆÑ±b3“ÓPNOJü‡‹¸£ˆÆÏ)Ë'zv´¬—¼ï­¯Ù+nヌ÷wž åWÑãŽ/øâùJ|ÎIR§kEÎ ¤ï¬¥Ï¢‹Wµ¤~†øÓö½ñÿÇ?‡~/¸ø¡¨Ÿí›í;FÓ ÖçËk¸ôùn¤ýèælÈHè:Wçþµâ ÒãU’O²À‘³[q+™`ãy c½«Ët‰Ûþ—ÆfÐÛéû‰¶ŽLy×  á”g/€:÷ö®sZð÷ÄoŒz¶má»¶— t©,gs7–ѼRaˆdevÈ8í\²|ã;¯F•H;ÓMNm§ïsJV¿zÍk窱ô¸Þ=àòÜ~; ˆNž*Pž‚Œ¡jn*<ê:^ Òs„¬Ÿ»h»¿gÓ|e£ÝXZI§j´Ò 1p yƒh<œŸQ^åeñgU³øZß DB[n…ÛùŽ~WVV1¹ƒõ$u¯š¼1ÿýø¦ÖÚkÉö‚ºbí´-¿äô;Žs×§ ¯²üû|KžÜC~³ÊÇ©}Ì\×ÑÐàLfv¥Œ´Zq~íß+•쯦«6ú“f?IL‡3¢êc2'*М+AªŽ1öФ §4µj2¿*¾°P½¤×>#êž1¹ŽÃYÕíìTˆã–Bæ4ÏûD–¸çŽ ®CÀ~=ðω5 Kˆ.–ëçþèâX†Bäà|¬¯ÐÎ+íMwþ »âýFeÔEä2äŸq_;xóöDŸàŒ+¨ê·0Œ…Îwcߦ ¼gàð°­˜b±NQŠR\ÚÙEjšæÑ+-;u¹–AôƒÏ³ŠøÉrztêÕs¦ÕÈ›©$âáu?fÓ”ÜäÔ÷çw³‹ýxÿ‚kÁAµÿ‚zíÇ€>!X]k:>½®$­©ZášÖëR}„É1É ßòàƒ» Ä_×Î…«CªXÇŽÚ%\z éR(ãQŠñˆŸ´ŸÁ?„Þ2Ñ|ñ+ĺ¥â%•´Õ½cW&EtI˜„€È˜F`ÇpÚ5çÿ ?lŸƒ_>#x³áO‡¯¤±×üq,:¥–£ü¨åòÅÔO¸Æð8åXá°\€y¥ŒÂFª¡*‹šöµÕïkÛÖÚÛ¶§¯O Îë`ÞcO 7IG››•òòórs^Öåç÷–Š^ëiè}gEbèÒê†Ýÿ¶%†i Ò”0£F¢#”†g%Ö=¡Û 3@PBªèZ«žT’ŒœS¸W#â Zx‚Éí®0aŽk®¢™'âÇísû x{ÇšUÍÌVŠÎʆ¿’Ú?öLø§ð Å×zŸ€`Ý®L¶Ò!19!‡¨?\×ú6kE¶©jÐL ‚+à_?±ÿ†~ 4’\Z£ÏjÃ…ÃãhK Š‚”^éžžOœæ¼?˜ÓͲ\D©V†±”]šèýSZ4îšÑ¦óZñ!ø¹à_xÅ> ÐÚCj÷_iß2ÇynáRpÌ6«p ƒŽ¢¾—øgñÿ$:JÈÐj°Á“ÚL›XŒ8BqæaÉQÆFz⿯¿‰ðK¿ j63y6)–øE~þÒðH«ÔÖ^ÿC´h¤F,*Ê}Aƒ_-šð^W˜aÔ(û“[K}’I;½RI%ªüÏÙ¸+éÆœ-šo ye¹Îp zVuh$[=Cdo.ÒX|íÜ70^ Ó ü+ȼUÿßøð×[ÆÚLr®¡i/Úf‰prwg“ž‡=A¬8t/\è¶¿ð™ê­¥kzkËn÷d"ùÑJC ívÕû¸9_zø¼Ûƒç”º8Ÿh¥OHɸ½¿HëÊôW^òÒÛмãÖŽ?*ú£¥‹|Õ)%R)Jp²SªÔUHûÓä’T¤””¬¤Óþ—¿àŸðT¿þϺ ø)ñŠ[ÏøG4ùû+U^8Xî1O AŸhbÅ n ¤p QŸ ~*xâïƒl#Çß 8_*È*x—Õtq”9éÊQj¤æí>UªÞóŸ+pv›IÔCM¸ûU¢Mê*ý~žx§Æ½W·êPÿ*öºå|aaý¡¢Í3•4üÁD>ÙY|cYîUÖ#*ʨi!mé»FyÇ·5ñu~ÐÁX~½Ž®šäiþªulóýìv¯ÅúüGÄ +Ãç*¢zN7·g³ûísýú/g1Ìø¦tÒž£¦å­åsÆúiËÌâ’mY_FÙûûÿqñÄIµyâ×/U K¡Ä,>Õ<’¡™™]~A‡ä籯‚㬎¦e†¥ŒÃE¹ÂêÉ7tÕú]ÞêËסý5ômñ ÂY¾3"Î*(áë¨ÉJRQQœd£{É¥g7'{¥dö? ¿ø"ŸÅk†±Ö<yæ”°ž)RI$gSç†O¨#hîÄ÷¯é;^ð>âý3Q+‡^â¿—Oø$Ç…uÍ(%ÔÐ>Ñ'˜À rz~C¿«¿LAúàWÓäxLN(¡„ÅÊóгÿ/’ÓÎÇãž$g™WñÖgžä”ÜhU¨ÜSÝè“——<“’]·CóËâwì-à‰K(Élÿ¯È/Úcþ )áÍrÒvÓì$aETÄÁ¬=OÃÚv©KˆÃê+Ö> ÿ7ŒÿðG=nËX’ëK²dd}ÊÈ ƒA¯¼wÿÎø·¦ø‚Oˆ%óþØ¥–a þ ë‚Ò¿Ó«_ýŸ¼!­¹y­“ì+Äü_ûø#X³x¾ÇÈþ訕:sw”SÒß'ºôfô±Xšä£QÅ]KF×½òËÕ]Ùî®í¹þlÑ|KøÓðªxôÿŠšk1Û‚Ÿm·UŠçiêHØùÀû¥: æ»ßƒÇ2ß¾¿qkd·Wó&“a!ôÀ£yy¿Ò&Ë1' 6…à ìWãÿüÓ¾&I¤¶±LœôQ_…?ÿàWº±¹Ó,H*ÙV¾C2àŒ£ ¼,}”¥Õ+¯”oeò¶šu?xá¤_ðýjÎjõýµ|ðM޵à‹xïc ˜Æsô¯æöýŠá¸mœczÜ=”TÉ2å©WžÍ½­kôý}Yðþ)ñÖÄN,—ap~Á8B-_™ÉÆþóvZÚѶºEjpíû;x=îþÔöɜ砯LÐþøwE@°@£€W¡Ñ^áùÁR ˆ­JZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š Ç&€ +æ¯Ú ö¾ý¿fKñã‰mì4ø®þÁˆC]L×{ ù(¸}£'pr7‘_”_ÿàá_Ù Eø}©k¿ tÝ[^ñ´°Çk¥ßBtô¸YK % · «PYYC1e üE|üVk—`›Ž&´bí{__»ó>ç‡<4ãî-¥Gå5jÓrQçPjÍ¥¬Ý¢’¿¼Û´V²ij~ùQ_Å·Œ?àâ¿ÛW»ßá ø_F€Â47.TôÜíp ‘êé_ß´·ü«öÊý«e{‰þ0¸ƒJbvéZWú ’©$íhá!¥<šF÷¯ŸÄq¦WN/ØFR~–_{ÿ#÷,‹è‰âF?çUè᩽ß3©%ä£fÿíô¼Ïîã7íåû~ÏæîÛâ¿Ä]N½±ÿ_aÊÜß!çƒgoæ\gùç_™??àáÏØÇÁÏqeðßIñŒ'DÌ3Eo•¤ýÖ’åÖtÿg5ü~γgÆÚÏâ¿Â‚šoö¦µs ×M½ÄqE ¹åšVùc\í@Ì@.Ê£–¶¿jÙcâ/ìñ%~üU¼Ò®5ÁkÔðiwkwöa.JÅq€¾\¥pÛÎÒ¬2áâ8³:«AâpÔT)Þ׳zö»Óð?dÈ~Œe¹Ì8?Í*b±¼œþËž4ï ¹¹ E¦¯í-Ó}OÚïŠðrÇlÉÂhÞ‰ãÚQ¸ŸR™ûÊPZGø2üÛø³ÿlÿ‚|aß·ñûJ¶u(môeM9 ¶A­Õ$lƒ™Íq³ßÂÏØ~÷Àsxçö£ø‰¨Y\´ÞL:‡me“Q\(o2CqköfCÊñ:àúöòŸ7Ÿ²3Amcû2Øø©&Ü]x–{7i" Ö8­#E\rX’s‘Ó>6+2Î1}¶#£è¤“û£úØýs†ü>ð«$ÍžY‘ðÅ¥okR„¥ÒÝU¯w.ׇ6¾ZŸ<êZž¥¬ß˪ê÷]Ý\1yf™Ì’;K31$“Ü“_Aüý–~$þгKqá«­EÒ­œÇqªëÚ¾›eU À¼ÌBªÀ°‰€GŠùºŠñ)Êšš•UuëoÆÌýCS*]XÒžÊNéÛªPùkeÙì~žx‹ö%ý‘¾Ú@¿¿i¯ M¨ÚI­|-¦^ëËŽ6¬7av9åeh±ë^ ªê_°·‚VÝ|)¦ø»Ç×JŒ&—TšÓ@³2cå+mj5 Ù3ÉjCŽ2:×Ç´äG‘¶F Øs]3ÅRÿ—#¾Oÿ&m~„á¼Æ1ÿ…Œâ½~ë÷tc×gF:‰y:’ÛVϲ| ûfë `·? <àÍúÒG’-JM+ûNùK1*DÚœ·AYÚ5^Ï95çß¿k_ÚCâëãßêQw0BëkéysäÛˆãù»ü¼×jþñLJô[_kÚ5õŽ}ŵÕż±Á6A?»‘”+ð ùI®R¢x¬_'²”Ú]¶_rÐìÂðï }eæt0Ð[¿Þ4§=Ý×<¹¥£¾—Ó°¤–%˜äž¦’Šû‡àüƒöÎý§Ë“lÏ÷¶)Çã\ꮞn VŸ±ÿüþ }§išoƒ>(|H»øYà›`šw†µaüRn.-”/¡Ø¿˜^à3É-È?°Ÿà˜?²·Â­vÛÆúí•ÿ޼MjKÇ«xªò]NXäs¹ž(e?g‹åƒ,[†~õ}6„±Ø¸Fzÿ2·Ü®ßßo‘üëÄÿJ áŒU|5á‹kàúµG4÷·<åÁ_Kò9òÿ{Fÿ‰?þÒž_…ZŸÁŸ |'Ð4)5„µ’ã_Ô–ëQñx&Žt– û‰@%TÙ"Å£ÆÄc8aé²ì ñ#ö°ðÆ¡ñFÖCYÓ4«”±:fŒmåÕîF ‘ö¹a†ÞÙWjäfÁá#|?´†?ðM/؇ámÌúµÃí7]Õ¯&7W:ŸˆPë7³\ÞÓ¯ŒÅdgù‰oÍÍ}Ékkmemœk 0¨Hã@UT`*Àp¯sÁõjTU3*©¤­h¯øeøj~9Ÿý+²ì_W/ðû,œ'9sJ­jŽNöŠ•¢ÝIj¢¢¿x¹RM$öþ$í¿àƒ?µž©>(ºÓÆ…§jwþE¾‘ö«mSV²·‘¾YodÆÍ–5æFŠ]Çly!O¢xþ Êýªu_Çiñ'ÅÞÑ´q´Ësd÷W×0ÉÀÐÛ©e?+n•@?t°¯ì¾ŠôãÁù2iÉIü÷û­øXüóô­ñf­)RÃÕ£Né¤Õ;¸ö³›•Úï.kîîÏÅ ÿÁ¿a]ÁVþÕlõFu nµ7¹+ypà‚F졌ãa“—9¯¶> Áõý0ø{D²Ól#Ž$µAåXxárÚx¶Ôb–º=º®Œÿ-øÓ4©qnešÕ„c*•fÚƒæ…ùùeÖ-êŸTî|y£~ÇÞ µ³X¾ÈƒìŠîtŸÙ{ÁÚsem“òõpp+‘ñŸŒôøzóľ"¹ŽÒÊÂ..&•‚¤qD¥Øö  ’}+¹´•ÙóP„êMS¦®Þ‰-Û>kø™à_†¿|!}âMɵ³°‚K‰åpÇJYØû*‚Mÿ¶'ímûD|P—Uðå±³ðþž^->&wR~i¤šL—ø@®IûÛþ Iÿ4ŸöŠ[üÕ¯ìü),2Ǫ€[µÛ9 bLžVÌî\.sónÂýKÅ6ܾfÂIâƒv +¸á~n§vXu?*ü£Šsª™íG“åôÕ¹šWSwVI­,¯}mv½íÏü=Âxm„\yÇPPÄÍMS„Ÿ,¨ÁF|Ò”$“s¹R3Œ%wkÊßb~Ë>—Æž>‹| qp¥]C)éÔŠþÒÿdï ËáÿÚYì¤qªª€ÀWóãÿ¸ø&÷볩×™üÎGLô•U~ ðì&“ Q.0¢¿BÉ0’Âe”iÖ‡,ùW7WÍmnõ¾¾ví¡ü¯âyK=âüîêa½¤Õ9b©§hrÆÉ%Ê—DÞòÕ³¯½·[›f…º_‚ßðSÿö"ðmõËD ØÇ§µ~ù×å¿ü_SÓ4?…:ƹ¨ÜÙÚË3㓵±Ç¿êNq§9»%«>:…¸šÐÃÐ4¤ÒInÛvIz³ø‡û'öú6ù»Ç¦Þ1úWÜ°Ç ü ø°úß‹îÚÎÖí ˜&5Ù¹²ûr}†ë_ßjöš†µp¾b ‰ NІ•]ŽÞ¸Î@4ÚþoÂæ2¬Ùf8E~VÜy“Õ;­}S?ÖÌç…ðÜiÀòá\òn*¤!žÍ«ÆpqmE´×»8ÚÖÙXþ„¾3ÿÁs¾#xsÆ_س®™¥_øvÚ×íZ­½Ï4À7˜ÈxJÇÊ… »¾R{à| á/ø*ÿí×á=rm]¼k.© óÏpöz„1ÏùÃp¿(•#Œ¶c$¸nÞ+óš¼³âÅß ü=+avÆïS˜f+(yƒÑ›²/»uìJô·x›8ÇF8j²snê0m%Ñy½çÊÄ7ðƒ€¸r¥\ÛEPŒRJÑŒå+'fÛ_»ømé²>ãý¢¿j?´Þ±a©|l×F¬Úb»YGpŸ¹ÎB«ÉØ·ÀŒÅD¿°/ˆ´oÙèþ-ñüT^(¶ÓO“Ä—^{»Y]¤0y™22Fp¤H3Àäó_É·ìùáÿŠßüEoqsf ¶wF‰ÀîO'üñ_Ùìð_Tðî…hÚ„eJªðF;Wé\5Ù†W0Íê)ÎvÒîM[k·¥ÖÊÉÚÚ;6ä_¼Yá~&Ê0|-À˜GCAËUÒ‹æÝB¼”e«iÉ)7yÁÉFKöÃRI=’ÈýH®¶³4»Eµ¶T ­:ûsùÌ(¢¨Ýê¶h^w d’p(õ1£GûÃ5òÀÛáí ñ Æÿ üg©[^øê+-IïàH#i¥yÓl#Ìii·l–E#Í}`Ž$]ËXÐÄQÄÓU°ò¼uÕy;?¹¦ŽìË,Çå·€Ìé:u‹q{ÚQS‹ùÆI¯&S¸Ó,îP¤ˆ0}«Ì}ó3;nn­†w#<üǯø<ïŽpXzrÃåÏ™ÊÒ[)_•+?FïédÓ¹ý/á×Ñ¿ˆ³LMÏŠà©Bx*”g~iRäU$ù£u¯4aÊîçÌã(Yùm…Œ:n›h6ÇoÄ€œà sß_¸ðHEÕ£ÔîC»4p à’8ÀÆHô¯ÄÊþ‚?à‘>c§Ç~r|ÙYþ€šùŸiºùÕZó½Ô[¿›v׫½Ûßu©ûÒ›O.ðû –ÐåJ¥XÅFÎê0‹•áf¢¹yT]âÝ¥emOêcÃÿtWAYZ,^V›zZµû9þ}V»ŒKlè{гHÃ*G­9?ðV_¥çƒ¯®£O™QˆúŠþ]dWö«ÿøo/Š|zǸ˜Û·µŸ¼KâƒúÌÚЧÔnb«†G³<Øs;mçÔWçüs‘c³e†­—Óæ”[Mh´viêÒ²³ûÏê/£w‰\;ÁͲþ)Ī4ª(TŒš“\мe¢¤Û’’i%öYûMÿ‹ø¡yáÏw^’ßÍ´¿‹í~nìyOT9ä>à:Œc¿oìÃÃ7iy¤C*t*+ø|ÿ‚\C¬jþ?OCi%²Ü,cá‚I\ŽÙüëû\øaæÿÂ3›×`¯w„ð˜ÌGKŽ¿2¾¢»Óõùé¥ÍüoÏ2"ñšðå*~ü]ÕIrFóòþV´w¼”›G£ÑEôgä¡EPüA𽿈ô‰m%PÛ”ŠühøÃûi/ñ;jOh¬Kç;k÷aÑd]­YRè–¶ç@ øögý™´ß†–Ѭ0„ÛŽÕúm‚‰{ ŽÞÊ aˆÀn€ (¢€ BàÒÑ@ך]ê™ϵy_ˆ~ xg^m×!ϰ¯e¢€<3Ãßü9 Î&µTA^Ïeiœ"(Æ«”PEPEPEPEPExŸ‹i_Ù×À)›Àþ<ñï‡tMfÚ5š[ýNÖÚá#p ³E,ŠÀAät ô"¿)¿à£ðYO†ÿ³/„4ý/öaÕ4øºþíã™Råo,ì`…Afœ[L¬^Fe¨pIðâó Œ«W¨­ûú[¹ö<3À]ÅÙ¦)É03”êü-ÅÆµùœÚåQ¶·¾»+¶‘û‹\Tÿ¾[xÎ/‡7:þˆfO2=-®¡Ž›Y÷-¹o0ªÍ½=¯âgÇÿð_oø(Œmå¶ðõæ‡á0‚¯¦éÂGOP¦õîFº“ï_ë¿·oíeâOKñGXñ¥Üž*‘ +­ªC£-œÃmt‘¬¶Ñ|Íû¸æ.þÙÿ²×ÀBßIø±ã}/Fºº˜[ÇÒç÷¤íÚì ¬X?xÈÊrÄMs_´wíãû.þËâøñ7Å’A{ Ïag§ËÕåú>6µ¬*ÿ¼S|Ì„’ÀWùÈêúÆ»â½jmkÄ7³_êŽ^k›¹L’Hç«I,„’Orƾø#¥~Ì×s·ü4N­}"ˆ±oö ©¡Ø‰ý›yæ«ÀåŒsº¼ÕƸªÒœ)ÒŒo³méëßð>þ§Ñ †òºlf?3¯[“Z°¥N<Õjzû–Öî\í­¬ìèïâGü›ðÆÂyíþ|5Ôµ4ògÕo"²Ýëº(Rç÷ò¿#þ;ÿÁTÿh/Ú§RÔü)¤èZn›e¯Jì—w×Ú„1¹8ùcÔïNŒ@Z¢ƒÐ ×€|qø‘û 5äZÁ‡·rYÛ²;ßÍ{wkq3¢:²þöæñfWâ$ÊŒ”ñý±ü_ðŽK[Ï‚~ð¯…õ ) ‘jCI‡SÔ9‹[í¦6ãt"3ô¯f™ºX¼Rqþâü´_™úÇ øCÀù9Ÿ ðÔãˆkÝxª­jµNiT«mRÑR¿‘æßþ|wøiã;ý+âφ.ôN;xµ„[dHVÞàêm—È>@ Ÿ.콑^ƒû?þÊö_tÇñ7Šþ#ø;ÀLRyfMST»“ʱe¸#®E8jÁøÇûdþÕ´šú'Æ_ë:þŸ#‰ÎæéþÊXÀù ¶.|¼Å|Ó^$§„†!Êœ\£ÚZ?¿K¯á°ÜQ‰Èã†ÇÖ§‡Ä蜨§8$–¼Š¢V»ÙJ2QZk¹úïsð[þýð“Nó|{ñoÅ¿µýÔ¶~Ò’ÁøùÖ}I|§Aج„‘Ú¾1øëñöW× ›BýþÝhejzÆ­=íñA,!ʶŒ¸áYåÁæ¾V¢ª¶5T‡³§F^Jïï“oîg6UÂSÀbV7šbq3Zþò¢Œð]Ҧה£/;ž™à/¾Z^Y|/ñF«á¸õ ±¥ÞMfnýÕ˜ÀÈdUç Ä€I rkŠ×õýsÅZå牼My6¡¨ê=ÍÕÕô’Í4¬Y䑨–ff$’NI¬Š–8&˜;BŒâ5ÜØí\“è2@Ír¹ÎQPmÙt>žL,DñtéEN[É$›õ{½–ýˆ¨Çzýuý–ÿfÿÚ›ö…ø gðßödø; Lú’ßk>5×.³ÊžbÚ­‹^Æ‘Á»‰VÙf‘™ƒ»(Ø£í›ø7Ãö¹øƒ«Yj¿¾$iMy3…¼¹w¨˜m”a32ÂÒIÛaØŠ½ô­0ÅSL%9I;kk/½Úö륾ZŸšfþ1p7 ã«`¸›0£BP”—/´U*Z;JTé)ò)jâ¥.kZñR|«ù±¢¿µOƒßðo'ìà¨RŠÚεã;µ`ÄO¶ vò¡Ý&ýv5ö—üà„uØá†<)ám&Gg“C‹YÕ%eîK½NI£·Ãp‚CŽwp=z\šJ<Õš^W»ýâ~[™ý-¼6Ã×–*…Z¶¿¾ãìé¿¿š¦½?uëe©ü|*ø=ñ3âÿ‰lô‡~¿×äžæ(-"r€ÈÀbI‚”…yåÜ…QÉàWôy?ügþ +â- Á¼©x;á]®göhl<2÷6º”ÍmjÔ–íåäÈòݲn?*ãþŽ4/ÙŸáÆƒ­§‰mîõ×½R¬I×58àb‹´±Ãs B:ư„Ï;s_AWÑeÜ!C ,]FÛìíÿñ±ø'}*³Œ÷‡Ÿ àaJ0NþÖ>×Wdì›Pµ®”œ¬ú&ÑüwøÏþ óý«¥øuqâKÿÙøÅ²M‘¥ÆdkrÓJ¢yg¾»–"‚8˹) ŒÌ…;·ÑÙóþ ñý”ü%à›)hKÅ~%žÍúÁzöÚ|L¿9´¤32##LÇv2Pghþ€(¯N‡ dÔ*{UK›K{ÎëÖϯõcóœãéâÖq—¬ºY—±\Î\Ôb©JÍ$¡Í 5k«{Í·Í&¬—æçì©ÿ§ý‘¿dM^ÿ]ð™>·y¨"£M¯‹[çˆ#S t1’Ìnݸ€Gèí½½½¤ kiÅcj¢ª vpME{8|. MRÃAEvGåïç¼OŽ–eĹתíyM¶ôV_rÐ(¢ŠÜñBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿ƒŸø<>Á5Ú3ök·~@Ñ|^ø=C§1êýãWð]ÿŽêRé_´ìÝwîoì_®=‰Ó³úUÓþ"&wpiÅõ·ÂO ÝN×qkmo`X—ˆÀÆu\òŠs´újŠÞ9[1¦iÞ€[C>U¹R(øÞ'’kÉ­_ÅYàñÜa[ˆòê|”±ÑŽ&1nî.®µ#{+ÚªŸ+²¼lì¯`¢Š+Ô?8 ðo^]ð…Ìl¹Ê7ò¯y®[Æ6"ÿBš3•4ü~ÛÞÿ„;ãUÓ"m[y÷SÿׯŽð1ŽÕûÿaøy.‹âñ2G…‚l±Çðžþæ¿+ñ?ÁK ž}i-*E?š÷_à“ùŸèÇшiæÞ¼–oßÂT”mýÉ·R/ѹM/ðŸÑ‡ügÅÚÌú.©¥êó¤Öv·¢;@sæ&Q^E'û¹a·ß=±_ÔŒ¨Öi'lWñ÷ÿø»à½ ÄiàwR·°Ô%¸T·Šy6¸27ȱî#{dãhÉö¯é'öŠý¦|'û9|Õ>%øŠe §Z³E<Í; °Ä¸ä™…öÎO‘úob°Ñáê5½²”cÉßn­=]¹v×¢?§EûSþÕ^ý–¾jŸ|_*HÖ‘0´³óIyrAò­âÈ's·Rí\±¿–¿ŠßðV‰Ÿ´Æ«øã—§iþ»íe¦½ÄW78äh­d¸21Ù$¡ ލ¼.Ò0ÄWç—ÇÏÚSãí/ãI¼sñwUmFåÁH!m½¬eƒl·‹‘àyfþ"NMx"š}œä\‰âAáKuãÓ5ð¸ž&Ì8‡0–)|°ŒdÔMÔk£^k¥íkîIåð·…|-K8ãxªØŠ•iÆU£)EaT”á-ï ËÎTùœmʕ΃Zk-CUž Ú2Aq.aŠS¹ÑH?&îà3Ô_Xþ̰n·âý~?jÄy΂® Î1éžÕÖþÅßÄr^â/9¤FpAÆ+úÐýžÿg ùû:««ìøc*¥„ËÕirËŸTÔy}Öù’kºmü¬º#ðøÛñTð4ÕJ_VnŒê{FªÆ*ŒÜgdÜe/Y9ÎÉÍœ?ì‡û=AðãG¶„DbŽØ¯Ò»xÄPª²´­ÛMR Û¯©?ô5ù¥ûrøRãÅžÔ4³š9âtta•e`Awpkô¸óÅy§Ž< gâ{ mî0`zÒi5fTe(INÍlÏóvøåà½cà÷ǵ\Ùg¨‘c»$y!Ÿ(G»Ç=«R¿}ÿà©?²^—…w¬Ù@Xó"°äWà2’ÊŒ:Wã¾!å´0˜¬>+)¦š[{¶¶4vÓ±ýñôVâÜË;ÉsL“4¬êJŒãQJZÉûnw+Ëy>x¹7&ÝåØùÓãUçÅ­g]Ó>|.sgý¡½ÕÔc3ÜR3üä–wLßôö)ÿ‚QjÞ"»ƒ]ñ5¼—3ÎÁä–l»±=K3d“îkcöQá<ío>)]Ge›"ŽyÆ!^Iùߢ~ó`z‘_ÕwìÛûNþÁ1ÜxÇZ4z•›ù,—dw^1 Ó¬qL èbf±5õ|_%Âä´T*AT•ùµJMÝèﮋþø§¹oˆ9Ljù×Âb*aiYÒ´'*Q‡,S”yS‚NW»Þú=Noölÿ‚zxWÀv6òµš+ Ãé_«^ ð&›á+5‚Ýâ¾ý«¿o¡û(ZGªEà‹½{CajÖ—VÆwbeó! ×#„#*ÇåÊš¾ý ÿà­úOŽ?g_‰!ø9iqi ¥ÐÐ4]V;“ Äò\Æw^¬F4’Ýb4y%˜ã!8ú V}–a'R•ZžüS|¶w²M馪Ë}¶×T~[’øiÆí .;†½ Ó5Sš*Rœ`”­+©^kÝiJÊNÖŒšýŽý iÿƒ³â'Æ Sû;MY’Ù6FóI,ÒV8ãŒf!XôÀ’@ò÷ì÷ÿVý’?h­OVÒt=]¼=6–T¢ë͉ºŒ‚ZK|ÌÁ•0wC¥@9¯âOÆ?ŸwÞZeŸDÞ†G<>o˜ÎX¹mR (CU¢ƒ»—TÛ’ßD­¯÷SûXÿÁC<û+iZ¿â]*kí3]¾´µŠêÞhÙV)ZCs>Ôó !D‘@ÿ[æR0Ä~þÓ_¶›ûdøÇ¬„·Qø[Å]è:NùmãÔtq P˱ÆÑNë8Š[†þ4'¨Î?$#_ÆÉkrÖó]Åâ_)¼¥-7X(Èzq_Çõ*<²ŽŒ[”欒½ìž–Þ÷k¡ýô`Âá©ñ†??Ì*FpøyóJRåQæq÷›vŠŠŒev䚺jêí<ñ¾«ñÄ’ø§[†nfTGÉ塨Eùr@€¼v¼ëQÔb°òRia‰î&Ha>Ï1ÌU}_hbg8ôÍeø;ÆñÖˆ¼/}¡k(Ç›nÛ8ûÊzAê¬À¯õO|Rø»ãýá•å²ßidÁ–! ¶³ÆÉ*J’+;1ø²§ÙyùŽ[”cóÜÎt%ñ­e}é7m5W»N×õ?±8»ŽxkÃnÃfT•èIrQåwƒ|’œ#̹šŒ”yc$¦“¶œ©žß!Ò¾)k’xC‘žÿN¾¶ó—k.‡ùIÆì¤t5ýÿÁ2~ IàÏÙ‡ËùCŒry'ñ<×ãOüãþ 嫨ê¶þ$ñ,R\ÝJUäšr]ØñË3d“õ5ývüøkiའH¢ µéí_¶dõhK™Þ÷}ÚŠiy]_üísüîñ;Älw‰ûÍñý”RåQMÙÆ3¨á)+µÎ¡>V×TÚ²v_AZ§—nˆ; ±H)kÝ?6 (¢€¯xñ\Ÿ½C)W°`@íŠù¼Weԧˆ¦çç²üuüèú qÞe†XŒûK ݽÍjÉ.·å´]›¿t_¿à Ÿ±×ìÈ ?‰žäŠ5³ùÔÆÔ[ó?gOå5/U*’^GëÅŸø.ü7âŒÓ&›â‹OÙÏ–Öº ŒQÓæYî~Ñrî³ ÖøSÿÓÿ‚€|1ÓôÝÿZÓ¼Si¦[ýS[³ó¥˜ØqsÅq+©‹´»œýòٯɔð‹d¸6‰¥Ý™Uw”ò_!H ¸Œp0Aϧ5Ÿ¥ÙY_NRúò;$Q’Ò,žFBˆÕ¹Ç<à{׋ý±›ª¾×ë¿øŸü1úãð¯ÂÉåÿÙË"Ã:k[*PoUkó%Îݶw¿™îŸ´÷íKñ—öÀø£'Åߎ:Šj±·K8V–mí£gt‚(ÔpŠÒ;rKÄ’IÍb'…>h¶ 'ˆ|Yy©_Ç ÿFÑôíÖΜçý2òky‡òèã® ïô'†´oØ+àöµoâjú¿Æ¥¶Å£éPI Û#ȼE}y;<ÂDÏÌ–±ºgþ[>=ñÓâÿŸxÇIÖ>xßáÖ•£Äž]§Û$Õgšád/çÜ\Ü ó8Ú¢=\à–5X¿{Š©M½®äýn½ß¾_#ÑËkSk’pîµ -8ÙIBI-¡ÉS÷˵ãE-oÎ/€ ÐüQão üøy{âÍjæe6V×’M¨JäGú-”pêr‘÷÷‡‹ÿà“´µ—….¾7þÓ>%ð?ÂvÕ$kˆìuëøt÷±Ü˵Œ2D·•†1»±U5óϿ਷/˘o§K"®_Ëß%«6ÂÄ’¹Áî8Àñçíûc~Ù>&¹ñ.³oqâír8V+‹Í;G†K¤‡îÄ…í­÷D ) ³fîKnbMtÒžWìœf§9ôVQàÛoî>{1Âxý§ ØJ˜\&/~£©V½g¯ÃkN:q–—ÒnéiÕYÑ~ ~Ä0­Í¯Œ>6_G{e …‡…縴¸Ó3Gmp÷qJR'VImãó*óø…eû?éºtp|.Ôµíbõ†%›R³¶Ó F ÉŽ8®o^E+Ð3¡äç<Œ|㇞"ŸÂ>Ò¯4MZÔFÓYßÁ%½ÄbXÖXËE*«€ñºº’9Ràƒ^ýû<þÊ~!ý¢à¹¹Ò|]á/ ¥¼ßgQâM^-=æ“füC$Ÿ.y ŒŒgͱ³J¬ŸW¢þ½.|Wøõá áªUÆf*¥HÛ÷T—5Gv´³åK¿½(«-ï¡üÑ_éð ö ý“ÿfÏ Íá_†~ ÓÕ.‘⸹¼‚;«©ã~9g•KºÆÒpG\ׯé³ÏÀ ƒè¾ðý™†`Ó-cáŽ[îÆ:ž¾µïÃq.)ÔÄ$úèßêÃñŸL©O’Tœ÷e*‘‹’îâ£._ü GðAûÿÁ:~*ÁA5ïéµK×ÂÖÐKuw½ËtΰB©/—Jű…ÛÏ$Wî_Áÿø6ÓÀº}äwß~$Þê°˜Æë=Î;"²sÿ/7 s½zË?Jþ–t¿ øoC”Ï¢éöÖnPFZ’2Q~êå@ùF8nW½á¯ N?Z´šëª_uû‰q§Ò›Ä|ÿYðÕ©a¤’PŠ„æ½Ô¥û×mevœTZM.—??à“ÿ°7Á4¶›Ãßlu[ÛnEæ³»Q•›ûÅg-?îÆ}I£~ÌŸ³Ÿ‡ü¿ 4hx}eŽìá§Û›c,.$ŽFŒ¡Vtu ¬A ÏîTWÐÒÁ`èG’(¥ä‘øNeÅüWœVxŒ×3­VWNò«9j¯f®ôµÝ­µô!···´-mbŠ% ˆ€*ª€ASQEu<Ûnì(¢ŠQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEü ÿÁàÖ«yûH~Íq·tOH`Sû9¹úãwÕüÿÁä77–ß´ìÚöt§Fñp ëói§tªE²*+Á£øìµðÂëÛ³ª]Ù^†É‘ì¡uòõ=·…'¨é\_Æj÷×Ù)²‚deQÊ#ác¨u¯‹WÕ…×öÃÝKÐrá#kéíé__xž +UÑ´‹iâO·ÚEs2ƒå4S2ýå=·H®ÈþúŒ…R¡Rªù‘ò:ÞjÁ@·ƒ¿ÿKöÍ[þnÿï·ÿâ«èõðoÃ7ßíiÍ/ü!¿ ¿çÆãÿÒ³ú´»þ&¿\£ü¯î?ÿÔþ!õ&Óí5i¬ç·Žâr$©tÊqõ5KT»½¸µöð-µ²|ʱr§=I=XsXw©xÏàf±¡|J™%ð—‰-Oºº•¢H5°$þfvª)‘_ÍÎ|äà]¿Å_Mñá‰<o'“&·¥ÞX,ŸÝ70mOÔgžf9Ïàs Óí–V§J”#IB¬e.eQh¥«¥%Ý­šÞý®~øgö’øYgñ§POüXð Úx'VÕn"–8õK[­6î‰ö¬ ¶ê+}A^RŽq°ä°?Òr²º†CyWùö|døwãߌþ$üZ¾—Ͼø]ãéâÕ S,† =e!±„—,ÞLéÑÁ4±[¦¿¸ÏÙÆ·ÿeo†þ<»9›WðΗu/Ìù’ZÆ\1Ä;‡c‘^Wcê×­[V:i$û¯…ßÎê×ò?Jñ÷‚rÜ“+ʳ¼º»””§B¬N4åe^†‰¨J5\Ô_7*’³µ‘ôEQ_V2AužŒ÷=øÿEø.ž'ð]üËã±»{WòUs[±ºÿ[líç®Pã?ˆçñ¯ôý«>CâÏÝÄP6Q»{WðÙûKøãá§Æ«í*D) ÌéÇEëù¯ò¯‰ã̱ã²o¬Ó^õ'Íÿní/Ñüè£OÇ<@YF*v¥³òö‰Þ›ù¾h/9—¿dßi¾ø÷á={ÆRªÅe~²‡E!|Ñ»È=ÈýæÌó¿\¿à§ß.~%üÓ4¸îv%…ìwŒ„œ>ØäQædgÒ¿l£¾†D,¬ŠCtÛ‚9ü+õëöƒð~©ãïƒÂûN&Cä‡V^{dùþ ¦³L›0Êç¹ºí¬“_rq_yú—ÒSƒ*xÃHÕ<cfXÜÃâc·š×nfq “ ‹æÎíüKm×Ña3Œ³®²–—vè¼ûz;3ò¼ó€øÃ†šŽ{€&åÊ”­y=½Åv毢”S‹{3âŸø(—„#Õ¼}òg1·ò¯âÃYµ};Y¹ÓŠ"–DϦÖÀ¼Šþö?kï.»à[µA»1·ò¯á‹ã–žÞøÅªxrhÝZFyѱòí3ØäúWÊx…‚ž#(†"”néÊïÊ-;¿¾ÇíŸEž Ãå\w‰Ê±u”#‰¥h§öªFqqŠóås<ÖŠÈÖuÝ+@ЮüKªJ#²²‚K‰¤0XãRÌÜdœzWÎ^ ý¯¾x¿Áú—Œ$¸m0iòL‹gzðÇwp± pðÅæeƒƒ…ÎàE~A‡Ëñتr«†¤ä“I´¯«ÙÞŸpîKЧ‚ͱ°¥Rq”¢¥$›Œ~'¯EŸKê}¨xŸÄZ«ÛÉ©_O;Z[ 8KÈÄÇn¨‰Nx@¬FÞ˜$t¬‘sp¶æÑda0r™;K@$tÈà×ËóþÖ ¯4ï7ÂR]j·n™Ž­fBŽ´«ŽzàšùÿÂúïí“©ëk‚q$wCþ=šÝLüŒ«°cpÁmß{’ìŽ+èrþÏóΣ‡%¿žñoÓOøåœQã׆<'[„†!by÷ú¿%HÁ-S“RKw¢W{»wûŸÆ?<ðõ,åñ¾©–—ó}ž¸mŠòc;w¹ÐjÚΙ¢YO¨jrˆã·†K‡À,ÞTC.Ám º ä¤WË^6ý™þ8þÓ6Ze—‹¬4å #…b¡^RO#=”p=ë×<5û ~ÓW0"msW{w ¼ò1ÚxÆæ%±ŽÙ¯r—‡XÉá©N¥UëÌ·V¾–ivÞççߥ~A†Í±˜|. upéGØÍ+I¾_ž2’Ó›H´Óµî¶ |uøKâ]I­toi× `I•D¡XdÅ™ˆ^…~LçÛõþ õàµñ÷Åõ{f3Ú+FQÔ¹Sžê3ø¥|¹ð{þí¬EyÔö'‚+_Óìû§†ÛÍ·ØS«ër~ Ádøõ¥VRi5f—Unßä~Ç¿H. ãÞŸ ã0TéFRRr„§v\É$åm÷½×dšLýžø'á{}ÂÖñ…ÚBå^æaøzÁtí6;uÚ­Úû#ðãÚ·L¼Ô¼!s°$”<¥_µ¿Á/è0Ô®<1b’Çw3É$r«%›qû¬§öÎ? ÿ@ßx^ßÄVOo:† +óïâ'ìSáŸß=ÌöªÅŽzW3/ÁfTñ´Ô’Õ_£ò=쇉øƒ…ëÏÃø¹Q”×,¹_Ä»5³^©ŸÁGƒ~~Ñž ñdÙFšv›qò-œè©@ƒ…nï’Øö¯èÓþ ñÿ÷¶Ó-mµrÔ¼­†fe‰=I'’kö°Gƒ´{Ÿh9û¢¾õøyð¯JðeªAi¦Ð: XL»€M`¨¨^ÉÙjíÝîý^¥ç¼YļNâøƒR²‹“Šœ›Qrß–;Ei´RIh’G?ðËàžà룵…TªŽÕô ½²[ DíS*…êí>x(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢³µ=cIÑ`[­fêHÖ5ycRí¨,@Éì:šKVTc)ÉF ìÑ¢¹‹¿x6Â[h/uk8¤½ÿtyã 7_õ`¶_¡û¹é]2À0ïI4öc*”Òu"ÕöºŠü³ÿ‚®~Ø?cÿƒžÖ~Áeosâ\ië7Ï &˜ /?˜–óIÍ#$RÜÛ\6K ?–šgü[ö:TеO‹Ÿ>!ø»Q²ß%ãÙC-†™y½v˜nô»k{X‘c*/&Y²ç/#'Ë^F/;Âa1/ QÙ«^íEkë«ï¢·ÏÕ8gÂ)â|‚Ÿ`iÊtª9¨ªTçZ§¹£rŒ#ËåîÇžq“z¨¸§#ú–ÈÎ;Ô7WVÖ6Ïy{"à JYÝÈUUI'€©¯á ö‹ÿ‚¯xûâÅ”þðíþ¶––3ÛÏ£¤RZidSZÜ$é5Æ“m ípAO’9ïåT|9Þ@ðßÇ/ÛOö«ý¤¯eºøÏã½[Y†nM™œÁd1Ÿ»g—n½z¬b¼,G`©^4i¹>šÙ^—¹û6Gô?ã Æ4«f¹…:wæ\²”’ÑÅÆ7W½Ú’“ƒ‹[I;ŸÛgÇÚcöŠø…®§€¿c¨¼7e¥þÍyã={W³‚\ík{+X{†Ÿ°ya žŠÃ¾øßÿ<ø·ðoX³ð ¿þ–¶Qk}ui§ëzÅÜl"Ë‹fkv/Í gQž‚¿ŽÊ+çq[‹«yS‹MÿyÙy$”6üÏß2?¢ÿ eª• }hT§öÃÁNRjs«:ÊO´cAtŠÔþ‡ÿjOÛö ø¯u¡ûE|Eñ·Ç››?gÑ´»xü3 C ದՔú N÷#¾8¯Îoþ×_|Yü+ÿÙûà?ƒü7e# ³’{[oZÞ2뫉6J[?pÛOc_ü=Ö¼áßYk~=Ñä×ôËWó$Óã¹û'žW•G—ʘˆËcxU ËIÜ=ãÆŸ¶Å-ioô†Ðiÿô=ALRé¾¶M9d‡þyÏrŸéw*F7 æpqÒ¼ºÙLJ•J²Qo´o'ë)]ÛþÞù¢å~`¸vTrì²JЂºu+û*1×háèF4ܺÿ'³Û=Ê×ö5ñ_ÅOØk?~ øÁzî¾-ä“I2ÛÛOgn"MÒÞYé-¦žc„’)Ì2–Èe2’šü\ø5û2ü ¾Ö4ãµø™xlÙ4é¼6ËkgÓ…)4³J—&Xâ;•á >~Y?X–c’zš·g§ßêÅ„Oå)wòÔ¶ÕXàêkŠXŠ-B½Ý¶ßù_ä}u 8¥ˆŒñy£ö1VöP§ pVz%/z¢ŠI$”ûÝ»¤©×º|(ý¡|wðAïá¶•a«$¦UÕ¦Ó­¯oà€"’ñ'X0 æF=ɨ¾þÍÿþ6Á=ÿÃ_\_XÚn/åhílaÇ_6òåâ·zAÖ¾ÊøSÿ¼øÏãøIçµ [[ý²ïXÐnmµkE…<Ãí°Ëöž Hs<è£i •§…Âãç%<,“Z~$qp^…\b©8Å^Tå(ÉúJ·~‘k]í¡ñoÅÚ3ãïÆÙþ.øÏZñÉ)˜Å¨^Í<+!nH™ŒiÂò¨è+Æ+ú@ÿ‚~ÿÁ2?gÚKÆú¬^(ð'ŽáðÞŸow%—ˆu›˜íô«ù£š8 Š( ¶‚yU•¤¼w a6œÇÝ^'ÿ‚xxÞ+/„‹£øCHŸUÕ£¸×/䙹)o§ÊðYÁòÎ÷.sÛnקÙ¶6’ŧÍ7Æß}íæ~YñûÃ̧Ãa*œyšP‚§ÚÔå)smx(9¯åÑÛøÙ†&žd ä(,ÁFO³÷'¿¢oÙ?þ ÿñGÆß蟾$|GÒìôMb¹Š/…ÔÝâlŒ ­ënƒ°Hu¿p¾ÿÁ?`ïƒ6PϬxU|e«£ù’_ëŒe ý~[HöZ¢ƒÑD\zšý:ð§„<'à=ßÂ~Òí4m*Ów‘gcvöñobí²(•Qw;3’Iêk貎9:™²R]oGçk~gàÞ(ý,*ãðÑÀxa*”$¤ùªÎ7Í}…'6µêâ»3ñ·á¿üöðHŠO[ë~,–7ÜN£~bFÝ)f ~9÷¯Ð‡ÿ³'ÃÙ?À7šì‹à{Ë™ Çk%ìð[<Îù·w‰J(P Xä~ ŽGÖtW×ÐÊòü.¸Z1‹î’¿Þ,g>#qÇ>N#Í*â)Ý7Nu'ìݵÖ”c÷Y®Œ?³×üWâ©ûFøóö“ý¾cð?Äï[ÇiÑimwŸ%·—¸´–ñWdKnžSf#íF2d>ÿÑ öLý™|-¡'†<-àMJ°YRc •œVÊì¸oò•K®z£’¤pAô-X|¿ †,!w«mêÛnîí÷f9ïqGbc_ŠpŒcÆïNœcN*0Q„mË’v¿™^ÒÎÒÂÙ,ì"H!ŒaR5 ª=€àUŠ(®ÓämÝ…Q@‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿„oø<(fý¤ÿfÁq€«¡øÅ²{2ÿg?]ÀW÷s_Á_ü>—’~г\V>âÕ™-¦ã?]?âD™«Á£øüµ\ê¾mͫïÜ 9]ÏêÑnÚI=±Ïzó/—ž$Õæ±¸Õ÷¬R™PÕ'D=tãÎæÚåío‘¾Ü‘—Kæg°ëŸLWÚ~+Õ?áÒ4ã)¬bÑÜ(ei@ÈîÀu=s]q~Úœ¢Õ¿®¤Ê¤*|_×Câck¥äî…3ÿÿO³i_óÁ?ñßñ¯ªWÇ_Jƒö}${›?/ü'_¿ç†‘ÿ~š£ØÃº6úçý;gÿÕþ"5]e¬õ›¨ 1¼ÉÙ"‡Aê@ ޵©&­«Â—Âhñò* ª;° 8s¦j9- Î Q»ѽÅoÁkw¥øri/³O*¼HÜ0 Õ±[sÕ«Rtê&–¬ïq¥MBQi½ÍiÖw×7ÛÙ©ów¸ÈÆSéŠÜñ^«$ê6‘2¼.¯ò²‡•ÆFzqKm¬ß^ Ó~Ôc/òŒŒÏ@XtϽ`ëš^£oiq<‘±M¬€HVÁÈ8銈þæƒöšï_é^ýOÞÙi±þÓŸðJOùEÇìÙÿd³Áßúd´¯¾«à_ø%'ü¢ãölÿ²Yàïý2ZWßUžQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES$–(†e`£Ü⨾±¤Fq%Ô*G«¨þ´Òoa6–æˆ|Máµáµ aÿmSüj»xÇÂ(pÚ­˜>óÇÿÅSäŸasÁnÎŽŠæ¿á3ðý¬ÿïüüU'ü&¾ ÿ ½—ýÿÿЧìçØ=¤;5ϧ‹<- Êjvô™?ƬGâ/Íþ¦úݱé*ëK’]ƒš=ÍŠ*”z–/ú«ˆÛèàÿZ¸##šVh«ÜZ(¢Q@Q@Q@Q@YñÎûÄgÁOj>%uX4MBK2®Ñ‘p¶òˆtÔ‡ÁÜ ‘Ô ×óÅÿQý²¼wuûF|Hý’>8݉5mJþ÷Z³vA }R ê«å¯Ê­rstQ@Ue”ŒM̪êQÀ*F<‚+ù,ñGÂi¾ ÿÁyn­ôxüë¿]ÚkšXòÕ¤¨ÜÀ÷­c„ÙÞ¨‰_’ùÌé×Ãc0xêRÑK•®ê_Öžv?}ð‚ŽKÄ)Å\™Ò´–×§SíFT\Z³é{ËUxs_B¿±ÿÃO™-žÍz?é>§ðwqßp`ó.Å:nZJ/XMv”^ŽÝêú4ý®þx·]ž{åð#:”Bäcü"@΀ú#=²x¯¦¼è÷m'’ © c$É5õgíÿdk[{‰ì,=HÂÿõ«ò›\ø!ûQ~ÍÏ6áf7º|jɵú4ɧ–C+¨Ý ·Ú¾6ðî6ö™5M–OòkòkæPð?Ò²¯?Õ8ÿ ¬ö«Emå*mëþ(É…êϬ¨¯Ïü`ý¥WÁÖZ5¾…fú’Ç,Z…ÍÍ»:JÊ+¨BÊXH#=08¯[ðí%ᯭ½¿Äo ëÖèSlîâÊF`mê‡8ùVlΞIùgç˜X«Jêí>]Z·[-lûô[Ÿºd> Ь0B£ÕÒÅi+µV‡)ùià¿ØÁØ£ð^ë¥þÇþ²eqgìŠûwjŽÂ@ ¡üðŽ’Š±Û ǵz~•á-/HÀµ@¸ôÕQ@ªm´Q@4¢ S¨ „QÐ uPEPEPEPEPEPEdk:þƒáË'Ô¼C{oao,ÒÜH±"Ô–rë\–¡ñ{áF‘à˜þ%êþ&Ò¬ü9*ïMR{È"³eÉâŽ^p'ÅNu«µeVsp亳äPqJû®ni.ŒýUñ§üûâ†×Gпdÿ Ø|;Òt·º–æ;8-­Æ¡5ÁO-äŠÊspo.,»‹+Ê滯ø*Wü&ò m¥ø±®…šg¸b’¢0wrä+"TˆXÔ„U¨ =Çð Z‰Ù5øbÇË‘£ru«+¥FAd’}êÝš=ñ"¼[R³ŽÂþ[(®#ºX˜¨–Þ[ãºîUl}@¯2¶cš·ÍR¬—’vü¿¯3ô\§€ü5„],YF«Z¹N ¬›m»º“Rmݾ»Y/uE/Kø±ñßãOÇ}NßYøÑâ½WÅ76ŠÑÛ¾§w-Ï’Žw2Ä$bIä…W“Ö†ªjq´öP3E òŸ–4'¦çl*çdŠúwàgì1û[~Òwmoð_Àº–³d¢ÚÏú{¹x­ÏNÒsÚ¸ãOŠ©îEÎOÕ¶}]|oðÖ_͉«K BŸw p^¶Šü“è¯ÑOÿÁ=u‚ß|!ðã¿ô}Uñ›5CcÆ£ýˆeˆIl·~Z$o$àåR)ªüç FS¾Á<;eñÃDÓbð¹ñÁv¦Õõýrõü1k0þôYirZ­ì†%ùԵɎl…Ý.;ðù.?QÓŒlÓ³êÓóJïN®Ö[=O‹Ï|]àœ‹O0­ˆs…Jr«’ŒgÚ÷jUté7&½È©óM5(§¤3µéŸ > |VøçâȼðÃ×Þ#ÕfÆ-ìaiYA8ß!lhWrw5ýÉ?ü#ö`ñŽ¡/ü%Zø{ÃjÑ,^Ð®Ò Ò ­æßM¬“ÊÒ ”’æE] «s…öþÆ>:‹ÀwŸ?g¯éß |rà,>Ð’-L@bT’6¾{²¦FpÍç­ºÈÛœçß§Áx´Ü«Jë´mwÿ4’ózùˆcþ—-(G •aù*ËyUrt ·ö0©9Í]ÞJiTþq>ÁºßµgŒ-àÔ~,ø›Cð|F×Q¼ðɡϺÜ5~“ü,ÿƒt?e¯ ˜nþ*x«]ñDʸ’(LVìÞ¡Qd”ûk_©ÿ²ßìcáÙîõh¼aâÏë7ñg¿ñ6¯q||°A nXnVòËÆìØõõ8ÊiSS­‡÷¼äåþKð?šøÏéâne«†Êsƨtt¨Æ…ûÚîuRìÜÓëdÏ€þÿÁ.?`_„k øgá–‘u<+·ÏÕ#mEÛݾÖÒ®}Â×Û^ð‡„ü#§Ã¤øSK´Òím×lPÚAƧ²¤j`+¢¢½ú8\6[MGÑ%ùˆfÜGÄõOkãª×}êT”ÿô¦ÎÅß þ|@ðô^ñç‡tÍoJ•ⲿ´†æÝ V)Q€@âºm7IÑ|?¤A¢höÐÙXZưÃo ,pÇŒ*"( ªŠò_Úã6‰ð'áÕϵòÂß”däƒ_ÍWíÿ®ø•-íÆ—ð²HÄ*Yzœä~ª„T¹’Ôóe‰ÄΊÃΣqM´®ì›ÝÛk¾¬þ¥uoø3C¥Õ5[H6uó&Eþf¾N×?o‚š?Ž,ü âîæö_)×<žÀúz×ñwñSöÐø×ñpL¾#¿dçw’ì~„Vgì¬ê÷¿´o…~Ùw4Ù¼}Ù»ST`¡&“©Á¬XG¨[}ÉFkJ¸_†ÄŸÙ“ýÚŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯áþ0¯í#û6™ñ³û Æ#ŸSýœÿÅwüÿÁãÖSj´ìÙk l-£x¸þè-§ þµtÿ‰gð´ÚwÅÝ>-EtÉo-ú¶Èî%YôÇŽ1ë^yñ‡ÃÞ$œÙjZ¬op±4¢r2vÈü«dãt¯4 üq WU 0>˜$d{ŠÒ’Ðèz$¶WŽ¿i¸ufHmн‰fº?}:“eîêw~î1‹¦õÑ|Œ« jÓݪ¼Oå~ õÉ8?…/‰µV[B[) ¬±º’§R9õ¦Ùêí’ÂöWHÜ…VÉ*¤ÿyOQQø‡Ã—ÑEtmÀÃSpܘRIÁþã”… á5×_ë@›÷ÿ|ÖÚ#ý£à”Ÿò‹Ù³þÉgƒ¿ôÉi_}WÀ¿ðJOùEÇìÙÿd³Áßúd´¯¾ª¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬}[^ÒtKV»ÔgHÑ:å€þf¾Oý¬¿kŸ~Ížž}Bå¦4p¾0A_§jþXhÏø(ÅŸŒú­Àµº“N·Ë*}žB^ÇŠúl“…ñÙÂö«Ý‡wú5q>'~ÉûÓì¿Súløÿýœ>ìµMQ…ÔY Èükó‹âoü‚ þÑ‚åFvùˆ¿àkùÀÕœWÀD俢fì+Û¥‘å4¥‡ŠÙ¯óŸ¶»¹³”Mjæ7 œúÏàíŸñkà_‰-õ{ B{È" %ìÆ}9é_/™pU ÅÔËågÙŸS–ñ¥xISÇÆëº?¾ÐsÈ¢¿7¿bÛãÀ¿´–‹o¤]ÝG²ÛPB˜ä÷ï_¤5ùÖ+ _YÐÄFÍ¡áqT1”U|<®˜QEÎtQ@Q@8ßðV ?QøAûMxö­ðŒL÷u#SÕnX军¬Ë-™‡³äÄú{òF]c$p?£šü$ÿ‚«þÈÿhÏêMðÓQ‡OSÑ|9¢_ ËÇ–m¬ÝÍ3»«ÆÍ©Ee +ÈN8eñ³êu*eíQäÕ»­SûÒ?[ðO€ÀqÕ)æ•ãNŒâá7+ò¸Tq„âÒþhJIn“³èp_ðRï øö€‹àGƈ—öÑh¾øŸ7…õÙa¸è–w7۲ݞB,VHìáÔ§šJœàÖÿŠt;‡ðp‡¯t}RîÆ×⃚æú a¹–ÖÞâ%€ï?*±Å.äßòôf5ð·ì?áŸ~ÔÿðKïÚöyñdmñM–§7ˆmDø3=ÓaÎð“=„±ð ŽÕñ>³ûmx»ÃÚìÕûhêV‰«jþÓµ Ü£JTÜÈUr2Tµ®¡-ŽXž¸¯•¯˜QNžaR6çtê_¯¹.I/¹¯½ŸÒ™?æµ#àŒ!MáaŽÁ*zrµŠ£õÊWÑ'RÞ«’.êÚwTWÊŸ±'í«~Õ²ÿ„¾:ø‡ImQ×-KÝZ‘#ÆìŒð‰2Ævù‘NQ‡'©ú®¾þXW¥Ôž’I¯Fæ¹n3&ÌñFaZ´g(I];J-Å«­«u£ (¢´8¾+ý®>'‹|wÍÛÿ*ûR¹è±kZ<¶Ò îPùÛ~Ó^¹ø7ñSX:ªôÇY.IYƒ¡€'+ÛÛë^ÃûB.h\IKg°v‚¤—B‹ŸO¼N? ýœý¼bgñÖ­.¡§ÀD›‰ £šò¯Ø«öÕ|âäÕµœ¸%›’qï_#_…0Õø†9Ì´JÒk¼•­¥»êÝõ}7gî¹w¹¶[áe_é]Ô’tÔÚÒ4gÍΓæÕ´ù#q]©7d¿¦_‚šŒº—„ížn~Aü«Öît» DÈk†øi `èÚãT ôšúãð£È|YðÃ>#¶x§·C¸z øâÏüûÁ0‘å6QßìŠý\¦²#}à 9-ÿ‚Nø:î9;ÉÏðŠü©ý¥àŽö³Ç<šu€ïŒ-p²YZÊ0è?*á¼Aðç@×bd¹…Nïjÿ1~À¿~kZÿÃøÍ­ËDð +#"?]›Ôíçޤ çì|9ñWÇþ ¶Ð¼k¦,,΋$nU uœOûÄ{W÷‰ñSö2ðgŒ"pÖˆÛ³ü"¾mð§üÓÂþ×—Q¶´E!³ÂŠòq¹Q˜ÕU±´¤ºõùÛuäî¸áßxë…0sËø3©J”“\©§}ÜT“å—÷£g¶º#Úÿ`ï K øÊÞU+²5û ý1¯øcà+é±ÚB¡B€+ØkÖ>¶ÝØQEQEQEQEQEQEQ\o‰¾#|>ðSB¾1×tý$ܱ ˨ .GP¾c.â=«¡Ñõ#Ä:]¾¹ ]C}ewËÅ»¬±K «£¡*ÊG ƒƒSÍ.Tõ6– Q¯85³³³ô{4QEQˆQE|ÏûL~×ß³÷ì… é¾#øÿ¯ ×W­¬ÜÛ\Ü $@ -¢•€‚N:rÁ¬êÕ¥B›«ZJ1[¶ì¾ó·.ËsãO-ÊhJ­iéB.R“µôŒSoDÞ‹d}1E2?´gü3§xIb´ýŸ|?£x‰î"mÓËu¨¢Ê –)l-@@¦`sÔWäwÅŸø-¿ü/â›4Vž+·ð­«¡FƒB³ŽsßÍ›ÎOºÊ+ç1\]“ᛌ$æÿº´ûÝ‘ýÃ_E¿x‚œ1ª4ð°óúv—þ9/.d¯é©ýäk^ Ð|7fÚˆ¯­ì-Ôe¹•"@$–rZøãoügö ø¡Ïªë_tívêȺ~*jWo"ç)¶)ÈÆet_zþ$ôoƒ_·oíãx|84ŸøÏW1•µ6¸tŒ¤m+n¸¼eŠ/”¡wrÄÃ~Ñ_²íû&Þé–´…î<6úȘش²C2\<¿7cÁ$ŠJy©¸g#pÍxØž/ÌVÂáŠÓ™Ý¯Á%øŸ­p÷Ñ[©fÔrž%âxÕÄÉs{ Nœ'(«·e)NmY;µdŸk¯éYÿƒŒþê:¤ï¢x_SÒ´èåhâG´†òêh¶ü²™>Ýo»îàÇåÎ1ÎãÒ½OÁ?ðq—ìµsá»›¿xSĶWö¦Š dµº{­Á·É¸ËqìÚ¥#ï| à×ò¿ð“öRøññ¦ÒsÁúÄz“y/­^)·Óc äܸ æ0w2E¾LtBHè?Ÿ±çÂÍsÆ:²ü|ø•áh< ¿ñ;H/å Ì#–Þ(¬õ'Ê…šÆ@b†¼ºCÄsœd𴻤—ô¼Ò3Ÿ¼ÂajЩJNT­xÒ©)TZÛ–ÑæmÉéi]ëîÛCéÿÚ§ãíQÿ6øÙqûX~Ë>ñ&—¥ü?ÓaŠ9ôù¦šhÚ܉ã1䉾h­÷0 €Ä|ñbÛWãe’üAøæÞ'Ö­¬£Ž{½yçC¾Ô†×íEDŽÌÜGf9'M~ÙxNßþ óûø3T´ø'ûIÏÄmQ"ŽïV°Ó޶ŸÙñJò%µšÃÛÁ!ÌF_>yFQ¿u›<³á‡ü“ö3ýœ¼y©üXÕü;âŒß­÷.Ÿâ­cT{¨ 6qö¶ZZIgòà¶eÔ¡Êç9bpԪϛ0ŨÎzÎÒN7ôÝÒèÕ¿¼zfYvÑà^•l6*x^j5iUp²æ½\KŒ}œ¤ÛU#7$µt]Ë­öBñ€í´Ïþ×ÚgŠ>xWT›É¶¸]I®® ß²+‰-‚(Þ»YÎ_?"¸ ·÷B_ø$ïì1àÏÙêOŒZºøœi:LJdÔ,5ÿÌ->Ã}*bÚ)ô{xá¼— C„‹Ìó6Ò¾#ø…ÿ ý¾¿m]`iŸ³'ÃÄð휷^iÿ„[H7W/9ÈY'¿x\¬‹ž$O(޹Ø|1ÿ‚ÿÁ@¿i/MãOÚcWÂtCM{­^ [Q˜r#‚i3ŒýÙfŒJ¬ Ï*yv×Oi5e~÷z[ÊÑ~fWçÏ ‡ÇqçRÉ¥å:4ªª“”o¤U8rÏu’©^­;>UðëülýŒ>èóxkáè¾#x‚ÝäX¼Uâåš ±í¡Çs5»•?q¥qÇ 9'áoø x¿WËiÖ:d†$I#Óâò!vAƒ'” Dfþ!TÏ!FMLÞÿƒjµ¿øL%_üUƒû#¬´ÆûdÀ¨2+,—\;[!XrJ®vÒoÿÁÿ`/øGTðåæ•ªk7š¥œ¶ƒS¿¼ßujÒ¡_>ÙQÝ%Bw#Ê–Xjq³v÷ž²Ñ§§E}´]OÊãôŸñ2¯Pâ´eJ—=°ð½:-ÊŒ\ÒnsQ“S´¤îâ’j÷>$ýœ?dO‚~ø#àÆŸ ¼?¥ë¾ÒíáMmg¨Mityïç•–’I2ï*íg'-Í}´PFè)h¯¢£B*t•­nÝ4è~ ›g†uŒ©ÇÔrr”¥g)I.fäÒærv»êÛ{¶Þ¥Yì,®¤Žk˜RG‰ƒ£2‚U€ OB##ÔúÕª(­O5¶Õ› (¢Q@Q@ðT_ù5]Oþº/ò5ü+xƒþC—_õÕ¿u?ðT_ù5]Oþº/ò5ü+xƒþC—_õÕ¿c×Ò²/üœg…ëð#_7×Ò²/üœg…ëð#@èð×þDË?÷k»®á¯ü‰–î×w@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ßðx Õ½—í#û6\] Ðüb¿]ßÙëýkû¹¯à×þÓ¿µ?hÙ²Ðä©Ñ|^[vçNÜGÐsøUÓþ$lLþÖ_¢´è‘\_G`I¦FʨΠÛ×/ĆÚšAþÐx±HÎZH¥ù’HÁêp+”¶øãã8°°†)mI;o<ÔòBânr0:Œf½7âO‹4¯XèºN–ï{%…²ÛÆÈÛw”3îíÏJìNR„¾±¡ S…HK îßO‘âcá×Ä"2ºMà¿tiá]|Cÿ Uçýû5Ø/ÇshÝbäÿ×Ñÿ_ø_ßüø¿þñ©çÃw:½®/ùÿ×þ5½Enõi¯ÑxvÏ$ôÆ;TðXYßéï{òаG'kºsèj[–Ñ.c†h¸u˜•R}Aæ¬Ì4íC’ÂÖau<¬¬î ìzÈÉ­í[ÚÍâ>¤wsÓQŒ)o§N„¾—zÜê7Ål¤30|’çsŸ­ex»UŽòêö{uº°õÆÜ*e…ÜjÅh†YF}Xv8«þ"Э£[Èá¹D–ŸzÊHÞI®;Î<®‹XNú÷ 7 ×}M?ÌÿhOø%'ü¢ãölÿ²Yàïý2ZWßUð/ü“þQqû6Ù,ðwþ™-+廙„(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+˾/üDÒ>xóĚī $N·÷¶œνF¿#?௥ðÇìîö6LVf¸QyÁÅzVëÙ…,/ó4Ž Óõ¾®)}•sù±ýª¿h¿üsø‰}¨jÓÈ`†Y"D-U[þB¾Q$žMKs3\Ü=Ãò]‹Äæ¯èº=ö½¨Ç¥é±™f“¢¯S_дiRÂÑJÉ#ùöµZ¸ªò«QݶXðÿ†u¿ß.› À׹ª÷5îöÿ±çíwmöØ<7pÑã;±Ú¿¥¯Øþ ûà?‡¾³ñŸŒí¡Ôo5’tÞ¤4GÓ ô¯Õ<á ko²AcÇŒ`zWÀf|w ™PÁÓæKK³ï²Þž# ØÊœ­ëdŸ'Œ| â¿Þ¶â‹Fµ•NÒ­×5Å×öõûUþÃ_ þ.ø2úçMÒà·Ô–&e”X·jþ6¾7ü-Õ> |D½ø}«g³?6F$é^þGÄ8|î›QVšÝ{ÃØŒ–¢rwƒÙžLÍžWgì(fÏ¢,{Ížº HïP³fšNy4Æn¡±¤ ØàT%±É¤fÇÖ¢É=j¹¢@I&’Š›< –ìh—D ÙàT,ÛhfÛP“ÜÖmš$zïÁÿŒÞ/ø5â¨}±]•kСjóQ^m/Ìù\³%Î3ªßWÉð•+Kµ8JoîŠlû*Šþm¾*ÿÁÅ? <=«j_Ã? ¶·N~Å|²MåΜcΆâ9 cÏÝ3 ü¥øÓÿâýºþ&Oukà}FÇÁZtϘ£Ó­£–åû¦âá\žüª©þuóø®,ɰÿ Üß÷WêìÜxwèÃâÎ}(Ë„ŽÎõ§Ë¿÷b§+ù8«lìÏî…Ô"2c‚F@>ã#?|µ®x_ÁþðÕ¦·ûPxèÝ]A¹ä¸–ýô=9‰tkgÄqÉÎÜ4íêÆ¿Š?…>/ø÷ñ·Á:÷ÆoŽ?´¥Ï…´M1æ–]>]~{vþx£ÃH1o/Ÿ-GŠ=ÜnÚ yâmoþ èžÓõ+»Ï‰^7ñâ<—ßi¹Ó´¨må`Fxµ‘·|Á·àŽ Šó*ñd'SØ$­§4ÒÿÉRmýÞ‡è™oÑ“‚ÆÏó©ÎjIOêøYIÅò·Ê«ÎtãgïZVz)+ò£úCøÿ‰ÿ‚g~Í×2Øüð‚xŠöäµÈ“Ãúm••«OžLòÈb™$9'wÇ®q\o¿à«ß·¯íWms«þÌ-<=á¸#k­}}ic·rX"iÈ=c†9XXÍ3Ÿ~%|Z.Ö_|c)°t–+ˆô+]^þŸ*4—3ZÊC7²ª)nB¯¿D´_Ù‹þ Ãûhx6k¯Ú+Ä:熼`d»žçÅÒ\YÚ TäÇb¨$tßÝ—“¹A&¼ª9öiŒ“k,"’ùÉÝ¥ßO¸ý35ðWÞÃÆ¶mìyî“­ŒÄT«S^‘ÃSä…I¿³g¯Ù’Ðýø}ûb~Ô>øáÿ Ÿíññú‡´7 ý… j6Í,ûd2éö–wW’Æè"w‚Ppo̵ô—Å?ø8Wö%ðk\Yü;°ñŒn3 ¶ö©gi#u¤»xç_¯ÙÍ~2Э¯ã¯ø0F¦RúíÃÛHÞcržIp9XÞTgÆã£ÄÙ­6ðØ]ÛÞO™ýí¥øUšý<4ÆÆŸñ-ù!¹(ST)rïwNœeRï«ç¿}®~õø“þ çû`üwñð/ìð¶ÒÞöî=‘ÆÉs­ß+1"Þ%ÿÏHGzø‡öÏý”à§Þ,øg¨~Õ?·V¤¶Ö:Ä,íuR×Îsy,hb°±µwŠ)CɱT9” ôÿÁY5OØGáÏü3Oì¥xwÄ6ºMÄ«?‹/t¹m%Õ»• ŠíšPŠÃ4® ˆ(1'AùÅûSþÛ_´í¡¬éÚ·ÇÝmu_ì5l ‚ÞhmÖr¥ÕR]Ä•3–lq»üÂŽ# (ã±3«SùU£üí~kt²³üN® àLÓ$â:8Ž áü&_€Œµ­SÚVÆU§Ó•JδZJ5$åîÓ’å4|mûxŸàö™áwãF»¥XGâiÕ!Ótk¨5­\Bvþûì¶²ù;NàIr…Ï œ~ŸøÅßðIoÙà®·ðgöƒð‹¼[ã ÜOÿÝ TDž%xM¼©rd·„Œ8/+?Ì~R¿-p_±§ÃÿÛG⮋ÁÏØãÀö_ o¡ÓR]GÆö—©©êvG7—«½´ŸdV,ÒG V`;¸½§áOü_ö”ø©ãIõÚRŸMŽöEžëZšö)î—V­·úD³¼‹¸ž[rŒC|5ƒÁbUªå˜nw-/(Þ+MuvO^®)/5©qoÕu2ï8a£B\ü”*ªu§ï^–Ÿ<£ýØW©9ïhÉrž·áø8;á‡ÂÏvÿ þü&»Ò¯4[Qg¤[]j¦öÎ(шŒË3¢Ü8TÁÛ×?(`jüý¦?j¯Ž?µ×Ä9>%|sÖ¤Õo@hí¡QåÚÚBN|›hGËýYº±cÍ\¿à€²_Éwž6ñõÝçô­¯ލ.rT,³I£O(ç!cË“…#ô§Ãß°_ìOáYm á?„á‘HŽÚM¤Ž¬£«²Vgð=ð;ö(ý°?iÛî~ øW×tà—vT[Ù¤© srÑ@H ‚ä+õ;á?ü³û[ø´ÁwñOÄZ„m¥MΈòêqŸî´Q¬p“þíÁ¯ìãLÒôÝNƒGÑ­â´´µb†QcŽ8ÐaQ@UU€*õwax+-¤“ÅNS~¶_†¿‰ñüGô¼ñ1©:|9†£…§­Ÿ+©QzÊO‘¿û‡÷ŸÎÿÂø77öeðж¼ø¹âÝsÅ?} ·•§Û9öUÌÒZý*øMÿÁýƒ¾ ýžü6Ògºµ9K­IPŸw®û¦—è}íE{Ø|›*ÂëB„Sïk¿½ÝŸ‰çÞ-ø—ļÑÎ3ºÒ‹Þ1›„ý¹O–?¥éN‡dšn‰k ¼v(cAôU Ñ¢ŠôÒIYÊRœœ¦îØQE(¢Š(¢Š(¢¹ïx³Ãž´7Þ"¼ŽÒÕ¤'}(¡¢¾øÍÿýŸþi²Üiú垥srŽÛ‰€¯:ý’à¡–µWŠÎ“¦i&Ê%•âß» í8ÏÞ=hôöŠ( Š( Š( Îø*/üš®§ÿ]ùþ¼Aÿ!˯úêßοºŸø*/üš®§ÿ]ùþ¼Aÿ!˯úêß΀1ëéÙþN3¿õø?‘¯›ëéÙþN3¿õø?‘ ô økÿ"eŸûµÝ× ð×þDË?÷k» Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š+’ñÛjkàíE´mßj·•·®îØ ¶ŠüO“Qý­·¶ßí dã…ÿùÒÃö•ý¥ïþ=Ü|Œ_}¾ÞßíîîÇ=³í@ÑÝø­c¨þÖm‡ÎþÐÙ½wp½3Ïzòßø(Oíåñöaø¡áéðO9»Ó’Y•H|&sÈõ ߺ+ÁÿgoŠÖ¿>i~&Œ:ktyW©Vnƽ†+óþ =û]Mû1øBÆïKËÏ{¹@S‚ϸô®Ëþ ïñû\øýð{Nñv¸Mqã¼äôæ€?B(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ø?ÿƒÂu8tÚ7öm¾Ÿ8]Æ*03ßÙËœ} xüÁázrjŸ´wì×i ܿؾ0b£ø•NœX~YÅ];ûEbgð»ŸÄµ—ÅXcº)ýæéÛˆ$;,»s÷—¶}¯HñÏÃXR@#?/¦FjªÑk ¦ºŽ_»«z®÷Z?»§Ü³ßü“þQqû6Ù,ðwþ™-+ïªøþ Iÿ(¸ý›?ì–x;ÿL–•÷Õfp…Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@=ÿðYÿƒávðîÓþ±?•BüÞÿÁgþûýSúWÓpŒT³ºWè|ßI¬’­ç5Ÿ°¯¬ÿaû /Tý£ô+=h·f;ƒtêµò9 rk´øuã{ÿ‡þ-¶ñVšÅ%·9R+ö¬e9VÂÔ¥ Úhü[ Rq4êÍhšgú xÞÖ×Áú}½$„Ç¥uµðïìcûPøã7Âý6ÒÚê8ï­ D•dq¹ŸØu¯¸£.ðr=kùãB®:U•šgô&½,Nh»¦…e ¥[¡¯ã7þ ã¥è¶Ÿµ.»ujWí,ʸÜÕý\|uøéáƒÞ ¾×uKØ’hbfDÞ€õ¯áóöµøÑÿ ëã~«ñ/æÅéæëÁ'ú×Úð.¿×g‹µ¢•¾gÅñÎ.‚ÁC {É»ü› P“žM!9äÔ,Ùé_©7Ôüµ+ŠÍžBÍŽ ØàTU ÜÑ.ÁE! šŸ< –ìZ]…fÏ¡fÛMgì*2é¬Û4K¢{š…›u Û©µ –•‚½'àþµ>ƒñNÕ-[cÃ&A¯1gϧ²¿¸ÓnVòÕ¶ÈœƒXÔ\ðq}Mi· ©ö?Ñö]Õ&Ö~økS¸mï5¨b^û_%þÂדßþÊ ¼¸9y,“ÿ5õ¥~‹.*¤{7ùŸºaeÍ…§/%ùQ\ç@QEQEü„Ánôí{ö]ÿ‚…|=ý°<nVêöÞÏPÞÿêå¾Ñæ”cƒÃ[ù*AÎFkÕ?ààh_~|ý¬<0L–÷¹µWQÖú²Þ@IÿgÊ`3Ý«ìoø87àêxïö.³øoÿ>Ö ¸8&Þø‹Y·Îñ1úWó½âŒ?þ<ÿÁ1|=ð«K‘5 ü.ñͬ.3u sÁ$šS–,I€)¾R‹¸œ¨œg a1Y†i¸ÕŠœmÝ=&ß’?Ð )ÔâŽà~7ÃUŒj嵪àë9;'Jp’„[î”©Æ ¬ª$™éŸðAω3xþ ¢xoþXø»KÔ´© mª¥ 7ÈÇœZÔ ÷ozþì«ü½>|Gñ?Áÿ‰Å/NÖú¦{ õ³©+óÂá¶œsµ€Úø$WúBþÊÿ´G‡j¯º'Ç Y\éÖzÂ1X.ÕVUhØ£+0ØÄnŒç,„p;x# aj`$ýäù—£·äÿ3㾘œ‹ÃñèC÷5iª3}ªAÊQ¿ø ì­üŽçÐÔQE}Ñü`QEQEQEQEQEQMfUb8çÔШ¬½oXÓü=£]kÚ´‹ ­”O<®ì¨ªˆ¥˜–rª£«s_„ÿàáÏØÓÂWW:w„t?xŠxAñ[ÛÛÛ´ŠpT¼³‰îDßJãÅæ,OQFû_©õ¼-Àœ_ÆÕ*Sá\¾xŽKs8­#{Û™¶’½®ú>Çïex¯µoÚ þ7Ñþèšöh…$]OS¿¸Ý憋ìPÚçÎÿ´ÓŒçƒþÿ‚ïüpøÑqqoû7þÎz׊c·)æOÕÅÒÅ“† [XÇ ‡iÆ9¯ÊOÛ#öŸÿ‚—üFÖ|Aãˆ~2‹ÁM”›Ï†´ŸiÖ²ÚÅ*±}’Úð^\‚z9Ý‘…âc8›Ó ¥?ðÅ¥÷É[îÔý‡„þŽÜi‰Î^‰%†Â;h«V„åvÒV¥F£“–ªÊv޽]‘ý ü=“âí¾¥¨·Å={Ã×öð ÑäÙOk$*Ø*ÓÉ=íÀ mqÄkž¹H?xãþ ÿèð%£\^üI´Ôn ›muxìÊ3´y0²Œô˜/½$_ ?h…ž ýš„¾,øç]×äÕ§¹wðn‰mýŸk½¤söwRSoq©-¹-ÒbBa<øù>Sø{ñŸÀ? 5k«ýÀz‹d‘“?Š!¸¸XGo*Τ·ë?Ú?Þ럿Ԅ)¬4b®®ù›“_wêïÝ#õ¬›è­ÅcqÓâõªû9(ÓT)à ¥tÝê§Ö×q‹µ„êÞëö#ö™ÿƒ‚?iO|AÔlÿf,¼5áHÛeŒ—–iq¨Ê@i&óH”³îeT_•p $~.¶ÿ‚ÏÁIm亙¾$I+ÜÁäú~ˆ¾pÛãQl>]Ä ï‚2<©~ÜÿðR7ÿƒZ}¤QéZxΕ Eg¡i¶v#dHŒÂ¸]ŽxF°xÇþûX|*ð<¿>/kðö›i––Ýn;Yd7lŽi£¢Gªo˜ ß{šðªbx‡åŠÂÔ©(kª¼WÊÎÇí,ƒÀ¾ £C‡8/ÀQÄÚ+ÙÍÓ¯Uÿ/4§MM¹hÛjÍõjÌñÅ×/?hßÛ|Tý´?hÇ´·Õ\hè/µOd.ÈwYBÒÔ>Óå‰$\Œ6ݤòGÆùfèõ ]+öt·ñ–¶æOµj> šÛ̺'hO*ÖÚ -Ñv±ù¦‘›vݼþÊ| ýˆ¿à™Úf…}ãïÚ_Ç6v:&›2Bßeñ†£s,á77Kþ²Å õ•¥÷9Ûçºò>0ϸ;#Ì­âgˆSÅ8¿ááÜè«ëu8á¹mtã¬fš»“NËã-sþ “ñÏÂÞ›á×ì­àO |(в ²i–Bâæ3ó—m¬ŽO%š×9æ¿7>/þÒßµ/ík¯¡ø±â}cÅ÷DîŠÓ,Щâ´V$ëüŠþægø%7ìAû:ézhÞ ±×u›$_3VÖc·ÊÍ YwE'8¢€8÷¯½4_ø;Ãndðî“e`Å™‰¶‚8ŽçåÈ£–=Ozõ gÚj9†2ËùRº_/u~æÐúExSÂú•ø„ùçwûê’ŒjÉíw9FµVžúÍ7Õ'süò¾ÿÁ2ÿn¿onþ øm«ÅkuÊ]ê1gÛíþ÷™tb}3_ªß?àÜoÞ"H56Ó|5`d´Ób}Bãgqæ1†$b;à{×ö Eváx3*£g]ÊoÍÙ~‰òEô¶ñ/6R¥’Ó¥„‹ÙÆ<óÿÀª9Gî‚?>ÿÁ ¿`…z•–µ©èwÞ-º´”ÿn] ‘دÎöð¬Q1\ªT®ä1 G×ß¿àŸß±¿ìϨÛëŸ~éš^©g$²[ê2«Þ_BfWÄwwM,è¦7d!\§¾Å¢¾‚ŽY—aÚt(E5³²¿ß¹ønoâ/çЫK8ÎkԌեV|²Zèã~[{ÏK[V0(¢Šî>0(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šükÿ‚‡ÿÁAïf©$Ð4h&"C‘~€×óoñþ 1ûHüUºšÚç_˜iòg¶xÏã_¡ð[ù¤ÿ¯Ÿë_ÏÅjjúΡ®Þ6¡©Èd•ÎKzþ…àˆò0Gÿ]Ûùšþu«ú)ÿ‚ ÈÁýwoæhú¯¢Š(¢Š(¢Š(ó£þ ‹ÿ&«©ÿ×EþF¿…oÈrëþº·ó¯î§þ ‹ÿ&«©ÿ×EþF¿…oÈrëþº·ó  zúCöEÿ“Œð¯ý~äkæúúCöEÿ“Œð¯ý~ähý~ÿÈ™gþíwuÂ|5ÿ‘2ÏýÚî袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯Å/ÿÊb5Ÿûÿì¯_µµø¥àÿùLF³ÿ`_ý•èö¶¿›¯ø)/4ωðPïøSVA$3éŽHn™Oø×ô‹_Ïçí¨ÿ‚ xúkÿ8h×ÿà›8Õ¼¬ëÿ |\Ì7^yv*ü~íq÷E~Ï\\Ai \\°D^I=~ ~ÐZ.¯ðoöð'Ä}…¾‡f[ñ¼s×<ùWß¿´oÆÛ öj¿ñ¾•'ï®ìŒÖÁNY¹Çué@ŒÿµÍ•ïíUâ_ˆÚmþd´ðÒò^ÏüçÿÑþµkë›ÍBk™‡fÉÚzæº *E»Ðn//ã5³ªG.¯ØŸQÚ¯êÐhc[šÃQ¶-M„xØ#mô9ÕMcShtÖÒtûF³¶Œîfí¹º9Ò©:³•ÖºŽj¤aBÛkÒߘë8|-cQ!¹¸‘åŽM»ç@®?ĺ•Ýô—W’¬èÄÇÞ_åÚ§ÞOg{Ì1ÜÜä0'FyÍu^/IŽKûK›l˜cq ˆÛHùrv` fšÄP~Çݳ—²«­äÚùŸìãÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¾ÿ‚RÊ.?fÏû%žÿÓ%¥}õYœAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP_Íßü„áŸëô¯é¿›ø-#aœ{§ô¯§áùÓ>k‹äIPþr L'4¤ãš›<šý¹»Ÿˆ¥sÛ>~Ð> k)®x*ìÅ,m¸$®G¶kô+Oÿ‚ÇþÓðiYÜÞ@d „!;×ä6ꉛ óqY^_ŒŸ>&Š“îÑèá³<ÃL5WÙ3ê_Ž?¶Æ?ÌŽïwa‹b"Tdûf¾Vf,w54:ÔLÙúWE*4pôÕ:IvG=ZÕ±3u+ɷ݃6j&lp)¬ÙàS*›¸’ B@4ɨI$Ô9$’j&lð(fÏ¡fÛPÙvè Ûj"sÍ!9æMC}ËJÀHš›< i$ši šÏrÒêÀMBNNi»š„¹4›(ÿAØ#þMÀÿö_ý××õòìÿ&‹àû¯þ„këúü+þûWüOó?sÁ¹Òÿ ü‚Š(®S¤(¢Š(¢ŠùÏö½øNß?eÏü$…ck{B½¶¶2ŒªÜ˜XÛ¹é÷% ß…ßðLŸÞ ÿ†xøÃû%x¼[écÆvÖ³ fPXÅ÷úlñ°@ Ô’FìÀ+ü  þçUÔ«ŒƒÁ¿‰/Ùà‡ì?௞6ý’>"Úü9â íoJšÆ"ÉöÖsbÞ+†ÿ¡FN¦,×ó¹ût|ð¿þ1~Ò>5»Ì—JñÍŽ¦Æ£ËŠâ¿ÕYÕT¨&(lŒ*¸#l„ã!X}ÿôÏ«ÙþÐåΑ¬-²ÎÖ¶wºkäý®ÒK=Js*íî-íÆãü20ï_+Ãþ×-ÏéЖ¼ÜÑû›Wû×ÜJxä²î?ðKœÒ|’ ¨ÖM«ë(R©Ê­­¥ ©^ËÞI½göeEWë'ù‚QEQEóOˆ?lÙsÃZ̾½ñΕsªÂ»ÎŸa7Û¯É\%µ –gl‚6ªžÕÛükø™ðgáƒ_Røáâ[? i Ï»¿:yvRdr,‘ÈO2¡år ‘_žÐÿÁQ¿à“¿¯nlü/ãÆi~Òú>•u “wÚ[[Vã1 ÍÜ×/K%Ö„?ÄÿK¯Ìû^á,Ë=¡åž§ê„|U¦øÛÃöþ'Ñ⻆ÖíwÄ·Ö³ÙO·±k{”Šhóé")ö®–¿þ#Á|?aoh³Oà FûÄ:€Wò¡ûÕ´{— y$‹€ÝŠƒïŠþr¿kÏø,7íûRÝÏ¢éúÓø/Ã%™SNОKV–<ñö™Ã™¤$}åÞ#ÿf¼¬wex*~ìý¤»Güö_‹?Làߣw‰aŽ’Ä`å ž²Ä&¤—hÂÊS~vŒ_tj¿?lÙwà׈?áø‡ã"Ç[9Æ™ö”’ó€[-tK8 $9¯‹~9ÿÁl¿`?‚­s§Xxš_ê–Çi´Ð-ÞáIöº“˵aþìÍô¯àšyç¹™®.]¤‘Éff$±'©$òMKec{©]ǧéнÄó0HãK»±èFI'ÐWÊÖã||î°ô£×»¦¿Õé|£èuÁGN®w™V­Ê½åJq“û§%%+ÿxþ´¼wÿ|>×tmCIø_ák½òeòìõ-X-ß’Hù¥’ÊPÀt@.N[ï½~5½ý±¾6þÜ?_Àÿ²³¨øn[>][RñŽ/šáÑí“ÍyctŠ]7DŠ=˜ŽX#…™ÈA¸ŠùSáü#þ ñ2ÞÛQ›Â6þ³»'Š}fþÞUÆ@h"i®#U’%#Ò¿\?gÏø"GíeðãÀš‡ÃKã²x7HÖØOgá»iYäd[–{Y]©2Wï¼¶t¥>'Ìä–*œ¹|’‹ù6ãoU­»œY–èåáæ¤øo‡úÊÑsNx˜¦ì›œiÆ«Ÿ*WTåhskîËÞ_üL_´OÃM#á/íIûS|7ðÚ¬Q‹;µÔµÄ„.Ó-ºM4®É:‰$žM~aøcâgÂ/‡ž7´O€Þÿ„¾õd þ-EÔ^g†ƒL¶Ûl›€û“›¼vjþ–-?dø&oì à¯ø·âï‰|;ñ/ÄH³^ÛÚøžk&¼šü&| Qf‘RG^ ˜f$îé_ ý¿¿d˜tÛ‹ïŠÿõkM5ÆŸëß`Ò"s1x“û3K³ÓíBŒ.ÎÈ ûØN<à ìgOë•£ »”ÚKdß¼—•‘õ\ Äk6Ác£Â™M|N -$©ÂŽœ§QIÊQ¦ÝTW·´u'mW,]ݵ~;øãþ ;ûMü;ðÿÂßx=|á[›Æ‹O²Äڽܢ!æ ‚öä•C„H˜FN# iô‚¿ðAÏŽ^/Ðu?ütñVŸðÿú]¿ÚÞúx$”5º#I;”™­^%…—y.*Xg!øãöÇø£ûQüdÕ{`ŽE~Íü"ÿ‚þÃß |O¢øÊf×µëýhn£7×ʱIq ‰Ý-â‡å  „á·W£…Ê3ŒM%aaMwzI_ÑßNÒ¿ÍŸÄÞ)xSÃÙ¤«â¸—’Þ•7”d¢´Œœâé§)+¹ÑpwÛ–:?ÄOÙWþ Ûñá…ž©à/…þ¸YuSöÑÛÚË®j——ӽżñ…Pa°Ÿ”Ouãï„_·ü¶Õü9ðãÁžHïR]KTžâÜk&â8¼°——»0>BÛÄಱécâ_ì û2üdý¡ôïÚWâ–„5ÝkJÒcÒ-¬®öɦªE<· 3[ÃÌfrSùw ÕöŸ§iúEŒZf“v¶Ð(H¢‰B"(說z^õÆU¦ð¹Ž%ºkd¬¯çÖß#ñ<ÛÇnËq”ø‹€rÒÇÎ)Î¥YJjœ¶q‹R‹ª¬“N¢\¯áVHþ>¼ ÿÝþÑz•ÌKñÇþÑá,D­aÕûªƒÃ"È–²9Áe¯ºþÁ¹_³_†^ÚóâçŒu¿Ḭ́ڤZm´¾ÅGŸ0I÷¯èšŠî¡ÂÙ%cÌüÛ…íøœ}$|bÎ é<×ÙEô¥ p)(¹¯ü ñ> øgÿÛý‡~höúƒ>ék¼Âãý0IzòJU¦{§”˰òÉ ü WÙöúN•fGimKl¥!Š¢58ÈL”p8•¡E{T°øzå¡ä’üÈ3<÷;Îë}c9ÆT­-]êNSw{ë&÷êQElyAEPEPEPEPEPEPEPEPEPEPEPò]ÿ·ÿ‘ÚOúùþµüüWôÿ·ÿ‘ÚOúùþµüüP_ÑOüþFÿë»3_εE?ðDù#ÿ®íüÍUôQEQEQE~tÁQäÕu?úè¿È×ð­âù]×VþuýÔÿÁQäÕu?úè¿È×ð­âù]×Vþt_H~È¿òqžÿ¯Áü|ß_H~È¿òqžÿ¯Áü oÃ_ù,ÿÝ®î¸O†¿ò&Yÿ»]ÝQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEø¥àÿùLF³ÿ`_ý•ëö¶¾fÓ¿eŸéŸ´eÏí1“n][}•“åìÁ3Žþ”ôÍ?¿¶Ÿü¥À?ö ý þ€«ä‰±ÏÃOŠ?ôŸšü³®¯£Â`…P…ISÈÈþèí@wûeü'‰Ÿ²ýý¶™ÔŨXuñ¯Ç-;ãž¹ñwÅý›ìDŽº/ú¤¥[ù›¯üu¯éÍ4{5ÒÓIu ®Ü0ÎGã_|3ýþ ü-ø£«|XÐÌÒj:µÏÚdr¨øäœ;b€5¾>x:ÓÀ?±Š|)d¡b´Ò¤Uê+ãïø#Ÿü›v‹ÿ\?öU¯ÕˆÞÒ¾&xSð¸Ym5X ”á¶¶:~Uäß³—ìËà_Ù›ÁvÞð4“Ikj›ÌIl`äúPÑÔQEQEQEQEQEQEQEüÿÁãW÷oíû7\[ ÌtOŒ¤§d¿¼êþàïËt¹ý¥¿f¤~6èž0p} g0ýF*éÿ$Ïàgð¥gã_­×öÔwï»Ë*<¼ЧB>µõ_Š4o x“JÑn5û7‹íÖÉt†¶H%~² ž¸5“aá_‡×çT½Ñd{ÀLoûbvõ1¸çüK¯jÓé°¿ú,¬Ÿ$y^àF:plŒ×bŒ©A¹êfç õ! *Ï¿È솘ÿ½Wðãðâ—þGÃ?ùûÕ¿$ÿ ùx[]€žP?ß?üU/Ù¯?ç¼ß÷Ùÿâª}¯÷¯«âçë?ÿÒþµwšk÷kϼä7Íßó®»Ešá<-=Ã.õ‚UX‹r0Àî_qüªö»©ÛÙë³ÚË ®v‰WvÜÄ`õ÷ªµÖ±©X˜Ö4Ke\Æ GŽý;ýk¡RöU§UJï]·'Zœ"â’ÑÜ“N½²¶&óGÓâ7QüÛ·Ø}U q^%7RËq-ñ&FFoÌ~¼Ó´´½:ºé™ûA‘|½¹Ï^œr?í|i¨Åo>£c$pË”û¯(Åz©ê0k4Ö&ƒ ™RýÍV¢¯túëøŸìÑÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¾ÿ‚RÊ.?fÏû%žÿÓ%¥}õYœAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEq&ø‹á®ï]­¸Æy¯Ô¿loÙçH—É¿ñ(Þ‡ÿ×[ÓÂâj«Ò¦ß¢0©‰ÃRv«Q/V§è¯“¿á·¿fŸú!ÿ?'ü6÷ìÑÿC$çñ­³ñßóæ_s3úþþGïGÖUøÿ=ý“~7~Ð Çá~—öü”îGLg 5ú ÿ Áû4ÐÉùühÿ†àýš?èd‡üþ5Ý—je˜¨âèPm®éœ9öfe…–½t“í$)§þ =ûmž¾ÿÇÛÿˆ¨[þ ;ûn1ÿ‘_ÿoþ"¿«ønÙŸþ†X?ÏãMÿ†âý™¿èeƒôÿúŸõ·‰?èà2>_ýSáÏú øOåÿÁ&ÿmÜqáü}¿øŠþ3ûnÿЭÿ·ÿ_Õçü7ìÍÿC,§øÑÿ Çû3ÐËéþ5?ëgÐ2ÿÀeþcÿTøsþ‚_þù>?ðIÛ|œŸ ÿãíÿÄTmÿ–ý¸ð‹ÿãíÿÄWõ‰ÿ Ëû2ÿÐËùüi?ṿf_ú`ý?Æ—ú×Ä_ô ¿ðþcÿU8wþ‚þò?“Ÿøt§í¿ÿB¿þ<ßüM'ü:Söàÿ¡[ÿoþ"¿¬oønÙ“þ†XÏãIÿ Ñû1޾%ƒüþ4Ÿqý/üEª¼=ÿAÿGñ÷ñ'þ µûZü)ð¤þ5ñ·‡¾Ë§Û`<›˜ã9?Ý•ð…äYÜ=¤ÃÃzþÊÿo?ÚïàŽ?fÍgþ×¢¹»˜®Ô^§ ÞõüpxŽâ)õ»©¡9V‘_SæXÜÆ„ªciò´û5ùŸ-žåØ,º¼iàgÌšîŸäc3m¨‰ÉÍäæšH&½¶ìx‰X dÔ$’h$“Q³cQ¹iwlp*qÉ œrjI4›( $ÔLÙàPÍžBÍŠÍ»¢¡ìÿ&‹àúðúWØñ÷ì ÿ&‰àû¯þ„kê+ïèºt¦ É‚0ê+ðlÛ…ÁâjÔÅTQ\ÏVÒëæ~ç—ÓL-(ÓW÷WäoÑ\—ü'ÿŸ•¦ÿÂwáùùZñÿ·²Oú ‡þ¿Ìîú¦+þ}¿¹}ÇŸx`ËÊÕ»ohŸê' W ë(«.Jx¨7å%þ`𸔮鿸éh¨ã•%PñœƒRW¤š’º9Ú¶Œ+ù5ÿ‚žhš?ì_ÿ"ðíµ¢Nc“Yñ/™¨[ÇU¶6Zdw'vï™æŽæpxG\þ²«ùÎÿƒˆþ ]뿳އñ®Â)n[DÖ--$H×ä··¹†ìO;?夋iO¢×ƒÄ´¥<ªU©¯z Iy4÷û®~ßôzÌhá¼KÃåXÙÚ†20Õ#Òq«”]ÿ½ÊþVëg…ÿhÿ Çìáψ߬¬„ž3ñ†w©ZÄ߬ZMê[<“ oU‰¾@Ý2HÆ[?ŸðM/Z·ìóûGi/@Ø;ÜË/ðYXO¥z$|óZZMÿ×B0zWê‹|?ãOŒ¿ðoŽ›®øÚtÔeð&³æ’öò1ÙEtÖ øc*ªßWÄâ0Ò“wRååä¾ú(¸+j•œmecýHtíFÇWÓàÕ´ÉV{k¨ÖX¤C•tpXàƒ‘O½½²Ó,åÔu’ÞÞÝIe‘‚""Œ³3ä“ÀüG]ÿÁvþ¡u'”ІêF cOæ*díÆM~müzý·¿kÚnI“ã_Žõ]bÊr´ÿ8Á§åNT‹(<»pAè|¼û×Ôâ8×/¥ÜAÎ_rûÞ¿üÛ‘ýxç0Æ7›â©á¨_wûÊ–ïÉá÷ÔOº]?¶?ŠßðX¿ø'·Â>ææoCâ «bê,ô8¤½–G@~Tu '€Í(_ö±Í~Rhðr~Ÿ'î£ñÃ'‹ÂÆF[g·¾~#…y£X·‚Q[ r7ZþS«é¯„±‡íañßN×Â?‡ºî¹`FVò 9«r8[‡ AÀbqÏJùÊœWžã*¥„I[¤c{úÞÿ…ßp?FOxS-«W‰ªJª–žÒ½eMGü<žÎ)¿ïs?Äýrý¯?à¾ÿ´Å?Y韲jKà-;m“µÄ6×z…Í˰%·ºÈ‘¢5A’K$Tø[Ãÿÿà üSqã›W:-ìÊ.dš÷Åöúb‘m ¶Âé9\ÿªH³·?.3ZÒÿÁ3¼Eð²ÆWöÆøƒá¯„Fa½4ÍBgÔu—þz-†ž²§±g^µÅøÄ_ðN¿‚wZ¤¾'мAñ¾ñg1Y%Ó7…´¿ yÅ­®n¯^Cœ…a\wÎG|Fm^¿´Ìë8ù9rÛþÜW’ùDú¼“$ðÏ&ÉÞܪ‡nhaÕoiw¯ûMWNŒõÕóWi%e²G!ûHxÓÅÞ,›O~2ÏñVîÖ6k{{«ëØ­ÎYãPŠã$÷·I‡àb¾]øwðûÅ?|gaðÿÁ1C>©©;%º\\Ai*Œçt÷2E ªywQÛ®+è?‰ÿ´÷„¼T×V >xKÁ6S€¨míæÔ.ÑW§úEü³(oVŽ$&¾\Óµ›ý/ZƒÄÅêÚe¸C4i2ƒñʬŽ29WR¤pAäbgNuùœ¹—V¯ùË_½|Ô2 .a…É^Bv|‘’§hÉݫ‡,Rz¨É¶¾Õõ>âðoü£ãçîml´9ô«Ù®¢#K¸“YŽ\ä\\i1^[À2-$ªs_føWþ ¡û$|¹µñOí}ûBøQm,ѤÔôN/µ"&æ¶V†Fu“øs䜞€×æ]µ÷íWûOKmáhn¼Eã(b—e½³Kqqk·;Q¼ˆ<´Õúwû?ÿÁ¿kŒ:e¯‰<‘øÓTK6Œeƒv¯Uð¯Ö5̱s©ó²ûÏÌ£ô––Dåø_OKòsÎÚo(û+üÓ?™ÿÙ“þ Ðñ<þ"›Tý¯üUzd_ꬼ33<Ó·÷¤¹¹€Ðw 3z¯Zýðüëþ Õàûk¡øoi¨I` oî.nZRØÉ™^_.CÇLpMcüGÿ‚­þÍ>y"ðö½mzéÛ=ÿ:øgÇð\ûMgO ivת3ƒ»¯ë^® Êppå§E?9.gøþ‡æÜO㇊ÓâÇýþû¯^1ŒŒU‘ùezõñ5e_7)=[m¶ßvÞ¬þÅrJ+ù(ð¿ü—âo‡ãhæðÌ;‡W~Ÿ­}àø.õÖ½q~)Ñ-l¾ñÝÓõ¦dJWçÁ¯ø)‡ìåñ68­.µÛx/¤ÇîäÓ½~è:þ•â]95]Q4÷Xw  š(¢€ (¢€ (¢€ (ª÷WPYÂ× µdŸa@(¯”>&~Ú³ç¨d>,×áµ’<ðÞ£ñ¯É_¿ð[-ÃK†vÖú²žÃcúÐô3EywÁOÜ|FøQ øæî1š¥¢NÈ:Ùâ½F€ (¢€ (¢€ (¢€ (¯2ø—ñƒá÷Â/ûgâúX[à¶÷é@›E|ÿ<ýŠ¿ès¶ý?ÆøyçìUÿC·éþ4÷íñ—‚à ²ŸÄMet x¦ »·Æzóø×ÙóÅs\Âr’(e> ŒŠ–Š( Šø÷Çÿ·—ì¹ðÃ\›Ãž5ñ<W9Gº†º× ÿ<ýŠ¿ès¶ý?Æ€? ÿà¶ÿò;Iÿ_?Ö¿ŸŠýÿ‚¯~П ¾8x­ï¾jÑêQ÷ž™¯Æ*+ú)ÿ‚ ÈÁýwoækùÖ¯Ûø$ßíðƒàn²—uxôÔ3þ„šþÈ(¯€¿á矱Wývß§øÑÿ<ýŠ¿ès¶ý?Æ€>ý¢¾ ´ÿ‚˜þÆ7×)imãf’C…r:û/Áž4ðçÄA⯠\ «‘˜ä^„PSEPçGüþMWSÿ®‹ü Þ ÿå×ýuoç_ÝOüþMWSÿ®‹ü Þ ÿå×ýuoç@õô‡ì‹ÿ'á_úüÈ×Íõô‡ì‹ÿ'á_úüÈÐúü5ÿ‘2ÏýÚîë„økÿ"eŸûµÝÐEÏxƒÅ:†-Mîµ0†5êMt4WȾ,ýºf/>%ñ,Ûì|ýâÏø*×ì§¥\¤z‰-®‘‡Ìr8?~Ñ_’ÿð÷ÙÃþƒVߟÿ^½ÁßðT¯Ù;]ÁªxžÚÞCÂŒŽOç@¤´WˆøöŠøEñ<à­Z;ÜŒü¾õíÀçš(¢Š(¢Š(¢Š(¢Š(¢‘˜*–nƒšZ+åÏŠ_¶À„¶ó?‹µ¸­d‡ª··ã_™_¿à´¿¼/$‹àŸ³jj¹Úwc?­~ìd´™ZþN¿|ñþ QðÿÃðÈþ·ì¤íê?:ýߤÊ×òÁâ¿ø/ŸŽë/Ã̧øÃõëÃçÿ‚Ü|W–f‘ttPÇ8Ò€?°ü­-ÑÁmþ+Ç s£¡Çmõï> ÿ‚öxȈ´ýkÃVÑ¢à sõë@ÔÅøÝðkþ ýðSÆÏ>7¿¶ÒÞL g¹íÖ¿N¾|løoñbŸÀºŠ_)²ž”êôQEQEQEQEQEQEQEQEQEQEQEQEQEQEüÁã²_GûAþÍŸÙßë›Fñx_s;ñ8/‰o§Óï5Á'’Í"Éž””qÈéœ ìQö0”–¤Î§ÖjBåóùt;•Ò¾lmÈìMë/öOÂOùñ·ÿÀÖÿù[ìúpàˆ²?Ú£ÈÓ}"ÿ¾ª=¼¿èú¤¿çã?ÿÓþu‹k‹kƒ-Ø*‚¬z¨÷®·E†úÇÂ77̭ó{véK­ø†[Ý}ŽSå3“´(eϨ"¡ÔbÕµûC|.~ÕùSG%6tù×DiÓ§Zu!+½t:å9ΜD’Ó_é[ñ.iþ!»¹gÒüˆn¤à:DßÔõ® Äö·°yÒ\‚C£Ç¿ýjê÷×ñÛZÁ$o¸d•*÷~uÐøÓ\{[ÍJ y‰Šdu(0ÊNÂ3Ïžâ¢þÞƒuô³J•G 6wGû7ÿÁ)?å³gý’Ïé’Ò¾ú¯à”Ÿò‹Ù³þÉgƒ¿ôÉi_}VGQEQEQEQEQEQEQEQEQEQEQEQEQEPN9¢¾ý²?lþ; ¸¸–EŸQpѬ Øu,0ð&º0¸ZØÊñÃáãy3 N&Ž„±‰Z(õÿ´—ÃO‚š\·~(Ô †â5$E! ž2+ùêý¤à¯~(ñ^¥>•àKGÓ⌲,пހܱë_–iˆüGs¨øžúIágmˆç¢çø ùµ›u~·“pn W¹çø#òlçŒq¸ÙºX'ÉÅŸDx¯ö¬øóâëÉgÕ*?òû&>µÊI¤¨å‡cE)õgUÿ ÇŠ¿çöOÏÿ­Moø¨øý“ó®U› 8äÔ8â4RŸsª>8ñW{Ù?:„øçÅdÿÇìŸr¥‰¨Y» ‡v-Jo©ÑÞxÃÄw°›{›·t=Añè|aªÁ8?k¯Ž?®ô8uëmaÊÚÚIü»h–[«m_M¸š/.E¸DŒF²[¶Ðê쥀$Fø1ûNÁ`~5ǧÅð~Ï_×-tß&8Ń[ibÚ!ÇlÖЬjÄ<±†X–Q“‰Æ?/PÁU„0XÕ7Rº®Õ¤ô×Ëku¹þ£OÅÙ~'ÅÜ%S K‹ä¬¥‰“ŒeÏF M8ÉZ\×çsµãÈ£{]{×ìÓÿõþÐ^6ñ ?i­Vih¢`ñjr7'f×ƈ>ó1$’SÉw²ŸüŸö2ø›wñÛâ”ÿÒÑ£‡Ãv–òÏ‹¬¨/-ÆœËåù¶Å$ÑŽyÉQ^…?üŸþ QûV¥ò~Ñ_AÒõ… ucy«;@èpÞP±Óƒ[ªd)1üªYA# ï ¿àÛŸ„YŠëãOÄ=WY;?yo¤[Ã`¡ý¥˜Ü³/üM{4²¹Ú+.ËvWÿ¶Ý~OÑŸ’f~$à£ZµN>ñrÊ*?WË)é²½±’»½ß4_iFö_Ÿÿj_ø&$·PŸýŸîõ%·R#}kU—NEÏ@ðiÎï8ÿj[‚þŒ+å‡ÿ´÷í•q1ø_û?x§ÅºvŸs,†ÃÃÚ¡¨Ë´o!CkË$¡P¶±êÄ’IþÕþÿÁ?àž? ^ÚîÃá容yn»MÆ»,ºˆ“ÝíçsjOÒ_ ¾ ð>èPø_áæ‰a é–ÿê­4ëh­`Nß,pª éØWT8[2¯?i‰¯õî6ù](þ7>kô•ð÷&Â<äØŒj殯i(ÎUÒzý•îïcø(ðü£þ UûIë-ã WÁZ¤js–»ÕÿÁ¶~$¸°žoŽß-¬îŠ‘ : ³ÜÆ+<×^A eDC?ÞkúÀ¢½<7å4_5{Íù¿ò·âÙùæô¬ñC5‡ÕòwKMh•*iÊÝu×—»éÐþqü+ÿÝ~Ζ&&ñ§ÄjEdË‹H­m“û :\ÚÉúWéoÀ?ø%‡ì/ûI”á%ÏB„Sï¿çsóûƸ–ƒÂç9ÕiAïËÙÅúªj)¯&¬W¶´´³ŒEgD€(ÀÐt«Wãoøgáþ‹.½â{¸í-ágà^¡ù»m»³«¸¸†ÖžvÚ‹É&¾#øýûy|øa?Ÿ«ZÜßÂú1b°íÚ¿¿n¿ø+½íü÷~øBd´hwCö¨›*ç¨aÍ<Þ8øãˆú£ë>0¼kË™s;u&´´—üKǾ<½¸Ó| o.™;e…Ç«üñ¿í)ñ¯â Ô—(ñÕß›ÔHAãðá5£¦é:–±p-4¸ZyOEQ“@æž[‰ ³6æ<’j*ú£áŸìwñ×âF¤–¶¾½†é1O–¿I>ÿÁ¾(x飆°4íã'ÍNŸ¥~Ñ_Ô†ÿàƒ7še¡‡Vñ µË“Ãm?üMiêŸðB3wbðYë–ÑHÆÚxý(ùj¢¿rþ1Áþ'ü8°}KHÕ†ª@,#…9útù!ñ/àÄ…Z“Øø»J¸´Ul+Ê»C}(Îô]XðíØ¿ÑnÞe †N¼WéÿìŸÿ?ø³ð?Xµ´ñUÍÆµbYc)#€ªà·t¿*( ô+ý›?k/†ß´?‡íîü=^ºmÐ’ÀãŸÊ¾­¯óÒý—jþξ6µÖ¼?u$P Èž„ó_Ûïì™ûLø_öŒøumâ *d3Æ‘Ç*îÉ/ŽOæ(ë (¢€ (¢€8ÿˆ:Ô¾ð6¯¯Â2övsLº!?Ò¿‰ïÚ'þ cñßÇÚÕþ™á½RïGŽ)䏯ˆïž¸¯íã7ü’_ÿØ6çÿEµœ§‹ÿälÕ?ëîýÔ¹âÏŠ>?ñÉfñn©5ñn¾a¸XÖ¯ÔTu$?ëWê(ýÿd¯ù6¿Ø6/ë_D×Îß²Wü›_ƒ?ìõ¯¢h¢Š(¢Š(¢Š(¯Èoø+—ü‘ïû`ÿÌ×ëÍ~CÁ\¿äÛþf€?Š (¢€>ìÿ‚zÿÉ}´ÿ€èUýèøkþEÍ?þ½¢ÿÐßðO_ù/¶Ÿðý ¿½ ȹ§ÿ×´_ú  º(¢€?„ø)¯üœF·ÿ_ÿ ×æõ~ð~Þÿ±ÆˆŸµm{Ãú]ÌÐMtά‰F+áøw‡ÇïúÞߺøŠö‹¼kð~ìÙø¶Ò[g ·.9¯ Š+Û¾üñÇÆ)Å¿„¬å¹bqûµÍx÷Ïü;Ãã÷ýo?ïÝðïßô¼ÿ¿tñw‚¿äj±ÿ®¢¿¾_ØþMkÃ_õËú þBü+ÿùøõgâ+K©tk°© $ùuýŽ~ƾÕ|û=è^Ö£h®mãë Àí@QÑEùÑÿEÿ“UÔÿë¢ÿ#_·ˆ?ä9uÿ][ù×÷SÿEÿ“UÔÿë¢ÿ#_·ˆ?ä9uÿ][ùÐ=}!û"ÿÉÆxWþ¿ò5ó}{¿ìË®Xxo㧇5½REŠ { ÎíÀ­¡/Ãv à»6nJñŸ_µÇÁŸ‚Vwð“ë6ÐÞBî$$1aÐWáí?ÿqƒÃ>O|-—1íP¶A=Zþ}>*üoøñ—V“Xñî£%ô²6âÏ×4ûõûBÿÁn®nZø#GØ!n"~½¿½_ŽŸÿnÏÚ'â&©%Ïü$—¶öÏŸÜîR?•|g[W‡õ­rQ‘l÷z  }Ǿ/ñFïíûù.·uÞGøW!^ç¦~Ìßõ¤i^¿[¡Xó×ñ®†ãö?ý¥! Gƒµ&Èíÿ^€>k©!šH$Bv²ò¯Lñ7Áoо C/Št+«“*â¼Á•”ía‚(Û¼ ûE|aøwyφ5Û›EŒ‚V2@íÒ¿uÿbø,¥km࿊¨e_•MåÃõÝÇcÛé_ÍÍ>9'!ÁS‘@é7ðÿâGƒþ&èøÁ·Ñß[JÏÈÎ2Gá]Õ_ðN?ø(7‰þx®ÓÁþ(¸’ãF‘„k 8Ug;wuíšþɼâ½#Æ~µ×´i–h®"I2§8. ã𠞊( Š( Š+æŸÚCö’ðOìÿàËwÄQ,Á$lØmØãõ ëâ¿ÆÏ‡ÿ4µÏê0Ù$JHóI8È0?¶wüûž4¿ºðÇÂÕ“LKF·6ï×oå^½+óóöÉý¸¾!~Òž+º…îåG UmØä§þ•ð)$œžôéž5øÃñâ òËâÝV{ß4’D„¿…y•ëžøñ?â-Üpx_F¹»I7ƹätWìgÂoø#çÅÿˆÖÑϩܶ”d‘2tÏàkê{ø7ãÇSD$oÛ©=Šþ&€?œÊ+÷ƒâ7üçâg‚-æÃ]MD®~XÓ“ÀWæWůØ÷ãW‹¹RÑnä·þ[lÂÐÍ:6·ªø~õuv·z:õúû:ÿÁG¾6|Õ!›TÔ®µk8Ï0;€¤g§jüîžÞki 3©VS‚b*þêÿdø(¿ÂÿÚK¶Óµ+¨4ýM¨€±,Ì:ý(†h®"Yá;•†Aþlžø‡â†Þ ƒÄžºk[«vÜŽ½A¯êçþ Ëÿ9Óþ,YÛ|;ñá1ê…e™¿Ö±ÁÈ÷ Þz*(gŠâ14 OB*Z(¢Š(¢°|AâxRÁõ?ÝÇgoËI!À½^)ñ?öøWð›O–ïÆ:¼n€•I #·Jü~ý´ÿà­Þøyׄ~ÿ¥]°d[˜!HïÔWóKñŸö§ø»ñ³T–ëÅú¬·0;ˆÿÂjþ€?j¿ø-Ÿ¥K?†~Ø­Ê‚Qn¡~¾ü·ô¯ÃoŠ_·7íñ'P–y|Cy ¼!Ü¡¯«£ð÷„|KâË¡cá»)o&?ÁÉæ€!Ö¼M®ø†cq­\½Ã·RÕ…_£?¿à›?¾,ˆÛRÓît…“¼Ñöýkô§áÿü[ÅfXõMsİP1ôÅAôTqKñ¬ÑÊà Žâ¤ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿‚Ïø/ü:‹OQŽŸbéúS¿áoü;þæŸÿ€_ýjùÉtMchÛgsŽØ†_ð¥þÄÖçÎçþüËþ½¥Nß·Ôé3ûÏÿÔþµ/ ë tímΤ€Â>J“ÆíÍt §Üøw—꿹–æDxãþ5Uãq‰¬Ý^UñÍæž\nŠñõ4zRkú|šœKq1åd<€O£v5ÑQiÊ‹¼µÐër¨éÃÛ;-:j6Óĺ´k£Ïw,!ÈUf?)' nãëXþ)ðΫl—w š4Fó6òP…çpôïšÔÓü â‹´7Ñ}–ÝHgöìU“œòqÓj¿µÈPÔ%³ÞDÈËÁ#‚¸ÉõÏzOš¥ñzY« òªœ¸fžŽÿÒ?Ù÷þ Iÿ(¸ý›?ì–x;ÿL–•÷Õ| ÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê°9BŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( 2ø·ñLøià›ïjR¬^L2:n8Ë(ÏõüL~Øÿ´vµû@|R½ñÔ¬Ðgb«²Æ¿p¿à±ßîô?Áà?\l¹Žà‰Tálƒé_Ëä²4²4¯Õ‰'ñ¯Ö¸#(… +̪¯z[y/ø'åm›J¶+û6“÷c¿›OsQ³vŒÝ…2¾õ»6x3gPª¹I[qY°*{š îjmÕ-ôE6ꉛ ±À¨IT7m K«@ $œš $äÒT%Ü)¬Ø¤.;T ØúÔ7sD»ŠXMDÍši=ÍFÏ‘PÙi\û ŽŠc68 –—D ØàTTTLÙàT•›< ‰›3b¡'¹©l{8äÔ%É¡›&¡vì+6û(ƒ?aQÑMfÛRik6Ú¬ïÚ‡|ñLTgm¨ '°æ¥±¥sý ÿ`?ù4Ø=ô#Y?[#ŸýêØýU“öBð2¸ =x?ïÁø¶Gü$“öëø»ÇŸù¿úúÿSúG‚—ï!þù#ÊY·T ý… ÙàT,Ûkùý=DFlUf|ô¡Øž*`*nkŽ$µ]ä¤gã®j{š“UܾxÆ}Wß,ä.+îÕea•9ùU¦j §êPÞ¡Á³_¤?õ“¯x^ÛQs–s_Ó¾ñ±8JÙ"Wp÷£þ¿‹??ã §RÚkG£õ<Hý‡¿e 3âV±ñŽïÀºN«â­rùµSS¶ŽöágcÁ…§ 0”ÎO5õZª¢„@€ uûÝ:4¨ÝRŠWì¬|¾?5ÌóIBYž"u\RŒyäåˬ’»vI$’Z$‚Š(­¢Š(¢Š(¢Š(9ŸË…äþè'òüŠÁV¿nø³Å ü7töúbï‚æ#œ9^+úå¾ÿ)¿Üoå_ÀíðOü/cþ¾åþtñ»HåÜäšePß²ì!ñö¤Öé8µ²k´’¯Èê{‘_ÓÇìóÿ›ýŸ¾i–÷ž.Ò"»Õ£Ái® ;õÎÿÁí­‡ìç£L#]æ[=zýŠ CÂ^ðׂ4õÒü9n …:òuø¥PEP€zׯŸµ7ìqðËöŽðÕ¦¿`’êÛÈØÂÈ{ô¯²è óìý®¿d¿~Ìž;»ðþ³{XŸjLŠDmÉ•ñÕwÿðQÙOGý ¾]L Cs¦¤—9À•ýOJþüYáÛï ë×:5úÞpÀƒ€Hï@å~¨ÿÁ2¿kí_àÅ+/êWE49ܼÑg±aƒžÍ~WU‹[‰-nRâ6*QÈàðhý*üâ[xjÏÄZ{Šî%•psÃWK_ÿðI?Ú˜|gøRþÕçÌúW—m±Á p&¿d(¢Š(Í>3É%ñ/ýƒnô[WùÊx¿þFÍSþ¾çÿÑ_è×ñ›þI/‰ìsÿ¢Ú¿ÎSÅÿò6jŸõ÷?þŒjçjHÖ¯ÔTu$?ëWê(ýÿd¯ù6¿Ø6/ë_D×Îß²Wü›_ƒ?ìõ¯¢h¢Š(¢Š(¢Š(¯Èoø+—ü‘ïû`ÿÌ×ëÍ~CÁ\¿äÛþf€?Š (¢€>ìÿ‚zÿÉ}´ÿ€èUýèøkþEÍ?þ½¢ÿÐßðO_ù/¶Ÿðý ¿½ ȹ§ÿ×´_ú  º(¢€Œ--ü—ÁmÀ6“óóýkùø¯èþ oÿ#´Ÿõóýkùø ¿¢Ÿø"ðGÿ]Ûùšþu«ú)ÿ‚ ÈÁýwoæhú®ÂÑ…¥¢€ KEQEùÑÿEÿ“UÔÿë¢ÿ#_·ˆ?ä9uÿ][ù×÷SÿEÿ“UÔÿë¢ÿ#_·ˆ?ä9uÿ][ùÐ=T°Á5Ì¢ti¸  ’~€PUÚøCáï‹üo¨C§ørÂ{¦•‚æ4,{ñ_ ?±÷üwâ·í!ªC©¶›W”\)Œ²˸Zþ¨¿fø'×Á€M¼¶6ê(0ìÛXqéÅ?¿³ü³âOÄ ñGŒ§†+)0M¼©µøäõ5û«ðgþ yû4|6Ób’÷CŽKøðLŠWðý'‚ÚÞÚ1º*(à*š€8 ü;𧃠KoÛQqÛð®Ûbú uóÇÅŸÙwà÷Æ{GµñÖ˜.Âp:ýA¯æþ ÿ½Ô>\IãO†vÃû)Ù¤ò¡]Åg‚F+û®[Æ~Ñüsỿ k‘,¶÷‘˜Ü Á9ã4þj÷ד.ÆëÕX`Š‚¿Q¿à¦²U×À‹7Úæ“•¢ÞÎRØcž î+òæ€'¶¸–Òæ;¨&§Ð©È¯êûþÛû__xÏÃQü%ñ•ѸÔLŒc$ã© sÛüWÛ?°/ÅÙþ ~ÐZwŠâ”Æ1åõãæa@ßø ŒŠ+—ðN®uÿiºÙ97VñËŸ÷†k¨ Š)®é™$!Tu'@oñ_âNƒð·Á·¾)×gHRÞ‘C0RÅFp3Þ¿ˆÛÿöÇñ'í/ñ.ñ-nhhÃ˲pÊÇœçØv¯ÓÏø,¯í”nµ‰~øVá„úlçÎe?)V8àŽ;z×óm$+™ä±É T‘DóH"Œe˜àQ×éwü›ö<½ý£¾)XÝkP4X܉xÇ̬1Éã± rýÿà˜~%øéªÛxÃÇÑ#aæA2í2)èTžß…T_e?„´È-|¦-¬‘¨ A$~½ƒáÿ‚4xRËÃ:DKV¬C{Wm@ €:RÑE­yßÄ/…ÞøŸ£I¡øºÔ\Û¸9SŽã•è”PóûÁ%l4}>ëâÁ‹Xíí×–ç,y'Œ{×óuâ?jÞÕ¦Ñõˆ^ar„8ÇCŠÿK Û;{ûg´º@é"• €zŒw¯å—þ ëû AáY'øÃà‹]¶‘!iÕFX»óÀCÚ€?œºì¼ã¯|:ñ5¯Šü31‚îÑüÈÜv5ǺüTÓ5­.àÅh÷nG< ¯ï+ö~ø¿£|oøe§ü@Ñä ê <Æ€=¶Š(  ÷r˜md˜3~B¿Ïø)'íññk\ñ}ÿÃ=Px4µy!–#Ÿ›iǨ¯ëûRÿuÇýsäkøý»?äºjÿõ÷7þ…@ÞÞ\jOytÛ¤å½U¢Šý*ýŒ?àžþ:ý§oâÔàdƒO]²1•xuîÍQ³‡üOà/Á++}FM&7ÕÓæB0qÓ·­yü"ösÑd¡¿'=~»P[K;{(ÚÝv¢öjŠ(¢Š(9"IP¤ƒ ×çíÿûø[ûCørîýljᢙ±Ä‡¡é_¤tÁ ó´ý¤?g/~Ξ;»ð‰¢f[fÚ& B1Éèkç*þ×?੟±þñ§átÞ)Ñ Ay§ .¥c€HQž:Wñ]k%•ì¶’©VÙpxèq@+Õ> üI×~øþËÅþ˜Áqª†…†kÊêH_Ë™$þéò ôLý˜>(YüQøE£ë0¿™2ÚEçç.G5ôE~.Á|{'þêk#–ûÉÏlf¿h袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯àÇþ±“Qý¡¿fËT$nѼ_’; éÀŸÃ©¯ï:¿„?ø<ú ;öý›.îÐüb¾ÙoìåçéœÕÓþ"¹PmÃÔ¾"¥êèöºd“ùŒBL£0²Ÿâ/Ð/s^õãßÙü:²Ðôæ»’K>Ñ-K@y‘Ó–ç¸^‚¼ÓOøÍaottƆé´òÅZhåÃýåŒõÕÐüCøaªkQi÷¾a},1T ͧrIx$wZì,a/`îÉ©*•'âãeùè=?h[£-œz¯øÓ¿á¡n?½úy˜øAñA€oì+ŽÜÖ—þ÷Åú\ãŸãS͈ìoõ|ôÏÿÕþ"uݶ£$V/Ê„ #g ÊGg‚=ëRk[/ x^çOº™%º¸uwHÛ*z úšççp9Ú«€A=Oãmqoïï§¶ˆ(t`wvp÷¦ÒTÚ×§psR«þÏ.šöüOö…ÿ‚RÊ.?fÏû%žÿÓ%¥}õ_ÿÁ)?å³gý’Ïé’Ò¾ú¬`¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª¥üzfŸ6¡7 –?…_¯)øå¬ü"ñ´N>Íf]({J‘‡v‘gìéʧdÙü|ÿÁO~#Oã/Ú‹]†ÞBÖjT ÏÜÕù¼ÏØW¬|nñÏü,?ˆ—Þ'Ý¿Ï=~„ב’&¿¢2ú+ ¥‡·Â’üç¬Â»Åcjâ/ñ6ŨٳÀ¤gÏ fϺ[9RêÁ›< …›h¡› =ÍEʰâźÔLØàSKž‚¡fÇ¡²”{Š\*"I94”Tš%Õ…DÍž ÙàTLÛj4K«mµ =Í÷5 6ê†ËJàͺ›EDÍžfßbíÐRþ•! š›< ’Ò°3gQ3cŠc6xÂqÍCcÜ Ç&¡fɤfÏ&¡.O š(ŠÍØTtTnþ•&›|t¨óÀ¤fì*:–ì4®è? t§Öüsa¦Æ»ÌŒc5çÕ÷Wü×áN­ñ+ö“ðô0ÁæY¥ÀY¦k“UR¡:d™Ó…¤ê×…(õhþßÿd}9´ŸÙϺ{®Ã˜éŽMxÿÅ‹µ—Å—P©û¯_ZhÚ\ð$Zd_*YE´}¯†ü]©.¥¯Ü^!ÎöÎkø‡Ç¬ÎšË¨`býéMËå¯êKpfQ©*e¾zÛ6Þ•YŸ=(wÏ¡fÛ_Ê÷?FH¶Õg|ô¡ßEiðˆêŸ<÷‘Å»·/øÐò©EPê?ü·ãçÃ_Ú3EÐ.f1é·sî˜gäW÷¤êvºÖ›«dsë¹Oµ›ÃŸ\øÅÖ¾%´m²[œ‚+ýÿdÿCâÿÙÿÂÚ¨}òËbŒýùÉ £(¢ŠóOŒßòI|Kÿ`ÛŸýÕþrž/ÿ‘³Tÿ¯¹ÿôcWú5üfÿ’Kâ_ûÜÿ趯ó”ñüš§ý}Ïÿ£€9Ú’õ«õIúÕúŠÿD¿Ù+þM¯ÁŸö ‹ú×Ñ5ó·ì•ÿ&×àÏûÅýkèš(¢Š(¢Š(¢Š+òþ åÿ${þØ?ó5úó_ßðW/ù#ßöÁÿ™ ₊( »?àž¿ò_m?àúz>ÿ‘sOÿ¯h¿ô_Áwü×þKí§üÿB¯ïGÃ_ò.iÿõíþ€(nŠ( Š( ä»þ oÿ#´Ÿõóýkùø¯èþ oÿ#´Ÿõóýkùø ¿¢Ÿø"üŒÿ×vþf¿jþŠàˆò0Gÿ]Ûùšþ«è¢Š(¢Š(¢Šüèÿ‚¢ÿɪêõÑ‘¯á[Äòºÿ®­üëû©ÿ‚¢ÿɪêõÑ‘¯á[Äòºÿ®­üè¾€ý–´Ë]cãÛÕ×aXFjùþ¾ý‘äã<+ÿ_ƒùþû¾ øcCð߀¬-4›h¡ ˜Ê"©?\^µ\'Ã_ù,ÿÝ®î€ (¢€ (¢€ (¢€? ÿிm>)üƒQòrúW™9eð;‘_Å<ÉåÊÑÿt‘ùWú0~ÒÚU¾¯ð+œƮ[O”.FpHí_ç‘ã ¼;âk­-ú£“ù“@•t>¾›Oñ%Ì 'ÿBÏV¦‡ÿ!«?úïþ„(ýeÏŸüÐfc“Œï_C×È_±?üý'þ½`ÿÐ+ëÚ+çÚ§â…—Âß‚úî¹$¢;…´v‡'0Å}_Ï·üÿãsx_Á:7†4)Žû§x§\ãŽhù‚øÇñ7Yø¹ãËÏk¾âìåŽ}Ïø×–ÑEiè¶/©êöº|`“<©í0ýÊÁ2g>|Š+¸n/ÌwJÄÀ8-ׯñWò'û|0›â·ÆûC˜Q’\ºÀÿJþü¼ ¦&àÝ/LU äZCý”€:º(¢€ (¢€ (¢€ ò?¿ 4?‹ÿï|®D$†äsÀ'€ƽrŒ‚=hüíj?…ZŸŒÖ‰s—Úäº:WÎUý Áp~ZxwƺGŠt¿w,/$ä |Ç>•üòЫ2ÊpGq_Ô'ü+ö˜¹Õã“àþ³p<2Ø÷rF;ý+ùz¯³¿aŸŠ·? >8iRA)‰o®a…°qZ€?Ð$@#¡¥¬_êVú®‹m{lÛ•ãCŸø­ª¥©È:ãþ¹¿ò5ü~ÝŸò]5úû›ÿB¯ïßRÿuÇýsäkøý»?äºjÿõ÷7þ…@ÑEý³ÿÁ"äÛô_ú÷þ‚¿\kò;þ ÿ&ߢÿ׿ôúã@Q@Q@Q@7ÄÍ?øWÑd]ÂæÖHñõü~Ù¿"øYñÛSð¤+µcùñþó5¡%ݺ]Û=´ŸuÁñ¯á¿þ õ¢Ûh¶†·§ÚPCçܵ~_ÑEýiÁI?¼O“ÿ/Ëÿ³Wô _ÏÇüþH—‰ÿëùöjþ袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯à×þÓ—Tý¢f»GS£x¼°vƒ§Ǹ5ýåWðwÿ‡jqhÿ´OìÛ}7A¡øÅzg¿³ý «§oh®EKò;Å¿ÀÏËsök ìÚı"å¥jÕ“®Gq^ƒñKÆ?„­4]BìÙ[-¼ ’7øw'з¼–ÇâÆ¢—†hôø%Ó÷amÂB ó‡ìÕë~6øy¤ø¦ÓH»Ñ¯’Ù¦ƒí¯sÂɼ˜Ý—£+Wdlá/a¹59ÕH}oá×ï·SÍ—ã.»›(óï+ÿ/ü.msþ|cÿ¿Ïþ5ª>ø¤Œÿié#ØÎÙþT‡ñOý4ûþßáKý§¹¯.²?ÿÖþ&u 鯬Mcö±i4Gæ)*Øèr:/®4} Ói:[ýªIZiˆÂ’>èQéú×;¯ëw·šä÷1Ÿ)‹H<×O¦=޳áË«ÍV-ÏnË®ƒ•úÛp?tÆt%^p¦­-uètJ5#JªÛZi¦ç#¤ë^]ÔPêQ¤¶îBº‚=TúŠÝñ‡‡4Ô{èÒãÉžÞ'%\dHIБëW,4_ iÒ¦­{y-ÔQˈ©b9Îp®+•ñ–»y¨_^Éþ¨:1`½9^@öþ•6•:_íZë§qßž§5­5þ™þÑßðJOùEÇìÙÿd³Áßúd´¯¾«à_ø%'ü¢ãölÿ²Yàïý2ZWßUÌQEQEQEQEQEQEQEQEQEQEQEQEðÿíëã¤ðÀÍ^Õ›oÛmdŒ{æ¾à¯Çø,ˆäоØD‡h.µêd´U|Ò'ÜòóªÎ†WZªì!s°ó]rj¡$šY,XÔɯèð$…fÏ¡fÅ Áj{š†î0'¹¨Y‰¡›568 –3cQQHH&¤Ñ!j&lð(.O6x Ü´»Š\•=Í5˜-FÌZ³nå¥pfÝM¢¢fÏ¡¾Å¥Ñ6x PH 9äÔ–•€’NMBÍž ÙàTLبl¤® بIîh'¹¨Y·T7ØÑD‹Sh¨ÝñÒ¤°wÇJªÍº†mÔچƕŠ+ªð‚¼Kã­^=ïws)ÀDëYJI+½#ß,Q…§é÷ZÒÙY.ù ¯ìþ û…~?üS7û. 2 àqÐþóGüOþ ]wk©ZüQøÉjÈ-Ü2Ù\'Ë"·9à{z×ôƒ{wáï‡^KKxmÓlQ/°¯Ï8·‰°˜\%H{D¡e.št>û†2 άq5£ï?…~§ñƒÆéKiˆÃu•5ñ»9$žµ×øÓÄÓø“U’w9@ÙQØW\ ÿ<|Aâ™ñN}Á?äÛô_úáý~ÁÐEPEPEP_—ŸðV/EãÙÇìrÆ$ÌdÁû»Oô¯Ô:ø÷öÜðÜ^%ø'm+mÅ3þIŸé@çñªD Ôî`l•×òb*…nø¢1‰µ‡ðÝL?'5…@nŸðIωqxßà¼ZÿÈ™gþíwtQEQEQEäŸäøþ¼dþUþ{ä¢ß½ýM¡'ÇŸù#~#ÿ¯?•žßÆßù(·ßïS@MZšü†¬ÿë¼ú¬ºÔÐÿä5gÿ]ãÿÐ… ?ìOÿ$?Iÿ¯X?ô úö¾Bý‰ÿä‡é?õëþ_^Ð_Å?üã⌾*øí¨ø9äÜ4Ë£ž™ÍhzÞ¤4.mDŒùKœWð'ÿ Ö›^ý­¼[¨ôY.r¥|QEPìÿüGÁªþÔPê×1î€[8É鑚þÍ£EŽ5x 0+ùdÿ‚xb#â¸üI»çÛ"íüëúž Š( Š( Š( Š( Çßø+ïÃ&ñìÿªøÌC¸iÖÇçÇNµüT×÷ïÿшdOi,þX– nôà×ð=®é£GÕî4ÀÛÄ-·>´“]§Ã­@é>;Òu0vù1¾~†¸ºš žÞež3†C‘@è7ûøÑ¼{ðK×ÝüÂß.zôQ_[×åOüçıë_±ÆÄ»î¯zã _ªÔKRÿuÇýsäkøý»?äºjÿõ÷7þ…_ß¾¥ÿ ëúæÿÈ×ðûvÉtÕÿëîoý €>+¢Š(ûgÿ‚DÿÉ·è¿õïý~¸×äwü'þM¿Eÿ¯è+õÆ€ (¢€ (¢€ (¢€ þÿà²ßò|çýpùµpü?ÿÁe¿äø5Ïúáójü§¢Š(úÑÿ‚Éñ?ý/þÍ_Ð=?ð@ù"^'ÿ¯åÿÙ«ú Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿ƒïø<'OMOöýš­d‡ö/Œ©èBg3Ä_Þ ¿ðx®¨ú?í û6Þ¢îÆ‰ã#ž„éÀôõtííÈ©wM¤öß„GP˜m̃;bŒàz±=kÈí>%xÒ;ÿíKk¥HƒöfPѲgî¿ǽ}âï øCÅzFype°¶ÂêÞD_0Åæ}øÝ%3ȮȸÎTtdÍT§8KîµùiÔùçþ' uGý2ÂÅñ—üýEÿ~…zÀø+ –ñ4 ûY¾?š—þ§‡ÿèf›ÿßÿЍö8æy^Ûäÿ×þ)õ}Ãí­Ïc|³Dñ0A,X9ÈJ§ªê¶:N‡.‰¢BñÆ|(ýã1ã'ÐzW!âKëëÝbinäq’3‘œñ]džîe¼ð¥ÍÆ¡m%X×xÉdqÊêqŽ uF¥9Õ:q³×SyBp¥ Ͷ´Òú\â4­oPÓ®RGc,lÀ4Oʲ“ÓØ×iã'AY5 i–T–\£Ç‚­„ʆòÍ^ÓÓÂzbÿméÚt×7Q|Ê’È4aÈ81Çlæ¼ßÆw÷·×—r^’„íÎ#¯¥O+ÃÐj·½v7ûÚ·¦šÓúî´·ü“þQqû6Ù,ðwþ™-+ïªøþ Iÿ(¸ý›?ì–x;ÿL–•÷ÕsœáEPEPEPEPEPEPEPEPEPEPEPEP_€¿ð]ÝFîÇáÇ…–ÙÊ .6;Žk÷꿟oø/Wü“¿ ÿ×ËÿZú·ööýßäÏŸâŸùb-Ù~hþ^Y‹šŒ¸ŠF~¢,¿qlü7Ñ;JŸ/ø‰øoú ‡Þ†¸ Ò2?ŒFÿ‚F|e?óÛþøÿëTðèÏŒŸôÛþøÿëWö{ÿ ƈ?åªßTÂs¡ÿÏdÿ¾¿úÔ¿â'aè&z)p>¤$'þ ñ”÷›þøáQ7ü#ã)ï7ýñÿÖ¯íøïCòÙ?:oü'ºüöOûëÿ­Iø…ÿ ˜}èê5ä‘ü^áþ2úÍÿ|õ«ªð—üŸâψ¯ÚÒöòKEUÎæN·Ý¯ìgþÝþ{'ýõÿÖ¦·Ä FLÉùÔKÄÜ#_ï0ûÑQàz)ë Ì—Ãø ž½su§âÇå«s¡çýÊý˜ýŸàœ¿~ [Eu6“mw¨ÃŒ\Aã¯a_Xêô-= æ} x÷‰¾:Ý^£&ŒÙ¯‰â/2<),N7™ÿ,w’üO Êø!ÆiÑ¡o6}®xÃÃþÒü¨?p¡V yÀ¯Œµ/SXÄRÀu¨Y»šBqɪÏ%&ÍTEwõ¨ '“HOsQ8¤j£ØW|p*Ö+.­néÁ+1›u\Ò[¤ý±ZáݱíÝ~eN?»—¡ú©ðþi'ðÌ2Jr}]­p Î|)ÿ=+¼¯ô#mäøg-ù#ùÏøä–2ª]ØQEê¡EPEPEP[ïøò›ýÆþUüþßò^uúû—ù×÷Ý}ÿS¸ßÊ¿ÛãþKαÿ_rÿ:ø~Š( íWþùÿ&ߢÿ×è+ö¿?àŸòmú/ýpþ‚¿`袊(¢Š(¢Š(¯™ÿkÞOƒÚ ŒdýšýkéŠñ_Ú÷I±øW­>¯šcrz)°hüì¼\1âÍPÓÜÿú1«ž®ŸÆÌ­ã=]“…7·}<Æ®b€ þ¿àƒzíæyâ[ªO:¿ _ÎMC_ðBÏù kßõÝ?’Põ}EPš|fÿ’Kâ_ûÜÿ趯ó”ñüš§ý}Ïÿ£¿Ñ¯ã7ü’_ÿØ6çÿEµœ§‹ÿälÕ?ëîýÔÎÔÿ­_¨¨êHÖ¯ÔPú%þÉ_òm~ ÿ°l_Ö¾‰¯¿d¯ù6¿Ø6/ë_DÐEPEPEP_ßðW/ù#ßöÁÿ™¯×šü†ÿ‚¹Éÿ¶üÍQE}Ùÿõÿ’ûiÿÿЫûÑð×ü‹šý{Eÿ  þ ¿àž¿ò_m?àúz>ÿ‘sOÿ¯h¿ô@tQEQE%ßð[ù¤ÿ¯Ÿë_ÏÅ@ÿð[ù¤ÿ¯Ÿë_ÏÅýÿÁ?ä`þ»·ó5üëWôSÿ@ÿ‘‚?úîßÌÐõ_EPEPEPçGüþMWSÿ®‹ü Þ ÿå×ýuoç_ÝOüþMWSÿ®‹ü Þ ÿå×ýuoç@õô‡ì‹ÿ'á_úüÈ×Íõô‡ì‹ÿ'á_úüÈÐúü5ÿ‘2ÏýÚîë„økÿ"eŸûµÝÐEPEPEP’|yÿ’7â?úñ“ùWùíümÿ’‹}þ÷õ5þ„Ÿäøþ¼dþUþ{ä¢ß½ýMy5jhò³ÿ®ñÿèB²ëSCÿÕŸýwÿBþ€ÿ±?üý'þ½`ÿÐ+ëÚù ö'ÿ’¤ÿ׬ú}{@‡äR½ÿ®Ö¿€ŸÛ‡þNoÄÿõñ_ß·äR½ÿ®Ö¿€ŸÛ‡þNoÄÿõñ@&QEý2ÿÁÿÖ'ý´þµý9×óÿ;ÿXŸöÓú×ôç@Q@Q@Q@Q@~Þòk¾&ÿ®?Ð×ð)ãù/ÿë©þB¿¾¿ÛÏþMwÄßõÇúþéñ“òƒ'ð_¸ø…ÿTµ¸_ÙëO¸(B'ÍÛîŠý½  Z—üƒ®?ë›ÿ#_ÀGíÙÿ%ÓWÿ¯¹¿ô*þýõ/ù\×7þF¿€Û³þK¦¯ÿ_sèTñ]Q@Û?ü'þM¿Eÿ¯è+õÆ¿#¿à‘?òmú/ý{ÿA_®4QEQEQEWðÿÿ–ÿ“à×?ë„Í«û€¯áÿþ -ÿ'Á®×ÿ›På=Q@ÖüþH—‰ÿëùöjþëùøÿ‚Éñ?ý/þÍ_Ð=QEQEQEQEQEQEQEQEQEQEQEQEü"Áà6©wûJ~ÍQÉü:'Œze?³›ØãwuüÁãwwv_´ìÛ-Š–è¾/G~tî?ºNÕ"Ȩ¯ãž†Ÿ /&mVX¯•2=´DϨ Œ…®oãõk—ÒìôUPË ,aÝŽ&Ú¨§Û½xm¾·¯-ïöë_OÚ±pÁÈÚÀö^˜˜Å}â{Okz.‘/‹tíËkä‹y/o3 ;!èõÇJì‹Ua(ÓVÕJ!*ï™kòÐù|AâÅP£S½ÀôcKÿ ‹è'{ÿ}úY~|e bÔØžsöÅ÷¥ÿ…qð_þxêø*>¯S¿âmõ¬/òÿä§ÿÐþ-|DtXµù´ýRÚ9a‰°²3ùl¦GZ£â-Fìh§iö‹giÞ‰X0'–-Ü×âQpui$¾ÜK€T°ëë×­w¾—Q·ðMÕÓýȦ_³—åI ï<*ë_kZt­mõ7tý*uo}ºésÎôk«»-N l2f.¡@Éß“÷}ö¯HñØÒ¡“Q³¼µÄp¿‘&팤©À Õ.«Z7>ÓìSPQé’ãÔ cŒý+Ìüj/ÅýÌÚ–â΄©nàŽ£ñâ¥Gêô¼×h%ûÚº«Y>ºþûLÿÁ)?å³gý’Ïé’Ò¾ú¯à”Ÿò‹Ù³þÉgƒ¿ôÉi_}W1€QEQEQEQEQEQEQEQEQEQEQEQEWá·üÛÃ0ëÿ ô)¥BæÚWaŽÝk÷&¿1?à¨^ ü’åwØâ‘ëØÈ*ûÞ…Kõ<Œú—¶ÊkÓò?Š'!I¨ Ï&Ÿ7¶{U™³Å~ìßcð¤„fÏJmÆlp*±¢]‡ɨY»šFnæ $“PßRÒ°æ|ð*&m´…Àâ¢'<Ô6Z]Àœó_WþÊ¿²×¿i_[xsÃñm‡pw•Ôì*§æàgó…´;ŸxŠËCµFvºž8° Ÿ¾ÀWöíÿçý“´ß€ mT·A¨Ë‰wàµ×=z÷¯žÏó…•á9¡ñ½¿Ìú ƒ(y¦*Óøÿä{_ì£û'øöjð%¾‹ Ú,s2¤’±ÁýácÓÔš÷øöËECmo̘à¯8ª?S\d·3d““ïQ3cëP3c“_ÍüÓ0Ìë:øúÎrómŸgF…*Qå§!í+ã–?Vy[<“Mgîj»7s\ϹԢHò·©ªæWë¸þtÒsɨêy¥ÜÖ1$iœô&«´ÎzùÔe‰50.Rîh¢‡´®,:¬Ó>z“øÓêmµ<Òîj¢HÓ8þ#ùÕs4ƒ’Çó¦3c“UÝés>汈ö•SúÕrÄÓj'p8 멲ˆ®øàUVlÐͺ¢.&ª#‰Ug|Ðò®Ï­KÔÖ1l}jqɤ,;Õw’“fª òT÷4ÜÔ%#XÄJ®Xš $äÔlØàRnÆ©6:U­‹jÐýñYnÙàV×…ã2øŠÊ%-*Ö¶ÂGŸJ ¬—æ:ží)IögêÃueð¬†¿Ò»ÊÆÐ-ÇKŠÞ@túVÍ¡™] a²êyo¥øÏ8©ª˜™Ô][ (¢»Îp¢Š(¢Š(¢Š(­÷üyMþã*þoù/:Çý}Ëüëûî¾ÿ)¿Üoå_Àíñÿ%çXÿ¯¹|?EPö«ÿ|ÿ“oÑë‡ôû_ŸðGÏù6ýþ¸A_°tQEQEQEW̵£ø;ªqþ?þ‹5ôå|ÿ ñL¾ø uw2‰#çÝqýhø9ñwüzŸý}Íÿ£¹êØñ ¾v¿}1þ;‰[ósXôWôeÿÑnõ ï^Ã÷!7~I_ÎmU_ð@ŸêZ…¼_¨(ÛvèÑŸl%EÔQEy§Æoù$¾%ÿ°mÏþ‹jÿ9OÿÈÙª×Üÿú1«ýþ3É%ñ/ýƒnô[WùÊx¿þFÍSþ¾çÿÑ@íIúÕúŠŽ¤‡ýjýE¢_ì•ÿ&×àÏûÅýkèšùÛöJÿ“kðgýƒbþµôMQEQEQEù ÿrÿ’=ÿlùšýy¯Èoø+—ü‘ïû`ÿÌÐñAEPÝŸðO_ù/¶Ÿðý ¿½ ȹ§ÿ×´_ú¯à»þ ëÿ%öÓþÿ¡W÷£á¯ù4ÿúö‹ÿ@·EPEPò]ÿ·ÿ‘ÚOúùþµüüWôÿ·ÿ‘ÚOúùþµüüP_ÑOüþFÿë»3_εE?ðDù#ÿ®íüÍUôQEQEQE~tÁQäÕu?úè¿È×ð­âù]×VþuýÔÿÁQäÕu?úè¿È×ð­âù]×Vþt_H~È¿òqžÿ¯Áü|ß_H~È¿òqžÿ¯Áü oÃ_ù,ÿÝ®î¸O†¿ò&Yÿ»]ÝQEQEQEy'ÇŸù#~#ÿ¯?•žßÆßù(·ßïS_èIñçþH߈ÿëÆOå_ç·ñ·þJ-÷ûßÔГV¦‡ÿ!«?úïþ„+.µ4?ù Yÿ×xÿô!@èûÿÉÒëÖý¾½¯¿bù!úOýzÁÿ W×´•­éÃVÒæÓÛ¤«Šþÿà¡z3hµ¯‹tý¸XîH•þ€5üJÁ[~ÜøsöÕ|O*mMBäàúõ É*(¢€?£ø!ïŠà3Ãï+#:þª+ø·ÿ‚-xëûö¤‚Âý€¶6Ïùœ×ö‡ ©<+<uÀ#èhZ(¢€ (¢€ (¢€ (¢€>)ÿ‚…jhß²oеJGN>†¿¯_E©k÷WÐýÉ_p¯îþ ·âèôŸÙCĺ8Vº·àwèkøb'<š*H£i¤X“« ŽºïéÿÚÞ4Ó4ÜgϸDÇÔÐö§ÿsÒûè¦tÛ)šLäc²×ê½|kûx0øöxÒôO/i-Œcª­}•@µ/ù\×7þF¿€Û³þK¦¯ÿ_sèUýûê_ò¸ÿ®oü·gü—M_þ¾æÿШâº(¢€?¶ø$Oü›~‹ÿ^ÿÐWë~GÁ"äÛô_ú÷þ‚¿\h¢Š(¢Š(¢Š(¯áÿþ -ÿ'Á®×ÿ›W÷_Ãÿü[þOƒ\ÿ®ÿ6 Êz(¢€?­ø ü‘/ÿ×òÿìÕý×óñÿÿ’%âúþ_ýš¿ z(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+øIÿƒ¿ KÚWökI0ÑU$A ãœÎ³u××üE¥‹r³[ýÒÛŒ/ÊrË´taé\w‰tMJÛP’âH\¤ a”nô*Hès]Öƒi¨h^ º¼¿&ÜÜJñ†ùG-Oç]Š­J•gJjË]M9)Ó§ °i½4Эoîõ‹[mY®ŒŠT(9Räúß5èßu¨lnµKhž)c“j²Ã •þï5zÃÇŽ´§G±¼[{‰ÆÀÞZ¡—¶ ž{WœøËCÕlžæêx£hÛ,@8äBZ„• Ù>k²¤ýµ[UÓM¿¤öŠÿ‚RÊ.?fÏû%žÿÓ%¥}õ_ÿÁ)?å³gý’Ïé’Ò¾ú®c¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯›¿k/ A⟀Þ%…ÆdŽÆRƒÞ¾‘®?ÇúH×¼©häd\ÀÉ­m‡›§^FŒ±U(N›ê™þt¾$Ñï´bm/Q]’£ÄÖ }wûrø-~þѺ׆vˆãêÍ_ ³c_¿Ð¬«P…eÕ&~^‹¡^t_FÐ3cP“ŽMã“P’I«l„¬’j&n†n£¨l´º°¦3cC68fÝËJçëü_à%¿ÆONšÄ;íìá[„8ÈÜ…›úWö…q%·‡4áU† ƒ·Ý\WàWüÀkgáH¼n!ÜDéæc“òúþ5û}ñ_Pht_!á_‚x¥ŸË-Âc1ñÿ—Qv^gì¼—Gê´£mfîýŸuÍNmFùæ˜ç“Ž{f°™ø¦¼…B\Šÿ;ñ8Š˜ªóÄVw”Ùûu:jQ]fÇ&«»÷43ަª»×;fñˆænæ¡'<š Ï& wü©7sXÄLUbÄÐ[4Æmµ ö5Q°Ußó¡ßŸz¬_ž*McÌÛjlrhfÇ&«;þt›±ªA#Ô÷4ŽMWw©lÖ1ÒUvlÒžj7lp)¤ øàURçýœ­ì,dÅË^ª°ÿd”ûU#¬Hd~€d×òCÿ¯øÙg®üF¸ø]k>ÿ³´rìÏO›ÿ­@³Êgæn®Åâj*( ¿·Ïø%ÃIüðR^TØ5;t_óŠþ7þü;ºø©ñ+OðEš–’ñ°ëÚ¿Ð3öoðzøà—‡<2ш䴳Xߎr ë@áEPš|fÿ’Kâ_ûÜÿ趯ó”ñüš§ý}Ïÿ£¿Ñ»ãm/Ÿă,ÚmÈ÷í«üè~ é—ºOŒõKk䨿êcc#PREĪ}ÅGNC‡Þ€?Ðßö8Ö¬5_ÙÃÂPÙ¶ã·×šú~¿5¿à™>9²ñwÀ»+KWl­ã‡¡¯Òš(¢Š(¢Š(¢Š+òþ åÿ${þØ?ó5úó_ßðW/ù#ßöÁÿ™ ₊( »?àž¿ò_m?àúz>ÿ‘sOÿ¯h¿ô_Áwü×þKí§üÿB¯ïGÃ_ò.iÿõíþ€(nŠ( Š( ä»þ oÿ#´Ÿõóýkùø¯èþ oÿ#´Ÿõóýkùø ¿¢Ÿø"üŒÿ×vþf¿jþŠàˆò0Gÿ]Ûùšþ«è¢Š(¢Š(¢Šüèÿ‚¢ÿɪêõÑ‘¯á[Äòºÿ®­üëû©ÿ‚¢ÿɪêõÑ‘¯á[Äòºÿ®­üè¾ý‘äã<+ÿ_ƒùù¾¾ý‘äã<+ÿ_ƒùÿ@߆¿ò&Yÿ»]ÝpŸ äL³ÿv»º(¢Š(¢Š(¢ŠòO?òFüGÿ^2*ÿ=¿¿òQo¿Þþ¦¿Ð“ãÏü‘¿ÿ׌ŸÊ¿Ïoãoü”[ï÷¿© &­MþCVõÞ?ýV]jhò³ÿ®ñÿèB€?Ðö'ÿ’¤ÿ׬ú}{_!~ÄÿòCôŸúõƒÿ@¯¯h¯æÛþ £ðVIô ÅÞŒ¼3½Áô5I5ñ?íáð†Óâ—Àl¼~eÅ•œÆ~jÿ?ú+oÄ>Õ|/ªÉ¢ëQùW}åô¬Júßö,ø>üm°×‹ìÞÉÞ`+û÷ð. º¯ƒ4­ENï>ÒÏûÈ ›Fƒ¨I¥ëVš„lTÃ4o‘þË_Ýçüãœ?>ìC “û;Ë´$òŠWÿe ÐZ(¢€ (¢€ (¢€ (¦HÛQ›Ð@Ïgü⾃ ÙøM¥*×ÖÍ…ƒÖ¿“Úý‰ÿ‚¿üqƒâ¯Æ }*Î`ÃH/…=Ç­~;P_Pþȯ<}ñ»C‚Ú3"Û^C#ãÓu|½_Ñüö~ŸTñ­ïüAjÎkeh†Fá“ÅR¾Ñít/ZiÖ‹µ$à s´WGMD Eè)ÔKRÿuÇýsäkøý»?äºjÿõ÷7þ…_ß¾¥ÿ ëúæÿÈ×ðûvÉtÕÿëîoý €>+¢Š(ûgÿ‚DÿÉ·è¿õïý~¸×äwü'þM¿Eÿ¯è+õÆ€ (¢€ (¢€ (¢€ þÿà²ßò|çýpùµpü?ÿÁe¿äø5Ïúáójü§¢Š(úÑÿ‚Éñ?ý/þÍ_Ð=?ð@ù"^'ÿ¯åÿÙ«ú Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿„ø;ýàö’ý›^ä…A¡xÇ“ëÿí¿øö+û¸¯à¯þ µšóö‚ý›-àm…´ ݆[NûUÓº©ˆ©ü9\þ>ôÿ‰úZªé÷3ØKvÈç–J·`eÆÖ¼÷ãf‘â{–±Õu”‘㉤[‚rU$'*ÍŽŠW¡é^X¾ ñ-¥óx~]>f»‘Šùa ÞIàŒ ï_XøÏÄ­ðöÃF‹Q½ uoeµÇI®ASÃ`qÍvFN¤j«!NšÃU„é{ÛþGÅØ±ìTóíF,½WòÿëWÔãî’ÕqØY'¥/ü/Ý+þzüOð¨öt¿™~ÿYÄÿÏ–ÿÒþ+¼AâÈô¿ÝOa4›$~3Æ1Ôäc¯5¡e{â½.MJÖèÜy‡n$8ep~áôÏoZËÖü¯ùdÓcû@$D#z·¡^¸÷®† (øCÁ·pëR¸»t)NJé»Ï¥vóU•Iª÷uû?sBT_½¢þºœŽ‡à?_jqÛ›íÕZIdB‰–Þx8ëÅoüAñ,ÞüLX6C¨J#VÇ Æ¿ ±õ¯í£þ ›û:KñÇàš¶—'ÓZK§`2HPô¯â‡V°ŸKÔf±¹R­²àû+ö.ÇÇ•Æ ûÑÓüÈ8§,&g)¥¤µÿ2$õ¨™³À¤.OJe}gÎ%Ü)ŒØàPÎJŠ¡»–•Àžõ6xŒÙ¨™±À©l³ûÿ‚,ÿÉ¿éßð?ýWéçÅ×lÏWæü_þM÷Nÿ¶Ÿú¯ÓŒþü¥ãƒØxæ»ÿ™ûï+ÒÃz#ÀY±À¨XàS» › þgëi¿>õ8æMWy9çüþ•&ª#ÝøöªÄäæ‚IäÔNø¤Ícgì*sšc6j~Â¥³EfÏ¡,ŒØàUbüñRÍ”G¼ŸŸùö¨ Ç&‚qɪîõ&‘ˆ;Ôäæ‚rsQ»ã¥#ewÇQ›x68Æ%›h^êå-bg8úð/Ã+¡ø&ÖIWl̸oZø á….|Mâ»y!’Þ@Ïô¯Ö KHl [kqµ ýàOIÕÄq xè½Øþm¯KXüßó£O-¦üßùh¢Šþ—?/ (¢€ (¢€ (¢€ (¢€*ßÇ”ßî7ò¯àGöøÿ’ó¬×ܿο¾ëïøò›ýÆþUüþßò^uúû—ùÐÃôQEj¿ðGÏù6ýþ¸A_°uü[þÀŸðR˯ٱlü¬Ø5ÝÛbØXÁà·ÞýPüý¯¾ üdÒ ¸Ñu»S{(É·V%‡é@SÑMGY:‚2µ:€ (¢€ (®7Æþ=ðÇÃí]sÅqÚC–Ý! `}(Ëÿi_Œø7ð¿Rñ¿t¶Ìöòˆ7…à þ?hß‹wÿ~(ßx×Q$¼¬È 9à1Å~™ÿÁRoI~6xÎçáÇ‚. šM”»ã¸‰²Ž ä ŸoJüVf,Å›©æ€Š+о|>×>'xÎÓÂ>…î.g`B É Ÿç@°ŸðFÿÙ¾ãÇ_í~+\Ä^ßG¸ ÀŒ©É*þá†+x–T*/Õñgì=û8èŸ>XÙØÂ‘\_A³€0Cãœû×ÚôQEÇüB¶kÏkˆ2d³™@ú¡þµß„î¼ñ—PÒîУwÁ÷c_ècqw0=¼£*à©Æ¿?ø,÷ìçáo‹süUÓ¡1i²"EÀùwëøÐáMQ@Ñÿü;öœ±ðÍÕ÷Âý~àõIÕ`yÀÇJþ¥ÑÖE¼ƒ_æíð—â~¹ð—ƶ~3ФtšÍ÷‡5ýœþÁðP_üxðe¯‡üMy–«m¦$b^g?LóÍ~©QQÅ,s –#¹OB*J(¢Š(¢šî‘®÷8€_ßðW/ù#ßöÁÿ™¯°><~Ù_þè÷Z¦«m%ä*JÛ³ÌGnÕü­þÝŸðR}WöŽ»“Ã:M£ÙÙ@Ì †]N}Í~BQE÷gü×þKí§üÿB¯ïGÃ_ò.iÿõíþ€+ø.ÿ‚zÿÉ}´ÿ€èUýèøkþEÍ?þ½¢ÿÐmÑEQEü¡ÿÁo´]JßÄ¿ÚÓDVÞ[¬+v'5üñ×õ¡ÿÑøk©ü*Òuý5L¬nÙTto&¿“R¬TõPkúÿ‚$ø–oˆ–Þlo–Waë÷¿úõüÿ×éüóã¿ÂÚGÔõiÙ€Áƒ.K-v´V?‡õˆöV•™ÝÇð*ü.®‡Âþ&Öjž/2sPœdkèŸøÿß¼=?ˆ¼Ir–Фîs2ã_Æ?ü³öê×?h¿ÍáïÈöº=°{y!VÊJT€©÷ ÍÏŠþ4»øãýWÅWN_í· (ÉÎ7WQRà ·ˆ`RÌÝ ÷áouˆÞ:Ó|#§!w¾bëÍx_°¯ìÿÀZG„ï`òïíÓlŒFð:×âü7ö{›…øµãX2…R{_5z0ÇÝ Wõ@Q@µ/ù\×7þF¿€Û³þK¦¯ÿ_sèUýûê_ò¸ÿ®oü·gü—M_þ¾æÿШâº(¢€?¶ø$Oü›~‹ÿ^ÿÐWë~GÁ"äÛô_ú÷þ‚¿\h¢Š(¢Š(¢Š(¯áÿþ -ÿ'Á®×ÿ›W÷_Ãÿü[þOƒ\ÿ®ÿ6 Êz(¢€?­ø ü‘/ÿ×òÿìÕý×óñÿÿ’%âúþ_ýš¿ z(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+øCÿƒÁ.­¬¿hÿÙ¶âí€A¡øÄsßwörç_ÝåÿðxæšÚ¯í û6Y©*ââÄu ;'ðÕÒ¿´ˆ©ð;ŸÆ¶ŸñžÆÎs£=ýÜpc7(7Fž¾øª?|â]Uìo4è›QhŒ‹ÞÍŸ2Jƒø”ޤs\m·Á_ˆKx4ë!49!nC¯“´ÿ=½ó^§ñÄÚ_‚-tM&ÖynfÓíÙTÈS– úÀï]‰Êp’Äh„áN•XK «ÿ€x@ðޱò艈·“š_ø@¼wÿ@ KÿÞ»¯ø^ºä¦¡Ÿkþ½ð½oÿ¹¨ÿßÿþ½Gû'ó×ÿ>¿ÿÓþ&¼Wâ¬x¢âöÁ~f~äŒtâ¯Ûév)Ð'Õ"”Û0p’‰åG#*s×iõ=*¾¹àf›X–+;˜’eÂÉ­³‘Æå==kNHt¿ xNçOiÖîîáÕåòÎP÷TþõÝjÞÒ~Ù{ºš9RöpT_½¡™¤ü2×>ÓúËÁkeç2£Ps„’IíÅPøâˆ[RÔNN%‰±$¥HãN*–‹¯ZMx–zÌ-‚–L‡BO ×+oÇ~ T{éí.cA ™cí'bŸ™{Ò²Vö/êŸ;ÿHrv¬¾³ÙÛ±þË¿ðJOùEÇìÙÿd³Áßúd´¯¾«à_ø%'ü¢ãölÿ²Yàïý2ZWßUÌdQEQEQEQEQEQEQEQEQEQEQEQEQEdkúE¾¿¢]è—`4WQ4LB`×ñ›ÿ?ýŽo¾ üM¼ñO†,Ìz<¤cbü»˜äóø×ö“^ û@üð?íà‹ øÊÔ\!Vh³‰1òžAïŠöò,ÚyV-T Ý.y”Ã5Â:kâ[3üîˆ*Hn¨Y³À¯ÓoÛ#þ ßñ7ö×.¯ìmÍí‰vuі±Èè+ó>öÊóN”ÁC à«‚ë_®á±t1”•jºgäxŒ|%WK4V¨Y³ô¤,OZ…›< ݳÌàt¨IÇ&‘˜ ‰›<š†ìRGöCÿU9ýŸ4ãÿ]?ô_¦¿Èü+óþ¤sû=é§þºè"¿M~3Oá_Ê~8È‹ëþgï¼ðaבóö8 u¡›]ä5ü7~§ëшŽüûÔ4Tlàp*nj;㊪ÌM ùúT,ÙàR½ÍcfÏ gdžlqUóÀ©¹ªˆŒäô¨™±C0Uß°©¹¬bHòzÕr{š îjzF±ˆ­%WfÍ5›¹¨™³ô©fª ÍŸ¥Wgô¡Þ«3©5ŒG3ç¥DX U]ûPkƒ½EF@ëP»Š–û¨ƒ½V$“A$š…ß°©5ŒEfÏ«»ö3vY›< ’ŸÒˆa–êe·€vàÖˆ­în[˶Frº3_\üø{uyˆ5…‡UaƒÆ¾ƒ†¸o2âlÆ 6îÕßDº³‡3Ìð¹VXŒD½v{oìõðïþk+‰.Q_KTÖÐÚB¶ð *ô=upþK†á좎U„ZA}ï«ù³ð,ËW2ÆO[vÿႊ(¯há (¢€ (¢€ (¢€ (¢€*ßÇ”ßî7ò¯àGöøÿ’ó¬×ܿο¾ëïøò›ýÆþUüþßò^uúû—ùÐÃôQEê þ1üAøO©®¯àk÷²qó/ ükï/†?ðN|høeñ?Á³B¬ñÜìds_øûàçć:œºwˆ´Ë˜„GF‰•Oâhöötÿ‚ÎüFð pÛ|V{on9Ç~Õûð£þ ïðoâÄ—ð®šX|é1Šþ) àõå–Eû¬GÐÐúè?¶ìï¬Ù ©|W§@HÎÖ—ŸåL×ÿl?ÙãE³k¨¼U§ÎTgjË_çš.®‡Ió?ãAºº=doÌÿhà°_~@Ñé6ÃTr /œWóÛûXÿÁJ~,þКզ“{=–9!m˜ç{u¯ÌÖ’GûÌOÔÓ('<ÑEužðGŠø“âφzä> ðÓZÜBûÕ—¨"¸2 ­Á”ý~Í?ðZOx6 ]â„W«6È[{õ¯Ùï†ßðSŸÞ<Š).î ÓÌ¥“¯áV¥Y¦_ºì>„Ðú%Z~Ö_³­ÔVñ~š„ö3õ«Å¶?ìóáÝ-µ|S§Ü°?q%æ¿ÏKíW_óÕÿï£þ4†êèõ‘¿3@ÚÅ¿ø+ïÁ¿†ÖÒMal5B£ ™Í~:þпðYŸ‰^<†k…Ò\軲ç8ýkðÙ¤‘¾óõ4Êõ/ˆß¾"|W¿:ŸŽµ¾˜’w7©ükËk¯Ðüã/ȱèºeÍÎþ†8Ù¿¯´<-ÿíøÓâ/†zÇÄë¥þÏ´Ñí¾Ó$w•fP@ÀÉóé@QE÷gü×þKí§üÿB¯ïGÃ_ò.iÿõíþ€+ø.ÿ‚zÿÉ}´ÿ€èUýèøkþEÍ?þ½¢ÿÐmÑEQEòÏíuð^ÏãGÂMGEž1$°A+ÄÉß·ŒWðMñŸáwˆ>xîóÂ~"…âš'fÃŒ8¯ô}eWRÈ5ø‹ÿ1ÿ‚ri߬.~$xá×F^I¹#ù¶€0ryï@ÇkhzÕÿ‡õ8µM5ÌrÄA{×Yãÿ†^/øs¬M¤ø–Êkv‰Ùs"¯= êçþ ëÿOðÞ±¤Øü7ø7ÙÚ ¥Ìï„E^+÷{ß>ø²¸ðþ¯mv®2<·Í›R»¡Ê>•õ7ÃoÛ7ãÿÂ{tµðV°m’0‚ôÿ ÿBÔt‘CÆrCO¯â[á§üËöÃý¦™®x‹Í·w ´#tÿ¾\²ÇÄMcâ§Á-ÆúìžmÕânvÿÈ™gþíwtQEQEQEäŸäøþ¼dþUþ{ä¢ß½ýM¡'ÇŸù#~#ÿ¯?•žßÆßù(·ßïS@MZšü†¬ÿë¼ú¬ºÔÐÿä5gÿ]ãÿÐ… ?ìOÿ$?Iÿ¯X?ô úö¾Bý‰ÿä‡é?õëþ_^ÐEPrÄ“ÄÐÊ2¬0E~ÿÁOàÖ_tkŸˆ¾bÕA/#*噿ÇãÍ~ìT6ÐÞ[½­ÀÜ’)VÄ`Ðù©ø³Âzï‚õ©´/Û=´ð³.Ù ã5ÍWö+ÿÿ‚\øãM½Ï¾Á¦¬ªX»àä(Éã­)Ÿ~|AøQ­\i^%Ó®#X”ÊÑ2¡ÚqœŸZÈøcñgÆßüC‰¼xÖwPÈëÔþš?cÿø,w‡u» üIÅÒªÄ÷S6ží_ÊaàÓ•™NT‘ô ô`ð¿í)ðSÅV^iþ"²f”g`“$Wmÿ [áÏý-¿ï¿þµ…>-øëÁn¯ ^4Ezu?Ö½[þãÇýäßüU}:‡ÆŸ…:\>~£¯ZBž¬øñ§Ç¿ø)Á„s6þßW‘àA&Nq_Åÿ‰?i¯Œ,²þÏÖµ3$^ƒ=ÿðÛ­BòöS5ÌŒÌzäšýRý±ÿিhIî4?O5ޔĩŽA#Œõ¯Ê{‰å¹®&;É$ú“PÖÖáÍ{Ä7 k¡ÙËw#‰ ÈP:«1Ú£&¿\àÿðO¿üwñ}¿‹|MnÖÚU”ŠåfO–d8û§ñ¯fý…ÿà“Þ+ø¥woã?‰$z\lKy—c²žÃqþ•ýYü+ø[á„Þ³ðŸ†-ÄZÆ#c 9í@ ü¢|5ð•§„´VkDØŠ½®òŠ(¢Š(–¥ÿ ëúæÿÈ×ðûvÉtÕÿëîoý ¿¿}KþA×õÍÿ‘¯à#öìÿ’é«ÿ×Üßú|WEPöÏÿ‰ÿ“oÑëßú ýq¯Èïø$Oü›~‹ÿ^ÿÐWëQEQEQEü?ÿÁe¿äø5Ïúáójþà+øÿ‚ËÉðkŸõÂ?æÔùOEPõ£ÿÿ’%âúþ_ýš¿ zþ~?à€òD¼Oÿ_Ëÿ³Wô@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@¿ðx^¡o¦~ÑŸ³måÇÝŒGýõýœ3øMxUüÿÁâzzj´Oì×k Êÿbø½˜w*§N,¾Üâ®ý¤lEK{7sø—³ø´!­›>œ†+)•Ï%GLûWy㆓øŽ->ç×Ë1‡Íeaž NAV'ÔõÇÁð^îióeªÙ<±"GbPžéŽ£¦+ªø¡âý3CƒIÑ<9¸KX¼ /l}\ã¹5ØœÕ9}gaKÙ*°x=ÿàu8øR_{XÆ>³ÅŸý øR_¿çÊ/ûÿÿXÃâv¹ºÆÌžÿ)ÿ_øYÚßüøÙÿß'ük>l/ŸÜt_Ù}çÿÔþ#|Uâ‹«ÜÏh¨‡p,ÄsÓ§=±]‘™âOÜß_F`xÝc”Ä8!¹WP{Ž„U{ÂÞ¿-”—FÒâ<+6ÂêÀt<`ƒŠ~¡u¢øSÂ×6‰ºâIZi¤ÜݰõÛjÑ«9U~î¥ÊtçJé'}?®Å]7À¾³•5=_Y†âÒ6 "̓­‘…¦¹_ˆ&žûS¿6б«#+3Á^@ü8_FñEí½ìk¨•¹µv $LÝ'ªžÅz×oãß hdê9­îm ³rJª„޽gN‹úª·qÊ𪾰料ãý’?à”Ÿò‹Ù³þÉgƒ¿ôÉi_}WÀ¿ðJOùEÇìÙÿd³Áßúd´¯¾«˜Ì(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šäü[àŸø×L“I×­’h¤9POLwùCñÏþ ðâ“ë>³xïäɸ –äúw¯Øª+¯ Åà¥Í†›G&+„ÆG—Ïå7ÆðCŠS ¿á{TÉ>^ùOûê¼B_ø!'ík¼ùW:~Þß¼_þ*¿²+Û‡æðVº~¨ñe™Dù_ÞßðâÚçþ~tïûø¿ü]0ÿÁ¿k¦ÿ—­;þþ/ÿ_Ùe_ëvlÿ—îÿ‚/õK(í/¼üÛÿ‚tþÊ_ÿe¯…6~ ñûÃ%Ô÷H#bkéOŒí‚ úB¾jø×ÔþøÇ‹ØŠ˜®Åb*îÝÿ3îx_O Œ¥‡¥²>s‘ê{š îj»É_Åêq‰#¿aU]óô¤wâ fÍI¬b#6j6|) v¨ “Å&ÍTA›< ‰›3b«;æ Ö15ô]"ëÄ’ivD ¡5ë‘þϾ3’0êÑàóÔy×€u;m#ÄÐ_]œ"uý+í Œ^HFÈŸýzýsÃîàœëV·b9&¥d¹ùt²ò>w;ÇføJÑŽ_ «v¹ó£~Ï6=/Ïÿ¯PÙÓÇÑ~cükéø\¾ e?—ÿ^™ÿ ŸÁŸóÑ¿*ýýAðþƒòªÿ#ÅYßô£ÿ’Ÿ2·ìãã“Îè¿?þ½Fß³‡Žˆá¢üÇø×ÓŸðº¼ÿ=òÿëÒÂëðOüõoËÿ¯Ið„_ôÿ•Wù³Î*éGÿ%>^oÙ¯Çdýè¿1þ4Ãû5xó³Åùñ¯¨ÏÆÏ²·åL?<:Êß—ÿ^—úáý¿ü¿È¥žñgJù/üåÆý™üzyßæ?Æ¡ÿ†cñ÷f‹þúã_TÂñð7üöoËÿ¯M?ü ?å«~_þº?Ôè5ÿàÕþE,û‹zPÿÉO•OìÅãò~ô?÷Ðÿ‰¿eÿˆýè1þ5ú ¥êVÚ½„Z™ÌrŒ©ö«õïÓðSjÂ5iûFšº|û§ò8_ç°“Œ¹n¿»ÿüéoÙwâ 4?÷Ðÿ¿eŸˆgøáÿ¾‡ø×èíñ8#µOüþ¯9çxÿà'æùý•þ!“Ðãýáþ5Õiÿ²Æ²%C|Soñ`ÿõëïj+j ðE óû9ËÖWý ©ÆùíHòó%èðwÀ/øm–é¢&eç’Í{µµ´6ˆ`Pª¼ TôWèyNG”ät}†WAAy-ýOœÆcñxúžÓQÉù…Q^±ÆQEQEQEQEQEU¾ÿ)¿Üoå_Àíñÿ%çXÿ¯¹}×ßñå7ûü«øý¾?ä¼ëõ÷/ó ‡è¢ŠþÕ?à1E7ìÙ¢¤Ê}Ÿ¡}ÁñÃöDø=ñçN’ËÆ6 wdƒU9ú_ÿÁäÛ´_ú÷þ‚¿`(ùŠý ÿà‡Ú­ÝÌ÷Ö"p'gÔ÷ù ñKþ ùñßá\’®¯hn<¢Ô#?O¦kûð ƒX·^ðåö~ݧÛMž»âFþb€?ÍÆ÷áÿŽl'k{ùYN9·”tÿ€Ö[øgÄ‘²i÷*}âqý+ý¼QðáwŠîÖîûH´FQ’Þ1ü…xV«û| Õ®šêk5Vcœ,jxCÅ“s—vÿîÁ!ÿÙk¼ðoÀωž6ÔSNÓt‹ÈÙÈžÞ@¼û•¯ï7ß±ÇÁŸ F#´Ó¡|~$?ÌW¹èÿ ü¢Z¥µŽd»:7ÙãóÛ@È'Àø#¿ÆßÝE©ø@–-‚UŽÖÇ~­_Яì­ÿæø?û>ØC¨%}MF›k¯NÙÍ~‹ÛÙYÙ®ËH’!èŠ~•f€ ¶¶‚Ò‚Ù*€PãéSÑEQEQEQEà?f¿…ßô¼=ã»%’×kU ùâ½þŠþ\?iø"W‰ö]WàšÃ ¨É"g½»Šütø›ûülø]<ðk\|ƒäDïœzm¿Ða‘]v¸zÁºðŸ…o‰7ºe¤Äõß 65 ós—À^9€f}ý3ýëiGóZ„x+ÆLv®“zIÿ§y?øšÿE_| øc⨣ŠóF²ŒFr6[Ä?’Šä­eß„v— ršU±(A‚ÿÁ?i_Íå­c…±ä)ýZ¿IþÁü/i,'âÄK2ñæy2ǹ¯èž;Ka‹x’?÷TåVhã„_°—À_ƒKü"ÚÍ1æ…nŸQ[¶MŽ‘¥~Êž6†Ú( Î˜à ¹ù—Óõ~|ÿÁGf–?Ùã^Xبk'Èæ€?‚Ú(¢€?G¿à˜ÿ„—ö‚Ïû‘‡ü‰5ýÓh‘y-œ?Ü‚5ü” þ#ÿàöÓ]~Óë#$[üëûxÓ]>=Dkü…\¢Š(¢Š(¨åŠ9Ç*†R0A椢€>ý¥¿`‚_´lRÞxšÇý-— cÚƒ qÐz×óíñçþ±ñ{×sêž6âÁ Ú¥ƒ6;¥_5°A:ìÇ£Gë@çÉãÿØ·ãOÃÙŒ:žŸ,ÄgýTNÝ>€×Ï÷ >!ÛÌж…¨§ZËÿÄ×ú@\xK·g7Ze¤§ý¸co浜~ü?''BÓÏýºÅÿÄÐùØx3áçÓÅ6Lú d›iøšþï`ÛK»هÖױ<2,\£©V ó_I¯ÃÏ#MOwÑñ5ÔZÙÚXÀ-¬¢Hc^ˆŠGÐ(ÅQ@~ÝŸ üEñ‹à%÷ƒÃþxGÿ|ð â'þûLÿÓ·ùÿW´~ÏðK?ÚÀÿ´jÿgû5•È‘ñ×?íWöýaÿ<#ÿ¾GøR­…ŠË `ŽáGøP?à­6}#ÃVÚ}Ïßpk« QEQEQEç¿4;¿ü7Ö´ y×v¯g¦Mÿ¿à”´wˆ¼euªÙ}ŸËñŸ©ÿj¿´ 0Ȫ§O±'&Ïü…ðèÚgþ¿Ïü ¯éðHßÚ^ßS¶¸³mIQÐ0?Þ¯íŸû:ÃþxGÿ|ð£û>ÃþxGÿ|ð ý˜ü «ü=ø]§øwZÇŸ#c¦UpkèŠjª Âµ:€ (¢€ (¢€Ê®6¸{×Ë_´ì‰ðö‡ÑåÓsö«}&Õ£AʽRÛÁ> ³P¶ºM”xé¶Þ1ü–€?ÿßðF?Žþ1Ô Õ¼Nm—N` )`¯Ï±jýâý™¿à˜>4ä¶Eõ(°rÄ:ç¿5ú}­­²ì¶c²€éSÐ 7K°ÒmVÓO‰"DTåW袀 (¢€ (¢€+^ÆÒÙÍõd`?_ÈÿíUÿÈøÿñ#⦣â= Èò'¸‘×w\1㸯릪µ“Ï î£ü(ø‡ÿ‡CþÓ?ôíþàTáÿiŸúvÿ?ð*þÝ¿³¬?ç„÷Èÿ ?³¬?ç„÷Èÿ øþ áð?Åß¾ ižñ~ß´Ûõ¶ôÎ~…Ó#Š(—lJzŠ}QEQEQEü»ÁI¿àžþ=þÔZ§ÄOù?a¹‰wõÈ-î=kú‰ªÒYÚJÛå‰ú•Ðñ ÿ‡ý¦éÛüÿÀ¨ÿ‡CþÓ?ôíþàUý»gXÏÿï‘þgXÏÿï‘þù'ÿý˜¾ ~ÌŸ 5ÏxÿËóï.„‰åôÀϹ¯×ŠŠ( €bTû åRÐEPEPEPEPEPEPEPEPEPEPEPEP_Á‡ü7« ö‚ý›¯ÈÎ4O/ÓqÓý3_Þ}?ðx}’j´gì׌ãFñ{ã± tæ û«¥üHØŠ–önçðåiñ+]Žå®¢·‚KRÇ0:grún6}Å{?‹|áÙé7]›uÚ-&”M’Œ´Rmçå`p¹ø>x&êS¨kMog’Í„—?u[¦=ȪßÂ_ð£þµ¯ý úwýó/øWš/Œ|níéýÁþïøL¼oÿAÿ¾øV~Ò—ft{©søR·ñŸŠ£½]b ÇW Ybÿ–xÏÝ*Ü0¯¤|Q¢ø[ÄZV‘w©Á-¯ÛíÒê#n¼ ãç]­÷‘ºâ±í<)ðÞîc¨\é—p%Í´s-Û¾€>‚¹/‹ž'Öõ:(´‚T`?— 1þív%*0”ªê¾ð”£^¬ÊÕõÛ§âtcá7‚1Ρ©¥²/ü*oÐCRÿÀdÿð%»Õ€/n@ôóXRý³UÿŸÛŸûúÕ¶‡üû7ú¾#þ_yÿÖþ<]s}wâÞý‹Ù}îµé¾ ºº^ÏpžzÚÌ©˜3½\ñçÓ¿µhøªëAµñÚ~³ko=¼Oû¢ä«&}yÆk7ÅwڽdžšËK·ŽÞÆ$Ý [ò…só6z“ëí]±¦éÕ^kï å?kJ.[m©§¤Iá{þÖðþŒ}X˜Ê±ÉaONÄô¯ñýÆ¥y©Þ=û0ÌEÀ$òÎ}òsU¼=öË}rÑ´rZçÍA\’Ç#‚;\׳üM»Ñí[SÓõ x$T†Q«£”<)^HÏcÅguˆ¢í¥‹’xzêþõ×ÌÿbÏø%'ü¢ãölÿ²Yàïý2ZWßUð/ü“þQqû6Ù,ðwþ™-+ïªæ3 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ùƒã¡ÇJú~¾`øï„ó±ÆE~sâ¤e. Äò¯ëSÜáÛjBçËÄžõ ¿åHÒqÍW$žµüVÙúª@I<š…Üc;ñU‹I³T›u1›‘›«;úT¶kƒ¿56(fÇÖ -ŽM-£Y»š¬òJ€žæ¤ÕD îj6Å1䨉¤ÍTNûÀ~ ½ñžª--Á ¤G¥}ß႞ѭÕ5#ºluaÿê®#ösÐímôTÕG™*òkê þ´ð·€²Œ6IK8Ì)*•jj®®’é£Ðü§Š3Ü]Ll°xy¸Æ:iÕžAâ/ƒ^Õm++XíÛ¾ø—ðêûÀš³@Ù’#–ߎ{WêÅ|ûûCèÚ‡‚¦¼À©wµuø—À>a‘V̰4U:´“—º¬š[«-ᎠÆañðÃW›”$í®§æ‹½Wgîió¯•#!9ÁÅI§Åö«Ä„ÿ¯ãøÂRš¦·?fÑG™Ÿ­Ÿ ¿äžiõÄ:ôZá>ÃöiÐÿv ?Zîëý Èbá’`àúS‡þ’ç,{OY¯æ—æÂŠ(¯Tä (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€*ßÇ”ßî7ò¯àGöøÿ’ó¬×ܿο¾ëïøò›ýÆþUüþßò^uúû—ùÐÃôQEkðGßù6íþ½ÿ ¯Ø üÿ‚>ÿÉ·h¿õïý~ÀPEPEPEPEPEPEPEPEPEPEPEPEPEP_ËüOãL~%¾Ð|£Ëå¶3¤ÁO^¯ç_ÑßÇ?Œø-ðþÿÆzܪ>É‘c'¾•ü~Ø?n~9üeÕüR¬~É=Á’<…}hå*|q¼²£f8Þ™^‰ð§Âú‡‹¾ i:=„ ?›w ¸Qœ+8šþ¸?àŠ¿ Nû:[xºù<»–™×ià×í¥|Óû'ü-ƒá'Áý?Ã(@Q$ qË(&¾– Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿‚Oø<¦[ؾ>~Í£OæVÑü\ züÚw{uüÿÁáqE/íû6¬Ç 4?6} 8©ÿ¾€­)kR+ÌŠšS“gðj—wÂàê’Í*Ý-»qXæ=1__ø´ûH“Å–Î/ì⸺–c˜õeoà,9 q\õާàéõ`÷znŸ.­»+¹Š‡~Ä®v¯>øÇw¯êw6WZÖåÙÖLü H?„ö+­CØS”ž¡:ŸY«%Ën¿.‡tšÂB€%ަøäýiߨ? èþù}môÍ£"<ýúô¾F—éçÿ׬ý¼ÿ‘R«üìÿ×þ<_e}o®É6 ¶P 9ÿ¯žÕé^ MSLðåýÎaˆÎ­m¼`p>v\ÿ ü«SÄþ6µÐ|Sw H²@ï‘Å‘A=ðzVgˆ#×¼k¢½å¬âò"Uq´óÞÇ×diÂiÎï]ÔœéS§8Ù;ký#GGñoÛßìúØ“Q#£ˆ$®OP·Ÿn}+Çþ!iúœÍÞ¤®RHÛc°$õ­?Ã~×5-jÛOÓ-ä*êÙ*WË ybp0zŸÄÏC§Ïªé±Ì­ÄR(hq’„nçîóÏ.õé7WKÒ¡Y*:Ý|Ïö/ÿ‚RÊ.?fÏû%žÿÓ%¥}õ_ÿÁ)?å³gý’Ïé’Ò¾ú®RBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¼sã>†Ú¯†Ù×÷³Ÿa^ÇTïìâ¾µ{yFC?1^>•Óβ|FWSj‘hêÁbe„ÅCŒü¿•Z96ê¤Ê«;Ò½Gâg‚®|1«?–‡Ë|¶@Èçžµä¬I5ü›e˜¬Ÿ0«—ã#iEØý— ^ž*ŒkÒwL‰¨ËMwÇJ®_Ò¼ÆÎÕ]êl}hfÇÖ«³cëS{Æ"“ŽMWw¤g÷ÍBOsHÕD îj’‘ä¨ '“Aª@I<š› ñÀª¬Ùâ¡»šÆ'Üß³wŒ-%·þ™Â“Œž¦¾¿<×ã–ƒâï_­íƒíe þUõÏ…¿j=>ÒÝSÄ«$®>PÀ×ô׆ž(äøL¢žKŸÔön)=šéCó^&á\m\\±¹|y”·K{ŸjWË?´—-¬|7&ƒþùðÜØ®kĵF‡=«G¡¤±ÈAÁ`ÀWÆž0ñޝã LêZ´›Û½¸®¯¼TÉ*äµrŒ‚¯´Eg%²O}{ü‰á®ÇG ^aXÇ[=Û9ie.ÅÛ©®×áΑ6»âÛK%RUÛÒ¸ %™ü¸”³Úûçösø_&Ÿ ×µTùÉ G"¿ ànÄñ7ÐÂÒ㜟D–¿ŽÇßçù•«-©VoV¬½Yõ§‡´ÿì½ÞÃþy.+jŠ+û¾(P¥0Ú)%ò?Ÿ§7RnrÝ…QZQEQEQEQEQEQEQEQEU¾ÿ)¿Üoå_Àíñÿ%çXÿ¯¹}×ßñå7ûü«øý¾?ä¼ëõ÷/ó ‡è¢ŠþÖ?à¿òmÚ/ý{ÿA_°øÿÿ}ÿ“nÑëßú ý€ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š* îm­W}Ì‹õbýhz+œ¹ñ„¬ÿãïT´‹ß™ùµ|óñcöÂø3ð–ÙîumNÞì ÉóÆçô&€>©'׊|Zø÷ðëá‡n5ßê+@3ä™»}~þÒ?ð[ÛÙ\i?ÖæÞøeUäRW#ƒü#ù×óóñçö¸ø½ñÿV’÷ƺ‘B„Ü¿)öÍ}·ÿ ÿ‚Œø£ãö»?ƒü%q$L,ÑHŒI¼ô?~@Ò³3ÌrOsNŽ9%qJY@I DyGË€Wïÿüïö4ÔãO>7ðüú•Ó3HÁ™¹I!Iþéìk²0¥ÓtÝå®)ÕtaªÑÓRΕñoðújÛ<Ä*4¸ !ì FzsÅyÿü%®YMy©¼/$-ne„l«ó+Èç¹­áwŒ®µ㺵k;te2\J@EPAÊœóÇLV·Ä¿ZÚj¥®˜ò·Úa’6ÚÄ. å½sIÞ¥õ,V”êÛ gu©þÈðJOùEÇìÙÿd³Áßúd´¯¾«à_ø%'ü¢ãölÿ²Yàïý2ZWßUÈHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÍx›Ã:‰´÷±½QówÇ5ñ¾jþî!LÃÉäâ¿A*­Í•­âl¹\ï ×ÀñŸe\_Gž¯¹Ym5ú÷=¼§;ÄåS´ucòzexØ£‚¸õªÅý+ïü Ñu–kË2Ë)çhà~†¾fñ'ÁÏhŽÒ?uØç·å_ËüEá¯d“•RÍtîí±úN_Än:))ò¾ÏCÈY±õª¬ùéWolní%0΄0ëÅf¶W¨¯€9Ó“ŒÕš>†’¼E'Ô%#¹Ç59äÖfÊ Ny5qÚšò~U\±áë­NØfHSpïÍtUͼWP5¼Ã*Ãþkiø,7Ä/…Þ<Ô< „ö.T‡ÿ­_øïþ ;ûRøº3b^Õ ©UÁýy×üCᄾý¥õï,e!¾¹;;ý+ó€>Ãñ×í¿ñÃÇÊë«_¼~` ùnË×éŠùzûÅÞ*ÔžûRº—q$‡™Øsõ5„°Ìÿq úZZ&«¨L µ·‘™ŽÊ€3^I$mÒ1cêNi Ò¾»øoû~Ð$Ž? i>o™Œn,¿û)¯Ö¯ÙÏþ—âMm£¹øÛÚx$©bxüÖ€?<%àxÓXƒFÐ즒IÛj‘ÏÔ ýêý‰¿àÞ"ñÕ¿Œ¾3A²Ð•–qßpÍ~ô|ý†> ü°ŽÛF³ŽõОâ%f÷9¯²ím-l¡öq¬H¼@€ 6ø[ð‡ÁŸ¼9†¼%l‘Cí ´#ÜŽMzPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP_Áü[g%ÿǯٶÖ2Wvâܰþ»Nçð¯ïz¿ƒOø¥+u½Aë]Þ—û)èà‰.®¤v"¾ÂÊÑ•¯cá'a_4ðÜþ­þ–8ëq~yUZ5mèx®ð;ÂÚ&ÝȳãûË^káÙcì¶‘Gî®+s+FV¾×äÙd<1^‹ózž�Æâ¥Í^«1`S©2´µëí±ÆQEQEQEQEQEQEQEQEQEQEQEŒªÃk ŠZ(Ì|Sðoá—Œ¢tñ‹itÏüRF׿oÇÏø$GÁ¯‹.¡§Nt¹9eKxÀöâ¿`( ÿcßÙ¹?f¯ÚøÚWžHö+È9=?¾ȢŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šü•ý¸¿àœº/íQ©Ûjq-«¤¥Ù¢œç­|“ ÿÁ~KiÖ§âKÈåÎJmÿë×ôAE~3x+þËðSÂ.¬ú„—{ç¢ýkí/†ÿ°ÿÀ¿‡È£ûÒô¯ybרôP£|:ð7‡ˆmJ·µ+ÓË@1]šªª…Q€)h Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿‚oø<›M¯Çßٶ͉ toÇP¡´âÄ{Í{5üÁ㺔ZOíû7^J2?±<`£þtåþDÕÓþ$nEFÔGñ#oð[Æ’Ïö}?É–Ï$­Ñ•{ êã!Æ+·ø‰âm#ÂöúN•¤»66ënŽÝûÌÄŽ~˜¯6¶ø‹$7mšÉdXåwå}AéšôxÏ\ƒM»Ñ®’&x|ëfœìY¢“¥¹ÚËÓšë‡/$¾¬õÝOk®mÿ©Â¯ÅX¨&ÇŸúøqý)áhê¿óãÿ“/þ0øCâ¼s=€?õð´¿ð¨|Uÿ=ì?ð!i_ç÷/ò5ÿ„ï/½ÿ™ÿÒþ1|EðöÒûÄ7[j[\! "\ˆ ¬¹ÇArs¢xÁ—ZuœÿÚ7ȯ4ˆ6Ǒ¢÷÷$× ã?j×*¸{B°å›’qœœô»];Å~¼¹×#m³¤S<\oWW eÇã]ÉÒ•Y{%ïké°J5•{gxé¡Ãh~2”ÞLj-á–ÊW Â5 $`œnR:ã¾s]GÄ/ØoÔ®­o£‚âÞÝÚHå„BAB;:õJðG‚ô˘õ½SS{›x°ÑÀ±g*rž˜úu®â_‹µ-KVÔ ƒ)·ŒdW¦~•ñ£þÓßB›ç«þͦŽÿÓ?Ù£þ Iÿ(¸ý›?ì–x;ÿL–•÷Õ| ÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¹ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (Èi›×üÿú¨ôdµ—Þ˜Òäs@w-0È?Ïÿª©™HÍFgÏ_óúPÿ5ÉÿëTm)³Œø8ÍB×9  O;ßõ£Î÷ýkÜã­BnOc@O8íQùÞÿ­b±óþ5ÛùÿõÐ=ltxèû@ÿ?þªçZðMDo= :´óÿê£íüÿú«—ûaÿ?þº>ØÏÿ®€:´óÿê£íüÿú«—ûaÿ?þº>Ø}h¨û@ÿ?þª_;ßõ®mo§ý°ÿŸÿ]t>w¿ëS‰Áã5Í¥Þy&¤YK *G¦z×µx§Ã>ñŸ¥\¼`·–âæÚE]û<Î^6H¡×YFK£*¢©N¬)Ýkù<¾;ñVÑòÛŸ+ÿ²¥ÿ„óÅ_Ü·ÿ¿_ý•zø?£àn×—=ÿpô¿ð§ô_úûðÿáSìñ]Ù~Û/òûÿÓþ7¼Kàï ßøŽ{É'´¹€„2Å‘ÝÜ„ýà==êž·ªhÞð…Æ‡áH¤}¬I¦y ;yW°¯8ñ¶µ«j>'¹[™]6~Sņw}+Ò¼!~u¯]É­D.¾Ç"D‡2G 'i>«Ž w)Âue jϸ9ÂŒ%7u¦—<×Ã~-Ö´½N+‹™šêVhdù•ÑŽԎدHø—á HÚŸšf¶»µ·£¢†IP²«ƒÈ=²*þ™ x+DhõÛ[«‰¡;’)Xчs“ƒÓ5äŸõÝ[UÕï¾Òîˆ#c…à1eÎO¨5.2£Eûmnʺ­^ôt²w?ÙÛþ Iÿ(¸ý›?ì–x;ÿL–•÷Õ| ÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¸ÄQEQEQEQEQEQEQEQEQEQEQEQEQEQEqڕϨIÀÍ+7sP—&òsP1$Ð1Ìý…DÒv5·?J¬íšLÒzÕWœ¨¨]Z¨ÒhËN@ªÏpAª®ÿ•Ry ]Åò ôùœØ>Ä ~5ýçWð=ÿ˜ßÜéß¿fùí9s£x¹qì[NÏéWOJ‘lЉ¸4ã*ßÀî&þÓ’âúyg´DêLä/ê+âŒ.îf°ƒE_±@aÛÞ«p«ž¹=ù¯*‡Ä:ê]ÿkÇvñ̬X Üb½1_Hø‹OÑ5½3I¸Ö,œ ûUºÛÚñHÜ>Üö=pk®2XJ4•Š©ЩNuß2ü´üO›—Yñ0 Jãý£KýµâúÜÿßUîƒá߀ÈÎÝHÿÀÓü)á]xûº—ýöŸáYýV§ó~&ßZÂ'àÏÿÔþ<¢<{q:ï†Þu[s È9:sÕ}kº5J²¦£o1:~ÊŒ*7u¦ðÅþ«£ë6ךl®ò¼Š d‘.â2¬¹ä†½ÃâuŸ†¶êjÖA¤‚ ~Ï:¿–êÞY!NíW¼=¨øin ×…4û#©¢’v6ç\udCÇ¢¼7âhÕf×nßTÉÝ‘2x ¯QQËì(;ëv[X¬¹W-“õ?Ùóþ Iÿ(¸ý›?ì–x;ÿL–•÷Õ| ÿ¤ÿ”\~ÍŸöK<ÿ¦KJûê¹ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€#pzÔL21VÈÅFËŽET¨’E\eÏ" *Z¢Ã¨ªÌ¼`Ö“GëUÞ<ÐSŽõM×µl¼Yª­{P;©Æ*‹.85·$'Yá>”ƒ"sT¤F'5н¾9ª¯jO4ÍÉ&©É]3ÚûUsg“þ€99!lñTå·|Wbö\ôªÆÈƒÍqjÄñP5‹±ÉÍw†Ài?³Ö€8„³u8«±Û6x®«û=iEˆ À[v®¬D VÊÙñVÏŠÌHÏZ¸¨XÕèíJ𴶏4Q㊻*xí»U¤·ÚhÓqëR¤‚¬¤'4ÔSŒUÄ­*CÅXHèN•ešDާTÇ&€jdœÒ&¦Uì(£“Šœ SUqõ§P ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯àÏþ‚+ŸÚömIº Æ£)Ó™Py•ü Áæ¦óþ·ìÚ¶ë[Gñh_s»M㊺nÕ"Ȩ¹ ÑümYiÿ®ïEտвßîÝä¬åb‘ýâÏ9î;×ñWZ×5k‹I.ó r†VDÊPà&;`pyùË1žbËp®w0ûêà×Õ^&ºŠ ;K“ÅvðÌ×VpÉx“à.8lŽ„¯'Õ*ôç¹®¥N›ÃÕ§6ù—å§Cåu·à~òAí¸ñKäÓY?ï£_B-ÇÂR ÿgYÿßç¥óþÿÐ:Ïþÿ=gõUü߉·Ö£ÿ>ßÜÿÕþ=<]®h¶!ŸOÕ£³¸µY3\&ý§<•#++Æ!×<.âÀEö8ãýÄvŠ-€ò/|ukʼs¢jÖìšü/ö{€<¹pJî”Ï@ÞÝkÕ|i©hï5MHµ¤sίkæ|­òš@E?­w)Êu%M«y’éÂ(TŒ¯·õêx×…l¯ß^²A¾Ú&CÁó~ g®kݾ+k:mœz¶•¨%¬‘´SVU É#!æ3ÔÜæ¡|EZhº%ä1_Oò«¼¦”ôÚ%ÇSéÞ¼kân‡«XjZ†£´DÞ\¤ÁR{0=5 Ô¨¿g¨åzõ—´V²~§û8Á)?å³gý’Ïé’Ò¾ú¯à”Ÿò‹Ù³þÉgƒ¿ôÉi_}W Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ”¥Fcô榢€*4dTF"{V†ëM*JËh±Ú¡0ç·éZþP=—ÿ^˜Ñv†`튉­±Ú·|ŸoÒšÑ t xÚŽÕZz×Eäû~”†zŠæ ¡=EDÖ˜é]I¶ö¨¸=¨–û}j7°Ï5Ö}™})¦×=¿Ïå@—Øi>Ãõÿ?uŸc_OóùQö5ôÿ?•ºìraúÿŸÆœ4üô®«ìkéþ*QhAþ*æEŽJZÆ+¥ÃÒ³/¥9ñežEJ¶ƒ½o-¶z [â€0ÖÓ:Û â¶<ŸoÒž‘sÒï©– Çý*ÂÃÒ´|ŸoÒœ##µ(¤^µ2EéW@Žiá  ¢?Â¥XŽ:TøZZ`OZ~éEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWðkÿФ/ûBþÍÂã‰ãsê?³¶þ;±Šþò«øÿƒÎ-®o>:~Ͷ֭µŸHñ`Ϧ_MëWKJ‘dTIÁ¦V^,Ò$՗χM“UVÄsËß»¶[¦}ÍqáñäÖ×ÚÖæÉq)=ƒ¦ìvÇC^oýªÁý‰-¬¦íܧ–‹±=6Œr\×Ó>+Öåðu¶“«:‹¨lã†è$ àr ó¸Á®¥'^œáQY[•(,5Js¥ï^ú|º*‡tþ´»!þéýkè!ñg@ÇXG·ÙGøí/ü-ûÑà/ÿcY{ óñýgÿ>õò?ÿÖþ;¼Uñ ø¶é´û—Û+ddžÇRW'Ú©kVº×ÄOͪX^µà”mPç NLdt+ñ_ï˯O}¥ZIx’`:Â7k»ž¤§(TZ]Hq¥ P)^ZV<¯Ã>ñN¥­A§ZYM¬ŠÏ+!ASË38ê+Ó>)øö*ïYÓl®–ò #1 NèÊ– ð3Ö¨è¿WÄR¯‡nînmr©²>c,~èqÔëù×+ñá÷‰ašÿX´î XÌcÁ0•S¸¸Îv㜎1Þ³V§Eº—&êV¶![Goøsý”à”Ÿò‹Ù³þÉgƒ¿ôÉi_}WÀ¿ðJOùEÇìÙÿd³Áßúd´¯¾«”Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¨=ih ìZ6-:ŠiE¨ü•©¨ |•£ÉZšŠ‡ÉZ<•©¨ |•£ÉZšŠ‡ÉZ<•©¨ Ä`S¶-:ŠnÅ¥ 4´PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP_Áü;=½·ÇÿÙÂ[£„þÃñ€ç¹oìà?R zü Áæ–O¨|vý›m“8:G‹KÔ.í;'è:Ÿjº_Ĉ©g™üaé¿$³ìfÔ&Š<ìm ßv7céXþ>ð¶¿;ÛÞ {³ ‘&̹*ãrÈ=Aõ®Z†~8ûBØÚéï2±Â̘ò ömùÀë“^ŸãMvËÂé|&yì-–ܼ'Ù:œúǽu©N­)¬B²E8•XK «wÓåø 4=t€VÂB;-¿Â—û_ÿ |Ÿ÷Áÿ ôÁñ›QQ´¥îG?ÿZ—þF¡ýËßûïÿ­Y{<'óþ_·ÆϯÄÿ×þ3ñÔW·±i¾ ¶ÙÌÊ‚H™·ÄXà1ᇨ­_ˆß ®Lš–«¥ÜB^ yædøD'zàÃøzÔ+*/êåÉ·U,WgnÇûÿÁ)?å³gý’Ïé’Ò¾ú¯à”Ÿò‹Ù³þÉgƒ¿ôÉi_}W Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿‚ø<“P‡Løûû7]ÏÐhž0Qõs§/éœ×÷¯_Àïüc§®§ñßönµq•þÇñk0õPÚioÓ&´¥iw&vä|ÛÄ}¯ ‚Cjo³†drËÓð®“Å>¼Õœº<É;ù^d@¶Ï6ù•”žã¡…oð‹X»“67ÖFÄ’~ÒóU?ÚïnÚºˆ~#Ó4…Ót÷ÑÙ@ …œà_ïƒÒº“›§%ŠØ§ìý¬ë­þî§">üD °lŸ¼Oñ¥ÿ…]ñþ|[þþ'øÕ%ñî«þ ÿ¾¿Æ—þÝWþ}¡üÛükŸ›Ý›ÿ·ùÿÐþ.<}ãûÉü_t4È£ KJ7㎀ƒÕhhž9ð…ÕÍú}’H™b¸1r žREߨ«*øwá›ÿ\ÀډӮЪ¹‘ ‘ºÃ Á½zŠ5+ßx ÁZG†ämBFuyçmݯ¹®ëUS”ªü&\Ô¥N¢½í }ám…½äZ‡ˆ5[f±Ã2Á“,€íÚGË’9®wâÇŽ&½Öum:Ehœ;0Ï ¸ÂþŸáÿêð_Dºï•ug+*ÉЬªÇB9™Íwß¼áÉ_V¸Žñ¬îí-äb¬›£™Q \cXŽ;Ô+N“öK™U_Y×GnÇûÿÁ)?å³gý’Ïé’Ò¾ú¯à”Ÿò‹Ù³þÉgƒ¿ôÉi_}W Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿ÿø<ÃR]+ã·ìßvÃwüI|\¾Ÿy´àL×÷Á_ÁüYeÿǿٶ 9Fñsàô;œÄ~ Ò•ý¤mܙۑÜþíüi}É[Äöû¹ˆŒ¾›½kÑ|Má #T·ÓçÓ®¿ŸšÙ¦ÎÖŽNJ± Ö=¿€¼r~Öu–·¶- ˆ™‡ª«gi>™¥ñ÷Š×u…¦ƒ‚`Å»æ+p?Ôñ]KÚB”¾µª.N3«…ºzß¶Þfgü*ÝHòÚ‚“Ôon?J?áVjô°ÿ¾Ûü+“ÿ„¯ÄõtÿaÂøKt#ºž¢²âð߀neþиµ¾Rs[FјÜ÷ýå_jÀø‰â]CS¹µ6ñý–L"'d€£k¦1S•wti&«Õ‚¢¬Öïoøse~x_þ&s³ÿõéá\x_þ‚sà?ÿ^¼dÜêâî@=2ôŸiÔçî_ü~±öø_ùõø›ý_ÿ?¿ÿÒþ$~ jš®§âë…½•ÕTEÉPAxc¯5뿵 Í[À7Í« ºŽÎU†&—èãæŒžøê=+¡ñtž‡ÄsØxšÊÚæÖ'"'•ü¶\ŽUYNHÏcXž8Ô5¯øCäÓü?g•”I¾$¶å ó8aÇÔ×r¦éÎu[¹“¨ªR….[m¯Bþ‰¥ø/I™u½G3ÞÛüÊo5#`sxí^ñ[WÕõM~ú=BF¬Lê à6å?7¿5—áV¾Óµû±»3Gåí',IÁêz0"¾ˆøµ&ƒ :½†±go2Ç¢ÚIl‘ÈPœ) ->$ñ…%ŸI•níÊþåmð©…9d £åoö@®åMB¤¦ßc7RS¥ r–š›ñ6‡5ÓZéé«€rñ¯ï©MÜgé_=|T³Õ#×®¥ÕÕ¶IhY³´ü¼àžùëKáMX½ñ žŸ¡A ¼I‘¾E`c!‡,Hù@ï_A|Iñ“i¨êZ£uÛÞ#ÄD%*d]¬è¿ÃŒäSüjOŸOÈ·BªäÖçúøÿÁ)?å³gý’Ïé’Ò¾ú¯òøoÿ{ÿ‚½|)ø7¡ü=ø#ñ÷U‹Ã>Ò­tÎÞÃLxá³ÓáH!¶KW“1BŠ£y,@ä“Í?Bÿ‚ôÁpµýb ÇãÞº×H¨Ëý›¥'æf͘À5ÎéÍ4¬8ÚIµÐÿ^:+ü”ü_ÿ×ÿ‚½øCY}:ûöšÖü°p¤izK;c¾Õ´éž•1ÿ‚ÜÿÁkµ Mo¿´n¯©!BÐìÓ´Ÿ—ï!cʰ¨öSØŽtÒgúÓQ_ä=¡ÿÁyà¸> Ö!ÐôßšëÜJá ÿfé@§?1|ÙpWã_ø.üïÁZ³X_þÓšÖÁŒ¥é,ÇÔíïIS›W.^ëQgúÑQ_äÈà¶ðZ½G@“^ð¿í¬ê1&šv’2õFÿCÊ¿µyÞ‡ÿâÿ‚âø‡WƒDÓ~=kÒ\ÊÊ…›¥å2pųd0St¦º}ëÛ¡þ»ôWù4øçþ ÿwð6´ún¡ûOk;¦i,ÇÔí[N™éGü>·þ W©xzm{¿´†±©&ÂÐyzv’ºòcaö<«cµÊdóÆ×謵þDZ?ü‡þ ‹®êñhzwǽuîdp†?ìÝ,2pK±p|צxßþ …ÿwð.¬tí_öžÖÔ`c^’ÎO”Zt½%NV¹R÷ZGúÈÑ_äà¿ðZŸø->­áéuÿþÒZ¾§Âbòôí$fAÏ–ÃìyV# ¯3Òà»ßð\}kS‹DÓ¾<ëò^ÊÛ<¡¦i{•ºßè_(É£ÙÌJJI´®ÝþN¾9ÿ‚ÞÁ]¼ªÿgêÿµ´Šé¥é,Äÿm÷§Aÿ¥ÿ‚Ñkz Úç„?i]_RC6iÚHÝ"óå°ûUˆÎ3Ög!s­Ïõˆ¢¿ÈŸIÿ‚îÁqµR ×ãψöWThF™¥oŒ“‚\1€=kÕ|wÿ·ÿ‚ºø Rû±ûPëH˜Æ—¤³±ÀÎm:ÜÑìå¸ÛJÈÿX:+üŸmà´?ðZ @—]ðoí+¬jI±¼­ºv’3 òØ}*ǶkËt¿ø.ÏüWÔ¡Ðí>=kí}+0 3KÞßxû’sÒg M3ýu(¯ò„ñïüÇþ çðûQzçíE­"í/Hf-˜([N@=êkø,¿üwÄ>}´¾±¨ÄÑ¿”WMÒï”dDàÚeXŽ”ý”ÙêëE‘†“ÿÔÿ‚äkðèÖ¿uó}+*?³4½ÊÄàîÿBàZõŸÁkà®_u%²×?j=j5*:izK37ñQg’Ï4½œÉ-õv¢¿Ê>Ïþ )ÿ›ñ‡å×üûLk’ylbÙ¦é2‘²eIíë^M¦ÿÁsÿà¸ÚìZ=·Ç¯5ô¤!ƒû/K oô>£’CM3ýrh¯òñïüŸþ çðòõ-|CûQëQeŸø•é Åñó iÐ3Kcÿ“ÿ‚Ìø“B“]ðOí5«ê‘lo,¦¤.%"9³Êí‘OÙÊö2µÏõo¢¿ÈÎÃþ ¡ÿÊÔ/âÐí¾;ø…µ)ϳ /KÞ¯Ó‘ö.{žÕìßà³ÿðW‡7‰mâÚ›Z…v¨bt½$±“8U[BH ÆirJ× £ýY¨¯ò—Òÿà±ÿðYOhrëž ý§5F=Œ#Û¦é ûÐ2±¸6™RÝ«Çôßø.wü#P¿‡E|B5!Øiz^ô|ãlúwÏ¥ÎAt®EþSÞ?ÿ‚ÍÁ\¾Ï^#ý©u¸AU /HvÞGÌVÓ$ÆiúOü+þ !âÍMwÀÿ´î±©D*ãMÒT‰€ÈÔÙåKv£’BæI\ÿUê+üެ¿à¹?ð\ËÛØôH~>ÿ‚ÊÿÁ\þË x“ö¦Ö¡ Šþ%zC7™QVÓ$ÆhP“$·?ÕrŠÿ*Mþ ÿŒñvŒÚ߃iýfþ¬¨F™¤©Y€Ê¤Šm2»zñkø.Oü*öê=|yñö“·–mF—¥ïWÎ9ÿBû½óÓœ$†¤žÇúâQ_åQãÿø,—üËá±·_þÔÚÕ»I.¿ÙzC72¨™`¦èÿðXø,_‹ô95ß~ÓúÎ¥«Û¦i Â\eRE6€®}iòH\Ê×?ÕfŠÿ#Ûø.Gü&kÈôvøó⨻l6ÃJÒüÀùÆ0l°G|æ½³Ç_ðXÿø+¿Ã˜íŠÿj]jÙÞ%2©Òô†"R2È ZBôÍ.IèÿUj+üª´?ø,7üÆ:,šß‚j-cP‰AQ7HR’‘ò,€Úew3^)mÿÆÿ‚åËvº<¿_w=èp’ £ýp(¯ò­ñßü3þ íðâiTöj÷Áb?à®ß­­§ñ_íK­Z—L ézC)dU™;zRP“þ©´WùVøsþ ÿñ®”úÏ‚¿j=gP…2/IVŽR U‘Mž@cÐ׊ÇÿÂÿ‚å-çö-ÇÇŸÿiòͪézQ}ÙÀÇú=sž”8Iþ·”Wù[xçþ ÿxøsii7Šÿj]jÙä‰ ëý—¤³0ËF€Ze¶÷¨<5ÿ„ÿ‚ÀøÛL}[Á¿µ³} ‚¤3HVI;DŠm2 ž3O‘…ÏõP¢¿É ø.ü,Þ.uñãÄI¨ï1›Q¥ifMÙÀÇú ž¹ÏJ÷?ÿÁa?à¯?ôë;¯~ÔšÕœ³D­23Hb²’Ц[é(¶&ÒÜÿTª+ü­<7ÿÿ‚ÀxãK“Vð?íI¬ê1 *@Òô”t|¢EkL¨'¡¯ð\ø.LƒH¾øõâÔ˜ÚÙ4­,¾ìàmÿBÃëšZÜ.õ¹¢¿Ê߯?ðWïø,ý.ÊïÆÿµ&³a4°#ÜFtÍ!ŠJÃ&5Ó,Tu÷¨ü1ÿ„ÿ‚½øæÁõ?þÔÚÍì1ü¯ÿÍ!Z& íóÚ ž3G#ekŸê™E’?ü>ÿþ —mvt}Kãψ¢ÔUÌfÜiZYbÀàÿBÁ±Í{Œ?à°_ðWχúE–£ãÚ\°yaV¸GÒô‚RF1 ™b;ÑÊ÷úê“E•…¿à°ÿðWŸؾ¡à¯Ú—Z¾Hø‘F—¤«ÆÄ|»ÔÚdxÍxÄ¿ð[ïø.=óhÚŸÇ¿Ç~Žc6ë¥éE˜ç Sýæ ê(åbº?ÖÖŠÿ+ÏÁ^ÿà¯ÿô[KÆ_µ·e,У\#iš9Ù# ìP-2Ä:¯áOø,/üãÇv ©ø;ö¦Öïa‹å›V’¯»½ ¦B“ÞŸ$‚èÿTº+ü“n?à·ð\?P}Sø÷â¿I ^@Òô²Îs…dÿBÃ+u5íÞ/ÿ‚½ÿÁ`>èv:Ÿ?j=nÂY£VKÒÉþY¨™f6¸ÏõD¢¿ÊÏ¿ðX_ø+¿ŽìÛPðoíM­^ÅË þÊÒRHÏbèm2žõã/ÿ»ÿ‚äYÞ¶‘©ü{ñ wÈí·]+K.Ä)Oô<0nsE˜ëeE•׊à¯?ðX_øvÃXñ·íC­iòÏkˆ›KÒ–íÒ5ÿDËuªþÿ‚ÃÁ^"ñ¿í?­é²Îî#“LÒ?tÍ÷P¢d¶;UOÿÁb¿à­ÿ-žïÁ¿µF·z°ñ*ei *ïkL•÷ùXê™E’•ÿüßþ £jsèúÇÇßGs¬‰ézQ2®~Vý ‘é^Ù­Á\ÿà±ÞðvŸâOþÓÚÞ—=Êož4Í#1gî¯üzd±GjV`ª þV~ÿ‚ÅÁ[¾ D× ýªµ«Õ‹rei),jxÞQ­2Tw"¼Tÿ‚ÚÁr´-^ãDÖ>>ëñÏ¥# ¥égÎLü¯û0ÁâŽVúÖQ_åy«ÿÁ]?à²ðu‡‰|sûNëzT· ¾â)tÍ÷[³±qöL–#¨ÇOÂðXÿø+Wãy|ûUkW¾Iýêei)"/÷¶5¦Jú‘G+ýSè¯òUÕà¶¿ð\oëµñÿ_Šâ)JÆ£KÒð¼dYÀñÆkÙõOø+¯ü3ÂÞ±ñ_ÿiísJ–â?2xeÒôÜäüªÑ3¼ŽØ¢ÌõC¢¿ÊÃÁ¿ðXÿø+OÄíàßÚ«[½0s4Ù:JH‰ …kO™FrH¯'×?à¶?ð\ ëWZ&¯ñÿ_Yaˆ¶éz[yÑÿ &,ˆ$ŽÙ¢Ý@ÿZz+ü°5?ø+üCÂÞ±ñWŽ?iÝoKžxüˈdÓ4|BŸ-söL–aÉ«3ÁßðYø+WÄ$žýªu»Ñoƒ<ÙZJJŠˆ#Zr¾âŸ+ýT¨¯òXÖÿà¶Ÿð\?kwZ¯ñÿ_I¡˜¤;t½-„ñõWŒý‹ ‘Û5ìºüÓþ áYø³Ç´æ¹¥Ëp Ë ºf j~à?è™ÜGj\¬õB¢¿Ê§ÁÿðYOø+_ÖSàÿÚ§Z¼{~e‹û+HYGV Ö€²Q^a­Ál¿à¸~Öît]_ö€×Ñ┬%t½-„ñ“ò´dYa‰ôíEšýih¯òººÿ‚¹ÿÁe¼=àKøßöšÖô™îƒI,éš@òŸÝƒ›LïaÉ\qYÞÿ‚ÊÁZ¾ >ýªµ«Æ‹™bþÊÒRUNì­eñG+ýU¨¯òZ׿àµÿð\_ ë×z­û@ëÈÑJD4½,¬ñ“òºgƒ‘Ô†½zø+Ÿü_Bð5§‹¼mûLëšD—wŠm3HZsiÍéŠ,ÀÿTz+ü©ü!ÿ˜ÿ‚´xÿzx?ö©Ö¯%‹™!þÊÒR@£«*µ§Ì;ñÚ¼ÇÄ_ð[ø.'…õÛWøÿ¯!ŽB q¦iEgøYØðsÜv£•þ´ÔWù]Kÿsÿ‚Êh¾³ñ—Œ¿i­sJ–åZY!›KÒÊ‹?!lÚgsqY^ÿ‚ÌÿÁYü~Ξ ýªu»Ù å‡û+II¬ªÖŸ0ñÚŽVú­Q_ä½â_ø-oüšíÞ‹ªþÐZèòŸý×LÒÙgˆôd"ÏúŠõ·ÿ‚¹ÿÁeô_ÚøËÆŸ´Ö¹¥I>dx¥Ó4|G8BÇì™ÜÞ”ùX®õF¢¿ÊÁÿðY¿ø+GÄx¼ûTkwrÂ7IÒ´”}ÙZ|À{Wx›þ ]ÿÁð·ˆ/4]Kö‚וa“òeédOèÈE‘ã¨õ£•Úàô?Ö†Šÿ+ƒÿtÿ‚Ìi¶ñŸ?iwHyË;C6™¤‘ öLîn²|!ÿœÿ‚³xþI-üûUkw—üÏÒt”” ûÌŠÖŸ0ž(åatªíþKþ&ÿ‚ÖÿÁp¼+â ½Rý uà‘¿ú<‹¥éEgŒôe"Ì‚}EzÂÁ]?à³:gÃûoøÓö˜×t‡¸fcúf»!uŽm3¹¹ÂÑÊÙ#ýR(¯ò¡ð‡üwþ ÍãéZÓÁÿµNµwq- Ò´”¨êÈÓæÀæ¼ïÅðZßø.'„|Cu¢êß´º±£ÿ¢Ì4Í,­ÄGdF}Gj9]®?ÖŠŠÿ+K_ø+¯ürËÀ0øÏÆ_´¶½¤¼ÌÍåM¥é ¶ÀvͦrOAYžÿ‚ÏÁXü}pö^ýªõ«»ˆÁf„é:J;(êP5§ÍnÔr°º?ÕzŠÿ&Ájÿà¸^×îtKö‚×D*ÃìÓfi[gB:©û2;Œ×ªØÿÁ]?à³vß ñ׌?i}wIyÙÜC6—¤.Ø6»æÐ[œ 9XÏõI¢¿ÊwÂ?ðZ?ø+®ZÇÁÿµV·ys—hN“¤Æìƒ«&ëO›N+ñü·þ ƒàßÜèú‡í®ýœÖ—ÙšVÙãaÔd@`x"ŽWkþ´WùYØÿÁ]à³Öߣñ׌i]wHyYœC6™¤.ØGlÚdØcšÇðü“þ Çñå¬<ûUëWWQÆÒ´˜Ý”ud ió§4ù$ú²Q_ä¿ã?ø-wüÁž ¸Òoÿh=t[¡ Ι¥™긳?0þíz~ÿyÿ‚ÐÁðñ|qã?ÚS]ÒY— Úf§ÈÄ›LÇ ¤¢Û°®ªþRþÿ‚ÒÿÁY¼ypú„?jjîî<Ÿ éZJ;¨êP5§Íjá|eÿ¯ÿ‚áø;ÄwEïí¯}—åk[ìÍ(¬ÈÞ„YðúÑÊíqŸëEE•F“ÿ}ÿ‚чëão~Òzî’dv+ºfå£fÓ#' ÅexSþ UÿcñÅÛižýªõ››´˜[JÒcf¯—ºÓæúQÈÉæGú¶Q_ä»ãø-wüÁ¾ ¸Òïÿh-{ì ¶¸þËÒÊL§¨Yà87޼UûIkÚXg>TréšBæ?Ö6m2==irJö «\ÿUz+ü¢¼)ÿ²ÿ‚²xêõ´ ~Õ:ÍÍò‚D ¥é(ddùe­0ØôÊøÓþ [ÿ¿ðwˆ%Ón¿h=xÙ²«[Ü3JÛ&~òœYœ2žÆŸ$· £ýgè¯ò¤Ð?à¯ÿðZ[Ÿ‡ÒxëÅ_´–»¥—G.™¤ÐóHÙ³ùFxµ‡áoø-Ÿü“Æ×Í£ø[öªÖno†vÀÚV’†LuØZÓ }¨ör2?ÕÞŠÿ%ÿÿÁkà¸> ñºuçí¯'U{k£¥é[dïE™”ñŠï|;ÿ„ÿ‚Ôßxoø—ö×´´ó1 ͦi º54‡6™ÓÖ… =î’¹þ¬tWùBxgþ mÿcñ¥ñÑü/ûUkÞÿ O¥i1™=£&Ó }³\ÇŽ?à¶ð\ë¯csûAk­dèÞçû3JÛ!þ$$YÔrH.¯cýh¨¯ò˜ðÇü'þ O©x"ø›öŽ×´¥í·ItÍ!wÄ£ç”î´.xsYÿ‚ÜÿÁY¼e¨Ã?µF±sÎÈ—¤¡”ŽÑ–´Ã=œ¶d«õþK¾8ÿ‚ØÁo¼®µ”ß´&ºÖ2F¯ÑÓ4­®+)ìk¼ð×üþ Q©xoø‹ö×tÕ2b“LÒø”e¤lÚd/aëG³˜]Zçú³Q_ä÷áŸø-ÿüÆZ‡ö'†¿jf{ã÷"m+IO3B1´Ã{zÖŽà¶?ð[ÿk&Òëö„×ZÎD ÁÓ4 ¬‰ g =1G³•®W±þ´tWùJx_þ ÿ¨Ôüqã?þÑúö–€·ItÍ%|Ä/'Íh@x½bxsþ ÿgñ~¡ý‰áßÚŸXšüä$-¥é)æÚ66˜cíš=œƒ™ë E’ÏŽà¶ð[ÿkfÒoÚ ^k# ÉÓ4¬þ$}¶gkÚ»o ÿÁc¿àµš¯ïôm¶È… ôÍv^ÿ‚ËÿÁk5Ï_xÇÄ´^½¦ÅªZ‰4Í €‘ù´ÈUéžô{9^Ãm(ó\ÿWª+ü›t?ø.Oü›Äº—ö‹ûTjò_1Äq¶—¥"ÈÝ•Ú`šÆñ×üãþ àÍYb“ö‚×^ÆXÃ%ÁÓ4œ ?Š7ÅŸÊGlõ£ÙÈI¦ùOõ«¢¿ÊÁ¿ðY¯ø-f¿á ÏkŸ´f»§C·ß¦é#ÍÀË76|(õ¬Mþ ÿjñ6¥ý‡£þÔÚÃÞžKÒQdoî«›LOŸ²˜œÒ¹þ³4Wù)xïþ uÿ¿ðV¤‘IûAk²ZH™3J $cb,ÎÒºÁgÿàµþ!ð•÷‹õïÚ+^Ómâ*¶ÅôÍ$ Î v¬ÁØz^Î{ ´—1þ°´Wù0è¿ð]ø+_ˆu¢i_µ.®×ÍÂFú^”‰#u\Ú`“Yž:ÿ‚ÞÿÁp<©G ß´¼ö’FœéšVQ÷£lYœOÙN×Ó|§úØÑ_äéàÏø-üËÄ>¿ñfµûDëº}½¾Ñn_MÒGœz³|Ö`…QÞ±ôø.§ü³]Ô±4ßÚ—W7Œv¢¾—¥*9ôWû& =¨öS’M£ýhè¯òJñ¿üþ ƒàÍE#Ÿö€×^ÎHóç7J¸ê‹2®‡Á_ðZŸø-§ˆü7}âgöˆ×l-` -Ù´Ý$ ˜çv7Y”ô*SnÖ’Qç謥þJúGügþ Û®_Oý©uo¶9Ú«&™¥$lÜð$6xÏKÆÿð\ø.ƒ¯#~Ð:ãÚ:s3iºWÉ á‘±fp}=¨ösµÁ4åÊô?ÖÖŠÿ&ÏÿÁjÿàµþ%ðΡâ_ö‰×¬-í¶­»>™¤3¼A6ŸuG|V6“ÿÛÿ‚·ëWË£ØþÔZÁ¼sµU´½%Q›û¢CiŒæe=ä“k±þµ”Wù$xãþ ‡ÿ¿ðeôK/í®Ii"s7ön•òÈ:£bÈãÛÖ¶¼ÿ³ÿ‚Øx“A¾ñ¯ûDk–6öøX´Ý'7VÆë1òÎhT¦Ý¬7(¨sßCýgh¯òLÓ?à¼ðW-cP]Çö¡ÕþÖí±ôÍ)cfì¢CiŒš©ãø.?üÁ×yŸ´¸öò)Ý!Ót #U±fqíG²®;ÉDÿ[ê+ü—ü ÿµÿ‚ÙxŸAÔ|I«~Ðú奪/ï§i M!<›?ºzÅÓ?༟ðWmZûû&ÛöŸÕÅÑ;T>™¥*3zû& ?c=<Á»7ÇúÝQ_äãOø.Oü Â71>?ë¯léóKý›¥’ƒÊ6,Î2:Øð_üïþ eâMP×õ_Ú\±µµQä»éºHÉž@͘ù@êi{œÜ¶h¨{Kè­EþGöð^Ÿø+¶¥ý“í?«-Ë«¿LÒ„džó>ÇŽOJÆð\Ïø.„f¥ý 5Ç·q‡—û7J"7þëbÌãÔJ=”íÌ §%§úâQ_ä¡àŸø.üÇÄú]þ¹©~ÐÚåª §MÒq4¤ýÕ͘ù@’+.Çþ Õÿy¿¿þÊöžÕ’à«¿LÒ„e¿»¿ìx{)Ù7Ô’“cýpè¯ò7ñ‡üGþ áVŠføý®Énà‡s§i?»mlYžPkSÁŸð\oø-‰t›ýoPý¡µÛKkTS¶›¤+“ÐfÓ M?cS›–Áuìý­ô?ÖÒŠÿ#+/ø/üþúóû2/ÚkW[’v¨m7J–ôó>ÇG‹?຿ð\ ˜æ“ö€ÖÞwþÎÒŽÇôlYpèi:SK˜/ï¨=î®mþHþ ÿ‚äÿÁlüO§ßk:‡í ®ZYÚ§îå:n“‰dÎ6®lÇg&±lÿ྿ðWûËѦÚgWŽv;Wv™¥ye½7ý“êiûÙ6 ¥'íØÿ]*+ü‹¼Wÿ×ÿ‚àø_Ë’_ÚãÆw,­ý¥~íÇ@H³=GCZ~ ÿ‚çÁlüK§ßëß´.·kiic•´í$,’žˆ ³üÍ/eS›–Áxû?k}õ¾¢¿ÈžÓþ ïÿ„»½þδ¾®²±Â–Ót¡=†ï±à}j_ÿÁv¿à¸1Ë/Çíqán$q§i$#úô>„r ”ù\– ä ôlÿ]:+üŽ|ÿÔÿ‚ÚøŽÒóS½ý¡5»kKX‹ N¤íwì£6™¬Ë_ø/Ïüæëû<þÓºLxRÚf•åî=‹ýe+s0¿¼âµ±þ»4Wùø›þ ¹ÿÂðâ¤Ò|}×#ÄŒ4í$ìnÙÅ™àŽA«~ÿ‚íÁlüEo}©ß~Кݭ•¤%–oìí'JH ‹›1yÉ(T¦çìí¨î½—¶¾‡úåÑ_ä=ü÷þ %ר%ý¥5ˆå'h'MÒ¶gÓØñøÔ¾$ÿ‚ðÿÁp|>±Êßµ§C‘# ?J!tÎ,`ƒïG²Ÿ/2Ô³Tú³ýw(¯ò0ðü{þ aâHo/îÿh]nÚÒÖ<‰N¤áß²ŒÙóïYPÿÁÿà±’Ü‹ý¤µ„”¶ÐN›¤ìÏ¡o±à}höR²“ÒãjÒpê·?×’¿€ßø=n¤øÝû7Efq#é>,Qø¾›_‚> ÿ‚òÿÁoô%Y_ãþ´Ñ󽿳ô¬)ê¹ÿBèGC_%|fýµÿm/Û×ÄúW?l¯ßxÚ?ØßA¦Ë{okÀo‚y‰Ù¡ˆ1v’6ŒUS§5YA¢dײuSV?=Z2²˜$NŒî íÞ¾‹ñN£6‘k¥u"‘å´í‘Î2 ›x>¹Û×ë ÏÇ‘Åp¶íql.ÃmK‰aRAíûÞqZåüw¦kîÐßêjòÏšÝpÇÍׂÃVÐŒpôç*o›úêiRõêSek—Mލx£Àª7OÀöoð¥ÿ„§Àßô Ó¿&ÿ ðãyÇþ;G‘íÿŽšÏëRÿŸkî7ú/ùøþóÿÔþ)ümàïÚø’mdÚË<¨ è¥ö²Œ` kÔ#´ñ$º¿Ù%¸†P£r)r޼`9>¢›á¿†4Õ5˜tùlf³Ž'V–iD‰Tä¶î‡ŽF3šõüO´ðÇŒ.eÓf¸i$ä­»õ9êMK¼é?o¡vTª¥C[ÿ[‡‚tmOÁ¿õGĬMôñMnò²¬@†“iåwp=êLJ~-§ˆäµÔd·š‘$x¬„ô]àgžœÕ]FÎo‰¾ºÔt«ç™®±.>Y"™~a`€7gå5ç^øWã{ívÞÆM>kHà•Y¥cQƒßѺv5NS‡*§ª%F^yVvc¾"øÄÐxõÕµ’æÞdT —1:‚G#‘ÅzçÃí#SðwÃMJ÷Ä;¬>×2Krü®ªƒ—ÇQš_|S°ð¿g¸Ófœ¼çw—nÀ|½2Kq“Ž)·ör|UðuÕæ•{$Æç÷X¸;^9”äFø8ù»J0SrƒÔ—R¬¨Æ3^ïqt/Œkâk•ðÍ¥ü–óÜþí%x¬„œÞ~nÙ¯2ø—à_Áâ95¥µ–æcÝ—1ºðU€ÉZ«á…~7Ô5Ë}>M>k4Ž@ÓO"”Ž5C’ۺׯdøƒñ_Oð—Œf“NžyE_–Ø€p7ñ“SñÃ÷ºYQ¬½‡¼GðÛCÕ|ðÛVÕ|GºÀjG5´R|®¢ wJGUÎqêqNð÷ÆX¼Sx¾³Ô^Ö[ÝG<‘YôR㟛 Í-ÌñWº®—}$¿h_%–àí’)¾ò£û7cÓò¯!ð¿Â?êšå¶•&Ÿ%¢G"4ÓÌ6E+[yàŒ1UÍ(òª{£ ŽsªìÍOŠ^ñT>*:úZËq‘,E‘ ˜¤N/ w½?ᧇµü8Ö5O)ÓÖù£’Ý$Xy]e#ªŠ¿ñ7âΛáK>™-ĒʪB[2 `3Ï-Öª^Ú·Åßß^é7ÒH×Q˜JÜœ<3¸#ö Ý j0Sn/Ry§*J2ZwÃ_í|Ktž¶Ôä¶šݤòÄHOE.9ô×™|Yø{âÈ;Yk·)á‹mRKYgo&;™" ŽÇ€¦AÏ'€M ß|}¤_I#N¾KGsòÉ ½U\ôØÝˆ¯Ñ> |BÔõ¼>tÙmpBË<Š(ÔdÞ~VÀäm曺²ŽÄòƧ4ªèÍß‹_üUІ¾–Ò]ÀbX˜Ä¦C ‹ÕX ‘ž ãšõ/„~Õüðÿ\ÖüH§Ç~Ñ=ºJ ?îrZR§‘ÁëÞ´¾&üVÒ¼âýÖÜÍ3"®Ëb  ìOö¨]—ã'ƒ5'Q”µÌfÝÖë‰ œò¡ú ­Œn¬¹›[‹šn -i܇ÃÿôÝzå|1o©Io,؉.^ ¨äð˜>`Lšó‹ÿ|X¾*_­¬·–Ïüµ.a‘F ²ŒPk ßþ!]êðhO¥MÇQ,Ò(H£U`Kyã#ôÅ‹Wüb$²žâ[‰QTGj@bŠÞäñÏj[¯x»(M:z™¿¼;­øOÀZÞ³âD:|WÞY‚9FýÖI—iè1Æiþøý§kשá{}JX%„Iu$ FIà ç 5r9‡Æo__éwÒæhÍ»­Ñ! ”ò öÚßÞé^ üø…}©Áá×Òç¶ä &‘vÅ^K™ 8È#“‘Tî­Ê Fws:ŸŒ?|\¾'‡ÄqÛKw B!F¦F†E<îQ“†ì{תüðÖµàÏkúç‰Õ´û}M"ñJ >èK3LTòÎ3×ŠÓøŸñgHø}âxä´žâyŒkKS†`€.æÝÆ éšu½Ê|dðn£¨é·Óþú#i2\œIm#ƒ°68Úäc"—ºž›å'V´3<=û@izýúxb×S–ÞY•Ô‘˜ð|ß7@Oæß¾øµü[oℵ–òÝ-Å´¢0\Ã"“Ê9Ãu :×-áÿ‚oo­ü9&—-³©U–W\AfO0ñ€9æ¾ø­ñcHøâØ>Ïss=ÃĈ©m€Î±¦F9<;ÒÝ{åYBkÇø-á}kÁÞ×|Aâ4:|7±F IrŒLG&]½B\Sü=ûBé:Åêøf RX$ˆ’òH€F'€¦AózkA.¢ø×àÝFçI¿˜4ðy#¹ÂÉo# ¦ì|»¦E|÷ üøu{†¿²&òIb(Àë'›Ñ†9\sEÝ’†Áh»¹½N£ãOÃ/·ŠíüL–²^A>TžRï1H½ (ÉÃu½à‡…5ÿø_\ñ7ˆâm>ÛP†(áŽa±Ðî2í8ÀQÆO5¿ñSâÆ‹ðãÄVÑAsqqp°GK_¼â5 \ç $u¥²¾‡ão„µ+Í'PŸ{ÂÖÓEuÄ–ï ÊÙ£oïQÊ“ºÜ\Ï’ÖÐÎÐh­S¾·Õ¤‚G>RÝÉî<æcpñšóŸŽ? ¼eqâ»OÅm%ì[‹y– ]¡rTdí|äÖ¸­àWÄ›‹”ð°Ò¥‰Ûó‘ˆUGY<Âv•ïÇ5ôßÅŠÚ'ÃoÚ„¹ž{…·ŽŽØòˆT!“Æ2´¯ÍÞðÍrÿÀß ëž𾻯xа¶¾‰#eÚ3¹¥ÚyGz_þѺ&£|<5©4NçÉKÇ„l'î€dûÁ{dÖÆŸ«Z|jð¦£q§ßΆH^Úhîø–Ýäi8 '½|ç¡|ø–×xbmhÜ’Lò@Ï2‰˰㠧ueYI¾sµøéðÃÆW^%³ñDvò_[Å‘(ˆ'ê¨çkA¯Jø áMwÂþ×|Iâ(ÛNµ½‰bŠ9”¡wR[Í ÜáG|WIñ_â®ðÇV³T¹žâçÉH•-ß B—=‚ä~4Í3[·øÝáMBûO½¸FòšÞx®ð$¤#ñÁBz†—5Ér—"VÐÂðÿí! jªx]59awaÞ¼CËœ ÉŒ€O¯>øíð¿ÆWþâ$¶’ò+8M¼éó'ÎC•\åXta\ð+âT×QøMt¹–I?tÓÄs7ÌèW×Ôÿ>*è_ µ]:4¹¹¸-ã·E¶#Ì›ÊP¬ç?(u£Y&¤U¹exœÏìûá Âþ×üIâšÆ×P¶XaŽPQЖ2m<€£½K ~Ò~½Ô‡†aÔæ‰äo)o^åäð™Ëm'Œô­í Ä¿|1¨j}äñ±í§†ëým³L»QÎ8(Oq_.h_þ' áð©Ò&YGîÚ`¸€(8ó<ÃÆ02;ѪID-Û‘èŸþxÊóÄúoŠá·“P·µ€Ã0L†&É!ŠŽJ°èEw¿|â é׊|C iÖwV–`ci\Ûö· (ïŠê¾,üSÑ~ßé¶âæâæî;hàHíß/–—%³òä~5“âoÞÔ.t»éÖSÃ<7`,™øážôZ<ÄÝòÚÚ:'í/áÙõ/øFãÕ&‰‹yBôÃû°sŒy€n Û5ÀüyøYãKïéþ&† 5 {XŒS,#{!'p“hÉ*Àõçz/À¿‰Ö÷qøatyšC˜ÚMŸ¸ÆGï<ß»´Ž}kê/Š_´_„³évr^Msumk²­©Ì’˜ÔlŸáϵq|Åhàr¿³÷‚üCáË sÅšôagwh-¢IAF–MÛÃ…8áõ5Dý¥<2Ú¡ðÂê“!Ýå Ó1ŽØó>öÐxÍoxÄÖ_¼?}ua}q©AsÞ Tcï&î¤WËš?Ào‰–ó'„Æ‘)”æ32®`*xó<Óòí#ŸZzÅ.A%vùÏJý >øÇT×ô¯[Búœp´W ÞÑ»‰vŽJ¸î+¸ýü¯ønÓZñGˆmÚÆÎæÛÈÎ ®và§ ;×OñCâN‰ð…´›k›¹î.ൎÙÓåh”+ž6äbŸáÏiÿô+û‹;˘eXZ+ˆ.Ž ÀpFRzšV5ú•í±Îé´ï…×Wÿ„djS+nòMé„4jzcÌûÛG­p¿´Âïjº¶—âkx^þ8Ú)Ò!½”¹ÊÊ©VëÌ4Ÿ¬®¢ð²hóI8&3".ae'‰<Ï»´ŒúÃâ§Äái6·SOsom²­¯úÉš5›=0£tù‹8¿ÙÏÁÞ ðôß‹¼AXXÜÚTYÔÆgÁ‚¶#íZWí3áxµcáA©K«ù"óÉ 6qþ³¶ƒÁ5ÑxcÆVt‹Ë»+˨¥‚3ͽßúØVQµd<¦zšùOOøñ6ÖìxV-&idvhÖeLÂÊljD™ÚWœóF±K”[ž«ûBü3ñާ¤x‚Ú5ôôx§Ž»)“ ³%¢ºoÙÇÁ ÐãÖ|[¯[5”öfÚ5˜3>rSƒ…ëšî>)üEÑ>[h¶“]Í=ͬvj-°d¢P¬G m9¤ð,¾4éWwV—wQK Mö÷_~YWk.zã¥\×¾¡±Ìé´ß…£Ö†“S˜2·“öÑcSœ}ÿ½´tÍqß´ÃOëZž‘â[8dÔa³Öe„oeßÊʺ‘ÜW”é_>%Ø\ÇáHôy¤”±ŒLƒ0:Ä‚_º99ç5õ‡Ä¯ˆ'Á½;DÓï®æžòÖÙ-‚Úÿ¬˜ ùˆ<ü£¦M´ù‰{ÝGìãàè3êÞ2Öí¤°°’ÊK`&R†iåv©˜'=«OMý§<3g¬Â6Ú¤êÑ7—öÏ$4qœãïõÀéšé|+ãk?úMÔÖw·0ÜC,ö×@ # ¢E+ò²ƒ_)iÿ~&é÷iáˆôyî¤f(²Æ¿¹‘IâA/Ýy©wŠ´E»w=Wö„ø]ãj÷Hñ%”M©Ãd­ç$9s‰e˜¬¤w¹û9ø'ĺ%î§ã rÚK+²’Ô ”Æf‘ÎS pHLdœWqñÇz/Á] Ãú]íü·WvqZ/Ù>üÒF>b?ÙÕxïNøÓau5½åÜ3Á-ŵÖ‘¤ƒh™6ýàZv5ú†¼Xæli¯ Øk á“©LZ'1}±aG¦7ýì/µqÿþx·Ä—Z7ŠlUµHlƒùëÎÁdÁY‚õe#©äö~&è÷ áxt™n_s*ÍæºIætù¯ª¾"øëFø3¢h6Z…Ô²ÞYÛ%²¥©Ý$®€n¶Lšm;ƒJ-rœ7ìáàïhÚŽ¥ã-jÚK;³{|̦?:G €¡¹!qÉ­{_ÚgÂúN²þ}Fbao/íixã#¶ÿ½€{Ž•ÑxGÇÖ,.Îêî à‰–{k¼oDq·ÌR8 µòÍŸÀ¯‰:MÙðí¾•5Û»²¤Ð®b‘ñ!qŒrÙþt;¨¥²“ÔõŸÚ៌þîK‹» dµ js$²(ù‚žásŽiþøƒeñšÚk«YîážÆ3ö‹[Â7¬n6ù¨Tá€$g¸¡¥~aÆö³9[oÚ[Âú6´þ“Q›t/啃|qŸ¨ô®kö‚økãA£kÚr>¨š|ŽóÇÎÅ%’u–^9#§äv¿>#h×ïá«]&[²ò8IãPÑJŽIdû `ò }SñÆzGÁ_ x~ÏR»’[» u´×™f•AÜ ôÚ½ûTiÔ³ƒýœ|âM'Z½ñ–¯m%Žœ¶¯fR3?ÝUS‚võÎ+Rßö˜ðÆ“® ¶¥+XÄn’ñÄ{üýp=GJê<ñÓã5´ÒZÜÝÁqkó­nþø†ß5 ü¬yô¯•¬þ|Iѯ‡¢Òf¹y%uŽX†èeVðþ«ÞÈ÷š}¿‘¶Û ÒKœí\ñµzRx'â5ƈ¥û%ÕÜ6‘³Ëgw€â"6ù±•á‚“F—¸¼?´·…ô=iü3&£34,c7)™$/|W3ûB|3ñ‹¬tmKÝ«Çc#Ï*Bw³Ç0Ü“ þ%Àü3^QÀ¿ˆº¢ú¦•-ñ’fòæˆf9QÎUÌŸup ×Ó¾7ñ6“ð?ÀÞÒµ«É%ºÓm–ÛÇt’K’ì‰Ø„Î=©Ýõ ìéài¾%¸ñŽ­i%ŽŸ ¬°3Ê¥<ç“…@§“ƒÎk¡OÚ_Âú¶þ“PšFÌMq^dp‘ÛyÉ}«¤ð'Ľ;ãCs{Ų%­ÞùG1 õÚy s_+CðâO‡ïäЭôɯ¼É¢žÝé!á·ç …ûÛ©j•Zç°|~øsâ¿iúOˆ4ŒêÑÚHf‘a;ÚH¥ÁYPu`;ã¥Zýš¼â]7Å70Õlä±Óíí%že1‰šN5 ‚py¯@ñ§Š4¿‚^ЬuÛ© Ý„¶Çt)9(˜ã œSxâ}§Æc,vÓÝÛ]Z#<–—}L_tÈ…[ ƒÉî(ê4ÿ´¿„ü7â h6õÓ=ÞžžN-ŽéVmÞZz/~)<ñRËã,m Åݽݨ.Ö—xÜñ ÆËÜ‘U¥Àç§ý¥¼/á~_ ½üÒ´RÌ±Ãæ¤'?ß<ñßmsÿ¾ø»Ç>Òµíޱ³åÍ42–TÅ·¸í^5/À¿ˆ¾ÖgÓm4¹ïÄ×$3À»ã•]² aÂú×Ô>(×4ß€ß 4'Äw²Í=YYmˆy ²1o)L&pi]õÎfÿxªËÇ#Æzœ¶u¼é4³!Íó¢Ä¡°[æ9®¦_ÚWÂþñ žšþi'*ÒÇšyºŒwÇJè¾üW²øÉ1´¶¸½¶¼´S)³¼Ú ‘HÊðÛG%kåÙþüDðþ·sca¦Í¨Çss#Ásn7,É#2ßÀFpA¢íl°~Ð?ü]ñÃ:V·¡9ÕÖÚsvËÜÓC"ñ"âÛÜv¬ÿÙÏÀ^)³ñÊøºöÊ[-:ÆD’ʦ?3zíXÔ62r}+ÓÉyÞF:´ex%z{QÖàbÞ~Ò^ð‡ˆ_Ã^Ï+Å!Vx¡¬Ý÷}« ãç€üQñºn¿ Iý®‘L/ Äwáqà=v÷kÅïþüBеë«+-:}F;«—–ÞâÝ7¤Ê䑹ÇÜažs_Rx‡W°øð³C°ñMÛGw§©Ü6÷ó$bþJヷ<š.ÞàyoìÛàÙøý>мG|ºf6§ÝËÍð'˜²¤‡8fþ:Ò½–€{OÇïø£â‚tý_CêÂ+…¿ÙÜnmÝN}§ªõ®wörð‰í<}‹ï­%±Óôä”M$¨bó7®Ñ†1'’;W«ø‡WÓ~|'дÿ]¿Ú´À|ÁÌþd¬XBž¥GÕSÀí~0Ý > ‹Û{ÛQæ‹kÌ~ú5ûÍ‚Ê:Ž´ì®f§ûGøkÁþ&›Â“^M,‘IµŒP‰–yà‘‘€rqÒ°¾;øÅ<e«èR¶±²áo?uËO n@z•î+Æõ‚<ÑüO}§M¨ÃytóÛÜ@¥ÖT”ä+à+Ðæ¾•×5¿ 4{ݲ]Y33$9vó%9&w¥ä–þÏüYÄ o\ÙÉe§ibFšy£hÃ+)Q †ÆrOé]Æ«ûFø_Á¾#—Ã3^Í+Fä"Uƒ'8,zíZ¾ø¹gñ~çû.Þ{ÛkËrdK[Ü~ýrc ãp|ã«|ñö‹âKáa¦Í©C{ró[Ín¦A rH ÙùèwSÛ`=ƒãÇøÅiñ‚ðhqË}ivƒÌŠ ½»gUä„#£Û­xŠ~ xßJñ†£y¦ØM¨Ûê7>tÀ¦@ÁÏÜl}Ò§Žiiûg){DZ|lð—‰~)|=‡UðÜÿÚâY’ò=‡æš5á€ø×º×Ÿüøwâçø‘¦kíe-ž“'q<èÑ@¤Æìd¶q^ÌÍÁƒ6PøÂèÛÝEp÷/\ÉJ~X—=ê§>2Yü\½ÃÏ}e|Ÿ<^•Ùr¨7V_â p 7y1.d­AâOÚÃ~ñ]Æ-̳7šÌR„¢NFsÐAY_¼âO‹ŸaÔü3sý®&ž;Ȉ—*Ê3ühz­yŠ~ xïIñŽ¡©i¶êVÚÁž C&wõ±÷9¯ ŠAðK॔7¹û5Ô7R]Éd3ÄfÆÈSn8ɧw&ÓCvš<_à_ÃïMñ NÖ–Êk =.O:âyÑ¢UP9,KtÅzω?h øÅsøz{©gbåŒPÄ&Xwz’88ô©<ñ®ËâÍì~Y¯¬îÇÍ 7xÙ8^HR:6;Wx³à·Žt¿jZ–™c6¥k¨Ü™­çL‡Ö7 ÷Y¯jº½Ñ­_¾{7Æ_ x‹â÷ÃeÔü-uýª&‘n£UàÌ‹÷ükýÚó_Ÿü]7Ä3Xk ¬­t™„ÓÏ4mÆŠ+–ÆKg¯c‚4ø'ðvñ¥ÇÙná®Þ8ÎæÌÀX†8ÜzÔøßañgPà q¨YÝŸø÷Šï]Æß˜¨eû¯Ž@=hÑ´Ø×T‰"C#+óDáyF¹£eh†¬öo‹¾ñÅï†-©xfäê¢é㺅TàÌ‘ýè°z:ÿv¼àÃ\üDÓµ4±žÂÛL•gžy£h„j¼²å€Ë7L ÷»Wà·ÁD3Ÿì·+p×¶^3cN7ŸJÊðGÇ ‹WÉᄞþÎå°mã¼Ç—>v‚§‡ÀïI¤Ú»]ñ§íáÏøÂãG–âY‰¿“ K/–§€}…bü[ðþ¿ñƒá„š—…®Æ®·®—m82¬Gæ‹ièëýÚñÿ|ñ½·Žu sJ±ŸP¶¿”K°¡‘•¸ÌoŒ#â½ëK³> mñÌÿa¸{³{$HC<°«ûíŽ}ê•ÛiŠÖÔð‚Ÿ èþ)Zg±|MÒ5Ï ®o|/{öÿí ²[ÿ “É?¼€ƒÑñÚ¼Oà÷Ã_ÞxóK’=>{´ù’yçš6bXù`Kc’8Å} içáÁ)çû ò]5óÄ~ü T*¯ýtlg࿎Ö¯¢ðŒ3j2˳¼ySÎ܃OjM§-Ä›WKckâǯü:ñ…Æ—%Ô’4ïæ}ž„¾XcÁ ð ëY´ÍkãÛÿ ^ñ|ªðºXÆrÐ2ŸºÃ°5ãß>xÆê#Ò¬¥Ômu¬²D†F‰ÔhÝTåzpkÛü9¥¿ÂOƒ—W5—ìSÜOöÃà^jŽ?ý:Õ&Û|Ád’ksç¿„ÿ üi¨xÓMŽ >{!a4SM4јÖŒ†l±Æ8õ¯¢~!|zðç€|gsb×2Kç¹A B]¡¿ˆƒÀÏZç|ñÒÃâ}ü^7öMm%Î3·dÊò¤öÝÞ¼¿âWÂGã›ßi–2ß[Þì¡S#Æé€Ñ²2J[/pæ—ïëŸô½oãGÂË«ï ßEu† ü˜”ýÖÇAÞ¼ágÃ/ê^0ÓmàÓç°3Å4ÓË`XÎ[,F3ƒ_Cx_G—áÁ­BçÇR}‚âòì^˜A­ãU¤àðÒzV„~xøqðÇÆú‹¬,¡Ón,þÇ4rM,Ñ´kB‰cžÃ¾“ø‡ñ¿@ðЧµ’êGóÛÌò!ŒK´x†àÚ¹¿üyÒ¾ _EáVº¾±3–ïs&SÙ>æxÅyŸÄσþ1ÿ„ÖïÄš]œ·ö×Aò‡˜ñH£ (Áê +À§yKÞÐõ¯Zjß>Þ_x^ûí¿m]†ù K«û).˜Go%Æ<™XýÔm¿wqèM;'f÷%6®£±ÕüJøÝ xÆ·Q½Ë²Ý9‘mâŒK´÷Ê·=«'Ævº¿Æ†—×^¾ûh¿l!¾B3¸Ââ’+Ê>)|#ñ{øâëÅZUœ—ö÷‰8‰|Ç‚X×WC^·à͆õ¯¿Ø%¼nÌ/÷¡ÐN>éoJ5m¦(¦ž§Îß~øÛQñ^go¦Ïfö³G$²ËF°ÎK8:×Ó?þ5è|a<s#‹ƒæyF$ã¹ žEr>øó§øöö/ BÈÎB[Ës"Fì­ü@µyÿÄÿ„Þ0>4ŸÄºe¬—ñ\FˆÆ%iZ ‚Œƒ 3Øô4•”o~ô½óÖ|Y±ñ‹áÕî¡áëß¶‹Ø¼¸[$ˆCYOÝcÛÖ¾oðÃê¾%Óô›M2{9-¥ŠI%•5·á™ËcãÒ¾ðNwðÃáV«©xÉŽŸ&¡"\xcŒ}æÇBÙàu®ŸôßÞÅà÷¼¿±8ŠÞ[‚<™ðªÄr¹è ïŠ=ÖÓ)J)ò-ÓâgÆ}À>2ž#tò ‚ȉ™ß ð2y¬E«|høc¨\økPû`¿‹Êˆ?ÈVD`Æ_á,8µäÿ>xÆOÍâ-:Ê[¸'‰#q ™$†DJ²Ǩ5ê¾ðýïÂÿ…:Æ¥ã6:|ºŒÑÜ\åâŽ!·{€x,HÀÅ?yé-ˆ´yT“Ôù¿Àÿ |u©x†ËI´Òî-f·’6’Ic1¬;bøÛ€5ôçÄŸŒº/Ãÿ\@×o'Úo"$dã*Ü šã|1ñçMñµÌ~ûeý’ÎvA5Î R1èŒöÍp¿~øµ¼e7ˆ´»I/až$‰Ä+½á‘8*ʸ8=AïCº^á£÷¥ïèz¯‰F©ñ—áõíÅÒÝ/“?ÈREçÉeþŽ•óW„>xïUÖí¼?m¥ÜÚÜFé½äŒ¢C±²\¾ñŽkèïør÷á¯Ãm[Zñ¡þÏ}A’D…±½ xÀtÝÐ ÆðÇǽ#ų§„f½¿±ŠvÃ<ø03…Ü8ž(÷[N@›WQW;O‰?t_x¶Uk¦q8ȉ›ˆ.Cp9¬¿ͨüeø}yáýCí+s·Eqå˜e\7’Êppéë^WñWá7‹ßÅ’x‡Mµ–ö)#X¤eÞ¨eínÄq^‘ðû×ÿ þkºŒÇötšœ‘̹â@§22ŽA$à{bzí=ˆq‚‚šzŸ:x7áŽ/¼Ae£A¦\[M ±™$’2‹Æ±|c`×Ôÿþ.èÿü]1.âä)F‚Máx.ÊxƸO |uÓüYuƒÞîþÑ.Љ˜Y uPOC\ŸÅ_…^.“Æ/â}2Ù†Xáä‚Tã J·PE ݸS~ÒiVÐõ-jmGã'€¯®ôÿ=n£0F®<³ƒ“/EÜ8ó„þxßS×-|;o¦\[\Fë½å‘aÚr\¹`}ké?‡>¿ø{ðçXÕ|^~Á& RD†O¿q—+ØžÕ…áÏz‰æO Ëw}iÃâ¹›I'…üJuµÍ¸“”T£twþ-é^ñKF×M!™TyQ “~Ñ‚ä'½dj—:—Æ^ê:ÿÚRâ¶T`¡” ˆ‡péÚ¼¿â·Â¯É⑯i¶Ò^§”±L#S#Déꃭ؎+½øgá­KáïÃísZñ†t×Õ#»àH©É•—¨Ýž3T“rq{ãMJSæÿ |1ñÞ©¬ÚøvßK¸·¸FMÍ$l‹Ò˜Îp>\gƒ_YüNø±¤xÅÎßki<èã(Ð>òª¤!¸ä޵Áxã¾™âYÓÂ×·öPÎÂ8®$æ"Ç… *×é\¿Å¿…¾- O´’ñ)É^HdŽTrÊÃ:[Aû#GûÊ‹Û+•«Þßü`ð=ý΃~.â#£,Ã/ÞØËÑw¯˜¼9ðÏÇ:Ž«máÈt›ˆ.P¨bèU"ÚFX¾6àu¾Œøuá}GÀ>×5¿gO:’ Ž$T‹“#(éœð aø㦛â ×Ã7·öL|¸®dÁˆ“ÀÈêžõME´ç¸£*ç%tvŸ¾(éÞñI/RèŠñF¡÷² !¸Æ{Õ û»ßŒ^ ¼¹Ñ59^3‰Ç–`ò— Ïb+̾)ü*ñkø‹ûwMï£1ˆ¥ï‹À;AåXr+³øoáM[Àž Ö¼AâÅ:pÔ#DŠ ϲ2I‘—¨™¦œœœe±4ãIN/Sçá޵ ñá{m.â+£òèUc?ß/ /Ps_Y|Løaào‡7lÌéãPþaEœ†ãîkÏôOŽšf¬ãÃ77×Ö¶³]> #'¸0\ãšÂø«ð¯Årx…5½2/BB!™"G×8`¿{kuT¯v ÓÔÒ\ÕjGë Èô{ÝFïâ߃﮴‹ó"¼-lÇ–`ò¨Ê8úó…ð߯×Z½¿‡Kž+¤uV,„,dï/Óhêk蟆¾ÔüàwXñZÔ’12|®¹¦eêašæôo–Äéá—¼½·‚cåÇpç1x‡P§µ BN.£³%:nq¢®Žóâ?Ä›x_íLåã#PþaA†}­Ç^õ•6¡¨|XðµÕæ‘zdSƒËq°Ã#rQÀ ÐóÏŠ ¼O&²šÖŸn÷¡!òfHÁy#eä¹$«AÚ|3ð¾§àëZç‹·X B%Ž(¤ù\¬|™{LóVœÝG±Ÿ³¤¨ª©û×>xÒþxÖóTÃPiw)tÄGÊEÁÉbÿw ×9¯¨¾$|C´ð>¿kÆ‘Œ)‹‡óZ01Œg½p?Æ«NUðåÅõõµ´¿º[†aå/÷r>ðSY¾x®MZOOï|¨¼©’!¹‘È`£’­ê*U£Mº:šÍÊ­HªêÈô95ÿŠ~»½Ò/Œ±˜šßËp#6ò8;r½·@¾fÒþøÚîú?æN·9Ûó! ‡ûûñŒ¹Í}ðÃÂz§‚<+®x‡Å€Ù FÙ ‚ pˆÎó+£«žÑ~3Ùê,¾šúúÚÚF¬ìG– 8BûŠmB\²¨ìŠΔ§ :º;¿ˆ¾?·ðF¹ ½ágGªâFB³x#=Íeɪê_|7u>•|dQDbqå˜]¾îå7@Ep?þøžm^cO·{Ï& ©ÎèAÊÉ·©G¨®³á§…5?xsZñŠÐØ¥ìa“‡;NL„g8ER•GUÆ[rRTUX¿{úèxð÷Æ“_ÇáÈt«u…Z2çïnÆÝ£“œ×Ò¾;ñÄ>Õ-a’ìÉ*[Ç ‚æAÎsŽ•N-v÷ÇV/,yKe!à#apÚ¯Á\õ=«›ñg‚µ‡0ÝYfìª ùyfec¹dQÜÕøáýKBÞ#Öbk8M¬–ñ¤Ÿ+Ìïè:áG­iÏWÛû>_wúêeËAaý¬eïÁìyx𯈖ïû),&y¶€ÙîÁ¯cñN¯'„cÒ­MÎë‹Ke‚m˜mì½AìBŽ2k‘±ø€Öký—ö»¤¶'o˜¬¹ÙÝE,ðŽ°æ´ÍÛF™aÌJ?Ì® rÁ¾µœ)Óœ°ÎïòÔÞnu*›%ùýûËñváT(‘À¼•4¿ð·®?ç£ÿß•¯0ñ8°ºÇýqoñ¥ÿ„[ÄŸóãuÿ~[ük¬â¿¤iõ|ôÿàÿÕþ2¼Uð§Å¾$¸ºÐb[¦}«,!Õ^7åle}®ÇOÑWᯀoâñ,ª//$I^˜?–ˆÜ‘Ææ&½»ÃÿòPõ÷Ïòâ¿ãÓPú'ó®÷Ú¬w1j•! RzhršÄ[}râ=WûE¤2°Xå2U'½OcÜŽ•/‹~ø¢çÄó]è1¥Óœ bÞ¢DaÇF#*zñ^=eÿöÿõÒ/ýWè>—ÿ%QúåYR“ÄAª jÿ³U^Ë©á&„~øT)•îöHähc`þTp‚HãsøW9 |Q³×¯"ðþ¨·6–ó¸Ž)ZBʸ]ëØé]gÇùjŸîæ+æ'þBzý|Áÿ¡­UIÊ”ãl*T㈌êTÜöïü#ñE÷Šç¾ðò-ÔŽ«ÐHä^HÁÈ®ïCÐÛá—íQ<[*ÃuzÉ#Ã1" ‘ÆâkÛ4ù)z‡ýu?û-yÇïùêŸõÍô*®EM¹ÄÇÚÎt£N[w |W´×ç‹ÃÚ°¹´¶ÄqÌd,ªO ¹{*µã¿ƒ¾(Ôø…ðsÅ—Þ.’ûÃÑ­Ô«EøËa®M«¥Ý¥”̱Ç?™¸)o»½} ôéSüCø1â½CÅMªxmòC¤ÑU‘GC`2‘_:iê­ÿë´_ÌWéþ•ÿ#ÝÏû«ÿ ŠÉ>xÞEÕJ…OÝŸ>øO²|)ð.³wãi£‚îùcÿG·˜ã‹œ±\Ä×áÿZf­:hº²]ZXJÞZ\y…•wp §÷}qÚ½Wö‡ÿV©ÿ^çùŠønÏþA±½)ÉŤ‚œcY9Íj};ñ࿊5/6§á°—’ˆ’)¡Þ@ÉÑ—q•‡7iúÅÂhzŒwvº|Ì9üÂB–8“û¹ëW¾$|ñV«â¿í*^M䈧ƒxYòºnÀeaŠùEÿ_ªèb¿T4¿ù(Rÿ×(¿ôQê&¤k$©4àx<#sð£ÁÝߎ$ŽÞêù÷°sQäî$p“À¯>ðçÇ7X¸MSŠî×M‘„bäÈH@Ndþîz×¶~Ð_ò ÕëÕ¿|¥È#ñ_ýS“qiD¨B5"å#ꯉÿ|U¬x©5 „¼¸Ž Ðo ã« c†RJî~øFëá?‚uÝGÇ%½Þ£jmÑĆ(¡ÜÅœ¯‰'½óKÿ‘þOúáþ€µæ_ÿä¬ÿ×£S²WfÏ•SèxO‡¾;izÅÊhZ”7¶ºl§jÜ™7Ï™?ºJØø£ðGÅ:ߊíõ¯ ùwsÅl°M +í¤‘îûÁ¯”ôù§û©üëõƒKÿ‘å?ëÒýjcï+3I?e4à|ûàÝü$ðn¹«xêX ¸½€!9Ž(òK¶ =…y÷‡~>iZŒÉ£ê^[é’°Uºó <dþîz׸~Пò.k_õá%~yi_ò/CþêÿèKJMÂÊ#ŠSNR>¯ø¥ðGÄú׊!Öü.ÑÞÊ–ëî ûz«¦î`yk³øqà[ß…ÖõßÉ­Íí²Ä-‘òEÜd|px½óIÿ‘²úô‡ÿ@Zá>?È/Uÿ¯*ì¾"9Ý”: þÐZ>¡p4‹ë{Û}*FØ.¼ÂpÌÝîqÚ¶~,|ñ&½â›MsÂÍåÌË ÐUfLnI#ÝÁOJùNÿ‘^/úåý+õ‹Iÿ‘ÒÛþ¼m¿ôJVp“šjEÉr;Ä🆾Ô>x_[Õ¼s$vÓÞÀ¨°+dŠ2\»ã€}yh].òìi6×±i,ÁМÆòŸÝÏa_Büvÿ6«ÿ^üš¿64?ù×ýßý˜UI¸ÚÂII»ŸbüYøâx’Ó^ð©Žîxmü© .Ù)${¸ ƒÈ®¿áµ/…z³®øõã¶¹½ƒËXÕö‘ñÀ>‚¾ˆÒälµÿ¯ô®ã·üƒu/úô›ÿA£•'s77Ê¢|× þÑZEíáÒo-¯aÒYб!;TñæyÝÏQ]'Åÿ‚>$ñˆ¬5¯ 4w·Ðy/‘T¼mó$±îàä•ñv‘ÿ"Ì¿õÁ¿~»i_ò2iŸõámÿ¢–¦šjFrIrž ð“ÀŸÂÍ\×|u"ZÜ_Zy+n®’$%žG àA^o ~ÑúMíèÒ'µ½‡Is´] :pËþï­}3ñŸþAšŸýxMÿ šü´Ðÿä_‡þ¹QJMÆÑ@’›“‘ö—ů‚#ñ'‰4ïøDÇy4þ\—Ïù’XËpr#5Õ|)ø{ª|)ÑõxöHì纶0Çn®$aù™ßiÀéÀ¯ tùiŸö‡ÿ@É|vÿe÷ýyÉÿ Õ4¯ÌBm®Sæ= öŒÒnîΕ5­êé$”ûJÈFÕü¾ëžÂ·~.|×¼Q®iÚï„äŠöxm˜™Â!™$Œ±Ã#5ñ¿‡ä\?õÉ¿ô!_¬Þÿ¶‰ÿ`»_ýSç¤hÒ‹V<3á/Ã[áfŸ¬x£Ç¤÷vfÞ+upíåç{É&Þ6ð+ÎôOÚCHšé´Ãk|4‚Û ÚÈxÜGýßé_S|jÿUßýxÏü~UøoþDãþãUIòh$ïsí‹ÿõïë:G‰|,W“[[l0»„2Ã!±– ê3šë~|=×~Ùjþ"ñ÷•i-Õ©†;páäæwÛÀÇjö¿ ÿÇLJÿìkÿ¢Ö¢ø×þ¦ûþ¼¦ÿÐM%ÍÌ>‰(i´¦’÷¿ÙBÒôé å>Ô²Æp\GÜJê>/|×|]ªiZ÷„$Žö{x?Õ3…2Ã'̲!n õ¯‰|=ÿ"´_î¿ó5úåáoøûðÿý‚í¿ôSÍÌ™G…|øm®|.‹VñG YÏshÖÐ@;”$;Èø$ ¾•æúWí#¤¶ ÚBÛ^$¶ÆºI8.#þèëŠúçã/ú‰ëÖãÿ@¯ÉȾßõÍÿn)r…®}½ñ‡à®»âëÍZð”±ÞÜZÂq8O:Þ\:J…¸'ÕIÍtþk¿ —Sñ7ŽÌvrÜY½¼6ûùSó3¸\€ ÷Oÿ­ðÏýí?ôKñwý\¿õé/þ€Ôì¯s;»Xù Gý¥ôW¾:ZÚ^¹Ct$Ç9pÆk¬øÁðW\ñ•Þâ/Íì°@q¸C4üË"ãpî+á_Ȧ?Ýzýzð§ü{xcþÁpÿ*#ï&˜KݳG†|ø_®ü1“QñwÌv/-œAn3°~]ßiÀ+Ï4ÏÚ[J]Aô¸,ï¤Ò”k¤“oC‚Á;_\üfÿ7ÿ¯i?ô¯ÉO ÿȯ'ûÒÿ:OÝÑ {é¶}¯ñwàΩãWÑ”’于M£ƒ†eNàzw®³âçÁýKǶÚµàÛˆï'¶ ,1Èâ?>Þnw#®>îkâo ÿÈãþºMÿ¡ýNðü|ÿ`Ø¿­%®ã<à¯ÂÏ|=Õ®ücã –d[É yŠÒ>ñË0\€¯7¶ý¥´¸µy4› ;Ùô°ì’]$›:YSø€¯´>&ÿýqý×ãç†ä'ûóÒ—»°p|YøC¨üA±Ñ5ïÜEvñ4)#ìó¡—¸-ÆðxÁ­oƒ üKðû_ŸÆþ=òìB[M ´Õ¥•¦%€à*šõŸ‡¿ò)ø?þ¼SÿB®Ãâ·ü»¸ßú Ó¶œÀ|qkûIiVÚ̺FŸg{s¦£”’â'*8<•N⺟‹?ï¾"éZ»à«¨îå„5ͲJÂ1sê“Àu#ø§Áßñåsÿ]dþf¿O~ÿÈ¡àOû¯þ†Ô“{å¿~x§ÀzôÞ1ñÒÇd±Á4Cæ+I#J0K8 =k€ƒö’Òtíf}+Jµ¼ºÓc•£–â'ÙÈûÅõÇjûcâWú¸¾ÿ ×ã—†?äwÿ_S:²Ð,}Ïñ[á%ßÄÍCñƒ.RåâÍÄ 3y~|2ŽÅ¸ØšÒø!ðŸÅ_üA/Œü|‰b!‚Xa„¸iey !r¨æ½Sá¯üˆžÿ¯Dþf½3â‡H¿Þ“úÓ²zñ ý¥4Í3[¸Ò´»;Ë»äe’â)6AùŠ!á±ú×iñ[á=ÏÄŸhzß‚®RîD?lµ·–'†aó žŠ{økAÿSwÿ]î?ô#_¨¿ äžøþ¼WÿB4—½¸Wð;á7Šþx¡ümã„K!2Ãmuy&yFBä¸?i]7KñÎ…£Ú^^XE+E5Ì2l†1©ëÖ¾àø‡þ¶ÃýçÿÐM~5xoþ>/ÿëêæôÚ°rüWøSuñ;Ú&±à«”º’)>Õl²¾Á4R 0Éà:‘ÐÔß~ø«Àž(ÿ„×Çh– m‰ -"´²»®ÞB’Ízǯù<ÿ^ÇÿB5éŸzCøÿè4ì­p>%—ö•Òô¿ÜèúEíåŒr²MÙø§ðºOŠþÐõï]¥Ä±Ê×–‹;lÆãk¡'¤ˆÝIð_à÷Œ|âèükãˆÒÆ T”E‘^Y]Ô®0¹àœ×£|$ÿ’gàÏúå'þŒ5íÿ¿ÕÚ}[ÿA¦÷¸ÝþÒZfâ;­E³»½´ŠFIæŽO-wgæØ\v®§âÃ'ø±àÝ#[ðmÚÊÆOµÚ¬í³ÍVdbr‹_iòÕÿëö_ý×éÂù%Þÿÿèf¥6÷ X󟂟|[àEãGŸ œry¥–Yj€œ(É®SRý£¬4O]èz5¥Ýõ¼R2Ï,RPsóñ_k|Iÿ—/¨þM_ÚwüŒšßý}ÏüÍSIlÚ¿~?Åoé:¯ƒ®Vwó–úÏÏ`¢PÀ«ÄÄð®¾ôσü[àßÇãOÆ–Ù¬žL{Õ¤ÝvàÏó^ðþIG„>’èm^Õñþ=´ÿ©¡%kñ6­ûEØè~-¼ÐôK+»Ûx&d¸–)<µ žBäWSñ+á»|Yð.™ªxBéf-0º¶·—æŒmxØžÔúׯvÿò1kÿõÿ/ó5úð—þIG…¿ß›ÿC¡+ç_> xÃÂ4·ñ§Ž=>ÚÀ¼‘¡ui&‘”¨PŸ— É®gRý¢ôÝÅWz.‰gw} R²\IžZƒŸ™PwÅ}½ñþ=mÞ_äµøùgÿ#V¹ÿ_ÒÿìÔlôìω_ ×âï€ô½cÁw‹1’qwköƒ³y_’HœŸºëÓž*ƒ¿üaá?ZøÏÇšu¶Ÿ½ãC"´“HÊT( zs^ƒðgþH÷…ëâëÿFš÷ŸˆñågþúÓQOP>#Õÿh½;AñeÞ…¡ÚÝßG¥.d†MŠ<ªú‘ùWMñÀübø}§jÞ ¼Y§6Âé¶aò¼NOÔúñ_ØÿÈå¯ÿØN_ý «ï¿ƒòGü9ÿ_wú0R¼Úd½5Gðƒà׌ü+ã+oxÚ4°µ°,ê­"´’¾Òª¯lžµ‹®~ÐÖ>ñmÞ YÝ_¤R°¸xdòÔ7÷Tw¯µ¼{ÿ È?ßþ¦¿"!ÿ‘Û^ÿ¯×þf‡î/t_ÔûÇÿÓãÛWÂ{ÚiÅݨ¹m¥Ù"òŽÝª¿Á¿ƒž2ðŽì¼k㸓O´Ó¥Aæ+I4›J¤jª~é-’k»ø/ÿ$‡Ãßõ÷wÿ£+ßþ!È6Ãþº%TR•¤Ém¥Ê‰üGûCÙxcÆWš&‰is~±HVæHdòÑ_<…õ"ºoˆ‹ãÃkO—aÞk…»µn燆CÙ‡bkã{ïùüCÿa ô*û×àçü‘ß×åÏþ†(M¶âÇd¢¤Žá/ÁxkÆvž,ñ¼I§Yéïæ®éžWP)èsÖ²¼QûCÚxkÆ—º.ƒisz‘ÊVâH¤òÑY¿…}Hé_jüAÿE§á_‘Z—üŽÞ ÿ¯ÿëI·î‚÷¥©ö/޼ Æ/†ÖºŸ„.Ä4âxÑØ|ÈÎ@ñ¬¯„ß|e xÞÞ7Ž=2ÃL”L ‘]æe* RN =}«»ø!ÿ$Lÿ°…Ïþ…_CxïþEûO÷“ùŠvM݃n)Øø¿Å´=‡‡üq}¤hV—7Åe"åâ—ËUb~èìO½oøïÀ¶ÿ>Zê^¼Éžä\[ –Û™¡È’ èñé_^ÉEñýç_v|ÿ’/¢ØZ÷ù­LdäÚa$¢“Gð«àwôXx£Æ‘&e¦È&Ϙ¬ò:ƒµP)'÷5_Å?´E†èøR÷ç–q4"èíÄÉÃC!4Š=:ÃO‘.ÌŠÎì0§œžõÞü ÿ’Aiÿa)ÿ˜¯¦ücÿ"ý¿Ñh²v`ö>5ñßíeá_^iº­Åì¾ffòdò‘w=Ï5©â¯ XükøV×Þ¼9ºYÑÚc¸ˆå¡öÏcÒ¾Jñoü•kþ»¯ô¯°gÿù#Ïÿa©?ôMjìg7dš8φŸüs¤x¿NñcLÓôÙ’á¥óU™Ú>Uc I9/ÓuÏE™¦é³Çq,Í*±aÜ §,Y…müCøùgá_ÝØh¶ÓÞÜÝ:ÄþZÄäGSÍ}ãoù£ÿq~OøïþJïˆÞù $¹! Gß—¼}eâXüoøOqw¢Ý4?o•UÉæ+¨H>T‡ÐƒÃW ðïà7,<[e¬x¶Ótë i&2£òð@Œ)ç'Ú½àgü‘Çÿ°óÿè _Qx¯þEEÿsú R´™7jéüHø÷aáÝØè¶ÓÞÜq†4Œ7AîqÍkkš‡ÆÏ…·WZ%ÓB÷N«²å°b¹Ÿ.CýÖìÕògÄ_ù+Z÷ûÐÿ*úÇàgü’ÍCþ£ÿ@¢Û“LrŠPR8o|ñý¿‰luÛac4rË;J‘ aOÌIjéþ'|{±ð§Ä «ÚâöáˆyV)<µE=9îH¯°¼Wÿ"ªÀ?•~PüFÿ’Ç«ÿ»ò¦ýÈÞ"‡ï%iTëZ&ñ·ámíÞ…vÑ}ªDF'æ‚ê"G!çåaѫϼû?øö×Ä6¾,†-3O²–9¥›ÍWÜ#;±RIÝŽ8®ëàü’=kþÃ1ÿè‘_Wø¿þEXÿÝ_åZ(§fÇÌãx£ä‰ôÿ üB»´Ðmî/n÷ʱ?–±«ržíŠ·«hºodž³è×O Nê…n1\'ÌÛû­ØŠùkÇòYõÏ÷ãÿÐV¾Ÿø ÿ$ÃVÿ°¢è5““i”â£ÑÂø3ö|ø€šÝ¥ß‰á‹OÓ­ž9%¸2£†ýØ$“Ò»‰´ß xîêËC†{˦;¤XÜÆ¨½²Gs_^ø‹þDˆ¿Ü_äµùSñþK±þêJ$ù#xŽ?¼¤}M}¥i¿¾ßÝh÷2[¼î!•.ÎL*7*±Q»þ½yÿþ|A‹Ä~&Ž?N³–)f¸óU†"`ß» ’ň⻀òMÁ·#,:’ [½Ótß_ 5 › ™-šèˆ\\œ˜næUr:«v5òßÄ¿ù,Ú¯ýq‡ÿ@Zú_àoü“]wþ‘ÿ躔ܤâÂIF ks…ðoÀ?ŬÚMâ(c°°³dy® ÈÊü›NXší¾(ül²ðŸŽ§‹G†{»™gXŸËTNÙ#¹×Õú×ü‰¹þù‡ñCþJÆ¡ÿ\#ÿÐi¿v7AÞIsM=‡Æo‡:…Ö“q$N3ÅrrÐN>e ÜåÖ¼ÃÂÿ³ßÄ3©Z/ˆá‹OÓàxÞk£2²áïÝí9bqé^‹û>È‘â?úýƒÿA5õ‡ˆäEO ÿÐM\ÏR9Ü£äÏ‹_ôï øúuÑažæåÀfXÜÆª‡€Xúœf›=¦›ñ§áÆ©u¦\½¹œ,‹“¸Á8!“qîŒf¾nø±ÿ%Nÿþ¸Cü«Þ¾ÿÉ2ñWý~Û#R¤Ûi—ÉÓŒÖçáÙ÷âÔ­Oˆ"†ÊÆÝ•¦¹2«&Õ ’˜9$ã]ïÅ/:O…ÿÈÅ¿öëüÚ”då7±¤©ÆHîpZ'ìùñk˜¬µX!µ²R¾mÙ™L{)ƒ’qÐW¦ü[ø±¥økÆ hë5ÌÆ(ÆÊŠ¡C1÷5õ5ßüˆ‹þàþUù©ñcþGÙ?ëÎ/ýÑ?ÝÓ÷ ƒuê¨Ô>„´m;ãƒu)`¹’ÚS“q䱉›”l¼„Œ{W–hß³ÿÄI® µÔ¡‚ÚÅ ù·~r‚Ë.IÇAŠë~ÿȽâo¥¿ójúîOù'ŸðþUqŠšS–àç*3œ!±òÿÅŠZ_…¼PhžuÌË/ÈÅňçæÅ;N—Lø»á]FHî&¶¹®b·˜‹Ÿ•óÝ >•ó÷Äÿù%ÿ®*õ¿?ñçâŸúãoÿ¡Î5%*Ž›Ø©Q„h*«sÓ?g߈׌¶7°Á– ËveO(F~ó.IÇAŠõ‹?t¿ x²1¤ù—3ˆ£U±A±nâÝyÅ}5ÿ4öOúâßÊ¿8¾,Èýýz'õ¢_»ƒp rxšª5vG»é’éÿü/©Üy²Àû<‹¥™‹ùFO¸à÷Bx5åÚ7Àˆ\Am{ QZ oºóTÇ·™yÉã ®Óàoü‹>/ÿr×ÿB5õtò"Çÿ\×ùV°Šª”ç¹›“ÃÎtél|×ñOâná¯ÅŽ%¸•bDQlùPcszKžËâ·‡5 ¸æ’ –?*â)‰cÿ¸à÷RzúW†|Rÿ‘ò?úâ¿Ê½SàWü‚üOÿ\ þu>ÒN´é½‹•(à ÑÜâ´ï€ß®fKY`ŠNxfCÆ:°ç$ŽÂ½?âÄm;Ãý²hþeÄ‘ÃhUŠü¨¡w9çô­Ÿü“¶ÿ®O_Ÿ_?äg‡þ½WúÓšö4¯Œž&¢…]‘íZ=ͧŠP¼óå†dˆÅuıŒH0’)þ%$}+Ëôï^?¸hìî!†+c€×^j˜‚w`sœã¶+±øÿ>*ÿ¯8?ôe}Müˆ£ýÏéU*±Œç¹©,5YS¥±óŸÄÿˆ:g†uûx4§’æxí£v1L¢.ÝŇ÷±U´««?‰ú-ô¦y-î-—ÌKm÷dSÝsÁô¯ø¡ÿ#´?õçójôƒ=|Aÿ^qÿèu1©)VtÞÃö4ã„X…ñ͇Áˆ3Ï«Á Û/ teO(/÷9Ç8¯Aø‹ã­7º½®’ò\Kon¡ŠîXÀ‰÷=+é;ù›è‘¯¾&ÈÓoÿ\ó¥%ì(·LºmâêÆ¶Ôõí"òËâ^!–h."‡mÂJÅö£ð$CÜgïÕçV_<}rÂÔÁÛƒteO(!þ,ç9œbºo‚ßó1Ø8èÁ_TéŸò!Û#ü«HÓhF¤÷Ô%'„«*Tvÿ€|ïñ+Ç:n…¬Ú.šÒM$6ÑEŒ”ܱ(RäŽÌG_D»µø¥_NòÍ ÑDRá%bûUú:žã=Ey/ÄùZךÿZï¾ ÿ©ñýz/þ…Q³x¯eÐ~Æ ± â9›?ƒ9­°†³c›¯5| ¾½sÓœb»ïˆ>0Ó´=JÊ *I.$‚áB´°A·v}ëè-3þIùÿ®û-|Cãùlÿëþt§‡¡)ÓÜ!7‰Äªuv=_C»µø‡awpf–9ሉ㑋â6àH§Ð¢¼þÏàççYÅ_gbGÚŒŠ" ýâsŸÃÑ|ûúßýƒ›ÿBô¶‹ÿ"Hÿq¿•\ «Â3žæS­<%gN–Únx'Ä/é¼Ó­t¹^å­-’t%7ÆÝÄûâ¡Ð.m<a{3K,WBEÄR±m±¿D>€ã ×”ü@ÿ½Ÿýq?Í«ºø?ÿ>#ÿ°_þÎ*=¤ž#Ù=‹ö0ŽbÅÿæí~xÒãñE@xûWšžPLõ'9Î;b»ŸøŸOÐ/tû=2GžKKt…Y©`Nzàž•ïZüˆÇýÊøÓÇ_ò0Ûÿ×üÍŠÃÑ”éo éT–.¼a[eþG¦è÷¶þ?²¹v–X®bˆù±ÈŇ–Üyˆzðz޵ÂÁðŸÆ“¿•orCøø2¨ˆy<ä{ƒÍo|'ÿ†§ÿ`Óÿ¡ ú+@ÿ‘&çþ¹µ8Áb!ÔÜU*Ë^T¨ìx_uý7Ão§iúl¯pöVÉ º»¶ulõÆzT5õ¿Ž¡º3I,wBL©#nýÓ|¾b¿)#"¸ÿÈVÛþ¹ækágü…5û?þŒJ=¬þ¹ì:Fœ~¤«ý£6…^3˜ùvÐDöïÀ¸(ŒÜää}+³ñï‰,ty´ëM1Úy,í’d%w-‘Î3Ò½ËÃßò%7û¦¾Fñoü…`ÿ®müÍLà°´%:[“N¬±3Š«ÐîtkÈün—$’GqdÊŽÅ¿vÜnSìzŠåmþøÂgÙC–ùÈœH¾^Þ>bIÈÀ­?…òÕëÁ¿ô%¯¡ü)ÿ"\ŸõÍ¿™§NÄÒJ»Š¥iájÊ-´µ[¹éýG üˆÿÙ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/make.bat0000644000076600000240000001712114744366240017047 0ustar00m.howitzstaff@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source set I18NSPHINXOPTS=%SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. epub3 to make an epub3 echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. xml to make Docutils-native XML files echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled echo. coverage to run coverage check of the documentation if enabled echo. dummy to check syntax errors of document sources goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) REM Check if sphinx-build is available and fallback to Python version if any %SPHINXBUILD% 1>NUL 2>NUL if errorlevel 9009 goto sphinx_python goto sphinx_ok :sphinx_python set SPHINXBUILD=python -m sphinx.__init__ %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) :sphinx_ok if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\RestrictedPython.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\RestrictedPython.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "epub3" ( %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3 if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub3 file is in %BUILDDIR%/epub3. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf cd %~dp0 echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja cd %~dp0 echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) if "%1" == "coverage" ( %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage if errorlevel 1 exit /b 1 echo. echo.Testing of coverage in the sources finished, look at the ^ results in %BUILDDIR%/coverage/python.txt. goto end ) if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 echo. echo.Build finished. The XML files are in %BUILDDIR%/xml. goto end ) if "%1" == "pseudoxml" ( %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml if errorlevel 1 exit /b 1 echo. echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. goto end ) if "%1" == "dummy" ( %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy if errorlevel 1 exit /b 1 echo. echo.Build finished. Dummy builder generates no files. goto end ) :end ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/requirements.txt0000644000076600000240000000001414744366240020717 0ustar00m.howitzstaffSphinx furo ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7411823 restrictedpython-8.0/docs/roadmap/0000755000076600000240000000000014744366242017065 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/roadmap/index.rst0000644000076600000240000000206714744366240020731 0ustar00m.howitzstaffRoadmap ======= .. todo:: Complete documentation of all public API elements with docstyle comments https://www.python.org/dev/peps/pep-0257/ http://www.sphinx-doc.org/en/stable/ext/autodoc.html http://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html RestrictedPython 4.0 (finished) ------------------------------- A feature complete rewrite of RestrictedPython using ``ast`` module instead of ``compile`` package. RestrictedPython 4.0 should not add any new or remove restrictions. A detailed documentation that support usage and further development. Full code coverage tests. .. todo:: Resolve Discussion in https://github.com/zopefoundation/RestrictedPython/pull/39#issuecomment-283074699 compile_restricted optional params flags and dont_inherit will not work as expected with the current implementation. stephan-hof did propose a solution, should be discussed and if approved implemented. RestrictedPython 6.0+ --------------------- * Python 3+ only, no more support for Python 2.7 * mypy - Static Code Analysis Annotations ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1737616545.741921 restrictedpython-8.0/docs/usage/0000755000076600000240000000000014744366242016546 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/usage/api.rst0000644000076600000240000001327714744366240020061 0ustar00m.howitzstaffAPI overview ------------ ``compile_restricted`` methods ++++++++++++++++++++++++++++++ .. py:method:: compile_restricted(source, filename, mode, flags, dont_inherit, policy) :module: RestrictedPython Compiles source code into interpretable byte code. :param source: (required). the source code that should be compiled :param filename: (optional). defaults to ``''`` :param mode: (optional). Use ``'exec'``, ``'eval'``, ``'single'`` or ``'function'``. defaults to ``'exec'`` :param flags: (optional). defaults to ``0`` :param dont_inherit: (optional). defaults to ``False`` :param policy: (optional). defaults to ``RestrictingNodeTransformer`` :type source: str or unicode text or ``ast.AST`` :type filename: str or unicode text :type mode: str or unicode text :type flags: int :type dont_inherit: int :type policy: RestrictingNodeTransformer class :return: Python ``code`` object .. py:method:: compile_restricted_exec(source, filename, flags, dont_inherit, policy) :module: RestrictedPython Compiles source code into interpretable byte code with ``mode='exec'``. Use mode ``'exec'`` if the source contains a sequence of statements. The meaning and defaults of the parameters are the same as in ``compile_restricted``. :return: CompileResult (a namedtuple with code, errors, warnings, used_names) .. py:method:: compile_restricted_eval(source, filename, flags, dont_inherit, policy) :module: RestrictedPython Compiles source code into interpretable byte code with ``mode='eval'``. Use mode ``'eval'`` if the source contains a single expression. The meaning and defaults of the parameters are the same as in ``compile_restricted``. :return: CompileResult (a namedtuple with code, errors, warnings, used_names) .. py:method:: compile_restricted_single(source, filename, flags, dont_inherit, policy) :module: RestrictedPython Compiles source code into interpretable byte code with ``mode='eval'``. Use mode ``'single'`` if the source contains a single interactive statement. The meaning and defaults of the parameters are the same as in ``compile_restricted``. :return: CompileResult (a namedtuple with code, errors, warnings, used_names) .. py:method:: compile_restricted_function(p, body, name, filename, globalize=None) :module: RestrictedPython Compiles source code into interpretable byte code with ``mode='function'``. Use mode ``'function'`` for full functions. :param p: (required). a string representing the function parameters :param body: (required). the function body :param name: (required). the function name :param filename: (optional). defaults to ``''`` :param globalize: (optional). list of globals. defaults to ``None`` :param flags: (optional). defaults to ``0`` :param dont_inherit: (optional). defaults to ``False`` :param policy: (optional). defaults to ``RestrictingNodeTransformer`` :type p: str or unicode text :type body: str or unicode text :type name: str or unicode text :type filename: str or unicode text :type globalize: None or list :type flags: int :type dont_inherit: int :type policy: RestrictingNodeTransformer class :return: byte code The globalize argument, if specified, is a list of variable names to be treated as globals (code is generated as if each name in the list appeared in a global statement at the top of the function). This allows to inject global variables into the generated function that feel like they are local variables, so the programmer who uses this doesn't have to understand that his code is executed inside a function scope instead of the global scope of a module. To actually get an executable function, you need to execute this code and pull out the defined function out of the locals like this: >>> from RestrictedPython import compile_restricted_function >>> compiled = compile_restricted_function('', 'pass', 'function_name') >>> safe_locals = {} >>> safe_globals = {} >>> exec(compiled.code, safe_globals, safe_locals) >>> compiled_function = safe_locals['function_name'] >>> result = compiled_function(*[], **{}) Then if you want to control the globals for a specific call to this function, you can regenerate the function like this: >>> my_call_specific_global_bindings = dict(foo='bar') >>> safe_globals = safe_globals.copy() >>> safe_globals.update(my_call_specific_global_bindings) >>> import types >>> new_function = types.FunctionType( ... compiled_function.__code__, ... safe_globals, ... '', ... compiled_function.__defaults__ or ()) >>> result = new_function(*[], **{}) restricted builtins +++++++++++++++++++ * ``safe_globals`` * ``safe_builtins`` * ``limited_builtins`` * ``utility_builtins`` helper modules ++++++++++++++ * ``PrintCollector`` RestrictingNodeTransformer ++++++++++++++++++++++++++ ``RestrictingNodeTransformer`` provides the base policy used by RestrictedPython itself. It is a subclass of a ``NodeTransformer`` which has a set of ``visit_`` methods and a ``generic_visit`` method. ``generic_visit`` is a predefined method of any ``NodeVisitor`` which sequentially visits all sub nodes. In RestrictedPython this behaviour is overwritten to always call a new internal method ``not_allowed(node)``. This results in an implicit blacklisting of all not allowed AST elements. Any possibly new introduced AST element in Python (new language element) will implicitly be blocked and not allowed in RestrictedPython. So, if new elements should be introduced, an explicit ``visit_`` is necessary. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/usage/basic_usage.rst0000644000076600000240000001057714744366240021555 0ustar00m.howitzstaffBasic usage ----------- The general workflow to execute Python code that is loaded within a Python program is: .. testcode:: source_code = """ def do_something(): pass """ byte_code = compile(source_code, filename='', mode='exec') exec(byte_code) do_something() With RestrictedPython that workflow should be as straight forward as possible: .. testcode:: from RestrictedPython import compile_restricted source_code = """ def do_something(): pass """ byte_code = compile_restricted( source_code, filename='', mode='exec' ) exec(byte_code) do_something() You might also use the replacement import: .. testcode:: from RestrictedPython import compile_restricted as compile ``compile_restricted`` uses a predefined policy that checks and modify the source code and checks against a restricted subset of the Python language. The compiled source code is still executed against the full available set of library modules and methods. The Python :py:func:`exec` takes three parameters: * ``code`` which is the compiled byte code * ``globals`` which is global dictionary * ``locals`` which is the local dictionary By limiting the entries in the ``globals`` and ``locals`` dictionaries you restrict the access to the available library modules and methods. Providing defined dictionaries for ``exec()`` should be used in context of RestrictedPython. .. code-block:: python byte_code = exec(byte_code, { ... }, { ... }) Typically there is a defined set of allowed modules, methods and constants used in that context. RestrictedPython provides three predefined built-ins for that (see :ref:`predefined_builtins` for details): * ``safe_builtins`` * ``limited_builtins`` * ``utility_builtins`` So you normally end up using: .. testcode:: from RestrictedPython import compile_restricted from RestrictedPython import safe_builtins from RestrictedPython import limited_builtins from RestrictedPython import utility_builtins source_code = """ def do_something(): pass """ try: byte_code = compile_restricted( source_code, filename='', mode='exec' ) exec(byte_code, {'__builtins__': safe_builtins}, None) except SyntaxError as e: pass One common advanced usage would be to define an own restricted builtin dictionary. There is a shortcut for ``{'__builtins__': safe_builtins}`` named ``safe_globals`` which can be imported from ``RestrictedPython``. Other Usages ------------ RestrictedPython has similar to normal Python multiple modes: * exec * eval * single * function you can use it by: .. testcode:: from RestrictedPython import compile_restricted source_code = """ def do_something(): pass """ byte_code = compile_restricted( source_code, filename='', mode='exec' ) exec(byte_code) do_something() .. testcode:: from RestrictedPython import compile_restricted byte_code = compile_restricted( "2 + 2", filename='', mode='eval' ) eval(byte_code) .. testcode:: single from RestrictedPython import compile_restricted byte_code = compile_restricted( "2 + 2", filename='', mode='single' ) exec(byte_code) .. testoutput:: single 4 Necessary setup --------------- `RestrictedPython` requires some predefined names in globals in order to work properly. To use classes in Python 3 * ``__metaclass__`` must be set. Set it to ``type`` to use no custom metaclass. * ``__name__`` must be set. As classes need a namespace to be defined in. It is the name of the module the class is defined in. You might set it to an arbitrary string. To use ``for`` statements and comprehensions: * ``_getiter_`` must point to an ``iter`` implementation. As an unguarded variant you might use :func:`RestrictedPython.Eval.default_guarded_getiter`. * ``_iter_unpack_sequence_`` must point to :func:`RestrictedPython.Guards.guarded_iter_unpack_sequence`. To use ``getattr`` you have to provide an implementation for it. :func:`RestrictedPython.Guards.safer_getattr` can be a starting point. The usage of `RestrictedPython` in :mod:`AccessControl.ZopeGuards` can serve as example. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/usage/framework_usage.rst0000644000076600000240000000554214744366240022465 0ustar00m.howitzstaff.. _sec_usage_frameworks: Usage in frameworks and Zope ---------------------------- One major issue with using ``compile_restricted`` directly in a framework is, that you have to use try-except statements to handle problems and it might be a bit harder to provide useful information to the user. RestrictedPython provides four specialized compile_restricted methods: * ``compile_restricted_exec`` * ``compile_restricted_eval`` * ``compile_restricted_single`` * ``compile_restricted_function`` Those four methods return a named tuple (``CompileResult``) with four elements: ``code`` ```` object or ``None`` if ``errors`` is not empty ``errors`` a tuple with error messages ``warnings`` a list with warnings ``used_names`` a dictionary mapping collected used names to ``True``. These details can be used to inform the user about the compiled source code. Modifying the builtins is straight forward, it is just a dictionary containing the available library elements. Modification normally means removing elements from existing builtins or adding allowed elements by copying from globals. For frameworks it could possibly also be useful to change the handling of specific Python language elements. For that use case RestrictedPython provides the possibility to pass an own policy. A policy is basically a special ``NodeTransformer`` that could be instantiated with three params for ``errors``, ``warnings`` and ``used_names``, it should be a subclass of RestrictedPython.RestrictingNodeTransformer. .. testcode:: own_policy from RestrictedPython import compile_restricted from RestrictedPython import RestrictingNodeTransformer class OwnRestrictingNodeTransformer(RestrictingNodeTransformer): pass policy_instance = OwnRestrictingNodeTransformer( errors=[], warnings=[], used_names=[] ) All ``compile_restricted*`` methods do have an optional parameter ``policy``, where a specific policy could be provided. .. testcode:: own_policy source_code = """ def do_something(): pass """ policy = OwnRestrictingNodeTransformer byte_code = compile_restricted( source_code, filename='', mode='exec', policy=policy # policy class ) exec(byte_code, globals(), None) One special case "unrestricted RestrictedPython" (defined to unblock ports of Zope Packages to Python 3) is to actually use RestrictedPython in an unrestricted mode, by providing a Null-Policy (aka ``None``). That special case would be written as: .. testcode:: from RestrictedPython import compile_restricted source_code = """ def do_something(): pass """ byte_code = compile_restricted( source_code, filename='', mode='exec', policy=None # Null-Policy -> unrestricted ) exec(byte_code, globals(), None) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/usage/index.rst0000644000076600000240000000017714744366240020412 0ustar00m.howitzstaffUsage of RestrictedPython ========================= .. toctree:: :maxdepth: 1 basic_usage framework_usage policy ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/docs/usage/policy.rst0000644000076600000240000001541214744366240020600 0ustar00m.howitzstaff.. _policy_builtins: Policies & builtins ------------------- RestrictedPython provides a way to define policies, by redefining restricted versions of ``print``, ``getattr``, ``setattr``, ``import``, etc.. As shortcuts it offers three stripped down versions of Python's ``__builtins__``: .. _predefined_builtins: Predefined builtins ................... ``safe_builtins`` a safe set of builtin modules and functions ``limited_builtins`` restricted sequence types (e. g. ``range``, ``list`` and ``tuple``) ``utility_builtins`` access to standard modules like math, random, string and set. ``safe_globals`` is a shortcut for ``{'__builtins__': safe_builtins}`` as this is the way globals have to be provided to the `exec` function to actually restrict the access to the builtins provided by Python. Guards ...... .. todo:: Describe Guards and predefined guard methods in details RestrictedPython predefines several guarded access and manipulation methods: * ``safer_getattr`` * ``guarded_setattr`` * ``guarded_delattr`` * ``guarded_iter_unpack_sequence`` * ``guarded_unpack_sequence`` Those and additional methods rely on a helper construct ``full_write_guard``, which is intended to help implement immutable and semi mutable objects and attributes. .. todo:: Describe full_write_guard more in detail and how it works. Implementing a policy --------------------- RestrictedPython only provides the raw material for restricted execution. To actually enforce any restrictions, you need to supply a policy implementation by providing restricted versions of ``print``, ``getattr``, ``setattr``, ``import``, etc. These restricted implementations are hooked up by providing a set of specially named objects in the global dict that you use for execution of code. Specifically: 1. ``_print_`` is a callable object that returns a handler for print statements. This handler must have a ``write()`` method that accepts a single string argument, and must return a string when called. ``RestrictedPython.PrintCollector.PrintCollector`` is a suitable implementation. 2. ``_write_`` is a guard function taking a single argument. If the object passed to it may be written to, it should be returned, otherwise the guard function should raise an exception. ``_write_`` is typically called on an object before a ``setattr`` operation. 3. ``_getattr_`` and ``_getitem_`` are guard functions, each of which takes two arguments. The first is the base object to be accessed, while the second is the attribute name or item index that will be read. The guard function should return the attribute or subitem, or raise an exception. RestrictedPython ships with a default implementation for ``_getattr_`` which prevents the following actions: * accessing an attribute whose name start with an underscore * accessing the format method of strings as this is considered harmful. 4. ``__import__`` is the normal Python import hook, and should be used to control access to Python packages and modules. 5. ``__builtins__`` is the normal Python builtins dictionary, which should be weeded down to a set that cannot be used to get around your restrictions. A usable "safe" set is ``RestrictedPython.Guards.safe_builtins``. To help illustrate how this works under the covers, here's an example function: .. code-block:: python def f(x): x.foo = x.foo + x[0] print x return printed and (sort of) how it looks after restricted compilation: .. code-block:: python def f(x): # Make local variables from globals. _print = _print_() _write = _write_ _getattr = _getattr_ _getitem = _getitem_ # Translation of f(x) above _write(x).foo = _getattr(x, 'foo') + _getitem(x, 0) print >>_print, x return _print() Examples -------- ``print`` ......... To support the ``print`` statement in restricted code, we supply a ``_print_`` object (note that it's a *factory*, e.g. a class or a callable, from which the restricted machinery will create the object): .. code-block:: pycon >>> from RestrictedPython.PrintCollector import PrintCollector >>> _print_ = PrintCollector >>> _getattr_ = getattr >>> src = ''' ... print("Hello World!") ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code) As you can see, the text doesn't appear on stdout. The print collector collects it. We can have access to the text using the ``printed`` variable, though: .. code-block:: pycon >>> src = ''' ... print("Hello World!") ... result = printed ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code) >>> result 'Hello World!\n' Built-ins ......... By supplying a different ``__builtins__`` dictionary, we can rule out unsafe operations, such as opening files: .. code-block:: pycon >>> from RestrictedPython.Guards import safe_builtins >>> restricted_globals = dict(__builtins__=safe_builtins) >>> src = ''' ... open('/etc/passwd') ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code, restricted_globals) Traceback (most recent call last): ... NameError: name 'open' is not defined Guards ...... Here's an example of a write guard that never lets restricted code modify (assign, delete an attribute or item) except dictionaries and lists: .. code-block:: pycon >>> from RestrictedPython.Guards import full_write_guard >>> _write_ = full_write_guard >>> _getattr_ = getattr >>> class BikeShed(object): ... colour = 'green' ... >>> shed = BikeShed() Normally accessing attributes works as expected, because we're using the standard ``getattr`` function for the ``_getattr_`` guard: .. code-block:: pycon >>> src = ''' ... print(shed.colour) ... result = printed ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code) >>> result 'green\n' However, changing an attribute doesn't work: .. code-block:: pycon >>> src = ''' ... shed.colour = 'red' ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code) Traceback (most recent call last): ... TypeError: attribute-less object (assign or del) As said, this particular write guard (``full_write_guard``) will allow restricted code to modify lists and dictionaries: .. code-block:: pycon >>> fibonacci = [1, 1, 2, 3, 4] >>> transl = dict(one=1, two=2, tres=3) >>> src = ''' ... # correct mistake in list ... fibonacci[-1] = 5 ... # one item doesn't belong ... del transl['tres'] ... ''' >>> code = compile_restricted(src, '', 'exec') >>> exec(code) >>> fibonacci [1, 1, 2, 3, 5] >>> sorted(transl.keys()) ['one', 'two'] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/pyproject.toml0000644000076600000240000000112314744366240017421 0ustar00m.howitzstaff# # Generated from: # https://github.com/zopefoundation/meta/tree/master/config/pure-python [build-system] requires = ["setuptools <= 75.6.0"] build-backend = "setuptools.build_meta" [tool.coverage.run] branch = true source = ["RestrictedPython"] [tool.coverage.report] fail_under = 97.3 precision = 2 ignore_errors = true show_missing = true exclude_lines = ["pragma: no cover", "pragma: nocover", "except ImportError:", "raise NotImplementedError", "if __name__ == '__main__':", "self.fail", "raise AssertionError", "raise unittest.Skip"] [tool.coverage.html] directory = "parts/htmlcov" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7517853 restrictedpython-8.0/setup.cfg0000644000076600000240000000132414744366242016333 0ustar00m.howitzstaff[flake8] doctests = 1 [check-manifest] ignore = .editorconfig .meta.toml docs/_build/html/_sources/* docs/_build/doctest/* docs/CHANGES.rst docs/_build/html/_images/* docs/_build/html/_sources/contributing/* docs/_build/html/_sources/install/* docs/_build/html/_sources/roadmap/* docs/_build/html/_sources/upgrade_dependencies/* docs/_build/html/_sources/usage/* docs/_build/html/_static/scripts/* [isort] force_single_line = True combine_as_imports = True sections = FUTURE,STDLIB,THIRDPARTY,ZOPE,FIRSTPARTY,LOCALFOLDER known_third_party = docutils, pkg_resources, pytz known_zope = known_first_party = default_section = ZOPE line_length = 79 lines_after_imports = 2 [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/setup.py0000644000076600000240000000515714744366240016232 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2006 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Setup for RestrictedPython package""" import os from setuptools import find_packages from setuptools import setup def read(*rnames): with open(os.path.join(os.path.dirname(__file__), *rnames)) as f: return f.read() setup(name='RestrictedPython', version='8.0', url='https://github.com/zopefoundation/RestrictedPython', license='ZPL-2.1', description=( 'RestrictedPython is a defined subset of the Python language which ' 'allows to provide a program input into a trusted environment.'), long_description=read('README.rst') + '\n' + read('CHANGES.rst'), long_description_content_type='text/x-rst', classifiers=[ 'Development Status :: 6 - Mature', 'License :: OSI Approved :: Zope Public License', 'Programming Language :: Python', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', 'Programming Language :: Python :: Implementation :: CPython', 'Topic :: Security', ], keywords='restricted execution security untrusted code', author='Zope Foundation and Contributors', author_email='zope-dev@zope.dev', project_urls={ "Documentation": "https://restrictedpython.readthedocs.io/", "Source": "https://github.com/zopefoundation/RestrictedPython", "Tracker": "https://github.com/zopefoundation/RestrictedPython/issues", }, packages=find_packages('src'), package_dir={'': 'src'}, install_requires=[], python_requires=">=3.9, <3.14", extras_require={ 'test': ['pytest', 'pytest-mock'], 'docs': ['Sphinx', 'furo'], }, include_package_data=True, zip_safe=False) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7355373 restrictedpython-8.0/src/0000755000076600000240000000000014744366242015301 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7431293 restrictedpython-8.0/src/RestrictedPython/0000755000076600000240000000000014744366242020613 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/Eval.py0000644000076600000240000000620114744366240022051 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## """Restricted Python Expressions.""" import ast from .compile import compile_restricted_eval nltosp = str.maketrans('\r\n', ' ') # No restrictions. default_guarded_getattr = getattr def default_guarded_getitem(ob, index): # No restrictions. return ob[index] def default_guarded_getiter(ob): # No restrictions. return ob class RestrictionCapableEval: """A base class for restricted code.""" globals = {'__builtins__': None} # restricted rcode = None # unrestricted ucode = None # Names used by the expression used = None def __init__(self, expr): """Create a restricted expression where: expr -- a string containing the expression to be evaluated. """ expr = expr.strip() self.__name__ = expr expr = expr.translate(nltosp) self.expr = expr # Catch syntax errors. self.prepUnrestrictedCode() def prepRestrictedCode(self): if self.rcode is None: result = compile_restricted_eval(self.expr, '') if result.errors: raise SyntaxError(result.errors[0]) self.used = tuple(result.used_names) self.rcode = result.code def prepUnrestrictedCode(self): if self.ucode is None: exp_node = compile( self.expr, '', 'eval', ast.PyCF_ONLY_AST) co = compile(exp_node, '', 'eval') # Examine the ast to discover which names the expression needs. if self.used is None: used = set() for node in ast.walk(exp_node): if isinstance(node, ast.Name): if isinstance(node.ctx, ast.Load): used.add(node.id) self.used = tuple(used) self.ucode = co def eval(self, mapping): # This default implementation is probably not very useful. :-( # This is meant to be overridden. self.prepRestrictedCode() global_scope = { '_getattr_': default_guarded_getattr, '_getitem_': default_guarded_getitem, '_getiter_': default_guarded_getiter, } global_scope.update(self.globals) for name in self.used: if (name not in global_scope) and (name in mapping): global_scope[name] = mapping[name] return eval(self.rcode, global_scope) def __call__(self, **kw): return self.eval(kw) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/Guards.py0000644000076600000240000001763114744366240022420 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## # This tiny set of safe builtins is extended by users of the module. # AccessControl.ZopeGuards contains a large set of wrappers for builtins. # DocumentTemplate.DT_UTil contains a few. import builtins from RestrictedPython.transformer import INSPECT_ATTRIBUTES safe_builtins = {} _safe_names = [ '__build_class__', 'None', 'False', 'True', 'abs', 'bool', 'bytes', 'callable', 'chr', 'complex', 'divmod', 'float', 'hash', 'hex', 'id', 'int', 'isinstance', 'issubclass', 'len', 'oct', 'ord', 'pow', 'range', 'repr', 'round', 'slice', 'sorted', 'str', 'tuple', 'zip' ] _safe_exceptions = [ 'ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', ] for name in _safe_names: safe_builtins[name] = getattr(builtins, name) for name in _safe_exceptions: safe_builtins[name] = getattr(builtins, name) # Wrappers provided by this module: # delattr # setattr # Wrappers provided by ZopeGuards: # __import__ # apply # dict # enumerate # filter # getattr # hasattr # iter # list # map # max # min # sum # all # any # Builtins that are intentionally disabled # compile - don't let them produce new code # dir - a general purpose introspector, probably hard to wrap # execfile - no direct I/O # file - no direct I/O # globals - uncontrolled namespace access # input - no direct I/O # locals - uncontrolled namespace access # open - no direct I/O # raw_input - no direct I/O # vars - uncontrolled namespace access # There are several strings that describe Python. I think there's no # point to including these, although they are obviously safe: # copyright, credits, exit, help, license, quit # Not provided anywhere. Do something about these? Several are # related to new-style classes, which we are too scared of to support # <0.3 wink>. coerce, buffer, and reload are esoteric enough that no # one should care. # buffer # bytearray # classmethod # coerce # eval # intern # memoryview # object # property # reload # staticmethod # super # type def _write_wrapper(): # Construct the write wrapper class def _handler(secattr, error_msg): # Make a class method. def handler(self, *args): try: f = getattr(self.ob, secattr) except AttributeError: raise TypeError(error_msg) f(*args) return handler class Wrapper: def __init__(self, ob): self.__dict__['ob'] = ob __setitem__ = _handler( '__guarded_setitem__', 'object does not support item or slice assignment') __delitem__ = _handler( '__guarded_delitem__', 'object does not support item or slice assignment') __setattr__ = _handler( '__guarded_setattr__', 'attribute-less object (assign or del)') __delattr__ = _handler( '__guarded_delattr__', 'attribute-less object (assign or del)') return Wrapper def _full_write_guard(): # Nested scope abuse! # safetypes and Wrapper variables are used by guard() safetypes = {dict, list} Wrapper = _write_wrapper() def guard(ob): # Don't bother wrapping simple types, or objects that claim to # handle their own write security. if type(ob) in safetypes or hasattr(ob, '_guarded_writes'): return ob # Hand the object to the Wrapper instance, then return the instance. return Wrapper(ob) return guard full_write_guard = _full_write_guard() def guarded_setattr(object, name, value): setattr(full_write_guard(object), name, value) safe_builtins['setattr'] = guarded_setattr def guarded_delattr(object, name): delattr(full_write_guard(object), name) safe_builtins['delattr'] = guarded_delattr raise_ = object() def safer_getattr(object, name, default=None, getattr=getattr): """Getattr implementation which prevents using format on string objects. format() is considered harmful: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ """ if type(name) is not str: raise TypeError('type(name) must be str') if name in ('format', 'format_map') and ( isinstance(object, str) or (isinstance(object, type) and issubclass(object, str))): raise NotImplementedError( 'Using the format*() methods of `str` is not safe') if name in INSPECT_ATTRIBUTES: raise AttributeError( f'"{name}" is a restricted name,' ' that is forbidden to access in RestrictedPython.') if name.startswith('_'): raise AttributeError( '"{name}" is an invalid attribute name because it ' 'starts with "_"'.format(name=name) ) args = (object, name) + (() if default is raise_ else (default,)) return getattr(*args) safe_builtins['_getattr_'] = safer_getattr def safer_getattr_raise(object, name, default=raise_): """like ``safer_getattr`` but raising ``AttributeError`` if failing.""" return safer_getattr(object, name, default) def guarded_iter_unpack_sequence(it, spec, _getiter_): """Protect sequence unpacking of targets in a 'for loop'. The target of a for loop could be a sequence. For example "for a, b in it" => Each object from the iterator needs guarded sequence unpacking. """ # The iteration itself needs to be protected as well. for ob in _getiter_(it): yield guarded_unpack_sequence(ob, spec, _getiter_) def guarded_unpack_sequence(it, spec, _getiter_): """Protect nested sequence unpacking. Protect the unpacking of 'it' by wrapping it with '_getiter_'. Furthermore for each child element, defined by spec, guarded_unpack_sequence is called again. Have a look at transformer.py 'gen_unpack_spec' for a more detailed explanation. """ # Do the guarded unpacking of the sequence. ret = list(_getiter_(it)) # If the sequence is shorter then expected the interpreter will raise # 'ValueError: need more than X value to unpack' anyway # => No childs are unpacked => nothing to protect. if len(ret) < spec['min_len']: return ret # For all child elements do the guarded unpacking again. for (idx, child_spec) in spec['childs']: ret[idx] = guarded_unpack_sequence(ret[idx], child_spec, _getiter_) return ret safe_globals = {'__builtins__': safe_builtins} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/Limits.py0000644000076600000240000000351214744366240022425 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## limited_builtins = {} def limited_range(iFirst, *args): # limited range function from Martijn Pieters RANGELIMIT = 1000 if not len(args): iStart, iEnd, iStep = 0, iFirst, 1 elif len(args) == 1: iStart, iEnd, iStep = iFirst, args[0], 1 elif len(args) == 2: iStart, iEnd, iStep = iFirst, args[0], args[1] else: raise AttributeError('range() requires 1-3 int arguments') if iStep == 0: raise ValueError('zero step for range()') iLen = int((iEnd - iStart) / iStep) if iLen < 0: iLen = 0 if iLen >= RANGELIMIT: raise ValueError( 'To be created range() object would be to large, ' 'in RestrictedPython we only allow {limit} ' 'elements in a range.'.format(limit=str(RANGELIMIT)), ) return range(iStart, iEnd, iStep) limited_builtins['range'] = limited_range def limited_list(seq): if isinstance(seq, str): raise TypeError('cannot convert string to list') return list(seq) limited_builtins['list'] = limited_list def limited_tuple(seq): if isinstance(seq, str): raise TypeError('cannot convert string to tuple') return tuple(seq) limited_builtins['tuple'] = limited_tuple ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/PrintCollector.py0000644000076600000240000000216114744366240024126 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## class PrintCollector: """Collect written text, and return it when called.""" def __init__(self, _getattr_=None): self.txt = [] self._getattr_ = _getattr_ def write(self, text): self.txt.append(text) def __call__(self): return ''.join(self.txt) def _call_print(self, *objects, **kwargs): if kwargs.get('file', None) is None: kwargs['file'] = self else: self._getattr_(kwargs['file'], 'write') print(*objects, **kwargs) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/Utilities.py0000644000076600000240000000573114744366240023144 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## import math import random import string utility_builtins = {} class _AttributeDelegator: def __init__(self, mod, *excludes): """delegate attribute lookups outside *excludes* to module *mod*.""" self.__mod = mod self.__excludes = excludes def __getattr__(self, attr): if attr in self.__excludes: raise NotImplementedError( f"{self.__mod.__name__}.{attr} is not safe") try: return getattr(self.__mod, attr) except AttributeError as e: e.obj = self raise utility_builtins['string'] = _AttributeDelegator(string, "Formatter") utility_builtins['math'] = math utility_builtins['random'] = random utility_builtins['whrandom'] = random utility_builtins['set'] = set utility_builtins['frozenset'] = frozenset try: import DateTime utility_builtins['DateTime'] = DateTime.DateTime except ImportError: pass def same_type(arg1, *args): """Compares the class or type of two or more objects.""" t = getattr(arg1, '__class__', type(arg1)) for arg in args: if getattr(arg, '__class__', type(arg)) is not t: return False return True utility_builtins['same_type'] = same_type def test(*args): length = len(args) for i in range(1, length, 2): if args[i - 1]: return args[i] if length % 2: return args[-1] utility_builtins['test'] = test def reorder(s, with_=None, without=()): # s, with_, and without are sequences treated as sets. # The result is subtract(intersect(s, with_), without), # unless with_ is None, in which case it is subtract(s, without). if with_ is None: with_ = s orig = {} for item in s: if isinstance(item, tuple) and len(item) == 2: key, value = item else: key = value = item orig[key] = value result = [] for item in without: if isinstance(item, tuple) and len(item) == 2: key, ignored = item else: key = item if key in orig: del orig[key] for item in with_: if isinstance(item, tuple) and len(item) == 2: key, ignored = item else: key = item if key in orig: result.append((key, orig[key])) del orig[key] return result utility_builtins['reorder'] = reorder ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/__init__.py0000644000076600000240000000350614744366240022726 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## """RestrictedPython package.""" # flake8: NOQA: E401 # This is a file to define public API in the base namespace of the package. # use: isort:skip to supress all isort related warnings / errors, # as this file should be logically grouped imports # compile_restricted methods: from RestrictedPython.compile import compile_restricted # isort:skip from RestrictedPython.compile import compile_restricted_eval # isort:skip from RestrictedPython.compile import compile_restricted_exec # isort:skip from RestrictedPython.compile import compile_restricted_function # isort:skip from RestrictedPython.compile import compile_restricted_single # isort:skip # predefined builtins from RestrictedPython.Guards import safe_builtins # isort:skip from RestrictedPython.Guards import safe_globals # isort:skip from RestrictedPython.Limits import limited_builtins # isort:skip from RestrictedPython.Utilities import utility_builtins # isort:skip # Helper Methods from RestrictedPython.PrintCollector import PrintCollector # isort:skip from RestrictedPython.compile import CompileResult # isort:skip # Policy from RestrictedPython.transformer import RestrictingNodeTransformer # isort:skip # from RestrictedPython.Eval import RestrictionCapableEval ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/_compat.py0000644000076600000240000000047614744366240022614 0ustar00m.howitzstaffimport platform import sys _version = sys.version_info IS_PY310_OR_GREATER = _version.major == 3 and _version.minor >= 10 IS_PY311_OR_GREATER = _version.major == 3 and _version.minor >= 11 IS_PY312_OR_GREATER = _version.major == 3 and _version.minor >= 12 IS_CPYTHON = platform.python_implementation() == 'CPython' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/compile.py0000644000076600000240000001510714744366240022617 0ustar00m.howitzstaffimport ast import warnings from collections import namedtuple from RestrictedPython._compat import IS_CPYTHON from RestrictedPython.transformer import RestrictingNodeTransformer CompileResult = namedtuple( 'CompileResult', 'code, errors, warnings, used_names') syntax_error_template = ( 'Line {lineno}: {type}: {msg} at statement: {statement!r}') NOT_CPYTHON_WARNING = ( 'RestrictedPython is only supported on CPython: use on other Python ' 'implementations may create security issues.' ) def _compile_restricted_mode( source, filename='', mode="exec", flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): if not IS_CPYTHON: warnings.warn_explicit( NOT_CPYTHON_WARNING, RuntimeWarning, 'RestrictedPython', 0) byte_code = None collected_errors = [] collected_warnings = [] used_names = {} if policy is None: # Unrestricted Source Checks byte_code = compile(source, filename, mode=mode, flags=flags, dont_inherit=dont_inherit) elif issubclass(policy, RestrictingNodeTransformer): c_ast = None allowed_source_types = [str, ast.Module] if not issubclass(type(source), tuple(allowed_source_types)): raise TypeError('Not allowed source type: ' '"{0.__class__.__name__}".'.format(source)) c_ast = None # workaround for pypy issue https://bitbucket.org/pypy/pypy/issues/2552 if isinstance(source, ast.Module): c_ast = source else: try: c_ast = ast.parse(source, filename, mode) except (TypeError, ValueError) as e: collected_errors.append(str(e)) except SyntaxError as v: collected_errors.append(syntax_error_template.format( lineno=v.lineno, type=v.__class__.__name__, msg=v.msg, statement=v.text.strip() if v.text else None )) if c_ast: policy_instance = policy( collected_errors, collected_warnings, used_names) policy_instance.visit(c_ast) if not collected_errors: byte_code = compile(c_ast, filename, mode=mode # , # flags=flags, # dont_inherit=dont_inherit ) else: raise TypeError('Unallowed policy provided for RestrictedPython') return CompileResult( byte_code, tuple(collected_errors), collected_warnings, used_names) def compile_restricted_exec( source, filename='', flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): """Compile restricted for the mode `exec`.""" return _compile_restricted_mode( source, filename=filename, mode='exec', flags=flags, dont_inherit=dont_inherit, policy=policy) def compile_restricted_eval( source, filename='', flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): """Compile restricted for the mode `eval`.""" return _compile_restricted_mode( source, filename=filename, mode='eval', flags=flags, dont_inherit=dont_inherit, policy=policy) def compile_restricted_single( source, filename='', flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): """Compile restricted for the mode `single`.""" return _compile_restricted_mode( source, filename=filename, mode='single', flags=flags, dont_inherit=dont_inherit, policy=policy) def compile_restricted_function( p, # parameters body, name, filename='', globalize=None, # List of globals (e.g. ['here', 'context', ...]) flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): """Compile a restricted code object for a function. Documentation see: http://restrictedpython.readthedocs.io/en/latest/usage/index.html#RestrictedPython.compile_restricted_function """ # Parse the parameters and body, then combine them. try: body_ast = ast.parse(body, '', 'exec') except SyntaxError as v: error = syntax_error_template.format( lineno=v.lineno, type=v.__class__.__name__, msg=v.msg, statement=v.text.strip() if v.text else None) return CompileResult( code=None, errors=(error,), warnings=(), used_names=()) # The compiled code is actually executed inside a function # (that is called when the code is called) so reading and assigning to a # global variable like this`printed += 'foo'` would throw an # UnboundLocalError. # We don't want the user to need to understand this. if globalize: body_ast.body.insert(0, ast.Global(globalize)) wrapper_ast = ast.parse('def masked_function_name(%s): pass' % p, '', 'exec') # In case the name you chose for your generated function is not a # valid python identifier we set it after the fact function_ast = wrapper_ast.body[0] assert isinstance(function_ast, ast.FunctionDef) function_ast.name = name wrapper_ast.body[0].body = body_ast.body wrapper_ast = ast.fix_missing_locations(wrapper_ast) result = _compile_restricted_mode( wrapper_ast, filename=filename, mode='exec', flags=flags, dont_inherit=dont_inherit, policy=policy) return result def compile_restricted( source, filename='', mode='exec', flags=0, dont_inherit=False, policy=RestrictingNodeTransformer): """Replacement for the built-in compile() function. policy ... `ast.NodeTransformer` class defining the restrictions. """ if mode in ['exec', 'eval', 'single', 'function']: result = _compile_restricted_mode( source, filename=filename, mode=mode, flags=flags, dont_inherit=dont_inherit, policy=policy) else: raise TypeError('unknown mode %s', mode) for warning in result.warnings: warnings.warn( warning, SyntaxWarning ) if result.errors: raise SyntaxError(result.errors) return result.code ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/src/RestrictedPython/transformer.py0000644000076600000240000012071314744366240023531 0ustar00m.howitzstaff############################################################################## # # Copyright (c) 2002 Zope Foundation and Contributors. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## """ transformer module: uses Python standard library ast module and its containing classes to transform the parsed python code to create a modified AST for a byte code generation. """ import ast import contextlib import textwrap # For AugAssign the operator must be converted to a string. IOPERATOR_TO_STR = { ast.Add: '+=', ast.Sub: '-=', ast.Mult: '*=', ast.Div: '/=', ast.Mod: '%=', ast.Pow: '**=', ast.LShift: '<<=', ast.RShift: '>>=', ast.BitOr: '|=', ast.BitXor: '^=', ast.BitAnd: '&=', ast.FloorDiv: '//=', ast.MatMult: '@=', } # For creation allowed magic method names. See also # https://docs.python.org/3/reference/datamodel.html#special-method-names ALLOWED_FUNC_NAMES = frozenset([ '__init__', '__contains__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', ]) FORBIDDEN_FUNC_NAMES = frozenset([ 'print', 'printed', 'builtins', 'breakpoint', ]) # Attributes documented in the `inspect` module, but defined on the listed # objects. See also https://docs.python.org/3/library/inspect.html INSPECT_ATTRIBUTES = frozenset([ # on traceback objects: "tb_frame", # "tb_lasti", # int # "tb_lineno", # int "tb_next", # on frame objects: "f_back", "f_builtins", "f_code", "f_globals", # "f_lasti", # int # "f_lineno", # int "f_locals", "f_trace", # on code objects: # "co_argcount", # int "co_code", # "co_cellvars", # tuple of str # "co_consts", # tuple of str # "co_filename", # str # "co_firstlineno", # int # "co_flags", # int # "co_lnotab", # mapping between ints and indices # "co_freevars", # tuple of strings # "co_posonlyargcount", # int # "co_kwonlyargcount", # int # "co_name", # str # "co_qualname", # str # "co_names", # str # "co_nlocals", # int # "co_stacksize", # int # "co_varnames", # tuple of str # on generator objects: "gi_frame", # "gi_running", # bool "gi_code", "gi_yieldfrom", # on coroutine objects: "cr_await", "cr_frame", # "cr_running", # bool "cr_code", "cr_origin", ]) # When new ast nodes are generated they have no 'lineno', 'end_lineno', # 'col_offset' and 'end_col_offset'. This function copies these fields from the # incoming node: def copy_locations(new_node, old_node): assert 'lineno' in new_node._attributes new_node.lineno = old_node.lineno assert 'end_lineno' in new_node._attributes new_node.end_lineno = old_node.end_lineno assert 'col_offset' in new_node._attributes new_node.col_offset = old_node.col_offset assert 'end_col_offset' in new_node._attributes new_node.end_col_offset = old_node.end_col_offset ast.fix_missing_locations(new_node) class PrintInfo: def __init__(self): self.print_used = False self.printed_used = False @contextlib.contextmanager def new_print_scope(self): old_print_used = self.print_used old_printed_used = self.printed_used self.print_used = False self.printed_used = False try: yield finally: self.print_used = old_print_used self.printed_used = old_printed_used class RestrictingNodeTransformer(ast.NodeTransformer): def __init__(self, errors=None, warnings=None, used_names=None): super().__init__() self.errors = [] if errors is None else errors self.warnings = [] if warnings is None else warnings # All the variables used by the incoming source. # Internal names/variables, like the ones from 'gen_tmp_name', don't # have to be added. # 'used_names' is for example needed by 'RestrictionCapableEval' to # know wich names it has to supply when calling the final code. self.used_names = {} if used_names is None else used_names # Global counter to construct temporary variable names. self._tmp_idx = 0 self.print_info = PrintInfo() def gen_tmp_name(self): # 'check_name' ensures that no variable is prefixed with '_'. # => Its safe to use '_tmp..' as a temporary variable. name = '_tmp%i' % self._tmp_idx self._tmp_idx += 1 return name def error(self, node, info): """Record a security error discovered during transformation.""" lineno = getattr(node, 'lineno', None) self.errors.append( f'Line {lineno}: {info}') def warn(self, node, info): """Record a security error discovered during transformation.""" lineno = getattr(node, 'lineno', None) self.warnings.append( f'Line {lineno}: {info}') def guard_iter(self, node): """ Converts: for x in expr to for x in _getiter_(expr) Also used for * list comprehensions * dict comprehensions * set comprehensions * generator expresions """ node = self.node_contents_visit(node) if isinstance(node.target, ast.Tuple): spec = self.gen_unpack_spec(node.target) new_iter = ast.Call( func=ast.Name('_iter_unpack_sequence_', ast.Load()), args=[node.iter, spec, ast.Name('_getiter_', ast.Load())], keywords=[]) else: new_iter = ast.Call( func=ast.Name("_getiter_", ast.Load()), args=[node.iter], keywords=[]) copy_locations(new_iter, node.iter) node.iter = new_iter return node def is_starred(self, ob): return isinstance(ob, ast.Starred) def gen_unpack_spec(self, tpl): """Generate a specification for 'guarded_unpack_sequence'. This spec is used to protect sequence unpacking. The primary goal of this spec is to tell which elements in a sequence are sequences again. These 'child' sequences have to be protected again. For example there is a sequence like this: (a, (b, c), (d, (e, f))) = g On a higher level the spec says: - There is a sequence of len 3 - The element at index 1 is a sequence again with len 2 - The element at index 2 is a sequence again with len 2 - The element at index 1 in this subsequence is a sequence again with len 2 With this spec 'guarded_unpack_sequence' does something like this for protection (len checks are omitted): t = list(_getiter_(g)) t[1] = list(_getiter_(t[1])) t[2] = list(_getiter_(t[2])) t[2][1] = list(_getiter_(t[2][1])) return t The 'real' spec for the case above is then: spec = { 'min_len': 3, 'childs': ( (1, {'min_len': 2, 'childs': ()}), (2, { 'min_len': 2, 'childs': ( (1, {'min_len': 2, 'childs': ()}) ) } ) ) } So finally the assignment above is converted into: (a, (b, c), (d, (e, f))) = guarded_unpack_sequence(g, spec) """ spec = ast.Dict(keys=[], values=[]) spec.keys.append(ast.Constant('childs')) spec.values.append(ast.Tuple([], ast.Load())) # starred elements in a sequence do not contribute into the min_len. # For example a, b, *c = g # g must have at least 2 elements, not 3. 'c' is empyt if g has only 2. min_len = len([ob for ob in tpl.elts if not self.is_starred(ob)]) offset = 0 for idx, val in enumerate(tpl.elts): # After a starred element specify the child index from the back. # Since it is unknown how many elements from the sequence are # consumed by the starred element. # For example a, *b, (c, d) = g # Then (c, d) has the index '-1' if self.is_starred(val): offset = min_len + 1 elif isinstance(val, ast.Tuple): el = ast.Tuple([], ast.Load()) el.elts.append(ast.Constant(idx - offset)) el.elts.append(self.gen_unpack_spec(val)) spec.values[0].elts.append(el) spec.keys.append(ast.Constant('min_len')) spec.values.append(ast.Constant(min_len)) return spec def protect_unpack_sequence(self, target, value): spec = self.gen_unpack_spec(target) return ast.Call( func=ast.Name('_unpack_sequence_', ast.Load()), args=[value, spec, ast.Name('_getiter_', ast.Load())], keywords=[]) def gen_unpack_wrapper(self, node, target): """Helper function to protect tuple unpacks. node: used to copy the locations for the new nodes. target: is the tuple which must be protected. It returns a tuple with two element. Element 1: Is a temporary name node which must be used to replace the target. The context (store, param) is defined by the 'ctx' parameter.. Element 2: Is a try .. finally where the body performs the protected tuple unpack of the temporary variable into the original target. """ # Generate a tmp name to replace the tuple with. tmp_name = self.gen_tmp_name() # Generates an expressions which protects the unpack. # converter looks like 'wrapper(tmp_name)'. # 'wrapper' takes care to protect sequence unpacking with _getiter_. converter = self.protect_unpack_sequence( target, ast.Name(tmp_name, ast.Load())) # Assign the expression to the original names. # Cleanup the temporary variable. # Generates: # try: # # converter is 'wrapper(tmp_name)' # arg = converter # finally: # del tmp_arg try_body = [ast.Assign(targets=[target], value=converter)] finalbody = [self.gen_del_stmt(tmp_name)] cleanup = ast.Try( body=try_body, finalbody=finalbody, handlers=[], orelse=[]) # This node is used to catch the tuple in a tmp variable. tmp_target = ast.Name(tmp_name, ast.Store()) copy_locations(tmp_target, node) copy_locations(cleanup, node) return (tmp_target, cleanup) def gen_none_node(self): return ast.NameConstant(value=None) def gen_del_stmt(self, name_to_del): return ast.Delete(targets=[ast.Name(name_to_del, ast.Del())]) def transform_slice(self, slice_): """Transform slices into function parameters. ast.Slice nodes are only allowed within a ast.Subscript node. To use a slice as an argument of ast.Call it has to be converted. Conversion is done by calling the 'slice' function from builtins """ if isinstance(slice_, ast.expr): # Python 3.9+ return slice_ elif isinstance(slice_, ast.Index): return slice_.value elif isinstance(slice_, ast.Slice): # Create a python slice object. args = [] if slice_.lower: args.append(slice_.lower) else: args.append(self.gen_none_node()) if slice_.upper: args.append(slice_.upper) else: args.append(self.gen_none_node()) if slice_.step: args.append(slice_.step) else: args.append(self.gen_none_node()) return ast.Call( func=ast.Name('slice', ast.Load()), args=args, keywords=[]) elif isinstance(slice_, ast.ExtSlice): dims = ast.Tuple([], ast.Load()) for item in slice_.dims: dims.elts.append(self.transform_slice(item)) return dims else: # pragma: no cover # Index, Slice and ExtSlice are only defined Slice types. raise NotImplementedError(f"Unknown slice type: {slice_}") def check_name(self, node, name, allow_magic_methods=False): """Check names if they are allowed. If ``allow_magic_methods is True`` names in `ALLOWED_FUNC_NAMES` are additionally allowed although their names start with `_`. """ if name is None: return if (name.startswith('_') and name != '_' and not (allow_magic_methods and name in ALLOWED_FUNC_NAMES and node.col_offset != 0)): self.error( node, '"{name}" is an invalid variable name because it ' 'starts with "_"'.format(name=name)) elif name.endswith('__roles__'): self.error(node, '"%s" is an invalid variable name because ' 'it ends with "__roles__".' % name) elif name in FORBIDDEN_FUNC_NAMES: self.error(node, f'"{name}" is a reserved name.') def check_function_argument_names(self, node): for arg in node.args.args: self.check_name(node, arg.arg) if node.args.vararg: self.check_name(node, node.args.vararg.arg) if node.args.kwarg: self.check_name(node, node.args.kwarg.arg) for arg in node.args.kwonlyargs: self.check_name(node, arg.arg) def check_import_names(self, node): """Check the names being imported. This is a protection against rebinding dunder names like _getitem_, _write_ via imports. => 'from _a import x' is ok, because '_a' is not added to the scope. """ for name in node.names: if '*' in name.name: self.error(node, '"*" imports are not allowed.') self.check_name(node, name.name) if name.asname: self.check_name(node, name.asname) return self.node_contents_visit(node) def inject_print_collector(self, node, position=0): print_used = self.print_info.print_used printed_used = self.print_info.printed_used if print_used or printed_used: # Add '_print = _print_(_getattr_)' add the top of a # function/module. _print = ast.Assign( targets=[ast.Name('_print', ast.Store())], value=ast.Call( func=ast.Name("_print_", ast.Load()), args=[ast.Name("_getattr_", ast.Load())], keywords=[])) if isinstance(node, ast.Module): _print.lineno = position _print.col_offset = position _print.end_lineno = position _print.end_col_offset = position ast.fix_missing_locations(_print) else: copy_locations(_print, node) node.body.insert(position, _print) if not printed_used: self.warn(node, "Prints, but never reads 'printed' variable.") elif not print_used: self.warn(node, "Doesn't print, but reads 'printed' variable.") # Special Functions for an ast.NodeTransformer def generic_visit(self, node): """Reject ast nodes which do not have a corresponding `visit_` method. This is needed to prevent new ast nodes from new Python versions to be trusted before any security review. To access `generic_visit` on the super class use `node_contents_visit`. """ self.warn( node, '{0.__class__.__name__}' ' statement is not known to RestrictedPython'.format(node) ) self.not_allowed(node) def not_allowed(self, node): self.error( node, f'{node.__class__.__name__} statements are not allowed.') def node_contents_visit(self, node): """Visit the contents of a node.""" return super().generic_visit(node) # ast for Literals def visit_Constant(self, node): """Allow constant literals with restriction for Ellipsis. Constant replaces Num, Str, Bytes, NameConstant and Ellipsis in Python 3.8+. :see: https://docs.python.org/dev/whatsnew/3.8.html#deprecated """ if node.value is Ellipsis: # Deny using `...`. # Special handling necessary as ``self.not_allowed(node)`` # would return the Error Message: # 'Constant statements are not allowed.' # which is only partial true. self.error(node, 'Ellipsis statements are not allowed.') return return self.node_contents_visit(node) def visit_Interactive(self, node): """Allow single mode without restrictions.""" return self.node_contents_visit(node) def visit_List(self, node): """Allow list literals without restrictions.""" return self.node_contents_visit(node) def visit_Tuple(self, node): """Allow tuple literals without restrictions.""" return self.node_contents_visit(node) def visit_Set(self, node): """Allow set literals without restrictions.""" return self.node_contents_visit(node) def visit_Dict(self, node): """Allow dict literals without restrictions.""" return self.node_contents_visit(node) def visit_FormattedValue(self, node): """Allow f-strings without restrictions.""" return self.node_contents_visit(node) def visit_JoinedStr(self, node): """Allow joined string without restrictions.""" return self.node_contents_visit(node) # ast for Variables def visit_Name(self, node): """Prevents access to protected names. Converts use of the name 'printed' to this expression: '_print()' """ node = self.node_contents_visit(node) if isinstance(node.ctx, ast.Load): if node.id == 'printed': self.print_info.printed_used = True new_node = ast.Call( func=ast.Name("_print", ast.Load()), args=[], keywords=[]) copy_locations(new_node, node) return new_node elif node.id == 'print': self.print_info.print_used = True new_node = ast.Attribute( value=ast.Name('_print', ast.Load()), attr="_call_print", ctx=ast.Load()) copy_locations(new_node, node) return new_node self.used_names[node.id] = True self.check_name(node, node.id) return node def visit_Load(self, node): """ """ return self.node_contents_visit(node) def visit_Store(self, node): """ """ return self.node_contents_visit(node) def visit_Del(self, node): """ """ return self.node_contents_visit(node) def visit_Starred(self, node): """ """ return self.node_contents_visit(node) # Expressions def visit_Expression(self, node): """Allow Expression statements without restrictions. They are in the AST when using the `eval` compile mode. """ return self.node_contents_visit(node) def visit_Expr(self, node): """Allow Expr statements (any expression) without restrictions.""" return self.node_contents_visit(node) def visit_UnaryOp(self, node): """ UnaryOp (Unary Operations) is the overall element for: * Not --> which should be allowed * UAdd --> Positive notation of variables (e.g. +var) * USub --> Negative notation of variables (e.g. -var) """ return self.node_contents_visit(node) def visit_UAdd(self, node): """Allow positive notation of variables. (e.g. +var)""" return self.node_contents_visit(node) def visit_USub(self, node): """Allow negative notation of variables. (e.g. -var)""" return self.node_contents_visit(node) def visit_Not(self, node): """Allow the `not` operator.""" return self.node_contents_visit(node) def visit_Invert(self, node): """Allow `~` expressions.""" return self.node_contents_visit(node) def visit_BinOp(self, node): """Allow binary operations.""" return self.node_contents_visit(node) def visit_Add(self, node): """Allow `+` expressions.""" return self.node_contents_visit(node) def visit_Sub(self, node): """Allow `-` expressions.""" return self.node_contents_visit(node) def visit_Mult(self, node): """Allow `*` expressions.""" return self.node_contents_visit(node) def visit_Div(self, node): """Allow `/` expressions.""" return self.node_contents_visit(node) def visit_FloorDiv(self, node): """Allow `//` expressions.""" return self.node_contents_visit(node) def visit_Mod(self, node): """Allow `%` expressions.""" return self.node_contents_visit(node) def visit_Pow(self, node): """Allow `**` expressions.""" return self.node_contents_visit(node) def visit_LShift(self, node): """Allow `<<` expressions.""" return self.node_contents_visit(node) def visit_RShift(self, node): """Allow `>>` expressions.""" return self.node_contents_visit(node) def visit_BitOr(self, node): """Allow `|` expressions.""" return self.node_contents_visit(node) def visit_BitXor(self, node): """Allow `^` expressions.""" return self.node_contents_visit(node) def visit_BitAnd(self, node): """Allow `&` expressions.""" return self.node_contents_visit(node) def visit_MatMult(self, node): """Allow multiplication (`@`).""" return self.node_contents_visit(node) def visit_BoolOp(self, node): """Allow bool operator without restrictions.""" return self.node_contents_visit(node) def visit_And(self, node): """Allow bool operator `and` without restrictions.""" return self.node_contents_visit(node) def visit_Or(self, node): """Allow bool operator `or` without restrictions.""" return self.node_contents_visit(node) def visit_Compare(self, node): """Allow comparison expressions without restrictions.""" return self.node_contents_visit(node) def visit_Eq(self, node): """Allow == expressions.""" return self.node_contents_visit(node) def visit_NotEq(self, node): """Allow != expressions.""" return self.node_contents_visit(node) def visit_Lt(self, node): """Allow < expressions.""" return self.node_contents_visit(node) def visit_LtE(self, node): """Allow <= expressions.""" return self.node_contents_visit(node) def visit_Gt(self, node): """Allow > expressions.""" return self.node_contents_visit(node) def visit_GtE(self, node): """Allow >= expressions.""" return self.node_contents_visit(node) def visit_Is(self, node): """Allow `is` expressions.""" return self.node_contents_visit(node) def visit_IsNot(self, node): """Allow `is not` expressions.""" return self.node_contents_visit(node) def visit_In(self, node): """Allow `in` expressions.""" return self.node_contents_visit(node) def visit_NotIn(self, node): """Allow `not in` expressions.""" return self.node_contents_visit(node) def visit_Call(self, node): """Checks calls with '*args' and '**kwargs'. Note: The following happens only if '*args' or '**kwargs' is used. Transfroms 'foo()' into _apply_(foo, ) The thing is that '_apply_' has only '*args', '**kwargs', so it gets Python to collapse all the myriad ways to call functions into one manageable from. From there, '_apply_()' wraps args and kws in guarded accessors, then calls the function, returning the value. """ if isinstance(node.func, ast.Name): if node.func.id == 'exec': self.error(node, 'Exec calls are not allowed.') elif node.func.id == 'eval': self.error(node, 'Eval calls are not allowed.') needs_wrap = False for pos_arg in node.args: if isinstance(pos_arg, ast.Starred): needs_wrap = True for keyword_arg in node.keywords: if keyword_arg.arg is None: needs_wrap = True node = self.node_contents_visit(node) if not needs_wrap: return node node.args.insert(0, node.func) node.func = ast.Name('_apply_', ast.Load()) copy_locations(node.func, node.args[0]) return node def visit_keyword(self, node): """ """ return self.node_contents_visit(node) def visit_IfExp(self, node): """Allow `if` expressions without restrictions.""" return self.node_contents_visit(node) def visit_Attribute(self, node): """Checks and mutates attribute access/assignment. 'a.b' becomes '_getattr_(a, "b")' 'a.b = c' becomes '_write_(a).b = c' 'del a.b' becomes 'del _write_(a).b' The _write_ function should return a security proxy. """ if node.attr.startswith('_') and node.attr != '_': self.error( node, '"{name}" is an invalid attribute name because it starts ' 'with "_".'.format(name=node.attr)) if node.attr.endswith('__roles__'): self.error( node, '"{name}" is an invalid attribute name because it ends ' 'with "__roles__".'.format(name=node.attr)) if node.attr in INSPECT_ATTRIBUTES: self.error( node, f'"{node.attr}" is a restricted name,' ' that is forbidden to access in RestrictedPython.', ) if isinstance(node.ctx, ast.Load): node = self.node_contents_visit(node) new_node = ast.Call( func=ast.Name('_getattr_', ast.Load()), args=[node.value, ast.Constant(node.attr)], keywords=[]) copy_locations(new_node, node) return new_node elif isinstance(node.ctx, (ast.Store, ast.Del)): node = self.node_contents_visit(node) new_value = ast.Call( func=ast.Name('_write_', ast.Load()), args=[node.value], keywords=[]) copy_locations(new_value, node.value) node.value = new_value return node else: # pragma: no cover # Impossible Case only ctx Load, Store and Del are defined in ast. raise NotImplementedError( f"Unknown ctx type: {type(node.ctx)}") # Subscripting def visit_Subscript(self, node): """Transforms all kinds of subscripts. 'foo[bar]' becomes '_getitem_(foo, bar)' 'foo[:ab]' becomes '_getitem_(foo, slice(None, ab, None))' 'foo[ab:]' becomes '_getitem_(foo, slice(ab, None, None))' 'foo[a:b]' becomes '_getitem_(foo, slice(a, b, None))' 'foo[a:b:c]' becomes '_getitem_(foo, slice(a, b, c))' 'foo[a, b:c] becomes '_getitem_(foo, (a, slice(b, c, None)))' 'foo[a] = c' becomes '_write_(foo)[a] = c' 'del foo[a]' becomes 'del _write_(foo)[a]' The _write_ function should return a security proxy. """ node = self.node_contents_visit(node) # 'AugStore' and 'AugLoad' are defined in 'Python.asdl' as possible # 'expr_context'. However, according to Python/ast.c # they are NOT used by the implementation => No need to worry here. # Instead ast.c creates 'AugAssign' nodes, which can be visited. if isinstance(node.ctx, ast.Load): new_node = ast.Call( func=ast.Name('_getitem_', ast.Load()), args=[node.value, self.transform_slice(node.slice)], keywords=[]) copy_locations(new_node, node) return new_node elif isinstance(node.ctx, (ast.Del, ast.Store)): new_value = ast.Call( func=ast.Name('_write_', ast.Load()), args=[node.value], keywords=[]) copy_locations(new_value, node) node.value = new_value return node else: # pragma: no cover # Impossible Case only ctx Load, Store and Del are defined in ast. raise NotImplementedError( f"Unknown ctx type: {type(node.ctx)}") def visit_Index(self, node): """ """ return self.node_contents_visit(node) def visit_Slice(self, node): """ """ return self.node_contents_visit(node) def visit_ExtSlice(self, node): """ """ return self.node_contents_visit(node) # Comprehensions def visit_ListComp(self, node): """ """ return self.node_contents_visit(node) def visit_SetComp(self, node): """ """ return self.node_contents_visit(node) def visit_GeneratorExp(self, node): """ """ return self.node_contents_visit(node) def visit_DictComp(self, node): """ """ return self.node_contents_visit(node) def visit_comprehension(self, node): """ """ return self.guard_iter(node) # Statements def visit_Assign(self, node): """ """ node = self.node_contents_visit(node) if not any(isinstance(t, ast.Tuple) for t in node.targets): return node # Handle sequence unpacking. # For briefness this example omits cleanup of the temporary variables. # Check 'transform_tuple_assign' how its done. # # - Single target (with nested support) # (a, (b, (c, d))) = # is converted to # (a, t1) = _getiter_() # (b, t2) = _getiter_(t1) # (c, d) = _getiter_(t2) # # - Multi targets # (a, b) = (c, d) = # is converted to # (c, d) = _getiter_() # (a, b) = _getiter_() # Why is this valid ? The original bytecode for this multi targets # behaves the same way. # ast.NodeTransformer works with list results. # He injects it at the right place of the node's parent statements. new_nodes = [] # python fills the right most target first. for target in reversed(node.targets): if isinstance(target, ast.Tuple): wrapper = ast.Assign( targets=[target], value=self.protect_unpack_sequence(target, node.value)) new_nodes.append(wrapper) else: new_node = ast.Assign(targets=[target], value=node.value) new_nodes.append(new_node) for new_node in new_nodes: copy_locations(new_node, node) return new_nodes def visit_AugAssign(self, node): """Forbid certain kinds of AugAssign According to the language reference (and ast.c) the following nodes are are possible: Name, Attribute, Subscript Note that although augmented assignment of attributes and subscripts is disallowed, augmented assignment of names (such as 'n += 1') is allowed. 'n += 1' becomes 'n = _inplacevar_("+=", n, 1)' """ node = self.node_contents_visit(node) if isinstance(node.target, ast.Attribute): self.error( node, "Augmented assignment of attributes is not allowed.") return node elif isinstance(node.target, ast.Subscript): self.error( node, "Augmented assignment of object items " "and slices is not allowed.") return node elif isinstance(node.target, ast.Name): new_node = ast.Assign( targets=[node.target], value=ast.Call( func=ast.Name('_inplacevar_', ast.Load()), args=[ ast.Constant(IOPERATOR_TO_STR[type(node.op)]), ast.Name(node.target.id, ast.Load()), node.value ], keywords=[])) copy_locations(new_node, node) return new_node else: # pragma: no cover # Impossible Case - Only Node Types: # * Name # * Attribute # * Subscript # defined, those are checked before. raise NotImplementedError( f"Unknown target type: {type(node.target)}") def visit_Raise(self, node): """Allow `raise` statements without restrictions.""" return self.node_contents_visit(node) def visit_Assert(self, node): """Allow assert statements without restrictions.""" return self.node_contents_visit(node) def visit_Delete(self, node): """Allow `del` statements without restrictions.""" return self.node_contents_visit(node) def visit_Pass(self, node): """Allow `pass` statements without restrictions.""" return self.node_contents_visit(node) # Imports def visit_Import(self, node): """Allow `import` statements with restrictions. See check_import_names.""" return self.check_import_names(node) def visit_ImportFrom(self, node): """Allow `import from` statements with restrictions. See check_import_names.""" return self.check_import_names(node) def visit_alias(self, node): """Allow `as` statements in import and import from statements.""" return self.node_contents_visit(node) # Control flow def visit_If(self, node): """Allow `if` statements without restrictions.""" return self.node_contents_visit(node) def visit_For(self, node): """Allow `for` statements with some restrictions.""" return self.guard_iter(node) def visit_While(self, node): """Allow `while` statements.""" return self.node_contents_visit(node) def visit_Break(self, node): """Allow `break` statements without restrictions.""" return self.node_contents_visit(node) def visit_Continue(self, node): """Allow `continue` statements without restrictions.""" return self.node_contents_visit(node) def visit_Try(self, node): """Allow `try` without restrictions.""" return self.node_contents_visit(node) def visit_TryStar(self, node): """Disallow `ExceptionGroup` due to a potential sandbox escape.""" self.not_allowed(node) def visit_ExceptHandler(self, node): """Protect exception handlers.""" node = self.node_contents_visit(node) self.check_name(node, node.name) return node def visit_With(self, node): """Protect tuple unpacking on with statements.""" node = self.node_contents_visit(node) for item in reversed(node.items): if isinstance(item.optional_vars, ast.Tuple): tmp_target, unpack = self.gen_unpack_wrapper( node, item.optional_vars) item.optional_vars = tmp_target node.body.insert(0, unpack) return node def visit_withitem(self, node): """Allow `with` statements (context managers) without restrictions.""" return self.node_contents_visit(node) # Function and class definitions def visit_FunctionDef(self, node): """Allow function definitions (`def`) with some restrictions.""" self.check_name(node, node.name, allow_magic_methods=True) self.check_function_argument_names(node) with self.print_info.new_print_scope(): node = self.node_contents_visit(node) self.inject_print_collector(node) return node def visit_Lambda(self, node): """Allow lambda with some restrictions.""" self.check_function_argument_names(node) return self.node_contents_visit(node) def visit_arguments(self, node): """ """ return self.node_contents_visit(node) def visit_arg(self, node): """ """ return self.node_contents_visit(node) def visit_Return(self, node): """Allow `return` statements without restrictions.""" return self.node_contents_visit(node) def visit_Yield(self, node): """Allow `yield`statements without restrictions.""" return self.node_contents_visit(node) def visit_YieldFrom(self, node): """Allow `yield`statements without restrictions.""" return self.node_contents_visit(node) def visit_Global(self, node): """Allow `global` statements without restrictions.""" return self.node_contents_visit(node) def visit_Nonlocal(self, node): """Deny `nonlocal` statements.""" self.not_allowed(node) def visit_ClassDef(self, node): """Check the name of a class definition.""" self.check_name(node, node.name) node = self.node_contents_visit(node) if any(keyword.arg == 'metaclass' for keyword in node.keywords): self.error( node, 'The keyword argument "metaclass" is not allowed.') CLASS_DEF = textwrap.dedent('''\ class {0.name}(metaclass=__metaclass__): pass '''.format(node)) new_class_node = ast.parse(CLASS_DEF).body[0] new_class_node.body = node.body new_class_node.bases = node.bases new_class_node.decorator_list = node.decorator_list return new_class_node def visit_Module(self, node): """Add the print_collector (only if print is used) at the top.""" node = self.node_contents_visit(node) # Inject the print collector after 'from __future__ import ....' position = 0 for position, child in enumerate(node.body): # pragma: no branch if not isinstance(child, ast.ImportFrom): break if not child.module == '__future__': break self.inject_print_collector(node, position) return node # Async und await def visit_AsyncFunctionDef(self, node): """Deny async functions.""" self.not_allowed(node) def visit_Await(self, node): """Deny async functionality.""" self.not_allowed(node) def visit_AsyncFor(self, node): """Deny async functionality.""" self.not_allowed(node) def visit_AsyncWith(self, node): """Deny async functionality.""" self.not_allowed(node) # Assignment expressions (walrus operator ``:=``) # New in 3.8 def visit_NamedExpr(self, node): """Allow assignment expressions under some circumstances.""" # while the grammar requires ``node.target`` to be a ``Name`` # the abstract syntax is more permissive and allows an ``expr``. # We support only a ``Name``. # This is safe as the expression can only add/modify local # variables. While this may hide global variables, an # (implicitly performed) name check guarantees (as usual) # that no essential global variable is hidden. node = self.node_contents_visit(node) # this checks ``node.target`` target = node.target if not isinstance(target, ast.Name): self.error( node, "Assignment expressions are only allowed for simple targets") return node ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7506454 restrictedpython-8.0/src/RestrictedPython.egg-info/0000755000076600000240000000000014744366242022305 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/PKG-INFO0000644000076600000240000003330714744366241023407 0ustar00m.howitzstaffMetadata-Version: 2.1 Name: RestrictedPython Version: 8.0 Summary: RestrictedPython is a defined subset of the Python language which allows to provide a program input into a trusted environment. Home-page: https://github.com/zopefoundation/RestrictedPython Author: Zope Foundation and Contributors Author-email: zope-dev@zope.dev License: ZPL-2.1 Project-URL: Documentation, https://restrictedpython.readthedocs.io/ Project-URL: Source, https://github.com/zopefoundation/RestrictedPython Project-URL: Tracker, https://github.com/zopefoundation/RestrictedPython/issues Keywords: restricted execution security untrusted code Classifier: Development Status :: 6 - Mature Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Security Requires-Python: >=3.9, <3.14 Description-Content-Type: text/x-rst License-File: LICENSE.txt Provides-Extra: test Requires-Dist: pytest; extra == "test" Requires-Dist: pytest-mock; extra == "test" Provides-Extra: docs Requires-Dist: Sphinx; extra == "docs" Requires-Dist: furo; extra == "docs" .. image:: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml/badge.svg :target: https://github.com/zopefoundation/RestrictedPython/actions/workflows/tests.yml .. image:: https://coveralls.io/repos/github/zopefoundation/RestrictedPython/badge.svg?branch=master :target: https://coveralls.io/github/zopefoundation/RestrictedPython?branch=master .. image:: https://readthedocs.org/projects/restrictedpython/badge/ :target: https://restrictedpython.readthedocs.org/ :alt: Documentation Status .. image:: https://img.shields.io/pypi/v/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Current version on PyPI .. image:: https://img.shields.io/pypi/pyversions/RestrictedPython.svg :target: https://pypi.org/project/RestrictedPython/ :alt: Supported Python versions .. image:: https://github.com/zopefoundation/RestrictedPython/raw/master/docs/logo.jpg ================ RestrictedPython ================ RestrictedPython is a tool that helps to define a subset of the Python language which allows to provide a program input into a trusted environment. RestrictedPython is not a sandbox system or a secured environment, but it helps to define a trusted environment and execute untrusted code inside of it. .. warning:: RestrictedPython only supports CPython. It does _not_ support PyPy and other Python implementations as it cannot provide its restrictions there. For full documentation please see http://restrictedpython.readthedocs.io/. Example ======= To give a basic understanding what RestrictedPython does here two examples: An unproblematic code example ----------------------------- Python allows you to execute a large set of commands. This would not harm any system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... def example(): ... return 'Hello World!' ... """ >>> >>> loc = {} >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, loc) >>> >>> loc['example']() 'Hello World!' Problematic code example ------------------------ This example directly executed in Python could harm your system. .. code-block:: pycon >>> from RestrictedPython import compile_restricted >>> from RestrictedPython import safe_globals >>> >>> source_code = """ ... import os ... ... os.listdir('/') ... """ >>> byte_code = compile_restricted(source_code, '', 'exec') >>> exec(byte_code, safe_globals, {}) Traceback (most recent call last): ImportError: __import__ not found Contributing to RestrictedPython -------------------------------- If you want to help maintain RestrictedPython and contribute, please refer to the documentation `Contributing page `_. Changes ======= 8.0 (2025-01-23) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Disallow ``try/except*`` clauses due to a possible sandbox escape and probable uselessness of this feature in the context of ``RestrictedPython``. In addition, remove ``ExceptionGroup`` from ``safe_builtins`` (as useful only with ``try/except*``). - This feature was introduced into ``RestrictedPython`` in version 6.0 for Python 3.11+. (CVE-2025-22153) - Drop support for Python 3.8. Features ++++++++ - Update setuptools version pin. (`#292 `_) 7.4 (2024-10-09) ---------------- - Allow to use the package with Python 3.13. - Drop support for Python 3.7. - Provide new function ``RestrictedPython.Guards.safer_getattr_raise``. It is similar to ``safer_getattr`` but handles its parameter ``default`` like ``getattr``, i.e. it raises ``AttributeError`` if the attribute lookup fails and this parameter is not provided, fixes `#287 `_. 7.3 (2024-09-30) ---------------- - Increase the safety level of ``safer_getattr`` allowing applications to use it as ``getattr`` implementation. Such use should now follow the same policy and give the same level of protection as direct attribute access in an environment based on ``RestrictedPython``'s ``safe_builtints``. - Prevent information leakage via ``AttributeError.obj`` and the ``string`` module. (CVE-2024-47532) 7.2 (2024-08-02) ---------------- - Remove unneeded setuptools fossils that may cause installation problems with recent setuptools versions. - Add support for single mode statements / execution. - Fix a potential breakout capability in the provided ``safer_getattr`` method that is part of the ``safer_builtins``. 7.1 (2024-03-14) ---------------- - Add support for the matmul (``@``) operator. 7.0 (2023-11-17) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 3.6. Features ++++++++ - Officially support Python 3.12. Fixes +++++ - Prevent DeprecationWarnings from ``ast.Str`` and ``ast.Num`` on Python 3.12 - Forbid using some attributes providing access to restricted Python internals. (CVE-2023-37271) - Fix information disclosure problems through Python's "format" functionality (``format`` and ``format_map`` methods on ``str`` and its instances, ``string.Formatter``). (CVE-2023-41039) 6.0 (2022-11-03) ---------------- Backwards incompatible changes ++++++++++++++++++++++++++++++ - Drop support for Python 2.7 and 3.5. Features ++++++++ - Officially support Python 3.11. - Allow to use the Python 3.11 feature of exception groups and except\* (PEP 654). 5.2 (2021-11-19) ---------------- - Document that ``__name__`` is needed to define classes. - Add support for Python 3.10. Auditing the Python 3.10 change log did not reveal any changes which require actions in RestrictedPython. - Avoid deprecation warnings when using Python 3.8+. (`#192 `_) 5.1 (2020-10-07) ---------------- Features ++++++++ - Add support for (Python 3.8+) assignment expressions (i.e. the ``:=`` operator) - Add support for Python 3.9 after checking the security implications of the syntax changes made in that version. - Add support for the ``bytes`` and ``sorted`` builtins (`#186 `_) Documentation +++++++++++++ - Document parameter ``mode`` for the ``compile_restricted`` functions (`#157 `_) - Fix documentation for ``compile_restricted_function`` (`#158 `_) Fixes +++++ - Fix ``compile_restricted_function`` with SyntaxErrors that have no text (`#181 `_) - Drop install dependency on ``setuptools``. (`#189 `_) 5.0 (2019-09-03) ---------------- Breaking changes ++++++++++++++++ - Revert the allowance of the ``...`` (Ellipsis) statement, as of 4.0. It is not needed to support Python 3.8. The security implications of the Ellipsis Statement is not 100 % clear and is not checked. ``...`` (Ellipsis) is disallowed again. Features ++++++++ - Add support for f-strings in Python 3.6+. (`#123 `_) 4.0 (2019-05-10) ---------------- Changes since 3.6.0: Breaking changes ++++++++++++++++ - The ``compile_restricted*`` functions now return a ``namedtuple CompileResult`` instead of a simple ``tuple``. - Drop the old implementation of version 3.x: `RCompile.py`, `SelectCompiler.py`, `MutatingWorker.py`, `RestrictionMutator.py` and `tests/verify.py`. - Drop support for long-deprecated ``sets`` module. Security related issues +++++++++++++++++++++++ - RestrictedPython now ships with a default implementation for ``_getattr_`` which prevents from using the ``format()`` method on str/unicode as it is not safe, see: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ **Caution:** If you do not already have secured the access to this ``format()`` method in your ``_getattr_`` implementation use ``RestrictedPython.Guards.safer_getattr()`` in your implementation to benefit from this fix. Features ++++++++ - Mostly complete rewrite based on Python AST module. [loechel (Alexander Loechel), icemac (Michael Howitz), stephan-hof (Stephan Hofmockel), tlotze (Thomas Lotze)] - Add support for Python 3.5, 3.6, 3.7. - Add preliminary support for Python 3.8. as of 3.8.0a3 is released. - Warn when using another Python implementation than CPython as it is not safe to use RestrictedPython with other versions than CPyton. See https://bitbucket.org/pypy/pypy/issues/2653 for PyPy. - Allow the ``...`` (Ellipsis) statement. It is needed to support Python 3.8. - Allow `yield` and `yield from` statements. Generator functions would now work in RestrictedPython. - Allow the following magic methods to be defined on classes. (`#104 `_) They cannot be called directly but by the built-in way to use them (e. g. class instantiation, or comparison): + ``__init__`` + ``__contains__`` + ``__lt__`` + ``__le__`` + ``__eq__`` + ``__ne__`` + ``__gt__`` + ``__ge__`` - Imports like ``from a import *`` (so called star imports) are now forbidden as they allow to import names starting with an underscore which could override protected build-ins. (`#102 `_) - Allow to use list comprehensions in the default implementation of ``RestrictionCapableEval.eval()``. - Switch to pytest as test runner. - Bring test coverage to 100 %. Bug fixes +++++++++ - Improve `.Guards.safer_getattr` to prevent accessing names starting with underscore. (`#142 `_) 3.6.0 (2010-07-09) ------------------ - Add name check for names assigned during imports using the ``from x import y`` format. - Add test for name check when assigning an alias using multiple-context ``with`` statements in Python 2.7. - Add tests for protection of the iterators for dict and set comprehensions in Python 2.7. 3.6.0a1 (2010-06-05) -------------------- - Remove support for ``DocumentTemplate.sequence`` - this is handled in the DocumentTemplate package itself. 3.5.2 (2010-04-30) ------------------ - Remove a testing dependency on ``zope.testing``. 3.5.1 (2009-03-17) ------------------ - Add tests for ``Utilities`` module. - Filter DeprecationWarnings when importing Python's ``sets`` module. 3.5.0 (2009-02-09) ------------------ - Drop legacy support for Python 2.1 / 2.2 (``__future__`` imports of ``nested_scopes`` / ``generators``.). 3.4.3 (2008-10-26) ------------------ - Fix deprecation warning: ``with`` is now a reserved keyword on Python 2.6. That means RestrictedPython should run on Python 2.6 now. Thanks to Ranjith Kannikara, GSoC Student for the patch. - Add tests for ternary if expression and for ``with`` keyword and context managers. 3.4.2 (2007-07-28) ------------------ - Changed homepage URL to the PyPI site - Improve ``README.txt``. 3.4.1 (2007-06-23) ------------------ - Fix http://www.zope.org/Collectors/Zope/2295: Bare conditional in a Zope 2 PythonScript followed by a comment causes SyntaxError. 3.4.0 (2007-06-04) ------------------ - RestrictedPython now has its own release cycle as a separate project. - Synchronized with RestrictedPython from Zope 2 tree. 3.2.0 (2006-01-05) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.2.0 release. - No changes from 3.1.0. 3.1.0 (2005-10-03) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope 3.1.0 release. - Remove unused fossil module, ``SafeMapping``. - Replaced use of deprecated ``whrandom`` module with ``random`` (aliased to ``whrandom`` for backward compatibility). 3.0.0 (2004-11-07) ------------------ - Corresponds to the verison of the RestrictedPython package shipped as part of the Zope X3.0.0 release. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/SOURCES.txt0000644000076600000240000000617114744366241024175 0ustar00m.howitzstaff.pre-commit-config.yaml .readthedocs.yaml CHANGES.rst CONTRIBUTING.md COPYRIGHT.txt LICENSE.txt MANIFEST.in README.rst buildout.cfg constraints.txt pyproject.toml setup.cfg setup.py tox.ini docs/Makefile docs/changes.rst docs/conf.py docs/idea.rst docs/index.rst docs/logo.jpg docs/make.bat docs/requirements.txt docs/contributing/changes_from310to311.rst docs/contributing/changes_from311to312.rst docs/contributing/changes_from312to313.rst docs/contributing/changes_from38to39.rst docs/contributing/changes_from39to310.rst docs/contributing/index.rst docs/contributing/ast/python3_10.ast docs/contributing/ast/python3_11.ast docs/contributing/ast/python3_12.ast docs/contributing/ast/python3_13.ast docs/contributing/ast/python3_8.ast docs/contributing/ast/python3_9.ast docs/install/index.rst docs/roadmap/index.rst docs/usage/api.rst docs/usage/basic_usage.rst docs/usage/framework_usage.rst docs/usage/index.rst docs/usage/policy.rst src/RestrictedPython/Eval.py src/RestrictedPython/Guards.py src/RestrictedPython/Limits.py src/RestrictedPython/PrintCollector.py src/RestrictedPython/Utilities.py src/RestrictedPython/__init__.py src/RestrictedPython/_compat.py src/RestrictedPython/compile.py src/RestrictedPython/transformer.py src/RestrictedPython.egg-info/PKG-INFO src/RestrictedPython.egg-info/SOURCES.txt src/RestrictedPython.egg-info/dependency_links.txt src/RestrictedPython.egg-info/not-zip-safe src/RestrictedPython.egg-info/requires.txt src/RestrictedPython.egg-info/top_level.txt tests/__init__.py tests/helper.py tests/test_Guards.py tests/test_NamedExpr.py tests/test_Utilities.py tests/test_compile.py tests/test_compile_restricted_function.py tests/test_eval.py tests/test_imports.py tests/test_iterating_over_dict_items.py tests/test_print_function.py tests/builtins/test_limits.py tests/builtins/test_utilities.py tests/transformer/test_assert.py tests/transformer/test_assign.py tests/transformer/test_async.py tests/transformer/test_attribute.py tests/transformer/test_augassign.py tests/transformer/test_base_types.py tests/transformer/test_breakpoint.py tests/transformer/test_call.py tests/transformer/test_classdef.py tests/transformer/test_comparators.py tests/transformer/test_conditional.py tests/transformer/test_dict_comprehension.py tests/transformer/test_eval_exec.py tests/transformer/test_fstring.py tests/transformer/test_functiondef.py tests/transformer/test_generic.py tests/transformer/test_global_local.py tests/transformer/test_import.py tests/transformer/test_inspect.py tests/transformer/test_iterator.py tests/transformer/test_lambda.py tests/transformer/test_loop.py tests/transformer/test_name.py tests/transformer/test_slice.py tests/transformer/test_subscript.py tests/transformer/test_try.py tests/transformer/test_with_stmt.py tests/transformer/test_yield.py tests/transformer/operators/test_arithmetic_operators.py tests/transformer/operators/test_bit_wise_operators.py tests/transformer/operators/test_bool_operators.py tests/transformer/operators/test_comparison_operators.py tests/transformer/operators/test_identity_operators.py tests/transformer/operators/test_logical_operators.py tests/transformer/operators/test_unary_operators.py././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/dependency_links.txt0000644000076600000240000000000114744366241026352 0ustar00m.howitzstaff ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/not-zip-safe0000644000076600000240000000000114744366241024532 0ustar00m.howitzstaff ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/requires.txt0000644000076600000240000000005714744366241024706 0ustar00m.howitzstaff [docs] Sphinx furo [test] pytest pytest-mock ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616545.0 restrictedpython-8.0/src/RestrictedPython.egg-info/top_level.txt0000644000076600000240000000002114744366241025027 0ustar00m.howitzstaffRestrictedPython ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7452915 restrictedpython-8.0/tests/0000755000076600000240000000000014744366242015654 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/__init__.py0000644000076600000240000000010614744366240017760 0ustar00m.howitzstaff# Make it a package so we can import from helper.py inside the tests. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1737616545.7456055 restrictedpython-8.0/tests/builtins/0000755000076600000240000000000014744366242017505 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/builtins/test_limits.py0000644000076600000240000000341014744366240022413 0ustar00m.howitzstaffimport pytest from RestrictedPython.Limits import limited_list from RestrictedPython.Limits import limited_range from RestrictedPython.Limits import limited_tuple def test_limited_range_length_1(): result = limited_range(1) assert result == range(0, 1) def test_limited_range_length_10(): result = limited_range(10) assert result == range(0, 10) def test_limited_range_5_10(): result = limited_range(5, 10) assert result == range(5, 10) def test_limited_range_5_10_sm1(): result = limited_range(5, 10, -1) assert result == range(5, 10, -1) def test_limited_range_15_10_s2(): result = limited_range(15, 10, 2) assert result == range(15, 10, 2) def test_limited_range_no_input(): with pytest.raises(TypeError): limited_range() def test_limited_range_more_steps(): with pytest.raises(AttributeError): limited_range(0, 0, 0, 0) def test_limited_range_zero_step(): with pytest.raises(ValueError): limited_range(0, 10, 0) def test_limited_range_range_overflow(): with pytest.raises(ValueError) as excinfo: limited_range(0, 5000, 1) assert ( 'To be created range() object would be to large, ' 'in RestrictedPython we only allow 1000 elements in a range.' in str(excinfo.value) ) def test_limited_list_valid_list_input(): input = [1, 2, 3] result = limited_list(input) assert result == input def test_limited_list_invalid_string_input(): with pytest.raises(TypeError): limited_list('input') def test_limited_tuple_valid_list_input(): input = [1, 2, 3] result = limited_tuple(input) assert result == tuple(input) def test_limited_tuple_invalid_string_input(): with pytest.raises(TypeError): limited_tuple('input') ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/builtins/test_utilities.py0000644000076600000240000001076714744366240023142 0ustar00m.howitzstaffimport math import random import string def test_string_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins # we no longer provide access to ``string`` itself, only to # a restricted view of it (``rstring``) rstring = utility_builtins['string'] assert rstring.__name__ == string.__name__ # ensure it does not provide access to ``string`` via # ``AttributeError.obj`` try: rstring.unexisting_attribute except AttributeError as e: assert e.obj is rstring def test_math_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins assert utility_builtins['math'] is math def test_whrandom_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins assert utility_builtins['whrandom'] is random def test_random_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins assert utility_builtins['random'] is random def test_set_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins assert utility_builtins['set'] is set def test_frozenset_in_utility_builtins(): from RestrictedPython.Utilities import utility_builtins assert utility_builtins['frozenset'] is frozenset def test_DateTime_in_utility_builtins_if_importable(): try: import DateTime except ImportError: pass else: from RestrictedPython.Utilities import utility_builtins assert DateTime.__name__ in utility_builtins def test_same_type_in_utility_builtins(): from RestrictedPython.Utilities import same_type from RestrictedPython.Utilities import utility_builtins assert utility_builtins['same_type'] is same_type def test_test_in_utility_builtins(): from RestrictedPython.Utilities import test from RestrictedPython.Utilities import utility_builtins assert utility_builtins['test'] is test def test_reorder_in_utility_builtins(): from RestrictedPython.Utilities import reorder from RestrictedPython.Utilities import utility_builtins assert utility_builtins['reorder'] is reorder def test_sametype_only_one_arg(): from RestrictedPython.Utilities import same_type assert same_type(object()) def test_sametype_only_two_args_same(): from RestrictedPython.Utilities import same_type assert same_type(object(), object()) def test_sametype_only_two_args_different(): from RestrictedPython.Utilities import same_type class Foo: pass assert same_type(object(), Foo()) is False def test_sametype_only_multiple_args_same(): from RestrictedPython.Utilities import same_type assert same_type(object(), object(), object(), object()) def test_sametype_only_multipe_args_one_different(): from RestrictedPython.Utilities import same_type class Foo: pass assert same_type(object(), object(), Foo()) is False def test_test_single_value_true(): from RestrictedPython.Utilities import test assert test(True) is True def test_test_single_value_False(): from RestrictedPython.Utilities import test assert test(False) is False def test_test_even_values_first_true(): from RestrictedPython.Utilities import test assert test(True, 'first', True, 'second') == 'first' def test_test_even_values_not_first_true(): from RestrictedPython.Utilities import test assert test(False, 'first', True, 'second') == 'second' def test_test_odd_values_first_true(): from RestrictedPython.Utilities import test assert test(True, 'first', True, 'second', False) == 'first' def test_test_odd_values_not_first_true(): from RestrictedPython.Utilities import test assert test(False, 'first', True, 'second', False) == 'second' def test_test_odd_values_last_true(): from RestrictedPython.Utilities import test assert test(False, 'first', False, 'second', 'third') == 'third' def test_test_odd_values_last_false(): from RestrictedPython.Utilities import test assert test(False, 'first', False, 'second', False) is False def test_reorder_with__None(): from RestrictedPython.Utilities import reorder before = ['a', 'b', 'c', 'd', 'e'] without = ['a', 'c', 'e'] after = reorder(before, without=without) assert after == [('b', 'b'), ('d', 'd')] def test_reorder_with__not_None(): from RestrictedPython.Utilities import reorder before = ['a', 'b', 'c', 'd', 'e'] with_ = ['a', 'd'] without = ['a', 'c', 'e'] after = reorder(before, with_=with_, without=without) assert after == [('d', 'd')] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/helper.py0000644000076600000240000000220414744366240017501 0ustar00m.howitzstaffimport RestrictedPython.Guards from RestrictedPython import compile_restricted_eval from RestrictedPython import compile_restricted_exec def _compile(compile_func, source): """Compile some source with a compile func.""" result = compile_func(source) assert result.errors == (), result.errors assert result.code is not None return result.code def _execute(code, glb, exc_func): """Execute compiled code using `exc_func`. glb ... globals, gets injected with safe_builtins """ if glb is None: glb = {} if '__builtins__' not in glb: glb['__builtins__'] = RestrictedPython.Guards.safe_builtins.copy() if exc_func == 'eval': return eval(code, glb) else: exec(code, glb) return glb def restricted_eval(source, glb=None): """Call compile_restricted_eval and actually eval it.""" code = _compile(compile_restricted_eval, source) return _execute(code, glb, 'eval') def restricted_exec(source, glb=None): """Call compile_restricted_eval and actually exec it.""" code = _compile(compile_restricted_exec, source) return _execute(code, glb, 'exec') ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_Guards.py0000644000076600000240000002415114744366240020513 0ustar00m.howitzstaffimport pytest from RestrictedPython import compile_restricted_exec from RestrictedPython.Guards import guarded_unpack_sequence from RestrictedPython.Guards import safe_builtins from RestrictedPython.Guards import safe_globals from RestrictedPython.Guards import safer_getattr from tests.helper import restricted_eval from tests.helper import restricted_exec def _write_(x): return x def test_Guards_bytes(): """It contains bytes""" assert restricted_eval('bytes(1)') == bytes(1) def test_Guards_sorted(): """It contains sorted""" assert restricted_eval('sorted([5, 2, 8, 1])') == sorted([5, 2, 8, 1]) def test_Guards__safe_builtins__1(): """It contains `slice()`.""" assert restricted_eval('slice(1)') == slice(1) def test_Guards__safe_builtins__2(): """It allows to define new classes by allowing `__build_class__`. """ class_can_be_defined_code = ''' class MyClass: value = None def display(self): return str(self.value) ob1 = MyClass() ob1.value = 2411 result = ob1.display()''' restricted_globals = dict( result=None, __name__='restricted_module', __metaclass__=type, _write_=_write_, _getattr_=getattr) restricted_exec(class_can_be_defined_code, restricted_globals) assert restricted_globals['result'] == '2411' def test_Guards__guarded_setattr__1(): """It allows use setattr and delattr when _guarded_writes is True. """ class MyObjectD: value = None _guarded_writes = 1 setattr_code = ''' my_object_d = MyObjectD() setattr(my_object_d, 'value', 9999)''' delattr_code = "delattr(my_object_d, 'value')" restricted_globals = dict( __builtins__=safe_builtins, MyObjectD=MyObjectD, my_object_d=None, __name__='restricted_module', __metaclass__=type, _write_=_write_, _getattr_=getattr,) restricted_exec(setattr_code, restricted_globals) assert 9999 == restricted_globals['my_object_d'].value restricted_exec(delattr_code, restricted_globals) assert None is restricted_globals['my_object_d'].value def test_Guards__write_wrapper__1(): """It wraps the value attribute when it is not marked with _guarded_writes.""" class ObjWithoutGuardedWrites: my_attr = None setattr_without_guarded_writes_code = ''' my_ob = ObjWithoutGuardedWrites() setattr(my_ob, 'my_attr', 'bar')''' restricted_globals = dict( __builtins__=safe_builtins, ObjWithoutGuardedWrites=ObjWithoutGuardedWrites, my_attr=None, __name__='restricted_module', __metaclass__=type, _write_=_write_, _getattr_=getattr,) with pytest.raises(TypeError) as excinfo: restricted_exec( setattr_without_guarded_writes_code, restricted_globals) assert 'attribute-less object (assign or del)' in str(excinfo.value) def test_Guards__write_wrapper__2(): """It wraps setattr and it works when guarded_setattr is implemented.""" class ObjWithGuardedSetattr: my_attr = None def __guarded_setattr__(self, key, value): setattr(self, key, value) set_attribute_using_guarded_setattr_code = ''' myobj_with_guarded_setattr = ObjWithGuardedSetattr() setattr(myobj_with_guarded_setattr, 'my_attr', 'bar') ''' restricted_globals = dict( __builtins__=safe_builtins, ObjWithGuardedSetattr=ObjWithGuardedSetattr, myobj_with_guarded_setattr=None, __name__='restricted_module', __metaclass__=type, _write_=_write_, _getattr_=getattr,) restricted_exec( set_attribute_using_guarded_setattr_code, restricted_globals) assert restricted_globals['myobj_with_guarded_setattr'].my_attr == 'bar' def test_Guards__guarded_unpack_sequence__1(mocker): """If the sequence is shorter then expected the interpreter will raise 'ValueError: need more than X value to unpack' anyway => No childs are unpacked => nothing to protect.""" src = "one, two, three = (1, 2)" _getiter_ = mocker.stub() _getiter_.side_effect = lambda it: it glb = { '_getiter_': _getiter_, '_unpack_sequence_': guarded_unpack_sequence, } with pytest.raises(ValueError) as excinfo: restricted_exec(src, glb) assert 'values to unpack' in str(excinfo.value) assert _getiter_.call_count == 1 STRING_DOT_FORMAT_DENIED = """\ a = 'Hello {}' b = a.format('world') """ def test_Guards__safer_getattr__1a(): """It prevents using the format method of a string. format() is considered harmful: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ """ glb = { '__builtins__': safe_builtins, } with pytest.raises(NotImplementedError) as err: restricted_exec(STRING_DOT_FORMAT_DENIED, glb) assert 'Using the format*() methods of `str` is not safe' == str(err.value) # contributed by Ward Theunisse STRING_DOT_FORMAT_MAP_DENIED = """\ a = 'Hello {foo.__dict__}' b = a.format_map({foo:str}) """ def test_Guards__safer_getattr__1b(): """It prevents using the format method of a string. format() is considered harmful: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ """ glb = { '__builtins__': safe_builtins, } with pytest.raises(NotImplementedError) as err: restricted_exec(STRING_DOT_FORMAT_MAP_DENIED, glb) assert 'Using the format*() methods of `str` is not safe' == str(err.value) # contributed by Abhishek Govindarasu STR_DOT_FORMAT_DENIED = """\ str.format('{0.__class__.__mro__[1]}', int) """ def test_Guards__safer_getattr__1c(): """It prevents using the format method of a string. format() is considered harmful: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ """ glb = { '__builtins__': safe_builtins, } with pytest.raises(NotImplementedError) as err: restricted_exec(STR_DOT_FORMAT_DENIED, glb) assert 'Using the format*() methods of `str` is not safe' == str(err.value) STR_DOT_FORMAT_MAP_DENIED = """\ str.format_map('Hello {foo.__dict__}', {'foo':str}) """ def test_Guards__safer_getattr__1d(): """It prevents using the format method of a string. format() is considered harmful: http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/ """ glb = { '__builtins__': safe_builtins, } with pytest.raises(NotImplementedError) as err: restricted_exec(STR_DOT_FORMAT_MAP_DENIED, glb) assert 'Using the format*() methods of `str` is not safe' == str(err.value) SAFER_GETATTR_ALLOWED = """\ class A: def __init__(self, value): self.value = value a = A(2) result = getattr(a, 'value') """ def test_Guards__safer_getattr__3(): """It allows to use `safer_getattr`.""" restricted_globals = dict( __builtins__=safe_builtins, __name__=None, __metaclass__=type, _write_=_write_, getattr=safer_getattr, result=None, ) restricted_exec(SAFER_GETATTR_ALLOWED, restricted_globals) assert restricted_globals['result'] == 2 SAFER_GETATTR_BREAKOUT = """\ def g(obj, name): # create class FakeString which inherits from str class FakeString(str): # overload startswith() to always return false def startswith(self, _): return False return getattr(obj, FakeString(name)) # call str.__class__.__base__.__subclasses__() subclasses = g(g(g(str, "__class__"), "__base__"), "__subclasses__")() # traverse list of subclasses until we reach the BuiltinImporter class x = "test" while "BuiltinImporter" not in str(x): x = subclasses.pop() continue # use BuiltinImporter to import 'os' and access to a not allowed function result = x.load_module('os').getgid() """ def test_Guards__safer_getattr__4(): restricted_globals = dict( __builtins__=safe_builtins, __name__=None, __metaclass__=type, # _write_=_write_, getattr=safer_getattr, result=None, ) with pytest.raises(TypeError) as err: restricted_exec(SAFER_GETATTR_BREAKOUT, restricted_globals) assert 'type(name) must be str' == str(err.value) SAFER_GETATTR_BREAKOUT2 = """\ g = None leak = None def test(): global g, leak leak = getattr(getattr(getattr(g, "gi_frame"), "f_back"), "f_back") yield leak g = test() g.send(None) os = getattr(leak, "f_builtins").get('__import__')('os') result = os.getgid() """ def test_Guards__safer_getattr__5(): restricted_globals = dict( __builtins__=safe_builtins, __name__=None, __metaclass__=type, # _write_=_write_, getattr=safer_getattr, result=None, ) # restricted_exec(SAFER_GETATTR_BREAKOUT2, restricted_globals) # assert restricted_globals['result'] == 20 with pytest.raises(AttributeError) as err: restricted_exec(SAFER_GETATTR_BREAKOUT2, restricted_globals) assert ( '"gi_frame" is a restricted name, ' 'that is forbidden to access in RestrictedPython.' ) == str(err.value) def test_Guards__safer_getattr_raise(): from types import SimpleNamespace from RestrictedPython.Guards import safer_getattr_raise o = SimpleNamespace(a="a") assert safer_getattr_raise(o, "a") == "a" assert safer_getattr_raise(o, "b", None) is None with pytest.raises(AttributeError): safer_getattr_raise(o, "b") def test_call_py3_builtins(): """It should not be allowed to access global builtins in Python3.""" result = compile_restricted_exec('builtins["getattr"]') assert result.code is None assert result.errors == ('Line 1: "builtins" is a reserved name.',) GETATTR_UNDERSCORE_NAME = """ getattr([], '__class__') """ def test_safer_getattr__underscore_name(): """It prevents accessing an attribute which starts with an underscore.""" result = compile_restricted_exec(GETATTR_UNDERSCORE_NAME) assert result.errors == () assert result.warnings == [] glb = safe_globals.copy() glb['getattr'] = safer_getattr with pytest.raises(AttributeError) as err: exec(result.code, glb, {}) assert ( '"__class__" is an invalid attribute name because it starts with "_"' == str(err.value)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_NamedExpr.py0000644000076600000240000000335314744366240021152 0ustar00m.howitzstaff"""Assignment expression (``NamedExpr``) tests.""" from ast import NodeTransformer from ast import parse from unittest import TestCase from RestrictedPython import compile_restricted from RestrictedPython import safe_globals class TestNamedExpr(TestCase): def test_works(self): code, gs = compile_str("if x:= x + 1: True\n") gs["x"] = 0 exec(code, gs) self.assertEqual(gs["x"], 1) def test_no_private_target(self): with self.assertRaises(SyntaxError): compile_str("if _x_:= 1: True\n") def test_simple_only(self): # we test here that only a simple variable is allowed # as assignemt expression target # Currently (Python 3.8, 3.9), this is enforced by the # Python concrete syntax; therefore, some (``ast``) trickery is # necessary to produce a test for it. class TransformNamedExprTarget(NodeTransformer): def visit_NamedExpr(self, node): # this is brutal but sufficient for the test node.target = None return node mod = parse("if x:= x + 1: True\n") mod = TransformNamedExprTarget().visit(mod) with self.assertRaisesRegex( SyntaxError, "Assignment expressions are only allowed for simple target"): code, gs = compile_str(mod) def compile_str(s, name=""): """code and globals for *s*. *s* must be acceptable for ``compile_restricted`` (this is (especially) the case for an ``str`` or ``ast.Module``). *name* is a ``str`` used in error messages. """ code = compile_restricted(s, name, 'exec') gs = safe_globals.copy() gs["__debug__"] = True # assert active return code, gs ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_Utilities.py0000644000076600000240000000272214744366240021241 0ustar00m.howitzstaffimport pytest from RestrictedPython.Utilities import reorder from RestrictedPython.Utilities import test from RestrictedPython.Utilities import utility_builtins def test_Utilities__test_1(): """It returns the first arg after the first argument which is True""" assert test(True, 1, False, 2) == 1 assert test(False, 1, True, 2) == 2 assert test(False, 1, False, 2, True, 3) == 3 def test_Utilities__test_2(): """If the above is not met, and there is an extra argument it returns it.""" assert test(False, 1, False, 2, 3) == 3 assert test(False, 1, 2) == 2 assert test(1) == 1 assert not test(False) def test_Utilities__test_3(): """It returns None if there are only False args followed by something.""" assert test(False, 1) is None assert test(False, 1, False, 2) is None def test_Utilities__reorder_1(): """It also supports 2-tuples containing key, value.""" s = [('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')] _with = [('k2', 'v2'), ('k3', 'v3')] without = [('k2', 'v2'), ('k4', 'v4')] assert reorder(s, _with, without) == [('k3', 'v3')] def test_Utilities_string_Formatter(): """Access to ``string.Formatter`` is denied.""" string = utility_builtins["string"] # access successful in principle assert string.ascii_lowercase == 'abcdefghijklmnopqrstuvwxyz' with pytest.raises(NotImplementedError) as exc: string.Formatter assert 'string.Formatter is not safe' == str(exc.value) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_compile.py0000644000076600000240000001674314744366240020726 0ustar00m.howitzstaffimport platform import types import pytest from RestrictedPython import CompileResult from RestrictedPython import compile_restricted from RestrictedPython import compile_restricted_eval from RestrictedPython import compile_restricted_exec from RestrictedPython import compile_restricted_single from RestrictedPython._compat import IS_PY310_OR_GREATER from RestrictedPython._compat import IS_PY311_OR_GREATER from tests.helper import restricted_eval def test_compile__compile_restricted_invalid_code_input(): with pytest.raises(TypeError): compile_restricted(object(), '', 'exec') with pytest.raises(TypeError): compile_restricted(object(), '', 'eval') with pytest.raises(TypeError): compile_restricted(object(), '', 'single') def test_compile__compile_restricted_invalid_policy_input(): with pytest.raises(TypeError): compile_restricted("pass", '', 'exec', policy=object) def test_compile__compile_restricted_invalid_mode_input(): with pytest.raises(TypeError): compile_restricted("pass", '', 'invalid') INVALID_ASSINGMENT = """ 1 = 2 """ def test_compile__invalid_syntax(): with pytest.raises(SyntaxError) as err: compile_restricted(INVALID_ASSINGMENT, '', 'exec') if IS_PY310_OR_GREATER: assert "SyntaxError: cannot assign to literal here." in str(err.value) else: assert "cannot assign to literal at statement:" in str(err.value) def test_compile__compile_restricted_exec__1(): """It returns a CompileResult on success.""" result = compile_restricted_exec('a = 42') assert result.__class__ == CompileResult assert result.errors == () assert result.warnings == [] assert result.used_names == {} glob = {} exec(result.code, glob) assert glob['a'] == 42 def test_compile__compile_restricted_exec__2(): """It compiles without restrictions if there is no policy.""" result = compile_restricted_exec('_a = 42', policy=None) assert result.errors == () assert result.warnings == [] assert result.used_names == {} glob = {} exec(result.code, glob) assert glob['_a'] == 42 def test_compile__compile_restricted_exec__3(): """It returns a tuple of errors if the code is not allowed. There is no code in this case. """ result = compile_restricted_exec('_a = 42\n_b = 43') errors = ( 'Line 1: "_a" is an invalid variable name because it starts with "_"', 'Line 2: "_b" is an invalid variable name because it starts with "_"') assert result.errors == errors assert result.warnings == [] assert result.used_names == {} assert result.code is None def test_compile__compile_restricted_exec__4(): """It does not return code on a SyntaxError.""" result = compile_restricted_exec('asdf|') assert result.code is None assert result.warnings == [] assert result.used_names == {} assert result.errors == ( "Line 1: SyntaxError: invalid syntax at statement: 'asdf|'",) def test_compile__compile_restricted_exec__5(): """It does not return code if the code contains a NULL byte.""" result = compile_restricted_exec('a = 5\x00') assert result.code is None assert result.warnings == [] assert result.used_names == {} if IS_PY311_OR_GREATER: assert result.errors == ( 'Line None: SyntaxError: source code string cannot contain null' ' bytes at statement: None',) else: assert result.errors == ( 'source code string cannot contain null bytes',) EXEC_STATEMENT = """\ def no_exec(): exec 'q = 1' """ def test_compile__compile_restricted_exec__10(): """It is a SyntaxError to use the `exec` statement.""" result = compile_restricted_exec(EXEC_STATEMENT) if IS_PY310_OR_GREATER: assert ( 'Line 2: SyntaxError: Missing parentheses in call to \'exec\'. Did' ' you mean exec(...)? at statement: "exec \'q = 1\'"', ) == result.errors else: assert ( 'Line 2: SyntaxError: Missing parentheses in call to \'exec\' at' ' statement: "exec \'q = 1\'"',) == result.errors FUNCTION_DEF = """\ def a(): pass """ def test_compile__compile_restricted_eval__1(): """It compiles code as an Expression. Function definitions are not allowed in Expressions. """ result = compile_restricted_eval(FUNCTION_DEF) assert result.errors == ( "Line 1: SyntaxError: invalid syntax at statement: 'def a():'",) def test_compile__compile_restricted_eval__2(): """It compiles code as an Expression.""" assert restricted_eval('4 * 6') == 24 def test_compile__compile_restricted_eval__used_names(): result = compile_restricted_eval("a + b + func(x)") assert result.errors == () assert result.warnings == [] assert result.used_names == {'a': True, 'b': True, 'x': True, 'func': True} def test_compile__compile_restricted_single__1(): """It compiles code as an Interactive.""" result = compile_restricted_single('x = 4 * 6') assert result.errors == () assert result.warnings == [] assert result.code is not None locals = {} exec(result.code, {}, locals) assert locals["x"] == 24 def test_compile__compile_restricted__2(): """It compiles code as an Interactive.""" code = compile_restricted('x = 4 * 6', filename="", mode="single") locals = {} exec(code, {}, locals) assert locals["x"] == 24 PRINT_EXAMPLE = """ def a(): print('Hello World!') """ def test_compile_restricted(): """It emits Python warnings. For actual tests for print statement see: test_print_stmt.py """ with pytest.warns(SyntaxWarning) as record: result = compile_restricted(PRINT_EXAMPLE, '', 'exec') assert isinstance(result, types.CodeType) assert len(record) == 1 assert record[0].message.args[0] == \ "Line 2: Prints, but never reads 'printed' variable." EVAL_EXAMPLE = """ def a(): eval('2 + 2') """ def test_compile_restricted_eval(): """This test checks compile_restricted itself if that raise Python errors. """ with pytest.raises(SyntaxError, match="Line 3: Eval calls are not allowed."): compile_restricted(EVAL_EXAMPLE, '', 'exec') def test_compile___compile_restricted_mode__1(recwarn, mocker): """It warns when using another Python implementation than CPython.""" if platform.python_implementation() == 'CPython': # pragma: no cover # Using CPython we have to fake the check: mocker.patch('RestrictedPython.compile.IS_CPYTHON', new=False) compile_restricted('42') assert len(recwarn) == 1 w = recwarn.pop() assert w.category == RuntimeWarning assert str(w.message) == str( 'RestrictedPython is only supported on CPython: use on other Python ' 'implementations may create security issues.' ) @pytest.mark.skipif( platform.python_implementation() == 'CPython', reason='Warning only present if not CPython.') def test_compile_CPython_warning(recwarn, mocker): # pragma: no cover """It warns when using another Python implementation than CPython.""" assert platform.python_implementation() != 'CPython' with pytest.warns(RuntimeWarning) as record: compile_restricted('42') assert len(record) == 1 assert str(record[0].message) == str( 'RestrictedPython is only supported on CPython: use on other Python ' 'implementations may create security issues.' ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_compile_restricted_function.py0000644000076600000240000001371414744366240025056 0ustar00m.howitzstafffrom types import FunctionType from RestrictedPython import PrintCollector from RestrictedPython import compile_restricted_function from RestrictedPython import safe_builtins from RestrictedPython._compat import IS_PY310_OR_GREATER def test_compile_restricted_function(): p = '' body = """ print("Hello World!") return printed """ name = "hello_world" global_symbols = [] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', '_getattr_': getattr, '_print_': PrintCollector, '__builtins__': safe_builtins, } safe_locals = {} exec(result.code, safe_globals, safe_locals) hello_world = safe_locals['hello_world'] assert type(hello_world) is FunctionType assert hello_world() == 'Hello World!\n' def test_compile_restricted_function_func_wrapped(): p = '' body = """ print("Hello World!") return printed """ name = "hello_world" global_symbols = [] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', '_getattr_': getattr, '_print_': PrintCollector, '__builtins__': safe_builtins, } func = FunctionType(result.code, safe_globals) func() assert 'hello_world' in safe_globals hello_world = safe_globals['hello_world'] assert hello_world() == 'Hello World!\n' def test_compile_restricted_function_with_arguments(): p = 'input1, input2' body = """ print(input1 + input2) return printed """ name = "hello_world" global_symbols = [] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', '_getattr_': getattr, '_print_': PrintCollector, '__builtins__': safe_builtins, } safe_locals = {} exec(result.code, safe_globals, safe_locals) hello_world = safe_locals['hello_world'] assert type(hello_world) is FunctionType assert hello_world('Hello ', 'World!') == 'Hello World!\n' def test_compile_restricted_function_can_access_global_variables(): p = '' body = """ print(input) return printed """ name = "hello_world" global_symbols = ['input'] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', '_getattr_': getattr, 'input': 'Hello World!', '_print_': PrintCollector, '__builtins__': safe_builtins, } safe_locals = {} exec(result.code, safe_globals, safe_locals) hello_world = safe_locals['hello_world'] assert type(hello_world) is FunctionType assert hello_world() == 'Hello World!\n' def test_compile_restricted_function_pretends_the_code_is_executed_in_a_global_scope(): # NOQA: E501 p = '' body = """output = output + 'bar'""" name = "hello_world" global_symbols = ['output'] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', 'output': 'foo', '__builtins__': {}, } safe_locals = {} exec(result.code, safe_globals, safe_locals) hello_world = safe_locals['hello_world'] assert type(hello_world) is FunctionType hello_world() assert safe_globals['output'] == 'foobar' def test_compile_restricted_function_allows_invalid_python_identifiers_as_function_name(): # NOQA: E501 p = '' body = """output = output + 'bar'""" name = ".bar.__baz__" global_symbols = ['output'] result = compile_restricted_function( p, # parameters body, name, filename='', globalize=global_symbols ) assert result.code is not None assert result.errors == () safe_globals = { '__name__': 'script', 'output': 'foo', '__builtins__': {}, } safe_locals = {} exec(result.code, safe_globals, safe_locals) generated_function = tuple(safe_locals.values())[0] assert type(generated_function) is FunctionType generated_function() assert safe_globals['output'] == 'foobar' def test_compile_restricted_function_handle_SyntaxError(): p = '' body = """a(""" name = "broken" result = compile_restricted_function( p, # parameters body, name, ) assert result.code is None if IS_PY310_OR_GREATER: assert result.errors == ( "Line 1: SyntaxError: '(' was never closed at statement: 'a('", ) else: assert result.errors == ( "Line 1: SyntaxError: unexpected EOF while parsing at statement:" " 'a('", ) def test_compile_restricted_function_invalid_syntax(): p = '' body = '1=1' name = 'broken' result = compile_restricted_function( p, # parameters body, name, ) assert result.code is None assert len(result.errors) == 1 error_msg = result.errors[0] if IS_PY310_OR_GREATER: assert error_msg.startswith( "Line 1: SyntaxError: cannot assign to literal here. Maybe " ) else: assert error_msg.startswith( "Line 1: SyntaxError: cannot assign to literal at statement:" ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_eval.py0000644000076600000240000000530614744366240020216 0ustar00m.howitzstaffimport pytest from RestrictedPython.Eval import RestrictionCapableEval exp = """ {'a':[m.pop()]}['a'] \ + [m[0]] """ def test_init(): ob = RestrictionCapableEval(exp) assert ob.expr == "{'a':[m.pop()]}['a'] + [m[0]]" assert ob.used == ('m', ) assert ob.ucode is not None assert ob.rcode is None def test_init_with_syntax_error(): with pytest.raises(SyntaxError): RestrictionCapableEval("if:") def test_prepRestrictedCode(): ob = RestrictionCapableEval(exp) ob.prepRestrictedCode() assert ob.used == ('m', ) assert ob.rcode is not None def test_call(): ob = RestrictionCapableEval(exp) ret = ob(m=[1, 2]) assert ret == [2, 1] def test_eval(): ob = RestrictionCapableEval(exp) ret = ob.eval({'m': [1, 2]}) assert ret == [2, 1] def test_Eval__RestrictionCapableEval_1(): """It raises SyntaxError when there are errors (by using forbidden stuff) in the code.""" ob = RestrictionCapableEval("_a") with pytest.raises(SyntaxError): ob.prepRestrictedCode() def test_Eval__RestrictionCapableEval__2(): """It stores used names.""" ob = RestrictionCapableEval("[x for x in (1, 2, 3)]") assert ob.used == ('x',) def test_Eval__RestictionCapableEval__prepUnrestrictedCode_1(): """It does nothing when unrestricted code is already set by init.""" ob = RestrictionCapableEval("a") assert ob.used == ('a',) ob.expr = "b" ob.prepUnrestrictedCode() assert ob.used == ('a',) def test_Eval__RestictionCapableEval__prepUnrestrictedCode_2(): """It does not re-set 'used' if it is already set by an earlier call.""" ob = RestrictionCapableEval("a") assert ob.used == ('a',) ob.used = ('b',) # This is needed to force re-compilation ob.ucode = None ob.prepUnrestrictedCode() # If it was called again, used would be ('a',) again. assert ob.used == ('b',) def test_Eval__RestictionCapableEval__prepRestrictedCode_1(): """It does nothing when restricted code is already set by prepRestrictedCode.""" ob = RestrictionCapableEval("a") ob.prepRestrictedCode() assert ob.used == ('a',) ob.expr = "b" ob.prepRestrictedCode() assert ob.used == ('a',) def test_Eval__RestictionCapableEval__eval_1(): """It does not add names from the mapping to the global scope which are already there.""" ob = RestrictionCapableEval("a + b + c") ob.globals['c'] = 8 result = ob.eval(dict(a=1, b=2, c=4)) assert result == 11 def test_Eval__RestictionCapableEval__eval__2(): """It allows to use list comprehensions.""" ob = RestrictionCapableEval("[item for item in (1, 2)]") result = ob.eval({}) assert result == [1, 2] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_imports.py0000644000076600000240000000300014744366240020751 0ustar00m.howitzstaff""" Tests about imports """ import pytest from RestrictedPython import compile_restricted_exec from RestrictedPython import safe_builtins from tests.helper import restricted_exec OS_IMPORT_EXAMPLE = """ import os os.listdir('/') """ def test_os_import(): """It does not allow to import anything by default. The `__import__` function is not provided as it is not safe. """ # Caution: This test is broken on PyPy until the following issue is fixed: # https://bitbucket.org/pypy/pypy/issues/2653 # PyPy currently ignores the restriction of the `__builtins__`. glb = {'__builtins__': safe_builtins} with pytest.raises(ImportError) as err: restricted_exec(OS_IMPORT_EXAMPLE, glb) assert '__import__ not found' == str(err.value) BUILTINS_EXAMPLE = """ import builtins mygetattr = builtins['getattr'] """ def test_import_py3_builtins(): """It should not be allowed to access global builtins in Python3.""" result = compile_restricted_exec(BUILTINS_EXAMPLE) assert result.code is None assert result.errors == ( 'Line 2: "builtins" is a reserved name.', 'Line 4: "builtins" is a reserved name.' ) BUILTINS_AS_EXAMPLE = """ import builtins as glb mygetattr = glb['getattr'] """ def test_import_py3_as_builtins(): """It should not be allowed to access global builtins in Python3.""" result = compile_restricted_exec(BUILTINS_AS_EXAMPLE) assert result.code is None assert result.errors == ('Line 2: "builtins" is a reserved name.',) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_iterating_over_dict_items.py0000644000076600000240000000176214744366240024516 0ustar00m.howitzstaffimport pytest from RestrictedPython import compile_restricted_exec from RestrictedPython import safe_globals from RestrictedPython.Eval import default_guarded_getiter from RestrictedPython.Guards import guarded_iter_unpack_sequence ITERATE_OVER_DICT_ITEMS = """ d = {'a': 'b'} for k, v in d.items(): pass """ def test_iterate_over_dict_items_plain(): glb = {} result = compile_restricted_exec(ITERATE_OVER_DICT_ITEMS) assert result.code is not None assert result.errors == () with pytest.raises(NameError) as excinfo: exec(result.code, glb, None) assert "name '_iter_unpack_sequence_' is not defined" in str(excinfo.value) def test_iterate_over_dict_items_safe(): glb = safe_globals.copy() glb['_getiter_'] = default_guarded_getiter glb['_iter_unpack_sequence_'] = guarded_iter_unpack_sequence result = compile_restricted_exec(ITERATE_OVER_DICT_ITEMS) assert result.code is not None assert result.errors == () exec(result.code, glb, None) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/test_print_function.py0000644000076600000240000002010614744366240022323 0ustar00m.howitzstaffimport RestrictedPython from RestrictedPython.PrintCollector import PrintCollector compiler = RestrictedPython.compile.compile_restricted_exec ALLOWED_PRINT_FUNCTION = """ from __future__ import print_function print ('Hello World!') """ ALLOWED_PRINT_FUNCTION_WITH_END = """ from __future__ import print_function print ('Hello World!', end='') """ ALLOWED_PRINT_FUNCTION_MULTI_ARGS = """ from __future__ import print_function print ('Hello World!', 'Hello Earth!') """ ALLOWED_PRINT_FUNCTION_WITH_SEPARATOR = """ from __future__ import print_function print ('a', 'b', 'c', sep='|', end='!') """ PRINT_FUNCTION_WITH_NONE_SEPARATOR = """ from __future__ import print_function print ('a', 'b', sep=None) """ PRINT_FUNCTION_WITH_NONE_END = """ from __future__ import print_function print ('a', 'b', end=None) """ PRINT_FUNCTION_WITH_NONE_FILE = """ from __future__ import print_function print ('a', 'b', file=None) """ def test_print_function__simple_prints(): glb = {'_print_': PrintCollector, '_getattr_': None} code, errors = compiler(ALLOWED_PRINT_FUNCTION)[:2] assert errors == () assert code is not None exec(code, glb) assert glb['_print']() == 'Hello World!\n' code, errors = compiler(ALLOWED_PRINT_FUNCTION_WITH_END)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == 'Hello World!' code, errors = compiler(ALLOWED_PRINT_FUNCTION_MULTI_ARGS)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == 'Hello World! Hello Earth!\n' code, errors = compiler(ALLOWED_PRINT_FUNCTION_WITH_SEPARATOR)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "a|b|c!" code, errors = compiler(PRINT_FUNCTION_WITH_NONE_SEPARATOR)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "a b\n" code, errors = compiler(PRINT_FUNCTION_WITH_NONE_END)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "a b\n" code, errors = compiler(PRINT_FUNCTION_WITH_NONE_FILE)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "a b\n" ALLOWED_PRINT_FUNCTION_WITH_STAR_ARGS = """ from __future__ import print_function to_print = (1, 2, 3) print(*to_print) """ def test_print_function_with_star_args(mocker): _apply_ = mocker.stub() _apply_.side_effect = lambda func, *args, **kwargs: func(*args, **kwargs) glb = { '_print_': PrintCollector, '_getattr_': None, "_apply_": _apply_ } code, errors = compiler(ALLOWED_PRINT_FUNCTION_WITH_STAR_ARGS)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "1 2 3\n" _apply_.assert_called_once_with(glb['_print']._call_print, 1, 2, 3) ALLOWED_PRINT_FUNCTION_WITH_KWARGS = """ from __future__ import print_function to_print = (1, 2, 3) kwargs = {'sep': '-', 'end': '!', 'file': None} print(*to_print, **kwargs) """ def test_print_function_with_kw_args(mocker): _apply_ = mocker.stub() _apply_.side_effect = lambda func, *args, **kwargs: func(*args, **kwargs) glb = { '_print_': PrintCollector, '_getattr_': None, "_apply_": _apply_ } code, errors = compiler(ALLOWED_PRINT_FUNCTION_WITH_KWARGS)[:2] assert code is not None assert errors == () exec(code, glb) assert glb['_print']() == "1-2-3!" _apply_.assert_called_once_with( glb['_print']._call_print, 1, 2, 3, end='!', file=None, sep='-') PROTECT_WRITE_ON_FILE = """ from __future__ import print_function print ('a', 'b', file=stream) """ def test_print_function__protect_file(mocker): _getattr_ = mocker.stub() _getattr_.side_effect = getattr stream = mocker.stub() stream.write = mocker.stub() glb = { '_print_': PrintCollector, '_getattr_': _getattr_, 'stream': stream } code, errors = compiler(PROTECT_WRITE_ON_FILE)[:2] assert code is not None assert errors == () exec(code, glb) _getattr_.assert_called_once_with(stream, 'write') stream.write.assert_has_calls([ mocker.call('a'), mocker.call(' '), mocker.call('b'), mocker.call('\n') ]) # 'printed' is scope aware. # => on a new function scope a new printed is generated. INJECT_PRINT_COLLECTOR_NESTED = """ from __future__ import print_function def f2(): return 'f2' def f1(): print ('f1') def inner(): print ('inner') return printed return inner() + printed + f2() def main(): print ('main') return f1() + printed """ def test_print_function__nested_print_collector(): code, errors = compiler(INJECT_PRINT_COLLECTOR_NESTED)[:2] glb = {"_print_": PrintCollector, '_getattr_': None} exec(code, glb) ret = glb['main']() assert ret == 'inner\nf1\nf2main\n' WARN_PRINTED_NO_PRINT = """ def foo(): return printed """ def test_print_function__with_printed_no_print(): code, errors, warnings = compiler(WARN_PRINTED_NO_PRINT)[:3] assert code is not None assert errors == () assert warnings == ["Line 2: Doesn't print, but reads 'printed' variable."] WARN_PRINTED_NO_PRINT_NESTED = """ from __future__ import print_function print ('a') def foo(): return printed printed """ def test_print_function__with_printed_no_print_nested(): code, errors, warnings = compiler(WARN_PRINTED_NO_PRINT_NESTED)[:3] assert code is not None assert errors == () assert warnings == ["Line 4: Doesn't print, but reads 'printed' variable."] WARN_PRINT_NO_PRINTED = """ from __future__ import print_function def foo(): print (1) """ def test_print_function__with_print_no_printed(): code, errors, warnings = compiler(WARN_PRINT_NO_PRINTED)[:3] assert code is not None assert errors == () assert warnings == ["Line 3: Prints, but never reads 'printed' variable."] WARN_PRINT_NO_PRINTED_NESTED = """ from __future__ import print_function print ('a') def foo(): print ('x') printed """ def test_print_function__with_print_no_printed_nested(): code, errors, warnings = compiler(WARN_PRINT_NO_PRINTED_NESTED)[:3] assert code is not None assert errors == () assert warnings == ["Line 4: Prints, but never reads 'printed' variable."] # python generates a new frame/scope for: # modules, functions, class, lambda, all the comprehensions # For class, lambda and comprehensions *no* new print collector scope should be # generated. NO_PRINT_SCOPES = """ from __future__ import print_function def class_scope(): class A: print ('a') return printed def lambda_scope(): func = lambda x: print(x) func(1) func(2) return printed def comprehension_scope(): [print(1) for _ in range(2)] return printed """ def test_print_function_no_new_scope(): code, errors = compiler(NO_PRINT_SCOPES)[:2] glb = { '_print_': PrintCollector, '__metaclass__': type, '_getattr_': None, '_getiter_': lambda ob: ob } exec(code, glb) ret = glb['class_scope']() assert ret == 'a\n' ret = glb['lambda_scope']() assert ret == '1\n2\n' ret = glb['comprehension_scope']() assert ret == '1\n1\n' PASS_PRINT_FUNCTION = """ from __future__ import print_function def main(): def do_stuff(func): func(1) func(2) do_stuff(print) return printed """ def test_print_function_pass_print_function(): code, errors = compiler(PASS_PRINT_FUNCTION)[:2] glb = {'_print_': PrintCollector, '_getattr_': None} exec(code, glb) ret = glb['main']() assert ret == '1\n2\n' CONDITIONAL_PRINT = """ from __future__ import print_function def func(cond): if cond: print(1) return printed """ def test_print_function_conditional_print(): code, errors = compiler(CONDITIONAL_PRINT)[:2] glb = {'_print_': PrintCollector, '_getattr_': None} exec(code, glb) assert glb['func'](True) == '1\n' assert glb['func'](False) == '' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1737616545.749558 restrictedpython-8.0/tests/transformer/0000755000076600000240000000000014744366242020216 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1737616545.750465 restrictedpython-8.0/tests/transformer/operators/0000755000076600000240000000000014744366242022234 5ustar00m.howitzstaff././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_arithmetic_operators.py0000644000076600000240000000145614744366240030100 0ustar00m.howitzstafffrom tests.helper import restricted_eval # Arithmetic Operators def test_Add(): assert restricted_eval('1 + 1') == 2 def test_Sub(): assert restricted_eval('5 - 3') == 2 def test_Mult(): assert restricted_eval('2 * 2') == 4 def test_Div(): assert restricted_eval('10 / 2') == 5 def test_Mod(): assert restricted_eval('10 % 3') == 1 def test_Pow(): assert restricted_eval('2 ** 8') == 256 def test_FloorDiv(): assert restricted_eval('7 // 2') == 3 def test_MatMult(): class Vector: def __init__(self, values): self.values = values def __matmul__(self, other): return sum(x * y for x, y in zip(self.values, other.values)) assert restricted_eval( 'Vector((8, 3, 5)) @ Vector((2, 7, 1))', {'Vector': Vector}) == 42 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_bit_wise_operators.py0000644000076600000240000000063714744366240027554 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_BitAnd(): assert restricted_eval('5 & 3') == 1 def test_BitOr(): assert restricted_eval('5 | 3') == 7 def test_BitXor(): assert restricted_eval('5 ^ 3') == 6 def test_Invert(): assert restricted_eval('~17') == -18 def test_LShift(): assert restricted_eval('8 << 2') == 32 def test_RShift(): assert restricted_eval('8 >> 1') == 4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_bool_operators.py0000644000076600000240000000036614744366240026701 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_Or(): assert restricted_eval('False or True') is True def test_And(): assert restricted_eval('True and True') is True def test_Not(): assert restricted_eval('not False') is True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_comparison_operators.py0000644000076600000240000000063014744366240030112 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_Eq(): assert restricted_eval('1 == 1') is True def test_NotEq(): assert restricted_eval('1 != 2') is True def test_Gt(): assert restricted_eval('2 > 1') is True def test_Lt(): assert restricted_eval('1 < 2') def test_GtE(): assert restricted_eval('2 >= 2') is True def test_LtE(): assert restricted_eval('1 <= 2') is True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_identity_operators.py0000644000076600000240000000026514744366240027575 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_Is(): assert restricted_eval('True is True') is True def test_NotIs(): assert restricted_eval('1 is not True') is True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_logical_operators.py0000644000076600000240000000027414744366240027356 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_In(): assert restricted_eval('1 in [1, 2, 3]') is True def test_NotIn(): assert restricted_eval('4 not in [1, 2, 3]') is True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/operators/test_unary_operators.py0000644000076600000240000000027014744366240027076 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_UAdd(): assert restricted_eval('+a', {'a': 42}) == 42 def test_USub(): assert restricted_eval('-a', {'a': 2411}) == -2411 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_assert.py0000644000076600000240000000025214744366240023125 0ustar00m.howitzstafffrom tests.helper import restricted_exec def test_RestrictingNodeTransformer__visit_Assert__1(): """It allows assert statements.""" restricted_exec('assert 1') ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_assign.py0000644000076600000240000000247714744366240023123 0ustar00m.howitzstafffrom RestrictedPython.Guards import guarded_unpack_sequence from tests.helper import restricted_exec def test_RestrictingNodeTransformer__visit_Assign__1(mocker): src = "orig = (a, (x, z)) = (c, d) = g" _getiter_ = mocker.stub() _getiter_.side_effect = lambda it: it glb = { '_getiter_': _getiter_, '_unpack_sequence_': guarded_unpack_sequence, 'g': (1, (2, 3)), } restricted_exec(src, glb) assert glb['a'] == 1 assert glb['x'] == 2 assert glb['z'] == 3 assert glb['c'] == 1 assert glb['d'] == (2, 3) assert glb['orig'] == (1, (2, 3)) assert _getiter_.call_count == 3 _getiter_.assert_any_call((1, (2, 3))) _getiter_.assert_any_call((2, 3)) _getiter_.reset_mock() def test_RestrictingNodeTransformer__visit_Assign__2( mocker): src = "a, *d, (c, *e), x = (1, 2, 3, (4, 3, 4), 5)" _getiter_ = mocker.stub() _getiter_.side_effect = lambda it: it glb = { '_getiter_': _getiter_, '_unpack_sequence_': guarded_unpack_sequence } restricted_exec(src, glb) assert glb['a'] == 1 assert glb['d'] == [2, 3] assert glb['c'] == 4 assert glb['e'] == [3, 4] assert glb['x'] == 5 _getiter_.assert_has_calls([ mocker.call((1, 2, 3, (4, 3, 4), 5)), mocker.call((4, 3, 4))]) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_async.py0000644000076600000240000000506614744366240022751 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from RestrictedPython.transformer import RestrictingNodeTransformer # Example from https://docs.python.org/3/library/asyncio-task.html ASYNC_DEF_EXMAPLE = """ import asyncio async def hello_world(): print() loop = asyncio.get_event_loop() # Blocking call which returns when the hello_world() coroutine is done loop.run_until_complete(hello_world()) loop.close() """ def test_async_def(): result = compile_restricted_exec(ASYNC_DEF_EXMAPLE) assert result.errors == ( 'Line 4: AsyncFunctionDef statements are not allowed.', ) assert result.code is None class RestrictingAsyncNodeTransformer(RestrictingNodeTransformer): """Transformer which allows `async def` for the tests.""" def visit_AsyncFunctionDef(self, node): """Allow `async def`. This is needed to get the function body to be parsed thus allowing to catch `await`, `async for` and `async with`. """ return self.node_contents_visit(node) # Modified example from https://docs.python.org/3/library/asyncio-task.html AWAIT_EXAMPLE = """ import asyncio import datetime async def display_date(loop): end_time = loop.time() + 5.0 while True: print(datetime.datetime.now()) if (loop.time() + 1.0) >= end_time: break await asyncio.sleep(1) loop = asyncio.get_event_loop() # Blocking call which returns when the display_date() coroutine is done loop.run_until_complete(display_date(loop)) loop.close() """ def test_await(): result = compile_restricted_exec( AWAIT_EXAMPLE, policy=RestrictingAsyncNodeTransformer) assert result.errors == ('Line 11: Await statements are not allowed.',) assert result.code is None # Modified example https://www.python.org/dev/peps/pep-0525/ ASYNC_WITH_EXAMPLE = """ async def square_series(con, to): async with con.transaction(): print(con) """ def test_async_with(): result = compile_restricted_exec( ASYNC_WITH_EXAMPLE, policy=RestrictingAsyncNodeTransformer) assert result.errors == ('Line 3: AsyncWith statements are not allowed.',) assert result.code is None # Modified example https://www.python.org/dev/peps/pep-0525/ ASYNC_FOR_EXAMPLE = """ async def read_rows(rows): async for row in rows: yield row """ def test_async_for(): result = compile_restricted_exec( ASYNC_FOR_EXAMPLE, policy=RestrictingAsyncNodeTransformer) assert result.errors == ('Line 3: AsyncFor statements are not allowed.',) assert result.code is None ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_attribute.py0000644000076600000240000000743714744366240023643 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec BAD_ATTR_UNDERSCORE = """\ def bad_attr(): some_ob = object() some_ob._some_attr = 15 """ def test_RestrictingNodeTransformer__visit_Attribute__1(): """It is an error if a bad attribute name is used.""" result = compile_restricted_exec(BAD_ATTR_UNDERSCORE) assert result.errors == ( 'Line 3: "_some_attr" is an invalid attribute name because it ' 'starts with "_".',) BAD_ATTR_ROLES = """\ def bad_attr(): some_ob = object() some_ob.abc__roles__ """ def test_RestrictingNodeTransformer__visit_Attribute__2(): """It is an error if a bad attribute name is used.""" result = compile_restricted_exec(BAD_ATTR_ROLES) assert result.errors == ( 'Line 3: "abc__roles__" is an invalid attribute name because it ' 'ends with "__roles__".',) TRANSFORM_ATTRIBUTE_ACCESS = """\ def func(): return a.b """ def test_RestrictingNodeTransformer__visit_Attribute__3(mocker): """It transforms the attribute access to `_getattr_`.""" glb = { '_getattr_': mocker.stub(), 'a': [], 'b': 'b' } restricted_exec(TRANSFORM_ATTRIBUTE_ACCESS, glb) glb['func']() glb['_getattr_'].assert_called_once_with([], 'b') ALLOW_UNDERSCORE_ONLY = """\ def func(): some_ob = object() some_ob._ """ def test_RestrictingNodeTransformer__visit_Attribute__4(): """It allows `_` as attribute name.""" result = compile_restricted_exec(ALLOW_UNDERSCORE_ONLY) assert result.errors == () def test_RestrictingNodeTransformer__visit_Attribute__5( mocker): """It transforms writing to an attribute to `_write_`.""" glb = { '_write_': mocker.stub(), 'a': mocker.stub(), } glb['_write_'].return_value = glb['a'] restricted_exec("a.b = 'it works'", glb) glb['_write_'].assert_called_once_with(glb['a']) assert glb['a'].b == 'it works' def test_RestrictingNodeTransformer__visit_Attribute__5_5( mocker): """It transforms deleting of an attribute to `_write_`.""" glb = { '_write_': mocker.stub(), 'a': mocker.stub(), } glb['a'].b = 'it exists' glb['_write_'].return_value = glb['a'] restricted_exec("del a.b", glb) glb['_write_'].assert_called_once_with(glb['a']) assert not hasattr(glb['a'], 'b') DISALLOW_TRACEBACK_ACCESS = """ try: raise Exception() except Exception as e: tb = e.__traceback__ """ def test_RestrictingNodeTransformer__visit_Attribute__6(): """It denies access to the __traceback__ attribute.""" result = compile_restricted_exec(DISALLOW_TRACEBACK_ACCESS) assert result.errors == ( 'Line 5: "__traceback__" is an invalid attribute name because ' 'it starts with "_".',) TRANSFORM_ATTRIBUTE_ACCESS_FUNCTION_DEFAULT = """ def func_default(x=a.a): return x """ def test_RestrictingNodeTransformer__visit_Attribute__7( mocker): """It transforms attribute access in function default kw to `_write_`.""" _getattr_ = mocker.Mock() _getattr_.side_effect = getattr glb = { '_getattr_': _getattr_, 'a': mocker.Mock(a=1), } restricted_exec(TRANSFORM_ATTRIBUTE_ACCESS_FUNCTION_DEFAULT, glb) _getattr_.assert_has_calls([mocker.call(glb['a'], 'a')]) assert glb['func_default']() == 1 def test_RestrictingNodeTransformer__visit_Attribute__8( mocker): """It transforms attribute access in lamda default kw to `_write_`.""" _getattr_ = mocker.Mock() _getattr_.side_effect = getattr glb = { '_getattr_': _getattr_, 'b': mocker.Mock(b=2) } restricted_exec('lambda_default = lambda x=b.b: x', glb) _getattr_.assert_has_calls([mocker.call(glb['b'], 'b')]) assert glb['lambda_default']() == 2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_augassign.py0000644000076600000240000000325714744366240023615 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec def test_RestrictingNodeTransformer__visit_AugAssign__1( mocker): """It allows augmented assign for variables.""" _inplacevar_ = mocker.stub() _inplacevar_.side_effect = lambda op, val, expr: val + expr glb = { '_inplacevar_': _inplacevar_, 'a': 1, 'x': 1, 'z': 0 } restricted_exec("a += x + z", glb) assert glb['a'] == 2 _inplacevar_.assert_called_once_with('+=', 1, 1) _inplacevar_.reset_mock() def test_RestrictingNodeTransformer__visit_AugAssign__2(): """It forbids augmented assign of attributes.""" result = compile_restricted_exec("a.a += 1") assert result.errors == ( 'Line 1: Augmented assignment of attributes is not allowed.',) def test_RestrictingNodeTransformer__visit_AugAssign__3(): """It forbids augmented assign of subscripts.""" result = compile_restricted_exec("a[a] += 1") assert result.errors == ( 'Line 1: Augmented assignment of object items and slices is not ' 'allowed.',) def test_RestrictingNodeTransformer__visit_AugAssign__4(): """It forbids augmented assign of slices.""" result = compile_restricted_exec("a[x:y] += 1") assert result.errors == ( 'Line 1: Augmented assignment of object items and slices is not ' 'allowed.',) def test_RestrictingNodeTransformer__visit_AugAssign__5(): """It forbids augmented assign of slices with steps.""" result = compile_restricted_exec("a[x:y:z] += 1") assert result.errors == ( 'Line 1: Augmented assignment of object items and slices is not ' 'allowed.',) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_base_types.py0000644000076600000240000000115214744366240023762 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_eval def test_Num(): """It allows to use number literals.""" assert restricted_eval('42') == 42 def test_Bytes(): """It allows to use bytes literals.""" assert restricted_eval('b"code"') == b"code" def test_Set(): """It allows to use set literals.""" assert restricted_eval('{1, 2, 3}') == {1, 2, 3} def test_Ellipsis(): """It prevents using the `ellipsis` statement.""" result = compile_restricted_exec('...') assert result.errors == ('Line 1: Ellipsis statements are not allowed.',) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_breakpoint.py0000644000076600000240000000055014744366240023763 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec def test_call_breakpoint(): """The Python3.7+ builtin function breakpoint should not be used and is forbidden in RestrictedPython. """ result = compile_restricted_exec('breakpoint()') assert result.errors == ('Line 1: "breakpoint" is a reserved name.',) assert result.code is None ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_call.py0000644000076600000240000000641314744366240022544 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec def test_RestrictingNodeTransformer__visit_Call__1(): """It compiles a function call successfully and returns the used name.""" result = compile_restricted_exec('a = max([1, 2, 3])') assert result.errors == () loc = {} exec(result.code, {}, loc) assert loc['a'] == 3 assert result.used_names == {'max': True} # def f(a, b, c): pass # f(*two_element_sequence, **dict_with_key_c) # # makes the elements of two_element_sequence # visible to f via its 'a' and 'b' arguments, # and the dict_with_key_c['c'] value visible via its 'c' argument. # It is a devious way to extract values without going through security checks. FUNCTIONC_CALLS = """ star = (3, 4) kwargs = {'x': 5, 'y': 6} def positional_args(): return foo(1, 2) def star_args(): return foo(*star) def positional_and_star_args(): return foo(1, 2, *star) def kw_args(): return foo(**kwargs) def star_and_kw(): return foo(*star, **kwargs) def positional_and_star_and_kw_args(): return foo(1, *star, **kwargs) def positional_and_star_and_keyword_and_kw_args(): return foo(1, 2, *star, r=9, **kwargs) """ def test_RestrictingNodeTransformer__visit_Call__2(mocker): _apply_ = mocker.stub() _apply_.side_effect = lambda func, *args, **kwargs: func(*args, **kwargs) glb = { '_apply_': _apply_, 'foo': lambda *args, **kwargs: (args, kwargs) } restricted_exec(FUNCTIONC_CALLS, glb) ret = glb['positional_args']() assert ((1, 2), {}) == ret assert _apply_.called is False _apply_.reset_mock() ret = glb['star_args']() ref = ((3, 4), {}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], *ref[0]) _apply_.reset_mock() ret = glb['positional_and_star_args']() ref = ((1, 2, 3, 4), {}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], *ref[0]) _apply_.reset_mock() ret = glb['kw_args']() ref = ((), {'x': 5, 'y': 6}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], **ref[1]) _apply_.reset_mock() ret = glb['star_and_kw']() ref = ((3, 4), {'x': 5, 'y': 6}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], *ref[0], **ref[1]) _apply_.reset_mock() ret = glb['positional_and_star_and_kw_args']() ref = ((1, 3, 4), {'x': 5, 'y': 6}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], *ref[0], **ref[1]) _apply_.reset_mock() ret = glb['positional_and_star_and_keyword_and_kw_args']() ref = ((1, 2, 3, 4), {'x': 5, 'y': 6, 'r': 9}) assert ref == ret _apply_.assert_called_once_with(glb['foo'], *ref[0], **ref[1]) _apply_.reset_mock() def test_visit_Call__private_function(): """Calling private functions is forbidden.""" result = compile_restricted_exec('__init__(1)') assert result.errors == ( 'Line 1: "__init__" is an invalid variable name because it starts with "_"', # NOQA: E501 ) def test_visit_Call__private_method(): """Calling private methods is forbidden.""" result = compile_restricted_exec('Int.__init__(1)') assert result.errors == ( 'Line 1: "__init__" is an invalid attribute name because it starts with "_".', # NOQA: E501 ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_classdef.py0000644000076600000240000001037714744366240023421 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from RestrictedPython.Guards import safe_builtins from tests.helper import restricted_exec GOOD_CLASS = ''' class Good: pass ''' def test_RestrictingNodeTransformer__visit_ClassDef__1(): """It allows to define an class.""" result = compile_restricted_exec(GOOD_CLASS) assert result.errors == () assert result.code is not None BAD_CLASS = '''\ class _bad: pass ''' def test_RestrictingNodeTransformer__visit_ClassDef__2(): """It does not allow class names which start with an underscore.""" result = compile_restricted_exec(BAD_CLASS) assert result.errors == ( 'Line 1: "_bad" is an invalid variable name ' 'because it starts with "_"',) IMPLICIT_METACLASS = ''' class Meta: pass b = Meta().foo ''' def test_RestrictingNodeTransformer__visit_ClassDef__3(): """It applies the global __metaclass__ to all generated classes if present. """ def _metaclass(name, bases, dict): ob = type(name, bases, dict) ob.foo = 2411 return ob restricted_globals = dict( __metaclass__=_metaclass, __name__='implicit_metaclass', b=None, _getattr_=getattr) restricted_exec(IMPLICIT_METACLASS, restricted_globals) assert restricted_globals['b'] == 2411 EXPLICIT_METACLASS = ''' class WithMeta(metaclass=MyMetaClass): pass ''' def test_RestrictingNodeTransformer__visit_ClassDef__4(): """It does not allow to pass a metaclass to class definitions.""" result = compile_restricted_exec(EXPLICIT_METACLASS) assert result.errors == ( 'Line 2: The keyword argument "metaclass" is not allowed.',) assert result.code is None DECORATED_CLASS = '''\ def wrap(cls): cls.wrap_att = 23 return cls class Base: base_att = 42 @wrap class Combined(Base): class_att = 2342 comb = Combined() ''' def test_RestrictingNodeTransformer__visit_ClassDef__5(): """It preserves base classes and decorators for classes.""" restricted_globals = dict( comb=None, _getattr_=getattr, _write_=lambda x: x, __metaclass__=type, __name__='restricted_module', __builtins__=safe_builtins) restricted_exec(DECORATED_CLASS, restricted_globals) comb = restricted_globals['comb'] assert comb.class_att == 2342 assert comb.base_att == 42 assert comb.wrap_att == 23 CONSTRUCTOR_TEST = """\ class Test: def __init__(self, input): self.input = input t = Test(42) """ def test_RestrictingNodeTransformer__visit_ClassDef__6(): """It allows to define an ``__init__`` method.""" restricted_globals = dict( t=None, _write_=lambda x: x, __metaclass__=type, __name__='constructor_test', ) restricted_exec(CONSTRUCTOR_TEST, restricted_globals) t = restricted_globals['t'] assert t.input == 42 COMPARE_TEST = """\ class Test: def __init__(self, value): self.value = value def __eq__(self, other): return self.value == other.value a = Test(42) b = Test(42) c = Test(43) result1 = (a == b) result2 = (b == c) """ def test_RestrictingNodeTransformer__visit_ClassDef__7(): """It allows to define an ``__eq__`` method.""" restricted_globals = dict( result1=None, result2=None, _getattr_=getattr, _write_=lambda x: x, __metaclass__=type, __name__='compare_test', ) restricted_exec(COMPARE_TEST, restricted_globals) assert restricted_globals['result1'] is True assert restricted_globals['result2'] is False CONTAINER_TEST = """\ class Test(object): def __init__(self, values): self.values = values def __contains__(self, value): return value in self.values a = Test([1, 2, 3]) result1 = (1 in a) result2 = (4 not in a) """ def test_RestrictingNodeTransformer__visit_ClassDef__8(): """It allows to define a ``__contains__`` method.""" restricted_globals = dict( result1=None, result2=None, _getattr_=getattr, _write_=lambda x: x, __metaclass__=type, __name__='container_test', object=object, ) restricted_exec(CONTAINER_TEST, restricted_globals) assert restricted_globals['result1'] is True assert restricted_globals['result2'] is True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_comparators.py0000644000076600000240000000415514744366240024164 0ustar00m.howitzstafffrom tests.helper import restricted_eval def test_RestrictingNodeTransformer__visit_Eq__1(): """It allows == expressions.""" assert restricted_eval('1 == int("1")') is True def test_RestrictingNodeTransformer__visit_NotEq__1(): """It allows != expressions.""" assert restricted_eval('1 != int("1")') is False def test_RestrictingNodeTransformer__visit_Lt__1(): """It allows < expressions.""" assert restricted_eval('1 < 3') is True def test_RestrictingNodeTransformer__visit_LtE__1(): """It allows < expressions.""" assert restricted_eval('1 <= 3') is True def test_RestrictingNodeTransformer__visit_Gt__1(): """It allows > expressions.""" assert restricted_eval('1 > 3') is False def test_RestrictingNodeTransformer__visit_GtE__1(): """It allows >= expressions.""" assert restricted_eval('1 >= 3') is False def test_RestrictingNodeTransformer__visit_Is__1(): """It allows `is` expressions.""" assert restricted_eval('None is None') is True def test_RestrictingNodeTransformer__visit_IsNot__1(): """It allows `is not` expressions.""" assert restricted_eval('2 is not None') is True def test_RestrictingNodeTransformer__visit_In_List(): """It allows `in` expressions for lists.""" assert restricted_eval('2 in [1, 2, 3]') is True def test_RestrictingNodeTransformer__visit_NotIn_List(): """It allows `not in` expressions for lists.""" assert restricted_eval('2 not in [1, 2, 3]') is False def test_RestrictingNodeTransformer__visit_In_Set(): """It allows `in` expressions for sets.""" assert restricted_eval('2 in {1, 1, 2, 3}') is True def test_RestrictingNodeTransformer__visit_NotIn_Set(): """It allows `not in` expressions for sets.""" assert restricted_eval('2 not in {1, 2, 3}') is False def test_RestrictingNodeTransformer__visit_In_Dict(): """It allows `in` expressions for dicts.""" assert restricted_eval('2 in {1: 1, 2: 2, 3: 3}') is True def test_RestrictingNodeTransformer__visit_NotIn_Dict(): """It allows `not in` expressions for dicts.""" assert restricted_eval('2 not in {1: 1, 2: 2, 3: 3}') is False ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_conditional.py0000644000076600000240000000171614744366240024135 0ustar00m.howitzstafffrom tests.helper import restricted_exec def test_RestrictingNodeTransformer__test_ternary_if( mocker): src = 'x.y = y.a if y.z else y.b' _getattr_ = mocker.stub() _getattr_.side_effect = lambda ob, key: ob[key] _write_ = mocker.stub() _write_.side_effect = lambda ob: ob glb = { '_getattr_': _getattr_, '_write_': _write_, 'x': mocker.stub(), 'y': {'a': 'a', 'b': 'b'}, } glb['y']['z'] = True restricted_exec(src, glb) assert glb['x'].y == 'a' _write_.assert_called_once_with(glb['x']) _getattr_.assert_has_calls([ mocker.call(glb['y'], 'z'), mocker.call(glb['y'], 'a')]) _write_.reset_mock() _getattr_.reset_mock() glb['y']['z'] = False restricted_exec(src, glb) assert glb['x'].y == 'b' _write_.assert_called_once_with(glb['x']) _getattr_.assert_has_calls([ mocker.call(glb['y'], 'z'), mocker.call(glb['y'], 'b')]) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_dict_comprehension.py0000644000076600000240000000153614744366240025506 0ustar00m.howitzstafffrom tests.helper import restricted_exec DICT_COMPREHENSION_WITH_ATTRS = """ def call(seq): return {y.k: y.v for y in seq.z if y.k} """ def test_dict_comprehension_with_attrs(mocker): _getattr_ = mocker.Mock() _getattr_.side_effect = getattr _getiter_ = mocker.Mock() _getiter_.side_effect = lambda ob: ob glb = {'_getattr_': _getattr_, '_getiter_': _getiter_} restricted_exec(DICT_COMPREHENSION_WITH_ATTRS, glb) z = [mocker.Mock(k=0, v='a'), mocker.Mock(k=1, v='b')] seq = mocker.Mock(z=z) ret = glb['call'](seq) assert ret == {1: 'b'} _getiter_.assert_called_once_with(z) calls = [mocker.call(seq, 'z')] calls.extend([ mocker.call(z[0], 'k'), mocker.call(z[1], 'k'), mocker.call(z[1], 'k'), mocker.call(z[1], 'v'), ]) _getattr_.assert_has_calls(calls) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_eval_exec.py0000644000076600000240000000121514744366240023557 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec EXEC_FUNCTION = """\ def no_exec(): exec('q = 1') """ def test_RestrictingNodeTransformer__visit_Exec__2(): """It is an error if the code call the `exec` function.""" result = compile_restricted_exec(EXEC_FUNCTION) assert result.errors == ("Line 2: Exec calls are not allowed.",) EVAL_FUNCTION = """\ def no_eval(): eval('q = 1') """ def test_RestrictingNodeTransformer__visit_Eval__1(): """It is an error if the code call the `eval` function.""" result = compile_restricted_exec(EVAL_FUNCTION) assert result.errors == ("Line 2: Eval calls are not allowed.",) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_fstring.py0000644000076600000240000000264614744366240023311 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from RestrictedPython.PrintCollector import PrintCollector def test_transform(): """It compiles a function call successfully and returns the used name.""" result = compile_restricted_exec('a = f"{max([1, 2, 3])}"') assert result.errors == () loc = {} exec(result.code, {}, loc) assert loc['a'] == '3' assert result.used_names == {'max': True} def test_visit_invalid_variable_name(): """Accessing private attributes is forbidden. This is just a smoke test to validate that restricted exec is used in the run-time evaluation of f-strings. """ result = compile_restricted_exec('f"{__init__}"') assert result.errors == ( 'Line 1: "__init__" is an invalid variable name because it starts with "_"', # NOQA: E501 ) f_string_self_documenting_expressions_example = """ from datetime import date user = 'eric_idle' member_since = date(1975, 7, 31) print(f'{user=} {member_since=}') """ def test_f_string_self_documenting_expressions(): """Checks if f-string self-documenting expressions is checked.""" result = compile_restricted_exec( f_string_self_documenting_expressions_example, ) assert result.errors == () glb = {'_print_': PrintCollector, '_getattr_': None} exec(result.code, glb) assert glb['_print']() == "user='eric_idle' member_since=datetime.date(1975, 7, 31)\n" # NOQA: E501 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_functiondef.py0000644000076600000240000000371414744366240024136 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec functiondef_err_msg = 'Line 1: "_bad" is an invalid variable ' \ 'name because it starts with "_"' def test_RestrictingNodeTransformer__visit_FunctionDef__1(): """It prevents function arguments starting with `_`.""" result = compile_restricted_exec("def foo(_bad): pass") assert result.errors == (functiondef_err_msg,) def test_RestrictingNodeTransformer__visit_FunctionDef__2(): """It prevents function keyword arguments starting with `_`.""" result = compile_restricted_exec("def foo(_bad=1): pass") assert result.errors == (functiondef_err_msg,) def test_RestrictingNodeTransformer__visit_FunctionDef__3(): """It prevents function * arguments starting with `_`.""" result = compile_restricted_exec("def foo(*_bad): pass") assert result.errors == (functiondef_err_msg,) def test_RestrictingNodeTransformer__visit_FunctionDef__4(): """It prevents function ** arguments starting with `_`.""" result = compile_restricted_exec("def foo(**_bad): pass") assert result.errors == (functiondef_err_msg,) def test_RestrictingNodeTransformer__visit_FunctionDef__7(): """It prevents `_` function arguments together with a single `*`.""" result = compile_restricted_exec("def foo(good, *, _bad): pass") assert result.errors == (functiondef_err_msg,) BLACKLISTED_FUNC_NAMES_CALL_TEST = """ def __init__(test): test __init__(1) """ def test_RestrictingNodeTransformer__module_func_def_name_call(): """It forbids definition and usage of magic methods as functions ... ... at module level. """ result = compile_restricted_exec(BLACKLISTED_FUNC_NAMES_CALL_TEST) # assert result.errors == ('Line 1: ') assert result.errors == ( 'Line 2: "__init__" is an invalid variable name because it starts with "_"', # NOQA: E501 'Line 5: "__init__" is an invalid variable name because it starts with "_"', # NOQA: E501 ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_generic.py0000644000076600000240000000102714744366240023241 0ustar00m.howitzstaffimport ast from RestrictedPython import RestrictingNodeTransformer def test_RestrictingNodeTransformer__generic_visit__1(): """It log an error if there is an unknown ast node visited.""" class MyFancyNode(ast.AST): pass transformer = RestrictingNodeTransformer() transformer.visit(MyFancyNode()) assert transformer.errors == [ 'Line None: MyFancyNode statements are not allowed.'] assert transformer.warnings == [ 'Line None: MyFancyNode statement is not known to RestrictedPython'] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_global_local.py0000644000076600000240000000133014744366240024234 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec GLOBAL_EXAMPLE = """ def x(): global a a = 11 x() """ def test_Global(): glb = {'a': None} restricted_exec(GLOBAL_EXAMPLE, glb) assert glb['a'] == 11 # Example from: # https://www.smallsurething.com/a-quick-guide-to-nonlocal-in-python-3/ NONLOCAL_EXAMPLE = """ def outside(): msg = "Outside!" def inside(): nonlocal msg msg = "Inside!" print(msg) inside() print(msg) outside() """ def test_Nonlocal(): result = compile_restricted_exec(NONLOCAL_EXAMPLE) assert result.errors == ('Line 5: Nonlocal statements are not allowed.',) assert result.code is None ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_import.py0000644000076600000240000000547014744366240023145 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec import_errmsg = ( 'Line 1: "%s" is an invalid variable name because it starts with "_"') def test_RestrictingNodeTransformer__visit_Import__1(): """It allows importing a module.""" result = compile_restricted_exec('import a') assert result.errors == () assert result.code is not None def test_RestrictingNodeTransformer__visit_Import__2(): """It denies importing a module starting with `_`.""" result = compile_restricted_exec('import _a') assert result.errors == (import_errmsg % '_a',) def test_RestrictingNodeTransformer__visit_Import__3(): """It denies importing a module starting with `_` as something.""" result = compile_restricted_exec('import _a as m') assert result.errors == (import_errmsg % '_a',) def test_RestrictingNodeTransformer__visit_Import__4(): """It denies importing a module as something starting with `_`.""" result = compile_restricted_exec('import a as _m') assert result.errors == (import_errmsg % '_m',) def test_RestrictingNodeTransformer__visit_Import__5(): """It allows importing from a module.""" result = compile_restricted_exec('from a import m') assert result.errors == () assert result.code is not None def test_RestrictingNodeTransformer__visit_Import_6(): """It allows importing from a module starting with `_`.""" result = compile_restricted_exec('from _a import m') assert result.errors == () assert result.code is not None def test_RestrictingNodeTransformer__visit_Import__7(): """It denies importing from a module as something starting with `_`.""" result = compile_restricted_exec('from a import m as _n') assert result.errors == (import_errmsg % '_n',) def test_RestrictingNodeTransformer__visit_Import__8(): """It denies as-importing something starting with `_` from a module.""" result = compile_restricted_exec('from a import _m as n') assert result.errors == (import_errmsg % '_m',) def test_RestrictingNodeTransformer__visit_Import__9(): """It denies relative from importing as something starting with `_`.""" result = compile_restricted_exec('from .x import y as _leading_underscore') assert result.errors == (import_errmsg % '_leading_underscore',) def test_RestrictingNodeTransformer__visit_Import_star__1(): """Importing `*` is a SyntaxError in Python itself.""" result = compile_restricted_exec('import *') assert result.errors == ( "Line 1: SyntaxError: invalid syntax at statement: 'import *'",) assert result.code is None def test_RestrictingNodeTransformer__visit_Import_star__2(): """It denies importing `*` from a module.""" result = compile_restricted_exec('from a import *') assert result.errors == ('Line 1: "*" imports are not allowed.',) assert result.code is None ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_inspect.py0000644000076600000240000000352014744366240023272 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec def test_get_inspect_frame_on_generator(): source_code = """ generator = (statement.gi_frame for _ in (1,)) generator_element = [elem for elem in generator][0] """ result = compile_restricted_exec(source_code) assert result.errors == ( 'Line 2: "gi_frame" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', ) def test_get_inspect_frame_back_on_generator(): source_code = """ generator = (statement.gi_frame.f_back.f_back for _ in (1,)) generator_element = [elem for elem in generator][0] """ result = compile_restricted_exec(source_code) assert result.errors == ( 'Line 2: "f_back" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', 'Line 2: "f_back" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', 'Line 2: "gi_frame" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', ) def test_call_inspect_frame_on_generator(): source_code = """ generator = None frame = None def test(): global generator, frame frame = g.gi_frame.f_back.f_back yield frame generator = test() generator.send(None) os = frame.f_builtins.get('__import__')('os') result = os.listdir('/') """ result = compile_restricted_exec(source_code) assert result.errors == ( 'Line 7: "f_back" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', 'Line 7: "f_back" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', 'Line 7: "gi_frame" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', 'Line 12: "f_builtins" is a restricted name, ' 'that is forbidden to access in RestrictedPython.', ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_iterator.py0000644000076600000240000000732614744366240023466 0ustar00m.howitzstaffimport types from RestrictedPython.Guards import guarded_iter_unpack_sequence from tests.helper import restricted_exec ITERATORS = """ def for_loop(it): c = 0 for a in it: c = c + a return c def nested_for_loop(it1, it2): c = 0 for a in it1: for b in it2: c = c + a + b return c def dict_comp(it): return {a: a + a for a in it} def list_comp(it): return [a + a for a in it] def nested_list_comp(it1, it2): return [a + b for a in it1 if a > 1 for b in it2] def set_comp(it): return {a + a for a in it} def generator(it): return (a + a for a in it) def nested_generator(it1, it2): return (a+b for a in it1 if a > 0 for b in it2) """ def test_RestrictingNodeTransformer__guard_iter__1(mocker): it = (1, 2, 3) _getiter_ = mocker.stub() _getiter_.side_effect = lambda x: x glb = {'_getiter_': _getiter_} restricted_exec(ITERATORS, glb) ret = glb['for_loop'](it) assert 6 == ret _getiter_.assert_called_once_with(it) _getiter_.reset_mock() ret = glb['nested_for_loop']((1, 2), (3, 4)) assert 20 == ret _getiter_.assert_has_calls([ mocker.call((1, 2)), mocker.call((3, 4)) ]) _getiter_.reset_mock() ret = glb['dict_comp'](it) assert {1: 2, 2: 4, 3: 6} == ret _getiter_.assert_called_once_with(it) _getiter_.reset_mock() ret = glb['list_comp'](it) assert [2, 4, 6] == ret _getiter_.assert_called_once_with(it) _getiter_.reset_mock() ret = glb['nested_list_comp']((1, 2), (3, 4)) assert [5, 6] == ret _getiter_.assert_has_calls([ mocker.call((1, 2)), mocker.call((3, 4)) ]) _getiter_.reset_mock() ret = glb['set_comp'](it) assert {2, 4, 6} == ret _getiter_.assert_called_once_with(it) _getiter_.reset_mock() ret = glb['generator'](it) assert isinstance(ret, types.GeneratorType) assert list(ret) == [2, 4, 6] _getiter_.assert_called_once_with(it) _getiter_.reset_mock() ret = glb['nested_generator']((0, 1, 2), (1, 2)) assert isinstance(ret, types.GeneratorType) assert list(ret) == [2, 3, 3, 4] _getiter_.assert_has_calls([ mocker.call((0, 1, 2)), mocker.call((1, 2)), mocker.call((1, 2))]) _getiter_.reset_mock() ITERATORS_WITH_UNPACK_SEQUENCE = """ def for_loop(it): c = 0 for (a, b) in it: c = c + a + b return c def dict_comp(it): return {a: a + b for (a, b) in it} def list_comp(it): return [a + b for (a, b) in it] def set_comp(it): return {a + b for (a, b) in it} def generator(it): return (a + b for (a, b) in it) """ def test_RestrictingNodeTransformer__guard_iter__2(mocker): it = ((1, 2), (3, 4), (5, 6)) call_ref = [ mocker.call(it), mocker.call(it[0]), mocker.call(it[1]), mocker.call(it[2]) ] _getiter_ = mocker.stub() _getiter_.side_effect = lambda x: x glb = { '_getiter_': _getiter_, '_iter_unpack_sequence_': guarded_iter_unpack_sequence } restricted_exec(ITERATORS_WITH_UNPACK_SEQUENCE, glb) ret = glb['for_loop'](it) assert ret == 21 _getiter_.assert_has_calls(call_ref) _getiter_.reset_mock() ret = glb['dict_comp'](it) assert ret == {1: 3, 3: 7, 5: 11} _getiter_.assert_has_calls(call_ref) _getiter_.reset_mock() ret = glb['list_comp'](it) assert ret == [3, 7, 11] _getiter_.assert_has_calls(call_ref) _getiter_.reset_mock() ret = glb['set_comp'](it) assert ret == {3, 7, 11} _getiter_.assert_has_calls(call_ref) _getiter_.reset_mock() ret = list(glb['generator'](it)) assert ret == [3, 7, 11] _getiter_.assert_has_calls(call_ref) _getiter_.reset_mock() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_lambda.py0000644000076600000240000000366214744366240023054 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec lambda_err_msg = 'Line 1: "_bad" is an invalid variable ' \ 'name because it starts with "_"' def test_RestrictingNodeTransformer__visit_Lambda__1(): """It prevents arguments starting with `_`.""" result = compile_restricted_exec("lambda _bad: None") assert result.errors == (lambda_err_msg,) def test_RestrictingNodeTransformer__visit_Lambda__2(): """It prevents keyword arguments starting with `_`.""" result = compile_restricted_exec("lambda _bad=1: None") assert result.errors == (lambda_err_msg,) def test_RestrictingNodeTransformer__visit_Lambda__3(): """It prevents * arguments starting with `_`.""" result = compile_restricted_exec("lambda *_bad: None") assert result.errors == (lambda_err_msg,) def test_RestrictingNodeTransformer__visit_Lambda__4(): """It prevents ** arguments starting with `_`.""" result = compile_restricted_exec("lambda **_bad: None") assert result.errors == (lambda_err_msg,) def test_RestrictingNodeTransformer__visit_Lambda__7(): """It prevents arguments starting with `_` together with a single `*`.""" result = compile_restricted_exec("lambda good, *, _bad: None") assert result.errors == (lambda_err_msg,) BAD_ARG_IN_LAMBDA = """\ def check_getattr_in_lambda(arg=lambda _bad=(lambda ob, name: name): _bad2): 42 """ def test_RestrictingNodeTransformer__visit_Lambda__8(): """It prevents arguments starting with `_` in weird lambdas.""" result = compile_restricted_exec(BAD_ARG_IN_LAMBDA) assert lambda_err_msg in result.errors LAMBDA_FUNC_1 = """ g = lambda x: x ** 2 """ def test_RestrictingNodeTransformer__visit_Lambda__10(): """Simple lambda functions are allowed.""" restricted_globals = dict( g=None, ) restricted_exec(LAMBDA_FUNC_1, restricted_globals) assert 4 == restricted_globals['g'](2) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_loop.py0000644000076600000240000000136214744366240022600 0ustar00m.howitzstafffrom tests.helper import restricted_exec WHILE = """\ a = 5 while a < 7: a = a + 3 """ def test_RestrictingNodeTransformer__visit_While__1(): """It allows `while` statements.""" glb = restricted_exec(WHILE) assert glb['a'] == 8 BREAK = """\ a = 5 while True: a = a + 3 if a >= 7: break """ def test_RestrictingNodeTransformer__visit_Break__1(): """It allows `break` statements.""" glb = restricted_exec(BREAK) assert glb['a'] == 8 CONTINUE = """\ a = 3 while a < 10: if a < 5: a = a + 1 continue a = a + 10 """ def test_RestrictingNodeTransformer__visit_Continue__1(): """It allows `continue` statements.""" glb = restricted_exec(CONTINUE) assert glb['a'] == 15 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_name.py0000644000076600000240000001077014744366240022552 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec from tests.helper import restricted_exec BAD_NAME_STARTING_WITH_UNDERSCORE = """\ def bad_name(): __ = 12 """ def test_RestrictingNodeTransformer__visit_Name__1(): """It denies a variable name starting in `__`.""" result = compile_restricted_exec(BAD_NAME_STARTING_WITH_UNDERSCORE) assert result.errors == ( 'Line 2: "__" is an invalid variable name because it starts with "_"',) BAD_NAME_OVERRIDE_GUARD_WITH_NAME = """\ def overrideGuardWithName(): _getattr = None """ def test_RestrictingNodeTransformer__visit_Name__2(): """It denies a variable name starting in `_`.""" result = compile_restricted_exec(BAD_NAME_OVERRIDE_GUARD_WITH_NAME) assert result.errors == ( 'Line 2: "_getattr" is an invalid variable name because ' 'it starts with "_"',) def test_RestrictingNodeTransformer__visit_Name__2_5(): """It allows `_` as variable name.""" glb = restricted_exec('_ = 2411') assert glb['_'] == 2411 BAD_NAME_OVERRIDE_OVERRIDE_GUARD_WITH_FUNCTION = """\ def overrideGuardWithFunction(): def _getattr(o): return o """ def test_RestrictingNodeTransformer__visit_Name__3(): """It denies a function name starting in `_`.""" result = compile_restricted_exec( BAD_NAME_OVERRIDE_OVERRIDE_GUARD_WITH_FUNCTION) assert result.errors == ( 'Line 2: "_getattr" is an invalid variable name because it ' 'starts with "_"',) BAD_NAME_OVERRIDE_GUARD_WITH_CLASS = """\ def overrideGuardWithClass(): class _getattr: pass """ def test_RestrictingNodeTransformer__visit_Name__4(): """It denies a class name starting in `_`.""" result = compile_restricted_exec(BAD_NAME_OVERRIDE_GUARD_WITH_CLASS) assert result.errors == ( 'Line 2: "_getattr" is an invalid variable name because it ' 'starts with "_"',) BAD_NAME_IN_WITH = """\ def with_as_bad_name(): with x as _leading_underscore: pass """ def test_RestrictingNodeTransformer__visit_Name__4_4(): """It denies a variable name in with starting in `_`.""" result = compile_restricted_exec(BAD_NAME_IN_WITH) assert result.errors == ( 'Line 2: "_leading_underscore" is an invalid variable name because ' 'it starts with "_"',) BAD_NAME_IN_COMPOUND_WITH = """\ def compound_with_bad_name(): with a as b, c as _restricted_name: pass """ def test_RestrictingNodeTransformer__visit_Name__4_5(): """It denies a variable name in with starting in `_`.""" result = compile_restricted_exec(BAD_NAME_IN_COMPOUND_WITH) assert result.errors == ( 'Line 2: "_restricted_name" is an invalid variable name because ' 'it starts with "_"',) BAD_NAME_DICT_COMP = """\ def dict_comp_bad_name(): {y: y for _restricted_name in x} """ def test_RestrictingNodeTransformer__visit_Name__4_6(): """It denies a variable name starting in `_` in a dict comprehension.""" result = compile_restricted_exec(BAD_NAME_DICT_COMP) assert result.errors == ( 'Line 2: "_restricted_name" is an invalid variable name because ' 'it starts with "_"',) BAD_NAME_SET_COMP = """\ def set_comp_bad_name(): {y for _restricted_name in x} """ def test_RestrictingNodeTransformer__visit_Name__4_7(): """It denies a variable name starting in `_` in a dict comprehension.""" result = compile_restricted_exec(BAD_NAME_SET_COMP) assert result.errors == ( 'Line 2: "_restricted_name" is an invalid variable name because ' 'it starts with "_"',) BAD_NAME_ENDING_WITH___ROLES__ = """\ def bad_name(): myvar__roles__ = 12 """ def test_RestrictingNodeTransformer__visit_Name__5(): """It denies a variable name ending in `__roles__`.""" result = compile_restricted_exec(BAD_NAME_ENDING_WITH___ROLES__) assert result.errors == ( 'Line 2: "myvar__roles__" is an invalid variable name because it ' 'ends with "__roles__".',) BAD_NAME_PRINTED = """\ def bad_name(): printed = 12 """ def test_RestrictingNodeTransformer__visit_Name__6(): """It denies a variable named `printed`.""" result = compile_restricted_exec(BAD_NAME_PRINTED) assert result.errors == ('Line 2: "printed" is a reserved name.',) BAD_NAME_PRINT = """\ def bad_name(): def print(): pass """ def test_RestrictingNodeTransformer__visit_Name__7(): """It denies a variable named `print`.""" result = compile_restricted_exec(BAD_NAME_PRINT) assert result.errors == ('Line 2: "print" is a reserved name.',) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_slice.py0000644000076600000240000000141014744366240022720 0ustar00m.howitzstafffrom operator import getitem from tests.helper import restricted_eval def test_slice(): rglb = {'_getitem_': getitem} # restricted globals assert restricted_eval('[1, 2, 3, 4, 5]', rglb) == [1, 2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][:]', rglb) == [1, 2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][1:]', rglb) == [2, 3, 4, 5] assert restricted_eval('[1, 2, 3, 4, 5][:4]', rglb) == [1, 2, 3, 4] assert restricted_eval('[1, 2, 3, 4, 5][1:4]', rglb) == [2, 3, 4] assert restricted_eval('[1, 2, 3, 4, 5][::3]', rglb) == [1, 4] assert restricted_eval('[1, 2, 3, 4, 5][1::3]', rglb) == [2, 5] assert restricted_eval('[1, 2, 3, 4, 5][:4:3]', rglb) == [1, 4] assert restricted_eval('[1, 2, 3, 4, 5][1:4:3]', rglb) == [2] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_subscript.py0000644000076600000240000001005214744366240023641 0ustar00m.howitzstafffrom tests.helper import restricted_exec SIMPLE_SUBSCRIPTS = """ def simple_subscript(a): return a['b'] """ def test_read_simple_subscript(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(SIMPLE_SUBSCRIPTS, glb) assert (value, 'b') == glb['simple_subscript'](value) VAR_SUBSCRIPT = """ def simple_subscript(a, b): return a[b] """ def test_read_subscript_with_variable(mocker): value = [1] idx = 0 _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(VAR_SUBSCRIPT, glb) assert (value, 0) == glb['simple_subscript'](value, idx) TUPLE_SUBSCRIPTS = """ def tuple_subscript(a): return a[1, 2] """ def test_tuple_subscript(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(TUPLE_SUBSCRIPTS, glb) assert (value, (1, 2)) == glb['tuple_subscript'](value) SLICE_SUBSCRIPT_NO_UPPER_BOUND = """ def slice_subscript_no_upper_bound(a): return a[1:] """ def test_read_slice_subscript_no_upper_bound(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(SLICE_SUBSCRIPT_NO_UPPER_BOUND, glb) assert (value, slice(1, None, None)) == glb['slice_subscript_no_upper_bound'](value) # NOQA: E501 SLICE_SUBSCRIPT_NO_LOWER_BOUND = """ def slice_subscript_no_lower_bound(a): return a[:1] """ def test_read_slice_subscript_no_lower_bound(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(SLICE_SUBSCRIPT_NO_LOWER_BOUND, glb) assert (value, slice(None, 1, None)) == glb['slice_subscript_no_lower_bound'](value) # NOQA: E501 SLICE_SUBSCRIPT_NO_STEP = """ def slice_subscript_no_step(a): return a[1:2] """ def test_read_slice_subscript_no_step(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(SLICE_SUBSCRIPT_NO_STEP, glb) assert (value, slice(1, 2, None)) == glb['slice_subscript_no_step'](value) SLICE_SUBSCRIPT_WITH_STEP = """ def slice_subscript_with_step(a): return a[1:2:3] """ def test_read_slice_subscript_with_step(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(SLICE_SUBSCRIPT_WITH_STEP, glb) assert (value, slice(1, 2, 3)) == glb['slice_subscript_with_step'](value) EXTENDED_SLICE_SUBSCRIPT = """ def extended_slice_subscript(a): return a[0, :1, 1:, 1:2, 1:2:3] """ def test_read_extended_slice_subscript(mocker): value = None _getitem_ = mocker.stub() _getitem_.side_effect = lambda ob, index: (ob, index) glb = {'_getitem_': _getitem_} restricted_exec(EXTENDED_SLICE_SUBSCRIPT, glb) ret = glb['extended_slice_subscript'](value) ref = ( value, ( 0, slice(None, 1, None), slice(1, None, None), slice(1, 2, None), slice(1, 2, 3) ) ) assert ref == ret WRITE_SUBSCRIPTS = """ def assign_subscript(a): a['b'] = 1 """ def test_write_subscripts( mocker): value = {'b': None} _write_ = mocker.stub() _write_.side_effect = lambda ob: ob glb = {'_write_': _write_} restricted_exec(WRITE_SUBSCRIPTS, glb) glb['assign_subscript'](value) assert value['b'] == 1 DEL_SUBSCRIPT = """ def del_subscript(a): del a['b'] """ def test_del_subscripts( mocker): value = {'b': None} _write_ = mocker.stub() _write_.side_effect = lambda ob: ob glb = {'_write_': _write_} restricted_exec(DEL_SUBSCRIPT, glb) glb['del_subscript'](value) assert value == {} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_try.py0000644000076600000240000000740514744366240022451 0ustar00m.howitzstaffimport pytest from RestrictedPython import compile_restricted_exec from RestrictedPython._compat import IS_PY311_OR_GREATER from tests.helper import restricted_exec TRY_EXCEPT = """ def try_except(m): try: m('try') raise IndentationError('f1') except IndentationError as error: m('except') """ def test_RestrictingNodeTransformer__visit_Try__1( mocker): """It allows try-except statements.""" trace = mocker.stub() restricted_exec(TRY_EXCEPT)['try_except'](trace) trace.assert_has_calls([ mocker.call('try'), mocker.call('except') ]) TRY_EXCEPT_ELSE = """ def try_except_else(m): try: m('try') except: m('except') else: m('else') """ def test_RestrictingNodeTransformer__visit_Try__2( mocker): """It allows try-except-else statements.""" trace = mocker.stub() restricted_exec(TRY_EXCEPT_ELSE)['try_except_else'](trace) trace.assert_has_calls([ mocker.call('try'), mocker.call('else') ]) TRY_EXCEPT_STAR = """ def try_except_star(m): try: m('try') raise ExceptionGroup("group", [IndentationError('f1'), ValueError(65)]) except* IndentationError: m('IndentationError') except* ValueError: m('ValueError') except* RuntimeError: m('RuntimeError') """ @pytest.mark.skipif( not IS_PY311_OR_GREATER, reason="ExceptionGroup class was added in Python 3.11.", ) def test_RestrictingNodeTransformer__visit_TryStar__1(): """It denies try-except* PEP 654 statements.""" result = compile_restricted_exec(TRY_EXCEPT_STAR) assert result.errors == ( 'Line 3: TryStar statements are not allowed.', ) assert result.code is None TRY_FINALLY = """ def try_finally(m): try: m('try') 1 / 0 finally: m('finally') return """ def test_RestrictingNodeTransformer__visit_TryFinally__1( mocker): """It allows try-finally statements.""" trace = mocker.stub() restricted_exec(TRY_FINALLY)['try_finally'](trace) trace.assert_has_calls([ mocker.call('try'), mocker.call('finally') ]) TRY_EXCEPT_FINALLY = """ def try_except_finally(m): try: m('try') 1 / 0 except: m('except') finally: m('finally') """ def test_RestrictingNodeTransformer__visit_TryFinally__2( mocker): """It allows try-except-finally statements.""" trace = mocker.stub() restricted_exec(TRY_EXCEPT_FINALLY)['try_except_finally'](trace) trace.assert_has_calls([ mocker.call('try'), mocker.call('except'), mocker.call('finally') ]) TRY_EXCEPT_ELSE_FINALLY = """ def try_except_else_finally(m): try: m('try') except: m('except') else: m('else') finally: m('finally') """ def test_RestrictingNodeTransformer__visit_TryFinally__3( mocker): """It allows try-except-else-finally statements.""" trace = mocker.stub() restricted_exec(TRY_EXCEPT_ELSE_FINALLY)['try_except_else_finally'](trace) trace.assert_has_calls([ mocker.call('try'), mocker.call('else'), mocker.call('finally') ]) BAD_TRY_EXCEPT = """ def except_using_bad_name(): try: foo except NameError as _leading_underscore: # The name of choice (say, _write) is now assigned to an exception # object. Hard to exploit, but conceivable. pass """ def test_RestrictingNodeTransformer__visit_ExceptHandler__2(): """It denies bad names in the except as statement.""" result = compile_restricted_exec(BAD_TRY_EXCEPT) assert result.errors == ( 'Line 5: "_leading_underscore" is an invalid variable name because ' 'it starts with "_"',) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_with_stmt.py0000644000076600000240000000736214744366240023657 0ustar00m.howitzstaffimport contextlib from RestrictedPython import compile_restricted_exec from RestrictedPython.Guards import guarded_unpack_sequence from tests.helper import restricted_exec WITH_STMT_WITH_UNPACK_SEQUENCE = """ def call(ctx): with ctx() as (a, (c, b)): return a, c, b """ def test_with_stmt_unpack_sequence(mocker): @contextlib.contextmanager def ctx(): yield (1, (2, 3)) _getiter_ = mocker.stub() _getiter_.side_effect = lambda ob: ob glb = { '_getiter_': _getiter_, '_unpack_sequence_': guarded_unpack_sequence } restricted_exec(WITH_STMT_WITH_UNPACK_SEQUENCE, glb) ret = glb['call'](ctx) assert ret == (1, 2, 3) _getiter_.assert_has_calls([ mocker.call((1, (2, 3))), mocker.call((2, 3))]) WITH_STMT_MULTI_CTX_WITH_UNPACK_SEQUENCE = """ def call(ctx1, ctx2): with ctx1() as (a, (b, c)), ctx2() as ((x, z), (s, h)): return a, b, c, x, z, s, h """ def test_with_stmt_multi_ctx_unpack_sequence(mocker): result = compile_restricted_exec(WITH_STMT_MULTI_CTX_WITH_UNPACK_SEQUENCE) assert result.errors == () @contextlib.contextmanager def ctx1(): yield (1, (2, 3)) @contextlib.contextmanager def ctx2(): yield (4, 5), (6, 7) _getiter_ = mocker.stub() _getiter_.side_effect = lambda ob: ob glb = { '_getiter_': _getiter_, '_unpack_sequence_': guarded_unpack_sequence } exec(result.code, glb) ret = glb['call'](ctx1, ctx2) assert ret == (1, 2, 3, 4, 5, 6, 7) _getiter_.assert_has_calls([ mocker.call((1, (2, 3))), mocker.call((2, 3)), mocker.call(((4, 5), (6, 7))), mocker.call((4, 5)), mocker.call((6, 7)) ]) WITH_STMT_ATTRIBUTE_ACCESS = """ def simple(ctx): with ctx as x: x.z = x.y + 1 def assign_attr(ctx, x): with ctx as x.y: x.z = 1 def load_attr(w): with w.ctx as x: x.z = 1 """ def test_with_stmt_attribute_access(mocker): _getattr_ = mocker.stub() _getattr_.side_effect = getattr _write_ = mocker.stub() _write_.side_effect = lambda ob: ob glb = {'_getattr_': _getattr_, '_write_': _write_} restricted_exec(WITH_STMT_ATTRIBUTE_ACCESS, glb) # Test simple ctx = mocker.MagicMock(y=1) ctx.__enter__.return_value = ctx glb['simple'](ctx) assert ctx.z == 2 _write_.assert_called_once_with(ctx) _getattr_.assert_called_once_with(ctx, 'y') _write_.reset_mock() _getattr_.reset_mock() # Test assign_attr x = mocker.Mock() glb['assign_attr'](ctx, x) assert x.z == 1 assert x.y == ctx _write_.assert_has_calls([ mocker.call(x), mocker.call(x) ]) _write_.reset_mock() # Test load_attr ctx = mocker.MagicMock() ctx.__enter__.return_value = ctx w = mocker.Mock(ctx=ctx) glb['load_attr'](w) assert w.ctx.z == 1 _getattr_.assert_called_once_with(w, 'ctx') _write_.assert_called_once_with(w.ctx) WITH_STMT_SUBSCRIPT = """ def single_key(ctx, x): with ctx as x['key']: pass def slice_key(ctx, x): with ctx as x[2:3]: pass """ def test_with_stmt_subscript(mocker): _write_ = mocker.stub() _write_.side_effect = lambda ob: ob glb = {'_write_': _write_} restricted_exec(WITH_STMT_SUBSCRIPT, glb) # Test single_key ctx = mocker.MagicMock() ctx.__enter__.return_value = ctx x = {} glb['single_key'](ctx, x) assert x['key'] == ctx _write_.assert_called_once_with(x) _write_.reset_mock() # Test slice_key ctx = mocker.MagicMock() ctx.__enter__.return_value = (1, 2) x = [0, 0, 0, 0, 0, 0] glb['slice_key'](ctx, x) assert x == [0, 0, 1, 2, 0, 0, 0] _write_.assert_called_once_with(x) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tests/transformer/test_yield.py0000644000076600000240000000354614744366240022743 0ustar00m.howitzstafffrom RestrictedPython import compile_restricted_exec YIELD_EXAMPLE = """\ def test_generator(): yield 42 """ def test_yield(): """`yield` statement should be allowed.""" result = compile_restricted_exec(YIELD_EXAMPLE) assert result.errors == () assert result.code is not None local = {} exec(result.code, {}, local) test_generator = local['test_generator'] exec_result = list(test_generator()) assert exec_result == [42] YIELD_FORM_EXAMPLE = """ def reader_wapper(input): yield from input """ def test_yield_from(): """`yield from` statement should be allowed.""" result = compile_restricted_exec(YIELD_FORM_EXAMPLE) assert result.errors == () assert result.code is not None def my_external_generator(): my_list = [1, 2, 3, 4, 5] yield from my_list local = {} exec(result.code, {}, local) reader_wapper = local['reader_wapper'] exec_result = list(reader_wapper(my_external_generator())) assert exec_result == [1, 2, 3, 4, 5] # Modified Example from http://stackabuse.com/python-async-await-tutorial/ ASYNCIO_YIELD_FORM_EXAMPLE = """ import asyncio @asyncio.coroutine def get_json(client, url): file_content = yield from load_file('data.ini') """ def test_asyncio_yield_from(): """`yield from` statement should be allowed.""" result = compile_restricted_exec(ASYNCIO_YIELD_FORM_EXAMPLE) assert result.errors == () assert result.code is not None ASYNC_YIELD_FORM_EXAMPLE = """ import asyncio async def get_json(client, url): file_content = yield from load_file('data.ini') """ def test_async_yield_from(): """`yield from` statement should be allowed.""" result = compile_restricted_exec(ASYNC_YIELD_FORM_EXAMPLE) assert result.errors == ( 'Line 4: AsyncFunctionDef statements are not allowed.', ) assert result.code is None ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1737616544.0 restrictedpython-8.0/tox.ini0000644000076600000240000000501314744366240016022 0ustar00m.howitzstaff# Generated from: # https://github.com/zopefoundation/meta/tree/master/config/pure-python [tox] minversion = 3.18 envlist = release-check lint py39 py310 py311 py312 py313 docs coverage py311-datetime combined-coverage [testenv] usedevelop = true package = wheel wheel_build_env = .pkg deps = setuptools <= 75.6.0 datetime: DateTime -cconstraints.txt pytest-cov setenv = COVERAGE_FILE=.coverage.{envname} commands = python -V pytest --cov=src --cov=tests --cov-report= tests {posargs} sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest extras = test docs [testenv:combined-coverage] basepython = python3 allowlist_externals = mkdir deps = coverage -cconstraints.txt setenv = COVERAGE_FILE=.coverage commands = mkdir -p {toxinidir}/parts/htmlcov coverage erase coverage combine coverage html coverage report -m --fail-under=100 depends = py39,py310,py311,py311-datetime,py312,py313,coverage [testenv:setuptools-latest] basepython = python3 deps = git+https://github.com/pypa/setuptools.git\#egg=setuptools datetime: DateTime -cconstraints.txt pytest-cov [testenv:release-check] description = ensure that the distribution is ready to release basepython = python3 skip_install = true deps = setuptools <= 75.6.0 twine build check-manifest check-python-versions >= 0.20.0 wheel commands_pre = commands = check-manifest check-python-versions --only setup.py,tox.ini,.github/workflows/tests.yml python -m build --sdist --no-isolation twine check dist/* [testenv:lint] description = This env runs all linters configured in .pre-commit-config.yaml basepython = python3 skip_install = true deps = pre-commit commands_pre = commands = pre-commit run --all-files --show-diff-on-failure [testenv:docs] basepython = python3 skip_install = false commands_pre = commands = sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest [testenv:coverage] basepython = python3 allowlist_externals = mkdir deps = coverage[toml] datetime: DateTime -cconstraints.txt pytest-cov setenv = COVERAGE_FILE=.coverage commands = mkdir -p {toxinidir}/parts/htmlcov pytest --cov=src --cov=tests --cov-report= tests {posargs} coverage run -a -m sphinx -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest coverage html coverage report